jueves, 19 de diciembre de 2013

codeigniter debug helper

Little helper to print_r variables with pre

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('pr'))
{
    function pr($thing)
    {
        echo '<pre>';
        var_dump($thing);
        echo '</pre>';
        die();        
    }   
}

martes, 17 de septiembre de 2013

restart and stop apache tomcat in linux

# Restart
sudo /etc/init.d/tomcat7 restart 

# Stop
sudo /etc/init.d/tomcat7 stop

miércoles, 28 de agosto de 2013

php ternary operator - operador ternario en php

muy util en vistas:

<?php
$agestr = ($age < 16) ? 'child' : 'adult';
?>
esa cosa, equivale a todo este if:
<?php
if ($age < 16) {
$agestr = 'child';
} else {
$agestr = 'adult';
}
?>

jueves, 22 de agosto de 2013

swap dom elements with jquery

Util función para intercambiar elementos en el dom:


function swapElements(elm1, elm2) {
var parent1, next1,
parent2, next2;

parent1 = elm1.parentNode;
next1 = elm1.nextSibling;
parent2 = elm2.parentNode;
next2 = elm2.nextSibling;

parent1.insertBefore(elm2, next1);
parent2.insertBefore(elm1, next2);
}

uso:
swapElements(i[0], k[0]);

no olvidarse si i y k fueron extraidos del dom con jquery de colocar el subindice.
 

miércoles, 31 de julio de 2013

Primeros pasos en laravel 4


Hoy les vengo a contar sobre este framework que llegó a mi casi por casualidad por ser el que utilizó un cliente para crear un CMS, al cual nos ha solicitado adaptar numerosos templates.

A primera vista parece un poco complejo comparado con codeigniter, pero a medida que fuí aprendiendo a utilizarlo no ha dejado de sorprenderme, lo práctico que resulta blade (el parseador de vistas y templates), y la potencia y flexibilidad que nos da el archivo de routes es increible, por ejemplo.

El ORM resulta fácil de aprender y nos simplifica la vida con las consultas evitando todos esos mugrosos joins que usaba antes en codeigniter. Todavía hay muchisimas funciones del framework que aún no he investigado pero en este momento ya puedo afirmar que aprender laravel vale la pena.

Me he descargado recientemente la versión 4 del framework recien sacada del horno. Comenzaré a utilizarla para un proyecto personal, no se sorprendan si muchas de las siguientes entradas del blog están dedicadas a laravel4.

lunes, 15 de julio de 2013

copy things from one server to another - copiar archivos entre servidores

Con scp copiamos carpetas o archivos entre servers sin tener que descargar todo y volverlo a subir. Solo ejecutar el comando y se arreglan entre ellos.

copy from a remote machine to my machine:
scp user@192.168.1.100:/home/remote_user/Desktop/file.txt /home/me/Desktop/file.txt

copy from my machine to a remote machine:
scp /home/me/Desktop/file.txt user@192.168.1.100:/home/remote_user/Desktop/file.txt

