Skip to content


Enlaces simbólicos en windows

Ayer descubrimos una de las buenas cosas que trae Windows Vista (si no la única) y sus posteriores versiones de Windows 7 y Windows Server 2008, los enlaces simbólicos, algo que yo creía que era únicamente de Linux.

El descubrimiento salió gracias a un Drupal multisite que estamos configurando.  Resumiendo rápido, la base de un Drupal multisite es crear carpetas concretas por cada dominio que van a tener dentro de /sites. Por ejemplo:

  • /sites/example.com
  • /sites/default
  • /sites/domain.org

El problema surgió cuando el cliente decidió cambiar el nombre del dominio, con lo cual había que cambiar el nombre de la carpeta. En la propia página de drupal.org te recomiendan encarecidamente que NO CAMBIES EL NOMBRE DE CARPETA, puesto que en base de datos guarda las rutas del dominio original y se puede liar parda. Si tienes linux hay un enlace simbólico hacia el nuevo dominio, creando así dos carpetas. La del dominio correcto y la de todo el contenido. Pero… ¿cómo hacemos eso en un Windows Server 2008 R2?

Después de investigar bastante descubrimos que sí que existen los enlaces simbólicos en Windows desde la versión de Windows Vista. Esto es la solución más elegante y con menos impacto que existe. ¿Y cómo se hacen? Así de fácil:

Crear enlace simbólico en Linux:

ln -s /path/ruta/original [/path/ruta/simbolica]

Crear enlace simbólico en Windows:

mklink /d C:\path\ruta\simbolica C:\path\ruta\original

Sí, en Linux y en Windows los parámetros van cambiados, pero… ¡qué mas dá! ¡Existe esta función!

Posted in Drupal, multisite, Servidor.

Tagged with , , , .


Copias de seguridad: Subir ficheros por FTP en un Shell Script

Una de las cosas más importantes de nuestra web, ya sea wordpress, drupal, web estática, …, son las copias de seguridad.

Hace poco he programado un script de la shell para poder hacer un paquete de todos los ficheros del directorio web y subir el fichero comprimido por FTP a algún otro servidor que tengamos.

En mi caso utilizo este sh:

#!/bin/bash
servidor="urlServidor"
usuario="usuario password"
nombreFichero="$USERNAME-cs-$( date +%Y%m%d%k%M%S).tar"
echo "Comprimiendo directorio …"
tar -zcvf "/home/nacho/Scripts/tars/comprimido/$nombreFichero" /home/nacho/Scripts/tars/comprimir/*
echo "Subiendo fichero $nombreFichero por ftp"
ftp -n << EOF
passive
open $servidor
user $usuario
put "/home/nacho/Scripts/tars/comprimido/$nombreFichero" /public_html/ups/$nombreFichero
quit
EOF

echo "Fichero $nombreFichero subido correctamente"

Con este código me ha subido perfectamente ficheros a un ftp gratuito y a un ftp de pago.

Intentaré preparar algún otro Script para hacer un sql_dump de una base de datos MySQL normal y añadirla al mismo tar del paquete.

Además, ejecutando estos script en procesos cron, podemos tener copias de seguridad con el intervalo que nosotros deseemos.

Posted in Servidor.

Tagged with , , .


Escribiendo código javascript eficiente

Acabo de ver una presentación, sobre cómo escribir código javascript eficiente, en slideshare escrita por Nicholas Zakas que me ha parecido interesantísima. Son 130 páginas, más o menos.

A mi me ha resultado interesantísima.

Posted in Buenas Prácticas, Javascript.

Tagged with .


En defensa de los derechos fundamentales de Internet

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que:

  1. Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
  2. La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
  3. La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
  4. La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
  5. Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
  6. Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
  7. Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
  8. Exigimos que el Gobierno garantice por ley la neutralidad de la Red, en España ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
  9. Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
  10. En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Se ha publicado en multitud de sitios web. Si estás de acuerdo y quieres sumarte a él, difúndelo por Internet.

También está disponible en inglés, catalán, gallego, asturiano y aragonés.

Posted in General.


Cómo gestionar el cacheo de un servidor web

Hoy, mi compañero de curro @cos1887 me envía por twitter un artículo muy interesante y realmente completo sobre la cache de los servidores web y cómo gestionarla.

En él te explícan qué es la cache, cómo la gestiona un servidor, los tipos de cache que hay, formas de implementarla y también, por qué no, cómo evitar la cache.

Realmente es un artículo que merece la pena leer.

Fuente: [HelloGoogle]

Vía: [@cos1887]

Posted in Servidor.

Tagged with , , .


Mis primeros pasos en Flex y Action Script 3

Hoy mismo he empezado un curso de Flex y Action Script 3 en CREA Formación. Lo primero es darle las gracias a mis compañeros de Indra que han hecho posible que vaya a este curso, y no es ninguna coña. Lo voy a aprovechar todo lo que pueda y más.

Yo vengo con conocimiento 0 en MXML y AS3, los dos lenguajes principales.

Flex divide el contenido que va a mostrar (paneles, imágenes, campos de texto, botones, …)  del que hace dinámica la aplicación (eventos, acciones, cambios de comportamiento, …). Para el primero utiliza, según la estructura de XML, el lenguaje MXML; muy parecido a XAML, el símil de Silverlight. Para el comportamiento dinámico utiliza Action Script, una forma de escribir scripts algo peculiar.

El primer día, como es lógico, para los que empezamos nos enseñan un poquillo cómo va el lenguaje, los clásicos “Hello World”, alerts, etc etc. Como ejercicio de final de día hemos hecho algo parecido a esto: mi primer programa en flex. El código fuente está en el repositorio SVN de CRaZyTeaM, en el Ejemplo 1.

Para ello he escrito un código muy muy simple de MXML, que me recuerda mucho a el XAML de Silverlight:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="iniciar()">
       
        <mx:Script source="colores.as"/>
       
        <mx:Panel x="69" y="49" width="550" height="352" layout="absolute" id="panel1">
                <mx:Button x="171.5" y="49" id="btnVerde" label="Verde" />
                <mx:Button x="239.5" y="49" id="btnRojo" label="Rojo"/>
                <mx:Button x="299.5" y="49" id="btnAzul" label="Azul"/>
                <mx:TextArea x="171.5" y="98" width="179" height="97" text="Cambia de color" id="capaColor"/>
        </mx:Panel>
       
</mx:Application>

Y su correspondiente fichero de scripts:

private function iniciar():void{
btnVerde.addEventListener(
MouseEvent.CLICK,
function(e : MouseEvent) : void{
cambiaColor(e, "green")
},
false , 0 , false);
btnRojo.addEventListener(
MouseEvent.CLICK,
function(e : MouseEvent) : void{
cambiaColor(e, "red")
},
false , 0 , false);
btnAzul.addEventListener(
MouseEvent.CLICK,
function(e : MouseEvent) : void{
cambiaColor(e, "blue")
},
false , 0 , false);
}

private function cambiaColor(e : MouseEvent, c:String):void{
capaColor.setStyle("backgroundColor",c);
}

De entre este poquillo de código, lo que más aprendimos es al ejecutar cosas al inicio del programa, con el “creationComplete” en el mx:Application y al tratamiento de eventos.

Uno de losproblemas que me encontré es que realmente los addEventListener nos los han enseñado sin poder pasar parámetros a cambiaColor de la forma:

btnRojo.addEventListener(MouseEvent.CLICK,cambiaColor);

Y la verdad es que no me parece nada útil. Mucho código para tan poca cosa, aunque tendrá alguna razón.

Respecto al código HTML que genera el propio Flex Builder y el SDK del Flex pues… sin comentarios…

Por el resto, una visión de los lenguajes que no había visto, pero bastante parecida a C# y que me gusta bastante.

¡Gracias chicos por darme este curso!

Posted in Action Script 3, Flash, Flex.

Tagged with , , , , .


[Mensaje Internet Explorer] ¿desea mostrar los elementos no seguros?

Uno de los últimos problemas a los que me he enfrentado ha sido el mensajito de Internet Explorer que dice: “La pagina que esta abriendo contiene tanto elementos seguros como no seguros, ¿desea mostrar los elementos no seguros?”. Ni firefox, ni Opera, ni Safari me daban este error.

El mensaje se produce cuando se establece una conexión por https y se produce alguna conexión por http. Al estar en una zona segura (https) y cargar cualquier elemento de una zona no segura (http), aparece ese mensaje. Da igual que se esté cargando un css, un js o una imagen, todo lo que va por https tiene que cargarse desde el mismo dominio por https. También se puede hacer una petición a otro dominio siempre y cuando sea por protocolo https y sea un dominio de confianza con certificado de seguridad.

Como en nuestro proyecto estamos haciendo una migración por pasos y tenemos que hacer que parte de lo antiguo funcione con lo nuevo, los ajax que se hacían antes por frames los estamos simulando por un iframe, y ahí viene el problemilla. Cuando cargaba el iframe daba un error de seguridad. El src del iframe lo dejábamos vacío porque luego lo cambiábamos o lanzábamos un formulario por ahí para simular el Ajax. La solución era crear un html vacío, el clásico blank.html, y crear diréctamente el iframe con el src=”/blank.html”. Con eso ya las conexiones por el iframe van siempre por el protocolo https y por el dominio y ya no nos saldrá ese error.

Fue chungo descubrirlo, pero cuando lo descubrimos queríamos darnos capones por no hacerlo como realmente se tiene que hacer… en fin, problema solucionado ^_^

Posted in Errores, HTML.

Tagged with , , .


Alternate, unos impresentables

Como dice el refrán, Lo barato siempre sale caro. Qué razón tenía el que lo pensó…

Hace cosa de 4 o 5 meses escribí un post sobre unos problemas que tuve en el ordenador, lo contento que estaba con Alternate por darme solución, …

Que ingenuo fui en su día. Como les había llevado el ordenador 3 veces antes, ese día me “arreglaron” el ordenador al momento. Tocaron latencias y voltajes y cuando llegué a mi casa funcionaba todo a la perfección… hasta 2 o 3 días despues, que volvió a fallar con el mismo problema.

Alternate por dentro

La gente del servicio de venta de Alternate son bastante amables la mayoría. Te aconsejan, te echan una mano. Con ellos no estoy en absoluto disgustado, ni con los pobres chicos del servicio de postventa, que no ganan una mierda mucho para todo lo que tienen que aguantar. Con los que mejor no me gustaría cruzarme son con los del servició técnico o con los responsables, que despues de llevar 6 veces el ordenador aun no he podido ponerles cara, y eso que he hecho todo lo que he podido. Incluso montarla bastante grande hasta que apareciese alguno de esos impresentables, pero ni con esas.

Además, cada vez que entraba al servicio de postventa, con cara de gilipollas, había siempre alguien protestando porque no le habían arreglado cualquier cosa y les estaban dando largas. Luego ellos siempre pedían las hojas de reclamaciones, o incluso llamaban a la policía.

Después de llevar el ordenador 6 veces y recogerlo con los mismos fallos o incluso más de los que lo llevé, opté por denunciar a Alternate al OMIC de San Sebastián de los Reyes pidiendo el importe íntegro del ordenador en metálico. Sin vales, descuentos y todas esas polleces.

Mis daños y perjuicios

Llevo un año, prácticamente, sin ordenador. Yo llevo varios blog desde casa y algunos programas a medida también desde casa, y tengo que usar el ordenador de mi padre porque no tengo ordenador. Yo me compré un monitor a parte del ordenador y lo tengo cogiendo polvo, porque no tengo ordenador. Yo tengo pagada mi cuota del World of Warcraft y no puedo usarla porque no tengo ordenador. El ordenador me costó 980€, pero, ¿quién me paga todo esto? ¿quién paga mi cuota del WoW? ¿quién me paga por no poder publicar en mi casa? ¿Quién me paga la gasolina por llevar y recoger el ordenador? ¿Quién me paga por todo ese tiempo que he perdido comiendome los atascos de la N-1, esperando la cola del servicio-postventa? ¿Quien va a pagar todos estos daños y perjuicios? NADIE!!!! Me tocará quedarme con mi cara de gilipollas y mi sensación de impotencia al ver que los sinvergüenzas de Alternate me han timado en mi propia cara.

Le ha pasado a mucha gente

Hay mil foros, webs y blogs en internet diciendo lo malo y lo pestoso que es el servicio post-venta de Alternate. Com bbuscar “Problemas Alternate” aparece

¿Vosotros creéis que merece la pena ahorrarse 20€ en comprar una gráfica de 150€ pudiendo sufrir toda esta mierda?

Alternativas a alternate

Como alternativas a alternate yo ya he decidido que, pagando más, me lo compro en el corte inglés. Pero aun así, tengo gente que me pide ordenadores personalizados y tengo que comprar componentes sueltos y luego montarlos yo. Para eso compro, y por este orden, en estas 3 tiendas y de momento me va bastante bien:

  • www.mod-pc.com
  • www.pc-online.net
  • www.appinformatica.com

Defensa ante esta gentuza

Yo lo que hice fue pedir la hoja de reclamaciones, siempre con una buena educación, porque los chicos de delante del mostrador  no tienen la culpa. Después de 6 veces, no perdí la calma con estos chicos, y si no la pierdes te puede ayudar bastante. Por último, el chico de allí me ayudó a rellenarla y luego decidí enviarla directamente al ayuntamiento de San Sebastián de los Reyes. De momento ya me han respondido desde el ayuntamiento, y me dicen que ya se va a proceder a tramitar la queja a Alternate. Esperemos que haya suerte.

También he leido en varios foros que haciendo denuncias serias y alegadas a Alternate, han conseguido sacar cerca de 10.000€ en daños y perjuicios. Si se tiene tiempo siempre se puede probar, ¿no?

Posted in General.


Qué es una redirección 301/302 y como hacerla

Las respuestas se le indican al navegador por medio de cabeceras. respuesta 301 indica al navegador que ese sitio no está en la url marcada y que ha sido movido de forma permanente, y la respuesta 302 indica que se ha movido temporalmente.

Este tipo de respuestas al usuario no le afectan puesto que continúa  hacia la página correcta que se le indica en otra cabecera

¿Qué motivos pueden existir para hacer una redirección tipo 301 o 302?

El principal, yo creo, que es el SEO. Con una redirección 302 estás diciendo a la araña del buscador que de momento ese contenido está en otra url, pero que volverá a estar en un periodo corto de tiempo. Si le indicamos que es una redirección 301 estamos diciendo que tiene que actualizar todas las referencias a nuestra URL en su base de datos a las nuevas, pero guardando todo lo que ya tienen.

Aplicaciones de las redirecciones tipo 301 y 302

Si por ejemplo tienes un dominio: www.perico.es.kz, por ejemplo, y consigues comprar www.perico.com, podrías hacer una redirección 301 en www.perico.es.kz añadiendo como destino www.perico.com.

Con esto se conseguiría, o al menos en teoría, guardar todo el pagerank que hayas podido acumular, todas las indexaciones que los buscadores te hayan hecho y todo el resto de información que concierne a tu web en esos buscadores.

El código más simple para hacer una redirección de este tipo en php sería:

&lt;?php
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.perico.com" );
?&gt;

y se colocaría en el index.php de www.perico.es.kz.

En mi caso yo he hecho otro uso de estas cabeceras. Yo tengo un blog en el dominio www.elblogmasabsurdo.es, pero compre el dominio www.elblogmasabsurdo.com y lo que hago es redirigir el tráfico del .com al .es. Se podría hacer de muchas maneras, desde haciendo un forward desde el index.php del dominio .com al dominio .es, programarlo por javascript o incluso en el .htaccess del apache, pero la solución de las cabeceras me parece la más limpia y rápida de todas

Posted in HTML, PHP.

Tagged with , .


Accesibilidad en los resultados de Google

Justo ahora, mientras estaba buscando en Google algunas cosas del trabajo, me he topado con otra cosa de google labs. Se llama Google Experimental Labs, y he dicho “Vamos a ver qué es esto”.

Viendo utilidad por utilidad he llegado a la última y me he llevado una buena sorpresa al leer “Accesibility View”.

Búsqueda de XML accesible

Por lo que he podido investigar así rápidamente tiene estas características:

  • Se puede navegar por los resultados con el teclado, con los mismos atajos de teclado que Google Reader o que Gmail.
  • Se amplia el resultado que se está viendo magnificándose el texto y cambiando el fondo
  • Si se utiliza un lector de pantalla de navegador o un screen reader, la información se irá hablando automáticamente a medida que se vaya navegando.
  • Se basa en un parametro url: &esrch=Axs
  • Código que parece accesible (sin tantas tablas como antes)
  • Los atajos de teclado de esta utilidad de google son los siguientes:
TECLA ACCIÓN
j or DOWN Selecciona el siguiente elemento
k or UP Selecciona el anterior elemento
l or RIGHT Se mueve a la siguiente categoría (Resultados, anuncios, búsquedas, …)
h or LEFT Se mueve a la categoría anterior (Resultados, anuncios, búsquedas, …)
<Enter> Abre el enlace seleccionado
/ Pone el cursor en la caja de búsqueda
n Selecciona el siguiente elemento y cambia de página si se está en el último resultado de la página
p Selecciona el elemento anterior y cambia de página si se está en el primer resultado de la página
= Magnifica el elemento actual
- Reduce el tema actual
A Cambia a Busqueda de resultados accesible (Accessible Search Results)
W Cambia a la Búsqueda de resultados por defecto

Yo, que me dedico a esto de la programación web y me interesa bastante los estándares web y la accesibilidad, no lo conocía y me parece una herramienta simple pero bastante interesante.

Posted in Accesibilidad, HTML.

Tagged with , .