martes, 10 de diciembre de 2019

Comenzando con Python (Migrando MiGEm a Python)

Vamos a jugar con Python!

Mi proyecto MiGEm ahora se migrará a Python!


Esperemos que todo fluya con naturalidad.

No creo que sea necesario incluir las instrucciones para instalar Python, hay muchísimos tutoriales, e incluso, creo yo, no es más que "Siguiente", "Siguiente", "Siguiente"...

Por simple gusto y capricho instalé Python 3 en mis equipos con Windows 10, así que trabajaré con ello, así como MariaDB 10.5.0 en mi servidor de pruebas y MySQL 5.6.21 en el servidor de producción.


Mi proyecto está basado en MySQL, por lo cual se requiere cierta estructura previa en la base de datos, sin embargo, por cuestiones personales, no detallo, sin embargo, se irá detallando conforme crezca el proyecto. Además, por cuestiones personales, no uso modo gráfico, prefiero la consola en modo texto, y por alcance, la terminal estandar de Windows es muy limitado, por lo cual uso cmder, así entonces, requiero la librería curses para el control de la consola, no hay mucho problema con la siguiente instrucción:


pip3 install windows-curses

Además del conector de MySQL para Python que se instala con la siguiente instrucción:

pip3 install mysql-connector

Para comprobar los requisitos previos ejecuto en la consola de cmderlas siguientes instrucciones:

python
>>> import curses
>>> import mysql.connector as mariadb
>>> exit()

Si no muestra ningún error, es tiempo de comenzar la codificación, en mi caso, uso Sublime Text 3.


Y así termina mi presentación, en siguientes entradas detallaré el avance realizado, saludos a todos!

lunes, 9 de diciembre de 2019

Día mundial de la informática

Hoy se celebra el Día Mundial de la Informática!

Informática, contracción de los vocablos "information" y "automatic", acuñado por el Ing Karl Steinbuch en 1959.



Se celebra en este día por conmemoración a Grace Murray Hopper, científica de la computación y militar estadounidense, pionera en el mundo de las ciencias de la computación y la primera programadora que usó el Mark I además de desarrollar el primer compilador para un lenguaje de programación y popularizar la idea de una maquina independiente de los lenguajes de programación que derivó en el desarrollo de COBOL.

Commodore Grace M. Hopper, USN (covered) head and shoulders crop.jpg

Es por esto que se celebra en este día la importancia de la ciencia informática, esa herramienta tan valiosa en la actualidad.

jueves, 28 de noviembre de 2019

El mejor lenguaje de programación es...

En días pasados leí un artículo que hablaba de los mejores lenguajes de programación.


 Me llamó la atención el crecimiento que ha tenido Python desde hace bastane tiempo, y no por nada es considerado el lenguaje del futuro, cada vez más aplicaciones usan Python con muy variados propósitos, obviamente me llama la atención, sin embargo mis ánimos decaen cuando no salen las cosas como yo quisiera, así que lo dejo por la paz por un tiempo hasta que vuelva la curiosidad.


 Dentro de esa lista figura también Java, sin embargo, no sé bien el porqué, pero a Java le tengo algo de recelo, no sé explicar bien el porqué, pero tengo la idea de que su ejecución es complicada y vulnerable a ataques, en verdad no he investigado mucho aún, pero no me llama mucho la atención, sin embargo no dudo que en un futuro investigue y lo aprenda un poco.

 La lista sigue con otros lenguajes, sin embargo no tengo tiempo para probarlos todos, y aunque ya he intentado varios, termino siempre con la vieja confiable, con un poco de vergüenza porque a todo el que se lo comento les sorprende, pero Pascal, en su modalidad de Free Pascal, ha servido para mis propósitos y de manera fluída de acuerdo a mis pocos conocimientos.

 Los lenguajes modernos de programación usan muchos tecnicismos que están más allá de mi comprensión actual, quizá es por eso que, al no comprenderlos, regreso a mi zona de confort y de solución inmediata.


 Me ha gustado Free Pascal, y no soy muy fan de Lazarus (la versión gráfica), me siento atraído por la terminal en modo texto, no sé... viejos hábitos, viejos gustos... Añadido a esto, me ha servido para mi propósito inmediato y actual, mi trabajo, sin mayores contratiempos ni complicadas instalaciones, tengo las herramientas para trabajar, Free Pascal + MySQL, y aunque la consola básica de windows es muy limitada, sobre todo en relación a filas y columnas disponibles, con cmder tengo una terminal con muchísimas lineas y columnas para trabajar.

 He hecho mis experimentos, en mi poco, muy poco tiempo libre, de portar mis aplicaciones de Free Pascal en los diferentes lenguajes, solo como gusto personal para satisfacer mi pequeño ego, sin embargo el poco tiempo que me queda he querido invertirlo en mis aplicaciones para mi trabajo.


 Con todo esto, caigo en cuenta en el título de esta entrada, el mejor lenguaje de programación es el que te sirve a ti, depende de tus necesidades, hay muchos, y cada uno tiene sus características, pero si no las usas, no te será atractivo, es por eso que debes analizar lo que requieres y entonces ver cuál cumple con tus expectativas. No dudo que en un futuro inmediato cambie de lenguaje, ya que, de acuerdo a las necesidades, se requieren más herramientas, a lo cual me recuerda la frase de platzi: Nunca pares de aprender...

