Mostrando las entradas con la etiqueta Windows. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Windows. Mostrar todas las entradas

miércoles, 28 de mayo de 2014

Natas; Crónica del virus mexicano


En 1992 Little Loc se registro en Prodigy para buscar información sobre virii. Little Loc, alias James Gentile, a los 16 años había escrito un virus mutante que se dispersaba rápidamente. El virus, Satan Bug, estaba escrito de manera que el proceso mismo de rastrear un disco en busca de infección infectaba todos los ejecutables en el mismo.

Permisos de SQL Server en Windows Vista

Un problema común al usar SQL Server en Windows Vista es que al usar la base de datos por primera vez nos encontramos que no tenemos ningún privilegio administrativo y aparece el error:
'CREATE DATABASE Permission denied in database 'master''

La razón básica en SQL Server 2005  es que los usuarios del grupo administrativo de Windows Vista no reciben por default privilegios administrativos en la base de datos y es necesario realizar un procedimiento para otorgar estos privilegios.
Paso 0:

Login en Vista como adminstrador
Paso 1:

Start > All Programs > Microsoft SQL Server 2005 > Configuration Tools > SQL Server Surface Area Configuration
Paso 2:
'Add New Administrator'
Paso 3:
En el dialogo
    'SQL Server User Provisioning on Vista'
mover
    'Member of the SqlServer SysAdmin role '
de
    'Available Privileges'
a
    'Privileges that will be granted to'
El mismo problema me ocurrió con SQL Server Express 2008, pero por lo menos la versión Express no incluye  la utilería
SQL Server Surface Area Configuration
Como además se me había olvidado el password la solución fue reinstalar el SQL Server Express y entrar al administrador de la base de datos con el usuario sa

Referencias


domingo, 6 de abril de 2014

Ubuntu MRT



La distribución Ubuntu Malware Removal Toolkit 1.2
que llega en formato LiveCD (puede crearse fácilmente un pendrive autoarrancable: LiveUSB) y que promete limpiar de virus y malware un ordenador Windows.

Pero va más allá ya que dispone de soporte RDP, navegación web con Firefox, recuperación de mal timestamp en unidades NTFS, etc. Os dejamos una pequeña lista de las bondades de Ubuntu MRT 1.2

domingo, 15 de septiembre de 2013

X Window Server

Xming is the leading [WWW]X Window Server for Microsoft XP/2008/Windows7. It is a fully featured X Server and is lean, fast, current, simple to install and because it is standalone native Microsoft Windows®, easily made portable (not needing a machine-specific installation).
Xming is totally secure when used with [WWW]SSH and optionally includes an enhanced PuTTY Link SSH client and a portable PuTTY replacement package. Xming can work completely independent of the Window's registry when used with Xming-portablePuTTY.

http://www.ece.uvic.ca/computing/win-xsessions.shtml

domingo, 4 de noviembre de 2012

Poner eñes y tildes

Ya pues otra vez recurriendo al aprendizaje... vale la plena encontrarse este tipo de introducciones cuando lo que se busca, es la ñ, á, Á

Todos los que se han enfrentado a un ordenador extranjero han tenido el mismo problema: ¿Cómo puedo evitar que el receptor crea que tengo varios esfínteres fecales cuando en realidad lo que pretendo es expresar mi edad? Pues bien, he aquí un tratado elemental para evitar ese malentendido, así como otros muchos derivados de la falta de eñes, tildes, interrogaciones, exclamaciones y diéresis en teclados extranjeros:

WINDOWS
- Tilde: Alt Gr + vocal (alternativamente, Ctrl + Alt + vocal)
- ñ: Alt + 164 en el teclado numérico

Además:
- Ñ: Alt + 165
- ¡: Alt + 173
- ¿: Alt + 168
- ü: Alt + 129
- Ü: Alt + 154

Ya sé que aprenderse todos esos numerajos es un rollo patatero, pero en realidad con el 164 de la eñe minúscula basta, ya que el resto no se usan ni tres veces al año. Y para esas veces no les cuesta nada volver a visitar esta página!
* Nota para portátiles: Para activar el teclado numérico (que en los portátiles está escondido entre las teclas de la derecha del teclado) hay que presionar la tecla Fn. Así, para conseguir la Ñ combinaremos Fn + Alt + 165, y con las demás igual. Esto no siempre es efectivo, porque dependiendo del programa que estemos usando pudiera ser que llamemos a otra función distinta. En ese caso:
* Alternativamente podemos cambiar la configuración del teclado, para ello tenemos que abrir la configuración de idioma pinchando en “Start => Contol panel => Regional and Language settings” y seleccionar España o el país que queramos. Después, es cada ventana en la que vayamos a escribir hay que pinchar abajo a la derecha, donde dice “EN”, y seleccionar “español”. Ahora el teclado será español, por lo que hay que andarse con ojo porque las teclas no corresponderán con lo que dicen, pero podremos lograr la Ñ con la tecla del punto y coma, al lado de la L.

