Jul
29
2010
0

$_SERVER['HTTP_REFERER'] null. Solución.
Escrito por NomikOS el 29/Jul/2010 | 77 visitas

Iba a tirar una talla, pero no hay tiempo. Muchos programas basados en web usan HTTP_REFERER que en PHP se encuentra en la variable superglobal $_SERVER['HTTP_REFERER']. Esta variable entrega la dirección de la página inmediatamente anterior a la actual. Se usa principalmente para saber desde donde se ha llegado (obvio, que imbécil :| y con este wn tengo quer vivir!)

A veces esta variable es nula, principalmente cuando se escribe directamente la dirección en el navegador o se usa un bookmark, etc. A veces también es nula cuando el navegador la bloquea (o un firewall u otro programa) así que se se sabe que no es confiable. Lo dice el mismo manual de PHP.

Cuando estas modificando un sitio en producción de un cliente y de pronto algún formulario deja de funcionar tu cara puede ponerse blanca y tu monitor cubrirse con un repentino emesis, cachai?.

Asegúrate de que tu navegador está enviando este dato. En el bueno de Firefox lo haces así:

1
2
3
# En la entrada de direcciones escribes about:config
# busca el valor network.http.sendRefererHeader
# ponlo a su valor por defecto que es 2

Este dato se supone disponible siempre que se envía un formulario, ya sea con GET o POST. Pero es mejor prescindir de él si estas codificando tú. Como a veces debes meter mano en programas de terceros puedes encontrártelo. Y si tu navegador estás bloqueando el envío de este dato puedes, ya sabes, terminar limpiando tu monitor con una escobilla. Lo que quiero decir es que este es un efecto local que depende de tu ambiente de desarrollo, el navegador en este caso. No necesariamente va a significar un problema para otros usuarios. Pero sigue siendo un problema en potencia. Si depende de ti no uses esta variable.

Written by NomikOS in: Firefox,Servidores web,Tips y trucos cortos |
Jun
30
2010
0

Torpedos, chuletas y cheat-sheets para el desarrollador web cojonudo, bacancito y cool.
Escrito por NomikOS el 30/Jun/2010 | 211 visitas

Aquí hay una buena muestra de las materias que debes conocer como desarrollador web. Imprímelas y pégalas en la puerta del baño, de manera que puedas estudiarlas mientras meditas en la levedad del ser. Ni se te ocurra linkear directamente a estas imágenes porque ando escaso de ancho de banda. Asi que si pasas por aquí de visita por favor entra sin comida ni mascotas –a menos que sean gatos. Cada una tiene una referencia para dar crédito a quien se lo merezca.


Expresiones regulares

http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/

(more…)

May
19
2010
0

Instalar extensiones de firefox incompatibles con últimas versiones.
Escrito por NomikOS el 19/May/2010 | 173 visitas

La mayoría de las incompatibilidades de algunas extensiones de Firefox se deben a configuración y no a una imposibilidad técnica. Usemos como ejemplo “CodeIgniter UserGuide Firefox Extension”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Primero baja el archivo xpi
$ wget http://www.kintek.com.au/CodeIgniterMenu.xpi
# En windows usa "Guardar link como..."

# desempaquetar a un directorio temporal
$ unzip -d tempdir CodeIgniterMenu.xpi
# En windows usa winzip...

# cambiar directorio y listar
$ cd tempdir/ && ll
total 16
drwxr-xr-x 3 nomikos nomikos 4096 2008-12-03 14:52 chrome
-rw-r--r-- 1 nomikos nomikos  136 2008-12-03 14:51 chrome.manifest
drwxr-xr-x 3 nomikos nomikos 4096 2008-12-03 09:02 defaults
-rw-r--r-- 1 nomikos nomikos 1060 2009-08-04 12:07 install.rdf

Esta es un estrutura básica de una extensión FF. Nos interesa install.rdf.

1
2
3
# editar (con un editor de texto)
$ vi install.rdf
# En windows usa notepad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Contenido:

<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:em="http://www.mozilla.org/2004/em-rdf#">

