|

Escribir en ficheros mediante XUL

Leyendo la entrada de aNieto2K sobre logs en Javascript, me he acordado de que hace tiempo que quiero comentar cómo escribir en ficheros mediante XUL en extensiones para Firefox.

Aunque la principal función puede ser la escritura de opciones o ficheros de configuración o guardar datos, el motivo por el que yo lo busqué era para hacerme unos logs que me faciliten el trabajo del desarrollo de una extensión para Firefox (de aquí la asociación con el post de aNieto2K).

var savefile = "c:\\displaynotes.log.txt";
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert("Permission to save file was denied.");
}
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( savefile );
if ( file.exists() == false ) {
alert( "Creating file... " );
file.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420 );
}
var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
.createInstance( Components.interfaces.nsIFileOutputStream );
// Suponemos que existe una variable con el texto llamada content
outputStream.init( file, 0x04 | 0x10, 420, 0 );
var result = outputStream.write( content, content.length );
outputStream.close();

En el init del outputStream nos encontramos con una serie de flags para abrir el fichero que se usan como máscara. Estos flags tienen los siguientes posibles valores:

RDONLY         0x01
PR_WRONLY      0x02
PR_RDWR        0x04
PR_CREATE_FILE 0x08
PR_APPEND      0x10
PR_TRUNCATE    0x20
PR_SYNC        0x40
PR_EXCL        0x80

A parte, existe un parámetro para indicar el modo del fichero, válido únicamente para entornos Unix:

00400   Read by owner.
00200   Write by owner.
00100   Execute (search if a directory) by owner.
00040   Read by group.
00020   Write by group.
00010   Execute by group.
00004   Read by others.
00002   Write by others
00001   Execute by others.

No recuerdo de dónde saqué esta información, por lo que no os puedo poner la referencia.

links for 2006-11-28

5 razones por las que feeds RSS no son populares

En el artículo dicen que los RSS no son populares, yo no he hecho un estudio, ni soy un experto en la materia, pero creo que debo darles la razón, porque no he conocido a ningún usuario de Internet “normal” que los conozca. ¿Posibles motivos?:

  • RSS aún se desconocen: la mayoría de los usuarios de internet no conoce los feeds RSS. Si trabajas en algo referente a la informática te llevarás una sorpresa al darte cuenta de que son desconocido para mucha gente con la que trabajas.
  • Los feeds fallan con frecuencia: alguna que otra vez los feeds fallan y los autores no lo comprueban con la suficiente frecuencia para darse cuenta de ello.
  • Feeds no válidos: una de las causas que hacen que fallen los feeds es que son XML que tienen que ser válidos, y muchas veces se crean incorrectamente por tema de mayúsculas/minúsculas o espacios.
  • Feeds eliminados: aunque la web sea la misma, puede que la url de los feeds haya cambiado. También es típico el caso de pasar de un servicio de blogs a un dominio propio y encontrarte con que tienes la url anterior.
  • Sistema de notificación: que el dueño de la aplicación web reciba un aviso de que los feeds están mal, es algo que estaría muy bien tener de alguno de los servidores de feeds.

Actualización: SigT hace un gran análisis del artículo que es imprescindible leer.

5 Reasons Why RSS Feeds are Not Popular

Mejora tus técnicas de programación en Javascript

Ya hemos publicado anteriormente una referencia a un artículo de new earth online y hoy vamos a hablar sobre otro de sus grandes artículos.

En este caso se trata de cómo mejorar nuestra forma de programar con Javascript. Una de las ventajas o inconvenientes de Javascript, según quien lo vea, es que se puede usar en cualquier parte de la página web y que no existe ningún método obligatorio de uso. Pero aún así, hay veces que es mejor seguir ciertos pasos para tener un código mejor y más limpio:

  • Separa el contenido de la funcionalidad, por ejemplo, si vas a añadir un evento a un objeto (onclick) añádelo mediante el evento window.onload usando un archivo js.
  • Una cosa que ya hemos comentado anteriormente es ver cómo funciona tu aplicación web si no está activado Javascript.
  • Realiza código compatible con los distintos navegadores. Desgraciadamente, a veces es necesario detectar el navegador y resolver según el navegador que sea.
  • Declara las variables usando var, si no lo haces puedes tener problemas en las funciones recursivas, por ejemplo si en una función tienes un for con una variable i y dentro de ese for vuelves a llamar a la misma función, al llegar al mismo bucle puedes tener problemas.

Javascript Best Practices

Vía / dzone

links for 2006-11-25

Recursos para Subversion