MAC
- Tilde: Option + E, y luego la vocal
- Ñ: Option + N, y N otra vez
- ¡: Option + 1 (o la tecla donde esté el !)
- ¿: No hay método rápido. Hay que abrir el “Character Palette” pinchando en la banderita de país de arriba a la derecha y luego “Show Character Palette”.

UBUNTU
En el panel superior, vayan a
System > Preferences > Keyboard > Layouts > Layout Options > Composite Key Position.
Ahí elijan la tecla "compuesta", por ejemplo Alt Gr. Luego simplemente escriban combinaciones de tres teclas


, ' , a = á 
, ~ , n = ñ 
, " , u = ü 
, ? , ? = ¿ 
, c , o = © 
, e , + + = €

sábado, 16 de junio de 2012

Windows 8

Seattle.- A medida que Microsoft Corp se prepara para demostrar al mundo lo que su nuevo Windows 8 puede hacer para la próxima generación de tabletas de alta potencia, las revisiones iniciales del nuevo sistema operativo en el hardware existente resaltan los desafíos que enfrenta la compañía con el nuevo diseño radical de su producto insignia.

La mayor compañía de software del mundo dice que millones de personas ya están utilizando una versión preliminar que descargaron de Windows 8 en sus Pcs, laptos y dispositivos táctiles antes de su introducción oficial este otoño boreal.

En un evento mediático en Los Angeles el lunes, la compañía tiene previsto discutir sus planes de superar al iPad de Apple Inc esta temporada de compras de fin de año.

Hasta el momento, la mayor parte de los críticos han elogiado el aspecto de estilo amigable táctil "Metro" de Windows 8, que está basado en coloridos cuadrados, o mosaicos, que representan aplicaciones como correo electrónico y actualizaciones en tiempo real. Pero también han resaltado lo difícil que será para los usuarios alejarse de lo que ya conocen y confían.

Es como una cierta lucha para la gente que está deliberadamente orientada a una PC, que está acostumbrada al mouse", dijo el ex estratega de Microsoft Al Hilwa.

Hilwa, ahora un analista en la empresa de investigación tecnológica IDC, ha estado probando durante dos semanas la última muestra de la versión. "Sin la pantalla táctil, luchaba con un mouse para hacer ciertas cosas", dijo.

La nueva interfaz Metro solo ejecuta programas diseñados para ella, por lo que los usuarios deben volver a sus tradicionales computadoras de escritorio para realizar ciertas tareas, tales como escuchar música en iTunes de Apple.

"Lo que realmente me enfurece es que las aplicaciones Metro y las aplicaciones que se ejecutan en las computadoras de escritorio no están al tanto de la existencia de la otra", dijo el analista de Forrester Research David Johnson. "No existe una forma fácil de navegar entre ellas, no estoy muy seguro a qué se debe".

La última versión de la prueba del software aún no está concluida. Y aparte de unos pocos examinadores de la industria, nadie ha probado a Windows 8 en una tableta impulsada por los ultra eficientes chips de ARM Holdings, que es lo más cerca que Microsoft se aproximará para desafiar al iPad.

Microsoft debe ofrecer más detalles el lunes, y existen rumores de que podría introducir una tableta con su propia marca. La compañía se negó a hacer comentarios respecto a la reacción al nuevo sistema y sobre sus planes para el evento del lunes.

No obstante, Microsoft no ha logrado convencer aún a algunos de sus usuarios más leales.

"En este momento, no me han comprado", dijo el analista Michael Cherry de Directions on Microsoft, una empresa de investigación independiente que se enfoca en el gigante tecnológico.

Cherry dijo que había insistido con Windows 8 durante algunos días, pero que tuvo problemas para configurar el correo electrónico en su máquina de prueba.

"No puedo confiar en ella como una herramienta de producción", dijo. "Aún no me puedo cambiar. Para este momento, debería haber sido capaz de dejar atrás a Windows 7".

Cherry, un ex gerente de programas de Microsoft, dice que le preocupa que la complejidad inicial del nuevo sistema le impida ser un éxito inmediato, como su predecesor, Windows 7.

