En este blog voy dejando información que me suelo encuentro en Internet. Para poder tenerla a mano siempre, al igual que otra gente del palo.. Los temas están relacionados con informática, programación, desarrollo web y móvil.
2012-06-26
2012-06-16
3 Días de vídeos tutoriales de Symfony 2, todo en catellano
- Introducción a Symfony2 + Tutorial #1: Instalación y primeros pasos, Javier Eguiluz
- Tutorial #2: El modelo. Doctrine2, Nacho Martín
- Tutorial #3: La vista. Twig, Marcos Labad
- Tutorial #4: Formularios y Seguridad, Javier López
- Tutorial #5: Backend, Javier Eguiluz
- Tutorial #6: Optimización, Assetic y Pruebas unitarias, Albert Jessurum
- Mandango, un ODM ultra-rápido para PHP, MongoDB y Symfony2, Pablo Díez
- Twig, cuando Django encontró a Symfony, Javier Eguiluz
- Symfony 1, mi viejo amigo, José Antonio Pío
- Microframework Silex, Nacho Martín
- Rendimiento en aplicaciones web con Symfony2, Asier Marqués
- Creación de aplicaciones móviles con Symfony2, Pablo Godel
- Reduciendo el acoplamiento entre aplicaciones con RabbitMQ, Álvaro Videla
- Symfony y los 3 millones de usuarios, nuestro día a día, Jordi Llonch
- Deja los plugins en casa, ¡Habemus Bundles!, Albert Jessurum
- Entorno de desarrollo productivo, Pablo Godel
- Introducción al desarrollo ágil, Ricardo Borillo
2012-06-12
Introducción a Zend Framework 2 en Castellano
Introducción a Zend Framework 2 (beta)
Versión original: Getting started with Zend Framework 2 (beta), Revisión 0.3.2
Copyright © 2011, 2012
Traducción: Alejandro Mohamad, www.alemohamad.com
2012-02-25
Queres aprender a programar Ruby, acá dejo un Tutorial de Ruby en Español
Tutorial de Ruby en castellano
Lección 1
- Introducción
- Instalación
- El Primer Programa
- Números en Ruby
- Strings y diversión
- Variables
- Alcance de las variables
Lección 2
Lección 3
Lección 4
- Clases y Objetos
- Accesores
- Ficheros: lectura/escritura
- Cargando librerías
- Herencia de clases
- Modificando clases
- Congelando objetos
- Serializando objetos
Lección 5
Lección 6
Datos de contacto sobre el Autor
2011-05-25
Link interesantes sobre AndroId, Snippets de utilidad y mas..
2010-08-19
OCW Consortium – Cursos virtuales gratuitos de universidades de todo el mundo
El OpenCourseWare Consortium es el resultado de la colaboración entre instituciones y organizaciones de educación superior de todo el mundo, incluyendo enlaces con contenido de cursos en varios idiomas y de diversos temas.
Entre ellos se encuentran muchos cursos en español y catalán, de universidades de reconocido prestigio que ofrecen el contenido siguiendo la linea de la web social.
En su web podemos ver la lista de países que están colaborando en este magnífico proyecto que nos permite filtrar el contenido por idioma y universidad.
Un recurso imprescindible para los amantes de la educación libre y de calidad.
2010-05-31
Opciones para realizar Videoconferencias privadas en la web
chatride.com
Sin necesidad de registro sólo tenemos que crear una sala y divulgar su enlace a la persona con la que queremos comunicarnos. El aspecto recuerda mucho al del famoso chatroulette, siendo tan sencillo como el popular mebeam.com, con el mismo objetivo.
Adobe Connect Now
Con un panel bastante completo y sencillo de usar, Adobe ConnectNow ofrece la posibilidad de compartir una dirección del tipo https://connectnow.acrobat.com/diegopolo, a la que los invitados a la videoconferencia tendrán que acceder para verse las caras usando sus webcams.
vawkr.com
Integrada con Facebook y con la posibilidad de crear salas también en myspace o en cualquier página web o blog, sin necesidad de instalar nada ni de tener que registrarse en ningún sitio.
meeting24.tv
meeting24.tv es una aplicación de videoconferencia que permite, en poco tiempo, crear una sesión en la que pueden participar hasta 24 usuarios al mismo tiempo.
ubiqq.com
Ubiqq genera una dirección url que, después de ser abierta por la persona con la que queréis hablar, creará una sesión de chat con vídeo en la que se podrán ver los dos protagonistas al mismo tiempo.
palbee.com
Una de las opciones más completas, ideal para hacer reuniones, ya que pueden compartirse archivos, capturas, presentaciones, etc.
ekko.tv
Una barra que incluye la posibilidad de realizar videoconferencia entre dos personas.
Hay otras opciones, como oovoo o tokbox.com, por ejemplo. Aunque estoy seguro que con tanta opción encontraréis lo que se adapte a vuestras necesidades particulares.
Fuente:wwwhatsnew.com
2010-05-12
Mikogo.es – Reuniones online para la vida profesional y académica
Mikogo, el resultado de una idea que nació en 2007 y que nos permite realizar reuniones online, conferencias, presentaciones y sesiones de soporte remoto de forma gratuita, se está mostrando también una excelente opción para el mundo académico.
Con miles de usuarios distribuidos alrededor de todo el planeta, el principal mercado se encuentra en Estados Unidos, ya que la aplicación estuvo solamente en inglés por casi dos años. Desde que a finales del año pasado se lanzaron otras páginas en diferentes idiomas, los usuarios de habla hispana lo han empezado a utilizar para decenas de aplicaciones diferentes, estando el soporte remoto, presentaciones profesionales y apoyo académico entre tres de los principales usos.
[...] pequeñas empresas y empresas que utilizan el software como medio de comunicación para realizar presentaciones. También educadores alrededor del mundo, lo utilizan para mostrar a sus alumnos diferentes presentaciones y prepararles para el futuro [...] usuarios con intereses personales que utilizan el programa para diferentes fines o sea para ayudar un amigo con la pc o mac, mostrar fotos a familiares en otros países, mostrar nuevos trucos que han aprendido, etc.
El poder compartir escritorio para los reuniones online es cada vez más importante, por eso no es de extrañar que la idea sea cada vez más frecuente en la web.
Enrique Castellanos me comenta que ya están desarrollando la versión 4, que incluirá una mejor interfaz de usuario con un panel que le permitirá al presentador tener un mejor control y organización de las reuniones. Además incluirá un chat para poder intercambiar mensajes durante la conferencia sin interrumpir al presentador durante la charla.
Fuente: wwwhatsnew.com
2010-02-16
Selección de enlaces para diseñadores
Aquí os dejo una lista de enlaces que pueden ser útiles para quien trabaja con diseño.
- Trucos para pasar de un archivo PSD a HTML: line25.com
- Cómo pasar de un boceto a un tema en Wordpress: spoongraphics.co.uk
- Tutoriales de CSS3 y técnicas de creación de botones: speckyboy.com
- Excelentes diseños web oscuros: webdesignledger.com
- Cientos de trucos para quien trabaja con CSS: css-tricks.com
- 17 extensiones de Google Chrome para webdesigners: designm.ag
Espero que los aprovechéis.
2009-12-26
Tutoriales para programar en Adobe Air en Ingles
Las aplicaciones en Adobe Air son las reinas en la web. Pueden ser compatibles con cualquier sistema operativo y usan los datos de nuestras cuentas en Internet para ofrecer lo mejor de la web y lo mejor de las aplicaciones de escritorio.
En vandelaydesign.com han publicado 35 enlaces a tutoriales para los que estén interesados en programar este tipo de aplicaciones. Todos en inglés, por desgracia.
Espero que os sean de utilidad.
Adobe AIR and Flex – Getting Started
Building an Adobe AIR Application with Flex
Writing Well-Behaved, Efficient AIR Applications
Performance Apps for AIR (vídeo)
How to Build a Contact Manager in AIR using XML Part I – Part II
Building a Desktop Application with Ext, AIR, Aptana and Red Bull
Developing Cross-Platform Adobe AIR Applications
Create a Drag and Drop MP3 Player with Adobe AIR
Building Lupo: A Case Study in Building Commercial AIR Applications
Building Web and Adobe AIR Applications from a Shared Flex Code Base
Creating Desktop Applications for the Cloud with Adobe Flex, AIR, and Amazon S3
Adobe Air Tutorial for HTML/JavaScript Developers
Implementing Drag and Drop Between the OS and AIR
Notification Windows with JavaScript and AIR
Recreating MapCache on Adobe AIR
Creating a Downloader for YouTube with Flex/AIR
Walk on AIR: Create a To-do List in Five Minutes
Developing AIR in Flash (vídeo)
Webcams, PNGs, and AIR (vídeo)
How to Store Adobe AIR Application Preferences Using JavaScript
Take Your CSS to the Desktop with AIR
Adobe AIR: Supercharged Development with Debugging
Creating an AIR RSS Reader Application from Scratch with Flex and PureMVC
Building an XML Viewer on AIR with Flex
Synchronizing Drupal Modules with Adobe AIR
Getting Started with Adobe AIR as a Web Developer/Designer
Simple Zip Viewer with JavaScript and AIR
Reducing CPU Usage in Adobe AIR
Performance Tips for Adobe AIR
Create Your Own Adobe Air Application with Flash
Build a Custom File Extension AIR App
Fuente :wwwhatsnew.com
2009-12-06
Uso de herramientas de Logging y Profiling en Framework DooPHP
DooPHP viene con su propio generador de perfiles y de herramienta de registro de forma predeterminada. La clase que se ocupan de esto en el marco es DooLog (dooframework / app / registro / DooLog.php)
Existen algunos métodos en este archivo en el que puede utilizar para el perfil y la explotación forestal consulta o mensaje importante en su aplicación. Usted puede registrar un mensaje llamando a:
Doo::logger()->log('Something fishy here!', DooLog::Alert);
O puede utilizar los métodos de alias en lugar de pasar el nivel de registro:
Doo::logger()->alert('Something fishy here!');
Doo::logger()->emerg('message...');
Doo::logger()->crit('message...');
Doo::logger()->err('message...');
Doo::logger()->warn('message...');
Doo::logger()->notice('message...');
Doo::logger()->info('message...');
Doo::logger()->trace('message...');
Todos los mensajes de registro pueden ser organizados por categoría, simplemente pasa en otro parámetro al final de los métodos:
Doo::logger()->log('Something fishy here!', DooLog::ALERT, 'editpost');
Doo::logger()->emerg('message...', 'editpost');
Doo::logger()->alert('message...', 'editpost');
Para ver los mensajes registrados, sólo tiene que llamar showLogs (). Por DooLog defecto devolverá un registro perfectamente formato XML que puede ser filtrada por el nivel o categoría. Usted puede obtener un registro de texto sin formato si es necesario para:
//display all logs
echo Doo::logger()->showLogs();
//display plain text log
echo Doo::logger()->showLogs(false);
//display only logs in category editpost
echo Doo::logger()->showLogs(true, null, 'editpost');
//display only logs in level Alert and category editpost
echo Doo::logger()->showLogs(true, DooLog::ALERT, 'editpost');
Cuando tienes que escribir los mensajes de registro en el archivo, todo lo que tienes que hacer es llamar writeLogs (). Similar a showLogs (), se escribe la cadena XML en el archivo por defecto.
//Creates a log file log.xml
Doo::logger()->writeLogs();
//You can write as plain text
Doo::logger()->writeLogs('log.txt', false);
Usted puede escribir los registros de cierto nivel o categoría, así
Doo::logger()->writeLogs('log.xml', true, DooLog::ALERT, 'editpost');
Si usted está preocupado de que los archivos de registro se hacen más grandes con el tiempo, todo lo que tienes que hacer es especificar un tamaño de archivo para la rotación de registro. Cuando se alcanza este archivo, los registros serán automáticamente expulsado y los nuevos mensajes serán escritos.
//maximum log file size is 20kb
Doo::logger()->rotateFile(20);
Doo::logger()->writeLogs();
La clase Logger escribe el archivo en el que su aplicación se encuentra por defecto (SITE_PATH). Si desea cambiar el lugar donde los archivos de registro serán almacenados, sólo tiene que añadir la puesta en log_path common.conf.php:
//this will store log files at /var/logs/, eg. /var/logs/log.xml
$config['LOG_PATH'] = '/var/logs/';
Eso no es todo!Si usted ha pasado a través de la aplicación por defecto App, hay una ruta llamada de depuración que se parece a esto:Eso no es todo!Si usted ha pasado a través de la aplicación por defecto App, hay una ruta llamada de depuración que se parece a esto:
$route['*']['/debug/:filename'] = array('MainController', 'debug');
Esta ruta es para que usted pueda usar con la herramienta de visor de registro hecho en Flex (sí necesita Flash Player para ver este). El parámetro de nombre de archivo de ruta '' sería el nombre de su archivo de registro que se log.xml por defecto. Bien, ahora vamos a probarlo, estoy con la demo de blog como ejemplo y la dirección a la demo es http://localhost/amfdemo/blog/ (sí, habrá un amfphp DooPHP tutorial más adelante)
Todo lo que necesitas hacer es visitar http://localhost/amfdemo/blog/tools/logviewer.html. Sólo tienes que introducir la ruta de depurar el nombre del archivo de registro como la dirección (http://localhost/amfdemo/blog/debug/log) y esto es lo que van a recibir.
Con esta herramienta, usted puede fácilmente controlar su punto de vista de registro. Usted puede hacer la clasificación en la fecha y hora, el nivel de registro, la categoría, el acceso URI, el mensaje de su registro, así como algunos de filtrado.
Filtrar por categoría:
Filtrar por nivel de registro / tipo:
Filtrar por URI:
Puede filtrar con la combinación 3 también. Una cosa a tener en cuenta es cuando se utiliza el nivel de seguimiento de registro, sólo se registrará si el modo de depuración está en (DEBUG_ENABLED es cierto). Esto es bueno para las pruebas durante el desarrollo y puede simplemente desactivado el registro de seguimiento mediante el establecimiento de
$config['DEBUG_ENABLED'] = False;
Aquí descargar este blog registro demo, ya hay un log.xml en la carpeta blog de modo que usted puede tener un rápido vistazo a la herramienta Visor de registro. Los mensajes de registro no tiene ningún sentido ya que sólo para efectos de demostración
Eso es todo por la tala, al lado voy a explicar cómo hacer perfiles y perfiles de base de datos con DooPHP. Si desea más discusión, hay un hilo en este tutorial en el foro aquí.
2009-12-04
Documentos de UX ¿Que es?
Cron para Backup y Optimizacion de tablas con PHP + Zend Framework
Hace mucho no escribía un post, y quiero volver a retomar el habito con este pequeño scripts realizado con Zend Framework para optimizar todas las tablas de una base de datos mysql y además generar un dump por cada tabla, los resultados los vamos a comprimir para que no ocupe espacio innecesario.
Mantener un backup de nuestras tablas es mas que recomendable, uno nunca sabe cuando lo va a necesitar, sobre todo porque es muy fácil implementar un sistema automatico para generar backups como vamos a ver a continuacion.
En este post aunque es corto quiero demostrar que es posible realizar lo siguientes puntos:
1- Correr php desde la consola de linux
2- Correr Zend Framework desde la consola ( si es posible! ) y usar componentes de Zend Framework sin la necesidad de usar MVC, Zend_Application.
3- Realizar backups diarios de sus base de datos.
1- Correr php desde la consola de linux.
Esto espero que no sea una ciencia para ninguno, realmente es muy fácil. Creamos un scripts antes de los tags php ?> agregamos #!ruta_de_php en mi caso seria #!/usr/bin/php con esta linea le decimos a quien llamar para ejecutar el código que viene a continuación.
Un ejemplo simple seria el siguiente.
-
- #!/usr/bin/php
- < ? php
- echo "Estoy imprimiendo directamente en la consola";
- ? >
-
-
Guardamos el archivo como test.php, y le damos permisos de ejecución con el comando
$ chmod a+x test.php
Ahora lo ejecutamos
$ ./test.php
El resultado es el siguiente
2- Correr Zend Framework desde la consola ( si es posible! ).
Zend Framework mas allá de un montón de herramientas que nos brinda y formas de trabajo. Así como Zend_Application, Estructura de directorios organizadas, MVC, etc tambien nos permite usar sus componentes individualmente.
Si nosotros quisieramos usar Zend_Db, y todos los beneficios que este trae, solo necesitamos una configuracion mínima y listo. Podemos usar Zend_Db sin usar MVC o Zend_Application y mantener nuestra estructura de directorios.
En este caso voy a usar Zend_Db para conectarme a una base y conseguir un listado de tablas.
El código es el siguiente.
-
- #!/usr/bin/php
- < ? php
- )));
-
- require_once( "library/Zend/Db.php" );
- /** Conectamos a la base de datos con ZF */
- $db = Zend_Db::factory( ‘Pdo_Mysql’,
- ‘adapterNamespace’ => Zend_Db_Adapter,
- ‘dbname’ => ‘mysql’,
- ‘host’ => ‘localhost’,
- ‘username’ => ‘test’,
- ‘password’ => ‘qwerty’
- )
- );
-
- $db->getConnection();
-
- $rowset = $db->fetchAll( "SHOW TABLES" );
-
- ? >
-
Para el ejemplo yo use Pdo_Mysql pero puden usar el adapter que quieran. Yo serialize el array $rowset para que sea mas claro en la imagen que se ve a continuacion que muestra todas las tablas que tiene la base de datos mysql.
3- Incentivar a realizar backups diarios de sus base de datos.
Es muy comun que una tabla se rompa o alguien cometa algun error y se pierdan datos o dañe una tabla o toda una base. Hay mil factores que pueden hacer que necesitemos un backup reciente de nuestra base. Si creamos un dump entero de nuestra base cuando queramos recuperar una tabla se nos va a complicar un poco realizar esta tarea sin tener que abrir un archivo que vaya a saber cuando miles de mega ocupe. Por eso es conveniente hacer backup de las tablas individualmente, asi en el caso que tengamos problemas con una sola tabla recuperar esa tabla se hace una tarea facil .
Hacer un script que genere este backup diariamente no es complicado, creamos el scripts, y configuramos el cron para que se ejecute a la hora que tengamos la menor cantidad de visitas.
Este script esta en PHP, en realidad la manera mas optima seria hacerlo en shell scripting pero tambien queria demostrar los 2 puntos anteriores.
Mi script es muy sencillo y es facil de entender. Primero trae todas las tablas de la base que estamos usando. Ejecutamos un optimize para cada tabla, inmediatamente generamos un backup de esa tabla en una carpeta temporal, cuando terminamos de hacer estas acciones con todas las tablas comprimimos la carpeta y borramos la carpeta orginal, para que no ocupe espacio.
Para ejecutar los comandos de linux use noFollow y no me preocupe mucho en validarlo, cada uno puede buscar la forma de optimizar el codigo.
El script cuenta con dos archvios. Un application.ini donde guardo toda la info de la base de datos
config/application.ini
[db]
adapter = Pdo_Mysql
params.adapterNamespace = Zend_Db_Adapter
params.host = localhost
params.username = test
params.password = “qwerty”
params.dbname = mibase
params.port = 3306
params.options.autoQuoteIdentifiers = 0
Y el script completo
-
- #!/usr/bin/php
- < ? php
- )));
-
- require_once( "library/Zend/Config/Ini.php" );
- require_once( "library/Zend/Db.php" );
- /** Conectamos a la base de datos con ZF */
- $applicationConfig = new Zend_Config_Ini( ‘config/application.ini’ );
- $db = Zend_Db::factory(
- $applicationConfig->db
- );
- $db->getConnection();
-
- $rootPath = "/home/backup/db/";
-
-
- $config = $db->getConfig();
-
- $rowset = $db->fetchAll( "SHOW TABLES" );
- foreach ( $rowset as $row ){
- /** Optimizamos la tabla */
- $query = "OPTIMIZE TABLE " . $row[‘Tables_in_’ . $config[‘dbname’] ] ;
- $db->query( $query );
-
- /** Generamos un dump de la tabla */
- system( "mysqldump –opt -u {$config['username']} -p{$config['password']} -h {$config['host']} {$config['dbname']} {$row['Tables_in_' . $config['dbname'] ]} > $path " );
- }
- /** Comprimimos la carpeta con los dump de la fecha y borramos la carpeta */
-
- $db->closeConnection();
- echo "ndone!nn";
- ? >
-
Antes de ejecutar el script tienen que crear la carpeta /home/backup/db y darle permisos de escritura
$ sudo mkdir -p /home/backup/db
$ sudo chmod -R a+rw /home/backup/db
lo agregamos al crontab y listo.
$ sudo vim /var/spool/cron/crontabs/root
Agregamos la siguiente linea para que se ejecute todos los dias a las 2:20 am
20 2 * * * /var/www/html/scripts/cronOptimize.php > /dev/null 2> /dev/null
Y listo
Recuerden que tienen que tener instalado php5-cli
$ sudo aptitude install php5-cli
Fuente: blog.pablo-morales.com
2009-12-02
CSS: Menúes dropdowns más livianos con el método Son of Suckerfish
Haz clic aquí para ver una demostración de los menúes dropdowns de único nivel »
Haz clic aquí para ver una demostración de los menúes dropdowns de doble nivel »
Haz clic aquí para ver una demostración de los menúes dropdowns de triple nivel »
Haz clic aquí para ver una demostración de los menúes dropdowns de triple nivel »
Haz clic aquí para ver una demostración de los menúes dropdowns dispuestos en forma vertical »
Haz clic aquí para ver una demostración de los menúes dropdowns estilizados con CSS »
Fuente: HTML Dog
Fuente: elwebmaster.com
WordPress: Como crear una sección de “Acerca del autor” en tu blog
Utilizando una mezcla de etiquetas template de WordPress, una sección de información puede convertirse fácilmente en una bonita sección sobre al autor ¿Quieres hacer una?
Una sección del autor típica, se muestra debajo de sus posts, por lo que colocaremos nuestro código en el archivo single.php de Wordpress. El objetivo es mostrar el nombre del autor, enlazarlo a su sitio personal, mostrar su foto de perfil y una pequeña biografía.
Ingresar la información del usuario
La mayoría de esta información se inserta en la sección Usuarios del panel de administración WordPress. Crea el usuario y rellena los campos pertinentes. Selecciona la opción adecuada de cómo debe mostrarse el nombre, introduce la dirección web del usuario, y completa la información biográfica.
Ver el link
2009-11-27
Uso DooTranslator para la traducción
DooTranslator salió, apoya "CSV", "gettext", "Array", "ini", por ahora, pronto se llevarán a cabo otros "tipos de archivo". Así, por ejemplo, usted tiene su archivo de traducción con este contenido:
en.svntest;"This is just a test!"
Permite inicializar la clase DooTranslator:$translator = Doo::translator('Csv', $this->_basePath . 'languages/en/LC_MESSAGES/en.csv');
echo $translator->translate("test");
Como usted puede ver su muy simple, el primer argumento es el tipo de archivo para la traducción y la segunda es la ruta al archivo, el tercer argumento puede ser opciones de matriz. Para CSV puede configurar opciones como: delimitador, recinto y la longitud. El valor por defecto para delimitador es ";" y para la carcasa es ".
Ahora vamos a añadir algunas opciones a nuestra llamada, digamos que queremos un delimitador de otros entonces "," y queremos añadir algo de almacenamiento en caché.$translator = Doo::translator('Csv', $this->_basePath . 'languages/en/LC_MESSAGES/main.csv', array('cache' => 'apc', 'delimiter' => '|'));
Así que ahora hemos añadido mecanismo de caché que es "APC" y hemos añadido delimitador que es "|", ahora en nuestro en.csv debemos cambiar delimitador:test|"This is just a test!"
$translator->translate("Hello [_1], wellcome to my website!", array("John"));
Esto le mostrará traducida cadena con: "Hola Juan, bienvenido a mi página web!".
Muy bien de eso, si usted tienen alguna pregunta por favor te pido, esto es una simple traducción de su clase aún en fase beta por lo que bugy puede ser poco, probarlo y por favor enviarme comentarios si usted encuentra algunos errores.
2009-11-07
Como crear un Blog con Zend Framework ver.1.9 Tutorial en Ingles
En el sitio tenes un barra superio dende te pregunta si lo queres traducir al castellano.
Link al tutorial:
http://www.harikt.com/content/simple-blog-using-zend-framework-19
2009-04-14
50 Sitio con distintos tutoriales para webmaster
1. PSD Tuts
2. Tutorial9
3. Pixel2life