TopicObserver.com

Trond Pettersen on Web Development and Topic Maps

Tag: Web Development

MySQL BLOB to File in 20+ Lines of PHP Code

One of the nice things about PHP is how extremely quick it is to hack together a script that will save your day.

Today, I needed to throw together a script for converting some images stored as BLOBs in an old MySQL database of mine, to JPEG files stored on the file system (obviously, I knew that my database only contained JPEGs). It was a one time job, and so I set out to create a quick and dirty script to get the job done.

The job only took me about 20 lines of code, due to PHP’s built-in MySQL support and file handling support. I’ve cleaned it up a bit before posting it here, though, so now it takes a whole lot of 27 lines due to the verboseness of the somewhat cleaned up code.

In cases like this, hard coding the DB credentials and directory paths wont make me loose sleep. Neither does doing it the procedural way. The script did it’s job, and I got what I wanted … without spending a single calorie too much.

<?php
$conn = mysql_connect('localhost', 'myuser', 'mypass');
mysql_select_db('mydb', $conn);

// returns rows of id, img_name and img_data
$sql = 'select * images';
$queryResult = mysql_query( $sql, $conn );

while( $row = mysql_fetch_object( $queryResult )) {
	processRow( $row );
}

mysql_close($conn);

function processRow( $row ) {
	$basedir = 'images/';
	$imagename = makeSafeImageName( $row->img_name );
	// in my case, file names are not unique, so I add the id
	$filename = $basedir . $imagename . '-' . $row->id . '.jpg';
	file_put_contents( $filename, $row->img_data );
	echo 'done dumping ' . $filename ."\n";
}

function makeSafeImageName( $source ) {
	return strtolower(preg_replace('/([^\w\d\-_]+)/', '-', $source));
}
?>

(Execute from command line with php my-script.php, or web server).

Readable Code: In the Eye of the Beholder?

In his most recent blog posting – In the Eye of the Beholder (ah, reminds me of EoB II), JavaScripter James Padolsey (if you do some JavaScripting / jQuery, follow his blog) argues that the readability of anything is entirely dependent on who’s doing the reading. He also states that readability depends on how proficient the reader is in the given programming language.

I tend to disagree. Readability and understanding are two separate concerns. Readability is about aesthetics. Understanding is about knowledge. Code can be understood without being classified as “readable”.
Read the full post »

Open to Web Development Opportunities in the US

Shoot me an e-mail at trondpet[curly-thingy]hotmail.com if you’re a US based employer in need of a sr. web developer with a proven track record. I’m a US citizen with no need of sponsorship.

My strengths are web development and -programming — from architecture and back-end programming to front-end coding. Below is a list of some of my skills. More about my project experience.

  • PHP4/5 (WAMP/LAMP)
  • Java
  • JSP
  • MySQL
  • MSSQL
  • XSLT
  • JavaScript / Ajax
  • jQuery
  • XHTML
  • CSS
  • Topic Maps
  • Information Modeling / Ontology Development
  • Cross-Browser Issues
  • WAI

I’ve currently got a few opportunities in sight, but am still open for exciting offers and am available for hire from early April on (arrive in the US on April 5 2010). I am primarily interested in opportunities on the West Coast — Greater L.A. Area, San Francisco Bay Area, Seattle and Portland, OR.

Feel free to contact me at trondpet[curly-thingy]hotmail.com, LinkedIn or Twitter.

Edit: I am no longer seeking new opportunities :)

Web Application Development with Ontopia – 2. Creating the Database

Intro

This blog post is part of a series on Web Application Development with Ontopia.

  1. Part 1: Installation & Requirements
  2. Part 2: Creating the Database
  3. Part 3: Creating the JSPs

In part 1, we looked at how to set up Ontopia. We also described the application that we intend to build (a blog) and what we need to develop in order to achieve our goal.

This time we’ll look at how to set up the “database schema” and create new blog posts by using Ontopia’s web interface. The resulting topic map can be browsed here.

Read the full post »

Web Application Development with Ontopia – 1. Installation & Requirements

Introduction

Ontopia is an Open Source application that lets you create, manipulate and navigate information represented in topic maps. It’s also a toolbox for building all sorts of applications. Among the advantages of topic maps driven applications are enhanced navigation and search capabilities.

Ever since Ontopia went Open Source earlier this year, I’ve wanted to give an example of how easy it is to build a web application on top of it.

Through the next couple of blog posts, I’ll try to show exactly how easy this is – and I promise to leave out the unnecessary talk (wont discuss Topic Maps, for instance).

First I’ll “reveal” how to set up and start Ontopia. As this requires very little typing on my part, I’ll quickly move on to discuss what our goal is. Then we’ll have a look at the required data model, before pointing out the kinds of views that our application needs to support — and how to lay this out. Afterwards, we create the limited amount of code needed to get everything up and running. Last, we deploy.

All code will be available for download :)
Read the full post »

  • RSS @twitter

    • Could not connect to Twitter
  • Tags

  • Topics

  • Recent Comments

  • Topic Map Feeds