jueves, 12 de noviembre de 2009

10 consejos esenciales para desarrollador de base de datos

Explicamos 10 consejos esenciales para todo aquel que sea desarrollador de base de datos. hacieno un repaso a lo más importante de cada una de ellas.

Ahora, vamos a detallar 10 trucos esenciales para desarroladores SQL:

Usa un lenguaje correcto

Un ejemplo muy claro de un correcto uso del lenguaje y sobre todo de los recursos de una base de datos es no darle más trabajo del que realmente se necesita. Con esto quiero decir que si por ejemplo necesitamos seleccionar de una base de datos los usuarios cuyo nombre empiecen por "Da" un fallo común será hacer lo siguiente:

SELECT * FROM usuarios WHERE user_nom like 'Da%';

Y vosotros pensaréis, ¿Que hay de malo en esta consulta?, pues el problema está en el (*), ya que esto quiere decir que la consulta va a recuperar todos los campos de esa tabla. En el caso de que tu tabla tenga sólo 3 campos, no habría problema, pero imaginaros una tabla de Usuarios donde tenga todo tipo de información como: nombre, apellidos, DNI, calle, plaza, ciudad, pais, edad, e-mail, contraseña, usuario, etc .. y si a esto le sumamos que en vuestra tabla pudiera haber 2 millones de registros, pues la cosa se pone muy fea.

Hagamos las cosas bien y si queremos recuperar solo el nombre la consulta la hacemos de la siguiente manera:

SELECT user_nom FROM usuarios WHERE user_nom like 'Da%';

De esta forma haremos que la base de datos sufra menos.

Código Seguro

Las bases de datos almacenan información muy personal o incluso financiera, por lo que suelen ser susceptibles de ataques.

Si no estas convencido sobre la seriedad de la seguridad en bases de datos, estos dos artículos pueden cambiar tu idea:

"The FBI and Virginia State Police are searching for hackers who demanded that the state pay them a $10 million ransom by Thursday for the return of millions of personal pharmaceutical records they say they stole from the state's prescription drug database." Read the Washington Post article
"Kaspersky Lab, a Moscow-based security company, admitted today that a database containing customer information had been exposed for almost 11 days and that it only learned of the breach when Romanian hackers told the firm about it last Saturday." Read the ComputerWorld article

Por tanto vamos a mostrar algunos consejos para poder solucionar algunos aspectos de seguridad de tu base de datos:

..... seguir leyendo .....

Patrón de Diseño Singleton en PHP5

"Patrón de Diseño Singleton


Artículo dedicado al entendimiento y uso del patrón Singleton en PHP5:


El Patrón de diseño "Singleton" está diseñado para restringir la creación de objetos pertenecientes a una clase, forzando a que solo se pueda crear una única instancia, de ahí su nombre Singleton (instancia única).


Un ejemplo de uso de este patrón: supongamos que tenemos una clase "Database" y instanciamos dicha clase, la cual nos devuelve un objeto llamado "$conn", una vez creada la conexión con la base de datos esta simple instancia será fácilmente accesible a muchos otros objetos, restringiéndose así a la creación de una única instancia la cual será reutilizada una y otra vez.


Aquí les dejo el link al artículo y espero que sea de su agrado:

Patrón de Diseño Singleton en PHP5



versión estable cake php 1.2.5

Curso de CakePHP CakePHP ha lanzado la versión estable 1.2.5, la cual es compatible con PHP 5.3 y contiene arreglos para suprimir los mensajes de desaprobación que se presentaban con la versión anterior.

Ir a página oficial de CakePHP

Patrón Decorator

Desde DesarrolladorSenior, Curso de Patrones de Diseño en PHP5 donde vemos el uso del Patrón Decorator.

Patrón de diseño Decorator en PHP5


Un Decorator responde a la necesidad de agregar funcionalidad a un objeto por medio de la asociación de clases. Es un objeto con el que se puede ejecutar funcionalidades de varias clases a la vez. Esto nos permite no tener que crear sucesivas clases que hereden de la primera incorporando la nueva funcionalidad, sino otras que la implementan y se asocian a la primera.

El uso de este patrón es equivalente a utilizar la herencia múltiple pero sin los problemas que esta conlleva como son: las colisiones de nombres y la herencia repetida.

Patrón simple factory

Desde DesarrolladorSenior. Curso de Patrones de Diseño en PHP5, donde vemos el uso del Patrón "Simple Factory".






Clasificación del patrón

Estructural.



Intención o problema que soluciona

Centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al usuario la casuística para elegir el subtipo que crear.

Entrevista web semántica – 3.0 para la revista Computing

“¿Qué novedades plantea la Web 3.0? ¿Qué diferencias existe con respecto a la Web 2.0?

No existe un consenso alrededor de lo que es web 3.0. De hecho, una de las definiciones típicas es la que constata un hecho puramente cronológico: Web 3.0 es la tercera década de la web. Si significará o no un cambio cualitativo, tema que es indudable para la web 2.0 o social, es algo que no sabemos aún. Sí podemos describir algunas de las tendencias hacia las que parece dirigirse la web de hoy. Algunas representan características más disruptivas que otras (web semántica) respecto a lo que tenemos hoy.

Otras, que voy comentando en El caparazón, serían según los analistas más relevantes en el ámbito anglosajón, cosas como la web en tiempo real, la web ubicua(con conceptos como Cloud Computing o Telefonía móvil), el Embodiment, la Internet de las cosas o la web contextual (entendiendo la que personaliza la experiencia del usuario según su contexto social, geográfico, etc…).

Quizás la teoría más extrema al respecto sea la de la Singularidad, que según la definición oficial supone que el progreso tecnológico y el cambio social se acelerarán debido al desarrollo de inteligencia super humana, cambiando nuestro ambiente de manera tal, que cualquier ser humano anterior sería incapaz de comprender o predecir.

Recomiendo la serie de vídeos de Simón Hergueta, además de otros sobre el tema que recopilaba en una entrada reciente (al final).

¿Qué es la web semántica y qué retos plantea?

La web semántica es aquella que se construye en un lenguaje que los ordenadores pueden “entender”. Se refiere, más allá de la transmisión de señales, a la comunicación.

Es una web de datos escritos en formatos interoperables, de bases de datos compatibles que construyen algo así como ámbitos conceptuales globales en toda la web. Son datos, dicho de otro modo, que los ordenadores pueden interpretar, relacionar con otros, etc… para devolvernos resultados o una experiencia de usuario más cómoda y satisfactoria.

Para que todo ello sea posible (y ese es el reto básico), debe definirse un estándar (el W3C es el organismo encargado de ello) además de traducir los conceptos del mundo a códigos informáticos (ontologías, otro de los retos). RDF y derivados son formas de marcar el contenido de cualquier página web de forma semántica.

El reto está en la interoperabilidad (la necesidad de que todas las páginas se adapten a un mismo lenguaje), además de en la complejidad, a la hora de marcar contenidos e incluso de definirlos.

Es, sin duda, una web mucho más costosa pero más eficiente a largo plazo.

¿Qué iniciativas hay interesantes sobre esa web semántica? En España hay algunos ejemplos?

Hay muchas iniciativas interesantes en Intranets o en el ámbito de la gestión del conocimiento corporativo. También en aplicaciones en sectores “verticales”, en los que es más posible la creación de ontologías, el trabajo de base para el funcionamiento de la web semántica. El turismo sería uno de los más beneficiados al respecto. El sector farmacéutico, la automoción son otros de los que el W3C recoge en su directorio (incluyo enlace a la presentación correspondiente en español al final)

Menos frecuentes son a nivel “mainstream” o generalizado, aunque Wikipedia, ahora Bing y el mismo Google estén trabajando ya con algoritmos semánticos. Como aplicaciones de éxito podemos hablar de Twine, una herramienta intermedia entre lo social (o de intereses), propio de la web 2.0, y la web semántica, en el sentido de organizar la información que recibe (los marcadores sociales) con ayuda de código semántico. El resultado es bastante bueno, logrando recomendaciones automáticas bastante adaptadas a nuestros intereses.

Es uno de los aspectos que trabajo con mayor profundidad en presentaciones, talleres, seminarios, etc… porque creo que el futuro éxito de esta web “mejor” depende, para un usuario cada vez más formado y exigente, del conocimiento de las ventajas que este tipo de acercamiento constituye. Tenéis, también al final de la entrevista, en los últimos slides de la última presentación que preparé sobre el tema de la web semántica – 3.0, muchos otros ejemplos de aplicaciones.

En su opinión, ¿Qué papel deberían jugar los gobiernos y la iniciativa privada para consolidar este tipo de web?

El papel de los organismos reguladores, de instituciones (el W3C es la fundamental) que definan los estándares o ese lenguaje común, es crucial. Tim Berners-Lee trabaja en la “linked data web”, la web de los datos enlazados o la traducción de bases de datos públicas en distintos gobiernos a los estándares, para gobiernos como el de UK o EEUU.

Son muchos los organismos, las instituciones y empresas privadas que están entrando en la “Linked data cloud” (nube de datos interoperables). Sería, por decirlo de forma metafórica, hacer una apuesta por formar parte de un mundo web ordenado.

Existen gráficos acerca de su evolución en términos de número de agentes implicados y el crecimiento resulta muy importante en 2009, aunque está lejos aún de ser mainstream.

Podéis observar el tema en los gráficos. El primero corresponde a 2008, el segundo a 2009:

lod-datasets_2008-03-31

lod-datasets_2009-03-05-scaled

¿Qué funciones tendrá la publicidad en este contexto? ¿cómo encajará?

La publicidad semántica puede mejorar la precisión, la relevancia de la actual publicidad contextual. Esto ser entiende mejor desde una afirmación de Winer: “La publicidad perfectamente adaptada a nuestros intereses es contenido”, considerada información y no spam.

Puede ser, de hecho, uno de los ámbitos en los que la aplicación de este tipo de tecnologías puede resultar más rentable.

Se trata de ir más allá de los sistemas de “Behavioral advertising” o publicidad según nuestro comportamiento como internautas (basados en cosas como introducir cookies y software “espía”, entre otros muchos atentados a nuestra privacidad).

Hakia, una de las startups de lo semántico decía al respecto: “Si un 90% del tráfico de tu sitio viene de los buscadores, es porque los lectores de tu contenido vienen con una “orientación mental de búsqueda”. La publicidad relevante corresponde a esta mentalidad. Si los resultados son pobres en cuanto a relevancia y los anuncios parecen malos, generarás mala imagen en tu espacio, como de la publicidad en internet en general”

Existen ejemplos muy aparentes acerca de la diferencia entre bloques de publicidad de ambos tipos. Es uno de los recursos frecuentes en formación de este tipo de tendencias.

¿Llegará la rentabilidad a este tipo de iniciativas?

Demuestran ya su rentabilidad en Intranets, son inversiones a largo plazo. Pero la rentabilidad es precisamente uno de los principales obstáculos a esta “web mejor”. Ayuda mucho a comprender la evolución de la web y su futuro, recordar cómo la web semántica es tan poco web 3.0 en el sentido cronológico que la definíamos al principio, que surgió, de hecho, antes de la 2.0 actual (también en esto existen matices y definiciones del momento actual como de transición, 2.5…).

Tim Berners Lee pensó la web como algo mucho más elaborado que lo que tenemos ahora. Han sido criterios prácticos, la prioridad en el abaratamiento de los costes, las “prisas” en la construcción de una web social mínimamente rentable, los que han guiado la actual arquitectura, técnicamente muy mejorable, de la WWW. Y es posible que el mismo imperativo económico frene su evolución.

Es así, de hecho, si tenemos en cuenta la aparente resistencia de Google, que argumentaba hasta hace muy poco que la semweb era simplemente imposible, de muy difícil (y costosa) implementación. Es difícil, cuando todavía están por definir los modelos de negocio de la web social, cuando todavía es complicado rentabilizar de modos alternativos toda la oferta de contenidos, aplicaciones y servicios libres, apostar por sistemas mucho más difíciles de implementar que cosas tan simples a nivel tecnológico como Twitter, con una inversión inicial (y por tanto una asunción de riesgo) mínima.

Aún así, la competencia, el hecho de que dotar a nivel real o como estrategia de márketing, del adjetivo “semántico” a cualquier aplicación (de hecho, fue uno de los términos que generó ruido sin ser del todo adecuado para al lanzamiento de Wolfram Alpha), le añada valor en un mercado colapsado, puede ayudar a avanzar en la dirección correcta. Es el caso del propio Google, que siguiendo con lo anterior, estaría incorporando desde hace un tiempo, coincidiendo con la aparición de Bing (motor de búsqueda de Microsoft, que previamente adquiría Powerset, un buscador semántico) algoritmos semánticos a su sistema.

¿La Web 3.0 es viable a día de hoy desde un punto de vista tecnológico? ¿Están habilitados y disponibles todos los recursos que necesita?

Si obviamos la metafísica, las teorías de la singularidad que suponen la aparición de una inteligencia cibernética independiente de la humana y que, como veíamos, se inscriben también en la cultura de la web 3.0 y semántica (o inteligente), podemos contestar de forma afirmativa a esta pregunta.

Los recursos que precisa la web semántica van construyéndose día a día. Si hace unos años eran las Universidades los únicos agentes encargados de escribir, de definir las ontologías necesarias para su evolución, hoy son gobiernos, empresas privadas, organizaciones públicas las que también contribuyen.

No es fácil, pero también son cada vez más sofisticadas las herramientas de semantización de los UGC (contenidos generados por el usuario) propios de la web social. La web 3.0 entendida como semántica es una tendencia que abarcará posiblemente los próximos, ya no 10 (recordemos la definición como tercera década de la web) sino posiblemente 20 años que vienen. La web semántica es un proceso, una forma de seguir construyendo la web, no un resultado posible al 100% en cualquier momento concreto.”

plone para phyton

Hola a todos!. Estoy muy interesado en un cms que se llama plone y que se desarrolla en zope, todo programado en python. Estoy intentando aprendera a hacer webs con plone, creo que tiene muchisimas posibilidades, me he comprado un libro Building websites with Plone, esta en ingles y lo voy leyendo despacio. Creo que este sistemas de hacer webs es muy profesional y con muchas posibilidades, ademas esta programado con python con lo que se puede modificar facilmente y crear nuevos contenidos.

http://www.plone-es.org
http://plone.org/
http://www.plonehispano.com/foro/