<Description about="urn:mozilla:install-manifest">
  <em:id>cimenu@kintek.com.au</em:id>
  <em:version>1</em:version>
  <em:type>2</em:type>
  <em:iconURL>chrome://CodeIgniterMenu/content/images/ci_mres.png</em:iconURL>

  <!-- Target Application this extension can install into,
      with minimum and maximum supported versions. -->
  <em:targetApplication>
    <Description>
      <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
      <em:minVersion>3.0</em:minVersion>
      <em:maxVersion>3.5.*</em:maxVersion>
    </Description>
  </em:targetApplication>

  <!-- Front End MetaData -->
  <em:name>Code Igniter Menu</em:name>
  <em:description>A simple menu for the Code Igniter PHP Framework documentation.</em:description>
  <em:creator>Simon Lang</em:creator>
  <em:homepageURL>http://www.kintek.com.au/</em:homepageURL>
</Description>
</RDF>

En la linea 19 se configura la máxima versión para la que la extensión funcionará. Es un dato bastante arbitrario.

1
      <em:maxVersion><b>3.5.*</b></em:maxVersion>

Simplemente hagamosla compatible con todas las versiones 3.*

1
      <em:maxVersion><b>3.*</b></em:maxVersion>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# para continuar debemos estar en el mismo directorio
$ ll
total 16
drwxr-xr-x 3 nomikos nomikos   4096 2008-12-03 14:52 chrome
-rw-r--r-- 1 nomikos nomikos    136 2008-12-03 14:51 chrome.manifest
drwxr-xr-x 3 nomikos nomikos   4096 2008-12-03 09:02 defaults
-rw-r--r-- 1 nomikos nomikos   1060 2010-05-19 23:42 install.rdf

# empaquetar (compresión zip) con una extensión xpi
$ zip -r addon-compatible.xpi *
# En windows usa winzip y luego cambia la extensión zip a xpi

# ahora tendrás la nueva extensión lista opara usar
$ ll
total 564
drwxr-xr-x 3 nomikos nomikos   4096 2008-12-03 14:52 chrome
-rw-r--r-- 1 nomikos nomikos    136 2008-12-03 14:51 chrome.manifest
drwxr-xr-x 3 nomikos nomikos   4096 2008-12-03 09:02 defaults
-rw-r--r-- 1 nomikos nomikos 556853 2010-05-19 23:45 addon-compatible.xpi
-rw-r--r-- 1 nomikos nomikos   1060 2010-05-19 23:42 install.rdf

Para instalarla puedes usar “Abrir archivo” del menú de Firefox o arrastrar y soltar dentro de la ventana principal.

Gracias, gracias, sí, lo sé, gracias, gracias.-

Written by NomikOS in: Computación,Firefox |
Aug
20
2009
0

XML en 10 puntos – Resúmen.
Escrito por NomikOS el 20/Aug/2009 | 86 visitas

Semantic Web Rubik's Cube
Creative Commons License photo credit: dullhunk

Como una preparación para el desarrollo de extensiones para Firefox, comenzamos con una introducción a XML (Extensible Markup Language), lenguaje con el cual está hecho XUL (XML User Interface Language), el lenguaje para interfaces de usuario de Mozilla.

Este es un resúmen –apenas resumido– de un documento del mismo nombre perteneciente a la W3C. Está en español y puedes encontrarlo en http://www.w3.org/XML/1999/XML-in-10-points.es.html


1. XML es para estructurar datos

Los datos estructurados incluyen cosas como planillas de cálculo, libretas de direcciones, parámetros de configuración, transacciones financieras y dibujos técnicos. XML es un conjunto de reglas (también se las podría pensar como líneas de guía o convenciones) para diseñar formatos de texto que permitan estructurar los datos. XML facilita a la computadora la tarea de generar datos, leerlos, y asegurar que su estructura no es ambigua.

2. XML se parece un poco al HTML

