Este es el blog personal de las actividades de trabajo del Arquitecto de Sistemas (SA) Alfonso Baqueiro Bernal.
miércoles, mayo 22, 2013
El efecto de los vendedores del metro en los viajeros
Mida cuanto tiempo ocupa en actividades que no tienen horario. En actividades sueltas. Cuanto tiempo realmente permanece enfocado cuando trabaja dentro de un horario. Cuanto tiempo ocupa en transportarse. Cuanto tiempo ocupa pensando en ese pensamiento que le viene a la mente de forma esporádica.
Mediante técnicas estadísticas, esta app. le pregunta al azar ¿en qué esta ocupando su tiempo ahora mismo? mediante notificaciones.
A diferencia de otras app. usted no tiene que estar recordando siempre encender y apagar cronometros, lo cual es molesto e innefectivo. Con nuestra app. usted recibe notificaciones que le solicitan que identifique de una lista que estaba haciendo en ese momento. Si no quiere ser interrumpido nuestra app "Mi Tiempo" le permite operar en modo "quieto" el cual no lo distraera hasta la hora que usted aya establecido.
Los que ya han obtenido los beneficios de esta nuestra app. "Mi Tiempo" han desarrollado una mejor conciencia de si mismo, de su productividad real (por ejemplo, descubrir si sufre demasiadas distracciones en su horario laboral), cuanto tiempo realmente entrena vs. platica en el gimnasio, cuanto tiempo duerme, en una semana, etc.
Nuestra app. "Mi Tiempo" es gratis si observa 4 tipos de tareas, pero si desea observar más nuestra app. "Mi Tiempo" versión de paga le cuesta solo dos US Dollares.
Desarrolle una mejor conciencia de si mismo, de su productividad real (descubra si sufre demasiadas distracciones en su horario laboral), cuanto tiempo realmente entrena vs. platíca en el gimnasio, cuanto tiempo descanza o duerme, en una semana, etc. Todo sin necesidad que usted este reportando cuando empieza y cuando acaba de hacer una tarea. Esto gracias a la aplicación de métodos estadisticos de observación.
martes, mayo 21, 2013
UNIX / Linux setting time to internet time server
ntpclient -s -h time.nist.gov
That will adjust your time setting, using the time server time.nist.gov, you can use whatever time server you wish.
lunes, mayo 06, 2013
Crear unidad USB booteable con distro de linux
unetbootin
disponible en varias distribuciones, instalado por default en ubuntu y mint, y en gentoo se puede instalar con:
emerge unetbootin
jueves, abril 18, 2013
Reiniciar máquina virtual de virtual box desde linea de comandos
Para prevenir dañar la máquina virtual, lo que hay que hacer es mandar una señal de control de energía al sistema operativo solicitando se apague para que cierre correctamente, esto lo podemos hacer con:
VBoxManage controlvm VM_NAME acpipowerbutton
Ahora bien el sistema operativo tiene que estar configurado adecuadamente para manejar la señal, por ej. en el caso de linux tiene que tener soporte acpi.
En algunos otros casos puede ser de utilidad mandar un Ctrl Alt Supr, lo que provocará el reinicio del equipo, el que podemos apagar justo antes de que comience la carga del sistema operativo.
VBoxManage controlvm VM_NAME keyboardputscancode 1d 38 53
Enviar Ctrl-Alt-Supr a máquina virtual de virtualbox
Vamos a documentar la forma de hacerlo mediante un comando o sea con VBoxManage
Dado que VBoxManage tiene un comando para mandar secuencias del teclado a una VM corriendo:
VBoxManage controlvm gentoo keyboardputscancode
solo basta agregar los scancodes de Ctrl Alt Supr que son:
1d - left ctrl down
38 - left alt down
53 - supr down
entonces el comondo queda:
VBoxManage controlvm VM_NAME keyboardputscancode 1d 32 53
Ahora bien el reinicio depende de la interpretación que de el sistema operativo de la VM a la secuencia Ctrl-Alt-Supr
Crisis del copyright
Leyendo el libro "Leer o Morir" de Guadalupe Loaeza, menciona el cuento corto titulado "El Dinosaurio" de el autor Augusto Monterroso, así que gogleando llegue a la página http://www.cuentosinfin.com/ y al ver que tiene muchos autores, me dio curiosidad una sección que dice aviso legal
http://www.cuentosinfin.com/aviso-legal/
al verla me sorprende mucho el texto que a continuación transcribo:
"Cuentosinfin.com es un sitio web sin ánimo de lucro que incluye cuentos y textos que podrían estar protegidos por derechos de autor. Si los propietarios de estos derechos no están de acuerdo con ver sus contenidos en este sitio, pueden contactar al correo electrónico josejolop@gmail.com y serán borrados inmediatamente."
Me maravilla ver que tan bajo ha caido el copyright, lo cúal por otro lado me agrada.
lunes, noviembre 26, 2012
Instalación de java plugin para firefox (2012) en linux
En el directorio donde firefox busca sus plugins, colocar un enlace simbólico (soft link) que apunte al archivo que implementa el plug-in.
El archivo que implementa el java plugin es libnpjp2.so
en mi caso yo descomprime el java en
/usr/local/java/jdk1.6.0_33/
por lo que el archivo en cuestión esta en:
/usr/local/java/jdk1.6.0_33/jre/lib/i386/libnpjp2.so
Firefox busca los plugins en varias ubicaciones.
/usr/lib/mozilla/plugins (global a todos los usuarios)
$HOME/.mozilla/plugins (solo para el usuario actual)
por lo que optamos por ponerlo en el directorio personal
entonces esto es lo que se requiere ejecutar para crear el enlace simbólico:
ln -s /usr/local/java/jdk1.6.0_33/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins
miércoles, noviembre 21, 2012
modificar el símbolo o la función de una tecla en xserver en linux
HERRAMIENTAS A CONSIDERAR
- showkey
- xev
Compre un teclado Wireless de marca Perfect Choice, el cúal me gusto debido al tamaño reducido y su diseño ya que las teclas y el espacio entre teclas es similar al de Mac, sin embargo cometieron la burrada de no poner la tecla AltGr que es básica para poner el tercer símbolo de las teclas, por lo que el workaround que se me ocurre es mapear la tecla Ctrl_Derecha para que sea AltGr, pero como se requiere Ctrl_Derecha para poder salir del modo capturado en Virtual Box, tengo la opción de convertir Supr en Ctrl_Derecha o usar la inutil tecla de windows como Ctrl_Derecha
Así que esto es algo de lo que investigue para implementar este workaround:
usando xev observamos el keycode correspondiente a la tecla que tiene el 1 como vemos es el codigo 10
#mapear la tecla del 1 para que ponga 3 xmodmap -e 'keycode 10=3'
#mapear la tecla del 1 para que ponga a xmodmap -e 'keycode 10=a'
ahora podemos intentar con una tecla que no tenga simbolo como supr
y mapearla a que sea un simbolo
supr keycode is 119
xmodmap -e 'keycode 119=a'
ok, funciona, ahora lo que quiero es mapear la tecla de supr para que funcione como AltGr que este estupido teclado no contiene dicha tecla y no puedo poner la @
xmodmap -e 'keycode 119=ISO_Level3_Shift'
Para el caso de las teclas modificadoras como shift, se tiene que hacer algo más Para ver como esta configurado usamos:
xmodmap
esto mostrara algo como esto
xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69), Super_L (0x85) mod1 Alt_L (0x40), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_R (0x86), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)En resumidas cuentas lo que necesitamos hacer es: La tecla de windows (keysym=Super_L) funcionara como tecla de control # Como esta definida como mod4, entonces hay que removerla xmodmap -e 'remove mod4 = Super_L' # Lo siguiente es añadirla como tecla de control xmodmap -e 'add control = Super_L' # Luego procedemos a quitar la Control_R como tecla de control xmodmap -e 'remove control = Control_R' # Y añadimos Control_R como mod5 xmodmap -e 'add mod5 = Control_R' # La tecla de Insert, como esta en el extremo superior derecho, debería ser Supr xmodmap -e 'keysym Insert = Delete' # No tenemos AvPag ni RePag, pero podemos usar Up and Down, cuando se presionan con Shift xmodmap -e 'keysym Up = Up Page_Up' xmodmap -e 'keysym Down = Down Page_Down' Y CON ESTO DAREMOS POR CONCLUIDO LA CONFIGURACIÓN, ya dependiendo de como nos adaptemos a este teclado, entonces añadiremos otras funciones si es necesario. Lo que si se me hace muy necesario a esta altura sería tener teclas para subir y bajar el volumen.
viernes, septiembre 21, 2012
How to block flash on google chrome browser without extension
Esto se puede hacer en 2 sencillos pasos, y practicamente lo que hace es bloquear cualquier tipo de contenido que requiere un plugin, y en el lugar del contenido mostrara un botón que permite activar el plugin de manera especifica en cada ocasión, de esta manera nosotros permitimos que corra lo que deseamos, evitando que los sitios puedan cargar cosas a diestra y siniestra, aumentando la seguridad y reduciendo el desperdicio de uso de nuestro CPU, lo que trae consigo una PC mas ágil sobre todo si abrimos decenas de páginas.
paso 1:
poner en la url
about:flags
Buscar la opción "Click to play" o en español "Haz click para reproducir"
Habilitar
Ir al final de las opciones y reiniciar el navegador.
paso 2:
poner en la url
chrome://settings/content
en la sección "Complementos" aparecerá la opción
"Haz click para reproducir", que es la más adecuada, ya que la opción Bloquear todas, no nos permitira controlar a discreción cuando cargar un plugin.
Listo, eso es todo amigos!
domingo, agosto 12, 2012
firefox profile at use right now
¿Que profile de firefox estoy usando ahora?
Dado que es posible correr más de un profile al mismo tiempo, con la opción -P y -no-remote por ej: (firefox -P profile1 -no-remote), o si manejamos varios profiels y se nos olvida cual abrimos, es posible saberloAbrir consola de firefox
(Ctrl+Shift+j)
ó
(Herramientas > Desarrollo web > Consola de errores)
Ejecutar lo siguiente en el textbox de código (Ctrl+o):
alert(Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path);
Fuente:
http://berndfinger.wordpress.com/2009/11/04/which-firefox-profile-am-i-using-right-now/
miércoles, agosto 08, 2012
Si no leo me a-burro
Sin ánimo de exagerar, podríamos asegurar, queridos lectores, que alcanzaríamos la libertad ... Porque la libertad, hablemos claro, no se otorga, se gana. Ningún gobierno debe prometerla.
Puedo vivir en un país libre y ser esclavo de mi ignorancia, y puedo vivir en un país de esclavos -y me temo que México aún lo es- y ser libre por mis conocimientos. La libertad está en el saber y dentro de uno... Está en los libros."
Fragmento del libro Si no leo me a-burro del "Tio Patota".
Dedicado a mi hijo que no quiere leer y a Eliot con el que suelo conversar del tema de la libertad.
Notas para tarea de webservice sobre https
- SSL (Secure Socket Layer) is a protocol to encrypt information.
- HTTPS is nothing but HTTP + SSL. HTTPS ensures that the information being transferred over HTTP is secured from theft.
- SSL Certificate contains Public Key + Identity information of the website/company which is verified by the Certification authority (visit Reference #3, #4 if you don't understand this).
- TrustStore: file that contains the server certificates that are required by JVM for accepting SSL connections with trusted servers (simply: to trust outbound connections).
- KeyStore: file that contains client certificates that are required by JVM for establishing an SSL connection with a server that requires client certificate authentication.
Note: Technically, there is no difference between TrustStore & KeyStore. They both are essentially used for storing SSL Certificates.
JVM comes with a Certificate Store called 'cacerts'.
It resides in "\jre\lib\security\cacerts". 'cacerts' is JVM's default TrustStore as well as default KeyStore.
=========
keytool -import -alias ca -file somecert.cer -keystore cacerts –storepass changeit
Trust this certificate: [Yes]
=========
echo "" | openssl s_client -connect my.server.com:443 -showcerts 2>/dev/null | openssl x509 -out certfile.txt
=========
fuentes:
http://javarushi.blogspot.mx/2012/07/consuming-secure-web-services-or-web.html
martes, julio 24, 2012
Configuración de logs de DHCP Server en Ubuntu
Modificar dhcpd para que el log lo mande a un archivo aparte
Primero tenemos que especificar lo que se denomina log-facility que va a usar el servicio de dhcpd
Leer http://en.wikipedia.org/wiki/Syslog
editamos /etc/dhcpd3/dhcpd.conf y agregamos
log-facility local7;
y reiniciamos el servicio
$ sudo service dhcp3-server restart
How to destroy tun device created by ssh -w?
http://fixunix.com/networking/375252-how-destroy-tun-device-created-ssh-w.html
Hace referencia a un device tun creado por ssh -w (por una conexión entrante), que se queda ahí cuando se cae la conexión, por lo que ya no deja establecer nuevas usando dicho tun device.
Para poner unar respuesta en el foro antes mencionado, se requiere registro mismo que esta cerrado, por lo que pongo la solución en esta entrada.
Al intentar quitar el tun device creado por ssh con -w, con ip tun del no se deja por lo que para quitarlo lo que me ha funcionado es matar el proceso que se ha quedado atorado.
$ sudo netstat -putan |grep 443
tcp6 0 0 :::443 :::* ESCUCHAR 12533/sshd
tcp6 0 0 192.168.0.200:443 173.244.42.170:50413 ESTABLECIDO 16192/sshd: root@no
tcp6 0 48 192.168.0.200:443 173.244.42.170:58653 ESTABLECIDO 12457/sshd: alfonso
En mi caso es la segunda linea de la salida anterior, o el proceso 16192, por lo que mantando este proceso el tun9 es removido:
$ sudo kill 16192
Y de esta forma se ha solucionado.
lunes, julio 09, 2012
miércoles, julio 04, 2012
gentoo which package a file belongs
equery belongs /bin/cut
(equery es un comando provisto por el paquete gentoolkit)
Listing installed packages in gentoo
way 1:
equery es una herramienta de gentoolkit por lo que la emergemos
emerge gentoolkit
así ya podemos usar:
equery list "*"
way 2:
ls -dl /var/db/pkg/*/*
way 3:
using nikita list-gentoo-packages.sh
========
#!/bin/bash
#
# list-gentoo-packages.sh v0.2
# Copyright 2007-2009, Nikita Melnichenko [http://nikita.melnichenko.name]
# License: GPL-2 (http://opensource.org/licenses/gpl-license.php)
#
# List all installed Gentoo packages with USE flags.
# generate use flags for package $1 (official, but very slow)
function portage_gen_use_flags_by_equery ()
{
equery -N -C uses '='"$1" | grep '^ [+-]' | awk '{ printf "%s%s\n", $2, $3 }'
}
# generate use flags for package $1 (unofficial, but fast)
function portage_gen_use_flags_from_var_db_pkg ()
{
if ! [ -f /var/db/pkg/"$1"/IUSE ]
then
return
fi
local use_flags=`cat /var/db/pkg/"$1"/USE`
for iuse in `cat /var/db/pkg/"$1"/IUSE | sed -e "s/ /\n/g" | LC_ALL=C sort | uniq`
do
iuse=`echo "$iuse" | sed -e "s/^[+-]//g"`
used=0
for use in $use_flags
do
if [ "$use" == "$iuse" ]
then
used=1
break
fi
done
if [ $used -eq 0 ]
then
echo -n '-'
else
echo -n '+'
fi
echo $iuse
done
}
# generate use flags for package $1
function portage_gen_use_flags ()
{
portage_gen_use_flags_from_var_db_pkg "$1"
}
# generate list of all installed packages with their USE flags
function portage_list_installed ()
{
find /var/db/pkg -mindepth 2 -type d | sed -e 's|^/var/db/pkg/||' | LC_ALL=C sort | while read pkg
do
echo -n "$pkg"
portage_gen_use_flags "$pkg" | LC_ALL=C sort | while read flag
do
echo -n " $flag"
done
echo
done
}
portage_list_installed
========
way 4: (root requirido) solo paquetes instadalos explicitamente
cat /var/lib/portage/world
more info:
http://www.gentoo.org/doc/es/gentoolkit.xml
Crear splash image para GRUB
http://fedoraproject.org/wiki/How_to_create_a_custom_grub_splash
En resumidas cuentas necesitamos una imagen de 640x480 que es la que vamos a poner, pero antes de pasarla al formato que usa el grub, hay que pasar la imagen a paleta optimizada de 16 colores, el gimp nos es de gran ayuda para realizar esto.
Les dejo esta bella imagen de 640x480 en formato .png por si desean probar con ella.
martes, julio 03, 2012
Elecciones México 2012
Que lastima que muchos mexicanos no tienen dignidad, y venden el futuro del país por unos cuantos pesos:
http://www.jornada.unam.mx/ultimas/2012/07/03/8196057-compras-de-panico-en-soriana-ante-el-temor-de-que-el-pri-cancelara-tarjetas
Como podemos ver hemos regresado al México antes del PAN (¿o será que nunca hemos salido de esas prácticas?), a las viejas prácticas del PRI, la compra de votos, el acarreo de gente, y esto solo es el principio, el autoritarismo esta de regreso, y si no, ¿como puede el Copetes ya estar diciendo que hacer cuando el IFE todavía no publica los resultados definitivos? ¿como es que estaban festejando en el CEN del PRI ya a las 10 de la noche del domingo, cuando todavía no había suficiente información para indicarles que tenían ventaja en el conteo? ¿porque felicitan otros mandatarios a Peña, cuando todavía la institución oficial no ha dado el fallo definitivo? Todo esto genera mucha desconfianza en las instituciones, y hace parecer todo como una farsa.
http://www.jornada.unam.mx/ultimas/2012/07/03/93913465-impugnara-amlo-eleccion-fue-sucia-a-todas-luces
Tenemos que hacer algo al respecto, no nos podemos quedar con los brazos cruzados.
Pero como bien han dicho algunas cadenas de esas que recibimos por e-mail, el problema de nuestro país no es el gobernante en turno, es la gente, que tiene mierda en la cabeza, que es manipulable, que es miedosa y atemorizable, gente de miras cortas, gente pequeña, y contra eso es poco lo que se puede hacer, al menos en el corto plazo.
Lo que tenemos que hacer es construir y hacer más fuerte la izquierda, ya que en México se ve con miedo aún esta opción, la gente llega a pensar que si ganaba AMLO se iba a hacer el país comunista, que iba a ser otro Hugo Chavez, cuando nunca se les ocurrio comentar que podíamos tener un renacimiento como Brasil con Lula, aunque no todo esta perdido, hay que recordar que Lula, llego a la presidencia de una forma histórica hasta la 3ra ronda. Así que no podemos dejar todo por perdido y tenemos que seguir construyendo.
martes, junio 26, 2012
SSL 101
http://en.wikipedia.org/wiki/Certificate_authority
http://en.wikipedia.org/wiki/Public_key_infrastructure
jueves, abril 12, 2012
Paradigmas para la división del trabajo en Arquitectura de Sistemas
IaaS
Infraestructura como servicio
en este modelo el cliente consume recursos de almacenamiento, procesamiento y redes donde alojar y ejecutar aplicaciones
PaaS
Plataforma como servicio
en este modelo el usuario no controla la infraestructura e incluso el proveedor puede definir el herramientas y lenguajes, pero el usuario si controla las aplicaciones o servicios desplegados y algunas variables de entorno
SaaS
Software como servicio
en este modelo el cliente utiliza aplicaciones y servicios del proveedor, y no tiene control de la infraestructura ni de las apps, solo de parámetros de configuración
martes, marzo 20, 2012
Instalación de Oracle 10g Express Edition en Ubuntu 10.04 LTS
Con eso de que he estado publicando sobre Oracle en Ubuntu, me ha faltado publicar respecto al proceso de instalación.
Aunque la versión 10.2 ya esta vieja, es la que tienen en el entorno del trabajo por lo que es la que estoy usando en esta instalación pero probablemente el proceso es similar con versiones más recientes.
Primero lo primero, descargar los archivos .deb, que se pueden obtener de esta página (previo registro):
http://www.oracle.com/technetwork/products/express-edition/downloads/102xelinsoft-102048.html
Respecto a las dependencias se requiere libaio, podemos ver que hay disponible con
libaio1 - Biblioteca de acceso AIO del núcleo Linux - biblioteca compartida
libaio1-dbg - Biblioteca de acceso AIO del núcleo Linux, símbolos de depuración
así que optamos por instalar libaio1
Luego procedemos a la instalación:
172182 ficheros y directorios instalados actualmente.)
Preparando para reemplazar oracle-xe-universal 10.2.0.1-1.0 (usando .../oracle-xe-universal_10.2.0.1-1.0_i386.deb) ...
Desempaquetando el reemplazo de oracle-xe-universal ...
Configurando oracle-xe-universal (10.2.0.1-1.0) ...
update-rc.d: warning: /etc/init.d/oracle-xe missing LSB information
update-rc.d: see
Executing Post-install steps...
-e You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
Procesando disparadores para desktop-file-utils ...
Procesando disparadores para python-gmenu ...
Rebuilding /usr/share/applications/desktop.es_MX.utf8.cache...
Procesando disparadores para man-db ...
Procesando disparadores para ureadahead ...
Procesando disparadores para python-support ...
Ejecutamos lo que indica la salida anterior.
$ sudo /etc/init.d/oracle-xe configure
Indicamos los puertos para el servidor HTTP y para el Motor
Indicamos un password para las cuentas SYS y SYSTEM
Indicamos si queremos que el motor de base datos se inicie al arranque, si optamos por no, podemos arrancarlo a voluntad con el comando
$ sudo /etc/init.d/oracle-xe configure
Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press
Ctrl-C will abort.
Specify the HTTP port that will be used for Oracle Application Express [8080]:
Specify a port that will be used for the database listener [1521]:
Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:n
Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"
Para parar el servicio
Para habilitar
Para arrancar el servicio
Para consultar el status
Basicamente, con esto ya tenemos un motor oracle edición express up and running.
lunes, marzo 19, 2012
Oracle XE 10.2 documentation links
http://www.oracle.com/pls/db102/portal.all_books
sqlplus user's guide and reference
http://docs.oracle.com/cd/B19306_01/server.102/b14357/toc.htm
Usando oracle express edition 10.2 (XE) con ubuntu 10.04 LTS
(using oracle express edition XE with ubuntu)
Primero vamos a indicar las carencias y defectos que se presentan una vez desempacado e instalado el software
El paquete de oracle server xe contiene una utilidad de conección en modo consola la que se denomina sqlplus, sin embargo el sistema no queda configurado adecuadamente para encontrar este programa, y para ejecutarlo se requiere llamar a otros scripts que se supone que han sido escritos por profesionales de una compañia tan grande como Oracle, sin embargo dejan mucho que desear.
Como podemos ver por el acceso directo que crea la instalación:
el software se instala en:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
y el script que corre para abrir sqlplus es:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/runsqlplus.sh
el cual lo único que hace es escoger el programa de terminal a utilizar, dando preferencia si esta presente a gnome-terminal sobre xterm, y fijando el título de la ventana para invocar a:
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=XE
export ORACLE_SID
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH
export PATH
sqlplus /nolog
este otro lo que hace es fijar adecuadamente las variables
ORACLE_HOME
ORACLE_SID
NLS_LANG
PATH
y finalmente arrancar el sqlplus sin log
lo feo del caso es que el script
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/nls_lang.sh
contiene un error en la linea 108 y 110, al evaluar una condición
originalmente esta así:
if [[ -n "$LC_ALL" ]]; then
locale=$LC_ALL
elif [[ -n "$LANG" ]]; then
locale=$LANG
else
locale=
fi
pero se puede corregir simplemente cambiandolo para que quede así:
if [ -n "$LC_ALL" ]; then
locale=$LC_ALL
elif [ -n "$LANG" ]; then
locale=$LANG
else
locale=''
fi
para que ahora si podamos correr con toda confianza en nuestra terminal
/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/sqlplus.sh
lo cual nos dará un prompt como este:
SQL*Plus: Release 10.2.0.1.0 - Production on Lun Mar 19 16:22:22 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL>
¿y luego que se hace?
Primero nos tenemos que conectar usando un comando connect (nos podemos conectar a un motor oracle ya sea local o remoto), para ello tenemos que saber el usuario y password
en este caso nos conectamos a un server local (127.0.0.1)
como un usuario normal, ej. username
(sqlplus connect as sys)
si queremos conectarnos como DBA hay que agregar:
posteriormente pregunta el password y lo proporcionamos para obtener acceso
y saldrá un mensaje que dice:
Podemos desconectarnos usando
SQL> disconnect
¿y luego que se hace?
podemos mostrar ayuda para un comando utilizando el comando help
Otros comandos a probar son:
help
help accept
help index
Sin embargo seguramente te estas preguntando como se le hace para correr un script sql?
Pues basicamente una vez conectados ya podemos escribir nuestros querys sql
Luego ya podemos editar un archivo mediante
Esto abrira nuestro editor con el archivo filename.sql
Para correr los comandos en dicho archivo podemos usar:
o
Para guardar la salida de la ejecución en un archivo podemos usar:
append es opcional pero es recomendable para no borrar datos previos que haya en el archivo,
para guardar la salida en el archivo es necesario detener el spool
Con la información anterior ya nos es posible editar y ejecutar scripts, así como guardar la salida de ejecución, por lo que hasta aquí voy a dejar esta introducción a la linea de comandos de oracle sqlplus, esto para los que preferimos usar una linea de comandos a la interface html, que es un poco impractica.
Podeís encontrar mas información usando este link:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/pt2.htm
Fuentes:
http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch3.htm
Setting Aquafold Datastudio with Oracle Database
A diferencia de otros motores requerimos más parametros para configurar por ej. para configurar un postgresql requerimos ip, usuario, password, puerto y database
en el caso de oracle, el equivalente a database puede ser el SID, en el caso de oracle express editon, el SID que se requiere es XE
hay un parametro del tipo de conección que puede ser ( normal | SYSOPER | SYSDBA ) y que tenemos que poner en SYSDBA cuando nos estemos conectando con la cuenta SYS o SYSTEM
así quedarían los parametros de la configuración a un motor oracle, como en la imagen
jueves, marzo 15, 2012
Remover secuencias de escape de terminal usando un comando
I needed this functionality just now and I thought 'Why not share it?'. So, here it is:
alias stresc='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"'This effectively creates your own personal 'strip escape' command.
To use it in a terminal
stresc filename
or
stresc filename > other-file-namefuente: http://crunchbanglinux.org/forums/topic/15321/how-to-remove-ansi-escape-sequences-from-a-text-file/
domingo, febrero 19, 2012
y dicen que el perro viejo no aprende trucos nuevos
watch
para monitorear otro comando que se corre periodicamente y monitorear cambios en su salida, notar que esta ejecutando el comando cada n segundos y mostrando su salida sobrepuesta
ej.
cuando estamos descargando un archivo o copiando uno grande y queremos ver el tamaño del archivo como va cambiando cada 5 segundos
watch -n 5 ls -lh growingfile.bin
script
para guardar en un archivo toda la salida y entrada de una sesion interactiva de terminal, o que otro usuario vea lo que estamos haciendo en la terminal
ej. para guardar la salida a un archivo de nombre log
script -f log
ej. para mostrar a otro lo que se va haciendo cuando ambos están logueados en un server
on term1:
mkfifo fifo; script -f fifo
on term2:
cat fifo
entonces toda la salida y entrada de term1 se replica en term2
martes, febrero 14, 2012
Configurar apt-get a traves de proxy autenticado
y añadir esta linea:
Acquire::http::proxy "http://DOMAIN\USER:PASSWORD@PROXY_IP:PORT";
o si no requiere DOMINIO
Acquire::http::proxy "http://USER:PASSWORD@PROXY_IP:PORT";
por ej:
Acquire::http::proxy "http://google\sergey:password@10.0.0.1:8080";
o si no requiere dominio
Acquire::http::proxy "http://sergey:password@10.0.0.1:8080";
o si no requiere autenticación
Acquire::http::proxy "http://192.168.1.253:8080";
Esto me ha funcionado, pero si es un poco inseguro porque el password queda a la vista.
Al menos podemos hacerlo no legible salvo para root o sudoers con esto
sudo chmod 700 /etc/apt/apt.conf
martes, noviembre 29, 2011
Añadiendo soporte en ubuntu para driver de ethernet card Atheros AR8152 en Toshiba Satellite Pro C650
de acuerdo con:
lspci | grep Ethernet
01:00.0 Ethernet controller: Atheros Communications AR8152 v1.1 Fast Ethernet (rev c1)
por alguna razón ubuntu 10.04 LTS en esta ocasión si detecta la interface wireless y la ethernet no la detecta, gogleando encontre que se puede añadir driver para esta tarjeta compilandolo
es necesario descargar el fuente de
http://linuxwireless.org/download/compat-wireless-2.6/
yo descargue el más reciente en este momento
http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2011-11-22.tar.bz2
luego, poniendonos en el directorio donde descargamos:
tar -xjvf compat-wireless-2.6.tar.bz2
cd compat-wireless*
scripts/driver-select atl1c
make
sudo make install
luego reiniciamos y en teoría ya debemos tener el soporte
si no cargo el driver automagicamente probar
sudo modprobe atl1c
miércoles, noviembre 23, 2011
Resize ubuntu live usb persistence storage space
(replacing 1024 with the size in MB you wish to increase the original size by)
Type the following into the terminal window and press enter
resize2fs casper-rw
If all goes well, you should now have a larger casper-rw loop file to use for saving your persistent changes.
lunes, noviembre 07, 2011
compartir usb o sd o tarjeta con windows desde ubuntu linux
(ubuntu linux samba sharing permission problem)
pinche linux, a veces hay cosas sencillas que da mucha lata poderlas realizar
como es el caso de querer compartir con máquinas windows (mediante samba) archivos que están en una usb o en una memoria SD en el lector de tarjetas
aquí la historia:
1. metes la memoria al lector, y bueno, todo bien, lo monta en /media/ALGO (donde algo es el label del sistema de archivos en la memoria) y puedes ver los archivos sin bronca, así que supones que modificando la configuración del /etc/samba/smbd.conf agregando:
[ALGO]
path = /media/ALGO
browseable = yes
writeable = no
guest ok = yes
force user = nobody
force group = nogroup
lo anterior funciona bien ya que desde la máquina windows puedes ver la carpeta compartida algo, pero cuando intentas ver su contenido te marca un error de permisos
revisando los permisos con ls -lh nos damos cuenta de que los permisos de la carpeta están como
root root rwxr-xr-x
y como es un directorio requiere permisos para el grupo y otros usuarios como rwrrwxrwx así que hay que cambiarlos, pero usando chmod no lo permite porque el sistema de archivos es vfat y no tiene dichos permisos
así que la solución esta en desmontar el sistema de archivos y montarlo a mano para poder indicar el usuario y grupo con el cual montarlo
primero tomamos nota de donde se monto en automático
$ mount | grep /media/algo
/dev/sdc1 on /media/algo .....
tomamos nota de que el sistema esta en /dev/sdc1
$ sudo umount /media/algo
creamos el punto de montaje nuevo
$ mkdir ~/algo
montamos manualmente
$ sudo mount -o uid=nobody,gid=nogroup /dev/sdc1 ~/algo
modificamos el /etc/samba/smb.conf
[ALGO]
path = /home/YOUR_USER/algo
browseable = yes
writeable = no
guest ok = yes
force user = nobody
force group = nogroup
si es necesario le damos un restart al samba
$ sudo service smbd restart
de esta forma ya no debemos tener problema para ver los archivos desde la máquina con windows
mediante el path por ej.
\\192.168.10.70\algo
martes, noviembre 01, 2011
notas sobre desarrollo con android desde linea de comandos
Como modificar una aplicación incluida en los samples del SDK para generar el build.xml
$ android update project -n NOMBRE -t 1 -p android-sdk/samples/sampleX
Como compilar la aplicación en modo de depuración
$ ant debug
Como compilar la aplicación usando firma para poder subirla al market
$
se crea un emulador usando el GUI que contiene el programa
$ android
seguir la GUI, lo importante aquí es tomar nota del nombre que le ponemos al emulador ya que este nombre se utiliza para arrancarlo
Como arrancar el emulador, se le puso de nombre avd1
$ emulator -avd avd1
Como listar los emuladores que están en ejecución
$ adb devices
Con el emulador corriendo, como instalar una applicación
$ adb install archivo.apk
como usar un solo mouse y teclado para controlar varias computadoras
las computadoras pueden tener diversos sistemas operativos, por ejemplo OS X, linux o windows
para los otros sistemas operativos podemos descargarlo de la página de la app
http://synergy-foss.org/download/
section: screens
google:
petit:
inv1:
end
section: aliases
google:
192.168.10.70
petit:
192.168.10.38
inv1:
192.168.1.71
end
section: links
google:
left = petit
petit:
right = google
left = inv1
inv1:
right = petit
end
================================
tiene a la izquierda a petit
petit
tiene a la derecha a google
tiene a la izquierda a inv1
inv1
tiene a la derecha a petit
por default synergys busca el archivo .synergy.conf en nuestro $HOME, con la opción --config podemos especificar un archivo distinto
--config synconf2.conf
Lanzamos el servidor de synergy para que este listo para compartir teclado y mouse
por otro lado las máquinas que queremos controlar se tienen que entregar voluntariamente, o sea tenemos que ejecutar el cliente de synergy indicando el servidor que las controlara
o por ip
$ synergyc -f 192.168.10.70
http://synergy-foss.org/
viernes, octubre 28, 2011
Compras en USA y la ineficiente economía Mexicana
Soy de la Ciudad de México y antes que nada vean que tambíen compramos cosas originales y no solo material pirateado en Tepito, cuyas copias de DVD tienen una pésima calidad (material y técnica para realizar la copia) y los supuestos clones de DVD no lo son ya que generalmente los DVD originales vienen en doble capa y contienen en promedio 6Gb o más de datos, los supuestos clones los hacen en el DVD de a 1 peso y les reducen calidad para que entren en 4Gb, además de que le quitan material extra y audio en otros idiomas (que son muy utiles para aprender idiomas). Es decir lo pirata realmente es pus, ni siquiera es una piratería bien hecha, el disco no esta serigrafiado, y ni siquiera los dan en una caja para su protección y conservación si usarán DVD de buena calidad y doble capa tendrían que vender en 40 pesos cada DVD en lugar de los 6 pesos a los que los venden.
Las grandes discográficas tienen que considerar la diferencia de ingresos en los países jodidos como México ya que no puede ser que los precios en México sean superiores a los precios que ofrecen en países con niveles de ingreso más altos.
Es increible que sea más barato comprar a través de amazon que en las tiendas locales físicas o web, ya que se supone que ellos pueden ofrecer un mejor precio porque compran de mayoreo, sin embargo sale más barato importarlo de manera individual (y uno también paga el impuesto de importación), lo cual no tiene lógica económica, esto solo refleja que los empresarios mexicanos son muy aborazados para obtener altas tasas de ganancia, es decir la economía mexicana no es eficiente.
Yo considero que el precio de equilibrio adecuado para un país como México es entre 40 y 60 pesos para los DVD de películas, la industria discográfica debe considerar este tipo de estrategias de precios como la manera más eficiente de combatir la piratería y no las tontas propuestas que vemos aparecer en los titulares como esta noticia de Diario TI
Respecto al review del producto no hay mucho que decir, es un material de excelente calidad, claro si te gusta la serie de Harry Potter, sino, pues no.
jueves, octubre 06, 2011
Como saber desde donde están entrando a nuestro sitio con PHP
<?php
header("Content-Type: text/html; charset=utf8;");
echo "Has llegado a esta página ";
if (isset($_SERVER['HTTP_REFERER']) ){
echo " por una referencia desde [<b>";
echo $_SERVER['HTTP_REFERER'];
echo "</b>]";
} else {
echo "<b>usando el url directamente.</b>";
}
?>
jueves, septiembre 22, 2011
Compiling PHP5 with MS SQL Server support
Primero hay que obtener el código fuente del sitio de ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
En esta ocasión voy a proceder a poner los comandos del proceso de instalación:
cd /dev/shm wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz mkdir /build cd /build tar zxvf /dev/shm/freetds-stable.tgz cd freetds-0.82/ ./configure --prefix=/usr/local/freetds --exec-prefix=/usr/local/freetds make sudo make install
con lo anterior hemos terminado de compilar e instalar freetds en nuestro linux
ahora a compilar el php con dicho módulo
cd /build cd php-5.2.6/ './configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-pgsql=/usr/local/pgsql' '--with-zlib' '--enable-mbstring' '--with-gd' '--with-jpeg-dir=/usr/lib' '--with-mssql=/usr/local/freetds'
aquí nos marca un error que se resuelve como los amables usarios de php indican en
http://www.php.net/manual/en/mssql.installation.php
ya que al parecer hay algunos archivos que el php supone que existen para verificar la existencia de tds, pero que la distro de tds ya no incluye
sudo touch /usr/local/freetds/include/tds.h sudo touch /usr/local/freetds/lib/libtds.a
luego regresamos a intentar
'./configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-pgsql=/usr/local/pgsql' '--with-zlib' '--enable-mbstring' '--with-gd' '--with-jpeg-dir=/usr/lib' --with-mssql=/usr/local/freetds make sudo make install
reiniciamos el apache y corremos un .php que muestre phpinfo() para comprobar que ya se encuentre el soporte, debe aparecer una sección mssql, esto indica que el php ya tiene dicho soporte
sudo service httpd restart google-chrome http://localhost/pru.php
Como paso adicional es necesario modificar el archivo de configuración de tds para agregar nombres de servidores sql que se utilizarán en php para conectarse a los motores de base de datos.
sudo gvim /usr/local/freetds/etc/freetds.conf
añadimos una sección por cada servidor (no es necesario reiniciar el httpd) por ej.
[google_vm_altair] host = 192.168.10.70 port = 1433 tds version = 7.0
miércoles, septiembre 21, 2011
MS Sql Server Backup / Restore sql commands
Respaldar en el directorio por defecto (backup directory in MSSQL directory) con nombre prueba.bak
BACKUP DATABASE pru TO DISK='prueba.bak';
Restaurar de un backup que se encuentra en el directorio default
Nota: la base de datos que se quiere restaurar no debe estar en uso.
RESTORE DATABASE pru FROM DISK='prueba.bak';
Restaurar de un backup hacia una base de datos distinta a la original
RESTORE DATABASE pru2 FROM DISK='prueba.bak'esto lanza el error siguiente
-- [Error] Script lines: 1-3 -------------------------- -- The file 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru.mdf' cannot be overwritten. It is being used by database 'pru'. -- -- More exceptions ... File 'pru' cannot be restored to 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru.mdf'. Use WITH MOVE to identify a valid location for the file.
Así que necesitamos ver el contenido del backup para ello usamos:
RESTORE FILELISTONLY FROM DISK='prueba.bak'esto muestra algo como lo siguiente:
-------------- ------------------------------------------- ------- ---------------- ------- -------------- --------- ------------ ---------- ------------------------------------ -------------- --------------- -------------------- ------------------ -------------- --------------- ---------------------- ------------------------------------ ------------- ------------
pru c:\mssql2005\MSSQL.1\MSSQL\DATA\pru.mdf D PRIMARY 2293760 35184372080640 1 0 0 DB89AE8F-4F86-4633-9063-7BE019ABF8E9 0 0 1441792 512 1 (null) 17000000041200037 8683BDA0-FDA1-4281-B887-5FEE5FD1CC0D false true
pru_log c:\mssql2005\MSSQL.1\MSSQL\DATA\pru_log.LDF L (null) 573440 2199023255552 2 0 0 A9C91979-20E6-4A67-BAEC-48FC68C3E6B6 0 0 0 512 0 (null) 0 00000000-0000-0000-0000-000000000000 false true
Así que usamos la información anterior para hacer la restauración indicando donde queremos colocar los archivos de la base y el log, para ello usamos el Logical name
RESTORE DATABASE pru2 FROM DISK='prueba.bak' WITH MOVE 'pru' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru2.mdf' ,MOVE 'pru_log' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\pru2_log.LDF'
-- ALGUNOS EJEMPLOS APLICADOS
BACKUP DATABASE pru
TO DISK='\\10.0.2.2\buzon\pru.bak'
RESTORE FILELISTONLY
FROM DISK='\\10.0.2.2\shm_altair\plantilla.bak'
RESTORE DATABASE altair_plantilla
FROM DISK='\\10.0.2.2\shm_altair\plantilla.bak'
WITH
STATS=10
,MOVE 'plantilla_Data' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\altair_plantilla.mdf'
,MOVE 'plantilla_Log' TO 'c:\mssql2005\MSSQL.1\MSSQL\DATA\altair_plantilla_log.ldf'
=========================================================
BACKUP DATABASE pru
TO DISK='C:\bk\pru.bk';
es tan simple como lo anterior, pero hay que asegurarnos de que la cuenta con la que corre el proceso de sql server tiene permiso de escritura en el path donde queremos guardar el archivo de backup, por lo que hay que darle permiso en las propiedades de seguridad a la carpeta, en mi caso el sqlserver corre con la cuenta NETWORK SERVICE y al darle permiso ya no saldra un error como este:
Cannot open backup device 'C:\bk\pru.bk'. Operating system error 5(Access is denied.)
Si el backup es muy grande, podemos agregar lo siguiente para recibir notificación sobre el progreso, en este caso solicitamos notificación cada 10% (WITH STATS=10) y el comando quedaría así:
BACKUP DATABASE pru
TO DISK='C:\bk\pru.bk'
WITH STATS=10;
Restore sql
Restoringaoeu
Más información:
http://technet.microsoft.com/en-us/library/ms186865(SQL.90).aspx
martes, septiembre 20, 2011
configuring several ips on the same network interface (card)
(creating or setup virtual IP address on a single interface)
now our interface is binded to the three IPs
if you want to check with your eyes, run
ifconfig
and you will see something like this
eth0 Link encap:Ethernet direcciónHW 00:04:75:ab:cd:ef
Direc. inet:192.168.1.50 Difus.:192.168.1.255 Másc:255.255.255.0
ACTIVO DIFUSIÓN MULTICAST MTU:1500 Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupción:20 Dirección base: 0xe000
eth0:1 Link encap:Ethernet direcciónHW 00:04:75:ab:cd:ef
Direc. inet:192.168.1.100 Difus.:192.168.1.255 Másc:255.255.255.0
ACTIVO DIFUSIÓN MULTICAST MTU:1500 Métrica:1
Interrupción:20 Dirección base: 0xe000
eth0:2 Link encap:Ethernet direcciónHW 00:04:75:ab:cd:ef
Direc. inet:192.168.1.200 Difus.:192.168.1.255 Másc:255.255.255.0
ACTIVO DIFUSIÓN MULTICAST MTU:1500 Métrica:1
Interrupción:20 Dirección base: 0xe000
related info:
http://itsecureadmin.blogspot.com/2007/02/creating-virtual-ip-addresses-on-linux.html
lunes, septiembre 19, 2011
VirtualBox port forwarding from HOST to GUEST
When running a VirtualBox VirtualMachine(VM), the networking inside the VM by default is in a private network in NAT, generaly 10.0.2.x, so the GUEST can access the HOST network services, but the HOST and the outside world is unable to reach the GUEST network services.
According to the VirtualBox Manual, there are different modes of network emulation, by default the NAT mode.
A way to map (forward) a HOST port to a GUEST port exists and is posible to configure from the command line (the VM should not be running):
$ VBoxManage modifyvm windows-server --natpf1 "iis,tcp,,8080,,80"
In this case:
windows-server is the name of the VM
iis is the name of the rule
tcp the protocol, could be udp also
the host IP is left blank
the hostport is 8080
the guest IP is left blank
the guestport is 80
The restriction with this approach is that all the inbound traffic is reverse NATed so the GUEST VM will see the origin IP as 10.0.2.2.
jueves, septiembre 15, 2011
como convertir .nrg a .iso in linux
los archivos .nrg son images de un CD o DVD creadas con el software de grabación NERO Burning, sin embargo es de más utilidad tener el archivo de imagen en formato .iso, el cual es un estandar y es el más aceptado por las aplicaciones y podemos arrancar las maquinas virtuales desde un .iso
así que hay que convertirlo y en linux no hay mayor problema, solo tenemos que instalar el paquete nrg2iso
$ sudo apt-get install nrg2iso
luego para convertir
$ nrg2iso file.nrg file.iso
y listo!!! ya podemos utilizar la imagen con mucho más software sin requerir el ñero
jueves, septiembre 08, 2011
Convertir secuencia de imagenes a video
La opción -f image2 le indica a ffmpeg que la entrada es una secuencia de imagenes.
Se puede facilmente con el comando ffmpeg %04d indica que los nombres de imágenes son a 4 digitos 0000 hasta el 9999.
Si las imagenes tienen nombres con 2 digitos usaríamos %02d, y si solo tienen el número sin mascara (1, 2,3, ... 9, 10, ..., 21) solo utilizamos %d.
La primera -r indica cuantas imagenes van por cada segundo.
La segunda -r indica el número de cuadros por segundo del video.
video.avi es el nombre del archivo de salida
martes, septiembre 06, 2011
Compiling PHP 5 with GD support
$ sudo apt-get install libgd2-xpm-dev libjpeg62-dev
running configure
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql=/usr/local/pgsql8.1 --with-zlib --enable-mbstring --with-gd --with-jpeg-dir=/usr/lib
viernes, agosto 26, 2011
miércoles, agosto 10, 2011
Solving festival problem "can't open /dev/dsp"
(Parameter.set ‘Audio_Method ‘Audio_Command)
miércoles, agosto 03, 2011
linux routing
if you did the following as root: setcap cap_net_admin=+eip /sbin/route anyone that could run the route command could do routing changes. so a possibility is to make /sbin/route mode 0550 and a special routing group and have the process be run by a user in that routing group. |
lunes, agosto 01, 2011
netcat (tcp/ip swiss knife) examples
the site was down, so I preserve the content got by google cache
One of the Linux command line tools I had initially under-estimated is netcat or just nc. By default, netcat creates a TCP socket either in listening mode (server socket) or a socket that is used in order to connect to a server (client mode). Actually, netcat does not care whether the socket is meant to be a server or a client. All it does is to take the data from stdin and transfer it to the other end across the network.
The simplest example of its usage is to create a server-client chat system. Although this is a very primitive way to chat, it shows how netcat works. In the following examples it is assumed that the machine that creates the listening socket (server) has the 192.168.0.1 IP address. So, create the chat server on this machine and set it to listen to 3333 TCP port:
$ nc -l 3333On the other end, connect to the server with the following:
$ nc 192.168.0.1 3333In this case, the keyboard acts as the stdin. Anything you type in the server machine’s terminal is transfered to the client machine and vice-versa.
Transfering Files
In the very same way it can be used to transfer files between two computers. You can create a server that serves the file with the following:$ cat backup.iso | nc -l 3333Receive backup.iso on the client machine with the following:
$ nc 192.168.0.1 3333 > backup.isoAs you may have noticed, netcat does not show any info about the progress of the data transfer. This is inconvenient when dealing with large files. In such cases, a pipe-monitoring utility like pv can be used to show a progress indicator. For example, the following shows the total amount of data that has been transfered in real-time on the server side:
$ cat backup.iso | pv -b | nc -l 3333Of course, the same can be implemented on the client side by piping netcat’s output through pv:
$ nc 192.168.0.1 3333 | pv -b > backup.iso
Other Examples
Netcat is extremely useful for creating a partition image and sending it to a remote machine on-the-fly:$ dd if=/dev/hdb5 | gzip -9 | nc -l 3333On the remote machine, connect to the server and receive the partition image with the following command:
$ nc 192.168.0.1 3333 | pv -b > myhdb5partition.img.gzThis might not be as classy as the partition backups using partimage, but it is efficient.
Another useful thing is to compress the critical files on the server machine with
tar and have them pulled by a remote machine:$ tar -czf - /etc/ | nc -l 3333As you can see, there is a dash in the tar options instead of a filename. This is because tar’s output needs to be passed to netcat.
On the remote machine, the backup is pulled in the same way as before:
$ nc 192.168.0.1 3333 | pv -b > mybackup.tar.gz
Security
It is obvious that using netcat in the way described above, the data travels in the clear across the network. This is acceptable in case of a local network, but, in case of transfers across the internet, then it would be a wise choice to do it through an SSH tunnel.Using an SSH tunnel has two advantages:
- The data is transfered inside an encrypted tunnel, so it is well-protected.
- You do not need to keep any open ports in the firewall configuration of the machine that will act as the server, as the connections will take place through SSH.
$ cat backup.iso | nc -l 3333On the client machine connect to the listening socket through an SSH tunnel:
$ ssh -f -L 23333:127.0.0.1:3333 me@192.168.0.1 sleep 10; \
nc 127.0.0.1 23333 | pv -b > backup.iso
This way of creating and using the SSH tunnel has the advantage that the tunnel is automagically closed after file transfer finishes. For more information and explanation about it please read my article about auto-closing SSH tunnels.Telnet-like Usage
Netcat can be used in order to talk to servers like telnet does. For example, in order to get the definition of the word “server” from the “WordNet” database at the dict.org dictionary server, I’d do:$ nc dict.org 2628
220 ..............some WELCOME.....
DEFINE wn server
150 1 definitions retrieved
151 "server" wn "WordNet (r) 2.0"
server
n 1: a person whose occupation is to serve at table (as in a
restaurant) [syn: {waiter}]
2: (court games) the player who serves to start a point
3: (computer science) a computer that provides client stations
with access to files and printers as shared resources to a
computer network [syn: {host}]
4: utensil used in serving food or drink
.
250 ok [d/m/c = 1/0/18; 0.000r 0.000u 0.000s]
QUIT
221 bye [d/m/c = 0/0/0; 16.000r 0.000u 0.000s]
Works as a Port Scanner too
A useful command line flag is -z. When it is used, netcat does not initiate a connection to the server, but just informs about the open port it has found. Also, instead of a single port, it can accept a port-range to scan. For example:$ nc -z 192.168.0.1 80-90 Connection to 192.168.0.1 80 port [tcp/http] succeeded!In this example, netcat scanned the 80-90 range of ports and reported that port 80 is open on the remote machine.
The man page contains some more interesting examples, so take the time to read it.
Notes
All the above examples have been performed on Fedora 5/6. Netcat syntax may vary slightly among Linux distributions, so read the man page carefully.Netcat provides a primitive way to transfer data between two networked computers. I wouldn’t say it’s an absolutely necessary tool in the everyday use, but there are times that this primitive functionality is very useful.
martes, julio 05, 2011
Set up Kyocera Mita 1820 in Ubuntu 10.04, for job accounting or with password for printing
I was able to setup job accounting for a Kyocera mita 1820, so I can print in the job printer, this is how I did it:
0) Default Ubuntu Add Printer procedure (I am using ubuntu 10.04 but this can apply to other versions or distributions)
1) In CUPS, change job accounting to an arbitrary code, say "00000000" then accept changes
( this can be done either in System > Administration > Printers, select your printer, right mouse click, options, in the dialog:
Printer Options, scroll to Job Acounting (below of Job Settings), and choose the 00000000
2) As root, edit the ppd file for the printer: it is located in /etc/cups/ppd/ and titled "printer.ppd" with "printer" being the cups name for the printer.
sudo gvim /etc/cups/ppd/Kyocera-Mita-KM-1820.ppd
2. Search this section:
======
*% Management Code Definitions
*OpenUI *KmManagment/Job Accounting: PickOne
*OrderDependency: 60 AnySetup *KmManagment
*DefaultKmManagment: MG00000000
*KmManagment Default/Off: ""
*KmManagment MG00000000/00000000: "(00000000) statusdict /setmanagementnumber get exec"
*KmManagment MG00000001/00000001: "(00000001) statusdict /setmanagementnumber get exec"
.....
======
3. change this line:
===
*KmManagment MG00000000/00000000: "(00000000) statusdict /setmanagementnumber get exec"
===
using your code (ex. 7947) TO:
===
*KmManagment MG00000000/7947: "(7947) statusdict /setmanagementnumber get exec"
Save, and restart cups:
sudo service cups restart
This worked for me.
miércoles, junio 15, 2011
Wii: Pantalla negra al correr juegos del Virtual Console
Si usamos cable composite (el que viene por default con la wii y es de 3 salidas) no hay problema.
Si usamos el cable de componente, el problema se presenta cuando estamos en modo 480i, y se resuelve si cambiamos al modo 480p, lo cual podemos hacer en la pantalla de configuraciones del wii.
El modo 480p nos da mejor imagen que el 480i, esa es la utilidad de cambiar el cable composite por el cable componente.
En algunos blogs sugieren que se puede pasar de un modo a otro, si la wii no esta bloqueada y esta en la pantalla negra, entonces apretar la tecla Home, acceder al manual del juego, y mediante la combinación de botones Z + A + 2 (modo interlaced 480i) ó Z + A + 1 (modo progresivo o 480p) se puede cambiar de modo.
Espero esta información les sea de utilidad.
sábado, mayo 07, 2011
Kindle feedback: About ebook lending
viernes, mayo 06, 2011
mejorando la experiencia de uso de google reader en el Kindle
Ahora bien los contenidos de los periodicos para kindle tienen un costo, pero también podemos usar sin pagar nada, el maravilloso agregador RSS de Google, y el navegador del kindle para visualizarlo, sin embargo en el kindle de 6'' queda una área reducida para leer pero hay ciertos atajos y trucos para maximizar nuestra experiencia
Aquí les doy mis recomendaciones, que no solo funcionan en el kindle sino también cuando usen el google reader en otro dispositivo, básicamente se trata de usar el teclado para navegar por las noticias en una forma sencilla y rápida, por otro lado les recomiendo activar el m
[tecla] : función, (pongo la tecla entre parentesis cuadrados para fines ilustrativos pero no hay que teclear los parentesis cuadrados)
[f ]: nos permite pasar al modo de lectura en pantalla completa quitando todos los elementos distractivos del reader
[p] : nos permite mover el focus a la sigiuente entrada
[n] : nos permite mover el focus a la entrada anterior
[o] : nos permite abrir la entrada que tiene el focus
[barra espaciadora] : nos permite avanzar en la lectura de página en página
[shift]+[barra espaciadora] : nos permite retroceder en la lectura una página
[shift]+[u] : nos muestra el listado de suscripciones
[shift]+[j] : nos permite mover el focus a la siguiente suscripción
¿de donde puedo bajar peliculas, música y libros en internet?
estan los sitios de torrents para bajar mediante un software que descargue torrents
busca en
http://torrent-finder.info
es un metabuscador de torrents pero ahí ves los sitios de torrents más usados como son
http://piratebay.org
http://isohunt.com
etc, en cada sitio puedes buscar las pelis o la música
luego otra opción es buscarlas en los foros de compartición donde generalmente o te ponen el torrent o el link de descarga en sitios de archivos
puedes probar usando un buscador para esto como http://filecrop.com el cual te lleva a enlaces para descarga directa cosa que google difícilmente hace, para gestionar de mejor manera tus descargas de este tipo de enlaces, te recomiendo un software que se llama jdownloader (http://jdownloader.org/download/index), basado en java por lo que corre sin problemas en windows, linux y mac y que se encarga de esperar por tí a que los archivos puedan ser descargados y puedes definir una cola de descargas