"Si una persona que ha utilizado Windows a partir de Windows 1.0 no lo puede entender, entonces imagino que hay otras personas ahí afuera que no lo podrán entender", dijo. "No veremos las largas filas en las tiendas Best Buy a medianoche. Me encantaría ver eso, pero simplemente no sucederá".

Los principales críticos tecnológicos como Walt Mossberg de Wall Street Journal o David Pogue del New York Times no han expresado aún su opinión respecto al tercer y último "anticipo" de Windows 8, disponible libremente en internet el 31 de mayo.

El puñado de comentarios en los blogs centrados en tecnología en general elogiaron el nuevo aspecto de Windows 8, pero prácticamente cada uno ha resaltado lo difícil que será para los usuarios hacer el cambio.

"No podría dar a mi madre -que tiene 76 años- Windows 8 y esperar que sea productiva con el sistema", dijo Johnson de Forrester. "Pero tampoco estoy seguro de que alguien de 30, o incluso 20 años, no se confundirá inicialmente con la interfaz de Metro".

Los consumidores individuales y potenciales compradores del iPad, más que clientes corporativos, son el objetivo principal de Windows 8. Muchas grandes compañías se encuentran aún en el proceso de gastar millones de dólares para cambiarse a Windows 7.

apr

jueves, 29 de marzo de 2012

.NET Compact Framework 2.0

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el código fuente dejo de ser libre.

En el mismo sito de Microsoft hay referencias a ejemplos de aplicaciones móviles que usan las extensiones de OpenNETCF.

El articulo Building a Wi-Fi Discovery Application with the .NET Compact Framework 2.0 explica a detalle una aplicación que usa estas librerías e incluye código fuente. Es un buen ejemplo para empezar a ver el ciclo complete de una aplicación móvil no trivial.



La solución de muestra incluye dos proyectos. La aplicación en si, y el código fuente OpenNETCF referenciado en la misma. Al construir la solución en Visual Studio 2005 se marcan warnings pero los proyectos se construyen con éxito. Se puede probar la aplicación en una Pocket PC 2003. Si la tarjetea de WiFi esta desactivada la aplicación genera una excepción. No es una aplicación de grado comercial pero es una buena referencia de lo que se puede hacer.

El articulo Deploying .NET Compact Framework 2.0 Applications with .cab and .msi Files continua con este ejemplo y explica como hacer un proyecto de instalación.

En un proyecto para aplicaciones inteligentes, cada archivo se marca con una acción de generación que se define en la ventana Propiedades del modo siguiente:

  • Un archivo marcado como Compile, valor predeterminado para todos los archivos y formularios de código, compilará los archivos en el ensamblado resultante.
  • Un archivo marcado como Content permite el empaquetado del archivo en el archivo .cab y su implementación en el proyecto. Asimismo, resulta útil para la implementación de archivos de configuración XML y bases de datos SQL Server CE.
  • Un archivo marcado como None simplemente se ignora. Esta acción resulta útil para incluir documentación en el proyecto, como diagramas de Visio que no se deben implementar.
  • Un archivo marcado como Embedded Resource se incluye en el ensamblado ejecutable como un recurso. Esta acción permite que el código escrito extraiga el recurso mediante programación. Asimismo, resulta eficaz para empaquetar imágenes y archivos de secuencias de comandos que se pueden utilizar posteriormente en la aplicación.

Antes de pasar a construir la aplicación para dispositivos inteligentes y crear los archivos .cab para la implementación, no se debe olvidar cambiar el modo de generación del proyecto de depuración a liberación. Esto reducirá el tamaño del ejecutable en el dispositivo (hecho importante en el caso de los dispositivos inteligentes de almacenamiento restringido) y aumentará la velocidad de ejecución.

Para hacer un proyecto de instalación automatica es necesario efectuar los siguientes pasos:

1. Crear archivos .cab para cada dispositivo donde va a correr la aplicación. Un .cab de instalación puede contener un archivo setup.dll con código no administrado, y por eso se requiere un .cab diferente para cada familia de procesadores. Si la aplicación no requiere de este archivo, entonces un solo .cab es suficiente.

2. Agregar los archivos y entradas de registro de la aplicación a los .cab

3. Proveer el código de acciones especiales a ejecutar durante la instalación y desinstalación de la aplicación.

4. Registrar la aplicación con ActiveSync para que se pueda instalar de la PC de escritorio a la Pocket PC.

5. Empacar todo en un archivo .msi

El primer paso es agregar un proyecto
Other Project types->Setup and deployment->Smart Device Cab Project
a la solución.

