sábado, 20 de enero de 2024

Actualizar PHP y su referencia en Apache2

Tras actualizar PHP y tener la nueva versión 8.3 varias cosas dejaron de funcionar y como siempre olvido los pasos a seguir para corregir, mejor lo dejo de referencia para el futuro :P

Si hay una nueva versión de PHP instalada y se estaba usando mysql como motor de base de datos, se debe validar que está instalado el módulo correspondiente a la nueva versión o instalar si hace falta:

sudo apt install php8.3-mysql

Ajustar las versiones de PHP en uso validando que corresponde a la última:

sudo update-alternatives --config php

sudo update-alternatives --config phar

sudo update-alternatives --config phar.phar

NOTA: en caso de tener otros módulos, se debe ejecutar comando sobre ellos igual, ej: phpize, php-config.

Si se quiere hacer el ajuste manualmente se pueden utilizar los comandos a2dismod y a2enmod:

sudo a2dismod php8.2

sudo a2enmod php8.3

En caso de estar usando carpetas de usuario para contenido web, se debe eliminar la restricción en apache:

sudo vi /etc/apache2/mods-enabled/php8.3.conf

Comentando la parte del mod_userdir con #

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Revisar la configuración de php para la versión actual en caso de ajustes realizados en la versión previa:

sudo vi /etc/php/8.3/apache2/php.ini

Para finalizar se debe reiniciar apache:

sudo service apache2 restart
Y listo, ya todo debiera funcionar nuevamente sin problemas :)

Referencia:

https://httpd.apache.org/docs/2.4/howto/public_html.html

https://slaford.com/laravel/how-to-switch-php-versions-on-command-line-ubuntu/ 

domingo, 1 de mayo de 2022

Sesiones en PHP

Luego de crear una sesión con session_start(), lo recomendado es administrar dichas sesiones usando la variable global $_SESSION, agregando ahí un parámetro de tiempo referencial y luego validar si ese tiempo se cumplió o no, por ejemplo:

$_SESSION['fin'] = time() + 30 * 60 // tiempo en segundos plazo 30 minutos * 60 segundos

A pesar de haber configurado el valor y que el tiempo aún no expire, en algunos casos el usuario puede que reciba un término anticipado de la sesión teniendo que volver a ingresar, pero ¿por qué pasa eso? :/

Aparte de las variables de manejo de las sesiones, hay que recordar validar el tiempo del recolector de basura de PHP que va eliminando archivos temporales en el servidor, eso incluye los archivos asociados a sesiones. El tiempo por defecto es de 1440 segundos (24 minutos). Si se manejan sesiones de mayor tiempo se debe ajustar también ese parámetro de lo contrario si no hay actualizaciones el archivo de sesión será eliminado. Para ajustar se debe ir al archivo de configuración de apache "php.ini" y cambiar el valor del parámetro "session.gc_maxlifetime".

Dependiendo de la versioń de PHP es el archivo a configurar, por ejemplo para versión 7.3:

/etc/php/7.3/apache2/php.ini

Luego de ajustar el valor, se debe reiniciar el servicio:

service apache2 restart

o

systemctl restart apache2

No olvidar dejar un tiempo mayor al que se utiliza en el código y ahora sí todo está listo para administrar correctamente esas sesiones :D

Referencias:

https://www.php.net/manual/en/session.configuration.php

https://www.codeleaks.io/increase-session-timeout-in-php/

domingo, 23 de agosto de 2020

SSH y redireccionamiento: Abrir programas gráficos desde SSH estando bajo Screen

Una excelente herramienta para tener múltiples consolas de SSH bajo una misma conexión es "screen". Con ese programa nos ahorramos el tener que iniciar varias sesiones, pudiendo hacer todo desde una única. Esta maravilla de programa la expliqué en otra entrada, les recomiendo darle una vuelta... de verdad es un ahorro de tiempo y recursos 😀

Al conectarnos por SSH agregando la opción de redireccionamiento podemos abrir programas gráficos, es decir, tendremos en nuestro cliente un programa que en realidad se está ejecutando en el servidor, ahorrándonos tener que abrir todo el ambiente gráfico para enfocarnos específicamente en la aplicación ¿genial o no?

Si estamos usando screen, hay que tener en cuenta algunos detalles en la configuración o no veremos nada de la magia 😛

Revisar configuración de redireccionamiento

Estando conectados por SSH es posible hacer redireccionamiento de la parte gráfica, pero esa opción debe estar habilitada en el servidor. 

Revisar la configuración del servidor en "/etc/ssh/ssd_config". Ahí la opción "X11Forwarding" debe estar activa y con "yes". 

X11Forwarding yes

Si estaba desactivada y la activan, no olvidar reiniciar el servicio para que quede funcionando con la nueva configuración.

$ systemctl restart sshd

Conectarse por SSH con redireccionamiento activo

Para ver que todo está bien, conectarse al servidor usando opción -Y y ejecutar algún proceso, dicho programa debiera iniciar su versión gráfica en el cliente que está conectado.

$ ssh -Y -l usuario servidor.com

$ xcalc &

Con lo anterior se nos debería abrir la calculadora en el cliente que está conectado ^^.

Abrir programa gráfico bajo screen

Al iniciar screen generalmente uso las opciones -dR para recuperar la última sesión activa y partir tal cual la última vez.

