Mostrando las entradas con la etiqueta Programacion. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Programacion. Mostrar todas las entradas

Esta es una funcionalidad que en PHP es natural para cualquier arreglo, en lo personal me ha sacado de muchos problemas y gracias a la ayuda de un par de expertos en Java, ahora la estoy implementando por medio de HashMap.

De esta manera es posible utilizar cualquier valor como indice de un arreglo, no solo la clasica secuencia de enteros.


import java.util.Map; // Superclase HashMap
import java.util.HashMap; // Contenedor que soporta extraccion rapida de Datos
import java.util.Iterator; // Utilizado para recorrer el HashMap

public class HashMapExample {

// Este metodo imprime todos los valores en el objeto hashMap
public static void printHashMap(HashMap hashMap) {
System.out.print( "HashMap: " );

// Utiliza iterator para recorrer los valores en el TreeMap
Iterator iterator = hashMap.entrySet().iterator();

while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
System.out.print( "(" + entry.getKey() + ": " +
entry.getValue() + "), " );
}
System.out.println();
}

public static void main(String[] args) {
HashMap hashMap = new HashMap();

// Pone 4 pares de valores en el HashMap
hashMap.put("Pharaoh", new Integer(55));
hashMap.put("Emperor", new Double(2.33));
hashMap.put("Kaiser", new Long(323322L));
hashMap.put("Czar", new Boolean(true));

// "HashMap: (Pharaoh: 55), (Czar: true), (Kaiser: 323322),
// (Emperor: 2.33), "
printHashMap(hashMap);

// Obtiene el valor asociado con la llave "Emperor"--imprime 2.33.
System.out.println("Valor de la clave Emperor: " +
hashMap.get("Emperor") );

// Elimina el par de datos con la llave "Kaiser".
hashMap.remove("Kaiser");

// "HashMap: (Pharaoh: 55), (Czar: true), (Emperor: 2.33), "
printHashMap(hashMap);

// Averigua si HashMap tiene la clave "Sultan".
System.out.println( "Existe la clave Sultan? " +
hashMap.containsKey("Sultan") ); // Imprime false
}
}

/* Salida en pantalla:

HashMap: (Pharaoh: 55), (Czar: true), (Kaiser: 323322), (Emperor: 2.33),
Valor de la clave Emperor: 2.33
HashMap: (Pharaoh: 55), (Czar: true), (Emperor: 2.33),
Existe la clave? false

*/


Ojala a alguien le sirva, si no pues ya se donde venir a buscar la proxima vez que lo requiera.

Gracias a la empresa donde laboro, tengo la oportunidad de asistir a este evento. Hace años que lo traia entre ojos jaja, por fin se me hizo.

SG '09 Conferencia y Expo es un congreso sobre desarrollo de software enfocado a profesionistas y líderes de TI en México y Latinoamérica. Su propósito es poner a los profesionistas locales en contacto con las tendencias y mejores prácticas internacionales en el campo. El congreso es presentado en la ciudad de Monterrey, por el Consejo de Software de Nuevo León.

Asistir a SG'09 te convertirá en un mejor profesionista de software. No solo conocerás las más recientes tecnologías y herramientas, sino que aprenderás sobre lo que realmente funciona en los proyectos de software. También descubrirás nuevas oportunidades de negocio y desarrollarás tu red de contactos.

Esperemos que todo vaya bien =D

Recientemente encontre un sitio en donde los lectores recopilaron los mejores chistes o bromas de programadores, publico aqui los mejores. Son bastante buenos y creo que con la mayoria realmente necesitas ser programador para entenderlos:

1.---
- Cual es la forma orientada a objetos de hacerse millonario?
- Por herencia

2.---
Un tipo esta parado en una esquina fumando un cigarro tras otro, una señorita lo nota y le dice:
- Hey, no sabes que fumar tanto puede matarlo? No ha visto las advertencias en la caja de los cigarros?
- No hay problema - dice el tipo - soy programador de computadoras
- Y eso que tiene que ver?
- Los programadores no nos preocupamos por las Advertencias, solo nos interesan los errores.

3.---
Antes se decia que solo hay 10 tipos de personas en el mundo: las que entienden el codigo binario y las que no; creo que la perspectiva ha cambiado, ahora se dice que solo hay 10 tipos de personas en el mundo: las que entienden el codigo binario y las que tienen relaciones regularmente.

