sábado, 29 de noviembre de 2008

Aprenda a programar en 10 años


Buen articulo que nos habla sobre todos esos libros que nos venden la idea de que aprenderemos a programar en unos cuantos dias y algunos se atreven ha enseñarnos en unas cuantas horas, tan facil es la computacion???

viernes, 28 de noviembre de 2008

Eres inteligente???

Si realmente eres inteligente, debes demostrarlo.


A continuación encontraras un test mental, el cual debe ser contestado en menos de 15 segundos, y del cual podrás evaluar tu grado de inteligencia.

Si te consideras un 'sabelotodo' que presume de sus conocimientos generales, intenta contestar correctamente las 5 preguntas de este test...Al final de esta página podrás encontrar las respuestas correctas.

1. Algunos meses tienen 30 días, otros 31. ¿Cuantos meses tienen 28 días?

2. Un granjero tiene 17 ovejas. Se le mueren 9. ¿Cuantas ovejas le quedan?

3. Tienes que entrar en una habitación fría y oscura, solo tienes un fósforo. Allí hay una lámpara de aceite, una vela y una hoguera, esperando para ser encendidas. ¿Que encenderías primero?

4. ¿Cuántos animales de cada especie llevo Moisés en el Arca?

5. Si conduces un autobús con 43 personas desde Santiago, paras en Valdivia recoges a 7 personas y bajan 5, en Osorno recoges a 4 mas y bajan 8. Luego al llegar a Puerto Montt, 20 horas después de haber partido..... ¿Como se llama el conductor?





Respuestas:

AHORA COMPARA TUS RESPUESTAS CON LAS CORRECTAS:


1.- 12 meses. Todos los meses tienen 28 días o mas.

2.- 17 ovejas, aunque 9 muertas... pero ovejas al fin y al cabo. Asi que sigue teniendo 17.

3.- Primero encenderías el fósforo... ¿o no?

4.- Ninguno, no era Moisés. El del Arca fue Noe.

5.- Te dije que tú eras el conductor. Luego su nombre era el tuyo ¿En serio tuviste que releerlo para entenderlo?



CALIFICACIÓN:

SI CONTESTASTE 5 BUENAS : INTELIGENTE

SI CONTESTASTE 4 BUENAS : MEDIANAMENTE INTELIGENTE

SI CONTESTASTE 3 BUENAS : NO MUY LISTO

SI CONTESTASTE 2 BUENAS : TONTITO

SI CONTESTASTE 1 BUENA : RE-TONTITO

SI NO CONTESTASTE NI UNA: APTO PARA POLITICO


fuente

jueves, 27 de noviembre de 2008

Metodologia Scrum

Un afectuoso saludo a todos, pues aqui traigo un tema arto interesante :P, de echo ya tenia algun tiempo queriendo escribir sobre esta metodologia pero por X o por Y no lo habia echo, ahora estoy documentando un proyecto en el que presisamente ocupe SCRUM por lo que aprovechando la documentada del marco teorico, me decidi a escribir por fin este post.



SCRUM

Scrum es una metodología ágil de desarrollo de proyectos que toma su nombre y principios de los estudios realizados sobre nuevas prácticas de producción por Hirotaka Takeuchi e Ikujijo Nonaka a mediados de los 80, su objetivo primordial es elevar al máximo la productividad de un equipo. Reduce al máximo la burocracia y actividades no orientadas a producir software que funcione y produce resultados en periodos muy breves de tiempo. Sólo abarca prácticas de gestión sin entrar en las prácticas de desarrollo como puede hacer XP. Más bien delega completamente la responsabilidad de decidir la mejor manera de trabajar para ser lo más productivos posibles.


La forma de trabajar con scrum es por medio de la product backlog y el sprint, la llamada product backlog es una pila (los que no conoscan las pilas imaginen un pastel con muchas capas, el recipiente que lleva al pastel es el contennedor mientras que cada capa de pan o lo que sea es un elemento de la pila) que contiene todas las funcionalidades que deberá tener el sistema, las funcionalidades serán acomodadas en esta de acuerdo a su importancia en el sistema, es decir una funcionalidad primordial se pone en una posición superior a la de una funcionalidad poco trascendente, por otra parte el sprint es un periodo de tiempo calculado, no mayor a 30 días (algunos dicen que hasta 40 dias esta bien, ahora si que va en gustos chato :P) hábiles en el cual se desarrollaran ciertas funcionalidades del sistema que son tomadas de la product backlog, estas funcionalidades formaran una nueva pila a la que se le llama sprint backlog, cada funcionalidad finalizada pasara a una lista de nombre “incremento de funcionalidad”, al termino del sprint se hace una reunión para ver el rendimiento del equipo y los avances realizados hasta el momento, si alguna funcionalidad no fue finalizada o existen cambios indicados por parte del propietario del producto dicha tarea se pondrá en el sprint del siguiente periodo, las tareas que se realicen por cada sprint dependerán enteramente del equipo de desarrollo, sin embargo existen algunas prácticas que son comunes y que deben de realizarse en cada sprint estas se enuncian a continuación:




Sprint Día 1 (Planificación)



En scrum es importante saber identificar cual es el papel de cada uno de los implicados para saber cuáles son sus responsabilidades en el desarrollo del sistema, esta identificación se da casi siempre de manera natural y debe de estar explicita desde el principio del proyecto, sin embargo cuando estos roles no están bien definidos podemos caer en el error de asignar tareas a quien no le corresponde, causando de esta manera un atraso en el proyecto, para evitar esto scrum define de forma sencilla tres tipos de roles con sus respectivas responsabilidades:

Propietario del producto
Representa a todos los interesados en el producto final. Sus áreas de responsabilidad son:

• Financiación del proyecto
• Requisitos del sistema
• Retorno de la inversión del proyecto
• Lanzamiento del proyecto

Equipo
Responsable de transformar la pila del sprint (Backlog) en un incremento de la funcionalidad del software.

Gestor de Scrum (Scrum manager o Scrum Master):
Responsable del proceso Scrum se encarga de organizar y guiar el desarrollo, evitar atrasos y proporcionar información a quien lo requiera ya sea al propietario del producto, a algún miembro del equipo o al equipo en general.


Al comienzo de un proyecto, este se divide en cierto número de funcionalidades, las cuales en un momento dado pueden subdividirse si se requiere, una vez divididas se les asigna a cada una de ellas una prioridad, es decir se eligen cuales son las de carácter necesario, cuales son de tipo urgente y cuáles no son realmente necesarias, hay que tomar en cuenta que alrededor del 45% de las funcionalidades solicitadas por los usuarios rara vez son utilizadas, por lo que inicialmente hay que enfocarnos en las que realmente sean funcionalidades necesarias, después todas estas funcionalidades se guardan en un apartado lógico llamado product backlog lugar del cual iremos sacando teóricamente las tareas que debemos realizar.

En scrum para realizar la división de funcionalidades se hace lo siguiente:

1) Planificación de sprint: En este punto se determina el tiempo de duración del sprint y se establecen las fechas en las cuales se cubrirá dicho tiempo.

2) Se calcula la velocidad inicial del equipo: este es un proceso muy sencillo de implementar, lo primero que se debe de hacer es multiplicar el número de horas de trabajo por el número de días que dura el sprint en caso de ser mas de un desarrollador, se multiplica la cantidad anterior por el numero de desarrolladores, con esto tendremos el total de horas de trabajo, ahora bien scrum es consciente de que las horas de trabajo no son forzosamente de rendimiento, es decir puede que trabajemos 5 horas al día, sin embargo debido a diversas circunstancias (Tiempo para iniciar, descansos, comidas etc.) realmente estamos rindiendo únicamente 3 horas, es por esto que scrum usa un porcentaje llamado factor foco para determinar la velocidad de avance, inicialmente el valor del factor foco será del 70%, por lo que si multiplicamos (número de horas al día) x (número de días del sprint) x [número de desarrolladores] x (factor foco inicial) obtendremos la velocidad inicial del equipo, este valor refleja la cantidad real de horas que disponemos para trabajar en el presente sprint, a medida que vallamos avanzando en el proyecto este valor se ajustara cada sprint pudiendo aumentar, disminuir o quedar con el mismo valor.