Al igual que HTML, XML usa etiquetas (palabras encerradas por ‘<’ y ‘>’) y atributos (de la forma nombre=”valor”). XML usa las etiquetas sólo para delimitar las piezas de datos, y deja la interpretación de los datos completamente a la aplicación que los lee. En otras palabras, si usted ve “<p>” en un archivo XML, no asuma que es un parágrafo. Dependiendo del contexto, podría ser un precio, un parámetro, una persona, una p… (¿y quién dice que debería ser una palabra que empiece con “p”?).

3. XML es texto, pero no está pensado para ser leído

Los programas que producen planillas de cálculo, libretas de direcciones y otros datos estructurados, a menudo guardan esos datos en disco, usando un formato binario o de texto. Una ventaja del formato de texto es que permite que las personas, si es necesario, miren los datos sin el programa que los produjo; en un aprieto, uno puede leer un formato de texto con su editor de texto favorito. XML permite esto. Las reglas de XML son estrictas, su especificación oficial prohibe a las aplicaciones que traten de adivinar las intenciones del creador de un archivo XML dañado; si el archivo está dañado, la aplicación debe detenerse allí mismo y reportar un error.

4. XML es verboso por diseño

Como XML es un formato de texto y usa etiquetas para delimitar los datos, los archivos XML son casi siempre más grandes que los formatos binarios comparables. Eso fue una decisión consciente de los diseñadores de XML. Las ventajas de un formato de texto son evidentes (ver el punto 3), y sus desventajas son fácilmente neutralizadas usando compresión, tanto para el almacenamiento como para su transmisión.

5. XML es una familia de tecnologías

XML 1.0 es la especificación que define lo que son las “etiquetas” y los “atributos”. Más allá de XML 1.0, “la familia XML” es un conjunto creciente de módulos que ofrecen servicios útiles para realizar tareas importantes frecuentemente demandadas. Xlink describe un modo standard de agregar hipervínculos a un archivo XML. XPointer y XFragments son sintaxis en desarrollo para apuntar a partes de un documento XML. Un XPointer se parece un poco a un URL, pero en lugar de apuntar a documentos en la Web, apunta a piezas de datos dentro de un archivo XML. CSS, el lenguaje de hojas de estilo, es aplicable a XML tanto como a HTML. XSL es el lenguaje avanzado para expresar las hojas de estilo. El DOM es un conjunto standard de llamadas a funciones para manipular archivos XML (y HTML) desde un lenguaje de programación.

6. XML es nuevo, pero no tanto

El desarrollo de XMLcomenzó 1996 y ha sido una recomendación de la W3C desde febrero de 1998. Antes de XML estuvo SGML, desarrollado a principios de los 80. El desarrollo de HTML empezó posteriormente en 1990. Los diseñadores de XML simplemente tomaron las mejores partes de SGML, guiados por la experiencia con HTML, y produjeron algo que es no menos poderoso que SGML, y vastamente más regular y simple de usar.

7. XML lleva HTML a XHTML

XHTML, el sucesor de HTML, tiene muchos de los mismos elementos de HTML. La sintaxis ha sido ligeramente cambiada para conformarse a las reglas de XML. Un documento “basado en XML” hereda la sintaxis de XML y la restringe de ciertas maneras (XHTML permite “<p>”, pero no “<r>”); también suma significado a esa sintaxis: XHTML dice que “<p>” significa “parágrafo”, y no “precio”, “persona”, o cualquier otra cosa.

8. XML es modular

XML le permite definir un formato de documento combinando y reusando otros formatos. Puesto que dos formatos desarrollados independientemente podrían tener elementos o atributos con el mismo nombre, se debe tener cuidado al combinarlos (¿”<p>” significa “parágrafo” de este formato o “persona” de aquél otro?). Para eliminar la confusión de nombres al combinar formatos, XML provee un mecanismo de espacio de nombre. XSL y RDF son buenos ejemplos de formatos basados en XML que usan espacios de nombres.

9. XML es la base de RDF y de la Web Semántica

