sábado, 22 de febrero de 2014

Programando en Ruby ... no. 3

¿Existe alguna forma para programar aplicaciones gáficas en Ruby?
Si, hay varias alternativas como http://visualruby.net/

¿Cómo instalarlo (en Linux)?
sudo apt-get install -y glade-gtk2 libgtksourceview2.0-dev gtk2-engines-pixbuf
sudo apt-get install ruby1.9.3-dev
sudo apt-get install ruby-dev
sudo gem install visualruby
#para ejecutarlo desde terminal escribimos:
vr

También existe para sistemas Windows.

Otras alternativas son:


Algunos ejercicios de programación básica en Ruby.


1. Sumatoria del 1 al 10
lista=[1,2,3,4,5,6,7,8,9,10]
suma=0

#con each
lista.each do |l|
  suma=suma+l.to_i
end

puts "Suma (each): #{suma}"

#con while
suma=0
cont=0
tam=lista.size
while cont<tam do
  suma=suma+lista[cont]
  cont=cont+1
end
puts "Suma (while): #{suma}"

#con until
i=0
num=lista.size
suma=0
until i>num
  suma=suma+i
  i+=1
end
puts "Suma (until): #{suma}"

#con for
suma=0
for l3 in lista
  suma=suma+l3.to_i
end
puts "Suma (for): #{suma}"

 2. Algunas formas para ejecutar comandos
#comando ls ,en Linux, para mostar el contenido de un directorio
comando='ls -ltr'
puts `#{comando}`
p "---------------------------------------------"
puts %x{ls -ltr}
p "---------------------------------------------"
puts `ls -ltr`
p "---------------------------------------------"

# comando date, para mostrar fecha del sistema
mi_comando= %x[date]
p mi_comando
puts mi_comando.class
p "---------------------------------------------"
# comando cal, para mostrar calemdario
otro_comando= system "cal"
p otro_comando #true
puts otro_comando.class#TrueClass

3. Clase en Ruby
class No_Terrestre

  def initialize(nombre)
    @nombre=nombre
  end

  attr_accessor :nombre

end

begin
  roger=No_Terrestre.new('Roger')
  puts "nombre: #{roger.nombre}"
  roger.nombre="Jonh Stwart"
  puts "ahora su nombre es: #{roger.nombre}"

  puts "nombre de la clase a la que pertenece: "
  puts roger.class
 

rescue Exception => e
  puts "Ha ocurrido un error"
end

Links

viernes, 14 de febrero de 2014

Python: Uso de PyZenity

¿Qué es PyZenity?
Es una librería creada por Brian Ramos que nos permite hacer uso de cuadros de diálogo Zenity.

¿Cómo puedo usar PyZenity?

  1. Descargar la última versión http://brianramos.com/software/PyZenity/PyZenity-0.1.7.tar.gz
  2. Desempaquetar
  3. Ir a la carpeta PyZenity
  4. Desde terminal teclear (como root): python setup.py install
  5. Entra al repl de Python tecleando: python 


Tendremos instalado PyZenity.


1. Una calculadora básica (solo funciona en sistemas Linux)

from PyZenity import InfoMessage
from PyZenity import Question
from PyZenity import ErrorMessage
from PyZenity import GetText
import os

x1, x2,res=0.0, 0.0, 0.0

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

menu='\t[ Menu ]\n1. Suma\n2. Resta\n3. Producto\n4. Division\n5. Salir'
opcion=GetText(text=menu, entry_text='', password=False)


if opcion == "1":
  cad="Suma"
elif opcion == "2":
cad="Resta"
elif opcion == "3":
cad="Producto"
elif opcion == "4":
cad="Division"
elif opcion == "5":
cad="Salir"
else:
cad="opcion invalida"


if cad == "opcion invalida":
ErrorMessage('Error, '+cad)
else:
InfoMessage('Introduciste: '+cad)

if cad=="Suma":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1+x2
InfoMessage('La suma obtenida es: '+str(res))
elif cad=="Resta":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1-x2
InfoMessage('La resta obtenida es: '+str(res))
elif cad=="Producto":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1*x2
InfoMessage('El producto obtenido es: '+str(res))
elif cad=="Division":
x1=float(GetText(text='Introduce un numero', entry_text='',password=False))
x2=float(GetText(text='Introduce otro numero', entry_text='',password=False))
res=x1/x2
InfoMessage('La division obtenida es: '+str(res))
else:
ErrorMessage('Error, '+cad)



if __name__ == '__main__':
main()










