Juan Rabadan

19Sep/110

Comprimir y descomprimir archivos tar y tar.gz con Linux

Descompresión de archivos tar y tar.gz

tar -zxvf yourfile.tar.gz -> con este comando extraemos el contenido del tar.gz en el directorio donde estamos parados.

Si queremos descomprimir el contenido el archivo en un directorio diferente debemos utilizar el operador -C de la siguiente manera

tar -C /nombre_de_la_caperta -zxvf yourfile.tar.gz

Compresión con tar y tar.gz

tar -cvzf file.tar.gz  {carpeta que queremos comprimir}

13Sep/111

Autocomplete for CodeIgniter 2.x en NetBeans

Para los que trabajamos con NetBeans y Codeigniter esta función es la solución al problema de Autocomple del código.

Al ejecutarla, nos descargamos un archivo autocomplete.php que debemos incluir dentro de nuestro proyecto.
Despues de hacer esto,  hacemos un restart de NetBeans (cerrarlo y volverlo a abrir) y ya tenemos el autocompleter funcionando para todas nuestras librerias, modelos y CodeIgniter Base Classes

function generate_nb_autocompletion($with_declared_classes = FALSE) {

$CI = & get_instance();

$CI->load->helper("file");
$CI->load->helper("download");

$classes = array();
if ((bool) $with_declared_classes === TRUE) {
$declared = get_declared_classes();

foreach ($declared as $class) {
if (strpos($class, "CI_") === 0) {
$classes[str_replace("CI_", FALSE, $class)] = $class;
}
}
}

$libs = get_filenames(APPPATH . "libraries/", FALSE, TRUE);
foreach ($libs as $file) {
$file = str_replace(".php", FALSE, $file);
$classes[str_replace("MY_", FALSE, $file)] = $file;
}

$core_libs = get_filenames(APPPATH . "core/", FALSE, TRUE);
foreach ($core_libs as $file) {
$file = str_replace(".php", FALSE, $file);
$classes[str_replace("MY_", FALSE, $file)] = $file;
}

$files = get_filenames(APPPATH . "models/", FALSE, TRUE);
foreach ($files as $file) {
$file = str_replace(".php", FALSE, $file);
$classes[str_replace("MY_", FALSE, $file)] = $file;
}

$class_property = " /**\n";
$class_property.= "  *\n";
foreach ($classes as $key => $value) {
$class_property.= "  * @property {$key} \${$value}\n";
}
$class_property.= "  */\n";

$declaration = $class_property . "Class CI_Model{}\n";
$declaration .= $class_property . "Class CI_Controller{}\n";

foreach ($libs as $file) {
$lib = str_replace(".php", FALSE, str_replace("MY_", FALSE, $file));
$declaration .= $class_property . "Class {$lib}{}\n";
}

foreach ($core_libs as $file) {
$lib = str_replace(".php", FALSE, str_replace("MY_", FALSE, $file));
$declaration .= $class_property . "Class {$lib}{}\n";
}

force_download("autocomplete.php", "<?php \n{$declaration}\n?>");
}

Saludos,

12Sep/110

SEO: Redirigir trafico no-www al dominio www

Si queremos redirigir todo el tráfico no-www de nuestro sitio a nuestro dominio principal con www tenemos que escribir en el archivo .htaccess las siguientes lineas

# Redirect non-www traffic to www

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^juanrabadan.com.ar [NC]
RewriteRule ^(.*)$ http://www.juanrabadan.com.ar/$1 [L,R=301]

21May/110

Sudo sin contraseña en Ubuntu

Si queremos que cada vez ejecutamos un comando SUDO el sistema no nos pregunte el password, tenemos que editar el archivo de los sudoers.
Para ello desde una terminal escribimos

sudo visudo

Luego agregamos al final de este archivo la siguiente linea
username ALL=(ALL) NOPASSWD: ALL

Ctrl + X para salvar los cambios. Recuerden cambiar username por el nombre de usuario que utilicen.
Tagged as: , No Comments
1Jun/101

Alias persistens en Ubuntu

Siempre que realizo tareas a través de una terminal (consola) para ejecutar algún proceso o ejecutar un determinando comando, pierdo mucho tiempo en recordar o escribir ciertos comandos que son demasiado extensos. Para resolver estos problemas existen los famosos alias.

