lunes, 31 de diciembre de 2012

Hackers & Developers Especial de fin de año

No acostumbro a poner descargas de revistas en el sitio,de hecho no se porque no lo hago,ya que hay muchas revistas sobre este tema muy interesantes,pero esta en especial me ha impresionado bastante con los temas que tratan,desde el numero 0.

Como seria en una array de perl :D


En este caso me encuentro con el especial de fin de año N°2
,muy muy interesante:


Los temas/artículos son:



Descarga en el enlace de abajo:
hdmagazine.org

Desde Tiempo de Tux un saludo hdmagazine.org
Leer más...

Funciones de cadena Python 3.3

Me he decidido a en vez de hacer una linea de tutoriales como los de bash:

Enlace
Hacerlos como los de Perl:

Meter todo tipo de información sobre python en el blog y hacer un sitemap sobre el tema

Enlace
Así serán mas de provecho para programadores experimentados y nuevos.


Bien,en Python tenemos muchas funciones de cadena que nos serán de mucha utilidad cuando queramos crear algo,algo desde un simple programa de consola o hasta un programa de miles de lineas con GUI,ya que la programacion de sistemas operativos se basa en texto y lenguajes como python tienen mucho poder para procesar este,voy a poner un ejemplo sencillo para que vean lo que vamos a aprender en esta entrada:

En el mundo de la programación me he dado cuenta,que sea el tutorial que sea,de la pagina,escuela,libro que sea usan algoritmos básicos para el entendimiento,los algoritmos son soluciones y estos pueden ir desde el clásico programa para medir calificaciones de estudiantes,a crear una caja registradora,programas para administración de bases de datos(con o sin GUI),etc y aquí voy a colocar uno de los mas básicos que he visto:

Pregunta el nombre entero país y lo convierte como debe ser(mayúsculas minúsculas):

Enlace
Lo que hace es claro,ejecuten ya que es difícil de explicar pero básico lo que hace.

Lo explico:


import os

def clear():
    os.system('clear')

Esto solo es para usar el comando clear del sistema(consola),no es necesario y lo veremos después

clear()

esto llama la función que limpia del sistema(consola) tampoco entra en el tema en este momento.


nombre = input("Nombre: ")
apellido = input("Apellido: ")
pais = input("Pais: ")
edo = input("Estado: ")

Definimos nuestras variables,estas las definimos desde input(entrada del teclado)


print ("Nombre: ", str.capitalize(nombre))
print ("Apelllido: ", str.capitalize(apellido))
print ("Pais: ", str.capitalize(pais))
print ("Estado: ", str.upper(edo) )

Imprimimos las variables,aqui lo importante es lo que pinte de verde,son las funciones de cadena:

str.capitalize(cadena)

Convierte la primera letra de la cadena a mayúscula.

str.upper(cadena)
Convierte toda la cadena a mayúsculas.

Y eso es lo que veremos en este tutorial :D


Las cadenas las he modificado directamente desde donde esta el comando print,ya que también le podemos pasar el valor a una variable,por ejemplo en vez de hacer

cadena = "Mi cadena"
print (str.upper(cadena))

Podemos hacer

cadena = "Mi cadena"
cadet= str.upper(cadena) # cadena convertida

print (cadet) # llamamos la cadena ya convertida

Vean/ejecuten este script


#!/usr/bin/env python

cadena = "Hola Mundo"
print ("Mi cadena es:",cadena)

cadet = str.upper(cadena) # cadena convertida
print ("Convertida: ",cadet) # llamamos la cadena ya convertida

Segun la documentacion oficial de python,dice que se ejecuta la funcion de esta manera:

str.funcion(cadena)
str hace referencia a string,como int a integer

En este caso de capitalize y upper también se puede usar

cadena.funcion()
Por ejemplo:

#!/usr/bin/env python

cadena = "Hola Mundo"
print ("Mi cadena es:",cadena)

cadet = cadena.upper() # cadena convertida con otra sintaxis
print ("Convertida: ",cadet) # llamamos la cadena ya convertida


Bien de momento solo hemos usado dos funciones,pero hay muchas:

len()

Regresa el numero de palabras de la cadena(los espacios los toma como longitud también)

cadena = "1234 67890"

print (len(cadena))


endswith()

Devuelve valor verdadero o falso dependiendo si se cumple la condición

Condición: Que encuentre parámetro en terminación de cadena:

#!/usr/bin/env python

cadena = "Mi cadena"

if cadena.endswith("na") == True:

print ('Es True se encontró "na" en cadena ')
else:
print ("Es false")


startswith()

Contrario a endswith

#!/usr/bin/env python

cadena = "Mi cadena"

if cadena.startswith("na") == True:

print ('Es True se encontró "na" en cadena ')
else:
print ("Es false")


count()

Devuelve el numero de coincidencias encontradas en cadena:

#!/usr/bin/env python

cadena = "Mi cadena 1 cadena 2 cadena 3 cadena 4"

print (cadena.count("cadena"))



lower()

