<?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>BredeBS &#187; Programación</title>
	<atom:link href="http://bredebs.net/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://bredebs.net</link>
	<description>Desarollador</description>
	<lastBuildDate>Wed, 02 May 2012 00:00:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Windows Phone 7: Live Tiles</title>
		<link>http://bredebs.net/2012/03/22/windows-phone-7-live-tiles/</link>
		<comments>http://bredebs.net/2012/03/22/windows-phone-7-live-tiles/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 15:20:44 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=1105</guid>
		<description><![CDATA[Una de las cosas &#8220;bonitas&#8221; que tiene Windows Phone 7, es que una aplicación la puedo anclar al inicio de mi teléfono. Adicionalmente a estos Live Tiles puedo agregarle notificaciones, o la posibilidad de &#8220;girar&#8221; y entregar más información. Antes que todo es importante destacar que los live tiles son de 173px x 173px, y [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bredebs.net/wp-content/uploads/2012/03/tiles1.png" rel="lightbox[1105]" title="Live Tiles"><img class="alignleft size-medium wp-image-1106" title="Live Tiles" src="http://bredebs.net/wp-content/uploads/2012/03/tiles1-180x300.png" alt="" width="180" height="300" /></a> Una de las cosas &#8220;bonitas&#8221; que tiene Windows Phone 7, es que una aplicación la puedo anclar al inicio de mi teléfono.</p>
<p>Adicionalmente a estos Live Tiles puedo agregarle notificaciones, o la posibilidad de &#8220;girar&#8221; y entregar más información.</p>
<p>Antes que todo es importante destacar que los live tiles son de 173px x 173px, y que los Live Tiles de mayor tamaño son únicamente para aplicaciones desarrolladas por Microsoft (sí, también digo &#8216;buuuuh&#8217;)</p>
<p>Programáticamente es muy simple realizarlo:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span id="more-1105"></span>Lo primero es cargar la libreria Microsoft.Phone.Shell</p>
<pre class="brush: csharp">

using Microsoft.Phone.Shell;
</pre>
<p>Declaramos una variable del tipo ShellTile</p>
<pre class="brush: csharp">

ShellTile MiTile;
</pre>
<p>Dentro del constructor de nuestra aplicación lo declaramos</p>
<pre class="brush: csharp">

MiTile = ShellTile.ActiveTiles.First();
</pre>
<p>Para &#8220;llenarlo&#8221; es tan simple como:</p>
<pre class="brush: csharp">

//blah blah blah código antes

StandardTileData NewTileData = new StandardTileData
{
Title = &quot;Indicadores Económicos&quot;,
BackContent = &quot;Mi mensaje&quot;,
BackTitle = fecha
};
MiTile.Update(NewTileData);

//blah blah blah código después
</pre>
<p><a href="http://bredebs.net/wp-content/uploads/2012/03/tiles2.png" rel="lightbox[1105]" title="Live Tiles 2"><img class="alignleft size-medium wp-image-1109" title="Live Tiles 2" src="http://bredebs.net/wp-content/uploads/2012/03/tiles2-180x300.png" alt="" width="180" height="300" /></a>Lo importante acá es:</p>
<p>Title: El título del &#8220;primer&#8221; lado del Live Tile</p>
<p>BackContent: Lo que va a mostrarse como texto &#8220;en grande&#8221; en el &#8220;segundo&#8221; lado</p>
<p>BackTitle: El titulo del &#8220;segundo&#8221; lado</p>
<p>Count: El número que aparecerá como notificación en la esquina superior derecha</p>
<p>BackgroundImage: La imagen de fondo del primer lado del Live Tile</p>
<p>BackBackgroundImage: La imagen del fondo del segundo lado.</p>
<p>&nbsp;</p>
<p>En menos de 10 minutos puedes tener andando tu Live Tile con el código de arriba [otra razón más para desarrollar para Windows Phone <img src='http://bredebs.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ]</p>
<p>&nbsp;<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2012/03/22/windows-phone-7-live-tiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La APP &#8220;¿Dónde Estoy?&#8221; en el Diario El Sur</title>
		<link>http://bredebs.net/2012/03/21/donde-estoy-en-el-diario-el-sur/</link>
		<comments>http://bredebs.net/2012/03/21/donde-estoy-en-el-diario-el-sur/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 20:25:05 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[Otros]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=1099</guid>
		<description><![CDATA[Ayer apareció una entrevista que me hicieron acerca de mi experiencia como desarrollador penquista (de Concepción, mal pensados), y hablé un poco de ¿Dónde Estoy? la aplicación que desarrollé arriba de un bus mientras viajaba a Concepción desde Santiago [aunque olvidé conversarlo cuando me entrvistaron ] También aparece el maestro Chalalo con su app de [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer apareció una entrevista que me hicieron acerca de mi experiencia como desarrollador penquista (de Concepción, mal pensados), y hablé un poco de ¿Dónde Estoy? la aplicación que desarrollé arriba de un bus mientras viajaba a Concepción desde Santiago <img src='http://bredebs.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  [aunque olvidé conversarlo cuando me entrvistaron <img src='http://bredebs.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ]</p>
<p>También aparece el maestro Chalalo con su app de Farmacias de Turno <img src='http://bredebs.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://bredebs.net/wp-content/uploads/2012/03/elsur.png" rel="lightbox[1099]" title=":)"><img class="alignleft size-large wp-image-1100" title=":)" src="http://bredebs.net/wp-content/uploads/2012/03/elsur-733x1024.png" alt="" width="733" height="1024" /></a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2012/03/21/donde-estoy-en-el-diario-el-sur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 consumiendo JSON</title>
		<link>http://bredebs.net/2012/03/21/windows-phone-7-consumiendo-json/</link>
		<comments>http://bredebs.net/2012/03/21/windows-phone-7-consumiendo-json/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 20:02:45 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=1090</guid>
		<description><![CDATA[Cuando traes datos desde un servidor web se suele realizar en 4 métodos comunes: Webservice XML Dato &#8220;puro&#8221; JSON Probablemente el más utilizado en el último tiempo es JSON, por la facilidad con que se pueden generar las respuestas desde cualquier lenguaje (especiamente desde PHP). Una respuesta &#8220;común&#8221; de JSON se ve algo así: {&#34;respuestas&#34;:[{&#34;nombre&#34;:&#34;UF&#34;,&#34;fecha&#34;:&#34;21\/03\/2012&#34;,&#34;valor&#34;:&#34;22.504,51&#34;},{&#34;nombre&#34;:&#34;Dolar&#34;,&#34;fecha&#34;:&#34;21\/03\/2012&#34;,&#34;valor&#34;:&#34;485,61&#34;},{&#34;nombre&#34;:&#34;UTM&#34;,&#34;fecha&#34;:&#34;01\/03\/2012&#34;,&#34;valor&#34;:&#34;39.412&#34;},{&#34;nombre&#34;:&#34;Euro&#34;,&#34;fecha&#34;:&#34;21\/03\/2012&#34;,&#34;valor&#34;:&#34;642,43&#34;}]} [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando traes datos desde un servidor web se suele realizar en 4 métodos comunes:</p>
<ul>
<li>Webservice</li>
<li>XML</li>
<li>Dato &#8220;puro&#8221;</li>
<li>JSON</li>
</ul>
<p>Probablemente el más utilizado en el último tiempo es JSON, por la facilidad con que se pueden generar las respuestas desde cualquier lenguaje (especiamente desde PHP).</p>
<p>Una respuesta &#8220;común&#8221; de JSON se ve algo así:<span id="more-1090"></span></p>
<pre class="brush: js">

{&quot;respuestas&quot;:[{&quot;nombre&quot;:&quot;UF&quot;,&quot;fecha&quot;:&quot;21\/03\/2012&quot;,&quot;valor&quot;:&quot;22.504,51&quot;},{&quot;nombre&quot;:&quot;Dolar&quot;,&quot;fecha&quot;:&quot;21\/03\/2012&quot;,&quot;valor&quot;:&quot;485,61&quot;},{&quot;nombre&quot;:&quot;UTM&quot;,&quot;fecha&quot;:&quot;01\/03\/2012&quot;,&quot;valor&quot;:&quot;39.412&quot;},{&quot;nombre&quot;:&quot;Euro&quot;,&quot;fecha&quot;:&quot;21\/03\/2012&quot;,&quot;valor&quot;:&quot;642,43&quot;}]}
</pre>
<p>&amp;amp;nbsp;</p>
<p>Para leerlo en Windows Phone 7 hay varias alternativas, desde leerlo tipo &#8220;pelo en pecho&#8221; (realizando divisiones con las comas, dos puntos, etc&#8230; lo que es complicado si traes números), hasta pasar los datos como un datacontract (que queda bonito).</p>
<p>Para ello dentro de nuestro proyecto (o dentro del mismo archivo xaml.cs que estamos utilizando), debemos generar las clases con los mismos datos.</p>
<p>En el caso del json que mostré más arriba un contrato sería de la siguiente forma:</p>
<pre class="brush: csharp">

[DataContract()]
public class InfoEconomica
{
[DataMember(Name = &quot;respuestas&quot;)]
public Datos[] datos;
}
[DataContract]
public class Datos
{
[DataMember]
public string nombre { get; set; }
[DataMember]
public string fecha { get; set; }
[DataMember]
public string valor { get; set; }
}
</pre>
<p>Ahora, para convertir nuestro JSON a &#8220;objetos&#8221; en C# primero debemos incluir a System.Runtime.Serialization.Json; dentro de nuestro código con un using:</p>
<pre class="brush: csharp">

using System.Runtime.Serialization.Json;
</pre>
<p>lo siguiente es capturar este JSON desde un servidor remoto</p>
<pre class="brush: csharp">

public void ObtenerDatos()
{
try
{
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(new Uri(&quot;http://bredebs.net/api/resp.json&quot;), UriKind.Absolute);
}
catch (Exception ex)
{
MessageBox.Show(&quot;Error:&quot;+ex.Message, &quot;Error&quot;, MessageBoxButton.OK);
}
}
</pre>
<p>Acá explicaré un poquito más.</p>
<p>Cuando instanciamos un WebClient debemos declararle un evento que se disparará cuando termine de capturar los datos desde el servidor. En este caso usaremos client_OpenReadCompleted, para capturarlo declaramos el método void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e).</p>
<p>Primero creamos una variable del tipo DataContractJsonSerializer con nombre serializer, como parámetro le pasamos la clase que definiste.</p>
<pre class="brush: csharp">

var serializer = new DataContractJsonSerializer(typeof(InfoEconomica));
</pre>
<p>Luego creamos un objeto del tipo InfoEconomica (recuerda que este objeto es del tipo que tú creaste), y le asignamos el valor del &#8220;deserializado&#8221; (automáticamente tiene que &#8220;firmarte&#8221; el contrato de datos).</p>
<pre class="brush: csharp">

InfoEconomica ie = (InfoEconomica)serializer.ReadObject(e.Result);
</pre>
<p>ahora ya puedes utilizar la instancia como una colección de objetos.</p>
<pre class="brush: csharp">
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
var serializer = new DataContractJsonSerializer(typeof(InfoEconomica));
InfoEconomica ie = (InfoEconomica)serializer.ReadObject(e.Result);
for (int i = 0; i &lt;= ie.datos.Length - 1; i++)
{

System.Console.WriteLine(&quot;$&quot; + ie.datos[i].valor.ToString()+&quot; Fecha: &quot; + ie.datos[i].fecha.ToString() + &quot;.&quot;);
}
}
else
{
MessageBox.Show(&quot;Error en la conexión&quot;, &quot;Error&quot;, MessageBoxButton.OK);

}
}
</pre>
<p>Con esta base desarrollé una actualizaciones a la app Indicadores Económicos Chile que tengo en el marketplace de Windows Phone 7 <img src='http://bredebs.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2012/03/21/windows-phone-7-consumiendo-json/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3: Bordes Redondeados &#8220;inversos&#8221; [casi perfectos]</title>
		<link>http://bredebs.net/2011/11/26/css3-bordes-redondeados-inversos-casi-perfectos/</link>
		<comments>http://bredebs.net/2011/11/26/css3-bordes-redondeados-inversos-casi-perfectos/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 07:37:59 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=1041</guid>
		<description><![CDATA[Para un proyecto que estoy trabajando con los buenos amigos de Nuz Estudio me tocó trabajar con bordes redondeados inversos&#8230; algo así lo típico es realizarlo con imágenes y ajustarlo con position absolute con 2 divs y macramé extras, pero en css es algo un poquito más complejo [y también un poquitito más entretenido de [...]]]></description>
			<content:encoded><![CDATA[<p>Para un proyecto que estoy trabajando con los buenos amigos de <a title="Nuz Estudio" href="http://nuz.cl" target="_blank">Nuz Estudio</a> me tocó trabajar con bordes redondeados inversos&#8230; algo así</p>
<p><a href="http://bredebs.net/wp-content/uploads/2011/11/Screenshot-2011-11-26-04h-19m-53s.png" rel="lightbox[1041]" title="Screenshot 2011-11-26 04h 19m 53s"><img class="alignnone size-full wp-image-1042" title="Screenshot 2011-11-26 04h 19m 53s" src="http://bredebs.net/wp-content/uploads/2011/11/Screenshot-2011-11-26-04h-19m-53s.png" alt="" width="388" height="68" /></a></p>
<p>lo típico es realizarlo con imágenes y ajustarlo con position absolute con 2 divs y macramé extras, pero en css es algo un poquito más complejo [y también un poquitito más entretenido de armar]</p>
<p>La técnica <em>si es que le podemos llamar así</em> consiste en definir un div y sobre él aplicar otro con bordes redondeados, y además un box-shadow con el atributo inset para que sea &#8220;hacia dentro&#8221;, finalmente rotamos el div base para que la sombra quede arriba y dé la sensación que la curva continúa. Ojo, no es un ejemplo perfecto, y por el momento funciona sólo en Firefox [hay que aplicar las reglas CSS3 para los otros navegadores]</p>
<p><a title="Border Radius Invertido" href="http://lab.bredebs.net/bri/" target="_blank">Puedes ver el ejemplo final acá.</a></p>
<p>[Probablemente tengas que modificarlo un poquito cuando lo apliques en tu sitio, pero al menos ya tienes la lógica de cómo aplicarlo.</p>
<p>&nbsp;<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2011/11/26/css3-bordes-redondeados-inversos-casi-perfectos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Si los arquitectos trabajaran como desarrolladores de software</title>
		<link>http://bredebs.net/2011/09/30/si-los-arquitectos-trabajaran-como-desarrolladores-de-software/</link>
		<comments>http://bredebs.net/2011/09/30/si-los-arquitectos-trabajaran-como-desarrolladores-de-software/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 00:13:20 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=971</guid>
		<description><![CDATA[Ene 10, 2002 Por favor diseñe y construya una casa para mí. No estoy totalmente seguro de lo que necesito así que deberá usar su intuición. Mi casa deberá tener entre dos y cuarenta y cinco habitaciones. Es muy importante que se asegure de que sea posible incluir o eliminar habitaciones con facilidad. Cuando me [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Ene 10, 2002</p>
<p>Por favor diseñe y construya una casa para mí. No estoy totalmente seguro de lo que necesito así que deberá usar su intuición. Mi casa deberá tener entre dos y cuarenta y cinco habitaciones. Es muy importante que se asegure de que sea posible incluir o eliminar habitaciones con facilidad. Cuando me entregue los planos tomaré la decisión de lo que realmente quiero. Así mismo, necesitaré el costo de cada una de las configuraciones propuestas desglosado para poder tomar una decisión arbitraria.<br />
<span id="more-971"></span><br />
Tengan en cuenta que la casa que elija deberá costar menos que mi casa actual. Asegúrese de corregir las deficiencias existentes (el piso de la cocina vibra cuando paso por ahí y las paredes no tienen el aislamiento suficiente, por ejemplo.)</p>
<p>Mientras diseñe, deberá tener en mente que deseo mantener los costos de mantenimiento anuales lo más bajo posibles. Esto significa la inclusión de detalles de costo extra como aluminio, vinyl, etc. (Si elige no incluir aluminio, prepare una explicación detallada.)</p>
<p>Es importante que las nuevas prácticas en diseño y los más nuevos materiales sean usados en la construcción de la casa, pues me gustaría usarla como ejemplo de las más recientes ideas y métodos de construcción. Aún así, la cocina deberá ser diseñada para poder acomodar, entre otras cosas, mi Refrigerador Gibson de 1952.</p>
<p>Para asegurarnos de que está construyendo la casa adecuada para nuestra familia es importante que se mantenga en contacto con cada uno de nuestros hijos así como con nuestra familia extendida. Mi suegra tendrá sus propias opiniones acerca de cómo la casa deberá ser diseñada, ya que nos visita, por lo menos, una vez al año.</p>
<p>Asegúrese de encontrar el balance perfecto entre todas las opciones recibidas para poder llegar a la decisión correcta. Sin embargo, me reservo el derecho de nulificar cualquier elección que usted haga.</p>
<p>Por favor, no es necesario que me moleste con pequeños detalles en este momento. Su trabajo es el de desarrollar los planes generales para la casa. Por ejemplo, ahora no es tan importante el color de la alfombra; sin embargo, tenga en mente que mi esposa prefiere el azúl.</p>
<p>Así mismo, no necesita preocuparse acerca de los recursos para construir la casa. La prioridad número uno es el desarrollo de los planes detallados y las especificaciones. Una vez que sean aprobados, esperaría que la casa estuviera terminada en 48 horas.</p>
<p>Mientras esté en la fase de diseño, contemple que eventualmente querré vender la casa a alguien más. Es por esto que el diseño deberá de ser lo suficientemente genérico como para gustarle a la mayoría de los futuros clientes potenciales.</p>
<p>Antes de finalizar con la fase de diseño, es importante que se asegure que le agrade a la gran mayoría de la población cercana a mi casa. Le aconsejo que vaya a ver la casa de mi vecino, la cual fue construída el año pasado. Nos gusta muchísimo. Esa casa tiene muchas opciones que nos gustaría ver en la nuestra, particularmente la alberca de 75 pies. Con un buen diseño e ingeniería, creo que es posible construir una alberca similar sin afectar el costo final.</p>
<p>Por favor prepare un set completo de planos. No es necesario hacer el diseño real en este momento ya que sólo serán usados para cotizaciones y ejemplos. Sin embargo, tenga en consideración que usted será responsable por los costos de construcción causados por cambios en el diseño.</p>
<p>Debe usted sentirse afortunado de trabajar en un proyecto tan interesante como este. Poder utilizar las más recientes técnicas y materiales y, al mismo tiempo, tener tanta libertad para diseñar, es algo que no pasa muy seguido.</p>
<p>Contácteme lo antes posible con todas sus ideas y planes.</p>
<p>PD: Mi esposa no está de acuerdo con muchas de las instrucciones que le he dado en esta carta. Como arquitecto, es su responsabilidad resolver estas diferencias. Yo lo he intentado antes y he fracasado. Si usted no es capáz de tener esta responsabilidad, me veré obligado a encontrar a otro arquitecto.</p>
<p>PD2: Quizás lo que necesito no sea una casa, sino una casa rodante. Por favor, dígame lo antes posible si esto es lo que necesito.</p>
<p>–</p>
<p>Traducido de <a href="http://www.digitalsurvivors.com/archives/000455.php">If Architects Had to Work Like Web Designers</a></p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Obtenido desde <a href="http://www.paolavillarreal.name/2009/09/06/si-los-arquitectos-trabajaran-como-desarrolladores-de-software/" target="_blank">http://www.paolavillarreal.name/2009/09/06/si-los-arquitectos-trabajaran-como-desarrolladores-de-software/</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2011/09/30/si-los-arquitectos-trabajaran-como-desarrolladores-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress + Disqus = Código &#8220;feo&#8221; en las páginas</title>
		<link>http://bredebs.net/2011/09/01/wordpress-disqus-codigo-feo-en-las-paginas/</link>
		<comments>http://bredebs.net/2011/09/01/wordpress-disqus-codigo-feo-en-las-paginas/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 02:48:07 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=934</guid>
		<description><![CDATA[Si tienen disqus instalado en su WordPress y les aparece una pantalla así en sus slides, o loops: var disqus_shortname = &#039;bredebs&#039;; var disqus_domain = &#039;disqus.com&#039;; (function () { var nodes = document.getElementsByTagName(&#039;span&#039;); for (var i = 0, url; i &#60; nodes.length; i++) { if (nodes[i].className.indexOf(&#039;dsq-postid&#039;) != -1) { nodes[i].parentNode.setAttribute(&#039;data-disqus-identifier&#039;, nodes[i].getAttribute(&#039;rel&#039;)); url = nodes[i].parentNode.href.split(&#039;#&#039;, 1); [...]]]></description>
			<content:encoded><![CDATA[<p>Si tienen disqus instalado en su WordPress y les aparece una pantalla así en sus slides, o loops:</p>
<div id="attachment_935" class="wp-caption alignnone" style="width: 310px"><a href="http://bredebs.net/wp-content/uploads/2011/09/Screenshot-2011-09-01-23h-26m-16s.png" rel="lightbox[934]" title="Error WordPress + Disqus"><img class="size-medium wp-image-935" title="Error WordPress + Disqus" src="http://bredebs.net/wp-content/uploads/2011/09/Screenshot-2011-09-01-23h-26m-16s-300x117.png" alt="Error WordPress + Disqus" width="300" height="117" /></a><p class="wp-caption-text">Error WordPress + Disqus</p></div>
<p><span id="more-934"></span></p>
<pre class="brush: js">

var disqus_shortname = &#039;bredebs&#039;;
var disqus_domain = &#039;disqus.com&#039;;
(function () {
var nodes = document.getElementsByTagName(&#039;span&#039;);
for (var i = 0, url; i &lt; nodes.length; i++) {
if (nodes[i].className.indexOf(&#039;dsq-postid&#039;) != -1) {
nodes[i].parentNode.setAttribute(&#039;data-disqus-identifier&#039;, nodes[i].getAttribute(&#039;rel&#039;));
url = nodes[i].parentNode.href.split(&#039;#&#039;, 1);
if (url.length == 1) { url = url[0]; }
else { url = url[1]; }
nodes[i].parentNode.href = url + &#039;#disqus_thread&#039;;
}
}
var s = document.createElement(&#039;script&#039;); s.async = true;
s.type = &#039;text/javascript&#039;;
s.src = &#039;http://&#039; + disqus_domain + &#039;/forums/&#039; + disqus_shortname + &#039;/count.js&#039;;
(document.getElementsByTagName(&#039;HEAD&#039;)[0] || document.getElementsByTagName(&#039;BODY&#039;)[0]).appendChild(s);
}());
</pre>
<p>Pueden solucionarlo de la siguiente manera:<br />
En el archivo disqus.php [/{ruta a tu public_htm}/wp-content/plugins/disqus-comment-system/disqus.php]<br />
línea 1063, agrega:</p>
<pre class="brush: php">
if(get_bloginfo(&quot;home&quot;).&quot;/&quot;==curPageURL())
return ;
</pre>
<p>Además en el functions.php de tu theme disqus.php [/{ruta a tu public_html}/wp-content/themes/{nombre de tu theme}/functions.php]<br />
agrega:</p>
<pre class="brush: php">
function curPageURL() {
$pageURL = &#039;http&#039;;
if ($_SERVER[&quot;HTTPS&quot;] == &quot;on&quot;) {
$pageURL .= &quot;s&quot;;
}
$pageURL .= &quot;://&quot;;
if ($_SERVER[&quot;SERVER_PORT&quot;] != &quot;80&quot;) {
$pageURL .= $_SERVER[&quot;SERVER_NAME&quot;] . &quot;:&quot; . $_SERVER[&quot;SERVER_PORT&quot;] . $_SERVER[&quot;REQUEST_URI&quot;];
} else {
$pageURL .= $_SERVER[&quot;SERVER_NAME&quot;] . $_SERVER[&quot;REQUEST_URI&quot;];
}
return $pageURL;
}
</pre>
<p>Lamentablemente esto debes realizarlo cada vez que actualices tu disqus [se "dispara" automáticamente en cada lectura del loop de WordPress]</p>
<p>Hay otra opción que en teoría debería funcionar, y es agregar en el mismo archivo disqus.php y en la misma línea:</p>
<pre class="brush: php">
if(is_home() || is_front_page())
return ;
</pre>
<p>Pero lamentablemente no funciona siempre<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2011/09/01/wordpress-disqus-codigo-feo-en-las-paginas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress: Obtener nombre del Tag por su ID</title>
		<link>http://bredebs.net/2011/02/27/wordpress-obtener-nombre-del-tag-por-su-id/</link>
		<comments>http://bredebs.net/2011/02/27/wordpress-obtener-nombre-del-tag-por-su-id/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 18:52:34 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=726</guid>
		<description><![CDATA[Por error de WordPress no puedo cargar la función directamente acá, descárgarla desde este .txt]]></description>
			<content:encoded><![CDATA[<p>Por error de WordPress no puedo cargar la función directamente acá, descárgarla desde este <a href="http://bredebs.net/wp-content/uploads/2011/02/get_tag_name.txt">.txt</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2011/02/27/wordpress-obtener-nombre-del-tag-por-su-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Función PHP para ordenar un arreglo por una columna</title>
		<link>http://bredebs.net/2010/12/31/funcion-php-para-ordenar-un-arreglo-por-una-columna/</link>
		<comments>http://bredebs.net/2010/12/31/funcion-php-para-ordenar-un-arreglo-por-una-columna/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 16:38:20 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=713</guid>
		<description><![CDATA[&#60;?php function array_sort($array, $on, $order=SORT_ASC) { $new_array = array(); $sortable_array = array(); if (count($array) &#62; 0) { foreach ($array as $k =&#62; $v) { if (is_array($v)) { foreach ($v as $k2 =&#62; $v2) { if ($k2 == $on) { $sortable_array[$k] = $v2; } } } else { $sortable_array[$k] = $v; } } switch ($order) { [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: php">

&lt;?php

function array_sort($array, $on, $order=SORT_ASC) {
$new_array = array();
$sortable_array = array();
if (count($array) &gt; 0) {
foreach ($array as $k =&gt; $v) {
if (is_array($v)) {
foreach ($v as $k2 =&gt; $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k =&gt; $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}

?&gt;
</pre>
<p>Visto <a href="http://www.php.net/manual/en/function.sort.php#99419" target="_blank">acá</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2010/12/31/funcion-php-para-ordenar-un-arreglo-por-una-columna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Probablemente La Mejor] Función para Redimensionar Imágenes en WordPress</title>
		<link>http://bredebs.net/2010/12/23/probablemente-la-mejor-funcion-para-redimensionar-imagenes-en-wordpress/</link>
		<comments>http://bredebs.net/2010/12/23/probablemente-la-mejor-funcion-para-redimensionar-imagenes-en-wordpress/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 13:26:59 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=710</guid>
		<description><![CDATA[Probablemente ésta sea LA MEJOR función para redimensionar imágenes en WordPress, lo mejor es que la incluyes directamente en tu functions.php y la cargas tan simple como: if (has_post_thumbnail ()) { $image_id = get_post_thumbnail_id(); $image = vt_resize($image_id, &#039;&#039;, 250, 250, true, 100); echo &#039;&#60;img src=&#34;&#039; . $image[&#34;&#62;&#039;; } Aunque le apliqué una mejora ínfima que [...]]]></description>
			<content:encoded><![CDATA[<p>Probablemente <a href="http://core.trac.wordpress.org/ticket/15311" target="_blank">ésta</a> sea LA MEJOR función para redimensionar imágenes en WordPress, lo mejor es que la incluyes directamente en tu functions.php y la cargas tan simple como:</p>
<div style="clear:both;"></div>
<pre class="brush: php">

if (has_post_thumbnail ()) {
$image_id = get_post_thumbnail_id();
$image = vt_resize($image_id, &#039;&#039;, 250, 250, true, 100);
echo &#039;&lt;img src=&quot;&#039; . $image[&quot;&gt;&#039;;
}
</pre>
<p>Aunque le apliqué una mejora ínfima que permite ajustar la calidad de la imagen redimensionada, por lo que quedaría algo así</p>
<pre class="brush: php">

/*
* Resize images dynamically using wp built in functions
* Victor Teixeira
*
* php 5.2+
*
* Exemplo de uso:
*
* &lt;?php
* $thumb = get_post_thumbnail_id();
* $image = vt_resize( $thumb, &#039;&#039;, 140, 110, true, 90 );
* ?&gt;
* &lt;img src=&quot;&lt;?php echo $image[url]; ?&gt;&quot; width=&quot;&lt;?php echo $image[width]; ?&gt;&quot; height=&quot;&lt;?php echo $image[height]; ?&gt;&quot; /&gt;
*
* @param int $attach_id
* @param string $img_url
* @param int $width
* @param int $height
* @param bool $crop
* @param int $quality default: 90
* @return array
*/
function vt_resize($attach_id = null, $img_url = null, $width, $height, $crop = false, $quality=90) {
// this is an attachment, so we have the ID
if ($attach_id) {
$image_src = wp_get_attachment_image_src($attach_id, &#039;full&#039;);
$file_path = get_attached_file($attach_id);
// this is not an attachment, let&#039;s use the image url
} else if ($img_url) {

$file_path = parse_url($img_url);
$file_path = $_SERVER[&#039;DOCUMENT_ROOT&#039;] . $file_path[&#039;path&#039;];

//$file_path = ltrim( $file_path[&#039;path&#039;], &#039;/&#039; );
//$file_path = rtrim( ABSPATH, &#039;/&#039; ).$file_path[&#039;path&#039;];

$orig_size = getimagesize($file_path);

$image_src[0] = $img_url;
$image_src[1] = $orig_size[0];
$image_src[2] = $orig_size[1];
}

$file_info = pathinfo($file_path);

$extension = &#039;.&#039; . $file_info[&#039;extension&#039;];

// the image path without the extension
$no_ext_path = $file_info[&#039;dirname&#039;] . &#039;/&#039; . $file_info[&#039;filename&#039;];

$cropped_img_path = $no_ext_path . &#039;-&#039; . $width . &#039;x&#039; . $height . $extension;

// checking if the file size is larger than the target size
// if it is smaller or the same size, stop right here and return
if ($image_src[1] &gt; $width || $image_src[2] &gt; $height) {

// the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
if (file_exists($cropped_img_path)) {

$cropped_img_url = str_replace(basename($image_src[0]), basename($cropped_img_path), $image_src[0]);

$vt_image = array(
&#039;url&#039; =&gt; $cropped_img_url,
&#039;width&#039; =&gt; $width,
&#039;height&#039; =&gt; $height
);

return $vt_image;
}

// $crop = false
if ($crop == false) {

// calculate the size proportionaly
$proportional_size = wp_constrain_dimensions($image_src[1], $image_src[2], $width, $height);
$resized_img_path = $no_ext_path . &#039;-&#039; . $proportional_size[0] . &#039;x&#039; . $proportional_size[1] . $extension;

// checking if the file already exists
if (file_exists($resized_img_path)) {

$resized_img_url = str_replace(basename($image_src[0]), basename($resized_img_path), $image_src[0]);

$vt_image = array(
&#039;url&#039; =&gt; $resized_img_url,
&#039;width&#039; =&gt; $proportional_size[0],
&#039;height&#039; =&gt; $proportional_size[1]
);

return $vt_image;
}
}

// no cache files - let&#039;s finally resize it
$new_img_path = image_resize($file_path, $width, $height, $crop, $quality);
$new_img_size = getimagesize($new_img_path);
$new_img = str_replace(basename($image_src[0]), basename($new_img_path), $image_src[0]);

// resized output
$vt_image = array(
&#039;url&#039; =&gt; $new_img,
&#039;width&#039; =&gt; $new_img_size[0],
&#039;height&#039; =&gt; $new_img_size[1]
);

return $vt_image;
}

// default output - without resizing
$vt_image = array(
&#039;url&#039; =&gt; $image_src[0],
&#039;width&#039; =&gt; $image_src[1],
&#039;height&#039; =&gt; $image_src[2]
);

return $vt_image;
}
</pre>
<p>100% recomendada =)</p>
<p>Saludos<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2010/12/23/probablemente-la-mejor-funcion-para-redimensionar-imagenes-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desencriptar librerías javascript codificadas con dF()</title>
		<link>http://bredebs.net/2010/12/07/desencriptar-librerias-javascript-codificadas-con-df/</link>
		<comments>http://bredebs.net/2010/12/07/desencriptar-librerias-javascript-codificadas-con-df/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 15:57:55 +0000</pubDate>
		<dc:creator>BredeBS</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[dF()]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://bredebs.net/?p=702</guid>
		<description><![CDATA[La piratería hace mal para el bolsillo de los informáticos. Pero también sucede que cuando necesitas comprar una libreria TIENES que ver que el código fuente sea EXTENSIBLE y ENTENDIBLE, por lo cuál no es llegar y comprar a tontas y a locas. Para ello puedes desencriptar las librerías que deseas adquirir. Sigue este tutorial [...]]]></description>
			<content:encoded><![CDATA[<p><strong>La piratería hace mal para el bolsillo de los informáticos.</strong></p>
<p>Pero también sucede que cuando necesitas comprar una libreria <strong>TIENES</strong> que ver que el código fuente sea <strong>EXTENSIBLE</strong> y <strong>ENTENDIBLE</strong>, por lo cuál no es llegar y comprar a tontas y a locas. Para ello puedes desencriptar las librerías que deseas adquirir.</p>
<p>Sigue este tutorial <a href="http://blog.eexit.net/2010/10/javascript-decoder-les-fichiers-encodes-avec-df.html" target="_blank">en Francés</a> [<a href="http://translate.google.com/translate?hl=es&amp;sl=auto&amp;tl=es&amp;u=http%3A%2F%2Fblog.eexit.net%2F2010%2F10%2Fjavascript-decoder-les-fichiers-encodes-avec-df.html">Traducido al español para los huasos</a>, <em>como yo</em>]<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://bredebs.net/2010/12/07/desencriptar-librerias-javascript-codificadas-con-df/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

