ExtJS: librería Javascript, Ajax y componentes GUI

ExtJS es una librería Javascript que hace de puente a las librerías de Yahoo!, jQuery y Prototype+Scriptaculous para ofrecernos de forma sencilla componentes GUI en nuestras aplicaciones cliente.
extjs.png
Entre los componentes que nos ofrece encontramos diálogos, menús, tablas, layouts, paneles, pestañas y mucho más.
ExtJS
Vía / dzone

links for 2007-04-04

Consejos para configuraciones SSH

Aunque yo, la verdad, he tratado las conexiones SSH de resfilón, nunca está mal conocer algunos trucos para cuando tengamos que configurar nuestras conexiones SSH.

  • Cambia el puerto: por defecto el puerto de escucha es el 22, cámbialo para que dificultar los ataques, sobre todo si es mayor a 1024, ya que la mayoría de los scanners no admite valores tan altos.
  • Admite solo el protocolo 2: SSH admite dos protocolos, permite tan solo el 2 ya que es más seguro.
  • Permite solo usuarios específicos: no admitas al usuario root ya que es aumentar los riegos de ataque.
  • Especifica tu propio aviso: si quieres que cualquier usuario pueda ver un aviso de acceso denegado crea tu propio fichero de texto que muestre el mensaje. Este punto no lo comprendo muy bien, está claro que me tengo que meter más a fondo con el SSH.
  • Usa clave pública DSA: puedes usar para la autenticación claves públicas DSA en vez de usuario y contraseña.
  • Usa TCP wrappers: permitiendo así conectarse solo a ciertos hosts.
  • Usa iptables para permitir acceso a hosts: como alternativa a los TCP wrappers.
  • Limita el acceso a periodos de tiempo

Advanced SSH security tips and tricks

Vía / dzone

|

PhpSecInfo: información sobre la seguridad de tu PHP

PhpSecInfo es un equivalente a phpinfo() que nos muestra información similar a este pero indicando los puntos negros en nuestra instalación, mediante una serie de test realizados miediante una única llamada en el entorno de PHP, identifica posibles problemas de seguridad y ofrece soluciones.
phpsecinfo.png
Eso sí, hay que tener en cuenta que PhpSecInfo no sustituye métodos de programación para evitar problemas de seguridad y no hace comprobaciones de nuestro código PHP, tan solo detecta posibles fallos de seguridad.
PhpSecInfo

links for 2007-04-03

Ajax Solutoire: recursos Ajax

solutoire.pngAjax Solutoire es un listado de recursos Ajax muy extenso el cual nos puede sacar de un buen apuro.
Entre los enlaces que nos ofrece encontramos tutoriales de Javascript, de los cuales me ha gustado A (Re)-Introduction to JavaScript. También nos ofrece un listado de enlaces sobre depuración de Javascript, yo la verdad me quedo con Firebug y me olvido del resto, pero bueno, no todo el mundo tiene que tener mis preferencias. Sobre el listado de editores de Javascript debo decir que es muy pobre, si mal no creo todos están basados en Eclipse (jDeveloper también lo está si mal no creo) y todos basados en el mundo Java.
La serie de enlaces sobre tutoriales de Ajax es extensa, y a mí me gusta recomendar todo lo que sea sobre Ajax y accesibilidad, algo bastante importante y que a veces olvidamos un poco.
También aporta enlaces para las librerías más conocidas que tratan Ajax, como pueden ser Scriptaculous, Prototype y Mootols.
Un lugar que tener en nuestros favoritos.
Ajax.solutoire.com
Vía / Proletarium

Trabajar con variables de entorno en Apache

Aunque se llamen variables de entorno, realmente son variables tratadas por Apache, y no las mismas que trata el S.O. Mediante estas variables se puede enviar información a las CGIs u otros programas externos, así esta información podrá ser utilizada en operaciones de acceso a la aplicación.
En el artículo que os presentamos explican detalladamente una introducción a la manipulación de estas variables de entorno, ya sea modificándolas o enviándolas.
Por ejemplo, podemos ver cómo modificar las variables para situaciones específicas: usar la versión antigua de HTTP/1.0 para todas las peticiones o tratar con cuidado las redirecciones cuando sabemos que el cliente no las sabe tratar del todo bien.
Apache Variable Fun in htaccess

|

Laboratorio: navegación por teclado

Ya en varios sitios se ha mostrado como realizar la navegación mediante el teclado, esto significa usar las teclas para acceder a contenidos o para realizar acciones.

Nosotros queremos darle un toque de automatización, que tan solo sea necesario añadir un enlace interno en el documento para acceder a la zona del documento.

