Los 10 errores mas comunes al programar orientado a objetos en PHP

El dominio de la programación orientada a objetos es, sin duda, uno de los paradigmas más codiciado por los programadores. Sin embargo, muchas veces estos cometen "atrocidades" al intentar implementarlo solo por decir a sus amigos, empresas u otros "Yo sé programar orientado a objetos".

Los 21 errores más comunes al programar con php

Leyendo en Zend.com, encuentro una completa lista de errores comunes de los programadores de PHP.
Aunque muchos de los que programamos constantemente en PHP hemos superado varios puntos, siempre hay cosas en las que caemos, pudiendo mejorar la calidad de nuestro código.

Los errores están divididos en 3 partes, siendo los primeros

SNAPSHOT DATABASE

Han visto que el Object Explorer en el SQL Server Management Studio donde se encuentran las bases de datos hay una carpeta que dice Database Snapshots.

Esto puedo confundir mucho ya que pareciera que fuera parte de la replicación pero no es así, realmente es una base de datos sólo lectura, estática basada en una base datos normal (fuente).

En la parte de abajo hay un ejemplo reemplacen la información por sulla y aparecerá ya base datos bajo la carpeta de Database Snapshots.

Cuál es su función:
Pueden ser utilizados para los informes. Asimismo, en el caso de un error del usuario en una base de datos de código fuente, puede restaurar la base de datos fuente al estado en que estaba cuando se creó el snapshot.

La pérdida de datos se limita a las actualizaciones de la base de datos desde su creación de la instantánea. Además, la creación de una snapshot de base de datos puede ser útil inmediatamente antes de hacer un cambio importante de una base de datos, como cambiar el esquema o la estructura de una tabla.

Tiene 3 posibles usos:


• Mantener los datos históricos para la generación de informes (Reporteria)
• Protección de datos de errores de usuario (Backup).
• La gestión de una base de datos de prueba (Base datos de pruebas)

Importante:
Database snapshots, fueron introducidos en SQL Server 2005, sólo están disponibles en las ediciones Enterprise de SQL Server 2005, SQL Server 2008 y SQL Server 2008 R2.

En la parte de abajo hay un ejemplo reemplacen la información por sulla y aparecerá ya base datos bajo la carpeta de Database Snapshots.

Crear una base datos snapshots



SNAPSHOT CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks
;


Si hacer un restore de en base a un SNAPSHOT seria de la siguiente manera:

Restore


USE master
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO


Que permisos necesito para crear una:
La única manera de crear una SNAPSHOT CREATE DATABASE es utilizar Transact-SQL. Cualquier usuario que pueda crear una base de datos puede crear una snapshot de base de datos, sin embargo, para crear una instantánea de una base de datos reflejada, usted debe ser un miembro de la función de servidor sysadmin.

Articulo de referencia:
http://msdn.microsoft.com/en-us/library/ms175469.aspx
http://msdn.microsoft.com/en-us/library/ms187054.aspx
http://www.sqlcoffee.com/Tips0004.htm

LINQ paralelo ( PLINQ ) para SQL server

Lo primero es que no corre con el framework 3.5 tiene que trasladarse ya al 4.0

Los procesadores multinúcleo ya están aquí. Los procesadores multinúcleo solo estaba disponibles para servidores y PCs de escritorio. Pero ahora, ya se están usando en teléfonos móviles y PDA, lo cual genera grandes ventajas en relación con el consumo de energía. En respuesta al aumento de disponibilidad de plataformas con procesadores multinúcleo, Parallel Language Integrated Query (PLINQ) ofrece una manera fácil de sacar partido del uso de hardware paralelo, incluidos equipos tradicionales con varios procesadores y la última ola de procesadores multinúcleo.

PLINQ es un motor de ejecución de consultas que acepta cualquier consulta LINQ to Objects o LINQ to XML y usa automáticamente varios procesadores o núcleos para su ejecución cuando estos están disponibles. El cambio en el modelo de programación es minúsculo, lo cual significa que no es necesario ser un gurú para usarlo.

Usar PLINQ es casi exactamente lo mismo que usar LINQ to Objects y LINQ to XML. Puede usar cualquiera de los operadores disponibles.


Ejemplos con conexión a base de datos.

Linq
var query = from c in db.Customers
where c.Country == "USA"
orderby c.CompanyName
select new { c.CustomerID, c.CompanyName };

plinq
var query = from c in db.Customers.AsParallel()
where c.Country == "USA"
orderby c.CompanyName
select new { c.CustomerID, c.CompanyName };