Devuelve la cadena convertida en minúsculas(toda)

#!/usr/bin/env python

cadena = "MI CADENA"

print (cadena.lower())

upper()

Contrario a lower

#!/usr/bin/env python

cadena = "mi cadena"

print (cadena.upper())


capitalize()

Devuelve la cadena con la primera letra convertida a mayúscula


#!/usr/bin/env python

cadena = "mi cadena"

print (cadena.capitalize())


replace(,)

Remplaza el parámetro especificado el numero de veces sobre la cadena


#!/usr/bin/env python

cadena = "mi cadena"

# Todas las coincidencias

print (cadena.replace("a","o"))

# Solo una (de izquierda a derecha)

print (cadena.replace("a","o",1))

split[]

Convierte nuestra cadena en lista y devuelve el valor convertido en lista


#!/usr/bin/env python

cadena = "mi cadena"

lista = cadena.split()

print (lista)

También podemos cortar una parámetro del valor indicado:

#!/usr/bin/env python

cadena = "mi cadena"

lista = cadena.split("i")

print (lista[0])

join[]

Similar a split pero diferente

¿? XDDD

Convierter una lista en cadena y le pasa un valor,en vez de quitarlo,se parece a split porque hace lo contrario,pero se define diferente:

#!/usr/bin/env python

lista = ["mi", "lista","o se llaman","array ?"]

parametro = '< ^ >'

lis = parametro.join(lista)

print (lis)

isnumeric()

Devuelve valor True si todos los parámetros de la cadena son numéricos

#!/usr/bin/env python


cadena = input("Escribe solo numeros: ")



if cadena.isnumeric() == True:

print ('Es True bien :P ')
else:
print ("Es false dije solo numeros :(")

isalnum()


Devuelve valor True si todos los parámetros de la cadena son alfanuméricos

O sea no #$%&

#!/usr/bin/env python

cadena = input("Escribe los parametros: ")

if cadena.isalnum() == True:

print ('Es True bien :P ')
else:
print ("Es false :(")

isalpha()

Si todos los caracteres son alfabeticos


#!/usr/bin/env python

cadena = input("Escribe los parametros: ")

if cadena.isalpha() == True:

print ('Es True bien :P ')
else:
print ("Es false :(")

Igual con 

isdecimal()

Si hay decimales en cadena

isdigit()

Si hay dígitos en cadena

islower()

Si toda la cadena esta en minúsculas

Falta mucho,pero eso es lo mas usado,por lo menos que yo uso y he visto que usen

Nota: Chequen que este id entado el código,para que les funcione:


De preferencia no hagan copy & paste

Para entender mejor el funcionamiento

Si tienen un comentario o aporte de cuales funciones de strings usan,adelante
Mas info en : docs.python.org

Leer más...

domingo, 30 de diciembre de 2012

Mejores repos para Cydia 2013

Ya se hizo costumbre poner cada año las mejores repos de cydia,bueno solo dos años (lo que lleva el sitio) y este no sera la excepción,en el 2013 se vienen muchas cosas para el iOS,con la llegada de la iPad mini en 2012,el iOS 6,la separación de las apps de Google del iOS,el iPhone 5,etc y ademas el Jailbreak para iOS 6,que es lo que necesitaremos para usar las repos que voy a mencionar:



Estas repos son para iOS 5 & iOS 6

sinfuliphonerepo.com


ihacksrepo.com


ihackstore.com/repo


apt.if0rce.com

cydia.xsellize.com/ 


iphoneame.com/repo


repo.hackyouriphone.org


IOS-5.myrepospace.com 


cydia.iphonecake.com/ 

iphonefacil.org/repo/ 

Si conocen mas,o una no funciona comenten :D

Leer más...

sábado, 29 de diciembre de 2012

Tutorial scripting python 3.3 desde Unix


Comenzaremos los tutoriales para programar en python versión 3.3,como saben si son seguidores del sitio hace un tiempo realice algunos tutoriales sobre python,estos los cancele por algunas cuestiones y me disculpo por ello.

En esta ocasión daremos un repaso rápido a lo que ya habíamos visto en python 2.7 así que si no tienes ni idea de programación estos tutoriales te servirán para adentrarte en el mundo de programación y python en si,ya que los haré los mas explicados posible y he habilitado todos los comentarios para que puedan comentar con la cuenta que tengan y sin cuenta,por si tienen algún aporte o duda.

Como dije daremos un repaso a lo que ya habíamos visto en python 2.7,como si no hubiese otros tutoriales de python.

Hola Mundo

Explico que es hola mundo,hola mundo es el primer programa/script que creamos en nuestro lenguaje de programación en lo que consiste este grandioso programa es en imprimir hola mundo en la pc,en algunos casos desde la consola y en otros desde una ventana.

En este caso como es introducción,lo haremos desde la consola usando scripting

Uno, ver que versión de de python tenemos

python -V

Ahora teniendo la versión 3.x comenzamos