4.---
Entran dos cadenas (string) a un bar y se sientan en la barra.
- Que les voy a servir - pregunta el mesero
- La primer cadena dice: creo que voy a tomar una cerveza oscura con jdk^CjfdLk jk3s d#f67howe%^U r89nvy owmc63^Dz x.xvcu"
- Por favor disculpe a mi amigo, dice la segunda cadena, es que no esta terminado en null (\x0)

5.---
Decir que Java es bueno porque funciona en todos los sistemas operativos es como decir que el sexo anal es bueno porque funciona con todos los generos

6.---
El desarrollo de aplicaciones empresariales es como el sexo:
- Si comentes un error tienes que cargar con él por el resto de tu vida.

Aunque el articulo habla de desarrollo en PHP, la mayoría aplican para casi cualquier lenguaje inclusive para los que no son en Web. A continuación el listado básico, para conocer los detalles y sugerencias de uso, revisa el articulo original en inglés.

1. Hazte amigo del manual oficial de PHP. ()
2. Activa el despliegue de errores. ()
3. Utiliza un Editor integrado de desarrollo (IDE). ()
4. Desarrolla utilizando un Framework. ()
5. Aprende el método DRY. ()
6. Identa el código con espacios para facilitar su legibilidad.
7. Organiza tu aplicación en capas. ()
8. Siempre utiliza <?php ?> para delimitar PHP.
9. Utiliza nomenclatura estandar para nombres de variables, clases, constantes, etc.
10. Exagera!! Comentando tu código.
11. Instala XAMPP()
12. Limita el tiempo de ejecucion de tu codigo (para evitar ciclos infinitos)
13. Utiliza Objetos o mejor aun Programacion Orientada a Objetos.
14. Conoce la diferencia entre comillas sencillas y dobles y aprovecha las ventajas de cada una. ()
15. No pongas phpinfo() en el directorio raiz.
16. Nunca, pero nunca, confies en tus usuarios. (alguno podria ser malicioso)
17. Almacena las contraseñas solo despues de haberlas encriptado.
18. Utiliza herramientas graficas para interactuar con la Base de Datos.
19. Utiliza Output Buffering. ()
20. Protege tu aplicacion contra la Inyeccion de SQL. (recuerda el punto 16) ()
21. Aprende y utiliza Mapeo Objeto-Relacional (ORM). ()
22. Valida la informacion de las cookies. (recuerda el punto 16)
23. Siempre trata de hacer mas eficiente el desempeño tu codigo.
24. Estandariza tu código para facilitar su mantenimiento.
25. Ten cuidado con lo que pones dentro de un ciclo (creacion de variables, funciones, operaciones en cada ciclo ¿?)
26. Racionalizar el uso de variables hace mas eficiente la ejecucion de tu código.
27. Cuenta siempre con la versión mas reciente de PHP.
28. Ten especial cuidado con la interaccion a la Base de Datos, entre menos conexiones mejor.
29. No tengas miedo de experimentar.
30. Si algo salio mal, no dudes en pedir ayuda. ()

Fuente: Tutsplus.com, Tutsplus.com

Leo en Barrapunto.org un articulo que me llama la atención, cito textual:

«Un nuevo informe de la Linux Foundation ha permitido conocer la evolución del desarrollo del núcleo Linux en cifras. Este estudio sirve para confirmar un dato que ya conocíamos: las empresas son las mayores responsables de la evolución de Linux, debido a que tienen a un gran número de programadores en nómina. Red Hat (12,3%), IBM (7,6%), Novell (7,6%) e Intel (5,3%) son las principales protagonistas, aunque hay otras muchas. Eso sí, un 18,2% del desarrollo sigue siendo debido a programadores independientes, y también es sorprendente descubrir que el núcleo 2.6.30 ya tiene 11 millones y medio de líneas de código, y que cada día se crean 13.000 nuevas líneas, se borran 5.000 y se modifican casi 3.000.»

Fuente: BarraPunto.org

Hibernate y JDeveloper

Autor: gomezbjesus | 8/05/2009 | , | 2 comentarios »

Según Wikipedia la persistencia de Objetos se refiere a la acción de preservar la información de un objeto de forma permanente (guardar), pero a su vez también se refiere a poder recuperar la información del mismo (leer) para que pueda ser nuevamente utilizada.

