domingo, 31 de mayo de 2015

Programando en C# no. 5 ... System.Windows.Forms en Mono

En este post tan solo veremos como crear una ventanita usando System.Windows.Forms desde una aplicación C# (usando el compilador mono).

¿Por qué mono?
Porque me parece adecuado para quienes quieren aprender .Net sin necesidad de instalar Windows. 

¿Por qué no usar Wine para instalar Visual Studio .Net?
Porque siempre hay algún error al instalar dependencias en Linux, al menos así los he tenido. Creo que la mejor opción es siempre usar  Visual Studio desde Windows.

Hola.cs
using System;
using System.Windows.Forms;

public class Hola{
    public static void Main(string[] args){
       
        try{
           MessageBox.Show("Hola, estoy usando windows forms desde Linux");
        }
        catch(Exception ex){
            Console.Error.WriteLine("Error: ["+ex.Message+"]");
            Environment.Exit(0);
        }
    }
}


Compilar: mcs Hola.cs -r:System.Drawing.dll -r:System.Windows.Forms.dll

Ejecutar: mono Hola.exe

Salida:

sábado, 23 de mayo de 2015

¿Por qué Perl?


   Tal vez a muchos no les llame la atención el lenguaje de programación Perl, tal vez ni sepan que existe, o que ventajas o desventajas tiene con respecto a lenguajes como Java o Python. Sin embargo, considero que no se pierde el tiempo en conocerlo.

   Cuando recién iniciaba la carrera, los profesores recomendaban usar lenguajes como C para aprender los conceptos básicos de la programación. Conforme pasaba el tiempo hablaban de lenguajes o entornos de programación como Visual Basic o Delphi (Pascal) y según ellos eran los ideales para conseguir un trabajo. Después con el boom de las aplicaciones web, PHP se convirtió en el lenguaje más popular.

 

  Lenguajes como Java y C# comenzaban a tener más adeptos, así como entornos de desarrollo o IDES como Visual Studio, Eclipse y NetBeans. Nadie hablaba de lenguajes como Perl o LISP. Eso era del conocimiento de los más nerds de los nerds.

   La primera vez que escuche sobre Perl fue en un foro sobre trucos de programación (no recuerdo el nombre) y servidores,se recomendaba el uso de ese lenguaje si querías ser administrador de sistemas y base de datos (si de esos gorditos bonachones que saben un buen de cosas y que te dan un buen de soluciones a tus dudas de programación y de sistemas). Había interesantes scripts para la administración de servidores, detección de intrusos en red, y hasta para la recuperación de datos. Eso sí algunos scripts eran bastante complejos de entender.

   Pero a todo esto ¿por qué  Perl? ... con este lenguaje se puede hacer todo, desde las clásicas aplicaciones tipo consola hasta aplicaciones web. Incluso aplicaciones con interfaz gráfica. Es relativamente fácil de aprender si tienes familiaridad con lenguajes como C o PHP (de hecho este último se inspiro en el).

   No es la octava maravilla del mundo, tienes sus ventajas y desventajas como cualquier otro.


Update:
Larry Wall explica por qué Perl es parecido al lenguaje humano:
Links
http://trabajodeprogramacionperl.blogspot.mx/p/que-es-y-para-que-sirve.html

domingo, 17 de mayo de 2015

Programando en C# no. 4

En esta ocasión crearemos un programa que nos permita conectarnos a una base de datos MySQL desde C# (usando Mono).

Necesitamos lo siguiente:
  • Usar la base de datos "test" de MySQL
  • Crear una tabla llamada "persona"
  • Descargar la librería MySql para .Net

Tabla persona:
create table persona(id int auto_increment,nombre varchar(45),apellidoP varchar(45));

insert into persona(nombre,apellidoP) values ("Armando","Cadena"), ("Juan","Villa"), ("Maria","Estevez");

Una vez descargada la librería la instalamos (desde la terminal Linux):
sudo gacutil -i MySql.Data.dll

ConexionBD.cs

using System;
using System.Data;
using MySql.Data.MySqlClient;

public class ConexionBD{
    public static void Main(string[] args){
        string connectionString =
          "Server=localhost;" +
          "Database=test;" +
          "User ID=root;" +
          "Password=5432;" +
          "Pooling=false";
       IDbConnection dbcon;
       dbcon = new MySqlConnection(connectionString);
       dbcon.Open();
       IDbCommand dbcmd = dbcon.CreateCommand();
       string sql =
           "SELECT nombre, apellidoP " +
           "FROM persona"
;
       dbcmd.CommandText = sql;
       IDataReader reader = dbcmd.ExecuteReader();
       while(reader.Read()) {
            string FirstName = (string) reader["nombre"];
            string LastName = (string) reader["apellidoP"];
            Console.WriteLine("Nombre: " +
                  FirstName + " " + LastName);
       }

       reader.Close();
       reader = null;
       dbcmd.Dispose();
       dbcmd = null;
       dbcon.Close();
       dbcon = null;
    }
}



Compilación:
mcs Monaso.cs -r:System.Data.dll -r:/home/Codemonkey/Documentos/librerias/mysql-connector-net-6.9.6-noinstall/v4.0/MySql.Data.dll

Ejecución:
mono Monaso.exe

Links
http://www.monodevelop.com/documentation/

martes, 5 de mayo de 2015

Julia en ejemplos no. 3: Creando "clases"

Retomando los ejemplos de código en Julia en esta ocasión conoceremos como crear estructuras Type. Semejantes  a las clases de lenguajes como C, Python y Java.

 ¿Cómo creo una "clase"?
Con la siguiente sintaxis:

type Nombre_Tipo
  ...
  ...
end

Ejemplo. Crear una "clase" en Julia introduciendo valores  y mostrarlas en pantalla.

Definiremos entonces:
  • Una estructura Type con el nombre de "Objeto"
  • Un método llamado "propiedades"
  • Un método para mostrar las "propiedades"
  • Una función externa que nos permita introducir datos
 #la "clase" Objeto
type Objeto
    propiedades::Function
 

#constructor
    function Objeto()
        this = new()
 #método para imprimir valores
        function ObtenerDatos(altura::Int64,ancho::Int64,grosor::Int64)
            println("Objeto{alto:",altura,"ancho:",ancho,"grosor:",grosor,"}")
        end

        this.propiedades = ObtenerDatos

        return this
    end
end


#función externa para introducir datos
function entrada(prompt::String="")
   print(prompt)
   chomp(readline())
end

#bloque principal del programa
begin
    objeto = Objeto()#instancia
    altura = int(entrada("Introduce altura:"))
    ancho = int(entrada("Introduce ancho:"))
    grosor = int(entrada("Introduce grosor:"))
    objeto.propiedades(altura,ancho,grosor)
end


Ejecución del código: julia Clase.jl


Links
http://chrisvoncsefalvay.com/2015/02/14/types-and-inheritance.html
https://thenewphalls.wordpress.com/2014/02/19/understanding-object-oriented-programming-in-julia-part-1/