Entradas

Mostrando entradas de junio, 2010

Google y el mundial de fútbol

Imagen
No es raro encontrar en Google cuando haces una búsqueda sobre los partidos del mundial de Sudáfrica los datos de los sitios dónde los puedes ver, las últimas noticias e incluso los resultados de los partidos. Esto es un sistema montado por el propio Google sólo para la copa del mundo de 2010 y en él se pueden ver todos los partidos que se emiten cada día y la clasificación de los grupos.Lo que me ha parecido curioso son los resultados que muestra según que buscas, por ejemplo para las búsquedas: partido España, FIFA España, mundial España, copa mundial España, muestra la siguiente imagen:Para la búsqueda España Chile:Y para España vs Chile (nótese como no muestra los lugares dónde se emitirá el partido):¡Interesante!PD: si buscas España solamente o copa España no muestra ningún resultado referente al mundial de fútbol.

Herramientas útiles en enlaces

En realidad tengo estos enlaces perdidos por varios sitios así que los voy a air agrupando por aquí, más que nada para darme un poco de orden y que si a alguien le sirva pues lo puedan utilizar.Proteger los mail to con PHP contra robots.Validar correos electrónicos comparando también el dominio, además comprueba funciones para saber si está en una lista negra. Código de validación completo, se complementa con la página anterior.Otro validador completo, elegir entre uno y otro.Códigos HTML, tabla de caracteres y símbolos.

Ser agradecidos con los bloggers

Imagen
Cuando nos suscribimos a un blog y leemos sus artículos desde nuestro lector de RSS favorito no estamos visitando la página del blog en cuestión pero si podemos ayudarlo de varias maneras, hoy quiero analizar Google Reader y 3 opciones muy útiles que aunque parezcan lo mismo no lo son:La estrella de destacar: esta opción es para ti, para que organices internamente los post que más te gusten, realmente el autor del blog no se va a enterar de esto.La carita sonriente de me gusta: aquí si se entera el blogger, esto es para él, para que le digas que su artículo ha sido bueno, para darle ánimos a seguir escribiendo.Compartir: esto es para todos, para ti porque lo compartes con tus amigos, para el blogger porque le das publicidad a su artículo y para tus amigos porque se van a beneficiar de lo que has puesto.Bueno después de esto espero que lo uséis ¡no es más que un click!

Errores de herencia en PHP5

Hoy he descubierto que en PHP si tienes una clase abstracta esta clase no puede heredar de ninguna otra. Lo más gracioso es que en la versión 5.2.6 que es la que utilizo no muestra ningún error específico lo único que dice PHP es que no encuentra la clase en cuestión.¿Por qué una clase abstracta no puede heredar de otra?¿Por qué PHP no permite la herencia múltiple?¿Por qué PHP no permite el polimorfismo?

Error con la librería de SSH2 en PHP

Si has instalado la librería de PECL SSH2 y te ha dado el siguiente error:Unable to load php_ssh2.dllLa solución es copiar desde el paquete de PHP el archivo libeay32.dll en el directorio bin del directorio de instalación de Apache. Parece que php_ssh2.dll necesita una versión más reciente de la DLL del que viene incluido en Apache, y aunque lo copies a C: \ WINDOWS o C: \ WINDOWS \ System32 siempre intenta cargarlo desde el directorio bin de Apache.Esto es un bug reconocido de PECL #11058.

Siguiendo con Google

Imagen
En varios artículos de este blog he hablado y analizado las optimizaciones de Google, fundamentalmente las de su página principal, estas, supongo, para no sobrecargar tanto sus servidores con las millones de visitas diarias y de esta manera entregar al usuario una página totalmente optimizada.Pues pensando en eso hay una cifra que me gustaría conocer ¿cuanto ha ganado Google con las barras multifunción de los navegadores? Puede que parezca una tontería pero antes de existir estas yo visitaba la home de Google varias veces al día y ahora si lo hago una es un milagro.Realmente me he dado cuenta de esto porque no me entero de los cambios en su home hasta pasadas unas horas e incluso días.Muy buena estrategia.¿Alguien tiene alguna teoría de la conspiración para las imágenes de fondo de la home? esto claramente penaliza el rendimiento pero imagino que sea por una causa mayor como la que he escuchado por ahí de adaptarnos a que su home sea nuestro escritorio.

Firmar aplicaciones para symbian

Imagen
He modificado varios tutoriales de internet para firmar aplicaciones en móviles con SO Symbian, añadiéndole algunas funcionalidades como:firmar las aplicaciones con extensión SIS y SISXfirmar aplicaciones symbian en nuestro propio PCP y no de manera onlinecorrecciones a la hora de introducir el IMEI en la web de la OPDA para evitar errores de Wrong IMEI, please check carefully!Este tutorial lo he realizado en el siguiente PDF: Instalar aplicación en móviles symbian y cuenta con las siguientes partes:configuración previa del móvilsolicitar un certificado válido en la web en inglés de la OPDAobtener el IMEI de tú teléfono y como validarlo y saber si es correctosolicitar el certificadofirmar las aplicaciones utilizando SignSISTool y signsis.exeEspero que os sirva de utilizad, yo le he probado en mi Samsung Omnia HD I8910 y funciona perfecto.Nota Importante: los errores corregidos con este tutorial a la hora de instalar las aplicaciones son:Certificado CaducadoNo se puede Instalar aplica…

Bug en firefox al ordenar arrays

Imagen
Si tenemos el siguiente código javascript:var x;
var mycars = new Array();
mycars[2] = "Saab";
mycars[1] = "Volvo";
mycars[0] = "BMW";