Al construir el proyecto se generan 3 archivos un .cab, un .log, y un .inf. El archivo .inf tiene parámetros de instalación que serán usados por ActiveSync.

El .cab es suficiente para instalar una aplicación en la Pocket PC pero es posible agregar un proyecto de instalación de escritorio para simplificar el proceso para el usuario.

Para aplicaciones móviles, hay dos cosas que el instalador debe hacer. Debe presentarle al usuario las pantallas del asistente de instalación en la PC de escritorio y debe instalar la aplicación en la Pocket PC.

La instalación en el Pocket PC se hace a través una aplicación llamada CeAppMgr.exe que es parte de ActiveSync. CeAppMgr.exe requires un archivo .ini que se debe agregar manualmente. En nuestro caso el .ini contiene lo siguiente:

[CEAppManager]
Version = 1.0
Component = OpenNETCF WiFiDiscovery

[OpenNETCF WiFiDiscovery]
Description = Sample WiFi Network Discovery Application using the SDF
CabFiles = WiFiDiscovery.cab

Para activar el modo de depuración de CeAppMgr.exe es necesario meterle mano al Registry. Para los valientes

[HKLM\Software\Microsoft\Windows CE Services\AppMgr]
"ReportErrors"=dword:1

Existen algunos requerimientos que, aunque no son estrictamente necesarios técnicamente, son prácticas establecidas y necesarias para certificación.

Aplicaciones registradas con CeAppMgr deben estar en un subfolder de ActiveSync por ejemplo. Estos requerimientos los maneja el instalador utilizando variables predefinidas de Windows para mayor flexibilidad y para facilitar localización del software en varios idiomas. Para ejecutar estas acciones se agrega una clase de instalación.

Agregamos un proyecto de librerí­a de Windows a la solución de Visual Studio. A este proyecto le agregamos la installer class. Esta clase soporta eventos relacionados con el proceso de instalación y permite definir acciones previas y posteriores al proceso de instalación y al de desinstalación. Por ejemplo,

public CustomInstaller()
{
InitializeComponent();
this.BeforeInstall +=
new InstallEventHandler(CustomInstaller_BeforeInstall);
this.AfterInstall +=
new InstallEventHandler(CustomInstaller_AfterInstall);
this.BeforeUninstall +=
new InstallEventHandler(CustomInstaller_BeforeUninstall);
}

Es necesario definir constantes para usar dentro del código en términos de entradas en el Registry, bajo la llave HKLM.

De esta manera el código sigue siendo valido bajo distintos idiomas y versiones de Windows.

private const string CEAPPMGR_PATH =
@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CEAPPMGR.EXE";
private const string ACTIVESYNC_INSTALL_PATH =
@"SOFTWARE\Microsoft\Windows CE Services";
private const string INSTALLED_DIR = "InstalledDir";
private const string CEAPPMGR_EXE_FILE = @"CEAPPMGR.EXE";
private const string CEAPPMGR_INI_FILE = @"WiFiDiscovery.ini";
private const string APP_SUBDIR = @"\OpenNETCF WiFiDiscovery";
private string TEMP_PATH =
Environment.SystemDirectory + @"\TEMP\WiFiDiscovery";

El ultimo paso es crear el proyecto de instalación.

Other project types ->Setup and deployment->Setup project

Despues de crear el proyecto, realizamos las siguientes acciones:

1. Cambiar el nombre del archivo de salida.

2. Indicar la ubicación de un directorio para guardar archivos temporales. Este direcorio debe estar ubicado de acuerdo a lo que definimos en la clase de instalación.

3. Definir las propiedades del proyecto como compañí­a, nombre de aplicación, etc.

4. Agregar los archivos de salida del proyecto CAB

5. Agregar en la carpeta de aplicación la salida de la clase de instalación

6. Agregar Custom Action usando la clase de instalación

7. Agregar archivo .ini

8. Construir todos los proyectos en la solución

9. Probar el instalador

Para mayor detalle se pueden consultar los articulos originales en el sitio de Microsoft.

El articulo Developing and Deploying Pocket PC Setup Applications aunque obsoleto tiene información complementaria y discute el caso .Net 1.x

Antes de poder ejecutar la aplicación, es preciso instalar .NET Compact Framework en el dispositivo. Si la aplicación requiere SQL Server CE, también será necesario instalar el archivo .cab adecuado. Aunque ambos se instalan automáticamente al implementar la aplicación desde Visual Studio .NET mediante el menú Implementar o al depurar el dispositivo, en producción será necesario emplear un mecanismo diferente.

