Virtual life

How to easily create Debian packages for PHP extensions

Written on March 20th, 2011
.

debian php packe How to easily create Debian packages for PHP extensions

Let me explain to all of you how to create a Debian package from a PECL tarball. Currently is very simple to package a PECL extension without having any previous experience in Debian packaging and thus this system administration by installing deb packages could be more easy too.

So let’s start the packaging.

Read the rest of this entry »

Sort an array of objects by one of the objects property with PHP

Written on February 3rd, 2011
.

Sorting quicksort anim Sort an array of objects by one of the objects property with PHPIf you want to sort an array of objects but using one of its object properties you can do it with usort, but this could take a lot of time and will be very computational expensive.
So I have implemented one method you can insert into one of your PHP classes. This method implements the quicksort algorithm.

As a result I have experienced a huge performance improvement against usort: one array of objects with 10.000 elements sorted with usort takes ~3.4 sg, and with quicksort algorithm takes, in my samples, ~0.56 sg. Awesome isn’t it?

Read the rest of this entry »

Migrate Subversion repository to Git without loosing data

Written on January 13th, 2011
.

git pony svn ogre Migrate Subversion repository to Git without loosing dataIn our company we migrated all our SVN repositories to Git, as the migration is not straight forward I wrote down it and made available for all of you. Some tips are taken from documentation and others from other websites.

So, let’s go! Read the rest of this entry »

Get back your disk space in a Debian-based Linux

Written on November 21st, 2010
.

4242576451 39b4be5d76 b 300x214 Get back your disk space in a Debian based LinuxThere are some actions you can perform to achieve if you can get back disk space in your Debian/Ubuntu based box. Most packages contain files that aren’t necessary. For example, UI and documentation translations in languages you don’t use. Wouldn’t it be nice if you could get rid of them and get back a few megabytes? Well, since dpkg 1.15.8 you can.

dpkg has two options --path-include=glob-pattern and --path-exclude=glob-pattern that filter what files are installed or not. You can get the format of the pattern from the glob man page: glob(7).

But this just works if you issue dpkg command from the shell but not if you are using apt or aptitude. So the best way to use them is to write them down in a file in /etc/dpkg/dpkg.cfg.d/.

A comon usage is: first exclude a directory and then re-include parts of that directory that you want to keep. For example if you want to delete gettext translations and translated manual pages except Galician, you could write down this in /etc/dpkg/dpkg.cfg.d/excludes:

# Delete locales except Galician
path-exclude=/usr/share/locale/*
path-include=/usr/share/locale/gl/*
path-include=/usr/share/locale/locale.alias

# Delete translated man pages except Galician
path-exclude=/usr/share/man/*
path-include=/usr/share/man/man[1-9]/*
path-include=/usr/share/man/gl*/*

This rules will apply to packages you will install/upgrade from now, but if you want to save space immediately, you have to reinstall all the packages in your system.

aptitude reinstall

or

apt-get --reinstall install

NOTE:
Concerning locale deleting you can get the same results by using localepurge. But this tool is strongly discouraged because this tool is a hack which is *not* integrated with Debian’s package management system and therefore is not for the faint of heart (other examples of tools that is strongly disacouraged are: dpkg-repack, reportbug, etc). Responsibility for its usage and possible breakage of your system therefore lies in the sysadmin’s hands.

NOTE 2:
The package management system on Linux makes installing and upgrading software a snap, but it also caches every package in a local folder in case it’s needed again. Here’s how to clear that cache and save loads of drive space.

sudo apt-get clean