En la actualidad esta técnica se implementa por medio de un motor de persistencia. Según una modesta investigación personal del tema, se encontró que este camino ha sido recorrido por las siguientes implementaciones:
- Java Data Objects. Compila los ejemplos con ANT
- JPOX - Datanucleus. Hay un plugin para Eclipse
- JDO Instruments. Recomienda el uso de NetBeans
- Java Persistence API.

Como es común en Tecnologías de la Información la evolución acelerada de este concepto ha ocasionado que JDO puro ya no sea tan popular. De tal manera que la tendencia esta en el uso integrado de un entorno de desarrollo, mas un servidor de aplicaciones, mas un servidor de base de datos, mas un motor de persistencia, entre otras herramientas.

A continuación los elementos necesarios para ejecutar un ejemplo utilizando esta tecnología:
- Código fuente y librerias (dependencias resueltas =D ).
- Scripts de la Base de Datos.
- Diapositivas de Java Data Object.

Es necesario contar con el IDE (Entorno de desarrollo integrado) JDeveloper version 10.1.3.4 el cual puede ser descargado desde el sitio de Oracle (previo registro gratuito).

No queda mas que generar la base de datos MySQL y modificar los datos de conexion en el archivo hibernate.cfg.xml del código fuente proporcionado.

Think Java.

/* Comentarios */

Autor: gomezbjesus | 7/27/2009 | | 0 comentarios »

Estos son algunos de los comentarios mas sobresalientes recopilados por un sitio dedicado al desarrollo. Bendita documentación de código fuente.

Me siento ignorado
// a veces creo que el compilador ignora todos mis comentarios
Sinceridad
// estoy barrache, lo aregol despuesss
Un poco de magia
// Mágico. No tocar.
Por si no se entiende
return 1; //retorna 1
Dios, ayúdanos
// Cuando escribí esto sólo Dios y yo sabíamos lo que hace.
// Ahora, sólo Dios sabe.

Aviso
/*
* Quizás creas que sabés lo que hace esta porción de código.
* Creeme, no lo sabés.
* Si tratás de entenderlo vas a pasar muchos horas sin dormir,
* maldiciendo el momento que pensaste que eras los suficientemente
* inteligente para "optimizar" el siguiente código.
* Así que, cerrá este archivo y andá a jugar con otra cosa.
*/

Advertencia para al mantenedor
// Estimado mantenedor:
// Una vez que termines de intentar "optimizar" esta rutina,
// y que te des cuenta del terrible error que cometiste,
// por favor incrementá el siguiente contador como una
// advertencia para el próximo:
// total_de_horas_gastadas_aqui = 16
//

¡Que no ocurra!
try {
} finally { // no debería ocurrir

}

Desconfiar de la documentación
/**
* Siempre devuelve true.
*/

public boolean isAvailable() {
return false;
}

Arreglo
// no estoy seguro de que esto funcione, pero resuelve el problema
Desafio
// el código siguiente reemplaza al código anterior. ¿¿Algún problema??}
// Si. No funciona.


Fuente: StackOverflow

El Programador.info

Autor: gomezbjesus | 3/20/2009 | , | 2 comentarios »

Con el lema "Código, Juegos, Cerveza y Geeks" se lanza la comunidad ElProgramador.info en la cual, según su creador se pretende recopilar material referente al desarrollo de aplicaciones:

"En este espacio tendrán todo lo referente a la programación, tendremos colaboraciones de muchos programadores expertos en su área, por mencionar algunos nombres, Oracle, MSSQL, MySQL, Cobol, Java, Javascript, Asp, Php, Visual Basic, Visual C++, .Net, Builder, entre muchos otras cosas mas que estaremos publicando, sin olvidar nuestra sección de videojuegos donde veremos criticas de todo tipo hacia las consolas y por supuesto a los videojuegos"

Por supuesto la invitación a participar esta abierta al publico desarrollador en general; cabe mencionar que es una iniciativa de profesionales del Software de La Comarca Lagunera. Felicidades y mucho exito a los fundadores e invitados a este nuevo proyecto.