Si repetimos el proceso de ejecutar algún programa gráfico puede que no nos muestre nada, pero ¿y la magia? ¿qué pasó? 

En algunos casos la variable de ambiente "gráfico" de la sesión de screen puede diferir de la configurada en SSH y como eso no coincide, veremos el programa que ejecutamos como activo en la lista de procesos, pero la parte gráfica estará perdida en el limbo. Para evitar que esto suceda debemos ajustar la variable DISPLAY para que coincida entre la ventana de screen que estemos usando y la sesión de SSH abierta, de esta forma haremos que el redireccionamiento gráfico funcione.

Cerrar screen para estar en la consola de SSH de forma directa, desde ahí ver la configuración de DISPLAY:

$ echo $DISPLAY

localhost:10.0 

En este caso el display apunta a 10, por lo que debemos configurar lo mismo en la ventana de screen que estemos usando. 

$ screen -dR

$ echo $DISPLAY

:0.0

Eso indica que la ventana actual está apuntando a 0 en vez de 10, toca ajustar:

$ export DISPLAY=:10.0

$ echo $DISPLAY

:10.0

$ xcalc &

Y magia... xcalc ahora sí aparece en el cliente, tal como se esperaba 😀

Esto se debe realizar en cada ventana bajo screen que abran, ya que por defecto se abren apuntando a :0.0 👌

sábado, 1 de agosto de 2020

Grub2 UEFI error

Más de una vez me ha tocado reparar grub en computador que tiene varios años, lo que implica haber pasado por varias migraciones. Eso sumado a que se vienen cambios en grub debido a una alerta de seguridad con "secure boot" en EFI (ver enlace más abajo), puede que más de alguno tenga problemas.  Teniendo eso en mente, acá un resumen de los pasos que generalmente ocupo para corregir y así de paso me sirve de ayuda memoria :P.
Luego de actualizaciones o instalaciones, puede que el archivo de configuración quede corrupto o simplemente "invisible" por lo que puede aparecer una ventana básica de grub.
Incluso sin reparar grub, podemos acceder a la partición con Linux de forma directa desde esa consola básica con estos comandos:

set root=(hd0,gpt8)
linux /boot/vmlinuz-4.19.0-10-amd64 root=/dev/sda8
initrd /boot/initrd.img-4.19.0-10-amd64
boot

Tiendiendo sda8 como la partición root, en caso de ser otra la partición se debe cambiar el número por la que corresponda. Lo mismo con las versiones de vmlinuz y initrd (presionando tab aparecerán los archivos disponibles).
Peeeero dado que es poco práctico escribir eso todas las veces, vamos con los pasos de la reparación.
Lo primero es tener un live cd o live usb -que es lo más habitual- e iniciar desde ahí. Idealmente es mejor tener en el live system la misma distro que está instalada, para descartar algún inconveniente.
Suponiendo que la partición EFI es sda6 y la partición root es sda8 los comandos serían:

sudo su -
mount /dev/sda8 /mnt
mount /dev/sda6 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
chroot /mnt /bin/bash

Abrir otra consola y ejecutar:

sudo apt install grub-efi
sudo grub-install --target=x86_64-efi /dev/sda --efi-directory=/mnt/boot/efi --boot-directory=/mnt/boot

Reiniciar el sistema y listo, ya debería partir grub con todas las opciones tal como antes :)

NOTA:
Para tener una idea y resumen de todo lo relacionado con el boot, se puede usar: sudo bootinfoscript.

Referencias:
https://wiki.debian.org/GrubEFIReinstall
https://forums.solydxk.com/viewtopic.php?f=5&t=7649#p71156
https://www.debian.org/security/2020-GRUB-UEFI-SecureBoot/

jueves, 7 de marzo de 2019

Nintex workflow: Cómo redondear un número / how to round a number

Desde hace un tiempo estoy trabajando con Nintex workflow para automatizar tareas en Sharepoint.
Hoy me topé con una tarea que inicialmente parecía fácil: calcular un valor y redondear el resultado. Contrario a lo que pensé, no había una opción directa para redondear :O
En varias partes leí algunas formas de hacerlo, sin embargo, mencionaban que se hacía de una forma para valores menores a 1000 y otra para mayores a 1000, por qué? Porque el número quedaba formateado como "1,000" lo que da error en uno de los pasos. Eso es válido hasta cierto punto, en realidad el error depende del idioma en el que esté el sitio donde esté alojado el worfklow. En este caso, el subsitio del Sharepoint en el que estaba trabajando está en español (es-CL) lo que da que el separador de miles es "." (punto) y para los decimales es "," (coma). Bajo ese formato, el problema de la conversión aplica para valores con decimales, peeero en realidad es fácil de resolver y no es necesario utilizar la opción de expresión regular que vi por ahí. Ahora voy a ello :)
Como mencioné antes, no existe una acción del tipo "redondear" para configurar en el nintex workflow, así que se debe usar una de las funciones inline, que en este caso es fn-Round(numero).
Al usar la función es donde se debe tener cuidado, para evitar error de conversión se debe agregar un tag de inicio y fin para indicar dónde está nuestra variable númerica: {TextStart}variable{TextEnd}

