Lo que ellos saben

El resultado de un estudio bastante interesante sobre que tan expuesta está nuestra información privada en internet.

What they know – WSJ

Como correr multiples aplicaciones con una instalación de Codeigniter

Por default se asume que vas a usar Codeigniter para manejar una sola aplicación, pero, debes saber que es posible correr varios sitios desde una misma instalación.

Cada sitio tendrá su propio folder application, pero todos van a compartir el mismo folder system.

Para que esto suceda debes mover la carpeta applications que viene por default dentro del folder system al root de nuestra instalación.

Luego busca en el index.php que está en el root de la instalación la línea que tiene: $application_folder = “application”; Y sustituyelo por: $application_folder = “../application”;

Ahora puedes copiar el folder application de system de nuevo al root de la instalación y renombrarlo a como quieras que se llame tu nueva aplicación. Cada aplicación debe tener su propio archivo index.php donde debes buscar la línea que tiene:  $system_folder = “system”; y sustituirla por: $system_folder = “../system”; y donde tiene: $application_folder = “application”; sustituirla por: $application_folder = “../admin”; cambia admin por el nombre del folder donde tienes esta aplicación.

Detecta un request Ajax con PHP

Me gusta usar un solo script para los request AJAX y los request “normales” porque resulta en un solo archivo para actualizar y editar.

Tener la capacidad de detectar que tipo de request recibimos es útil para determinar que tipo de contenido devolver en la respuesta. Por ejemplo, si es un request AJAX podríamos querer devolver un JSON o un XML y si no lo es, podríamos devolver un HTML.

Una manera de detectar los request AJAX contrario a los requests que hacen un page-load full puede ser con el siguiente código PHP:

$_SERVER['HTTP_X_REQUESTED_WITH'] es la clave para verificar si es request fue hecho con AJAX o no, pero no todos los servidores proveen esta variable, así que tener otras pruebas adicionales sería importante.

Desactivando el referrer con rel=”noreferrer”

El referrer es la URL de procedencia de un visitante a una página. Esta URL es tomada de header HTTP que envía el servidor con cada request. El referer puede ser tanto una URL externa, como una URL interna en el sitio. HTML5 ofrece la posibilidad de suprimir esta información directamente a nivel de HTML. El atributo rel=noreferrer Le dice al enlace que no pase información del referrer a la página de destino.

El problema con Analytics

Por ejemplo un enlace desde retrorock.info a tu website presentaría “retrorock.info / referal” como source y medium en Google Analytics, sin embargo si retrorock.info usara el atributo rel=noreferrer en sus enlaces no obtendrías ninguna información de referrer y el link contara como un visitante directo “direct / (none)”.

Como esto es un problema? El proposito real de rel=noreferrer es proteger recursos privados. Por ejemplo, imagina el caso de que un enlace venga desde un correo de Gmail o de un Wiki interno de alguna compañía o algo por el estilo. Existe la probabilidad de que al pasar la URL desde donde vino la visita pueda revelar información privada o presentar un riesgo de seguridad, que es por lo cual rel=noreferrer fué introducido. Presenta un problema potencial en cuanto a los analytics, especialmente si es utilizado para razones para las que no fué diseñado.

Como se usa?

La relación noreferrer se puede agregar a los links, igual que la relación nofollow.

Para el usuario final (los visitantes de nuestro sitio) no va a haber ningún cambio aparente, sin embargo, nosotros si podemos tener un interes en marcar nuestros links de esta manera:

  • Links despues de una interfaz de administración: Por ejemplo, despues de validar un comentario en un blog o despues de revisar la calidad de un articulo, se tiende a redireccionar al usuario al enlace de destino. Pero en estos casos la información de la referencia no continuará siendo precisa o no es interesante para nada.
  • Enlaces desde paginas con identificadores de session en el URL: No es raro ver páginas que utilizan información de la sesión en la URL. Enviar un referer inutilizable no tiene ningún sentido. ahora podemos simplemente desactivar esta información.

