jueves, septiembre 21, 2006

Una meta trazada un sueño cumplido

El día de hoy puedo decir con orgullo que soy Ing. de Sistemas, luego de 3 años duros, por fin logre mi cometido, tengo muchas cosas que agradecer y a muchas personas también, aquí muestro parte de mi alegría.

AGREDECIMIENTOS

El autor expresa su más sincero agradecimiento a:

UNIVERSIDAD COOPERATIVA DE COLOMBIA, por brindarnos la oportunidad de poder llevar a cabo este proyecto en la institución. En especial a la Facultad de Ingeniería de Sistemas por ser el artífice de nuestra formación humana y profesional.

MARLENE LUCILA GUERRERO JULIO, Ingeniera de Sistemas; por ser mi asesora metodológica, científica y directora de este proyecto, sin su apoyo y sus conocimientos brindados incondicionalmente este proyecto no fuese una realidad.

CARMEN ALICIA GUARACAO VILLAMIZAR, por sacar parte de tu valioso tiempo para evaluar el sistema en su fase final.

LUIS ERNESTO SILVA MONCADA, Decano de la Facultad de Ingeniería de Sistemas por su valioso aporte en la evaluación final del prototipo.

DAI XIN HOU 代 新 厚, por sacar parte de tu valioso tiempo para evaluar el sistema en su fase final.

DIHONNY PAOLA DUARTE MENDOZA, Ingeniera de Sistemas y Coordinadora del Comité de Investigaciones de la Facultad de Ingeniería de Sistemas, por permitir que este proyecto sea una realidad.

EDGARDO NIKOLAY HERNANDEZ VELASQUEZ, Ingeniero de Sistemas; por haberme permitido utilizar su computador desinteresadamente para poder culminar mi proyecto, en una etapa fundamental del proyecto en la que realmente necesitaba de uno.

ALFREDO CÓRDOVA PÉREZ, por su valiosa colaboración en el diseño de los botones del sitio Web y su apoyo incondicional para con mi trabajo.

KELVIN C. PEREZ, por permitirme usar su método de encriptación, el cuál es fundamental para darle la seguridad requerida al sistema.

MARTÍN R. MONDRAGÓN, por tus aportes en diferentes partes del código del proyecto, especialmente en la parte de creación de Backups y adicionalmente por sacar parte de tu valioso tiempo para evaluar el sistema en su fase final.

ELMER F. ALAVID JIMÉNEZ, por sacar parte de tu valioso tiempo para evaluar el sistema en su fase final.

Unos pantallazos de la hazaña.





Luego muestro imágenes de las diapositivas de la tesis y algunas fotitos.

lunes, septiembre 04, 2006

Nuevo UC en PSC


Bueno por cuestiones del destino, he publicado un nuevo control en PSC, aunque este nacio bajo otra idea inicialmente, es un control bastante sencillo pero atractivo para hacer tus aplicaciones de VB más amenas al usuario final, aquí les muestro el uso principal del UC.

A los que deseen apoyar mi trabajo les dejo el link para que voten u opinen por el UC.

http://www.pscode.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=66429

PD: El programa que ven, es de mi autoria pero no tengo derechos sobre el mismo, cedí los derechos, pueden escribirme a hcammus@hotmail.com si desean saber como es la solución.

domingo, septiembre 03, 2006

Descargar vídeos de YouTube.com


Siempre haz querido bajar vídeos hosteados en YouTube pues este programa lo puede hacer.

NOTA: El programa no es mío, por tal motivo dejo la fuente desde donde lo descargue http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=66231&lngWId=1

Bajalo de aquí, el programa ya compilado.

domingo, agosto 13, 2006

Los recuerdos de épocas pasadas...

El día de hoy hize un ánalisis de todo las cosas que he experimentado como programador, desde mis inicios hasta lo que hoy en día sé sobre el tema... mis recuerdos son gratos empece experimentando código de terceros, visualizando todas esas cosas que mi mente nunca llegó a pensar que podría asimilar.


Me inicie en PSC depurando un código hecho por otra persona, vaya que dure hrs sentado tirandole cabeza al código y madreando a mi antiguo y peleado PC, bueno esa experiencia nunca la olvidaré, aquí dejo un snap de ese si lo podemos llamar control de usuario.