sábado, 16 de noviembre de 2019

Caos de vida!!!

Caos completo!



Increíble la falta de orden en mi vida!

A pesar de las buenas intenciones de documentar mi programa para darle valor y hacerlo público, la realidad es que no lo he hecho adecuadamente.

Tengo mil razones, excusas a fin de cuentas, pero razones válidas para mí, la más importante: el trabajo...



En resumen:
 La necesidad en mi trabajo me hizo programar mis propias aplicaciones para el sistema de información que tenemos. El programa que usamos es privativo, a lo que escuché, porque conozco a los desarrolladores, lo escribieron en C#. La base de datos está en MySQL. Gracias a las llamadas telefónicas de soporte, al soporte remoto vía TeamViewer y a mi curiosidad, descubrí los datos de acceso al servidor MySQL.

El programa funciona, no se puede negar, sin embargo es muy pesado, muy lento, y contiene mucha información irrelevante para la empresa, además que los procesos son extensos, para dar de alta un artículo desde cero, es necesario ingresar 22 datos, lo cual lo hace tardado y tedioso.

Razón adicional, tiene costo por licencia, además de costo de póliza anual de servicio.

Gracias a esto fue que con mi propia necesidad, decidí desarrollar mis propias aplicaciones para hacer mi trabajo de manera eficiente.

Mi primer proyecto fue una simple aplicación que buscara en la base de datos, lee el código del producto, busca la descripción, la unidad de medida y el precio de venta.

De acuerdo a las necesidades de mi trabajo por mis nuevas responsabilidades, modifiqué mi primera aplicación para poder cambiar el precio de venta del producto. En esta modificación fue cuando se me ocurrió querer hacer pública mi aplicación y comencé a documentar, según yo, mis avances.

Casi a la par de esta segunda modificación hice mi tercer modificación a mi aplicación, para poder cambiar la descripción del producto.



Hasta aquí me sentía satisfecho de mi labor, sin embargo caí en cuenta que estaba trabajando con un solo resultado por cada consulta y que solo hacía modificaciones a la información existente en la base de datos. A partir de aquí comenzó el temor del avance, pues me era necesario buscar cadenas de caracteres y obtener más de un resultado, así como ingresar datos nuevos. Fue un lapso un poco más largo en relación a las otras aplicaciones, porque en este punto tenía miedo avanzar, poco a poco iba investigando lo que requería para mis nuevas necesidades, pero al no encontrar soluciones, lo posponía y seguía en mi trabajo.

Las mismas necesidades de la empresa me obligaron a seguir investigando y avanzar con mis proyectos personales, fue así como llegue a la cuarta modificación, la cual fue un gran cambio en relación a las anteriores, pues ya trabajaba con varios resultados y agregaba datos nuevos a la base de datos. Este proyecto me dio mi momento de satisfacción, pues le dediqué tiempo continuo y el resultado fue mi aplicación funcional para continuar con mi trabajo. Mientras avanzaba con mis responsabilidades laborales, comencé a programar mi aplicación pensada para hacerla pública, ya no solo de lo que requería para mi trabajo, sino un desarrollo tipo profesional, con opciones, no solo lo que necesitaba hacer y ya.


