There's no better place like localhost
domingo 11 de diciembre de 2011
lunes 8 de agosto de 2011
Mi libro de PHP Avanzado - Editorial Alfa Omega
Dedique el ultimo año (largo) a escribir un libro de PHPpara la editorial Alfa Omega
El objetivo del libro es la generación de recetas bajo el paradigma de la Programación Orientada a Objetos, en base a una situacion puntual que se da en el dia a dia en los proyectos de desarrollo, el libro plantea alternativas para solucionarlo con la intencion de ser el primer paso en el que los propios lectores puedan agregar o modificar para su conveniencia.
El libro estará disponible en los proximos meses de 2011 y se podra comprar en Argentina, Mexico y España entre otros paises de habla hispana.
Todos los ejemplos del libro y mas detalles los colocare en http://www.librophpavanzado.com/
El objetivo del libro es la generación de recetas bajo el paradigma de la Programación Orientada a Objetos, en base a una situacion puntual que se da en el dia a dia en los proyectos de desarrollo, el libro plantea alternativas para solucionarlo con la intencion de ser el primer paso en el que los propios lectores puedan agregar o modificar para su conveniencia.
El libro estará disponible en los proximos meses de 2011 y se podra comprar en Argentina, Mexico y España entre otros paises de habla hispana.
Todos los ejemplos del libro y mas detalles los colocare en http://www.librophpavanzado.com/
Etiquetas:
alfa omega,
libros,
php,
poo,
programacion
miércoles 18 de agosto de 2010
Radio 10 en iPhone
Hoy Apple finalmente aprobo mi aplicación nativa para iPhone para escuchar Radio10 en iPhone e iPad.
Es gratuita, funciona en iOS 4 y el diseño es merito del equipo de Infobae.com

La pueden descargar en: http://itunes.apple.com/app/radio-10/id386069816?mt=8
Es gratuita, funciona en iOS 4 y el diseño es merito del equipo de Infobae.com

La pueden descargar en: http://itunes.apple.com/app/radio-10/id386069816?mt=8
lunes 19 de abril de 2010
Ustream.tv en tu iphone
Hace algun tiempo ustream.tv lanzo su aplicacion para dispositivos mobile (iphone y android).
Investigando en la web y con ayuda de algunos foros oficiales encontre que accediendo desde el navegador del iphone a una url del tipo:
http://iphone-streaming.ustream.tv/ustreamVideo/ID_SHOW/streams/live/playlist.m3u8
El ID_SHOW lo podemos ver logueados en ustream.tv en la opcion "Your Shows":

Lo importante a tener en cuenta es que a la hora de hacer el streaming tendremos dos opciones para hacerlo:
Ustream Producer
Solucion oficial de ustream: gratis, multiplataforma y de excelente rendimiento.
Flash Media Encoder (FME)
Solucion de Adobe tambien gratuita y con mayor nivel de configuracion. En caso de usar esta alternativa para que el streaming se vea en iphone debemos configurar el audio en AAC y el video en H.264. De lo contrario solo obtendremos audio en nuestro telefono.
FME no tiene soporte nativo para audio en AAC por lo que hay que sumar un plugin pago, pero de muy bajo costo: Mainconcept AAC Encoder
Una vez elegida la opcion desde la cual transmitiremos sumando algo de html 5 podemos armar en segundos una web para darle a nuestros usuarios y que vean nuestro show en vivo, en algun momento armare con Objective-C una aplicacion nativa que lo utilice.
<video poster="poster.png" src="http://iphone-streaming.ustream.tv/ustreamVideo/ID_SHOW/streams/live/playlist.m3u8" autobuffer>Su navegador no soporta este sitio web.</video>
Investigando en la web y con ayuda de algunos foros oficiales encontre que accediendo desde el navegador del iphone a una url del tipo:
http://iphone-streaming.ustream.tv/ustreamVideo/ID_SHOW/streams/live/playlist.m3u8
El ID_SHOW lo podemos ver logueados en ustream.tv en la opcion "Your Shows":

