Si se te ocurre... Hazlo!!!

DTerm: Una terminal integrada en el GUI

DTerm: Una terminal integrada en el GUI

Hace ya un montón de tiempo que la uso y pensaba que era algo conocido y de dominio público pero tras hablar con unas cuantas personas he visto que no la conocía tanta gente, así que si hay una app útil, sencilla y que se merece un artículo es esta: Dterm

DTerm es una terminal pero con unas características muy especiales que la hacen única… y es que no es una app al uso sino que funciona como un lanzador de aplicaciones, es decir, tiene un pequeño proceso en 2do plano que espera latente a que se le llame a través de una combinación de teclas. Cuando dicha combinación de teclas es pulsada, aparece una pequeña ventanita donde podremos insertar los comandos similar a esta:

 

Ventana de DTerm

Ventana de DTerm

 

Aunque vista así no parece gran cosa, no se deje engañar ya que tiene unas cuantas características que la hacen muy especial.

Para empezar, cada vez que la invocamos, el directorio de trabajo es aquel que tengamos abierto, esto es, si en Finder estamos en la carpeta /Aplicaciones, cuando se invoque DTerm este estará situado en ese directorio. Esto es realmente útil para muchísimas tareas, por ejemplo, una de las que mas se suele echar de menos cuando llegas a Mac tras haber usado Windows o Linux es la opción de hacer clic con el botón derecho del ratón y seleccionar “crear nuevo archivo”. Esta función se puede reemplazar con DTerm ya que tras incovarlo podemos hacer un “touch fichero”.

Otra de las características es que te da la opción de ejecutar el comando usando el propio DTerm como salida estándar o lanzarlo a través de la terminal que tengas por defecto. Esto significa que si lanzamos un comando que nos devuelva datos, por ejemplo, un ping, podremos ver el resultado en la misma ventana de DTerm, la cual esta muy bien configurada para mostrar las salidas estándar, las cuales no solo podremos visualizar, ya que también podremos selecionarlas y copiar.

Ejemplo de un ping con DTerm:

Ping con DTerm

Ping con DTerm

 

Por supuesto esto abre un sinfín de posibilidades para incluir DTerm en nuestro flujo de trabajo diario, ya que nos permitida hacer multitud de tareas de una forma súper rápida ya que las combinaciones son prácticamente ilimitadas… casi todo el potencial de una terminal sin tener que abrirla… cat, gzip, tail, scp, wget, curl… etc.

scp, curl, ping, wget, tail, redirecciones, pipes… las opciones son infinitas y la comodidad, asi como la velocidad a la hora de realizarlas es genial.

Además de todas estas bondades, hay que incluirle que tiene historial de comandos (Se puede recorrer con la tecla flecha arriba), autocompletados con el tabulador (tanto para ordenes como para archivos) y, en caso de que necesitemos lanzar el comando pero enviarlo a la terminal, podremos hacerlo si en lugar de usar la tecla INTRO para ejecutar usamos CMD + INTRO. Esto es muy útil cuando queremos lanzar un comando interactivo, es decir, un comando que nos solicite interactuar con el, no solo generar la salida en pantalla como por ejemplo un editor como el vim. Cabe destacar que otra característica es la integración con finder que nos permitirá detectar los ficheros o directorios seleccionados para ejecutar la orden contra ellos.

Menú de opciones y atajos respecto al comando a ejecutar:

Opciones de ejecución de DTerm

Opciones de ejecución de DTerm

 

En caso de que el comando lanzado se dilate en el tiempo, no es necesario mantener abierta la ventana de DTerm, de hecho, si hacemos clic fuera de ella se ocultará pero la tarea que hayamos lanzado desde ella continuará en segundo plano y cuando finalice. nos mostrará una notificación de Growl.

Dado que esto es solamente una pequeña presentación, y que el uso de DTerm es básicamente el uso de la terminal salvando ciertas diferencias, doy por concluido el articulo aquí, no sin dejar enlazado el video presentación de la web del desarrollador, donde se puede ver el DTerm en funcionamiento. Esta en inglés pero aunque alguien no lo entienda, solamente viendo el video captará la esencia de las ventajas que implica introducir DTerm en el flujo de trabajo del día a día.