Sin embargo, el tiempo sigue.... y las necesidades siguen apareciendo.... Ahora me enfrento a una sexta modificación, de la cual estoy a punto de comenzar, obviamente dejando en segundo plano mi aplicación pública, y a pesar de mis esfuerzos por documentar, simplemente falta tiempo... como ahora... que tengo que irme y dejar esta historia para una siguiente entrega...

miércoles, 18 de septiembre de 2019

Viaje veloz a San Miguel de Allende

16 de Septiembre.... Día de descanso.... Después de las obligaciones de lavado de ropa, fuga veloz a pasear... Destino improvisado... San Miguel de Allende... Compañía... y vaya sorpresa que nos encontramos... Mejor les dejo los recuerdos...



































lunes, 19 de agosto de 2019

Cuidado con el desvío de atención! (procastrinación)

Desorden de atención, déficit de atención, distraído, desordenado, muchos adjetivos, mismo significado en mí, no puedo darle continuidad a mis proyectos. Excusas y pretextos sobran, tiempo, importancia, urgencia, flojera, ánimo, inspiración, y puedo seguir citando, la realidad es que no hay avance. Además de esto, la tentación de jugar, de conocer, experimentar, y conste que no menciono los problemas personales, pero el proyecto toma giros muy drásticos.


Desde mi última actualización, hace ya mes y medio, comenté que me encontraba atorado con mostrar ventanas de diálogo y/o emergentes en modo consola; fue tal mi desesperación que sin darme cuenta terminé migrando mi proyecto a modo gráfico por medio de Gtk+ con FreePascal y MySQL, modificando mi proyecto de cambio de precios para usarlo en modo gráfico, y después de juguetear un par de semanas, resultó, pude programar caja de texto, etiquetas, consulta a MySQL, todo con puro código, lo cual me hizo muy feliz; sin embargo.... a la hora de querer compartir el código, me doy cuenta que lo tengo en mis proyectos personales, con información personal que NO se debe publicar, así que la espera continúa para poder compartir mis avances.


Sin embargo... después de leer varios artículos sobre lenguajes de programación, me movió la curiosidad migrar ahora a Python.... Igualmente con Gtk+ y MySQL... Anteriormente lo había intentado sin éxito, por lo cual estaba un poco desconfiado nuevamente, sin embargo hice mi prueba y funcionó! Así que ahora estoy entusiasmado en jugar con éste nuevo proyecto, Python + Gtk+ + MySQL...


Espero pronto tenerles actualizaciones, mientras tanto, estoy abierto a sugerencias para darle seguimiento a este proyecto.


Salu2!

jueves, 18 de julio de 2019

Solución al error MySQL / InnoDB index corruption

Oh sorpresa al atardecer! Llegó a mi trabajo y no hay luz! Después de mis labores de electricista, todo a la normalidad hasta que llegó la hora de la generación de una factura con nuestro programa de facturación, boom, error, al revisar los logs me hace pensar que es un error en la base de datos de MySQL, ya que anteriormente ya nos había pasado y se solucionó llamando al soporte técnico, esperando un par de horas y listo. En esta ocasión me dieron ganas de dedicarle un esfuerzo DIY (Do It Yoursefl, o sea, hazlo tu mismo).


Resulta que al hacerle un "Table Diagnostics -> Check" en SQLyog me muestra el error:

Warning  | InnoDB: The B-tree of index "PRIMARY" is corrupted. 

Nada que San Google no pueda solucionar con resultados como este del cual sencillamente siguiendo las siguientes consultas quedó resuelto:

OPTIMIZE TABLE nombre_Tabla;
ALTER TABLE nombre_tabla ENGINE=InnoDB;

En realidad no entiendo muy bien qué hace cada comando, lo que sí sé es que se solucionó el error y mi programa de facturación funcionó con normalidad.