Lo importante a tener en cuenta es que a la hora de hacer el streaming tendremos dos opciones para hacerlo:
Ustream Producer
Solucion oficial de ustream: gratis, multiplataforma y de excelente rendimiento.
Flash Media Encoder (FME)
Solucion de Adobe tambien gratuita y con mayor nivel de configuracion. En caso de usar esta alternativa para que el streaming se vea en iphone debemos configurar el audio en AAC y el video en H.264. De lo contrario solo obtendremos audio en nuestro telefono.
FME no tiene soporte nativo para audio en AAC por lo que hay que sumar un plugin pago, pero de muy bajo costo: Mainconcept AAC Encoder
Una vez elegida la opcion desde la cual transmitiremos sumando algo de html 5 podemos armar en segundos una web para darle a nuestros usuarios y que vean nuestro show en vivo, en algun momento armare con Objective-C una aplicacion nativa que lo utilice.
<video poster="poster.png" src="http://iphone-streaming.ustream.tv/ustreamVideo/ID_SHOW/streams/live/playlist.m3u8" autobuffer>Su navegador no soporta este sitio web.</video>
martes 19 de enero de 2010
Traducir contenido usando la API de Google
Script simple que usando PHP y JSON permite traducir contenido.
La funcion permite enviar idioma de origen y destino, aunque toma por default español -> inglés
Un ejemplo simple aplicado a traducir los nombres de paises.
<?
function googleTranslate($str,$from='es',$to='en') {
$str = str_replace(" ","%20",$str);
$result = file_get_contents('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.$str.'&langpair='.$from.'%7C'.$to);
$arrRes = json_decode($result,true);
return utf8_decode($arrRes["responseData"]["translatedText"]);
}
$arr = array('Argentina','Brasil','Nigeria','Haiti','Peru','Inglaterra','Noruega','Finlandia','Estados Unidos');
for($i=0;$i<count($arr);$i++){
echo $arr[$i] . " -> " . googleTranslate($arr[$i]) . "<br>";
}
?>
La funcion permite enviar idioma de origen y destino, aunque toma por default español -> inglés
Un ejemplo simple aplicado a traducir los nombres de paises.
<?
function googleTranslate($str,$from='es',$to='en') {
$str = str_replace(" ","%20",$str);
$result = file_get_contents('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.$str.'&langpair='.$from.'%7C'.$to);
$arrRes = json_decode($result,true);
return utf8_decode($arrRes["responseData"]["translatedText"]);
}
$arr = array('Argentina','Brasil','Nigeria','Haiti','Peru','Inglaterra','Noruega','Finlandia','Estados Unidos');
for($i=0;$i<count($arr);$i++){
echo $arr[$i] . " -> " . googleTranslate($arr[$i]) . "<br>";
}
?>
martes 12 de enero de 2010
Desafio Nerd: Años Bisiestos [PHP]
Objetivo, lograr el script mas liviano que reciba dos parametros: startDate & endDate y devuelva los años bisiestos comprendidos en ese periodo de tiempo incluyendo los extremos. El año se envia en 4 digitos y se devuelve con un break line.
Los participantes: Julia, Marco y quien escribe.
A continuacion los 3 scripts y su peso:
Marco - 77 bytes
<?$s=$argv[1];while($s<=$argv[2]){echo checkdate(2,29,$s)?$s."\n":"";$s++;}?>
Julia - 88 bytes
<?for($i=$argv[1];$i<=$argv[2];++$i) if(date("t",mktime(0,0,0,2,1,$i))>28) echo $i.'\n'?>
Christian - 94 bytes
<?for($i=$argv[1];$i<=$argv[2];$i++){?><?=($i%4==0&&($i%100!=0||$i%400==0)?$i."\n":'')?><?}?>
Notese lo interesante de las distintas formas de comprobarlo, la mas clasica y "matematica" como hice yo, o bien chequear si febrero tiene 29 dias, y tambien el ver que existe una funcion checkdate en PHP.
Otras opciones de menor peso?
Saludos!
Los participantes: Julia, Marco y quien escribe.
A continuacion los 3 scripts y su peso:
Marco - 77 bytes
<?$s=$argv[1];while($s<=$argv[2]){echo checkdate(2,29,$s)?$s."\n":"";$s++;}?>
Julia - 88 bytes
<?for($i=$argv[1];$i<=$argv[2];++$i) if(date("t",mktime(0,0,0,2,1,$i))>28) echo $i.'\n'?>
Christian - 94 bytes
<?for($i=$argv[1];$i<=$argv[2];$i++){?><?=($i%4==0&&($i%100!=0||$i%400==0)?$i."\n":'')?><?}?>
Notese lo interesante de las distintas formas de comprobarlo, la mas clasica y "matematica" como hice yo, o bien chequear si febrero tiene 29 dias, y tambien el ver que existe una funcion checkdate en PHP.
Otras opciones de menor peso?
Saludos!
viernes 8 de enero de 2010
La "Practicuna"

Al ver que mi hija Victoria (6 meses) estaba imparable y rebotando contra el piso mas de lo debido para su salud, decidimos bajar la "practicuna" que nos regalaron, pasamos 24 horas de intentos frustrados para armarla, o quedaba un parante, o quedaba el otro, o se caía, o me dolían las manos!
Googleando, encontré un blog donde un genio de la tecnología para bebes daba la simple solución (La traba del piso (centro) no debe estar trancada ni cerca del piso. Asegurate que esté levantada, y así intenta trancar las barandas laterales. Luego si, puedes bajar la traba del centro para trancar el piso.).
Gracias a Sebastian por compartir su experiencia y salvar algún transeúnte cuando la tirara por el décimo piso en caída libre.
Saludos!
PS. Dejo una foto de la practicuna
Suscribirse a:
Entradas (Atom)