Nota: Yo tengo una distro RR y trae python 3.x por defecto,ubuntu 12.10 por ejemplo trae python 2.7 y 3.x


Primero que nada debemos ver donde esta el interprete(python)

En terminal

which python

La salida sera algo como esto

/usr/bin/python
Si python -V no muestra 3.x,puedes buscar python 3 así

which python3
Y la salida sera algo como esto:


/usr/bin/python3

Usa esta ruta para lo de bajo.

Si aun así no sale python 3.x es porque no lo tienes instalado

En ubuntu 12.10:






En Archlinux :




Tomaremos la salida y le agregaremos #! y env,que quede así

#!/usr/bin/env python
O
#!/usr/bin/env python3 

Con #! llamamos el interprete(python)

Y con env ?

Si vamos a programar en serio,vamos a usar nuestro script en distintos sistemas(en este caso tipo Unix) y no todos tienen la misma (como yo le digo arquitectura[no me refiero a x64,x86,etc],me refiero a en que rama(carpeta) guarda el interprete ) ruta del interprete

Por ejemplo en FreeBSD

/usr/local/bin/python

Y con env busca python

Ya que env es un ejecutable y con añadir python después de el estamos diciendo que busque python

Es lo mismo que escribir en la consola

env python

Y también podemos buscar env(este ejecutable si siempre en /usr/bin)

which env

Así que siempre que inicies un script usa #!/usr/bin/env python

En este caso de preferencia

#!/usr/bin/env python3
Por si no es la versión que tienes por defecto

Ahora otra practica que se usa es asignar la codificación del script en mi caso no lo uso,pero si se necesita investigar al respecto.

Ahora si Hola Mundo:

Lo que acabamos de hacer es para hacer uso de scripting,ya que python tiene una consola en la cual podemos usar los comandos que veremos solo escribiendo python en la terminal,la cual no veremos,ya que estos tutoriales están dedicados al scripting.

Como mencione Hola mundo se basa en imprimir texto en la pc,en este caso la consola y el comando que se usa en python para hacer esto es print:

En python 3.3 debemos encerrar entre () lo que queremos imprimir y el texto "":

print ("Hola Mundo desde Python 3.3!!!")

Script :

#!/usr/bin/env python

print ("Hola MUndo desde Python 3.3!!!")

Recuerden que si python 3.x no esta por defecto en /usr/bin/python hagan asi el script:


#!/usr/bin/env python3

print ("Hola MUndo desde Python 3.3!!!")



Los scripts son linea de ordenes en un archivo con extensión .py,asi que para usar ese gran programa solo escribanlo en un archivo de texto y guárdenlo con extensión .py

Hay dos formas de ejecutar:

1.Si no tiene el hashbang/shebang se puede usar así:

python script.py

2.Si tiene hashbang se ejecuta de esta manera

Le damos permisos de ejecucion:

chmod +x script.py

Y lo ejecutamos asi:

./script.py

3.En mi caso yo lo ejecuto asi

python script.py
o

python3 script.py

Aunque tenga hashbang,esto para no perder tiempo en darle permisos de ejecución y dárselos hasta que este listo para usarse y compartirse.

Así que lo ejecutamos

python holamundo.py

Variables :

Las variables son fundamentales en los lenguajes de programación son asignaciones de valores que varían estos valores pueden ser números letras u otras cosas,las variables se definen con el símbolo = y con una palabra clave la cual no puede ser un comando del sistema:

En el caso de texto,llamado cadena o string debe ir encerrado en "" o '' para que se defina como cadena

Vamos a definir una variable llamada cadena con el valor de string "Mi cadena":

cadena = "Mi cadena"

En el caso de números sea enteros o de punto no debe ir en modo string(encerrados en "") debe ir libres de esta característica:

Vamos a definir dos variables de números una llamada numero y otra punto con valores 10 y 10.5:

numero = 10

punto = 10.5

Eso es todo lo que necesitamos saber sobre variables(de momento).

Ahora llamarlas,las variables son leídas por el interprete,pero no serán mostradas/ejecutadas hasta que sean llamadas de alguna manera, en este caso solo imprimiremos su valor en la consola:

#!/usr/bin/env python

cadena = "Mi cadena"
numero = 10
punto = 10.5

# < esto es un comentario,no lo toma en cuenta python
# Imprimiremos {

print ("Cadena: ",cadena)
print ("Numero: ",numero)
print ("Punto: ",punto)

# } Fin del script


Al ejecutar vean el resultado.

Yo defino/uso print de esta manera

#!/usr/bin/env python

cadena = "Mi cadena"
numero = 10
punto = 10.5

print ("Cadena: ",cadena,"\nNumero: ",numero,"\nPunto: ",punto)

Y obtenemos el mismo resultado,por que el símbolo \n quiere decir nueva linea.

Lo que también queda aclarar es las comas (,) esta coma usada de esta manera quiere decir también,por ejemplo en español diría:

imprime ("Cadena: " también variable cadena también "en nuevalinea Numero : también etc)

Vamos a hacer unas operaciones aritméticas:

No es difícil hacer esto,solo necesitamos los símbolos que se usan y no va a mas de lo que usábamos en la secundaria o tal vez primaria:

- resta

+ suma

% resto

/ division

* multimplicacion

// cociente

** potencia

Ahora vamos a ver un ejemplo

En un script escribimos:

print ( 1 + 1 )

Y imprime dos.

Igual en las otras operaciones,ahora vamos a definir el valor de nuestra operación desde la entrada del teclado con el comando input()

#!/usr/bin/env python

print ("Vamos a sumar dos numeros,definelos tu mismo")

numero1 = input("Escribe el numero uno: ")
numero2 = input("Escribe el numero dos: ")

# Podemos hacerlo de dos formas
# Forma uno desde variable {

suma = numero1 + numero2

# Lo llamamos

print (suma)

# } Fin de forma 1

# Forma 2 {

print (numero1 + numero2)

# } Fin forma2

Si ejecutamos el valor sera los dos juntos,por ejemplo si sumamos 10 + 10 el resultado sera 1010,esto se debe a que el valor que tomo fue desde input y este lo tomo como string, lo que debemos hacer es convertirlo a integer/entero como mencione (numero)

Pasando la variable a integer con el comando int desde otra variable:

#!/usr/bin/env python

print ("Vamos a sumar dos numeros,definelos tu mismo")

numero1 = input("Escribe el numero uno: ")
numero2 = input("Escribe el numero dos: ")

nume1 = int(numero1) # Pasamos el valor a entero
nume2 = int(numero2) # Las dos variables

# Podemos hacerlo de dos formas
# Forma uno desde variable {

suma = nume1 + nume2 # Ahora la operacion se hace sobre las nuevas variables

# Lo llamamos

print (suma)

# } Fin de forma 1

# Forma 2 {

print (nume1 + nume2) # Tambien aqui se realiza la operacion sobre las nuevas variables

# } Fin forma2

Ahora una nota importante,yo recomiendo que hagan esto desde un editor potente como kate,gedit o vim,si pueden usar un IDE también es recomendable,pero esto es mas que nada por que resalta la sintasix con colores y hace mas fácil el entendimiento, así que si pueden instalen,vim,kate,gedit:




Esto no es tan fácil ya que los programadores,coders,desarrolladores tenemos que ser analistas previsores,pensar en todo lo que puede ser un posible error o tan solo posible entrada,por ejemplo si nuestro numero es de punto (floating point) de punto flotante,debemos convertirlo a este formato:

Ahora con el operador float

#!/usr/bin/env python

print ("Vamos a sumar dos punto flotante,definelos tu mismo")

numero1 = input("Escribe el numero uno: ")
numero2 = input("Escribe el numero dos: ")

nume1 = float(numero1) # Pasamos el valor a flotante
nume2 = float(numero2) # Las dos variables

# Podemos hacerlo de dos formas
# Forma uno desde variable {

suma = nume1 + nume2 # Ahora la operacion se hace sobre las nuevas variables

# Lo llamamos

print (suma)

# } Fin de forma 1

# Forma 2 {

print (nume1 + nume2) # Tambien aqui se realiza la operacion sobre las nuevas variables

# } Fin forma2

Bien como vemos es sencillo,ahora vamos a ver estructuras selectivas

Estructuras selectivas

Las estructuras selectivas son caminos por donde ir,por ejemplo :

No vean el código,solo copien,ejecuten y vean lo que hace:

Desde ahora uso pastebin ya que necesita ir identado y puede que el formato de blogger haga que pierda el estilo de identacion(explico abajo)

Enlace

Aqui nos sirve este script ^ de dos formas:

1.Para ver como funcionan las estructuras selectivas,vimos que compara si el valor es igual a algunos de los que nos da y elige un camino por donde ir(Explicado mejor mas abajo)

2.Para ver como debe ir identado el código python ya que python es muy especial y ademas de que se ve mejor el código identado, lo usa para saber que usar,ya que no cierra su ciclo selectivo,por ejemplo Perl:

if (condicion) { # < Abre ciclo
# comandos
} # < Cierra ciclo

Y en python es asi

if condicion:
comandos

En lo personal me gusta mas como maneja los datos Perl :\

Ya que no requiere identacion y incluso podemos entrar a la competencia de codigo ofuscado,como por ejemplo el perfecto rectangulo de Just Another Hacker Unix Perl

Enlace

Que funcina O_O

Pero bueno vamos a seguir

En las estructuras selectivas hay que tener claro los comprobadores,porque se parecen a otros operadores, hay que tener muy claro esto:

= asignación

== comprobacion

Muy en claro,al igual que los demás:

< menor que  
<= menor o igual que  
> mayor que  
>= mayor o igual que  
== igual  
!= no igual
is objecto identificado  
is not  no identificado

Todo esto ^ lo podemos usar en las estructuras selectivas:

Pero antes si no conocen ningún lenguaje de programación,existen tres estructuras

En python son:

if,elif y else

Por ejemplo

if es si # Valor verdadero

elif es si,sobre otra condición # Valor verdadero

else es no sobre las otras comparaciones # Valor falso

Por ejemplo veamos este script:

Enlace

Como vemos podemos comparar muchas veces usando elif,pero solo una usando else,lo cual es bueno porque es algo que no es,ya que en español seria:

si es (if)

si es este, en vez (elif)

si no es ninguno (else)

Eso es todo por ahora,se me fue volando el tiempo y no vimos todo lo que vimos en tres tutoriales python 2.7,sera en otra ocasión :D

Eso es todo por ahora :D
Leer más...

martes, 25 de diciembre de 2012

Como compilar/empaquetar script's perl para Linux

Como saben o se abran dado cuenta por los tutoriales del sitio, yo le se algo algo a la programación perl,mi lenguaje de programación interpretado favorito,al poder crear script's rápidamente y al tener CPAN que,uff es un excelente lenguaje de programación aunque hoy en dia se esta usando mas PHP,Python o Ruby :(.

Aun así yo lo uso y me sirve para todo,desde programación web(que no acostumbro a usar),hasta aplicaciones de android,Linux/FreeBSD/WIndows,etc :D

Bueno el hecho es que los scripts .pl se pueden compilar,esto también podríamos llamarlo empaquetar,ya que agrega nuestros módulos que necesita el script y los empaqueta en un simple ejecutable,ejecutable para Unix y .exe para Windows.

Yo los ejemplos que he hecho no los he compilado,esto por dos razones:

1.Las distribuciones de Linux que uso son Rolling, y tienen lo mas nuevo,el problema es que si un modulo es mas reciente,por ejemplo Glib,otra distribución que no tenga la misma versión o superior no correrá el ejecutable, así que por ejemplo algún script que haga en Archlinux solo les funcionara en Archlinux o en un tiempo en otras distribuciones,cuando tengan las mismas versiones que mi sistema(me refiero a no menores que la mía  o sea igual o superior pero no menor.

2.Los ejemplos que hago son para demostración,como van a usar el código como ejemplo si esta compilado,ademas de que los hago con licencia GPL.

Así que veamos como hacer esto:


Tutorial

1.Instala PAR

su


cpan


install PAR
2.Instala pp(Perl Packager)


En mismo cpan

install pp

Listo ahora solo usamos esta sintaxis:

pp -o nombre_compilado script.pl
Por ejemplo:

pp -o simplePerlbrowser simplePerlBrowser.4.0.pl

Vídeo de ejemplo

Aquí muestro como ejecuto simplePerlBrowser en un sistema que no tiene instalados los módulos.



También pueden checar las dependencias de

 pp -x nombre_compilado

O crear un exe para Windows

pp -o nombre.exe script.pl

Muchas mas información en:

http://search.cpan.org/~rschupp/PAR-Packer-1.014/lib/pp.pm

En el vídeo no le hice cat al ejecutable,pero compilar también es ofuscar y esto seria lo que mostraría cat

Eso es todo :D
Leer más...

lunes, 24 de diciembre de 2012

Como instalar adobe flash player en openSUSE 12.2

Ya no habia hecho tutoriales de opensuse y me disculpo por ello,lo que pasa es que tenia openSUSE 12.1 con KDE funcionando muy bien y no tenia tiempo para actualizar,ya que al actualizar es mejor una actualizacion completa, y si borre 12.1 KDE por 12.2 Gnome Shell :D

Bueno el primer problema que tuve al instalar openSUSE 12.2 fue que queria ver un video de youtube usando firefox y no traia flash asi que lo instale y por eso este tutorial,como instalar adobe flash en opensuse para Firefox/opera/etc

Esto entra mucho en la competencia de software libre vs privativo y que gnash y HTML5,pero yo uso lo que necesite asi sea GNU o no(aunque suene como dicen troll,para mi no porque soy unixero no linuxero y me da igual el software) y para mi no hay mejor flash player que el de adobe y es bueno que se pueda instalar en cualquier distribucion de Linux a la cual ahora si no le podemos llamar GNU/Linux por traer software privativo y no ser totalmente software libre :( ,etc.


Nota:El software libre me ha ayudado mucho,en cuanto a usario y programador autodidacta,lo respeto y lo admiro,pero es muy desgastante estar tan cerrado a una filosofia.

Tutorial

1.Primero entramos a la shell de zypper

En terminal

sudo zypper sh


2.Refrescar repos

ref

2.Buscar e instalar adobe-flash



search flash

in flash-player

Y esperamos

Luego cerramos nuestro navegador y listo,ya no veremos ese molesto anuncio de que necesitamos adobe flash player

Eso es todo :D
Leer más...

domingo, 23 de diciembre de 2012

Tiempo de Tux te desea feliz navidad


Así es,llego una fecha muy "importante" del año, la navidad :D



Es una fecha de cruce de sentimientos,pensamientos y filosofías donde cada quien tiene su punto de vista sobre la misma,pero aun así  ha llegado y lo mejor que podemos hacer es pasarla bien,pasarla con la familia y sobre todo disfrutarla con los seres que amamos, así que desde Tiempo de Tux te deseamos una feliz navidad.

Leer más...

tbashconverter 1.3 script para convertir videos

Una vez mas actualice este script que programe que me ha funcionado mucho,de hecho tengo una suite de script's :D hechos en perl,bash,python y ruby algunos los he puesto como el descargador de vídeos de youtube de perl o el navegador web python[Qt]/perl[Gtk] y el escaner de puertos bash y otros.

Como dije este script sirve bastante,ya que siendo honesto muchos programas/scripts que hago solo los hago y los dejo tirados,por usar otros mas profesionales,y en esta caso no,es el único convertidor que uso :D

Bueno que añadí en esta versión:

Como ven es una versión nueva,ya que no es un arreglo a algún bug,si no que añadí nueva función.

Si nueva función,solo una :\

Lo que hace es que como esta basado en ffmpeg hice la GUI en zenity para fácil conversión,pero aveces estamos ya en la carpeta donde esta el video que vamos a convertir desde la terminal, así que añadí es nueva función:

Poder convertir vídeos desde linea de comandos,esto suena un poco tonto,ya que ffmpeg lo hace así nativamente:

ffmpeg -i video.mp4 video.flv

Y tbashconverter

tbashconverter video.mp4 
Por ejemplo abrimos necesitamos convertir un video

Abrimos terminal y escribimos

tbashconverter

Y nos aparece la GUI que solo tenemos que ir llenando(muy fácil)

Ahora la otra opción(nueva opción)


Ya estamos usando la terminal y estamos en la carpeta del video,para rápidamente solo escribimos

tbasconverter video

Y nos aparecerá una GUI similar a la otra

Suena raro,pero me paso y por eso lo programe :P

Y para que no sea mala practica esto, para que funcione sin problemas nuestro script,solo debe estar en /usr/bin con permisos:

-rwxr-xr-x 1 root root
Este es el código(use scripting un poco mas avanzado)

Enlace
Para usar solo:

1.Abren un editor

Y pegan el código


2.Lo guardan como tbashconverter en su Carpeta personal

3.Abren una terminal y teclean

sudo mv ~/tbashconverter /usr/bin/tbashconverter

4.Le dan permisos de ejecución

sudo chmod +x /usr/bin/tbashconverter

5.Listo escribe

tbashconverter 
Eso es lo básico si llevan un tiempo en Linux/Unix pueden usar su propia forma de ejecutarlo,ya que como saben no es la unica.

En la terminal :D
Leer más...

Expresiones regulares Perl Parte III/III

Esta es la ultima parte de estos tres tutoriales que tratan sobre como usar expresiones regulares en perl :(

Como dije y he dicho y seguiré diciendo Perl es un lenguaje muy potente y que sirve para todo,mucho de este poder viene de que es muy,muy potente para procesar y trabajar con texto,parte de este poder viene de las expresiones regulares y que también tiene parte de awk y sed.En este caso y en los tutoriales anteriores hemos aprendido que se puede procesar el texto de una manera sorprendente,pero, mientras mas o mejor queramos procesar o requerir algo sera mas complicado de especificar al interprete,por ejemplo:

Tenemos esta cadena de texto

Hola que tal me gusta programar :)

Y queremos eliminar la carita del final, o mejor aun queremos suplantar esa frase por

Hola que tal no me gusta programar

Como es un lenguaje de programación necesitamos usar muchos símbolos ya que en lenguaje "español" seria:

Cámbiame esto por esto.

Y ese es el propósito de estos tutoriales,aprender a leer y escribir código como si fuese nuestro lenguaje natural,como lo que dije de la carita no va a mas de esto:

my $cadena = "Hola que tal me gusta programar :)";

print "$cadena\n";

$cadena =~ s/tal/tal no/;

my @carita = split(/[:)]/, $cadena);

print "@carita\n";

Comencemos

Voy a usar la función split de arrays que no hemos visto pero sirve para cortar algo de una array o scalar y su sintaxis es simple:

my @array = split(expresión |palabra, $scalar);

Lo primero que  vamos a ver son las meta secuencias,las meta secuencias son expresiones que se añaden en la sintaxis de la expresión para poder hacer un filtrado/búsqueda mas especifico:

\d # Se usa para dígitos

Por ejemplo

my $cadena = "Hola 12345 < eso es un numero";

my @array = split(/\d/, $cadena); # Quitando los numeros

print @array, "\n";

\D # Contrario a \d

my $cadena = "Hola 12345 < eso es un numero";

my @array = split(/\D/, $cadena); # Dejando los numeros

print @array, "\n";

 \s # Quita espacios en blanco

my $cadena = "Hola 12345 < eso es un numero";

my @array = split(/\s/, $cadena); # Quitando espacios

print @array, "\n";

\S # Deja solo los espacios

Podemos usar

my $cadena = "Hola 12345 < eso es un numero";

my @array = split(/\S/, $cadena); # Quitando espacios

print @array;

\t # Cualquier tabulador

my $cadena = "Hola 12345          < eso es un tabulador";

my @array = split(/\t/, $cadena); # Quitando espacios del tab

print @array;

\w # Busca palabras y caracteres alfa-numericos,podemos pensar que es similar a \s,pero en este caso podemos usarlo en una estructura selectiva:

my $cadena = "&/()=?";

if ( $cadena =~ m/\w/ ){ print "Hay palabras en cadena\n"; }else{

print "No hay palabras en cadena\n"; }

\W # Contrario a \w

Hay mas,pero son los que mas se usan y que yo uso, así que no les puedo hablar bien de los otros,pero pueden googlear.

Caracteres de operadores

Como vimos en los dos tutoriales pasados existe m// y s///,ademas de tr/// que no hemos visto:

tr/// es una expresión de cambio,como s/// solo que mas propia,por ejemplo

my $nombre = "Damian";

$nombre =~ tr/a/e/; # El resultado es Demien

print $nombre;

Se llama operador de traducción y no lee variables dentro de la expresión..

Ahora si los operadores:

i # no reconoce mayúsculas o minúsculas

m # Reconoce varias lineas y las toma como solo una(ignora \n)

g # Recorre toda la cadena y trabaja todos los coincidentes

Estos tres símbolos van así en la sintaxis de la regex

m/palabra/i # m,g

Esto lo podemos usar en vez de pasar la string a la función de split de un array,por ejemplo yo hice:

my $cadena = "Hola 12345 < eso es un numero";

my @array = split(/\s/, $cadena); # Quitando espacios

print @array, "\n";

Y con estos operadores podemos "obtener el mismo resultado" así:

my $cadena = "Hola 12345 < eso es un numero";

$cadena =~ s/\s//g;

print $cadena;

Ahora sabiendo que son las meta secuencias, vamos a ver los cuantificadores,estos símbolos son caracteres especiales,los cuales usamos para un filtrado/búsqueda mas especial/exacta por ejemplo el cuantificador * parecido a la wildcard de Unix,nos sirve para verificar si hay algo o no

Como dije es similar a las wildcards de Unix:

my $cadena = "iPhone";

if($cadena =~ /\w*Phone/){ print "TRUE\n"; }
else { print "FALSE\n"; }

Checa si esta algo antes de Phone,por ejemplo

ePhone,aPhone,dPhone,loqueseaPhone

Y si lo encuentra da un valor verdadero,por lo cual usaríamos if en este caso

Podemos ver esto mas especifico cortando con split

my $cadena = "Tengo un iPhone2g";

my @array = split(/\w*Phone/, $cadena );

print "@array\n";

Deja solo tengo un 2g

Ahora veamos el {m,M}, lo que esta adentro de {} es m(menor),M(Mayor),
Este cuantificador nos da control sobre la veces o numero que queremos trabajar algo

Por ejemplo ejecuta este script:

#!/usr/bin/env perl

system("clear");

print "Escribe los numero que quieras: ";

my $cadena = <>;

chop($cadena);

if ( $cadena =~ /\d{3,6}/ ) { print "Hay entre 3 y 6 números o mas\n"; }
else { print "No hay entre 3 y 6 números\n"; }

Ahora sin limitaciones o especificaciones se usa este símbolo +,este símbolo quiere decir una o mas veces,por lo cual si indicamos por lo menos un numero dará un valor verdadero

#!/usr/bin/env perl

system("clear");

print "Escribe lo que quieras: ";

my $cadena = <>;

chop($cadena);

if ( $cadena =~ /\d+/ ) { print "Hay 1 o mas numeros\n"; }
else { print "No hay numeros\n"; }

Y lo podemos emplear con los otros operadores(\w,\s,etc)

Aquí un ejemplo mas grande,para que vean ,ejecuten y analicen

Enlace


Eso es todo :D


Falta mucho,pero de momento es una introducción,pueden checar mas información en:

http://www.troubleshooters.com/codecorn/littperl/perlreg.htm

http://perlenespanol.com/tutoriales/expresiones_regulares/

Leer más...

jueves, 20 de diciembre de 2012

Desplazamiento de parámetros en bash

Justamente estaba comentando en los comentarios  sobre el desplazamiento de parámetros que también podríamos llamar desplazamiento de argumentos, ya que son los argumentos que tomamos de la linea de comandos o rutinas(explico mas adelante), el hecho es que esta entrada no es un numero de nuestros tutoriales de medium scripting,solo es un tutorial que después implementaremos y como es sencillo lo haré rápidamente :D

Vamos a comenzar, como mencione en el tutorial de acá podemos hacer uso de parámetros/argumentos tomados desde la linea de comandos, por ejemplo:

Este color es mi shell($PS1):

(rivera@super-tux)-( bash mi_script.sh argumento1 argumento2

 Como vemos es sencillo y ya mencione como hacerlo

Tutorial
Ahora el hecho es deplazar los argumentos.

En la shell de bash existe un comando llamado shift que lo que hace es desplazar los parámetros de linea de comandos de derecha a izquierda:

parametro2 ocupa el lugar de parametro1 y 3,4,5 tambien se retroceden

Como?

Vamos a poner un ejemplo sencillo en un script:

Han visto los programas tipo consola que usan parametros (-a,-b,-h,-etc) este es un ejemplo de como se hacen esos programas:


#!/bin/bash

parametros="-t -h -p --help"

function ayuda {

echo " -t [Texto]  <Muestra texto>"
echo " -h          <Muestra Hostname>"
echo " -p [Sitio]  <Hace ping>"
echo " --help      <Muestra ayuda>"

}

function uso {

echo "Uso $0 $parametros";

}

if [ $# == 0 ]; then
    uso; exit 1;
fi

case $1 in
--help)
ayuda; 
;;
-t)
shift; echo $1;
;;
-h)
hostname;
;;
-p)
shift; ping $1 
;;
exit)
exit 1;
;;
clear)
clear;
;;
*)
uso;
;;
esac