Cuando se empieza a tomar en cuenta la seguridad, hay que recordar que en adicion a la plataforma de desarrollo y a los problemas de seguridad del sistema operativo, es necesario garantizar que se esta escribiendo codigo seguro. IBM por medio de la sección DeveloperWorks publica 7 buenos habitos que, cuando se escribe codigo PHP, tenerlos en cuenta hace que las aplicaciones sean aun mas seguras:

  1. Validar las entradas del usuario. Es posiblemente el habito mas importante que se pueda adoptar cuando se comienza a considerar la seguridad. Las vulnerabilidades mas importantes se derivan del exceso de confianza en los datos que introduce el usuario.
  2. Proteger el sistema de archivos. El efecto que podria llegar a tener el robo de un archivo de sistema podria llegar a impactar no solo a la aplicacion, sino tambien al sistema operativo y al servidor en general.
  3. Proteger la Base de Datos. La informacion es el activo mas importante que protege la empresa, generalmente las aplicaciones administrativas manejan datos bastante sensibles que se manejan con mucho recelo.
  4. Proteger los datos de sesion. Toda informacion almacenada en la sesion es susceptible de ser visualizada por cualquiera. Tienes dos alternativas: cifrar los datos, lo que no garantiza por completo su privacidad si es un metodo reversible y/o almacenarlos en Base de datos.
  5. Protegerse contra las vulnerabilidades de tipo Cross-Site Scripting (XSS). Esta vulnerabilidad esta relacionada con el primer habito recomendado, pero ademas de protegerte de la informacion que aceptas en tu aplicacion, tambien hay que cuidar la informacion que se sale de la misma, principalmente para no incluir codigo que se ejecute/interprete indebidamente del lado del cliente.
  6. Verificar el intercambio de informacion (posts) entre formas. Ya que la conexion entre el cliente y el servidor no es persistente, debe hacerse una comprobacion del 'remitente' de los datos, ya que pudieron haber sido enviados desde cualquier forma sin haber pasado por las validaciones esperadas.
  7. Protegerse contra ataques Cross-Site Request Forgeries (CSRF). Este tipo de ataque se basa en la ganancia de privilegios mayores de los debidos por medio de expolits.
Seas un programador novato o ya experimentado, considerar estos habitos sin duda te llevará a conseguir aplicaciones que manejen de una forma mas segura la informacion. Una descripcion mucho mas completa de cada uno de estos puntos asi como código fuente que puedes implementar para cumplir con estas sugerencias en la fuente original, recomiendo ampliamente visitarla.

Sé feliz, vive seguro.

"Hola Mundo" es el mensaje que generalmente mostramos en nuestro primer programa cuando aprendemos un nuevo lenguaje. El primer "Hello World" apareció en el capitulo 1.1 de la primera edición del libro de Kernighan & Ritchie's acerca de C llamado "The C Programming Language" (un icono en la literatura del desarrollo) en 1978 y mostraba el siguiente código:

main() {
printf("hello, world\n");
}

Desde entonces "Hola Mundo" ha sido implementado en casi todos los lenguajes de programación del planeta. La colección que a continuación sugiero visitar abarca mas de 410 programas, todos en diferentes lenguajes, unos bien conocidos otros no tanto y además su traduccion en 64 idiomas.

A continuación algunos de los que he tenido el gusto de implementar:

Claro que esto no significa ni por mucho que yo domine todos estos lenguajes, pero ya que estamos hablando del primer programa que por default se construye, pues casi recuerdo el lugar y epoca en que escribi cada uno de estos.

Lista completa y creditos, en roesler-ac.de.

Aquel que se haya involucrado en cierta forma con un proyecto en Tecnologias de la Informacion me podrá dar la razón por lo menos en dos puntos. Para mi gusto las mejores son: "La recomendación del consultor externo", "La documentación del proyecto" y "El presupuesto del proyecto".


Clic en la imagen para verla a tamaño completo.

Subversion es un sistema de Control de versiones diseñado con el proposito de mejorar las caracteristicas de su antecesor CVS, esta desarrollado bajo licencia libre y junto con SourceSafe y el mismo CVS es una de las soluciones mas populares para 'versionar' codigo fuente.

Este mini-tutorial describe como instalar Subversion 1.4.6 en RedHat Enterprise Linux 4 (RHEL4), configurar el protocolo SVN:// y crear un repositorio, en una entrada posterior conectaremos un cliente.

Instalación
Desde el sitio oficial del proyecto es posible descargar el instalador de Subversion, hay varios paquetes según la distribución que se utilice, en el caso de RHEL4 elegir el RPM.

rpm -Uvh subversion-1.4.6-1.i386.rpm