Ah, una cosa más, por desgracia, esta era una de las mejores apps gratuitas que estaban en la Mac App Store y que por alguna razón ya no se encuentra allí. Eso si, continua siendo gratuita y está disponible en la web del desarrollador.

Aplicación: DTerm

Precio: Gratuita

Desarrollador: http://decimus.net/dterm

Descargar DTerm

Share

read more

rutaAlert Script

rutaAlert Script

Quienes trabajamos entre bases de datos ORACLE sobre sistemas variopintos, nos encontramos con que no siempre es fácil acordarse de las rutas de los alert.log, sobre todo cuando tienes que trabajar sobre bbdd que llevan montadas bastante tiempo y la persona que las montó lo hizo a su manera.
También es cierto que muchas otras veces, recordar o incluso “razonar” la ruta del alert.log de las instancias de oracle, puede ser un tema de vagancia mental.

Sea como sea, ya no hace falta perder ni un minuto mas pensando o buscando el alert.log de ninguna de las instancias de oracle gracias a este pequeño script, que junto con el verpmon publicado anteriormente, es uno de los que mas utilizo en el día a día.

La idea básica del script es muy simple… preguntar a la instancia por la ruta del alert.log.

Lo unico que nos pedirá el script es haber definido previamente el ORACLE_SID de la instancia.

Este es el pequeño script:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
if [ -z $ORACLE_SID ]
then
echo -e "\nERROR: ORACLE_SID esta sin definir"
else
echo -e "\nSacando ruta del alert para el ORACLE_SID=$ORACLE_SID"
sqlplus -S "/as sysdba" <<EOF
select value from v\$parameter where name='background_dump_dest';
exit;
EOF

fi
echo -e "\n"

Como se puede apreciar, el script es de lo más simple. Salta a la vista que el usuario que lo lance debería poder conectarse con “/as sysdba”.

Por supuesto, para que sea realmente util, habría que definirlo con un alias en los ficheros de inicio de sesión en shell para que podamos invocarlo desde donde sea (o con un enlace simbólico, eso queda al gusto del consumidor :) )

Este es un ejemplo de como funciona:

ejemplo de rutaAlert

ejemplo de rutaAlert

Share

read more

verpmon script

verpmon script

Este script creo que es uno de los que mas he usado en los últimos años, y no porque sea imposible hacer las cosas sin el, que no es así para nada, mas bien es porque desde el momento en que te acostumbras a él, no puedes dejar de usar…

Si bien es cierto que cada vez que entro en un servidor de bbdd con varias instancias de oracle y donde sé que tendré que entrar en una y en otra instancia mas de una vez, lo primero que hago “en plan rapido” es definir este alias:

1
alias verpmon='ps -efa|grep _pmon|grep -v grep|cut -d "_" -f3'

Eso si, nada mas que tengo un poco de tiempo, lo afino un poco más para que sea mas rapido aun de usar…

Lo más facil es que si quieres ver los pmon de un servidor es que sea para, además de ver las instancias corriendo, ver el ORACLE_SID y definir la variable, asi que ¿No seria muy util que al mismo tiempo que vemos los pmon activos en el servidor nos escribiera la linea completa? Si, es cierto, parece que sea un tema de vagancia extrema, pero volvemos a lo mismo, si tienes una instancia, no tiene sentido usar este script, si tienes dos, podria ser excesiva tanta automatizacion pero si tienes muchas instancias, estas cosas son las que te permiten ganar mucho tiempo al hacer uso de ellas constantemente…

Veamos a que me refiero:

Preparamos el script:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
export lasInstancias=`ps -efa | grep ora_pmon|grep -v grep |awk '{split($0,a,"ora_pmon_"); print a[2]}' | grep -v print`
echo -e "Estos son los pmon activos en la maquina...: \n"
ps -efa | grep _pmon | grep -v grep
echo -e "\n\nLineas para el copy/paste:\n"
for instancia in $lasInstancias
do
echo "export ORACLE_SID=$instancia"
done
echo -e "\n\n"

 