Bien, el case/esac y el if/fi están explicados en el basic scripting, aquí lo que hay que mencionar es:


case $1 in
--help)
ayuda; 
;;
-t)
shift; echo $1;
;;.......

Como vemos toma como valor el $1 que es el primer parametro,luego lo compara como normalmente,pero cuando llega al comparador -t es cuando inicia la magia de shift:

Desplaza el parámetro $2 a $1 y el comando que sigue,que en este caso es echo toma el parámetro $1 que es el $2:

Ejecuten este script mal hecho(sin shift)


#!/bin/bash

parametros="-t -h -p --help"

function ayuda {

echo " -t [Texto]  <Muestra texto>"
echo " -h          <Muestra Hostname>"
echo " -p [Sitio]  <Hace ping>"
echo " --help      <Muestra ayuda>"

}

function uso {

echo "Uso $0 $parametros";

}

if [ $# == 0 ]; then
    uso; exit 1;
fi

case $1 in
--help)
ayuda; 
;;
-t)
echo $1;
;;
-h)
hostname;
;;
-p)
shift; ping $1 
;;
exit)
exit 1;
;;
clear)
clear;
;;
*)
uso;
;;
esac

El ejemplo es claro:

La orden que esta en case,ejecuta el mismo parámetro que usa case como valor(no lo cambia)