En informática un alias es una orden que nos permite reemplazar una palabra o serie de palabras con otra. Su uso principal es el de abreviar órdenes o para añadir argumentos de forma predeterminada a una orden que se usa con mucha frecuencia.

Los alias se mantienen hasta que se termina la sesión en la terminal, pero normalmente se suelen añadir en el fichero de configuración del intérprete de órdenes (~/.bash_aliases) de forma que siempre están disponibles para todas las sesiones de terminal.

Debemos descomentar las siguientes tres líneas que se encuentran en el archivo ~/.bashrc

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Luedo editamos/creamos el archivo ~/.bash_aliases y dentro de este creamos todos los alias que precisemos uno debajo de otro por ejemplo.

alias lsa='ls -la'

Debemos guardar estos cambios y reiniciar la consola para que estos cambios se apliquen.

5May/104

Funciones para extender el date helper en CodeIgniter

Hola a todos quiero compartir con ustedes estas funciones que utilizo a diario en mis proyectos de CodeIgniter. Las mismas están referidas a la manipulación de fechas y es muy buena idea extender el date helper de codeigniter con las mismas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* Agregar a una fecha dias, meses o años */
function date_add($givendate,$day=0,$mth=0,$yr=0)
{
    $cd = strtotime($givendate);
    return date('Y-m-d', mktime(date('h',$cd), date('i',$cd), date('s',$cd), date('m',$cd)+$mth,  date('d',$cd)+$day, date('Y',$cd)+$yr));
}
 
/* calcular la diferencia entre dos fechas */
function date_diff($start_date,$end_date,$format = 'd')
{
    $start_date = strtotime($start_date);
    $end_date = strtotime($end_date);
 
    switch ($format)
    {
       //seconds
       case "s":
           return floor(($end_date-$start_date));
       //minutes
       case "i":
            return floor(($end_date-$start_date)/60);
       //hours
       case "h":
            return floor(($end_date-$start_date)/3600);
       //days
       case "d":
            return floor(($end_date-$start_date)/86400);
       //months
       case "m":
            return floor(($end_date-$start_date)/2628000);
       //years
       case "y":
            return floor(($end_date-$start_date)/31536000);
       //days
       default:
            return floor(($end_date-$start_date)/86400);
       }
}
 
/* conocer la hora exacta de un determinado timezone */
function get_date($timezone = 'America/New_York', $full_date_time = false)
{
      date_default_timezone_set($timezone);
      $date = ($full_date_time) ? date('D,F j, Y, h:i:s A') : date('Y-m-d');
      date_default_timezone_set('UTC');
      return $date;
}
18Mar/100

Que son los hooks en CodeIgniter

Los hooks o ganchos que vienen con CodeIgniter nos permiten pinchar el framework sin la necesidad de hackear los archivos del core. Cuando CodeIgniter se inicia se ejecutan una serie de procesos, cuyo diagrama puede verse en el siguiente gráfico del flujo de la aplicación.

Flujo de la aplicación :: CodeIgniter

Algunas veces precisamos ejecutar ciertos procedimientos en determinados momentos del flujo de una aplicación. Por ejemplo queremos ejecutar un determinado script antes de que se cargue el controlador o justo despues.

Por suerte CodeIgniter nos trae de la mano una buena herramienta llamada ‘Hooks’ o ganchos, que simplemente nos permite hacer esto, ejecutar determinadas funciones en un determinado momento.

El “determinado momento”, básicamente puede ser:

  • pre_system: al principio de la ejecución del sistema, sin haber cargado básicamente nada.
  • pre_controller: ejecutar antes de cargar el controlador, una vez cargadas las librerías y todo el systema básico.
  • post_controller_constructor: justo se ejecutar tras el constructor del controlador pero antes de cualquier función.
  • post_controller: se ejecutará una vez lo haya hecho el controlador.
  • display_override: esto es para sobrescribir la función que nos muestra la pagina finalizada en el navegador.
  • cache_override: lo mismo pero para la función de cache, nos permite sobreescrivirla.
  • scaffolding_override: para crear nuestro propio scaffolding.
  • post_system: ejecutará el código al final de todos los procedimientos.

Prometo venir con un ejemplo en breve de como utilizar hooks.