Luego mi fiebre por la programación de objetos se fue expandiendo, aunque primero vinieron otra clase de proyectos, intente hacer mi más frustrado proyecto mi Calculadora Cientifica, quedo a medias pero funcional en un 80%, me faltaron muchas funciones que por cuestiones ajenas a mi nunca he podido terminar, aquí una pantalla de ese inmemoriable código, uff dure meses completos depurando y programando eso.


Luego vinieron programas igual de desgastadores como fueron mi programa Búsqueda, un complejo depurador (digo complejo por que me costo lagrimas y sufrimiento hacerlo) de árboles basados en Inteligencia Artificial, suena complejo pero se reduce a saber si un nodo existe en un árbol y determinar el camino que se debe recorrer en el árbol para saber donde esta el elemento, el programa esta basado en los Métodos Primero a lo Ancho y Primero a lo Profundo.















Este ha sido otro de mis más grandes proyectos inconclusos, el solo pensar en los meses que he gastado en este programa me traen a mi los mayores recuerdos.

Luego vinieron códigos más livianos pero igual de complejos en pensamiento, como mi pequeño juego de los caballos, todo un reto al igual que mi programa Picas y Fijas, aquí unas pantallitas de esos dos aplicativos.

Dato curioso: El jueguito de los caballos fue un reto personal, lo hice en una noche, comenze programandoló a las 11:00p.m. y termine a las 6:00a.m. del día siguiente.














Bueno después de estos programitas, inicie una nueva etapa en mi andamiaje por la programación, actualmente existen varios controles míos que dehambulan por Internet y que mucha gente usa en sus programas personales, solo por dar un ejemplo, este de mi amigo Ivan (Indonés), el cuál uso mi SComboBox en uno de sus proyectos, aquí la primicia xD.


Que más puedo decir sobre esto: Que si usará mi divisor de sílabas para dividir la palabra Felicidad tendría 4 sílabas y por ende el día de mi nacimiento.

Bueno esto por el día de hoy, espero no haberlos aburrido con tanta cosa.

Un saludo a los que visitan este blog.





Postdata: En la próxima publicaré algunas otras pantallas más de programas que tengo en el baúl del recuerdo.

viernes, agosto 11, 2006

La Maldición de las Gallinas Virgenes


El día de hoy he querido poner el link de un manga hecho por Colombianos.

Es un manga hecho por locos y para locos, realmente esta muy buena la historia y los gráficos también.

Sus autores intelectuales son Metarnes y Darkbaal, dos excelentes dibujantes y amantes del anime, bueno sin más rodeo les dejo la URL para que la visiten.

Basado en las vivencias del foro anymazion.com.

http://anymazion.com/foroany/viewtopic.php?t=7249

PD: Solo para amantes de este género.

sábado, agosto 05, 2006

Una curiosidad

Husmeando por Internet me he encontrado con tamaña sorpresa... un código programado por mi amigo Kelvin en VB y trasladado a PHP por mi lo vi posteado en una página koreana, miren el link http://www.phpschool.com/gnuboard4/bbs/board.php?o_table=tipntech&wr_id=46205&sfl=&stx=&spt=&page=5

Un fragmento de lo que dice en la página: 쿠키를 암호화할려고 소스를 찾던중에 pscode.com에 가니까 쓸만한 소스가 있어서 퍼왔습니다. 원문출처

domingo, mayo 07, 2006

Organize Code 1.0

Bueno me encontraba un poco desviado de la programación sobre Visual Basic, por que como lo hice publico, ya me retire de la programación como hobby, ahora trabajo en ella para ganar dinero, pero bueno tenía un programa que había desarrollado tiempo atrás, realmente era muy sencillo y pensaba que no copaba todas las expectativas como para publicarlo en un sitio tan exigente como es PSC, no sé tal vez el ver que en él recopilaba no solo los códigos de los mejores programadores de PSC, sino a mis amigos y por que no llamarlos mis colegas de oficio me decidí a hacerlo. Al principio este programa fue creado para satisfacer mi intéres personal, pero decidí compartirlo con los demás, ya he recibido el apoyo de mis amigos de PSC, los cuales hacen ver mi trabajo como algo valedero, por ese motivo quiero agradecerles su apoyo incondicional.

Para quienes quieran pueden bajarlo y experimentar con él, este es el link, cualquier comentario ó sugerencia la pueden dirigir a este blog ó hacerlo como ya es habitual en PSC ó a mi correo.

No siendo más me despido, ahí se ven.

Por cierto que viva mi amada Colombia.

sábado, mayo 06, 2006

Mi premio de PSC

