<?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>Informática &#8211; MarcosBL</title>
	<atom:link href="https://blog.marcosbl.com/area/informatica/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.marcosbl.com</link>
	<description>Maestro de nada</description>
	<lastBuildDate>Sun, 27 Nov 2016 00:37:01 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.marcosbl.com/assets/cropped-avatar-32x32.png</url>
	<title>Informática &#8211; MarcosBL</title>
	<link>https://blog.marcosbl.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Tu servicio DynDNS bajo tu propio dominio</title>
		<link>https://blog.marcosbl.com/servicio-dyndns-propio-dominio/2476/</link>
					<comments>https://blog.marcosbl.com/servicio-dyndns-propio-dominio/2476/#comments</comments>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Sun, 27 Nov 2016 00:36:30 +0000</pubDate>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Sistemas]]></category>
		<guid isPermaLink="false">https://marcosbl.com/blog/?p=2476</guid>

					<description><![CDATA[<p class="lead">Cuando tengo que trabajar con IPs dinámicas, por lo general utilizo los servicios de https://freedns.afraid.org/ para todas mis necesidades de hosts/dominios. Tienen un subdominio muy corto (xxx.us.to) que me resulta agradable, el servicio es gratuito, y lleva un montón de años dando batalla de forma fiable. Sin embargo, puede que te salte la necesidad de hacer esto mismo bajo tu&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/servicio-dyndns-propio-dominio/2476/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.marcosbl.com/assets/1-6.png" alt="1" width="200" height="200" class="alignright size-full wp-image-2483" srcset="https://blog.marcosbl.com/assets/1-6.png 200w, https://blog.marcosbl.com/assets/1-6-150x150.png 150w" sizes="(max-width: 200px) 100vw, 200px" />Cuando tengo que trabajar con IPs dinámicas, por lo general utilizo los servicios de <a href="https://freedns.afraid.org/" target="_blank">https://freedns.afraid.org/</a> para todas mis necesidades de hosts/dominios. Tienen un subdominio muy corto (xxx.us.to) que me resulta agradable, el servicio es gratuito, y lleva un montón de años dando batalla de forma fiable.</p>
<p>Sin embargo, puede que te salte la necesidad de hacer esto mismo bajo tu propio dominio, aunque solo sea por el detalle de branding de poder ofrecer subdominios del tipo <b>cliente1.tudominio.com</b>, <b>cliente2.tudominio.com</b>, <b>tucasa.tudominio.com</b>, etc&#8230; si esto es así, y <a href="https://www.ovh.es/dominios/" target="_blank"><strong>tienes tu dominio en OVH</strong></a>, estás de suerte, sigue leyendo. Si no es así, conmino a <a href="http://blog.e-shell.org/" target="_blank">Mr. Wu</a> a hacerse un post compartiendo su solución bind-based ;) (o siempre puedes gastarte unos eurillos al año en mantener un dominio en OVH para este menester).</p>
<h2>Creación del subdominio y usuario en el panel de OVH</h2>
<p>Elegimos nuestro dominio desde el panel de control de cliente de OVH, y vamos a la pestaña <b>DynHost</b>, donde creamos un DynHost y un usuario de control para gestionarlo</p>
<p><img fetchpriority="high" decoding="async" src="https://blog.marcosbl.com/assets/1-2.png" alt="1" width="959" height="412" class="aligncenter size-full wp-image-2477" srcset="https://blog.marcosbl.com/assets/1-2.png 959w, https://blog.marcosbl.com/assets/1-2-500x215.png 500w" sizes="(max-width: 959px) 100vw, 959px" /></p>
<p>En el subdominio, introducimos el <b>nombre (subdominio)</b> deseado, en la IP, <b>1.1.1.1</b> (nos permitirá comprobar luego que el actualizador funciona correctamente)</p>
<p><img decoding="async" src="https://blog.marcosbl.com/assets/1-3.png" alt="1" width="582" height="539" class="aligncenter size-full wp-image-2478" srcset="https://blog.marcosbl.com/assets/1-3.png 582w, https://blog.marcosbl.com/assets/1-3-324x300.png 324w" sizes="(max-width: 582px) 100vw, 582px" /></p>
<p>A continuación, creamos un usuario, desde <i>Gestionar los accesos &#8211; Crear un usuario</i>, este tendrá la forma <b>midominio.com-loquequieras</b> y tu <b>contraseña</b>. También podremos asignar si ese usuario puede gestionar un único subdominio concreto, o todos <b>(con *)</b>. Si solo vamos a configurar máquinas propias, elegimos esta última opción. Si no, creamos un usuario por cliente, por ejemplo, para mantener la privacidad de nuestra contraseña.</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/1-4.png" alt="1" width="583" height="586" class="aligncenter size-full wp-image-2479" srcset="https://blog.marcosbl.com/assets/1-4.png 583w, https://blog.marcosbl.com/assets/1-4-150x150.png 150w, https://blog.marcosbl.com/assets/1-4-298x300.png 298w" sizes="auto, (max-width: 583px) 100vw, 583px" /></p>
<p>Con esto ya tenemos nuestro host configurado, con una IP falsa, como podemos ver en esta imagen:</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/YRheD73.png" alt="1" width="730" height="132" class="aligncenter size-full wp-image-2481" srcset="https://blog.marcosbl.com/assets/YRheD73.png 730w, https://blog.marcosbl.com/assets/YRheD73-500x90.png 500w" sizes="auto, (max-width: 730px) 100vw, 730px" /></p>
<h2>Actualización programada del host</h2>
<p>Es hora de irnos a nuestra máquina cliente y configurarla para actualizar esta IP a la real. Obviamente el método dependerá mucho de si es una máquina Windows (tarea programada con wget por ejemplo) o Linux (un simple cron con wget).</p>
<p>El protocolo de OVH es compatible con el de <a href="http://Dyndns.org" target="_blank">Dyndns.org</a> , y en su página de <a href="http://guias.ovh.es/DynDns" target="_blank">guías sobre DynHosts</a> ofrecen varios métodos y softwares para actualizar esta IP. Sin embargo, me han parecido anacrónicos y complejos, teniendo en cuenta que el propio OVH te ofrece una URL de actualización genial para realizar esta misma labor con un <b>curl básico</b>:</p>
<pre class='prettyprint lang-default-markup'>curl --user "tudominio.com-usuario:contraseña" "https://www.ovh.com/nic/update?system=dyndns&hostname=micasa.tudominio.com"</pre>
<p><strong>¡Y eso es todo!</strong> Una única petición con tu usuario y contraseña recién creados, y el subdominio/dominio que quieres actualizar. Basta con añadirla al cron cada 10 minutillos, y listo, ya tenemos nuestro propio servicio DynDNS bajo nuestro propio dominio. Podemos comprobar tras lanzar el comando, que en el panel de OVH ya nos figura la nueva IP, y esta es perfectamente funcional:</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/1-5.png" alt="1" width="709" height="132" class="aligncenter size-full wp-image-2482" srcset="https://blog.marcosbl.com/assets/1-5.png 709w, https://blog.marcosbl.com/assets/1-5-500x93.png 500w" sizes="auto, (max-width: 709px) 100vw, 709px" /></p>
<p>Kudos a mi <i>viciño</i> <a href="https://oscarmlage.com/" target="_blank">Oscar M. Lage</a>, culpable inspirador de este post, y a los amiguetes de <a href="http://ovh_es" target="_blank"><strong>@ovh_es</strong></a></p>
<h2>Have fun!</h2>
<p><img decoding="async" src="https://i.imgur.com/r6aJJxj.gif" alt="" class="aligncenter size-full"/></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.marcosbl.com/servicio-dyndns-propio-dominio/2476/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Problemas de sincronización (timeout) con el cliente de escritorio de Owncloud</title>
		<link>https://blog.marcosbl.com/problemas-sincronizacion-cliente-escritorio-owncloud/2461/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Fri, 01 Jul 2016 10:09:10 +0000</pubDate>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Software Libre]]></category>
		<guid isPermaLink="false">https://marcosbl.com/blog/?p=2461</guid>

					<description><![CDATA[<p class="lead">Esta semana uno de mis clientes ha tenido problemas con el cliente de escritorio de Owncloud, que indicaba en los iconos de carpeta un estado de no sincronización, cuando los ficheros estaban efectivamente subidos al servidor. Tras un diagnóstico rápido, el problema resultó ser simplemente la velocidad de subida de la línea: al subir archivos grandes, en la localización en&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/problemas-sincronizacion-cliente-escritorio-owncloud/2461/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/nbezix.jpg" alt="Status" width="337" height="433" class="alignright size-full wp-image-2463" />Esta semana uno de mis clientes ha tenido problemas con el cliente de escritorio de <strong><a href="https://owncloud.org/" target="_blank">Owncloud</a></strong>, que indicaba en los iconos de carpeta un estado de <strong>no sincronización</strong>, cuando los ficheros estaban efectivamente subidos al servidor. </p>
<p>Tras un diagnóstico rápido, el problema resultó ser simplemente <strong>la velocidad de subida de la línea</strong>: al subir archivos grandes, en la localización en que se encontraba con su portátil, y debido a la escasa velocidad de subida de que disponía, el servidor <strong>MySQL daba un timeout</strong> con el cliente de escritorio. </p>
<p>Los ficheros de alrededor de 3Mb y superiores presentaban casi todos este problema, salvo un par mayores que sí habían subido bien, lo que me tuvo algo confundido durante un rato. Sin embargo, lo más probable es que le pillase conectado en otro sitio cuando los subió, mientras que los que estaban dando problemas le cogieron en esta nueva localización, provocando el problema.</p>
<p>La solución es sencilla, basta con configurar una variable de entorno del sistema operativo, <strong>OWNCLOUD_CHUNK_SIZE=1048576</strong> para hacer que suba los ficheros en trozos más pequeños, y así acabar con los timeouts, haciendo que pueda completar las subidas sin problema.</p>
<p>En cada sistema operativo se cambian las variables de entorno de una forma diferente, pero dejo unas instrucciones sencillas para usuarios de Windows, que seguramente son los que menos hayan «trasteado» con estas opciones.</p>
<h2>Proceso de configuración, para que te quede documentado</h2>
<ul>
<li>Botón derecho sobre <strong>Mi PC</strong> (icono «Este equipo» del escritorio en Windows 10)</li>
<li><strong>Propiedades</strong></li>
<li>Menú izquierdo «<strong>Configuración avanzada del sistema</strong>«</li>
<li>Botón «<strong>Variables de entorno</strong>«</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/1-1.png" alt="Pasos" width="697" height="705" class="aligncenter size-full wp-image-2462" srcset="https://blog.marcosbl.com/assets/1-1.png 697w, https://blog.marcosbl.com/assets/1-1-297x300.png 297w" sizes="auto, (max-width: 697px) 100vw, 697px" /></p>
<ul>
<li>Una vez ahí pulsamos «<strong>Nueva</strong>«</li>
<li>Introducimos la variable <strong>OWNCLOUD_CHUNK_SIZE</strong></li>
<li>Introducimos su valor <strong>1048576</strong></li>
<li>Pulsamos <strong>«Aceptar»</strong> hasta cerrar todas las ventanas</li>
</ul>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/2.png" alt="Pasos" width="672" height="612" class="aligncenter size-full wp-image-2463" srcset="https://blog.marcosbl.com/assets/2.png 672w, https://blog.marcosbl.com/assets/2-329x300.png 329w" sizes="auto, (max-width: 672px) 100vw, 672px" /></p>
<p>Ya podemos <strong>cerrar y volver a abrir</strong> el cliente de escritorio de Owncloud, y el problema estará resuelto.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Entorno de trabajo administrativo integrado para desarrolladores sobre Owncloud</title>
		<link>https://blog.marcosbl.com/entorno-trabajo-administrativo-integrado-desarrolladores-owncloud/2403/</link>
					<comments>https://blog.marcosbl.com/entorno-trabajo-administrativo-integrado-desarrolladores-owncloud/2403/#comments</comments>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Thu, 04 Feb 2016 03:17:33 +0000</pubDate>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Negocios]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[feedly]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[owncloud]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[toggl]]></category>
		<category><![CDATA[wiki]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2403</guid>

					<description><![CDATA[<p class="lead">Un poco de historia Con el paso del tiempo y los clientes, todo freelance va poco a poco puliendo su forma de trabajar, asi como sus herramientas. En el caso del sector de desarrollo web, por lo general, más aún, ya que una gran cantidad de día la pasamos frente al ordenador, que no es sólo nuestra herramienta organizativa, sino&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/entorno-trabajo-administrativo-integrado-desarrolladores-owncloud/2403/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<h2>Un poco de historia</h2>
<p>Con el paso del tiempo y los clientes, todo freelance va poco a poco puliendo su forma de trabajar, asi como sus herramientas. En el caso del sector de desarrollo web, por lo general, más aún, ya que una gran cantidad de día la pasamos frente al ordenador, que no es <a href="https://twitter.com/perezreverte/status/676072076130807808" target="_blank">sólo</a> nuestra herramienta organizativa, sino también productiva.</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/Overwhelmed-by-Emails.jpg" alt="Overwhelmed-by-Emails" width="200" height="230" class="alignright size-full wp-image-2438" />Uno de los <strong>errores</strong> laborales que yo <strong>he cometido de forma reincidente</strong> ha sido el no prestar suficiente atención a la documentación, test y mejora de este entorno de trabajo. Y no hablo ahora de mercurial/git, sublimetext/atom o debian/centos, elecciones que muchas veces tienen más de sentimental/convicciones que de trasfondo práctico. Me refiero al entorno organizativo del día a día, relaciones con clientes, documentación, citas, información de tu sector, etc&#8230;</p>
<p>Empiezas gestionando todo con el <strong>correo</strong>. Carpetas IMAP, adjuntos, etiquetas como mucho: no necesitas más.</p>
<p>Luego pasas por la fiebre «<strong>cloud</strong>«, servicios SaaS que prometen organizar mejor tu dia a dia, hacerte más eficiente y productivo, relegar la procrastinación; en definitiva, hacerte un mejor profesional. </p>
<p><img loading="lazy" decoding="async" class="alignright size-full wp-image-2404" src="https://blog.marcosbl.com/assets/cloud.png" alt="" width="325" height="262" srcset="https://blog.marcosbl.com/assets/cloud.png 325w, https://blog.marcosbl.com/assets/cloud-300x242.png 300w" sizes="auto, (max-width: 325px) 100vw, 325px" />Aquí empieza un largo periplo de altas, trials, configuraciones, demos, screencast y demás, hasta que acabas encontrando el servicio «perfecto»: ese donde, aunque tienes que cambiar completamente tu forma de trabajar, te encuentras a gusto.</p>
<p>Porque no existe el «<em>SaaS que se adapta a tu forma de trabajar</em>«. Qué va: te adaptas tú, en mayor o menor grado, seas más o menos consciente. Al igual que <strong>no existe el «Cloud»: son los ordenadores de otros.</strong></p>
<p>Y al final acabas por decidir que quieres <strong>hacerte tu propio monstruito</strong>, para tener todo alojado bajo tu control, sin sorpresas, y pudiendo intercambiar piezas sin demasiado problema&#8230; que es el motivo de este post, y por lo que probablemente estés leyendo esto.</p>
<p>En un primer intento por integrar mi entorno de trabajo definí estas premisas:</p>
<p><strong>Alternativa libre a Dropbox</strong> <span class="label label-success">hecho</span></p>
<ul>
<li>Sincronización automática de archivos para poder trabajar de forma offline entre todos mis PCs y mi móvil, bajo cualquier SO <span class="label label-success">hecho</span></li>
</ul>
<p><strong>Alternativa libre a Office / Wiki</strong> <span class="label label-primary">al 90%</span></p>
<ul>
<li>Tener toda la documentación en un formato no propietario y de fácil edición <span class="label label-primary">casi, falta soporte hojas de cálculo/presentaciones, subsanado con Google Docs</span></li>
<li>No estar atado a tener que disponer de un editor concreto instalado en un PC <span class="label label-success">hecho</span></li>
<li>Poder no solo leer, sino editar la documentación tanto en local como en web <span class="label label-success">hecho</span></li>
<li>Poder disponer de mi documentación en cualquier lugar, incluido el móvil <span class="label label-success">hecho</span></li>
<li>Disponer de versionado de los archivos <span class="label label-success">hecho</span></li>
</ul>
<p><strong>Alternativa libre a Outlook/Google </strong> <span class="label label-success">hecho</span></p>
<ul>
<li>Disponer de calendarios/tareas sincronizados entre Web/PC (Thunderbird)/Android <span class="label label-success">hecho</span></li>
<li>Disponer de correo electrónico sincronizado entre Web/PC (Thunderbird)/Android <span class="label label-success">hecho</span></li>
</ul>
<p><strong>Alternativa libre a RSS Feedly</strong> <span class="label label-success">hecho</span></p>
<ul>
<li>Acceso a lector de feeds RSS sincronizado Web/Móvil <span class="label label-success">hecho</span></li>
</ul>
<p><strong>Alternativa libre a Bitbuket/Github</strong> <span class="label label-success">hecho</span></p>
<ul>
<li>Mantener un sistema de control de versiones, pero con repos privados/públicos a mi elección, con una interfaz web ágil y simple, y alojado bajo mi control. Debe tener además al menos Wiki e Issues, y estar en castellano, para que los clientes puedan entrar a declarar incidencias.<span class="label label-success">hecho</span></li>
</ul>
<p><strong>Para todo lo demás&#8230;</strong> <span class="label label-success">hecho</span></p>
<ul>
<li>Fácil acceso a las herramientas de terceros para las que aún no dispongo de alternativa self-hosted (Toggl, Google docs, etc&#8230;) <span class="label label-success">hecho</span></li>
</ul>
<h2>Stack base, Owncloud sustituye a Dropbox, Office y Wiki</h2>
<p>Tras probar varios entornos integrados, y descartarlos por uno u otro motivo, decidí fijar como componente principal <a target="_blank" href="https://owncloud.org/">Owncloud</a>, ya que daba solución a la mitad de los requisitos de mi lista, admitía plugins para poder en un futuro ampliar funcionalidades faltantes, y es un producto con un historial largo y con montones de colaboradores.</p>
<p><a href="http://blog.marcosbl.com/assets/docs.jpg" rel="attachment wp-att-2421"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/docs-500x295.jpg" alt="docs" width="500" height="295" class="aligncenter size-medium wp-image-2421" srcset="https://blog.marcosbl.com/assets/docs-500x295.jpg 500w, https://blog.marcosbl.com/assets/docs.jpg 1024w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Realicé una instalación básica con paquete en un <a href="https://www.ovh.es/vps/vps-ssd.xml" target="_blank">servidor VPS de OVH de 2.99€ / mes</a> con estos specs: KVM OpenStack &#8211; 1 vCore 2,4 GHz &#8211; 2 GB RAM &#8211; SSD 10 GB &#8211; RAID 10 local</p>
<p>El sistema base es una Ubuntu 14.04, sobre ella instalé Apache, PHP5 y MySQL para dar soporte a Owncloud y demás servicios, así como los clásicos Bind, Postfix, Dovecot, etc&#8230; pero realmente cualquier instalación base o panel de control servirían perfectamente al efecto.</p>
<p>Los plugins elegidos fueron:</p>
<ul>
<li><strong>Activity</strong> &#8211; Me permite ver un log de la última actividad, ficheros subidos, eliminados, etc</li>
<li><strong>Deleted files</strong> &#8211; Papelera temporal de la que poder rescatar ficheros eliminados por error</li>
<li><strong>Documents</strong> &#8211; Nos permite editar online ficheros .odt de OpenOffice/LibreOffice. Las hojas de cálculo están aún en camino, seguiré usando entre tanto Google Docs</li>
</ul>
<p><a href="http://blog.marcosbl.com/assets/odt.jpg" rel="attachment wp-att-2420"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/odt-500x238.jpg" alt="odt" width="500" height="238" class="aligncenter size-medium wp-image-2420" srcset="https://blog.marcosbl.com/assets/odt-500x238.jpg 500w, https://blog.marcosbl.com/assets/odt-1024x487.jpg 1024w, https://blog.marcosbl.com/assets/odt.jpg 1351w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<ul>
<li><strong>Gallery y Video Viewer</strong> &#8211; Visualización a un click en lightbox, así como en galerías ordenadas automáticamente, de nuestras imágenes y videos</li>
<li><strong>PDF Viewer</strong> &#8211; El nombre lo dice todo, no requiere plugin PDF de navegador</li>
<li><strong>Share Files </strong>&#8211; Compartir de una y mil formas los archivos y carpetas de nuestro Owncloud, definiendo permisos, etc&#8230;</li>
<li><strong>Versions</strong> &#8211; Añade versionado de archivos a nuestro Owncloud, para poder volver a una versión anterior en caso de error</li>
<li><strong>External Sites</strong> &#8211; Nos permite asignar un nombre, una URL y un icono, y que aparezcan como menús dentro de Owncloud. Un click los abre, pero en un conveniente iframe inferior, para tener todo dentro de la misma interface. Asi es como he integrado los servicios que no incluye Owncloud, como por ejemplo enlaces a hojas de cálculo en Google Docs.</li>
<li><strong>Direct Menu</strong> &#8211; Complementa perfectamente al anterior, moviendo además nuestros iconos a una barra superior siempre visible y accesible a un click</li>
</ul>
<p><a href="http://blog.marcosbl.com/assets/gdocs.jpg" rel="attachment wp-att-2419"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/gdocs-479x300.jpg" alt="gdocs" width="479" height="300" class="aligncenter size-medium wp-image-2419" srcset="https://blog.marcosbl.com/assets/gdocs-479x300.jpg 479w, https://blog.marcosbl.com/assets/gdocs.jpg 1024w" sizes="auto, (max-width: 479px) 100vw, 479px" /></a></p>
<ul>
<li><strong>Text Editor</strong> &#8211; Permite editar ficheros de texto plano, html, etc, directamente desde la interfaz web. Es la base asimismo del Markdown Editor</li>
<li><strong>Markdown Editor</strong> &#8211; En combinación con el anterior, nos provee de edición de documentación markdown con vista previa instantánea en web</li>
</ul>
<p><a href="http://blog.marcosbl.com/assets/markdown.jpg" rel="attachment wp-att-2418"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/markdown-500x293.jpg" alt="markdown" width="500" height="293" class="aligncenter size-medium wp-image-2418" srcset="https://blog.marcosbl.com/assets/markdown-500x293.jpg 500w, https://blog.marcosbl.com/assets/markdown.jpg 1023w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p><a href="http://blog.marcosbl.com/assets/owncloud-movil.jpg" rel="attachment wp-att-2409"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/owncloud-movil-169x300.jpg" alt="owncloud-movil" width="169" height="300" class="alignright size-medium wp-image-2409" srcset="https://blog.marcosbl.com/assets/owncloud-movil-169x300.jpg 169w, https://blog.marcosbl.com/assets/owncloud-movil-576x1024.jpg 576w, https://blog.marcosbl.com/assets/owncloud-movil.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a>Hubiesen estado bien por la integración, pero descarté <strong>Calendar y Tasks</strong>, porque su funcionamiento es muy pobre, y preferí instalar aplicaciones de terceros con más funcionalidades y mejor testadas. Calendar, por ejemplo, no soporta recordatorios, y Tasks depende de Calendar.</p>
<p>Con este stack, más la aplicación móvil de Owncloud para Android, tenía ya <strong>sustituto para mi Wiki y para Dropbox</strong> (o más bien <a href="http://blog.marcosbl.com/la-nube-personal-tu-propio-dropbox-gratis-sin-limites-de-espacio-gracias-bittorrent-sync/2315/">BTSync</a>, que es lo que he estado utilizando el último año):</p>
<ul>
<li>Sincronización de archivos con cliente para todos los SO</li>
<li>Múltiples usuarios</li>
<li>Posibilidad de compartir carpetas</li>
<li>Visor de imágenes, videos, etc</li>
<li>Editor de ficheros de texto, odt y Markdown</li>
<li>Versionado de archivos</li>
</ul>
<h2>Calendarios y Tareas</h2>
<p>Para los calendarios, elegí instalar otra solución de la misma base (PHP+MySQL) <a target="_blank" href="http://baikal-server.com/">Baïkal</a>, un servidor ligero de CardDav (contactos) y CalDav (calendarios), de sencilla instalación en menos de 5 minutos, y con un panel de control extremadamente sencillo.</p>
<p><a href="http://blog.marcosbl.com/assets/baikal.jpg" rel="attachment wp-att-2417"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/baikal-500x250.jpg" alt="baikal" width="500" height="250" class="aligncenter size-medium wp-image-2417" srcset="https://blog.marcosbl.com/assets/baikal-500x250.jpg 500w, https://blog.marcosbl.com/assets/baikal.jpg 756w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Una vez creados mis calendarios, necesitaba visores/editores para los mismos, para lo que elegí:</p>
<p>Para <strong>escritorio</strong>, Linux/Windows, <a href="https://www.mozilla.org/es-ES/thunderbird/" target="_blank">Thunderbird</a> con el plugin <a href="https://addons.mozilla.org/es/thunderbird/addon/lightning/" target="_blank">Lightning</a></p>
<p><a href="http://blog.marcosbl.com/assets/Calendarios-Thunderbird.jpg" rel="attachment wp-att-2416"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/Calendarios-Thunderbird-488x300.jpg" alt="Calendarios-Thunderbird" width="488" height="300" class="aligncenter size-medium wp-image-2416" srcset="https://blog.marcosbl.com/assets/Calendarios-Thunderbird-488x300.jpg 488w, https://blog.marcosbl.com/assets/Calendarios-Thunderbird-1024x630.jpg 1024w, https://blog.marcosbl.com/assets/Calendarios-Thunderbird.jpg 1153w" sizes="auto, (max-width: 488px) 100vw, 488px" /></a></p>
<p>Para <strong>Android</strong>, los sincronizo en background con <a href="https://play.google.com/store/apps/details?id=at.bitfire.davdroid&#038;hl=es" target="_blank">DavDroid</a>, y los gestiono con <a href="https://play.google.com/store/apps/details?id=com.appgenix.bizcal&#038;hl=es" target="_blank">Business Calendar 2</a> (de pago, pero con un widget que vale millones) aunque cualquier otro serviría perfectamente</p>
<p><a href="http://blog.marcosbl.com/assets/Calendarios-Android.jpg" rel="attachment wp-att-2415"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/Calendarios-Android-351x300.jpg" alt="Calendarios - Android" width="351" height="300" class="aligncenter size-medium wp-image-2415" srcset="https://blog.marcosbl.com/assets/Calendarios-Android-351x300.jpg 351w, https://blog.marcosbl.com/assets/Calendarios-Android.jpg 1024w" sizes="auto, (max-width: 351px) 100vw, 351px" /></a></p>
<p>Como <strong>gestor web</strong>, instalé un lector de calendarios también muy ligero llamado <a href="http://agendav.org/" target="_blank">AgenDav 2</a>, con los mismos requisitos simples de PHP+MySQL, y que a diferencia del que integra Owncloud, soporta perfectamente recordatorios desde su interfaz.</p>
<p><a href="http://blog.marcosbl.com/assets/agendav.jpg" rel="attachment wp-att-2424"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/agendav-500x238.jpg" alt="agendav" width="500" height="238" class="aligncenter size-medium wp-image-2424" srcset="https://blog.marcosbl.com/assets/agendav-500x238.jpg 500w, https://blog.marcosbl.com/assets/agendav.jpg 1023w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Como se puede ver en la captura, AgenDav se muestra en un iframe inferior, dentro de Owncloud, a través de un enlace en la barra de menús, gracias al plugin «<strong>External sites</strong>» mencionado anteriormente. Usaré este mismo truco en el resto de servicios de terceros instalados en este setup.</p>
<h2>Correo electrónico</h2>
<p>Poco secreto en esto. Lo cierto es que incluso hay un par de pugins que integran webmails dentro de Owncloud, como <a href="http://www.rainloop.net/" target="_blank">Rainloop</a> o <a href="https://roundcube.net/" target="_blank">Roundcube</a>, pero en el momento de esta instalación ambos iban, al menos una version por detrás de la del paquete Owncloud.</p>
<p>Así que para evitar problemas, decidí prescindir de la integración (al fin y a cabo, esto no es un Groupware, sino una instalación personal) y tirar de una instalación embebida de <a href="http://www.afterlogic.org/" target="_blank">Afterlogic Webmail Lite</a>, que ya conozco y que da excelentes resultados.</p>
<p>10 minutos después, ya tenía el webmail, con soporte para <a href="https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)" target="_blank">filtros Sieve</a>, funcionando.</p>
<p><a href="http://blog.marcosbl.com/assets/owncoud-correo.jpg" rel="attachment wp-att-2425"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/owncoud-correo-500x238.jpg" alt="owncoud-correo" width="500" height="238" class="aligncenter size-medium wp-image-2425" srcset="https://blog.marcosbl.com/assets/owncoud-correo-500x238.jpg 500w, https://blog.marcosbl.com/assets/owncoud-correo.jpg 1023w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Por supuesto, integrar el correo en escritorio con Thunderbird o en Android es totalmente trivial, asi que no abundaré en ello, salvo quizá para recomendar el cliente <a href="https://play.google.com/store/apps/details?id=org.kman.AquaMail&#038;hl=es" target="_blank">Aqua Mail</a>: es de pago, pero una virguería ultrapersonalizable, y su desarrollador es un <strong>absoluto crack</strong>.</p>
<p><a href="http://blog.marcosbl.com/assets/correo-thunderbird.jpg" rel="attachment wp-att-2426"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/correo-thunderbird-488x300.jpg" alt="correo-thunderbird" width="488" height="300" class="aligncenter size-medium wp-image-2426" srcset="https://blog.marcosbl.com/assets/correo-thunderbird-488x300.jpg 488w, https://blog.marcosbl.com/assets/correo-thunderbird-1024x630.jpg 1024w, https://blog.marcosbl.com/assets/correo-thunderbird.jpg 1153w" sizes="auto, (max-width: 488px) 100vw, 488px" /></a></p>
<p><a href="http://blog.marcosbl.com/assets/correo-aqua-mail.jpg" rel="attachment wp-att-2427"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/correo-aqua-mail-500x281.jpg" alt="correo-aqua-mail" width="500" height="281" class="aligncenter size-medium wp-image-2427" srcset="https://blog.marcosbl.com/assets/correo-aqua-mail-500x281.jpg 500w, https://blog.marcosbl.com/assets/correo-aqua-mail-1024x576.jpg 1024w, https://blog.marcosbl.com/assets/correo-aqua-mail.jpg 1280w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<h2>Feeds RSS</h2>
<p>Soy un lector compulsivo, tengo algo más de 50 feeds de bastante tráfico, y me gusta poder dar una ojeada rápida 2-3 veces al día, para enterarme de las novedades legislativas de mi sector, o ver <a href="https://www.google.es/search?q=memes+de+gatetes&#038;safe=off&#038;source=lnms&#038;tbm=isch&#038;sa=X&#038;ved=0ahUKEwiI3Nq4id3KAhWGwxQKHVD5BPoQ_AUIBygB&#038;biw=1366&#038;bih=612#safe=off&#038;tbm=isch&#038;q=memes+gatos" target="_blank">memes de gatetes</a>, así que un lector de feeds sincronizado entre dispositivos, es obligatorio.</p>
<p>Aunque tras el cierre de <a href="http://www.google.com/reader/about/" target="_blank">Google Reader</a> me pasé a <a href="https://feedly.com/" target="_blank">Feedly</a>, y es un servicio más que correcto, aquí lo que se pretende es tener lo más posible self-hosted, y no al capricho de terceros, así que una búsqueda rápida me llevó a <a href="https://tt-rss.org" target="_blank">Tiny Tiny RSS</a>, PHP+MySQL, self hosted, con plugins, <a href="https://github.com/levito/tt-rss-feedly-theme" target="_blank">un theme muy parecido al de Feedly</a>, y con <a href="https://play.google.com/store/apps/details?id=org.fox.ttrss&#038;hl=es" target="_blank">aplicación para Android</a>.</p>
<p>Exportar feeds de Feedly, importar en TTRRS, programar su cron de actualización, apenas 15 minutos: ya podemos integrar su botón en la interfaz y utilizarlo en móvil en la sala de espera del proctólogo.</p>
<p><a href="http://blog.marcosbl.com/assets/rss-android.jpg" rel="attachment wp-att-2428"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/rss-android-338x300.jpg" alt="rss-android" width="338" height="300" class="aligncenter size-medium wp-image-2428" srcset="https://blog.marcosbl.com/assets/rss-android-338x300.jpg 338w, https://blog.marcosbl.com/assets/rss-android.jpg 1024w" sizes="auto, (max-width: 338px) 100vw, 338px" /></a></p>
<p><a href="http://blog.marcosbl.com/assets/tinytinyrss.jpg" rel="attachment wp-att-2429"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/tinytinyrss-500x238.jpg" alt="tinytinyrss" width="500" height="238" class="aligncenter size-medium wp-image-2429" srcset="https://blog.marcosbl.com/assets/tinytinyrss-500x238.jpg 500w, https://blog.marcosbl.com/assets/tinytinyrss.jpg 1023w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<h2>Repositorios Git</h2>
<p>Como parece haberse popularizado Git muy por encima de sus alternativas, he migrado todos mis repositorios mercurial desde <a href="https://bitbucket.org/" target="_blank">Bitbucket</a> a Git utilizando este simple método: </p>
<div style="padding:0 50px"><script src="https://gist.github.com/MarcosBL/523738192effc2955524.js"></script></div>
<p>Una vez convertidos a git, he instalado en el VPS <strong>Gogs</strong> (<a href="https://gogs.io/" target="_blank">https://gogs.io/</a>), una alternativa Open Source a Github, con algunas opciones menos, obviamente, pero extremadamente ligero, y muy sencillo de instalar y actualizar: ¡tanto, que basta con sobreescribir el binario!</p>
<p>Otra opción interesante que probé antes de decidirme por Gogs fue <a href="https://about.gitlab.com/" target="_blank">Gitlab</a>, que incluye además <a href="https://about.gitlab.com/gitlab-ci/" target="_blank">Gitlab-CI</a> y <a href="https://about.gitlab.com/2015/08/18/gitlab-loves-mattermost/" target="_blank">Mattermost</a> (alternativa a Slack), pero en mi opinión es un infierno de dependencias y errores, a cambio de muy poca funcionalidad añadida.</p>
<p><a href="http://blog.marcosbl.com/assets/gogs.jpg" rel="attachment wp-att-2430"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/gogs-477x300.jpg" alt="gogs" width="477" height="300" class="aligncenter size-medium wp-image-2430" srcset="https://blog.marcosbl.com/assets/gogs-477x300.jpg 477w, https://blog.marcosbl.com/assets/gogs.jpg 1024w" sizes="auto, (max-width: 477px) 100vw, 477px" /></a></p>
<p>Funcionalidad resumida de Gogs:</p>
<ul>
<li>Multiidioma</li>
<li>Soporte completo de Git</li>
<li>Soporte para clonar repos remotos desde la interfaz web</li>
<li>Soporte para mirrors</li>
<li>Usuarios, Organizaciones y control de acceso</li>
<li>Repositorios públicos y privados</li>
<li>Incidencias y Wiki, tanto interno como externo</li>
<li>Pull Requests</li>
<li>Ramas, commits y diffs</li>
<li>Web hooks y Git hooks</li>
<li>Es tan ligero que ni te enteras que está instalado. En un VPS. De 2.99€ al mes.</li>
</ul>
<p><a href="http://blog.marcosbl.com/assets/gogs2.jpg" rel="attachment wp-att-2431"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/gogs2-500x238.jpg" alt="gogs2" width="500" height="238" class="aligncenter size-medium wp-image-2431" srcset="https://blog.marcosbl.com/assets/gogs2-500x238.jpg 500w, https://blog.marcosbl.com/assets/gogs2.jpg 1024w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<h2>Otros servicios de terceros</h2>
<p>Obviamente, utilizo aún servicios de terceros, esto es solo un primer intento, y un «<em>work in progress</em>«, pero estoy bastante satisfecho con el resultado. Incluso en aquellos servicios para los que aún no tengo una alternativa seria libre, el disponer de un simple enlace de acceso rápido en la botonera superior ha supuesto una diferencia notable en la comodidad/usabilidad de los mismos, permitiéndome tener ahora mismo 6 pestañas fijas menos en el navegador que antes.</p>
<p>Algunos de estos servicios integrados por medio de «External sites» son</p>
<p><a href="https://toggl.com/" target="_blank">Toggl</a>, como tracker de trabajo</p>
<p><a href="http://blog.marcosbl.com/assets/toggl.jpg" rel="attachment wp-att-2432"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/toggl-479x300.jpg" alt="toggl" width="479" height="300" class="aligncenter size-medium wp-image-2432" srcset="https://blog.marcosbl.com/assets/toggl-479x300.jpg 479w, https://blog.marcosbl.com/assets/toggl.jpg 1024w" sizes="auto, (max-width: 479px) 100vw, 479px" /></a></p>
<p><a href="https://pixlr.com/" target="_blank">Pixlr</a> como editor de imágenes, alternativa online rápida a Photoshop</p>
<p><a href="http://blog.marcosbl.com/assets/pixlr.jpg" rel="attachment wp-att-2436"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/pixlr-500x290.jpg" alt="pixlr" width="500" height="290" class="aligncenter size-medium wp-image-2436" srcset="https://blog.marcosbl.com/assets/pixlr-500x290.jpg 500w, https://blog.marcosbl.com/assets/pixlr-1024x593.jpg 1024w, https://blog.marcosbl.com/assets/pixlr.jpg 1074w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Un simple panel de control web propio para control de las cuotas de mis clientes</p>
<p><a href="http://blog.marcosbl.com/assets/panel-web.jpg" rel="attachment wp-att-2433"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/panel-web-500x238.jpg" alt="panel-web" width="500" height="238" class="aligncenter size-medium wp-image-2433" srcset="https://blog.marcosbl.com/assets/panel-web-500x238.jpg 500w, https://blog.marcosbl.com/assets/panel-web.jpg 1024w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Un simple «<strong>speed dial</strong>» propio que usamos en la oficina para tener las webs más comunes a un click</p>
<p><a href="http://blog.marcosbl.com/assets/speed-dial.jpg" rel="attachment wp-att-2434"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/speed-dial-500x261.jpg" alt="speed-dial" width="500" height="261" class="aligncenter size-medium wp-image-2434" srcset="https://blog.marcosbl.com/assets/speed-dial-500x261.jpg 500w, https://blog.marcosbl.com/assets/speed-dial-1024x535.jpg 1024w, https://blog.marcosbl.com/assets/speed-dial.jpg 1191w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>Una especie de red social que empecé justo cuando empezaba a utilizar Twitter y que, obviamente, abandoné, pero que aún utilizo como «cajón de sastre» de chistes malos y enlaces tech</p>
<p><a href="http://blog.marcosbl.com/assets/dejadefumar.jpg" rel="attachment wp-att-2435"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/dejadefumar-500x290.jpg" alt="dejadefumar" width="500" height="290" class="aligncenter size-medium wp-image-2435" srcset="https://blog.marcosbl.com/assets/dejadefumar-500x290.jpg 500w, https://blog.marcosbl.com/assets/dejadefumar-1024x593.jpg 1024w, https://blog.marcosbl.com/assets/dejadefumar.jpg 1074w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<h2>Conclusión</h2>
<p>Bueno&#8230; pues ya tenemos el <strong>95% de nuestra vida digital en nuestras manos</strong>, alojada en nuestro propio servidor por unos miserables <strong>2.99€/mes</strong> (con todo esto instalado, y mucho más, la máquina ni se entera). Si sumamos el importe de apps de pago para móvil, etc&#8230; quizá hagamos una ingente inversión inicial única de aproximadamente&#8230; <strong>10€ a cambio de nuestra libertad</strong>. </p>
<p>Asimismo, el tiempo total empleado en seguir esta guía, sus enlaces y demás (¡para un desarrollador, ojo!) no debería ir mucho más allá de un par de horas. Tres si tienes <a href="https://twitter.com/MarcosBL" target="_blank"><strong>Twitter</strong></a>.</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/tired.jpg" alt="tired" width="313" height="231" class="alignright size-full wp-image-2439" />Este post se ha alargado muchísimo más de lo esperado, me ha llevado redactarlo casi tanto tiempo como me ha llevado el setup, así que espero por vuestro bien que a alguien le sea de utilidad. Los culpables, los que me habéis preguntado en <a href="https://twitter.com/MarcosBL" target="_blank"><strong>Twitter</strong></a> por el mismo en general, y <a href="http://luengocabanillas.com/blog/" target="_blank">Alberto Luengo</a> y <a href="http://oscarmlage.com/" target="_blank">Oscar Lage</a> en particular. </p>
<p>Si conoces otro servicio que merezca ser integrado, sea self-hosted o de terceros, no dudes y dispara en los comentarios. Como puedes ver, las opciones son infinitas, es elección tuya el decidir cuales son tus aplicaciones de productividad más usadas, e integrarlas con el «External sites» de Owncloud. Con eso, el propio Owncloud, y las aplicaciones que comento en esta entrada, la organización y las herramientas no deberían ya ser un problema. O <a href="http://blog.marcosbl.com/assets/email.png" rel="attachment wp-att-2441" data-lightboxplus="lightbox[2403]">quizá puedas contratarme</a>, claro.</p>
<div class="text-center" style="padding:50px 0">Y ahora&#8230; <strong>GO FUCKING GET THINGS DONE</strong></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.marcosbl.com/entorno-trabajo-administrativo-integrado-desarrolladores-owncloud/2403/feed/</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel email with multiple server configurations</title>
		<link>https://blog.marcosbl.com/laravel-email-with-multiple-server-configurations/2389/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Tue, 15 Sep 2015 16:14:12 +0000</pubDate>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Programación]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2389</guid>

					<description><![CDATA[<p class="lead">Change email configuration on the fly.</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/laravel-email-with-multiple-server-configurations/2389/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p>Change email configuration on the fly.</p>
<pre class='prettyprint lang-default-markup'>
use \Swift_Mailer;
use \Swift_SmtpTransport as SmtpTransport;

// Setup a new SmtpTransport instance for Gmail
$transport = SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl');
$transport-&gt;setUsername('you@gmail.com');
$transport-&gt;setPassword('yourpassword123');

// Assign a new SmtpTransport to SwiftMailer
$gmail = new Swift_Mailer($transport);

// Assign it to the Laravel Mailer
Mail::setSwiftMailer($gmail);

// Send your message
Mail::send('emails.folder.template', ['data' => $data], function($message) use($extradata) {
    $message->from([$extradata["MailFromEmail"] => $extradata["MailFromName"]]);
    $message->to($extradata["MailToEmail"], $extradata["MailToEmail"])->subject('Subject');
});
</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>I don&#8217;t usually listen to disco when I code, but when I do&#8230;</title>
		<link>https://blog.marcosbl.com/i-dont-usually-listen-to-disco-when-i-code-but-when-i-do/2380/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Sun, 03 May 2015 12:29:45 +0000</pubDate>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Informática]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2380</guid>

					<description><![CDATA[<p class="lead">&#160; (Tune «Stayin&#8217; Alive» by Bee Gees) You can tell by the way I hit the keys I&#8217;m in the zone, now quiet please All I need is in my head I&#8217;ll document when I am dead And I&#8217;ll regret it in a day when all the memory&#8217;s gone away I&#8217;ve no idea what this code does and I&#8217;m to blame,&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/i-dont-usually-listen-to-disco-when-i-code-but-when-i-do/2380/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.marcosbl.com/assets/bCOLZas.gif" alt="Party Hard" width="360" class="alignright size-full wp-image-2383" /></p>
<p>&nbsp;</p>
<p><strong>(Tune «Stayin&#8217; Alive» by Bee Gees)</strong></p>
<p>You can tell by the way I hit the keys<br />
I&#8217;m in the zone, now quiet please</p>
<p>All I need is in my head<br />
I&#8217;ll document when I am dead</p>
<p>And I&#8217;ll regret it in a day<br />
when all the memory&#8217;s gone away</p>
<p>I&#8217;ve no idea what this code does<br />
and I&#8217;m to blame, and it&#8217;s because</p>
<p>Wether it&#8217;s a double<br />
or an exception thrown by trouble<br />
it&#8217;s a one letter var<br />
one letter var</p>
<p>Bubble sorting bubble<br />
or lens constant for the hubble<br />
it&#8217;s a one letter var<br />
one letter var</p>
<p>Ah ha ha ha one letter var<br />
one letter var</p>
<p>Ah ha ha ha one letter var</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Allocated</title>
		<link>https://blog.marcosbl.com/allocated/2376/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Thu, 09 Apr 2015 03:43:13 +0000</pubDate>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Sistemas]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2376</guid>

					<description><![CDATA[<p class="lead">I don&#8217;t know what your PID is. I don&#8217;t know who issued your certificate. If you&#8217;re looking for more RAM, I can tell you I don&#8217;t have any left&#8230; But what I do have are a very particular set of system management tools. Tools I have acquired over a very long career. Tools that make me a nightmare for processes&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/allocated/2376/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p>I don&#8217;t know what your PID is.<br />
I don&#8217;t know who issued your certificate.<br />
If you&#8217;re looking for more RAM, I can tell you I don&#8217;t have any left&#8230; </p>
<p>But what I do have are a very particular set of system management tools.<br />
Tools I have acquired over a very long career.<br />
Tools that make me a nightmare for processes like you.</p>
<p>If you let me close your window now, that will be the end of it<br />
I will not look you up, I will not un-register you&#8230;<br />
But if you don&#8217;t:</p>
<p>I will look for you<br />
I will terminate you<br />
And I will uninstall you.</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/kill9.jpg" alt="kill9" width="450" height="190" class="size-full wp-image-2377" srcset="https://blog.marcosbl.com/assets/kill9.jpg 450w, https://blog.marcosbl.com/assets/kill9-300x127.jpg 300w" sizes="auto, (max-width: 450px) 100vw, 450px" /></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Awesome Awesomeness</title>
		<link>https://blog.marcosbl.com/awesome-awesomeness/2373/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Sun, 05 Apr 2015 20:04:01 +0000</pubDate>
				<category><![CDATA[Programación]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2373</guid>

					<description><![CDATA[<p class="lead">En el principio fue Awesome PHP, donde sincronizados alrededor de un repositorio github, un montón de freaks se dedicaron a recopilar los mejores recursos para PHP, en forma de librerías, enlaces, libros, tutoriales, etc&#8230; No tardaron en seguirlo, sin ningún orden concreto, Awesome Python, Awesome Java, Awesome Ruby, Awesome Go, Awesome NodeJS, Awesome Javascript, Awesome Scala, Awesome Sysadmin, Awesome Shell&#8230;&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/awesome-awesomeness/2373/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p><a href="http://blog.marcosbl.com/assets/Sin-título.jpg"><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/Sin-título.jpg" alt="Awesome" width="250" height="180" class="alignright size-full wp-image-2374" /></a>En el principio fue <a href="https://github.com/ziadoz/awesome-php">Awesome PHP</a>, donde sincronizados alrededor de un repositorio github, un montón de freaks se dedicaron a recopilar los mejores recursos para PHP, en forma de librerías, enlaces, libros, tutoriales, etc&#8230;</p>
<p>No tardaron en seguirlo, sin ningún orden concreto, <a href="https://github.com/vinta/awesome-python">Awesome Python</a>, <a href="https://github.com/akullpp/awesome-java">Awesome Java</a>, <a href="https://github.com/markets/awesome-ruby">Awesome Ruby</a>, <a href="https://github.com/avelino/awesome-go">Awesome Go</a>, <a href="https://github.com/vndmtrx/awesome-nodejs">Awesome NodeJS</a>, <a href="https://github.com/sorrycc/awesome-javascript">Awesome Javascript</a>, <a href="https://github.com/lauris/awesome-scala">Awesome Scala</a>, <a href="https://github.com/kahun/awesome-sysadmin">Awesome Sysadmin</a>, <a href="https://github.com/alebcay/awesome-shell">Awesome Shell</a>&#8230; y otra docena de clones.</p>
<p>Ahora, decidido a poner orden a este caos, tenemos a un nuevo superhérore que recopila en un único lugar todos estos listados dispersos: <a href="https://github.com/bayandin/awesome-awesomeness"><strong>Awesome Awesomeness</strong></a>.</p>
<p style="text-align: center;"><span style="font-size: 9em;">Awesome!</span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Paypal + Google Play = Dinero infinito</title>
		<link>https://blog.marcosbl.com/paypal-google-play-dinero-infinito/2359/</link>
					<comments>https://blog.marcosbl.com/paypal-google-play-dinero-infinito/2359/#comments</comments>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Sat, 14 Mar 2015 14:34:12 +0000</pubDate>
				<category><![CDATA[Informática]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2359</guid>

					<description><![CDATA[<p class="lead">Paypal está realizando una promo en la que te regala 3€ para gastar en Google Play. Para ello ha lanzado la promoción en 3 países: España, Francia y Alemania. Y lo mejor de todo es que son acumulables, solo tienes que autentitifcarte con tu cuenta de Pypal y se te activa en «Mi Cartera» un vale de 3€ para gastar&#8230;</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/paypal-google-play-dinero-infinito/2359/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/113.jpg" alt="1" width="150" height="144" class="alignright size-full wp-image-2368" />Paypal está realizando una promo en la que te regala 3€ para gastar en Google Play. Para ello ha lanzado la promoción en 3 países: España, Francia y Alemania.</p>
<p>Y lo mejor de todo es que son acumulables, solo tienes que autentitifcarte con tu cuenta de Pypal y se te activa en «Mi Cartera» un vale de 3€ para gastar en Google Play.</p>
<ul>
<li><a href="https://coupons.paypal.com/offers/mmzvl1b" target="_blank">Enlace para España</a> (finalizado)</li>
<li><a href="https://coupons.paypal.com/offers/mbhaya5" target="_blank">Enlace para Francia</a>  (finalizado)</li>
<li><a href="https://coupons.paypal.com/offers/mb94pu5" target="_blank">Enlace para Alemania</a>  (finalizado)</li>
</ul>
<div class="alert alert-danger"><strong>FINALIZADO</strong> Tanto el truco como los cupones han dejado de funcionar, no preguntéis más</div>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/QUBCd0V.png" alt="" width="676" height="197" class="aligncenter size-full wp-image-2360" srcset="https://blog.marcosbl.com/assets/QUBCd0V.png 676w, https://blog.marcosbl.com/assets/QUBCd0V-300x87.png 300w" sizes="auto, (max-width: 676px) 100vw, 676px" /></p>
<p>¿Dije que lo mejor es que eran acumulables? Pues no&#8230; lo mejor es que no solo son acumulables, sino que si vas a tu cartera y eliminas uno de ellos, aunque ya hayas gastado parte del crédito&#8230; <strong>este se regenera completo !</strong></p>
<p>Es decir, que si creas un cupón de 3€, gastas 2,95€, quedándote 0.05€, y después eliminas el cupón&#8230; puedes volver a crearlo y de nuevo te da 3 € de crédito.</p>
<p>Paso a paso: canjeamos el cupón alemán</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/wBi3IQa.png" alt="" width="358" height="244" class="aligncenter size-full wp-image-2363" srcset="https://blog.marcosbl.com/assets/wBi3IQa.png 358w, https://blog.marcosbl.com/assets/wBi3IQa-300x204.png 300w" sizes="auto, (max-width: 358px) 100vw, 358px" /></p>
<p>Compramos una aplicación de 1,99€</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/QAk9X9L.png" alt="" width="813" height="400" class="aligncenter size-full wp-image-2364" srcset="https://blog.marcosbl.com/assets/QAk9X9L.png 813w, https://blog.marcosbl.com/assets/QAk9X9L-300x148.png 300w" sizes="auto, (max-width: 813px) 100vw, 813px" /></p>
<p>Lo que nos deja un crédito de 1,01€</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/lPWiWhY.png" alt="" width="406" height="250" class="aligncenter size-full wp-image-2365" srcset="https://blog.marcosbl.com/assets/lPWiWhY.png 406w, https://blog.marcosbl.com/assets/lPWiWhY-300x185.png 300w" sizes="auto, (max-width: 406px) 100vw, 406px" /></p>
<p>Eliminamos el cupón (uso otra captuta porque no guardé la del 1,01€&#8230; se siente :P)</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/zD4enuS.png" alt="" width="367" height="369" class="aligncenter size-full wp-image-2362" srcset="https://blog.marcosbl.com/assets/zD4enuS.png 367w, https://blog.marcosbl.com/assets/zD4enuS-150x150.png 150w, https://blog.marcosbl.com/assets/zD4enuS-298x300.png 298w" sizes="auto, (max-width: 367px) 100vw, 367px" /></p>
<p>Volvemos a utilizar el enlace de la versión alemana</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/3Bx0BJh.png" alt="" width="883" height="405" class="aligncenter size-full wp-image-2366" srcset="https://blog.marcosbl.com/assets/3Bx0BJh.png 883w, https://blog.marcosbl.com/assets/3Bx0BJh-300x138.png 300w" sizes="auto, (max-width: 883px) 100vw, 883px" /></p>
<p>Y por la cara&#8230; de nuevo volvemos a disponer de 3€ de crédito para gastar en Google Play</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/s6Q4YAH.png" alt="" width="365" height="261" class="aligncenter size-full wp-image-2367" srcset="https://blog.marcosbl.com/assets/s6Q4YAH.png 365w, https://blog.marcosbl.com/assets/s6Q4YAH-300x215.png 300w" sizes="auto, (max-width: 365px) 100vw, 365px" /></p>
<p>Vamos, que por tiempo limitado, <strong>Paypal + Google Play = Dinero infinito</strong></p>
<p>Y si, exactamente por este tipo de «abuses» de al buena fe de las megacorporaciones es por lo que los internautas no podemos tener cosas bonitas. Disfrutadlo con salud mientras dure.</p>
<p><img loading="lazy" decoding="async" src="https://blog.marcosbl.com/assets/7ZhmgdV.png" alt="" width="1155" height="202" class="alignright size-full wp-image-2369" srcset="https://blog.marcosbl.com/assets/7ZhmgdV.png 1155w, https://blog.marcosbl.com/assets/7ZhmgdV-300x52.png 300w, https://blog.marcosbl.com/assets/7ZhmgdV-1024x179.png 1024w" sizes="auto, (max-width: 1155px) 100vw, 1155px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.marcosbl.com/paypal-google-play-dinero-infinito/2359/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>2B &#124; ~2B</title>
		<link>https://blog.marcosbl.com/2b-2b/2357/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Wed, 11 Mar 2015 03:03:55 +0000</pubDate>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Informática]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2357</guid>

					<description><![CDATA[<p class="lead">···  2B &#124; ~2B</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/2b-2b/2357/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p>···</p>
<p style="text-align: center;"><span style="font-size: 10em;"> 2B | ~2B</span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Am I thinking about my own clock or the user&#8217;s?</title>
		<link>https://blog.marcosbl.com/am-i-thinking-about-my-own-clock-or-the-users/2346/</link>
		
		<dc:creator><![CDATA[MarcosBL]]></dc:creator>
		<pubDate>Fri, 06 Mar 2015 03:19:32 +0000</pubDate>
				<category><![CDATA[Desarrollo General]]></category>
		<guid isPermaLink="false">http://marcosbl.com/blog/?p=2346</guid>

					<description><![CDATA[<p class="lead">Apto para Programadores, Diseñadores, y Desarrolladores en general</p><p class="more-link-p"><a class="btn btn-danger" href="https://blog.marcosbl.com/am-i-thinking-about-my-own-clock-or-the-users/2346/">Leer más &#8594;</a></p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2355" src="https://blog.marcosbl.com/assets/11.png" alt="Am I thinking about my own clock or the user's ? " width="725" height="345" srcset="https://blog.marcosbl.com/assets/11.png 725w, https://blog.marcosbl.com/assets/11-300x143.png 300w" sizes="auto, (max-width: 725px) 100vw, 725px" /></p>
<p style="text-align: center;"><em>Apto para Programadores, Diseñadores, y Desarrolladores en general</em></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
