miércoles, 29 de febrero de 2012

Programación Batch


La programación en Batch no es muy popular realmente. Los desarrolladores web (backend o frontend) se enfocan más en otros lenguajes y herramientas. Sin embargo, existe una sección de éstos quienes deben crear scripts para automatizar tareas y crear algunas otras soluciones. Ya sea CMD (o BAT), Bash Linux o PowerShell. 

He aquí unos ejemplos  en bash MS-DOS:

Colocar variables
@echo off
set Nombre=Horacio Gomez
echo %Nombre%
pause


Imprimir por pantalla
echo algo

Cambiar el prompt
prompt mister_negativo:
mister_negativo:  


menu.bat
@echo off
Title Menu del sistema
color f0
cls
:miMenu
echo Menu
echo 1. Comprobar conexion a Internet
echo 2. Conectarse al servidor GlassFish
echo 3. Abrir administrador GlassFish
echo 4. Salir
echo Tu opcion es:
set /p opc=

if %opc%==1 goto :miConexion
if %opc%==2 goto :GlassFish
if %opc%==3 goto :conectarAGlassF
if %opc%==4 goto :salida

:miConexion
ping www.google.com.mx
goto miMenu


:GlassFish
cd C:\Users\alguien\glassfish3
cd C:\Users\alguien\glassfish3\bin
start asadmin


:conectarAGlassF
start firefox http://localhost:4848
goto miMenu

:salida
exit

Espero hacer más ejemplos.

Enlaces:

domingo, 12 de febrero de 2012

Scala IDE





Scala IDE
Ahora que tuve un poco de tiempo de probar varios lenguajes como: Scala, Ceylon, Clojure, etc. encontré este sitio Scala IDE http://scala-ide.org/

Se trata de un IDE (plugin) para crear programas en Scala desde Eclipse.

En Eclipse basta poner este link:




Y la verdad no pude evitarlo, quise probarlo con un código que hice en Groovy haber como quedaba:

object Horoscopo{

   def main(args: Array[String]){
      var resto=0;
      val anyos=List(1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012);
      var horos=""
      println("[Horoscopo chino en Scala]");
        for(val i <- anyos){
           resto=i%12
          
           if(resto==0){
              horos="mono"
            }
           if(resto==1){
              horos="gallo"
           }
          
           if(resto==2){
              horos="perro"
            }
           if(resto==3){
              horos="cerdo"
           }

           if(resto==4){
              horos="rata"
            }
           if(resto==5){
              horos="buey"
           }
          
           if(resto==6){
              horos="tigre"
            }
           if(resto==7){
              horos="conejo"
           }
           if(resto==8){
              horos="dragon"
           }

           if(resto==9){
              horos="serpiente"
            }
           if(resto==10){
              horos="caballo"
           }
          
           if(resto==11){
              horos="cabra"
            }
          
           println("si naciste en: "+i+" te corresponde el anyo del: "+horos)
          
         }
        
    }
}



Semejanzas con Groovy Python 

Horoscopo.groovy

def anyos=[1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012]
def resto=0
def horos=""
println "\t[Horoscopo chino en Groovy]\n"
for (int e:anyos){
  resto=e%12
  switch(resto){
  case 0:
                horos="mono"
                break
                case 1:
                horos="gallo"
                break
                case 2:
                horos="perro"
                break
                case 3:
                horos="cerdo"
                break
                case 4:
                horos="rata"
                break
                case 5:
                horos="buey"
                break
                case 6:
                horos="tigre"
                break
                case 7:
                horos="conejo"
                break
                case 8:
                horos="dragon"
                break
                case 9:
                horos="serpiente"
                break
                case 10:
                horos="caballo"
                break
                case 11:
                horos="cabra"
                break
  }



  println "Si nacistes en $e  te corresponde el signo: $horos "
}



Horoscopo.py

resto,i=0,0
horos=""
print "\t[Horoscopo chino en Python]\n"
for i in range(len(anyos)):
    resto=anyos[i]%12

    if resto==0:
        horos="mono"

    if resto==1:
        horos="gallo"

    if resto==2:
        horos="perro"

    if resto==3:
        horos="cerdo"

    if resto==4:
        horos="rata"

    if resto==5:
        horos="buey"


    if resto==6:
        horos="tigre"

    if resto==7:
        horos="conejo"

    if resto==8:
        horos="dragon"

    if resto==9:
        horos="serpiente"

    if resto==10:
        horos="caballo"

    if resto==11:
        horos="cabra"

    print "Si naciste en",anyos[i]," te corresponde el signo: ",horos






sábado, 11 de febrero de 2012

Ceylon IDE ...


Bueno con la novedad que tuve un poco de tiempo y quise probar el IDE de Ceylon (en Eclipse), pero al parecer tengo un gran problema.

Crear un proyecto Ceylon usando Eclipse

Nombrar el proyecto








Crear un paquete









Crear unidad Ceylon





Aqui surge un problema





No existe la unidad Ceylon. No sé cual sea el problema pero en cuanto logré encontrarlo y hallé la solución seguiré con el post.














miércoles, 8 de febrero de 2012

Scala… ejemplos sencillos


