Archive

Archive for the ‘linux’ Category

Consejos de timezone by Demian Rodriguez

June 2nd, 2011 2 comments

time zone, el gran problema de la programacion. Consejos y trucos

Timezone, consejos y trucos para php, mysql y nodejs

Demian Rodriguez nos da unos consejos para minimizar estos problemas.

1) Establecer como timezone default “UTC” tanto en el server como en la base de datos.
Ej en Debian:

#dpkg-reconfigure tzdata
#restart mysql

2) Para el caso de MySQL, las columnas de tipo DATE, DATETIME o TIME no almacenan info sobre el timezone, uno es responsable de saber en que formato esta la fecha para despues mostrarla correctamente al usuario. Para esto es recomendable guardar todas las fechas en UTC.

3) Al mostrar una fecha al usuario se debe convertir al timezone adecuado. Como?

PHP:

// mostrar
$fechaDeMysql = "2011-06-01 08:30:20";
$date = new DateTime($fechaDeMysql, new DateTimeZone("UTC"));
$date->setTimeZone(date_default_timezone_get());
$date->format(...);

// guardar
$fechaQueVieneDeNoseDonde = 'Mon, 15 Aug 2005 15:52:01 +0300'; // ya tiene timezone
$date = new DateTime($fechaQueVieneDeNoseDonde);
$date->setTimeZone(new DateTimeZone("UTC"));
// guardarla en mysql...

NodeJS:
Si aca no mostramos nada al usuario es re facil, no hay que hacer nada :)
El proceso usa el tz del SO. Pero tambien lo podemos forzar seteando la variable de entorno al principio del script:

process.env.TZ = 'UTC';

Como obtener una fecha de la db y mostrarla al usuario en el TZ correcto? No se, es una incógnita como sabe JS en que TZ está la fecha que saque de la db. Lo pregunté aca: https://github.com/felixge/node-mysql/pull/55

// guardar
/**
 * metodo re copado para formatear fechas :)
 * return formatted date as yyyy-mm-dd H:i:s using UTC
 */
Date.prototype.formatUTC = function() {
	function pad(n) {
		return n < 10 ? '0' + n : n
	}
	var d = this;
	return d.getUTCFullYear()+'-'
	  + pad(d.getUTCMonth()+1)+'-'
	  + pad(d.getUTCDate())+' '
	  + pad(d.getUTCHours())+':'
	  + pad(d.getUTCMinutes())+':'
	  + pad(d.getUTCSeconds());
};

var fechaParaInsertar = new Date('Mon, 15 Aug 2005 15:52:01 +0300').formatUTC();

descompilar (swf) flash con ubuntu

December 29th, 2010 No comments

Esto es facil, no es descompilar en forma literal, sino obtener una salida con todas las funciones y operaciones de un swf.

Para los users de debian o ubuntu, solo basta con

sudo apt-get install flasm

Una vez instalado, hacemos

flasm -d archivo.swf > salida.dat

Nos genera un archivo con la info del swf, sus operaciones, funciones, etc.

Ejemplo de salida

movie 'index2.swf' compressed // flash 9, total frames: 1, frame rate: 24 fps, 930x700 px

  // unknown tag 88 length 135

  defineMovieClip 4 // total frames: 1
  end // of defineMovieClip 4

  defineMovieClip 5 // total frames: 1
  end // of defineMovieClip 5

  exportAssets
    5 as 'subbt'
  end // of exportAssets

  frame 0
    constants 'overlay', '_width', 'Stage', 'width', '_height', 'height', 'onEntersFrame', 'onResize', 'com', 'global', 'app', 'addEventListener', 'target', 'type', 'di
spatchEvent', 'main', '_xscale', '_yscale', 'bg', 'section', 'sendEvent', '_x', 'time', 'y', 'loadedID', 'mosesSupposes', 'fuse', 'Fuse', 'start', 'GETDATA', 'Settings'
, 'mainplace', 'CMSConnector', 'onLoad', 'settings', 'init', 'call', 'align', 'TL', 'scaleMode', 'noScale', 'FuseFMP', 'PennerEasing', 'ZigoEngine', 'register', 'this',
 'mx', 'events', 'EventDispatcher', 'initialize', '_alpha', 'onPress', 'useHandCursor', 'addListener', 'getPath', 'admin/files/', '?', 'Math', 'random', 'loadSettings' 

    function onResize ()
      push 'overlay'
      getVariable
      push '_width', 'Stage'
      getVariable
      push 'width'

Que esta pasando con viva linux?

December 5th, 2010 No comments