Soporte en los browsers

En este momento solo los browsers que utilizan el webkit web browser engine (Google Chrome, Safari) pueden dar uso a esta funcionalidad, pero podemos esperar que emerga su soporte eventualmente y debemos estar atentos.

El reto de cambiarnos a nosotros mismos

Muchas veces en nuestra vida nos sentimos desamparados y cuando nos sentimos así, no tenemos el poder de retar el curso de nuestra vida y se nos hace más dificil encontrar la motivación para ser mejores. Muchas situaciones, grandes o pequeñas pueden ser dificiles de confrontar y superar, pero cuando nos encontramos frente a estas, siempre tenemos la oportunidad de cambiarnos a nosotros mismos.

Muchos no entendemos realmente como es el mundo alrededor de nosotros, como son las personas alrededor de nosotros, pues muchos somos privilegiados de recibir mas de lo que damos y cuando abrimos los ojos a la realidad, en la mayor parte de los casos queremos que las cosas cambien, las situaciones y las personas. Pero no podemos esperar que nuestro ambiente cambie, ni las personas que nos rodean si nosotros mismos no cambiamos.

El problema como tal es un resultado de nuestra humanidad, la naturaleza humana, y el mundo es un lugar hermoso y es nuestro deber permitir hasta donde llegue nuestra capacidad, que todos tengan las mismas oportunidades y la misma libertad que tu y que yo.

Si tomamos el reto de cambiar nosotros mismos, de observar el impacto de nuestras desiciones y tomar responsabilidad de las consecuencias de nuestros actos, podemos hacer una diferencia. Si hay algo en el mundo que te preocupa o algo que te gustaria ver cambiar, mira primero hacia ti y observa detenidamente que efecto tienen tus acciones sobre el mundo y sobre los que te rodean.

El cambio es inevitable en nuestras vidas, y a través de nuestro poder de cambiar nuestro propio futuro, podemos esperar cambiar el futuro de todo el mundo.

Solo una reflexión …

Jugando con el API de Tumblr

Leyendo la documentación del API de Tumblr se me ocurrio utilizar esta herramienta de microblogging para hacer algo un poco más personalizado.

El resultado es Tombler. Es una galería de imagenes utilizando los posts tipo picture de mi blog de tumblr.

Es un ejemplo sencillo, pero me da unas cuantas idéas para implementaciones cada vez mas personalizadas.

Highlights

Entre los parametros que podemos utilizar para leer las entradas de un blog hay dos que considero especialmente útiles:

  1. Type: Retorna los posts de este tipo, si no se especifica, el llamado devuelve todos los tipos de posts. Puede ser uno de estos tipos textquotephotolinkchatvideo, o audio.
  2. Tagged: Retorna los posts con este tag. Lo encuentro especialmente util junto a la funcionalidad de permitir a cualquiera publicar un post en tu blog y etiquetar los posts de los visitantes con un tag predeterminado.

Como está hecho?

Aunque esto pudo haberse hecho en dos lineas usando simplexml_load_file yo opté por usar CURL, ya que quise seguir experimentando con las opciones de publicación y mandar request POST.

Lo próximo es navegar por nuestra lista de posts:

<?php foreach ($posts as $post): ?>

Asegurando Drupal – Contenido

Alguna parte del contenido de algunos sitios es para uso estricto del webmaster, de los managers, autores, moderadores, etc. Los roles de Drupal restringen acciones específicas, pero no contenido específico. Para eso necesitas ajustar configuraciones e instalar algunos módulos.

No confíes en que no se puede acceder al contenido de Drupal no publicado

Los nodos y comentarios no publicados aún son accesibles. Si te sabes la URL, o la puedes adivinar, los nodos no publicados pueden ser servidos. Como todos los nodos de Drupal tienen una URL en el formato http://TUSITIO/node/ID, no es difícil navegar utilizando valores numéricos consecutivos  para obtener cada nodo de tu sitio, publicado o no.