El genio Joe Duffy es el responsable de desarrollo del equipo Parallel FX de Microsoft y participa habitualmente en el blog www.bluebytesoftware.com/blog. Está escribiendo un libro, Concurrent Programming on Windows, que va a ser publicado por Addison-Wesley.

Transliteración de Español a Ruso

Hola SQLeros el día de hoy comparto con ustedes una pequeña aplicación que permite transliterar algo escrito en español a ruso, es decir con el alfabeto cirilico.



Bueno les dejo el codigo y les mando un afectuoso saludo. Y gracias a RCK, por la ayuda.

¡Hasta pronto!

Conexión PHP - PostgreSQL

Para empezar a usar PostgreSQL con PHP, primero deberás conectarte a él. Esto es realizado con la función pg_connect(). Esta función es muy directa y solo espera un argumento, la cadena de conexión. La cadena de conexión contiene toda la información necesaria para conectarse a la base de datos. Los argumentos válidos para la cadena de conexión son el servidor, puerto, tty, opciones, nombre de la base de datos, usuario y contraseña. Normalmente te conectas a la base de datos de la siguiente forma:



CREACIÓN DE UNA TABLA CON PG_QUERY


Ahora creemos nuestra primer tabla. Haremos un script para ello, mostrando el uso de pg_query(). Crearemos una tabla llamada Contactos con los campos 'nombre', 'apellidos', 'email'. Para hacerlo, usa la siguiente consulta:


Si ocurrió algún error al usar este script, entonces verifica si proporcionaste el usuario y contraseña correctos, y verifica que PostgreSQL este corriendo. También se cuidadoso, ejecuta este script una sola vez y después borralo. De otro modo obtendrás errores diciendo que ya existe una tabla llamada "contactos".


Nota: También puedes usar una herramienta de administración para ejecutar la consulta anterior. Para ello existen PHPPgAdmin yWebMin.



INSERCIÓN DE REGISTROS EN LA BASE DE DATOS


Ahora que ya tienes una tabla, es tiempo insertar algunos registros en ella. Es hora de usar la función pg_query de nuevo. En esta ocasión guardaremos información dentro de nuestra base de datos. Usaremos el comando SQL 'INSERT' para hacerlo, su sintaxis es la siguiente:



INSERT INTO nombre_tabla (columna1, columna2,...) VALUES (valor1, valor2,....)

donde; nombre_tabla es el nombre de la tabla, en los paréntesis puedes especificar en que columnas quieres insertar datos. En los valores, pondrás lo que quieres guardar en la base de datos de este modo INSERT INTO contactos VALUES ('Juan', 'Perez' , 'juanperez@dominio.com ') insertaría Juan como nombre, Perez como apellidos, y juanperez@dominio.com como dirección de email. Ahora escribamos un script para hacer esto.



' );
document.write( addy80860 );
document.write( '<\/a>' );
//-->\n ')";
$result = pg_query($query);
if($result)
{
echo "El registro ha agregado";
}
else
{
echo "Ocurrió un error ! ".pg_last_error();
}
?>

Esto debió haber hecho lo que queríamos, si fallo verfica tu consulta e intenta de nuevo. Si todo marchó bien, insertemos más registros. De hecho, ¿por que no hacemos un formulario para insertarlos?. Para eso debemos empezar con una formulario muy básico.




Nombre:
Apellidos:
Email:


Ahora debemos agregar los valores reales a nuestro formulario. Primero debemos verificar que todos los campos hayan sido llenados, y entonces insertarlos en la base de datos:



		

Nombre:
Apellidos:

Eso es todo. Ya tenemos un formulario para insertar registros dentro de nuestra base de datos, si lees los comentarios deberás entender completamente que hace cada parte del script.



VISUALIZACIÓN DE LOS REGISTROS EN LA BASE DE DATOS


Ahora que ya podemos agregar registros a nuestra base de datos, necesitaremos ver todos los registros en la misma. Eso podemos hacerlo usando el comando SELECT de SQL. Ten en cuenta que aún seguimos usando la función pg_query(). Si quisieramos mostrar todos los campos de la base de datos, podríamos hacer un script que seleccionara todos (* en SQL) los registros.


No te preocupes si no entiendes cada parte del script. Tan solo use la función pg_fetch_array() para traer los resultados de la consulta dentro de un arreglo asociativo. Las llaves del arreglo son nombradas después de los nombres de columna de la tabla. De este modo $row['nombre'] contendrá lo que haya en la columna "nombre" de nuestra tabla, simple ¿no?. La variable $query es la consulta que quieres traer. NULL es el número de fila, cuando especificas NULL, la función simplemente se saltará ese parámetro. El último parametro, el que dice PGSQL_ASSOC, elige que tipo de arreglo regresará. PGSQL_ASSOC tendrá arreglos con los nombres de columna como llaves. PGSQL_NUM regresará un arreglo númerico, y PGSQL_BOTH regresará ambos. Como nota final, puedes reemplazar cada uno de los echo's por un print_r() para ver el arreglo completo.