Los pasos:
- Supongamos que tenemos las variables: numeroDecimal (tipo número) y resultadoTxt (tipo texto).
- Crear una cadena de texto con la fórmula y el número a redondear, almacenar en la variable de tipo texto.
fn-Round({TextStart}{Workflow variable:numeroDecimal}{TextEnd})
- Convertir el string a número.

Y listo, con eso se tiene el valor redondeado.
En el caso de omitir los tag de inicio y fin en la fórmula, el workflow dará un error como éste:

Error parsing value. Value 'fn-Round(95,24)' is not compatible with the selected output variable type Number (double).

Esto sucede porque el procesador de la fórmula asume que la coma corresponde al paso de una segunda variable, es decir, en vez de tomar "95,24" como un único número, asume que son dos: "95" y "24", lo que excede la cantidad de parámetros de la fórmula en sí.

Creo que no es necesario realmente crear la variable de texto y almacenar la fórmula ahí, quizás es posible poner la fórmula directo en la opción de convertir valor, pero no alcancé a probar eso. De ser posible podría quedar todo en una única acción... ideal o no?


NOTA:
La función fn-Round como función inline a diferencia de su uso en los formularios (nintex form), no  permite indicar la cantidad de decimales, sino que simplemente aproxima al entero que corresponda.

Referencia:
Funciones inline: https://help.nintex.com/en-US/nintex2016/current/sp2016/Workflow/Reference/WFInlineFunctions.htm
Redondear número: https://www.codesigned.com/blog/round-a-number-with-nintex-workflow

domingo, 23 de diciembre de 2018

Bot para Telegram con certificado digital autofirmado (self-signed certificate)

Esta entrada es para aquellos que están empezando a trabajar con bots para telegram y que estén teniendo problemas para que su bot reciba los mensajes después de configurar los parámetros de webhook.

La información se encuentra disponible en la documentación de Telegram, sin embargo, entre tanto paso uno se pierde, porque vi más de una pregunta sobre lo mismo: configurar webhook con certificado local, probar procesar mensajes y que no pase nada. El resumen del problema es que el certificado está mal publicado y no nos enteramos :P

Acá un resumen de lo que se debe hacer y cómo dejar el bot funcionando :)

1) Eliminar la asociación anterior del webhook para configurar de nuevo

curl -F "url="  https://api.telegram.org/bot[TOKEN_ID]/setWebhook

Donde "[TOKEN_ID]" obviamente corresponde al token asociado a al bot que se está configurando.


2) Crear el certificado digital con formato PEM para el servidor que se está utilizando y utilizar ese archivo para la navegación https.
En mi caso lo dejé a 3 años ya que es seguro que un año pasa volando, pero eso depende del gusto de cada uno.

openssl req -newkey rsa:2048 -sha256 -nodes -keyout server.key -x509 -days 1095 -out server.pem -subj "/CN=tu.dominio.cl/C=CL/ST=Santiago/L=Santiago"

Acá lo importante es el campo CN dado que debe coincidir con el nombre del servidor para el cual se está creando el certificado. Si ese parámetro está incorrecto, no se validará la navegación entre servidores y el bot no recibirá nada (punto a validar).

3) Asociar el certificado al bot.

curl -F "url=https://tu.dominio.cl/ruta/bot.php" -F "certificate=@/ruta_local/del/archivo/server.pem" https://api.telegram.org/bot[TOKEN_ID]/setWebhook

url = la ruta pública al código del bot.
certificate = ruta del archivo server.pem en el servidor (ruta local).


Si la ruta local del archivo .pem está incorrecta, y a pesar de que el registro del webhook diga que fue exitoso, no se validará la navegación entre servidores y el bot por lo que tampoco se recibirán los mensajes.



4) Revisar el estado del bot en Telegram para confirmar que el certificado está correctamente publicado y funcionando.

https://api.telegram.org/bot[TOKEN_ID]/getwebhookinfo

Si todo va bien, ahí aparecerá que se está utilizando un certificado de forma correcta.

has_custom_certificate: true

En caso de ir algo mal con el certificado, aparecerá un mensaje en ese parámetro. De ser así revisar los puntos marcados con rojo en los pasos anteriores y que coincidan con los valores reales de nombre, token y servidor.

Ahí lo tienen, luego de corregir el detalle del certificado y la ruta, quedará funcionando sin problemas :)
Algo a comentar es que si estuvieron haciendo pruebas enviando mensajes durante un rato y luego de que la configuración queda correcta, empezarán a recibir respuesta por todos esos mensajes de prueba que enviaron ya que quedan en cola en el servidor de Telegram por 24hrs :P.


NOTA:
Asociado al punto 3, aparte de asociar el certificado al bot, debe utilizarse ese certificado en la navegación https del servidor. Para activar la navegación https, si se está usando apache lo práctico es usar la ruta oficial, en ese caso sería dejar los archivos server.key y server.pem en /etc/apache2/ssl, además de cargar esa ruta en el archivo de configuración /etc/apache2/sites-available/default-ssl.conf con los siguientes parámetros:SSLCertificateFile      /etc/apache2/ssl/server.pem
SSLCertificateKeyFile /etc/apache2/ssl/server.key


Referencias:
https://core.telegram.org/bots/webhooks#a-self-signed-certificate
http://snakelab.cc/2016/10/28/telegram_gem_and_self_signed_cert.html

jueves, 4 de enero de 2018

