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:  }