El Resource Description Framework (RDF) es un formato de texto XML que soporta aplicaciones de descripción de recursos y metadatos, tales como listas de temas musicales, colecciones de fotos, y bibliografías. Por ejemplo, RDF podría permitirle identificar las personas en un álbum de fotos Web usando información de una lista de contactos personales. Lo mismo que HTML integró los documentos, los sistemas de menú y las aplicaciones de formularios para lanzar la Web original, RDF integra las aplicaciones y los agentes en una Web Semántica. Las descripciones formales de los términos en una cierta área (compras o manufactura, por ejemplo) se llaman ontologías, y son una parte necesaria de la Web Semántica. RDF, las ontologías, y la representación del significado de modo que las computadoras puedan ayudar a las personas a hacer el trabajo, son tópicos de la Actividad de la Web Semántica.

10. XML es gratuito, independiente de la plataforma y bien soportado

Al elegir XML como la base de un proyecto, usted gana acceso a una comunidad grande y creciente de herramientas (¡una de las cuales podría ya hacer lo que usted necesita!) e ingenieros experimentados en la tecnología. Optar por XML es un poco como elegir SQL para bases de datos: usted todavía tiene que construir su base de datos y sus propios programas y procedimientos que la manipulen, y hay muchas herramientas disponibles y mucha gente que puede ayudarlo. Y como XML es gratuito, usted puede construir su propio software alrededor de él sin pagar nada a nadie.


Written by NomikOS in: Computación,Firefox |
Aug
19
2009
2

Guake – Un terminal para linux al estilo Quake.
Escrito por NomikOS el 19/Aug/2009 | 2 comentarios | 304 visitas

Te presento el terminal guake, para linux. Al toque de una tecla –F12, por defecto– abre una ventana de terminal desde el tope de tu pantalla, similar a la consola del juego Quake.


guake-terminal


Se mantiene cargado en memoria, por lo que abre y cierra muy rápido. Muy útil para quienes necesitan acceder continuamente a la línea de comando. [F11] intercambia a pantalla completa. Perfecto!

Hay otros como tilda (GTK+) y yakuake (KDE), pero este está hecho especialmente para Gnome, por lo que brinda mayor performance. En XFCE funciona muy bien.

Una gran diferencia es que estos dos últimos permiten variar el ancho de la ventana. Guake ocupa todo el disponible.


Written by NomikOS in: Computación,Linux |
Aug
18
2009
0

"Algunas verdades".
Escrito por NomikOS el 18/Aug/2009 | 67 visitas

Algunas personas cuando se enfrentan a un problema, piensan “Ya sé, voy a usar expresiones regulares”. Ahora tienen dos problemas. –Jamie Zawinski.

“Escribe tu código como si el tipo que vaya a hacerle mantención fuera un maniaco homicida que sabe donde vives.” –Kathy Sierra and Bert Bates.

“EL código más rápido es aquel que no corre.” –Joel Webber.

Estas frases las encontré en el blog de la programadora Huilén Abed

Written by NomikOS in: Computación |
Jul
01
2009
3

Instalar Windows XP / Vista después de Linux. MBR.
Escrito por NomikOS el 01/Jul/2009 | 3 comentarios | 251 visitas

Windows XP SP2
Creative Commons License photo credit: leff

Hay un problema clásico en el mundo de los usuarios que necesitan tener MS-Windows en un sistema de partida dual (dual boot system) con Linux habiendo sido instalado primero.

Hay muchas razones para instalar XP/Vista después de Linux. Tú ya lo sabrás, por eso está aquí. En mi caso, ya tenía una partición para Windows 98 –así es, el venerable y azulado Win98 en el siglo XXI. En ningún sistema operativo que ese correrás mejor Quake I o Blood I y en general todo lo I. Cresta, ya me estoy sintiendo también I y del siglo pasado…

Así que, siendo necesario actualizarse en cuanto a juegos, pensé que sería encachado relajarse acechando a un tipo durante media hora –mientras piensas, por supuesto, en como continuar desarrollando ese script de lujo en que trabajas– para luego ponerle un certero tunazo desde 1 km. de distancia y rápidamente darle al botón de reinicio y volver al “real duty”. Si, por supuesto que hablamos de “Tom Clancy’s Ghost Recon” en modo sniper.