3) Exposición de historias: En esta etapa el Scrum Máster, el Dueño del Producto y el equipo se juntan para estimar las historias (es decir tener un panorama general de lo que tiene que hacer el sistema) y decidir cuales podrán realizarse durante el Sprint. Esta primera parte de la reunión de planificación se conoce con el nombre de "Exposición". Es importante destacar que la reunión es llevada adelante por el Scrum Máster, el cual tiene que asegurarse que la reunión no divague en temas que no afectan al Sprint y tiene que poder cerrar la reunión con las historias priorizadas y estimadas. Además, sólo se planifica el Sprint que está iniciando.


4) Creación de historias: El Dueño del Producto presenta las historias de usuario(es algo similar a los casos de uso), las cuales se escriben con títulos que el equipo comprenda en post-it amarillos grandes. Estos post-it se pegan en la mesa para que todos los vean. Cada post-it contiene 4 datos:

• Nombre de la historia
• Importancia
• Estimación
• Validación

o El nombre de la historia es una muy breve frase o título que describe a la historia (por ejemplo, "exportación de saldos", "alta de usuario", "modificación de dirección de facturación", etc.).

o La importancia es un número, mientras más grande el número más importante la historia (y deberá terminarse antes que historias de menor importancia). La importancia la indica el Dueño del Producto.

o La estimación es un parámetro que indica el número de horas de esfuerzo que nos llevara realizar alguna tarea, en principio se deja en blanco, ya que será completada más adelante (pero dentro de la misma reunión).

o La validación será la forma que el Dueño del Producto dará por aceptada la historia en la reunión de Revisión (Demo del Producto).

Así, luego de la exposición del Dueño del Producto, se tendrá cierto número de historias pegadas sobre la mesa, ordenadas por importancia.
El Equipo además puede agregar historias propias, generalmente técnicas, que considera necesarias para la ejecución del proyecto (por ejemplo, la creación de un repositorio de código, creación de un estándar, diseño etc.).

5) Estimación de historias: El Equipo y el Scrum Master son quienes estiman el tiempo que tardaran en realizar las historias. El Dueño del Producto está presente durante la estimación, para responder cualquier duda que pueda surgir, pero no estima ni opina sobre la estimación.
El equipo estima las tareas hasta un número mayor al de su capacidad (que es el valor de velocidad inicial calculado anteriormente). De esta manera, si durante el Sprint llega a terminar antes puede seguir tomando historias, y al estar estimadas luego se pueden tener en cuenta para el Factor de Foco del próximo Sprint.
Teniendo las historias estimadas, el equipo seleccionará por orden de importancia una cantidad de historias cuya estimación no supere al número de horas que hemos calculado para nuestro sprint.
Estas historias seleccionadas serán las que conformarán el Backlog del Sprint, y es el compromiso que asume el Equipo frente al Dueño del Producto. Estas historias se completarán durante el Sprint, y serán las demostradas el último día durante la Revisión del Sprint.

6) Planificación: Después de finiquitada la primera reunión el equipo y el Scrum Master ya sin la presencia del dueño del producto se vuelven a juntar para crear las tareas de las historias, y estimarlas.
En esta reunión el equipo toma cada una de las historias del Backlog del Sprint (las comprometidas) y crea las tareas que necesita resolver para terminar con la historia. Cada tarea no puede tener más de 4 días ideales (de ser mayor, debe ser dividida).




Sprint Día 2 (Inicio del proyecto)



En el segundo día, los desarrolladores eligen las tareas que van a realizar de la pila sprint backlog, tomándolas libremente, por orden de importancia. “Cada desarrollador elige la tarea, nadie se la asigna”.
Al tomar una tarea del Sprint, el desarrollador escribe su nombre en la nota adhesiva, la pasa a la columna de "Asignada" y comienza el trabajo en la misma.
Durante el tiempo que dura el sprint es norma de scrum tener una reunión diaria de no más de 15 minutos, en ella el equipo rápidamente hará un repaso de su situación y del esfuerzo restante para finalizar el Sprint. Cada integrante cuenta cuántos días le falta para finalizar la tarea que tiene asignada: tacha el valor anterior en la estimación de la tarea, y escribe la nueva estimación.
El Scrum Master lidera la reunión, y debe asegurarse que no divague en otros temas, para lograr esto debe de apegarse a cuatro preguntas básicas:

• ¿Qué hiciste ayer?
• ¿Qué vas a hacer hoy?
• ¿Qué ayuda necesitas?
• ¿Existe algún impedimento que te permita finalizar la tarea?

Cabe aclarar que durante el Scrum Diario no se resuelven problemas, tan sólo es un punto de encuentro para que todo el equipo informe su estado al resto y puedan sincronizar sus actividades. En caso de que alguien tenga un conflicto que deba que comentar con el scrum manager deberá quedarse hasta el final de la reunión y exponerlo únicamente al scrum manager y a las personas que pudieran verse directamente afectadas.




Sprint Día 3 (Terminando tareas)

Una vez repartidas las tareas, todos los días durante el Scrum Diario cada integrante dice cuánto le falta para terminar la tarea que tiene asignada. Cuando se finaliza una tarea, la misma se ubica en la columna de "Terminados" y el desarrollador toma otra tarea para seguir.
El momento de finalización de una tarea puede o no coincidir con su estimación. Es decir, por ejemplo, una tarea estimada en 4 días puede haber llevado 1 día en resolverla; a sí mismo, una tarea estimada en 1/2 día puede llevar finalmente 3 días, o una tarea de dos días puede llevar 2 días resolverla. La estimación de esfuerzo restante para la tarea se actualiza todos los días durante la reunión de Scrum Diario. Aquí se debe tener en cuenta que solo se debe estimar el tiempo restante para finalizar la tarea, no importa el tiempo que pasó, solo el que falta.



Tarea pendiente esperando ser tomada por un miembro del equipo


Al tomar una tarea el miembro del equipo escribe su nombre y la mueve a la columna "Asignada"


Durante el Scrum Diario el miembro a cargo de la tarea dice cuánto le falta para terminarla, y se actualiza la estimación.


Cuando el miembro termina la tarea tacha la última estimación y la mueve a la columna de tareas "Terminadas".

Es que las tareas se resuelvan en el orden de importancia de las historias de usuario. De esta manera el equipo se asegura de ir terminando primero las historias más importantes para el Dueño del Producto.



Finalización del Sprint



El último día del Sprint, ocurrirán dos reuniones importantes para el equipo, las cuales ya fueron planificadas por el Scrum Máster desde el inicio del Sprint. Estas reuniones son:

• Reunión de Revisión
• Reunión de Retrospectiva


Reunión de Revisión del Sprint

En la reunión de Revisión (o demostración) el Equipo muestra a los asistentes el trabajo realizado durante el Sprint. Se realiza una demostración "en vivo" del producto, mostrando el funcionamiento de las historias terminadas en el Sprint.
Esta demostración se realiza preferentemente en una de las PC de los desarrolladores, y se muestra el producto real funcionando (no hay diapositivas, ni papeles impresos: se muestra el sistema funcionando realmente) y se comienza contando el Objetivo del Sprint, y cuál era el plan original del mismo con las historias que se desarrollarían. Luego se comenta lo que es lo que se encuentra terminado y se explica que ha pasado con lo no desarrollado a grandes rasgos.

