Sunday, October 25, 2009

Delete Top Records with SQL - Foxpro shortcut

The easiest way to delete records (top records) in foxpro is to simply type, "delete from table_name where recno()<=4000" This doesn't work correctly if you order the table in a way other than set by its index. You could delete the index then try it, but if you just need the top X amount of records as it's ordered, and it hasn't changes, it works great!

Sunday, July 5, 2009

Windows Font Installer

I mean would Microsoft please, please, please update the font installer for their operating systems. What the heck is a Windows 3.1 dialog doing in Vista? If anyone can answer this one, they should be the new CEO of Microsoft, cause there's simply no point.

Not that it's all that hard to use, it's just with all the directories for you different users and whatnot, it's sometime a little difficult to navigate to the correct spot where you font is residing.

So MICROSOFT - Change this crap.

Tuesday, June 23, 2009

Flash Intro - Gimme A Break.

First of all, I'm not bashing Flash. I think it's great for multimedia. What I'm bashing is all the Flash designers that label their page, "Flash Intro" or, "Flash Introduction"

Application have splash pages, Web Sites shouldn't. There's a variety of reasons they shouldn't let alone SEO.

So please quit titling your pages, "Flash Intro" Gimme a break already. This practice has gone on far too long. If someone doesn't know what flash intro is, they shouldn't even be on the web.

Monday, August 18, 2008

Center a Div with CSS

This is a pretty simple CSS tip. Just a quick post to keep my streak going.

.whatever {margin: 0 auto;}

This will center a DIV on the page.

Saturday, August 16, 2008

Filter bad language with Delphi / Pascal...

This has been adapted from a ISAPI web application. The first step is to fill a TStringList with a list of bad words, or even characters that you don't want to save into your database.

I've call my StringList BWSL. After initializing the StringList, and adding the words, loop through and see if any of the words you've added are present.

If they are, redirect, or use other handling depending on the type of application you're writing. My form element on the calling web page is in the variable "Tag"


for I:=0 to BWSL.Count-1 do
if pos (BWSL.Strings[I], LowerCase(tag)) > 0 then begin
Response.SendRedirect(Request.ScriptName+'/BadRequest?Bid=6&Extra=The_Word,_Character,_or_Phrase,_' + BWSL.Strings[I] +'_is_Prohibited.');

Friday, August 15, 2008

Google Adsense Hickups - Strange Border Behavior

I've been noticing some fairly strange behavior concerning the ads Google serves to some of my websites, including my website design blog. (the blog you're reading)

Periodically, when loading a page I'll notice the border that I usually set to blend with the background appears in another color. That color I think will usually be the text color option. I'm pretty sure that is the text color that the border appears on. When I refresh the page, the border will disappear. Of course the border SHOULD never appear. I've been a little too busy to properly research this matter, but I figure that other people have run into this, and who knows if this could affect earnings as we all know ads that blend are much better at producing click than ads with borders. Perhaps some working is going into the adsense display system right now, and the hiccups are just temporary. I would hate to think that this is and will be happening frequently. As I don';t view my own sites that much, I really can't give a good percentage of page loads versus time the ads have borders.

That's right borders appear, then disappear. This effect doesn't happen all that often but for all the time I've used adsense to monetize my content, I've only noticed this strange behavior for the last three days. If anyone could shed some light or posit some theories about what's happening with the Google ads, borders please post a comment.

Keep an eye open with Netstat Steps to secure your windows web server

For those of you running your own servers, with all the illegal hacking activity, it's a good idea to keep your eyeballs peeled to your open connection with netstat or a similar utility.

It's fairly easy to track an ip address with website services, such as the one here » Ip Look up.

I keep a utility on my desktop that monitors the flow of traffic through my NIC. when this stays lit for extended periods, it mean non-stop traffic. Now sense I'm a website publisher that earns revenue from his websites, you'd normally think that that was a good thing. Of course if you notice twenty or more open pipes from the same IP address, it certainly could indicate trouble. If that IP address is coming from China, then well it's really up in the air.

What to do???

Well for on thing you can take every precaution that you can to secure your server. Now I run a Windows server, so I started off by hardening my machine with what the operating system offers. Closing unused ports, turning off unneeded and dangerous services. You can learn how to do some of this over at Gibson Research.

