Más de 300 páginas de algoritmos a tu alcance

En alguna ocasión, cuando estamos desarrollando una aplicación web, necesitamos recurrir a los apuntes de la universidad para recordar como realizar un algoritmo para una acción en particular (ordenar una lista, por ejemplo).
Si eres de los que no guardan tus apuntes, puede que este e-book te venga bastante bien, porque recopila algoritmos para números, de divide y vencerás, programación dinámica, programación linear y muchos más encontrados en más de 300 páginas.
Algorithms
Vía / SitePoint

|

Referencia HTML con ejemplos

Muchas de las veces, cuando estamos realizando páginas web y no usamos un editor HTML completo, nos puede ocurrir que no nos acordamos de una etiqueta HTML, de su utilización o de sus atributos.
Si te encuentras en esa situación, HTML Playground puede serte de mucha utilidad, ya que te muestra todas las etiquetas HTML, con su descripción y un código de ejemplo, el cual se puede visualizar y modificar.
htmlplayground.png
HTML Playground
Vía / Ajaxian

¿Qué es un LDAP?

En este artículo pretendemos dar una pequeña explicación sobre LDAP para aquellos que lo desconozcan y así luego poder ampliar sus conocimientos.

LDAP (Lightweight Directory Access Protocol) o Protocolo de Acceso Ligero a Directorio no se trata de un sistema de almacenamiento como muchas veces se piensa, se trata de un protocolo de comunicación para acceder y modificar información almacenada en un directorio, conocido normalmente como directorio LDAP. Por lo tanto, cuando se dice: “guardemos los datos en el LDAP”, se está cometiendo una equivocación.

Al tratarse de un protocolo, que funciona bajo TCP/IP, es independiente de la plataforma. Es lo que se usa para conectarse a un directorio LDAP, el cual puede estar implementado como sea, ya sea una versión comercial, open source, bajo Windows, UNIX o cualquiero otra plataforma.

¿Es el directorio LDAP una base de datos?, sí, lo es, pero no se trata de una base de datos relacional como pueda ser Oracle o MySQL. Se trata de un directorio, como pueda serlo el que guarda las fichas de los libros en una biblioteca. Al tratarse de un directorio, está totalmente jerarquizado y está optimizado para muchas lecturas y de pequeño volumen. Aunque se puede guardar lo que se quiera, está pensado para almacenar datos de poco tamaño (email, teléfono, dirección, permisos) y, a su vez, no está optimizado para que haya muchas modificaciónes, piensa que por ejemplo la dirección de correo electrónico no es algo que se modifique con mucha frecuencia.

Como ya hemos dicho anteriormente, el protocolo LDAP accede a la información contenida en un directorio, este directorio se trata de un árbol compuesto de entradas de directorio, las cuales son un conjunto de atributos, formados por nombre-valor, según se indica en un esquema.

Para identificar una entrada en el directorio LDAP, se precisa de su DN o Distinguished Name, el cual estará formado por su atributo nombre (CN o Common Name, cn=”Fulano Perez”) y otros atributos que lo relacionen con las jerarquías superiores, ya sea usando O u C (formato X.500 o=”Mi Empresa”, c=ES), O (según internet o=”empresa.com”), DC (componentes de dominio dc=empresa, dc=com). Después del DN habrá otra serie de atributos que definan la entrada.

Un ejemplo de esto, representado en formato LDIF y que nos puede hacer entender mejor el concepto, sería el siguiente:

 dn: cn=Fulano Perez,dc=empresa,dc=com
cn: Fulano Perez
givenName: Fulano
sn: Fulano
telephoneNumber: +34 555 11 22 33
mail: fulano.perez@empresa.com
manager: cn=Mengano Martinez,dc=empresa,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top

Como se puede apreciar, en esta entrada diríamos que “Fulano Perez”, perteneciente a “empresa.com” (en este caso se organiza como si se tratara de internet, porque puede darse el caso de que sea un grupo de empresa .com de las cuales “empresa.com” es una de ellas). Después veremos que hay datos referentes al empleado, como son un email y su teléfono, y datos a cerca del tipo de registro, en este caso de una persona empleada en la empresa, y datos sobre su jefe, que si los usamos en un acceso al directorio LDAP podremos obtener una información parecida.

Para que quede más claro el concepto de directorio, vamos a ver como sería la estructura:

- com
- otraempresa
...
- empresa
...
- Mengano Martinez
...
- Fulano Perez

Directorios LDAP

Algunas de las implementaciones del servidor LDAP o directorio LDAP son las siguientes:

Clientes

Librerías

LDAP in Python

Más información

|

170 cheat sheets para desarrolladores web

Ya hace tiempo hablamos de un directorio donde podíamos encontrar 30 cheat sheets, en este caso se trata de 170, que nos ayudarán en nuestro desarrollo web.
Aunque no todas son de desarrollo web, si la mayoría. Organizada por categorías, podemos encontrar ‘chuletas’ sobre: ActionScript, Ajax, Apache, ASCII, ASP, C#, CSS, CVS, Firefox, Google, HTML, Java, Javascript, LaTeX, microformatos, MySQL, Oracle, Perl, Photoshop/Gimp, PHP, Python, expresiones regulares, Ruby, Linux, blogs, Windows y XMLs.
Yo ya le he dado a imprimir unas cuantas que me van a venir muy bien.
Cheat Sheet Round-Up: Ajax, CSS, LaTeX, Ruby
Vía / Digg

