Skip to content

Lampsig 2008 Presentation on Subversion for Lamp Developers


Here are the slides for the presentation on subversion I gave at the September 2008 LampSIG meeting. I hope some may find them useful, however they were meant only to provide a skeleton for the talk, and aren't a complete tutorial by any means. The following links to other sites were mentioned in the talk:

The Red bean book, aka Subversion manual
The svnmerge python script
Subversion tips Article
Subversion Cheat Card


Defined tags for this entry: , , , ,

LAMP Tutorial Series originally published on PHPFreaks.com

A few years ago I published a 3 part LAMP tutorial series entitled LAMP, MySQL/PHP Database Driven Websites on the well known php community website PHPFreaks.com. This series dealt with a slew of practical issues including how a LAMP server works, relational database design using MySQL, many to many tables, SQL inner and outer joins, practical PHP debugging, php documentation tools, basic PHP classes, css, interactive javascript & DHTML with a chooser widget, php HEREDOC and php basics like how to process forms and utilize GET and POST methods.

The series was fairly successful, (a 4.5 of 5 after hundreds of ratings), many pages of comments and questions, and page views to the 100k's+ although PHPFreaks auditing system was turned off at some point and stopped recording views.

Unfortunately, some years ago PHPFreaks.com suffered some fairly catastrophic issues with its publishing system. There were also some bugs, and the site was exploited with some XSS, and the admins simply decommissioned the majority of the site. My series was part of what disappeared. At that point, a couple of college Computer Science courses on web development had taken the series and integrated it into their curriculum, and the professor of one of these courses had converted it into a Word document, which I was able to download and convert to pdf.

I plan to write a compatible publishing addon for gizmola.com so that I can take the original markup and republish it here, but in the meantime, here is the series in pdf format. The conversion utility they used stripped out the original markup, and page breaks are gone, but the text, source code, and illustrations are all still there.

I also offer all the source code for parts 2 & 3 of the series. I'm not sure what happened to the source for part 1, however, it is all included inline in the tutorial. The LAMP, MySQL/PHP Database Driven Websites series is now available in pdf format. Click here.


Defined tags for this entry: , , , , ,

CAPTCHA busting -- A sucker born every minute

I have a small phpBB2 forum attached to this site, that I used briefly to support some of my side projects. phpBB has had a checkered past in terms of security, having been the victim of many exploits. To be fair that's one of the costs of having been one of the first and most widely successful php based community projects. The number of phpBB deployments is staggering even to this day. With so many forums out there, spammers quickly figured out that if they could write a bot to create an account and auto post messages, they'd be able to spread their spam messages far and wide. I was getting so much spam, I ultimately disabled the ability of people to authenticate their own accounts, and despite this change, still see as many as ten new signups for the forum every day. Who would bother to sign up for an account they can't use? There had to be a way of determining the bots from the humans who wanted to post to my forum.

CAPTCHA, as the conventional wisdom of the day was concerned, would provide a useful deterrent to this annoyance -- bots arent' smart enough to decipher the captcha images and extract the right combination of numbers and letters depicted in the image, and type them back to into the form in order to unlock the account. Without the account, the spammers couldn't have their bots post their spam messages. While phpBB introduced a CAPTCHA capability relatively late in the game, it is now something you get out of the box, and there is at least one mod that improves on the quality of the CAPTCHA image, which is to say, makes it harder to read.

The problem is that CAPTCHA's are there to defeat dumb machines, but not dumb humans. And as the old saying goes, there's a sucker born every minute who is more than happy to help your local spammer defeat the CAPTCHA image on your site. How might you ask? Well, the scam works something like this: John Q. Sucker visits some site that informs him he's getting something for free -- it could be a free ipod, porn, or an xbox 360. All that is important is that this person believes they will be getting access to this free stuff once they register.

They visit the spammer's site, and are presented a CAPTCHA image in order to register, only, this image didn't come directly from the spammer's site -- it came from YOURS. The spammer writes a simple bot that goes to your site and hits the registration page. It takes the CAPTCHA image your site provided, and presents it to John Q. Sucker on the spammer's site.

Continue reading "CAPTCHA busting -- A sucker born every minute"

February LAMPsig presentation on SVG with Ajax demo

I'll be talking about the Dynamic Scalable Vector Graphics (SVG) with Asynchronous Javascript and XML (Ajax) demo I created for the LAMPsig booth at the Southern California Linux expo 2006 (SCALE) conference that was held last weekend.

There were some excellent LAMP oriented discussions including Zend's Andi Gutmans himself, who talked about the PHP community project and PHP 6, then hung around for a while whilst myself and Chris Thompson peppered him with questions about MySQL's oop, its applicablility to the various framework projects underway. In short, Andi indicated that the PHP core team currently has no plans to add anything to the Oop capabilities of PHP 5, although I suppose that could change once the PHP Framework project matures. He indicated that the PHP Framework should be available in alpha or beta within the next few weeks.

Other LAMP hi-lights included Jim Winstead from MySQL AB who discussed new features in MySQL 5.x and provided some nice example code, and David Schecter from Sleepycat gave an entertaining talk that illustrated how integral berkely database is to Linux in general, and how its used by many major players to provide a high performance caching layer in front of oracle and mysql for websites like Yahoo.

Defined tags for this entry: , , , , ,

Serendipity GeSHi Plugin update .05

Give this a day and it should be in Spartacus and the Sourceforge Additional Plugins cvs branch.

-.05 release
- Updated GeSHi to latest release (1.0.7.4)
- This release includes some fixes, and new language files for:
applescript, D, diff output, DIV game language, DOS batch language, eiffel, freebasic, gml, Delphi Inno script, Matlab M language files, MySQL specific SQL, Objective CAML, Ruby, Scheme, SDLBasic, and VHDL: Very high speed integrated circuit HDL
Defined tags for this entry: , , , , ,

Joomla PonyGallery tweak

In the current release of the The Mambo/Joomla PonyGallery component, support for MamboJoe's Community Builder component is hardwired into the picture detail page. The Author name is a link to the Community Builder component. If you don't have that component installed, here is how you can remove the link.

You need to edit the PonyGallery script sub_viewdetails.php. This script is in the components/mod_ponygallery directory.

Find these lines:

  1.             echo "<tr class='sectiontableentry2'><td width='30%' valign='top'><b>"._PONYGALLERY_AUTHOR.":</b></td><td width='70%' valign='top'> <a href='index.php?option=com_comprofiler&task=userProfile&user=" . $imgownerid . "'><b>" . $imgowner
  2.                      . "</b></a></td></tr>";


And replace them with this:

  1.             echo "<tr class='sectiontableentry2'><td width='30%' valign='top'><b>"._PONYGALLERY_AUTHOR.":</b></td><td width='70%' valign='top'><b>" . $imgowner
  2.                      . "</b></td></tr>";


I'm fairly sure this will be a configuration item in the next release of PonyGallery ;) Until then, if you aren't using CommunityBuilder, this will hold you over.
Defined tags for this entry: , , , ,