Acceder a cuenta de usuario en Windows sin tener la contraseña


Tal como dice el título de esta entrada, es posible acceder a una cuenta de usuario en Windows sin tener la contraseña, pero no mágicamente :P, para esto el usuario debe haber abierto sesión en el computador. Da lo mismo si el usuario bloqueó el computador, de todas formas es posible acceder a su sesión tal como la dejó, con aplicaciones abiertas y todo. Este acceso es posible haciendo uso de la elevación de privilegios de sistema desde una cuenta administrativa.
Según Microsoft (MS) esto no es una "falla de seguridad" ya que es necesario tener permisos de administrador para poder acceder a la cuenta del usuario, sin embargo, esto sí es un "riesgo de seguridad" si lo vemos desde el enfoque de separación de perfiles. Por ejemplo: un usuario X puede tener acceso a un sistema de remuneraciones al cual un administrador de sistemas no necesariamente debe tener acceso, pero podría acceder en algún momento en que el usuario X deje su computador libre o lo bloquee para ir a hacer alguna otra tarea.
Dicho lo anterior, la forma de acceder es usando el programa psexec (parte del kit "pstools" de MS) para ejecutar el administrador de tareas con permisos de sistema y desde ahí simplemente dar clic derecho sobre el usuario X en la pestaña "usuarios" y presionar "Conectar"... Tan sencillo como suena :/
Acá el detalle:

- Ingresar a Windows con la cuenta administrativa sin cerrar ninguna otra cuenta abierta, sólo presionar "Iniciar sesión con otro usuario" o "cambiar de usuario".
- Abrir el administrador de tareas para ver el ID del usuario propio (el ID de la cuenta administrativa).
   --> En el caso de Windows 10 el ID no aparece por defecto, hay que dar clic derecho en los títulos y activar la columna "ID" para que se muestre. En Windows 7 el ID aparece por defecto.
- Abrir consola como administrador y ejecutar el comando: psexec \\localhost -s -i 2 taskmgr
   --> Donde el número "2" corresponde al ID del usuario administrativo y no al del usuario al que se le secuestrará la cuenta. Ahí se debe poner el ID que corresponda, en este ejemplo es 2 (ver imagen de más abajo).
- Con el comando anterior se abrirá el administrador de tareas, pero con permisos de sistema, por lo que ahora se puede abrir la sesión del usuario X dando clic derecho sobre su nombre en la pestaña "Usuarios" y listo!


Tal como muestra la imagen esto es más largo de explicar que de hacer xD.

Al dar "Conectar" no aparecerá ninguna ventana pidiendo credenciales del usuario, simplemente se abrirá su escritorio tal como si hubieran desbloqueado el equipo.


Teniendo esto en mente, a revisar el log de windows (sección "Seguridad") con mayor frecuencia para ver si hay accesos "autorizados" en horarios incorrectos ;)

Referencias:
PSTools - https://docs.microsoft.com/en-us/sysinternals/downloads/pstools
Hack Windows User Account - https://thehackernews.com/2017/03/hack-windows-user-account.html

jueves, 6 de abril de 2017

Revisar reinicios de windows

Algunas veces al revisar un servidor o computador es necesario ver rápidamente cuándo y quién realizó un reinicio de sistema. Esto es posible de ver directo desde el visor de eventos de windows sin tener que instalar o ejecutar un programa aparte. La forma de hacerlo:

Abrir eventvwr.msc
Ir a Windows Logs > System
Abrir "Filter Current Log..." (si no está el menú, se puede dar clic derecho sobre System)
Agregar número de ID a filtrar: 1074
Presionar ok y listo!

La explicación es más larga que los pocos clics que se deben hacer :P
Esto de paso nos da un indicador de la frecuencia (alta o baja) con la que se está reiniciando una máquina.

domingo, 10 de agosto de 2014

SSRS Listar valores de un Dataset en cuadro de texto

Acá otra entrada sobre SSRS, ya que en estos días estoy elaborando algunos reportes SSRS aprovecho y apunto los detalles de los que me ha costado encontrar información.
Para listar todos los valores de un campo en un cuadro de texto en una sola línea se debe utilizar el siguiente comando:

=Join(LookupSet(1,1, Fields!Campo1.Value, "Dataset1")," , ")

Con lo anterior, se mostrarán "todos" los valores del Campo1 en Dataset1 separados por el delimitador ",".

SSRS Suma condicional en cuadro de texto

Después de un buen rato de estar buscando información sobre mi error sumando valores de un campo y estar cambiando de formatos los números, encontré una solución que ayuda en la mayoría de los casos (hasta ahora en todos los que he probado), así que me animo a escribir por si alguien más está estancado con esto :)
Para simular un contador de las filas que cumplen una condición (nuestro filtro), valor que queremos en un cuadro de texto, la fórmula sería así:

=SUM( iif(Fields!Campo1.Value = "Algo", 1, 0), "Dataset1" )

Eso contará todas las filas de DataSet1 donde el campo llamado Campo1 es igual al texto "Algo". Fácil no? Y qué pasa si quiero sumar un valor de la misma fila? También se puede, sólo hay que indicar el campo a sumar:

=SUM( iif(Fields!Campo1.Value = "Algo", Fields!Campo2.Value, 0), "Dataset1" )