|

Reglas para maquetar varios elementos con CSS

Un tutorial bastante interesante que nos responderá varias preguntas sobre maquetación de varios elementos. Nos ayudará a comprender cómo apilar capas, alinear elementos inline, propiedades float y collapse, hasta un total de 15 preguntas:

CSS Tutorials – Understanding Multiple Element Formatting Rules

Vía / Pixel Groovy

Más libros gratuitos sobre informática

Ya hace tiempo hicimos referencia a una página que nos ofrecía enlaces a libros gratuitos sobre informática, y como el saber no ocupa lugar, y seguro que nuestro disco duro tiene “lugar” vacio sufiente, aquí os dejo un enlaces a libros gratuitos organizados por categorías:

  • Lenguajes de programación: de lo más variada, nos encontramos con el más famoso C y C++, el durarero Cobol, el académico Ada o Lisp (porque no tengo muy claro que se usen demasiado) y muchos otros más.
  • Java/J2EE: organizado entre otros grupos en JSP, Struts, Java avanzado.
  • Unix/Linux: destacaría el apartado de las expresiones regulares y de las revistas gratuitas.
  • Informática general: algoritmos, seguridad, …
  • Bases de datos: como por ejemplo Oracle o MySQL.
  • Web: PHP, HTML, AJAX, diseño.

Y muchos libros más.

Free Computer Books, Tutorials & Lecture Notes

Vía / Digg

|

Métodos mágicos en PHP 5

Ya he comentado alguna vez el peligro de no estar a la última de las novedades que salen en un lenguaje de programación. En este caso voy a hablar de PHP5. La nueva versión nos ofrece una serie de métodos que el autor define como “mágicos”, supongo que por el hecho de que nos pueden dar una funcionalidad un tanto especial.

  • __construct: se utiliza para la construcción de objetos, logicamente este si es conocido si te has informado sobre las novedades de PHP5 referente a objetos.
  • __toString: controla lo que devuelve el objeto cuando se transforma en una cadena de texto, por ejemplo cuando hacemos un echo. Puede sernos muy util sobre todo para las trazas.
  • __clone: muy usado en Java, nos permite controlar la clonación de un objeto. Aunque no lo parezca, puede ser muy útil.
  • __set_state: devuelve la llamada a la función var_export(), así cuando queremos exportar un objeto, devolvemos el código PHP válido que deseamos. En esta es en la función que más se detiene el autor del artículo y merece la pena echarle un vistazo a fondo.

The Magic __set_state Method

Vía / Good PHP Tutorials

QuickRef: referencias para programadores

No todo es Google, y aunque siempre tenemos nuestras páginas favoritas para buscar documentación sobre los lenguajes de programación que usamos, no viene nada mal un lugar donde reune los sitios donde obtener la documentación que necesitamos.
quickref.png
Por ahora tienen referencia a los siguientes lenguajes: CSS, HTML, JavaScript, MySQL, Perl, PHP, y Ruby.
El diseño no atrae demasiado, pero funciona muy bien y muy rápido (gracias al uso de AJAX). Creo que lo visitaré con bastante frecuencia y espero que vaya aumentando poco a poco.
QuickRef.org
Vía / Digg

| |

Cómo hacer una tag cloud ‘perfecta’

tagcloud.pngAlgo típico de la Web 2.0 son las tag clouds o nube de etiquetas, las cuales muestran las etiquetas definidas en nuestra sitio, variando el tamaño de la letra según la relevancia del tag.
Se trata de algo muy vistoso y que cumple bien su objetivo, acceder a lo más importante de forma rápida. El problema está cuando queremos implementar nuestra propia tag cloud (claro, que nos podemos dejar de romper la cabeza y buscar alguien que ya lo haga). Por ejemplo, si la nube tiene scroll, ya sea por la cantidad de tags o por la ventana del usuario, la finalidad de que los más destacados sean los más visibles puede fallar si alguna etiqueta importante queda oculta por el scrolling.
Con este problema y muchos otros se ha encontrado Kevin Hoffman y por ello se ha creado un documento en el que explica cómo resolver esos problemas (o al menos intentarlo).
Whitepaper : In Search of the Perfect Tag Cloud
Via / dzone

|

Algo de Javascript avanzado

Algo malo de dedicarse a la informática es que te puedes quedar anticuado con facilidad, algo bueno de ser blogger (al menos para mí) es que al querer dar buenas noticias y buenos scripts, te hace estar al día.
Algún compañero me ha preguntado alguna vez por partes de Javascript que no entendía, incluso me decía si realmente es Javascript. Supongo que a todos nos ha sonado raro el código Javascript cuando incluye JSON.
Lo malo es que cuando buscas por ese tipo de código que desconoces, buscas por términos como “javascript function”, “javascript avanzado”, y otras cosas que no suelen dar los resultados que esperamos. En el caso de “javascript function” nos suele dar cómo crear funciones, pero solo lo más básico, sin embargo, si hubieramos buscado por “javascript funciones anónimas” si hubieramos obtenido resultados deseados. Si buscamos por “javascript avanzado” solemos obtener directorios de efectos hechos en javascript y no las novedades que trae Javascript en sus nuevas versiones.
Por eso, si quieres aprender conceptos más avanzados de Javascript, te va a venir bastante bien este tutorial:
Quick guide to somewhat advanced JavaScript