Saludos a todos mis lectores.

17Mar/101

Como utilizar repositorios SVN bajo Ubuntu Karmic

Hace tiempo que estaba buscando algun software para reemplazar al Tortoise, un cliente para repositorios SVN al cual estaba acostumbrado cuando era usuario de windows.

Finalmente pude dar con el RabbitCVS, el cual se integra completamente a Nautilus y está basado en Tortoise.

Aquí les dejo como instalarlo en Ubuntu 9.10 (Karmic)

$ sudo add-apt-repository ppa:rabbitvcs
$ sudo aptitude update
$ sudo aptitude install rabbitvcs-core rabbitvcs-nautilus

Reiniciamos el GUI

Y ya está listo para usar.
Algunas capturas para que vean la similitud con TortoiseSVN

12Mar/103

Funciones para incluir en nuestros helpers de codeigniter

Estimados usuarios, hace un par de meses que estoy investigando y desarrollando una aplicación con CodeIgniter. En esta oportunidad quiero compartir con ustedes algunas funciones muy útiles para incluir en nuestros helpers o plugins.

Object2Array

Con esta funcion podremos pasar un objeto a un array de tipo asociativo.

function object2array($object)
{
    if (is_object($object))
    {
        foreach ($object as $key => $value)
        {
            $array[$key] = $value;
        }
    }
    else
    {
        $array = $object;
    }
    return $array;
}

Array2Object

Esta función es la inversa de la anterior. Nos permite convertir un array asociativo en un objeto con propiedades.

function array2object($array) 
{
	if (is_array($array))
	{
		$obj = new StdClass();
		foreach ($array as $key => $val)
		{
			$obj->$key = $val;
		}
	}
	else 
	{ 
		$obj = $array; 
	}
	return $obj;
}

Normalizar un String
Una función esencial para los desarrolladores web. Para mejorar la visibilidad de nuestro sitio en los motores de búsqueda, se utiliza la reescritura de URL. Lo que permite que las URL sean más ricas a nivel de SEO. Con este propósito siempre es bueno tener una función para normalizar strings para que contengan caracteres válidos para nuestras url. Con esta función, aporte de mi amigo Angel, resuelves este problema.

function normalize($text, $separator = "-")
{
    $isUTF8 = (mb_detect_encoding($text." ",'UTF-8,ISO-8859-1') == 'UTF-8');
 
    $text = ($isUTF8) ? utf8_decode($text) : $text;
    $text = trim($text);
 
    $_a = utf8_decode("ÁÀãâàá");
    $_e = utf8_decode("ÉÈéè");
    $_i = utf8_decode("ÍÌíì");
    $_o = utf8_decode("ÓÒóò");
    $_u = utf8_decode("ÚÙúù");
    $_n = utf8_decode("Ññ");
    $_c = utf8_decode("Çç");
    $_b = utf8_decode("ß");
    $_dash = "\.,_ ";
    $text = ereg_replace("[$_a]", "a", $text );
    $text = ereg_replace("[$_e]", "e", $text );
    $text = ereg_replace("[$_i]", "i", $text );
    $text = ereg_replace("[$_o]", "o", $text );
    $text = ereg_replace("[$_u]", "u", $text );
    $text = ereg_replace("[$_n]", "n", $text );
    $text = ereg_replace("[$_c]", "c", $text );
    $text = ereg_replace("[$_b]", "ss", $text );
 
    $text = ereg_replace("[$_dash]", $separator, $text );
    $text = ereg_replace("[^a-zA-Z0-9\-]", "", $text );
    $text = strtolower($text);
 
    return ($isUTF8) ? utf8_encode($text) : $text;
}
5Feb/100

El archivo config.php

Leyendo un poco más sobre este framework di con un artículo en donde te explican una manera de hacer que el parámetro base_url definido en el archivo /config/config.php se escriba dinámicamente utilizando variables de servidor.

$config['base_url'] = 'http' . ((isset($_SERVER['HTTPS']) &amp;&amp; $_SERVER['HTTPS'] == 'on') ? 's' : '').'://'.$_SERVER['HTTP_HOST'].str_replace('//','/',dirname($_SERVER['SCRIPT_NAME']).'/');

Fuente: Wiki CodeIgniter

Filed under: CodeIgniter No Comments