Categorías Php
General & Php & Programación 20 Jun 2008 10:30 am
5 Invitaciones especiales a Dreamhost (Servidores para PHP y RoR)
Me ha llegado un correo de mi servidor (donde tengo alojado el blog entre otras cosas), donde me cuentan que me ofrecen 5 invitaciones especiales (Dreamhost invitations) para contratar los servicios de Dreamhost. Esto no quiere decir que sea gratis el servidor, simplemente que te ofrecen mucho o más, y en algunos casos por mucho menos, es decir:
Ahora te ofrecen:
- 500 GB Disco duro
- 5 TB Transferencia mensual
- Base de datos ilimitadas
- Un dominio gratis
- Ilimitadas cuentas de correo
- Soporte para PHP4/PHP5/Ruby on Rails/CGI, etc..
- SSH
- Sistema Operativo: Debian
- Si en 97 días no estás satisfecho te devuelven el dinero
- etc… Aquí tienes más detalles: Dreamhost
Con estas invitaciones conseguirás además:
- 2 TeraBytes de disco duro extra, es decir en total 2500GB
- 20 TeraBytes extras de ancho de banda mensual
- Descuento de 150$ si contratas por 5 años o 200$ menos si lo descuentas por 10 años.
Con estos códigos la verdad es que te haces con un servidor impresionante, y al estar el precio en dólares encima lo haces a muy buen precio, por lo que si buscas un buen servidor para correr tus aplicaciones bajo PHP o Ruby on Rails, sin duda es una buena oportunidad. Pues lo dicho, que por lo que cuentan es son códigos únicos por lo que si alguien está interesado que me deje alguna respuesta o contacte conmigo en el formulario de contacto (arriba a la derecha, encima de la imagen del blog) y le daré uno de los códigos, así que nada los 5 2 más rápidos tienen premio :-P.
Actualizo: Como ya se han interesado tres personas, os dejo abiertamente los dos códigos que me restan, al ser únicos si uno no os funciona os recomiendo que probéis el otro, nunca se sabe :-). Eso sí, si tenéis pensado hacer uso de esta invitación para algún proyecto no muy legal, advertiros que DreamHost os cerrará el servidor y no os devolverá el dinero, por lo que hacerlo para cosas legales
- 364704908142
- 882455904592
Recuerdo también que una vez no queden ya más códigos disponibles, si ponéis al código AHORRA a la hora de adquirir un servidor, os podeis ahorráis 97$ del precio total.
Tags: dreamhost, invitaciones, php, ror
Php & Programación 15 Jun 2008 08:42 pm
¿Cómo optimizar las consultas sobre MySQL?
Una de las taréas más complicadas es la optimización, ya que requiere un conocimiento completo sobre el sistema que se quiere optimizar. Por eso, a continuación os dejo 10 artículos [ENG] donde se explica y se dan diversos ejemplos de distintas formas de optimizar MySQL y las consultas que se realizan sobre ella:
- Identifying slow MySQL queries
- MySQL & PHP Performance Optimization Tips
- MySQL Presentations: Optimizing MySQL
- MySQL 5 Optimization and Tuning Guide
- Survive heavy traffic with your Web server
- Tools to use for MySQL Performance - Peter Zaitsev
- MySQL Queries Optimization (video) - Peter Zaitsev
- Table Design and MySQL Index Details
- MySQL Reference Manual: Optimization Overview
- MySQL Reference Manual: The MySQL Query Cache
Vía: PHP::Impact
Tags: base de datos, db, mysql, optimizacion, sql
General & Php & Programación 29 May 2008 10:05 am
Internet in 2035
Ayer martes asistimos a la conferencia que dió Vint Cerf (vicepresidente de Google, Premio Príncipe de Asturias 2002, considerado uno de los padre de Internet, etc..)en la Universidad de Murcia. En un principio la temática era el Software Libre, pero la conferencia empezó con un futurista Internet in 2035.

