viernes, 11 de mayo de 2007

Un log para toda aplicación.

Por costumbre que he cojido y por mayor velocidad a la hora de corregir errores, así como saber si un programa esta funcionando correctamente, he implementado en todas las aplicaciones que he hecho de un tiempo para aqui este pequeño código. Hay que tener en cuenta que para que funcione correctamente, deberemos añadir en cada procedimiento un Console.WriteLine("lo que sea") para luego ver el log del programa.


using System;
using System.IO;

public class Redirect {
public static void Main() {
StreamWriter log_out;

try {
log_out = new StreamWriter("logfile.txt");
}
catch(IOException exc) {
Console.WriteLine(exc.Message + "Cannot open file.");
return ;
}

// Direct standard output to the log file.
Console.SetOut(log_out);
Console.WriteLine("This is the start of the log file.");

for(int i=0; i<10; i++) Console.WriteLine(i);

Console.WriteLine("This is the end of the log file."); log_out.Close();
}

martes, 1 de mayo de 2007

Curriculum Vitae

Datos Personales
Nombre: Javier Lema Liñares
Teléfono: 699 28 03 51
Email: javier.lema@gmail.com

Estudios Realizados:
FPI Auxiliar Administrativo. IFP Vimianzo.
FPII Administrativo (Sin terminar). IFP Vimianzo.
FPII Informática de gestión. IFP Fernando Wirtz

Conocimientos de Informática

- Programación Web:

PHP (Dominio de PHP4 y PHP5)
HTML, CSS, XHTML, XML

- Programación Orientada a Objetos POO:
C#, Visual Basic .NET, Delphi, PHP5 y ActionScript 2.0

- Bases de Datos:
MySQL, PostgreSQL, SQL Server, SQL Server 2005, SQLite, Firefir y Oracle

- Programas de Diseño y Retoque Fotogrãfico:
Adobe Photoshop, Macromedia FireFox, Gimp, Corel PhotoPaint,
Macromedia Flash, Macromedia Dreanweaver

- Servidores:
Experiencia demostrable en mantenimiento y configuración y mantenimientos de servidores LAMP (Linux+Apache+MySQL+PHP), Servidores de Correo, FTP, Samba.
Experiencia demostrable en configuración ymantenimiento de servidores linux Samba como controladores de dominios.
Experiencia demostrable en mantenimiento y configuración de servidores Windows (NT4, W2000, WXP)

- Otros:

Montaje, configuración y mantenimiento de redes Windows y Linux.
Amplios conocimientos en Sistemas Operativos Windows y Linux

- Experiencia:

30/01/2001 - 25/05/2003 Autónomo.
Negocio propio. Academia de Informática, tienda y mantenimientos a empresas.


01/06/2003 - 30/09/2003 Grupo Base2000.
Programador PHP y mantenimiento de servidor linux.

01/10/2003 - 30/12/2003 Bicolan ETT.
Peón en cadena de producción de puertas Tren.

01/02/2004 - 31/07/2006 Comintper.
Desarrollo de los sitios web de la empresa, mantenimiento de servidores, creació de aplicaciones de escritorio.
Desarrollo de Intper.es y homecomunity (aplicación web y aplicación windows.)

01/08/2006 - 31/09/2006 Efenet.
Desarrollo de aplicaciones de escritorio con Visual Studio .NET (c#, VB.NET, ASP.NET).


01/10/2006 - 26/10/2007. MNMProgram
Diseño, desarrollo e implementación de aplicaciones Windows echas con Visual Studio 2005 en c#.
Desarrollo de aplicaciones en Delphi.
Responsable de varios proyectos en C# con grupo de trabajo a mi cargo.
Desarrollo de, entre otros, www.plandocumental.com

01/11/2007 - Actualidad. Alcatraz Solutions
Actualización de programas a .NET


Idiomas

Español
Gallego
Inglés. Inglés técnico a nivel alto

Lector de Archivos .INI

using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;

namespace touzasClass
{
public static class config{
public static string ruta = System.Windows.Forms.Application.StartupPath + @"\config.ini";
public static IniFile ini = new IniFile(ruta);

public static string getKeyValue(string section, string key){
string tmp = String.Empty;
tmp = ini.IniReadValue(section, key);
return tmp;
}
}

public class IniFile {
public string path;

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key,string val,string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key,string def, StringBuilder retVal, int size,string filePath);

public IniFile(string INIPath) {
path = INIPath;
}
public void IniWriteValue(string Section,string Key,string Value) {
WritePrivateProfileString(Section,Key,Value,this.path);
}

public string IniReadValue(string Section,string Key) {
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section,Key,"",temp, 255, this.path);
return temp.ToString();

}
}
}
=============================================================================
=========================== SAMPLE ============================================
=============================================================================

