Robert Basic's blog

Archives for November, 2008

LAMP and SVN on Ubuntu 8.10

by Robert Basic on November 24, 2008.
Heads-up! You're reading an old post and the information in it is quite probably outdated.

This post is a rewrite of one of my older posts, Ubuntu as a dev machine, but this time I’ll explain also how to setup a basic SVN besides the LAMP.

Ubuntu 8.10 was released bout a month ago and today I wasn’t in the mood of doing any coding so I decided to try out the new Ubuntu. Once again, I’m installing it under VirtualBox (VB), cause it seems that they still haven’t fixed the bug related to the rtl8187 chipset. Oh well…

Be sure to use VB v2.x.x. (v2.0.6. is the latest now), cause it’s recognizing the correct screen resolution, not like VB v.1.6.4, whit which I had to configure manually the xorg.conf file…

Setting up LAMP

Here are the commands:

sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5
sudo /etc/init.d/apache2 restart
sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
sudo /etc/init.d/apache2 restart
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

If mod_rewrite doesn’t work, do the following:

sudo gvim /etc/apache2/sites-available/default

And change AllowOverride None to AllowOverride All.

Setting up SVN

I’m not gonna explain how SVN works or the terms, this is just how to set it up. If you are not familiar with versioning and Subversion, read this book: Version Control with Subversion. It’s free, available for download and contains probably everything you need to know about SVN. Be sure to learn the commands like commit, import, export, checkout, add, info, etc…

There are 2 ways for setting up SVN: as an Apache module or to use svnserve which is designed for SVN. As I already have Apache installed, the best solution is to use Apache for SVN. It’s using a module called mod_dav_svn.

The setup presented here is very basic, it has no authentication and probably is insecure, but it’s good for my needs on localhost.

The commands:

sudo apt-get install subversion
sudo a2enmod dav
sudo /etc/init.d/apache2 restart
sudo apt-get install libapache2-svn
sudo /etc/init.d/apache2 restart

Now we have all packages installed, only the configuration left.

First, I create a folder called svn under the var folder:

sudo mkdir /var/svn

Now I need to create a folder under the svn folder where all my repositories will be:

sudo svnadmin create /var/svn/repos

We use the svnadmin create command to create the repository; mkdir is not good for this.

Next, open up the httpd.conf file and add the following lines to it:

<Location /repos>
    DAV svn
    SVNPath /var/svn/repos
</Location>

I’ve seen people creating a new user and group for SVN. I think (I haven’t looked into it detailed) that’s for the authentication stuff. I did a much simpler thing: I added the ownership over /var/svn to www-data (Apache user):

sudo chown -R www-data /var/svn

This is probably a big security hole, but again: I use it only on localhost so I can live with that.

We are now ready to import a project into SVN, i.e. to add a project to the repository:

svn import -m "First import to SVN" /import/from/here/project file:///var/svn/repos/project/trunk

To start working on that project we need to checkout it:

svn checkout http://localhost/repos/project/trunk /var/www/project

Now the “project” is under SVN which should ease the development process. Since I’m using SVN I have no more backups of projects all over the place; if something goes wrong I know it’s under SVN and I can revert to any older working version of my project.

Cheers!

Tags: apache, lamp, setup, subversion, svn, ubuntu, virtualbox.
Categories: Development, Programming, Software.

TickTweet WordPress plug-in

by Robert Basic on November 21, 2008.
Heads-up! You're reading an old post and the information in it is quite probably outdated.

Few weeks ago @imjustcreative mentioned on Twitter that he would like a WordPress plug-in that would scroll (tick) tweets where “soultweet” is mentioned. As I wanted to do a plug-in for some time, but never had any good ideas, I told him that I’ll take up the job. So I started to work on this in my free time.

Before I even started looking at anything, I decided that I want this plug-in to be fast, to work with smallest possible data to save bandwidth and to keep the number of calls towards Twitter low.

First I looked into the Twitter Search API documentation, to see how data can be retrieved from Twitter — in Atom or in JSON.

The first idea...

As a JSON document is smaller than an XML document, I decided to retrieve data in JSON. Of course, once retrieved it would be cached locally in a file for some time (5 minutes is my default).

I also wanted to avoid the possibility of the page waiting to retrieve the data from Twitter, so I figured that it would be the best to call it up with Ajax. That way, when the plug-in is called up, it sends an Ajax request to himself, the page continues loading normally and in the background runs the Ajax request.

The draft was there, I looked at the WordPress writing a plug-in page and in a week or so the first version of the plug-in was ready to go out.

I tested it locally on my Windows machine (a basic WAMP setup) and on my Ubuntu machine (a basic LAMP setup), on this server and on another one which has a ton of security limitations (server of my College). I was glad to see that it worked like a charm on all 4 servers. I put up a TickTweet page, and let it out in the wild through Twitter.

