viernes 20 de abril de 2007

Estandares para desarrollo Web

Por los momentos no estan todos los temas desarrollados, pero...

Este es el documento que cree por el cual nos regimos para seguir estandares de trabajo en la empresa, lo pueden tomar como ejemplo para crear una metodología de trabajo limpa y organizada. Lo llame:

LA LEY DEL OESTE!

Este documento fue creado con la finalidad de mantener el standar de forma
de trabajo que se ha venido trabajando y formando en el paso del tiempo.
TODOS deben leer y entender estas reglas para empezar o continuar a trabajar
con algún proyecto.

REGLAS VISUALES Y DE DISEÑO:
----------------------------------------------------------------------------
· NO UTILIZAR EN LO POSIBLE EL MODO DE DISEÑO DEL DREAMWEAVER!!!
Esto daña la indentación que se hayan hecho en los archivos y escribe
codigo incontroladamente.

· La indentación es su mejor amiga:
Se deben indentar las lineas de código perfectamente! esto con la
finalidad de comprender el codigo de una forma mas rápida y para que
sea claro para todos
Aqui acostumbramos a trabajar asi -> ANEXOS(Buena Identación)

· Nombramiento de clases de CSS
Debe nombrar las clases de CSS refiriendose al contenido que halla en
este elemento, no las debe nombrar por sus caracteristicas visuales.
Ejemplo:
NO -> .tituloRojo{} (Nombra el color)
NO -> .barraDerecha{} (Nombra la posición en que sera colocada)
NO -> .CabeceraAmarilla{} (Nombra el color y la posición)
SI -> .listaProductos{}
SI -> .MenuPrincipal{}
SI -> .elementoMenu{}
SI -> .comentario{}
SI -> .error{}

· Documentar todo lo que se cree y se modifique
Reglas de documentación en ANEXOS (Documentación)

