<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;DEMFQnc7fSp7ImA9WhRUFEs.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720</id><updated>2012-01-24T22:40:13.905-06:00</updated><category term="LINQ" /><category term="Windows Vista" /><category term="PowerShell" /><category term="Entrenamiento" /><category term="Busquedas en Internet" /><category term="SQL 2012" /><category term="Biztalk" /><category term="SQL Server" /><category term="Tools" /><category term="Windows Admin" /><category term="Examenes MS" /><category term="Exchange 2007" /><category term="Visual Studio 2010" /><category term="Entity Framework" /><category term="Windows 7" /><title>IServiceChannel</title><subtitle type="html">.Net, SQL, Connected Systems</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/IServicechannel" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="iservicechannel" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEMFQnc6fSp7ImA9WhRUFEs.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-5443541129950851728</id><published>2012-01-24T22:36:00.001-06:00</published><updated>2012-01-24T22:40:13.915-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-24T22:40:13.915-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Biztalk" /><title>Como limpiar la base de datos de mensajería de Biztalk (BizTalkMsgDb)</title><content type="html">&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img title="BiztalkLogo.jpg" src="http://lh5.ggpht.com/-qTb-sXDWfXE/Tx-GuVaoR4I/AAAAAAAAANY/XEZsv5fCz9A/BiztalkLogo.jpg?imgmax=800" border="0" alt="BiztalkLogo" width="259" height="194" /&gt;&lt;/p&gt;
&lt;p&gt;El rendimiento de Biztalk se puede ver seriamente afectado si la base de datos de mensajeria (BizTalkMsgDb) es demasiado grande. La recomendación general es que se mantenga por debajo de 5Gb.&lt;/p&gt;
&lt;p&gt;Si la base de datos ha crecido mucho y el servidor no responde incluso con una carga baja de mensajes, posiblemente sea neceserio limpiar dicha base de datos, también podría ser útil en un ambiente de desarrollo. Este es el procedimiento a seguir (se debe tomar en consideración que no se recomienda hacer esto en producción por parte de Microsoft)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;- Detener todas las &lt;em&gt;&lt;strong&gt;host instances&lt;/strong&gt; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;- Reiniciar el IIS ejecutando el comando &lt;strong&gt;IISRESET&lt;/strong&gt; si se estan ejecutando &lt;em&gt;&lt;strong&gt;isolated host instances&lt;/strong&gt;&lt;/em&gt; (HTTP, SOAP, WCF)&lt;/p&gt;
&lt;p&gt;- Ejecutar el procedimiento almacenado &lt;strong&gt;bts_CleanupMsgBox&lt;/strong&gt; en la base de datos de mensajeria (si el procedimiento almacenado no existe, se puede crear utilizando el script &lt;em&gt;&lt;strong&gt;msgbox_cleanup_logic.sql&lt;/strong&gt;&lt;/em&gt; ubicado en &amp;lt;Directorio de Instalacion de Biztalk&amp;gt;\Schema\)&lt;/p&gt;
&lt;p&gt;- Ejecutar el procedimiento almacenado &lt;strong&gt;bts_PurgeSuscriptions&lt;/strong&gt; en la base de datos de mensajeria (si el procedimiento almacenado no existe, se puede crear copiando la parte especifica del script &lt;em&gt;&lt;strong&gt;msgboxlogic.sql&lt;/strong&gt;&lt;/em&gt; ubicado en &amp;lt;Directorio de instalacion de Biztalk&amp;gt;\Schema\)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto no reduce el espacio sobre el disco, para liberar el espacio será necesario compactar la base de datos, esto se puede hacer con el comando &lt;strong&gt;DBCC SHRINKDATABASE (BIzTalkMsgDb).&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Otro comando útil para truncar el archivo de log es el siguiente &lt;strong&gt;BACKUP LOG BizTalkMsgDb WITH TRUNCATE_ONLY.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pueden ver el enlace de msdn que habla sobre esta tarea aquí &lt;a href="http://msdn.microsoft.com/en-us/library/bb727781.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb727781.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Saludos.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-5443541129950851728?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/5443541129950851728/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2012/01/como-limpiar-la-base-de-datos-de.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/5443541129950851728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/5443541129950851728?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2012/01/como-limpiar-la-base-de-datos-de.html" title="Como limpiar la base de datos de mensajería de Biztalk (BizTalkMsgDb)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-qTb-sXDWfXE/Tx-GuVaoR4I/AAAAAAAAANY/XEZsv5fCz9A/s72-c/BiztalkLogo.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEUBSXczcCp7ImA9WhRVF0o.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-3763138364802448328</id><published>2012-01-16T21:46:00.001-06:00</published><updated>2012-01-16T21:50:58.988-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-16T21:50:58.988-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Biztalk" /><title>Generando Esquemas para documentos XML en Biztalk 2010</title><content type="html">&lt;p&gt;Biztalk permite comunicar sistemas a través de distintos formatos de archivo y protocolos, como por ejemplo XML  (usado extensivamente en forma interna). A través de los componentes de Biztalk que se integran con Visual Studio podemos generar el esquema a partir de un archivo existente de la siguiente forma.&lt;/p&gt;
&lt;p&gt;En el &lt;strong&gt;Visual Studio Solution Explorer&lt;/strong&gt; se hace click-derecho sobre el proyecto y se selecciona la opción &lt;strong&gt;Add -&amp;gt; Generated Items&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="Screen Shot 2012-01-11 at 6.53.51 PM.png" src="http://lh4.ggpht.com/-nef55Ez27sM/TxTvDrjxYiI/AAAAAAAAAM0/rmoCDYi1ySM/Screen%252520Shot%2525202012-01-11%252520at%2525206.53.51%252520PM.png?imgmax=800" border="0" alt="Screen Shot 2012 01 11 at 6 53 51 PM" width="600" height="182" /&gt;&lt;/p&gt;
&lt;p&gt;En dialogo que se muestra a continuación seleccionamos la opción &lt;strong&gt;Generate Schemas    Generated Schema Files&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img title="Screen Shot 2012-01-11 at 6.54.07 PM.png" src="http://lh6.ggpht.com/-2RFgnGLLbXE/TxTvEGEtxpI/AAAAAAAAAM8/PK1kh05e5nE/Screen%252520Shot%2525202012-01-11%252520at%2525206.54.07%252520PM.png?imgmax=800" border="0" alt="Screen Shot 2012 01 11 at 6 54 07 PM" width="600" height="348" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;El siguiente dialogo que aparece permite seleccionar el archivo de entrada y su tipo, para el ejemplo seleccionamos el tipo de documento Well-Formed XML e ingresamos la ruta de algún documento XML&lt;/p&gt;
&lt;p&gt;&lt;img title="Screen Shot 2012-01-11 at 6.53.31 PM.png" src="http://lh3.ggpht.com/-GwRCfx5FDrA/TxTvEkgUlSI/AAAAAAAAANE/xSRkqWEDyss/Screen%252520Shot%2525202012-01-11%252520at%2525206.53.31%252520PM.png?imgmax=800" border="0" alt="Screen Shot 2012 01 11 at 6 53 31 PM" width="483" height="372" /&gt;&lt;/p&gt;
&lt;p&gt;La primera vez que se ejecuta el asistente, se muestra un mensaje indicando que el componente no esta instalado, este mensaje muestra la ruta donde se encuentra el script (.vbs) que se debe ejecutar para registrar el componente antes de ejecutar el asistente nuevamente.&lt;/p&gt;
&lt;p&gt;&lt;img title="Screen Shot 2012-01-11 at 6.54.32 PM.png" src="http://lh4.ggpht.com/-4uyLbzIca-s/TxTvFIb_35I/AAAAAAAAANM/ngz6uQdZR88/Screen%252520Shot%2525202012-01-11%252520at%2525206.54.32%252520PM.png?imgmax=800" border="0" alt="Screen Shot 2012 01 11 at 6 54 32 PM" width="416" height="163" /&gt;&lt;/p&gt;
&lt;p&gt;Y de esta forma se crea el esquema a partir del archivo XML.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Hasta la próxima.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-3763138364802448328?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/3763138364802448328/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2012/01/generando-esquemas-para-documentos-xml.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3763138364802448328?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3763138364802448328?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2012/01/generando-esquemas-para-documentos-xml.html" title="Generando Esquemas para documentos XML en Biztalk 2010" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-nef55Ez27sM/TxTvDrjxYiI/AAAAAAAAAM0/rmoCDYi1ySM/s72-c/Screen%252520Shot%2525202012-01-11%252520at%2525206.53.51%252520PM.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkMDQHw_eip7ImA9WhRVFEo.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-6865995125564860577</id><published>2012-01-13T11:06:00.001-06:00</published><updated>2012-01-13T11:07:51.242-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-13T11:07:51.242-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>Liberada la version 4.3 Beta 1 de Entity Framework</title><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-beta-1-released.aspx"&gt;EF 4.3 Beta 1 Released&lt;/a&gt;: "&lt;/p&gt;
&lt;p&gt;At the end of November we released Beta 1 of Code First Migrations. At the time we released Code First Migration Beta 1 we also announced that we would be rolling the migrations work into the main EntityFramework NuGet package and releasing it as EF 4.3.&lt;/p&gt;
&lt;p&gt;Today we are making Beta 1 of EF 4.3 available. This release also includes a number of bug fixes for the DbContext API and Code First.&lt;/p&gt;
&lt;p&gt;We are planning for this to be the last pre-release version of migrations and our next release will be the final RTM of EF 4.3.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;What Changed&lt;/h2&gt;
&lt;p&gt;This release has been primarily about integrating migrations into the EntityFramework NuGet package, improving quality and cleaning up the API surface ready to RTM.&lt;/p&gt;
&lt;p&gt;Notable changes to Code First Migrations include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New Enable-Migrations command. &lt;/strong&gt;You now use the Enable-Migrations command to add the Migrations folder and Configuration class to your project. This command will also automatically fill in your context type in the Configuration class (provided you have a single context defined in your project). &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update-Database.exe command line tool.&lt;/strong&gt; In addition to the power shell commands this release also includes &lt;span style="color: #c0504d;"&gt;Update-Database.exe&lt;/span&gt; which can be used to run the migrations process from a command line. You can find this tool in the ‘packages\EntityFramework.4.3.0-beta1\tools\’ under your solutions directory. The syntax for this command line tool is very similar to the Update-Database power shell command. Run ‘&lt;span style="color: #c0504d; font-family: 'Courier New'; font-size: x-small;"&gt;Update-Database /?&lt;/span&gt;’ from a command prompt for more information on the syntax.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrations database initializer.&lt;/strong&gt; This release includes the &lt;span style="color: #c0504d;"&gt;System.Data.Entity.MigrateDatabaseToLatestVersion&lt;/span&gt; database initializer that can be used to automatically upgrade to the latest version when your application launches. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complete xml documentation.&lt;/strong&gt; This release now includes xml documentation (IntelliSense) for the migrations API surface. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved logging.&lt;/strong&gt; If you specify the –Verbose flag when running commands in Package Manager Console we now provide more information to help with debugging. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other notable changes in EF 4.3 include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Removal of EdmMetadata table.&lt;/strong&gt; If you allow Code First to create a database by simply running your application (without using Migrations) the creation is now performed as an Automatic Migration. You can then enable migrations and continue evolving your database using migrations. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bug fix for GetDatabaseValues.&lt;/strong&gt; In earlier releases this method would fail if your entity classes and context were in different namespaces. This issue is now fixed and the classes don’t need to be in the same namespace to use GetDatabaseValues. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bug fix to support Unicode DbSet names.&lt;/strong&gt; In earlier releases you would get an exception when running a query against a DbSet that contained some Unicode characters. This issue is now fixed. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Annotations on non-public properties.&lt;/strong&gt; Code First will not include private, protected or internal properties by default. If you manually include them in your model Code First used to ignore any Data Annotations on those members. This is now fixed and Code First will process the Data Annotations. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More configuration file settings.&lt;/strong&gt; We’ve enabled more Code First related settings to be specified in the App/Web.config file. This gives you the ability to set the default connection factory and database initializers from the config file. You can also specify constructor arguments to be used when constructing these objects. More details are available in the &lt;a href="http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-configuration-file-settings.aspx"&gt;EF 4.3 Configuration File Settings&lt;/a&gt; blog post. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;You can get EF 4.3 Beta 1 by installing the latest pre-release version of the &lt;a href="http://nuget.org/packages/EntityFramework/"&gt;EntityFramework NuGet package&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color: #ffff00;"&gt;You will need NuGet 1.6 installed and specify the –IncludePrerelease flag at the Package Manager Console to get this pre-release version. Pre-release packages can only be installed from the Package Manager Console.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-19-metablogapi/5305.InstallPackage_5F00_5C3674DE.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="InstallPackage" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-19-metablogapi/6471.InstallPackage_5F00_thumb_5F00_54AB0571.jpg" border="0" alt="InstallPackage" width="743" height="71" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are two walkthroughs for EF 4.3 Beta 1. One focuses on the no-magic workflow that uses a code-based migration for every change. The other looks at using automatic migrations to avoid having lots of code in you project for simple changes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background-color: #ff0000;"&gt; &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-beta-1-code-based-migrations-walkthrough.aspx"&gt;EF 4.3 Beta 1: Code-Based Migrations Walkthrough&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-beta-1-automatic-migrations-walkthrough.aspx"&gt;EF 4.3 Beta 1: Automatic Migrations Walkthrough&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="background-color: #ff0000;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Upgrading From ‘Code First Migrations Beta 1’&lt;/h2&gt;
&lt;p&gt;If you have Code First Migrations Beta 1 installed you will need to uninstall the EntityFramework.Migrations package by running ‘&lt;span style="color: #c0504d;"&gt;Uninstall-Package EntityFramework.Migrations’&lt;/span&gt; in Package Manager Console.&lt;/p&gt;
&lt;p&gt;You can then install EF 4.3 Beta 1 using the ‘&lt;span style="color: #c0504d;"&gt;Install-Package EntityFramework –IncludePrerelease&lt;/span&gt;’ command.&lt;/p&gt;
&lt;p&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;strong&gt;You will need to close and re-open Visual Studio after installing the new package&lt;/strong&gt;&lt;/span&gt;, this is required to unload the old migrations commands.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;RTM Timeline&lt;/h2&gt;
&lt;p&gt;We are planning for this to be the last pre-release version of migrations and are still on-track to get a full supported, go-live, release of EF 4.3 published this quarter (first quarter of 2012).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;MSDeploy Provider Update&lt;/h2&gt;
&lt;p&gt;We originally blogged about our plans to deliver an MSDeploy provider that could be used to apply migrations to a remote server. After many long hours iterating on this and working with the MSDeploy team we’ve concluded that we can’t deliver a good MSDeploy story for Migrations at this stage.&lt;/p&gt;
&lt;p&gt;The primary issues arise from us needing to execute code from your application assemblies on the remote server, in order to calculate the SQL to apply to the database. This is a requirement that other MSDeploy providers have not had in the past. We are going to continue working with the MSDeploy team to see if we can deliver something in the future, but unfortunately we won’t be shipping an MSDeploy provider in the immediate future.&lt;/p&gt;
&lt;p&gt;If you are able to connect to the remote database from the machine you are deploying from, then you can use the Update-Database.exe command line tool to perform the upgrade process. You can also use the System.Data.Entity.Migrations.DbMigrator class to write your own code that performs the migration process.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;EF 5.0 (Enum support is coming… finally!)&lt;/h2&gt;
&lt;p&gt;We’ve been working on a number of features that required updates to some assemblies that are still part of the .NET Framework. These features include enums, spatial data types and some serious performance improvements.&lt;/p&gt;
&lt;p&gt;As soon as the next preview of the .NET Framework 4.5 is available we will be shipping EF 5.0 Beta 1, which will include all these new features.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;Support&lt;/h2&gt;
&lt;p&gt;This is a preview of features that will be available in future releases and is designed to allow you to provide feedback on the design of these features. It is not intended or licensed for use in production. If you need assistance we have an &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/adonetefx/threads"&gt;Entity Framework Pre-Release Forum&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;ADO.NET Entity Framework Team&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10255772" alt="" width="1" height="1" /&gt;"&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;(Via &lt;a href="http://blogs.msdn.com/b/adonet/"&gt;http://blogs.msdn.com/b/adonet/atom.aspx&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-6865995125564860577?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/6865995125564860577/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2012/01/ef-43-beta-1-released.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/6865995125564860577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/6865995125564860577?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2012/01/ef-43-beta-1-released.html" title="Liberada la version 4.3 Beta 1 de Entity Framework" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUAHQng4fSp7ImA9WhRVE08.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-4142302335664660802</id><published>2012-01-11T17:12:00.001-06:00</published><updated>2012-01-11T17:15:33.635-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T17:15:33.635-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL 2012" /><title>SQL Server 2012: Virtual Labs</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
Virtual labs para SQL 2012. &amp;nbsp;&lt;a href="http://www.microsoft.com/sqlserver/en/us/learning-center/virtual-labs.aspx"&gt;enlace&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.ciin.es/imagenes/SQL-Server-2012-Virtual-Labs-para-probar_12FFF/image.png"&gt;&lt;img alt="image" border="0" height="181" src="http://www.ciin.es/imagenes/SQL-Server-2012-Virtual-Labs-para-probar_12FFF/image_thumb.png" style="background-image: none; border: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-4142302335664660802?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/4142302335664660802/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2012/01/sql-server-2012-virtual-labs.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/4142302335664660802?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/4142302335664660802?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2012/01/sql-server-2012-virtual-labs.html" title="SQL Server 2012: Virtual Labs" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUYEQng7cSp7ImA9WhRVF0o.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-1812405677073522007</id><published>2012-01-10T17:41:00.000-06:00</published><updated>2012-01-16T22:05:03.609-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-16T22:05:03.609-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Biztalk" /><title>Escalabilidad Biztalk</title><content type="html">&lt;div style="text-align: left;" dir="ltr"&gt;Poster para configurar Biztalk 2010 en Alta-Disponibilidad&lt;/div&gt;
&lt;div style="text-align: left;" dir="ltr"&gt;&lt;/div&gt;
&lt;div style="text-align: left;" dir="ltr"&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=15223"&gt;http://www.microsoft.com/download/en/details.aspx?id=15223&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;" dir="ltr"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-1812405677073522007?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/1812405677073522007/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2012/01/poster-para-configuracion-de.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1812405677073522007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1812405677073522007?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2012/01/poster-para-configuracion-de.html" title="Escalabilidad Biztalk" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEcASHg6eCp7ImA9WhRRFk4.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-1165411121056800026</id><published>2011-07-12T15:07:00.002-06:00</published><updated>2011-11-29T23:47:29.610-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T23:47:29.610-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><title>Buscar un texto dentro de un SP</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recientemente me consultaron como buscar un texto dentro de los Stored Procedures de una base de datos en MS-SQL Server.&lt;br /&gt;
Buscando un poco encontré un script para hacerlo. Se los dejo por si les sirve.
&lt;pre class="brush:sql"&gt;
USE [Base de Datos]
GO