A esta reunión asisten todos los integrantes del equipo, el Scrum Máster, el Dueño del Producto, usuarios y cualquier otro interesado en el sistema.
El Dueño del Producto (y los usuarios), al ver el sistema funcionando, pueden empezar a visualizar la solución, verificar si el producto está llevando el rumbo que ellos pensaron desde el inicio, si sigue siendo útil, y qué cambios se podrían hacer. Todos pueden proponer mejoras, pero sólo el Dueño del Producto decidirá si las mismas formarán parte del sistema final.
Es muy importante tener en cuenta que lo que se muestra al usuario, es en base a la reunión de planificación que se había realizado inicialmente de cómo iba a aceptar la historia y en qué condiciones. Es importante tener esto en claro en la Reunión de Planificación del Sprint.
Esta reunión no debe durar más de 2 horas, en general, con 1 hora es suficiente para que todos puedan ver el producto, debatirlo y proponer cambios para el próximo Sprint.



Reunión de Retrospectiva del Sprint


La retrospectiva del Sprint es una reunión en la cual los Miembros del Equipo discuten el Sprint que acaba de finalizar, y determinan qué podría cambiarse en el próximo Sprint para que sea más productivo y mejor.
La Revisión del Sprint se focaliza en "Qué" construye el equipo, mientras que la Retrospectiva se centra en "Cómo" están construyendo el sistema.
El Scrum Máster lleva la reunión adelante, mostrando la dedicación del equipo dando a conocer los imprevistos e impedimentos que pudieron influir en el trascurso del Sprint.
El equipo divide los temas del Sprint en:
• Bueno
• A mejorar
• Mejora concreta (de aquí se elegirán dos o tres para poner foco en el próximo Sprint)
La dinámica será en que cada miembro exponga su impresión del Sprint y agregue temas a las dos primeras columnas. Cuando los miembros del equipo discuten sobre el Sprint que acaba de finalizar, no solo tratan temas técnicos, sino que tiene que surgir cualquier tipo de mejora.

Con esto se da por terminado el Sprint, y el equipo se prepara para comenzar una nueva reunión de planificación al día siguiente hasta llegar a la finalización eh implementación del producto.



fuentes:

The beast
Scrum
Explicando Scrum a mi abuela
Agile Spain

Agrear busqueda en tu blog

Para agregar un campo de busqueda sencillo, como el de este blog simplemente agrega a tu sidebar un gadget de codigo HTML/JavaScript a continuacion inserta el siguiente codigo:

<form id="searchthis" action="/search" style="display:inline;" method="get">
<div align="center">
<input id="search-box" name="q" type="text"/>
<br/>
<input id="search-btn" value="Buscar" type="submit"/></div>
</form>

y finalmente posicionalo en el lugar que desees.

EXTRA
Si quieres personalizar tu caja de busqueda y quieres que te quede como esta te recomiendo que le des una mirada al articulo Estilo para tu caja de busqueda con css.

lunes, 24 de noviembre de 2008

Domingo en la mañana



ueno pues resulta que ayer navegando entre mis sitios favoritos me encontre con un post de cristalab donde decian "Domingo en la mañana! Reunión este domingo en México, DF" que!!! me dije a mi mismo, pues como yo vivo en toluca (aunque no soy de ahi)me queda literalmente cerca, ademas es un evento de los que por lo menos yo, no suelo ver aqui en toluca ni en el estado apesar de que es una expriencia creo yo muy gratificante y que definitivamente me gustaria vivir, ya sabes estar con todas esas personas y hablar de lo que nos gusta, ademas de que de este tipo de charlas siempre aprendes algo, o compartes algo con gente que te entiende y que no solo te da el avion (cuando alguien te da el avion es por que regularmente no comprende de lo que estas hablando) surgen multitud de ideas y en general pasas una mañana amena y de cierta manera productiva, sinceramente me gustaria que gente de toluca se animara a juntarse tambien a compartir sus experiencias como desarrolladores, diseñadores, publicistas etc mientras nos echamos unas chelitas :P de esta manera no solo aprenderiamos cosas nuevas sino tambien extendemos nuestros lazos de amistad y en todo caso sabriamos a quien acudir cuando se nos presente un problema, ya saben zapatero a su zapato ;).

Para finalizar aqui les dejo los link que encontre del la reunion del domingo en la mñana en mexico, desgraciadamente no pude ir por que el mensage lo encontre a eso de las 7 de la noche cuando todo ya habia terminado, espero que estas reuniones se sigan celebrando.

http://www.cristalab.com/blog/64646/domingo-en-la-manana-reunion-este-domingo-en-mexico-df.html

Mapa de donde se celebran estas reuniones

http://www.danielgimenez.net/2008/11/23/sunday-morning-con-freddie-de-cristalab/

sábado, 22 de noviembre de 2008

Variables de Session en php

http://data3.blog.de/media/628/2425628_dece031612_m.jpeg



Si te encuentras en este post, seguramente ya sabras de que va esto de las variables de session, si no es asi te dire que resumiendo, las variables de session son un tipo especial de variables que nos permiten guardar informacion y concervarla durante una visita de un usuario.

Ejemplificando: si tu creas una variable digamos "$mivariable" en una pagina php cuando sales de esta y comienzas a crear una nueva pagina el valor de $mivariable se pierde, es decir que unicamente existira de manera local en la pagina donde se declaro esta variable, sin embargo si declaramos a "$mivariable" como variable de session podremos utilizarla en todas las paginas de nuestro sitio.

Este tipo de variables comunmente son utilizadas para restringir el acceso a un sitio.


Nota: El servidor crea un objeto de sesion diferente para cada usuario y lo mantiene durante un periodo de tiempo establecido o hasta que se pone fin a la session de manera explicita.


Pues bien una vez puestos en antecedentes vallamos a lo interesante:

Para comenzar a utilizar sessiones primero debemos de crear (o continuar) una session, esto se hara poniendo en las paginas donde queramos usar variables de session la siguiente declaracion:

session_start();

Esta funcion nos devolvera true si la session fue creada correctamente y false en caso contrario.

Clue: Puede que al momento de probar tu pagina esta te arroje un warning, para solucionar esto simplemente pon la declaracion de inicio de session antes que cualquier otra instruccion, inclusive antes del <html>.

Una vez iniciada la session lo siguiente sera crear una variable de session y asignarle un valor, antes de proseguir debo de mencionarles que la manera de crear una variable y asignarle un valor depende de una variable de php llamada register_globals veamos ambos casos.

  • Si register_globals=off o tu version de php es la 5 o mayor ni le busques esta es la opcion que debes de utilizar es por eso que la pongo primero.
$_SESSION['nombre_de_la_variable']=valor;

Para comprobar si tu variable fue registrada puedes implementar la siguiente funcion:

if(isset($_SESSION['nombre_de_la_variable'])){
echo "Registrada"
}else{
echo "No registrada"
}

  • Si register_globals=on entonces lo que debes de hacer es:
$variable_de_session=valor;
session_register("variable_de_session");

Para comprobar si tu variable fue registrada puedes implementar la siguiente funcion:

if(session_is_registered("variable_de_Session")){
echo "Registrada"
}else{
echo "No registrada"
}
Bueno una vez creadas las variables de session y asignados un valor ya sea de la primera o la segunda forma tendremos disponibles estas variables con sus respectivos valores en todas las paginas donde iniciemos session (es decir donde tenga session_start();).

OTRAS FUNCIONES
Las siguientes son funciones validas sin importar de que manera se dio de alta la variable.

  • Para eliminar la session unicamente hay que poner: session_destroy();
  • Para eliminar una variable registrada: session_unregister();
  • Para leer o cambiar el identificador de session actual: session_id();
  • Para eliminar todas las variables de session ojo no destruye la session solo elimina todas sus variables: session_unset();
  • Para leer o cambiar la ruta donde se guardan los datos de la session actual: session_save_path(); hay que configurar save_path para que no de error en php.ini
Pues bien con esto concluye el tema de variables de session, a que es sencillo vdd, bueno si alguien tiene algo que agregar, alguna otra funcion util o algo del tema que quieran compartir, ya saben que sera bien recibido. hasta la proxima!!!

