Archive

Author Archive

Template de wordpress para proximamente

April 27th, 2011 4 comments
ThemeFuse, theme de proximamente para wordpress

ThemeFuse, theme de proximamente para wordpress

Si estamos pensando en lanzar un nuevo sitio web al “mercado”, y este esta desarrollado con wordpress, ahora podamos ir dejando en linea un simpatico theme de wordpress que nos ayudara a informarle a los desprevenidos que caen “accidentalmente” en nuestro site que estamos trabajando para poder poner en linea el site.

El plugin presenta una animacion con una linea de tiempo (podemos cnfigurar cuano estara en linea nuestro site), los botones de social network para poder ir captando la atencion del publico, y algunas configuraciones mas (colores, logos, etc).

No solo sirve para informar de que proximamente el site estara en linea, sino que es util para esos periodos de mantenimiento (aunque todos sabemos que los famosos mantenimiento o son subidas de nuevo codigo o es que hemos arruinado algo, o peor aun, un server se ha “muerto”).

Espero que les sea util, la verdad es que wordpress cada dia esta mas presente como solucion a varias necesidades web, y esta dejando una beta de su principal funcion, que es ser un Blog.

Para ver una demo del theme y bajarlo hacer click aca

Descarga el theme desde web and beer haciendo click aca

ThemeFuse, theme de proximamente para wordpress

ThemeFuse, theme de proximamente para wordpress

Configurar nuestra computadora como servidor web con ubuntu

April 21st, 2011 5 comments
entorno lamp

entorno lamp

Normalmente el enfoque de la web and beer esta orientado a personas que ya tienen un cierto nivel y pueden hacer estas cosas con los ojos cerrados y varios whisky’s encima, pero estamos haciendo un esfuerzo por captar nuevos miembros, aunque estos tengan un nivel muy basico.

La idea es clara, que todos podamos aprender.

En esta ocacion vamos a configurar nuestra computadora con Ubuntu para que pueda ser un servidor web y gestionar los distintos proyectos que podamos tener.

Esto va a ser una explicacion muy orientada a la practica, esto quiere decir que no profundizaremos mucho en ciertos temas y cuestiones, para ellos por favor buscar en otras fuentes, o quizas en alguno de nuestros post (seguro algo de informacion existe).

Para poder seguir este tutorial, por favor contar con una computadora con Ubuntu instalado.

Primero que nada, vamos a instalar Apache, PHP y MySQL. Esa combinacion de software es la mas tipica, y es conocida como entorno LAMP (Linux, Apache, MySQL y PHP).

Primero instalamos Apache:

sudo apt-get install apache2.2-common

El que no sepa que hace apt-get por favor ni se moleste en seguir con este tutorial!. Bueno bueno, es el manejar de paquetes, los paquetes son “cosas” como programas, librerias, etc. Ejecutando ese comando instalara apache 2.2 mas todas las dependencias (cosas que necesita para poder funcionar).

Una vez instalado apache instalamos PHP.

sudo apt-get install php5 php5-cli php5-common php5-curl php5-gd libapache2-mod-php5filter

Con eso deberia ser suficiente para nosotros, ojo, no intalamos aun el soporte a mysql, hay razones para esto que aprenderan con el tiempo y la experiencia ganada.

Ahora vamos a instalar MySQL.

sudo apt-get install mysql-server-5.1 mysql-client-5.1

Eso nos instalara el server y client (el programa para poder acceder a mysql).

Muy bien, ya tenemos todo entonces verdad? apache, mysql y php, pero ahora vamos por el detalle, la lib de acceso a mysql para php.

sudo apt-get install php5-mysql

Con eso ya tenemos todo listo para comenzar.

Ahora bien, primero vamos a aprender a iniciar, parar y reiniciar nuestro apache (es un proceso en memoria, se lo conocemo como daemon, hay muchos daemon en nuestro ubuntu).

Los daemons o programas que estan “a la escucha” en Ubuntu son manejados por un comento que casi siempre estan en:

/etc/init.d/<algo a manejar>

Por ejemplo, para iniciar apache escribimos

/etc/init.d/apache2 start

Para detener apache

/etc/init.d/apache2 stop

Para reiniciar (por ejemplo porque cambiamos algo de la configuracion de apache o PHP).