Bueno este es el pequeño libro que me gane en PSC, lo quería mostrar para que vieran que el que persevera alcanza, es cuestión de ser constante y algún día tendrás los beneficios.

Bueno no siendo más les dejo mi librito para que lo miren, lo único malo es que esta en Inglés pero bueno a tiestazos voy entendiendo todo, aunque ya me es familiar el lenguaje.

Un saludo.

domingo, marzo 26, 2006

Clase de PHP para encriptar y desencriptar cualquier cadena de texto

Hola.

Bueno quiero primero que todo dar las gracias a Kelvin por haberme facilitado su método de encriptación para implementarlo de VB en PHP, uff un tedioso pero emociante trabajo.

Quiero explicar como funciona la clase y que métodos deben invocar.

Archivo base donde esta el código de encriptación EnDecryptText.php

Antes de empezar se debe llamar a la clase desde la ruta donde se encuentre, para ello debes definirla de la siguiente forma:

require_once("EnDecryptText.php"); // Abre la instancia EnDecryptText.php.
$EnDecryptText = new EnDecryptText(); // Crea una nueva instancia de EnDecryptText.php.


Una vez hecho lo anterior, es cuestión de utilizar los dos métodos de la clase, los cuales son los siguientes:

Encrypt_Text y Decrypt_Text

Ahora bien como se invocan, veamos un ejemplo utilizando un ciclo for y con un dato venido desde un formulario html.

for ($i = 1; $i <= 12; $i++)
{
$sTemp = $EnDecryptText->Encrypt_Text($HTTP_POST_VARS["Chain"]);
echo $sTemp;
// Puedes también usarlo así $sTemp = $EnDecryptText->Encrypt_Text($Chain);
$rText = $EnDecryptText->Decrypt_Text($sTemp);
echo $rText;
}

El símbolo -> denota el apuntador de la clase, el cuál en los dos casos apuntan a las funciones de la clase Decrypt_Text y Encrypt_Text.

Bueno aquí un método más cotidiano programado en VB y PHP, un saludo.

 1: '* Private Variable
 2:  Private UserKeyAscii()  As String
 3:  Private TextAscii()     As String
 4: 
 5: Public Function Encrypt(ByVal String1 As String) As String
 6:  Dim k   As Long, Temp As Long, L As Long
 7:  Dim Rtn As String, iM As Integer
 8: 
 9:  '* Función que Encripta.
10:  EnCryIni String1
11:  iM = 0
12:  For k = 1 To Len(String1)
13:   L = IIf(L >= Len(String1), 1, L + 1)
14:   iM = iM + 1
15:   If (iM > Len(UserKey)) Then iM = 1
16:   Temp = CLng(TextAscii(L)) + CLng(UserKeyAscii(iM))
17:   If (k > Len(String1)) Then Exit For
18:   If (Temp > 255) Then Temp = Temp - 255
19:   Rtn = Rtn + Chr$(Temp)
20:  Next k
21:  Encrypt = Rtn
22: End Function
23: 
24: Public Function Decrypt(ByVal String1 As String) As String
25:  Dim k   As Long, L    As Long, Temp As Long
26:  Dim Rtn As String, iM As Integer
27: 
28:  '* Función que quita la Encriptación.
29:  EnCryIni String1
30:  iM = 0
31:  For k = 1 To Len(String1)
32:   L = IIf(L >= Len(String1), 1, L + 1)
33:   iM = iM + 1
34:   If (iM > Len(UserKey)) Then iM = 1
35:   Temp = Abs(CLng(UserKeyAscii(iM)) - CLng(TextAscii(L)))
36:   If (Temp < 0) Then Temp = Temp + 255
37:   Rtn = Rtn + Chr$(Temp)
38:  Next k
39:  Decrypt = Rtn
40: End Function
41: 
42: Private Sub EnCryIni(ByVal Text As String)
43:  Dim N As Long, k As Long
44: 
45:  '* Procedimiento Inicial de la Encriptación.
46:  N = Len(UserKey)
47:  If Not (N = 0) Then
48:   ReDim UserKeyAscii(1 To N)
49:  Else
50:   Exit Sub
51:  End If
52:  For k = 1 To N
53:   UserKeyAscii(k) = Asc(Mid$(UserKey, k, 1))
54:  Next k
55:  ReDim TextAscii(Len(Text)) As String
56:  For k = 1 To Len(Text)
57:   TextAscii(k) = Asc(Mid$(Text, k, 1))
58:  Next k
59: End Sub