Creando el repositorio
Los repositorios (o contenedores de las versiones del codigo) pueden estar almacenados en cualquier ruta del sistema de archivos. La unica condicionante es que haya un usuario que tenga privilegios de lectura y escritura sobre la carpeta elegida. En mi caso generé un usuario nuevo y en su ruta inicial guarde mi repositorio.

useradd svn-user
passwd svn-user
svnadmin create /home/svn-user/soa

Configurando Xinetd
Xinetd es un demonio dedicado a administrar la conectividad basada en TCP/IP y provee mecanismos de control de acceso. En este caso lo editaremos para configurar SVN como un servicio. Ubicalo en el directorio /etc/ y agrega al final el siguiente contenido:

service svn
{
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn-user
server = /home/svn-user/soa
server_args = -i -r /home/svn-user/soa
}
includedir /etc/xinetd.d

Los valores de 'user' y 'server' corresponden al usuario que es dueño de la carpeta del repositorio y a esta ruta respectivamente, no olvides personalizarlos a tus necesidades.

Brindando acceso
Subversion cuenta con varias formas de acceder a los repositorios, en este caso seleccionaremos la mas simple de implementar (aunque tal vez la mas insegura tambien). Habrá que ubicar el archivo 'svnserve.conf' en la ruta '/home/svn-user/soa/conf/' y descomentar las siguientes lineas:

[general]
anon-access = none
auth-access = write
password-db = passwd
Con esto le indicamos a Subversion que los usuarios sin autenticar no tienen acceso al repositorio (anon-access = none), que los autenticados pueden escribir (auth-access = write) y que el listado de usuarios estará almacenado en el archivo passwd localizado en el mismo directorio. (password-db = passwd). Este archivo de contraseñas no existe, hay que crearlo con el siguiente formato:

[users]
pedro = password1
pablo = password2
paco = password3

Ahora solo habra que reiniciar el servicio xinetd para que tome los cambios realizados.
service xinetd restart
Pues bien, ahora tenemos funcionando un servidor de Subversion, no resta mas que conectar
el cliente de tu preferencia. En caso de que el editor o IDE que utilices para desarrollar no tenga soporte para conectar a SVN, puedes utilizar Tortoise SVN. Posteriormente publicaré como conectar JEdit, JDeveloper y el mismo Tortoise.

La usabilidad es una característica fundamental para que tus usuarios y clientes visiten, aprovechen y regresen nuevamente a su sitio, incrementando el éxito de tu estrategia en Internet.


Un portal con usabilidad puede:

  • Incrementar visitas de forma sustancial (típicamente suben más de 100% tras el rediseño del sitio de acuerdo a estudios diversos sobre el tema).
  • Reducir tiempos y costos para el usuario y para el dueño de la página.
  • Transparentar la información (al poder realmente encontrarla y consultarla).
  • Agilizar la distribución y manejo preciso de información.

Tradicionalmente en el mundo físico, un cliente compra un producto o servicio y luego conoce a fondo todo lo que este le puede ofrecer durante el uso. En Internet, un visitante lo primero que hace es buscar y conocer rápidamente acerca del producto o servicio, si este no es encontrado fácilmente y presentado de forma adecuada, el cliente simplemente sale del sitio y busca otra opción; difícilmente regresa nuevamente y su organización pierde sus clientes con la competencia.

La usabilidad es una característica que mide qué tan intuitiva y fácil de usar es una página web para el usuario común. Mide los siguientes 3 aspectos:


A continuacion se presentan diez principios basicos para lograr la Usabilidad en un sitio Web.

1. Ubicación y Estado actual.
Trata siempre de que las personas sepan en donde están y que está pasando en cada momento.
2. Semejanza al mundo real. La interfase debe ser consistente con el mundo real. Se debe usar un lenguaje familiar a los usuarios. Hay que seguir los estándares del mundo real, haciendo que la información aparezca de una forma natural y con un orden lógico.
3. Libertad y Control. El usuario debe de tener libertad para recuperase de sus errores sin tener que llevar acabo un proceso largo. Se debe poder “deshacer” y “rehacer”.
4. Consistencia y estándares. Los usuarios no tienen por que preguntarse si el significado de palabras, situaciones o acciones tienen un significado similar. Debe haber una consistencia en ello.
5. Prevención de errores. Aun mejor que los buenos mensajes de error, es la prevención de los mismos.
6. Reconocimiento contra Memoria. Haz que los objetos, acciones y opciones sean visibles. Los usuarios no tiene porque recordar información de una pantalla a la siguiente. Las instrucciones deben ser visibles y fáciles de encontrar.
7. Flexibilidad y eficiencia de uso. El sistema debe permitir el uso eficiente tanto a usuarios nuevos como a los que ya tienen más experiencia.
8. Minimalismo. Incluye sólo la información necesaria, no incluyas cosas irrelevantes o de poca utilidad.
9. Ayude a los usuarios a reconocer, diagnosticar y recuperarse de sus errores. Los mensajes de error deben ser claros, explícitos, precisos y sobre todo, deben sugerir una solución.
10. Ayuda y Documentación. A pesar de que está comprobado que los usuarios raramente visitan las secciones de ayuda en el Web, si la tienes, que sea clara y que la información sea fácil de encontrar. Enlista los pasos que deben seguirse y se breve. No olvides los mapas del sitio muy utiles para un usuario extraviado.