Smart Player

Smart player es un hosting de video que nos ofrece algunas ventajas muy interesantes, pero esta de mas que se las comente, mejor chequenlas con este video que es su promocional.



More Web Tutorial at 5min.com

Life

Navegando por ahi me encontre este video que esta genial, realmente explica mi vida y me hizo reflexionar el por que aveces soy tan improductivo :P.

martes, 18 de noviembre de 2008

Entrevista con Suraski



Para las personas familiarizadas con php y su historia bien recordaran que si bien el padre de php podriamos decir que es Rasmus, ya que de el nacio el principio del concepto, tambien conoceran la importancia de Zeev Suraski que junto con Andi Gutmans rescribieron desde cero el analizador sintactico del PHP/FI para concebir junto con Rasmus y un buen numero de desarrolladores que se subieron al barco, lo que el mundo conoceria como PHP, si bien de un tiempo aca ah sufrido ya muchisimas actualizaciones, PHP se puede decir que fue PHP desde ese historico momento, weno pues resulta que navegando por aqui y por alla me encontre con una entrevista que le hizo El pais.com" , la entrevista no es nueva, es de abril del 2007 sin embargo pienso que siempre es interesante lo que estos gurus tienen que decir, asi que sin mas los dejo con ella:


Zeev Suraski, israelí de 31 años, es un hacker de manual. En vez de ir a clase, aprovechó la universidad para pasar horas escribiendo código con su amigo Andi Gutmans. Así crearon el lenguaje libre de programación PHP, para desarrollar páginas web. Hoy dirigen su compañía, Zend Technologies, demostrando que es posible hacer dinero con un producto de código abierto...


"PHP es potente, fácil, gratuito y permite a servicios como Flickr, Digg o Youtube crear aplicaciones rápidamente en un mercado veloz"


-Ya no programas?

-No mucho. Antes progrmaaba mucho, creé PHP hace 10 años, he estado muy involucrado en su desarrollo hata 2002, aunque sigo desarrollando algunas partes. Ahora ayudo a empresas a implementar php, alianzas estratégicas, etc, es lo que más hago ahora, más que programar.

-Tú y andi sois algo del estilo wozniak and steve jobs. Ahora eres el steve jobs del php?

-ok

-Cómo explicarías a un niño pequeño qué es php?

-No sé si lo entendería... Sabes esta cosa llamada Internet, donde puedes ir a sitios como Youtube, Yahoo y otros sitios web? PHP es la herramienta que usan estas compañías para crear estos sitios web. Es un lengauje de programación para desarrollar sitios web.

-Qué significa?

-Oficialement significa "PHP Hypertext Processor", sigue la misma idea de "GNU is Not Unix". Es un nombre muy malo. En el pasado significaba Professional Home Pages. Pero cuando nosotros creamos la nueva implementación queríamos encontrar un mejor nombre que PHP/F1, como lo llamó su creador, porque era difícil de pronunciar, pero no pudimos, así que seguimos llamándolo PHP, sin F1. Y PHP es PHP y ya está.

-El creador de PHP fue Rasmus Lerdof. Andi y tú lo reescribistes. Por qué?

-Usábamos PHP como usuarios para crear aplicaciones web en 1996. Estábamos haciendo un proyecto de la universidad, una tarjeta para hacer compras de comercio electrónico, lo que entonces se consideraba un proyecto muy avanzado, porque la web era algo nuevo. Yo conocía PHP, que era una alternativa a Perl, más fácil, y lo usaba, todo el mundo usaba Perl pero nosotros preferimos usar PHP.

-Y por qué reescribirlo?

-Cuando empezamos a usarlo vimos enseguida que tenía bastantes problemas, problemas serios en el lenguaje. Podríamos haber usamos Perl pero preferimos fijarnos en qué le pasaba a PHP, que era de código abierto y por tanto podíamos mirar el código. Estaba realmente embrollado, era un caos. Hablamos con su creador y nos dijo que él había hecho algo para que le funcionase a él y su equipo, que no era un informático y que si queríamos hacer cambios seríamos bien recibidos. Y lo hicimos. Para nosotros era como un hobby, gastamos todo un curso en la universidad con esto, al fin y al cabo no estábamos demasiado interesados en estudiar y hacer los exámenes. Preferíamos trabajar en esto y era una buena excusa para no estudiar.

-¿De qué parte te encargaste tú en el desarrollo de PHP?

-El desarrollo completo, el 67%. Y también Andi. Trabajábamos juntos, diseñábamos el nuevo lenguaje. Basado en PHP/F1 pero también en Java, C, un mix en diversos lenguajes. Creamos algo que tuvo mucho éxito. No fue sólo coger PHP/F1 y escribirlo de nuevo sino crear PHP de nuevo y convertirlo en un lenguaje poderoso que pudiese competir con C, Java y otros. Trabajamos en el diseño, la implementación, arreglar los fallos, etc.

-Sabes que eres un hacker?

-En el pasado, sí. Y aún lo soy, pero más orientado a los negocios.

-Cuántos servidores en Internet usan PHP?

-Los números cambian mucho y es difícil de decir. En porcentaje tenemos del 30 al 35% de toda la Internet corriendo con PHP. Si comparamos las plataformas para servidores web, PHP es la primera y la segunda es .Net. Y, en cuanto a desarrolladores, .Net y Java tienen más, pero ambas no son sólo para la web, hacen otras aplicaciones. PHP es la plataforma de desarrollo web más popular. Y, en cuanto a desarrolladores está siendo más popular que Java. En Europa y en el entorno de desarrolladores, PHP es más popular que Java.

-Por qué Europa ama PHP?

-Es una combinación de cosas. Una es que el código abierto en general es más popular en Europa que en otro lugar del mundo, quizás por diferencias culturales y también porque en Estados Unidos están las grandes empresas de código abierto, en cambio en Europa no las hay pero hay muchas comunidades locales, son muy fuertes. Hace una semana, estuve con grupos de usuarios en Alemania y la gente se reúne una vez al mes para hablar de PHP y otras cosas. Estas comunidades no existen en Estados Unidos. Es un hecho que la adopción de Linux es más fuerte en Europa que en EEUU. Todos los proyectos de código abierto son más populares en Europa que en EEUU. EEUU lo vive de otra manera. Por ejemplo, las grandes compañías están empezando a usar código abierto pero se siente más confortables si usan Oracle y software propietario.

-Por qué PHP se ha hecho tan popular?

-Por dos cosas sobre todo. Una es tecnológica: es simple, lo que lo hace más productivo. La segunda razón es social: se hizo muy popular por un círculo de efectos: hay una gran comunidad que usa PHP, lo que significa que siempre hay alguien que puede ayudarte, responder una pregunta en un foro o una lista, gente que escribe documentación, grupos de usuarios... No necesitas ser un programador para usarlo, puedes cogerlo y usarlo, normalmente gratuitamente, cambiarlo. La contribución social a PHP es la clave de su éxito y lo que lo nutre y lo hace más y más atractivo. Simplicidad y comunidad son las respuestas de su éxito.

-Y ustedes agradecen la ayuda a la comunidad dándoles PHP gratuitamente

-Muchas empresas desarrollan partes de PHP no para hacer negocio directamente, no para venderlo, sólo porque lo necesitan.

-PHP es software libre o de código abierto?

-En la definición de Richard Stallman, es código abierto porque no tiene una licencia GNU. PHP tiene su propia licencia.

-PHP es responsable del éxito de la web 2.0?

-Ha sido un elemento clave, no el único, pero lo han usado servicios web líderes porque es muy poderoso para crear aplicaciones web y gratuito, mientras que las herramientas de Microsoft son caras y necesitas usar sólo sus productos. programar PHP es fácil y permite desarrollar aplicaciones más rápido. Es difícil pensar qué habría pasado si no hubiese existido PHP pero la revolución de la web habría sido más pequeña o habría tardado más tiempo. La generación de contenido, la colaboración, que son el espíritu de la Web 2.0, lo son también de PHP. Por qué tantas aplicaciones de código abierto usan PHP? Avances como la Wikipedia, donde la gente aporta información...

-¿Cómo se siente uno cuando se echa en el sofá de su casa y piensa: yo ayudé a crear la web 2.0?

-La web 2.0 han sido un montón de cosas diferentes que han convergido al mismo tiempo, no fuímos sólo nosotros. Nosotros hemos sido unos de los colaboradores. Estoy muy orgulloso de haber sido uno de los colaboradores clave y normalmente no me siento en mi sofà pensando esto, pero ahora que estoy volando a diferentes países, Rusia, Estados Unidos, Europa y veo que en ciudades de todo el mundo hay gente usando PHP, el lenguaje que ayudé a crear, es muy bonito. No puedo hablar en español con ellos pero todos hablamos el mismo lenguaje, que yo ayudé a crear. Esto es muy bonito.

-El video mató a la estrella de la radio. PHP está preparado para la web 3.0?

-No sé cómo será la web 3.0 y no puedo decir que estemos preparados para ello pero, en general, tenemos mucho éxito en integrar tecnologías para hacerlas accesibles, integración con Java, etc. Ahora que estamos preparando la versión 6 de PHP, veo que está tan avanzado y es tan poderoso, comparado con la versión de 1996, está integrado con tantos lenguajes, muchas cosas que hemos implementado en PHP están basadas en ideas y demandas de la gente que lo está usando, quizá el 60%. Por tanto, el hecho de que PHP responda a las necesidades de la gente hace que cuando la web 3.0 sea popular, PHP soporte todo lo que necesite. Incluso sin saber que será la web 3.0, una forma de conocer el futuro es crearlo.

-Cuándo liberaréis PHP 6?

-En 2008 pero muchas cosas nuevas que habrá en PHP 6 ya las estamos ofreciendo con las nuevas versiones de PHP 5, para que no sea necesario esperar a la 6.

-Google usa PHP?

-Tiene su propio equipo de desarrolladores que hacen la mayoría de sus aplicaciones. Pero nos han contratado para crear una librería PHP para acceder a los servicios de Google. Los lenguajes que usa son Java y PHP. Pero cuando hacen servicios para el mercado, valoran PHP como tecnología clave.

-Yahoo, youtube, Flickr, Digg.. Los mejores servicios de la web usan PHP. O quizá son los mejores porque usan PHP?

-Quizá sí debas ser bueno para usar PHP :) PHP ayuda a realizar los conceptos que ellos tienen de la mejor forma posible. Les ayuda a implementar los servicios que quieren, a ser los mejores del mercado... Es una combinación de buena mercadotecnia y buena tecnología para ser los primeros. PHP les permite crear aplicaciones rápidamente en un mercado que se mueve rápidamente.

-En las listas de correu, los blogs, es fácil encontrar a gente hablando o usando PHP. También entre los servicios punteros de Internet. Ahora las compañías tradicionales, no sólo las relacionadas con la red, también empiezan a usar PHP. ¿Es así?

-Sí. Es un fenómeno bastante nuevo. Si hubiésemos hablado hace dos años no habría tenido muchos ejemplos pero hoy sí, PHP está entrando en las compañias tradicionales: telecomunicaciones, bancos, gobiernos.. Uno de los ejemplos más interesantes es el gobierno francés donde PHP está entrando muy fuerte junto con otros sistemas de código abierto. La razón de que empresas e instituciones adopten PHP es por un parte su simplicidad, también el hecho de que las grandes empresas de software han empezado a soportar PHP en los últimos años. PHP ya no es sólo un proyecto de soft de código abierto, está cambiando la percepción. Además ha penetrado con mucha fuerza en la comunidad de Internet. Está siendo cada vez más popular en grandes corporaciones, como Fiat.

-Y por qué estos sitios adoptan PHP si, por ejemplo, a la administración Microsoft le da sus herramientas gratuitamente? Si ambos son gratuitos, ¿por qué escogen PHP?

-Microsoft es muy popular y PHP menos. Mucha gente prefiere PHP y otra prefiere Microsoft. PHP es más fácil que .Net, más productivo, muy escalable y personalmente prefiero usar PHP con Linux que .Net con Microsoft porque, de esta forma, no sólo las herramientas sino todo es libre y gratuito. Además tienes el código abierto y puedes cambiar lo que quieras, lo que hace que sea más fácil cambiar de dirección.

-Ahora Java es libre. ¿Es un problema para PHP?

-No. Hay una diferencia fundamental entre ambos: Java no se ha diseñado para crear sitios web sino aplicaciones de escritorio. Es más difícil crear sitios web con Java que con PHP, sea Java libre o no. Estamos en negocios diferentes.

-Un joven que está aprendiendo a programar, es mejor que .Net o PHP?

-Si quiere encontrar un trabajo, es indiferente. Depende de tu naturaleza, de lo que prefieras: trabajar con herramientas de Microsoft o tener el control total de la aplicación y usar PHP. Hay usuarios de uno y otro.

-Si PHP es gratuito, ¿de qué vivís?

-Cuando lo creamos estábamos en la universidad y no necesitábamos mucho dinero, era un hobby. Pero cuando empezó a crecer, en ocho meses, entre 1998 y 1999 un millón de sitios web lo empezaron a usar. Fue algo increible. Y empezamos a pensar qué negocio podíamos crear, no fuimos nosotros sino que las empresas venían a nosotros, en 1999, pidiéndonos que hiciésemos determinadas herramientas para PHP que no existían o pidiéndonos soporte. Al ver esto, creamos Zend Technologies. Invertimos mucho en código abierto y lo que hacemos es vender el conocimiento y crear programas comerciales y servicios para empresas. Así hacemos el dinero. Invertimos mucho en proyectos de código abierto y donde hacemos el dinero es en los servicios comerciales.

-Y hacéis suficiente dinero para vivir tranquilamente? ¿no es una entelequia lo de vivir del software libre?

-No, no. No somos Bill Gates pero vamos bien.

-¿Zend tiene 140 trabajadores?

-Sí. La mayoría son desarrollores. Nuestra central está en California, en Cupertino, y también tenemos oficinas en Israel, Alemania y Francia.

-¿El código de PHP se produce todo en Zend?

-No. Zend es responsable sólo del kernel de PHP. El resto de contribuciones son desarrolladas por gente de Zend pero muchos voluntarios. PHP no sería lo que es sin las contribuciones de esa gente que ha creado las extensiones y otros, voluntarios de todo el mundo. Zend hace las partes quizá más complicadas pero la mayoría de gente que contribuye crea y mejora PHP son voluntarios de todo el mundo. No sería tan popular sin sus contribuciones. Si miras todas las líneas de código de PHP, quizás el 90% es de los voluntarios. PHP es como una cebolla: en el centro está el kernel y esto lo desarrollamos nosotros, pero el resto de capas las hacen voluntarios (extensiones, etc). Zend hace también una parte, pero pequeña. En PHP hay un montón de desarrollo de la comunidad. PHP es uno de los mejores ejemplos de productividad funcional de la comunidad. No somos sólo una empresa.

-¿Qué tecnologías son realmente vuestros competidores?

-Java y .Net son grandes competidores. .Net es muy bueno si te gusta Microsoft, están haciendo un buen trabajo. Java es una historia diferente, tiene mucho trabajo hecho en la percepción, en la imagen, han hecho un gran trabajo de marketing, todo el mundo piensa que debe usar Java para todo. Esta percepción es aún difícil de cambiar. Java es un competidor en el área de aplicaciones web más por la percepción de las empresas de que deben usar Java para todo. Esto está empezando a cambiar, también porque las empresas oficiales de Java están empezando a soportar PHP y vemos a Java menos como competidor y más como colega, aplicaciones que conectan PHP y Java, usar Java para unas cosas y PHP para otras, conectarlos es necesario.

-Hace unos días, leíamos que el editor de O'Reilly decía: "We've noticed that one of the signs that a language is becoming mainstreams (and perhaps being abandoned by the cutting edge developers) is that the For Dummies book becomes the top seller". ¿Es quizás el caso de PHP?

-Ahhh... Qué manía en predecir el futuro.. No, no lo creo... No sé si es un buen indicador. PHP desde el principio no ha querido dirigirse a los desarrolladores avanzados. Desde el principio sabíamos que no era para ellos, por eso lo hicimos fácil de usar. No queríamos que fuese un lenguaje élite desde el principio sino fácil para los nuevos y creo que hicimos un buen trabajo. Y ahora hay muchos novatos que lo usan y también compañías avanzadas y queremos seguir por este camino.

-Se habla mucho de la inseguridad de la web 2.0 y también de las aplicaciones PHP. No hace mucho, vuestro responsable de seguridad se marchó del grupo y anunció que daría a conocer todos los fallos de PHP. ¿PHP tiene un problema de seguridad?

-Sí, tenemos problemas de seguridad, pero los tiene todo el mundo. Y cuando los conocemos los arreglamos, respondemos muy rápido. Cuando se hizo el mes de fallos en PHP creo que respondimos rápidamente. Hay que entender también que, desde una perspectiva de seguridad, la web es un sitio muy peligroso. Cualquier aplicación que pones en línea, todo el mundo, gente de Rusia, de Australia, de Estados Unidos, se pone a intentar tumbarla. Hoy en día es muy complicado crear aplicaciones seguras. Muchos de los problemas de PHP son en aplicaciones, no en PHP en sí. Por tanto, lo que hay que hacer es educar a la gente, a los desarrolladores, para que escriban aplicaciones seguras. Zend y también la comunidad PHP está creando mejor documentación para crear aplicaciones seguras.

-Creo que también se debería educar a los usuarios. Por ejemplo a no usar javascript cuando navegadas por la web.

-Sí, pero javascript está siendo cada vez más importante, muchas webs no funcionan sin javascript.

-Odio javascript!

-Todo el mundo lo odia.

-Un hacker pide que te pregunte: ¿Cuál es tu sistema operativo preferido?

-Espero que no me maten. En el escritorio uso Windows y en el servidor, Linux, no me importa qué distribución. Para el servidor por supuesto prefiero Linux.

-PHP tiene algún conejo a punto de sacar de la chistera?

-Conejos no, solemos jugar con la transparencia en el código abierto. La discusión precisamente está en ser muy abiertos. Para la comunidad de desarrolladores, el Zend Framework y los componentes que vamos a publicar en unos meses creo que serán una sorpresa, aunque no son un secreto. Para las empresas, estamos haciendo más potente Zend Core. También estamos trabajamos con IBM en herramientas para PHP. Es difícil hablar de sorpresas porque no lo son.

-Si PHP no hubiese sido libre habría tenido este éxito?

-No. Más por la accesibilidad que por el precio, que no es un aspecto demasiado importante, aunque está claro que si no te cuesta nada entrar en esta tecnología es más fácil hacerlo. Hoy las compañías usan PHP porque la tecnología es buena, pero si no fuese popular no lo harían. La comunidad ha sido la clave del éxito de PHP.

viernes, 14 de noviembre de 2008

Solo por hoy

Solo por hoy:

  • Dile a la gente que quieres... QUE LA QUIERES!!!!
  • Cuida tu planeta
  • Regala una sonrrisa
  • Canta en la regadera
  • Si los problemas tienen solucion ¡NO TE PREOCUPES! y si no ¡PUES TAMPOCO!
  • Ve a un lugar donde nunca hayas estado
  • Llama a un viejo amigo
  • Ponte en los zapatos de los demas
  • Alegra el corazon de un niño
  • Si te equivocaste ¡ Pide perdon !
  • No te olvides de ver siempre el lado positivo de las cosas
  • Si la vida te da limones, Haz limonada :P

Gente extraordinaria

Muy buen documental sobre gente superdotada, principalmente se enfocan en daniels un chico con una habilidad sorprendente para las matemáticas.

 

miércoles, 12 de noviembre de 2008

Conceptos basicos de Bases de datos

Para los chavos de la prepa:

CONCEPTOS BASICOS

Dato: Conjunto de caracteres con algun significado.
p.e puede que "Juan" signifique el nombre de una persona registrada en nuestra base de datos.

Campo: Es la unidad mas pequeña a la cual puede referirse en un programa.

Registro: Coleccion de campos de iguales o diferente tipo de alguna manera asociados entre si.



¿QUE SON LAS BASES DE DATOS?


Una base de datos es una recopilacion de informacion relativa a un asunto o proposito particular como el seguimiento de pedidos de un clientes o el mantenimiento de una coleccion de musica.


OBJETIVOS DE UNA BASE DE DATOS

El objetivo de una base de datos es el de almacenar informacion sobre algo de manera eficiente, poniendo especial atencion en:

Disminuir la Redundancia y la Inconsistencia en la informacion: Esto quiere decir que evitaremos duplicar la informacion(redundancia) y que dicha informacion sea la mas actualizada(inconsistencia), esto lo podremos vislumbrar mejor con la siguiente analogia:
Supongamos que insertamos varios archivos mp3 a nuestro celular, entre estos archivos por un descuido metemos dos veces una misma cancion, al darnos cuenta de esto, seria logico que dejaramos que esta cancion se repitiera?, no lo creo porque lo que estaria haciendo seria unicamente ocupar memoria que bien podriamos ocupar para agregar una cancion mas a nuestro mobil o como espacio para fotos etc, pues bien uno de los objetivos de las bases de datos es acomodar la informacion de tal manera que esta no se repita inecesariamente y esto es a lo que llamamos redundancia.


Por otro imaginemos que tenemos una agenda donde tenemos anotada a nuestra amiga mari (siempre hay una mari), sin embargo recientemente mari cambio de telefono por lo que la volvemos a anotar con su nuevo telefono, ahora bien al echo de tener dos veces a la misma mari con numeros de telefonos diferentes es a lo que llamamos un error de inconsistencia, es decir forzosamente uno de los 2 numeros esta equivocado provocando que nuestra agenda no tenga informacion 100% veradera.

Reducir la dificultad para tener acceso a los datos
    Un sistema de base de datos debe contemplar un entorno de datos que le facilite al usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes necesita averiguar los nombres de todos los clientes que viven dentro del código postal 78733 de la ciudad. El gerente pide al departamento de procesamiento de datos que genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto ocasiona una deficiencia del sistema.
Eliminar problemas de seguridad en la informacion
    La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se debe considerar la facilidad con que se acceden a los mismos, no todos los usuarios pueden visualizar la misma informacion, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de seguridad que garantice la autentificación y protección de los datos. En un banco por ejemplo, el personal de nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco y no a otro tipo de información.


MANEJADOR DE BASE DE DATOS

    El sistema  manejador   de bases de datos es la porción más importante de un sistema de base de datos. Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea específica, dicho en otras palabras es un programa que sirve para crear y poder manipular las  bases de datos y la informacion que contienen.
TABLAS
Las tablas son la parte mas importante de una base de datos, ya que es ahi donde se guardara y organizara la informacion, las tablas se componen de dos partes la primera son las columnas(nombres de los campos) y la segunda son las filas tambien llamadas registros.

TIPOS DE USUARIOS

Existen en una base de datos dos tipos de usuarios bien definidos, el primero es el administrador de la base de datos o como todos en el medio lo conocen el DBA (Data base Administrator) de dicho usuario podemos decir que es el todopoderoso, todo lo puede ver y todo lo puede hacer vive sin limites ni reservas pero carga con la responsabilidad de todo aquello que suceda en la base de datos, mientras que el otro tipo de usuario es simplente llamado así "usuario" y este unicamente puede ver y hacer lo que el DBA le haya permitido.

Administrador de Bases de Datos

Denominado por sus siglas como: DBA, Database Administrator.

    Es la persona encargada y que tiene el control total sobre el sistema de base de datos, sus funciones principales son:

   Definición de esquema.
    Es decir es el que crea la estructura o esqueleto de la base de datos.


   Concesión de autorización para el acceso a los datos.
      Es decir genera los permisos de cuanto pueden ver o hacer los demas usuarios.

   Especificación de límitantes de integridad.
      Es una serie de restricciones que se encuentran almacenados en una estructura especial del sistema que es consultada por el gestor de base de datos cada vez que se realice una actualización al sistema.




 
 Usuarios de las bases de datos

    Podemos definir a los usuarios como toda persona que tenga todo tipo de contacto con el sistema de base de datos desde que este se diseña, elabora, termina y se usa.

Los usuarios que accesan una base de datos pueden clasificarse como:

   Programadores de aplicaciones.
      Los profesionales en computación que interactuan con el sistema por medio de llamadas en DML (Lenguaje de Manipulación de Datos), las cuales están incorporadas en un programa escrito en un lenguaje de programación (Por ejemplo, COBOL, PL/I, PHP, C, etc.)

   Usuarios sofisticados.
      Los usuarios sofisticados interactuan con el sistema sin escribir programas. En cambio escriben sus preguntas en un lenguaje de consultas de base de datos SQL.


   Usuarios ingenuos.
      Los usuarios no sofisticados interactuan con el sistema invocando a uno de los programas de aplicación permanentes que se han escrito anteriormente en el sistema de base de datos, podemos mencionar al usuario ingenuo como el usuario final que utiliza el sistema de base de datos sin saber nada del diseño interno del mismo por ejemplo: un cajero.


 
 
SQL
 
Hace algunos años cuando se descubrio la importancia de las bases de datos salieron al mercado muchos manejadores de bases de datos, cada uno utilizaba una manera muy propia para manipular los datos, esto ocasionaba principalmente dos graves problemas:

1) cada vez que se queria utilizar un nuevo manejador ya sea por su potencia, seguridad, efectividad etc; Habia que aprender desde el inicio a utilizarlo p.e en nuestro programa anterior para realizar una tarea como la de crear una nueva base de datos haciamos algo como: create new dabase with name mi_base execute now; mientras que en la nueva aplicacion para realizar la misma tarea se hacia: new data_base create now mi_base; lo que apesar de ser similar es diferente y nos causaria cierta confusion e incluso realmente la instruccion podria llegar a ser diferente: new arkud_data:data:bd_new mi_base; por decir algo.

2) El segundo problema por logica era la incompatibilidad entre bases de datos, es decir si habiamos echo nuestra base de datos en acces el mudarla a MySQL por X razon era una tarea muy tediosa si no imposible.

Observando la utilidad de las bases de datos y teniendo claro este problema se decidio crear un lenguaje de manipulacion estandar, el cual tomaria lo bueno de cada lenguaje y lo uniria para que todos los manejadores de bases de datos funcionaran con ese mismo lenguaje sin ningun problema.

Es de eso de lo que trata el Structured Query Language que no es mas que un lenguaje estándar de comunicación con bases de datos. Hablamos por tanto de un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje (ASP o PHP) en combinación con cualquier tipo de base de datos (MS Access, SQL Server, MySQL...).

El hecho de que sea estándar no quiere decir que sea idéntico para cada base de datos. En efecto, determinadas bases de datos implementan funciones específicas que no tienen necesariamente que funcionar en otras. 

Aparte de esta universalidad, el SQL posee otras dos características muy apreciadas. Por una parte, presenta una potencia y versatilidad notables que contrasta, por otra, con su accesibilidad de aprendizaje. 



COLUMNA(o Campo): Es un nombre que se asigna para identificar un conjunto de datos del mismo tipo.

FILA(o Registro): Es un conjunto de datos relacionados, todas las filas de la misma tabla tienen la misma estructura.

CLAVES PRIMARIAS: Se llama clave primaria a un campo, o a una combinación de campos, que identifica en forma única a cada registro.
Por ejemplo, para una tabla de clientes se podría usar, como clave primaria, una de las siguientes opciones:

La cédula de identidad del cliente.
La combinación de nombre y apellido. Esto es dudoso, ya que un dos clientes pueden tener el mismo nombre y el mismo apellido.
Un código de cliente, asignado por la empresa.
Sin embargo, lo más recomendable es utilizar un número que nunca verá el usuario final. Para este fin, se necesita un número secuencial. Esto nos trae numerosas ventajas, entre otras:

Se simplifican las claves foráneas y las relaciones entre las tablas. Por ejemplo, si para identificar a un cliente utilizamos la combinación de nombre y apellido, también necesitamos el nombre y el apellido del cliente en la factura, para identificar al cliente.
Se ahorra espacio, ya que un campo de tipo Integer (entero) sólo utiliza 4 bytes (sin embargo, permite números hasta 2 mil millones). Se puede argumentar que se necesita un campo más para la clave primaria; pero se ahorra espacio en las claves foráneas en otras tablas.
El acceso a los datos es más rápido. Esto está directamente relacionado con el hecho de que los campos de tipo Integer (y sus índices correspondientes) son más pequeños.
El usuario puede cambiar los códigos, sin que se tengan que "propagar" los cambios a otras tablas.
También hay algunas desventajas; sobre todo, la programación se hace más complicada en algunos casos. Pero he visto en la práctica que es un sacrificio que vale la pena.


CLAVES FORANEAS:  Es una referencia, en una tabla, a la clave primaria de otra tabla.

INDICES: El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hagan frecuentes búsquedas.
El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos. Para buscar un elemento que esté indexado, sólo hay que buscar en el índice dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.


Bueno ya para finalizar veremos muy generalmente algunas instrucciones para manipular bases de datos, dichas instrucciones pueden variar ligeramente dependiendo del manejador que utilicemos, ya que con ustedes estaremos ocupando MySQL les recomiendo que vean los comandos especificos para este manejador en el siguiente post:



CREATE DATABASE :Utilizaremos esta instruccion para crear una base de datos.

USE: Selecciona una base de datos para trabajar con ella.

CREATE TABLE: Utilizaremos esta instruccion para crear una nueva tabla tabla en la base de datos seleccionada.

DESC | DESCRIBE: Utilizaremos esta instruccion para ver la estructura y la informacion de una tabla.

INSERT: Con este comando podremos insertar informacion a una tabla.

UPDATE: Con esta instruccion podemos modificar la informacion contenida en una tabla.

DELETE: Con este comando podremos eliminar la informacion contenida en una tabla.

TRUNCATE: Elimina de una manera mas eficiente la toda informacion contenida en una tabla, pero no es utilcuando queremos borrar unicamente una parte de la informacion en vez de toda.

ALTER: Con este comando podremos modificar la estructura de una tabla, ojo digo estructura no contenido, modificar estructura es algo asi como modificar la informacion de las columnas, aumentar o disminuir su numero, mientras que modificar la informacion (UPDATE) se refiere a modificar las filas de la tabla.

DROP: Sirve para eliminar tablas.

SELECT: Es tal vez la instruccion mas compleja y mas poderosa de todo sql, su funcion es la de buscar determinada informacion en la base de datos y presetarla para utilizarla con multiples fines.   

Dada la importancia de esta instruccion les dejo un esquema basico de esta:

