How to add an index on Doctrine 2 using YAML

I know this post is kind of small but this is something not so easy to find on google. The easiest way to add an index to a column on a YAML mapping is using the @indexes contraint.

 

Entity\Post:
    type: entity
    table: posts
    indexes:
        # index name
        title_slug_idx:
            # one or multiple columns separated by comma
            columns: [ slug ]
    id:
        id:
            type: integer
            generator: { strategy: AUTO }

    fields:
        name:
            type: string
        slug:
            type: string

Data types for Latitude/Longitude on Doctrine 2 with YAML

NameI’m a devote Doctrine 1.2 user but times are changing and now I’m faced with the challenge of learning and updating all of my applications to use the brand new Doctrine 2.2 framework.

Doctrine 2.2 has been completely renewed and a lot of cool stuff from Doctrine 1.2 has dissapeared, one that will be missed the most I’m sure is the auto-magic the behaviours provided, this said some new challeneges arise, for example, what type of data to use to store basic data like latitud and longitud since the Geographical behaviour is now gone.

A solution I’ve find is to use decimal type of data with a size of 18,12, so if you are defining your models with YAML like I do you can do the following:

 

 

Entities\City:
  type: entity
  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO      
    name:
      type: string(255)
    latitude:
      type: decimal(18)
      scale: 12
      precision: 18
      nullable: true
    longitude:
      type: decimal(18)
      scale: 12
      precision: 18
      nullable: true

With this type of data I fixed my need of storing latitude and longitud data.

Domains from How I Met Your Mother that actually exist

I know this post is off-topic about everything else on this blog but I thought it’d be funny to gather all those funny domain names that are used on the How I Met Your Mother TV show.

So far the domains I’ve found that work are:

So if you know any other domains from this serie, please post it on the comments and I’ll add it to the listing.

Using split on PHP 5.3.0

It’s been a while since it started coding again in PHP specially in PHP 5.3.0 and I’ve come across some interesting finding, for example some functions such as ereg, eregi and split are deprecated now in favor of a new library call Perl-Compatible Regular Expressions. For old coders (like me) we need to start updating our code to keep with the up to date standards.

A function I use a lot (for good or for bad) is split but as a matter of fact is one of the new deprecated functions on php so instead of calling it as usual (delimiter, string) now we have to call it using a perl-compatible regular expression (regex,string) as follows:

$email = “something@domain.com”;

$parts = preg_split(‘/@/’,$email);

Result:

Array ( [0] => something [1] => domain.com )

You can see it’s the same result as the old split() function.

Hope this saves you some time.

How to convert a .cer certificate to .pem on Linux/Unix and OS X

While trying to update a certificate on a produciton enviroment I ran into the following issue, Apache only accepts certificates in PEM format, since my client provided me with his new certificate on a .cer file I had to find a way to convert it.

For x509 certificates this can be easily achieved using OpenSSL on Linux/Unix and OS X. First make sure you have OpenSSL (comes by default with OS X), open a terminal and issue the following command:

openssl x509 -inform pem -in certificate.cer -outform der -out certificate.pem

Where certificate.cer is the source certificate file you want to convert and certificate.pem is the name of the converted certificate.

How to know the size of multiple folders on Linux/Unix

Folder IconOften while I’m administrating a Linux/Unix box I come across the tediousus task of freeing up space on the server, usually this task is easily accomplished by issuing a simple “ls -lh” command, you get a nice listing of the files in the current directly along with some nifty details like last modification date and size (the -h parameter for ls allows us to get the size in a human-readable way).

The downsize of doing it this way is that you don’t get to know for real the size of the folders within the current directy, you get a nice total on top of the “ls” listing. A nice command to get the size of a certain folder is issuing a ds

du -sh folder/

This way you’ll get the following result:

pepper:~ pepper$ du -sh perrohunter.com/
694M    perrohunter.com/

You can see that the folder perrohunter.com weights a total of 694 MB. (yeah, that much).

But what if you’d like to know the size of all the folders within the current folder? Piece of cake, just use the * wildcard and that’d do the trick:

du -sh *

And you should get a result similar to the following:

pepper:~ pepper$ du -sh *
628K    application
8.0K    cache
40K    codeigniter
3.6M    database
156K    fonts
180K    helpers
4.0K    index.html
68K    language
536K    libraries
8.0K    logs
36K    plugins
76K    scaffolding

You can see the folders now have the total size of them in MB. Hope this is helpful for you.

Repair a Mac OS X HFS+ Partition table

At the time of writing this post I must say that I feel like a hero! That feeling is wonderful you know, when someone has a problem with their computer and not a simple but a HUGE one and you are able to repair em you turn to be that people hero.

Today my friend Avaco12 made a little mistake while installing bootcamp on her iMac, she left her external (200GB) disk connected, and when Windows asked her where to put the new Partition she accidentally selected her preciousus external drive, when she realized it was already too late, windows had already destroyed the partition table on her disk. She had 1 HFS parition and 1 FAT. She was crying because she said she had her entire life on that disk, so she asked me for help and I started researching what could I possibly do to repair the disk or at least retrieve her data.

There are plenty of solutions out there, some of them are really expensive, and people on the forums are not very happy with them so I wanted to look at little more into the issue and I came across this solution called TestDisk which is an Open-Source Multi-platform solution for repairing disk partitions. I gave it a try and awesomely I managed to fix the disk using TestDisk and the pdisk utility.

When I called Avaco12 to tell her that I fixed her data she was so happy she couldn’t stop smiling she told me I was her Hero and so that’s how I felt, the process wasn’t easy specially because noone talks about how pdisk works on Mac OS X.