Como se mencionó anteriormente, los archivos .cab creados para un proyecto no incluyen los archivos .cab correspondientes a .NET Compact Framework o SQL Server CE. Aunque Pocket PC 2003, y dispositivos posteriores, suelen incluir .NET Compact Framework en ROM, será preciso agregar los archivos .cab específicos de la plataforma en cuestión en el caso en que dichos dispositivos no los incluyan. Un modo sencillo de llevar a cabo esta operación para .NET Compact Framework es descargar y ejecutar el redistribuible.

Referencia:

Patrones de implementación para Microsoft .NET Compact Framework

viernes, 31 de julio de 2009

Eclipse C/C++ Development Toolkit (CDT)

C/C++ development with the Eclipse Platform

HOW TO: Use CDT and MinGW for Eclipse (i.e. develop C/C++ applications in windows)


Paso 1:


Bajar de mingw.org lo siguiente:

Paso 2:

Extraer los archivos al directorio c:\mingw\ y instalar mingw32-make-3.80.0-3.exe en c:\mingw\.

Paso 3:

Agregar c:\mingw\bin a la variable de ambiente de sistema Paths. Verificar con el comando gcc -v .



Paso 4:


Descargar Eclipse e instalarlo.

Paso 5:


Instalar C/C++ Development Toolkit (CDT) usando el menú de actualización Help-> Software Updates -> Find and Install -> Search for new Features to Install.

Paso 6:

Crear un proyecto nuevo file->new ->Managed Make C Project.

Paso 7:


Agregar el archivo main.cc con el siguiente código (para probar la instalación):

#include
#include
using namespace std;

int main()
{
string yourName;

cout << "Enter your name: ";
cin >> yourName;
cout << "Hello " + yourName << endl;
return 0;
}




GnuWin32

Win32 (MS Windows 95 / 98 / ME / NT / 2000 / XP / 2003 / Vista) ports de utilerías GNU o similares.

GnuWin32 esta compuesto por implementaciones nativas que no funcionan cuando se requiere un shell tipo unix. Hay que tener cuidado con los paths pues hay conflicto con mingw o cygwin

miércoles, 29 de julio de 2009

Captura de pantalla para Pocket PC

Fann Software ofrece un utileria gartuita para captura de pantallas de Pocket PC Otra opción es Ilium Software Screen Capture, también gratis. HauteCapture es un programa comercial para Windows CE y Windows Mobile. Tiene la ventaja de que las imágenes se guardan directamente en la PC y tiene un modo continuo de captura para presentaciones. Requiere ActiveSync.

viernes, 24 de julio de 2009

SysInternals

Hace algunos años Mark Russinovich tenía un sitio llamado SysInternals donde no solo ofrecía rutinas para realizar operaciones de administración de Windows sino también el correspondiente código fuente y artículos con explicación detallada de la lógica de programación. Afortunadamente para él y desafortunadamente para los hackers curiosos Microsoft le compro el sitio y quito el acceso a los códigos fuentes y las explicaciones sobre el funcionamiento interno de Windows.
 
Ahora Microsoft incluye Windows SysInternals como parte de su sito de soporte con un enfoque de administración de sistemas en vez del de programación que originalmente tenia. No queda más que comprar Windows® Internals: Including Windows Server 2008 and Windows Vista, Fifth Edition (PRO-Developer) y compensar a Russinovich por compartir sus experiencias.

viernes, 13 de julio de 2007

La reutilización de código

Ahora, como antes, más que antes, como siempre, la reutilización de código se presenta como un valor fundamental en el desarrollo de sistemas. Uno de sus aspectos es la interoperabilidad de los códigos. Por decirlo de alguna manera, la compatibilidad de una aplicación con diferentes versiones de un sistema operativo y con diferentes sistemas operativos.

Por un lado Microsoft, por otro los demás. El imperio contra los rebeldes republicanos y los feudos vecinos. Pero dentro del mismo imperio se hablan distintas lenguas y los rebeldes tienen diferentes agendas.



Una aplicación que trabaja en Windows 95 no necesariamente funciona en Windows XP, Visual Basic 6 y Visual Basic .Net son animales distintos. Una aplicación Linux que funciona en la distribución Red Hat no necesariamente funciona en la distribución SuSe. La frase platform independent source en la practica marca una prueba de iniciación para hechiceros.