string server = string.empty;
server = config.getKeyValue("Configuracion", "SERVIDOR")
--- RESULT ---
server = "localhost"

=============================================================================
==================== ARCHIVO config.ini ============================================
=============================================================================

[Configuracion]
SERVIDOR = localhost
DATABASE = dbPruebas
USUARIO = userdb

CLAVE = pwd

---------------------------------------
P.D. Ya sé que actualmente se utilizan archivos .xml en lugar de archivos .ini pero en la empresa actual como en alguna de las que
trabajado los siguen usando. Pos si acaso a alguien le puede servir...
Bienvenidos a este, mí sitio web.
En esta página voy a intentar recoger mis experiencias como programador, analista, diseñador,... y demás trabajos que van surgiendo en la vida de un informático.
Aún no hace mucho estuve trabajando con Delphi, modificando un programa ya hecho. No se lo recomiendo a nadie sobre todo si tienes experiencia en programación orientada a objetos, que si, que ya sé que delphi tiene orientación a objectos pero... en un programa donde una unit (trozo) tiene unas 8.000 líneas de código, como comprenderéis no voy a ser yo quien modifique todo eso, simplemente lo estoy parcheando para que no de los errores que está dando.
Como actualmente me encuentro desarrollando con c#, y como todos los que trabajamos en este mundo sabemos, ahi cosas que no deberían ser así pero, por lo menos a a mí me pasan constantemente, voy a contar una pequeña anécdota.
Hay que hacer un trabajo, dicho trabajo lo estimas en que te puede llevar 20 días hacerlo. Una vez empiezas con el diseño de base de datos, diseño de clases, objetos,... y te pones manos a la obra picando código, va el superior de turno y...
- bueno,... esto podría ser así en lugar de asao,
- bueno... esto de aquí, que antes te dijimos que no, ahora si,.. etc,...

Estas situaciones se repiten constantemente, por lo menos en todas las empresas por las que he pasado. A todos los responsables de empresas de software que puedan leer esto: "Debeis pensar que si decimos que nos lleva un 70% del tiempo el diseño en papel y un 30% el teclear código por algo será. Si lo hacemos al revés y luego los mantenimientos, modificaciones,... se disparan en cuanto a tiempo de realización ya sabeis por que es".
Ahora me han hecho responsable de un proyecto, yo he aceptado como no, y voy a intentar hacer algo que los muchos programadores, analistas que han pasado por mí trabajo no han hecho. Hacer las cosas en un orden lógico, para mí este orden lógico es:
- Pensar que quiero hacer
- Pensar que necesito para hacerlo
- Diseñar en papel la BD que me haga falta
- Diseñar en papel las clases que me hagan falta
- Hacer un diagrama de casos de uso
- Picar código.

Creo que me he saltado algún paso pero... más o menos.
Bueno, y cambiando de tema, voy a intentar recoger scripts, programas, enlaces que me han sido útiles en estos años. No sé quizás nadie los use, pero cuando a mí me hicieron falta, me costo mucho encontrarlos, sobretodo si tienes un tiempo muy limitado para hacer un proyecto a nivel nacional.
Estoy abierto a todo tipo de sugerencias, quejas (estas menos), y todo lo que deseeis.