Donde Campo2 contiene números.
Pero acá es donde nos podemos topar con el error:

domingo, 20 de abril de 2014

Solydx: Problemas en la instalación

Estoy probando una nueva distro en mi antiguo netbook para revivirlo y aprovechar que existe :D, después de buscar algunas que fueran estables, no tan pequeñas, con buen rendimiento, bajo consumo de recursos, etc. Opté por probar "SolydX" que ya de plano me gustó que detectara de inmediato la tarjeta inalámbrica, lo que no me sucedió con otras opciones que probé.
Como la mayoría de las distro, SolydX tiene la versión live que puede ser instalada de forma rápida presionando el botón de "Install SolydX" que está en el escritorio. Y es aquí donde empieza el detalle que inspiró esta publicación :P
Ya que el netbook no tiene lector de CD/DVD, opté por usar mi pendrive que está configurado con varias distribuciones y herramientas booteables, si ya tengo eso qué mejor que agregar SolydX a la lista no? Teniendo lista la distro en el pendrive, manos a la obra!

- Encender, ejecutar SolydX, presionar "Install SolydX xx-bit" (en mi caso es 32 bit).
- Configurar idioma, teclado, particiones y a instalar se ha dicho.

Aquí el problema, luego de esperar algunas horas... sí, esperé horas creyendo que era un problema de rendimiento ^^U... la ventana de instalación se quedó congelada en la parte de "Calculating File Indexes". Después, creyendo que era un problema de hardware, revisé RAM, HD, etc. también revisé archivos de instalación y nada.
Para este caso, lo mejor es ejecutar el instalador desde consola:

gksudo live-installer

Con eso se puede ir viendo qué está haciendo el instalador y cuál es realmente el problema.
Cuál no sería mi sorpresa al encontrar que el problema parecía ser algún archivo faltante:

[...]
-- Installation started
Base filesystem does not exist! Critical error (exiting)

domingo, 30 de marzo de 2014

Java: Creando archivos .CSV para Excel

Muchas veces es necesario exportar datos a un archivo para que sea manipulado en Excel por los usuarios. En esos casos, lo más rápido es exportar a archivos delimitados por coma (.CSV) ya que en realidad son simples archivos de texto con un delimitador (coma "," o punto-y-coma ";").
Cuando se trabaja con Java, una forma rápida de crear archivos cuando ya se tiene el texto en un String, es simplemente crear una variable FileWriter y escribir con el método "write" nuestro String, eureka! ya tenemos nuestro archivo.
Hasta ahí todo bien, pero el problema comienza cuando agregamos caracteres especiales, como por ejemplo letras con tildes (á, é, etc). Por defecto al escribir usando FileWriter la codificación utilizada es UTF-8, lo que está bien para agregar caracteres especiales, sin embargo, cuando el programa Excel abre uno de estos archivos no es capaz de reconocer la codificación correcta mostrando de forma errónea los caracteres especiales.
Para corregir esto, una forma fácil es agregar el caracter BOM al momento de comenzar escribir el archivo.
La forma de hacerlo:

FileWriter fwriter = new FileWriter(nombreArch); 
fwriter.write('\ufeff'); 
fwriter.write("El resto del texto"); 

Y taraaannn! ahora Excel reconoce de forma correcta la codificación del archivo y por ende muestra todos los caracteres como corresponde :D
En el caso de usar OutputFileStream, se recomienda utilizar el constructor donde se especifica la codificación a utilizar.

OutputStreamWriter(OutputStream out, Charset cs) 
InputStreamReader(InputStream in, Charset cs)

Eso es todo por ahora, más abajo dejo un ejemplo y algunas referencias.
No olviden comentar si tienen otras formas de corregir lo de la codificación ;)

miércoles, 16 de octubre de 2013

Cisco: secuencia de escape en línea de comandos

Esto será una entrada corta para comentar un punto que pareciera ser obvio, pero no lo es tanto para los que parten con esto, me refiero a la secuencia de escape en la interfaz de la línea de comandos de Cisco, también conocida como CLI por su sigla en inglés (Command Line Interface).
Cuando quieran detener un comando que les da esa opción deben presionar la combinación de teclas "ctrl + &" (sin comillas), o en otras palabras presionar la combinación "ctrl + shift + 6" (sin comillas).
Esto es útil cuando se está haciendo un seguimiento de rutas y no es necesario esperar hasta el final o cuando se hace una seguidilla de muchos pings y necesitan detenerlo.
También es posible cambiar esa combinación, pero eso lo dejo para otra entrada junto con otras útiles combinaciones de teclas ;)

domingo, 28 de julio de 2013

Ver videos 3D como 2D

Hace un tiempo atrás comenté que mi reproductor de videos favorito era el mplayer junto con la interfaz SMPlayer... hoy sigo diciendo lo mismo y de paso lo refuerzo ;)
Les ha pasado que tratan de ver una película en su computador, pero al abrirla la pantalla se ve duplicada o triplicada? Eso es porque la película está en formato 3D. Para poder ver estos tipos de videos he probado algunas formas, acá dos métodos y reproductores que han resultado: vlc y mplayer.


1) La forma utilizada con el reproductor VLC en realidad es aplicar un filtro que corta la porción del video que no queremos, hay que jugar con los pixeles que quieren ocultar hasta acertar, no es algo definitivo como tal, pero sirve. Sólo lo comento por si ya lo tienen instalado y no quieren instalar nada más :P