/etc/init.d/apache2 restart

Ahora bien, vamos a ver si todo esta funcionando correctamente.

Abrimos nuestro navegador (espero que sea un chrome a estas alturas por favor) y escribimos http://127.0.0.1

Deberia salir un mensaje de “It works” o algo asi, depende de lo que les pinto en ese momento a los de apache.

Que es “127.0.0.1″ ? es la direccion ip de lookup, es decir, la direccion ip de nuestro “localhost”, nuestra computadora se refencia asi misma con esa direccion ip, en todas las computadoras del universo casi siempre es asi, siempre que hagamos ping a 127.0.0.1 estamos haciendonos un ping a nosotros mismos.

 

Ok, ahora vamos a plantear un escenario comun, imaginemos que queremos trabajar en 2 proyectos diferentes, uno se llama “los simpsons” y el otro “dale gas”. Como hacemos para tener bien separados estos proyectos? Vamos a la solucion.

Primero que nada, entendamos que apache es un servidor web, cada servidor web puede gestionar varias paginas web, cada pagina web tecnicamente es conocida como “virtual host”.

Un virtual host es una declaracion en la configuracion de apache donde basicamente le decimos que si alguien escribe en su navegador “lossimpsons.com” debe leer los archivos del directorio que le indiquemos, como asi tambien si escriben “dalegas.com”.

Los virtuals hots en apache dentro de ubuntu se encuentran en el directorio

/etc/apache2/sites-enabled/

Asi que vamos a crear un virtual host.

sudo gedit /etc/apache2/sites-enabled/lossimpsons

Se nos abre un editor de texto, asi que vamos a escribir este contenido en su interior

<VirtualHost *:80>
ServerName lossimpsons.com
DocumentRoot /var/www/lossimpsons.com/public_html
</VirtualHost>

Guardamos el archivo y cerramos el editor.

Ahora tenemos que reiniciar apache (ya dije como se hace).

Pero claro, lossimpsons.com no estan resolviendo a la direccion de internet que tengamos en ese momento, entonces como podemos hacer para probarlos?

En los sistemas operativos existe un archivo conocido como “archivo hosts” donde se pueden redefinir ciertas reglas a la hora de resolver un dominio a una direccion ip, y con estas reglas podemos forzar que un dominio tenga la direccion ip que nosotros querramos (obviamente esto solo afectara a nuestra computadora).

Para editar nuestro archivo hosts ejecutamos:

sudo gedit /etc/hosts

En mi caso, el archivo hosts de mi computadora se ve asi:

 

192.168.0.109	lortmorris-laptop	# Added by NetworkManager
127.0.0.1	localhost.localdomain	localhost
::1	        lortmorris-laptop	localhost6.localdomain6	localhost6
127.0.1.1	lortmorris-laptop
127.0.0.1       lossimpsons.com

Como veran, en la ultima linea agregue que la ip 127.0.0.1 es para el dominio “lossimpsons.com”.

Esto hara que cuando hagamos ping a lossimpsons.com la direccion ip devuelta sea “127.0.0.1″.

Ponemos en nuestro navegador entonces “lossimpsons.com” y vemos que pasa.

Si nos da error, es simplemente poque no hemos creado el document root de ese virtual host, el document root es el directorio en el cual estara nuestro sitio web (virtual host), por lo que vamos a crearlo.

mkdir /var/www/lossimpsons.com
mkdir /var/www/lossimpsons.com/public_html

Ahora vamos a meter un archivo ahi adentro para saber que todo funciona bien

echo "<?php phpinfo(); ?>"  > /var/www/lossimpsons.com/public_html/index.php

Ahora volvemos a nuestro navegador y vemos que pasa.

Si todo sale bien deberian ver una pagina web con informacion muy “rara” sobre php, apache, etc. Eso quiere decir que todo quedo bien.

Les comento para los que no se dieron cuenta, que en el comando anterior (echo …) generamos un archivo.php donde en su interior hay una funcion llamada php_info.

Lo que deberia ver es algo como esto

 

Bueno, de la misma forma que generamos el primer virtual hosts, podemos generar todos los que queramos.

Cualquier duda o comentario dejarlo en este blog :)

 

Introduccion y conceptos basicos de la programacion

April 19th, 2011 No comments
introduccion a la programacion