Bien, lo guardamos y creamos el correspondiente alias apuntando  a el, y lo guardamos en el entorno de la shell:

1
echo "alias verpmon='/ruta/al/script/verpmon.sh'" >> $HOME/.bashrc

Ok, ahora cada vez que lancemos:

verp + tabulador + intro… nos apareceran en pantalla todos los pmon activos tal y como aparecian siempre que haciamos el ps correspondiente PERO ahora justo debajo de estos procesos, tendremos varias lineas, una por cada pmon, con la expresion “export ORACLE_SID=” + cada pmon.

Si a esto le sumamos que al hacer doble clic en la linea, no solo nos la selecciona sino que nos la deja copiada en el buffer y con otro toque de raton (Boton izq si es en putty, boton central si es fisicamente en el server) ya la podemos pegar… el resultado es que cambiamos de bbdd, exportando el sid, en 4 toques de teclado y 3 pulsaciones de raton… una vez más lo diré… si al cabo del dia cambiamos de instancias 20 veces…. se ahorra un tiempo enorme.

Tambien es cierto que si siempre tenemos X instancias, es posible que nos interese crear un script por cada una para cargar todas sus variables, pero tiene el inconveniente de que necesitan un mantenimiento, tanto si se elimina la instancia como si se añaden nuevas… con este script y el rutaAlert, citado en otro articulo, estos problemas desaparecen por completo.

Un ejemplo, de la salida del verpmon:
Ejemplo de uso de verpmon

Ejemplo de uso de verpmon

Share

read more

Configurar el scroll con iTerm2 y GNU Screen

Configurar el scroll con iTerm2 y GNU Screen

Uno de los mejores inventos de software, cuando te acostumbras a usarlo, es Gnu Screen (A partir de ahora lo llamare solamente Screen). Si eres como yo, que uso continuamente la shell y no conoces screen, te lo recomiendo encarecidamente, te permite hacer muchas cositas interesantes que hacen la vida mas fácil y porque no, elegante (Si, hay soluciones elegantes incluso para la shell :) )… pero estas lineas no son para hablar de las bondades de Screen sino para indicar como configurar una función que por defecto no me ha funcionado en el Mac con la combinación de iTerm2 y Screen: el scroll vertical.

Al principio pasaba sin el… pero reconozcámoslo, es una faena, por ejemplo: tener que lanzar un segundo ls porque lo que querías ver se ha quedado una o dos lineas fuera de pantalla, o incluso visualizando un fichero con cat…. o con otra cualquiera de las miles de situaciones a las que te empuja el hecho de no tener el scroll vertical asi que me puse a investigar un poco y he dado con la solución que es la siguiente:

Lo primero que deberemos hacer es tener en el  fichero .screenrc la configuración para tener scroll con diferentes tipos de terminal. Para ello debemos añadir alguna linea pero ya que tenemos que editar el fichero, os dejo mi configuración de Screen en la cual ponemos ver dos bloques:
– Las primera 3 lineas son para que se muestre la barra de “pestañas” en la parte inferior de la pantalla, con algo de información.
– Las ultimas 3 lineas son las que permiten tener el scroll.

1
2
3
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %d/%m %c "

term xterm-256color
defscrollback 1000
termcapinfo xterm|xterms|xterm-256color|vt100|xs|rxvt|rxvt-cygwin-native ti@:te@

La 1era de las 3 ultimas lineas:

1
term xterm-256color

Solamente esta cambiando el tipo de terminal que usaremos en screen. Por defecto, si hacemos desde screen:

1
echo $TERM

Nos mostrara que tenemos una terminal llamada screen, sobre la cual no tenemos ninguna configuración internaste, ni es muy y estándar que digamos asi que lo primero que deberíamos hacer es cambiarla y ya puesto la xterm-256color es muy competente y con bastantes colores, que sea una SHELL no significa que tenga que ser un castigo en monocromo o con varias tonalidades de tortura en verde y negro.

