Actualizar PHP en CentOS

Para actualizar la version de PHP a la 5.2.11 hay que utilizar el repositorio test de remi, el otro repositorio remi tiene la version 5.3.1

cd /etc/yum.repos.d
wget http://dev.centos.org/centos/5/CentOS-Testing.repo
rpm --import http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
yum --enablerepo=c5-testing update php
yum --enablerepo=c5-testing update mysql

Luego reiniciamo mysql y php

service mysqld restart
service httpd restart

Información extraída desde http://www.magentocommerce.com/wiki/how_to/installing_php_5.2.x_on_centos_5.2

CakePHP: Mini control de acceso

Hoy comencé a trabajar sistema utilizando CakePHP en el cual necesito un control de acceso para distinguir entre dos usuarios, un administrador y un usuario normal, no quise usar ACL debido a lo básico de necesidad así que me puse a desarrollar mi propio sistema de control de acceso, con una pequeña variante en el software.

La solución es la siguiente:

En mi app_controller.php

function beforeFilter() {
        if($this->Session->check("Auth.User")) {
            if($this->_permisos($this->params,$this->Session->read("Auth.User.group_id")) == false) {
                $this->Session->setFlash("No tienes permiso para ingresar a esta area");
                $this->redirect("/");
            }
        }
    }
    function _permisos($params,$group) {
 
        $normal_permitido = array(
            'users' => array(),
            'tickets'=>array('add','view','index'),
            'comments'=>array('add','view','index'),
            'groups' => array(),
            'types' => array(),
            'subareas' => array(),
            'areas' => array(),
            'pages' => array('display')
        );
 
        if($group != 1) {
            if(array_key_exists($params["controller"],$normal_permitido)) {
                if(in_array($params["action"], $normal_permitido[$params["controller"]])) {
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                return false;
            }
        } else {
            return true;
        }
        
 
    }

La idea es super simple si el usuario no es administrador solo podrá acceder a ciertas acciones los controladores. En el arreglo $normal_permitido se almacenan los controladores y las acciones que tiene permitido visitar.

Ojala les sirva.

Happy baking!

PHP Tips: Transformar un array a string sepado por comas

Muchas veces necesitamos transformar un array a un string en el cual los elementos este separados por , o por algún otro separador para esto podemos usar la siguiente funcion.

implode(",",$array);

Convertir datetime de mysql en unix timestamp usando php

echo(date('U',strtotime($string)));

Ignorar archivo en svn

Con esta simple instrucción ignoramos el archivo de base de datos de cakephp (ideal cuando hacemos checkout en nuestro servidor de producción)

stefano@sheldon:~/directory/app/config$ svn propset svn:ignore database* .
propiedad 'svn:ignore' asignada en '.'

Retomando Java gracias a Twitter

Hace tiempo que tenía ganas de aprender un nuevo lenguaje de programación pero me faltaba un incentivo. Ahora ya tengo el incentivo solo es cuestión de tiempo. El lenguaje elegido es Java

Mi primera aplicación en java (había hecho otras antes para la universidad pero ya no recuerdo como eran).

Esta pequeña aplicación utiliza la biblioteca Twitter4J la cual nos entrega una serie de clases y funciones para manejar de manera fácil el api de twitter.

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
 
import java.util.List;
 
public class Main {
 
public static void main(String[] args) {
if (args.length < 1) {
System.out.println("No TwitterID specified.");
System.exit(-1);
}
try {
Twitter twitter = new Twitter();
List<Status> messages = twitter.getUserTimeline(args[0]);
int i = 0;
for (Status message : messages) {
if( i <= 1) {
System.out.println("<@"+args[0]+"> "+message.getText()+ " date:"+message.getCreatedAt()+ "\n");
i++;
}
}
System.exit(0);
} catch (TwitterException te) {
System.out.println("Failed to get messages: " + te.getMessage());
System.exit( -1);
}
}
}

Con este simple código podemos obtener los últimos 5 mensajes de una cuenta de twitter.

Rss Feed Tweeter button Facebook button Technorati button Reddit button Linkedin button Webonews button Delicious button Digg button Flickr button Stumbleupon button Newsvine button Youtube button