The retweet madness started immediately. @imjustcreative, @jonimueller and @bishop1073 downloaded it right away. Soon as they enabled the plug-in, the short and exciting life of TickTweet started to end. Errors, bugs… Joni’s server is running on PHP 4, and I had a few PHP 5 only functions. My bad. On Graham’s and Bishop’s server who knows what went wrong. Graham helped me a lot tracing down the bugs, a few of them were found and squashed, but that was not enough. So I decided to pull back TickTweet, rethink it and possibly rewrite it.

The second idea...

OK, this JSON — Ajax thingy won’t work. Back to the paper. I started looking at the WordPress core to see what functions and/or classes are available in it for this kind of task… Didn’t took me long to find the fetch_rss() function. Man I was happy to find that! It’s using the MagpieRSS and the Snoopy classes to retrieve the data. I figured, those are included in WP’s core, they’re gonna do the job just fine. So I’ve rewritten it.

Testing again. The College’s server was dropped out right away, no way around that security. On others it worked fine. I tested for a couple of days just to make sure. When I thought it was OK, I’ve let it go once again. I contacted Joni, Graham and Bishop to tell them that the new rewritten version is out. On Joni’s site it worked. Awesome. On Bishop’s site worked. Kinda. On Graham’s site didn’t work. He tried it on another site. Worked. Cool. Finally it works. I was happy.

But not for long. The next day I saw that on my site it’s ticking some ol’ tweets. What?! Then started the bug hunting again. I looked at each line of code, var_dumped every variable. No luck. Somehow, all of a sudden, my server is not getting the data from Twitter. No changes on the server configuration, no change in the code, but it just won’t work.

The third idea...

The third idea is to leave this “plug-in” as—is, and to stop working on it. It just doesn’t pay off. Sure, I could trace down where it hangs on my server, going backwards through the code, but it’s just not worth it. Those who are interested in this plug-in, you can find it at the TickTweet page, use it, rewrite it, change it, trash it.

Cheers!

Tags: about, blog, php, plugin, site, wordpress.
Categories: Blablabla, Development, Programming, Software.

School's out!

by Robert Basic on November 13, 2008.
Heads-up! You're reading an old post and the information in it is quite probably outdated.

Today is one big day for me: I passed my last 2 exams at the College. 3 months of learning, a bit of luck and a professor in a good mood — the winning combination! This is a big relief for me, cause I now can fully concentrate on programming, no other stuff to think of, just me and the code.

At the College I have only one more obligation, the graduate work. I’ve chosen to write a desktop application in Python; my mentor loved the idea, and this will be a great chance for me to learn something new. Need to work out the details with the mentor, but roughly I have it all in my head and on papers :)

I’m off to get my power-nap now, I’m dead tired and there’s some code need to be written tonight :)

Cheers!

Tags: random.
Categories: Blablabla, Free time.

Powered by WordPress 2.7 beta 1

by Robert Basic on November 04, 2008.
Heads-up! You're reading an old post and the information in it is quite probably outdated.

I’ve decided to upgrade to WordPress 2.7 beta 1, just for fun. For now, no major problems occurred, just a few smaller ones, all which are caused by my hacking of the WordPress core — I wasn’t keeping track of all hacks I did, so there were some random errors, but everything should be fine now.

I don’t recommend to no one upgrading to this version, unless you are OK with possible problems caused by this beta version. And even if you decide to upgrade now, do a backup of your database! Heck, do 2 backups!

First I did was backing up… No, I lie. First I did was start copying files of the wp-admin folder up to the server, when it came to my mind that I forgot to backup the database. Silly me. While it was copying I did a backup. Then I copied the contents of the wp-includes folder and then the files under the root folder of my blog. I haven’t uploaded nothing from the wp-content folder.

Oh yeah. Under the root folder, skip copying one file (if it’s there): the wp-config.php file, just to prevent overriding the configurations.

I tried to login to the dashboard. A message waited me, saying something like the database needs to be upgraded, blablabla, with a big a button. So I pressed the button. And everything went well. I logged in to the dashboard, to find out that I can finally find my way around the dashboard. It’s soooo much better now!! Errmm… I even saw a screenshot of it some where on the Internet… Meh. Can’t find it now.

After fixing those little errors I saw that my custom made template is working just fine and the plugins too — all 3 of them.

So there. My blog is now powered with WordPress 2.7 beta 1. I thought to write a tutorial on upgrading from WP 2.6.x to WP 2.7 but as it all comes down to uploading the files and hitting that “Upgrade database” there is no need for a tutorial.

Oh, and in case you missed it: do a bloody backup first!

Cheers!

P.S.: If someone finds some errors or the blog starts misbehaving let me know! Thanks!

Tags: blog, upgrade, wordpress.
Categories: Blablabla, Free time, Software.