Afortunadamente este tema esta ampliamente documentado, asi que si te interesa ahondar mas, puedes visitar los siguientes sitios, solo por mencionar algunos.

Como parte de la Usabilidad (diseño de un sitio Web considerando que sea fácilmente compresible su navegación y organización) dejo aquí algunos buenos consejos para ir creando enlaces a otras páginas desde un documento HTML. Originalmente son once, pero me gustan más los números con más de dos múltiplos jeje, en pocas palabras me incomodan los números primos.

. . .

  1. Tamaño de los enlaces. La imagen o texto del enlace deberá ser lo suficientemente grande para que sea posible hacer clic sobre él sin problemas. Si el diseño no permite aumentar el tamaño agrega bordes para tratar de obtener un área aceptable del enlace.
  2. La regla del primer enlace. El primer enlace va a llevarse la mayor parte de la atención del lector y el mayor porcentaje de clics. Elige tu primer enlace cuidadosamente. Empieza por lo importante y no lo malgastes en una trivialidad.
  3. No saturar de enlaces el texto. Utilizar demasiados enlaces en el texto lo volverá confuso y tal vez el usuario se vea tentado por dirigirse a alguna de esas páginas que se le ofrecen y olvidar el origen. Enlaza sólo las cosas lo suficiente importantes para merecer un enlace. Por ejemplo una cita, la definición de un concepto que pueda causar duda, etc.
  4. Mantener un comportamiento uniforme y sencillo en los enlaces. Me molestan (y no creo ser el único) los clásicos enlaces doblemente subrayados y de color llamativo que te invitan a explorarlos, de tal manera que cuando pasas el puntero por encima aparece una imagen enorme con una foto de la pagina que esta enlazando. Como lo menciona el articulo original, todo esto de las paginas Web (y a la postre Internet) nació teniendo en mente los Hiperenlaces (HTML -> Hiper Text Markup Language). Modérate con la funcionalidad adicional de los enlaces.
  5. No titular un enlace como 'clic aquí'. Huumm creo que si he cometido este error, lo mas recomendable es utilizar títulos descriptivos, el usuario debe saber hacia donde lo lleva ese enlace. Como editor ocasional de sitios soportados por Geeklog, debería tener esto en cuenta siempre, ya que la herramienta automáticamente toma los enlaces del artículo y los agrega al final como 'información adicional'.
  6. No hacer el contenido dependiente de los enlaces para funcionar. No todo el mundo va a pulsar en tus enlaces. Pueden estar muy ocupados para hacer clic en cada uno de los enlaces que les pongas enfrente, o quizá están leyendo el artículo en otro formato en el cual no pueden hacerlo: impreso, offline, en un móvil. De todas formas es importante ofrecer el contexto necesario para hacer el contenido entendible sin la necesidad de visitar todo lo que está detrás de los enlaces.
  7. No ocultar los enlaces. Los enlaces deben lucir como verdaderos enlaces. Dales un estilo distintivo que no pueda ser confundido con ningún otro elemento o texto de la página. Usa un color único, distintivo, no usado en ninguna otra parte de la página y considera usar el viejo hábito de subrayar el enlace.
  8. No mezclar anuncios y enlaces. Aparentan ser enlaces pero son anuncios. ¿Cual es el anuncio y cual es el enlace? De nuevo: ¿qué es un enlace y qué no lo es? Y… ¿qué va a pensar acerca de esto el usuario?
  9. No tratar de engañar con los enlaces. Los usuarios pueden querer ver previamente hacia dónde van a ser enviados con tu enlace poniendo el cursor encima del mismo y viendo la dirección en la barra de estado. Evita utilizar redirecciones y servicios abreviados de URL's que hacen la URL totalmente ilegible. Los usuarios no deberían tener que lanzarse al vacío y tener fe de que irán donde creen cuando hacen clic en tus enlaces.
  10. No enlazar cosas que el usuario puede querer seleccionar y copiar. Pobre usuario (jaja pobre? son los causantes de nuestras desgracias) el que tenga que seleccionar y copiar texto enlazado. Esto requiere de un complejo conjunto de movimientos precisos del ratón para funcionar correctamente.