Here’s how I did it , hope it works for you.

1.- I downloaded TestDisk from their official site :http://www.cgsecurity.org/wiki/TestDisk

2.- I opened the terminal and surfed to where I downloaded and unziped TestDisk

3.- I issued the command ‘sudo ./testdisk’ it indetially promped me to make my terminal bigger =P, after doing so It displayed me a simple disclaimer and then a notice telling me that TestDisk could Log all the activity if I wanted to. I selected Yes and continued.

4.- On the screen it will display you all the Disk it detects connected to your Mac select the one that got damaged partition tables and press Enter. Take note of which drive you selected, in my case I chosed /dev/rdisk1 (rather than /dev/disk1)

5.- Next screen select the menu Analize, it will probbly display you and error telling you the block 0 couldn’t be read, just hit enter on the ‘Quick Analize’ option

6.- ATTENTION: TestDisk will quickly search for partitions on the disk and display you information about it on your disk. Take note of the information it will display you, since you’ll need it to repair the disk later on with pdisk.

Here’s a screenshot of what I got:

 

 

Note: if you try to repair your partition table with TestDisk it will fail since that function is not yet implemented.

7.- you can now exit TestDisk. The next steps are what distinguish a child from a Men

8.- Issue the command ‘sudo pdisk /dev/rdisk1’ (where /dev/rdisk1 should be the same name you chosed on step 4). If you type the command ‘c’ and hit enter it will tell you the following:

9.- That’s completely normal. Now type ‘i’ and it will display you some affirmations about block sizes and such, just hit enter:

 

10.- Now we are going to need the info from Step 6. type the command ‘c’ and press enter, it will ask you to type down where your first partition starts, how long it is and how you want to name it. repeat this step for every partition you have.

 

11. Now if you are completely sure you wrote down everything correctly (like I did) just type down ‘w’ and hit Enter, It will prompt you to confirm just say yes (y)

12. type ‘q’ to quit the application and go see for yourself if your disk appears now in Finder. If it does, go to Step 13. else try disconnecting your external hard disk and reconnecting it. After Mac OS X 10.6.7 it is suggested that you restart your machine and reconnect the disk. If this fails try again from step one. Don’t worry about rewriting the partition table it doesn’t harm your data.

13. You are a hero, no matter if it’s your own disk, you just saved your data!

UPDATE:

If you are having problems with an error message on pdisk saying “the map is not big enough” follow these steps:

Before the analyze step go to GEOMETRY and change the sector size according to the following table:

Volume Size Default Block Size
<=256 MB 512 bytes
256 MB <= 512 MB 1024 bytes
512 MB – 1 GB 4096 bytes

Now go back to the ANALYZE step continue from there. Thanks to Stan Alien for the heads up.

Congratulations, and I hope this information is usefull to you now remember to backup your data! Personally I recommend Backblaze.

You can buy me a drink if you’d like to share your joy 🙂




cheers !

How to kill a process by it’s PID on Windows

I don’t want to sound mean but, God, MSDN API sucks =P. Not because it doesn’t tell you the stuff you need to know but because it requires alot of imagination from you to understand it.

For example, I was looking for a way to kill a process using it’s process id ( PID) however it turn that when you are programming for WIN32 you need to use HANDLE’s for everything so if you’d like to have a process that creates process and then kill them you’d have to store and manage every handle.

Now I don’t lik handling Handle and pointers I like to keep it simple using integers, an array of integers to me is way easier to use than an arrat of handles since pasing pointers and casting and etc.. is not my passion on C++. Thus I found a way to kill processes by their PID using this nice simple function:

void kill_by_pid(int pid)
{
	HANDLE handy;
	handy =OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, TRUE,pid);
	TerminateProcess(handy,0);
}

Hope this works for you

Cheers

Parsing <contend:encoded> attribute from a wordpress feed with simplexml

wordpressThat was a long title for this post o_o. Well , I first must clarify that my blog is not a wordpress mod, however it doesn’t mean I don’t have to work with wordpress at some point in the day. Recently I was doing a newsletter for a Website and I decided I would parse the RSS from that website to get the 4 newest contents however I ran into a trouble while using PHP’s SimpleXML class and this was that I SimpleXML couldn’t parse the contentn since it came with what is called namespace. For those of you who only came in here for the solution here it is =)

Replace <content:encoded> for <content> 😉

this is a simple example on how I did it

 

	$data = file_get_contents(“http://myurls.com/feed.xml”);
	$data = str_replace("content:encoded>","content>",$data);
	$xml = simplexml_load_string($data);
	$item = $xml->channel;
	
	foreach($item->item AS $art)
	{
		$content = $art->content;    
		echo $content;
	}

and thats it.

For those of you who kept reading I’m gonna tell you the solution to this problem, it’s indeed quite easy. Indeed a namespace tell us that what’s inside that tag is encoded in some other weird standard but don’t worry, the same feed it’s telling you what it is. if you see at the begining of the wordpress feed you’ll see this:
 

			

Javascript Regultar Expression for matching Domains on a string

Today I had a hard time creating a regexp to match domains on a string. I wouldn’t like the internauts who visit this small blog to suffer the same pain, so here’s how to :

var StringWithData = ” asd http://subdomain.perrohunter.com/lol/something.php asd”;
re = /http://w+([.-]?[a-z]+)*.com/;
var results = re.exec(StringWithData);
alert(results[0]);

results will be an array of matches so if you only want the first match use the 0 position, else loop the array for what you need.