VLC > Menú Herramientas > Efectos y filtros > Efectos de video > Recortar


Ahí configuran lo que quieran recortar del video mientras se reproduce.

2) La forma utilizada con el mplayer es la de agregar el comando "-vo gl:stereo=3" y listo! Ya se ve como si fuera un video en 2D, es decir, como las películas de toda la vida :P. Si no están usando el mplayer desde una consola, sino que lo están usando con el reproductor SMPlayer es lo mismo. En ese caso, la forma de agregar el parámetro es la siguiente:


SMPlayer > Menú Opciones > Preferencias > Avanzado > Opciones para el MPlayer > Opciones > -vo gl:stereo=3


Aplicar cambios y listo :D


Como referencia, el número 3 correponde a una de las formas en que se le dice al reproductor cómo mostrar el video.


stereo=0 Video 2D normal
stereo=1 Conversión a full color + rojo y cian
stereo=2 Conversión a full color + verde y magenta
stereo=3 Conversión con buffer (superposición)
stereo=4 Conversión de mezcla pixel por pixel


Ahora, ya no tendrán problemas para reproducir todo tipo de videos ;)


Referencias:
http://blog.gauner.org/blog/2012/10/08/watching-3d-movies-in-2d-using-mplayer/

domingo, 26 de febrero de 2012

Xerox Workcentre 7132: Manual de servicio

Primera publicación desde el correo, veamos qué tal resulta :D
Más de alguna vez he necesitado hacer una mantención o revisión
preventiva a la Xerox Workcentre 7132, así que para hacerlo de forma
correcta me dispuse a buscar el manual de servicio, pero vaya que fue
complicado! ><
Para que los demás no sufran tanto buscando, dejo referencias :P
Versión online --> www.scribd.com/doc/47616934/WC-7132-SM
Versión offline en un pdf -->
Mega - Workcentre_7132_service_manual.pdf
(95MB aprox)
También tengo algunos de impresoras HP que trataré de ir subiendo de a poco
TAGS: Xerox Workcentre 7132 / 705P01181 / Service Documentation / Service Manual


PD: editado enlace para descarga por Mega ;)

domingo, 19 de febrero de 2012

Listas en Twitter: Limpia tu "timeline" o "cronología" de mensajes

Hace mil que tenía ganas de escribir sobre las listas en twitter, así que por fin me animo a publicarlo :P

Si usas twitter o estás iniciándote en el microblogging, algo sabrás acerca de la opción de "seguir" a alguien que también tenga cuenta en twitter. Cuando empiezas a seguir a muchas personas o "twitteros", notarás que en tu lista de tweets -generalmente conocida como timeline (TL) o cronología- comienza a generarse un caos y no alcanzas a leer a todos a los que sigues, o bien, pierdes información de tus amigos que no twittean tanto ya que esos tweets quedan muy atrás en el timeline -debía mencionarlo ya que caigo en ese grupo xD-. Cuando esto empieza a transformarse en todo un desorden, no hay que desanimarse, arreglarlo es muy fácil usando las listas :D

Una "lista" es como una sección dentro de tu cuenta de twitter donde puedes ir agrupando los tweets de las personas que sigues (o que no sigues, esto lo comento más adelante) para brindarte una lectura cómoda y orientada según tus intereses, pero ¿es sólo eso? claro que no! las ventajas son varias, acá algunas:

- Clasificación según interés:
Esto es lo obvio, agregas en una lista a aquellos twitteros con algo en común y que te interesa leer agrupados por ser de algún tema similar, por ejemplo: noticias, música, actividades, etc.

- Posiblidad de agregar twitteros a la lista sin necesariamente seguirlos:
Esto es útil cuando te interesó alguna cuenta y no deseas que sature tu timeline. Para ello, puedes ir viendo sus tweets a medida que publica y todo tal como si lo estuvieras siguiendo, pero sin cargar estos tweets en tu TL sino que directamente en tu lista.

- Posibilidad de que tus amigos o seguidores también sigan la lista que creaste:
Las listas dan la opción de seguir tal como si fueran un twittero más, de esta forma más de alguien puede seguir la lista o clasificación que creaste, teniendo acceso a información por tweets que quizás de otra forma no hubieran leído. El nombre correcto es "suscribirse" a una lista, pero para efectos de la explicación, es lo mismo que "seguir" :P

La idea de muchos es tener hartos seguidores, entonces si yo cargo a alguien en mi lista sin usar la opción de seguirlo ¿qué pasa con los contadores? ¿si me agregan, tampoco aumenta mi contador? Para nada, los contadores igual aumentan sólo que en vez de registrar este seguimiento-no-seguimiento como "seguidor" (follower) lo hace como "listado" (listed), es decir, no sólo hay que fijarse en los seguidores, sino también en cuántas veces has sido listado/agregado en listas ;)

Luego de las actualizaciones en el skin de twitter, ahora las listas están más visibles desde los perfiles y son más fáciles de entender. Así que ya lo sabes, ordenar el TL es fácil, sólo debes ir clasificando en listas y así de paso tu lectura se hace más enfocada por temas :D

Si revisaste tu perfil en twitter y aún no sabes cómo crear o agregar usuarios a tu lista, sigue estos pasos:

Para crear una lista, ingresa a tu perfil > menú listas > crear nueva lista (botón arriba a la derecha). En este punto debes decidir 2 cosas: nombre de la lista y si la dejarás pública o no. En caso de que desees que alguien más tenga la opción de suscribirse a tu lista, debes dejarla pública, de otro modo no es necesario.

Bien, ya tienes tu lista... ahora ¿cómo agregar usuarios? Para hacerlo, debes ir al perfil del usuario que deseas listar y presionar el botón de opciones adicionales que está junto al botón de "seguir", ése que tiene el dibujo de una persona y una flecha. Al presionarlo verás varias opciones, entre ellas está el "Agregar o quitar de listas", ahí eliges la lista a la que deseas agregarlo y listo ;)

En el caso de que no desees tener a un twittero en tu lista, o bien, deseas cambiarlo a otra lista, puedes hacerlo de dos formas: ingresando al perfil del twittero, tal como lo hiciste para cargarlo en la lista y editar desde ahí, o bien, ingresando a la lista donde lo tienes listado > miembros de la lista, y editar desde ahí.

Espero esto les ayude a ordenar un poco su TL ;)

martes, 10 de enero de 2012

Respaldar / Guardar marcadores en Firefox

¿Quieres respaldar tus marcadores de Firefox por algún motivo y no sabes cómo? Acá algunas ideas que te pueden ayudar dependiendo del problema que te llevó a querer respaldarlos: falla del computador, cambio de sesión, querer tenerlos a mano para leerlos en otro lado, etc.

Partamos por lo básico, estando con el programa abierto se pueden respaldar fácilmente los marcadores usando el administrador de marcadores de la barra de herramientas: Menú Marcadores > Mostrar todos los marcadores > Importar y respaldar > Exportar HTML. El archivo que se crea puede ser revisado con cualquier navegador, no sólo con firefox.



Eso era lo fácil, ahora vamos con lo fuerte, respaldar los marcadores a mano ;)
Hasta Firefox 3.x uno podía tomar el archivo bookmarks.html de forma directa desde la carpeta de datos de Firefox para hacer el respaldo de los marcadores y verlos en cualquier parte. Sin embargo, en las nuevas versiones ya no son almacenados en formato HTML de forma automática, aunque tampoco es tan complicado dejarlos de esa forma :)
Desde la versión 3.x en adelante los marcadores son respaldados con el formato JSON en la carpeta "bookmarkbackups"... ¿dónde? en el perfil del usuario que ejecuta Firefox... y de nuevo ¿dónde? :P, acá:

* En Win 7:
- Forma 1: Inicio, en el cuadro de búsqueda escribir %APPDATA%\Mozilla\Firefox\Profiles\
- Forma 2: En el explorador, ir a la carpeta: C:\Users\\AppData\Roaming\Mozilla\Firefox\Profiles\

* En Win XP:
- Forma 1: Inicio > Ejecutar, ahí escribir %APPDATA%\Mozilla\Firefox\Profiles\ y clic en "ok"
- Forma 2: En el explorador, ir a la carpeta: C:\Documents and Settings\\Configuracion Local\Datos de Programa\Mozilla\Firefox\Profiles\

NOTA: Ojo que hay una carpeta "Datos de Programa" fuera de "Configuración Local", pero ésa no es la que tiene los datos ;)
Si no puedes ver las carpetas, es porque las tienen ocultas, debes dejarlas visibles.

* Directo desde Firefox:
- Forma 1: Menú Ayuda > Información para solucionar problemas > Configuración básica de la aplicación > Directorio de perfil > botón "Abrir la carpeta que lo contiene".
- Forma 2: En la barra de direcciones escribir: about:support


Dentro de la carpeta del perfil encontrarás la carpeta "bookmarkbackups" con varios archivos llamados "bookmarks-.json", el que tenga la fecha mayor corresponde al último respaldo realizado por firefox.
Ya, tienes el archivo... ¿y ahora qué? Ese archivo lo importas en tu nueva versión de Firefox: menú Marcadores > Mostrar todos los marcadores > Importar y respaldar > Restaurar > Elegir archivo.
¿Mucho? Existe una opción para evitar repetir esto en el futuro ;), la forma es usar una opción en la configuración de Firefox que se sirve para forzar el respaldo de los marcadores en formato html. Hablo de la opción "browser.bookmarks.autoExportHTML" que por defecto viene como "false", hay que cambiarla a "true" para forzar a Firefox al cambio de formato a HTML, con esto se irá actualizando el archivo bookmarks.html con tus marcadores cada vez que se cierra el programa y no sólo con la plantilla básica ;)
NOTA: para hacer el ajuste, en la barra de direcciones escribir: about:config (presionar enter) y luego en el filtro escribir bookmarks. Mucho cuidado al estar en el about:config para evitar cosas extrañas.

Referencias:

Como encontrar el perfil - Mozilla
Lost bookmarks - MozillaZine
autoExportHTML - MozillaZine

domingo, 20 de marzo de 2011

SMPlayer: Interfaz para el reproductor MPlayer (Windows/Linux)