1:  class encrypt_vb
2:  {var $UserKeyAscii;
3:   var $TextAscii;
4:   var $UserKey;
5: 
6: 
7:   function encrypt_vb()
8:   {$this->UserKeyAscii = array();
9:    $this->TextAscii    = array();
10:    $this->UserKey      = '';
11:   }
12: 
13:   //------------------------------------------------------------------------------------
14:   // Encripta una cadena de texto.
15:   //------------------------------------------------------------------------------------
16:   // Parámetros
17:   //------------------------------------------------------------------------------------
18:   // $String1: Cadena a encriptar.
19:   //------------------------------------------------------------------------------------
20:   function Encrypt($String1)
21:   {// Función que Encripta.
22:    if ($this->EnCryIni($String1) == false) return '';
23:    $iM = 0;
24:    $L  = 0;
25:    for ($k = 1; $k <= strlen($String1); $k++)
26:    {if ($L >= strlen($String1)) $L = 1;
27:     else $L++;
28:     $iM++;
29:     if ($iM > strlen($this->UserKey)) $iM = 1;
30:     $Temp = $this->TextAscii[$L] + $this->UserKeyAscii[$iM];
 31:     if ($k > strlen($String1)) break;
32:     if ($Temp > 255) $Temp -= 255;
33:     $Rtn .= chr($Temp);
34:    }
35:    return $Rtn;
36:   }
37: 
38:   //------------------------------------------------------------------------------------
39:   // Desencripta una cadena de texto.
40:   //------------------------------------------------------------------------------------
41:   // Parámetros
42:   //------------------------------------------------------------------------------------
43:   // $String1: Cadena a desencriptar.
44:   //------------------------------------------------------------------------------------
45:   function Decrypt($String1)
46:   {// Función que quita la Encriptación.
47:    if ($this->EnCryIni($String1) == false) return '';
48:    $iM = 0;
49:    $L  = 0;
50:    for ($k = 1; $k <= strlen($String1); $k++)
51:    {if ($L >= strlen($String1)) $L = 1;
52:     else $L++;
53:     $iM++;
54:     if ($iM > strlen($this->UserKey)) $iM = 1;
55:     $Temp = abs($this->UserKeyAscii[$iM] - $this->TextAscii[$L]);
56:     if ($Temp < 0) $Temp += 255;
57:     $Rtn .= chr($Temp);
58:    }
59:    return $Rtn;
60:   }
61: 
62:   //------------------------------------------------------------------------------------
63:   // Función iniciadora de la encriptación.
64:   //------------------------------------------------------------------------------------
65:   // Parámetros
66:   //------------------------------------------------------------------------------------
67:   // $Text: Cadena.
68:   //------------------------------------------------------------------------------------
69:   function EnCryIni($Text)
70:   {// Procedimiento Inicial de la Encriptación.
71:    $N = strlen($this->UserKey);
72:    if ($N == 0) return false;
73:    for ($k = 1; $k <= $N; $k++)
74:    {$tmp = ord($this->Mid($this->UserKey, $k, 1));
75:     $this->UserKeyAscii[$k] = $tmp;
76:    }
77:    for ($k = 1; $k <= strlen($Text); $k++)
78:    {$tmp = ord($this->Mid($Text, $k, 1));
79:     $this->TextAscii[$k] = $tmp;
80:    }
81:    return true;
82:   }
83: 
84:   //------------------------------------------------------------------------------------
85:   // Token principal de la cadena.
86:   //------------------------------------------------------------------------------------
87:   // Parámetros
88:   //------------------------------------------------------------------------------------
89:   // $Text: Cadena que permite encriptar otra cadena sumando sus carácteres.
90:   //------------------------------------------------------------------------------------
91:   function KeyToken($Text)
92:   {$this->UserKey = $Text;}
93: 
94:   //------------------------------------------------------------------------------------
95:   // Devuelve un número especificado de caracteres de una cadena.
96:   //------------------------------------------------------------------------------------
97:   // Parámetros
98:   //------------------------------------------------------------------------------------
99:   // $tmp:    Cadena.
100:   // $start:  Posición inicial en la cadena.
101:   // $length: Cantidad de carácteres de izquierda a derecha.
102:   //------------------------------------------------------------------------------------
103:   function Mid($tmp, $start, $length = '')
104:   {$start -= 1;
105:    if (is_string($length) == true) $length = strlen($tmp);
106:    $str = substr($tmp, $start, $length);
107:    return $str;
108:   }
109:  }