for (x in mycars)
{
document.write(mycars[x] + "<br />");
}




Esto sacaría por pantalla lo siguiente:

BMW – Volvo – Saab

Sin embargo si la diferencia de índices es muy grande firefox interpreta los índices como cadenas (el resto de navegadores los continúa ordenando bien), por ejemplo si fuera:


var mycars = new Array();
mycars[1500] = "Saab";
mycars[30] = "Volvo";
mycars[20] = "BMW";




En vez de sacar por pantalla BMW – Volvo – Saab sacaría Saab – Volvo – BMW

¡Curioso!

Frameworks vs frameworks

Imagen
Los frameworks han llegado al mundo de la programación para quedarse, por su facilidad de uso y el poco conocimiento que se necesita para implementarlos, esto sumado a la gran cantidad de material que se puede encontrar de cada uno de ellos. Existen distintos tipos pero yo los separo en dos grandes categorías los del lado cliente y los del lado servidor. La única pega de estos es el consumo de recursos, al ser procedimientos estándar y estar validados para las más disímiles plataformas el consumo de recursos es mucho más elevado que un software a medida, es por ello que debemos mirar si nos compensa o no utilizarlos.¿Por qué no utilizo un framework para PHP?Pues básicamente por el consumo de recursos, el hosting es mucho más elevado para servidores potentes e implementar un framework me llevaría casi el mismo tiempo (por el estudio que hay que hacer sobre como funciona) que programar funciones ya conocidas por mí y muchos más eficientes en mi entorno.¿Por qué utilizo un framework java…

Librerías útiles en javascript

Imagen
Aparte de jquery que es el framework que utilizo por excelencia tengo algunas librerías imprescindibles para javascript: PHPjs: php.js es un proyecto de código abierto que codifica las funciones PHP de alto nivel para las plataformas Javascript de bajo nivel, tales como navegadores web, extensiones del navegador (Mozilla / Firefox, Chrome), AIR y los motores V8 como SSJS (node.js, v8cgi) , Rhino y SpiderMonkey (CouchDB) JavaScript Time Picker: el primer selector de tiempo que utiliza una interfaz muy fácil de arrastrar y soltar. Con su diseño único, cualquier persona puede arrastrar los minutos o las horas de forma independiente a la hora seleccionar un horario concreto. (modificándolo se puede conseguir un excelente reloj analógico con javascript) gChart: es una librería independiente para crear gráficas con javascript

Fechas, valor por defecto en MySQL

Imagen
Los tipos de datos datetime, date y timestamp en mysql son muy utilizados y tiene un rango de validez entre el 1 de enero del año 1000 y el 31 de diciembre del 9999.Admiten muchos tipos de formatos a la hora de insertar datos, cadenas con distintos separadores y valores numéricos que representen una fecha válida como YYYYMMDDHHIISS.En concreto el tipo de dato timestamp puede tener valores por defecto como CURRENT_TIMESTAMP y también es aplicable al realizar un update sobre la fila con el evento ON CHANGE.Como nota importante de los valores por defecto en timestamp es que no se admiten 2 o más columnas con este valor en mysql, ya sean en la cláusula default o en la cláusula on update, esto provocaría un error del tipo:ERROR: Error 1293: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clauseEjemplo:CREATETABLE t (
ts TIMESTAMP
DEFAULTCURRENT_TIMESTAMP
ONUPDATECURRENT_TIMESTAMP
);

Convertir fechas de excel a PHP

Imagen
Un archivo de Microsoft Excel almacena las fechas en un formato numérico que corresponde a los días desde el 1 de enero de 1900, teniendo en cuenta que php las fechas las guarda a partir de 1970 y en segundos pues es un poco engorroso convertir una fecha de un formato a otro, para ello PHPExcel de codeplex tiene una clase llamada PHPExcel_Shared_Date con una función estática que hace esta operación, la función como tal se llama ExcelToPHP y devuelve la cantidad de segundos correspondientes a la fecha en PHP.Podemos utilizarla de la siguiente forma:// leo el archivo excel
$objPHPExcel = HPExcel_IOFactory::load('prueba.xlsx');
// utilizo como activa la hoja 1
$objPHPExcel->setActiveSheetIndex(0);
$objWorksheet = $objPHPExcel->getActiveSheet();
// obtengo el valor de la celda
$fecha_excel = objWorksheet->getCell('A1')->getValue();
// utilizo la función y obtengo el timestamp
$timestamp = PHPExcel_Shared_Date::ExcelToPHP($fecha);
$fecha_php = date("Y-m-d H:i:s&qu…

Mis plugins para jQuery

Desde hace mucho vengo utilizando las librerías de jquery y jquery ui por su facilidad de uso y sobre todo por el respiro que me dan a la hora de programar con javascript pues me garantizan la compatibilidad con los navegadores del cliente. Otra de las razones es el innumerable número de plugins que están disponibles para este framework de javascript, yo utilizo los siguientes en mayor o menor medida:jQuery Alert Dialogs: Este plugin jQuery pretende sustituir la funcionalidad básica proporcionada por el estándar de JavaScript para las funciones de alert() confirm() y prompt(). jQuery BlockUI: El plugin de jQuery BlockUI permite simular el comportamiento síncrono utilizando AJAX, sin bloquear el navegador. Cuando se activa, se evitará la actividad del usuario con la página (o parte de la página) hasta que se desactive. BlockUI da la apariencia y el comportamiento de bloqueo a la interacción del usuario. jQuery DataTables: es un plug-in muy flexible para añadir controles avanzados de inte…