Pensando un poco,podemos darnos cuenta que en este ejemplo podemos tener el mismo resultado así:


#!/bin/bash

parametros="-t -h -p --help"

function ayuda {

echo " -t [Texto]  <Muestra texto>"
echo " -h          <Muestra Hostname>"
echo " -p [Sitio]  <Hace ping>"
echo " --help      <Muestra ayuda>"

}

function uso {

echo "Uso $0 $parametros";

}

if [ $# == 0 ]; then
    uso; exit 1;
fi

case $1 in
--help)
ayuda; 
;;
-t)
echo $2;
;;
-h)
hostname;
;;
-p)
shift; ping $1 
;;
exit)
exit 1;
;;
clear)
clear;
;;
*)
uso;
;;
esac

Como vemos en este ejemplo no es muy necesario shift pero implementandolo en otra cosa si, aquí un script que muestra el funcionamiento de shift para entenderlo mejor:

Copia y ejecuta:


#!/bin/bash

function dormir {

echo "Aguarde..."; sleep 5;

}

if [ $# == 0 ]; then 
echo -e "No hay parametros :( \nUso: $0 parametro1 parametro 2 etc"
exit 1;
fi

clear

echo -e "Misparametros: $# \nParametro 1: $1\nParametro 2: $2\nParametro 3: $3"

echo "Haciendo shift"; shift;dormir;

echo -e "Misparametros: $# \nParametro 1: $1\nParametro 2: $2\nParametro 3: $3"

No vean el script,vean lo que hace el script

Eso es todo :D


A no, me falta hablar sobre las rutinas:

En una no podemos usar estos parametros ya que toma propios

¿?

Que?

A lo que me refiero es que a una rutina, no podemos pasarle parametros desde linea de comandos,debemos pasarle desde el script

Por ejemplo

#!/bin/bash

#Definimos una rutina:

mi_rutina () {

echo $1
echo $2

}
# La llamamos
mi_rutina

Y ejecutamos así

bash mi_script.sh parametro1 parametro2

Como ven ejecuta echo,pero no imprime nada:



Si queremos pasarle un parámetro es desde el mismo script con esta sintaxis:


#!/bin/bash

#Definimos una rutina:

mi_rutina () {

echo $1
echo $2

}
# La llamamos

mi_rutina parametro1 parametro2



Pero si queremos usar argumentos globales podemos hacer mala practica esto:



#!/bin/bash

#Definimos una rutina:

mi_rutina () {

echo $1
echo $2

}
# La llamamos

parametro1=$1
parametro2=$2

mi_rutina $parametro1 $parametro2

Eso es todo





Leer más...