Crearemos un script que obtenga todos los enlaces internos del documento y si tienen el atributo rel y su valor tiene el formato “formato:[letra]“, se considerará un objetivo para la navegación por teclado. La letra será la que se usará para acceder y pueden repetirse, por lo que si se repiten las teclas para el shortcut, se irán alternando uno a uno los distintos enlaces.

El script consta de dos partes, uno que se ejecuta después de la carga del documento y que recupera todos los enlaces internos y los agrupa por shortcut, y otro que captura el evento onkeydown del document para acceder a la zona del documento (que será modificando el location).

var __SHORTCUTS__ = {
// Guarda los shortcuts con los enlaces
shortcuts: new Array(),
// Índice del enlace actual organizado por shortcuts
idx_shortcuts: new Array(),
// Obtiene todos los enlaces internos y los que corresponden a un shortcut los almacena
leer_shortcuts: function(e) {
var objs = document.getElementsByTagName("A");
for (var i=0; i<objs.length; i++) {
var rel = objs[i].rel;
if (rel && rel.match(/shortcut:[a-z]/i) && objs[i].name) {
var tipo = (rel.substring(rel.indexOf(":")+1)+"").toUpperCase().substring(0, 1);
if (!__SHORTCUTS__.shortcuts[tipo]) {
__SHORTCUTS__.shortcuts[tipo] = new Array();
__SHORTCUTS__.idx_shortcuts[tipo] = 0;
}
__SHORTCUTS__.shortcuts[tipo][__SHORTCUTS__.shortcuts[tipo].length] = objs[i];
}
}
// Capturo el evento de pulsado de teclado en el document
document.onkeydown = __SHORTCUTS__.controlar_keypress;
},
// Captura una tecla pulsada y accede al shortcut que tenga asociado
controlar_keypress: function(e) {
try {
if (!e) e = event;
var key = e.keyCode;
// Obtengo el caracter correspondiente, quizás esto falle, no he hecho pruebas suficientes
var c = String.fromCharCode(key);
// Si es una letra
if (c.match(/^[a-z]$/i)) {
// Obtengo el enlace para el shortcut
var obj = __SHORTCUTS__.shortcuts[c.toUpperCase()][__SHORTCUTS__.idx_shortcuts[c.toUpperCase()]];
// Acceso a esa parte del documento
document.location = "#"+obj.name;
// Incremento el indice para que acceda al siguiente
__SHORTCUTS__.idx_shortcuts[c.toUpperCase()] = (__SHORTCUTS__.idx_shortcuts[c.toUpperCase()]+1)%__SHORTCUTS__.shortcuts[c.toUpperCase()].length;
}
} catch (e) {} // En IE me da un error que no llego a comprender, ¡cómo no!
}
}
// Cargo el proceso en el onload
if (window.addEventListener) {
window.addEventListener("load", function(event) {__SHORTCUTS__.leer_shortcuts(event);}, false);
} else if (window.attachEvent) {
window.attachEvent("onload", function(event) {__SHORTCUTS__.leer_shortcuts(event);});
} else {
document.onload = function(event) {__SHORTCUTS__.leer_shortcuts(event);}
}

Para indicar qué elementos tienen shortcut, modificamos los estilos para mostrar subrayada la primera letra del elemento, para lo cual el elemento debe tener el atributo title con valor “SHORTCUT: [letra]“. Mejorando así la accesibilidad ya que no añadimos ninguna etiqueta para la primera letra. Por supuesto en IE6 no funciona y con la etiqueta legend tampoco me funciona.

*[title~="SHORTCUT:"]:first-letter {
padding-bottom: 2px;
border-bottom: 1px dotted #000000;
}

Para este ejemplo tenemos dos tipos de shortcuts: ‘P’ para ciertos párrafos y ‘C’ para acceder al formulario de comentarios.

Ejemplo

|

Koala: herramientas para hacer how-to

koala.pngIBM está desarrollando una extensión para Firefox llamada Koala que permite grabar la actividad que se desarrolla en el navegador y generar un script que se guardará en una página y que podrá ser consultado.
El ejemplo que nos ofrecen muestra cómo se accede a una página de búsquedas de casas y se van introduciendo datos para obtener los resultados deseados. En la extensión para Firefox se va mostrando mediante texto las acciones que se ejecutan, por ejemplo “Acceder a la pagina tal”, “Seleccionar ‘2 habitaciones'” y así con cada una de las acciones que hemos ido realizando. Estos textos son editables y después cuando se ejecuta el script para aprender el howto, se tienen en cuenta los datos cambiados.
koala2.png
La verdad es que estoy deseando que se haga pública esta extensión, a muchos nos podría ahorrar documentación para los proyectos.
Koala
Vía / CNET News.com