miércoles, 27 de abril de 2011

Creando un compilador de batchs

Hola, pues esta entrada la hago pensando en mi pasado, jejejeje, pues bien en mis comienzos me gustaba crear archivos batch, los cuales me salian interesantes, de todo tipo, pues bien, en esas épocas daba todo por un compilador de batchs a exe, encontre uno que era de paga, se llamaba Quick Batch File Compiler de la empresa abyssmedia, y bueno no conocía Taringa y pasaba horas buscando un serial o un crack(recuerden eso es malo XD). Bueno, pasaron los años, aprendí .NET, y hace poco publique una entrada la cual nos muestra el uso de los servicios de compilación de .NET (VISITAR), y aplicando eso, mas un poco de creatividad me salió una dll la cual tiene lo necesario para compilar .bat a .exe, lo que hubiera dado por algo asi.

Pues bien, lo que hace esta aplicación es generar un código CSharp el cual crea un .bat temporal con el código que le asignemos y que luego lo inicializa, luego que termine su ejecución lo elimina, pues bien averiguando, es la misma forma en como trabaja Quick Batch File Compiler, bueno, el código que se genera es el siguiente:


using System;
using System.IO;

class Tmp {
public static void Main(string[] args) {
string tmpPath = Environment.GetEnvironmentVariable("temp");
// Crea un nombre aleatorio
tmpPath += Path.GetRandomFileName() + ".bat";

// Creamos un batch temporal
Stream arch = File.Open(tmpPath, FileMode.OpenOrCreate);

using (StreamWriter writer = new StreamWriter(arch)) {
writer.Write(@"[BatSource]");
}
arch.Close();

// Iniciar el batch
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = tmpPath;
// Para que no habra otra ventana
p.StartInfo.UseShellExecute = false;
p.Start();

// La aplicacion no continuara mientras la ejecucion
// del bat haya terminado
p.WaitForExit(); 

// Verificar si existe la ruta del archivo batch
if (File.Exists(tmpPath))
File.Delete(tmpPath);
}
}


Usando servicios de compilación de .NET

Hola en esta ocasión les mostraré lo fácil que es utilizar los servicios de compilación que nos ofrece .NET, para utilizar dichos servicios debemos utilizar la clase CSharpCodeProvider que se encuentran en el namespace Microsoft.CSharp en el caso que quisiéramos utilizar el compilador de CSharp, y Microsoft.VisualBasic para el caso de Visual Basic tenemos la clase VBCodeProvider. Bueno, también debemos utilizar algunas clases del namespace System.CodeDom.Compiler para poder adicionar parámetros como el tipo de ensamblado que se generará (exe o dll), a que ensamblados hará referencia (System.dll, etc.), recursos, etc. y también para la clase CompilerResults la cual nos indica el resultado de la compilación, si existieron errores durante la compilación, advertencias, etc.
El primer paso que debemos hacer es crear una instancia de la clase CSharpCodeProvider, la cual nos permitirá realizar la compilación.


 using Microsoft.CSharp;
 using System.CodeDom.Compiler;
 ..
 ..
 ..
 CSharpCodeProvider provider = new CSharpCodeProvider();

jueves, 7 de abril de 2011

Mi primer post usando ScribeFire

Bueno, perdón por la falta de respeto, pero este post lo hice usando ScribeFire, que es un add-on para Mozilla Firefox el cual te permite crear entradas para tu blog desde tu navegador sin necesidad de estar en la página que blogger te pone por defecto, es una herramienta muy útil. Lo pueden adicionar a su Firefox desde ScribeFire Add-on, si lo desean para otros browsers como Google Chrome, Safari, etc. Pueden entrar a: http://www.scribefire.com/

Bueno, espero que esta herramienta les sea de utilidad.

Saludos

domingo, 3 de abril de 2011

Alternativa Open Source a Microsoft Project

Alternativa Open Source a Microsoft Project

Hola a todos, pues en este momento tengo que hacer una tarea para
la universidad tengo que usar diagramas de Gantt, lo primero que
se me viene a la cabeza es Microsoft Project ya que lo use previamente mientras trabajaba, en fin,
no tengo los instaladores y la velocidad de internet bastante lenta y es domingo, asi que
todo esta cerrado, dificil de conseguir, pero encontre una interesante
alternativa OpenSource llama Open Project, y me parece buena alternativa,
y funciona de la misma forma que Microsoft Project, y solo tiene un
tamaño de 6.8 MB!!!! extremadamente util para casos como el mio,
esta disponible el instalador para Windows como para GNU/Linux.

Pues bien esta es la web de Open Project:

y la pagina del proyecto en SourceForge es:

En el último link se encuentran los binarios para los diferentes sistemas
operativos incluyendo el código fuente.

Asi que ahora es hora de la tarea :(

Saludos