En realidad escribí esta entrada para recordar los pasos para la siguiente vez que me falle, je je je


Saludos amig@s!!!

jueves, 4 de julio de 2019

Piedras en el camino

Mi proyecto personal ha tenido un estancamiento significativo, se ha desviado mi atención en buscar la forma de mostrar cuadros de diálogo en el modo consola de Free Pascal, desafortunadamente no hay información al respecto, sin embargo, veo una posible solución y dedico tiempo a buscar e investigar, pero sin éxito aún, sé que debo moverme, debo dejar ese "feature" para cuando haya tiempo de sobra, pero sencillamente me distraigo con posibles soluciones que no me funcionan... Si alguien tiene alguna idea o información, se lo agradeceré...
posted from Bloggeroid

martes, 2 de julio de 2019

Reflexión para el trabajo...



Hoy leo en Twitter una historia muy particular que me llamó la atención por lo cual la transcribo a continuación:

Una dolorosa entrevista de trabajo.
Estaba yo, obviamente, en lo mío. Cuando noté la presencia de la entrevistadora. Mujer joven. Menor de 30 años. Pelo grueso, lacio, café al hombro. Lentes obscuros grandes, de esos que cubren la mayor parte del rostro. Nariz chica. Agenda en mano, salen de ella muchos post it.

Noté su presencia porque hablaba con alguien en voz muy alta. Hablaba de la entrevista que iba a tener en 10 minutos. "No le tengo mucha fe al prospecto." dijo con un tono frío, desinteresado. Hasta cierto punto despectivo.

La entrevistadora se levanta. Con cierta formalidad le dice "Hola. ¿Eres (su nombre)?" "¡Sí!, ¡Mucho gusto!" Le responde el entrevistado. Y le pregunta. "¿Quieres algo de tomar?" Se van los dos al mostrador para pedir sus respectivas bebidas. Small talk en el camino: el clima.

Regresan los dos. Ella un te frío. Mucho hielo, hace calor. Él, un expreso. "¡Muchas gracias por la entrevista!" Le dice el entrevistado demostrando interés y entusiasmo (o muchos expresos previos). 

Ella sonríe cortésmente. Toma su agenda y dice "¿Te parece si empezamos?"

Ella dispara un par de preguntas. Nada importante. Él responde con entusiasmo. La entrevistadora le explica un poco lo general de la empresa. Tiene que ver con tecnología, innovación y logística. "Temas que me apasionan" revira el entrevistado. Ella escribe en su agenda.

La entrevistadora pregunta: "¿Cuál es tu mayor logro profesional?" "Soy feliz." responde. La entrevistadora esperaba sin duda otra respuesta; le insiste que le diga algo profesional no personal. El insiste. "Mi mayor logro profesional es ser feliz." El entrevistado sonríe.

A la entrevistadora no le gusta la respuesta. Lo cuestiona con firmeza: cómo puede ser un logro profesional el ser feliz. Él responde con un par de lugares comunes. Pero luego dice: "Si yo no fuera feliz, no sería alguien altamente eficiente y sumamente efectivo en mi área."

Él no pierde el ánimo. A ella la perdimos hace un par de minutos. Pero decide seguir. "Me gustaría que me platicaras un poco de tus competencias." Le dice. Esta entrevista ya se acabó, amigas y amigos. El entrevistado está frito. Feliz, pero frito.

El entrevistado habla de su experiencia en logística. Nada interesante. La entrevistadora lo escucha. Se quita los lentes. Se talla los ojos. Piensa en otras cosas. Ya no está en la entrevista. Él se da cuenta y le dice "¿Te puedo hacer una pregunta?" "Sí", ella responde.

"¿Podemos ser honestos?" añade él. Ella se intriga y le dice "Claro..." El inclina un poco el cuerpo hacia ella. Descansa su antebrazo en la mesa. La ve por un espacio de dos o tres segundos antes de lanzar la pregunta.
"¿Por qué accediste a entrevistarme? Es claro que no tienes interés en mi perfil ni en mi experiencia..." GULP... Ella abre los ojos. No esperaba esa pregunta.
"Esteeee.... " trata de ganar un poco de tiempo antes de responder. "Quedamos en que seríamos honestos" la interrumpe con una ligera sonrisa. Ella lo ve directo a los ojos. Está pensando bien su respuesta. AAAWKARDD!!!!!