Variable de entorno
Agregarla al path


Ej 1. Hola mundo
object Hola extends App{
     println("¡Hola mundo, si ves esto ya funciona tu primer programa en Scala!");
  }
Compilar:
scalac Hola.scala
Ejecutar:
scala Hola



Ej 2. Introducir y mostrar datos
//introducir datos y mostrarlos
object Prog01 extends App{
  val nombre=readLine("Escribe tu nombre: ")
println(“”)
  printf("Hola %s",nombre)
  //se puede usar también println("Hola "+nombre)
  println("")
  println("Cuantos anyos tienes: ")
  val edad=readInt()
  println("")
  printf("tienes: %d anyos",edad)
  //se puede usar también println("tienes: "+edad+"anyos")
}
Ej 3. Mostrar variables: enteros, reales, cadenas y caracteres
object Prog02 extends App{
val entero=0; //puedes usar también var si deseas modificar su valor
val real=9.7
val cadena="Esto es una cadena"
val caracter=cadena.charAt(0)
println("entero: "+entero)
printf("entero: %d\n",entero)
println("real: "+real)
printf("real: %f\n",real)
println("cadena: "+cadena)
printf("cadena: %s\n",cadena)
println("caracter: "+caracter)
printf("caracter: %c\n",caracter)
}

Ej 4. Función que muestre la longitud de una cadena
object Prog03 extends App{
def obtenerLongitudMsg(msg: String){
  val ver=msg+"  la longitud es de: "+msg.length
  println(ver)
}
var miMsg="Hola usuario de Scala"
obtenerLongitudMsg(miMsg)
}
Ej 5.  Factorial de un número
object Prog04 extends App{
def obtenerFactorial(x: BigInt): BigInt={
  if(x==0) 1 else x*obtenerFactorial(x-1)
}
var num=5
println("El factorial de "+num+"  es: "+obtenerFactorial(num))
}
Ej 6.  Sumatoria del 1 al 10
object Prog05{
def main(args: Array[String]){
var n=1;
var suma=0;
println("Bucles en Scala");
while(n<=10){
 suma+=n;
 n+=1;
 println("suma: "+suma);
 println("n: "+n);
}
}
Ej 7.  Uso de diccionarios
object Prog10{
   def main(args: Array[String]){
     var diccionario=Map("El Negativo"->"Segun un programador","Jose"->"Psicomantis","Adela"->"Mi hermana","Catalina"->"La gata del hogar");
      println(diccionario("El Negativo"));
      println(diccionario("Jose"));
      println(diccionario("Adela"));
      println(diccionario("Catalina"));
   }
}

Ej 8.  Calcular movimiento
import java.lang.Math;
object Prog11{
  def main(args: Array[String]){
   var mov=0.0;
   var cont=0.0;
   var k2=0.2;
   var dt=0.5;
   var g=9.81;
   while(cont<50){
     cont+=dt;
     mov=Math.sqrt(mov*mov+k2*g*cont);
     println(""+mov+"  -->"+cont);
   }
  }
}
Ej 9.   Sumar caracteres de una cadena numérica
object Prog13{