Para todos aquellos que solian ser fieles a viva linux estaran notando que estan estremadamente lentos en lo que es materia de posts.

Hace no menos de 2 meses la gente de viva linux esta publicando articulos en forma esporadica, decepcionando a todos los seguidores.

No se tiene mucha info al respecto, pero esperamos que un gran site como viva linux mejore lo antes posible, sino deberemos buscar alternativas para informarnos sobre el maravilloso mundo de linux.

Categories: linux Tags: ,

Bajar todos los archivos de un ftp con wget

June 28th, 2010 2 comments
Andres Gattinoni nos trae otro lindo tip con wget, como bajar el contenido de un directorio ftp con wget.
wget -r -q -b -P /home/myuser/destination ftp://mydomain.com –ftp-user=myuser –ftp-password=mypass
Parámetros:
-r: recursivo
-q: quiet/silencioso, no imprime mensajes en la consola
-b: background, para que se ejecute en background y nos devuelva el prompt.
-P: directorio donde queremos que se guarde todo lo que bajamos
–ftp-user=: usuario FTP
–ftp-password=
: password FTP

Obviamente wget es mas que un comandito para bajar los flv de xvideos.com

Categories: FreeBSD, linux, Servidores Tags: , ,

Detectar links rotos con wget

June 28th, 2010 No comments
Con wget podemos detectar todos los links rotos de un website de una forma muy simple.
#  wget –spider  –no-parent -r -o log.txt http://website.com
–spider : recorre el site indicado, sin hacer download.
- r : recursivo
- o archivo : redigimos el output del comando
–no-parent : no subir a directorios de niveles superiores
Gracias  Andres Gattinoni por compartir el tip.

Instalar PHP 5.2.x en Centos

August 4th, 2008 1 comment

Estimado, tube un caso con un cliente al cual tube que instalar el PHP 5.2.x en su Centos 4.x, y fue una cosa que me volvio loco.

Despues de mucho googlear, encontre esta solucion que quiero compartir.

http://www.jasonlitka.com/2007/06/01/upgrading-to-php-523-on-rhel-and-centos/

[Articulo]

PHP 5.2.3 has been released. This version does not have the massive number of bug fixes that came with 5.2.2 (which included many of the patches from the Month of PHP Bugs), but it does have some useful fixes included, including the fix for the HTTP_RAW_POST_DATA bug that was introduced in PHP 5.2.2.

This build was relatively straight forward and didn’t require any modifications to the spec file from my build of 5.2.2. I’ll probably do a respin when MySQL 5.0.42 is finally marked as “released” (the source package is already available but the changelog hasn’t been updated with an official release date).

For those that like to build from source, feel free to use the Source RPM from the link below. For my repository users, the new version is already available and all you’ll need to do is run a “yum update”.

UPDATE (6/19/2007): The PHP 5.2.3 packages have been updated. The Source RPM link below has also been updated to prevent anyone from downloading an out-of-date file.

If you want compile the src rpm yourseld here are the directions.

mkdir /usr/src/redhat
chmod -R 777 /usr/src/redhat

rpm -ivh php-5.2.3-jason.1.src.rpm

cd /usr/src/redhat/SPECS/

here you have a file dot spec with the configure and build lines.

rpmbuild -bb name_of_your_package.spec (in this case i think that is PHP)

when all finish right you have one or many package in the RPMS folder, you need update your current rpms with this, with the following command.

rpm -Uvh name_of_package_output.rpm


Configuración de ISP

July 15th, 2008 1 comment

Leyendo Linuxeando, me entero en este post que How To Forge sacó una serie de guías para la configuración de un ISP (un servidor completo que ofrezca todos los servicios necesarios para un ISP y alojamiento web: servidor web Apache (con SSL), servidor de correo Postfix con SMTP-AUTH y TLS, servidor DNS con BIND, servidor FTP con Proftpd, servidor MySQL, Dovecot POP3/IMAP, Quota, Firewall, etc.).

Sacaron versiones para distintas distribuciones. Yo estoy esperando la de Slackware.

También hace un tiempo salió un documento de Implementación de servidores con GNU/Linux por Joel Barrios Dueñas.

Con respecto a otros sistemas operativos Unix, también está disponible esta guía para instalar un ISP en FreeBSD, pero por lo que estuve hablando con Cesar a esta guía le faltarían algunas cositas. Estaría bueno que Cesar publique su versión más completa y en castellano.

De más está decir que no pongo las manos en el fuego por NINGUNA de las guías nombradas, sino que esto es meramente para compartir información.