Y la verdad es que me encantó, no sólo por la temática (que ahora comentaré), si no por lo bien que lo comunicó y por lo cercano que estuvo (al final nos hicimos unas fotos con él).
Empezó la conferencia dando estadísticas hacerca del uso de Internet en el mundo hoy en día, su penetración, número de dispositivos capaces de acceder a Internet, etc. Y también nos dió datos de lo que el predice (junto con estadísticas de la ONU) que pasará en los próximos 50 años, tales como el aumento de la población, la penetración que tendrá esta dentro de 50 años, así como el número de dispositivos que tendrían acceso. Más o menos preveía que para una población de unos 9 mil millones de personas (previsión media) habría unos 10 mil millones de teléfonos móviles y unos 12 mil millones de aparatos capaces de acceder a Internet, evidentemente la porporción por habitante crecía si hablamos de paises desarrollados o subdesarrollados.
Comentó también como broma, que ahora se están migrando las IPs de IPv4 a IPv6 (que dentro de pocos años sólo habrán IPs de esta versión), y que entona el “Mea Culpa”, ya que cuando en el 1979 (creo recordar) eligió los actuales 32 bits de las direcciones IPs, pensó que para un experimento (recordemos el uso militar que en un principio tenía Internet), los 2.2 mil millones de direcciones distintas habría de sobra.
A continuación nos puso el ejemplo del frigorífico del futuro, capaz de saber la cantidad de comida que hay dentro de él. Así, cuando llegues a casa, dependiendo de lo que quede en la nevera, consultará en Internet recetas que contengan dichos ingredientes y te lo presentará. Otro caso de uso sería cuando vayas al supermercado, te llegará un sms al móvil diciendo: Hola soy el frigorífico, no te olvides de comprar leche. Y por último, cuando vayas al médigo y te diga que tienes sobrepeso, cuando llegues a casa el frigorífico te mostrará dieta a seguir, ya que se conectó a Internet y vió que el médico te había puesto el sobrepeso en su informe.
Hacia el final de la charla habló de las comunicaciones InterPlanetarias (InterPT), por ejemplo la comunicación de robots en Marte con la Tierra, y nos contó que quisieron establecer una conexión TPC/IP pero que era imposible dado las distancias “astronómicas” de las que hablamos, ya que la emisión de radio de Marte a la Tierra tardan sobre 15 minutos, y claro, no es posible mantener una cominicación en la que la emisión y la respuesta tarde tanto tiempo. También tenían el problema de que los planetas tienen la mala costumbre de rotar, por lo que cuando permanecen en el lado oculto, la conexión se interrumpe. Por ello, apostaron por una comicación como la de los correos electrónicos, es decir, tú mandas el mensaje (comunicación) y no sabes si el receptor estará on-line y podrá leerlo, por lo que se queda almacenado hasta que el receptor pueda abrirlo, y lo mismo con la respuesta. Por último, habló también que en el futuro cuando se vaya a otro planeta, lo que harán será portar los mismos procedimientos que están haciendo en Marte.
Tags: conferencia, internet, vint cerf
Php & Programación 23 May 2008 05:35 pm
Vint Cerf dará una conferencia en Murcia
Directamente os pongo el correo que han enviado desde el Vicerrectorado de la Universidad de Murcia:
Tenemos el placer de comunicaros que el próximo miércoles *28 de mayo* visitará nuestra universidad VINGTON G. CERF, Vicepresidente y jefe ejecutivo de Google y Premio Príncipe de Asturias a las “Comunicaciones y humanidades” en el año 2002. Durante esta visita impartirá la conferencia “Una aproximación al software libre” a las *12:00 horas* en el Salón de Actos de la *Facultad de Informática*. Posteriormente se trasladará al Edificio de *Atica* para la presentación de 2 experiencias de software libre de la Universidad de Murcia. Quedáis todos invitados.
Sin duda todo un acontecimiento que no me pienso perder ![]()
Php & Programación 22 May 2008 11:50 am
Migración de datos
Este artículo se basa en una traducción (y transcripción) de un podcast de PHP Abstract, el cual explica de manera sencilla y a través de un ejemplo, como migrar o importar datos de una supuesta table de empleados a otra tabla existente de clientes, la cual viene con otro formato distinto.
Esta es la tabla de empleados (Employee), el origen de datos:
+-----------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-----------------------+------+-----+---------+----------------+ | id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment | | Name | varchar(255) | YES | | NULL | | | Dept | varchar(255) | YES | | NULL | | | Join_Date | varchar(50) | YES | | NULL | | | Email | varchar(255) | YES | | NULL | | | Comments | text | YES | | NULL | | +-----------+-----------------------+------+-----+---------+----------------+
Mientras que el sistema al que se quiere migrar es la siguiente tabla, más una tabla auxiliar para facilitar las búsquedas de los departamentos:
+---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ | employee_id | int(11) | NO | PRI | NULL | auto_increment | | first_name | varchar(50) | YES | | NULL | | | last_name | varchar(50) | YES | | NULL | | | department_id | int(11) | YES | | NULL | | | join_date | datetime | YES | | NULL | | | email | varchar(255) | YES | | NULL | | | comments | text | YES | | NULL | | +---------------+--------------+------+-----+---------+----------------+ +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ | department_id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | +---------------+--------------+------+-----+---------+----------------+
De la tabla original, debemos hacer las siguientes transformaciones:
- El id se transforma en employee_id y el tipo de dato cambia ligeramente
- El Name se seàra en dos, first_name y last_name
- El campo Dept se necesita sacar fuera a una tabla de búsqueda y se crea el department_id en esta tabla
- El campo Join_date tiene que cambiar su tipo de dato
- Y los campos Email and Comments permanecen inmutables
Convertir el tipo de dato - Employee ID
Es bastante sencillo, simplemente se añade una nueva columna dentro de la tabla Employees y luego se cargan los datos
alter table Employees add column employee_id int; update Employees set employee_id = id;
Separando Strings - El campo Name
Por suerte, los datos que se almacenan en este campo tienen el nombre y el apellido separados por un espacio. Para separar el nombre y el apellido empezaremos con la siguiente sentencia select:
select Name , substring_index(Name,' ',1) as first_name, substring_index(substring_index(Name,' ',2),' ',-1) as last_name from Employees limit 10; +--------------------+------------+-------------+ | Name | first_name | last_name | +--------------------+------------+-------------+ | Anika Lott | Anika | Lott | | Jenette Gibson | Jenette | Gibson | | Lacy Barton | Lacy | Barton | | Noelani Peck | Noelani | Peck | | Lacy Prince | Lacy | Prince | | Glenna Rowland | Glenna | Rowland | | Isabella Hall | Isabella | Hall | | Hadley Fitzpatrick | Hadley | Fitzpatrick | | Elaine Steele | Elaine | Steele | | Kathleen Davidson | Kathleen | Davidson | +--------------------+------------+-------------+
Ahora nos toca modificar la tabla con los nuevos campos e ir poniendo los datos en su correspondiente lugar:
alter table Employees add column first_name varchar(50); alter table Employees add column last_name varchar(50); update Employees set first_name = substring_index(Name,' ',1), last_name = substring_index(substring_index(Name,' ',2),' ',-1)
Del tipo string para las Fechas al tipo Fecha real
Tenemos una columna llamada join_date en nuestra tabla Employee, por lo que crearemos otra columna con otro nombre:
alter table Employees add column join_date_formatted datetime;
De nuevo, una sentencia Select primero, y a continuación la conversión con una sentencia Update:
select join_date , str_to_date(join_date, '%m-%d-%y') as machine_date from Employees limit 10; update Employees set join_date_formatted = str_to_date(join_date, '%m-%d-%y');
MySQL por defecto pondrá la hora a la medianoche del día seleccionado.
Datos enumerados (o casi enumerados) pasan a la tabla de búsqueda
En un principio, vamos a echar un vistazo a los datos que contiene la tabla de origen:
select distinct Dept from Employees; +--------------------------+ | Dept | +--------------------------+ | Human Resources | | Research and Development | | Accounts | | Finances | | Quality Assurance | | Accounting | | Tech Support | | LegalPayroll | | QA | | Sales and Marketing | | Customer Service | | Advertising | +--------------------------+
Observando los datos, hay unas cuantas cosas que tenemos que tener en cuenta, como por ejemplo “LegalPayroll” debería ser “Legal and Payroll”, y tenemos también “Accounts” y “Accounting” además de “Quality Assurance” y “QA”, que son de hecho el mismo departamente. Como el conjunto de datos es realmente pequeño, vamos a pasar los datos manualmente a la tabla de búsqueda, junto con un índice.
+---------------+--------------------------+ | department_id | name | +---------------+--------------------------+ | 1 | Human Resources | | 2 | Research and Development | | 3 | Accounting | | 4 | Finances | | 5 | Quality Assurance | | 6 | Tech Support | | 7 | Legal and Payroll | | 8 | Sales and Marketing | | 9 | Customer Service | | 10 | Advertising | +---------------+--------------------------+
A continuación, creamos la nueva columna en la vieja tabla de Employees y vamos dandole las entradas “fáciles”.
alter table Employees add column department_id int;
update Employees set department_id = (select department.department_id
from department where Employees.Dept = department.name);
Echando un vistazo a los registros que no se actualizaron, nos queda todavía cosas para corregir:
select Name, Dept from Employees where department_id is null; +--------------------+--------------+ | Name | Dept | +--------------------+--------------+ | Lacy Barton | Accounts | | Isabella Hall | Accounts | | Kathleen Davidson | Accounts | | Chiquita Rodriguez | LegalPayroll | | Emi Ochoa | LegalPayroll | | Wanda Sullivan | QA | | Yen Wilder | QA | | Echo Hopkins | LegalPayroll | | Germane Stout | Accounts | | Evangeline Oconnor | Accounts | | Hadley Ochoa | QA | | Carly Riley | LegalPayroll | | Destiny Brock | QA | | Mariam Baldwin | Accounts | +--------------------+--------------+ update Employees set department_id = 3 where Dept = "Accounts"; update Employees set department_id = 5 where Dept = "QA"; update Employees set department_id = 7 where Dept = "LegalPayroll";
El paso final
Finalmente insertamos en la tabla employee con todos los nuevos datos preparados y formateados:
insert into employee select id, first_name, last_name, department_id, join_date_formatted, Email, Comments from Employees;
Artículo original: DevZone
Podcast: PHP Abstract
Tags: base de datos, datos, migracion, sql
Php & Programación 17 Apr 2008 10:04 am
PHP para programadores
Zend acaba de sacar un curso para aquellos programadores que, por cualquier motivo, tienen que aprender PHP para desarrollar un proyecto. El curso enseña las bases de PHP, aunque de un modo más rápido, poniendo especial énfasis en las diferencias que hay con respecto a otros lenguajes, para favorecer así el rápido aprendizaje del lenguaje.
Podéis echar un vistazo al curso en: PHP for Experienced Programmers
Tags: curso, php
Php & Programación 26 Mar 2008 06:57 pm
PHP 5.3 será mucho más rápido
Según la lista de correo php.internals, han hecho pruebas con la nueva versión de PHP (5.3) con la actual (5.2). Para ello han comparado el tiempo de carga de diversas de las aplicaciones más usadas de PHP, con los siguientes resultados:
- Drupal un 20% más rápido
- Qdig un 2% más rápido
- typo3 un 30% más rápido
- wordpress un 15% más rápido
- xoops un 10% más rápido
Sin duda es de agradecer que no tan solo ofrezcan mayor funcionalidad y mejoren los diversos bugs, sino que también optimicen el motor de PHP para ofrecer un mayor rendimiento.
Tags: benchmark, php
Php & Programación 17 Mar 2008 04:29 pm
Lanzado Zend Framework 1.5
Hoy es el día que ha salido a la luz la nueva versión de este famoso Framework de desarrollo en PHP. Entre las nuevas funcionalidades, servicios y mejoras que incorpora, se encuentran:
- Forms – Zend Framework tiene soporte para formularios, incluyendo Ajax usando patrones que hace la construcción y el uso de formularios basados en web, mucho más sencillos.
- Diseño y vista – Soporte para Diseño y las mejoras en la vista hacen la implementación “look and feel” con PHP más sencilla que nunca, liberando así a los desarrolladores de tiempo para mantener las vistas de las aplicaciones web por componentes.
- Autentificación LDAP – Zend Framework viene con soporte para la autentificación a través de la tecnología LDAP.
- Motor de búsqueda Lucene – Ahora es posible implementar consultas avanzadas usando comodines, rangos de fechas y búsquedas Fuzzy dentro de una aplicación Zend Framework.
- Soporte extendido de Ajax – Del lado del servidor, Zend Framework soporta Ajax con asistentes de ayuda para automatizar la detección y las respuestas Ajax, haciendo la programación de JavaScript y PHP mucho más sencilla.
- Soporte del juego de carácteres UTF-8 en la creación de documentos Adobe PDF – El soporte de PDF en Zend Framework se ha mejorado con el soporte de este juego de carácteres para idiomas con carácteres no latinos.
- Servicios web Google GData – Significantes mejoras con los servicios de Google Data haciendo así más sencillo construir aplicaciones webs que interactúan con red de las aplicaciones Google. Zend Framework 1.5 soporta la subida y la escritura en Google YouTube.
Para más información: http://devzone.zend.com/article/3270-Zend-Technologies-Releases-Zend-Framework-1.5
Tags: php, zend framework
Php & Programación 14 Mar 2008 10:50 am
Diapositivas de Zend Framework 1.5
En la web de Zend Developer Zone, me he encontrado con un par de presentaciones a modo de diapositivas muy interesantes, seguro que a más de uno le aclaran muchas dudas sobre este gran Framework de desarrollo:
De la presentación en la San Francisco PHP Meetup:
Php & Programación 01 Feb 2008 06:09 pm
Microsoft lanza una OPA contra Yahoo!
Sin duda este es el año de las adquisiciones, ya sean amigables o no. Esta vez Microsoft va a por Yahoo!, al cual le ha ofrecido la nada despreciable suma de 45.000 millones de dólares. De momento Yahoo! se lo está pensando, supongo yo para ver si sacan aún más tajada, pero en caso de que acepten, de esta unión no puede más que salir un monstruo de proporciones bíblicas al cual, Google me temo que poco podrá hacer. En fin, veremos en que acaba todo…
Tags: microsoft, opa, yahoo