SELECT [DISTINCT] { * | columna [, columna]}
FROM tabla
[WHERE condicion_de_busqueda]
[ORDER BY columna [ASC|DESC] [,columna [ASC|DESC] ];

Donde:

SELECT es la palabra clave que indica que se va a realizar una seleccion de la informacion.

DISTINCT puede ir o no ir, si se pone indica que no muestre valores repetidos.

COLUMNA es la o las columnas de las cuales nos mostrara informacion.

FROM palabra reservada que indica que lo siguiente es el nombre de la tabla de donde quieres obtener dicha informacion.

WHERE es una instrucion de condicion, puede ir o no ir y si se pone condiciona la busqueda a un parametro como por ejemplo si la tabla es estudiantes podemos indicar que nos muestre todos los estudiantes de 5to semestre.

ORDER BY indica que la informacion se va ordenar ya sea numerica o alfabeticamente deacuerdo a la informacion de la columna o columnas especificadas.

ASC y DESC indica si la informacion se va a ordenar ascendentemente de la a-z o de 1 a-n o desendentemente z-a o de n a 1.



Lo que significa un enemigo

El tener enemigos no has algo que todos quisieramos en nuestra vida, sin embargo a lo largo de ella nos es inevitable encontrarnos con personas envidiosas que se sientan mal con los exitos propios y que muchas veces se autodenominen nuestros enemigos, sin embargo no es malo tener enemigos, lo malo seria denominarnos a nosotros mismos enemigos de alguien ya que entonces estaremos reconociendo la superioridad de esta persona frente a nosotros , bueno aqui un pensamiento que nos habla un poco sobre esto:

Triste es no tener amigos.... 
pero más triste debe ser... 
no tener enemigos. 
Porque quien enemigos no tiene, 
señal es que no tiene.... 

Ni talento que haga sombra, 
ni carácter que impresione.. 
ni valor temido, 
ni honra de la que murmuren, 
ni bienes que se codicien, 
ni cosa buena que se le envidie


Anuncio Blog


Bueno cuando empece este blog no tenia ni la mas minima idea sobre que postear, asi que los inicios (en los que todavia estamos :D) de el mismo fueron un tanto inciertos como podran darse cuenta si checan los primeros post que escribi, a medida que fue pasando el tiempo comence a meter contenido informatico sobre las nuevas cosas que aprendia o tecnologias que me llamaban la atencion, en algun momento me perdi de esa linea y como podran darse cuenta comence a insertar muchisimas imagenes que la vdd me parecieron muy buenas, animaciones dignas de mostrarse, alguno que otro pensamiento etc, es decir de cierta manera la tematica de este blog no esta muy bien definida, es por eso que tome la decision de darle un contenido mas claro ah este blog, resultado de eso eh creado 2 mas http://avl-graphic.blogspot.com/ donde ire posteando imagenes que se me hagan interesantes, videos, tutoriales de photoshop y todo lo que tenga que ver con el diseño, por otro lado en http://avl-write.blogspot.com/ ire escribiendo pensamientos, ideas politicas, fraces, biografias o documentales interesantes, comentare una que otra pelicula, musica  y alguna otra cosa que se me antoje :P, mientas que este seguira siendo mi blog principal (El consentido :P) y tratare de enfocarlo a temas de programacion, tecnologia y todo a quello que tenga que ver con el mundo de la informatica entre otras cosas, bueno espero poder mantener claras las lineas de este proyecto y no volverme a perder en el camino, mientras tanto les mando un cordial saludo  y no dejen e visitarme. hasta la proxima :)


sábado, 8 de noviembre de 2008

El ser y su obra

Durante mucho tiempo, confundi al artista con su obra,
hoy gracias a la experiencia eh logrado disociarlos de una manera clara,
se puede ser un gran artista y un cabron ...

Una persona fea puede hacer cosas muy hermosas,
es posible captar en un papel toda la belleza del mundo sin llegar a formar parte de ella, resulta extraño ¿Como puede verse uno superado por lo que hace?

Ahora bien si la obra es mejor que el artista ¿Como es que no lo mejora?

La mano roza lo divino y los pies chapotean la mediocridad,
puedes preferir el uno al otro,
pero el mensajero y el mensaje rara vez se funden...

viernes, 7 de noviembre de 2008

Congreso Mexico Web 2.0

Esta en cancun, Mexico celebrandose el congreso Web 2.0, aqui dejo unos videos de los que podemos encontrar en youTube.

Sobre el fabuloso JQuery :P
Que quieren me gusta esta libreria :)








De Diseño WEb





link para ver mas videos


jueves, 6 de noviembre de 2008

Animaciones 2008

Exelentes animacions, no profesionales creo :P de todos mdodos lo checare, lo lindo es el uso de la imaginacion hubo varias que me hicieron pensar :P (Y eso ya es decir mucho).





Esta es exelente, muy subjetivo yo lo encuentro como una forma de ver lo que es el amor jajajaja hay que verla.


Esta esta fumada






Metodos inexistentes en PHP 6



Trabajando con el R&OS que es una libreria para generar pdf que ya les comentare, todo hiba de las mil maravillas con esta exelente libreria, sin embargo cuando quice incertar imagenes en el pdf ohhh sorpresa, me decia que habia un error en el metodo magic_quotes en donde???, me dije, si yo no tenia ningun metodo con ese nombre, siguiendo con mi lectura del error vi que se originaba en un archivo de la libreria R&OS pues bien hice lo que todo buen programador haria, me fui de inmediato al archivo eh hice un poderosicimo ctrl+f (depende del idioma del programa :P) para localizar donde se creaba dicho metodo, lo unico que pude localizar fueron multiples llamadas al mismo, pero del metodo ni sus luces asi que me quede con cara de ???????.

Despues ya mas sereno poniendome a investigar, encontre que algunos metodos que existian por defecto en PHP, en las versiones nuevas, mas especificamente de la 5 en adelante dejaron de existir, sin embargo aun muchas librerias no muy recientes hacen referencia a estos metodos, por lo que si usamos una version de php mayor a la 5 por logica tendremos errores cuandos estas librerias quieran referenciar a metodos inexistentes, pues bien ahora despues de todo este choro, la solucion propuesta es la siguiente:

if (!function_exists('get_magic_quotes')) {
function get_magic_quotes() {
return false;
}
}

Es decir checamos si no existe la funcion (si por casualidad se nos paso pondriamos peores las cosas :P) y si es el caso, entonces la creamos y simplemente retornamos un false, es decir no reconstruiremos toda la funcion original, pero podemos engañar a la libreria para que pase por alto esta funcion y me termine de hacer el proceso que deseabamos en un principio.

Quiero hacer notar que en el titulo no puse algo como error con libreria magic_quotes en php 6 :P, el por que es el siguiente, quiero que se entienda que este truco no solo aplica a ese metodo(magic_quotes), si no que lo podemos utilizar con cualquier metodo que anteriormente existia y que halla desaparecido en las ultimas versiones de php, esto con el fin de hacer nuestras librerias compatibles con estas ultimas versiones de php(la 5 y la 6).


Error en las fechas con php 6



Anteriormente no tenia problemas con el manejo de fechas php, sin embargo cuando estaba probando la version 6 de php me sorprendio mucho que todos los programas que manejaban fechas me arrojaban un warning muy molesto en donde me decian que fijara la zona horaria.

Investigando encontre que el por que de este warning es que apartir de la version 5 de php en adelante, el parametro de zona horaria que anteriormente tenia un valor definido por default, dejo de tenerlo, es decir en las ultimas versiones de php por defecto el valor de la zona horaria viene en blanco, por lo cual nos vemos obligados a definirlo explicitamente de la siguiente manera:

date_default_timezone_set ("zona horaria");

en mi caso quedaria:

date_default_timezone_set ("America/Monterrey");

Luego entonces para que ese warning nos deje de molestar simplemente hay que agregar la linea anterior a nuestro codigo php con nuestra zona horaria respectiva, de preferencia al inicio, aunque esto no es relevante.

Links:
Para localizar la zona horaria que te corresponde haz click aqui
Para obtener mas informacion de la funcion date_default_timezone_set haz click aqui