"Ok..." le dice ella "La verdad es que Beto me lo pidió." "¿Y por qué dijiste que sí?" revira. Ella tartamudea. Se pone nerviosa. El control de la entrevista está ahora en manos del entrevistado. Se toca el pelo. Se arregla un poco detrás de la oreja. Pinche momento incómodo.

El entrevistado echa su cuerpo para atrás. Se recarga con confianza en el sillón. Le toma un trago a su expreso y le dice: "No hay problema, puedes ser honesta conmigo. A mi edad no me vas a ofender." La entrevistadora no da crédito. El entrevistado tiene control absoluto.

Ella toma valor y le dice que piensa que el perfil de un cincuentón (sí, con esa palabra) no es adecuado para lo que necesitaban en la empresa. Él la escucha con atención. No ha dejado de sonreír en un solo momento. Neta es feliz este wey. "Te agradezco" dice el entrevistado.

Los dos se quedan en silencio. ¿Será que se acabó la entrevista? Los dos voltean a los lados. Parece que están dejando pasar un poco de tiempo para terminar el encuentro.

"¿Te puedo hacer otra pregunta?" le dice el entrevistado. Ella, un poco más relajada, le responde que sí. "Me puedes platicar un problema que tengas en la empresa y que no has podido solucionar." ¡¡¡Jiusten!!!! ¡¡¡¡El entrevistado es ahora el entrevistador!!!!

Ella sonríe. Le gusta el reto, pero le cuestiona por qué querría saber algo así. El entrevistado le dice que solo le gustaría saber.

La entrevistadora accede. Le platica un tema que involucra un sistema que monitorea transporte. Camiones de carga. El escucha con atención. La entrevistadora sigue con el problema y conforme avanza el relato empieza a darle detalles de la situación. Se entusiasma platicando.

La entrevistadora continua diciendo algunas de las posibles soluciones que han intentado. En eso él la interrumpe. "El problema es que no has intentado con ESTA tecnología" Le muestra algo en su iPad. Ella se inclina a ver lo que le está enseñando. Abre los ojos, grandes.

"¿TU CREES?" responde incrédula. "¡CLARO!" Y luego el entrevistado le platica de un caso que el tuvo cuando trabajó en Lala, en Torreón. Y que tuvieron un problema similar con las unidades. Algo de interferencia de telecomunicaciones. Y que con ESA tecnología lo solucionaron.

Ella se echa para atrás. Se le queda viendo fijamente a los ojos con una sonrisa. "¿Te puedo ofrecer una disculpa?" dice la entrevistadora. "No hay necesidad" dice el entrevistado, que por cierto no ha dejado de sonreír en ningún momento de la entrevista. Certifico es FELIZ.

Después de algunas otras preguntas, ya con mejor apertura y actitud de la entrevistadora, le dice: "Me gustaría que te entrevistes con el director. Te juzgue mal y voy a recomendarte para la posición." Él sonríe más fuerte. Se dan la mano. Se despiden. 

Ganó la actitud. 

Fin.

No sé ustedes, pero al menos a mí, a mi edad, fue una tremenda refrescada y recargada de energía positiva para seguir mejorando día a día.

Saludos Gente!


martes, 7 de mayo de 2019

Hackatones divertidos! Juego Adivina el número en Free Pascal

Vaya! Qué divertido es esto! Hice otro hackatón personal para el juego para  mi pareja!

Este juego es tan, pero tan básico, que lo hice en apenas media hora de programación!

Lo mejor es ver el juego terminado y ver que funciona!

Nuevamente publico el código aquí, porque seguro que por eso vinieron, al igual que en mis repositorios de GitHub, y nuevamente sin comentarios ni explicaciones, espero pronto darme tiempo para hacerlo en mis dos juegos recientes.

Mientras tanto, disfruten:

program Adivina_Numero;
{$codepage UTF8}
Uses
Crt;

Var
  Contador, Seleccion, Numero : Integer;
z : char;
salir : boolean;

begin
Clrscr;
Writeln('Adivina el número!');
Writeln;
Writeln('He escogido un número entre el 0 y 100');
Writeln('Adivina cuál es!!!');
Writeln;
Randomize;
Numero := Random(100);
Salir := False;
Contador := 1;
Repeat
Write('Selección número ', Contador, ' : ');
Readln(Seleccion);
If Seleccion = Numero then 
begin
Writeln('Felicidades! Adivinaste cuál es!');
Salir := True;
end
else
begin
If Seleccion > Numero then Writeln('Te pasaste!');
If Seleccion < Numero then Writeln('Te falta!');
If Contador <= 9 then Contador := Contador + 1 
else 
begin
Salir := True;
Writeln('Perdiste!');
end;
end;
Until salir = True;
z:=Readkey;
end.

sábado, 4 de mayo de 2019

Hackatón de juego por atención en Free Pascal

 Hace tiempo leí en twitter, en la cuenta de platzi, sobre un hackatón para crear un videojuego, me pareció una buena idea, hasta ahí.

 Días después,  mi pareja me llega un una sopa de letras en Excel, tengo la idea que se lo hizo un compañero de su trabajo, por lo que, por ganar su atención, se me ocurrió la idea de hacer un hackatón para crear un juego para ella, obviamente en mi lenguaje, Free Pascal, se me ocurrió hacerle el juego Master Mind, en el cual se escogen 4 números, en su primer etapa del 0 al 5, y adivinar tanto los números seleccionados como su posición, y en modo hackatón, en la noche del viernes para entregarlo el sábado.

 Todo bien hasta ahí, excepto porque no lo terminé en esa noche, solo avancé como un 30%, continué el domingo, y terminé hasta el miércoles que volví a dedicarle tiempo. Creo, en total, le dediqué aproximadamente 8 horas repartidas en 3 días.

 Este código lo escribí velozmente, por lo cual no está documentado, ni depurado, ni optimizado, puede contener errores y falta hacerlo más accesible, sin embargo es funcional, y es el motivo principal de esta entrada, mis códigos los estoy subiendo a GitHub, sin embargo, creo que al llegar aquí en búsqueda de información, lo ideal sería que se llevaran la información directamente desde aquí, así que a continuación detallo el código, que puede ser descargado desde GitHub:

program mm;

Uses
Crt;

Var
  n1,n2,n3,n4,c1,c2,c3,c4,i,p,e,t,y : Integer;
z : char;
salir : boolean;

begin
Randomize;
i := 1;
salir := False;
repeat
c1:=random(5);
c2:=random(5);
if c2=c1 then c2:=random(5);
c3:=random(5);
if ((c3=c1) or (c3=c2)) then c3:=random(5);
c4:=random(5);
if ((c4=c1) or (c4=c2) or (c4=c3)) then c4:=random(5);
until ((c1<>c2) and (c1<>c3) and (c1<>c4) and (c2<>c3) and (c2<>c4) and (c3<>c4));
GotoXY(1,1); 
Writeln('Mente Maestra');
GotoXY(1,2);
Writeln('Se han escogido 4 numeros, debes averiguar cuales son y en que posicion estan');
GotoXY(1,3);
Write('Los resultados significan:');
GotoXY(1,4);
Write(' -X- numero correcto posicion correcta; -O- numero correcto posicion incorrecta');
GotoXY(1,5);
Write('Tienes 10 intentos. Adelante!');
    repeat
