<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AP Embedded Systems Development Services</title>
	<atom:link href="http://embedded.zintegra.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://embedded.zintegra.com</link>
	<description>From product conception to lifecycle management</description>
	<lastBuildDate>Tue, 14 Jul 2009 13:14:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hello world!</title>
		<link>http://embedded.zintegra.com/?p=1</link>
		<comments>http://embedded.zintegra.com/?p=1#comments</comments>
		<pubDate>Mon, 13 Jul 2009 16:25:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://d14205790.u30.c2.ixwebhosting.com/?p=1</guid>
		<description><![CDATA[<p>We starting this venture to offer design services for embedded system development with Expertis. Expertis is a small design house based in Monterrey, Mexico. They are very competent and experienced and together we can provide competitive services. The target market is small to medium enterprises that have an idea about a microprocessor-based product but do [...]]]></description>
			<content:encoded><![CDATA[<p>We starting this venture to offer design services for embedded system development with <a href="http://expertis.com.mx/ing/index.htm">Expertis</a>. Expertis is a small design house based in Monterrey, Mexico. They are very competent and experienced and together we can provide competitive services. The target market is small to medium enterprises that have an idea about a microprocessor-based product but do not have the in-house resources to go from idea to product and manufacturing.</p>
]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=1</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Levantamiento de requerimientos</title>
		<link>http://zintegra.blogspot.com/2007/07/levantamiento-de-requerimientos.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/levantamiento-de-requerimientos.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 07:16:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[requerimientos]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-1163969859070523608</guid>
		<description><![CDATA[El siguiente escenario es tí­pico: Un consultor trabaja con los usuarios para describir los procesos de negocioque serán soportados por el software. El equipo de desarrollo recibe la descripción del consultor pero no están familiarizados con los t...]]></description>
			<content:encoded><![CDATA[El siguiente escenario es tí­pico: Un consultor trabaja con los usuarios para describir los procesos de negocioque serán soportados por el software. El equipo de desarrollo recibe la descripción del consultor pero no están familiarizados con los términos de negocio y consideran la descripción demasiado informal. Los desarrolladores escriben su propia descripción desde un punto de vista técnico. El usuario no entiende esta descripción pero la acepta para que el proyecto avance.<br /><br /><span class="fullpost"><br />El resultado puede ser un sistema que desde el punto de vista del usuario es difícil de usar y que no cumple con sus expectativas.<br /><br />Parte de este problema es metodológico, y en parte es intrínseco a las caracterí­sticas de los usuarios. Algunas de las problemáticas que se presentan:<br /><ul><br /> <li>Los usuarios no saben que es lo que quieren</li><br /> <li>Los usuarios no aceptan como un compromiso los requerimientos escritos</li><br /> <li>Los usuarios insistirán en nuevos requerimientos después de fijar costos y agendas.</li><br /> <li>Los usuarios no están disponibles y la comunicación con ellos es lenta</li><br /> <li>Los usuarios no participan en revisiones de avance.</li><br /> <li>Los usuarios no entienden el proceso de desarrollo y no les interesa.</li><br /></ul><br />Existen herramientas y metodologías para <a href="http://en.wikipedia.org/wiki/Requirements_analysis">el levantamiento de requerimientos</a>. Casos de uso y <a href="http://uml.tutorials.trireme.com/">UML</a> son medios para formalizar este proceso. Que diagramas UML es apropiado usar dependerá del sistema a desarrollar.<br /><br />Una guía simple en términos de la complejidad del sistema:<br /><ul><br /> <li>Aplicación monousuario<br /><ul><br /> <li>Diagrama de casos de uso.</li><br /> <li>Diagrama de clases.</li><br /> <li>Diagrama de interacción.</li><br /></ul><br /></li><br /> <li>Aplicación monousuario, con manejo de eventos:<br /><ul><br /> <li>Añadir: Diagrama de estados.</li><br /></ul><br /></li><br /> <li>Aplicación cliente servidor:<br /><ul><br /> <li>Añadir: Diagrama de despliegue y diagrama de componentes, dependiendo de la complejidad.</li><br /></ul><br /></li><br /> <li>Aplicación compleja distribuida:<br /><ul><br /> <li>Todos.</li><br /></ul><br /></li><br /></ul><br />Para una aplicación sencilla debemos realizar entre tres y seis tipos de diagramas, y para una aplicación compleja unos nueve tipos.<br /><br />El diagrama de casos de uso puede modelar el contexto de un sistema o los requisitos del mismo.<br /><br />Se puede extender la colección de elementos base de UML utilizando estereotipos.<br /><br />Referencias:<br /><br /><a href="http://www.databaseanswers.org/data_models/">Database answers</a> es un repositorio con más de 450 esquemas de datos para diferentes aplicaciones. Algunos usados como referencia en la documentación de Micorsoft SQL Server 2005<br /><br />En el caso de .Net, <a href="http://www.dofactory.com/Default.aspx">Design patterns, Â AJAX Design Patterns,Â  and .NET training </a>, tiene ejemplos en C# y VB<br /><br /><a href="https://www6.software.ibm.com/developerworks/education/r-rsmvisual/">https://www6.software.ibm.com/developerworks/education/r-rsmvisual/</a><br /><br /><a href="http://www.programacion.net/tutorial/uml/">http://www.programacion.net/tutorial/uml/</a><br /><br /><a href="http://www.clikear.com/manuales/uml/">http://www.clikear.com/manuales/uml/</a><br /><br /><a href="http://odl-skopje.etf.ukim.edu.mk/uml-help/">http://odl-skopje.etf.ukim.edu.mk/uml-help/</a><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-1163969859070523608?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=36</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eXtreme Programming</title>
		<link>http://zintegra.blogspot.com/2007/07/extreme-programming.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/extreme-programming.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 07:01:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-2292895057442173457</guid>
		<description><![CDATA[Extreme Programming: A gentle introduction.40 % análisis y diseño5 % codificación30 % pruebas y soporte25 % más análisis, diseño, pruebas, y soportePero....5% de los programadores (o menos) hacen 95% del trabajo (o más)Un programador es producti...]]></description>
			<content:encoded><![CDATA[<img src="http://arnulfoperez.com/images/project.gif" alt="diagrama xtrem programming" style="width: 630px; height: 271px" title="diagrama xtrem programming" height="271" width="630" /><br /><br /><span class="fullpost"><br /><br /><a href="http://www.extremeprogramming.org/">Extreme Programming: A gentle introduction</a>.<br /><br />40 % análisis y diseño<br /><br />5 % codificación<br /><br />30 % pruebas y soporte<br /><br />25 % más análisis, diseño, pruebas, y soporte<br /><br />Pero....<br /><br />5% de los programadores (o menos) hacen 95% del trabajo (o más)<br /><br />Un programador es productivo alrededor de 2 a 4 horas diarias en promedio. Por eso los beneficios de programación en pares en realidad no implican un costo en productividad. Antes al contrario, probablemente un equipo de 2 de programadores trabajando bajo el esquema de programación extrema sea 2 a 3 veces más productivo que los mismos programadores trabajando de manera aislada.<br /><br />El enfasis en diseño y pruebas es simplemente una realidad del ciclo de desarrollo:<br /><ul><br /> <li>Un defecto en codificación es un defecto, aunque corregirlo puede generar más defectos.</li><br /> <li>Un error en la fase de diseño produce más de 10 defectos en código</li><br /> <li>Un error en la fase de levantamiento de requerimientos produce más de 100 defectos en código</li><br /></ul><br />Referencias:<br /><br /><a href="http://www.objectmentor.com/resources/articles/ObjectiveView3.pdf">http://www.objectmentor.com/resources/articles/ObjectiveView3.pdf</a><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-2292895057442173457?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=37</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Los operadores de copia e igualdad.</title>
		<link>http://zintegra.blogspot.com/2007/07/los-operadores-de-copia-e-igualdad.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/los-operadores-de-copia-e-igualdad.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:50:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[objeto]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-1305486069096631172</guid>
		<description><![CDATA[Una de las trampas de la orientación a objetos en lenguajes como C# son los operadores de copia e igualdad.En C# al usar el operador = o ==, la igualdad entre objetos referenciados solo se da si en realidad es el mismo objeto y de manera similar al ha...]]></description>
			<content:encoded><![CDATA[Una de las trampas de la orientación a objetos en lenguajes como C# son los operadores de copia e igualdad.<br /><br /><span class="fullpost"><br /><br />En C# al usar el operador = o ==, la igualdad entre objetos referenciados solo se da si en realidad es el mismo objeto y de manera similar al hacer una copia nos podemos llevar una sorpresa si no tenemos cuidado de estar copiando la referencia o el contenido. Por eso la interfaz ICloneable es controversial porque su significado es ambiguo<br /><br />Referencias:<br /><br /><a href="http://blogs.clearscreen.com/jgonzalvo/archive/2005/02/13/1031.aspx">Implementar ICloneable mediante serialización </a><br /><br /><a href="http://blogs.clearscreen.com/jgonzalvo/archive/2005/02/13/1031.aspx"></a><br /><br /><a href="http://msdn2.microsoft.com/en-us/library/system.icloneable.aspx">ICloneable Interface </a><br /><br /><a href="http://blogs.msdn.com/brada/archive/2004/05/03/125427.aspx">Should we Obsolete ICloneable (The SLAR on System.ICloneable)</a><br /><br /><a href="http://www.thescripts.com/forum/thread504562.html">IClonable deep vs shallow, best practise </a><br /><br /><a href="http://www.codeproject.com/csharp/dotnetattributes.asp">Creating and Using Attributes in your .NET application</a><br /><br /><a href="http://msdn2.microsoft.com/en-us/library/ms131187.aspx">IEquatable Generic Interface</a><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-1305486069096631172?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET Compact Framework 2.0</title>
		<link>http://zintegra.blogspot.com/2007/07/net-compact-framework-20.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/net-compact-framework-20.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:45:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[CE]]></category>
		<category><![CDATA[código libre]]></category>
		<category><![CDATA[compact framework]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[movil]]></category>
		<category><![CDATA[pocket PC]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-1044236539145722507</guid>
		<description><![CDATA[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]]></description>
			<content:encoded><![CDATA[<a href="http://www.opennetcf.org/home.ocf">OpenNETCF.org</a> 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.<br /><br />En el mismo sito de Microsoft hay referencias a ejemplos de aplicaciones móviles que usan las extensiones de OpenNETCF.<br /><br />El articulo <a href="http://msdn2.microsoft.com/en-us/library/aa446491.aspx">Building a Wi-Fi Discovery Application with the .NET Compact Framework 2.0</a> 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.<br /><br /><span class="fullpost"><br /><br />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.<br /><br />El articulo <a href="http://msdn2.microsoft.com/en-us/library/aa446504.aspx">Deploying .NET Compact Framework 2.0 Applications with .cab and .msi Files</a> continua con este ejemplo y explica como hacer un proyecto de instalación.<br /><br />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:<br /><ul><br /> <li>Un archivo marcado como Compile, valor predeterminado para todos los archivos y formularios de código, compilará los archivos en el ensamblado resultante.</li><br /> <li>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.</li><br /> <li>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.</li><br /> <li>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.</li><br /></ul><br />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.<br /><br />Para hacer un<a href="http://msdn2.microsoft.com/en-us/library/aa234206(VS.60).aspx"> proyecto de instalación automatica</a> es necesario efectuar los siguientes pasos:<br /><br />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.<br /><br />2. Agregar los archivos y entradas de registro de la aplicación a los .cab<br /><br />3. Proveer el código de acciones especiales a ejecutar durante la instalación y desinstalación de la aplicación.<br /><br />4. Registrar la aplicación con ActiveSync para que se pueda instalar de la PC de escritorio a la Pocket PC.<br /><br />5. Empacar todo en un archivo .msi<br /><br />El primer paso es agregar un proyecto<br />Other Project types-&gt;Setup and deployment-&gt;Smart Device Cab Project<br />a la solución.<br /><br />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.<br /><br />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.<br /><br />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.<br /><br />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:<br /><br />[CEAppManager]<br />Version = 1.0<br />Component = OpenNETCF WiFiDiscovery<br /><br />[OpenNETCF WiFiDiscovery]<br />Description = Sample WiFi Network Discovery Application using the SDF<br />CabFiles = WiFiDiscovery.cab<br /><br />Para activar el modo de depuración de CeAppMgr.exe es necesario meterle mano al Registry. Para los valientes<br /><br />[HKLM\Software\Microsoft\Windows CE Services\AppMgr]<br />"ReportErrors"=dword:1<br /><br />Existen algunos requerimientos que, aunque no son estrictamente necesarios técnicamente, son prácticas establecidas y necesarias para certificación.<br /><br />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.<br /><br />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,<br /><br />public CustomInstaller()<br />{<br />InitializeComponent();<br />this.BeforeInstall +=<br />new InstallEventHandler(CustomInstaller_BeforeInstall);<br />this.AfterInstall +=<br />new InstallEventHandler(CustomInstaller_AfterInstall);<br />this.BeforeUninstall +=<br />new InstallEventHandler(CustomInstaller_BeforeUninstall);<br />}<br /><br />Es necesario definir constantes para usar dentro del código en términos de entradas en el Registry, bajo la llave HKLM.<br /><br />De esta manera el código sigue siendo valido bajo distintos idiomas y versiones de Windows.<br /><br />private const string CEAPPMGR_PATH =<br />@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CEAPPMGR.EXE";<br />private const string ACTIVESYNC_INSTALL_PATH =<br />@"SOFTWARE\Microsoft\Windows CE Services";<br />private const string INSTALLED_DIR = "InstalledDir";<br />private const string CEAPPMGR_EXE_FILE = @"CEAPPMGR.EXE";<br />private const string CEAPPMGR_INI_FILE = @"WiFiDiscovery.ini";<br />private const string APP_SUBDIR = @"\OpenNETCF WiFiDiscovery";<br />private string TEMP_PATH =<br />Environment.SystemDirectory + @"\TEMP\WiFiDiscovery";<br /><br />El ultimo paso es crear el proyecto de instalación.<br /><br />Other project types -&gt;Setup and deployment-&gt;Setup project<br /><br />Despues de crear el proyecto, realizamos las siguientes acciones:<br /><br />1. Cambiar el nombre del archivo de salida.<br /><br />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.<br /><br />3. Definir las propiedades del proyecto como compañí­a, nombre de aplicación, etc.<br /><br />4. Agregar los archivos de salida del proyecto CAB<br /><br />5. Agregar en la carpeta de aplicación la salida de la clase de instalación<br /><br />6. Agregar Custom Action usando la clase de instalación<br /><br />7. Agregar archivo .ini<br /><br />8. Construir todos los proyectos en la solución<br /><br />9. Probar el instalador<br /><br />Para mayor detalle se pueden consultar los articulos originales en el sitio de Microsoft.<br /><br />El articulo <a href="http://msdn2.microsoft.com/en-us/library/ms838273.aspx">Developing and Deploying Pocket PC Setup Applications</a> aunque obsoleto tiene información complementaria y discute el caso .Net 1.x<br /><br />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.<br /><br />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.<br /><br />Referencia:<br /><br /><a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/070205/voices/DeploymentPatterns.mspx">Patrones de implementación para Microsoft .NET Compact Framework</a><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-1044236539145722507?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=39</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libreria empresarial del grupo de patrones y practicas de Microsoft</title>
		<link>http://zintegra.blogspot.com/2007/07/libreria-empresarial-del-grupo-de.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/libreria-empresarial-del-grupo-de.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:41:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[empresarial]]></category>
		<category><![CDATA[libreria]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[patron]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-3162321446497268227</guid>
		<description><![CDATA[La última versión de la Enterprise Library del grupo de Patterns and Practices de Microsoft  se libero en mayo del 2007 y es compatible con .Net 2.0 y 3.0.Información actualizada y material didactico se puede localizar en el sitio comunitario de la ...]]></description>
			<content:encoded><![CDATA[La última versión de la <a href="http://msdn2.microsoft.com/en-us/library/aa480453.aspx">Enterprise Library </a>del grupo de <a href="http://msdn2.microsoft.com/en-us/practices/default.aspx">Patterns and Practices de Microsoft </a> se libero en mayo del 2007 y es compatible con .Net 2.0 y 3.0.<br /><br />Información actualizada y material didactico se puede localizar en el <a href="http://www.codeplex.com/entlib">sitio comunitario de la libreria empresarial</a>.<br /><br /><span class="fullpost"><br /><h4><a href="http://blogs.msdn.com/juanlozv/archive/2005/01/03/346004.aspx">Enterprise Library: La evolución de los .NET Application Blocks de patterns &amp; practices </a></h4><br />Entlib - Enterprise Library es la evolución de los Bloques Aplicativos .NET que han sido desarrollados por el Grupo PAG (Microsoft Platform Architecture Guidance) dentro de Microsoft. Este grupo genera guías y arquitecturas de referencia, patrones de diseño, y código fuente desarrollado con la implementación de diversos escenarios tecnológicos.<br /><br />Los desarrolladores en su momento puden usar la guía para comprender las mejores prácticas referenciadas y sugeridas por Microsoft para aplicaciones .NET; o incorporar el bloque aplicativo como tal dentro de sus desarrollos, en su formato original y/o extendido.<br /><br />Los “Bloques Aplicativos .NET" que en su momento fueron liberados son los siguientes:<br /><ul><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/authpro.asp" minmax_bound="true">Authorization and Profile Application Block</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/CachingBlock.asp" minmax_bound="true">Caching Application Block for .NET</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/cmab.asp" minmax_bound="true">Configuration Management Application Block for .NET</a></li><br /> <li><a href="http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp" minmax_bound="true">Data Access Application Block for .NET</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/emab-rm.asp" minmax_bound="true">Exception Management Application Block for .NET</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/Logging.asp?frame=true" minmax_bound="true">Logging Application Block</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/offline.asp" minmax_bound="true">Smart Client Offline Application Block</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/updater.asp" minmax_bound="true">Updater Application Block for .NET</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/uipab.asp" minmax_bound="true">User Interface Process Application Block - Version 2.0</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/uip.asp" minmax_bound="true">User Interface Process Application Block for .NET</a></li><br /> <li><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/wsfacadelegacyapp.asp" minmax_bound="true">Web Service Façade for Legacy Applications</a></li><br /></ul><br />Por la forma gradual en que fueron desarrollados dichos bloques aplicativos, los mismos estaban desintegrados y la experiencia de utilización e extensibilidad eran diferentes entre si. Además que la utilización de cada uno de dichas piezas de software obligaba a la instalación de componentes de software independientes.<br /><br />Con estas áreas de oportunidad la nueva versión de los “.NET Application Blocks” se integró con la nueva etiqueta de <em>Enterprise Library</em>. El grupo de PAG ha anunciado lo siguiente:<br /><blockquote>Entlib es una librería de activos de software reutilizable que atenderá los retos comunes en el desarrollo del software empresarial.<br /><br />Entlib está focalizado en la consistencia, extensibilidad, fácil utilización e integración de los diversos bloques aplicativos existentes y futuros.</blockquote><br />Es importante aclarar que <strong minmax_bound="true">Enterprise Libray</strong> no es un producto como tal, sino que es un componente de software que es proporcionado como está, pero del cual se puede contratar soporte directamente de Microsoft, tratado bajo un esquema parecido al código escrito por los usuarios.<br /><h4>Recursos relacionados:</h4><br /><ol><br /> <li><a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=1&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=4c557c63-708f-4280-8f0c-637481c31718&amp;u=http%3a%2f%2fmsdn.microsoft.com%2fservicefactory"><font color="#0033cc">Web Service Software Factory</font></a></li><br /> <li><a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=2&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=4c557c63-708f-4280-8f0c-637481c31718&amp;u=http%3a%2f%2fmsdn.microsoft.com%2fsmartclientfactory"><font color="#0033cc">Smart Client Software Factory</font></a></li><br /> <li><a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=4c557c63-708f-4280-8f0c-637481c31718&amp;u=http%3a%2f%2fmsdn.microsoft.com%2fwebclientfactory"><font color="#0033cc">Web Client Software Factory</font></a></li><br /> <li><a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=4&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=4c557c63-708f-4280-8f0c-637481c31718&amp;u=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2fteamsystem%2faa718948.aspx"><font color="#0033cc">Guidance Automation Extensions and Guidance Automation Toolkit</font></a></li><br /></ol><br /><h4>Requerimientos:</h4><br /><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><br /><ul><br /> <li><strong>Sistema oprativo: </strong>Windows Server 2003; Windows Vista; Windows XP</li><br /></ul><br />Note: If you already have the Enterprise Library 3.0 installed, you must uninstall it before installing the Enterprise Library 3.1. However, you can install the Enterprise Library 3.0 or the Enterprise Library 3.1 when 2.0 is already installed.<br /><ul><br /> <li>Microsoft .NET Framework 2.0 or 3.0. You need .NET Framework 3.0 for the<br />Application Block Software Factory and the WCF adapters for the Validation<br />Application Block and Exception Handling Application Block</li><br /> <li>Microsoft Visual Studio 2005 development system (any of the following<br />editions):<br /><ul><br /> <li>Microsoft Visual Studio 2005 Standard Edition</li><br /> <li>Microsoft Visual Studio 2005 Professional Edition</li><br /> <li>Microsoft Visual Studio 2005 Team Edition for Software Developers</li><br /> <li>Microsoft Visual Studio 2005 Team Edition for Software Testers</li><br /> <li>Microsoft Visual Studio 2005 Team Edition for Software Architects</li><br /> <li>Microsoft Visual Studio 2005 Team Suite</li><br /></ul><br /></li><br /> <li>To use the Application Block Software Factory and the Strong-Naming<br />Guidance Package, you need the Guidance Automation Extensions (GAX). To<br />modify these guidance packages, you also need the Guidance Automation<br />Toolkit (GAT).</li><br /> <li>Some blocks and samples require the use of Microsoft SQL Server or other<br />database products.</li><br /> <li>Visual Studio Team System or NUnit 2.2 is required if you want to<br />execute unit tests.</li><br /></ul><br /><h3>Referencias:</h3><br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=4c557c63-708f-4280-8f0c-637481c31718&amp;displaylang=en">Enterprise Library 3.1 - May 2007</a><br /><br /><a href="http://blogs.msdn.com/juanlozv/default.aspx" minmax_bound="true">Juan Carlos Lozada's WebLog</a><br /><br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=72386CE5-F206-4D5C-AB09-413B5F31F935&amp;displaylang=en#Overview">Acropolis</a><br /><h3><a title="AppBlocksMoreInfo" name="AppBlocksMoreInfo"></a>More Information</h3><br /><p class="Hero">&nbsp;</p><br /><br /><h3></h3><br /><table class="headlines_table"><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/aa480453.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl02',this);"><strong>Enterprise Library</strong></a><br />The patterns &amp; practices Enterprise Library is a library of reusable and extensible application blocks designed to assist developers with common enterprise development challenges. Enterprise Library 3.0 contains application blocks for Caching, Cryptography, Data Access, Exception Handling, Logging, Policy Injection, Security and Validation.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms954815.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl03',this);"><strong>Caching Application Block</strong></a><br />The Caching Application Block is a component of Enterprise Library which provides a flexible and extensible caching mechanism for use in client and server-side .NET development projects.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/aa480450.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl04',this);"><strong>Smart Client - Composite UI Application Block</strong></a><br />Are you building applications with complex user interfaces? Do you want to take full advantage of the power of the Microsoft Windows desktop? Check out this recently released application block that provides guidance on building world-class, enterprise ready, client applications. Available both in C# and Visual Basic .NET.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms954823.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl05',this);"><strong>Cryptography Application Block</strong></a><br />The Cryptography Application Block is a component of Enterprise Library which makes it easier to include cryptographic functionality in .NET applications. The block provides a simple interface to DPAPI, symmetric encryption and hashing, and uses the Enterprise Library configuration tool to simplify key management.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms954827.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl06',this);"><strong>Data Access Application Block</strong></a><br />The Data Access Application Block is a component of Enterprise Library which reduces the amount of custom code that you need to create, test, and maintain when building data access layers in .NET applications.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms954830.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl07',this);"><strong>Exception Handling Application Block</strong></a><br />The Exception Handling Application Block is a component of Enterprise Library that makes it easier to implement consistent exception handling policies at logical tiers in an application. Exception policies can be configured to perform tasks such as logging exceptions, wrapping or replacing exception types.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms998162.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl08',this);"><strong>Logging Application Block</strong></a><br />The Logging Application Block is a component of Enterprise Library that allows developers to instrument their applications with logging and tracing calls. Log and trace messages can be filtered, formatted and routed to a choice of trace listeners, including the event log, text files, database or WMI.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/bb410104.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl09',this);" title="New Link"><strong>Policy Injection Application Block</strong></a><br />The Policy Injection Application Block is a component of Enterprise Library which allows developers to specify the crosscutting behavior of objects in terms of a set of policies. Crosscutting concerns are the necessary tasks, features, or processes that are common across different objects. Examples are logging, authorization, validation, and instrumentation.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms998385.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl10',this);"><strong>Security Application Block</strong></a><br />The Security Application Block is a component of Enterprise Library that builds on the capabilities of the Microsoft .NET Framework to help you perform authentication, authorization, check role membership and access profile information.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/bb410105.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl11',this);" title="New Link"><strong>Validation Application Block</strong></a><br />The Validation Application Block is a component of Enterprise Library which provides a common approach to defining validation rules for your business objects that allows them to be reused across different layers of your application.</td><br /></tr><br /><tr><br /><td class="headlines_td_image" valign="top">&nbsp;</td><br /><td class="headlines_td_text" valign="top"><a href="http://msdn2.microsoft.com/en-us/library/ms979218.aspx" onclick="javascript:Track('ctl00_ctl01|ctl00_ctl12',this);"><strong>Web Service Facade for Legacy Applications</strong></a><br />This guide discusses best practices for interfacing with legacy applications by using Microsoft® ASP.NET Web services and the Microsoft .NET Framework. The .NET Framework provides the foundation for creating a Legacy Application Interface solution using Microsoft technologies. This guide provides a sample solution using a Microsoft FoxPro® database as the legacy application and connecting it to a .NET-based application using ASP.NET Web services and SOAP. The specific technologies involved are ASP.NET, C# or the Microsoft Visual Basic® .NET development system, the .NET Framework, XML, Visual Basic, COM, and ADO.</td><br /></tr><br /></table><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-3162321446497268227?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La reutilización de código</title>
		<link>http://zintegra.blogspot.com/2007/07/la-reutilizacin-de-cdigo.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/la-reutilizacin-de-cdigo.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:35:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[código libre]]></category>
		<category><![CDATA[libreria]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[nix]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-4152572541287651436</guid>
		<description><![CDATA[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 compatibilid...]]></description>
			<content:encoded><![CDATA[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.<br /><br />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.<br /><br /><span class="fullpost"><br /><br />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 <em>platform independent source</em> en la practica marca una prueba de iniciación para hechiceros.<br /><br />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.<br /><br />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.<br /><br />Una iniciativa que no termino de entender es <a href="http://www.mono-project.com/Start">Mono</a>. 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.<br /><br /><a href="http://www.go-mono.com/docs/">http://www.go-mono.com/docs/</a><br /><a href="http://www.codeproject.com/cpnet/hellomono.asp">http://www.codeproject.com/cpnet/hellomono.asp</a><br /><br />Un aspecto problemático del desarrollo í­nter plataforma son las interfaces graficas de usuario (GUI). Cada sistema operativo tiene su<em> look-and-feel</em> caracterí­stico y el manejo eficiente de ventanas requiere el uso del API nativo correspondiente.<br /><br />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:<br /><ul><br /> <li>El uso de una capa intermedia adicional disminuye el rendimiento de la aplicación.</li><br /> <li>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</li><br /> <li>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.</li><br /> <li>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.</li><br /> <li>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.</li><br /></ul><br />La tabla siguiente muestra un comparativo de librerí­as para desarrollo ínter plataforma.<br /><table><br /><tr><br /><td>Liberarí­a</td><br /><td>Tamaño (MB)</td><br /><td>Tamaño comprimido (MB)</td><br /></tr><br /><tr><br /><td>Java</td><br /><td>30+</td><br /><td>15</td><br /></tr><br /><tr><br /><td>GTK+</td><br /><td>9+</td><br /><td>4</td><br /></tr><br /><tr><br /><td>QT</td><br /><td>4+</td><br /><td>2</td><br /></tr><br /><tr><br /><td>wxWidgets</td><br /><td>&lt;1</td><br /><td>&lt;.5</td><br /></tr><br /></table><br />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.<br /><br /><a href="http://es.wikipedia.org/wiki/GTK+">GTK+</a> 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).<br /><br />GTK+ se ha diseñado para permitir programar con lenguajes como C, C++, Java (Sun), Perl o Python.<br /><br />GTK ha sido portada a Windows pero el look-and-feel no es nativo.<br /><br /><a href="http://es.wikipedia.org/wiki/Qt_(biblioteca)">Qt</a> 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.<br /><br />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.<br /><br /><a href="http://es.wikipedia.org/wiki/WxWidgets">wxWidgets</a> 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.<br /><br /><a href="http://www.wxwidgets.org/about/">wxWidgets</a> 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.<br /><br />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<br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-4152572541287651436?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=41</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lisp y Scheme</title>
		<link>http://zintegra.blogspot.com/2007/07/lisp-y-scheme.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/lisp-y-scheme.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:30:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Lisp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-7496272750316841568</guid>
		<description><![CDATA[Una de las cosas que me llaman la atención es la convicción tan grande que los programadores de Lisp tienen en el poder de sus paréntesis.Aún en el contexto de desarrollo Web Paul Graham ha llamado a Lisp su arma secreta, y en el manual de como con...]]></description>
			<content:encoded><![CDATA[Una de las cosas que me llaman la atención es la <a href="http://www.catb.org/~esr/faqs/hacker-howto.html">convicción</a> tan grande que los programadores de <a href="http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Lisp</a> tienen en el poder de sus paréntesis.<br /><br /><span class="fullpost"><br /><br />Aún en el contexto de desarrollo Web <a href="http://www.paulgraham.com/index.html">Paul Graham</a> ha llamado a Lisp su <a href="http://www.paulgraham.com/avg.html">arma secreta</a>, y en el manual de <a href="http://www.catb.org/~esr/faqs/hacker-howto.html">como convertirse en un Hacker</a> de Eric Steven Raymond Lisp se presenta como un experiencia mística. Peter Norvig, en <a href="http://www.norvig.com/21-days.html" >Teach Yourself Programming in Ten Years</a> recomienda aprender lenguajes que soporten abstracción de clases (como Java), abstracción funcional (como <a href="http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Lisp</a>), abstracción sintáctica (como Lisp), especificación declarativa (como Prolog), corutinas (como Scheme), y paralelismo (como Sisal).<br /><br />El enfoque funcional parece ser fundamental y, por ejemplo, el equipo de desarrollo de C# ha hecho un esfuerzo por soportar este paradigma en la nueva versión a través del mecanismo de delegados.<br /><br />Es claro que el río suena porque agua lleva. Para el interesado hay <a href="http://www.cs.sfu.ca/CC/310/pwfong/Lisp/1/tutorial1.html">material introductorio</a> abundante pero lograr la iluminación requerirá tiempo y esfuerzo.<br /><br />Para Lisp, como lo indica su nombre, todo son listas y los comando básicos (<em>constructors, selectors y recognizers</em>) son para manipular las mismas:<br /><blockquote><strong>quote</strong> para diferenciar una lista de una llamada a función.<br /><strong>first</strong> y <strong>rest</strong> para separar listas en sus partes.<br /><strong>cons</strong> para construir listas.<br /><strong>null</strong> y <strong>consp</strong> para ver si una lista esta vacía.<br /><strong>member</strong> para verificar si un elemento es miembro de una lista.<br /><strong>append</strong> para unir listas.</blockquote><br /><a href="http://www.lisp.org/alu/home">Lisp</a> tiene varios dialectos: Common Lisp y Scheme son algunos de los más difundidos. <a href="http://clisp.cons.org/">CLisp</a> es un implementación de Common Lisp y <a href="http://student.agh.edu.pl/~kwlodarc/visualclisp/">Visual CLisp</a> es un puerto a Windows con un GUI. Otra alternativa es <a href="http://www.cons.org/cmucl/">CMUCL.</a><br /><br /><a href="http://www.ccs.neu.edu/home/dorai/index.html">Dorai Sitaram</a> tiene un sitio con ligas a recursos sobre Scheme y Common Lisp, incluyendo un tutorial bastante bueno.<br /><br /><a href="http://www.plt-scheme.org/software/drscheme/">drscheme</a> incluye varias <a href="http://www.cs.utah.edu/plt/mailarch/plt-scheme-2002/msg00299.html">implementaciones de Scheme</a> bajo una interfaz común orientada a un ambiente académico.<br /><a href="http://cs.wwc.edu/KU/PR/Scheme.html">Las funciones de Scheme para manipular listas son</a>:<br /><br /><dl> <dt><strong>cons</strong></dt> <dd>toma dos argumentos y regresa un par o lista.</dd><br /><blockquote><br /><pre><br />(cons '1 '2)              is   (1 . 2)</pre><br /></blockquote><br />El primer ejemplo es un par y los otros son listas. Pares o listas se pueden utilizar para implementar registros.<br /><br /><dt><strong>car</strong></dt> <dd>regresa el primer miembro de una lista o par.</dd><br /><blockquote><br /><pre><br />(car '(123 245 564 898))             is   123</pre><br /></blockquote><br /><dt><strong>cdr</strong></dt> <dd>regresa la lista sin el primer elemento.</dd><br /><blockquote><br /><pre><br />(cdr '(7 6 5))               is  (6 5)</pre><br /></blockquote><br /><dt><strong>null?</strong></dt> <dd>regresa \#t si el objeto es la lista nula. En cualquier otro caso regresa la lista nula.</dd> <dt><strong>list</strong></dt> <dd>regresa un alista construida de los argumentos.</dd><br /><blockquote><br /><pre><br />(list 'a)                          is  (a)</pre><br /></blockquote><br /><dt><strong>length</strong></dt> <dd>regresa la longitud de la lista.</dd><br /><blockquote><br /><pre>     (length '(1 3 5 9 11)) is  5</pre><br /></blockquote><br /><dt><strong>reverse</strong></dt> <dd>regresa la lista invertida.</dd><br /><blockquote><br /><pre>     (reverse '(1 3 5 9 11)) is  (11 9 5 3 1)</pre><br /></blockquote><br /><dt><strong>append</strong></dt> <dd>regresa la concatenación de dos listas.</dd><br /><blockquote><br /><pre>     (append '(1 3 5)  '(9 11))  is  (1 3 5 9 11)</pre><br /></blockquote><br /></dl>Expresiones condicionales son de la forma:<br /><blockquote><br /><pre>(if <em>test-exp then-exp</em>)</pre><br /><pre>(if <em>test-exp then-exp else-exp</em>).</pre><br /></blockquote><br />Definiciones son de la forma:<br /><blockquote><br /><pre>     (define <em>id exp</em>)</pre><br /></blockquote><br />Expresiones Lambda son funciones anónimas de la forma:<br /><blockquote><br /><pre>         (lambda (<em>id...</em>) <em>exp</em> )</pre><br /></blockquote><br />Definiciones locales se introducen con las funciones <tt>let</tt>, <tt>let*</tt> y <tt>letrec</tt>. let se aplica en paralelo, let* es secuencial, y letrec permite definiciones recursivas.<br /><br /><dl><br /> <li><strong>apply</strong> regresa el resultado de aplicar el primer argumento al segundo.</li><br /><pre><tt>1 ]=&gt;  (apply + '(7 5))</tt><tt></tt><tt> <br /><br /></tt><tt>;Value:   12</tt><tt></tt><tt> <br /><br /></tt><tt>1 ]=&gt;  (apply max '(3 7 2 9))</tt><br /><tt> <br /><br /></tt><tt>;Value:   9</tt></pre><br /> <li><strong>map</strong> regresa una lista que es el resultado de aplicar el primer argumento a cada elemento del segundo.</li><br /><pre><tt>1 ]=&gt;   (map odd? '(2 3 4 5 6))</tt><tt></tt><tt> <br /><br /></tt><tt>;Value: (() #T () #T ())</tt></pre><br /></dl><br /><h3>Referencias:</h3><br /><a href="http://opensource.franz.com/">The Allegro Common Lisp Open Source Center </a><br /><br /><a href="http://www.franz.com/">Allegro CL </a><br /><br /><a href="http://www.cs.berkeley.edu/~fateman/generic/">http://www.cs.berkeley.edu/~fateman/generic/</a><br /><br /><a href="http://www.cs.berkeley.edu/~fateman/">Richard J. Fateman</a><br /><br /><a href="http://www.math.grin.edu/~stone/events/scheme-workshop/algorithms.html">Algoritmos en Scheme </a><br /><br /><a href="http://www.math.grin.edu/~stone/events/scheme-workshop/">Taller sobre Scheme</a><br /><br /><a href="http://www-swiss.ai.mit.edu/~jaffer/Hobbit.html">Hobbit</a> versión 5 compila <a href="http://www-swiss.ai.mit.edu/%7Ejaffer/Scheme.html">R4RS Scheme</a> a código C, que se puede usar con <em><a href="http://www-swiss.ai.mit.edu/%7Ejaffer/SCM.html">SCM</a> Scheme Implementation</em><br /><br />El paquete <a href="http://swiss.csail.mit.edu/ftpdir/scm/OLD/slib3a3.tar.gz">SLIB </a>es una <a href="http://www.linuxfromscratch.org/blfs/view/stable/general/slib.html">librería portable</a> del lenguaje Scheme que funciona en varias plataformas e implementaciones, incluyendo Guile.<br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-7496272750316841568?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=42</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generación automática de código</title>
		<link>http://zintegra.blogspot.com/2007/07/generacin-automtica-de-cdigo.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/generacin-automtica-de-cdigo.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:24:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Generación de código]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[patron]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-5178403052821398777</guid>
		<description><![CDATA[Conforme va madurando el campo de tecnologí­a de información, se van estableciendo patrones de referencia de cómo deben ser las aplicaciones de negocio y va aumentando la presión para tener ciclos de desarrollo cortos.Surge entonces la necesidad d...]]></description>
			<content:encoded><![CDATA[Conforme va madurando el campo de tecnologí­a de información, se van estableciendo <a href="http://en.wikipedia.org/wiki/Enterprise_architecture">patrones de referencia</a> de cómo deben ser las <a href="http://en.wikipedia.org/wiki/Zachman_framework">aplicaciones de negocio</a> y va aumentando la presión para tener ciclos de desarrollo cortos.<br /><span class="fullpost"><br /><br />Surge entonces la necesidad de mecanizar el proceso de producción de software, y además hacerlo de manera flexible y ágil que permita incorporar la parte variable de manera robusta.<br /><br />Un enfoque es desarrollo Cut-and-Paste usando programadores experimentados en el desarrollo de aplicaciones similares a la que se esta haciendo. Este modelo tiene sus limitaciones y no es realmente escalable. Por un lado es propenso a errores y consume horas-hombre que serian mejor empleadas en actividades que se beneficien de la capacidad creativa y visión del desarrollador. Por otro lado, realmente no permite de manera natural institucionalizar y transferir experiencias entre desarrolladores y entre grupos de desarrolladores.<br /><br />En el ciclo de vida y desarrollo de una aplicación se requieren distintas perspectivas y niveles de abstracción. En un proceso mecanizado de desarrollo debe haber herramientas que idealmente nos permita partir de la conceptualización de las necesidades de negocio y de manera automática llegar a la implantación bajo tecnologí­as especí­ficas.<br /><br />El grupo de patrones y prácticas de Microsoft ha desarrollado el concepto de <a href="http://msdn2.microsoft.com/en-us/architecture/aa699360.aspx">fábricas de software</a> como paquetes de referencia que incluyen una serie de <a href="http://msdn2.microsoft.com/en-us/library/ms954811.aspx">artefactos que permiten mecanizar el desarrollo de familias de aplicaciones</a>. Estos artefactos incluyen modelos, marcos (frameworks) y herramientas.<br /><br /><span id="more-43"></span><br /><br />UML se utiliza en algunas herramientas que generan código a partir de un diagrama de clases por ejemplo. De manera más general el <a href="http://www.omg.org/mda/">Object managment Group</a> (OMG) ha desarrollado el concepto de <a href="http://www.opengroup.org/togaf/">arquitectura dirigida por modelos</a> (model-driven architecture, MDA). Este enfoque pudiera ser a un nivel de abstracción y generalización demasiado alto para ser de uso practico.<br /><br />MDA enfatiza independencia de plataforma. En la práctica, esto no puede ser un absoluto. Las caracterí­sticas de una tecnología o implementación son restricciones en el modelo.<br /><br />MDA asume que están disponibles modelos para cualquier artefacto.<br /><br />MDA utiliza UML como lenguaje de uso general. Algunas tecnologías y aplicaciones no se prestan para ser representados en UML y se pueden describir mejor con herramientas especí­ficas que permitan una mayor fidelidad al pasar de concepto a implementación.<br /><br />MDA asume que 3 tipos de modelo son suficientes:<br /><blockquote>computation-independent model,<br /><br />platform-independent model,<br /><br />platform-specific model.</blockquote><br />MDA se enfoca en transformaciones. Es difí­cil lograr un proceso completamente automático que vaya de concepto a implementación. La metodología debe incluir el manejo de la parte variable que no se puede automatizar y los cambos que se requieran durante el mantenimiento de una aplicación<br /><br />Un lenguaje de modelación de uso general como UML esta diseñado para soportar el desarrollo de modelos que sirvan principalmente como documentación. Estos lenguajes pueden describir cualquier dominio, pero necesariamente de manera imprecisa por el alto nivel de abstracción que utilizan. En el caso de UML, las abstracciones genéricas se definen utilizando lenguaje natural informal.<br /><br />Un <a href="http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx">lenguaje de domino especifico</a> (<a href="http://channel9.msdn.com/showpost.aspx?postid=141879">DSL</a>), esta diseñado para describir con precisión una tarea especifica. En vez de abstracciones genéricas utiliza conceptos tomados directamente de la tarea a modelar.<br /><br />El concepto de fabricas de software de Microsoft utiliza como componente básicos leguajes de alta fidelidad como XML, C# y SQL, lenguajes de domino especifico (Domain Specific Language, DSL), scripts de flujos de trabajo (workflow), archivos WSDL, archivos DDL, SQL.<br /><br />Las fábricas de software son especí­ficas a subsistemas como administración de clientes, administración de catálogos, cumplimiento de órdenes.<br /><br />El machote (template) de una fábrica de software incluye código y metadata que se pueden cargar en un <a href="http://msdn2.microsoft.com/en-us/vstudio/aa718951.aspx">IDE</a> o en una herramienta de desarrollo de aplicaciones empresariales. El concepto de machote es similar al de un machote de un documento de Word o Excel.<br /><br />El uso de una fábrica de software incluye los siguientes pasos:<br /><ul><br /> <li>Análisis de problema. Primero determinar si el producto cae dentro del alcance de la fábrica de software.</li><br /> <li>Especificación del producto. Definir los requerimientos del producto en términos de sus diferencias con los requerimientos de los componentes de la fábrica de software.</li><br /> <li>Arquitecta del producto. Ajustar la fabrica de software a las características particulares del producto.</li><br /> <li>Implementación. Las actividades usuales de pruebas unitarias, pruebas de ejecución, ensamblaje de componentes, desarrollo de componentes</li><br /> <li>Instalación. Crear o re usar restricciones, configuración de infraestructura, validaciones, instalación de requerimientos y ejecutalbes.</li><br /> <li>Pruebas. Crear o re usar recursos de pruebas, datos de prueba, scripts de prueba, uso de herramientas de medición.</li><br /></ul><br />Las fábricas de software proporcionan un enfoque robusto a la creación de software usando un paradigma de modelación visual, pero va más allá del uso de modelos como documentación. Usando DSL y XML permiten usar metadata para automatizar la generación de código. Los cuatro pilares de las fábricas de software son: Líneas de software, marcos arquitectónicos (architecture frameworks), desarrollo dirigido por modelos, y guías contextuales<br /><br />El esquema de fábrica de software es un modelo diseñado para soportar cómputo. El esquema de una fábrica es un árbol. Cada nodo en el árbol se conoce como una perspectiva (viewpoint). La perspectiva raíz corresponde a construir todo el entregable. Las perspectivas subyacentes se derivan por descomposición. Cada perspectiva describe la solución en términos de actividades a realizar y una explicación como realizar cada actividad. Las actividades se describen en términos de los productos que generan. Esto productos son los componentes que se utilizan para construir el entregable. Además cada perspectiva incluye recursos suministrados por la fábrica para resolver los problemas del dominio, generalmente automatizando total o parcialmente la tarea.<br /><br />Par construir una fabrica se empieza sencillo con recursos simples y se va invirtiendo tiempo en desarrollar recursos más sofisticados conforme se va ganando experiencia en el dominio.<br /><br />Referencias:<br /><br /><a href="http://msdn2.microsoft.com/en-us/architecture/bb245772.aspx">Bare-Naked Languages or What Not to Model</a><br /><br /><a href="http://www.hanselman.com/blog/CodeGeningADataAccessLayerWithCodeSmith.aspx" >CodeGen'ing a Data Access Layer with CodeSmith</a><br /><br /><a href="http://www.llblgen.com/defaultgeneric.aspx" >LLBLGen</a><br /><br /><a href="http://msdn.microsoft.com/vstudio/dsltools/" >Microsoft DSL</a><br /><br /><a href="http://community.codesmithtools.com/files/9/templates/entry8610.aspx" >CodeSmith Community: .netTiers</a><br /><br /><a href="http://www.adapdev.com/codus/" >Sean Mccormack's Codus</a><br /><br /><a href="http://msdn.microsoft.com/vstudio/DSLTools/default.aspx?pull=/library/en-us/dnvs05/html/vstsmodel.asp#vstsmodel_software_factories" >Software Factories</a><br /><br /><a href="http://www.loresoft.com/Applications/Templates/default.aspx" >Wilson OR Mapper templates for CodeSmith</a><br /><br /><a href="http://www.codegeneration.net/tiki-index.php" >Codegeneration.net</a><br /><br /><a href="http://blogs.msdn.com/garethj/archive/2006/04/04/fullcodegen.aspx" >Can you code gen everything?</a><br /><br /><a href="http://community.codesmithtools.com/forums/12/ShowForum.aspx" >CodeSmith Community: Rocky CSLA Templates</a><br /><br /><a href="http://www.deklarit.com" >Deklarit</a> <a href="http://www.gendotnet.com/" >Kathleen Dollard</a><br /><br /><a href="http://community.codesmithtools.com/files/" >CodeSmith Community: Files</a><br /><br /><a href="http://weblogs.asp.net/aaguiar" >Andres Aguiar's Blog</a><br /><br /><a href="http://weblogs.asp.net/ericjsmith/" >Eric Smith's Blog</a><br /><br /><a href="http://community.codesmithtools.com/blogs/tutorials/archive/2006/02/13/nettiers.aspx" >.nettiers demo/tutorial DAL in 15 mins</a><br /><br /><a href="http://msdn2.microsoft.com/en-us/library/aa480467.aspx">Global Bank Scenario</a><br /><br /><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=51a5c65b-c020-4e08-8ac0-3eb9c06996f4&amp;DisplayLang=en">Visual Studio 2005 SDK Version 4.0 </a><br /><br /><a href="http://blogs.msdn.com/jackgr/">http://blogs.msdn.com/jackgr/</a><br /><br /><a href="http://blogs.msdn.com/jackgr/default.aspx">Jack Greenfield's Blog</a><br /><br /><a href="http://www.codegeneration.net/">Code Generation Network</a><br /><br /><a href="http://www.codeproject.com/cs/library/typebuilderlib.asp">TypeBuilderLib, a Library to Build Dynamic Types Easily</a><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-5178403052821398777?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=43</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minimalist GNU for Windows</title>
		<link>http://zintegra.blogspot.com/2007/07/minimalist-gnu-for-windows.html</link>
		<comments>http://zintegra.blogspot.com/2007/07/minimalist-gnu-for-windows.html#comments</comments>
		<pubDate>Sat, 14 Jul 2007 06:04:00 +0000</pubDate>
		<dc:creator>aguila lobo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[código libre]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[libreria]]></category>
		<category><![CDATA[mingw]]></category>
		<category><![CDATA[nix]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-6251421316918020345.post-75874774414000631</guid>
		<description><![CDATA[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 ...]]></description>
			<content:encoded><![CDATA[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.<br /><br />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.<br /><span class="fullpost"><br /><br />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.<br /><br />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.<br /><br />MinGW incluye MSYS (Minimal SYStem) un shell POSIX/Bourne para ejecutar scripts de configuración usados por make y ./configure<br /><br />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.<br /><br />Para probar la instalación se puede correr el shell de msys y probar el comando de línea<br /><br />gcc --v<br /><br />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<br />Aplicación de consola:<br /><br />En un archivo con el nombre hello.c poner el siguiente código:<br /><br />#include<br /><br />int main(int argc, char **argv)<br />{<br />printf ("Hello\n");<br />return (0);<br />}<br /><br />y compilar con<br /><br />gcc -c hello.c<br /><br />y después<br /><br />gcc -o hello hello.o<br /><br />Alternativamente<br /><br />gcc -o hello hello.c<br /><br />En un archivo con el nombre hello.cpp poner el siguiente código:<br /><br />#include<br />int main(int argc, char **argv)<br />{<br />std::cout << "Hello" << std::endl;<br />return (0);<br />}<br /><br />y compilar con<br /><br />g++ -c hello.cpp<br />g++ -o hello hello.o<br />Aplicación Windows<br /><br />En un archivo con el nombre hello.c poner el siguiente código:<br /><br />#include<br /><br />int WINAPI WinMain (HINSTANCE hInstance,<br />HINSTANCE hPrevInstance,<br />PSTR szCmdLine,<br />int iCmdShow)<br />{<br />MessageBox (NULL, "Hello", "Hello Demo", MB_OK);<br />return (0);<br />}<br /><br />para crear el ejecutable usar los comandos de linea<br /><br />gcc -c hello.c<br /><br />y<br /><br />gcc -o hello hello.o -mwindows<br /><br />el parametro -mwindows es necesario para que se incluyan las librerias necesarias para un programa Windows.<br />dll<br /><br />En un archivo con el nombre dllfct.h poner el siguiente código:<br /><br />#ifdef BUILD_DLL<br />// the dll exports<br />#define EXPORT __declspec(dllexport)<br />#else<br />// the exe imports<br />#define EXPORT __declspec(dllimport)<br />#endif<br /><br />// function to be imported/exported<br />EXPORT void tstfunc (void);<br /><br />En un archivo con el nombre dllfct.c poner el siguiente código:<br /><br />#include<br />#include "dllfct.h"<br /><br />EXPORT void tstfunc (void)<br />{<br />printf ("Hello\n");<br />}<br /><br />En un archivo con el nombre Hello.c poner el siguiente código:<br /><br />#include "dllfct.h"<br /><br />int main ()<br />{<br />tstfunc ();<br />return (0);<br />}<br /><br />Para crear una dll y un ejecutable que lo use:<br /><br />gcc -c hello.c<br />gcc -c -DBUILD_DLL dllfct.c<br />gcc -shared -o tst.dll -Wl,--out-implib,libtstdll.a dllfct.o<br />gcc -o hello.exe hello.o -L./ -ltstdll<br /><br />Se puede especificar el directorio a usar para los includes durante la compilación con<br /><br />-I/path/to/headers<br /><br />y las librerias para link:<br /><br />-L/usr/lib/library<br /><br />Usualmente no hay necesidad de andar moviendo las librerias.<br />Archivo .def para un dll<br /><br />Si tiene un dll llamado file.dll y quiere crear un archivo .def con el nombre file.def,<br /><br />echo EXPORTS > file.def<br />nm file.dll | grep ' T _' | sed 's/.* T _//' >> file.def<br /><br />Para crear una biblioteca con el nombre file.a :<br /><br />dlltool --def file.def --dllname file.dll --output-lib file.a<br /><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6251421316918020345-75874774414000631?l=zintegra.blogspot.com'/></div>]]></content:encoded>
			<wfw:commentRss>http://embedded.zintegra.com/?feed=rss2&amp;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
