Así es, gracias a los avances de Wine en compatibilidad es posible instalar Internet Explorer original sobre Linux.
El proceso en si se vuelve un tanto complicado si lo haces de forma manual, IE requiere de muchos detalles y retoques por uno y otro lado, pero esto esta solucionado gracias al proyecto IEs4Linux, con esta utilidad se vuelve bastante trivial el proceso de instalación y puesta en marcha. incluyendo icono en el desktop :P.
Pagina Oficial del proyecto
http://www.tatanka.com.br/ies4linux
¿Por que instalar IE en Linux?
Mientras exista IE y su intento por imponer nuevas tecnologías no estandarizadas en la web y mientras hayan diseñadores que crean que IE es el único navegador, no tendremos el control total con nuestro Firefox xD y sobre todo en sistemas de empresas desarrollados sobre entornos web donde no podremos desecharlos simplemente por no ser compatibles con el estándar.
sábado, 23 de junio de 2007
Ensamblador (asm) en C
Para los que necesiten insertar código ensamblador en C/C++ o bien refrescar la memoria, he encontrado unas guias que considero muy fáciles de entender y aplicar, no son lo mas actual pero si muy bien redactadas:
Tutorial de ASM por Nacho Cabanes
http://www.nachocabanes.com/tutors/asmperif.htm
Técnica de inserción de asm en C
http://tuassembler.googlecode.com/svn/trunk/Codigo/TUAssembler/Documentacion/c-asm.pdf
Nota: La inserción de ASM en C no es estándar, así que cada compilador tiene sus diferencias en torno a esto, siempre revisa la documentación de tu compilador si no estas seguro.
Tutorial de ASM por Nacho Cabanes
http://www.nachocabanes.com/tutors/asmperif.htm
Técnica de inserción de asm en C
http://tuassembler.googlecode.com/svn/trunk/Codigo/TUAssembler/Documentacion/c-asm.pdf
Nota: La inserción de ASM en C no es estándar, así que cada compilador tiene sus diferencias en torno a esto, siempre revisa la documentación de tu compilador si no estas seguro.
miércoles, 20 de junio de 2007
Aprendiendo a programar en Visual Basic 6.0 y anteriores
Este no pretende ser un tutorial de aprendizaje ni nada por el estilo, solo es una pequeña referencia y recomendaciones que buscan orientar a principiantes y evitar que se pierdan en el camino :P, todo esto basado en mis propias experiencias.
Lo primero es aclarar algunas cosas para los que desean crear atractivos entornos gráficos, ventanas, etc., si bien esto es posible de forma sencilla tendrás que esperar un tiempo antes de lanzarte en ello. ¿ Por que ?, porque cuando tocas los gráficos estas tratando directamente con un objeto especifico y se da por entendido que ya manejas el lenguaje…y si aun no lo dominas tendrás muchas dificultades.
¿ Por donde comenzar ?
Esa fue la primera pregunta que me hice cuando comencé con esto, tenía la idea de querer hacer programas con ventanas, botones, música, etc. quería hacer muchas cosas pero no sabía como ni con que. Es así como indagando por ahí encontré sobre el lenguaje Visual Basic que muchos usaban fluidamente. Después de 80MB de descarga y unas 2 semanas de espera con un MODEM de 56kbps :P logre descargarlo e instalarlo, mi primera impresión fue al ver una ventana “formulario/forma” ya creado y listo para diseñar, inserte algunos códigos copiados de una web y probé lo que hacia, todo OK pero seguía sin entender nada y los manuales que encontraba solo me hablaban de objetos, propiedades y API ¿ y el lenguaje donde ?.
¡ Quick Basic !
Jajaja, quien diría que a estas alturas aun es útil este intérprete :P, lo que intento decir con esto es que la mejor forma de aprender Visual Basic a mi parecer es eliminado lo primero “Visual” y comiences a aprender “Basic”!, ¿Por qué?, por la simple razón que así aprenderás el Lenguaje de mejor manera y sin liar con el infinito mundo de la POO y los componentes externos :S. Luego cuando tengas mas soltura podrás migrar a Visual Basic con MUCHOS menos problemas.
¿Qué es QuickBasic?
QuickBasic es uno de los primeros lenguajes de la línea “Basic” (el actual Visual Basic”) y su lenguaje es casi exactamente el mismo e incluso a veces compatible directamente con VB.
QuickBasic es un “Interprete” esto quiere decir que no te genera un programa ejecutable .exe sino que solo ejecuta tu código (hay compiladores de Basic que generan .exe pero tratar esto se aleja del objetivo del texto) y en este caso su interfaz es dentro de una ventana de DOS.
A pesar que QuickBasic parece anticuado puedes hacer muchas cosas con él, desde un simple “Hola Mundo” hasta juegos 2D y 3D tipo DOOM :P.
¿Dónde conseguir QuickBasic?
Lo puedes conseguir fácilmente buscando en la red, yo me he adelantado y encontre lo siguiente:
http://www.ring-apotheke.com/pkworld/qbasic/downloads.htm
Bajar la ultima versión 7.1 o bien la 4.5.
¿Cómo aprendo a programar en QuickBasic?
Para programar en QuickBasic también tienes mucha información en Internet, unas de las mejores páginas y autores son los siguientes:
http://www.nachocabanes.com/
http://www.nachocabanes.com/basic/index.php#quees (Seguir algunos de los links, recomiendo el curso que redacto el mismo “nacho cabanes”).
http://www.elguille.info/
http://www.elguille.info/vb/cursos_vb/basico/indice.htm (Leerlo completo)
Y como ultima recomendación, nunca dejar de investigar cosas nuevas ;).
Lo primero es aclarar algunas cosas para los que desean crear atractivos entornos gráficos, ventanas, etc., si bien esto es posible de forma sencilla tendrás que esperar un tiempo antes de lanzarte en ello. ¿ Por que ?, porque cuando tocas los gráficos estas tratando directamente con un objeto especifico y se da por entendido que ya manejas el lenguaje…y si aun no lo dominas tendrás muchas dificultades.
¿ Por donde comenzar ?
Esa fue la primera pregunta que me hice cuando comencé con esto, tenía la idea de querer hacer programas con ventanas, botones, música, etc. quería hacer muchas cosas pero no sabía como ni con que. Es así como indagando por ahí encontré sobre el lenguaje Visual Basic que muchos usaban fluidamente. Después de 80MB de descarga y unas 2 semanas de espera con un MODEM de 56kbps :P logre descargarlo e instalarlo, mi primera impresión fue al ver una ventana “formulario/forma” ya creado y listo para diseñar, inserte algunos códigos copiados de una web y probé lo que hacia, todo OK pero seguía sin entender nada y los manuales que encontraba solo me hablaban de objetos, propiedades y API ¿ y el lenguaje donde ?.
¡ Quick Basic !
Jajaja, quien diría que a estas alturas aun es útil este intérprete :P, lo que intento decir con esto es que la mejor forma de aprender Visual Basic a mi parecer es eliminado lo primero “Visual” y comiences a aprender “Basic”!, ¿Por qué?, por la simple razón que así aprenderás el Lenguaje de mejor manera y sin liar con el infinito mundo de la POO y los componentes externos :S. Luego cuando tengas mas soltura podrás migrar a Visual Basic con MUCHOS menos problemas.
¿Qué es QuickBasic?
QuickBasic es uno de los primeros lenguajes de la línea “Basic” (el actual Visual Basic”) y su lenguaje es casi exactamente el mismo e incluso a veces compatible directamente con VB.
QuickBasic es un “Interprete” esto quiere decir que no te genera un programa ejecutable .exe sino que solo ejecuta tu código (hay compiladores de Basic que generan .exe pero tratar esto se aleja del objetivo del texto) y en este caso su interfaz es dentro de una ventana de DOS.
A pesar que QuickBasic parece anticuado puedes hacer muchas cosas con él, desde un simple “Hola Mundo” hasta juegos 2D y 3D tipo DOOM :P.
¿Dónde conseguir QuickBasic?
Lo puedes conseguir fácilmente buscando en la red, yo me he adelantado y encontre lo siguiente:
http://www.ring-apotheke.com/pkworld/qbasic/downloads.htm
Bajar la ultima versión 7.1 o bien la 4.5.
¿Cómo aprendo a programar en QuickBasic?
Para programar en QuickBasic también tienes mucha información en Internet, unas de las mejores páginas y autores son los siguientes:
http://www.nachocabanes.com/
http://www.nachocabanes.com/basic/index.php#quees (Seguir algunos de los links, recomiendo el curso que redacto el mismo “nacho cabanes”).
http://www.elguille.info/
http://www.elguille.info/vb/cursos_vb/basico/indice.htm (Leerlo completo)
Y como ultima recomendación, nunca dejar de investigar cosas nuevas ;).
martes, 19 de junio de 2007
Compartiendo datos entre VB6 y C/C++
Como siempre es de utilidad implementar módulos escritos en otro lenguaje a tu interfaz VB, es que explico en breves pasos como crear una DLL en VC++ (aplicable a otros compiladores) para linkearla desde VB6.
Los pasos son los siguientes:
1. En VC++ creamos una dll tradicional (librería dinámica) y procuramos declarar nuestras funciones dentro el bloque:
2. Creamos las funciones pero considerando que el tipo de llamada debe ser WINAPI (que es la estándar de las APIs de windows) y tomando precaución de las compatibilidades entre los tipos de variables de VB y C++ que son muy diferentes.
Para que tengas una idea detallo algunos tipos y sus equivalentes:
Las cadenas tipo String/char *, pueden ser de n caracteres hasta encontrar un caracter NIL ASCII(0).
ej:
LIBRARY 'Nombre Librería'
DESCRIPTION 'Una Descripción'
EXPORTS
MiFuncion1 @1
MiFuncion2 @3
MiFuncion3 @2
Donde el @n especifica la cantidad de parámetros que acepta la función.
4. Ahora y una vez compilada nuestra DLL solo basta linkearla desde la aplicación VB, para ello creamos un nuevo Modulo y declaramos en ella la/las función de la DLL
Public Declare Function MiFuncion1 Lib "MiLibreria.dll" (ByVal Nombre As String) As Long
De esta forma declaramos que existe la función "MiFuncion1" que se encuentra en la librería "MiLibreria.dll" y con 1 parámetro del tipo "ByVal Nombre As String".
Si quieres ejecutar el proyecto desde el entorno IDE del VB, asegurare de declarar la ruta completa a la DLL ej: ...Lib "C:\MiProyecto\MiLibreria.dll"..., de lo contrario no podrá encontrarla. No así si tienes compilado tu proyecto y tu DLL en el mismo directorio.
5. Cuando pasas parámetros a tu DLL debes considerar ciertas cosas:
- Las declaraciones deben ser generalmente ByVal, excepto cuando pasas una estructura como parámetro.
- Cuando pasas un String para que retorne un valor en ella DEBES asignarle espacio!!, esto lo logras con la función
MiString = String(255, Chr$(0))
o simplemente
MiString = Space(255)
Ambas son validas y consiguen su objetivo.
Cuando obtengas una cadena que hayas establecido desde tu DLL, asegurate de limpiarla de caracteres basura que quedan en el espacio sobrante que le asignaste, esto es porque en C el carácter ASCII(0) se considera fin de cadena pero en VB es valido como un caracter mas, así que tendrás que considerar todo lo que este antes de un Chr(0) como tu cadena y el resto será basura.
Los pasos son los siguientes:
1. En VC++ creamos una dll tradicional (librería dinámica) y procuramos declarar nuestras funciones dentro el bloque:
extern "C"
{
funciones
}
2. Creamos las funciones pero considerando que el tipo de llamada debe ser WINAPI (que es la estándar de las APIs de windows) y tomando precaución de las compatibilidades entre los tipos de variables de VB y C++ que son muy diferentes.
Para que tengas una idea detallo algunos tipos y sus equivalentes:
VB Bytes C/C++
----------------------------------------------
Byte 1 char
Integer 2 short
Integer 2 unsigned short
Long 4 int
Long 4 unsigned int
String n char *
Las cadenas tipo String/char *, pueden ser de n caracteres hasta encontrar un caracter NIL ASCII(0).
ej:
extern "C"3. Luego creamos y agregamos al proyecto un archivo con extensión .def, donde colocaremos la definición que será presentada externamente por la DLL:
{
int WINAPI MiFuncion1(char * micadena);
}
int WINAPI MiFuncion1(char * micadena)
{
strcpy(micadena, "Hola Mundo desde C!");
return 0; // Todo OK
}
LIBRARY 'Nombre Librería'
DESCRIPTION 'Una Descripción'
EXPORTS
MiFuncion1 @1
MiFuncion2 @3
MiFuncion3 @2
Donde el @n especifica la cantidad de parámetros que acepta la función.
4. Ahora y una vez compilada nuestra DLL solo basta linkearla desde la aplicación VB, para ello creamos un nuevo Modulo y declaramos en ella la/las función de la DLL
Public Declare Function MiFuncion1 Lib "MiLibreria.dll" (ByVal Nombre As String) As Long
De esta forma declaramos que existe la función "MiFuncion1" que se encuentra en la librería "MiLibreria.dll" y con 1 parámetro del tipo "ByVal Nombre As String".
Si quieres ejecutar el proyecto desde el entorno IDE del VB, asegurare de declarar la ruta completa a la DLL ej: ...Lib "C:\MiProyecto\MiLibreria.dll"..., de lo contrario no podrá encontrarla. No así si tienes compilado tu proyecto y tu DLL en el mismo directorio.
5. Cuando pasas parámetros a tu DLL debes considerar ciertas cosas:
- Las declaraciones deben ser generalmente ByVal, excepto cuando pasas una estructura como parámetro.
- Cuando pasas un String para que retorne un valor en ella DEBES asignarle espacio!!, esto lo logras con la función
MiString = String(255, Chr$(0))
o simplemente
MiString = Space(255)
Ambas son validas y consiguen su objetivo.
Cuando obtengas una cadena que hayas establecido desde tu DLL, asegurate de limpiarla de caracteres basura que quedan en el espacio sobrante que le asignaste, esto es porque en C el carácter ASCII(0) se considera fin de cadena pero en VB es valido como un caracter mas, así que tendrás que considerar todo lo que este antes de un Chr(0) como tu cadena y el resto será basura.
De vuelta en vuelta
Bueno como nada es para siempre, he decidido volver pero en forma de BLOG :P
Hace mucho tiempo que he estado alejado y espero poder ofrecer aquí buen material y propio como es la costumbre de la casa xD. Aunque como no puedo subir archivos me encuentro algo complicado (descartado megaupload y fileshare por manejar tiempos de caducidad)
Así que vuelvo con nuevo animo y esperando ser de utilidad. ;)
PD: Si a alguien le interesa un tema en especifico que lo proponga y veo que puedo hacer.
Hace mucho tiempo que he estado alejado y espero poder ofrecer aquí buen material y propio como es la costumbre de la casa xD. Aunque como no puedo subir archivos me encuentro algo complicado (descartado megaupload y fileshare por manejar tiempos de caducidad)
Así que vuelvo con nuevo animo y esperando ser de utilidad. ;)
PD: Si a alguien le interesa un tema en especifico que lo proponga y veo que puedo hacer.
Suscribirse a:
Entradas (Atom)