ACTUALIZACIÓN DE REGISTROS


Ahora veremos el comando update, que es bastante sencillo. Su sintaxis es: UPDATE nombre_tabla SET nombre_columns = nuevo_valor WHERE nombre_columna = algun_valor. Así UPDATE contactos SET nombre = 'Juanito' WHERE apellidos = 'Perez Perez' pondría el valor 'Juanito' en los registros donde 'Perez Perez' sean los apellidos.



		

Nombre:
Apellidos:

LIMINACIÓN DE REGISTROS



Finalmente cubriremos como borrar registros de nuestra base de datos. Para comenzar modificamos el script de visualización de registros para crear un enlace a nuestro script de borrado:

';
}
}
else
echo "Ocurrió un error ! ".pg_last_error();
}
?>

La única línea añadida al script es la sig:

La cual agrega un enlace al script de borrar.php pasando como parámetro el e-mail del registro a eliminar. Y ahora el código del script de eliminación.

CONCLUSIÓN


Ok, si me seguiste hasta aquí, probablemente estes pensando que PostgreSQL no es muy diferente de MySQL, es verdad. Como lo dije al principio de este tutorial, este es un tutorial BÁSICO. Si llegaste hasta aquí sin ningún problema, te recomiendo que leas la documentación de PostgreSQL y veas algunas de sus características. Hay un mundo entero más allá de MySQL.



Porque es importante la programación paralela

Cuando hablo con alguna gente acerca de las novedades de Visual Studio 2010 y sale lo de las mejoras para la programación en paralelo, mucha gente lo ve como una

Java4Ever

No, no, no para nada no me he vuelto maricón, lo que pasa es que me encontré este video y se me hizo algo gracioso. No se lo pueden perder...



Ah jaja ¡espero y eso nunca me lo hagan mis hijos! Ah jajaja, esta muy buena la forma para programar, ¡tendré que probarla!


¡Saludos!

Crear Interfaces Fluidas en C #

Eric Evans y Martin Fowler fueron los responsables de esta tendencia llamada Fluent Interface. El objetivo de la misma no era otro que el de mejorar la legibilidad del código. Para saber cómo son

DocTranslator: Traduce documentos de Office conservando su presentación

DocTranslator es un servicio online gratuito que te permite traducir los textos de Office, conservando su formato y presentación intacta.


Las traducciones son realizadas a través de Google Translate en sus 50 idiomas, no hay límite en el tamaño del documento a traducir y no se necesita estar registrado para utilizar el servicio.


Documentos de Word y Excel son totalmente compatibles y también lo son archivos .txt. En caso de que use un sistema operativo diferente a Windows, deberás consultar la tabla de compatibilidad.


¡Saludos!

Codeplex: Hostea tu proyecto OpenSource

Si bien en sus inicios, el sitio fue muy criticado, por ser una copia de SourceForge.net


Hoy te vamos a hablar de  CodePlexde Microsoft, el que ya lleva su buen tiempo en la red, convirtiéndose en un sitio muy visitado por los programadores.


CodePlex es una herramienta que ayuda a los desarrolladores en su administración de proyectos Open Source.


Estas son algunas de las características y prestaciones que podemos encontrar en CodePlex:




  1. Posibilidad de publicar nuestros proyectos open source.

  2. Hosting para nuestros archivos de código.

  3. Página para el proyecto.  Es posible editarla.

  4. Administración de miembros del equipo de desarrollo.

  5. Upload de código.

  6. Manejo de versiones.

  7. Comunidad y área de discusiones para nuestro proyecto.

  8. Subscripciones vía RSS.

  9. Los usuarios pueden escribir reviews o comentarios por cada versión.

  10. Estadísticas de proyecto.

  11. Varios tipos de licencias para escoger, entre ellas figuran GNU y GNU v2


Proyectos interesantes publicados en el sitio:




  • AjaxControlToolkit Un conjunto de herramientas de Ajax para aplicaciones ASP.NET

  • SilverLight Toolkit Una colección de controles para la plataforma SilverLight

  • BlogEngine Es un programa con prestaciones similares a las que ofrece WordPress hecho en .NET

  • IronPython La implementación de Pythom para .NET

  • FacebookToolkit Herramientas para la manipulación de la API de Facebook

  • MVC Samples Conjunto de aplicaciones ejemplo de MVC de Microsoft