La 2da linea:

1
defscrollback 1000

Indica el numero de lineas que se podrá retroceder haciendo el scroll.

Y para finalizar, la linea que de verdad hace lo que queremos hacer:

1
termcapinfo xterm|xterms|xterm-256color|vt100|xs|rxvt|rxvt-cygwin-native ti@:te@

 

Habilita el scroll sobre varias terminales, no solo sobre xterm-256color que es la que hemos indicado que usaremos sino sobre unas cuantas mas, así esta linea me sirve en varios sistemas mas, incluido CYGWIN, de hecho, lo que suelo hacer en otros sistemas en copiarme el fichero $HOME/.screenrc tal y como os lo he mostrado hace unas lineas para tener el screen configurado.

Bien, llegamos a este punto es cuando probáis la configuración y ZAS! No funciona!! Aun nos falta una parte, tenemos que hacer un par de pequeños cambios en la configuración de iTerm2:

 

Preferencias de la app iTerm2

Preferencias de la app iTerm2

Tendremos que, obviamente, abrir iTerm2, sus preferencias y situarnos en PROFILES para poder después visualizar la pestaña TERMINAL.

Una vez en dicha pestaña, marcaremos  las dos opciones que aparecen bajo el textbox de “scrollback lines” el cual aprovechando el momento, podremos modificar también para que sean el mismo numero de lineas que hemos indicado en el fichero de configuración del Screen. Tras estos cambios solo nos quedaría indicarle también a iTerm2 que la terminal será del tipo xterm-256color y estada todo listo.

A partir de este momento, cuando use screen, tendrá el tan apreciado scroll vertical, además de las otras opciones de screen que hemos habilitado si no tenia ya.

 

Share

read more

Auto comprobador de ios 7 con SIKULI

Auto comprobador de ios 7 con SIKULI

Hoy es dia 18 de Septiembre de 2013 y dicen las malas lenguas :) que IOS7 sale hoy. He mirado hace un rato y no era asi, como no tengo muchas ganas de quedarme aqui embobado apretando un botón para ver si hay o no update he recurrido a mi imaginación.

Hace ya tiempo, trabaje con un proyecto muy interesante llamado SIKULI que es un IDE de programacion PERO basado en imágenes, si si, como suena, tu le dices, en esta ventana… tomas una captura de la misma, haces clic aquí… y haces captura del boton. A eso le han sumado un simple lenguaje de programación pero, si ya estas intentando pasar del articulo, no te asustes que es un entorno realmente simple, tanto como:

1
2
if exist(AQUI_VA_UNA_IMAGEN):
click(Aqui_va_la_imagen_del_boton)

El codigo se parece bastante a es python (Python scripting is well supported by the SikuliX-IDE (more scripting languages to come)), asi que es bien sencillo. Ahora que ya sabemos que usar, simplemente vamos a añadir el resto de ingredientes: el iTunes y, en mi caso, el VLC. Te preguntarás ¿¿porque?? Pues bien, por varias razones: no tengo musica a mano solo un capitulo de True Blood en formato no iTunes :)

Para preparar bien el entorno, dejamos abierto el VLC a un lado y el itunes con la ventana de informacion del telefono abierta. Tened en cuenta que la app podría estar cerrada y nosostros programar que se abra, pero he querido hacerlo en 2 min… y lo he conseguido. Al tema…

Instalamos sikuli: sikuli-setup.jar (La web es: http://www.sikuli.org)

Una vez instalado abrimos itunes y lo dejamos con la parte donde aparece el botón “buscar actualización” visible

Abrimos VLC, cargamos una peli o cancion o lo que queramos

Insisto, nada de esto es necesario. Se podria hacer desde SIKULI, solo lo hago asi por ganar tiempo.

Y con los ingredientes, imagino que ya sabeis cual es el plan :)

