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

<channel>
	<title>Juan Peláez</title>
	<atom:link href="http://www.juanpelaez.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juanpelaez.com</link>
	<description>Desarrollo de Negocios de Software</description>
	<lastBuildDate>Sun, 13 May 2012 16:30:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Seguridad en Internet y Planeación de Infraestructura</title>
		<link>http://www.juanpelaez.com/conferencias/workshops-es/seguridad-en-internet-y-planeaci%c3%b3n-de-infraestructura/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=seguridad-en-internet-y-planeaci%25c3%25b3n-de-infraestructura</link>
		<comments>http://www.juanpelaez.com/conferencias/workshops-es/seguridad-en-internet-y-planeaci%c3%b3n-de-infraestructura/#comments</comments>
		<pubDate>Sun, 13 May 2012 16:22:29 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Workshops]]></category>
		<category><![CDATA[Ataques de Penetración]]></category>
		<category><![CDATA[Ataques de suplantación de Identidad]]></category>
		<category><![CDATA[Balanceadores de Carga]]></category>
		<category><![CDATA[Cross Site Scripting]]></category>
		<category><![CDATA[Firewalls]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Planeacion de Infraestructura]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[Talleres]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=411</guid>
		<description><![CDATA[El pasado 8 de mayo fui invitado por el  equipo de desarrollo de soluciones y gestión de proyectos de El Nucleo Digital (la compañía creada por SanchoDDBB para la construcción y gestión de sus soluciones en internet, mobile y nuevos &#8230; <a href="http://www.juanpelaez.com/conferencias/workshops-es/seguridad-en-internet-y-planeaci%c3%b3n-de-infraestructura/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El pasado 8 de mayo fui invitado por el  equipo de desarrollo de soluciones y gestión de proyectos de El Nucleo Digital (la compañía creada por <a href="http://www.sanchobbdo.com.co/">SanchoDDBB</a> para la construcción y gestión de sus soluciones en internet, mobile y nuevos medios) a realizar un taller de planeación de infraestructura y seguridad en Internet, fue una muy buena experiencia y una tarde muy divertida en la que a cada participante le dimos un rol de infraestructura y logramos hacer que la operación de internet y sus diferentes elementos se convirtiera en algo tangible. Espero que ellos se hayan divertido tanto como yo.</p>
<p>Gracias por Invitarme.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/conferencias/workshops-es/seguridad-en-internet-y-planeaci%c3%b3n-de-infraestructura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consumiendo Servicios REST desde iOS 5. Parte 1. Preparando el proyecto.</title>
		<link>http://www.juanpelaez.com/geek-stuff/ios/consumiendo-servicios-rest-desde-ios-5-parte-1-preparando-el-proyecto/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=consumiendo-servicios-rest-desde-ios-5-parte-1-preparando-el-proyecto</link>
		<comments>http://www.juanpelaez.com/geek-stuff/ios/consumiendo-servicios-rest-desde-ios-5-parte-1-preparando-el-proyecto/#comments</comments>
		<pubDate>Sun, 13 May 2012 16:04:31 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[REST Services]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=406</guid>
		<description><![CDATA[Últimamente he colaborado en el  desarrollo de varias aplicaciones para iOS (versiones 4 y 5), estas aplicaciones consumen servicios REST que retornan JSON o XML lo que aunque es una tarea más o menos trivial requiere algo de investigación para hacerla &#8230; <a href="http://www.juanpelaez.com/geek-stuff/ios/consumiendo-servicios-rest-desde-ios-5-parte-1-preparando-el-proyecto/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Últimamente he colaborado en el  desarrollo de varias aplicaciones para iOS (versiones 4 y 5), estas aplicaciones consumen servicios REST que retornan JSON o XML lo que aunque es una tarea más o menos trivial requiere algo de investigación para hacerla bien por que hay muchos frameworks, formatos y plataformas que se pueden involucrar.</p>
<p>Después de investigar un rato, ver algunos ejemplos y leer bastante código termine seleccionando la librería <a href="http://allseeing-i.com/ASIHTTPRequest/">ASIHTTPRequest</a>, esta librería es robusta y me permite hacer cosas como invocar los servicios de forma asíncrona (lo que debe ser obligatorio en aplicaciones con interfaz de usuario móvil o de escritorio) o consumir servicios que requieren autenticación por medio de headers.</p>
<p>Descargue las clases, agréguelas a su proyecto, no olvide incluir la clase reachability que esta en la carpeta Externals de ASIHTTPRequest  y estará listo para consumir servicios Rest desde iOS, o casi listo…</p>
<p>Ahora bien, hace casi un año se lanzo la versión 5 del sistema operativo iOS y eso le generará algunos problemas ya que una de sus grandes novedades fue la recolección automática de objetos (ARC), es decir que ya no había que destruir manualmente las referencias a los objetos que no se usan, algo que antes hacíamos escribiendo instrucciones como:</p>
<p>[shareDialog release]</p>
<p>Otras instrucciones como retain, dealloc tampoco son necesarias si se esta trabajando en el modo ARC (Automatic Reference Counting)</p>
<p>Ahora bien, estos cambios que se introducen en el compilador hacen que librerías como la que venia usando para consumir los servicios queden inservibles.  Sin embargo el compilador tiene una opción (flag) que se puede aplicar por cada archivo de clase de forma que ignore la característica de ARC para ese archivo al momento de compilar.  Instrucciones (en ingles) y unas buenas fotos de como hacerlo <a href="http://stackoverflow.com/questions/6308425/ios-5-best-practice-release-retain">aquí</a></p>
<p>En este punto su solución debe compilar y ya tiene todo lo necesario para empezar a consumir servicios REST desde su aplicación iOS 4 o 5.</p>
<p>PD: Sobre ARC, Es importante aclara que esto es una nueva característica del compilador y no del encargado de la ejecución, así que no es ni parecido al Garbage Collector de .Net aunque podría confundirse, básicamente lo que esta pasando es que el compilador agrega las instrucciones a nuestro programa cuando lo compila</p>
<p>&nbsp;</p>
<p>Juan Peláez<br />
Arquitecto de Software</p>
<p>Desde hace más de un año en 3Metas, con  nuestro equipo de desarrolladores en Colombia, Bucaramanga, Manizales, Popayan, Medellin, Fort Lauderdale, Miami, Atlanta, Los Angeles, Shangai, Hawai y Australia hemos venido desarrollando aplicaciones para iOS tanto para iPad como para iPhone para clientes alrededor del  mundo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/geek-stuff/ios/consumiendo-servicios-rest-desde-ios-5-parte-1-preparando-el-proyecto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Donde esta la salida?</title>
		<link>http://www.juanpelaez.com/desarrollo-de-negocios/emprendimiento/donde-esta-la-salida/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=donde-esta-la-salida</link>
		<comments>http://www.juanpelaez.com/desarrollo-de-negocios/emprendimiento/donde-esta-la-salida/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 15:50:08 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Emprendimiento]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=401</guid>
		<description><![CDATA[En los últimos años, tampoco muchos máximo 2, se ha generado un interés en redes sociales, eventos, reportes y todo el ruido mediático del mundo en el tema de emprendimiento de base tecnológica en Colombia, si bien esto no es &#8230; <a href="http://www.juanpelaez.com/desarrollo-de-negocios/emprendimiento/donde-esta-la-salida/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En los últimos años, tampoco muchos máximo 2, se ha generado un interés en redes sociales, eventos, reportes  y todo el ruido mediático  del mundo en el tema de emprendimiento de base tecnológica en Colombia,  si bien esto no es nuevo por que muchos programas de Proexport, el ministerio de comunicaciones y organizaciones como Endevor ya venia trabajando en el apoyo a los emprendedores si hay que destacar el renovado interés y sobre todo el nuevo enfoque de promoción del emprendimiento hacia un modelo más del tipo de Silicon Valley. </p>
<p>Sin embargo creo que en un periodo de no menos de 6-10 años ese modelo no será exitoso en Colombia y la razón es muy simple: en Colombia no existen mecanismos de salida que son los que garantizan la existencia de los modelos de emprendimiento en Estados Unidos.  </p>
<p>Qué es un mecanismo de salida? Fácil, es la forma como el inversionista va a recuperar su inversión más las ganancias en algún momento, ojala próximo en el corto plazo, del tiempo. </p>
<p>Entonces, supongamos que usted en USA un ángel inversionista le da 50.000 dólares, ese querido amigo espera que usted venda en la ronda A a un fondo de inversión la empresa en 1 millón de dólares y que el convierta sus 50.000 en 300.000 ojala en un año.  Ahora bien, y en esto también somos diferentes, y muy diferentes,  si en USA la empresa se quiebra y usted nunca tiene un producto o no vende la empresa en los 300.000 en cierta medida el inversionista entiende el riesgo y en general digamos que no pasa nada.  (Para cubrirse el inversionista puso 50.000 en cuatro empresas, 3 de las cuales quebraron y una se venido en 300.000 así que aun perdiendo 150.000 en las 3 empresas quebradas, recupero el 100% de la inversión y gano 100.000 más).  </p>
<p>Qué hace el fondo que compró en la ronda A con su inversión, espera que pase una de dos: a) que haya una ronda B y vender su participación de 1 millón en 50 millones, o que la compañía se haga publica (IPO) en la bolsa de valores y su participación de 1 millón ahora valga 300 millones. </p>
<p>Ahora fijémonos que pasa en Colombia: Usted crea su empresa y no hay Ángeles Inversionistas (punto). Si usted consigue un inversionista de los mismos 50.000 dólares eso es un préstamo, si su empresa fracasa, el inversionista espera su retorno de los 50.000. Ok no seamos tan negativos, digamos que su empresa no fracasa, entonces que alternativas hay: a) un fondo de inversión para la ronda A, no, eso no existe en Colombia, los fondos de inversión solo invierten en ciertos sectores y el software, internet, etc, no están entre ellos. (He hablado con varios fondos así que en este punto puede creerme),  le queda la alternativa b) usted mismo de las utilidades o de la operación le compra a su inversionista su parte, es decir le paga el préstamo, solo que aclaremos que como no le cobro intereses y usted en teoría le dio una participación de la compañía le esta comprando su parte.  Ahora bien supongamos que no soy tan negativo y usted tiene un familiar o mejor amigo del colegio que es socio de un fondo de inversión, entonces logra una ronda A y hace historia, primero lo felicito y segundo vamos a preocuparnos por como ese fondo va a recuperar su inversión? lo que nos deja en las siguientes alternativas: a) ir a bolsa, que aunque es posible en Colombia desde hace un par de años en teoría, en la practica es casi imposible por las restricciones legales y de protección que buscan evitar que los inversionistas se arruinen. Así que muy, pero muy pocas empresas han logrado salir a bolsa. Le queda la opción b) que es comprarle usted al fondo de inversión su parte de la compañía.<br />
En este punto esperemos que el fondo de inversión haga su trabajo y sean los primeros en lograr vender una compañía colombiana a un fondo en el extranjero o inversionista. Esos lo hemos visto en Brasil y Argentina pero en Colombia aún no. </p>
<p>El punto entonces es que mientras no se den las condiciones para que haya mecanismos de salida, claros, rápidos y con retorno para el inversor el emprendimiento del tipo Silicon Valley en Colombia no va a despegar.  </p>
<p>Hay otras consideraciones sobre ese modelo de emprendimiento que creo que son importantes como el enfoque en el producto/servicio más que en hacerse ricos de la noche a la mañana, pero eso es motivo de otro post. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/desarrollo-de-negocios/emprendimiento/donde-esta-la-salida/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando SQL con Entity Framework</title>
		<link>http://www.juanpelaez.com/geek-stuff/entity-framework/usando-sql-con-entity-framework/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=usando-sql-con-entity-framework</link>
		<comments>http://www.juanpelaez.com/geek-stuff/entity-framework/usando-sql-con-entity-framework/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 14:54:43 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Entity Framework]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=398</guid>
		<description><![CDATA[Cuando se utiliza Entity Framework con Code First generalmente se utiliza Linq para que el DBContext relacione el linq con el objeto, por ejemplo si quiero un usuario especifico de mi aplicación escribo algo como using (SecurityEngineDb LAPDb = new &#8230; <a href="http://www.juanpelaez.com/geek-stuff/entity-framework/usando-sql-con-entity-framework/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Cuando se utiliza Entity Framework con Code First generalmente se utiliza Linq para que el DBContext relacione el linq con el objeto, por ejemplo si quiero un usuario especifico de mi aplicación escribo algo como </p>
<p>using (SecurityEngineDb LAPDb = new SecurityEngineDb())<br />
{<br />
   var user = LAPDb.users.Single(p => p.username == userName);<br />
   return user;<br />
}</p>
<p>Entonces EF transforma eso en la instrucción Select [Campos] from Users Where UserName = @UserName, etc, etc.<br />
Ahora bien, hay algunas instrucciones SQL que por su complejidad, optimización o la razón que sea no se puede escribir utilizando linq, así que el context también incluye la capacidad de escribir instrucciones SQL, utilizando DBContext.Database.SqlQuery, y a este método le podemos pasar la instruccion SQL y sus parámetros (ya todos sabemos que las instrucciones SQL deben ser parametrizadas para evitar ataques de SQL Injection cierto? pero bueno ese es otro post). El método sqlQuery es un genérico asi que si el entity framework es tan inteligente que se da cuenta que al final el objeto es un usuario o cualquier otra entidad del modelo simplemente lo pongo en el SqlQuery<Usuario>(sqlInstucction, parameters) y voila, tengo unos usuarios que son el resultado de mi complicada instrucción SQL. </p>
<p>Pero y si la instrucción SQL retorna un conjunto de columnas que no corresponden a ninguna de mis clases del modelo? (algo que creo que es muy común, por ejemplo, en reportes), pues hemos visto que una alternativa es declarar esa clase independiente del modelo y utilizarlo como parámetro en el sqlQuery. </p>
<p>Por ejemplo, mi consulta compleja devuelve unos campos que son equivalentes a esta clase: </p>
<p> public class FullfiledTransition<br />
    {<br />
        public int Requested { get; set; }<br />
        public int Fullfilled { get; set; }<br />
        public Guid Transition_id { get; set; }<br />
        public Guid idSourceActivity { get; set; }<br />
        public Guid idTargetActivity { get; set; }<br />
    }</p>
<p>puedo definirla sin que quede relacionada con el modelo , es decir no quiero un objeto en la base de datos con esta estructura. y utilizarla con el sqlQuery asi: </p>
<p>var fullfilledTransitions = wfEngineDb.Database.SqlQuery<FullfiledTransition>(sb.ToString(), activityInstanceId);<br />
donde sb es el StringBuilder (ya sabemos que siempre hay que concatenar con stringBuilde cierto?) de mi instrucción SQL y activityInstanceId el parámetro que recibe esa instrucción. </p>
<p>es un pequeño truco que ayuda a sacar máximo provecho del EF y su capacidad de ejecutar instrucciones SQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/geek-stuff/entity-framework/usando-sql-con-entity-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cadenas de Conexion en Entity Framework</title>
		<link>http://www.juanpelaez.com/geek-stuff/entity-framework/cadenas-de-conexion-en-entity-framework/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cadenas-de-conexion-en-entity-framework</link>
		<comments>http://www.juanpelaez.com/geek-stuff/entity-framework/cadenas-de-conexion-en-entity-framework/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 00:00:17 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Entity Framework]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=390</guid>
		<description><![CDATA[En los últimos meses hemos desarrollado en 3Metas varios proyectos utilizando el Entity Framework como modelo de acceso a datos, especialmente me gusta el modelo Code First en los que teóricamente me desentiendo del motor de base de datos y &#8230; <a href="http://www.juanpelaez.com/geek-stuff/entity-framework/cadenas-de-conexion-en-entity-framework/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En los últimos meses hemos desarrollado en 3Metas varios proyectos utilizando el Entity Framework como modelo de acceso a datos, especialmente me gusta el modelo Code First en los que teóricamente me desentiendo del motor de base de datos y me enfoco en el modelo de objetos, no siempre es tan fluido y a hay que desempolvar el manual de Linq para que tatuárselo en un brazo, pero en general la experiencia ha sido muy buena.</p>
<p>Ahora bien, una de las cosas más interesante del Entity Framework cuando se trabaja con Code First consiste en la capacidad de crear bases de datos que reflejan el modelo y sobre las que se van a almacenar los datos y esto es casi mágico para el desarrollador, pero ya en el ambiente de producción y en aplicaciones corporativas se requiere más control, así que es mejor definir su propia cadena de conexión. Esto resulta un poco complicado la primera vez porque uno siempre se esta preguntando pero como supo EF a donde conectarse, servidor, usuario, nombre de la base de datos, etc.  Revisando la documentación del entity framewor en el objeto DbContext que es de donde se hereda el controlador de la base de datos vemos lo siguiente en el constructor</p>
<p><em>Constructs a new context instance using conventions to create the name of the database to which a connection will be made. The by-convention name is the full name (namespace + class name) of the derived context class.  See the class remarks for how this is used to create a connection.</em></p>
<p>y un poco más en la documentación de clase se encuentra lo siguiente:</p>
<p><em>The Entity Data Model backing the context can be specified in several ways. When using the Code First approach, the System.Data.Entity.DbSet&lt;TEntity&gt; properties on the derived context are used to build a model by convention.   The connection to the database (including the name of the database) can be specified in several ways.  If the parameterless DbContext constructor is called from a derived context, then the name of the derived context is used to find a connection string in the app.config or web.config file. If no connection string is found, then the name is passed to the DefaultConnectionFactory registered on the System.Data.Entity.Database class.</em></p>
<p><em>The connection factory then uses the context name as the database name in a default connection string. (This default connection string points to .\SQLEXPRESS on the local machine unless a different DefaultConnectionFactory is registered.) Instead of using the derived context name, the connection/database name can also be specified explicitly by passing the name to one of the DbContext constructors that takes a string. The name can also be passed in the form &#8220;name=myname&#8221;, in which case the name must be found in the config file or an exception will be thrown.</em></p>
<p><em>Note that the connection found in the app.config or web.config file can be a normal database connection string (not a special Entity Framework connection string) in which case the DbContext will use Code First.</em></p>
<p>Que básicamente nos dice que la base de datos se llamara como se llame la clase (incluido el namespace) de donde que fue heredada de DBContext, por ejemplo, si mi clase se llama MyNamespace.MyComponente.MyClase, así se llamara la nueva base de datos en una instancia de SQL que se llame SQLExpress dentro de la maquina en la que esta ejecutándose la Dll. Ahora bien si se quiere definir el nombre de la base de datos se puede invocar el constructor de DBContext asi:</p>
<p><em>public MTRDB() : base(&#8220;MyDB&#8221;) { }</em></p>
<p>Donde MTRDB es el nombre de la clase que esta heredando de DBContext y MyDB es el nombre con el que quiero que se cree la base de datos en la instancia SQLExpress de la maquina local.</p>
<p>Ahora si lo que se quiere es prevenir que EF vuelva a crear la base de datos o que utilice una base de datos existente en otro servidor, con otro nombre, con seguridad de SQL o cualquier combinación de las anteriores se debe crear una llave de tipo Connectionstring en el archivo config (web.config o app.config) de la solución que esta referenciando la clase que heredo de DBContext, esta llave debe tener el mismo nombre de la clase (si no se uso el constructor) o el mismo nombre que se uso en el constructor, por ejemplo y de acuerdo al ejemplo anterior, si la app encuentra una llave de configuración que se llame MyDB utilizará la información de esa cadena de conexión para conectarse a la BD donde espera encontrar los modelos de objetos.</p>
<p>Un detalle importante es que cuando se utilizan cadenas de conexión es bueno incluir el parámetro <em> MultipleActiveResultSets=True</em> en la cadena de conexión, ya que de no hacerlo el DBContext solo podrá manejar un resultado al tiempo y no permitirá ejecutar otros comandos mientras no se cierre el proceso del anterior. así que algo como esto</p>
<p><code><br />
using (WFEngineDb wfEngineDb = new WFEngineDb())<br />
{<br />
var fullfilledTransitions = wfEngineDb.Database.SqlQuery&lt;FullfiledTransition&gt;(sb.ToString(), activityInstanceId);<br />
foreach (var fullfilledTransition in fullfilledTransitions)<br />
{<br />
if ((fullfilledTransition.Requested - fullfilledTransition.Fullfilled) == 0)<br />
{<br />
var transition = wfEngineDb.transitions.Find(fullfilledTransition.Transition_id);<br />
transitions.Add(transition);<br />
}<br />
}<br />
}<br />
</code><br />
Generaría un error ya que el find no puede ejecutarse dentro de la operación de consulta a la base de datos. El error seria algo del tipo<em>: There is already an open DataReader associated with this Command which must be closed first.</em></p>
<p><em> </em>La capacidad del EF de distiguir por configuración si estoy en desarrollo o en producción por la presencia o no de la cadena de conexión en el archivo config de la solución nos ha parecido no solo muy útil sino que se ha vuelto parte de nuestro proceso de desarrollo permitiéndonos probar el componente contra múltiples ambientes de una forma muy fácil y rápida.</p>
<p>En uno de nuestros proyectos, por ejemplo,  teníamos una base de datos en producción con más de 70 millones de registros y soportando un web site con picos de hasta un millón de visitantes diarios y el EF se comporto de maravilla (después de crear índices y hacer un tunning juicioso de la base de datos), así que creemos que es una tecnología bastante madura y robusta como para poner rápidamente aplicaciones importantes en producción.</p>
<p>Pd. No soy experto en nhibernate pero me gusta de EF Code First que no hay archivos de configuración ni nada aparte de mi clase para definir el modelo y cuando se necesita algo particular el Dataanotations hace el trabajo muy bien.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/geek-stuff/entity-framework/cadenas-de-conexion-en-entity-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiar Default Schema</title>
		<link>http://www.juanpelaez.com/geek-stuff/entity-framework/cambiar-default-schema/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cambiar-default-schema</link>
		<comments>http://www.juanpelaez.com/geek-stuff/entity-framework/cambiar-default-schema/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 22:13:05 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Entity Framework]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=377</guid>
		<description><![CDATA[Una rápida de Entity Framework + Code First. Hay ocasiones en las que se quiere crear la BD en otro schema dentro de SQL que no sea el dbo, para ello se puede usar la siguiente instrucción: modelBuilder.Entity&#60;Settings&#62;().ToTable(&#8220;Settings&#8221;, schemaName); sin &#8230; <a href="http://www.juanpelaez.com/geek-stuff/entity-framework/cambiar-default-schema/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una rápida de Entity Framework + Code First.</p>
<p>Hay ocasiones en las que se quiere crear la BD en otro schema dentro de SQL que no sea el dbo, para ello se puede usar la siguiente instrucción:</p>
<p>modelBuilder.Entity&lt;Settings&gt;().ToTable(&#8220;Settings&#8221;, schemaName);</p>
<p>sin embargo toda las tablas que hacen relaciones muchos a muchos van a seguir quedando en el schema dbo, asi que hay que usar un truco de fluent API para hacer el ajuste, algo como esto:</p>
<p>modelBuilder.Entity&lt;User&gt;()<br />
.HasMany(p =&gt; p.groups)<br />
.WithMany(r =&gt; r.users)<br />
.Map(m =&gt; m.ToTable(&#8220;UsersByGroups&#8221;, schemaName));</p>
<p>donde schemaName es una variable en la que he puesto el nombre con el que quiero que quede nombrado el schema.</p>
<p>Tiene algunos efectos colaterales cuando se manejan objetos con herencia pero para la mayoría de los escenarios funciona bastante bien. El equipo de EF ya esta advertido de la necesidad de poder modificar el schema de forma global y trabajan en eso.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/geek-stuff/entity-framework/cambiar-default-schema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concavo Cocuy 2012</title>
		<link>http://www.juanpelaez.com/escalada/montaismo/concavo-cocuy-2012/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=concavo-cocuy-2012</link>
		<comments>http://www.juanpelaez.com/escalada/montaismo/concavo-cocuy-2012/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 22:20:06 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Montañismo]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=379</guid>
		<description><![CDATA[En marzo de 2012, con Fernando Ruiz escale nuevamente el Cóncavo en la Serranía del Cocuy y Guican, Boyacá, Colombia. Por muchas y diversas razones esta ha sido la mejor de todas las escaladas en Alta Montaña, un viaje que &#8230; <a href="http://www.juanpelaez.com/escalada/montaismo/concavo-cocuy-2012/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En marzo de 2012, con Fernando Ruiz escale nuevamente el Cóncavo en la Serranía del Cocuy y Guican, Boyacá, Colombia. Por muchas y diversas razones esta ha sido la mejor de todas las escaladas en Alta Montaña, un viaje que no por rápido dejo de ser significativo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/escalada/montaismo/concavo-cocuy-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Felipe meets Disney</title>
		<link>http://www.juanpelaez.com/viajes/felipe-meets-disney/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=felipe-meets-disney</link>
		<comments>http://www.juanpelaez.com/viajes/felipe-meets-disney/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 22:24:57 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Viajes]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=384</guid>
		<description><![CDATA[En Enero del 2012 con Claudia y Felipe visitamos el sur del Estado de la Florida, Miami, Fort Lauderdale y Orlando. Felipe lleva meses hablando de los viajes espaciales, los cohetes y los planetas así que tomamos la decisión de &#8230; <a href="http://www.juanpelaez.com/viajes/felipe-meets-disney/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En Enero del 2012 con Claudia y Felipe visitamos el sur del Estado de la Florida, Miami, Fort Lauderdale y Orlando. Felipe lleva meses hablando de los viajes espaciales, los cohetes y los planetas así que tomamos la decisión de llevarlo a conocer Cabo Cañaveral y que viera por sus propios ojos el tamaño de un cohete y sintiera la emoción del simulador de lanzamiento del programa Apolo. Estando en Orlando visitamos los parques de Sea World y Animal Kingdom que creemos son los más apropiados y en los que más puede disfrutar por su edad. 15 días increibles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/viajes/felipe-meets-disney/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nascar 2011</title>
		<link>http://www.juanpelaez.com/viajes/nascar-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nascar-2011</link>
		<comments>http://www.juanpelaez.com/viajes/nascar-2011/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 22:20:16 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[Viajes]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/?p=381</guid>
		<description><![CDATA[Es noviembre de 2011 y estoy en Homestead, el circuito donde se lleva a cabo la valida final del campeonato NASCAR. Hay dos corredores empatados en el primer lugar y aún no puedo cree que haya podido venir a ver &#8230; <a href="http://www.juanpelaez.com/viajes/nascar-2011/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es noviembre de 2011 y estoy en Homestead, el circuito donde se lleva a cabo la valida final del campeonato NASCAR. Hay dos corredores empatados en el primer lugar y aún no puedo cree que haya podido venir a ver esta carrera con mi hermano y su esposa. La experiencia no solo es increible por la carrera en si misma sino por todos los eventos, el mercadeo y la forma como cada persona vive estos eventos. Hay que repetirlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/viajes/nascar-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mango update primeras impresiones</title>
		<link>http://www.juanpelaez.com/geek-stuff/wp7/mango-update-primeras-impresiones/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mango-update-primeras-impresiones</link>
		<comments>http://www.juanpelaez.com/geek-stuff/wp7/mango-update-primeras-impresiones/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 04:31:43 +0000</pubDate>
		<dc:creator>Juan Peláez</dc:creator>
				<category><![CDATA[WP7]]></category>
		<category><![CDATA[Mango]]></category>
		<category><![CDATA[Mobile Devices]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>

		<guid isPermaLink="false">http://www.juanpelaez.com/uncategorized/mango-update-primeras-impresiones/</guid>
		<description><![CDATA[Recién se ha actualizado mi teléfono HTC HD7 a la última versión de windows phone 7 #WP7 justo a tiempo para el lanzamiento del iOS5 y que permite la comparación entre los sistemas operativos. Mis primeras impresiones de Mango: La &#8230; <a href="http://www.juanpelaez.com/geek-stuff/wp7/mango-update-primeras-impresiones/">M&#225;s <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recién se ha actualizado mi teléfono HTC HD7 a la última versión de windows phone 7 #WP7 justo a tiempo para el lanzamiento del iOS5 y que permite la comparación entre los sistemas operativos.</p>
<p>Mis primeras impresiones de Mango:</p>
<ul>
<li>La lista de aplicaciones se ha organizado mejor y ahora incluye una nueva funcionalidad de búsqueda. Adicionalmente la animación entre la ventana de aplicaciones y la lista ha mejorado.</li>
<li> Mejoró la gestión de redes inalámbricas, ahora es posible ver la ip y configuración de red.</li>
<li> Nueva funcionalidad de battery saver que muestra información detallada del estado de la batería.</li>
<li> La historia de los contactos integra redes sociales, correos y llamadas muy bien organizadas y pensadas.</li>
<li> Los mms se han integrado con las redes sociales haciendo posible chat con facebook chat.</li>
<li> La nueva versión del IE9 se siente bastante rápida aunque la barra de navegación inferior es un poco extraña.</li>
<li> El calendario de eventos mejoró en la forma como se muestra la información diferenciando por color los cumpleaños y los eventos de facebook.</li>
<li> El profile se ha integrado con facebook para mostrar las notificaciones de facebook.</li>
<li> Las cuentas de correo ahora tienen la opción de enlazar cuentas y de mostrar las conversaciones.</li>
<li> Maps ahora incluyen información de sitios por categorías ubicadas cerca a los sitios, de esta forma se pueden encontrar restaurantes y ofertas.</li>
</ul>
<p>La interfaz en general funciona bastante rápido y el proceso de actualización fue muy tranquilo, con todos estos cambios se espera que este sistema operativo y su alianza con fabricantes de teléfonos como Nokia y HTC posicionen esta alternativa para los usuarios de teléfonos inteligentes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanpelaez.com/geek-stuff/wp7/mango-update-primeras-impresiones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