Articulo original en ingles en CodingHorror.com y su traducción al español en Sigt.net en este par de paginas también hay imágenes que muestran ejemplos de cada consejo.

Migrando PHP4 a PHP5

Autor: gomezbjesus | 2/20/2007 | | 0 comentarios »


Tal vez sea demasiado tarde para algunos pero ojala sirva para otros. PHP como parte de la documentacion oficial publico en su sitio un listado de los Cambios incompatibles con versiones anteriores, es importante que sean considerados durante la migracion de PHP4 a PHP5.

"PHP 5 y el Motor Zend 2 integrado han mejorado significativamente el rendimiento y las capacidades de PHP, al mismo tiempo que se han tomado precauciones para evitar al máximo incompatibilidades con el código existente. Por lo tanto, migrar su código desde PHP 4 a la versión 5 debe resultar bastante fácil. La mayoría de código PHP 4 existente debe estar listo para correr sin modificaciones, pero aun es buena idea que conozca sobre las pocas diferencias y tome sus precauciones para probar el código antes de actualizar versiones en entornos en producción."

Visita esta pagina para ver la lista de los 13 puntos mas relevantes a tomar en cuenta durante la migracion.

Hace unos dias comente acerca de la impresion (construccion de PDF's) con PHP, esta vez creo conveniente mencionar otra herramienta; se tratra de una serie de clases que permiten generar graficas a partir de tablas de datos, del tipo de las que generamos con cualquier hoja de calculo.

Recordando nuevamente mi largo andar por este camino del desarrollo de software recuerdo cuando necesitaba representar tablas de datos de manera grafica, una alternativa era GnuPlot herramienta muy potente que brinda realmente muchas posibilidades de graficacion. Pero habia ocasiones en que se volvia demasiado complicado o laborioso invocar la herramienta desde PHP solamente para generar una pequeña barra de porcentaje.

Nuevamente vagando por la red encontre JpGraph que facilita por completo esta laboriosa tarea, en esta pagina se muestran ejemplos de graficas generadas con esta herramienta, algo muy relevante es que ninguna de estas se genero con mas de 20 lineas de codigo y obviamente es posible graficar informacion de base de datos, desde mi punto de vista practicamente no tiene limitaciones para crear cualquier tipo de grafica. Por cierto, un saludo a mis buenos amigos de Torreon.

Impresion desde PHP

Autor: gomezbjesus | 9/13/2005 | | 2 comentarios »

Desde mis inicios de programacion en Web, cuando utilizaba ASP y SQL Server siempre fue un dolor de cabeza la impresion desde el Navegador, ya no digamos facturas, formatos oficiales y demas documentos que requerian de un formato muy especifico. Por supuesto que habia alternativas: darte de topes contra la pared, ir a dibujarle con regla y pluma el formato a cada usuario, comprar una licencia de Crystal Reports, etc, etc.

La realidad es que muchas empresas no cuentan con los recursos para adquirir licencias muy costosas o simplemente nos les interesa invertir en estos rubros. Afortunadamente un dia llegue al mundo de PHP y LAMP ( un saludo a Temo y Cederik donde quiera que esten ) y descubri las librerias para generar archivos PDF con PHP.

Clases como R&OS y FPDF hacen la tarea de impresion en Web desde PHP mas facil, rapida y divertida..... jejeje bueno segun el punto de vista de cada quien. Pero esta siempre fue, segun yo, una limitante para el desarrollo de sistemas de informacion mas complejos utilizando PHP. Los resultados son tan buenos que en estos momentos me encuentro felizmente desarrollando una aplicacion que permite la impresion de cheques con todo y poliza en formas continuas emitidas por el banco, quien lo hubiera pensado: todo desde Web.