Escuchando Ahora: Actualiza tu estado de facebook con lo que escuchas en winamp


Hace una semana estaba langareando muy feliz, en mi casa y se me ocurrió una brillante idea… Vaya sé que no es original pero se me ocurrió.


Pensé:
¿Existirá una aplicación que sea capaz de poner lo que estoy escuchando en winamp en mi muro de publicaciones de Facebook?

Hola Mundo con PHP y el API de Facebook

Ultimamente me esta interesando bastante el tema las APIs de Facebook y Twitter. Asi que me decidi a buscar info y como siempre la comparto con todos ustedes.


El dia de hoy quiero mostrarles como hacer su primera aplicacion para facebook usando PHP. No es una aplicacion para nada util pues solo muestra un ‘Hola mundo’ seguido de tu nombre. Pero antes hay que entender algunas cosas.

XSS – Cross-Site-Scripting IV

Defendiendo Nuestros Usuarios.


Las formas más sencillas de defender nuestros usuarios son mediante las siguientes acciones:

Cookies:

Evitar almacenar datos vitales

XSS – Cross-Site-Scripting III

Defendiendo Nuestra Aplicación.


El primer modo de defensa que veremos, será la defensa de nuestra aplicación, misma que nos enseñara técnicas sencillas para defender nuestro sitio mediante la validación de entradas de datos.


Tenemos que tener claro que lo que debemos hacer es impedir la entrada de scripts en nuestros campos de inserción de datos, validando cada entrada para asegurarnos que no contenga código que pueda afectar nuestra aplicación o a nuestros usuarios.




  1. Limitación de caracteres de entrada.
    Lo primero que debemos hacer

XSS - Cross-Site-Scripting II

Al referirnos al Cross-Site-Scripting podemos encontrar bastante material didáctico acerca del tema, algunos de ellos describen los modos de ataques como directos e indirectos, pero realmente creo que podemos simplificar y enfocar de una forma mas directa en dos simples componentes que son:


1. Ataque al usuario.
2. Ataque al Aplicativo.


XSS - Cross-Site-Scripting I

El Cross-Site-Scripting, conocido también como XSS por sus siglas en ingles, es una vulnerabilidad que muchos desarrolladores dejan pasar por alto, quizás por falta de un planeamiento de análisis de riesgos en el proceso de diseño, desarrollo e implementación de sus aplicativos, o simplemente no lo vean como una falla que les va a presentar problemas en su aplicación, incluso por desconocimiento de esta vulnerabilidad.


¿ASP.Net o PHP?

Hace algún tiempo inicié con una serie de posts sobre .NET y por razones de tiempo no pude continuar con la regularidad que me hubiera gustado, pero bueno, aquí estoy de nuevo retomando los temas pendientes.

¿Peras o manzanas?, así de absurdo es intentar comparar estas 2 tecnologías. Es como querer comparar un camión con una carretera. Igualmente puede resultar decir cosas como “PHP es mejor que ASP.NET” (o viceversa), en todo caso el punto de comparación adecuado sería PHP con ASP “clásico” (la versión anterior), tecnología obsoleta desde el año 2000 aprox. Personalmente conozco las 2 tecnologías y he trabajado varios años con cada una de ellas. Pero bueno, entonces, ¿Cuál es la diferencia?…

PHP es un lenguaje de scripts, es decir que cada vez que se solicita una página PHP, se necesita interpretar el código para después ejecutarlo. Sin embargo, esto también tiene sus ventajas como por ejemplo, para hacer un cambio en un script PHP, solo se necesita guardar el archivo y listo. En general no es necesario compilar, registrar DLL’s o componentes en el sistema operativo del servidor.

En el caso de ASP.NET recordemos que es parte de toda una plataforma de desarrollo, la plataforma .NET. Como decía en el post anterior, el .NET no sólo sirve para crear páginas Web. Es por esto que ASP.NET se convierte en una opción mucho más poderosa en cuanto a la versatilidad. Al ser ASP.NET un componente de interface de todo el .NET Framework, ASP.NET puede servir para crear una interface Web rápida y fácilmente de por ejemplo, una aplicación Win32 (o de escritorio) reutilizando casi todo el código, o construir rápidamente una capa de Servicios (Web Services) que pueda ser aprovechada por aplicaciones móviles, Web y de escritorio simultáneamente. Esto tiene un valor muy grande sobre todo para empresas, donde el beneficio es construir rápidamente (y por lo tanto más barato) aplicaciones que puedan interactuar con otras ya existentes en la organización, o inclusive hacerlo con productos ya existentes.

Sin embargo, la implementación de una aplicación ASP.NET puede no ser tan simple como copiar y pegar los archivos. Y esto es porque ASP.NET solo se interpreta una vez, se pre-compila y cada vez que se ejecuta una página, el código se ejecuta directamente, sin pasar por la interpretación. Esta forma de interpretar el código solo una vez y después ejecutar directamente el código “compilado” es muy similar a la forma en que funcionan las páginas Web de JAVA (Una comparación de iguales sería más bien ASP.NET y JSP). En el caso de PHP, hay un producto desarrollado por Zend, que permite hacer un proceso similar de “pre-compilación”, para no tener que interpretar en cada solicitud el código con productos como el Zend Optimizer.

ASP.NET fue creado para poder desarrollar aplicaciones empresariales, que sean rápidas de desarrollar, que permitan ser escalables (en general agregar más servidores fácilmente), que puedan ejecutar procesos críticos o de alto impacto en la operación de la empresa, etc. Por todo lo anterior, el argumento de que “PHP es gratuito” no es necesariamente válido para una organización, donde el valor que tiene su información los hace no escatimar en la inversión para implementar sus sistemas. Es de sobra sabido que simplemente con los costos de licenciamiento de Windows, SQL Server (y toda la gama de productos extra que se pueden agregar), el costo de crear una aplicación puede crecer bastante, sin embargo el tiempo de desarrollo puede ser dramáticamente menor, lo que para la mayoría de las empresas resulta más redituable al poder tener en mucho menos tiempo una aplicación que empiece a recuperar la inversión rápidamente.

PHP es open source, y fue creado como hobbie. Está pensado específicamente para el Web y también tiene como objetivo ser extremadamente fácil de aprender. Sin embargo, por su naturaleza open source, ha tenido que pasar por un largo proceso de entrar al mundo empresarial y a ganarse el respeto como para que se decida crear una aplicación crítica en PHP. Hoy en día ha empezado a ganar mucho terreno en este campo, gracias a que algunas empresas han decidido utilizar el open source para su infraestructura y PHP es la elección natural en ese proceso. También gracias a los esfuerzos de Zend (empresa fundada por los inventores de PHP) de hacerlo atractivo para las empresas con iniciativas como el reciente Zend Framework o la Zend Platform que tratan de atender requisitos empresariales puntuales.

Otro hecho que debe ser interpretado con cuidado, es la penetración en el Web de cada tecnología. Estadísticamente, PHP es amo y señor del Web, ya que posee la mayor cantidad de sitios, sin embargo, la gran mayoría de esos sitios son páginas personales, blogs (basados en scripts como WordPress), foros (basados en scripts como phpBB), etc. que en su mayoría no son sitios con fines de poner en línea procesos críticos de negocio empresariales, por lo tanto es una cifra que no necesariamente significa que al ser la tecnología más utilizada sea “mejor”.

Así que, cuando oigas esta pregunta podrás responder con algo así como “Depende lo que quieras hacer, que plataforma tienes disponible, que presupuesto, que tan crítico es el proceso que quieres automatizar, es necesario interactuar con otras aplicaciones?, cuáles son tus necesidades de performance, etc”. Finalmente en este mundo del desarrollo de sistemas es mejor ser versátil que estar “casado” con uno u otro lado de la moneda

CODEORGAN:¿A qué suena tu sitio web?

Buen día SQLeros!! En esta ocasión estaba langareando en Internet y me encontré con una aplicación muy interesante, la cual esta desarrollada en Flash, y convierte el sitio web que le proporcionamos en una linda canción (Bueno a veces no pero esta chusca la cosa esta :) ).





[caption id="" align="aligncenter" width="300" caption="http://www.codeorgan.com/"]http://www.codeorgan.com/[/caption]

Ahora según nos cuenta el About del sitio, codeorgan, toma le código de la página y analiza el el contenido del cuerpo y lo transforma en musica, removiendo todos los caracteres que no se encuentran en la escala musical, es decir solo deja de la A a la G, despues de esto selecciona el sintetizador para el sonidito, donde se utiliza el número total de caracteres en el sitio.


Actualmente se cuenta con 10 estilos de sintetizadores y estos son utilizados de acuerdo a un porcentaje del contenido del sitio.


Y finalmente para definir el ritmo de la batería se utiliza la razón entre el número de caracteres de la página y el número de caracteres que son notas musicales y de igual forma se cuenta con 10 patrones de batería.


Al final de todo la (pinche) página suena (no!?). Acá el vinculo CODEORGAN.


Un Saludo!!