copy all file*.txt from a remote machine to my machine (file01.txt, file02.txt, etc.; note the quotation marks:
scp "user@192.168.1.100:/home/remote_user/Desktop/file*.txt" /home/me/Desktop/file.txt

copy a directory from a remote machien to my machine:
scp -r user@192.168.1.100:/home/remote_user/Desktop/files /home/me/Desktop/.

lunes, 8 de julio de 2013

many dropbox in the same ubuntu - muchos dropboxes en ubuntu

Tienes la necesidad de tener varias cuentas de dropbox conviviendo en tu equipo? Bueno a mi me pasa, una para el trabajo, una para la vida ... se puede usar varios dropbox en ubuntu de la siguiente manera:

HOME=$HOME/nombredelanuevacarpetadedropbox /usr/bin/dropbox start -i

Con esto aparece el típico instalador de dropbox permitiendonos sincronizar otra cuenta.

Si queremos que el nuevo dropbox se inicie con el sistema editamos sudo gedit /etc/rc.local

agregamos

su tunombredeusuario -c “HOME=$HOME/nombredelanuevacarpetadedropbox /usr/bin/dropbox start”

y listo.

martes, 2 de julio de 2013

codeigniter log data to the db

Creé este pequeño model para debuguear un script que corre en background. Su mision es loguear cualquier tipo de información con un stamp de tiempo en la bd.

Su uso es muy simple. Solo cargamos el modelo y hacemos: $this->blog->message('acá la cosa que queremos loguear');

a continuacion la clase:

/*
--
-- Table structure for table `logs`
--

CREATE TABLE IF NOT EXISTS `logs` (
`stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`message` varchar(2000) NOT NULL,
`type` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
*/


dblog->message($thingToLog);
*
* by Patricio Gabriel Maseda ** 2013 ** patricio.mase@gmail.com
*
*/

class Dblog extends CI_Model {

public function __construct(){

parent::__construct();
}

public function message($message){

return $this->db
->set('message', $message)
->set('type', 'message')
->insert('logs');
}
}

viernes, 17 de mayo de 2013

removing mate desktop on ubuntu -- removiendo escritorio mate en ubunt

bueno me agarró por probar mate 1.6. Si después quieren sacarlo como me pasa a mi agarran y hacen:

sudo apt-get remove mate-archive-keyring mate-notification-daemon atril atril-common caja caja-common engrampa engrampa-common eom eom-common gir1.2-mate-panel libatril libcaja-extension libmarco libmatedesktop libmatekbd libmatekeyring libmatemenu libmatepanelapplet libmatepolkit libmateweather libmateweather-common libmatewnck libmatewnck-common marco marco-common mate-applets mate-applets-common mate-backgrounds mate-calc mate-control-center mate-core mate-desktop mate-desktop-common mate-desktop-environment mate-dialogs mate-icon-theme mate-media mate-media-common mate-media-gstreamer mate-menus mate-panel mate-panel-common mate-polkit mate-power-manager mate-power-manager-common mate-screensaver mate-screensaver-common mate-session-manager mate-settings-daemon mate-settings-daemon-common mate-settings-daemon-gstreamer mate-system-monitor mate-terminal mate-terminal-common mate-themes mate-utils mate-utils-common pluma pluma-common


 Saludos

domingo, 24 de marzo de 2013

Ver log errores PHP en tiempo real (watch PHP errors in real time)


Para ver la lista de procesos:
top

Para ver los logs en tiempo real:

tail -f /var/log/apache2/users/*

(o cambiar por la carpeta o archivo que sea necesario)

jueves, 14 de marzo de 2013

¿Cómo crear un usuario con privilegios Root en Linux?



Para crear un usuario con privilegios de administrador en el servidor de linux siga los siguientes pasos:

a) Ingrese con su usuario root al servidor
b) Para crear el usuario con los privilegios ingrese el siguiente comando:

useradd -u 0 -o -g 0 "nombre_de_usuario"

c) Para añadir una contraseña al usuario ingrese el siguiente comando:

passwd "nombre_de_usuario"

d) Escriba una contraseña e ingrésela nuevamente.

sábado, 2 de marzo de 2013

codeigniter debug error 500

Bueno y otra vez me paso esto de no poder ver que carajo de error es lo que está pasando. Y otra vez me había olvidado como mostrarlo.

De nuevo a buscar y esta vez si que lo posteo acá para que quede registrado para la próxima vez que me olvide o para cualquier otra alma en pena que lo necesite:

editamos el index.php de codeigniter y agregamos:

if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(E_ALL);
ini_set('display_errors', TRUE);  // <------ esa linea
break;
case 'testing':
case 'production':
error_reporting(0);
break;

default:
exit('The application environment is not set correctly.');
}
}

domingo, 17 de febrero de 2013

instalando sendmail en debian, installing sendmail debian

Tratando de hacer funcionar la clase email de codeigniter sobre un debian me doy cuenta que este no tiene instalado sendmail, ni ninguna otra cosa capaz de sacar un mail al exterior.

Manos a la obra:

HOW TO rápido para instalar SENDMAIL en Debian:

apt-get install sendmail

Módulo de autentificación:

apt-get install sasl-bin
apt-get install libsasl-modules-plain
apt-get install libsasl-digestmd5-des

Después ejecutar:

/usr/share/sendmail/update_auth
Si necesitamos que se autentifiquen al enviar:

/etc/mail/default-auth-info
y lanzar de nuevo:
/usr/share/sendmail/update_auth

Soporte TSL.

 apt-get install openssl

después ejecutamos:

/usr/share/sendmail/update_tls
a continuación, nos indicará que para que sendmail pueda usar STARTTSL, es necesario

añadir la siguiente línea:
include(`/etc/mail/tls/starttls.m4')dnl
al archivo:
/etc/mail/sendmail.mc
en mi caso ya estaba añadida.

después hay que ejecutar:

sendmailconfig
y finalmente reiniciar sendmail:
/etc/init.d/sendmail restart

Si queremos un servidor POP, podemos instalar IPOPD, que complementa a SENDMAIL.
Los pasos para su instalación son muy simples si utilizamos apt-get:
apt-get install ipopd

y ya está.

viernes, 8 de febrero de 2013

activar mod_rewrite en apache - activar archivos .htaccess

Resulta que por default viene desactivado. Para activarlo hacemos:

a2enmod rewrite

eso lo que hace es activar el modulo "rewrite"

luego de eso editamos

nano /etc/apache2/sites-enabled/000-default

y buscamos donde diga "AllowOverride None" lo cambiamos por "AllowOverride All"

Reiniciamos apache y listo!

miércoles, 6 de febrero de 2013

configurar ftp en debian

Se me presentó el problema de montar todo un server para mi nuevo proyecto de sitio web, he elegido un debian.

He instalado apache2, php, mysql y phpmyadmin, vamos que eso no da problemas es bastante sencillo. Ahora me encuentro con el problemilla de subir archivos por lo que vamos a detallar lo que haremos para montar un servidor ftp que nos de acceso a la carpeta www

Para conservar todo lo más seguro posible vamos a dar de alta un usuario que solo servirá para el acceso ftp.

Lo primero que debemos hacer es editar el archivo /etc/shells y agregar la siguiente linea:
/bin/false
Esto con el objetivo de evitar que el usuario que acceda al servidor no pueda usar la consola de comandos.

Luego creamos un usuario especifico para ftp

# useradd -m -s /bin/false tunombredeusuario
Ahora le asignamos una contraseña al usuario creado anteriormente:
# passwd tunombreusuario
La opción -m creará una carpeta en home con el nombre de usuario, es decir, /home/tunombredeusuario, y la opción -s nos asignará un shell a ese usuario en este caso es el /bin/false, este tipo de "shell" nos sirve en caso de querer algo mas de seguridad, puesto que con esto cerramos cualquier entrada por consola, hay que tener en cuenta que este usuario está creado específicamente para acceder al servidor ftp.

Ahora procederemos a la instalación del servicio. Hay muchos demonios que sirven para este propósito, en mi caso usaré el vsftpd porque es sencillo de configurar y porque es considerado uno de los mas seguros.
#aptitude install vsftpd
Para configurar nuestro servidor editaremos el archivo /etc/vsftpd.conf y comentaremos las lineas que no necesitemos.


Si no quieres que los usuarios anonimos se conecten a tu servidor entonces es recomendable comentar la linea “anonymous_enable=YES”, en mi caso lo haré porque necesito que solo se conecte el usuario que he creado.

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#anonymous_enable=YES


# Uncomment this to allow local users to log in.
#local_enable=YES
Como dije anteriormente, se creó un usuario especifico para conectarse al servidor, si queremos que dicho usuario se conecte a nuestro servidor hay que dejarlo en la lista de accesos, para eso hay que descomentar las siguientes lineas:
# You may specify an explicit list of local users to chroot() to their home
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
# directory. If chroot_local_user is YES, then this list becomes a list of


En este caso activé la lista por defecto pero se puede escoger cualquier archivo en otra ubicación.

Ahora, procederemos con el cambio de puerto, el puerto por defecto para el protocolo tcp es el 21, en mi caso fue cambiado por motivos de seguridad, si bien sabemos que tcp es inseguro, con esto hacemos las cosas un poquito mas complicadas, y de paso no nos complicamos con SSL (Que no es muy complicado, pero en mi caso no lo apliqué porque la aplicación que se iba a conectar con nosotros no soportaba SSL).


Para decirle a nuestro servidor que escuche por un puerto diferente al 21, simplemente agregamos la siguiente linea al archivo:
listen_port=201
En mi caso usé el 201, pero ustedes pueden usar el que quieran, siempre y cuando no utilicen alguno que esté ocupado.


Ahora guardamos los cambios y procedemos a editar el archivo/etc/vsftpd.chroot_list, en mi caso dicho archivo me tocó crearlo, de cualquier manera solo hay que añadir los usuarios autorizados a conectarse a nuestro servidor.

#Lista de acceso a usuarios que se conectaran al servidor.
tunombredeusuario

Luego editamos el /etc/apache2/sites-available/default para que en lugar de /var/www el apache tenga como raiz la carpeta del nuevo usuario.

Por ultimo reiniciamos el servicio y con esto deberíamos de tener nuestro servidor FTP funcionando sin ningún problema.

#/etc/init.d/vftpd restart

si da problemas con los permisos:

chown :usuario /var/www
chmod g+w /var/www.

martes, 15 de enero de 2013

close your eyes and imagine

close your eyes and imagine that you are 80 years old what would you be thinking of? the regrets of what you would have done when you were younger? what it could have been if you asked that girl you liked out? what if would have been if you studied a bit harder and put the effort in and got yourself to where you want to? how guilty will that make you feel imagine that and throw the bullshit of fear out of your mind it doesn't if it's a a fail or success as long as it's not a guilty regret.

robado de un comentario perdido en youtube

miércoles, 9 de enero de 2013

sintaxis alternativa if isset print

me encontré con esto y esta buenisimo:
en lugar de:
if( isset( $value ) )
{
print $value;
}
se puede hacer:
isset( $value ) AND print( $value );