2. Crear una tabla
from PyZenity import InfoMessage
from PyZenity import List
from PyZenity import ErrorMessage
from PyZenity import GetText
import os
import sys
 
 
so,comando='',''
continuar=''
 
def lista():
return List(["Escoge","Autor","Lenguaje"], title="Selecciona un lenguaje", boolstyle="radiolist", editable=False, select_col="ALL", sep='|', data=[["","Guido","Python"],["","Gosling","Java"]])
    
def activa(c):
os.system(c)
#print lista()
res=lista()
print "Elegiste: "
print "Autor: ",res[0],", lenguaje: ",res[1]
 
continuar=GetText(text='Deseas continuar? [Si-> S,s , No-> N,n] ', entry_text='', password=False)
 
if continuar == "S" or continuar == "s":
main()
elif continuar == "N" or continuar == "n":
exit()
else:
exit()
 
 
 
def main():
so=sys.platform
if so=="linux2" or so=="darwin":
comando='clear'
else:
comando='cls'
 
activa(comando)
 
 
if __name__ == '__main__':
main()








Links
http://brianramos.com/?page_id=38
http://es.wikipedia.org/wiki/Zenity

domingo, 2 de febrero de 2014

Linux Bash ... no. 2

Zenity
Es una aplicación que nos permite usar componentes gráficos Gtk. Para instalarlo: sudo apt-get install zenity

¿Qué es Gtk?
Es un conjunto de librerías que nos sirve para desarrollar aplicaciones gráficas muy al estilo de Java Swing.

1. Introducir una cadena y mostrar el contenido (entrada.sh)
clear
NOMBRE=$(zenity --entry --text "Introduce tu nombre: ")
echo "Hola $NOMBRE"
zenity --info --text "Hola $NOMBRE"



Lo puedes ejecutar (debes darle permiso de ejecución) con: sh entrada.sh y/o  ./entrada.sh

2. Cajas de dialogo (elegir.sh)
clear
zenity --question --title="Se ha encontrado un error" --text "Seguro quiere reiniciar?"

RES=$?

if [ $RES -eq 0 ]; then
zenity --info --text "Elegiste reiniciar"
elif [ $RES -eq 1 ]; then
zenity --info --text "Elegiste NO reiniciar"
fi


Ejecutar: sh elegir y/o ./elegir.sh

Links:
http://blog.desdelinux.net/usos-practicos-de-la-caja-de-dialog-zenity/
http://bitelia.com/2010/04/comando-linux-zenity-ventanas-de-dialogo-gtk
http://es.wikipedia.org/wiki/GTK%2B
http://www.yolinux.com/TUTORIALS/GTK+ProgrammingTips.html

Groovy: comparativa con otros lenguajes ... no.2

En este post vamos a realizar un ejercicio muy sencillo de programación básica.

Un convertidor de dólares a pesos.

Iniciamos con Groovy:

static main(args){

//definimos la constante "CAMBIO"
def CAMBIO=13.3481
def dolar=System.console().readLine 'Introduce dolar:'
println "valor (usd): $dolar"
dolar=Double.parseDouble(dolar)
println "cambio (mxn): ${dolar*CAMBIO}"
}

En Python:
global CAMBIO
CAMBIO=13.3481
dolar=0.0
dolar=float(raw_input('Introduce dolares: '))
print "valor (usd): $",dolar
print "cambio (mxn): %f"%(dolar*CAMBIO)

En Ruby:
CAMBIO=13.3481
dolar=0.00
puts "Introduce dolares: "
STDOUT.flush
dolar=gets.chomp
dolar=dolar.to_f
puts "valor introducido (usd):$ #{dolar}"
puts "cambio (mxn): $ #{dolar*CAMBIO}"

En Perl:
use strict;
use warnings;
use constant CAMBIO => 13.3481;

my($dolar,$resultado);

print "Introduce dolares: \n";
$dolar=<STDIN>;
chomp($dolar);
print "valor (usd): $dolar\n";
$resultado=$dolar*CAMBIO;
print "cambio (mxn): $resultado\n";

En Scala:
object Scalar extends App{
val CAMBIO=13.3481
Console.println("Introduce dolares:")
var dolar:Double=readDouble
Console.println("valor (usd): "+dolar)

def resultado={
dolar*CAMBIO
}
Console.println("cambio (mxn):"+resultado)

}
En Bash:
clear
CAMBIO=13.3481
echo "Introduce dolares: "
read DOLAR
echo "valor (usd): $DOLAR"
RESULTADO=`echo "$DOLAR * $CAMBIO" | bc -l`
echo "cambio (mxn): $RESULTADO"