Second you have to have a firewall. I have a good one, and allow only port 80 traffic inbound.

Third you download IISLOCKDOWN. You can use this to configure IIS to be a ton more secure.

Fourth you can set up IPSEC. For the novice user, IPSEC can be a bit daunting. Don't worry there are plenty of tutorials like this one to get you started. It's well worth all the trouble to set things up to be as bullet proof as you can. This still will not prevent bots, or other people from sending a lot of traffic to your port eighty. So in IPSEC configure a rul that will block users by IP address, and as you find suspicious IP addresses in your logs, or with netstat, block them.

It's every webmaster's responsibility to run as secure a server as they have the power to. Fortunately there are many resources devoted to this topic, it just takes a little time. (And effort!)

Thursday, August 14, 2008

Use Crystal Reports in Delphi ISAPI Web Application

Well obviously, you may have tried to use the VCL component, and cashed and burned repeatedly. I took my a long time to properly integrate Crystal reports with an Isapi application through delphi. After literally weeks of research in 2004 I was able to properly utilize almost all of Crystal's functionality inside an ISAPI.

Why am I just now writing about this? Well.. As time rolls on, the technology is still viable. Especially if you have a tone of Crystal reports you'd like your users to be able to download in .Doc or .PDF formats.

Here Goes...

Import the Crystal Reports type library, save it as CRAXDRT_TLB; (into new unit) This would apply to Crystal Reports version 9. Don't forget to add the "cr" in front of the object names!!!

Here's the source code example: Please forgive any poor formatting on my part I wrote an automated .Pas to HTML conversion program, in about ten minutes, and right now it's imperfect. So I will work on that program as I continue to post Delphi Tips. Thanks and enjoy.


procedure TWebModule1.WebModule1WaExportReportAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var CrReport : Report;
NewStream : TStream;
TheReportType :CRExportFormatType;
S, TheCType : String;

//For Initilization purposes only

TheReportType:= CRAXDRT_TLB.crEFTPortableDocFormat;

//End Initialization

////Use the value of a web page radio button to determine the type of export ////the users desires.

If TheButtonVal='PDF' then begin
TheReportType:= CRAXDRT_TLB.crEFTPortableDocFormat;
If TheButtonVal='DOC' then begin
TheReportType:= CRAXDRT_TLB.crEFTWordForWindows;
If TheButtonVal='XLS' then begin
TheReportType:= CRAXDRT_TLB.crEFTExcel80;
If TheButtonVal='RTF' then begin
TheReportType:= CRAXDRT_TLB.crEFTExactRichText;

///You could use the actual report name added to a select element using ///Delphi's ///FindFiles...
CrReport := Application1.OpenReport('DirectoryName\'+TheReportName);

if TheButtonVal='PDF' then

if CrReport.ParameterFields.Count=1 then
////Depending upon any parameter values the Report uses and how they are //configured, these lines could change.
if CrReport.ParameterFields.Count=2 then begin
CrReport.ExportOptions.FormatType :=TheReportType ;
CrReport.ExportOptions.DestinationType :=CRAXDRT_TLB.crEDTDiskFile;

/////Give the created report a destination on disk, and name
CrReport.ExportOptions.DiskFileName :=


NewStream:=TFileStream.Create(the name you created above),
fmOpenRead and fmShareDenyWrite);
Response.SetCustomHeader('content-disposition', 'attachment; filename=YourShortFileName));
Response.SendRedirect('Your Error Handling Page')

Great Website Icons - FREE web Graphics

Being a jack of all trades is kinda hard sometimes. I'm not really that good at creating small icon graphics that websites can uses to represent various functionality of their websites.

I'm much better creating backgrounds, Logos, header graphics, tiles, etc... And of course the CSS, and the XHTML, and web application.

Even the site with the best content in the world has to have great website icons.

I am always scouring the Internet for great free graphics I can use on my various websites and in my applications.

The FINE, FINE folks over at FAMFAMFAM have some of the best free icon sets available all for free! Having released freeware myself in a variety of ways, it makes me feel good about the Internet as a whole when people take something that has taken both their time and talent, and made it freely available for anyone to use.

So kudos to you all famfamfam, and thanks for the free icons. Note: These icons come in .png format.