introduccion a la programacion

Cuando hablamos de programacion y somos programadores, rara vez entendemos a que llamamos “conceptos basicos”.

Como filosofia de vida me baso en reducir todo problema a su minima expresion, lo que tambien me llevo a intentar entender cada uno de los elementos que componen mi dia a dia, y al ser un programador, mi dia a dia es programar.

Desde hace mucho tiempo me dedico al estudio de los conceptos mas simples hasta lo mas complejos, me gusta entender como cada vez que precionamos una tecla en un chat, esa “letra” tecleada llega a otro monitor.

Podemos pensar que “viajo” por la internet y llego a otra computadora. En un estudio un poquito mas profundo podemos decir que al precionar la tecla el microprocesador del teclado interpreto el codigo binario de la misma, envio la informacion al mother, la misma lo capturo, fue interpretado, el SO tomo el evento, lo envio al spooler de eventos, algun programa lo capturo, lo proceso, y decidio que debia ser parte de un datagrama que fue enviado por el protocolo tcp/ip, udp o el que quieran y el mismo salio por la internet.
Obvio que podemos ir mas adentro del asunto, podemos empezar a ver que es un datagrama, como el SO se comunica con la placa de red, que son los protocolos, que son las capa de comunicacion de red, y todo lo que pasa para que algo que arranco como un impulso electronico, se convirtio en un proceso de software, volvio a ser un impulso electronico enviado desde nuestra placa de red, pasando por el modem, llegando a algun router del ISP, el mismo lo tomo, lo envio a otro lado, viajo por todo el mundo hasta finalmente llegar al destinatario, donde el proceso de decodificar un impulso electronico y convertirlo en una letrita en la pantalla arranco nuevamente.

Si, es una verdadera molestia pensar en estudiar todo eso, pero la realidad es que mientras mas aprendemos sobre esos detalles es cuando mas entendemos lo que hacemos dia a dia.
Este articulo no intenta ser una queja camuflada, ni explicar la diferencia entre “programar” y “ser programador”, pero si es una llamada de atencion para todos aquellos colegas que pasan la vida programando solo que los que le da de comer y no se ponen a ver mas alla (en pocas palabras solo ven el arbol y no el fucking bosque).

Como escribir todos los distintos procesos seria una demanda de tiempo del cual no dispongo, les propongo adjuntar libros y documentos que revelaran la informacion necesaria para que cada uno luego pueda seguir profundizando en los distintos procesos internos (en como los impulsos son convertidos en algo mas virtual).

 

introduccion a la informatica

introduccion a la informatica

El primer texto nos explica las bases de la informatica desde un punto de vista mas hardcode, donde veremos un poco de historia (mas que nada que las computadoras conceptualmente existen desde hace mas de 200 anios), y pasaremos hasta un punto evolutivo donde nacio finalmente la magia… la programacion.

Tambien al final existen unos ejercicios, que serian muy interesantes ver los resultados enviados por alguno de los miembros de esta lista.

Aca les dejo el indice del texto.

 

 

 

Contenido

1. Introduccion y conceptos basicos
1.0.1. Definicion de Informatica
1.0.2. Evolucion historica
1.1. Ambito de aplicacion
1.2. Tipos de computadores
1.3. La m ́quina de von Neumann
1.4. El funcionamiento del computador digital
1.4.1. Sistemas de numeracion
1.4.2. Medida de vol ́menes de informacion binaria
1.4.3. Sistemas de codificacion de la informacion
1.4.4. Programas e instrucciones
1.4.5. El funcionamiento de un programa
1.5. El software basico de un sistema
1.5.1. Niveles de abstracci on
1.5.2. El Sistema Operativo
1.5.3. Tipos de programas
1.6. Apendice: Representacion de numeros
1.7. Apendice: Historia del transistor
1.8. Ejercicios
1.9. Referencias de consulta

 

Descargar: Elementos De Programacion Introduccion y Conceptos Basicos

Sintetizador con html5 via PCM

April 7th, 2011 No comments

Nunca dejamos de descubrir nuevas cosas que podemos hacer con JavaScript, HTML5, css3, etc.

En esta oportunidad les presento riffwave, una libreria en JavaScript que genera usando el tag audio de html5 sonidos por medio de PCM (MIC en Castellano).