A todo esto Tom Clancy es el autor de las novelas cuyo protagonista es el famoso analista de la CIA Jack Ryan. Películas: “A la caza del Octuble rojo –con Sean Connery”, “Juego de patriotas”, “La suma de todos los miedos”, etcetera… a que no lo sabías? Juegos: “Ghost Recon”, “Rainbow Six”, etcetera.

Bueno, si quieres jugar, usas MS-Windows. Si, también sirve para escribir cartas, chatear y ver porno en la web. Pero hasta el más recalcitrante colega anti-MS estará de acuerdo en que es una excelente plataforma para juegos.

Y casi caigo de nuevo en el error de instalar Win olvidando que sobreescribirá el MBR (Master Boot Record: Registro maestro de arranque). Este registro es independiente de las particiones y se encuentra en el principio/centro del disco. (more…)

Written by NomikOS in: Computación,Linux | Tags: , , ,
Jun
27
2009
0

Cuanto puedes hacer con 1 Kb de RAM en un ZX81 Home computer.
Escrito por NomikOS el 27/Jun/2009 | 70 visitas

ZX 81
Creative Commons License photo credit: fdecomite

Sólo un rápido post para rememorar mi primer computador: un ZX81 –en rigor era un comodato. Ah! ingenua juventud.
Así es gente del siglo XXI, con esto nos lo teníamos que arreglar en la prehistoria.
En todo caso no podrán negar que tenía estilo. Presionar esas teclas que bajaban apenas un milimetro es algo que –sorpresa– aún puedo sentir!

Podrás creer que este fascinante artilugio sólo poseía 1024 bytes en su memoria –útil de trabajo– RAM? Yo sabía muy bien que un byte, a lo más, puede representar un caracter, es decir, una letra, un número o un signo. Así que siempre me encontraba resumiendo al máximo la codificación de lo que quería lograr. Lamento, de veras, decir que no fueron suficientes bytes.

Entrabas directamente a un editor en el que podías escribir unas cuantas lineas en BASIC para luego apretar [RUN] y a ponerse a mirar si pasaba algo –con las pepitas como platillos. Que bueno recordarlo. Pero basta, que se me… Por la cresta, ya me le estoy atragantando.

ZX81

ZX81

Fuente imágenes: http://www.1000bit.it

Written by NomikOS in: Computación,Personal |
Apr
30
2009
0

Desvarios de un bloguito.
Escrito por NomikOS el 30/Apr/2009 | 158 visitas

Sólo me andaba dando una vuelta buscando blogs similares al mío para empezar un blogroll y me he encontrado con este artículo “¿Qué tipo de Programador eres?”. Y claro, claro que me siento identificado también. Y como dice mi anterior colega, pa’ que decirlo. Sólo que es bastante emocionante sentirse parte de un cibergrupo.

Hace mucho tiempo que ando por estos lares, pero hace muy poco que me empiezo a sentir verdaderamente parte de este mundo virtual.
Sólo eso… (more…)

Written by NomikOS in: Computación,Personal |
Mar
09
2009
0

Trackbacks, qué, cómo y porqué.
Escrito por NomikOS el 09/Mar/2009 | 98 visitas

Internet's universe...
Creative Commons License photo credit: CLUC

1.- Introducción

Aun cuando existen casi desde los inicios de los blogs casi ningún blogger sabe lo que es ni para que sirve ni como se usa. Si buscas información sobre él la mayoría son artículos nebulosos refiriéndose a la definición en wikipedia:

… se trata de un enlace inverso que permite conocer qué enlaces apuntan hacia un determinado post; de ese modo avisa a otro blog que se está citando uno de sus posts …

Qué? Recuerdo que cuando leí esa definición no me quedo nada claro el concepto. Quería implementarlo en METASITIO y no encontré ninguna explicación satisfactoria ni siquiera en inglés.

Bueno, ahora lo entiendo muy bien y no sé como puede costar tanto explicarlo. Aunque, logré entenderlo una vez que leí y modífiqué un script en PHP que lo implementaba. Ahora. si me lo preguntaran, diría esto: (more…)

Written by NomikOS in: Computación | Tags:

motor: WordPress. tema: TheBuckmaker modificado por NomikOS.