En el caso de Microsoft, algunas de estas incompatibilidades son de origen mercadológico. ¿Cuál es la diferencia entre Windows XP Home Edition y Windows XP Pro? Limitaciones artificiales en la versión casera con respecto a la versión profesional. Desde el punto de vista de Microsoft este modelo funciona, Vista no tiene 2 versiones distintas sino n, cada una definida por un segmento de mercado. Las utilidades de MS aumentaron 65% con respecto al año pasado y podemos esperar más de lo mismo por lo menos en el corto plazo.

En el caso del movimiento Open Source las incompatibilidades son de origen sociocultural. Distintos grupos trabajan con combinaciones distintas de herramientas y enfoques metodológicos. Estos herramentales se yuxtaponen unos con otros y las combinaciones son infinitas. La versión de gcc pude ser la diferencia clave para que un paquete se construya correctamente.

Una iniciativa que no termino de entender es Mono. El concepto es bueno, pero ya va un par de veces que trato de construir una aplicación .Net para fallar miserablemente. Al revisar la letra chiquita del readme aparece que la aplicación es Mono ¿Cuál es el caso de incluir archivos de solución y proyecto de Visual Studio si VS no puede construir la aplicación? ¿Si se requiere reproducir el ambiente de trabajo del desarrollador con librerí­as y variables de entorno porque no documentar esas dependencias? Entiendo que son pecadillos del bien intencionado pero se me escapa la motivación fundamental del chango.

http://www.go-mono.com/docs/
http://www.codeproject.com/cpnet/hellomono.asp

Un aspecto problemático del desarrollo í­nter plataforma son las interfaces graficas de usuario (GUI). Cada sistema operativo tiene su look-and-feel caracterí­stico y el manejo eficiente de ventanas requiere el uso del API nativo correspondiente.

Un enfoque que se puede tomar es agregar una capa intermedia entre la aplicación y el sistema operativo que abstraiga la interacción entre la capa lógica y la interfase grafica a cambio de una penalización en el rendimiento. Algunos problemas que se pueden presentar con librerí­as de este tipo:

  • El uso de una capa intermedia adicional disminuye el rendimiento de la aplicación.

  • La librerí­a necesaria para soportar la funcionalidad adicional de múltiples sistemas operativos aumenta le tamaño de las aplicaciones más alla de lo que se justifica con la funcionalidad de la aplicación misma. Por lo mismo el soporte para plataforma móvil no es adecuado

  • La apariencia de la aplicación no corresponde a la de una aplicación nativa y los diálogos son distintos a los que los usuarios usan normalmente.

  • La necesidad de definir un mí­nimo común denominador hace que se pierda la oportunidad de usar las características más avanzadas de un sistema operativo en particular.

  • El uso de librerí­as fuera de la esfera de influencia del sistema operativo anfitrión saca a la aplicación del ciclo de vida del mismo y dificulta el proceso de mantener alineadas las actualizaciones de la aplicación con cambios en el sistema operativo.


La tabla siguiente muestra un comparativo de librerí­as para desarrollo ínter plataforma.


























Liberarí­aTamaño (MB)Tamaño comprimido (MB)
Java30+15
GTK+9+4
QT4+2
wxWidgets<1<.5

Java es una norma abierta que funciona bien como propuesta í­nter plataforma. La maquina virtual de java (JVM) aísla la aplicación del sistema operativo anfitrión y esta disponible normalmente en todas partes. Sin embargo las aplicaciones de java tienden a ser chupa recursos. Si revisas los procesos en una estación XP con Firefox instalado, Firefox es normalmente el campeón en memoria utilizada.

GTK+ es un grupo importante de bibliotecas o rutinas para desarrollar interfaces gráficas de usuario (GUI) para principalmente los entornos gráficos GNOME, XFCE y ROX de sistemas Linux. GTK+ es la abreviatura de GIMP toolkit (conjunto de rutinas para GIMP). Es software libre (bajo la licencia LGPL), multiplataforma y parte importante del proyecto GNU. Inicialmente fue creado para desarrollar el programa de manejo de imágenes GIMP, sin embargo actualmente es muy usada por muchos otros programas en los sistemas GNU/Linux. Cabe mencionar que Qt es una alternativa a GTK que también es muy utilizada (en el entorno KDE, por ejemplo).

GTK+ se ha diseñado para permitir programar con lenguajes como C, C++, Java (Sun), Perl o Python.

GTK ha sido portada a Windows pero el look-and-feel no es nativo.

