miércoles, 23 de abril de 2008
10 consejos para mejorar tus queries MySQL
* Usa el comando explain: el comando explain te puede ayudar a identificar los índices que se usan y además te proporciona más información útil.
* Usa permisos menos complejos: usar permisos más sencillos evita que se comprueben muchas condiciones en cada ejecución de una sentencia.
* Comando benchmark: este comando nos permite saber cuánto tiempo tarda en ejecutarse una expresión.
* Optimiza tus cláusulas: ya sea quitando paréntesis innecesarios, usando count(*) sin condiciones en el where ya que tira de tablas internas de MyQSL o usando la opción SQL_SMALL_RESULT para usar tablas temporales en memoria.
* Ejecuta optimize table: defragmenta una tabla después de varios borrados, el acceso a disco es algo importante a tener en cuenta.
* Evita campos de longitud variable: en tablas de frecuente actualización evita campos como VARCHAR, BLOB o TEXT.
* Usa insert delayed: solo cuando sea no importe cuando se inserten los datos.
* Prioridades en las sentencias: usa INSERT LOW_PRIORITY para darle a las consultas mayor prioridad, o usa SELECT HIGH_PRIORITY para ejecutar una consulta aunque haya otros clientes esperando.
* Haz múltiples inserciones en una única sentencia: en vez de varias sentencias de una única inserción.
* Sincroniza tipos de datos: mismos datos en tablas diferentes deben ser del mismo tipo de datos.
Recopilación de técnicas CSS
Entre las técnica que nos enseña o recuerda encontramos:
* CSS Sprites
* Esquinas redondeadas
* Reemplazar texto por imágenes
* Tabuladores
* Colocar texto alrededor de una imagen
* Misma altura en capas
* Transformar una lista en una barra de navegación
* Cabeceras
* Sombras
* Transparencia
101 CSS Techniques Of All Time- Part 1
Vía / CSS Globe
Consejos para trabajar con el código de otros
Cuando se trabaja en una empresa de desarrollo de software es muy común que entres en un proyecto que ya está empezado, por lo que deberás tratar con un código que no es el tuyo, y que da igual que sea bueno o malo, deberás adaptarte a él, algo que siempre puede dar algún problema. Más problemático es cuando sustituyes al único encargado del código y el traspaso de conocimientos se realiza en un par de horas (algo muy frecuente en las grandes empresas de consultoría).
Para aquellos que se encuentren en esas circunstancias, espero que los consejos que os voy a comentar, sacados de mi propia experiencia en el desarrollo web, os sean de utilidad.
Echa un vistazo preliminar
Aún no sabes cómo es el código, si es bueno o es malo, pero un vistazo preliminar a la estructura de directorios y a los nombres de los ficheros suele darte una idea aproximada de la funcionalidad que pueden tener.
Por muy malo que sea un programador, éste tiene su propia lógica para la nomenclatura, échale un rato a intentar adivinarla y así podrás localizar ficheros de forma más sencilla en futuras modificaciones.
No esperes un diseño MVC claro, quizás ni exista y esté todo mezclado. Tú tienes tu forma de programar, pero aunque para ti sea perfecta, ni quizás lo sea, ni todo el mundo la comparte.
No intentes entenderlo todo de golpe
Lo más seguro es que no debas cambiar toda la aplicación de golpe, por lo que de poco te va a servir empezar a estudiarla completamente y entender todo su significado. Ve por partes, si tienes que hacer un cambio en una parte céntrate en esa parte del código y olvídate del resto.
Cuando te hayas pegado con una parte del código no se te olvidará fácilmente, por lo que si en otra ocasión tienes que volver a tocar esa parte te será más sencillo.
Empieza por el final para llegar al origen
Afortunadamente el resultado del desarrollo web es visible para todos, tan solo debes ver el código HTML para ver qué se ha generado con la aplicación.
Normalmente, las modificaciones que se suelen realizar son del tipo "en tal página falla tal cosa". Mira el HTML de esa página y encuentra algo que pueda ser exclusivo de ella.
Busca nombres de clases de etiquetas, las cabeceras de las páginas (, textos explicativos. Una vez creas que tienes un texto más o menos exclusivo de esa página busca entre todo el código, por ejemplo en Windows puedes usar GlobalFind.
Debes tener cuidado porque a veces el código no aparece exactamente como lo buscas. Por ejemplo un texto largo puede estar dividido en varias líneas:
$texto = 'Texto largo que el desarrollador ';$texto .= 'a cortado en líneas para verlo más claro, ';$texto .= 'aunque sea menos eficiente por tener que ';$texto .= 'concatenar strings.';
O también puede darse la circunstancia de que el texto se forme por la unión de un texto y una variable:
$clase = array('empleados', 'facturas', 'resumen');// Algo de código por aquíecho '...';// Más código
Quizás te encuentres con ficheros de idiomas, y verás que el texto que buscas está asociado a un código, céntrate en ese código y búscalo.
Usa trazas
La lógica del código es de todo menos lógica. Te vas a encontrar con partes de código que no vas a entender por mucho que lo estudies. No es bueno perder el tiempo intentando entender el código al 100%, ya tendrás tiempo para ello.
Cuando te encuentres con un trozo de código que no entiendas, métele trazas a todos los bloques para saber por dónde pasa:
echo 'Empezamos';if ($condicion1 && $condicion7) {echo 'Paso por aquí 1';// códigoif ($condicion3 || !$condicion4) {echo 'Paso por aquí 2';// código} else {echo 'Paso por aquí 3';// codigoif ($condicion5) {echo 'Paso por aquí 4';}}} else {echo 'Paso por aquí 5';// código}echo 'FIN';
Fijándote en las trazas que devuelva verás que código se ejecuta y así podrás encontrar mejor el error.
Ten en cuenta la base de datos
La BD es muy importante a la hora de localizar información. Mucha gente usa la BD para almacenar los mensajes de error o de información, que serán fundamentales para comprender el funcionamiento de la aplicación.
Localiza dónde se ejecutan las consultas, si hay suerte estarán separadas del resto de código (normalmente a las clases que tratan con la BD se le llama modelos). Si tienes que modificar los datos que devuelve una consulta, aunque no sepas cómo se obtienen esos datos (la sentencia SQL exacta), si que puedes hacerte una idea de las tablas a las que accede. Busca entre los modelos el nombre de esas tablas y filtra por los campos que muestra en la página. Claro que el select * from puede ser nuestro mayor enemigo.
Examina los datos de la tabla para ver si coincide con los datos que se muestran. Un ejemplo sencillo es insertar un registro mediante la aplicación y ver qué se ha guardado en la BD, así entenderás más facilmente qué se guarda en cada campo.
No olvides los ficheros de configuración
En ellos está mucha de la lógica de la aplicación, estudiarlos durante un rato puede aclararnos muchas cosas, como por ejemplo rutas de ficheros, conexiones a la BD, sistema de trazas, clases auto-ejecutables...
Cuidado con las aplicaciones externas
Si programas en Java es posible que no encuentres el por qué de un problema porque quizás la ejecución dependa de un JAR externo. Localízalos y tenlos siempre presentes. Si trabajas con Linux o Unix puede que haya llamadas a la shell. Pasará algo parecido a los JAR, deberás saber dónde están y qué hacen.
Empieza por los cambios sencillos
No intentes poner la aplicación del revés o cambiarla radicalmente nada más empezar con ella. Ve poco a poco, con cambios sencillos, que te hagan enfrentarte con el código y empezar a conocerlo.
Los cambios que puedas realizar en una parte no sabes donde van a poder afectar, por eso debes ir con cuidado y empezando con cosas sencillas, que tendrán menos posibilidades de estropear otras cosas.
Un cambio en varios lugares
Reutilizar código no siempre es una norma para los desarrolladores. Aunque creas que has localizado el lugar dónde debes cambiar el código, no pienses que es el único lugar. Sigue buscando a ver si hay más lugares donde se deba cambiar.
Testea constantemente
No conoces la aplicación y no sabes que puedes estropear cuando tocas algo. Un cambio sin importancia puede hacer que todo falle, ten cuidado si arreglas algo de no estropear otra cosa.
FancyBox: zoom de imágenes mediante Javascript
Buen script creado en jQuery que permite añadir zoom a imágenes. Está testado en IE6, IE7 y Firefox. Entre las características muestra en una ventana lightbox la imagen en un tamaño mayor, pudiendo ajustarse al tamaño de la ventana y mostrando un marco alrededor de la imagen. Además permite mostrar un grupo de imágenes de forma común.

Un ejemplo de uso sería el siguiente:
$(function() {$("div#test_zone a").fancybox();});
Consejos para tener un buen código Javascript
Consejos que nunca vienen mal para desarrollar un código Javascript decente:
- Que sea limpio y esté bien documentado: esto no es exclusivo de Javascript, pero parece que en este lenguaje se olvida. También es recomendable tener dos versiones del script, uno de desarrollo y otro de producción (que estará comprimido).
- Usa ficheros externos: no incluyas los scripts dentro de tu HTML, usa scripts externos. A parte de ser más eficiente en el gasto del ancho de banda es reutilizable y más legible.
- Separa la capa de presentación de la capa lógica: no añadas eventos en las etiquetas HTML, create Javascripts no intrusivos que modifiquen los elementos y añadan los eventos.
- Define el ámbito de las variables: aunque no sea necesario usar var para definir las variables, hay que hacerlo, así evitarás sorpresas de modificación de variables, sobre todo si usas recursividad.
- No pienses que por defecto se soporta Javascript: no todo el mundo dispone de javascript, por ello no es conveniente llamar a funciones javascript dentro del href de los enlaces, y es conveniente tener acción por defecto en un enlace cuando se quiere modificar su funcionalidad por javascript:
lunes, 21 de abril de 2008
Iconos Web 2.0 con InkScape
Este tutorial explica paso a paso cómo crear los populares íconos "tipo Web 2.0" usando sólamente InkScape, la poderosa aplicación de dibujo libre y abierta para la creación de gráficos vectoriales que puede reemplazar a software propietario similar para cada vez más tareas.

Inkscape se encuentra desarrollado principalmente para el sistema operativo GNU/Linux, pero es una herramienta multiplataforma que funciona en Windows, Mac OS X, y otros sistemas derivados de Unix.
- Download: InkScape 0.45 (Fuentes).
- Download: InkScape 0.45 (Mac OS X).
- Download: InkScape 0.45 (Windows).
Nuevos elementos en HTML 5
El desarrollo del lenguaje de marcas hipertextuales (HTML) se detuvo en 1999 con HTML 4. La versión 5 viene a remozar a la anterior, aunque sin pretender hacerla irreconocible. Entre los nuevos elementos estructurales se incluye aside, figure y section. Entre los nuevos elementos intrelínea: time, meter y progress. Entre los nuevos elementos de incrustación video y audio; Entre los nuevos elementos interactivos: details, datagrid y command.
Una de las características que define a la versión 5 es que sus desarrolladores han intentado que las novedades no sean tantas como para hacer que HTML sea irreconocible ni siquiera para el diseñador más anticuado.
Así por ejemplo, las páginas creadas con HTML 5 funcionarán bien en los navegadores Netscape 4 y Windows Internet Explorer 5.
Aunque existen muchos detalles del HTML 5 aún por discutir, las líneas generales de la nueva versión van aclarándose.
- Artículo completo en The Inquirer.
Usando PHP para backups de Mysql
Aqui presento 2 metodos que uso constantemente para hacer un backup de Mysql :
- Hacer un Backup con un query desde php.
- Hacer un mysqldump usando System().
Hacer el backup desde un query en PHP En este ejemplo usamos SELECT INTO OUTFILE query para crear un backup de una tabla :
$tableName = 'mypet'; include 'closedb.php'; ?> recuperamos el backup con el query LOAD DATA INFILE como este :
$tableName = 'mypet'; include 'closedb.php'; ?> |
Correr mysqldump usando la funcion system() la funcion system() es usada para ejecutar programas externos . Mysql tiene una herramienta para crear backups (mysqldump) la cual podemos usar desde nuestro script php.
$backupFile = $dbname . date("Y-m-d-H-i-s") . '.gz'; ?> |
Namespaces y MySQL Native Driver en PHP 5.3
Para los desarrolladores que ya no pueden seguir esperando más, la próxima versión 5.3 de PHP incluirá varias de las cosas originalmente planeadas para PHP6. Así, PHP 5.3, planeada para mediados de año, espera introducir nuevas e importantes características sin requerir una actualización radical de versiones, cosa que valorarán usuarios y proveedores de hosting.
Y entre todas ellas, quizás la más anticipada sea el soporte de Namespaces, una característica que los mismos usuarios habían comenzado a pedir desde hace casi 2 años. Los Namespaces nos permiten separar clases y demás elementos en espacios distintos de nuestra aplicación, facilitando por lo tanto la modularidad en la misma y evitando conflictos de nombres de funciones y métodos.
Otra novedad es la inclusión de la librería mysqlnd (MySQL Native Driver for PHP). Esta librería, reemplazará la antigua libmysql y ofrecerá muchas ventajas sobre esta. La actual librería, libmysql, fue desarrollada en un principio para C y C++, mientras que mysqlnd ha sido desarrolllada y optimizada para PHP, aprovechando todas las ventajas de la estructura interna del Zend Engine.
El mejor candidato a presidente de EEUU, creado en Internet
La finalidad es comprender puntualmente qué características tendría el aspirante ideal para los votantes. En el sitio pueden cambiar el nombre, la edad, el sexo, la foto y hasta la agenda política del futuro presidente de los Estados Unidos. Una buena maniobra electoral.
viernes, 18 de abril de 2008
Artículos varios sobre PHP
Estuve revisando los artículos que tengo guardados en mi cuenta de Gmail (me auto envío correos y tengo filtros para ir ordenándolos en "Etiquetas") y para que sean de provecho para otros desarrolladores (pues leo y descarto todos los días artículos y manuales) publicaré progresivamente enlaces que considero útiles y de buena calidad:
Nota: aunque no todos hablan exclusivamente sobre PHP5, se aplican sin problemas a todas las versiones, incluyendo la última.
- Introducción a PHP 5
- Un vistazo a PHP5
- PHP4 y PHP5 juntos, pero no revueltos
- FAQ del echo
- Guía de seguridad en PHP (Capítulo primero)
- Libreria ADOdb para PHP
- "Cómo hacer para optimizar PHP"
- Introducción a los Web Services en PHP
- Web Services con PHP
- Web Services: XML-RPC, SOAP, sobre PHP, Perl, y otros conceptos
- Memorias de un aprendiz de PHP
mytop: clon de top para MySQL
mytop es una aplicación para la línea de comandos que ofrece información de MySQL al estilo del comando top de Unix. La información que devuelve está dividida en dos partes, una primera que muestra la información del servidor y otra que mostraría la información que proporciona el ejecutar PROCESS LIST: id, usuario, query, tiempo, host y base de datos.

Funciona para las versiones de MySQL 3.22.x, 3.23.x, y 4.x (no sé si funciona para 5 porque la ultima versión es de febrero del 2007) y se necesita disponer de Perl 5.005, Getopt::Long, DBI y DBD::mysql, y Term::ReadKey para CPAN.
Javapath el camino a seguir
Esto hace que no sea un camino recto, ni con un principio ni final claro. Es un camino, que cada uno puede empezar dónde se encuentre ahora mismo, y que podrá decidir por dónde seguir, pudiendo llegar al mismo fin por distintos caminos. El camino y el ritmo lo pones tú según tus necesidades y disponibilidad.
Esta sección no es un tutorial, sólo es una guía de viaje con lo que en nuestro entender es necesario para ir aprendiendo y avanzando, con ayudas para asegurarte la correcta compresión y la importancia de cada cosa. En esta sección encontrarás:
- Descripción de cada etapa, con su contenido y la explicación de su importancia.
- Prerequisitos (de conocimiento) que deberías cumplir antes de ponerte a aprender algo nuevo.
- Referencias a otros sitios dónde poder encontrar información sobre el tema para estudiar/aprender.
- Pequeña checklist con los conceptos que creemos debes tener claros antes de pasar a la siguiente etapa.
- Posibles etapas por dónde seguir.
Desde aquí
- Programación Orientada a Objetos
- Las plataformas Java
- El lenguaje Java
- Herramientas del programador Java
Árbol
- path
- aop
- buenaspracticas
- certificaciones
- frameworks
- herramientas
- lenguaje
- lenguajes
- metodologias
- P2P
- plataformas
- j2ee
- ejb
- j2eepatterns
- jdo
- jini
- jms
- jpa
- jta
- rmi
- servidores
- web
- ws
- j2me
- j2se
- jcp
- poo
- XML
jueves, 17 de abril de 2008
Googolopoly: el Monopoly de Internet
Resulta que los responsables de Box.net se basaron en este juego para crear el Googolopoly, que acá te ofrecemos listo para imprimir…
Googolopy es un juego donde puedes llegar a dominar el mundo de Internet, incluso si no estás en el tema. La meta del juego es utilizar las acciones de Google para comprar tantas propiedades como puedas sin perder tus reservas o quedarte en ruinas.
En Box.net nos ofrecen un PDF con el tablero, las tarjetas y las instrucciones listos para imprimir, todo listo para imprimir.
Haz clic aquí para ver la página de descarga>>
La gente de Box.net explica cómo surgió la idea: “Aquí pasamos mucho tiempo hablando de lo que sucede en Internet. Con tantos rumores y verdades sobre anuncios de nuevas adquisiciones de productos, Google se lleva gran parte de nuestra atención. En los últimos meses, Google Health, AppEngile, Knol, Android, OpenSocial, Sites, y el rumor de la compra de Skype fueron algunos de los temas más discutidos en nuestro equipo. Así llegamos a la conclusión de que la forma en que Google hace negocios con otras compañías y la forma en que controla la información, la hace cada vez más parecida al monopolio de hace unos años atrás. Sin embargo, es cuestionable si esta posición de poder aporta algo al mundo o no. Bueno, un día nos cansamos de pensar seriamente en esta situación y entre una cosa y otra llegamos a Googolopoly.”
“Como cualquier gran juego de mesa, hay una metáfora muy real sobre lo que está sucediendo… ¿Qué pasará cuando el monstruo de Google se coma todo lo que queda libre en el mundo de la web y esté presente en tu teléfono celular, tu escritorio e incluso controle tu información de salud? A pesar de que sus productos sean excelentes, la amenaza de controlar tanta información es muy seria para ser ignorada.”
12 opciones que debería tener tu hosting
A la hora de seleccionar un hosting, a parte del precio, de los comentarios de otros usuarios, y de las típicas características que ofrecen, nos deberíamos preocupar de 12 cuestiones:
- ¿Puedo crear cualquier número de subdominios?
- Cuando creo un subdominio, ¿puedo acceder al directorio al que apunta?
- ¿Puedo alojar varios dominios?
- ¿Puedo añadir trabajos cron?
- ¿Puedo generar enlaces simbólicos?
- ¿Puedo usar ficheros .htaccess?
- Si el mod_expires está activo, ¿puedo habilitarlo o configurarlo mediante el .htaccess?
- ¿Puedo disponer de un php.ini para cada directorio?
- ¿Puedo usar php_value o php_flag en .httacces?
- ¿Está el mod_gzip o el mod_deflate instalados?
- Si el mod_headers está activo, ¿puedo usarlo en un fichero .htaccess?
- ¿Hay límite de ancho de banda?
martes, 15 de abril de 2008
cuanto vale tu pagina web??
pregunta para los que tienen pagina web,foro y/o blog.
alguna ves se han preguntado cuanto cuesta su pagina web??

pues cyberwire.com se encarga de hacer eso.
esta web mediante unos factores determina el costo que puede tener un sitio
se basa mediante el calculo de tu pagerank , tu alexa, y backlinks en los 2 buscadores mas importantes del mundo: google, yahoo y el resto de la web.
para calcular el valor de una web ve a http://www.cwire.org/website-value-calculator/
posdata: la pagina de la Fundacion Codigo libre Dominicana http://codigolibre.org/ calculada el dia 15 de Abril del 2008, tenia un costo aproximado de:
4,950 dolares. unos 168,000 pesos Dominicanos.
App Engine: corriendo tus aplicaciones web desde Google

Con un entorno de desarrollo totalmente integrado, Google App Engine trae una idea muy simple: que desarrolles y alojes tus aplicaciones web en los servidores de Google, olvidándote de problemas administrativos, de mantenimiento o caídas provocadas por picos de tráfico.
Usando la infraestructura y las APIs de Google, tus aplicaciones web prácticamente “volarán”, teniendo en cuenta que a medida que crezca tu proyecto o el tráfico de tus usuarios no necesitarás ampliar ni reacondicionar un servidor. Conoce qué ventajas te ofrece.
La bomba estalló ayer con un aviso en el blog de Google, donde nos avisan del lanzamiento de esta nueva plataforma de desarrollo y alojamiento.
Con sólo 10.000 vacantes para desarrolladores que testeen el sistema en su fase beta (las cuales se ocuparon en un abrir y cerrar de ojos), Google App Engine comenzó a funcionar, anunciando que la versión definitiva tendrá un costo muy bajo para el servicio que brinda.
El espacio del que dispondremos para almacenar nuestros proyectos será de 500 MB, por ahora, y 200 millones de megaciclos de CPU por día con 10 GB de transferencia diarios.
De acuerdo con Google esto bastará para sitios que sirvan hasta cinco millones de páginas por día.
Algunas ventajas que ofrece Google App Engine:
- Escribe el código una vez y lanza tu aplicación:
Configurar varias máquinas como servidores web y para hosting puede ser muy costoso y tomar mucho tiempo.Google App Engine hace todo esto más fácil, porque proveerá recursos dinámicos de acuerdo a lo que vaya requiriendo cada sitio.Los programadores sólo se preocuparán por escribir el código, Google hará el resto.
- Olvídate de los picos de tráfico:
Cuando una aplicación web se vuelve popular, el marcado incremento de tráfico puede ser demasiado para aplicaciones de cualquier tamaño.Tanto startups como enormes empresas se ven obligadas a reacondicionar la arquitectura de sus bases de datos y sistemas varias veces al año.Con este nuevo servicio podremos pasar de un sólo usuario a un millón, dado que posee una tecnología integrada con Bigtable (la que usa Google) que hace increíblemente más fácil y automático el reescalado de su infraestructura.
- Integración sencilla con otros servicios de Google:
Los desarrolladores que usen Google App Engine tendrán a su disposición (si queren usarla) una serie de APIs que permitirán integrar sus aplicaciones con servicios de mail, cuentas de usuarios, etc, etc, etc.
Primero fue YouTube, que acaparará todo el contenido en sus servidores, y ahora, con Google App Engine, alojarán todas las aplicaciones web del mundo (o casi ^_^). Esto es muy beneficioso para los usuarios, y también para Google.
Haz clic en los siguientes enlaces para:
Apuntarte en la lista de espera para recibir una invitación gratuita al servicio.
Conocer más sobre esta nueva plataforma de desarrollo (en inglés).
10 errores que todo programador debería evitar
A la hora de desarrollar un software se suele pensar mucho en la utilidad o funciones que este llevará a cabo, planeando detenidamente cada paso y pensando en el tipo de usuario al que estará dirigido.
Pero lamentablemente se suelen cometer gruesos errores que se ven reflejados en los programas, teniendo como primeras víctimas a los pobres usuarios. En esta lista de 10 tipos de programas que todos deberían evitar podemos ver algunos de los casos más frustrantes.
10 tipos de programas que todo desarrollador debería evitar crear
- Programas “casi” freewareParecen gratuitos, se instalan sin más en tu PC, pero a la hora de hacer clic en el 90% de sus íconos o herramientas salta ese cartelito de “esta característica está disponible sólo en la versión completa (sí, esa que te cobran).
- Programas con acoplado¿Cómo? ¿entonces no querías ese spyware/malware en tu PC? Vamos, que no es tan grave, sólo unas barras agregadas en tu navegador, un poco de pop ups, publicidad, una página de inicio diferente y una persona mirando todo lo que haces y tienes en la PC, consumiendo más de la mitad de sus recursos.
- El programa decide por tiParecido al anterior, pero un poco más leve. Son esas aplicaciones que deciden por ti que deben iniciarse con Windows, ser el reproductor por defecto de cualquier tipo de archivo, buscar actualizaciones en el peor momento, configurar el firewall automáticamente, etc.
- Corre, Forrest, corre Algunos versiones de prueba parecen no querer que las pruebes. Minuto a minuto, con cada vez que los ejecutes estarás más cerca de la deadline.
- FrankesteinAlgunos programadores han olvidado la existencia de algo llamado “diseño” ^_^. La aplicación puede ser funcional, pero da “cosa” usarla, por su poca estética y sus problemas de accesibilidad.
- Jugando a las escondidasEste grupo se distingue también por su interfaz, pero no según su apariencia, sino su utilidad. Muchas de sus opciones/funciones se encuentran completamente escondidas con alevosía, mala fe y premeditación.Menús dentro de menús, cuadros de opciones dentro de otros, botones poco claros o fuera de sitio y atajos de teclado no documentados son los principales métodos de sembrar el terror.
- Una gran familiaNecesitas veinte programas para resolver una sóla cosa. Parece ilógico, pero lo vemos todos los días con las llamadas “suites”, que ocupan cada vez más espacio y funcionan cada vez más lento.
- “Yo hablar spanglish“Algunas versiones en español se entienden mejor en chino, parece como si las hubieran pasado por el traductor de Google. Y no pretendas manejar un programa en Inglés si eres experto en su versión en español. Es como pasar de Corel a Photoshop.
- Instalación “atendida”Aún hoy vemos programas que para instalarse requieren que demos 720 veces al botón de “siguiente”, creemos directorios que no se pueden crear desde el propio instalador, etc, etc, etc.
- “Hago de todo, pero como yo quiero”Hay aplicaciones que nos permiten hacer lo que buscamos, por ejemplo, convertir un video QuickTime a formato AVI. Eso sí, el tamaño, resolución, color, sonido, etc, etc, etc, son fijos e inamovibles.
Bueno, no todos los programas son así, pero seguramente les ha pasado encontrarse con varios de estos casos. ¡A no cometer los mismos errores a la hora de programar!
Wikipedia necesita 5 millones de dólares para seguir online
Esta declaración desató la polémica entre aquellos que piensan que es una suma excesiva, que con mucho menos se pueden comprar los servidores, pagar a los editores, etc, y que piden esto para poder dejar de trabajar para el resto de su vida. ¿Tú qué piensas?
lunes, 14 de abril de 2008
Consejos para optimizar MySQL
Buenos consejos para optimizar MySQL, ordenados por distintas categorías.
Queries
- Usa EXPLAIN para comprender la ejecución de la query
- Usa Slow Query Log
- No uses DISNTINCT cuando usas o puedes usar GROUP BY
- Crea INSERT o REPLACE en procesos batch y usa LOAD DATA antes que INSERT
- LIMIT m,n no es tan rápido como parece
- No uses ORDER BY RAND() si tienes más de dos mil registros
- Usa SQL_NO_CACHE cuando selecciones datos que se actualizan con frecuencia o son abundantes
- Evita usar caracteres especiales en los LIKE
- Evita usar subconsultas correlacionadas en el SELECT y el WHERE
- No hagas comparaciones calculadas
- ORDER BY y LIMIT funcionan mejor con
- No pongas text/blobs en los resultados si no vas a necesitarlos
- Subqueries en el FROM pueden ser útiles para recuperar BLOBs sin necesidad de ordenarlos. Si haces un join de una tabla consigo misma, puede ser bueno si en la primera obtienes el indice y en segunda obtienes el resto de los datos.
- ALTER TABLE ... ORDER BY puede tomar los datos ordenados cronologicamente y reordenarlos mediante un campo diferente, esto podría hacer que las consultas vayan más rapidas por ese campo, aunque quizás fuera necesario que estuviera en el índice.
- Es bueno saber cuando dividir una query compleja en la unión de otras más pequeñas
- Elimina pequeñas cuentas si puedes
- Haz queries similares para que el cache las use
- Usa estándares
- No uses características deprecated
- Cambia a OR en índices de múltiples campos para que la UNION mejore la velocidad (> mysql 5.0)
- No uses COUNT (*) en tablas Innodb para cada búsqueda. Para ello deberías usar SQL_CALC_FOUND_ROWS y SELECT FOUND_ROWS()
- Usa INSERT ... ON DUPLICATE KEY update (INSERT IGNORE) para evitar el SELECT
Escalado
- Usa benchmarking
- Aisla las cargas de trabajo, no dejes que las tareas administrativas interfieran en el rendimiento (por ejemplo, backups)
- Testea en vez de hacer debug
- A la vez que los datos crecen los índices cambian. Haz tu esquema tan modular como tu código.
Rendimiento de red
- Minimiza el tráfico recuperando solo lo que necesitas.
- Accede directamente a la paginación con LIMIT no recuperando los anteriores.
- No uses SELECT *
- No uses muchas queries rápidas y una algo más compleja puede ser más eficiente.
Mejoras en el sistema operativo
- Usa particiones en los datos
- Manten el servidor tan limpio como sea posible
- Crea un entorno de test
Servidor MySQL
- innodb_flush_commit=0 puede ayidar en el retraso del slave
- Optimiza los tipos de datos, se consistente. Usa PROCEDURE ANALYSE() para ayudarte a determinar el tamaño de los datos que necesitas.
- Si puedes comprime text y blobs
- Comprime datos estáticos
- No hagas backup de datos estáticos con frecuencia
- Activa e incrementa el cache de las queries y el budder si es apropiado
- Comprueba SHOW STATUS y SHOW VARIABLES
- Defragmenta tablas, reconstruye índices, haz mantenimiento
- Aumenta myisam_sort_buffer_size para optimizar inserta largos
Estos son los que me han parecido más interesantes, el resto los podéis encontrar en:
sábado, 12 de abril de 2008
Oracle creará un driver open source para PHP
A parte de la casi compra de Bea por parte de Oracle (sería una buena noticia para los que desarrollen con Weblogic), nos enteramos de una gran noticia para los desarrolladores de PHP, y es que Oracle contribuye con un driver PHP open source para su OCI8. Este driver nos permite acceder a las características que nos ofrece la base de datos de Oracle, pudiendo así disponer del pool de conexiones, entre otras cosas.
Uno de las prioridades de Oracle es hacerse un hueco en la web2.0, para lo cual en colaboración de Zend pretende sacar este driver para así poder realizar aplicaciones que necesiten la robustez de la base de datos Oracle.
Consejos para escribir menos código PHP
Escribir menos código puede suponer dos mejoras en nuestra aplicación: código más limpio y fácil de seguir, y código más eficiente.
Usar operadores lógicos (or y and) en vez de if
Si queremos ejecutar una instrucción dependiendo del resultado booleano de una instrucción anterior, como por ejemplo:
$status = fwrite($h, 'texto');if (!$status) {log('Error al escribir');}
Podremos hacerlo de la siguiente manera:
fwrite($h, 'texto') or log('Error al escribir');
Uso del operador ternario
Cuando queremos asignar un valor a una variable dependiendo del resultado de una condición:
$var = $ok? 'Correcto' : 'Falso';
Usar for antes que while
Mientras que con el while sería:
$i = 0;while ($i <>$var[] = $aux[$i];$i += 2;}
Con el for sería así:
for ($i = 0; $i <>
Uso de funciones por referencia
Cuando una función nos devuelve un array, no es imposible acceder directamente al contenido del array:
$ext = pathinfo('file.png')['extension'];// Parse error: syntax error, unexpected '[' in ... on line ...
Para evitar este error podemos crearnos un juego de funciones como estas:
// Devuelve la referencia al objetofunction &r($v) { return $v; }// Devuelve la posición del arrayfunction &a(&$a, $i) { return $a[$i]; }
Y por último un par de consejos: intenta conocer las funciones de PHP, hay muchas que harán justo lo que tu necesitas, por lo que no tendrás que implementarlo. Antes de escribir más código para que se lea con facilidad, añade un comentario explicativo.
viernes, 11 de abril de 2008
Evolucion Mario Link y Donkey Kong
aca les dejo una imagen que me encontre en internet que me llamo la atencion, es sobre la evolucion de mario bro , zelda y don king kong, 3 personajes muy famosos de nintendo


Guía (ISC)² para Contratar Profesionales en Seguridad Informática
(ISC)² ha publicado una guía gratuita para ayudar en la tarea de contratar profesionales en seguridad informática.
Si sabemos utilizar esta guía podremos saber que es lo que piden las personas encargadas de los “Recursos Humanos” en una empresa y mejorar o fortificar aquellos requisitos que no tenemos muy fuertes.

Excelente guía muy útil tanto para quien contrata como para quien aspira a ser contratado.
Descargar Guía (ISC)² para Contratar Profesionales en Seguridad Informática
los 20 jovenes mas exitosos con internet
aca les dejo la lista de las 20 personas menores de 30 años, que mas dinero han hecho con internet
puesto nombre pagina edad ganancia alexa
| 1 | Mark Zuckerberg | 23 | $700 MIllion | 7 | |||
| 2 | Andrew Gower | Runescape | 28 | $650 MIllion | 388 | ||
| 3 | Blake Ross and David Hyatt | Mozilla | 22 | $120 MIllion | 112 | ||
| 4 | Chad Hurley | Youtube | 30 | $85 MIllion | 3 | ||
| 5 | Angelo Sotira | Deviant ART | 26 | $75 MIllion | 57 | ||
| 6 | John Vechey | PopCap Games | 28 | $60 MIllion | 3914 | ||
| 7 | Alexander Levin | WordPress | 23 | $57 MIllion | 59 | ||
| 8 | Alexander Levin | Image Shack | 23 | $56 MIllion | 36 | ||
| 9 | Jake Nickell | Threadless | 28 | $50 MIllion | 4,275 | ||
| 10 | Sean Belnick | Biz Chair | 20 | $42 MIllion | 72,086 | ||
| 11 | Kevin Rose | Digg | 30 | $31 MIllion | 117 | ||
| 12 | Robert Small | MiniClips | 24 | $23 MIllion | 168 | ||
| 13 | Ryan Block | Engadget | 25 | $20 MIllion | 659 | ||
| 14 | Aodhan Cullen | Stat Counter | 24 | $18 MIllion | 205 | ||
| 15 | Tom Fulp | Newgrounds | 29 | $15 MIllion | 422 | ||
| 16 | Rishi Kacker and Matt Pauker | Voltage | 24 | $12 MIllion | 67,217 | ||
| 17 | Markus Frind | Plenty Of Fish | 29 | $10 MIllion | 796 | ||
| 18 | Catherine and David Cook | My Year Book | 17 & 19 | $10 MIllion | 1,432 | ||
| 19 | Fredrik Neij | The Pirate Bay | 28 | $10 MIllion | 166 | ||
| 20 | DAVID LEVICH | Iced Out Gear | 25 | $10 MIllion | 51,198 | ||
| 21 | David Hauser & Siamak Taghaddos | GotvMail | 24 | $8 MIllion | 55,057 | ||
| 22 | Jermaine Griggs | Hear and Play | 23 | $5 MIllion | 45,805 | ||
| 23 | Jay Westerdal | Domain Tools | 29 | $5 MIllion | 488 | ||
| 24 | Ashley Qualls | What Ever Life | 17 | $3 MIllion | 5,697 | ||
| 25 | Mario Lavandeira | Perez Hilton | 29 | $3 MIllion | 840 | ||
| 26 | Ben Way | Rain Makers | 27 | $2.2 MIllion | 24,641 | ||
| 27 | Lauris Liberts | Frype | 25 | $2 MIllion | 35,040 | ||
| 28 | Alex Tew | Million Dollar Homepage | 22 | $1.6 MIllion | 47,200 | ||
| 29 | Rob Benwell | Blogging to the Bank | 23 | $1.2 MIllion | 57,123 | ||
| 30 | Matt Wegrzyn | Bodis | 19 | $1 MIllion | 18,973 |
iconspedia, iconos para todos
ya salio firefox 2.0.0.13

el pasado 25 de marzo salio firefox 2.0.0.13
las notas de lanzamiento y los cambios nuevos los pueden ver haciendo click aqui
con nuevas actulizaciones de seguridad que pueden ver aqui
aca les dejo unas imagenes interesantes que encontre de firefox:
el auto firefox:
http://www.bioxd.com/wp-content/uploads/2007/09/firefox_car.jpg
el firefox humano (xD)
http://www.davinxi.net/wp-content/uploads/2006/12/real-firefox.jpg
asi quiero mi cpu:

http://asecsoporte.files.wordpress.com/2007/10/firefox-alienware.jpg
asi quiero que sea mi novia (tipo geek):
http://www.cattlegrid.info/images/get-firefox.jpg
mooColorFinder, extrayendo los colores de una web
Ya sea por inspiración o para tomar de referencia, los diseñadores estamos constantemente observando otros sitios web, viendo nuevas ideas, estilos, tipografías y colores.
Justamente, la paleta de colores es muy importante en el diseño global de un sitio. Tanto es así que la gente de ArtViper ideó mooColorFinder, una herramienta online para conocer exactamente cuáles son los colores que se utilizan en cada sitio.
¿Cómo lo hacen? Husmeando en los CSS, incluso cuando el CSS hace referencia a otros CSS mooColorFinder se encarga de encontrar todos los colores. ¡Funciona en el 99% de los sitios! La única contra es que muestra TODOS los colores que figuran en el código, pero en la práctica hay algunos que no se usan…

¡Haz clic aquí para probar mooColorFinder!
Sólo debes ingresar la URL en el espacio blanco y aceptar.
Además de mooColorFinder, los muchachos de ArtViper nos ofrecen un código para incluir en nuestro sitio web que genera una nube de colores. Lo puedes usar si tienes una página dinámica como php. Sólo debes llamar a la nube así:
$content = file_get_contents("
http://www.artviper.net/colorfinder/colorreader.php?
domain=YOURDOMAIN&width=xxx"); echo $content;
11 maneras de volverte un diseñador web reconocido11 maneras de volverte un diseñador web reconocido
- Enviar tus diseños a galerías CSS
Las galerías CSS muestran diseños de alto nivel, puedes enviar el tuyo para que puedan considerar su inclusión. Las más importantes son (CSS Beauty, CSS Vault, CSS Drive, etc.), páginas que tienen mucha visibilidad. Además hay un gran número de galerías especializadas como Light on Dark, eduStyle, No Resolution, y Horizontal Way.
Nota del traductor (www.nerv.es): Una que suelo visitar con frecuencia y que me gusta mucho es WebCreme. - Empieza un blog
Como diseñador, mantener un blog puede ser una excelente manera de aumentar tu visibilidad. Las entradas del blog te darán la posibilidad de compartir tus conocimientos con los lectores, fomentar las visitas a tu web, incrementar el tráfico de los motores de búsqueda, e incluso puedes usar el blog para promocionar tus servicios y mostrar tus últimos proyectos. Escribir y mantener un blog lleva tiempo, pero te darás cuenta que la visibilidad adicional que proporciona vale la pena. - Regala plantillas para webs o para blogs
Mediante la creación de plantillas web, o plantillas para blogs puedes mostrar la calidad de tu trabajo y además proporcionar algo de contenido libre. Por supuesto, tu objetivo como diseñador es obtener ingresos, por lo que puede que tengas la impresión que regalar tus diseños no sea una buena opción. Por el contrario las plantillas web y de blog pueden estar enlazando tu sitio web, lo que hará incrementar la visibilidad de tu página web a través de dichos enlaces, a la vez que mejora el ranking en los buscadores. Además, mas gente te enlazará y te recomendará a otros amigos si la calidad de tus trabajos es buena. En la mayoría de los casos solo regalarás parte de tu trabajo, es entonces cuando puedes vender otras plantillas, temas o diseños personalizados. Muchos diseñadores que regalan temas ganan dinero ofreciendo a los clientes una personalización para su empresa de dicho tema. - Da un diseño gratis a un cliente de alto perfil
Si no tienes en mente hacer trabajo gratuito para incrementar tus ingresos en un futuro, ponte en contacto con alguien de perfil alto, bien situado, y con influencias. Si diseñas gratuitamente la web, o el tema de un blog que esta bien posicionado y con mucho tráfico, será una gran fuente de visibilidad para tu trabajo. Un trabajo gratis puede hacer que te vengan 5 o 10 clientes reales. - Participa en concursos de diseño libre
Otra opción para ganar visibilidad es participar en concursos de diseño libre. Puedes participar en el concurso con el diseño de tu web o de tu blog, o puedes patrocinar un concurso para temas para blogs de alto nivel. Esto es muy común en la actualidad para temas premium de Wordpress. El concurso creará gran interés sobre tu trabajo y aumentará el tráfico en tu web. - Actualiza o crea perfiles en sitios web de freelance
Las páginas de freelancers como Elance, Guru, y Sologig ( y hay muchas más ) te permiten crear perfiles como proveedor de servicios y encontrar ofertas de trabajo que otros han publicado. Las personas que buscan servicios podrán encontrar tu perfil y habrá más posibilidades de que se pongan en contacto contigo para ofrecerte un trabajo. - Abrir una comunidad para diseñadores web
Hay varios tipos de comunidades dedicados a los diseñadores web, tales como foros, revistas online, blog multi-autor, etc. Empezando una de estas comunidades puedes tener más visibilidad a otros diseñadores y a los visitantes de estos sitios. - Escribe tutoriales
Escribir tutoriales es una excelente forma de mostrar u compartir tus conocimientos, ayudar a otros, y ganar un poco de visibilidad al mismo tiempo. Hay innumerables sitios donde puedes incluir tus tutoriales, también puedes crear tu propia web de tutoriales. Los que lean los tutoriales te verán como un experto en el tema si estás en condiciones de ayudarles a aprender algo nuevo. - Diseñar y regalar íconos
No hay precisamente escasez de íconos libres en internet, pero los diseñadores siempre estamos interesados en más. Si eres bueno en el diseño de íconos, este puede ser un método excelente para el intercambio de enlaces. - Regala algún menú de navegación en CSS
Los menús de navegación están presentes en la mayoría de sitios web, de modo que siempre hay una necesidad y una demanda de soluciones fáciles. La creación de algunos de estos menús es una buena manera de aportar algo a la comunidad, conseguir enlaces y promocionar tu página web. - Escribir artículos en otras páginas web o blogs
Si bien tener un blog propio es una opción, escribir en los blogs de los demás te ayudará a tener una amplia audiencia. Hay multitud de sitios web y blogs que aceptan artículos externos, incluidos sitios de gran influencia como SitePoint o A List Apart.
Estas son sólo algunas maneras de ganar reconocimiento en el ámbito de la web. ¿Cuáles otras utilizas tú?
GreenSQL, Firewall de código abierto para Bases de Datos

GreenSQL es un cortafuegos diseñado para brindar protección a Bases de Datos, especificamente MySQL frente a ataques del tipo SQL injection. GreenSQL trabaja en modo proxy interviniendo las conexiones a la base de datos y evaluando los comandos SQL que se envían.
Lo que hace la herramienta es evaluar los comandos SQL recibidos, basandose en una lista que podemos definir como sentencias peligrosas para la integridad de nuestra aplicación Web y base de datos, como por ejemplo: DROP, CREATE, ALTER, INSERT, etc.
Además de sus prestaciones la herramienta es distribuida bajo licencia GPL.
GreenSQL cumple su función de Firewall bloqueando inyecciones de comandos utilizados para tareas administrativas de bases de datos. Además calcula el riesgo de cada consulta SQL bloqueando las consultas que comprometan la seguridad del aplicativo Web o base de datos.
La página Web oficial del proyecto ha habilitado una sección demostrativa de la herramienta, en la cual podemos observar la efectividad del cortafuegos. Para acceder al demo solo debemos ingresar a la siguiente URLMás información de GreenSQL
Descargar GreenSQL
Documentación de GreenSQL
Demo de GreenSQL