Drupal no provee restricciones para los nodos individualmente o para los tipos de contenido. Hay varios módulos que pueden agregar esa funcionalidad, incluyendo: Nodeaccess, Node Access,Content Access.

Restringe el acceso a menús específicos

Drupal no tiene restricciones para los menús o los elementos de un menú específico. Los bloques de menus pueden registringirse por roles en Administer > Site building > Blocks.Para obtener más control hay algunos módulos disponibles, como Menu Access.

Restringe el acceso a bloques específicos

Esconde los bloques privados configurando los permisos para cada bloque en Administer > Site building > Blocks.

Web Standards en TwittDo

Este domingo voy a compartir junto a Bismarck Carreras una ponencia sobre los web standards en el Barcamp de Twitt.do 2010, donde vamos a hablar sobre la importancia de usar web standards hoy para ser compatibles con el futuro, como optimizar el código HTML hasta usar siempre la etiqueta correcta y la estructura correcta, un poco de compatibilidad entre buscadores y de javascript.

El nombre de la charla es Diseñando con Web Standards, vamos a estar en el salón 3 a las 3:30pm.

Asegurando Drupal – Cuentas

A medida que Drupal se va haciendo más famoso, inevitablemente surgen interesados en hackearlo, ya sea por información, desacreditar una marca o algunas otras razones. Lo hemos visto pasar con otros proyectos como WordPress y Joomla. Las amenazas a la seguridad de un sitio web siempre van a existir, así que debemos tomar todas las precauciones necesarias para mantener nuestro sitio seguro.

La configuración de seguridad que tiene una instalación nueva de Drupal es muy floja. por lo tanto debemos dar algunos pasos adicionales para que nuestro sistema tenga una seguridad cada vez más estricta.

El primer paso para mejorar la seguridad de una instalación de Drupal es configurar permisos, roles y cuentas de usuario. En otras palabras, controlar como los usuarios crean sus cuentas y que pueden hacer con ellas.

  • Deshabilita las creaciones de cuentas de usuarios anonimos. Por defecto Drupal deja que los usuarios anónimos creen cuentas sin preguntar. Esto es una muy buena idea si estás creando un foro o un sitio donde una comunidad va a compartir contenido. Pero si estás creando un blog o un sitio web corporativo vás a necesitar un control de acceso más estricto. Deshabilita la creacián de cuentas no aprobadas en Administer > User management > User settings
  • Crea Roles de usuarios. Los roles en Drupal son nombres que se le dan a una serie de permisos que se pueden asignar a los usuarios. Los roles con los que Drupal viene por defecto son Usuario anónimo y Usuario autenticado (que inicio sesión). Evidentemente solo estos dos roles no ofrecen la suficiente granularidad  a la hora de definir permisos. Considera crear un rol Autor para el grupo de usuarios que va a insertar y editar el contenido, Moderador para los usuarios que van a administrar los comentarios y a borrar los comentarios ofensivos y un rol Administrador para los usuarios que puedan hacer modificaciones a la configuración del sitio. Puedes crear los roles en Administer > User management > Roles
  • Asigna los roles a los usuarios. Con los roles creados, edita cada una de las cuentas de los usuarios y asignales su rol. Las cuentas de los usuarios estan en Administer > User management > Users
  • Configura los permisos. Aunque no hayas creado ningún rol, asegúrate de configurar los permisos. Dirígete a Administer > User management > Access control y comienza por deseleccionar todo. Ahora vuelve y permite que los usuarios anónimos puedan ver algo o todo el contenido, pero nunca lo dejes agregar contenido o administrar tu sitio. Si planeas dejar que otras personas tengan cuentas en tu sitio, restringe los permisos a lo mínimo necesario. No asignes un permiso a menos que sepas que un rol lo necesita.

