En ocasiones puede ser necesario trabajar en nuestro ordenador Debian con el servidor X parado, como por ejemplo cuando deseamos instalar un nuevo driver gráfico. Para parar el servidor:
Cerramos la sesión gráfica seleccionando en el menú superior “System->Logout”
Pulsamos Ctrl+Alt+F1. Con esto, finalizamos el servidor X y pasamos a una pantalla alfanumérica, pero el gestor de ventanas todavía está ejecutándose
Hacemos login como root, y ejecutamos el comando “/etc/init.d/gdm3 stop”. Si el gestor de ventanas que utilizamos fuera otro, deberemos sustituir “gdm3″ por el nombre script correspondiente (“gdm”, “kdm”, fdm”,etc…)
Ejecutar de nuevo servidor X
Para volver a arrancar el servidor X y el gestor de ventanas, ejecutamos el mismo comando que en el punto 3, con el argumento “start”. p.ej., “/etc/init.d/gdm3 start”
Cómo impedir que se ejecute el servidor de ventanas en el arranque del sistema
Si lo que queremos es inhabilitar de manera más permante el servidor X, podemos impedir que se ejecute en el arranque del sistema con el comando:
# update-rc.d -f gdm3 remove
de nuevo, debemos sustituir gdm3 por “gdm”, “kdm”, “xdm”,… según seal el windows manager instalado en nuestro sistema.
Para arrancar manualmente el servidor X, hacemos login como root y ejecutamos el comando “/etc/init.d/gdm3 start”
Y para volver a configurar el servidor X para que se arranque durante el arranque del sistema:
Para implementar en nuestro diccionario chino-español el reconocimiento de símbolos hanzi escritos por el usuario con el ratón, empleamos el software Tesseract de reconocimiento óptico de caracteres (OCR). En este artículo se indican los pasos a seguir para realizar esta tarea.
En este artículo vamos a ver cómo se puede definir en nuestra página web un área en la que el usuario puede dibujar formas con el ratón. Después, la imagen dibujada puede ser enviada al servidor para que la procese de la forma que se desee. Esta funcionalidad la utilizaremos en nuestro diccionario mandarín-español para permitir al usuario escribir con el ratón el símbolo hanzi que desea localizar. Para este propósito necesitaremos también utilizar un software de reconocimiento de caracteres (OCR) con soporte para chino simplificado, que comentaremos en un próximo artículo. Seguir leyendo »
Google Maps V3 puede ser utilizado en modo anónimo, sin necesidad de una clave del API. En este caso, Google establece un límite de 25.000 visualizaciones de mapa por día y por dominio.
Pero utilizar una clave del API de Google maps es aconsejable: no tiene ningún inconveniente, y por otra parte tiene la ventaja de darnos acceso a las estadísticas de uso recogidas por Google.
En este artículo vamos a exponer los distintos procedimientos que podemos emplear para incorporar un vídeo o audio a una página web en general, y a un artículo de un blog de wordpress en particular. Durante la exposición, intentaremos explicar los conceptos que intervienen y las consideraciones que hay que tener en cuenta para llevar a cabo esta tarea.
Caso 1. Añadir un vídeo de YouTube a un artículo de WordPress.
Supongamos que estamos viendo en nuestro navegador web un vídeo de Youtube que nos gustaría incluir en uno de nuestros artículos.
En la barra de direcciones del navegador aparece la url:
Para incluir el vídeo en un artículo de nuestro blog, basta con copiar dicha url, y pegarla como una nueva línea del artículo (ni siquiera es necesario definir un enlace):
WordPress reconoce automáticamente la url, y genera el código HTML necesario para visualizar el vídeo en nuestro artículo, cambiando la escala para ajustar la anchura del vídeo a nuesta página:
Si queremos tener un poco más de control, podemos utilizar el “shortcode” embed, con el que podemos especificar la anchura y altura con la que queremos que aparezca el vídeo:
[embed width="300" height="200"]…[/embed]
Los valores de width y height que especificamos son valores máximos.
En nuestro ejemplo, si examinamos el código html que genera wordpress, vemos que el vídeo se incluye en un iframe con dimensiones (267, 200), ya que en este caso el límite lo impone la altura máxima de 200 pixels:
Caso 2. Añadir un vídeo que se encuentra almacenado en nuestro servidor
El caso que hemos comentado anteriormente es el más sencillo, pero depende de unos datos que se encuentran almacenados en otro servidor, y que podrian dejar de estar disponibles sin previo aviso.
También puede darse el caso de que nosotros hayamos generado directamente contenido multimedia (video o audio), y queramos servirlo directamente desde nuestro servidor.
En este caso podemos hacer uso de un plugin. Hay numerosos plugins disponibles para esta tarea. Nosotros vamos a utilizar para este artículo el plugin “JW Player for WordPress”
Una vez instalado el plugin, colocamos el siguiente shortcode en nuestro artículo:
[jwplayer file=http://blog.openalfa.com/myvideo.flv] (vídeo en formato flash)
En particular, no es suficiente con que el vídeo esté en formato mp4, sino que además hay que asegurarse de que los codecs de video y audio que utiliza están soportados por el navegador. La siguiente tabla muestra el soporte a los distintos tipos de codecs de video (ogg, h.264 y webm) que ofrecen los principales navegadores en 2012
La manera de solucionar este problema en html5 es especificar varios ficheros en distintos formatos dentro de un mismo tag “<video>”. El navegador utilizará el primero de ellos que sepa procesar. Pero el shortcode jwplayer no permite especificar distintos ficheros.
Sin necesidad de utilizar un plugin, podemos incluir directamente en el artículo del blog (o en cualquier página web, sea o no de wordpress) el tag <video> de HTML5, como en el siguiente ejemplo:
<video width="320" height="240" controls="controls">
<source src="oceans-clip.mp4" type="video/mp4" />
<source src="oceans-clip.webm" type="video/webm" />
<source src="oceans-clip.ogv" type="video/ogg" />
Tu navegador no admite videos en HTML5
</video>
El problema con este método es que los navegadores antiguos sin soporte para HTML5 no podrán visualizar el vídeo. La solución en este caso es utilizar una vez más un plugin como “VideoJS player for WordPress”, y asignado una clase css al tag <video>. Este plugin carga una librería javascript que determina si el navegador tiene soporte HTML5. si no es así, carga un reproductor flash que es capaz de entender el formato mp4 del vídeo. Instalamos el plugin, y añadimos al tag <video> los atributos id=”testvideo” class=”video-js vjs-default-skin”:
Cómo convertir un vídeo a un formato admitido por HTML5
Para incorporar un vídeo a nuestra página web debemos convertir el formato original a los formatos mp4, webm y ogg.
Existen numerosos editores de vídeo open source o comerciales que permiten realizar esta operación. En particular, para este artículo hemos utilizado “Any Video Converter”.
Esta herramienta gratuita es sencilla de utilizar y permite seleccionar directamente como formato de salida los tres tipos de formato de video HTML5
| byte de control | dirección origen | dirección destino | control de protocolo | datos | validación |
byte de control (1 byte ).
El campo de control de paquete se construye como sigue:
bits 7-6: siempre “10″.
bit 5: ’1′, o bien ’0′ si se trata de un reintento.
bit 4: siempre ’1′.
bits 3-2: prioridad.
“00″: funciones del sistema (máxima prioridad).
“01″: funciones de alarma.
“10″: órdenes de alta prioridad.
“11″: órdenes de baja prioridad.
bits 1-0: siempre “00″
El valor más frecuente de este campo es 1011 1100 binario = BC hexadecimal, que corresponde a una orden de baja prioridad.
dirección de origen (2 bytes)
contiene la dirección física del origen del telegrama.
La dirección física tiene una longitud de 16 bits de la forma 4/4/8 (área/línea/componente).
Si el origen de un telegrama es el componente 1 de la línea 1 del área 1, su dirección será:
0001 0001 0000 0001 = 1101 hexadecimal
dirección de destino (2 bytes )
contiene la dirección de grupo del dispositivo al que está destinado el telegrama.
Los dos primeros bytes identificarán los distintos dispositivos a controlar.
Nota: Para la implementación del sistema es necesario establecer la relación de direcciones de grupo de los dispositivos que pueden ser accedidos, así como sus tipos.
control de protocolo
contiene:
NPCI (Network layer Protocol Control Information) (8 bits)
bit 7: tipo de dirección de destino
’0′ dirección física
’1′ dirección de grupo
bits 6-4: contador. Siempre será inicializado a 6 (110 binario). Este valor se decrement cada vez que se atraviesa un acoplador de línea.
bits 3-0: índice EIS de la longitud e de los datos que siguen al campo de control de protocolo
TPCI (Transport layer Protocol Control Information) (6 bits)
normalmente, su valor será 000000 binario
APCI (Application layer Protocol Control Information) (4 bits).
“0000″: read value
“0001″: value response
“0010″: write value
“1010″: memory write
datos
El campo de datos contendrá datos conforme al standard EIS, y su longitud es variable según el tipo de dato:
EIS id
EIB function
nb bits
1
switching
1
2
dimming
4
3
time
24
4
date
24
5
float value
16
6
scaling
8
7
drive control
1
8
priority
2
9
float value
32
10
16-bit counter value
16
11
32-bit counter value
32
12
access
32
13
ASCII character
8
14
8-bit counter value
8
15
character string
≤ 14
validación (1 byte)
Contiene los bits de validación de paridad impar de todo el paquete.
Un repositorio es una pieza importante de un entorno de desarrollo y producción, que permite guardar las distintas versiones que se van generando de cada uno de los ficheros que intervienen en el servicio o producto que se está desarrollando, tanto si son los ficheros que contienen el código fuente, como ficheros de configuración o ficheros de datos.
Los usuarios y administradores de sistemas en entornos Linux trabajan habitualmente en modo linea de comandos, y cuando necesitan acceder a un servidor remoto establecen una sesión alfanumérica mediante el comando ‘ssh’.
Pero en ocasiones, es necesario trabajar con una aplicación gráfica que se ejecuta directamente en la máquina remota, por lo que es necesario establecer una sesión gráfica en un entorno de ventanas, como si se estuviera trabajando en la pantalla gráfica del ordenador remoto.
En numerosos manuales de Perl se recomienda en general trabajar con variables de tipo hash en vez de con arrays. Para hashes, existen las funciones ‘exists’ y ‘defined’, que nos permiten saber si una clave existe en un hash, y si su valor está definido o no, respectivamente.
Pero en ocasiones debemos trabajar con un array (quizá porque estamos modificando un código que existía previamente), y necesitamos saber si un determinado valor existe en el interior del array.
En este artículo vamos a comentar en qué consiste una sesión de usuario, cómo se utilizan los cookies para que el servidor web pueda identificar un acceso como perteneciente a una determinada sesión, y cómo se utiliza este mecanismo en PHP para la validación de un usuario (por ejemplo, para darle acceso a la zona reservada de nuestro servidor). Seguir leyendo »