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
Category Archives: Tutoriales
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.
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:
- Apache Directory Server
- OpenLDAP
- Novell eDirectory
- Windows Server 2003 Active Directory
- Oracle Internet Directory
- Sun Java System Directory Server Enterprise Edition
Clientes
- JXplorer (Java)
- LDAP Browser/Editor (Java)
- Luma (Unix)
- Frood (Unix)
- CoralDirectory LDAP Browser (Windows)
- LDAP Exporter (Windows)
- maX.500 Macintosh
- phpLDAPadmin (web)
LibrerÃas
- Java LDAP
- JDBC-LDAP Bridge Driver
- Sun (iPlanet) Directory Server Deployment Guide
- PHP LDAP
- .NET LDAP
- Perl-LDAP
- Ruby/LDAP
- Mozilla LDAP C SDK
Más información
- Wikipedia (español – inglés)
- ldapman.org
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:
- ¿De cuántas maneras se puede relacionar un objeto con otro?
- ¿Cómo se posicionan lateralmente los elementos inline?
- ¿Cómo se formatean los bloques apilados?
- ¿Cómo dos elementos bloques son formateados en una pila?
- ¿Cómo se formatean los elementos flotantes?
- ¿Por qué no se muestra el margen superior?
- ¿Cómo se colapsan los márgenes verticales entre dos bloques?
- ¿Cómo se colapse el padding entre un elemento padre y sus hijos?
- ¿Cómo se relaciona el ancho de un elemento padre con el de sus hijos?
- ¿Cómo se extiende el ancho total de un elemento?
- ¿Cómo pobrar el ancho total de un elemento hijo?
- ¿Cómo se puede probar el ancho del contenido de un elemento padre?
- ¿Qué se considera espacios en blanco en un documento HTML?
- ¿Cómo se formatean los espacios en blanco?
- ¿Qué ocurre con varios espacios en blanco en elementos inline?
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.
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.
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’
Algo 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