<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.3devnet.com/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Sergio Tarrillo's Blog -&gt; enhancements</title><link>http://blogs.3devnet.com/blogs/starrillo/default.aspx</link><description>Desarrollo, Productividad, Colaboración, y más</description><dc:language>es-PE</dc:language><generator>CommunityServer 2.0 (Build: 60210.2610)</generator><item><title>Smart Code Generator…. desde ASP.NET</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/09/18/73261.aspx</link><pubDate>Fri, 19 Sep 2008 04:16:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:73261</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/73261.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=73261</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/73261.aspx</wfw:comment><description>&lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/18-writing-code.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/18-writing-code.jpg"&gt;  &lt;p&gt;Nuevamente en Lima y con nuevo trabajo laburo, curro, tengo que terminar una aplicación que está al 80%, y da mucha lata pereza hacer código tradicional (creación de entidades, de clases de acceso a datos, etc)  &lt;p&gt;Bajo demanda (ósea cuando los necesite), iré revisando los diversos generadores de código existentes.  &lt;p&gt;&lt;img alt="http://www.smartcodegenerator.com/index_files/image001.gif" src="http://www.smartcodegenerator.com/index_files/image001.gif"&gt;  &lt;p&gt;&lt;a title="Smart Code Generator - QuickStart" href="http://www.smartcodegenerator.com/" target="_blank"&gt;Smart Code Generator&lt;/a&gt;, es un generador de código a nivel de clases, que tiene como front-end una aplicación Web ASP.NET (VS2005, VS2008). Desde una página Web nosotros podemos generar archivos (Vb, C#), pero en teoría podemos generar cualquier tipo de contenido como Java por ejemplo. Y lo mejor de todo, es que la generación de contenido es a través de plantillas, que son fácilmente personalizables. Como dice su slogan: La generación de código nunca fue tan fácil...  &lt;p&gt;&lt;/p&gt; &lt;p&gt;Después de haberlo &lt;a title="Smart Code Generator" href="http://www.codeplex.com/smartcodegenerator" target="_blank"&gt;descargado desde codeplex&lt;/a&gt;, e instalado, tendremos disponible un nuevo template en Visual Studio. Desde el explorador de soluciones podemos ver el contenido de la Web, pero hay una carpeta que es clave:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/18-VSSolution.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/18-VSSolution.jpg"&gt;&lt;/p&gt; &lt;p&gt;Cada archivo dentro de la carpeta &lt;strong&gt;Templates&lt;/strong&gt; es para un archivo específico, podemos tener un plantilla para la clase de entidades por ejemplo, una para clase de acceso a datos y así. &lt;/p&gt; &lt;p&gt;Y en cada template nosotros podemos personalizar el contenido:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/18-Template.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/18-Template.jpg"&gt;&lt;/p&gt; &lt;p&gt;Una de las cosas interesantes, es que podemos hacer uso de las clases de .Net dentro de la generación de código.&lt;/p&gt; &lt;p&gt;Ejecutamos la página Default.aspx:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/18-DBSchema.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/18-DBSchema.jpg"&gt;&lt;/p&gt; &lt;p&gt;Como ven, ingresamos una conexión, mostramos las tablas disponibles, y seleccionamos aquellas sobre las cuales queremos generar.&lt;/p&gt; &lt;p&gt;Y nada al generar, crea todos los templates que tengamos por cada tabla (NroTemplates*NroTablasSeleccionas):&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/18-Files.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/18-Files.jpg"&gt;&lt;/p&gt; &lt;p&gt;Y si no lo creen, aquí esta un archivo generado:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/18-CodeBody.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/18-CodeBody.jpg"&gt;&lt;/p&gt; &lt;p&gt;No es tan completo como el paquete de Acceso a Datos del &lt;a title="Web Service Software Factory" href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/12/18/58068.aspx" target="_blank"&gt;Web Service Software Factory&lt;/a&gt;, que genera los proyectos, procedimientos almacenados, uso de buenas prácticas, entre otras. Pero creo que la gran ventaja es la &lt;strong&gt;&lt;u&gt;personalización&lt;/u&gt;&lt;/strong&gt;, es decir si tienes tu propio core o framework de clases, las haces Templates, las copias a este Sitio Web, le dices que tablas vas a usar, y vualá: hecha la magia.&lt;/p&gt; &lt;p&gt;Autor del proyecto: &lt;a title="Shahed Khan (MVP)" href="http://geekswithblogs.net/shahed/Default.aspx" target="_blank"&gt;Shahed Khan (MVP)&lt;/a&gt;, y más features (en inglés) de esta herramienta &lt;a title="Smart Code Generator" href="http://www.codeplex.com/smartcodegenerator" target="_blank"&gt;Smart Code Generator (Asp.Net)&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;All development can be done in VS2005 OR VS2003.  &lt;li&gt;Integration with NAnt and Cassini.  &lt;li&gt;Extensible Template Generation Engine.  &lt;li&gt;Open source Database Schema discovery API for MS SQL, Oracle and MySQL.  &lt;li&gt;Uses existing ASP.NET 2.0 website application OR ASP.NET 1.1 web application concepts  &lt;li&gt;Generates text based output  &lt;li&gt;Fully customisable template-based code generation  &lt;li&gt;Remembers custom property data entries &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;P.D.: La plantilla usada en el ejemplo de arriba no viene por defecto, pero también esta como descarga en &lt;a href="http://www.codeplex.com/smartcodegenerator/Release/ProjectReleases.aspx?ReleaseId=2559" target="_blank"&gt;los releases del proyecto&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rock tip&lt;/strong&gt;: &lt;a title="Run as in Windows Vista" href="http://technet.microsoft.com/en-us/sysinternals/cc300361.aspx" target="_blank"&gt;Run as in Windows Vista&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=73261" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1014.aspx">Visual Studio</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1017.aspx">SQL Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1024.aspx">Windows Vista</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1026.aspx">C#</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1028.aspx">Rapitools</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1153.aspx">.NET</category></item><item><title>MCTS 70-433: SQL Server 2008 - Manejo de tablas y vistas</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/09/05/71942.aspx</link><pubDate>Sat, 06 Sep 2008 02:12:16 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:71942</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/71942.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=71942</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/71942.aspx</wfw:comment><description>&lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/09Sep/05_Ladrillos.jpg" src="http://sergiot2.com/blogimages/2008/09Sep/05_Ladrillos.jpg"&gt;&lt;/p&gt; &lt;p&gt;Aunque ahora con las herramientas de consultas, como &lt;a title="SQL Server Management" href="http://geeks.ms/blogs/sergiotarrillo/search.aspx?q=SQL+Server+Management" target="_blank"&gt;SQL Server Management&lt;/a&gt;, se puede hacer cualquier operación con la base de datos, en distintos escenarios vamos a necesitar hacer estas operaciones por queries. Por ejemplo cuando estamos actualizando una versión de base de datos, a de desarrollo a pruebas, o a producción, el modo de hacer un backup y restaurarlo en el otro servidor puede servir al inicio, pero ¿y si la base de datos del otro servidor ya tiene data ingresada? existen varias estrategias para hacer esto, pero la más útil y recomendable por el trabajo que le dado ahora, ha sido generar un archivo actualización con los queries de Update, puede surgir problemas si te olvidas de poner algún query pero ese es otro tema. &lt;/p&gt; &lt;p&gt;Empecemos con el tema...&lt;/p&gt; &lt;p&gt;Tenemos muchas opciones para crear y modificar tablas, usando &lt;a title="SQL Server 2008 - CREATE TABLE (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms174979.aspx" target="_blank"&gt;CREATE TABLE&lt;/a&gt; y &lt;a title="SQL Server 2008 - ALTER TABLE (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms190273.aspx" target="_blank"&gt;ALTER TABLE&lt;/a&gt;. Al crear una tabla nosotros podemos crear columnas calculadas, que son columnas virtuales ya que no son almacenadas físicamente en las tablas, y si queremos almacenarlas físicamente debemos usar el keyword PERSISTED: &lt;a title="SQL Server 2008 - Computed Columns" href="http://msdn.microsoft.com/en-us/library/ms191250.aspx" target="_blank"&gt;Computed Columns&lt;/a&gt;. Con SQL Server 2005 se introdujo el concepto de &lt;a title="Working with schemas in SQL Server 2005" href="http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1184503,00.html" target="_blank"&gt;Schemas&lt;/a&gt;, que entre una de las funciones principales permite categorizar y agrupar los permisos dentro de una base de datos, en este artículo se explica la necesidad de la creación de Schema en versiones anteriores: &lt;a title="Understanding the Difference between Owners and Schemas in SQL Server" href="http://www.sqlteam.com/article/understanding-the-difference-between-owners-and-schemas-in-sql-server" target="_blank"&gt;Understanding the Difference between Owners and Schemas in SQL Server&lt;/a&gt;, ver también &lt;a title="SQL Server 2008 - CREATE SCHEMA (Transact-SQL)" href="http://msdn.microsoft.com/en-us/library/ms189462.aspx" target="_blank"&gt;CREATE SCHEMA&lt;/a&gt;. Recordar que &lt;a title="Gracias se&amp;ntilde;ores (*!@#$%!!) por intentar hackear mi sitio... me han ense&amp;ntilde;ado mucho sobre SharePoint" href="http://geeks.ms/blogs/gvelez/archive/2008/07/17/gracias-se-241-ores-por-intentar-hackear-mi-sitio-me-han-ense-241-ado-mucho-sobre-sharepoint.aspx" target="_blank"&gt;la seguridad es importante siempre&lt;/a&gt;, y no después que hemos sido atacados, y siempre tener claro el concepto: "mínimos privilegios", es decir, si una base de datos tiene distintas aplicaciones que trabajan con ella, y por ejemplo hay una aplicación Web que trabaja con 6 tablas (dentro de un Schema propio), se debería tener un usuario sólo con el permiso a este grupo de tablas, es más si para todas tus modificaciones (CRUD) usas procedimientos almacenados, no deberías permitirle al usuario poder hacer INSERT, UPDATE, o DELETE directamente contra este grupo de tablas, sólo darle permiso de ejecución de los store procedures (CRUD), para modificar los permisos podemos usar &lt;a title="SQL Server 2008 - GRANT (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms187965.aspx" target="_blank"&gt;GRANT&lt;/a&gt;, &lt;a title="SQL Server 2008 - DENY (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms188338.aspx" target="_blank"&gt;DENY&lt;/a&gt;, &lt;a title="REVOKE (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms187728.aspx" target="_blank"&gt;REVOKE&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Sobre las Vistas (&lt;a title="SQL Server 2008 - Views" href="http://msdn.microsoft.com/en-us/library/ms190706.aspx" target="_blank"&gt;Views&lt;/a&gt;) recuerdo que una mini-charla de rendimiento hace años, recomendaron no usarlas, y bueno hasta ahora no he necesitado hacer uso de las mismas. En este artículo podemos &lt;a title="SQL Server 2008 - Understanding Views" href="http://msdn.microsoft.com/en-us/library/ms190174.aspx" target="_blank"&gt;entender las vistas&lt;/a&gt;, y en este otro podemos ver que podemos hacer y que no, con las vistas: &lt;a title="Designing and Implementing Views" href="http://msdn.microsoft.com/en-us/library/ms189918.aspx" target="_blank"&gt;Diseñando e implementando Vistas&lt;/a&gt;. Hay algunas opciones al momento de crear vistas (&lt;a title="CREATE VIEW (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms187956.aspx" target="_blank"&gt;CREATE VIEW&lt;/a&gt;), ENCRYPTION para cifrar el registro en &lt;a href="http://msdn.microsoft.com/es-es/library/ms186293.aspx"&gt;sys.syscomments&lt;/a&gt; que contiene la consulta de la creación de la vista, CHECK OPTION y SCHEMABINDING, para mantener la consistencia cuando se van a &lt;a title="Modificar datos mediante una vista" href="http://msdn.microsoft.com/es-es/library/ms180800.aspx" target="_blank"&gt;modificar los datos en una vista&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;El tema de índices, debería tener una o varias entradas sólo para hablar de ello. Y el tema de índices no muchas veces se entiende en el primer review, charla, u otra fuente de información, sobre todo si no esta bien explicados, pero si debemos saber que el buen uso de &lt;a title="SQL Server 2008 - Indexes" href="http://msdn.microsoft.com/en-us/library/ms189271.aspx" target="_blank"&gt;Indexes&lt;/a&gt; va a mejorar el rendimiento de los queries y aplicaciones que usen nuestra base de datos, debido a que los índices pueden reducir la cantidad de data que se debe leer para devolver un conjunto de registros. Una &lt;a title="SQL Server 2008 - Index Basics" href="http://msdn.microsoft.com/en-us/library/ms190457.aspx" target="_blank"&gt;tabla o vista puede contener&lt;/a&gt; índices &lt;a title="SQL Server 2008 - Clustered Index Structures" href="http://msdn.microsoft.com/en-us/library/ms177443.aspx" target="_blank"&gt;clustered&lt;/a&gt;, y &lt;a title="SQL Server 2008 - Nonclustered Index Structures" href="http://msdn.microsoft.com/en-us/library/ms177484.aspx" target="_blank"&gt;nonclustered&lt;/a&gt;, además existen otras opciones en los &lt;a title="SQL Server 2008 - Types of Indexes" href="http://msdn.microsoft.com/en-us/library/ms175049.aspx" target="_blank"&gt;tipos de índices disponibles en SQL Server&lt;/a&gt;: &lt;a title="SQL Server 2008 - Filtered Index Design Guidelines" href="http://msdn.microsoft.com/en-us/library/cc280372.aspx" target="_blank"&gt;Filtered Index&lt;/a&gt;, &lt;a title="SQL Server 2008 - Index with Included Columns" href="http://msdn.microsoft.com/en-us/library/ms190806.aspx" target="_blank"&gt;Index with Included Columns&lt;/a&gt;, &lt;a title="Unique Index Design Guidelines" href="http://msdn.microsoft.com/en-us/library/ms187019.aspx" target="_blank"&gt;Unique Index&lt;/a&gt;, entre otros. Dentro de las opciones para &lt;a title="SQ Server 2008 - Optimizing Indexes" href="http://msdn.microsoft.com/en-us/library/ms190910.aspx" target="_blank"&gt;optimizar índices&lt;/a&gt;, se encuentra el uso de la opción &lt;a title="SQL Server 2008 - Fill Factor" href="http://msdn.microsoft.com/en-us/library/ms177459.aspx" target="_blank"&gt;Fill Factor&lt;/a&gt;. Cada vez que se ejecuta un query el componente &lt;a title="Query Optimizer" href="http://en.wikipedia.org/wiki/Query_optimizer" target="_blank"&gt;Query Optimizer&lt;/a&gt;, es el encargado de determinar la manera más eficiente de ejecutar un query, basado en los famosos planes de ejecución, es bueno conocer como el Query Optimizer, genera las estadísticas para escoger el plan de ejecución más eficiente, nosotros podemos crear estadísticas (&lt;a title="SQL Server 2008 - CREATE STATISTICS (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms188038.aspx" target="_blank"&gt;CREATE STATISTICS&lt;/a&gt;) de las columnas y su comportamiento con los índices, para más información revisar el siguiente artículo: &lt;a title="Used by the Query Optimizer in Microsoft SQL Server 2005" href="http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx" target="_blank"&gt;Statistics Used by the Query Optimizer in Microsoft SQL Server 2005&lt;/a&gt;. Con respecto al tema indexed views, revisar el siguiente artículo: &lt;a title="Improving Performance with SQL Server 2005 Indexed Views" href="http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx" target="_blank"&gt;Improving Performance with SQL Server 2005 Indexed Views&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Si ya pasaron el tema de índices, los constraints son más sencillos, son usados para &lt;a title="Enforcing Data Integrity" href="http://msdn.microsoft.com/en-us/library/ms190765.aspx" target="_blank"&gt;forzar la integridad de la data&lt;/a&gt;, y si revisaron el tema de &lt;a title="SQL Server 2008 - CREATE TABLE (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms174979.aspx" target="_blank"&gt;CREATE TABLE&lt;/a&gt; y &lt;a title="SQL Server 2008 - ALTER TABLE (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms190273.aspx" target="_blank"&gt;ALTER TABLE&lt;/a&gt; los deben haber visto: &lt;a title="SQL Server 2008 - PRIMARY KEY Constraints" href="http://msdn.microsoft.com/en-us/library/ms191236.aspx" target="_blank"&gt;PRIMARY KEY&lt;/a&gt; (revisar &lt;a title="SQL Server 2008 - SET IDENTITY_INSERT (Transact-SQL)" href="http://msdn.microsoft.com/es-es/library/ms188059.aspx" target="_blank"&gt;IDENTITY_INSERT&lt;/a&gt; para insertar valores predeterminados a un columna Identity), &lt;a title="SQL Server 2008 - FOREIGN KEY Constraints" href="http://msdn.microsoft.com/en-us/library/ms175464.aspx" target="_blank"&gt;FOREIGN KEY&lt;/a&gt; (revisar &lt;a title="Cascading Referential Integrity Constraints" href="http://msdn.microsoft.com/en-us/library/ms186973.aspx" target="_blank"&gt;las opciones de actualización de información&lt;/a&gt;), &lt;a title="SQL Server 2008 - UNIQUE Constraints" href="http://msdn.microsoft.com/en-us/library/ms191166.aspx" target="_blank"&gt;UNIQUE&lt;/a&gt;, &lt;a title="CHECK Constraints" href="http://msdn.microsoft.com/en-us/library/ms188258.aspx" target="_blank"&gt;CHECK&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Los tipos de &lt;a title="Designing and Implementing Structured Storage (Database Engine)" href="http://msdn.microsoft.com/en-us/library/bb510424.aspx" target="_blank"&gt;datos estructurados&lt;/a&gt;, son los que veníamos usando desde las primeras versiones de SQL, con SQL Server 2005 se contaba con &lt;a title="Designing and Implementing Semistructured Storage (Database Engine)" href="http://msdn.microsoft.com/en-us/library/bb522446.aspx" target="_blank"&gt;datos semi-estructurados (Xml)&lt;/a&gt;. Ahora con SQL Server 2008 tenemos el tipo de &lt;a title="Designing and Implementing Spatial Storage (Database Engine)" href="http://msdn.microsoft.com/en-us/library/bb933790.aspx" target="_blank"&gt;datos espacial&lt;/a&gt;, y el tipo &lt;a title="Designing and Implementing FILESTREAM Storage" href="http://msdn.microsoft.com/en-us/library/bb895234.aspx" target="_blank"&gt;FileStream&lt;/a&gt;, y respecto a estos últimos hay mucha información en los blogs, e internet en general.&lt;/p&gt; &lt;p&gt;Partición de tablas e índices, siempre lo distribuido (cuando se hace bien) tiende a llevar a una alta disponibilidad y escalabilidad. La &lt;a title="SQL Server 2008 - Partitioned Tables and Indexes" href="http://msdn.microsoft.com/en-us/library/ms188706.aspx" target="_blank"&gt;partición de tablas e índices&lt;/a&gt;, permite que la data sea dividida horizontalmente y puede ser colocada en más de un filegroup. Recordar que la &lt;a title="SQL Server 2008 - Partitioned Table and Index Concepts" href="http://msdn.microsoft.com/en-us/library/ms190787.aspx" target="_blank"&gt;partición de tablas e índices&lt;/a&gt; sólo esta disponible en las versiones SQL Server Enterprise y SQL Server Developer Edition. &lt;a title="Planning Guidelines for Partitioned Tables and Indexes" href="http://msdn.microsoft.com/en-us/library/ms180767.aspx" target="_blank"&gt;Antes de particionar las tablas o índices&lt;/a&gt;, debemos crear los siguientes objetos: &lt;a title="SQL Server 2008 - CREATE PARTITION FUNCTION (Transact-SQL)" href="http://msdn.microsoft.com/en-us/library/ms187802.aspx" target="_blank"&gt;Partition Function&lt;/a&gt;, para especificar como la tabla o los índices serán particionados y &lt;a title="SQL Server 2008 - CREATE PARTITION SCHEME (Transact-SQL)" href="http://msdn.microsoft.com/en-us/library/ms179854.aspx" target="_blank"&gt;Partition Scheme&lt;/a&gt; mapea las particiones producidas por una Partition Function para asignarlas a los filefroups definidos. Existen &lt;a title="Table Partitioning in SQL Server 2005 -- Part III" href="http://www.dotnetspider.com/resources/2331-Table-Partitioning-SQL-Server---Part-III.aspx" target="_blank"&gt;tres diferentes tipos de operaciones con particiones&lt;/a&gt;: MERGE, SPLIT, y SWITCH. Por cierto también podemos hacer &lt;a href="http://msdn.microsoft.com/en-us/library/ms181036.aspx" target="_blank"&gt;partición de las vistas&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;P.D.: Algunas de las mejoras del SQL Server Management Studio (2008), es el IntellSense para algunos keywords y algunos objetos (todavía no tengo claro el patrón), y algo que se pedía a gritos el agrupamiento de un bloque de código en los queries, ósea como si usaras las llaves de C# y puedes comprimir las líneas visibles de código, para la otra versión espero el #region...#endregion :D.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=71942" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1017.aspx">SQL Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1151.aspx">MCTS</category></item><item><title>Que estas usando GET o POST? -no, yo uso ASP.Net</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/08/25/71119.aspx</link><pubDate>Mon, 25 Aug 2008 10:40:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:71119</guid><dc:creator>starrillo</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/71119.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=71119</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/71119.aspx</wfw:comment><description>&lt;p&gt;Normalmente, cuando alguién esta aprendiendo a desarrollar en Php, Jsp, o el ASP clásico (hasta el final del post lo voy a usar como ASP3), siempre hay una breve introducción al Html, y ves las diferencia de usar los métodos GET y el método POST, del protocolo &lt;a href="http://en.wikipedia.org/wiki/Htpp" title="http://en.wikipedia.org/wiki/Htpp" target="_blank"&gt;HTTP&lt;/a&gt; ( si eres desarrollador Asp.Net, tienes aplicaciones en producción, y no sabes que es GET ni POST, y menos sus diferencias, hombre, que nunca es tarde para aprender), es más en el dictado de los cursos sobre estos lenguajes se incluian estos dos temas. Recuerdo en los primeros ciclos de la universidad primero me meti a un curso, fuera de la unviersidad, de JSP (dictado por un cubano, Guillermo Sanchez &lt;strike&gt;hasta ahora creo que es el mejor curso de programación que tuve&lt;/strike&gt;) debido a que quería aprender Java, pero no sabía que no era programación en Java, era programación Web con Java, por suerte hacía unas semanas estaba aprendiendo por mi cuenta html y no me fue extranio el curso. Al siguiente ciclo me metí a un curso de Php (con Cesár Bustamente, muy bueno el curso), y comienzas a notar que todos son html, métodos Post, get, base de datos, y como que le agarras onda al asunto. Y después me metí a un Curso de ASP.Net (VS2003), (todos fuera de la Universidad) que lo enseñaba un certificado Microsoft MSCD.Net, la visión del curso era buena: introducción a .Net, Visual Studio .Net, Web Forms, uso de controles, controles de usuario, controles de datos, controles de validación, Web Services, y bueno más tarde me di cuenta que eran los &lt;a href="http://www.microsoft.com/learning/en/us/syllabi/2310Bfinal.mspx" target="_blank"&gt;temas del 2310&lt;/a&gt;, &lt;strike&gt;y no voy a decir que usaba los mismos slides y los mismos ejemplos&lt;/strike&gt;. Y bueno el curso estuvo bien enfocado, a lo que se necesita en toda aplicación Web de mantenimientos o interacción con base de datos, ¿pero y si en el curso habían personas que no sabían html, o no sabían la diferencia entre Get y Post?, no recuerdo que haya hecho esa pregunta.&lt;/p&gt; &lt;p&gt;Y este patrón se sigue repitiendo en la actualidad, por ejemplo alguién que aprendio a programar con C++, o con Visual Basic, y nunca vieron nada Web, no saben que existe el html, ni Get, ni Post, ni nada Web. Y deciden aprender desarrollo Web con ASP.Net, &lt;strike&gt;por eso de que la Web es la voz&lt;/strike&gt;, descargan tutoriales, abren Visual Studio, y comienzan a arrastrar controles indiscriminadamente, hacen doble clic en un botón, se agrega el evento botón, programan llenar un GridView, hacen View in Browser, y ya se podría decir que son desarrolladores Web, y si les preguntas que método usaste Get o Post?, la respuesta es: -"no, yo uso ASP.Net"...&lt;/p&gt; &lt;p&gt;¿&lt;b&gt;Cuál es el problema&lt;/b&gt;? Con respecto al html, va desde problemas en diseño, hasta problemas en programación. En diseño, por ejemplo arrastras un control Repeater, y lo vas a rellenar con tablas, para poner un ejemplo:&lt;/p&gt; &lt;div&gt; &lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;asp:Repeater&lt;/span&gt; &lt;span&gt;ID&lt;/span&gt;&lt;span&gt;="repData"&lt;/span&gt; &lt;span&gt;runat&lt;/span&gt;&lt;span&gt;="server"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;HeaderTemplate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;        &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;           &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;HeaderTemplate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ItemTemplate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt;           &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;lt;%&lt;/span&gt;# Eval("nombre") % &lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;td&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   8:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ItemTemplate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   9:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;FooterTemplate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  10:&lt;/span&gt;           &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;tr&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;           &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  11:&lt;/span&gt;        &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;table&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  12:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;FooterTemplate&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  13:&lt;/span&gt; &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;asp:Repeater&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Y el colmo, el jefe les pregunta, por que se ve mal página: - "He revisado varios foros, y dicen que Visual Studio no generá bien el Html, que tiene muchos errores, debe ser por que es Microsoft".&lt;/p&gt;
&lt;p&gt;Y en programación también genera problemas, una vez vi un código que había divs sin cerrar, no estaba ordenado, el cerrar un UpdatePanel no estaba donde debería estar, eso si erá un código espagueti, y todo eso hacía que no funcione ASP.Net Ajax, cuál es la salida del programador: "Asp.Net Ajax no funciona con proyectos existentes, tiene que ser con proyecto nuevos"&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Atención&lt;/b&gt;, tampoco se trata de que seas un experto en Html, ni mucho menos, y ya hemos comentado las diferencias que debería haber entre el designer y el developer, y como &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2008/04/11/82923.aspx" title="VS2008: CSS for Developer (Dummies Designers)" target="_blank"&gt;Visual Studio 2008 te da una ayudita&lt;/a&gt;, para eso están los designers, y si no eres designer te bajas algún Starter Kit.&lt;/p&gt;
&lt;p&gt;¿Pero que tengas problemas de programación porque no sabes cerrar un elemento html, y si sabes lo haces mal? Pues como que hay un pequeño problema. Si en un proyecto Web te vas a dedicar a crear los componentes de acceso a datos, te vas a meter unas fumadas con patrones, con WCF, con EF, pero no vas hacer las aspx, no hay problema si no sabes html, por que tu tarea es otra. Pero si tu eres el que vas desarrollar las aspx, eres el que va integrar el html que te envíe el designer, o eres el que va modificar el html de un starter kit, no saber nada html, ni la diferencia entre Get y Post... no se si imperdonable sea la palabra, pero de que te va traer algún problema en algún momento, lo va hacer.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Conclusión&lt;/b&gt;, no pretendo cambiar la forma de dictar, enseñar o aprender ASP.Net, pero si pienso que deberíamos (me incluyo por que creo hasta ahora no le puse el enfasis que merece) tratar de orientar mejor los objetivos y pre-requisitos de los mismos. Si vas a dictar un curso de ASP.NET 3.5 &lt;strike&gt;porque ASP.NET 2.0 es el pasado&lt;/strike&gt; que los temas vayan: 1) Visual Studio 2008 2) Master Pages &amp;amp; Themes 3) Controles Web 4) Controles de datos 5)Linq 6) y los que siguen... son excelente, pero debes asegurarte que sean pre-requisitos tener conocimientos básicos de html y programación... y si el curso ya esta marcha, pues tratar de algunas clases explicar los métodos Get, Post, tener un html válido, etiquetas básicas de html, entre otros... &lt;/p&gt;
&lt;p&gt;Por útlimo dejar esta serie de WebCast, de &lt;b&gt;&lt;/b&gt;&lt;a href="http://www.jstawski.com/" title="Jonas Stawski" target="_blank"&gt;Jonas Stawski&lt;/a&gt;, y que realmente es programación Web para principiantes, para aquellos que recién van aprender desarrollo Web, y para aquellos que ya desarrollan en ASP.Net, pero se saltaron el aprender Html, Get, Post, y eso...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032336422&amp;amp;culture=es-ES" title="Programando Web para principiantes I" target="_blank"&gt;Programando Web para principiantes I&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032336425&amp;amp;culture=es-ES" title="Programando Web para principiantes II" target="_blank"&gt;Programando Web para principiantes II&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032346608&amp;amp;culture=es-ES" title="Programando Web para principiantes III" target="_blank"&gt;Programando Web para principiantes III&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;P.D.: El título orginal de la entrada era: Enviar variables desde ASP3 por POST a una página ASP.Net, pero el comentario introductorio de unas líneas, se hizo una entrada :$.&lt;/p&gt;
&lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=71119" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1009.aspx">ASP.NET</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1134.aspx">Web</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1153.aspx">.NET</category></item><item><title>[WebCast] Codename Velocity, este viernes 22 de Agosto</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/08/19/70689.aspx</link><pubDate>Tue, 19 Aug 2008 09:29:15 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:70689</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/70689.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=70689</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/70689.aspx</wfw:comment><description>&lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/08Ago/19-Velocity.jpg" src="http://sergiot2.com/blogimages/2008/08Ago/19-Velocity.jpg"&gt;&lt;/p&gt; &lt;p&gt;Pues y eso, este Viernes 22 de Agosto estaremos en el &lt;a title="El proyecto Microsoft con nombre c&amp;oacute;digo &amp;ldquo;Velocity&amp;rdquo; para aplicaciones escalables y disponibles" href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032384109&amp;amp;EventCategory=4&amp;amp;culture=es-AR&amp;amp;CountryCode=AR" target="_blank"&gt;WebCast - Microsoft Codename Velocity&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"&lt;em&gt;El Proyecto Microsoft con nombre código “Velocity es una plataforma caché de aplicaciones que integra directamente un grupo grande de máquinas en una sola caché unificada con escalación y alta disponibilidad. Los datos de aplicaciones tienden a clasificarse en tres clases principales. Los datos de referencia (por ejemplo, catálogos de productos) son básicamente datos de sólo lectura que suelen ser compartidos por muchos usuarios; los datos de actividad (por ejemplo, carritos de compra, pedidos) representan el estado de la sesión y tienen a ser de lectura-escritura, usualmente por sesión única; y los datos de recursos (por ejemplo, inventario) son a datos que se leen y se actualizan por varias sesiones de aplicaciones. El rendimiento y la escalabilidad son esenciales para todas las aplicaciones, sin importar los tipos de datos que manejen. Para los datos de actividad y de recursos la disponibilidad es igualmente crítica. En esta plática presentamos la nueva solución de caché de Microsoft, el Proyecto “Velocity”, una memoria caché distribuida que puede copiar en la memoria caché los datos de las aplicaciones para aportar rendimiento, escalabilidad y disponibilidad con clústers comerciales."&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a title="Informaci&amp;oacute;n general sobre el proyecto Velocity" href="http://geeks.ms/blogs/jorge/archive/2008/06/07/informaci-243-n-general-sobre-el-proyecto-velocity.aspx" target="_blank"&gt;Jorge&lt;/a&gt; y &lt;a title="La velocidad de SharePoint" href="http://geeks.ms/blogs/gvelez/archive/2008/06/11/la-velocidad-de-sharepoint.aspx" target="_blank"&gt;Gustavo&lt;/a&gt;, ya han comentado sobre este nuevo proyecto, que esta en su versión CTP1, y dentro de poquito en el &lt;a title="Professional Developer Conference 2008" href="http://www.microsoftpdc.com/" target="_blank"&gt;PDC08&lt;/a&gt; tendremos disponible la versión CTP2. Y para dar un breve definición, es un servicio que permite tener una granja de servidores dedicados a una cache distribuidas para aplicaciones que requieran alto rendimiento, escalabilidad, y disponibilidad. Velocity, además provee comandos, y archivos de configuración para alterar las diversas opciones que contiene este servicio, por ejemplo usar una Cache particionada o usar una Cache replicada. Y también incluye un juego de APIs para trabajar con ella desde .Net, y no esta demás decir que se puede integrar con el manejo de sesiones de ASP.NET, y según lo que leí la idea es que en un futuro tengamos este servicio incluido dentro de .Net. &lt;/p&gt; &lt;p&gt;Por cierto el instalador requiere tener instalado el Framework 3.5. Mas información sobre el proyecto: &lt;a title="http://msdn.microsoft.com/en-us/data/cc655792.aspx" href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;http://msdn.microsoft.com/en-us/data/cc655792.aspx&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=70689" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1134.aspx">Web</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1153.aspx">.NET</category></item><item><title>Y no sabia que los Gadgets de Windows Vista eran Open Source...</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/08/13/70426.aspx</link><pubDate>Wed, 13 Aug 2008 18:22:46 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:70426</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/70426.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=70426</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/70426.aspx</wfw:comment><description>&lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/08Ago/13_Sidebar_Gadgets_Vista.png" src="http://sergiot2.com/blogimages/2008/08Ago/13_Sidebar_Gadgets_Vista.png"&gt;&lt;/p&gt; &lt;p&gt;Ayer estaba buscando algún tutorial para crear un gadget para Windows Vista, y pues no sabía que los Gadgets de Windows Vista eran OpenSource.&lt;/p&gt; &lt;p&gt;Si vamos a la &lt;a title="galer&amp;iacute;a de Gadgets Windows Vista" href="http://gallery.live.com/results.aspx?bt=1&amp;amp;pl=1" target="_blank"&gt;galería de Gadgets&lt;/a&gt; que esta en la Web, al descargar el gadget deseado, este tendrá la extensión *.gadget:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/08Ago/13_Gadgets-WindowsVista.jpg" src="http://sergiot2.com/blogimages/2008/08Ago/13_Gadgets-WindowsVista.jpg"&gt;&lt;/p&gt; &lt;p&gt;Y para ver el código fuente del gadget, sólo renombramos el archivo a *.zip. Extraemos los archivos, y abrimos la carpeta con nuestro editor favorito &lt;strike&gt;obviamente Visual Studio&lt;/strike&gt;, y podemos ver todo el código usado para crear el gadget:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/08Ago/13_VisualStudio-edit-Gadgets.jpg" src="http://sergiot2.com/blogimages/2008/08Ago/13_VisualStudio-edit-Gadgets.jpg"&gt;&lt;/p&gt; &lt;p&gt;Y pues la mayoría de gadgets que revisemos, tendrán gran contenido de JavaScript.&lt;/p&gt; &lt;p&gt;El Gadget que hice &lt;strike&gt;piratee (cambiar logo, letra, y fecha)&lt;/strike&gt; fue un Countdown de la fecha en que celerebrá el &lt;a title="Y se viene el Blog Day 2008 y su celebracion en Peru...." href="http://sergiot2.com/diario/post.aspx?id=fb6f4f7f-e064-41a6-ab73-2c0249c3997a" target="_blank"&gt;Blog Day 2008 en Perú&lt;/a&gt;, que será el viernes 29 de Agosto:&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/diario/blogimages/2008/08Ago/13_Gadget-BlogDay-2008-Peru.jpg" src="http://sergiot2.com/diario/blogimages/2008/08Ago/13_Gadget-BlogDay-2008-Peru.jpg"&gt; &lt;p&gt;P.D.: Para empaquetar un gadget, enviar a un Zip los archivos y cambiar la extensión a *.gadget. Tener en cuenta que los archivos deben verse directamente al abrir el zip, que no haya una carpeta dentro del zip y recién dentro esten los archivos, ya que no se instalará el gadget. &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=70426" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1024.aspx">Windows Vista</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1134.aspx">Web</category></item><item><title>[Off-Topic] [APNT] Concurso 20 blogs peruanos (no me voten!)</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/07/21/68571.aspx</link><pubDate>Mon, 21 Jul 2008 08:42:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:68571</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/68571.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=68571</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/68571.aspx</wfw:comment><description>&lt;p&gt;&lt;b&gt;[APNT]&lt;/b&gt; = Advertencia!, post no técnico. &lt;/p&gt;&lt;a href="http://www.20blogsperuanos.com/vota-por-un-blog/?url=http://geeks.ms/blogs/sergiotarrillo/" target="_blank"&gt;&lt;img src="http://20blogsperuanos.s3.amazonaws.com/04a.gif" title="Concurso Blogs Peruanos, Estamos buscando a los 20 mejores Blogs del Perú" alt="Concurso Blogs Peruanos, Estamos buscando a los 20 mejores Blogs del Perú" border="0"&gt;&lt;/a&gt; &lt;div&gt;&lt;a href="http://www.paginasamarillas.com.pe" target="_blank"&gt;&lt;img src="http://20blogsperuanos.s3.amazonaws.com/04b.gif" title="Páginas Amarillas" alt="Páginas Amarillas" border="0"&gt;&lt;/a&gt;&lt;p&gt;Disculpen el off-topic, sobre todo por la temporada baja de posts. He estado ocupando el tiempo &lt;strike&gt;lo que queda después del trabajo&lt;/strike&gt; en un &lt;a href="http://sergiot2.com/" title="sergiot2.com - los bloggers al poder, di?" target="_blank"&gt;proyecto personal&lt;/a&gt;, y &lt;a href="http://sergiot2.com/diario/post.aspx?id=f9f27abc-0d44-4219-88a1-cf343fef6ffd" title="sergiot2.com - si ya gastaste en el proyecto de tesis, por que no hacer la tesis?" target="_blank"&gt;haciendo la tesis&lt;/a&gt; para obtener el título de Ing. de Sistemas (ahora sólo tengo el de bachiller en Ing. de Sistemas), y bueno creo que si no hace ahora, no se hace nunca... así que parece que si la hacemos... hay muchos posts en la cola, y cuando se pueda los iremos enviando...  &lt;/p&gt;&lt;p&gt;El motivo de la entrada, es debido a un concurso que se esta organizando en los bloggers peruanos: &lt;a href="http://www.20blogsperuanos.com/" title="20 Blogs peruanos" target="_blank"&gt;20 Blogs peruanos&lt;/a&gt;. En la cual este humilde blog también esta participando.&lt;/p&gt; &lt;p&gt;Hace más de tres años (Marzo-2005), que me inicie en esto de los blogs y no me arrepiento, me ha dado muchas satisfaciones he conocido a mucha gente, y sin querer queriendo también ha influido en las ofertas laborales que he tenido. Hace más de 2 años que blogueo en &lt;a href="http://geeks.ms/blogs/" title="Geeks.ms - Geeks de Windows y .Net" target="_blank"&gt;Geeks&lt;/a&gt; (Junio-2006), &lt;strike&gt;chanfle no enviamos el post de celebración del segundo aniversario&lt;/strike&gt;, y pues sigo repitiendo que es la comunidad de blogs más grande a nivel hispana, en blogs, contenido y calidad. Creo que uno de los exitos de la misma, ha sido convocar a todas las personas de los diversos paises de habla hispana que deseen compartir sus conocimientos, o en mi caso lo poco que sé, con la comunidad. Además de compartir, creo que se aprende muchas más, por los comentarios y por los otros bloggers presentes.&lt;/p&gt; &lt;p&gt;Y pués y nada, si en algo les ha ayudado este humilde blog, alguna de sus dudas ha sido resuelta, los ha motivado a leer un poco más para darme la contra, o simplemente encontraron un tip de bolsillo, pueden hacer llegar su voto a través de la siguiente página: &lt;a href="http://www.20blogsperuanos.com/vota-por-un-blog/?url=http://geeks.ms/blogs/sergiotarrillo/" title="Vota por un blog" target="_blank"&gt;Vota por un blog&lt;/a&gt;, no se olvide de escoger la categoría tecnología.&lt;/p&gt; &lt;p&gt;P.D.: Tampoco lo vean como una campaña Spam, no van a ver en el msn: Voten por mi blog &lt;strike&gt;menos el clásico no voten por mi blog&lt;/strike&gt;, es sólo una manera de ver si los que aún quedan suscritos al &lt;a href="http://feeds.feedburner.com/sergiotarrillo" title="RSS - sergiotarrillo" target="_blank"&gt;RSS de blog&lt;/a&gt; siguen vistando el blog, y si hay alguien más leyendo el blog.&lt;/p&gt; &lt;p&gt;Por cierto, casí lo olvido, sólo se puede votar hasta el 22 de agosto :D&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;&lt;/div&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=68571" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1043.aspx">Varios</category></item><item><title>No todos los problemas se resuelven programando, a algunos hay que hacerles la magia...</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/06/18/66886.aspx</link><pubDate>Wed, 18 Jun 2008 21:38:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66886</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/66886.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=66886</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/66886.aspx</wfw:comment><description>&lt;p&gt;&lt;img src="http://sergiot2.com/blogimages/2008/06Jun/18_magia.jpg" alt="http://sergiot2.com/blogimages/2008/06Jun/18_magia.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Un post de reflexión :D, y que servirá de referencia a otros.&lt;/p&gt; &lt;p&gt;Recurrentemente ante situaciones donde estás horas y horas, con un problema y no encuentras el código que lo haga funcionar, visitas todos los foros, en español, inglés, y hasta chino, y nada, y a la gente que envías un email esta apretada con sus quehaceres, lo último que queda es hacer la magia.&lt;/p&gt; &lt;p&gt;¿Pero qué es la &lt;b&gt;magia&lt;/b&gt;?. La magia es la experiencia, el sentido común, y la habilidad que vas acumulando conforme aumenta tu participación en proyectos (exitosos o no). No se han dado cuenta que su ki, aumenta después de cada proyecto?, pues una manera de comprobarlo es revisando los primeros códigos que hacíamos, y que cuando los revisas, has los llegas a negar... pero esa es otra historia.&lt;/p&gt; &lt;p&gt;Ahora la adquisición de conocimientos es de todo el contexto: compañeros, proyecto, usuarios, y todo lo que rodea al proyecto. aprendes buenas prácticas, aprendes malas prácticas, (ya sabes que no hacer), aprendes de los buenos jefes de proyectos, también de los malos, incrementa tu capacidad de negociación, y tomar responsabilidad, sobre todo para que no &lt;strike&gt;tener que resolver bugs de otros&lt;/strike&gt; te chanten muertitos de otros, aprendes a tratar con las personas, después de tratar con los usuarios, aprendes aguantar a los compañeros chinches, (no se como se dirá en otros países, pero alguien chinche es aquella persona que hace llegar al límite tu nivel de paciencia).&lt;/p&gt; &lt;p&gt;¿Y como &lt;b&gt;aplico la magia&lt;/b&gt; para resolver un problema de programación?&lt;/p&gt; &lt;p&gt;Lo primero, es saber donde buscar, y donde preguntar, y a quién preguntar, recordar que probablemente nosotros no seamos los primeros con el mismo problema. El detalle viene en que quizás la solución no encaje en nuestra aplicación, o sea muy trabajosa, o sea muy compleja, entonces la opción es dar una &lt;b&gt;alternativa&lt;/b&gt;, al &lt;b&gt;requerimiento del usuario&lt;/b&gt;.&lt;/p&gt; &lt;p&gt;Debemos analizar nuevamente el requerimiento y buscar soluciones alternativas, hombre que de alguna manera tienes que satisfacer el requerimiento del usuario. Y estas alternativas dependiendo del requerimiento pueden variar, quizás haciendo cambios en el diseño, lo solucionemos, o quizás anexando información, ya la magia nos dirá que hacer.&lt;/p&gt; &lt;p&gt;Un ejemplo:&lt;/p&gt; &lt;p&gt;&lt;b&gt;Problema&lt;/b&gt;: Desde una página aspx, estoy enviando los productos seleccionados en la página, y estoy abriendo un popup a través de JavaScript, pero si los navegadores tienen habilitado bloquear los popups, la aplicación pierde de alguna manera el flujo actual, y si estoy limpiando los productos seleccionados después de hacer postback, los productos seleccionados se pierden, y el usuario no sabe si tiene que volver a seleccionar los productos.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Solución&lt;/b&gt;: &lt;a href="http://www.google.com/search?q=javascript+detect+block+popup&amp;amp;hl=es" title="Google - javascript+detect+block+popup" target="_blank"&gt;Buscar el código JavaScript&lt;/a&gt; para detectar si el usuario tiene activada esta opción.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Re-Problema&lt;/b&gt;: El problema puede venir, por ejemplo si para abrir el popup estamos registrando el código desde una página ASP.NET, y para hacerlo esto necesita un postback, ahora si el postback hace otros eventos, y dependiendo de nuestro código, tengamos que hacer más código para no perder algunas variables que estemos usando, y que todo funcione correctamente, y se hace todo un rollo.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Solución-Alternativa&lt;/b&gt;: Cambiar el diseño, e indicar al usuario que productos están seleccionandos. Así, si el navegador usuario tiene habilitado el bloqueo de popups, no tengo que hacer código extra por que le estoy informado cuales son productos seleccionados, y que no tiene que volverlo hacer. &lt;/p&gt; &lt;p&gt;Y eso, no todo se resuelve programando. &lt;/p&gt; &lt;p&gt;Por eso siempre ante alguna pregunta de código media marciana, siempre pregunto cual es el requerimiento, y quizás esta re-pregunta demuestre que no queremos ayudar o desconocimiento del tema &lt;strike&gt;que puede ser cierto&lt;/strike&gt;, pero quizás no necesitemos un código marciano, solo cambiar de alguna manera el requerimiento.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66886" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1043.aspx">Varios</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1123.aspx">developer++</category></item><item><title>Elementos html Flash validos por la W3C</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/06/16/66770.aspx</link><pubDate>Mon, 16 Jun 2008 21:07:33 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66770</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/66770.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=66770</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/66770.aspx</wfw:comment><description>&lt;p&gt;Hay que tener algunas consideraciones a la hora de embeber el html de flash en nuestras páginas web y que este sea un código válido por la &lt;a title="World Wide Web Consortium (W3C)" href="http://www.w3.org/" target="_blank"&gt;W3C&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Lo primero que tenemos que tener en cuenta es no usar el objeto embed, que lo encontramos por ejemplo en las referencias de &lt;a title="YouTube - Broadcast Yourself" href="http://www.youtube.com/" target="_blank"&gt;YouTube&lt;/a&gt;:&lt;/p&gt; &lt;div&gt; &lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;object&lt;/span&gt; &lt;span&gt;width&lt;/span&gt;&lt;span&gt;="425"&lt;/span&gt; &lt;span&gt;height&lt;/span&gt;&lt;span&gt;="344"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="movie"&lt;/span&gt; &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="http://www.youtube.com/v/MrMNHwmd9Hc&amp;amp;hl=en"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;param&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;embed&lt;/span&gt; &lt;span&gt;src&lt;/span&gt;&lt;span&gt;="http://www.youtube.com/v/MrMNHwmd9Hc&amp;amp;hl=en"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt;           &lt;span&gt;type&lt;/span&gt;&lt;span&gt;="application/x-shockwave-flash"&lt;/span&gt; &lt;span&gt;width&lt;/span&gt;&lt;span&gt;="425"&lt;/span&gt; &lt;span&gt;height&lt;/span&gt;&lt;span&gt;="344"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;embed&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt; &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Este objeto embed, no es parte de la especificación &lt;a title="XHTML - eXtensible Hypertext Markup Language" href="http://es.wikipedia.org/wiki/XHTML" target="_blank"&gt;XHTML&lt;/a&gt;, y por ende no pasara la validación. El ajuste consiste en no usar el objeto embed, y en su lugar sólo usar el objeto param:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;object&lt;/span&gt; &lt;span&gt;width&lt;/span&gt;&lt;span&gt;="425"&lt;/span&gt; &lt;span&gt;height&lt;/span&gt;&lt;span&gt;="344"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;      &lt;span&gt;data&lt;/span&gt;&lt;span&gt;="http://www.youtube.com/v/42znqcedrX0"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;      &lt;span&gt;type&lt;/span&gt;&lt;span&gt;="application/x-shockwave-flash"&lt;/span&gt; &lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="movie"&lt;/span&gt; &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="http://www.youtube.com/v/42znqcedrX0"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;            &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt; &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Veamos el caso por ejemplo de un MP3 Player:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;object&lt;/span&gt; &lt;span&gt;type&lt;/span&gt;&lt;span&gt;="application/x-shockwave-flash"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;      &lt;span&gt;data&lt;/span&gt;&lt;span&gt;="http://sergiot2.com/audio/player.swf"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;      &lt;span&gt;width&lt;/span&gt;&lt;span&gt;="290"&lt;/span&gt; &lt;span&gt;height&lt;/span&gt;&lt;span&gt;="24"&lt;/span&gt; &lt;span&gt;id&lt;/span&gt;&lt;span&gt;="audioplayer1"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="movie"&lt;/span&gt; &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="http://sergiot2.com/audio/player.swf"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="FlashVars"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt;          &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="playerID=1&amp;amp;amp;autostart=yes&amp;amp;amp;loop=yes&amp;amp;amp;"&lt;/span&gt; +&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt;                 &lt;span&gt;"bg=0xf8f8f8&amp;amp;amp;leftbg=0xeeeeee&amp;amp;amp;lefticon=0x666666&amp;amp;amp;"&lt;/span&gt; + &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   8:&lt;/span&gt;                 &lt;span&gt;"rightbg=0xcccccc&amp;amp;amp;rightbghover=0x999999&amp;amp;amp;"&lt;/span&gt; + &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   9:&lt;/span&gt;                 &lt;span&gt;"righticon=0x666666&amp;amp;amp;righticonhover=0xFFFFFF&amp;amp;amp;"&lt;/span&gt; +&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  10:&lt;/span&gt;                 &lt;span&gt;"text=0x666666&amp;amp;amp;slider=0x666666&amp;amp;amp;track=0xFFFFFF&amp;amp;amp;"&lt;/span&gt; +&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  11:&lt;/span&gt;                 &lt;span&gt;"border=0x666666&amp;amp;amp;loader=0x9FFFB8&amp;amp;amp;"&lt;/span&gt; + &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  12:&lt;/span&gt;                 &lt;span&gt;"soundFile=http%3A%2F%2Fsergiot2.com%2Faudio%2FGeorgeMichael-Faith.mp3"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  13:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="quality"&lt;/span&gt; &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="high"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  14:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="menu"&lt;/span&gt; &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="false"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  15:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;param&lt;/span&gt; &lt;span&gt;name&lt;/span&gt;&lt;span&gt;="bgcolor"&lt;/span&gt; &lt;span&gt;value&lt;/span&gt;&lt;span&gt;="#FFFFFF"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  16:&lt;/span&gt; &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;NOTA&lt;/strong&gt;: En el atributo &lt;strong&gt;value&lt;/strong&gt; use "+" para concatenar por cuestión de espacio en el blog se debería colocar todo junto sin concatenar. Notar además como a través de la parámetro &lt;strong&gt;FlashVars&lt;/strong&gt;, podemos pasar variables al objeto &lt;strong&gt;flash&lt;/strong&gt;, si es que lo necesitará. Si desea MP3 Audio Player en su sitio web:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="MP3 Player for BlogEngine.NET" href="http://rtur.net/blog/page/MP3-Player.aspx" target="_blank"&gt;MP3 Player&lt;/a&gt; for &lt;a title="BlogEngine.NET - Open Source .NET blogging" href="http://geeks.ms/blogs/sergiotarrillo/archive/2008/05/02/84673.aspx" target="_blank"&gt;BlogEngine.NET&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a title="MP3 Player for WordPress" href="http://www.1pixelout.net/code/audio-player-wordpress-plugin/" target="_blank"&gt;MP3 Player&lt;/a&gt; for &lt;a title="WordPress" href="http://es.wikipedia.org/wiki/Wordpress" target="_blank"&gt;WordPress&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a title="MP3Player for static html" href="http://www.macloo.com/examples/audio_player/" target="_blank"&gt;MP3Player for static html&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Si desean verificar la validación, pueden hacerlo en la siguiente página: &lt;a title="http://sergiot2.com/blog/validW3C.aspx" href="http://sergiot2.com/blog/validW3C.aspx"&gt;http://sergiot2.com/blog/validW3C.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mas sobre el tema de Flash, y la validación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Flash Satay: Embedding Flash While Supporting Standards" href="http://www.alistapart.com/articles/flashsatay" target="_blank"&gt;Flash Satay: Embedding Flash While Supporting Standards&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a title="Bye Bye Embed" href="http://www.alistapart.com/articles/byebyeembed" target="_blank"&gt;Bye Bye Embed&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66770" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1009.aspx">ASP.NET</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1134.aspx">Web</category></item><item><title>Cuando una aplicacion deja de funcionar, por la conexion a la BD</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/06/12/66558.aspx</link><pubDate>Fri, 13 Jun 2008 04:08:42 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66558</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/66558.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=66558</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/66558.aspx</wfw:comment><description>&lt;p&gt;El otro día estaba revisando una aplicación, que inexplicablemente dejo de funcionar el acceso a datos. No se mostraba nada en la portada, no había información, -chess... nos hackearon. Pero revisando la base de datos todo estaba bien, toda la información estaba como debería estar. Era una aplicación Web de terceros, revise la configuración del proveedor de acceso a datos, y entre una de las configuraciones que era SQL Server, me decía que no se podía establecerla conexión, sin más detalles. Pero la base de datos estaba online y funcionando correctamente, comencé&amp;nbsp; a indagar cuales fueron los últimos cambios, si se instalaron add-ins, o se cambio alguna configuración, y nada.&lt;/p&gt; &lt;p&gt;Para la conexión estaba usando un login SQL, así que entre con ese usuario por el SQL Server Management Studio, y el mensaje fue clarísimo:&lt;/p&gt; &lt;p&gt;&lt;img alt="SQL Server 2005 - Your password is expired." src="http://sergiot2.com/blogimages/2008/06Jun/12_login.jpg"&gt;&lt;/p&gt; &lt;p&gt;"&lt;em&gt;You password is expired. You must enter another password before you can log on".&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Y esto debido que durante la creación del usuario marcaron la opción, "&lt;strong&gt;Enforce password expiration&lt;/strong&gt;":&lt;/p&gt; &lt;p&gt;&lt;img alt="SQL Server 2005 - Enforce password expiration" src="http://sergiot2.com/blogimages/2008/06Jun/12_password.jpg"&gt;&lt;/p&gt; &lt;p&gt;Cabe resaltar que esta feature de SQL Server 2005 sólo funciona sobre Windows Server 2003 (imagino que W2k8 también debe funcionar).&lt;/p&gt; &lt;p&gt;La &lt;a title="Login Properties (General Page)" href="http://msdn.microsoft.com/en-us/library/ms189425.aspx" target="_blank"&gt;recomendación es activar esta opción&lt;/a&gt;, por medidas de seguridad. Pero imagino que cada organización tendrá sus propias políticas. Pero vamos al tema, que pasa si habilito la opción, que recomendaciones se debe tener en la aplicación.&lt;/p&gt; &lt;p&gt;¿&lt;strong&gt;Dónde cambiamos el número de días de expiración&lt;/strong&gt;?&lt;/p&gt; &lt;p&gt;Pues usa la misma política que las cuentas de Windows. Nos vamos Herramientas administrativas, e ingresamos a &lt;strong&gt;Local Security Policy&lt;/strong&gt;. Dentro de &lt;strong&gt;Account Policies&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Password Policy&lt;/strong&gt;, cambiamos los días para la edad máxima del password.&lt;/p&gt; &lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/06Jun/12_LocalPolicy.jpg" src="http://sergiot2.com/blogimages/2008/06Jun/12_LocalPolicy.jpg"&gt;&lt;/p&gt; &lt;p&gt;Nota: Estas son las configuraciones por defecto, no la tomen como ejemplo, aún no soy el indicado para hablar de estos temas, &lt;strike&gt;todavía no me han dado completamente un server para jugar (6)&lt;/strike&gt;. Artículo relacionado al tema: SQL &lt;a title="Server 2005 Login Properties to Enforce Password Policies and Password Expiration" href="http://www.mssqltips.com/tip.asp?tip=1088" target="_blank"&gt;Server 2005 Login Properties to Enforce Password Policies and Password Expiration&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;¿&lt;strong&gt;Y cómo le digo a la aplicación que cambie el password&lt;/strong&gt;?&lt;/p&gt; &lt;p&gt;Pues el administrador debería tenerlo agendado en el Outlook con un reminder de un par de días. Pues si no pasa esto, podemos activar alertas programáticamente, para notificar ante la necesidad de cambiar la cadena de conexión.&lt;/p&gt; &lt;div&gt; &lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Main(&lt;span&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;      String cn = &lt;span&gt;"data source=192.168.1.8; database=northwind; uid=tinysa; pwd=password"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt;      &lt;span&gt;using&lt;/span&gt; (SqlConnection sql = &lt;span&gt;new&lt;/span&gt; SqlConnection(cn))&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt;      {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt;        &lt;span&gt;using&lt;/span&gt; (SqlCommand cmd = &lt;span&gt;new&lt;/span&gt; SqlCommand(&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   8:&lt;/span&gt;                        &lt;span&gt;"SELECT * FROM Customers WHERE CompanyName LIKE 'a%'"&lt;/span&gt;,&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   9:&lt;/span&gt;                        sql))&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  10:&lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  11:&lt;/span&gt;          &lt;span&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  12:&lt;/span&gt;          {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  13:&lt;/span&gt;            sql.Open();&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  14:&lt;/span&gt;            SqlDataReader rd = cmd.ExecuteReader();&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  16:&lt;/span&gt;            Console.Write(&lt;span&gt;"Customers: "&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  17:&lt;/span&gt;            &lt;span&gt;while&lt;/span&gt; (rd.Read())&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  18:&lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  19:&lt;/span&gt;              Console.WriteLine(&lt;span&gt;"{0}, "&lt;/span&gt;, rd[&lt;span&gt;"CompanyName"&lt;/span&gt;]);&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  20:&lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  22:&lt;/span&gt;            sql.Close();&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  23:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  24:&lt;/span&gt;          &lt;span&gt;catch&lt;/span&gt; (SqlException sqlEx)&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  25:&lt;/span&gt;          {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  26:&lt;/span&gt;            &lt;span&gt;if&lt;/span&gt; (sqlEx.Number == 18487)&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  27:&lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  28:&lt;/span&gt;              &lt;span&gt;//send email, sms a webMaster.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  29:&lt;/span&gt;              Console.WriteLine(&lt;span&gt;"El password de la conexion ha expirado"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  30:&lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  31:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  32:&lt;/span&gt;          &lt;span&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  33:&lt;/span&gt;          {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  34:&lt;/span&gt;            Console.WriteLine(&lt;span&gt;"hubo un error: {0}"&lt;/span&gt;, ex.ToString());&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  35:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  36:&lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  37:&lt;/span&gt;      }&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  39:&lt;/span&gt;      Console.ReadLine();&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  40:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  41:&lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt; NOTA: El ejemplo es didáctico, la cadena de conexión debería ser colocada en el archivo web.config, y este debería &lt;a title="Cifrado de informaci&amp;oacute;n en los archivos de configuraci&amp;oacute;n de ASP.NET" href="http://geeks.ms/blogs/jalarcon/archive/2008/04/28/cifrado-de-informaci-243-n-en-los-archivos-de-configuraci-243-n-de-asp-net.aspx" target="_blank"&gt;ser encriptado&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Notar que el código de Error de SQL de este mensaje es el número 18487, y si sucede este problema podemos &lt;strike&gt;enviarle un mensaje por msn, bloquearlo hasta que cambie la cadena de conexión y lo actualice en el web.config&lt;/strike&gt; configurar para enviarle un email al encargado de la Web o Aplicación, notificándole lo sucedido.&lt;/p&gt;
&lt;p&gt;Hay otros tipos de errores, que también podríamos considerar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15113&lt;/strong&gt; - Login failed for user '%.*ls' Reason: Password validation failed. The account is locked out.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18463&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: Password change failed. The password cannot be used at this time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18464&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: Password change failed. The password does not meet policy requirements because it is too short.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18465&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: Password change failed. The password does not meet policy requirements because it is too long.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18466&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: Password change failed. The password does not meet policy requirements because it is not complex enough.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18467&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: Password change failed. The password does not meet the requirements of the password filter DLL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18468&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: Password change failed. An unexpected error occurred during password validation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18487&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: The password of the account has expired.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18488&lt;/strong&gt; - Login failed for user '%.*ls'. Reason: The password of the account must be changed.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Extraído de: &lt;a title="Changing Passwords Programmatically" href="http://msdn.microsoft.com/en-us/library/ms131024.aspx" target="_blank"&gt;Changing Passwords Programmatically&lt;/a&gt;. Imaginen que el administrador creo el user, y marco la opción cambiar el password la primera vez de login, y no lo haga y nos de esa password para conectarnos a la aplicación... hay casos....&lt;/p&gt;
&lt;p&gt;Hay otra opción, y es cambiar el password a través de una página de administración. La clase &lt;strong&gt;SqlConnection&lt;/strong&gt;, tiene un método llamado &lt;strong&gt;ChangePassword&lt;/strong&gt;, para esta tarea. En &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.changepassword.aspx" target="_blank"&gt;esta referencia&lt;/a&gt; hay un código ejemplo, sólo hay que agregar la siguiente línea (la número 5):&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;private&lt;/span&gt; &lt;span&gt;static&lt;/span&gt; &lt;span&gt;string&lt;/span&gt; ModifyConnectionString(&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;        &lt;span&gt;string&lt;/span&gt; connectionString, &lt;span&gt;string&lt;/span&gt; NewPassword)&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;      &lt;span&gt;//AGREGAR ESTA LINEA&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt;      SqlConnection.ChangePassword(connectionString, NewPassword);&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt;      &lt;span&gt;// Use the SqlConnectionStringBuilder class to modify the&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   8:&lt;/span&gt;      &lt;span&gt;// password portion of the connection string. &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   9:&lt;/span&gt;      SqlConnectionStringBuilder builder =&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  10:&lt;/span&gt;          &lt;span&gt;new&lt;/span&gt; SqlConnectionStringBuilder(connectionString);&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  11:&lt;/span&gt;      builder.Password = NewPassword;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  12:&lt;/span&gt;      &lt;span&gt;return&lt;/span&gt; builder.ConnectionString;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  13:&lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Es como cambiarla usando el Sql Server Management Studio, y este código podríamos incluirlo dentro de las páginas de administración, ya que necesita que algún admin ingrese el nuevo password para el usuario.&lt;/p&gt;
&lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66558" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1017.aspx">SQL Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1026.aspx">C#</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1101.aspx">Ado.NET</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1118.aspx">Windows Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1153.aspx">.NET</category></item><item><title>no que no, Geeks.ms en el buscador de firefox :D, y mas.....</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/06/06/66281.aspx</link><pubDate>Sat, 07 Jun 2008 05:56:26 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66281</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/66281.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=66281</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/66281.aspx</wfw:comment><description>&lt;p&gt;Desde hace tiempo que vengo usando y agregando todos los sitios comunes que visito, al buscador de IE, ya que te da &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/01/11/8554.aspx" target="_blank"&gt;mucha flexibilidad para agregar un nuevo buscador&lt;/a&gt;, y hasta se puede hacer que el buscador te de algunas &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/12/21/59009.aspx" target="_blank"&gt;otras funcionalidades, como la de validador&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Pero &lt;a href="http://www.mozilla.com/en-US/firefox/all-rc.html" target="_blank"&gt;Firefox&lt;/a&gt;, no te da está misma flexibilidad, bueno sin add-ins y en la instalación por defecto, no he logrado hacerlo. Pero &lt;a href="http://www.mozilla.com/en-US/firefox/all-rc.html" target="_blank"&gt;Firefox&lt;/a&gt; si soporta &lt;a href="http://geeks.ms/blogs/jalarcon/archive/2007/01/23/tienes-un-buscador-en-tu-portal-esto-te-puede-interesar.aspx" target="_blank"&gt;OpenSearch&lt;/a&gt;, pero no todos los sitios tienen habilitado el &lt;a href="http://geeks.ms/blogs/jalarcon/archive/2007/01/23/tienes-un-buscador-en-tu-portal-esto-te-puede-interesar.aspx" target="_blank"&gt;OpenSearch&lt;/a&gt; :(, y hasta esperar que lo habiliten...&lt;/p&gt; &lt;p&gt;Pues existe una solución muy sencilla y práctica, basada en OpenSearch, y es simular nosotros la página con el descubrimiento para búsquedas. La receta:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 1.&lt;/strong&gt; Primero creamos un archivo Xml, con el siguiente código:&lt;/p&gt; &lt;div&gt; &lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;OpenSearchDescription&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;ShortName&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;Geeks.ms Search&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;ShortName&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;LongName&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt;      Geeks.ms - Todo lo que los geeks de Windows y .Net tiene que contar&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;LongName&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Description&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt;      Geeks.ms - Todo lo que los geeks de Windows y .Net tiene que contar.&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   8:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Description&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   9:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Tags&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;buscador, asp.net, windows, search, visual studio&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Tags&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  10:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Url&lt;/span&gt; &lt;span&gt;type&lt;/span&gt;&lt;span&gt;="text/html"&lt;/span&gt; &lt;span&gt;template&lt;/span&gt;&lt;span&gt;="http://geeks.ms/search/SearchResults.aspx?q={searchTerms}"&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  11:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Image&lt;/span&gt; &lt;span&gt;height&lt;/span&gt;&lt;span&gt;="16"&lt;/span&gt; &lt;span&gt;width&lt;/span&gt;&lt;span&gt;="16"&lt;/span&gt; &lt;span&gt;type&lt;/span&gt;&lt;span&gt;="image/x-icon"&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;http://geeks.ms/favicon.ico&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Image&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  12:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Attribution&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  13:&lt;/span&gt;      Copyright http://sergiot2.com/blog. All rights reserved.&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  14:&lt;/span&gt;    &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Attribution&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  15:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;SyndicationRight&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;open&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;SyndicationRight&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  16:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;AdultContent&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;false&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;AdultContent&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  17:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Language&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;es&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;Language&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  18:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;OutputEncoding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;UTF-8&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;OutputEncoding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  19:&lt;/span&gt;    &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;InputEncoding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;UTF-8&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;InputEncoding&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;  20:&lt;/span&gt; &lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;OpenSearchDescription&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Por poner un ejemplo. El shortName es lo que aparecerá en el cuadrito de búsqueda, atención con la URL, y como enlazamos a la búsqueda, image para el icono, y otros atributos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 2.&lt;/strong&gt; Ahora en la página deseada y dentro del elemento head, agregamos lo siguiente:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt; &lt;span&gt;title&lt;/span&gt;&lt;span&gt;="Geeks.ms Search"&lt;/span&gt; &lt;span&gt;type&lt;/span&gt;&lt;span&gt;="application/opensearchdescription+xml"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt;         &lt;span&gt;rel&lt;/span&gt;&lt;span&gt;="search"&lt;/span&gt; &lt;span&gt;href&lt;/span&gt;&lt;span&gt;="searchGeeks.xml"&lt;/span&gt; &lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Notar, que acá hacemos referencia al archivo xml, creado previamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 3.&lt;/strong&gt; Ahora sólo nos queda abrir la página en cuestión: &lt;a title="http://sergiot2.com/blog/searchEngine.aspx" href="http://sergiot2.com/blog/searchEngine.aspx"&gt;http://sergiot2.com/blog/searchEngine.aspx&lt;/a&gt;, en Firefox obviamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp; 4.&lt;/strong&gt; Nos vamos al buscador, y agregamos el buscador para "&lt;strong&gt;Geeks.ms Search&lt;/strong&gt;". Notar que en la opción de agregar saldrá el icono del sitio donde estén, en este caso, el icono de mi sitio:&lt;/p&gt;
&lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/06Jun/06_addSearch.jpg" src="http://sergiot2.com/blogimages/2008/06Jun/06_addSearch.jpg"&gt;&lt;/p&gt;
&lt;p&gt;5. Pero no se preocupen &lt;strike&gt;no van a tener que ver el feo icono :D&lt;/strike&gt;, después de agregar el buscador ya toma el icono asignado en el archivo xml:&lt;/p&gt;
&lt;p&gt;&lt;img alt="http://sergiot2.com/blogimages/2008/06Jun/06_searchGeeks.jpg" src="http://sergiot2.com/blogimages/2008/06Jun/06_searchGeeks.jpg"&gt;&lt;/p&gt;
&lt;p&gt;No son grandes cosas, pero siempre ahorra un poco de tiempo para búsquedas en sitios que usamos con mayor frecuencia.&lt;/p&gt;
&lt;p&gt;Ahora sólo deje tres buscadores, el de Geeks.ms para buscar entradas y no repetirlas, o alguna entrada que vi y necesito, mi blog que también uso como repositorio de algún código, y el MS Events, que visito de vez en cuando para buscar un WebCast, este último esta programado para buscar WebCast en inglés, si desean le hacen el cambio en la URL para buscar los de nuestro idioma.&lt;/p&gt;
&lt;p&gt;P.D.: A medida que los vaya necesitando voy a ir agregando otros buscadores que uso, da mucha lata hacerlo todos juntos :D.&lt;/p&gt;
&lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66281" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1043.aspx">Varios</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1134.aspx">Web</category></item><item><title>Moviendo Aplicaciones Web ASP.NET 2.0 a IIS 7.0?</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/06/05/66154.aspx</link><pubDate>Thu, 05 Jun 2008 07:39:23 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66154</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/66154.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=66154</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/66154.aspx</wfw:comment><description>&lt;p&gt;A ver veamos, nosotros tenemos dos modos de correr una Aplicación Web en IIS 7.0, en modo clásico o en modo integrado, y esto lo configuramos a nivel de un &lt;strong&gt;Application Pool&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;El modo clásico, es como conocemos al trabajo de ASP.NET con IIS 6.0, el modo integrado es nuevo modelo de trabajo de IIS 7.0, que entre una de las features, me van permitir extender mi servidor, y usar funcionalidades propias que sólo tenia en ASP.NET, con otros lenguajes como Php, ASP clásico, o en páginas estáticas. Revisar el siguiente enlace para mayores detalles: &lt;a href="http://www.iis.net/default.aspx?i=928&amp;amp;subtabid=25&amp;amp;tabid=2" target="_blank"&gt;ASP.NET Integration with IIS7&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Ahora, estoy moviendo una Aplicación Web ASP.NET que funciona de lujo en IIS 6.0, a trabajar con IIS 7.0, ¿qué recomendaciones debemos tener?&lt;/p&gt; &lt;p&gt;Primero, si estamos presionados y debemos hacer el cambio de aplicaciones Web a IIS 7.0, para ayer, la opción altamente recomendable es usar el modo clásico (configurar el Application pool). Tenemos que tener permiso para administrar el servidor, nos vamos a Application Pools, y verificamos que por lo menos uno de ellos o creamos uno nuevo, tenga la propiedad Managed Pipeline Mode, en Classic. Con esta configuración si nuestra aplicación Web funcionaba bien en un servidor IIS 6.0, debería funcionar bien en un servidor IIS 7.0.&lt;/p&gt; &lt;p&gt;&lt;img alt="Application Pool - Advanced Settings" src="http://sergiot2.com/blogimages/2008/06Jun/04_AppPool.jpg"&gt;&lt;/p&gt; &lt;p&gt;¿Qué pasa si a nivel de un Web Site, solo tengo un Application Pool?, y para no perjudicar a otras aplicaciones Web, debo mantener el modo integrado, que será para todas las Aplicaciones Web dentro del Web Site. Hay algunos cambios que debemos hacer, si estamos usando determinas features.&lt;/p&gt; &lt;p&gt;Por ejemplo si estamos usando modules o handlers, que están agregados en el web.config, al ejecutar la aplicación Web, obtendremos el siguiente error: &lt;strong&gt;HTTP Error 500.22 - Internal Server Error&lt;/strong&gt;, "&lt;em&gt;An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode&lt;/em&gt;".&lt;/p&gt; &lt;p&gt;Y el problema es que en el modo integrado, los modules y handlres, deben ser colocados dentro de las secciones &amp;lt;modules&amp;gt;, y &amp;lt;handlres&amp;gt;, de la sección &amp;lt;system.webServer&amp;gt;. Este último nos permite hacer configuraciones a nivel de IIS, y llevárnosla en la aplicación dentro del web.config, y no tener que replicarlas en un nuevo servidor.&lt;/p&gt; &lt;p&gt;La solución para este escenario es sencilla, podemos usar el siguiente comando, &lt;a href="http://learn.iis.net/page.aspx/114/getting-started-with-appcmdexe/" target="_blank"&gt;AppCmd.Exe&lt;/a&gt;, que hará la migración de las secciones en el web.config:&lt;/p&gt; &lt;p&gt;&amp;gt; %windir%\system32\inetsrv\Appcmd migrate config "&amp;lt;ApplicationPath&amp;gt;"&lt;/p&gt; &lt;p&gt;Donde:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;"&amp;lt;ApplicationPath&amp;gt;" = "Default Web Site/"&amp;nbsp; o&lt;/li&gt; &lt;li&gt;"&amp;lt;ApplicationPath&amp;gt;" = "Default Web Site/WebApplication/"&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Si todo salió bien, nos deberá salir un mensaje: Successfully migrate section "system.web./httpModules" | "system.web/httpHandlers".&lt;/p&gt; &lt;p&gt;Para mayores detalles sobre los cambios o features, en las cuales debemos tener cuidado, revisar: &lt;a href="http://learn.iis.net/page.aspx/381/aspnet-20-breaking-changes-on-iis-70/" target="_blank"&gt;ASP.NET 2.0 Breaking Changes on IIS 7.0&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Atención, si la migración al modo Integrado les esta dando mucha lata y necesitan la Aplicación Web, lo mejor será usar el modo clásico. Lo ideal debe ser probarlo localmente (no producción), si todas las features de nuestra Aplicación funcionan correctamente en el modo integrado, antes de subirla a producción.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66154" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1009.aspx">ASP.NET</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1109.aspx">IIS</category></item><item><title>[Demo] Usando el nuevo control ListView de ASP.NET con VS2008</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/06/02/66018.aspx</link><pubDate>Mon, 02 Jun 2008 19:46:53 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:66018</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/66018.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=66018</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/66018.aspx</wfw:comment><description>&lt;p&gt;Llegando un poco tarde, pero aquí están las demos del &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2008/05/26/86797.aspx" target="_blank"&gt;evento pasado&lt;/a&gt;: &lt;a href="http://geeks.ms/files/folders/sergiotarrillo/entry87625.aspx" target="_blank"&gt;Descargar demo&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Es un sitio Web, para el Upload y Search de productos. Las páginas implementadas son el Upload Manual:&lt;/p&gt; &lt;p&gt;&lt;a href="http://sergiot2.com/blogimages/2008/06Jun/02_Insert.jpg" target="_blank"&gt;&lt;img border="0" alt="Upload Manual" src="http://sergiot2.com/blogimages/2008/06Jun/02_Insert.jpg" width="700" height="444"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Y la página search:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img alt="Search Products" src="http://sergiot2.com/blogimages/2008/06Jun/02_search.jpg"&gt;&lt;/p&gt; &lt;p&gt;Para el diseño de la aplicación usa la plantilla &lt;strong&gt;Commerce&lt;/strong&gt;, de los &lt;a href="http://msdn.microsoft.com/en-us/asp.net/aa336613.aspx" target="_blank"&gt;Templates for ASP.NET&lt;/a&gt;. Estos son algunas entradas relacionadas al tema: &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2008/04/11/82923.aspx" target="_blank"&gt;VS2008 - CSS for Developer (Dummies Designers)&lt;/a&gt;, e &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/12/13/56926.aspx" target="_blank"&gt;Instalar un ASP.NET Starter Kit, paso a paso&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Es una aplicación en capas simple, creada usando &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/11/20/51628.aspx" target="_blank"&gt;Visual Studio 2008&lt;/a&gt;, puedes descargarse un &lt;a href="http://msdn.microsoft.com/en-us/vs2008/products/cc268305.aspx" target="_blank"&gt;trial de Visual Studio 2008 Professional&lt;/a&gt;, para revisar la aplicación. Para la generación de la capa de acceso a datos use el &lt;a href="http://msdn.microsoft.com/en-us/library/cc487895.aspx" target="_blank"&gt;Web Service Software Factory&lt;/a&gt;, no es necesario tenerlo instalado para ejecutar la aplicación, revisar la personalización realizada para agregar nuevos métodos a los que soporte por defecto, ya que el ObjectDataSource que vamos a usar más adelante necesita un método contar, par la paginación personalizada.&lt;/p&gt; &lt;p&gt;En la primera demo puede ver el uso de ListView+ObjectDatasSurce, habilitado con la función para insertar registros (lo que falta al gridView, ya que sólo permite update, y delete). Se ve también como manejar eventos de inserción (agregar parámetros antes de que se produzca la inserción, o realizar tareas después de la inserción como el manejo de errores). Además como buscar controles en el ListView, y como agregar comandos adicionales a un ListView. &lt;/p&gt; &lt;p&gt;En la segunda demo hay un search de products, y se hace paginación personalizada tanto de SQL como de ASP.NET, usando el ObjectDataSource, además de soportar ordenamiento. Y el ObjectDataSource te va de lujo cuando pasas Objetos y List&amp;lt;Objetos&amp;gt;, entre tus capas, un buen artículo relacionado a esto: &lt;a href="http://msmvps.com/blogs/cwalzer/archive/2008/05/21/performance_5F00_memoria_5F00_ado_5F00_net.aspx" target="_blank"&gt;Performance: Datos en Memoria con ADO.NET IV&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Y para los estilos (CSS) del ListView, los descargue desde la siguiente página: &lt;a href="http://icant.co.uk/csstablegallery/" target="_blank"&gt;CSS Table Gallery&lt;/a&gt;. Ah dentro de la descarga se encuentra los scripts necesarios para generar la base de datos en &lt;a href="http://geeks.ms/blogs/sergiotarrillo/search.aspx?q=SQL+Server+2005" target="_blank"&gt;SQL Server 2005&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Creo que eso es todo, nuevamente: &lt;a href="http://geeks.ms/files/folders/sergiotarrillo/entry87625.aspx" target="_blank"&gt;Link de descarga&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Otros artículos sobre el ListView:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc501048.aspx" target="_blank"&gt;Extreme ASP.NET&lt;/a&gt; - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc337898.aspx" target="_blank"&gt;The Only Data-binding Control You'll Ever Need&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc501042.aspx" target="_blank"&gt;Cutting Edge&lt;/a&gt; - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc500643.aspx" target="_blank"&gt;ListView Tips and Tricks&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;P.D.: Hay algunas tareas pendientes en el Sitio Web, que por cuestiones de tiempo ya no se pudo hacer, como el uso de configSections, en el web.config por ejemplo. En futuras entregas espero ponerle más cosas, que está será la nueva aplicación para demos :D.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=66018" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1009.aspx">ASP.NET</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1014.aspx">Visual Studio</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1017.aspx">SQL Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1026.aspx">C#</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1101.aspx">Ado.NET</category></item><item><title>[CelulaUNT.Net]: Cansado de overview y novedades?, Evento post-lanzamiento</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/05/26/65651.aspx</link><pubDate>Mon, 26 May 2008 09:57:29 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:65651</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/65651.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=65651</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/65651.aspx</wfw:comment><description>&lt;p&gt;Si ya has asistido a un evento de Lanzamiento, y deseas explorar a detalle alguna de las novedades de los nuevos releases de Microsoft, la &lt;a href="http://celulaunt.net/" target="_blank"&gt;Célula UNT .Net&lt;/a&gt; esta organizando un evento, en la ciudad de Trujillo-Perú: &lt;a href="http://celulaunt.net/Eventos/Aprendiendo/" target="_blank"&gt;Aprendiendo con las nuevas tecnologías {Microsoft 2008}&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;&lt;a href="http://sergiot2.com/blogimages/2008/05May/23_Evento.jpg" target="_blank"&gt;&lt;img border="0" alt="Clic para agrandar" src="http://sergiot2.com/blogimages/2008/05May/23_Evento.jpg" width="620"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;El evento será el Viernes 30 de Mayo por la tarde en la Universidad Nacional de Trujillo (UNT), si deseas ver la agenda en detalle puedes hacerlo &lt;a href="http://celulaunt.net/Eventos/Aprendiendo/Agenda.aspx" target="_blank"&gt;aquí&lt;/a&gt;, y si deseas la ubicación exacta, hicieron &lt;a href="http://celulaunt.net/Eventos/Aprendiendo/Mapa.aspx" target="_blank"&gt;un mapa&lt;/a&gt;. Pueden registrarse en la siguiente página: &lt;a href="http://celulaunt.net/Eventos/Aprendiendo/Registro.aspx" target="_blank"&gt;Registro Evento&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Yo estaré participando con el tema de Escenario de Acceso a datos con el nuevo control &lt;a href="http://geeks.ms/blogs/sergiotarrillo/search.aspx?q=ListView" target="_blank"&gt;ListView de ASP.NET&lt;/a&gt;, hay algunos artículos interesantes en &lt;a href="http://msdn.microsoft.com/en-us/magazine/default.aspx" target="_blank"&gt;MSDN Magazine&lt;/a&gt; sobre este control, estaré mostrando algunas de las cualidades de las cuales podemos sacar provecho, soporte de inserción a comparación del GridView, el manejo total del render del html, con los anteriores controles debemos usar &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2006/09/16/2793.aspx" target="_blank"&gt;CSS Control Adapter&lt;/a&gt; para manejar el render del html, y además de esto con soporte de los controles DataSource, que soporte paginación customizable, son muchos los escenarios que podemos explotar con este control, y esperamos abordarlas en el evento, además de acompañarlas de algunas otras features, como&amp;nbsp; el uso de Linq to Objects, uso del paquete Data Access del &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/12/18/58068.aspx" target="_blank"&gt;Service Factory&lt;/a&gt;, entre otras.&lt;/p&gt; &lt;p&gt;P.D.: Después de la charla, subiré la presentación (si hay, &lt;strike&gt;si da el tiempo&lt;/strike&gt;), y las demos &lt;strike&gt;que siempre se terminan de alguna manera durante la sesión evento, si no terminaron antes&lt;/strike&gt;.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=65651" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1009.aspx">ASP.NET</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1014.aspx">Visual Studio</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1017.aspx">SQL Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1118.aspx">Windows Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1133.aspx">Eventos</category></item><item><title>[CodeSnippet] Borrar masivamente procedimientos almacenados</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/05/25/65637.aspx</link><pubDate>Mon, 26 May 2008 03:23:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:65637</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/65637.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=65637</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/65637.aspx</wfw:comment><description>&lt;p&gt;Iniciamos una nueva sección en el blog, llamada &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/tags/Code+Snippets/default.aspx" target="_blank"&gt;Code Snippets&lt;/a&gt;, serán pequeñas porciones de código simples o algunas marcianas, pero que siempre son útiles, ya se para el trabajo, para preparar un demo, o un código rebuscado.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;: He restaurado una base de datos usando la herramienta &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2007/12/15/57497.aspx" target="_blank"&gt;SQL Database Publishing&lt;/a&gt;, para una demostración, y estoy actualizando/recreando los store procedures, y el problema era que deseaba eliminar masivamente los store procedures, que tengan un determinado patrón. Puedes eliminar los store procedures, desde SQL Server Managment Studio, haciendo clic derecho sobre el procedure, y seleccionando delete pero uno por uno, &lt;strike&gt;si hubiera un shift select/delete&lt;/strike&gt;, y la otra forma, &lt;strike&gt;hasta donde se :$&lt;/strike&gt; , es haciéndolo por código, y esta es la que vamos a explotar.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Plataforma&lt;/strong&gt;: SQL Server 2005, query a nivel de base de datos.&lt;/p&gt; &lt;div&gt; &lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;use&lt;/span&gt; dbGeekProducts&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt; &lt;span&gt;go&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   3:&lt;/span&gt; &lt;span&gt;DECLARE&lt;/span&gt; @SPs &lt;span&gt;varchar&lt;/span&gt;(&lt;span&gt;max&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   4:&lt;/span&gt; &lt;span&gt;SET&lt;/span&gt; @SPs = &lt;span&gt;''&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   5:&lt;/span&gt; &lt;span&gt;SELECT&lt;/span&gt; @SPs = @SPs + [name] + &lt;span&gt;','&lt;/span&gt; &lt;span&gt;FROM&lt;/span&gt; sys.objects&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   6:&lt;/span&gt; &lt;span&gt;WHERE&lt;/span&gt; type = &lt;span&gt;'P'&lt;/span&gt; &lt;span&gt;AND&lt;/span&gt; name &lt;span&gt;LIKE&lt;/span&gt; &lt;span&gt;'usp_%'&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   8:&lt;/span&gt; &lt;span&gt;SELECT&lt;/span&gt; @SPs&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   9:&lt;/span&gt; go&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;En mi caso yo quiero eliminar todos los store procedures de una base de datos que empiecen con el nombre "&lt;strong&gt;usp_%&lt;/strong&gt;". El detalle de &lt;a href="http://msdn.microsoft.com/en-us/library/ms174969.aspx" target="_blank"&gt;DROP PROC&lt;/a&gt;, es que no acepta strings o variables, si no nombres de objetos. De ahí el tip de hacer SELECT @SPs. Copio el resultado del SELECT, remuevo la última coma, y lo pego dentro del siguiente código:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;pre&gt;&lt;span&gt;   1:&lt;/span&gt; &lt;span&gt;DROP&lt;/span&gt; &lt;span&gt;PROC&lt;/span&gt; usp_Product_Insert,usp_Product....&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;   2:&lt;/span&gt; &lt;span&gt;go&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Si alguien tiene alguna otra o mejor forma, favor de&amp;nbsp; comentarlo :D.&lt;/p&gt;
&lt;p&gt;P.D.: Imagino que con &lt;a href="http://msdn.microsoft.com/en-us/vsts2008/aa718807.aspx" target="_blank"&gt;VS for Database Professionals&lt;/a&gt;, puede hacer esto con shift/control select.&lt;/p&gt;
&lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=65637" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1017.aspx">SQL Server</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1154.aspx">Code Snippets</category></item><item><title>[Off-Topic] Blogs de la Celula UNT .Net</title><link>http://blogs.3devnet.com/blogs/starrillo/archive/2008/05/24/65596.aspx</link><pubDate>Sun, 25 May 2008 03:58:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:65596</guid><dc:creator>starrillo</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.3devnet.com/blogs/starrillo/comments/65596.aspx</comments><wfw:commentRss>http://blogs.3devnet.com/blogs/starrillo/commentrss.aspx?PostID=65596</wfw:commentRss><wfw:comment>http://blogs.3devnet.com/blogs/rsscomments/65596.aspx</wfw:comment><description>&lt;p&gt;Una noticia que me causo mucha alegría es la liberación de los &lt;a href="http://celulaunt.net/community/blogs/" target="_blank"&gt;blogs de la Célula UNT .Net&lt;/a&gt;. Antes había blog personales de estudiantes, pero no como equipo, no como &lt;a href="http://celulaunt.net/" target="_blank"&gt;Célula UNT .Net&lt;/a&gt;, puede ser enriquecedor sobre salir personalmente, pero sobresalir como grupo humano es mucho mas enriquecedor, ya &lt;a href="http://geeks.ms/blogs/lfraile/default.aspx" target="_blank"&gt;Luis Fraile&lt;/a&gt; compartió algunas &lt;a href="http://geeks.ms/blogs/lfraile/archive/2008/05/23/reflexiones-sobre-el-compa-241-erismo.aspx" target="_blank"&gt;reflexiones sobre el compañerismo&lt;/a&gt; las cuales comparto.&lt;/p&gt; &lt;p&gt;En algunos casos alcanzar este tipo de objetivos es un poco difícil ya que no se cuenta con el apoyo de las autoridades o de la misma Universidad, algunas veces por que la facultad es nueva y no tienes el apoyo docente, otras por cuestiones políticas dentro de la universidad, y algunas veces por racismo de software (anti-microsoft o anti-inux). Mis felicitaciones para todo el grupo que hizo posible esto sobretodo porque ellos mismos están financiando la Web &lt;strike&gt;ideal debería ser que la Universidad de algún sub-hosting dentro de su mismo sitio Web&lt;/strike&gt;, tener la Web de la &lt;a href="http://celulaunt.net/" target="_blank"&gt;Célula UNT .NET&lt;/a&gt; fue siempre un deseo del grupo de la Célula en los años en que participe, pero no se pudo hacer,&amp;nbsp; y si en algo ayudo mi participación cuando &lt;a href="http://geeks.ms/blogs/sergiotarrillo/archive/2006/10/15/4645.aspx" target="_blank"&gt;fui parte de la Celula UNT .Net&lt;/a&gt;, pues me siento muy a gusto y satisfecho. &lt;/p&gt; &lt;p&gt;Lo que más gusto me da, es que la mayoría de los &lt;a href="http://celulaunt.net/community/blogs/Bloggers.aspx" target="_blank"&gt;Bloggers UNT&lt;/a&gt;, están en media carrera &lt;strike&gt;recién ahondando en la carrera, ya que los primeros años son de cursos generales&lt;/strike&gt;, y no se si habrán percatado o enterado, pero actualmente tener un blog te ayuda mucho en tu vida profesional. Algunos imagino que recién están ingresando al mundo .NET, quizás unos con mas experiencia que otros, pero en un año o menos, espero leer entradas sobre los proyectos en los que estén trabajando, y como están aplicando .NET, mejores prácticas, patrones, bloques de código, herramientas, &lt;strike&gt;y todo los chiches que hay&lt;/strike&gt;, etc, etc...&lt;/p&gt; &lt;p&gt;Si están buscando jóvenes talentos, estos son los Blogs: &lt;a title="http://celulaunt.net/community/blogs/Bloggers.aspx" href="http://celulaunt.net/community/blogs/Bloggers.aspx"&gt;http://celulaunt.net/community/blogs/Bloggers.aspx&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;P.D.: Creo que el siguiente objetivo debe ser participar en el &lt;a href="http://imaginecup.com/" target="_blank"&gt;Imagine Cup&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Saludos,&lt;/p&gt;
Crossposting desde ...&lt;img src="http://blogs.3devnet.com/aggbug.aspx?PostID=65596" width="1" height="1"&gt;</description><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1043.aspx">Varios</category><category domain="http://blogs.3devnet.com/blogs/starrillo/archive/category/1153.aspx">.NET</category></item></channel></rss>