Aca va el ejemplo de como se usa la libreria.

 

var data = []; // just an array
for (var i=0; i<10000; i++) data[i] = Math.round(255 * Math.random()); // fill data with random samples
var wave = new RIFFWAVE(data); // create the wave file
var audio = new Audio(wave.dataURI); // create the HTML5 audio element
audio.play(); // some noise

aca les dejo la web de la libreria http://www.codebase.es/riffwave/ riffwave

Aca dejo el codigo de la libreria para los que quieran copiar y pega directamente.

/*
 * RIFFWAVE.js v0.02 - Audio encoder for HTML5 

Animaciones faciles con css3

April 7th, 2011 No comments
v

ceaser css animation lib

Para todos aquellos que necesiten hacer animaciones simples pero muy bonitas con css3, hoy les presentamos Ceaser.

Parece ser un proyecto muy interesante, donde con poco esfuerzo podemos lograr animaciones muy buenas, movimientos, efectos especiales, etc.

En la web oficial, podemos ver un claro ejemplo de las posibilidades.

http://matthewlein.com/ceaser/

 

El codigo necesario (a nivel ejemplo) se ve de la siguiente manera

 

-webkit-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
-moz-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
-o-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);

-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-moz-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
-o-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);

 

Algo destacable es la posibilidad de crear extensiones.

 

 

Arkanoid en javascript con jquery

April 7th, 2011 No comments

Aca les presentamos una seria de proyectos personales (experimentos) del site http://hakim.se/experiments

La verdad es que el que mas me gusto fue el Arkanoid escrito con jquery, muy simpatico y original.

 

arkanoid en jquery

arkanoid en jquery

Otro que esta realmente copado es el siguiente: http://hakim.se/experiments/html5/core/01/#

Es un lindo juego, muy adictivo!.

Mas ejemplos de lindos juegos en javascript con modelos matematicos interesantes: http://sinuousgame.com/

 

Liberar blackberry bold 9000 – unlock blackberry 9000 series

April 4th, 2011 14 comments
blackberry bold 9000

blackberry bold 9000

blackberry logo

blackberry unlock

Bueno, no se si muchos lectores de este blog tendran BlackBerry, lo mas seguro es que usen telefonos celulares con android, pero por alguna razon siempre estoy haciendo lo contrario a la mayoria (a veces me trae problemas, otras veces termine siendo pionero).

Esta vez vamos a hablar de BlackBerry Bold 9000, un telefono que llego a mi vida por “accidente” pero hoy no se ocmo hacer para vivir sin el.

Para los que no sepan muy bien sobre como van las blackberry, antes del manual de como liberarla (unlock) voy a dar mi opinion con respecto a los aspectos positivos y negativos que le encontre.

 

 

 

 

Sistema operativo de BlackBerry y Aplicaciones

 

Aspectos positivos

Sin duda parece desarrollado de una manera muy solida, hasta el momento no me ha dado problema alguno, responde bien, hace un buen trabajo gestionando los procesos en background, y sobre todo es rapido.

He visto un poco sobre la programacion para blackberry y es 100% java, lo cual me dejo muy feliz.

Tiene  cosas interesantes, y un concepto particular, donde todo se puede nuclear en class principales para notificaciones, asignar alertas, etc. Esto permite por ejemplo que todas las app que generan alertas (sms, llamadas, gmail app, whatsapp, etc) aparescan en la opcion de configuracion de ringtones.

Algo a destacar es el website de BlackBerry para descargar soft, ya que te instalar un addon en chrome o firefox y con ese addon te mete la app al telefono de una (conectando el telefono por cable usb a la computadora obviamente). Realmente para users sin nada de experiencia es genial esto.

El teclado es la gloria!, un teclado comodo, rapido, igualito casi al de pc (teclado qwerty) hace que todo sea realmente facil y rapido.

El GPS integrado anda muy bien, y el wifi es una gran ayuda.

 

Aspectos negativos

Sin duda todo usuario de blackberry ve de incomodo el tener que reiniciar el telefono por instalar una aplicacion, eso es realmente increible.

Por otro lado, por mas que el telefono tenga 1GB de memoria interna, solo hay 40MB disponibles para instalar aplicaciones (entre SO y demas chucherias). Realmente es una molestia!.

La duracion de la bateria es realmente lamentable, apenas dura unas 8hs/10hs y eso jode mucho.

El SO para iniciar tarda (depende del caso) entre 5 y 25 minutos!

 

Liberando el telefono

La necesidad surgio de una blackberry que me dieron en la oficina pero que venia de mexico. Estaba bajo la empresa telcel por lo que en Argentina era realmente inutil.

Buscando mucho por internet me encontre con que los pocos manuales eran incompletos o copiados y pegados de otros lados, que los softwares que recomendaban no servian de nada o estaba muy complicado encontrarlos, y asi una seria de problemas importantes.

Al final de muchas horas de bajar cosas, leer, probar, enojarme, leer nuevamente, volver a probar y tomar varios whiskys encontre la receta.

Como no tengo ganas de explicar todo, voy a subir el documento que me ayudo a liberarla, mas el software con parche y configuracion que SI funcionan, y algunas notas mas.

 

Notas sobre el proceso

Algunas cosas a tener en cuenta

Primero que nada, hay que instalar el programar original y despues de instalado reemplazar la carpeta c:\MML por la que va en el mml.work.rar

Sin eso no funciona nada.

El proceso consta de borrar todo el SO de la rom, reemplazarlo por algo “virgen” y despues con el Desktop Manager de la gente de BlackBerry reinstalar un SO desde cero, dejando un telefono sin problemas.

Es importante esperar a que el telefono inicie el nuevo SO, eso puede demorar unos 25 minutos.

Cualquier duda o comentario, dejarlo que intentare ayudarlos.

Bajar soft aca

 

Configurar el puerto de lighttpd en Debian

April 2nd, 2011 No comments
light httpd en debian

light httpd en debian

Hace unas horas instale un lighttpd en Debian. Obviamente se instalo la ultima version, y aqui paso algo raro.

Tengo Apache en el port 80, y siempre que instalo lighttpd lo tengo que pasar al port 8080, pero la tipica configuracion

server.port = 8080

no estaba funcionando.

Note que ahora la estructura de directorios de lighttpd en /etc era similar a la logica aplicada en apache, pero no importaba si configuraba el port al 8080, lighttpd seguia diciendo

can't bind to port: :: 80 Address already in use

Buscando por internet encontra la solucion, por lo que quiero compartirla con ustedes por su alguna vez les pasa lo mismo que ami.

Agregar estas lineas en el lighttpd.conf

server.port               = 8080
server.socket = "[::]:8080"

Y comentamos la linea

#include_shell "/usr/share/lighttpd/use-ipv6.pl"

Le damos iniciar al servicio y listo, problema resuelto :)

 

NodeJS, documentacion en español

March 14th, 2011 2 comments

Muchos programadores no son muy adeptos al ingles, es por eso que buscan en forma desesperada informacion en español.

En el caso de NodeJS tenemos algunos recursos.

El primero es en si este Blog, donde vamos a ir agregando documentacion, codigos de ejemplos, etc.

Como otras alternativas tenemos nodejs.es : http://www.nodejs.es

Recomiendo seguir al usuario: @nodejs_es ya que ahi podremos estar mas “al dia” con las publicaciones del blog de nodejs.es.

En si nodejs.es es un blog, con articulos sobre lo que va saliendo de la tecnologia node, pero tambien tenemos toda la documentacion oficial traducida, los ejemplos, etc.

NodeJs documentacion en espanol

NodeJs documentacion en espanol

Bloquear a google bot de todos los virtualhosts

March 11th, 2011 No comments

Esto es algo muy comun, es decir, una necesidad comun entre los programadores.

Todos los programadores usan un server de desarrollo, y obviamente no estan interesados en que Google pase a indexar las paginas de desarrollo.

Es por eso, que aca va una forma muy simple de resolver el problema.

Para bloquear a Googlebot de todos los virtualhosts simplemente podemos crear una regla para un directorio parent a todos los virtualhosts.

Supongamos que nuestro escenario es: /home/virtuals/site1 , /home/virtuals/site2, N

RewriteEngine On
RewriteRule  .*robots\.txt$         /home/varios/robotsforall.txt [L]

En el robotsforall.txt simplemente ponemos

User-agent: *
Disallow: /
Categories: apache, SEO, sysadmin Tags: