25 sept. 2007

10 errores comunes programando 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".

A continuación verán una lista de 10 cosas que no se deben hacer al implementar programación orientada a objetos enfocándonos en el lenguaje PHP.

  1. Usar variables globales dentro las clases: una de las ventajas más importantes de la programación orientada a objetos es la reusabilidad de los códigos. Al usar variables globales ($_GET, $_SESSION, $_POST, $_COOKIE, global) dentro de las clases, esta se ve comprometida considerablemente. La razón es que todos los proyectos no tienen las mismas variables globales.

  2. Mezclar código HTML en la definición de las clases: es una de las cosas que me sorprenden cada vez que la veo. Es inaceptable que esto se le haya ocurrido a algunos. Al mezclar HTML en el código PHP se compromete la reusabilidad de la clase, no todos los proyectos tienen el mismo código HTML.

  3. Imprimir salida (echo) dentro de las clases: aunque esto se parece a la anterior, me refiero a los echo o similares dentro de los métodos. Si una clase no está destinada para emitir salida no lo debe hacer. Para eso muchos utilizamos sistemas de plantillas.

  4. Identificadores de clases, métodos y propiedades sin sentido: un identificador siempre debe ser lo más descriptivo posible. A muchos le gusta usar identificadores increíblemente irrelacionados con su propósito. Esto compromete enormemente la lectura de un código. (Mira las reglas de codificación en PHP)

  5. Mezclar uso de versiones de php en una misma clase: a partir de la versión 5 de PHP, la programación orientada a objetos se puede implementar de una manera más formal, pues se introdujo los modificadores de visibilidad public, private, protected. Aparte de que se pueden crear clases de alto nivel (clase Abstractas) y métodos abstractos con la palabra reservada abstract. También se pueden definir los métodos y propiedades estáticas formalmente con la palabra reservada static. Mezclar la programación orientada a objetos en PHP 4 (donde todo era publico) con la de PHP 5 hace un código “sucio”. Consejo: elige una de las versiones y programa para ella.

  6. Más de una clase en un mismo archivo: definir distintas clases en un mismo archivo es otra de las cosas que no se debe hacer. Las clase se han de componer lo más reusables posible y si puedes nombrar al archivo con el nombre de la clase muchísimo mejor. Sigue el camino de los grandes lenguajes como: Actionscript, Asp.net, Java entre otros.

  7. No hacer pruebas unitarias a las clases: al terminar de codificar una clase recuerda de hacer pruebas unitarias para asegurar el correcto funcionamiento de clase. Esto es simplemente probar todos los posibles caminos que pueda tomar un estado (propiedad), parámetro de método, etc para que la clase no “explote”.

  8. Todos los métodos y las propiedades publicas en una clase de PHP 5: los programadores novatos cometen el error de definir todos los métodos y propiedades como públicos, por desconocer las ventajas de los modificadores visibilidad. En PHP este es un problema grave porque no hay tipeado de datos. El problema de las propiedades públicas es que no podemos controlar de manera fácil el tipo de datos que contiene por lo que nuestra clase pudiera explotar por un tipo de dato inesperado. Si no estas seguro de que visibilidad le debes poner a una propiedad hazla privada. Valida los tipos de datos de las propiedades al menos de una manera básica.

  9. Duplicación de métodos para ocultar falla de lógica: A diferencia de otros lenguajes como Java y C++, PHP no admite la sobrecarga de métodos. Al menos no de la manera tradicional. Esto, sin embargo, no es excusa para duplicar métodos sólo porque un dato cambia para la operación que éste realiza.

  10. Variables de configuración dentro de las clases: Los datos de configuración de base de datos, web services y otros deben ir en un archivo de configuración aparte, NO dentro de la clases que hacen uso de estas. Aunque se admite en clases que sea exclusivamente para ello.
Tomado de http://www.cristalab.com/blog/41916/10-errores-comunes-programando-orientado-a-objetos-en-php

15 sept. 2007

Un poco de seguridad en redes WIFI

Simplemente daré algunos consejos para proteger nuestra red inalámbrica de manos ajenas, la metodología varia según el router ( que tengamos 3com, Zyxel , GST, Lynsys, D-Link… así que estos son los pasos a seguir :)


1- Inhabilitar la emisión de broadcast del SSID, esconder el ESSID.

Con esto evitaremos que nuestra red pueda ser detectada por cualquier scanner, si no sabemos el nombre no podremos conectarnos.

2- Activar el filtrado de direcciones Mac.

De esta forma solo podrán acceder a la red aquellos ordenadores cuya Mac de su tarjeta de red este configurada en nuestro router ( a menos que nos suplanten la dirección Mac) :S .

3- Utilizando passwords.

Poniendo una clave WPA o WEP ya estaremos poniéndole las cosas más difíciles a cualquiera que quisiera entrar en nuestra red.


4- Cerrando puertos.

Esto puede variar según el router, lo configuraremos de tal manera que solo se pueda acceder al router por medio de nuestra Lan nunca desde Internet. (23 Telnet (nuestro router) , 21 FTP, 80 http, etc…).

5- Cambiando el user y pass por defecto.

Cambiaremos el Usuario y pass de acceso por defecto al router, normalmente suele ser 1234, adminttd, intel… depende del modelo.

6- Poniéndole nombre a nuestra red.

Si seguimos el paso 1 y dejamos el nombre por defecto “Wireless“, cualquiera podría entrar,… por ello cambiaremos el nombre, y si encima ponemos algo de “Lan” “WLAN”, quizás hagamos pensar que no tiene salida a Internet por ejemplo…, aquí cada cual con su imaginación :P .

7- Inhabilitar DHCP.

Las ip’s deben ser fijas, no se le asignara ip a alguien que intente conectarse, por lo tanto se lo tendrá que currar adivinando los rangos y tal.

8- Actualizar el firmware del router.

Esto como siempre depende del modelo, a mi personalmente solo me ha servido para que valla mejor el aMule y añadirle una nueva característica a la configuración de mi Router para poder limitar el ancho de banda, aparte de esto suelen también corregir alguna falla de seguridad, bug…

9-Reducir el alcance de la señal.

Reducir la señal lo justo que necesitemos (esto varia según el modelo del router, en algunos no es posible).

10- Desconectar el punto de acceso cuando no este en uso.

Lógico, ¿si no lo usamos para que tenemos nuestro router encendido?, ¿para que el vecino navegue por el hiperespacio?, ¡a menos que dejemos nuestro ordenador con la mula, server, irc o lo que sea, claro!.

Creo que con estos pasos nuestra red estara un poco mas segura :)

5 sept. 2007

Optimizar ICEWEASEL para navegar más rápidamente

Escribimos en la barra de direcciones de Iceweasel lo siguiente: about:config
En el campo "filtro" ponemos: pipelining

Modificamos los valores tal como aparecen aquí. Para ello hacemos doble click sobre cada línea.
network.http.pipelining como true
network.http.pipelining.maxrequests como 10
network.http.proxy.pipelining como true



Por último, creamos un nuevo valor picando con el botón derecho en un espacio vacío y seleccionamos NUEVO / ENTERO y escribimos:

Nombre de la cadena: nglayout.initialpaint.delay [ENTER]
Valor: 0 [ENTER] es un cero

Una vez realizados estos pasos y dependiendo de la conexión, la navegación será más rápida, pues el navegador procesará varias consultas a la vez y mostrará los datos conforme van llegando.

Fuente: http://www.therror.com/weblog/2005/ago/como_optimizar_firefox

Instalar Envy en Debian Lenny y Sid

Envy es un script de instalación de drivers gráficos del que ya hemos hablado en Kernel Source. En principio fue diseñado para Ubuntu, aunque más tarde dio soporte para Debian Etch. Ahora en su blog oficial explican algunas modificaciones que aplicarle al script para que los usuarios de Debian Lenny (testing) o Sid (inestable) puedan usarlo en sus sistemas. Si es tu caso y quieres usar Envy debes editar el fichero /usr/share/envy/instun/classes.py, y en la línea 324:

 elif self.details['osname'] == 'cassandra':#SUPPORT FOR LINUX MINT CASSANDRA
self.details['osname'] = 'feisty'#this will make it act like feisty

Si usas Debian Lenny (testing) sustituir donde pone ‘cassandra‘ por ‘lenny‘ y donde aparece ‘feisty‘ por ‘etch‘. En caso de querer adaptarlo a Debian Sid (inestable) habrá que poner ‘sid‘ en vez de ‘lenny‘:

 elif self.details['osname'] == 'lenny':#SUPPORT FOR LINUX MINT CASSANDRA
self.details['osname'] = 'etch'#this will make it act like feisty

Como siempre digo con este tipo de scripts hay que ser muy cuidadoso, ya que no son herramientas que realicen su tarea con la eficiencia de los gestores de paquetes de las distribuciones. No digo que no sean útiles, sólo que se debe extremar la precaución por ejemplo haciendo copias de seguridad de los ficheros de configuración de las X (/etc/X11/xorg.conf). No en vano, estaremos configurando la tarjeta gráfica y si algo falla, obtendremos una bonita terminal como premio.

4 sept. 2007

La insólita ocurrencia de una pareja china

Una pareja china ha intentado llamar a su hijo “@”, alegando que el caracter usado en las direcciones de correo electrónico se hacía eco de su amor por el bebé.

El inusual nombre sorprende especialmente en chino, que no tiene alfabeto y en su lugar usa decenas de miles de caracteres múltiples para escribir las palabras.

“El mundo entero lo usa para escribir el correo electrónico, y traducido al chino significa ‘lo queremos’”, explicó el padre, según el vicerresponsable de la Comisión Estatal del Lenguaje, Li Yuming.

Aunque la “@” es familiar para los usuarios de correo electrónico, el término se pronunciada en inglés “at” y si se extiende el sonido de la “T” suena como “ai ta”, o “le quiero”, según los hablantes de mandarín.

Li no dijo si las autoridades habían aceptado el nombre, pero este mismo año había anunciado que el Gobierno había prohibido nombres que usaban numerales o idiomas extranjeros y símbolos que no pertenecen a las lenguas de la minoría china.

Unos 60 millones de chinos se enfrentaban al problema de que sus nombres usan caracteres antiguos que los ordenadores no reconocen, según Li.

Vía Yahoo, Reuters

14 ago. 2007

Monitor Web Gratuito

Buscando en la Internet, monitores de sitios web gratuitos, conseguí uno que contiene de todo tipo de estadísticas, pero uno que me llamo la atención fue, un test de cuantas veces el sitio estaba o no al aire.
Esta es una muestra de lo que les digo, adicionalmente a esto, me envían a diario por correo electrónico, el resumen de caídas y puesta en marcha del sitio, como también un resumen mensual.


El sitio en cuestión en http://mon.itor.us/ , visitenlo y hagan pruebas, veran que lo que les digo es fascinante

13 ago. 2007

HTML 5.0

HTML, “Hypertext Markup Language” o como diríamos en español: Lenguaje marcado de hipertexto llega a su versión 5 con cambios. Según comentan en el W3C y en un fenomenal artículo de IBM, HTML5 incluirá nuevos elementos por primera vez en el último milenio.

Los nuevos elementos estructurales serán: aside, figure, y section. Pero aún hay más porque se incluirán también las otras etiquetas: time, meter, progress, vídeo, audio, details, datagrid, command… Sin duda todo un gran paso hacia la web semántica.

La adición de nuevos elementos es sin duda una noticia impactante, sobre todo después de ver como el desarrollo del lenguaje HTML lleva parado desde 1999 con el lanzamiento de HTML4. El consorcio mundial de la web hasta ahora había estado centrado en el desarrollo de SGML, XML, XForms, RSS, CSS e incluso AJAX. Como comentan en el artículo de IBM, este cambio era necesario. Seguir utilizando un lenguaje de 1999 es seguir siendo hombres de las cavernas: Nuestros navegadores ahora tienen pestañas, utilizamos RSS y conocemos XML… sin embargo seguimos haciendo básicamente lo mismo que el milenio pasado: Tablas (

) y Párrafos (

)

Los nuevos elementos estructurales

Estos nuevos elementos van a dar mucho juego, por ejemplo a la hora de ver el código fuente de un blog, ya no será lo mismo. Muchos elementos div, cuyo identificador era muy común repetir ahora tienen su propio elemento HTML5. Veamos por qué.

* section : Pued ser un capítulo, una sección de un capítulo o básicamente cualquier cosa que incluya su propio encabezamiento.
* header : La cabecera de una página. No confundir con el elemento head
* footer : El final de la página.
* nav : Una colección de links a otras páginas
* article : Una entrada independiente en un blog, revista, etc.

Podéis ver un ejemplo comparativo de código entre HTML4 y HTML5 en la web de IBM.

Hacia la web semántica

Estos nuevos elementos nos harán dar un paso más hacia la web semántica. Algunas páginas de hecho podrán cambiar del todo su código para incluir estas novedades:

* aside : Es un bloque semántico que representa una nota, un consejo una explicación….
* figure : Se utilizará para representar una imagen
* dialog : Se utilizará para representar una conversación entre varias personas
* time : Se utilizará para marcar un momento temporal en una historia
* meter : Se utilizará para indicar ciertas medidas dependiendo de los atributos
* progress: Representará el estado de cierto proceso
* vídeo: Siempre sabremos que entre estas etiquetas hay un vídeo
* audio: En este caso un archivo de audio
* details:Más detalles sobre alguna cosa
* datagrid: Una tabla, una recopilación de datos formateados
* menú: Un listado, un menú….

El futuro de la web. Los buscadores, etc

Fijados las inmensas posibilidades que se abren para el futuro. Desde luego los webmasters empezarán a adoptar HTML5 y los buscadores como Google mejorarán para dar prioridad a ciertas etiquetas para ciertas búsquedas. ¿Buscas algo en una fecha concreta? ¿Un formato determinado como video o audio? ¿Buscas un artículo, una definición o una conversación?

El nuevo mundo del posicionamiento web llegará muy pronto.

Algunas de las novedades de HTML5

* Se añaden dos nuevos mecanismos para almacenar datos en el cliente, sessionStorage y globalStorage.
* Se abre la posibilidad de tener una base de datos en el cliente y poder ejecutar consultas SQL (aún no está bien definido este apartado).
* El elemento event-source, que permite tener una fuente de eventos externa (por ejemplo, ). Dicho de otra forma: eventos DOM enviados desde el servidor.
* Posibilidad de realizar conexiones bidireccionales con el servidor mediante TCPConnection(), LocalBroadcastConnection() y PeerToPeerConnection().
* Envío de mensajes entre documentos mediante postMessage().
* El elemento canvas entra en la especificación.
* Otro que entra es embed. Aquí parece que han dado la guerra por perdida con object (de ahí la inclusión también de elementos como audio y video).
* Se añade el atributo contentEditable a todos los elementos.
* Soporte para arrastrar y soltar.
* Historial de deshacer para todos los cambios realizados en el DOM.

8 ago. 2007

Frases Geeks para conquistar

Las siguientes frases que cualquier geek podría emplear en caso de querer conquistar a otra geek (no creo que funcione con mujeres normales :P :(, estan chistosas las frases:

* Eres el Kernel de mi Linux.
* Eres el HTML de mi corazon.com.
* Tus ojos brillan mas que mi torre de CDs.
* Eres el .gif que anima mi vida.
* Siempre estas en C:/Mi/Corazón. (para los linuxeros: /home/Mi/Corazón)
* Eres el Enter de mi vida.
* Si me dejas hago Alt-F4 a mi vida.
* Tú tienes la máxima prioridad en mi lista de procesos.
* Sin ti mi vida sería como una web sin CSS.
* Dime cómo te llamas y te agrego a favoritos (o en Marcadores, mejor)
* Eres la primera en Google al buscar mi corazón.
* Mi MacOSX tiene envidia de tu belleza.
* Quisiera ser un Pendrive para tus USB.

26 jul. 2007

Los 50 mejores sitios de inspiración para diseñadores

Más allá que una cosa que se espera siempre en materia de diseño es la innovación y la originalidad, siempre hay una fuente inspiracional. Estas son 50 webs que sirven para ese objetivo.

css_remix CSS Remix – Está conformado por un listado de sitios web creados con css y valid xhtml, todos ellos subidos por los mismod usuarios. Cada diseño puede ser ranqueado y entre la variedad podemos encontrar bastantes atractivos.

fwa FWA (Favourite Website Award) – En este caso, el listado es de sitios en flash, por ahora hay un total de 2109 contando desde hace 7 años. También es algo donde el usuario puede participar, por lo que se es libre de enviar a FWA creaciones propias.

deviantart deviantART – Bastante conocido creo, aquí hay de todo. Se apunta tanto a principiantes como expertos, que contribuyen con fotos, dibujos, fondos de escritorio, íconos y tantas otras cosas. Un buen sitio por el que vagar por un largo tiempo.

designdiary DesignDiary (DD) – Éste es un proyecto JogjaForce que, como todo mucho de lo que alberga internet, llega a nivel mundial. Los recursos de diseño que ofrece son Open Source, lo que es muy bien recibido.

mocoloco MOCO LOCO – En este sitio se recalca el diseño y arquitectura de tipo moderno y contemporáneo. Quizás más orientado al diseño de ambientes y un toque de web, entre varias otras cosas.

logopond Logopond – Muchas veces para algún blog, web, empresa, servicio, o lo que sea, se busca un buen logo. En Logopond, hay muchos ya diseñados de los cuales podemos obtener algunas buenas ideas.

mojizu Mojizu – Encontraremos aquí una serie de personajes creados por la comunidad tanto de expertos como novatos. Nunca está demás el poder pasar un tiempo tomando ideas, o sólo poder mirar los pequeños personajes que salen de las mentes de la gente, y hasta poder interactuar con los mismos y el resto de la comunidad.

apps_mania Apps Mania – Este sitio contiene una buena cantidad de applicaciones diseñadas y skins para algunas otras. Quizás pueda ser uno de los mejores sitios para buscar unos buenos “disfraces” para las distintas aplicaciones en Internet.

netdiver Netdiver – Además de presentar una serie de ilustraciones y fotografías, el sitio da un enfoque a la sección de noticias o novedades circulantes internacionalmente y por la web. Es interesante mantenerse actualizado y al tanto de las novedades.
cssbeauty CSS Beauty – Es éste un proyecto que intenta dar a los visitantes una buena base de datos acerca de sitios web con buenos diseños basados en CSS. Así, para los interesados en un poco de inspiración y en búsqueda de algunos tips y ayuda para diseñar en base a CSS, esta web es especial para ese propósito.

3dm3 3DM – Destinado más que nada a los interesados en diseño tridimencional, de donde pueden sacar bastantes ideas. También incluye tutoriales, noticias, animaciones y, por supuesto, algunos trabajos terminados.

startdrawing startdrawing – Saliendo un poco de lo que quizás estemos más acostumbrados a ver, aquí hay una presentación de trabajos por artistas asiáticos. En su mayoría son dibujos, aunque hay alguna que otra cosa digital, y bastante interesantes en algunos casos.

kuler Kuler – Muchas veces lo que puede resultar algo problemático es entontrar una combinación de colores convincente. En Kuler se pueden ver, crear, compartir y hasta descargar varios themes de colores que, una vez en la computadora, pueden ser usados con Adobe Creative Suite 2 y 3.

threadless Threadless – Esta es una comunidad que se centra en diseños para remeras. Ya sea para buscar, votar o subir distintas ideas, es un buen lugar. También es posible comprar productos según las remeras que nos gusten, sujeto a talles y a stock, por supuesto, aunque se pueden pedir igualmente, y se envían a varias partes del mundo.

logosauce LogoSauce – Otra iniciativa enfocada a los logos, donde se les pueden comentar, dar puntajes y subirlos. Es bastante reciente respecto de otros, pero eso no le quita mérito.

fromeurope From Europe – El nombre lo dice todo, los diseños de este sitio son europeos, con vista a interiores de hogares. Muy interesante, ya sea viendo algunos nuevos accesorios o arquitectura y orden de diversas salas en el hogar; y también muy ordenado tanto por ambientes como por paises de proveniencia.

artcrimesgraffiti ARTcrimes Graffiti – Aunque haya veces que los graffitis arruinan muchas paredes, y hasta no tienen nada de lindos, hay otros que son todo lo contrario. En el sitio recopilan varios de estos de todas partes del mundo que demuestran que el tema puede ser bastante artístico.

iconbuffet IconBuffet – Otro lugar donde encontrar colecciones de íconos. De entre varios paquetes, hay algunos disponibles para la descarga gratuita, y otros con enfoque comencial.

most-inspired Most Inspired – Tutoriales, noticias y diseños web, todo enfocado a los que se interesan en CSS. Si es que se está en búsqueda de inspiración, este sitio es especial para ello, vale la pena verlo.

boonika Boonika – Toda una mezcla de estilos presentada en diversos trabajos que puede parecer aceptable para algunos, y no tener nad de aceptación para otros.

colourlovers COLOURlovers – De vuelta con el encontrar la mezcla justa de colores, aquí hay bastantes paletas a usar, se pueden comentar, subir a la web las propias, y leer artículos y reportajes referidos al mundo del color.

designineurope Design in Europe – Toda una selección de varios portales y diseños provenientes de Europa, muy variado por cierto. El directorio es bastante amplio y está todo organizado según el país de origen.

css_mania CSS Mania – Contiene más de 7000 diseños de webs en CSS y xhtml hasta el momento, gracias al aporte de los usuarios. Además, está todo clasificado según los temas de cada sitio por lo que también da importancia a cierto tipo de información que se busque.

thebestdesigns The Best Designs – Con una actualización prácticamente diaria, THD reune varios sitios en Flash y CSS, y también incluye un directorio de diseñadores. Las categorías no se limitan sólo a si la web está diseñada en Flash o CSS, sino que también según los elementos de diseño.

lcsv4 The Little Chimp Society (LCSV4) – Reune varios dibujos a modo de noticias, los cuales pueden ser agregados por los miembros de LCS, lo cual hace que tenga una actualiazación constante. También hay algunas entrevistas a autores de trabajos.

Los demás 25 sitios del top 50:

Fuente lineup

24 jul. 2007

Google invierte 4.600 millones para construir una enorme red wi-fi abierta

Si algo hay que reconocer de Google es que está siempre buscando nuevos horizontes para ampliar sus posibilidades. Y lejos de estancarse por algunos retrocesos, la compañía sigue avanzando y ahora planea desarrollar una enorme red wi-fi abierta que cubra todo el territorio norteamericano.

La historia comenzó con la ordenanza de la FCC a las estaciones televisoras para dar largada a la TV digital, lo que liberó una interesante porción del espectro de frecuencias, allá por los 700 Megahertz. Con ese espectro libre, la FCC comenzó a pensar en formas de liberarlo y obtener una buena tajada por ello. ¿Y que mejor que una red Wi-Fi, para dar abasto a prácticamente todo el territorio norteamericano?

Para muchos, entre ellos las compañías de telefonía, sería un sueño hecho realidad: proveer de una red de datos inalámbrica a toda la población, una red con la misma confiabilidad con la que hasta hace poco veían TV en sus hogares. Google, junto a eBay, admitió estar interesada en presentarse a la subasta e invertir 4.600 millones de dólares.

Pero supeditaron su inversión a 4 puntos básicos que solicitaron a la FCC para que sean inherentes a la subasta y obligatorios para todos aquellos que se presenten a ella:

1- Permitir que los futuros usuarios de la red puedan descargar cualquier tipo de software

2- Permitir a los usuarios utilizar cualquier dispositivo en la red

3- Poder vender espacio de red a cualquier proveedor

4- Permitir que esta red pueda estar interconectada con los proveedores de Internet actuales.

La FCC ha aceptado por ahora los puntos 1 y 2, pero no los últimos, y Google ejerce presión con el enorme capital que estarían dispuestos a invertir en infraestructura. Por supuesto, las compañías telefónicas que también intentarán adquirir esas frecuencias, luchan por desacreditar las ideas de Google, afirmando que convertirán a la subasta en algo mucho menos atractivo.

No es sorpresa que reaccionen de ese modo, ya que nunca se han caracterizado por ser muy permisivas con sus usuarios, llegando en muchos casos a prohibirles el uso de Skype o cualquier otra forma de comunicación que les suponga una competencia.

La de Google es una apuesta interesante, que permitiría a una gran parte de la población disponer de Internet Wi-Fi en sus hogares de manera sencilla y muy económica. La posibilidad de que esa red sea abierta y acepte libertades para sus usuarios es también muy atractiva, y el efecto dominó que esta red podría crear en otros países y continentes sugiere que tal vez en Europa alguien intente hacer lo mismo más adelante.

 
Too Cool for Internet Explorer