Uno de mis reproductores favoritos en Linux y Windows es el "mplayer", el cual viene con un paquete de codecs incorporado por lo que sólo es cosa de instalar y utilizar :D. La gracia del mplayer es que puede ser controlado completamente desde una consola, o bien utilizando alguna interfaz gráfica (también conocidas como "front-end") que es lo más usual en Windows. De por sí el mplayer viene con una interfaz, sin embargo, por comodidad y facilidad de uso prefiero una que se llama "SMPlayer" ;)
El programa SMPlayer es bastante configurable y también es posible editar los atajos de teclas (cosa que se agradece :P), por lo general la configuración que trae es lo suficientemente buena para dejarla tal cual. Por mi parte sólo edito algunas cosas de apariencia y uno que otro atajo de teclas para evitar conflictos con otros programas.

Acá una comparación de cuando lo uso en su "modo normal", es decir, con menú integrado, o en su "modo compacto". La forma de cambiar entre estos modos: basta con presionar ctrl+c para que entre a "modo compacto" y de nuevo ctrl+c para ir al "modo normal".

-
SMPlayer - modo normal SMPlayer - modo compacto

Ahora, para hacerlo aún mejor, en Windows existe un instalador para el mplayer que ajusta la instalación según el computador donde se ejecuta para obtener un mejor rendimiento al momento de reproducir algún video... además de buscar actualizaciones automáticas, qué mejor! :D. Este instalador es conocido como "MPUI for windows" (desarrollado por "mulder"). Al momento de instalar pueden ir presionando siguiente, siguiente, siguiente hasta que aparezca el finalizar y listo! ya tienen el gran reproductor mplayer junto con la interfaz del smplayer para disfrutar :)

El mplayer como reproductor es muy bueno, pero eso es sólo una parte... él va de la mano con el "mencoder" que sirve para hacer conversiones de videos y cosas relacionadas, pero eso es para otra oportunidad ;)

Referencias:
MPlayer - Página principal
Descargar "MPUI for Windows" (dejo esto como referencia ya que al momento de escribir esta entrada, la página de mulder se encuentra en mantención).
SMPlayer - Página principal
MPUI for Windows - Página oficial

lunes, 3 de enero de 2011

Santiago a Mil 2011 en Antofagasta

Empezamos el 2011! :D
 
En Enero pensamos en playa, vacaciones, activades al aire libre y con eso qué mejor que aprovechar las actividades de teatro y música que vienen dentro de poco a presentarse en Antofagasta bajo el alero del "XVII Festival Internacional Santiago a Mil", también conocido como "Santiago a Mil" (a secas), entre el 15 y el 26 de Enero.

Como es costubre, las actividades serán gratuitas, así que no hay excusas para no aprovechar y disfrutar.
La programación y ubicación de las actividades de este año son:


Sábado 15 de enero a las 19:00 horas
“Hombre Móvil” de la Compañía francesa Transe Express
Plaza Bicentenario.

Domingo 16 de enero a las 20:30 horas
“Alkohol” del músico serbio Goran Bregovic y su “Orquesta para bodas y funerales"
Plaza Colón

Jueves 20 de enero a las 20:00 horas
“Xi, Wang, la otra Patria”, de la compañía antofagastina La Huella.
Teatro Municipal de Antofagasta. Sucre 433

Sábado 22 de enero a las 20:00 horas
“Jemmy Button” de la compañía Tryo Teatro Banda
Teatro Municipal de Antofagasta. Sucre 433

Lunes 24, martes 25 y miércoles 26 de enero
“Neva” de la Compañía Teatro en el Blanco
Fundación Minera Escondida, sala Licancabur. Av. Bernardo O’Higgins 1280.

Ahora a esperar esa fecha de inauguración ;)

Referencias:
Stgo-A-Mil: Hasta Antofagasta llegarán grandes espectáculos de forma gratuita

jueves, 30 de diciembre de 2010

Proyecto de Ley: Incorporación de empleados a honorarios en la Ley de Accidentes del Trabajo

Primera entrada con algo de legislación, cada cierto tiempo estoy a punto de publicar algo de este tópico y al final no lo hago... así que inauguro con esta noticia laboral, ya era hora! :D

En Chile, todo trabajador se encuentra cubierto por el "seguro de accidentes", pero sólo aquellos que caen en alguna de las categorías detalladas en la Ley 16.744 (Ley sobre accidentes del trabajo y enfermedades profesionales). Por nombrar sólo algunas de las categorías más comunes:

- Trabajadores con o sin contrato, también conocidos como trabajador dependiente o independiente, correspondientes a trabajadores que pagan imposiciones (leyes sociales)
- Alumnos en práctica profesional (estudiantes)
- Empleados públicos

Hasta ahí pareciera que todo bien, pero ¿qué pasa con aquellos trabajadores que están trabajando con contrato de honorarios? absolutamente nada, no se encuentran cubiertos por este seguro :O




En Noviembre de este año (2010) se envió un proyecto de ley para modificar la 16744 y agregar a los empleados que caen en la categoría de trabajadores a honorarios.

Conozco a varias personas que llevan mucho tiempo trabajando con boletas de honorarios y creo que este proyecto es una muy buena iniciativa. Ahora habrá que ver cuánto tardan en promulgar esta iniciativa que beneficiará a muchas personas ;)

Referencias:

Ley Fácil - Guía sobre Ley de Accidentes de Trabajo
Ley 16744 - Normas sobre accidentes del trabajo y enfermedades profesionales
-