  def main(args: Array[String]){
    var cadenaNumerica="543";
  
    println("Valor: "+cadenaNumerica+"\n");
    var i=0;
     var suma=0;
    while(i<3) {
        var caracter=cadenaNumerica.charAt(i);
        var cadena=String.valueOf(caracter);
      suma=suma+Integer.parseInt(cadena);
        i+=1;
    }
    println("Suma de los caracteres: "+suma);
    }
}
Ej 10. Clases
object Prog15{
class Persona(nombre: String, edad: Int){
def getNombre()=nombre
def getEdad()=edad
}
def main(args: Array[String]){
   def miObjeto=new Persona("El negativo",30);
   def otroObjeto=new Persona("El Positivo",25);
   println("Mi nombre es: "+miObjeto.getNombre())
   println("tengo: "+miObjeto.getEdad()+" anyos de edad")
   println("Mi nombre es: "+otroObjeto.getNombre())
   println("tengo: "+otroObjeto.getEdad()+" anyos de edad")
}
}

sábado, 4 de febrero de 2012

Graven: Crear proyectos con Maven y Gradle


En post anteriores ya había tratado sobre Gradle y Maven

Pero creo faltó hacer un ejemplo más completo.



1. Crear las variables de entorno


2. Agregarlas al path del sistema
%GRADLE_HOME%\bin
%M2_HOME%\bin
3. Comprobar instalación, en la terminal escribir:
gradle  –v
mvn  –v

pom.xml  (Maven) y build.gradle (Gradle)
Son archivos que sirven para describir y administrar las dependencias de nuestros proyectos.


Interfaz gráfica de Gradle

En la terminal o consola de comandos escribir: gradle -gui


Ayuda a probrar tus scripts, algo así como groovyConsole
Un script sencillo con Gradle
En un bloc de notas (notepad u otro) escribir:
//primer script
task Script01 << { println “Si ves esto ya funciona el script”
}
Guardarlo como: build.gradle
Ejecutar en la consola:
gradle build
Si sale un error es porque todavía no hemos agregado nada al proyecto
Crear una tarea simple
task Script01 << { println "Si ves esto ya funciona correctamente"}
Para ejecutar esta tarea simple
gradle –q Script01  
También se puede desde la interfaz gráfica
gradle –gui




Crear proyecto con Maven
Ir al directorio donde se quiere crear el proyecto
mvn archetype:create -DgroupId=org.proyecto.prueba01 -DartifactId=SistemaGraven -DarchetypeArtifactId=maven-archetype-webapp -Dversion=”0.0.1”
Otra forma
mvn archetype:create -DgroupId= org.proyecto.prueba01 -DartifactId=SistemaGraven

Crear el paquete:
mvn  package
Instalar:
mvn install
Agregar  la variable del repositorio local Maven
mvn –Declipse.workspace= “C:\eclipse\Workspace eclipse:add-maven-repo”

En  Eclipse comprobar en Java\Build path\Classpath variables si se ha dado de alta correctamente el repositorio de Maven
Importar el proyecto al Eclipse mediante el menú File\Import...\Existing proyect into Workspace..
Si existe algún error al importar el proyecto puedes entrar al classpath
y reemplazar la etiqueta:
por:
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>

Editar el fichero pom.xml...
Tal vez la parte más difícil del proyecto.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.proyecto.prueba01</groupId>
  <artifactId>SistemaGraven</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SistemaGraven</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Ahora  con Gradle

Al crear nuestro proyecto (“simple” o web) con Maven debe quedar la estructura de la siguiente manera:

SistemaGraven
src/main/java/prueba01
src/main/resources
src/test/java/prueba01
src/test/resources
pom.xml

Ahora agregar al directorio Sistemas el archivo build.gradle

SistemaGraven
src/main/java/prueba01
src/main/resources
src/test/java/prueba01
src/test/resources
pom.xml
build.gradle

Contenido del  build.gradle
//Esto es para usar el plugin de Gradle para Java
apply plugin:'java'
//Esto es para usar el plugin de Gradle para Eclipse
apply plugin:'eclipse'

//El plugin para Java define un montón de cosas, entre ellas varias tareas
//invocamos aquí la principal para compilar todo por default
defaultTasks 'build'

//En esta sección incluimos los repositorios de Maven
repositories {
  mavenLocal()
  mavenCentral()
}

//Aquí se definen las dependencias para cada configuración.
//Importamos jUnit solamente para la compilacion de pruebas unitarias
dependencies {
  testCompile 'junit:junit:4.+'
}

Desde la terminal escribir:
gradle build



La estructura del proyecto SistemaGraven queda asi:

SistemaGraven
src/main/java/prueba01
src/main/resources
src/test/java/prueba01
src/test/resources
pom.xml
build.gradle

build.gradle





jueves, 2 de febrero de 2012

Groovy… programando al estilo Java


Variable de entorno GROOVY_HOME como nombre y el valor la ubicación de la carpeta y agregarla al path del sistema.

Dentro del terminal escribir


GroovyConsole: para escribir, compilar y ejecutar tus programas



Ej. 1 ¿Cómo saber  que una cadena es numérica?
//definir una variable de tipo String
def miNumero=”3451”
static String esNumerico(String cad){
 if(!cad.equals(“”)){
try{
double numerico= Double.parseDouble(“cad”);
}catch(Exception ex){
return “no  numérico”;
}
return “numérico”;
}else{
return “no hay nada que evaluar”;
}
}
//invocar método/función
println(miNumero+”  es: ”+esNumerico(miNumero))
Ej 2. Sumar los caracteres de una cadena numérica
static int sumarCaracteres(String cad){
int suma=0
for(i=0;i<cad.length();i++){
char character=cad.charAt(i);
String cadena= String.valueOf(cararcter);
suma+=Integer.parseInt(cadena);
}
return suma
}

def minumero=”1342”

Ej 3. Introducir datos desde teclado en Groovy

import java.util.Scanner

class Entrada {
   
    static String inicio(){
        String cad="";
        Scanner teclado=new Scanner(System.in);
        try{
            cad=teclado.nextLine();       
        }catch(Exception ex){
            System.err.println("error: "+ex);
        }
        return cad;
    }
   
    static String cadena(){
        String cadena=inicio();
        return cadena;
    }
   
    static int entero(){
        int entero=Integer.parseInt(inicio());
        return entero;
    }
   
    static double real(){
        double real=Double.parseDouble(inicio());
        return real;
    }
   
    static char caracter(){
        String caracter=inicio();
        return caracter.charAt(0);
    }
   
   
    public static void main(String[] args){
    String cadenas=null
    int enteros=9
    char caracteres='e'
    double reales=9.5
    Entrada entrada=new Entrada()
   
   
      println("Introduce entero:")
      enteros=entrada.entero()
     
      println("Introduce real:")
      reales=entrada.real()


      println("Introduce cadena:")
      cadenas=entrada.inicio()


      println("Introduce caracter:")
      caracteres=entrada.caracter()

      
      
       println("Entero: "+enteros)
       println("Real: "+reales)
       println("Cadena: "+cadenas)
       println("Caracter: "+caracteres)
    }
 }