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
05
2010
0

Herramientas para programación web – Aardvark
Escrito por NomikOS el 05/Jun/2010 | 104 visitas

Aardvark: Muchas veces instalé esta extensión de Firefox para posteriormente desinstalarla sin todavía saber para que servía exactamente. La verdad es que los mismos resultados se pueden conseguir con el inspector de Firebug. Pero Aardvark –hasta donde sé– se especializa en identificar etiquetas HTML, CSS e IDs a medida que apuntas con el cursor del mouse. Esto debe ser muy útil ya que es una herramienta que uso a menudo aunque sea sólo para satisfacer la curiosidad en determinada página.


Una vez instalado puedes iniciar Aardvark con el menú contextual como se ve en la imagen o colocar un botón en la barra de herramientas de Firefox (aquí se ve el tercero de izquierda a derecha).

Luego mueve el cursor e irá mostrando información (HTML, CSS e IDs) respecto a cada elemento apuntado.

Ahora puedes apretar h para obtener una lista de comandos:

Los que más uso son:

  • w para ampliar la selección al elemento padre.
  • n para disminuir la selección al elemento hijo (contrario a w)
  • v para ver el código HTML
  • Written by NomikOS in: Firefox,Herramientas para programación web |
    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 |
    Nov
    24
    2009
    0

    Perfiles y múltiples instancias en Firefox.
    Escrito por NomikOS el 24/Nov/2009 | 173 visitas

    Esto es muy útil si desarrollas extensiones para Firefox.

    Perfiles

    Para abrir el manejador de perfiles usa uno de los siguientes comandos

    1
    2
    3
    4
    firefox -P
    firefox -ProfileManager
    # Para iniciar con algún perfíl determinado –en este caso: dev
    firefox -P dev

    Múltiples instancias

    Generalmenet cuando tienes abiertas varias ventanas, estas pertenecen a la misma instancia del navegador. Por eso si una se cuelga y decides matarla, todas las demás son cerradas también.
    Si desarrollas o pruebas extensiones debes reiniciar el navegador a cada rato. Lo mejor es crear una instancia separada para estos trabajos con la opción -no-remote que no afecte a otras ventanas que tengas abiertas.

    1
    firefox -no-remote

    Conclusión

    La mejor manera de iniciar una instancia para trabajar es usando un perfíl (-P nombre-perfil) dedicado que use sólo un mínimo de extensiones. Las esenciales como por ejemplo firebug, dafzilla, etc… y que sea autónoma (-no-remote)

    1
    firefox -P dev -no-remote

    No está de más conocer la opción -safe-mode que deshabilita todas las extensiones y temas en una instancia.

    1
    firefox -safe-mode

    Hay una extensión muy útil para reiniciar rápidamente una instancia de Firefox:
    QuickRestart

    Agregado:

    A veces puede pasar que abres el manejador de perfiles (firefox -P) y no salen todos los que habías creado! Bueno, a mi me ha pasado varias veces y era simplemente porque estaba lanzando firefox como root :\ Los perfiles se guardan en tu directorio personal de mozilla, en mi caso /home/nomikos/.mozilla/firefox –el punto frente a .mozilla significa que es un directorio oculto.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [~/firefox-extensions-dev]
    [16:18:28 nomikos@zenwalk]$ ll ~/.mozilla/firefox/
    total 16
    drwx------ 15 nomikos users 4096 2009-11-25 15:59 3w8p16at.default
    drwx------  9 nomikos users 4096 2009-11-25 16:17 7qo4m1w2.dev
    drwx------  3 nomikos users 4096 2009-11-23 12:14 Crash Reports
    -rw-r--r--  1 nomikos users  156 2009-11-25 02:11 profiles.ini
    [~/firefox-extensions-dev]
    [16:18:32 nomikos@zenwalk]$ cat ~/.mozilla/firefox/profiles.ini
    [General]
    StartWithLastProfile=1

    [Profile0]
    Name=default
    IsRelative=1
    Path=3w8p16at.default
    Default=1

    [Profile1]
    Name=dev
    IsRelative=1
    Path=7qo4m1w2.dev
    Written by NomikOS in: 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 |

    motor: WordPress. tema: TheBuckmaker modificado por NomikOS.