SVN es un sistema de gestión de versiones que quiere reemplazar al conocido CVS, para aquellos que quieran aprender sobre esta aplicación, os pasamos una serie de recursos que esperemos sean de utilidad.

Documentación

Clientes

Librerías

Utilidades

  • Subclipse (plugin para Eclipse)
  • AnkhSVN (plugin para Microsoft Visual Studio .NET)
  • JDeveloper (plugin para JDeveloper)
  • WLW-SVN (plugin para WebLogic)
  • cvs2svn (convierte CVS a SVN)
  • Tailor (migra distintos tipos de aplicaciones de versionado)
  • vss2svn (convierte Microsoft Visual Source Safe (VSS) a Subversion)
  • SVN Importer (importa desde otro control de versiones a SVN)
  • Subversive (plugin para Eclipse, gracias Jordi)

Proteger tu aplicación web

Interesantísimo artículo que nos guía a proteger nuestra aplicación web para evitar posibles ataques. Haciendo un corto resumen, separamos las distintas acciones que debemos seguir en:

  • Validar todas nuestras entradas (variables de sesión y formularios). Los datos deben ser lo que se esperan, y si se esperan desde POST, que no vengan desde GET.
  • Evitar el cross-site scripting (XSS) que es la introducción maliciosa de código mediante formularios que se ejecutará en nuestra aplicación.
  • Modificar el fichero de configuración php.ini para que no use super globals, para mostrar todos los errores y que estos se muestren por fichero.
  • Asegurar la conexión a la base de datos. Este método no lo conocía y la verdad es que me ha gustado bastante.
  • Bloquear IPs de hackers, ya sea mediante PHP o htaccess
  • Si el otro día hablábamos del LDAP, ahora nos hablan del LDAP injection, otra cosa que no sabía (no, si ya he dicho que es un buen artículo).
  • Evitar que Google proporcione datos que no queremos (Google Hacking), para ello lo mejor es usar el robots.txt.
  • Restringir el acceso mediante .htaccess

Protecting your Site

Vía / dzone

|

TinyDigg: API simple de Digg para PHP

Aunque el mismo autor reconoce que el código no está muy optimizado, el hecho es que esta librería de PHP para acceder a funciones de Digg, puede ser de suficiente utilidad por si queremos incluir las noticias de Digg actualizadas en nuestra web.
Muestra el número de diggs que tiene una historia, la categoría de la historia, cabecera, enlace a entrada original y el resumen.
TinyDigg
Ejemplo
Vía / Good PHP Tutorials

Consejos para cuando uses Ajax

Ajax tiene muchos amigos debido a la Web 2.0 y muchos enemigos, sobre todo debido a la usabilidad. Al igual que dijimos con el tema de Flash, el problema no es Ajax, sino el uso que se da de él. Por eso, conocer estos consejos nos puede venir bastante bien:

  1. No actualices toda la página usando Ajax, ni modifiques elementos HTML que puedas modificar mediante Javascript y el DOM.
  2. Ten en cuenta que habrá visitantes que tengan el Javascript desactivado o usen un navegador con una version de Javascript antigua o no completa como la de los dispositivos móviles.
  3. Cachea, ya sea en el cliente o en el servidor, las peticiones más frecuentes. Por ejemplo, el autocompletado hace peticiones constantemente al servidor, lo que puede gastar recursos del servidor y la base de datos.
  4. No tengas muchas llamadas concurrentes para cambiar la interfaz, normalmente los navegadores solo realizan dos llamadas HTTP a la vez, por lo que si tienes muchas llamadas para cambiar las imágenes, puede volverse muy lenta la carga.
  5. Usa llamadas asíncronas, ya que si las realizas de forma síncrona y hay problemas de red, el navegador se quedará esperando la respuesta.
  6. Prueba tu aplicación web con una conexión lenta.
  7. Comprueba el uso de memoria del navegador mientras ejecutas tu aplicación web durante 1 ahora, 2, 10, un día.
  8. Comprueba el código de estado http que devuelve XMLHttpRequest.
  9. Prueba a desactivar el objeto XMLHttpRequest.
  10. Usa indicadores de carga para saber que la aplicación está cargando algo.
  11. Ten en cuenta que puedan usar el botón de “Atrás” del navegador.
  12. Si es necesario cancelar un petición ten en cuenta que la petición ya está procesándose en el servidor y que el cliente procesará la respuesta.

Yo añadiría que hay que tener en cuenta que el orden de llegada de las respuestas no tiene que ser el mismo que el de las peticiones, si es importante el orden, usa bloqueos pare evitar problemas de concurrencia.

The top 10 mistakes when using AJAX

Vía / dzone