Si le damos al botón “buscar update” y nos sale el cartelito de que no hay, nada.

Si no sale ese cartel, se pone a reproducir el capitulo de True Blood a todo volumen para avisarme.

Tiene que ser un bucle, mientras salga el cartelito de que no hay update… debe volver a ejecutarse (Hay que meter una espera de 10seg por lo menos para no agobiar a nadie :) )

y comenzamos a programar en SIKULI… a la izq tenemos algunas de las ordenes basicas, podeis jugar con la orden click para ver como es el sistema de las capturas… para probar las creaciones, hay una opcion que es reproducir a camara lenta.

Si quereis complicaros, teneis la docu en la pagina oficial…

Este es el codigo que estoy usando… la verdad no se si funciona completamente, al menos hasta que salga la actualización :) SI FUNCIONA, a la 3era ejecucion seguida he visto que continuaba lanzado y me fui a cenar. No pasaron ni dos minutos y True blood comenzo a sonar a todo volumen… BINGO!!! update detectado :)

 

Script de sikuli

Script de sikuli

 

Aunque se pueden guardar los scripts e incluso lanzarlos desde la linea de comandos, en este caso no os lo voy a facilitar… es demasiado simplón y uno tiene su amor propio… de hecho lo publico porque me parece algo curioso y que seguro no sabíais :)

Ahora ya teneis todo… a Sikuliar (o como se diga) que yo me voy a cenar tranquilo sabiendo que si sale el update el ordenador comenzará a reproducir el capitulo a todo volumen!!

PD: En la seccion de ejemplos de la web hay verdaderas obras de arte hechas con sikuli… desde un script para jugar al bejeweled hasta descargas masivas de ficheros… y un sinfín de cosas mas… insisto, probadlo que no os arrepentiréis.

 

Share

read more

MiniTip: Buscar con find desde una fecha y hora concretas

Hoy voy a postear un minitip que pensé que conocia más gente pero estoy viendo que no es así: La forma de buscar con find, desde una fecha u hora determinadas.

Una de las carencias que nos podemos encontrar con la orden find en los sistmemas *nix (Linux y OsX incluidos) es que si nos disponemos a buscar desde una fecha determinada nos llevaremos un chasco puesto que comienza a contar dias atrás desde las 00h no desde la hora actual. Más grave aún, si queremos hacerlo desde una hora determinada ya que no nos los permite de niguna manera… bueno, miento, hay una que si nos permite y con la exactitud que queramos incluso en segundos.

Para realizarlo, hay que hacer algun paso extra pero como vereis ahora, son muy sencillos. Estos son los pasos que vamos a realizar:

– Creamos un fichero con la fecha y hora desde la que queramos buscar

– Invocamos el find con el argumento -newer (A este argumento hay que pasarle un fichero del cual tomará como referencia minima, la hora y la fecha que tenga)

Así pues con este paso extra, podremos decirle desde cuando queremos buscar y ahora que ya sabemos lo que vamos a hacer… hagámoslo!!

 

 

1
2
3
4
# Primero creamos el fichero pasando el tiempo en formato timestamp (Año mes dia hora minutos . segundos)
touch -t 201309021810.00 fichero_ejemplo
# Y ahora le pasamos el parámetro -newer a find con el fichero creado como punto temporal
find . -type f -newer fichero_ejemplo # Añadiendo -type f, solo mostrará ficheros

Si por el contrario, lo que queremos es que los resultados sean anteriores a la fecha dada, es decir, más viejos, no, no es older, no existe un argumento older, que seria lo lógico sino que habria que negar el argumento -newer, y ¿como se negaba en informática? con el signo de cerrar admiración “!”. Veamos el ejemplo contrario:

1
2
# Para buscar ficheros más viejos que la fecha y horas facilitadas en el fichero seria:
find . -type f ! -newer fichero_ejemplo

Y ya está… con esto encontrareis cualquier cosa :)

Share

read more
Plugin creado por AcIDc00L: noticias juegos
Plugin Modo Mantenimiento patrocinado por: posicionamiento web