SELECT OBJECT_NAME(id)
FROM syscomments
WHERE [text] LIKE  '%texto a buscar%'
AND OBJECTPROPERTY(Id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id)
&lt;/pre&gt;
Posteriormente se puede ver el contenido del SP con el comando:
&lt;pre class="brush:sql"&gt;
sp_helptext [nombre del sp]
&lt;/pre&gt;
Saludos.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-1165411121056800026?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/1165411121056800026/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2011/07/buscar-un-texto-dentro-de-un-sp.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1165411121056800026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1165411121056800026?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2011/07/buscar-un-texto-dentro-de-un-sp.html" title="Buscar un texto dentro de un SP" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEIARXw9cSp7ImA9Wx9REkQ.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-3649870724139907116</id><published>2010-12-13T19:58:00.004-06:00</published><updated>2010-12-13T20:09:04.269-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-13T20:09:04.269-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Charla sobre PowerShell</title><content type="html">Este miercoles 15-12-2010 voy a dar una charla sobre PowerShell en las oficinas de Microsoft Guatemala, les dejo el detalle de la invitacion. &lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta charset="utf-8"&gt;&lt;div&gt;&lt;a href="http://powershellevento.eventbrite.com/?utm_source=eb_email&amp;amp;utm_medium=email&amp;amp;utm_campaign=event_reminder&amp;amp;utm_term=event_title"&gt;Descubriendo el Poder de Powershell.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Espero verlos. habran rifas para los participantes :)&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Saludos.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://powershellevento.eventbrite.com/?utm_source=eb_email&amp;amp;utm_medium=email&amp;amp;utm_campaign=event_reminder&amp;amp;utm_term=event_title"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-3649870724139907116?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/3649870724139907116/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/12/este-miercoles-estare-dando-una-charla.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3649870724139907116?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3649870724139907116?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/12/este-miercoles-estare-dando-una-charla.html" title="Charla sobre PowerShell" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUIAQ3o-fyp7ImA9Wx5bFUg.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-1440078336116634672</id><published>2010-10-31T14:32:00.002-06:00</published><updated>2010-10-31T14:39:02.457-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-31T14:39:02.457-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Introduccion a LINQ Parte 3.4 (Arquitectura)</title><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-counter" data-url="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-34-arquitectura.html"&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://www.google.com/buzz/api/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Artículos relacionados&lt;/p&gt;  &lt;p&gt;&lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-language-integrated.html" target="_blank"&gt;Parte 1&lt;/a&gt;, &lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-parte-2-arquitectura.html" target="_blank"&gt;Parte 2&lt;/a&gt;, &lt;a href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-31-arquitectura.html" target="_blank"&gt;Parte 3.1&lt;/a&gt;, &lt;a href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-32-arquitectura.html" target="_blank"&gt;Parte 3.2&lt;/a&gt;, &lt;a href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-33-arquitectura.html" target="_blank"&gt;Parte 3.3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En esta oportunidad hablaremos sobre las &lt;a href="http://en.wikipedia.org/wiki/Anonymous_function" target="_blank"&gt;Expresiones Lambda&lt;/a&gt; en &lt;a href="http://msdn.microsoft.com/es-es/library/bb397687.aspx" target="_blank"&gt;C#&lt;/a&gt; y &lt;a href="http://msdn.microsoft.com/es-es/library/bb531253.aspx" target="_blank"&gt;VB&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Podemos decir que las expresiones lamba son le evolución natural de los métodos anónimos incluidos en C# 2.0. Esto nos permite utilizar una sintaxis mas compacta&lt;em&gt; &lt;/em&gt;al momento de escribir nuestro código&lt;em&gt;.&lt;/em&gt; Veamos un par definiciones del sitio de Microsoft:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;Una expresión lambda es una función anónima que puede contener expresiones e instrucciones y se puede utilizar para crear delegados o tipos de árboles de expresión&amp;quot;&lt;/p&gt;    &lt;p&gt;&amp;quot;Una expresión lambda es una función sin nombre que calcula y devuelve un solo valor. Se pueden utilizar las expresiones lambda dondequiera que un tipo de delegado sea válido&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Creo que la forma mas sencilla de entender este concepto es mediante un ejemplo que muestre la evolución de los cambios en la sintaxis de los lenguajes hasta llegar a las expresiones lambda.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TM3SPyt_SsI/AAAAAAAAAJE/uFONRXxC0gk/s1600-h/image%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TM3SQntj6HI/AAAAAAAAAJI/BpbhNo-Oy2Q/image_thumb.png?imgmax=800" width="648" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TM3SRXHURVI/AAAAAAAAAJM/W3Nzmcoh6BI/s1600-h/image9%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TM3SSL809XI/AAAAAAAAAJQ/WlvfmgDKDBg/image9_thumb.png?imgmax=800" width="648" height="256" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;En el código anterior podemos ver la definición de un &lt;a href="http://msdn.microsoft.com/es-es/library/ms173171(v=VS.90).aspx" target="_blank"&gt;delegado&lt;/a&gt; que recibe un tipo &lt;strong&gt;Int, Integer&lt;/strong&gt; y retorna un tipo &lt;strong&gt;bool, Boolean&lt;/strong&gt;, esto servirá para poder sustituir cualquier función que tenga esa &lt;strong&gt;&lt;em&gt;firma &lt;/em&gt;&lt;/strong&gt;en el procedimiento &lt;strong&gt;Mostrar Números.&lt;/strong&gt; Y definimos dos funciones una que indica si un numero es par y la otra si es mayor a 5. Ahora veamos como se invocaría dicho método usando los delegados. (C# 1.0 y VB 7.0)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TM3SSlw8ZSI/AAAAAAAAAJU/Z1k-L9_RLmM/s1600-h/image12%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TM3STMWgvWI/AAAAAAAAAJY/lnL-1wA2gzY/image12_thumb.png?imgmax=800" width="647" height="172" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TM3STosHzMI/AAAAAAAAAJc/bCSwbMcLoWU/s1600-h/image76.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TM3SUWxaLbI/AAAAAAAAAJg/vHgSAZV1wSY/image_thumb58.png?imgmax=800" width="648" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Recientemente se introdujo el concepto de funciones anónimas, que permiten eliminar la necesidad de definir el delegado especifico y en su lugar usar un delegado genérico. ( esto&amp;#160; se puede aplicar en&amp;#160; ambos lenguajes). Ejemplo:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oZTJ-TK1M-g/TM3SVFZ7vcI/AAAAAAAAAJk/DCLte7gCOoI/s1600-h/image18%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TM3SWaMQsEI/AAAAAAAAAJo/4edfToBYJMs/image18_thumb%5B1%5D.png?imgmax=800" width="647" height="291" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TM3SXUBxsJI/AAAAAAAAAJs/H_113gwx2Es/s1600-h/image21%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TM3SX-M0XKI/AAAAAAAAAJw/pF6_Jb_Hrys/image21_thumb%5B3%5D.png?imgmax=800" width="646" height="259" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;En C# 2.0 se introdujo el concepto de métodos anónimos como un medio de escribir bloques de instrucciones insertados sin nombre que se pueden ejecutar en una invocación de delegado (no se necesita definir previamente el delegado). Ejemplo:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oZTJ-TK1M-g/TM3SYpS5DtI/AAAAAAAAAJ0/S93j_Y5tJG4/s1600-h/image24%5B1%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TM3SZDxEoKI/AAAAAAAAAJ4/TSjWnIKVgYM/image24_thumb.png?imgmax=800" width="648" height="165" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finalmente esto se puede escribir utilizando expresiones lambda de la siguiente forma:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TM3SaOSqdiI/AAAAAAAAAJ8/Ykfoc28Xwck/s1600-h/image27%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TM3Sa_ZEgCI/AAAAAAAAAKA/G3FuwH9eMFY/image27_thumb%5B3%5D.png?imgmax=800" width="647" height="160" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TM3Sbf6Nb7I/AAAAAAAAAKE/YStOH1tNb50/s1600-h/image30%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TM3SbxotwAI/AAAAAAAAAKI/DGdk237fE4Y/image30_thumb%5B3%5D.png?imgmax=800" width="647" height="140" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Como pueden ver las expresiónes lamda permiten una sintaxis mas compacta y pueden contener instrucciones como en el ejemplo anterior o expresiones, de aquí surge el concepto de arboles de expresión que tocaremos en la siguiente entrega y veremos como se aplican todos los conceptos que hemos visto en las consultas LINQ.&lt;/p&gt;  &lt;p&gt;Pueden descargar el código fuente &lt;a href="https://files.me.com/marlon.ramos/6yxxk9" target="_blank"&gt;aquí&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Hasta la proxima.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-1440078336116634672?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/1440078336116634672/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-34-arquitectura.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1440078336116634672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1440078336116634672?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-34-arquitectura.html" title="Introduccion a LINQ Parte 3.4 (Arquitectura)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_oZTJ-TK1M-g/TM3SQntj6HI/AAAAAAAAAJI/BpbhNo-Oy2Q/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEYHR3k8eyp7ImA9Wx5UFEs.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-8003584557796203409</id><published>2010-10-18T22:20:00.002-06:00</published><updated>2010-10-18T22:22:16.773-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-18T22:22:16.773-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Introducción a LINQ Parte 3.3 (Arquitectura)</title><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-counter" data-url="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-33-arquitectura.html"&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://www.google.com/buzz/api/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Artículos relacionados:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-language-integrated.html" target="_blank"&gt;Parte 1&lt;/a&gt;,&amp;#160; &lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-parte-2-arquitectura.html" target="_blank"&gt;Parte 2&lt;/a&gt;,&amp;#160; &lt;a href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-31-arquitectura.html" target="_blank"&gt;Parte 3.1&lt;/a&gt;, &lt;a href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-32-arquitectura.html" target="_blank"&gt;Parte 3.2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En esta ocasión hablaremos sobre Tipos Anónimos y Métodos de Extensión.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Tipos Anónimos&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Son una forma abreviada de inicializadores de objetos que permiten omitir la especificación del tipo cuando se inicializan objetos o colecciones temporales. Por ejemplo en el articulo anterior utilizamos la clase LineaProducto, podríamos omitir la especificación del tipo y por ende eliminar la necesidad de la definición de la clase. Los tipos anónimos son tipos esenciales para las&lt;strong&gt;&lt;em&gt; proyecciones&lt;/em&gt;&lt;/strong&gt; de LINQ, las cuales permiten&amp;#160; incorporar el equivalente en LINQ de una lista de campos en una consulta SQL (mediante la instrucción SELECT).&lt;/p&gt;  &lt;p&gt;veamos un ejemplo:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TL0cMpyD3kI/AAAAAAAAAIU/M8fyw98xdqw/s1600-h/image%5B39%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TL0cNaHgY-I/AAAAAAAAAIY/IpFzpSRh8C4/image_thumb%5B29%5D.png?imgmax=800" width="642" height="347" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TL0cOONy6NI/AAAAAAAAAIc/9zcZs_6McYg/s1600-h/image%5B38%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TL0cPWVukUI/AAAAAAAAAIg/7Yu19YbbZws/image_thumb%5B28%5D.png?imgmax=800" width="642" height="340" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;El compilador infiere el tipo de las tuplas, por lo que los objetos resultantes son &lt;strong&gt;&lt;em&gt;strongly typed&lt;/em&gt;&lt;/strong&gt; definidos así: IEnumerable&amp;lt;&amp;lt;int, int, decimal&amp;gt;&amp;gt; y IEnumerable(of&amp;#160; VB$AnonymousType_0 (of Integer, Integer, Decimal)) respectivamente.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Métodos de Extensión&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Estos permiten agregar métodos propios a tipos previamente definidos, incluso si estos son &lt;strong&gt;&lt;em&gt;sealed &lt;/em&gt;&lt;/strong&gt;en C# o &lt;strong&gt;&lt;em&gt;NotInheritable &lt;/em&gt;&lt;/strong&gt;en VB. Por ejemplo el tipo &lt;strong&gt;&lt;em&gt;string / String &lt;/em&gt;&lt;/strong&gt;es &lt;strong&gt;&lt;em&gt;sealed&amp;#160; &lt;/em&gt;&lt;/strong&gt;y tiene varios métodos accesados por &lt;em&gt;&lt;strong&gt;(.)&lt;/strong&gt;&lt;/em&gt; como &lt;strong&gt;&lt;em&gt;stringTest.Lenght()&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;“esto es un test”.Lenght().&lt;/em&gt;&lt;/strong&gt; El compilador trata estas sentencias como si fueran miembros de una librería de funciones como&lt;strong&gt;&lt;em&gt; Length(stringTest)&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;Length(“esto es un test”).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Por ejemplo el método&lt;strong&gt;&lt;em&gt; length&lt;/em&gt;&lt;/strong&gt; genera una excepción si el valor es &lt;strong&gt;&lt;em&gt;null&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;nothing. &lt;/em&gt;&lt;/strong&gt;Seria útil tener un método &lt;strong&gt;&lt;em&gt;LengthNullable()&lt;/em&gt;&lt;/strong&gt; que retornara &lt;strong&gt;&lt;em&gt;int?,&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;Integer?&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;Nullable(of Integer)&lt;/em&gt;&lt;/strong&gt; que eliminaría la necesidad de revisar si el valor es &lt;strong&gt;&lt;em&gt;null&lt;/em&gt;&lt;/strong&gt; o &lt;strong&gt;&lt;em&gt;Nothing&lt;/em&gt;&lt;/strong&gt; antes de invocar al método Length. Veamos como se puede hacer utilizando métodos de extensión.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oZTJ-TK1M-g/TL0cP0sZgbI/AAAAAAAAAIk/7jn39U3wUxc/s1600-h/image%5B41%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TL0cQlyHe9I/AAAAAAAAAIo/rlj0grux390/image_thumb%5B31%5D.png?imgmax=800" width="644" height="306" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Los métodos de extensión deben ser definidos como &lt;strong&gt;&lt;em&gt;public static &lt;/em&gt;&lt;/strong&gt;anteponiendo la instrucción&lt;strong&gt;&lt;em&gt; this&lt;/em&gt;&lt;/strong&gt; al primer argumento del método el compilador sabe que es un método de extensión, el segundo argumento es el tipo al que aplica el método para este ejemplo &lt;strong&gt;&lt;em&gt;string &lt;/em&gt;&lt;/strong&gt;y el tercero es el nombre de la instancia. Los métodos de extensión tienen soporte para IntelliSense.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oZTJ-TK1M-g/TL0cRGbkIiI/AAAAAAAAAIs/34gnVUwOFVE/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TL0cSMtvT5I/AAAAAAAAAIw/a2756fFBnr8/image_thumb%5B2%5D.png?imgmax=800" width="376" height="164" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_oZTJ-TK1M-g/TL0cVw6Ne2I/AAAAAAAAAI0/RSvao5x5UYw/s1600-h/image%5B45%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TL0cgJIvG0I/AAAAAAAAAI4/FaAj_woMjk4/image_thumb%5B35%5D.png?imgmax=800" width="645" height="359" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;De acuerdo a la documentación de Visual Studio 2008 se pueden aplicar métodos de extensión a los siguientes tipos Clases, Estructuras, Interfaces, Delegados y Arreglos.&lt;/p&gt;  &lt;p&gt;Hasta la próxima.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-8003584557796203409?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/8003584557796203409/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-33-arquitectura.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8003584557796203409?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8003584557796203409?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-33-arquitectura.html" title="Introducción a LINQ Parte 3.3 (Arquitectura)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_oZTJ-TK1M-g/TL0cNaHgY-I/AAAAAAAAAIY/IpFzpSRh8C4/s72-c/image_thumb%5B29%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UFRH48eip7ImA9WhRRFk8.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-9146509373222696956</id><published>2010-10-18T14:30:00.002-06:00</published><updated>2011-11-29T23:00:15.072-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T23:00:15.072-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Revisar el estado de los Jobs de SQL Server con PowerShell</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
Una tarea muy común de todo DBA es revisar el estado de los Jobs de SQL Server, para esto podemos utilizar el siguiente script en PowerShell. (La lista de servidores se carga a partir de un archivo te texto “sqlservers.txt”). Espero les sea de utilidad.&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;
# Carga el assembly&lt;br /&gt;
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null&lt;br /&gt;
# Obtiene la lista de servidores SQL&lt;br /&gt;
$sqlservers = Get-Content "$Env:USERPROFILE\sqlservers.txt";&lt;br /&gt;
# Revisa los Jobs&lt;br /&gt;
Write-Host "Revision de Jobs de SQL Server"&lt;br /&gt;Write-Host "=========================================================="&lt;br /&gt;Write-Host " "&lt;br /&gt;
foreach($sqlserver in $sqlservers)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $srv = New-Object ('Microsoft.SqlServer.Management.Smo.Server') $sqlserver&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "Server -- $sqlserver"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "========================================================"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $jobs = $srv.JobServer.Jobs | Where-Object {$_.IsEnabled -eq $TRUE} | Select Name,LastRunOutcome, LastRunDate&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach($job in $jobs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $colour = "Green";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $job.LastRunOutcome -eq "Failed"){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $colour = "Red";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForegroundColor $colour $job.Name $job.LastRunOutcome $job.LastRunDate&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host&lt;br /&gt;}
&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-9146509373222696956?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/9146509373222696956/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/10/revisar-el-estado-de-los-jobs-de-sql.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/9146509373222696956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/9146509373222696956?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/10/revisar-el-estado-de-los-jobs-de-sql.html" title="Revisar el estado de los Jobs de SQL Server con PowerShell" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkEDSXczfSp7ImA9Wx5UEUs.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-8740923372753446986</id><published>2010-10-15T00:14:00.003-06:00</published><updated>2010-10-15T12:51:18.985-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-15T12:51:18.985-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Introducción a LINQ Parte 3.2 (Arquitectura)</title><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" style="normal-counter" url="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-32-arquitectura.html"&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://www.google.com/buzz/api/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Artículos relacionados:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-language-integrated.html" target="_blank"&gt;Parte 1&lt;/a&gt;,  &lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-parte-2-arquitectura.html" target="_blank"&gt;Parte 2&lt;/a&gt;,  &lt;a href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-31-arquitectura.html" target="_blank"&gt;Parte 3.1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Continuando con los cambios a los lenguajes para soportar LINQ veremos algunas formas de inicializar objetos, arreglos y colecciones.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;em&gt;&lt;strong&gt;Inicializadores de Objetos&lt;/strong&gt;&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;para este ejemplo crearemos una clase utilizando propiedades automáticas (otra de las nuevas funcionalidades de C# 3.0) y después compararemos la forma de inicializarla anteriormente con la forma simplificada de hacerlo ahora.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLfxNNHgdqI/AAAAAAAAAHM/RSZkxnSkUpQ/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLfxN1zz4WI/AAAAAAAAAHQ/pyRGVVR9VfU/image_thumb%5B13%5D.png?imgmax=800" width="645" height="151" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;en la versiones 1.0 y 2.0  se inicializaba de esta forma. &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh5.ggpht.com/_oZTJ-TK1M-g/TLfxOS0syRI/AAAAAAAAAHU/L8Gv7ijAs6g/s1600-h/image%5B86%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLfxO2AnjBI/AAAAAAAAAHY/V7SwPzZWrF4/image_thumb%5B68%5D.png?imgmax=800" width="645" height="135" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;en la versión 3.0 quedaría así.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLfxPfLysaI/AAAAAAAAAHc/2UhlRl9Hljg/s1600-h/image%5B85%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLfxP4m_xII/AAAAAAAAAHg/_KSKGySjWZc/image_thumb%5B67%5D.png?imgmax=800" width="646" height="62" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;en la versión 8.0 se inicializaba así.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLfxQbvHdLI/AAAAAAAAAHk/ViozQ1PRTzE/s1600-h/image%5B84%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLfxQxOD_tI/AAAAAAAAAHo/3pNK2Uu6tns/image_thumb%5B66%5D.png?imgmax=800" width="646" height="150" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;en la versión 9.0 quedaría así.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLfxRbLeYOI/AAAAAAAAAHs/lzaCAl6Xxww/s1600-h/image%5B83%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLfxR_yxDkI/AAAAAAAAAHw/seBWU1pmdxk/image_thumb%5B65%5D.png?imgmax=800" width="646" height="60" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;em&gt;&lt;u&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;u&gt;&lt;strong&gt;Inicializadores de Arreglos&lt;/strong&gt;&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;veamos un ejemplo inicializando un arreglo de objetos tipo LineaProducto&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oZTJ-TK1M-g/TLfxSYaM_CI/AAAAAAAAAH0/w_MHzEN3W7s/s1600-h/image%5B75%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLfxS9-cUfI/AAAAAAAAAH4/Czv2CjvELKg/image_thumb%5B57%5D.png?imgmax=800" width="646" height="140" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;en VB 9.0 no es posible utilizar inicializadores de objetos para inicializar arreglos, sin embargo se pueden asignar elementos creados por inicializadores de objetos a un arreglo de esta forma&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLfxTaafltI/AAAAAAAAAH8/AhXTYPxozuA/s1600-h/image%5B77%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_oZTJ-TK1M-g/TLfxUOwtC9I/AAAAAAAAAIA/G5gBwyku2vY/image_thumb%5B59%5D.png?imgmax=800" width="645" height="134" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Inicializadores de Colecciones&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Esto se aplica a las colecciones que soportan la interface &lt;strong&gt;&lt;em&gt;IEnumerable &lt;/em&gt;&lt;/strong&gt;y tienen un método .Add&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh5.ggpht.com/_oZTJ-TK1M-g/TLfxUnPD4jI/AAAAAAAAAIE/oGDcMqXqxnQ/s1600-h/image%5B87%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLfxVCaPJ8I/AAAAAAAAAII/B3m1gveWwk4/image_thumb%5B69%5D.png?imgmax=800" width="643" height="132" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;VB&lt;/strong&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLfxVrdkyeI/AAAAAAAAAIM/wY26Nre4Sbk/s1600-h/image%5B88%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLfxWcOblMI/AAAAAAAAAIQ/aRFCCxAhMJQ/image_thumb%5B70%5D.png?imgmax=800" width="643" height="148" /&gt;&lt;/a&gt; &lt;/div&gt; &lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;En la siguiente entrega hablaremos sobre los métodos de extensión.&lt;/p&gt;  &lt;p&gt;Hasta la próxima.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-8740923372753446986?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/8740923372753446986/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-32-arquitectura.html#comment-form" title="2 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8740923372753446986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8740923372753446986?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-32-arquitectura.html" title="Introducción a LINQ Parte 3.2 (Arquitectura)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLfxN1zz4WI/AAAAAAAAAHQ/pyRGVVR9VfU/s72-c/image_thumb%5B13%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;AkEBR3k5fSp7ImA9Wx5UEUs.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-1205658521047041507</id><published>2010-10-13T23:32:00.002-06:00</published><updated>2010-10-15T12:50:56.725-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-15T12:50:56.725-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Introducción a LINQ Parte 3.1 (Arquitectura)</title><content type="html">&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" style="normal-counter" url="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-31-arquitectura.html"&gt;&lt;/a&gt;&lt;script type="text/javascript" src="http://www.google.com/buzz/api/button.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Artículos relacionados:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-language-integrated.html" target="_blank"&gt;Intro a LINQ Parte 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-parte-2-arquitectura.html" target="_blank"&gt;Intro a LINQ Parte 2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ahora veamos en detalle las extensiones hechas a los lenguajes para soportar LINQ:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Variables Implícitas (Inferencia de Tipos)&lt;/em&gt;:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Permite inferir el tipo de variable en base a su inicialización. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Ejemplos:&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;C#&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLad8rmjqQI/AAAAAAAAAF8/hMpoRpQOgB4/s1600-h/image%5B48%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLad9bOnR6I/AAAAAAAAAGA/hfiQlXgfpFk/image_thumb%5B38%5D.png?imgmax=800" width="636" height="257" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;VB&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_oZTJ-TK1M-g/TLad-GlqC9I/AAAAAAAAAGI/ubLZqHefFAI/s1600-h/image%5B49%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_oZTJ-TK1M-g/TLad-wg0j1I/AAAAAAAAAGU/gbQ8ARNU0Ig/image_thumb%5B39%5D.png?imgmax=800" width="637" height="251" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Al ejecutar estas instrucciones podemos notar que la variable nombre es de tipo string, que la variable cantidad es de tipo int y numeros es un arreglo tipo int. Esto nos indica que NO son variables dinámicas (esto ya es soportado en el framework 4.0  ) sino que son variables tipadas pero inferidas por el compilador. Lo que se puede apreciar en el IL generado.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLad_sY6TRI/AAAAAAAAAGY/r2PzPSDgDbs/s1600-h/image%5B50%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLaeArWuv6I/AAAAAAAAAGk/slygF9pArDs/image_thumb%5B40%5D.png?imgmax=800" width="643" height="300" /&gt;&lt;/a&gt; &lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;  &lt;p&gt;ahora veamos como se aplica esto en una consulta basada en LINQ&lt;/p&gt;  &lt;p&gt;C#&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLaeBO0Jz_I/AAAAAAAAAGs/83dh5P7AT2k/s1600-h/image%5B51%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLaeBpgWylI/AAAAAAAAAG0/DCeMmVXyH4s/image_thumb%5B41%5D.png?imgmax=800" width="649" height="237" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;VB&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLaeCKlUbxI/AAAAAAAAAG4/VKrHiWLmFx4/s1600-h/image%5B53%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_oZTJ-TK1M-g/TLaeC-ZidtI/AAAAAAAAAHA/jvz3F0BqJ_k/image_thumb%5B43%5D.png?imgmax=800" width="653" height="235" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;las variables &lt;strong&gt;numeros&lt;/strong&gt; y &lt;strong&gt;query &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;infieren su tipo en base a la expresión asignada, hay que notar especialmente la variable &lt;strong&gt;query&lt;/strong&gt; que almacena una consulta linq (&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb384065.aspx" target="_blank"&gt;query expression&lt;/a&gt;) &lt;/strong&gt;de allí la necesidad de soportar inferencia de tipos en los lenguajes.&lt;/p&gt;  &lt;p&gt;Hasta la próxima.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-1205658521047041507?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/1205658521047041507/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-31-arquitectura.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1205658521047041507?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/1205658521047041507?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/10/introduccion-linq-parte-31-arquitectura.html" title="Introducción a LINQ Parte 3.1 (Arquitectura)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_oZTJ-TK1M-g/TLad9bOnR6I/AAAAAAAAAGA/hfiQlXgfpFk/s72-c/image_thumb%5B38%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEEDRnY8eSp7ImA9WxFaEEU.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-3482287343779649995</id><published>2010-07-13T21:56:00.003-06:00</published><updated>2010-07-13T22:44:37.871-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-13T22:44:37.871-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Introducción a LINQ parte 2 (Arquitectura)</title><content type="html">&lt;p&gt;En esta ocasión veremos los conceptos en los que se basa LINQ y los cambios que se han hecho en VB y C# para darle soporte. &lt;/p&gt;&lt;p&gt;La mayoría de nosotros hemos usado lenguajes de un dominio específico ( DSLs – Domain-Specific Languages). Estos son lenguajes diseñados para un dominio específico como procesadores de palabras (macros), bases de datos relacionales (SQL), WebBrowsers (Javascript), etc. Gran variedad de estos lenguajes son implementados a través de generadores de código gráfico y wizards.  Las herramientas que liberó Microsoft para Visual Studio 2005 y Visual Studio 2008 para dominios específicos como Aplicaciones Web, SmartClients, Mobile se basan en el concepto de DSLs. (&lt;a href="http://msdn.microsoft.com/en-us/library/ff649395.aspx" target="_blank"&gt;Software Factories&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;Por ejemplo SQL es un lenguaje para un dominio especifico que tiene que ver con la manipulación de datos en una base de datos relacional, y para este hay varios sabores o implementaciones como T-SQL (Microsoft), PL/SQL (Oracle), a estos lenguajes se les denomina DSQLs. &lt;/p&gt;&lt;p&gt;El problema  con todos estos lenguajes es que en la gran mayoría de los casos  las aplicaciones que desarrollamos necesitan de alguna manera manipular datos almacenados en algún motor de base de datos por lo que debemos conocer SQL y nuestro lenguaje de propósito general como VB o C# y traducir nuestras sentencias del lenguaje de programación a “otro lenguaje”. Lo que nos resta productividad y nos causa problemas. De allí que el grupo de LINQ se enfocó en tratar de resolver este problema. &lt;/p&gt;&lt;p&gt;Como lo describió el arquitecto de C# “LINQ es un modelo de programación para consultar, transformar y agrupar cualquier tipo de dato que comúnmente se manipula en una aplicación intensiva de datos , ya sea un objeto, relacional o XML”.&lt;/p&gt;&lt;p&gt;Aunque LINQ no es un DSQL, existen varias implementaciones de LINQ para dominios específicos como:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;LINQ to Objects:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;La implementación default, que permite hacer consultas a objetos en memoria.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;LINQ to SQL:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Para consultas de SQL Server, incluye un diseñador DSL gráfico y una herramienta O/RM.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;LINQ to DataSet:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Para consultar ADO.Net DataSet tipados y no tipados.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;LINQ to XML:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Para consultar documentos XML.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;LINQ to Entities:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Para consultar EntitySets definidos en un Entitity Data Model en Entity Framework.&lt;/p&gt;&lt;p&gt;LINQ es el responsable de las extensiones hechas a los lenguajes en Visual Studio 2008. En el siguiente artículo veremos en detalle los cambios hechos a C# 3.0 y VB 9.0 por el momento menciono la lista de cambios:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Variables Implícitas &lt;/li&gt;&lt;li&gt;Inicializadores de Objetos &lt;/li&gt;&lt;li&gt;Inicializadores de Arreglos &lt;/li&gt;&lt;li&gt;Inicializadores de Colecciones &lt;/li&gt;&lt;li&gt;Tipos Anónimos &lt;/li&gt;&lt;li&gt;Métodos de Extensión &lt;/li&gt;&lt;li&gt;Expresiones Lambda &lt;/li&gt;&lt;li&gt;Operadores Estándar de Consulta &lt;/li&gt;&lt;li&gt;Expresiones de Consulta &lt;/li&gt;&lt;li&gt;Arboles de Expresión &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;LINQ también se basa en características de C# 2.0 y VB 8.0 como:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tipos Genéricos &lt;/li&gt;&lt;li&gt;Métodos Anónimos &lt;/li&gt;&lt;li&gt;Iteradores &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Hasta la próxima.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-3482287343779649995?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/3482287343779649995/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-parte-2-arquitectura.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3482287343779649995?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3482287343779649995?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-parte-2-arquitectura.html" title="Introducción a LINQ parte 2 (Arquitectura)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0YERX8yfyp7ImA9WxFaEU8.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-6782455684532668569</id><published>2010-07-13T19:41:00.003-06:00</published><updated>2010-07-14T09:25:04.197-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-14T09:25:04.197-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>Introducción a LINQ (Language Integrated Query)</title><content type="html">&lt;p&gt;Vamos a dividir esta serie de artículos en 3 partes:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Arquitectura e implementación&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Ejecución (LINQ to Objects)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Operadores avanzados y expresiones&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Breve Historia de LINQ&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Para comenzar hablemos un poco de historia. Los conceptos de LINQ se originan en lenguajes de &lt;u&gt;programación funcional&lt;/u&gt; como Haskell, que se basa en el &lt;u&gt;cálculo lambda&lt;/u&gt; (otros lenguajes funcionales conocidos son LISP, APL, Erlang, ML y Scheme). Podemos decir que los lenguajes imperativos como C# o VB procesan las acciones para realizar una tarea en una serie de pasos, en lugar de ejecutar una secuencia de pasos los lenguajes funcionales evalúan expresiones. En estos lenguajes el desarrollador especifica lo que debe realizar el programa no como debe hacerlo.&lt;/p&gt;&lt;p&gt;Por ejemplo SQL es un lenguaje de consultas que emula a un lenguaje funcional, una sentencia SQL define las tuplas que se quieren obtener o actualizar, y el motor de base de datos decide como realizar las tareas solicitadas.&lt;/p&gt;&lt;p&gt;El cálculo lambda es una aproximación matemática formal para definición de función, aplicación y recursión, y es referido en Haskell y otros lenguajes funcionales como &lt;u&gt;funciones lambda.&lt;/u&gt; Haskell y otros lenguajes funcionales manejan conceptos como funciones, closures, inferencia de tipos, lazy evaluation, monads (un método flexible para combinar operaciones I/O con lazy evaluation). En el Microsoft Research se trabajó en lenguajes experimentales como X#, Xen y finalmente &lt;strong&gt;C&lt;/strong&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;Ѡ&lt;/strong&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;( c-omega). El objetivo de este lenguaje era reducir el ROX (Relational-to-Objects-to-XML) impedance mismatch agregando conceptos y operadores del dominio relacional y XML como una extensión a C#. Microsoft libero una versión preliminar del compilador de C&lt;span style="font-size:78%;"&gt;&lt;strong&gt;Ѡ&lt;/strong&gt;&lt;/span&gt; a mediados del 2004.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Algunos miembros del equipo de X#/Xen/C&lt;span style="font-size:78%;"&gt;&lt;strong&gt;Ѡ&lt;/strong&gt;&lt;/span&gt; se unieron al grupo que trabajo en LINQ ,en el cual Anders Helsberg (Arquitecto de Pascal, Delphi, J++, C#) quería añadir “operadores de secuencia” a C# para que los desarrolladores los aplicaran a colecciones que implementaran el tipo genérico &lt;em&gt;IEnumerable&amp;lt;T&amp;gt; . &lt;/em&gt;Erick Meijer, uno de los diseñadores de Haskel98 y llamado creador de LINQ, comenzó a hacer propaganda sobre el presente y futuro de las versiones de LINQ en algunas conferencias técnicas.&lt;/p&gt;&lt;p&gt;La primera versión preliminar salió en septiembre de 2005 durante el PDC 2005. En septiembre de 2006 se lanzo la CTP. y en la versión CTP de enero de 2007 de VS2008 (orcas) se incluyó un add-on para el compilador de Visual Studio. La versión RTM de VS2008 no incluyó significantes cambios a LINQ. La versión final de Visual Studio 2008 SP1 incluyo la versión 3.5 del .Net Framework con soporte para EF, EDM y LINQ en Agosto de 2008.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-6782455684532668569?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/6782455684532668569/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-language-integrated.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/6782455684532668569?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/6782455684532668569?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/07/introduccion-linq-language-integrated.html" title="Introducción a LINQ (Language Integrated Query)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQDRXo7cSp7ImA9WxFQF0U.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-8058579416648045581</id><published>2010-05-13T15:51:00.007-06:00</published><updated>2010-05-13T16:06:14.409-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-13T16:06:14.409-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Exchange 2007" /><title>Obtener estadísticas de buzones en Exchange 2007</title><content type="html">&lt;div class="Section1"&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;Una tarea muy común de un administrador de Exchange es el control de espacio utilizado por los buzones de correo, les indico un comando que les da esa información en MB o GB ordenado por el mayor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;En MB&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="EspacioUtilizado(MB)";expression={&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;$_.TotalItemSize.Value.ToMB()}},ItemCount&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;En GB&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="EspacioUtilizado(GB)";expression={&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;$_.TotalItemSize.Value.ToGB()}},ItemCount&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;Saludos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);" lang="ES"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);" lang="ES"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);" lang="ES"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(31, 73, 125);" lang="ES"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;span style=";font-family:Arial;font-size:85%;color:Black;"   &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-8058579416648045581?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/8058579416648045581/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/05/obtener-estadisticas-de-buzones-de.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8058579416648045581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8058579416648045581?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/05/obtener-estadisticas-de-buzones-de.html" title="Obtener estadísticas de buzones en Exchange 2007" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEYCSXYzeip7ImA9WxFQF00.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-7218212931578250753</id><published>2010-05-12T16:00:00.008-06:00</published><updated>2010-05-12T16:09:28.882-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-12T16:09:28.882-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Exchange 2007" /><title>Cambiar el UPN para un usuario/dominio Exchange 2007</title><content type="html">&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;Recientemente se cambió el nombre de dominio externo de la empresa, por lo que era necesario actualizar el UPN (User Principal Name) de las cuentas. Buscando un poco encontré un comando en PowerShell para hacerlo, por si les sirve se los dejo.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span lang="ES-GT"&gt;Para un usuario específico:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;Get-Mailbox –Identity username |%{$_|Set-Mailbox -UserPrincipalName $($_.UserPrincipalName -replace “@OldDomain”,”@NewDomain.com”)}&lt;/span&gt;&lt;span style="font-family:'Times New Roman','serif';"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span lang="ES-GT"&gt;Para todos los usuarios:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-GT"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt;Get-Mailbox |%{$_|Set-Mailbox -UserPrincipalName $($_.UserPrincipalName -replace “@OldDomain”,”@NewDomain.com”)}&lt;/span&gt;&lt;span style="font-family:'Times New Roman','serif';"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Saludos.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-7218212931578250753?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/7218212931578250753/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/05/cambiar-el-upn-para-un-usuariodominio.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/7218212931578250753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/7218212931578250753?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/05/cambiar-el-upn-para-un-usuariodominio.html" title="Cambiar el UPN para un usuario/dominio Exchange 2007" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CU4EQHk6eSp7ImA9WxFSFkk.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-3015673397385732870</id><published>2010-04-18T20:25:00.001-06:00</published><updated>2010-04-18T20:25:01.711-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-18T20:25:01.711-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><title>Recursos para comenzar con Visual Studio 2010</title><content type="html">&lt;p&gt;Recientemente se realizo el lanzamiento de Visual Studio 2010, próximamente estaré compartiendo con ustedes sobre lo nuevo en Acceso a Datos y WCF. Para comenzar, les recomiendo&amp;#160; estos enlaces.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=F9134B92-8F39-426E-AAF2-65AFA3F2C07B&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio 2010 Professional Whitepaper&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio 2010 and .NET Framework 4 Training Kit&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Saludos.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-3015673397385732870?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/3015673397385732870/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2010/04/recursos-para-comenzar-con-visual.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3015673397385732870?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3015673397385732870?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2010/04/recursos-para-comenzar-con-visual.html" title="Recursos para comenzar con Visual Studio 2010" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkAFQn46cCp7ImA9Wx5UEUs.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-7267705117945566891</id><published>2009-07-07T11:47:00.002-06:00</published><updated>2010-10-15T12:51:53.018-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-15T12:51:53.018-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><title>Windows 7</title><content type="html">&lt;p&gt;El 10 de Julio seria la fecha de publicación de la versión RTM de Windows 7, según fuentes no oficiales, posiblemente estaría disponible para descarga para los suscriptores de MSDN y Technet.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Saludos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-7267705117945566891?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/7267705117945566891/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2009/07/windows-7.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/7267705117945566891?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/7267705117945566891?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2009/07/windows-7.html" title="Windows 7" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0AGRn8-fSp7ImA9WxJTFEg.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-5787524117780137292</id><published>2009-04-22T17:02:00.005-06:00</published><updated>2009-04-22T21:02:07.155-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-22T21:02:07.155-06:00</app:edited><title>Evento Ineta Code Camp</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_oZTJ-TK1M-g/Se-lD-AZU9I/AAAAAAAAABU/C4rqtjZPnG0/s1600-h/intetalatam1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 250px; height: 400px;" src="http://2.bp.blogspot.com/_oZTJ-TK1M-g/Se-lD-AZU9I/AAAAAAAAABU/C4rqtjZPnG0/s400/intetalatam1.jpg" alt="" id="BLOGGER_PHOTO_ID_5327658371805434834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Por primera vez en nuestro país se realizará un evento patrocinado por Ineta-Latam. Les dejo el calendario de charlas, espero verlos por allí.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;span lang="ES-TRAD"&gt;Agenda del evento&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;07:00 - 08:00 &lt;span style=""&gt;           &lt;/span&gt; Registro&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;08:00 - 08:30 &lt;span style=""&gt;           &lt;/span&gt; Apertura a cargo de:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;José R. Guay Paz (Delegado Ineta Latam para Centroamérica y Caribe - Miguel Almeyda, Gerente de Proyectos Ineta Latam.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Invitado: Dr. Eduardo Suguer Cofino - Rector Magnifico de la Universidad Galileo&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;08:30 - 09:30&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Carlos Augusto Lone Saenz &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Aplicaciones de Negocio con Silverlight (LOB Apps With              Silverlight!) &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Luis Antonio Alfaro - MVP C#&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Lo nuevo en C# 4.0 con ASP:NET en VS 2010&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;09:30 - 10:00 &lt;span style=""&gt;           &lt;/span&gt; Intermedio - Café&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;10:00 - 11:00 &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Luis Felipe Ayala - Microsoft Regional Director&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Composite Application Design&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Carlos Augusto Lone Saenz&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Desmistificando ASP:NET MVC&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;11:00 - 12:00 &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Juan Manuel Alvarado - MVP SQL Server &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;XRM - Microsoft Dynamics CRM como plataforma rápida de desarrollo de aplicaciones&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Jose R. Guay Paz - Miguel Almeyda (Ineta Latam)&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Integrando su sitio web con Flickr y Facebook para enriquecer la experiencia de usuario&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;12:00 - 13:30 &lt;span style=""&gt;           &lt;/span&gt; Almuerzo&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;13:30 - 14:30 &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Juan Manuel Herrera Ocheita - MVP Visual Client Application &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Programación en capas con Sharepoint&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Marlon Antonio Ramos Moscoso&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;&lt;span style=""&gt; &lt;/span&gt;ADO.NET Data Services&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;14:30 - 15:30 &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Juan Manuel Alvarado - MVP SQL Server &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Creación de tableros de mando usando Sharepoint Performancepoint Services&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Juan Manuel Herrera Ocheita&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Desarrolla tu propia Framework en Visual Studio 2008&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;15:30 - 16:00 &lt;span style=""&gt;           &lt;/span&gt; Intermedio - Café&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;16:00 - 17:00 &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Marlon Antonio Ramos Moscoso &lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 36pt;" class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Entendiendo Software + Servicios (una perspectiva)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Juan Mestas - Director Regional Perú&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Windows Azure, del escritorio a la nube&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;17:00 - 18:00 &lt;span style=""&gt;           &lt;/span&gt; Sesión general de cierre&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="ES-TRAD"&gt;Web &amp;amp; ASP.NET Security - Vía Live Meeting (en inglés)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=";font-family:Cambria;font-size:100%;"  lang="ES-TRAD" &gt;Joe Stagner - Senior Program Manager - Microsoft Corp. Developer Division&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="font-family: arial;"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-5787524117780137292?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/5787524117780137292/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2009/04/evento-inteta-code-camp.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/5787524117780137292?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/5787524117780137292?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2009/04/evento-inteta-code-camp.html" title="Evento Ineta Code Camp" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_oZTJ-TK1M-g/Se-lD-AZU9I/AAAAAAAAABU/C4rqtjZPnG0/s72-c/intetalatam1.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUEEQ38-fyp7ImA9WxRUEUg.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-4639303152833680851</id><published>2008-11-19T21:40:00.002-06:00</published><updated>2008-11-19T22:00:02.157-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-19T22:00:02.157-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Entrenamiento" /><title>Recursos en español para aprender</title><content type="html">&lt;p&gt;Les dejo una dirección en donde pueden aprender sobre tecnologías Microsoft.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/spain/formacion/default.mspx"&gt;http://www.microsoft.com/spain/formacion/default.mspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Saludos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-4639303152833680851?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/4639303152833680851/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2008/11/recursos-en-espaol-para-aprender.html#comment-form" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/4639303152833680851?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/4639303152833680851?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2008/11/recursos-en-espaol-para-aprender.html" title="Recursos en español para aprender" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CkYCSHg6eCp7ImA9WxZUEkU.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-3057176722878184905</id><published>2008-04-03T21:24:00.001-06:00</published><updated>2008-04-03T21:36:09.610-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-03T21:36:09.610-06:00</app:edited><title>Conociendo el CLR (Parte 1)</title><content type="html">&lt;p&gt;Despu&amp;#233;s de un tiempo sin escribir nada, voy a empezar una serie de art&amp;#237;culos sobre el CLR, creo que es muy &amp;#250;til conocerlo a fondo para poder aprovecharlo al m&amp;#225;ximo y ser mas productivos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Introducci&amp;#243;n:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Primero un poco de historia. Microsoft a trav&amp;#233;s de los a&amp;#241;os ha introducido varias tecnolog&amp;#237;as para ayudar a los desarrolladores a implementar su c&amp;#243;digo. Muchas de estas tecnolog&amp;#237;as ofrecen abstracciones que permiten enfocarse mas en la resoluci&amp;#243;n del problema que en la m&amp;#225;quina o el sistema operativo. Dentro de estas tecnolog&amp;#237;as podemos mencionar:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Microsoft Foundation Class library (MFC) ( abstracci&amp;#243;n sobre programaci&amp;#243;n de GUI C++) &lt;/li&gt;    &lt;li&gt;Visual Basic 6 ( abstracci&amp;#243;n que facilitaba crear aplicaciones GUI), aunque algunos piensan que es una aberraci&amp;#243;n, tiene su importancia en la historia de como los desarrolladores han aplicado RAD (rapid application development). Aclaro que no voy centrarme en el venerable Visual Basic. &lt;/li&gt;    &lt;li&gt;ASP ( ofrec&amp;#237;a una abstracci&amp;#243;n para la creaci&amp;#243;n de sitios web din&amp;#225;micos) &lt;/li&gt;    &lt;li&gt;ATL ( permit&amp;#237;a crear componentes que pod&amp;#237;an ser usados en varios lenguajes) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;El problema era que hab&amp;#237;a que dominar muchas tecnolog&amp;#237;as y el desarrollo era complicado, depend&amp;#237;a mucho del tipo de aplicaci&amp;#243;n que se quer&amp;#237;a realizar. El objetivo del .Net Framework es crear un &amp;#250;nico modelo de programaci&amp;#243;n para cualquier tipo de aplicaci&amp;#243;n ya sea de consola, gr&amp;#225;fica, web, componente o servicio sobre la plataforma Windows (aunque ya es posible utilizarlo en otras plataformas). Otro objetivo era permitir a los desarrolladores usar el lenguaje que quisieran. &lt;/p&gt;  &lt;p&gt;El .Net Framework consiste b&amp;#225;sicamente de dos partes: El Common Language Runtime (CLR) y el Framework Class Library (FCL). &lt;/p&gt;  &lt;p&gt;El CLR provee el modelo de programaci&amp;#243;n que todas las aplicaciones usan. Este incluye su propio cargador de archivos, administrador de memoria (garbage collector), sistema de seguridad (code access security), manejo de hilos y mas. &lt;/p&gt;  &lt;p&gt;El CLR ofrece un modelo de programaci&amp;#243;n orientado a objetos que define que tipos y objetos existen y como se comportan. Aunque hay que tener en cuenta la diferencia entre orientado a objetos y orientado a componentes (ese es otro tema que no vamos a tratar por ahora).&lt;/p&gt;  &lt;p&gt;En el siguiente post hablaremos sobre el modelo de ejecuci&amp;#243;n del CLR. Hasta la pr&amp;#243;xima.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-3057176722878184905?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/3057176722878184905/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2008/04/conociendo-el-clr-parte-1.html#comment-form" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3057176722878184905?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3057176722878184905?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2008/04/conociendo-el-clr-parte-1.html" title="Conociendo el CLR (Parte 1)" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CEUARng7eyp7ImA9WxZQF00.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-4406806071814022959</id><published>2008-02-22T11:42:00.001-06:00</published><updated>2008-02-22T11:44:07.603-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T11:44:07.603-06:00</app:edited><title>Liberado el SP1 de Windows Vista</title><content type="html">&lt;p&gt;Hace algunos d&amp;#237;as se liber&amp;#243; el primer paquete de servicios (service parche dir&amp;#237;a un amigo) para vista, para los que tienen suscripci&amp;#243;n a msdn o technet lo pueden descargar ya (o si tienen acceso a trav&amp;#233;s connect ;)&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;a title="http://msdn2.microsoft.com/en-us/windowsvista/bb898842.aspx" href="http://msdn2.microsoft.com/en-us/windowsvista/bb898842.aspx"&gt;&lt;font color="#800080"&gt;http://msdn2.microsoft.com/en-us/windowsvista/bb898842.aspx&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;a title="http://msdn2.microsoft.com/en-us/windowsvista/bb898842.aspx" href="http://msdn2.microsoft.com/en-us/windowsvista/bb898842.aspx"&gt;&lt;font color="#800080"&gt;http://msdn2.microsoft.com/en-us/windowsvista/bb898842.aspx&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;Para los usuarios normales estar&amp;#225; disponible a trav&amp;#233;s de windows update, a mediados de marzo. Pero si no pueden esperar les dejo un link que les puede interesar :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;a href="http://geeks.ms/blogs/ezavala/archive/2008/02/13/instalar-windows-vista-sp1-desde-windows-update.aspx"&gt;http://geeks.ms/blogs/ezavala/archive/2008/02/13/instalar-windows-vista-sp1-desde-windows-update.aspx&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;Hasta la pr&amp;#243;xima.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&lt;span style="font-size: 12pt; font-family: " calibri","sans-serif"; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: ES-GT; mso-fareast-language: ES-GT; mso-bidi-language: AR-SA"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-4406806071814022959?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/4406806071814022959/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2008/02/liberado-el-sp1-de-windows-vista.html#comment-form" title="1 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/4406806071814022959?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/4406806071814022959?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2008/02/liberado-el-sp1-de-windows-vista.html" title="Liberado el SP1 de Windows Vista" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CUUESXo5eSp7ImA9WBFUEEQ.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-6263408081560661073</id><published>2007-04-20T11:59:00.000-06:00</published><updated>2007-04-20T12:20:08.421-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-20T12:20:08.421-06:00</app:edited><title>Beta 1 de Visual Studio 2007</title><content type="html">Ya esta disponible la Beta 1 de la siguiente generación de herramientas de desarrollo de Microsoft (nombre código ORCAS), adicionalmente liberaron la CTP de las versiones express !!!, creo que si van a cumplir la fecha de lanzamiento final para Octubre de este año, tambien se incluye la siguiente versión del .Net Framework 3.5, enjoy :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/future/default.aspx"&gt;http://msdn.microsoft.com/vstudio/express/future/default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/future/default.aspx"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-6263408081560661073?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/6263408081560661073/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2007/04/betas.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/6263408081560661073?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/6263408081560661073?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2007/04/betas.html" title="Beta 1 de Visual Studio 2007" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkADQX45fCp7ImA9WBFXE0g.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-8357798304645631815</id><published>2007-03-19T20:42:00.000-06:00</published><updated>2007-03-19T20:46:10.024-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-19T20:46:10.024-06:00</app:edited><title>Prototipo de una Computadora del Futuro</title><content type="html">Aquí les dejo algo realmente impresionante, es una demo de un prototipo de computadora, presentada por Microsoft&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://images.soapbox.msn.com/flash/soapbox1_1.swf" quality="high" width="412" height="362" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://macromedia.com/go/getflashplayer" flashvars="c=v&amp;v=c3d3a41f-e914-444f-819c-c7cb0f036c06" &gt;&lt;/embed&gt;&lt;br /&gt;&lt;a href="http://soapbox.msn.com/video.aspx?vid=c3d3a41f-e914-444f-819c-c7cb0f036c06" target="_new" title="Microsoft&amp;#39;s computer future concept"&gt;Video: Microsoft&amp;#39;s computer future concept&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-8357798304645631815?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/8357798304645631815/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2007/03/prototipo-de-una-computadora-del-futuro.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8357798304645631815?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/8357798304645631815?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2007/03/prototipo-de-una-computadora-del-futuro.html" title="Prototipo de una Computadora del Futuro" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkEAR3Yzfyp7ImA9WBFRGUk.&quot;"><id>tag:blogger.com,1999:blog-8754893409694353720.post-3612615401403052477</id><published>2007-03-03T10:46:00.000-06:00</published><updated>2007-03-03T10:50:46.887-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-03T10:50:46.887-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><title>Liberada la versión final de Virtual PC 2007</title><content type="html">La semana pasada se liberó la versión final de esta fantástica herramienta y como la versión anterior, es gratis ;)&lt;br /&gt;&lt;br /&gt;link para para la descarga&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=04D26402-3199-48A3-AFA2-2DC0B40A73B6&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=04D26402-3199-48A3-AFA2-2DC0B40A73B6&amp;amp;displaylang=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8754893409694353720-3612615401403052477?l=marlonramos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://marlonramos.blogspot.com/feeds/3612615401403052477/comments/default" title="Comentarios de la entrada" /><link rel="replies" type="text/html" href="http://marlonramos.blogspot.com/2007/03/liberada-la-versin-final-de-virtual-pc.html#comment-form" title="0 Comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3612615401403052477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8754893409694353720/posts/default/3612615401403052477?v=2" /><link rel="alternate" type="text/html" href="http://marlonramos.blogspot.com/2007/03/liberada-la-versin-final-de-virtual-pc.html" title="Liberada la versión final de Virtual PC 2007" /><author><name>Marlon Ramos</name><uri>https://profiles.google.com/109574407028166590682</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry></feed>

