Zend Framework resource autoloading with appnamespace

A few days ago I was having problems getting my models autoloaded by Zend Framewok, after a little research I found the solution.

For this project I am using Zend_Application and Zend_Application_Bootstrap_Bootstrap for bootstraping my application. Enabling autoloading is as simple as adding this line to application.ini:

appnamespace = "Application"

or you could add a $_appNamespace property to your bootstrap class:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    protected $_appNamespace = 'Application';
Read More

Setting environment variables

It is often necessary to differentiate different environments by setting an environment variable with a different value on each of your different systems (development, qa, production). This is very easy to achieve if you are using Apache and PHP. You just need to modify your virtual host definition (See: Creating local virtual hosts with apache) to include a SetEnv directive:

<VirtualHost *:80>
    ServerName ncona.dev
    ServerAlias www.ncona.dev
    SetEnv APPLICATION_ENV development
    DocumentRoot /home/adrian/www/ncona.dev
    <Directory /home/adrian/www/ncona.dev>
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all

Now you have access to the environment variable from php:

Read More

Box shadows, the CSS 3 standard way

In this article I am going to explain the CSS 3 standard way of applying a shadow to an object. Using only this technique is probably not going to give the cross browser behavior that you are expecting.

The shadow object

The first thing we need to understand in order to apply shadows to an object is how the shadows are constructed. A shadow object has this prototype:

<shadow> = inset? && [ <length>{2,4} && <color>? ]
Read More

Introduction to Object Oriented Programing in Python

In this post I am going to explain the syntax for Object Oriented Programming in Python. I am assuming you have already done it in other languages so if you have not done Object Oriented Programming previously you should probably look for another article about it’s principles.

At the beginning when I started learning python I found some things that I felt kind of weird, like the lack of braces and semicolons. Now that I started learning their syntax for OOP I realize that doing things weirdly is their standard. Python (kind of) allows you to implement all the principles of OOP but their syntax is not similar to the one of Java, C++, or PHP that I am familiar with. Anyway so far I don’t see any problem with their different way of doing things so I will just explain how things are done in Python.

Read More

Gradient background, the CSS 3 standard way

In this article I am going to explain the CSS 3 standard way of achieving a linear-gradient background. Using only this technique is probably not going to give the cross browser behavior that you are expecting.

Linear gradient

The definition of a linear gradient from W3C documentation:

A linear gradient is created by specifying a gradient line and then several colors placed along that line. The image is constructed by creating an infinite canvas and painting it with lines perpendicular to the gradient line, with the color of the painted line being the color of the gradient line where the two intersect. This produces a smooth fade from each color to the next, progressing in the specified direction.

So, to set a linear gradient for a div or another DOM element we would need to imagine a straight line that goes through the object at an specific angle touching the center of the element. Then define the colors we which at specific points in the line.

Read More

Creating functions with Python

We can create functions on Python using the def keyword.

def printSomething():
    print "something"

Functions in python can have arguments and return statements as in most languages.

def addNumbers(number1, number2):
    return number1 + number2
Read More

Contributing to OpenHatch project

What is OpenHatch?

OpenHatch.org is a website where you can find ways to contribute to open source projects, mentor people who want to contribute to a project, or give a little more visibility to your open source project so people can help you.

In my opinion the most interesting features are the classification of some bugs as bitesize, which are good bugs for people who want to help but don’t have much experience. This is an awesome place to start. The other interesting feature is the ability to offer yourself as a mentor to fix a bug. If you are an expert on a subject but you don’t have time to fix an specific bug you can list yourself as a mentor and help other people get a bug fixed.

Read More

Rounded corners, the CSS 3 standard way

In this article I am going to explain the CSS 3 standard way of achieving rounded corners. Using only this technique is probably not going to give the cross browser behavior that you are expecting.

Border radius properties

It doesn’t matter which way you specify the radius you want for your corners, the browser is going to compute it in four different properties:

Read More

Pushing and deleting remote branches with git

Creating new branches and deleting them locally is an easy task with git, but when it comes to doing it for a remote repository, happily, it is very easy too.

Pushing a branch

If you have a new branch named mybranch on your local repository and you want to push it to a remote so other people can see it you can do:

git push remotename mybranch

Most of the time you will probably want to push to the origin remote, so the command will be something like this:

git push origin mybranch
Read More

sudo: unable to resolve host

Today out of the blue (or at least that is what I thought when I first saw it) I started seeing this message everytime I issued a command using sudo:

$ sudo ls
sudo: unable to resolve host adrian

After a little investigations I found out that it actually didn’t come out of nowhere, but I was the one who made this happened. What happens is that you usually have an entry in the file /etc/hostname where you specify the name of your host. So when you use the sudo command it tries to connect to the host computer to check for permissions. This can get really complicated, but if you are only working on your computer your host is usually the local host.

Read More