· Regirse SIEMPRE! por los estandares de W3C para XHTML
Utilizar siempre código que cumpla con los estandares establecidos por
W3C (http://validator.w3.org/)
Ver Resumen -> ANEXOS (XHTML)

· Tratar de usar tablas lo menos posible
Solo utilizar tablas para escritura de datos

· Asegurarse de que sea multibrowser:
Debe asegurarse de que se vea bien en los siguientes browsers por lo
menos:
-> Mozilla Firefox
-> IE6
-> IE7
-> Opera

· Utilizar 'hacks' de CSS con sintaxis válida en lo posible:
Para una lista de 'hacks' para diferentes browsers puede ir aquí

· Código "leible" por google y otros buscadores
Leer esta guia:
http://www.google.com/support/webmasters/bin/answer.py?answer=35769

· Skip the %3Ctable%3E tag for page layout.
Use it only to display tabular information like spreadsheets, schedules,
and charts. You can do all your layout with CSS for much less time and
code than the table tag tango.

· Don't abuse the %3Cbr /%3E tag.
If you grew up using the
tag %3Cbr /%3E (%3Cbr%3E in HTML) to insert a line break
without creating a new paragraph, then you're in for a treat.
(Browsers automaticallyand sometimes infuriatingly insert a bit of space
between paragraphs, including between headers and <p> tags. In the past,
designers used elaborate workarounds to avoid paragraph spacing they
didn't want, like replacing a single </p><p> tag with a bunch of line breaks
and using a <span> tag to make the first line of the paragraph look like
a headline.) Using CSS's margin controls you can easily set the amount of
space you want to see between paragraphs, headers and other block-level
elements.

----------------------------------------------------------------------------

REGLAS DE PROGRAMACIÓN:
----------------------------------------------------------------------------
· No utilizar directamente variables de POST/GET:
Validar correctamente los datos antes de utilizarlos, y con mas razon
si se utilizan para hacer querys a la BD. ¿Por que?
Ver ANEXOS (Validación de Datos)

· Validar preferiblemente de los dos lados (cliente/servidor):
SIEMPRE! validar del lado del Servidor y preferiblemente validar del
lado del cliente también

· No crear funciones especificas que realicen solo un trabajo especifico!

· Separar en lo posible las 3 capas (Diseño, Contenido y Procesos)
Diseño -> CSS y XHTML
Procesos con DB -> Stored Procedures ,Vistas y Triggers
Procesos con PHP -> Progrmación Orientada a Objetos, funciones genericas
Contenido multiidioma -> Almacenado en BD o en archivos separados

· Optimizar los procesos al máximo!
No repetir procesos, todo lo que se pueda automatizar, automatizelo!.
Si son procesos repetitivos buscar la forma de hacer todo en un proceso
y que este se repita las veces necesarias.

· Respaldar antes de modificar
Siempre antes de empezar a trabajar algun archivo debe respaldarlo
siguiendo las politicas de Respaldo -> ANEXOS (Respaldos)

· La seguridad es primero:
Se debe tener en cuenta que se estan trabajando en servidores de
producción y hay que hacer lo posible por no dejar ningun hueco de
seguridad. Debe pensar siempre si lo que esta haciendo es seguro.
Principalmente si esta trabajando con archivos en el servidor o con
bases de datos.

· Nombrar correctamente los elementos:
Debe nombrar correctamente las variables con nombres descriptivos de lo
que se va a almacenar en esta. Igualmente para las funciones debe
llamarlas con un nombre descriptivo que defina claramente lo que esta
realiza.

----------------------------------------------------------------------------
ANEXOS:
· Buena indentación:
-> Para condicionales IF:

//Comentarios del if
if(condicion){
//codigo si condicion es true;
//linea 2 del codigo;
} else {
//codigo si condicion es falso;
//linea 2 del codigo;
}

-> Para switch case:
//Comentarios del Switch
siwtch(variable){
case 'opcion1':
//Codigo a ejecutar 1
//Linea 2
break;
default:
//Codigo a ejecutar por defecto
//Linea 2
break;
}

-> Para tablas html
<table>
<tr>
<td>
Contenido de la primera columna
</td>
<td>
Contenido de la segunda columna
</td>
</tr>
</table>

/////////////////////////////////////////////////////////////////////////////

·XHTML
Es obligatorio seguir los estandares de XHTML, esto demuestra la calidad
de la empresa y es el lenguaje correcto en que se debe "hablar"

Nota:
-------------------------------------------------------------------------
SI esta usando Firefox, puede descargar la extension llamada
HTML Validator (https://addons.mozilla.org/es-ES/firefox/addon/249), este
te dira al correr tus páginas si cumple con los estandares o no, y cuales
son los errores que tienes.
-------------------------------------------------------------------------

Para escribir XHTML válido, solo debe seguir las siguientes reglas:
-> Cierra todos los elementos que abras:
Ejemplo:
<a>Link</a>
<img src="" alt="'Descripcion'" /> (Note el '/>' al final)

(Note el '/>' al final)
-> Cierra los elementos en el orden correcto con que fueron abiertos:
Ejemplo:
<strong> Este <em>texto esta en Negrita</em></strong>
//Por decirlo de una manera el tag 'strong' contiene al 'em'
//Primero cierra el em y luego el strong
-> Los elementos y atributos deben estar en minuscula:
//Inválido: <strong id="'prueba'"></strong>
//Valido: <strong id="'prueba'"></strong>
-> Todo atributo abierto debe tener un valor:

-> No utilizar elementos html deprecados:
Existen elementos que aunque algunos exploradores los reconocen, son
elementos que ya no son estandares y no se utilizan mas, generalmente
hay un remplazo para estos.

/////////////////////////////////////////////////////////////////////////////

·Validación de entradas del usuario:
Siempre que tenga alguna página que interactue con el usuario, las
entradas siempre deben ser validadas dependiendo del caso.

¿Por qué debo validar las entradas?
Por varios motivos, los mas importantes:
-> Seguridad:
Si se esta recibiendo algún dato de un usuario para crear un
query contra la base de datos, un usuario malintencionado podría
crear una cadena especial que le permita tener información e
incluso hasta modificar datos de la BD, esto es llamado inyección
SQL.
Para saber mas acerca de Inyecciones SQL vea ANEXO (Inyecciones
SQL)

-> Saber que los datos recibidos estan bien formateados:
Esto en caso de pedir Emails, números de teléfonos o datos que
tengan un formato específico. Generalmente utilizamos la función
ereg() en PHP.

-> Evitar Errores en pantalla:
Debemos validar si el dato con que vamos a trabajar existe y
tiene el formato correcto para poder trabajarlo para evitar que
se muestre un error (WARNING, NOTICE o FATAL ERROR).
Puede utilizar la funcion isset() para la mayoría de los casos

·Inyecciones SQL:

/////////////////////////////////////////////////////////////////////////////

· Respaldos:
Se mantendran 3 archivos de respaldo llamados de la siguiente maneras
(Ejemplo):
-> archivo_actual.php (Archivo que se usa en producción)
-> archivo_actual.old.php (Último archivo que funcionaba bien)
-> archivo_actual.old2.php (Una versión anterior al old)
Nunca NUNCA quitar la terminación del archivo. (Ejemplo)
NO -> archivo_actual.php.old
SI -> archivo_actual.old.php

Si alguien intenta abrir el arhivo archivo_actual.php.old este podra ver
el codigo fuente del archivo y puede mostrar datos que no quisieramos
que se muestre.

/////////////////////////////////////////////////////////////////////////////

· Documentación:

/////////////////////////////////////////////////////////////////////////////

· Complementos de Firefox:
Para una lista de los elementos preferidos dirijase a:
http://jorgepedret.blogspot.com/2007/04/extensiones-de-firefox-add-ons.html


||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*/

jueves 19 de abril de 2007

Extensiones de Firefox (Add-ons)

Lo que hace a Firefox el mejor explorador de Internet (ademas de regirse estrictamente por los estándares de W3C, de ser seguro y de ser muy estable), son sus extensiones!.

Personalmente como desarrollador web, he llegado al punto de depender de estas como herramientas para facilitar, mejorar y optimizar mi trabajo.

Aquí las que yo utilizo con una breve referencia en orden de importancia:

Firebug
Su uso mas básico es inspeccionar el codigo fuente de una página. Se acopla al browser de forma que siempre esta cuando la necesitas (Lo puedes encontrar en la esquina inferior derecha, debajo de la barra de scroll).

Las funciones mas impresionantes son:

  • Al desarrollar aplicaciones en AJAX puedo ver los parametros que son enviados por POST o GET al codigo en el servidor y ver que valores recibio

  • Editción del código fuente directamente desde el Firebug, esto me ayuda al desarrollo con CSS

  • Muestra la velocidad de carga de cada uno de los elementos de tu página

  • Consola de errores de Javascript

Web Developer
Barra que se instala en la parte superior del Firefox, tiene todas las funciones que te puedas imaginar. Las más importantes:
  • Botón para habilitar y desabilitar javascript
  • Control de las cookies, pudiendo editar, eliminar y agregar
  • Elimina las variables de sesión establecidas con un servidor
  • Muestra y permite edición de CSS de una página en tiempo real
  • Mostrar información detallada en pantalla de formularios html
  • Permite medir elementos o espacios con una regla
  • Mostrar comentarios y elementos escondidos
  • La función Outline, bordea con un color los elementos que se le especifiquen
  • Redimensionar la página al tamaño que desees (probar distintas resoluciones de monitor
El uso mas frecuente que le doy es el de outline, ya que me sirve para ayudarme a ver donde estan los elementos (Ej: <div>) que no se ven a simple vista o no sabes porque se estan mostrando de cierta forma.

Clear Cache Button
Muy básico pero hace lo que necesitas y como su nombre lo dice borra el cache. Muy útil cuando estas modificando constantemente una página y necesitas ver la útima versión.

HackBar
Barra para hackers, simplemente la uso para probar la seguridad de un sitio. Me facilita y permite inyecciones SQL, hacer hashing a MD5, codificar y decodificar Base 64 y URL. Esta herramienta esta en una etapa de crecimiento todavía, pero es le ve un buen futuro.

Fire Encrypter
Funciona para encriptar y en algunas casos desencriptar cadenas. Tiene distintos métodos de encriptación y hashing.

URL Params
Barra lateral para ver, editar y agregar parametros enviados por los métodos POST y GET a una página. (Muy útil para probar la seguirdad de su página)

HTML Validator
Es el mejor validador de XHTML que he encontrador porque te chequea la validez en tiempo real (No tienes que enviar tu página a otro servidor para que la valide), te muestra y resalta los errores con sus detalles en el codigo fuente.

Tiene 3 formas de validación: HTML Tidy, SGML Parser y Serial. Siempre lo utilizo en Serial, ya que es una combinación de la dos primeras validaciones.

Regular Expressions Tester
Los regular expressions son muy utilizados en la programación para validar entradas del usuario. Esta herramienta, te permite probar la cadena que valida con cualquier entrada de texto, a demas también trae cadenas listas para validar Email, IP, Links, Zip Codes, Etc.


Estas son todas las extensiones que uso, y gracias a ellas Firefox es mi explorador por defecto.

Si estas viendo esta página desde Firefox puedes empezar a bajar estas extensiones desde esta dirección https://addons.mozilla.org/es-ES/firefox/.

Si no estas viendo desde Firefox, y estas interesado en conocerlo, puedes descargarlo desde esta dirección http://www.mozilla.com/en-US/firefox/.

Si conoces alguna otra extension que quieras mencionar solo envia la direción para que todos la podamos probar.

lunes 16 de abril de 2007

CSS hacks

Resumen de hacks de CSS para desarrollo Multi Browser

Aquí un resumen especifico de los hacks (válidos e inválidos) para los exploradores más conocidos:

(Reconcido solo por Internet Explorer 6 o inferior)
* html .sidebar { margin-left: -3px }

(Reconocido solo por IE5.5 o inferior)
w\idth: 100px;

(Reconocido solo por Internet Explorer 7)
*:first-child+html #Footer {}