Qt es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario. Fue creada por la compañía noruega Trolltech. Qt es utilizada en KDE, un entorno de escritorio para sistemas como GNU/Linux o FreeBSD, entre otros. Utiliza el lenguaje de programación C++ de forma nativa y además existen bindings para C, Python (PyQt), Java (Qt Jambi), Perl (PerlQt) y Ruby (QtRuby) entre otros. El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante SQL, así­ como uso de XML y una multitud de otros para el manejo de ficheros, además de estructuras de datos tradicionales. Inicialmente Qt apareció como biblioteca desarrollada por Trolltech (en aquel momento "Quasar Technologies") en 1992 siguiendo un desarrollo basado en el código abierto, pero no libre. Se usó activamente en el desarrollo del escritorio KDE (entre 1996 y 1998), con un notable éxito y rápida expansión.

Qt cuenta actualmente con un sistema de doble licencia: una GPL para el desarrollo de software de código abierto (open source) y software libre, y otra de pago para el desarrollo de aplicaciones comerciales. Las librerí­as Qt son también liberadas bajo licencia GPL para Windows y Mac.

wxWidgets son unas bibliotecas multiplataforma, freeware/Open Source para el desarrollo de interfaces gráficas programadas en lenguaje C++. Es una librería pequeña que encapsula en una interfase común llamadas al API nativo de cada sistema operativo.

wxWidgets usan una licencia GPL, concretamente la licencia L-GPL, similar a la GPL con la excepción de que el código binario producido por el usuario a partir de ellas, puede ser propietario, permitiendo desarrollar aplicaciones empresariales sin coste.

Las WxWidgets proporcionan una interfaz gráfica basada en las bibliotecas ya existentes en el sistema (nativas), con lo que se integran de forma óptima y resultan muy portables entre distintos sistemas operativos. Están disponibles para Windows, MacOS, UNIX/Linux, OpenVMS y OS/2. También pueden ser utilizadas desde otros lenguajes de programación, aparte del C++: Java, Javascript, Perl, Python, Smalltalk, Ruby

Minimalist GNU for Windows

MinGW o MinGW32 (Minimalist GNU for Windows) es una implementación de los compiladores GCC para la plataforma Win32, que permite migrar aplicaciones GNU a entornos Windows. Es un derivado de Cygwin en su versión 1.3.3.

MinGW incluye un conjunto de la api de Win32, permitiendo un desarrollo de aplicaciones nativas para esa plataforma, pudiendo generar ejecutables y librerí­as usando la API de Windows.


MinGW fue creado por Colin Peters, el 1 de julio de 1998, compilándolo con Gygwin. La primera versión nativa de MinGW fue realizada por Jan-Jaap van der Heijden, quien también tuvo participación en el proyecto GCC. Mumit Khan estuvo a cargo del mantenimiento del proyecto e incluyo al compilador algunas características propias de Windows. Los archivos de cabecera del API de Windows fueron provistos por Anders Norlander.

Una de las desventajas de MinGW es que los ejecutables que genera son de tamaño más grande que los generados por otros compiladores. Esto ocurre cuando se incluyen los archivos de cabecera estándares de C++ (por ejemplo, #include ), y se debe a que el compilador vincula todas las librerí­as dentro del archivo ejecutable de manera estática.

MinGW incluye MSYS (Minimal SYStem) un shell POSIX/Bourne para ejecutar scripts de configuración usados por make y ./configure

Después de descargar MinGW y MSYS, incluyendo mingw-runtime, w32api, binutils y gcc, gdb y mingw32-make se pueden expandir los archivos de dos formas. Poner el directorio de MinGW dentro de MSYS o instalarlos en directorios distintos y modificar el archivo MSYS /etc/fstab para agregar un apuntador al directorio donde mingw esta instalado.

Para probar la instalación se puede correr el shell de msys y probar el comando de línea

gcc --v

Para habilitar el soporte de IDEs agregar \lib a la variable de entorno LIBRARY_PATH y los subdirectorios bin de y a la variable de entorno PATH
Aplicación de consola:

En un archivo con el nombre hello.c poner el siguiente código:

#include

int main(int argc, char **argv)
{
printf ("Hello\n");
return (0);
}

y compilar con

gcc -c hello.c

y después

gcc -o hello hello.o

Alternativamente

gcc -o hello hello.c

En un archivo con el nombre hello.cpp poner el siguiente código:

#include
int main(int argc, char **argv)
{
std::cout << "Hello" << std::endl;
return (0);
}

y compilar con

g++ -c hello.cpp
g++ -o hello hello.o
Aplicación Windows

En un archivo con el nombre hello.c poner el siguiente código:

#include

int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow)
{
MessageBox (NULL, "Hello", "Hello Demo", MB_OK);
return (0);
}

