<?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>Blog SQLeros</title>
	<atom:link href="http://sqleros.com.ar/wps/feed" rel="self" type="application/rss+xml" />
	<link>http://sqleros.com.ar/wps</link>
	<description>Yo Soy SQLero, ¿Y Tú?</description>
	<lastBuildDate>Tue, 24 Aug 2010 07:40:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Colaboradores</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/08/colaboradores.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/08/colaboradores.sql#comments</comments>
		<pubDate>Tue, 24 Aug 2010 07:40:07 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[bloggers sqleros]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=440</guid>
		<description><![CDATA[Si les gusta el blog y tienen pasión por la programación. SQleros, esta en busca de bloggers. By the time your rss reader get this post here is 1 comments ,Welcome you come to leave your opinion !]]></description>
			<content:encoded><![CDATA[<p>Si les gusta el blog y tienen pasión por la programación. SQleros, esta en busca de bloggers.</p>
By the time  your rss reader get this post here is <strong> 1 </strong>comments ,Welcome you come to leave your opinion !<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/08/colaboradores.sql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Los 10 errores mas comunes al programar orientado a objetos en PHP</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/08/los-10-errores-mas-comunes-al-programar-orientado-a-objetos-en-php.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/08/los-10-errores-mas-comunes-al-programar-orientado-a-objetos-en-php.sql#comments</comments>
		<pubDate>Sat, 14 Aug 2010 15:30:28 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ocio]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[failsoop]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=445</guid>
		<description><![CDATA[El dominio de la programación orientada a objetos es, sin duda, uno de los paradigmas más codiciado por los programadores. Sin embargo, muchas veces estos cometen &#8220;atrocidades&#8221; al intentar implementarlo solo por decir a sus amigos, empresas u otros &#8220;Yo sé programar orientado a objetos&#8221;. A continuación verán una lista de 10 cosas que no [...]]]></description>
			<content:encoded><![CDATA[<p>El dominio de la programación orientada a objetos es, sin duda, uno de los paradigmas más codiciado por los programadores. Sin embargo, muchas veces estos cometen &#8220;atrocidades&#8221; al intentar implementarlo solo por decir a sus amigos, empresas u otros &#8220;Yo sé programar orientado a objetos&#8221;.<span id="more-445"></span></p>
<p>A continuación verán una lista de 10 cosas que no se deben hacer al implementar programación orientada a objetos enfocándonos en el lenguaje PHP. Esta lista acompaña al post de <a href="http://sqleros.com.ar/wps/PoST/2010/08/los-21-errores-mas-comunes-al-programar-con-php.sql" target="_blank">21 errores comunes programando en PHP</a>.</p>
<ol type="1">
<li><strong>Usar variables globales dentro las clases:</strong> una de las ventajas más importantes de la programación orientada a objetos es la reusabilidad de los códigos. Al usar variables globales ($_GET, $_SESSION, $_POST, $_COOKIE, global) dentro de las clases, esta se ve comprometida considerablemente. La razón es que todos los proyectos <strong>no</strong> tienen las mismas variables globales.</li>
<li><strong>Mezclar código HTML en la definición de las clases:</strong> es una de las cosas que me sorprenden cada vez que la veo. Es inaceptable que esto se le haya ocurrido a <a href="http://wordpress.com/">algunos</a>. Al mezclar HTML en el código PHP se compromete la reusabilidad de la clase, no todos los proyectos tienen el mismo código HTML.</li>
<li><strong>Imprimir salida (echo) dentro de las clases:</strong> aunque esto se parece a la anterior, me refiero a los echo o similares dentro de los métodos. Si una clase no está destinada para emitir salida no lo debe hacer. Para eso muchos utilizamos<a href="http://www.cristalab.com/tutoriales/160/galeria-de-imagenes-con-templates-en-php">sistemas de plantillas</a>.</li>
<li><strong>Identificadores de clases, métodos y propiedades sin sentido:</strong> un identificador siempre debe ser lo más descriptivo posible. A muchos le gusta usar identificadores increíblemente irrelacionados con su propósito. Esto compromete enormemente la lectura de un código. (Mira las <a href="http://www.cristalab.com/tutoriales/190/reglas--de-codificacion-y-lineamientos-de-codigo-php">reglas de codificación en PHP</a> via Cristal Lab)</li>
<li><strong>Mezclar uso de versiones de php en una misma clase:</strong> a partir de la versión 5 de PHP, la programación orientada a objetos se puede implementar de una manera más formal, pues se introdujo los modificadores de visibilidad public, private, protected. Aparte de que se pueden crear clases de alto nivel (clase Abstractas) y métodos abstractos con la palabra reservada abstract. También se pueden definir los métodos y propiedades estáticas formalmente con la palabra reservada static. Mezclar la programación orientada a objetos en PHP 4 (donde todo era publico) con la de PHP 5 hace un código “sucio”. Consejo: elige una de las versiones y programa para ella.</li>
<li><strong>Más de una clase en un mismo archivo:</strong> definir distintas clases en un mismo archivo es otra de las cosas que no se debe hacer. Las clase se han de componer lo más reusables posible y si puedes nombrar al archivo con el nombre de la clase muchísimo mejor. Sigue el camino de los grandes lenguajes como: Actionscript, Asp.net, Java entre otros.</li>
<li><strong>No hacer pruebas unitarias a las clases:</strong> al terminar de codificar una clase recuerda de hacer pruebas unitarias para asegurar el correcto funcionamiento de clase. Esto es simplemente probar todos los posibles caminos que pueda tomar un estado (propiedad), parámetro de método, etc para que la clase no “explote”.</li>
<li><strong>Todos los métodos y las propiedades publicas en una clase de PHP 5:</strong> los programadores novatos cometen el error de definir todos los métodos y propiedades como públicos, por desconocer las ventajas de los modificadores visibilidad. En PHP este es un problema grave porque no hay tipeado de datos. El problema de las propiedades públicas es que no podemos controlar de manera fácil el tipo de datos que contiene por lo que nuestra clase pudiera explotar por un tipo de dato inesperado. Si no estas seguro de que visibilidad le debes poner a una propiedad hazla privada. Valida los tipos de datos de las propiedades al menos de una manera básica.</li>
<li><strong>Duplicación de métodos para ocultar falla de lógica:</strong> A diferencia de otros lenguajes como Java y C++, PHP no admite la sobrecarga de métodos. Al menos no de la manera tradicional. Esto, sin embargo, no es excusa para duplicar métodos sólo porque un dato cambia para la operación que éste realiza.</li>
<li><strong>Variables de configuración dentro de las clases: </strong>Los datos de configuración de base de datos, web services y otros deben ir en un archivo de configuración aparte, <strong>NO</strong> dentro de la clases que hacen uso de estas. Aunque se admite en clases que sea exclusivamente para ello.</li>
</ol>
By the time  your rss reader get this post here is <strong> 2 </strong>comments ,Welcome you come to leave your opinion !<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/08/los-10-errores-mas-comunes-al-programar-orientado-a-objetos-en-php.sql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Los 21 errores más comunes al programar con php</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/08/los-21-errores-mas-comunes-al-programar-con-php.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/08/los-21-errores-mas-comunes-al-programar-con-php.sql#comments</comments>
		<pubDate>Fri, 13 Aug 2010 21:25:05 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[Ocio]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[fails]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=441</guid>
		<description><![CDATA[Leyendo en Zend.com, encuentro una completa lista de errores comunes de los programadores de PHP. Aunque muchos de los que programamos constantemente en PHP hemos superado varios puntos, siempre hay cosas en las que caemos, pudiendo mejorar la calidad de nuestro código. Los errores están divididos en 3 partes, siendo los primeros los mas &#8220;benignos&#8221; y los [...]]]></description>
			<content:encoded><![CDATA[<p>Leyendo en <a href="http://www.zend.com/">Zend.com</a>, encuentro una completa lista de <a href="http://www.zend.com/zend/art/mistake.php">errores comunes</a> de los programadores de PHP.<br />
Aunque muchos de los que programamos constantemente en PHP hemos superado varios puntos, siempre hay cosas en las que caemos, pudiendo mejorar la calidad de nuestro código.</p>
<p>Los errores están divididos en 3 partes, siendo los primeros <span id="more-441"></span>los mas &#8220;benignos&#8221; y los últimos, &#8220;críticos&#8221;. Comentare los más importantes.</p>
<p><a href="http://www.zend.com/zend/art/mistake.php"><strong>Parte 1</strong></a></p>
<p><strong>Uso impropio del printf</strong></p>
<p><strong>Abusando de la semántica</strong><br />
Esto es, básicamente, no usar una misma variable para guardar en un momento números, en otras cadenas de texto, o hacer funciones que por parámetros reciban variables de varios tipos de datos.<br />
Una adecuada forma es la declaración de variables antes de usarlas, mantener un mismo tipo de datos para todas las variables, etc.</p>
<p><strong>Falta de documentación por línea</strong><br />
En pocas palabras, es saber crear comentarios adecuados, no hacer un comentario por línea, pero tampoco una palabra por función, además de hacerlos comprensivos, lógicos y no estupidos, como:</p>
<p><strong>Código :</strong></p>
<pre>//Esta función imprime
function imprimir($datos){
    echo $datos;
}</pre>
<p><strong>Creación de demasiadas variables temporales</strong></p>
<p><strong>Rescribir funciones existentes de PHP</strong><br />
Esta es muy común, si no sabes que hace PHP y tienes un problema para lo que PHP tiene ya una función que lo soluciona, pero haces una función propia que haga lo mismo.<br />
Hay que leer <img src="http://www.cristalab.com/foros/images/smiles/icon_lol.gif" border="0" alt="xD" /></p>
<p><strong>No separar el lado del cliente del lado del servidor</strong><br />
Lo que muchos principiantes hacen, llenar de echos el código HTML, no hacer plantillas, ni siquiera funciones para separar lógicamente la parte de PHP de la parte de HTML.</p>
<p><strong>Usar paradigmas del siglo pasado</strong><br />
PHP es muy flexible, por lo que puedes usar aun cosas como &#8220;if endif&#8221; o &#8220;while endwhile&#8221;, pero eso es taaan viejo, como usar GOTOs.<br />
Otro ejemplo similar es seguir usando variables globales al recibir valores de formularios, hay que actualizarse.</p>
<p><a href="http://www.zend.com/zend/art/mistake1.php"><strong>Parte 2</strong></a></p>
<p><strong>No seguir convenciones básicas en los nombres</strong><br />
Poner cosas como $xdb2 a una variable o convfunxml() a una función, son practicas muy malas, que llevan al desastre al mantener una aplicación. En las variables, lo mas recomendado es mantener &#8220;simples&#8221; las cosas, mientras que en las funciones, hacerlas lo mas &#8220;verbales&#8221; posible seria lo mejor.</p>
<p><strong>Usar de una manera horrible la conexión a bases de datos</strong><br />
Gente que trae todos los resultados de una consulta solo para ver si es mayor que cero, hacer la consulta columna por columna en vez de traer un recordset completo, usar PHP para ordenar los resultados en vez de SQL, esas son formas horribles de conectarse a una DB.</p>
<p><strong>Falta de detección de errores</strong><br />
Asúmanlo, ocurrirán errores, sea porque al hosting se le lleno la tabla de temporales, porque se acabo el espacio en disco que tenían, porque un usuario encontró una manera de saltarse una validación de datos o por lo que sea, siempre, en cuestiones delicadas (Consultas, escritura al disco, etc) hay que hacer control de errores.</p>
<p><strong>Sobrepasarse con la programación orientada a objetos</strong><br />
PHP aun no esta 100% orientado a objetos de una manera estricta, de modo que aunque usemos MVC, frameworks como PEAR entre otras muchas cosas, podemos llegar a sobrepasarnos en el uso de POO en PHP, creando una serie de clases, métodos y propiedades exagerada que probablemente nos den mas problemas que beneficios en el futuro. No hay que exagerar</p>
<p><strong>Mal uso de las expresiones regulares</strong><br />
Aunque es un tema muy avanzado, las expresiones regulares son muy útiles en muchos casos donde debemos analizar cadenas de texto raras para obtener resultados; pero son lentas, por lo que no hay que usarlas para tooodo, como reemplazar patrones simples en cadenas, buscar un carácter, etc.<br />
Existen muchas funciones de manejo de strings ya hechas y más fáciles de usar.</p>
<p><strong>Programar en PHP como si fuera otro lenguaje</strong><br />
Mucha gente que empieza en PHP, viene de otros lenguajes y con ello, traen también sus mañas y costumbres de acuerdo a cada uno de ellos.<br />
Los de Perl que les fascina programar todo en una sola línea, los de Java que directamente hacen un framework orientado a objetos de modo que en el código HTML solo haya <em>$pagina = new Pagina();</em>, los que se ponen a renombrar o rescribir funciones inherentes de PHP, etc. De nuevo, hay que leer.</p>
<p><strong>No ser consciente de la seguridad</strong><br />
PHP puede ser programado elegante o terriblemente&#8230; y aun así dar el mismo resultado a los ojos del usuario; cosas como las protecciones básicas de seguridad son olvidadas.<br />
No permitir que, en un campo que se usara en una consulta a una DB, un usuario ponga comillas simples o punto y coma, tomar todos los valores raros y hacerles &#8220;escape&#8221; (Es decir, poner un backslash en frente de ellos) y en general validar dentro de PHP todos los valores que puedan haber sido escritos a mano es una responsabilidad nuestra.</p>
<p><a href="http://www.zend.com/zend/art/mistake2.php"><strong>Parte 3</strong></a></p>
<p><strong>Cortar y pegar; el camino incorrecto</strong><br />
Siempre haces la misma función de validar un correo electrónico, la misma de conectarse a la base de datos, etc&#8230; ¿Copias y pegas cuando lo haces?<br />
Es mas optimo crear una librería de tus propias funciones, también puedes usar librerías como PEAR y demás, pero recuerda, solo usa librerías de una fuente conocida o crea las tuyas.</p>
<p><strong>No tener guías de estilo de codificación en un proyecto</strong><br />
Iniciar proyectos <em>&#8220;por mis huevos&#8221;</em> siempre ha sido un error; cuando inicias un proyecto, sin importar si eres tú solo o tienes un grupo de trabajo, hay que definir unos lineamientos de codificación.<br />
Que variables son globales y como deberían ser marcadas como global, la estructura de las carpetas de código, convenciones de los comentarios, procesos de documentación, etc.</p>
<p><strong>No hacer una revisión de código</strong><br />
Revisar nuestro código después de hecho, ver que hace, que se puede mejorar, etc, es algo que siempre se obvia, mucho mas en nuestra cultura donde todo es &#8220;urgente&#8221; (Sobre todo hacer prilouders).<br />
¿Cuál era el propósito de X código?, ¿Cómo se relaciona el archivo X con los demás en el proyecto?, ¿Cómo verifica los errores el programa?, ¿Dónde podría encontrar errores el usuario?&#8230; etc.</p>
<p><strong>Hacerle &#8220;hacks&#8221; al código PHP abusando de fallos de diseño</strong><br />
Tu lo sabes, tu sabes cuando estas haciendo un código feo, sabes cuando estas solucionando algo de la peor manera, sabes cuando estas metiendo a las patadas un código para que algo funcione&#8230; no lo hagas, recapacita, piensa en los niños.</p>
<p><strong>Excluir al usuario del proceso de diseño</strong><br />
El usuario, ese engendro infernal que nos hace eliminar, corregir, cambiar, actualizar, repetir, borrar y maldecir. ¿Por qué no lo metemos al proceso, hacemos prototipos de prueba, le mostramos todo, vemos si vamos por buen camino? La mayoría de problemas con los usuarios finales es por culpa de nuestra discriminación (con razón) hacia ellos&#8230; Cada vez que ignoras a tu usuario, Dios le quita un punto y coma a una parte aleatoria de tu código.</p>
<p><strong>No apegarse al plan del proyecto</strong><br />
¿Seguiste el análisis, diseño e implementación como estaban planeados?, de hecho, ¿Lo hiciste si quiera en ese orden?; cuando se planea un proyecto y en un punto debes salirte del esquema planteado, sabes que las cosas irán mal.</p>
<p><strong>Perderte en el tiempo</strong><br />
Los programadores, por defecto, son optimistas; &#8220;Si, eso sale en un mes&#8221;, decimos.<br />
No subestimes la complejidad de nada, tiende a pedir el doble de lo que necesitas, de cualquier manera, siempre lo querrán en la mitad del tiempo. Conocete a ti mismo, conoce tu trabajo, pide el tiempo real, pide mas que eso y se conciente de cuanto código llevas, cuanto te falta y cuanto tiempo tienes.</p>
<p>No solo a PHP aplican estos &#8220;errores comunes&#8221;, pero de cualquier manera tenerlos en cuenta muy seguramente te ayudara en la mayoría de proyectos que inicies.<br />
Aunque claro, siempre hay gente que jamás cae en estos errores.</p>
<p>¿Como tu?</p>
By the time  your rss reader get this post here is <strong> 1 </strong>comments ,Welcome you come to leave your opinion !<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/08/los-21-errores-mas-comunes-al-programar-con-php.sql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SNAPSHOT DATABASE</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/08/snapshot-database.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/08/snapshot-database.sql#comments</comments>
		<pubDate>Mon, 09 Aug 2010 00:00:46 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[T-SQL]]></category>
		<category><![CDATA[sql server 2008]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=437</guid>
		<description><![CDATA[Han visto que el Object Explorer en el SQL Server Management Studio donde se encuentran las bases de datos hay una carpeta que dice Database Snapshots. Esto puedo confundir mucho ya que pareciera que fuera parte de la replicación pero no es así, realmente es una base de datos sólo lectura, estática basada en una base datos normal [...]]]></description>
			<content:encoded><![CDATA[<p>Han visto que el <strong>Object Explorer</strong> en el <strong>SQL Server Management Studio</strong> donde se encuentran las bases de datos hay una carpeta que dice <strong>Database Snapshots</strong>.</p>
<p>Esto puedo confundir mucho ya que pareciera que fuera parte de la replicación pero no es así, realmente es una base de datos sólo lectura, estática basada en una base datos normal (fuente).</p>
<p>En la parte de abajo hay un ejemplo reemplacen la información por sulla y aparecerá ya base datos bajo la carpeta de Database Snapshots.</p>
<p><strong>Cuál es su función:</strong><br />
Pueden ser utilizados para los informes. Asimismo, en el caso de un error del usuario en una base de datos de código fuente, puede restaurar la base de datos fuente al estado en que estaba cuando se creó el snapshot.</p>
<p>La pérdida de datos se limita a las actualizaciones de la base de datos desde su creación de la instantánea. Además, la creación de una snapshot de base de datos puede ser útil inmediatamente antes de hacer un cambio importante de una base de datos, como cambiar el esquema o la estructura de una tabla.</p>
<p><strong>Tiene 3 posibles usos:</strong></p>
<p><span style="color: red;"><br />
• Mantener los datos históricos para la generación de informes (Reporteria)<br />
• Protección de datos de errores de usuario (Backup).<br />
• La gestión de una base de datos de prueba (Base datos de pruebas)<br />
</span><br />
<strong>Importante: </strong><br />
Database snapshots, fueron introducidos en SQL Server 2005, sólo están disponibles en las ediciones Enterprise de SQL Server 2005, SQL Server 2008 y SQL Server 2008 R2.</p>
<p>En la parte de abajo hay un ejemplo reemplacen la información por sulla y aparecerá ya base datos bajo la carpeta de Database Snapshots.</p>
<p><strong>Crear una base datos snapshots</strong><br />
<em><br />
<span style="color: red;"></p>
<p>SNAPSHOT CREATE DATABASE AdventureWorks_dbss1800 ON<br />
( NAME = AdventureWorks_Data, FILENAME =<br />
&#8216;C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss&#8217; )<br />
AS SNAPSHOT OF AdventureWorks</span></em><span style="color: red;">;<br />
</span></p>
<p>Si hacer un restore de en base a un SNAPSHOT seria de la siguiente manera:</p>
<p><strong>Restore</strong><br />
<span style="color: red;"></p>
<p><em>USE master<br />
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = &#8216;AdventureWorks_dbss1800&#8242;;<br />
GO</em><br />
</span><br />
Que permisos necesito para crear una:<br />
La única manera de crear una SNAPSHOT CREATE DATABASE es utilizar Transact-SQL. Cualquier usuario que pueda crear una base de datos puede crear una snapshot de base de datos, sin embargo, para crear una instantánea de una base de datos reflejada, usted debe ser un miembro de la función de servidor sysadmin.</p>
<p>Articulo de referencia:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms175469.aspx">http://msdn.microsoft.com/en-us/library/ms175469.aspx</a><br />
<a href="http://msdn.microsoft.com/en-us/library/ms187054.aspx">http://msdn.microsoft.com/en-us/library/ms187054.aspx</a><br />
<a href="http://www.sqlcoffee.com/Tips0004.htm">http://www.sqlcoffee.com/Tips0004.htm</a></p>
Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up <p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/08/snapshot-database.sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LINQ paralelo ( PLINQ ) para SQL server</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/08/linq-paralelo-plinq-para-sql-server.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/08/linq-paralelo-plinq-para-sql-server.sql#comments</comments>
		<pubDate>Sun, 08 Aug 2010 03:27:18 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[sql server 2008]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=435</guid>
		<description><![CDATA[Lo primero es que no corre con el framework 3.5 tiene que trasladarse ya al 4.0 Los procesadores multinúcleo ya están aquí. Los procesadores multinúcleo solo estaba disponibles para servidores y PCs de escritorio. Pero ahora, ya se están usando en teléfonos móviles y PDA, lo cual genera grandes ventajas en relación con el consumo [...]]]></description>
			<content:encoded><![CDATA[<p>Lo primero es que no corre con el framework 3.5 tiene que trasladarse ya al 4.0</p>
<p>Los procesadores multinúcleo ya están aquí. Los procesadores multinúcleo solo estaba disponibles para servidores y PCs de escritorio. Pero ahora, ya se están usando en teléfonos móviles y PDA, lo cual genera grandes ventajas en relación con el consumo de energía. En respuesta al aumento de disponibilidad de plataformas con procesadores multinúcleo, Parallel Language Integrated Query (PLINQ) ofrece una manera fácil de sacar partido del uso de hardware paralelo, incluidos equipos tradicionales con varios procesadores y la última ola de procesadores multinúcleo.</p>
<p>PLINQ es un motor de ejecución de consultas que acepta cualquier consulta LINQ to Objects o LINQ to XML y usa automáticamente varios procesadores o núcleos para su ejecución cuando estos están disponibles. El cambio en el modelo de programación es minúsculo, lo cual significa que no es necesario ser un gurú para usarlo.</p>
<p>Usar PLINQ es casi exactamente lo mismo que usar LINQ to Objects y LINQ to XML. Puede usar cualquiera de los operadores disponibles.</p>
<p><strong>Ejemplos con conexión a base de datos.</strong></p>
<p>Linq<br />
var query = from c in db.Customers<br />
where c.Country == &#8220;USA&#8221;<br />
orderby c.CompanyName<br />
select new { c.CustomerID, c.CompanyName };</p>
<p>plinq<br />
var query = from c in db.Customers.AsParallel()<br />
where c.Country == &#8220;USA&#8221;<br />
orderby c.CompanyName<br />
select new { c.CustomerID, c.CompanyName };</p>
<p>El genio Joe Duffy es el responsable de desarrollo del equipo Parallel FX de Microsoft y participa habitualmente en el blog <a href="http://carlosjuano.blogspot.com/2010/04/www.bluebytesoftware.com/blog">www.bluebytesoftware.com/blog</a>. Está escribiendo un libro, Concurrent Programming on Windows, que va a ser publicado por Addison-Wesley.</p>
Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up <p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/08/linq-paralelo-plinq-para-sql-server.sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transliteración de Español a Ruso</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/08/transliteracion-de-espanol-a-ruso.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/08/transliteracion-de-espanol-a-ruso.sql#comments</comments>
		<pubDate>Sat, 07 Aug 2010 01:53:49 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[Frikadas!!]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=430</guid>
		<description><![CDATA[Hola SQLeros el día de hoy comparto con ustedes una pequeña aplicación que permite transliterar algo escrito en español a ruso, es decir con el alfabeto cirilico. Bueno les dejo el codigo y les mando un afectuoso saludo. Y gracias a RCK, por la ayuda. ¡Hasta pronto! Here is no comments yet by the time [...]]]></description>
			<content:encoded><![CDATA[<p>Hola SQLeros el día de hoy comparto con ustedes una pequeña aplicación que permite transliterar algo escrito en español a ruso, es decir con el alfabeto cirilico.</p>
<p><a href="http://sqleros.com.ar/wps/wp-content/uploads/2010/08/EspañoltoCirilico.png"><img class="aligncenter size-medium wp-image-431" title="EspañoltoCirilico" src="http://sqleros.com.ar/wps/wp-content/uploads/2010/08/EspañoltoCirilico-300x158.png" alt="" width="300" height="158" /></a></p>
<p>Bueno les dejo el <a href="http://www.megaupload.com/?d=NKNA69MW" target="_blank">codigo</a> y les mando un afectuoso saludo. Y gracias a <a href="http://xpansionet.blogspot.com/" target="_blank">RCK</a>, por la ayuda.</p>
<p>¡Hasta pronto!</p>
Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up <p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/08/transliteracion-de-espanol-a-ruso.sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porque es importante la programación paralela</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/07/porque-es-importante-la-programacion-paralela.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/07/porque-es-importante-la-programacion-paralela.sql#comments</comments>
		<pubDate>Fri, 30 Jul 2010 22:15:23 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[dot net]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[parallel programming]]></category>
		<category><![CDATA[plinq]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=422</guid>
		<description><![CDATA[Cuando hablo con alguna gente acerca de las novedades de Visual Studio 2010 y sale lo de las mejoras para la programación en paralelo, mucha gente lo ve como una mera anécdota, algo que no va con ellos en absoluto. Si bien es cierto que muchas aplicaciones que se hacen, como las de gestión por ejemplo, no [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Cuando hablo con alguna gente acerca de las novedades de Visual Studio 2010 y sale lo de las mejoras para la <strong>programación en paralelo</strong>, mucha gente lo ve como una<span id="more-422"></span> <strong>mera anécdota</strong>, algo que <strong>no va con ellos en absoluto</strong>.</p>
<p style="text-align: justify;">Si bien es cierto que muchas aplicaciones que se hacen, como las de gestión por ejemplo, no suelen tener que sacarle partido, no es menos cierto que en muchas circunstancias nuestras aplicaciones deben poder sacarle el máximo rendimiento al hardware del que disponemos.</p>
<p style="text-align: justify;">Desde hace unos años lo más habitual en cualquier ordenador corriente es que disponga de un procesador con al menos dos núcleos. En servidores o máquinas destinadas a tareas más demandantes es muy frecuente que haya varios procesadores con al menos cuatro núcleos.</p>
<p style="text-align: justify;"><strong>La tendencia es que cada vez haya más núcleos</strong> en los procesadores, ya no sólo por rendimiento sino por las ventajas en cuanto a ahorro de energía, temperatura y las limitaciones existentes en cuanto a aumentar la velocidad de frecuencia de reloj.</p>
<p style="text-align: justify;">Esto implica que casi cualquier aplicación pueda trabajar en entornos con múltiples núcleos, lo que hace realmente importante sacarle partido a la programación multi-subproceso.</p>
<p style="text-align: justify;">Anteriormente, y aquí viene lo importante, para aumentar el rendimiento de una aplicación bastaba con moverla a una máquina con un procesador más rápido. Sin embargo hoy en día esto ya no vale, pues <strong>el rendimiento se obtiene a través de sacarle partido a más núcleos y no aumentando la velocidad</strong>.</p>
<p style="text-align: justify;">Así que la conclusión es que si queremos que una aplicación llegue a ser escalable ésta debe sacar partido a múltiples hilos de ejecución y, por lo tanto, a múltiples nodos de procesamiento.</p>
<p style="text-align: justify;">¿Se ve entonces la importancia? A mi me parece fundamental.</p>
<p style="text-align: justify;">Este tipo de programación paralela siempre ha sido muy compleja, sobre todo a la hora de depurar aplicaciones en las que existen muchas probabilidades de generar interbloqueos o “race conditions”. Con .NET 4.0 y Visual Studio 2010 se incluyen nuevas bibliotecas, tipos y herramientas para facilitar la programación multi-núcleo, y debería ser un área de suma importancia para los programadores.</p>
<p style="text-align: justify;">.NET 4.0 incluye lo que se ha bautizado como “Parallel Extensions” que están formadas por tres nuevos componentes:</p>
<blockquote style="text-align: justify;" dir="ltr"><p>• <strong>La biblioteca de tareas paralelas (TPL, Task Parallel Library)</strong>: esta biblioteca dentro del espacio de nombres System.Threading.Taks.Parallel incluye construcciones para ejecutar tareas repetitivas independientes entre sí en paralelo y de forma automática, como por ejemplo versiones paralelas de los bucles For y ForEach.<br />
• <strong>El motor de ejecución paralela de Linq (PLINQ Execution Engine)</strong>: como se desprende de su nombre, se trata de una versión paralelizada de Linq to Objects, que nos permite lanzar consultas integradas en el lenguaje aprovechando la capacidad de paralelismo del sistema.<br />
• <strong>Las estructuras de datos para coordinación (CDS, Coordination data Structures)</strong>: ofrece un conjunto de primitivas de sincronización y de colecciones preparadas para multisubproceso (thread-safe) que simplifican los escenarios paralelizados. Por ejemplo, tenemos diccionarios, pilas y colas thread-safe, y objetos especiales para sincronización de hilos como el <em>SpinWait</em> o el <em>SpinLock</em>.</p></blockquote>
<p style="text-align: justify;">La MSDN tiene una buena documentación sobre todo esto en: <a href="http://msdn.microsoft.com/en-us/library/dd460693.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/dd460693.aspx</a>.</p>
<p style="text-align: justify;">Y tú ¿qué opinas?</p>
By the time  your rss reader get this post here is <strong> 1 </strong>comments ,Welcome you come to leave your opinion !<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/07/porque-es-importante-la-programacion-paralela.sql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java4Ever</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/07/java4ever.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/07/java4ever.sql#comments</comments>
		<pubDate>Wed, 14 Jul 2010 08:14:13 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[Frikadas!!]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[javazone]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=405</guid>
		<description><![CDATA[No, no, no para nada no me he vuelto maricón, lo que pasa es que me encontré este video y se me hizo algo gracioso. No se lo pueden perder&#8230; Ah jaja ¡espero y eso nunca me lo hagan mis hijos! Ah jajaja, esta muy buena la forma para programar, ¡tendré que probarla! ¡Saludos! By the time [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">No, no, no para nada no me he vuelto maricón, lo que pasa es que me encontré este video y se me hizo algo gracioso. No se lo pueden perder&#8230;</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/A1zySeNpW20&amp;hl=es_ES&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/A1zySeNpW20&amp;hl=es_ES&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<h3><span style="font-weight: normal;">Ah jaja ¡espero y eso nunca me lo hagan mis hijos! Ah jajaja, esta muy buena la forma para programar, ¡tendré que probarla!</span></h3>
<p><span style="font-weight: normal;">¡Saludos!</span></p>
By the time  your rss reader get this post here is <strong> 2 </strong>comments ,Welcome you come to leave your opinion !<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/07/java4ever.sql/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Crear Interfaces Fluidas en C #</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/07/crear-interfaces-fluidas-en-c.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/07/crear-interfaces-fluidas-en-c.sql#comments</comments>
		<pubDate>Fri, 09 Jul 2010 04:24:18 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[Interfaces Fluidas]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=391</guid>
		<description><![CDATA[Eric Evans y Martin Fowler fueron los responsables de esta tendencia llamada Fluent Interface. El objetivo de la misma no era otro que el de mejorar la legibilidad del código. Para saber cómo son y de qué forma podríamos crear nuestras propias interfaces veamos un sencillo ejemplo: Supongamos que tenemos una clase que construye ordenadores [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://domainlanguage.com/about/index.html">Eric Evans</a> y<a href="http://martinfowler.com/aboutMe.html"> Martin Fowler</a> fueron los responsables de esta tendencia llamada <a href="http://en.wikipedia.org/wiki/Fluent_interface">Fluent Interface</a>. El objetivo de la misma no era otro que el de mejorar la legibilidad del código. Para saber cómo son<span id="more-391"></span> y de qué forma podríamos crear nuestras propias interfaces veamos un sencillo ejemplo:<br />
Supongamos que tenemos una clase que construye ordenadores con sus respectivas propiedades:</p>
<pre class="brush: csharp">class Machine
{
public string Processor { get; set; }
public int RAM { get; set; }
}</pre>
</p>
<p style="text-align: justify;">Si quisiéramos crear un nuevo equipo y además inicializar sus componentes de la forma convencional sería algo parecido a esto:</p>
<pre class="brush: csharp">var newMachine = new Machine {RAM = 6, Processor = &quot;Intel i7 920&quot;};</pre>
<p>Si además esta clase Machine tuviera una serie de métodos encargados de realizar acciones como encender el ordenador, testearlo, apagarlo, etcétera ejecutaríamos cada uno de ellos invocando línea a línea los métodos declarados en dicha clase:</p>
<pre class="brush: csharp">var newMachine = new Machine { RAM = 6, Processor = &quot;Intel i7 920&quot; };
newMachine.TurnOn();
newMachine.Test();
newMachine.TurnOff();</pre>
</p>
<p style="text-align: justify;"><strong> ¿Qué nos ofrece Fluent Interface?</strong></p>
<pre class="brush: csharp">new Computer()
.AddProcessor(&quot;Intel i7 920&quot;)
.AddRAM(6)
.TurnOn()
.Test()
.TurnOff();</pre>
<p>Si nos damos cuenta se trata de una línea de código abarcando todas las funciones que nos interesan de una clase de tipo Machine, encapsulada dentro de Computer. ¿Cómo creamos este encapsulamiento?<br />
En primer lugar vamos a  definir una interfaz que establezca los métodos disponibles y obligatorios de implementar:</p>
<pre class="brush: csharp">namespace FluentInterface
{
interface IComputer
{
IComputer TurnOn();
IComputer TurnOff();
IComputer Test();
IComputer AddRAM(int GB);
IComputer AddProcessor(string model);
}
}</pre>
<p>Lo primero que nos puede llamar la atención es que cada uno de los métodos deberá retornar el tipo IComputer, es decir, debería devolver una clase que implemente esta interfaz que estamos declarando o dicho de otra forma: Deberá devolverse a sí mismo. ¿Qué conseguimos con ello? Devolver el contexto (valores de las variables) en cada acción que vayamos invocando para poder ser utilizado en la siguiente llamada. Como implementación válida a esta interfaz tendríamos lo siguiente:</p>
<pre class="brush: csharp">using System;
namespace FluentInterface
{
class Computer : IComputer
{
private readonly IMachine _machine;
public Computer()
{
_machine = new Machine();
}
public IComputer TurnOn()
{
_machine.Status = &quot;On&quot;;
Console.WriteLine(&quot;Your computer is {0}&quot;, _machine.Status);
return this;
}&lt;/p&gt;
public IComputer TurnOff()
{
_machine.Status = &quot;Off&quot;;

Console.WriteLine(&quot;Your computer is {0}&quot;, _machine.Status);

return this;
}

public IComputer Test()
{
Console.WriteLine(&quot;Your computer is {0}&quot;, _machine.Status);

return this;
}

public IComputer AddRAM(int GB)
{
_machine.RAM = GB;

Console.WriteLine(&quot;{0} GB RAM added. Do you think its enough?&quot;, _machine.RAM);

return this;
}

public IComputer AddProcessor(string model)
{
Console.WriteLine(&quot;{0} processor added.&quot;, _machine.Processor);

_machine.Processor = model;

return this;
}
}
}</pre>
<p>En cada uno de los métodos realizaremos las operaciones necesarias y finalmente retornaremos this, es decir, la instancia de la clase que implementa IComputer para poder continuar operando con ella de una manera fluida. Gracias a este estilo de programación conseguiremos un código más legible y atractivo para el desarrollador <img src='http://sqleros.com.ar/wps/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
¡Saludos!</p>
Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up <p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/07/crear-interfaces-fluidas-en-c.sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DocTranslator: Traduce documentos de Office conservando su presentación</title>
		<link>http://sqleros.com.ar/wps/PoST/2010/07/doctranslator-traduce-documentos-de-office-conservando-su-presentacion.sql</link>
		<comments>http://sqleros.com.ar/wps/PoST/2010/07/doctranslator-traduce-documentos-de-office-conservando-su-presentacion.sql#comments</comments>
		<pubDate>Thu, 01 Jul 2010 21:48:01 +0000</pubDate>
		<dc:creator>ramms</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MS Office]]></category>
		<category><![CDATA[Ocio]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[openoffice]]></category>
		<category><![CDATA[traducir documentos]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://sqleros.com.ar/wps/?p=387</guid>
		<description><![CDATA[DocTranslator es un servicio online gratuito que te permite traducir los textos de Office, conservando su formato y presentación intacta. Las traducciones son realizadas a través de Google Translate en sus 50 idiomas, no hay límite en el tamaño del documento a traducir y no se necesita estar registrado para utilizar el servicio. Documentos de Word y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.onlinedoctranslator.com/" target="_blank">DocTranslator</a> es un servicio online gratuito que te permite traducir los textos de Office, conservando su formato y presentación intacta.</p>
<p style="text-align: justify;">Las traducciones son realizadas a través de Google Translate en sus 50 idiomas, no hay límite en el tamaño del documento a traducir y no se necesita estar registrado para utilizar el servicio.</p>
<p style="text-align: justify;">Documentos de Word y Excel son totalmente compatibles y también lo son archivos .txt. En caso de que use un sistema operativo diferente a Windows, deberás consultar la tabla de <a href="http://www.onlinedoctranslator.com/compatibility.html" target="_blank">compatibilidad</a>.</p>
<p style="text-align: justify;">¡Saludos!</p>
Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up <p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Compartelo/Guardalo</a> </p>]]></content:encoded>
			<wfw:commentRss>http://sqleros.com.ar/wps/PoST/2010/07/doctranslator-traduce-documentos-de-office-conservando-su-presentacion.sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