Con estos pasos comenzamos por definir las politicas de creación de cuentas y controlamos el acceso al contenido en los casos que lo consideramos necesario. Luego de haber ajustado la configuración de las cuentas y los permisos, vamos a restringir el contenido que ven nuestros usuarios (próximamente).

Evitando pensar demasiado

Si eres de los que se pasan la mayor parte del día dentro de tu cabeza dándole mil vueltas a todo, puedes pensar que estás solo. No lo estás.

Pensar demasiado es parte natural de la mayoria de nosotros ante determinadas situaciones, aunque existen realmente pocas ventajas de pensar demasiado las cosas. Pensar lógicamente (sin emociones) sobre tomar una acción tiene sus méritos, hay una diferencia muy grande entre pensar sobre algo lo suficiente y pensar sobre algo hasta que se convierta en motivo de parálisis por análisis.

Usualmente pensamos demasiado cuando debemos tomar una decisión importante y está típicamente rodeado de situaciones estresantes. No solamente está asociado con tomar una decision, también pueden influír personas que nos generen preocupación o desconfianza. Es lo que no nos deja dormir por las noches y hace que percibamos una falta de control sobre algún aspecto en nuestra vida. Cuando sentimos que no tenemos el control, nos sentimos desamparados. Pensar demasiado usualmente es el resultado directo. Cuando pensamos demasiado sobre algo embarcamos nuestra mente en cosas sin sentido y nos damos cuenta de que hemos gastado suficiente tiempo pensando disparates como para haber resuelto desde el principio.

Si piensas demasiado en los problemas o te sientes frenado por temor al fracaso, debes cambiar de canal ahora mismo! Aquí hay algunas cosas que puedes hacer para cambiar tu proceso de pensamiento:

  1. Evita situaciones y personas que te puedan hacer pensar demasiado. Esto se puede basar en la historia. Puedes determinar que situaciones te han mantenido despierto algunas noches. Puedes basarte en lo que algo te hace sentir antes de participar. Esto requiere que te puedas aconsejar a ti mismo, evita lugares, personas y cosas que te pongan en ese estado mental.
  2. Habla contigo mismo. En vez de seguir hablando contigo como lo has estado haciendo, eleva un poco tu conversación contigo mismo. Cuando tengas algo que no te puedes sacar de la cabeza, mantente atento a tu proceso de pensamiento … te puedes sorprender de lo rápido que surgen los tópicos. También te puede sorprender que solo pensamos demasiado cuando nuestros pensamientos son negativos, lo que significa que vas a seguir pensando negativamente para refugiarte en tus pensamientos. Cada vez que te encuentres pensando negativamente, reflexiona sobre porque eso no va a ayudar a la situación actual ni futura y trata de cambiarlo por algo positivo que si vá ayudar. Trata de hacer esto siempre.
  3. Involúcrate en un proyecto que tenga las mismas tendecias que tus metas. Encuentra a alguien que sea feliz y las posibilidades son que van a encontrar un proyecto que se alínea con sus valores fundamentales. Si eres capaz de enfocar tu energía en algo que te importa en vez de enfrascarte en los pensamientos del abandono, puedes encontrarte pensando menos y menos en lo que quieres evitar.
  4. Piensa a largo plazo. Esto puede ayudar mucho, pero requiere un poco de experiencia. Tu sabes que cualquier cosa eventualmente vá a pasar, siempre pasa lo que tiene que pasar, asi que usualmente trato de hacerme esta pregunta. Esto va a importar en 6 meses, en un año? Si la respuesta es no, o quizás, seguro que no es una razón para pensarlo hasta la muerte. De esta forma puedes analizar como esta situación te ha cambiado? que has aprendido de esto? o, como podrías afrontar una situación similar en el futuro.

Pensar demasiado afecta directamente la productividad y debemos evitarlo a toda costa. Formar hábitos positivos y re-enforzarlos puede marcar una diferencia en nuestra actitud frente a desiciones y problemas, estas son algunas ideas para comenzar a hacerlo.