para crear el ejecutable usar los comandos de linea

gcc -c hello.c

y

gcc -o hello hello.o -mwindows

el parametro -mwindows es necesario para que se incluyan las librerias necesarias para un programa Windows.
dll

En un archivo con el nombre dllfct.h poner el siguiente código:

#ifdef BUILD_DLL
// the dll exports
#define EXPORT __declspec(dllexport)
#else
// the exe imports
#define EXPORT __declspec(dllimport)
#endif

// function to be imported/exported
EXPORT void tstfunc (void);

En un archivo con el nombre dllfct.c poner el siguiente código:

#include
#include "dllfct.h"

EXPORT void tstfunc (void)
{
printf ("Hello\n");
}

En un archivo con el nombre Hello.c poner el siguiente código:

#include "dllfct.h"

int main ()
{
tstfunc ();
return (0);
}

Para crear una dll y un ejecutable que lo use:

gcc -c hello.c
gcc -c -DBUILD_DLL dllfct.c
gcc -shared -o tst.dll -Wl,--out-implib,libtstdll.a dllfct.o
gcc -o hello.exe hello.o -L./ -ltstdll

Se puede especificar el directorio a usar para los includes durante la compilación con

-I/path/to/headers

y las librerias para link:

-L/usr/lib/library

Usualmente no hay necesidad de andar moviendo las librerias.
Archivo .def para un dll

Si tiene un dll llamado file.dll y quiere crear un archivo .def con el nombre file.def,

echo EXPORTS > file.def
nm file.dll | grep ' T _' | sed 's/.* T _//' >> file.def

Para crear una biblioteca con el nombre file.a :

dlltool --def file.def --dllname file.dll --output-lib file.a

Construyendo bzip2 con mingw

bzip2 es una rutina de compresión de código libre. bzip2 es competitivo con las mejores técnicas estadí­sticas (PPM) en términos de compresión pero mucho más rápido. El código de bzip2 esta escrito en ansi c y no tiene dependencias, así­ que quise usarlo para probar varios enfoques para construir los ejecutables en Windows XP siendo una aplicación cuyo ambiente natural es Linux.


mingw


Una diferencia en el modelo de archivos entre Windows y Unix es como se determina si un archivo es ejecutable o no.

En unix los privilegios de ejecución de un archivo están definidos dentro de la estructura interna del archivo y existen utilerí­as como chmod que permiten manipular los privilegios de ejecución.

En Windows, la extensión de un archivo determina si es un ejecutable o no. los archivo ejecutables en Windows tiene la terminación .exe. Existen otras terminaciones de archivos ejecutables, pero si el archivo tiene un terminación que no este en la lista entonces no es un ejecutable. Dicho de otra manera, En Windows, la terminación de un archivo determina que aplicación (ejecutalbe) esta asociada con él.

Para crear el ejecutable de bizp2 usando mingw


Bajar las fuentes de bzip2
Modificar el archivo Makefile quitando las lineas que contengan la instrucción
chmod a+x
En el shell de msys ir al directorio de los fuentes de bzip2 y ejecutar el comando
make install

Visual Studio 2005 command prompt


En el shell de comandos de Visual Studio 2005 ir al directorio de los fuentes de bzip2 y ejecutar el comando
nmake -f makefile.msc

Al ejecutarse el nmake hay algunos warnings pero los ejecutables se generan bien

Visual Studio 2005 Proyecto Visual C++ win32


Abrir un nuevo proyecto del tipo libreria estatica con el nombre de salida libbz2.lib
Agregar los archivos

blocksort.c
huffman.c
crctable.c
randtable.c
compress.c
decompress.c
bzlib.c
bzlib.h
Construir la libreria
Abrir un nuevo proyecto del tipo consola
Agregar el archivo
bzip2.c
Agregar la referencia a libbz2.lib en los archivos de entrada del linker
construir el ejecutable

Herramientas de depuración de Microsoft

Microsoft proporciona de manera gratuita varias herramientas para depuración de aplicaciones, servicos, y núcleo del sistema operativo.





Referencias:

Debugging Tools for Windows - Overview

Debugging Tools and Symbols: Getting Started

Install Debugging Tools for Windows 32-bit Version

How to debug Windows services

DataTips, Visualizers and Viewers Make Debugging .NET Code a Breeze

Dependency Walker

Debugger and Symbols Downloads

Other Download Windows Symbol Packages
Other Install Debugging Tools for Windows 32-bit Version
Other Install Debugging Tools for Windows 64-bit Versions