|
 |
Contents (Sat, 18 Apr 2009 12:00:01 GMT)
Topics in this blog include:
SEO notes ... Local news ... Hosting service and statistics ... Tools and languages ... Anti-spam ... Flash updates
Blogs ... Reader comments
Christian symbols ... Bibles and translations
Webcam ... 897th (WWII)
Bugs - MSIE6 and replacing innerHtml with images
Bugs - National Weather Service web service
Bugs - Firefox and synchronous AJAX
Bugs - ASP.NET checkbox controls
|
|
SEO notes (Sat, 18 Jun 2011 12:00:00 GMT)
My home page bounces all over the place with respect to search engine rankings,
especially from Google. First, I found
a good post about optimization.
My own tips, in no particular order, are:
(0) Content, content, content.
(1) Remove HTML errors, include a good title and meta tags, target some keywords and use them appropriately, but all serious sites do this.
(2) Optimize for Google. If Google ranks your site well, so will the other engines, and most users use Google.
(3) Get links to your site listed on other reputable sites, to generate hits and improve automated reputation calculations. Don’t bother with disreputable link farms.
(4) Drop your URL everywhere, such as in web forums. You’ll get spam; deal with it.
(5) Individuals who meet Wikipedia notability standards will get an unbiased biography. Don’t create a bio for yourself because it hurt your reputation. Carefully edit Wikipedia articles.
(6) The DMOZ.org policies baffle me. Many categories are populated but never updated and they’re picky about editors. Still, DMOZ is well respected.
(7) I am an editor on syndic8.com. I reject most of the waiting feeds that I review, but there is some good stuff there.
(8) Make sure your target page loads quickly (within a few seconds).
(9) Reduce your link-to-content ratio and ad-to-content ratio. Links and ads are fine, but the search robots can pick out link farms and ad farms.
(10) Renew your domain registration for multiple years so that you don’t look like a temporary ad farm.
Add a comment...
|
|
Local news on the web (Sat, 18 Apr 2009 12:00:00 GMT)
Print editions of newspapers across the country are shutting down these days.
I still subscribe to the print editions of two newspapers in the Rochester, NY area,
but I’m looking for news sources to carry me when the inevitable finally happens.
The print editions support an investigative activity that bloggers and web editions just
can’t match (oh well...). In particular, I’m looking for a deep sources of local news. Lots of web
sites regurgitate the top stories from the print editions, but that won’t help when there
are no print editions. I'm looking for a sites that can tell me about
businesses that are opening, school sports results, youth group and charity activities, etc.,
as well as the bigger stories and weather. Commment here on how you find your
local news on the web.
Add a comment...
|
 Comment from ra.Miller6 on Wed, 10 Mar 2010 06:05:57 GMT:
Cool site.
|
|
Hosting service and statistics (Sat, 01 Dec 2007 12:00:00 GMT)
This site is hosted on a shared server by
HosTek
of Oklahoma, USA. Great service at a reasonable price. See their special rates for non-profits.
Site statistics are provided by Hostek’s
statistics package.
Add a comment...
|
|
Tools and languages 2 (Sat, 05 Jan 2013 12:00:00 GMT)
I bought a new Samsung notebook PC. Overall, it works well.
It came with Windows 8 64-bit, not Windows 8 Pro, but it was one of those Christmas day deals and I have the
Windows media anyway. I found out that computers arrive these days without OS media, and with a restoration
partition so that Windows can be re-installed if necessary. However, with separate installation media, I had
the option of reformatting the whole drive and wiping out the space taken by the restoration data, which
includes a bunch of manufacturer applications which I'll probably never use. Note that before I did this,
I downloaded the manufacturer drivers from their support site.
The installation of Windows 8 is slightly different than previous versions, so my process was to boot from
the DVD, which required a BIOS change to allow this, so check your manufacturer documentation.
I did indeed choose the advanced options to delete and recreate a single installtion partition.
No license key was requested because on a PC that originally has Windows pre-installed, a key is built into
the BIOS. After installing the manufacturer drivers, Control Panel can be used to Add Features to Windows,
where the Pro key is requested. Including a few environment tweaks, this all took a few hours, but I
encountered no errors and the hardware works as expected.
Add a comment...
|
|
Tools and languages (Wed, 09 Apr 2008 12:00:00 GMT)
The primary development tool for this web site is Microsoft Visual Studio 2008 (.NET 3.5).
Pages are written in HTML, JavaScript, C#, XML, and a smattering of other scripting
languages as needed. No databases are currently in use (just XML files).
The limited AJAX features on the webcam page were hand-coded.
I had a heck of a time with the Visual Studio 2003 debugger showing,
"Error while trying to run project: Unable to start debugging on the web server.
The project is not configured to be debugged."
Each project in the solution must have a web.config file with the debug setting set to true, and depending
on how the debugger is started, the app should be rebuilt using the Debug configuration.
Remember also that Visual Studio is interacting with IIS, so IIS must be configured for the same version
of .NET Framework supported by the version of Visual Studio. Each version of Visual Studio supports one
and only one version of .NET Framework, and that cannot be changed. The original Visual Studio .NET
supports v1.0.3705. VS .NET 2003 supports v1.1.4322. VS .NET 2005 supports v2.0.50727. VS .NET 2008 suppports
v3.0+. In a DOS prompt, within the proper folder under window\microsoft.net\framework,
run "aspnet_regiis -i". Then start the IIS management console. For each project virtual
directory, there should be an active application under the Directory tab. In some cases, the name
can be blank, but next to the application name, if you see a Create button, click it. Then for each
project virtual directiory, go to the ASP.NET tab and pull down the proper ASP.NET version. The error messages
you see when starting the debugger are very generic and useless. When deploying your app, remember to
set the web.config files so that debug is false, and deploy the Release configuration, for the best performance.
The XmlTypeAttribute class is used to specify the namespace for a custom class when instances are serialized
by the XmlSerializer. For example, before your class, enter:
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://kbarticles.com/")]
For example, you create a custom class that is returned by a web service. When using Visual Studio to
add a web reference to a client application, a web proxy class (Reference.cs) is automatically created. Within this class,
you can see the namespace. If you do not specify the namespace as shown above, Visual Studio will make one up,
depending on the parent of the reference to the custom class. However, if your web service refers to the custom class from multiple places,
the proxy class can get multiple references to the custom class in different namespaces. When this happens, VS renames conflicts,
so that the first reference will be named, say, Custom, and the second reference will be named Custom1. Of course, this causes a
compilation error, usually something like "cannot implicitly convert type", because your client does not know about Custom1.
The solution is to be explicit about the namespace so that only one proxy reference is generated. You could also edit the Reference.cs
class to fix the problem, but every time you change the web service and update the web reference, you would lose your fix.
Add a comment...
|
 Comment from info on Tue, 02 Apr 2013 10:48:33 GMT:
ante re na fas kana profiterol!pou 8a mou peis tora ti einai to piosdfaoro!paliokouraditsa!na se do sto 5X5 psofhmi!!!XAXXAXA!!!!Ps. eixa grapsei ena katevato,douleia mishs oras kai to koloblogspot den to emfanise!8a ta poume apo konta.Akoma den mporo na pistepso oti einai alh8eia ola ayta!!!
|
|
Blogs (Mon, 01 Oct 2007 12:00:00 GMT)
After experimenting for a couple years with a true forum (open-source from
ASPBB),
I found that it required ongoing attention and maintenance even though the traffic was very low.
For a mid-level site like gocek.org, users don’t want to be bothered with yet another registration.
This site provides a mish-mosh of content, so the forum consisted of several unrelated categories.
The blog and its registration database have been deleted. The current presentation uses many
blog-like pages that allow comments from unregistered users. I regularly look at a static web page
and wonder if it should be converted to a blog, as I did with this techie blog.
The blogs are all in standard RSS 2.0 format, so feel free to subscribe with your favorite feed
reader. However, the site pages that display the blogs provide for reader comments and other features.
This is accomplished with custom feed reading software.
Add a comment...
|
|
Reader comments (Sat, 01 Sep 2007 12:00:00 GMT)
The blog comment page has been a challeging project involving user interaction,
persistent storage, anti-hacking techniques and more. The goal was to replace the forum with
something that readers would actually use. In fact, that seems to be happening, especially
in the ticket-scam blog. I found a cool site called
Gravatar
that provides a centralized database for avatars associated with email addresses. But I didn’t
want users impersonating others, so I have been looking into support for
OpenID,
Any site can provide an OpenID server, and once registered with that server, a user has a single account
for all OpenID-enabled sites. The implementation of an OpenID "consumer" that accepts credentials
from OpenID servers has proven to be nothing short of onerous. The consumer must safely handle user keyboard input,
transfer to other sites and wait for the user’s return, parse HTTP headers and HTML markup from remote sites
for links to other sites, load XML documents and determine how OpenID is supported by any OpenID server,
and parse voluminous data from the servers. After all that, no central authority guarantees the trustworthiness
of any OpenID server, so a rogue OpenID server could validate any user with any identity with no warning
to the consumer. And, the active OpenID community, while passionate, cannot agree that this lack of
trustworthiness is an issue, even thought the whole point of asking a user to "log in" implies a lack
of trust. Yeesh.
Add a comment...
|
|
Christian symbols (Wed, 01 Aug 2007 12:00:00 GMT)
The symbol database consists of typical ASP.NET resource files. There was a time when I was pretty proud of this
page and underlying implementation, but it’s actually pretty typical. The symbols page gets, by far, the
most traffic of any gocek.org page. On that note, I would be happy to hear about your experiences in using the site.
Search terms are compared against keywords in the database, not against the full symbol description.
Add a comment...
|
|
Bibles and translations (Sun, 01 Jul 2007 12:00:00 GMT)
Rudimentary translations from the original English are provided for French and
Spanish, and full translations are provided for the random Bible verses. To see
French or Spanish, change your browser’s language preferences. Only some of the
labels on the symbols page are translated. In most cases, translations come
from babelfish.altavista.com or
basic web searches. Numbers and dates are not localized. If you’d like to
volunteer to provide more translations, let me know.
The random Bible verses are retrieved in the preferred language by custom
software using text from BibleDatabase.org.
That site offers many translations. For now, the English version is King James,
but I will use a more modern version if one becomes available for free. Each
translations stored on my site uses about 5 megabytes.
Add a comment...
|
|
Webcam (Fri, 01 Jun 2007 12:00:00 GMT)
The webcam project has been great fun and is
described in more detail on the webcam page. Contrast this with my ongoing efforts to support OpenID,
which has been a ton of work and not nearly as flashy as my front yard. The successful display of a
near-real-time image on the home and webcam pages requires the coordination of
a number of hardware and software components, including some custom hardware
and software. It’s not rocket science, but it’s not a novice project given my choice of
equipment (there are camera packages that are made to connect easily to an internet connection). Bad
images can occur for a number of reasons, including the fact that the microwave
oven interferes with the wireless camera signal. Including weather data with an
outdoor camera image was not my idea, but it’s a nice touch. Current and
forecast data are acquired from the US Government’s
National Weather Service.
Add a comment...
|
 Comment from quepetours on Fri, 15 Mar 2013 02:33:17 GMT:
هههه هم بيقولو انهم قاعدين بيطورو فيييه!هم لو مو متاكدين انو راح ينجح ما اعلنو عنه .وبعدين هاذا من ال artificial iecellignnteSO, DONT TAKE IT AS A JOKE! 0 0
|
|
897th (WWII) (Tue, 01 May 2007 12:00:00 GMT)
If you have any information about the 897th or 3562nd,
please contact me. The diary entry on the 897th main page is coded
into an XML file and parsed according to the current date. There is a four year
cycle beginning in late 1942, with the 1944-45 period repeated (because there
simply aren’t four full years of diary entries). The cycle’s beginning is timed
to match a current leap year with 1944, so that February 29 doesn’t have to be
fudged. Not all days have unique diary entries. The cycle started fresh in
2006. The diary entries are available as a web service, because I wanted to
write a web service. This is essentially a code library that is invoked over
the internet. If you’d like to use the service on your own pages (the only
thing the service does is return an 897th log entry), I’ll be happy to provide
more information.
Add a comment...
|
|
Anti-spam (Sun, 01 Apr 2007 12:00:00 GMT)
Links to big files are obfuscated to hide
from search indexes because I’m worried about a rush on my bandwidth if
everyone in the world can suddenly find the Tiki Room song. The
CAPTCHA
implementation on the blog comment page, i.e., the simple arithmetic problem, is intended to be easier
to use that the usual wavy-letter implementations, although my algorithm is easier to break.
Add a comment...
|
|
Flash updates (Mon, 17 Nov 2008 12:00:00 GMT)
I wondered how Flash knew to install updates after a login. After all, it is a browser plugin.
The plugin checks for updates if allowed, and that is a user settable option. When visiting a Flash-enabled
site, and when the update check finds that Flash is out of date, the plugin installs a RunOnce registry
key. This is done silently, and most of us do not check for such a key every few minutes.
The next time the user logs in, possibly days later, and even though the browser plugin is not yet running,
the registry key starts the update process. The user might then wonder what started the update, but by that time,
the RunOnce key has alredy deleted itself. Sneaky, but safe.
Add a comment...
|
|
Bugs I have seen - MSIE6 and replacing innerHtml with images (Thu, 01 Feb 2007 12:00:00 GMT)
A table cell with an ID can have its innerHtml replaced by Javascript, without a
page refresh. But if the content is img HTML markup, IE6 does not automatically
download the image. If the image is already cached, it works sometimes. The
general solution was to switch to an AJAX technique, which really does download the image.
Add a comment...
|
|
Bugs I have seen - National Weather Service web service (Tue, 27 Sep 2011 12:00:00 GMT)
The National Weather Service web service returns XML data that does not conform
to the latest security standards (first reported in 2005), so clients using
.NET Framework 1.1 and later report an error ("The server committed an HTTP
protocol violation..."). The solution is to edit the proxy class generated by
Visual Studio to process the returned data according to an older version of the protocol. See
this page.
The web service intermittently throws, "Unable to read data from
the transport connection." This appears to be a timeout error which I work
around by requesting less data at a time, multiple times.
I noticed errors on 2011-09-26; the web service URL changed from
http://www.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl to
http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl, and there were breaking
changes to NDFDgen(). I struggled with Visual Studio, so I deleted the old web reference,
closed and reopened VS, added the new web reference, modified NDFDgen(), and then it worked (without
editing the proxy class to adjust the protocol version, at least there’s that).
Add a comment...
|
|
Bugs I have seen - Firefox and synchronous AJAX (Fri, 01 Dec 2006 12:00:00 GMT)
There is a problem with the way FireFox (in 2006) handles the Javascript XMLHttpRequest
object. This object is used to implement AJAX techniques that allow access to
remote information via HTTP without refreshing the whole web page. If the open
method is called synchronously, the readyState property never gets set to 4
(completed). Some blogs suggest declaring the onreadystatechange function after
the call to open, but this didn’t work for me (I had to use an
asynchronous call). My page behaves better with the asynchronous call, but from
what I’ve seen in the blogs, FireFox is either the only browser that does it
right, or the only browser that does it wrong.
Also: I had a few issue when loading an XML document with Javascript. My XML document was
being cached by the browser, and this caching apparently cannot be avoided with an HTML no-cache header.
A simple but hack-ish solution is to do,
xmlDok.load("file.xml?rnd=" + Math.random(1000).toString());
so that the browser thinks a different URL is loaded each time.
Also, one would expect to be able to select nodes with XPath, via selectSingleNode and
selectNodes. This works as expected in MSIE, but Firefox implements a different DOM which throws exceptions
("selectNodes is not a function" or "selectSingleNode is not a function"). Try these:
function XSelectNodes(xmldok, elementPath)
{
if (window.ActiveXObject)
{
return xmldok.selectNodes(elementPath);
}
else
{
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver((xmldok.ownerDocument == null) ? xmldok.documentElement : xmldok.ownerDocument.documentElement);
var results = xpe.evaluate(elementPath, xmldok, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var i, nodes = [];
for (i=0; i < results.snapshotLength; i++)
{
nodes[i] = results.snapshotItem(i);
nodes[i].text = nodes[i].firstChild ? nodes[i].firstChild.nodeValue : "";
}
return nodes;
}
}
function XSelectSingleNode(xmldok, elementPath)
{
if (window.ActiveXObject)
{
return xmldok.selectSingleNode(elementPath);
}
else
{
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver((xmldok.ownerDocument == null) ? xmldok.documentElement : xmldok.ownerDocument.documentElement);
var results = xpe.evaluate(elementPath, xmldok, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
return results.singleNodeValue;
}
}
Add a comment...
|
 Comment from sclements on Mon, 24 Sep 2012 20:05:11 GMT:
Hey!! Hasin how you manage these all ? I rellay surprise when i read your blog. Everyday i got new things to learn. You are rellay interesting guy!!I am prashant from India and got you while searching something in google. I am also a php programmer and my level is rellay very lower then you. I have 2 years of experience but still i think i don't know much on php and all. Really a very limited knowledge, but i want to make my career in php. So i will take your suggestion every time, if you don't have any problem.Hasin I know only Php,MySql,Ajax,JS and thats it!! But after read your article on Php i rellay want to learn more now ..Please tell me how i can improve. I like to start from script.aculo.us, because i am not JS expert so i am not getting too many things. Please tell me few sites from where i can get good examples of script.aculo.us. Because there are lots of thing in script.aculo.us so i want to start from A-Z so kindly guide me as a teacher.Hope you will reply.
|
 Comment from patt on Tue, 23 Jun 2009 14:45:31 GMT:
Gotta love that Firefox winning formula. See what Opera does...then do exactly that. For a moment I thought Firefox was innovating with its awesome bar and even read several books on this problem http://www.ebook-search-queen.com/ But upon inspection, I found that typing awesome bar in opera displays...this page.
|
|
Bugs I have seen - ASP.NET checkbox controls (Wed, 01 Nov 2006 12:00:00 GMT)
I have run into a couple of issues with ASP.NET CheckBox server controls. When a
CheckBox is nested inside an ItemTemplate inside a Repeater control, the
CheckedChanged event doesn’t fire for me. But let’s say the Text of each
CheckBox is set like this:
Text=’< % # DataBinder.Eval(Container, "DataItem.columnX")%>’ CssClass="hideme"
sorry, I had to insert a couple blanks to get the RSS to display the markup
where the hideme CSS class looks like:
< style > .hideme LABEL { DISPLAY: none }< /style >
The result is that each checkbox can have a unique Text property, and the CSS
class makes it invisible, so it’s essentially a custom control property. Then
do:
foreach (RepeaterItem dataItem in RepeaterDataTable.Items)
{
CheckBox itemCb = (CheckBox) dataItem.FindControl("CheckBox1");
...
The loop gets at each CheckBox and you can then see the Text property.
Also, an onclick property can be
specified for a CheckBox, but the CheckBox server control has no such
documented property. Microsoft documents that arbitrary attributes can be
applied to the rendered HTML control. For example, a CheckBox is rendered as an
HTML input control of type checkbox. A CheckBox can be created to call a
JavaScript function, client-side, by adding the following line to a code-behind method:
cb1.Attributes.Add("onclick", "jsFunc();");
The CheckBox will also invoke server-side methods as usual.
Add a comment...
|
|
|
|
|