General & Programación 16 Jul 2008 09:30 am

¿Firefox 3 consume menos memoria?

Esa era al menos una de las máximas de esta tercera versión, pero vamos nada más lejos de la realidad, esta mañana abro el navegador y con 3 pestañas (google/gmail/proyecto local) me consume más memoria que el resto de aplicaciones juntas, y si a eso le sumamos que el plugin de Flash va realmente mal (mucho consumo de CPU), la verdad estoy deseando que saquen cuanto antes una actualización que mejore bastante el rendimiento.

Tags: , ,

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: , , ,

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:

  1. Identifying slow MySQL queries
  2. MySQL & PHP Performance Optimization Tips
  3. MySQL Presentations: Optimizing MySQL
  4. MySQL 5 Optimization and Tuning Guide
  5. Survive heavy traffic with your Web server
  6. Tools to use for MySQL Performance - Peter Zaitsev
  7. MySQL Queries Optimization (video) - Peter Zaitsev
  8. Table Design and MySQL Index Details
  9. MySQL Reference Manual: Optimization Overview
  10. MySQL Reference Manual: The MySQL Query Cache

Vía: PHP::Impact

Tags: , , , ,

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: , ,

General 23 May 2008 05:51 pm

Loreena Mckennitt actuará este verano en España

Este año mi cantante favorita vuelve a los escenarios europeos en la gira “Live in Concert European Summer Tour 2008″. Supongo que le encantará España ya que, además de inspiración para varios álbumes, ha tocado en nuestro país en diversas ocasiones y por suerte, esta vez también lo hará y muy repartido además. Os pongo las fechas y lugares de los próximos conciertos en España:

Fecha Ciudad Lugar Comprar entradas
Julio 15 Madrid
Cuartel Conde Duque Comprar Tickets
Julio 16 Malaga
Teatro Cervantes Comprar Tickets
Julio 18 Huelva
Auditorio de la Rabida Por confirmar
Julio 19 Lorca
Castillo de Lorca Comprar Tickets
Julio 20 Barcelona
Poble Espanyol Comprar Tickets
Julio 22 Valencia
Jardines de Viveros Por confirmar
Julio 26 Granada
Palacio de Congresos Comprar Tickets
Julio 27 Alicante
Explanada del Puerto Comprar Tickets
Por confirmar
Bilbao
Por confirmar Por confirmar
Por confirmar
Santiago de Compostela
Por confirmar Por confirmar

Más información en : Quinlan Road

Tags: ,

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 :-)

Tags: , , ,

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: , , ,

General & Linux 01 May 2008 08:24 pm

¿Alguien dijo crisis?

Menuda sorpresa me he llevado cuando me ha llegado un correo de un portal de búsqueda de empleo y he visto los dos puestos que más dinero ofrecían…

Así es, más de 90.000€ brutos anuales por ser dependiente, con una experiencia mínima de un año y con sólo el graduado escolar. Lo normal es decir, nah, es un error, serían 9.000€ brutos en lugar de 90.000€, pues bien, la siguiente oferta es:

Mismo puesto, misma experiencia y sueldo entre 72.000€ y 90.000€, eso si, esto es de otra empresa, por lo que creo que se puede descartar lo del error.

Espero que este mensaje ayude a aquellos niños indecisos que no tengan clara su vocación de futuro, yo como muchos ya no podemos cambiar, pero tú sí puedes ;-)

Tags: , , ,

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: ,

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: ,

Next Page »


mobile phone