GotoXY(1,i+6);
Write('Intento ',i,' ->');
GotoXY(14,i+6);
Read(n1);
GotoXY(16,i+6);
Write('-');
GotoXY(18,i+6);
Read(n2);
GotoXY(20,i+6);
Write('-');
GotoXY(22,i+6);
Read(n3);
GotoXY(24,i+6);
Write('-');
GotoXY(26,i+6);
Read(n4);
GotoXY(28,i+6);
p := 0; e := 0;
if (n1=c1) then p:= p+1;
if (n2=c2) then p:= p+1;
if (n3=c3) then p:= p+1;
if (n4=c4) then p:= p+1;
if ((n1=c2) or (n1=c3) or (n1=c4)) then e:= e+1;
if ((n2=c1) or (n2=c3) or (n2=c4)) then e:= e+1;
if ((n3=c1) or (n3=c2) or (n3=c4)) then e:= e+1;
if ((n4=c1) or (n4=c2) or (n4=c3)) then e:= e+1;
GotoXY(32,i+6);
Write('Resultado:');
if p>0 then
begin
for t:=1 to p do
begin
GotoXY(43+t,i+6);
Write('X');
end;
end;
if e>0 then
begin
for y:=1 to e do
begin
GotoXY((43+p+y),i+6);
Write('O');
end;
end;
if p=4 then salir := 
True;
i := i+1;
if i=11 then salir := True;
until (salir=True);
if p=4 then 
begin
GotoXY(40,24);Write('F-E-L-I-C-I-D-A-D-E-S');
end;
if i=11 then
begin
GotoXY(40,24);Write('P-E-R-D-I-S-T-E')
end;
z:=Readkey;
end.

miércoles, 17 de abril de 2019

Avance en proyecto, conexión a MySQL desde Free Pascal

Después de posponer muchos días avances en el proyecto, hoy por fin pude subir los últimos cambios a GitHub.

No son grandes cambios, sin embargo, este proyecto ya puede recibir los datos de conexión dados por el usuario y realizar la conexión a MySQL correctamente.

Uso la unidad MySQL4, porqué? Porque fue la primera que me funcionó, entre varios ejemplo que busqué en la red, esa fue la primera que pude poner a funcionar y la que he usado en mis mini proyectos en mi trabajo. He tratado de buscar información sobre dicha unidad, pero no he podido dedicarle mucho tiempo, así que copié, pegué, modifiqué y funcionó, no entiendo cómo, pero funcionó.

 En primer lugar tengo que cargar la unidad MySQL4 con la función:

Uses
 MySQL4;

 Después hay que declarar las variables que se utilizarán para la conexión, las cuales son:

Var
 servidor    : String    ;
 usuario     : String    ;
 contrasena  : String    ;
 basededatos : String    ;
 query       : Pchar     ;
 sock        : PMYSQL    ;
 alloc       : PMYSQL    ;
 qmysql      : TMYSQL    ;
 recbuf      : PMYSQL_RES;
 rowbuf      : MYSQL_ROW ;

En resumen se inicializa la colección de objetos para usarse con MySQL y después se realiza la conexión con los parámetros adecuados.

  alloc := mysql_init(PMYSQL(@qmysql));
 sock := mysql_real_connect(alloc, PChar(servidor), PChar(usuario), PChar(contrasena), PChar(basededatos), 0, nil, 0);

 Y es todo, con estas líneas de código dejamos nuestro proyecto funcionando con la conexión lista para usar las consultas de MySQL, solo no olviden cerrar la conexión cuando ya no la usen con la función:

mysql_close(sock);

Listo, hasta aquí mi avance, seguimos en proceso...

viernes, 12 de abril de 2019

Acentos en Free Pascal

Entrada veloz, no quiero volver a olvidarla:

Para poder imprimir acentos y "ñ" en FreePascal, basta con agregar,  justo después del Program, la siguiente línea:

 {$codepage UTF8}

Y ya! Eso es todo!

Guardado aquí, espero no se me vuelva a olvidar...

Gracias por su atención

miércoles, 3 de abril de 2019

Proyecto MiGEm en Github

En mis tiempos, cuando inicié con este proyecto, hace muchos, muchos años, el servidor principal para proyectos era Sourceforge, desafortunadamente, y por raro que parezca, no recuerdo mis datos de ingreso!


Afortunadamente, en tiempos actuales, la popularidad se movió a Github, y en ese sí tengo acceso, así que estaré publicando mi código en Github con el nombre del proyecto: migem

No he usado Github, así que por favor, sean pacientes, hago mi esfuerzo por estar al día con las técnicas para compartir código.

Dicho esto, bienvenidos!