jueves, 1 de agosto de 2019

error. y solución Windows 10 | Error 0x80070002 en Windows Update

Windows 10 | Error 0x80070002 en Windows Update

me escribe felipe de argentina, jjac Ayuda por favor, no quiero tener inconvenientes con el sistema  a futuro, díganme que medidas puedo tomar ya que quiero instalar actualizaciones pero no quiere el pc , y me deja ese error 

0x80070002

, gracias por brindar de su apoyo a el mundo, y a los moderadores. Que tengas un bonito día.

Me alegra tener tu visita en los foros de mi blog pipe. grato saludo. 
El KB4088776, es sumamente importante dentro del sistema operativo. Esta actualización fue lanzada el pasado 13 de marzo para todos los dispositivos y tiene como finalidad solucionar una serie de incidentes reportados y mejora la seguridad del sistema. Si deseas conocer todas las características de esta actualización, visita la siguiente página: 13 de marzo de 2018: KB4088776 (compilación del SO 16299.309).
Ahora bien, para corregir el error 0x80070002, puedes realizar procesos como: Reinicio de servicios, ejecución de comandos de reparación, entre otros. Puedes conocer las instrucciones de estos y más en la siguiente nota técnica: Error de Windows Update "0 x 80070002" o "0 x 80070003" (aplica para Windows 10).
En caso de que el error persista, puedes intentar realizar la instalación de la actualización de manera manual. Esta la puedes descargar desde la siguiente página, donde tendrás que elegir la arquitectura según sea tu equipo: Actualización acumulativa para Windows 10 Version 1709 KB4088776.
Cuéntame el resultado de los procesos.
Para ti también, que tengas un bonito día.
Si deseas conocer más acerca de las actualizaciones de Windows 10, consulta la siguiente nota: Windows Update: preguntas frecuentes.
¡Saludos! 
_________________________________________________________________________________________________________________________________________error. y solución, _______________________
ImagenReparar los errores de Windows Update
Se aplica a: Windows 8.1Windows 10Windows 7¿Para qué sirve esta guía?
En este tutorial guiado se proporcionan pasos para corregir problemas con Windows Update, como por ejemplo, tiempo de análisis prolongado o códigos de error al instalar las actualizaciones.
Una causa habitual de errores es el espacio insuficiente de la unidad. Si necesita ayuda para liberar espacio en la unidad, consulte Liberar espacio en la unidad en Windows 10.

Códigos de error comunes

Los pasos de este tutorial guiado deben ayudar con todos los errores de Windows Update y otros problemas; no es necesario buscar el error específico para resolverlo. A modo de ejemplo, aquí le indicamos algunos códigos de error comunes: 0x0xc1900223223, 0x80240034, 0x8007000E, 0x80242006​, 0x80244018​, 0x80D02002​, 0x80246017​, 0x80240438​, 0x80070070​, 0x8007000D​, 0x80246008​, 0x80096004​, 0x80070020. 

Los pasos que se proporcionan aquí deberían corregir los errores que surjan durante el proceso de Windows Update.

¿Cómo funciona?

Comenzaremos por preguntarle qué versión de Windows usa y cuál es el problema al que se enfrenta. Luego, le proporcionaremos una serie de pasos para solucionar los problemas específicos que tenga. Al final de cada paso se le preguntará “¿Ha solucionado el problema?” Si está resuelto, seleccione Sí y ya estará listo. Si no está resuelto, seleccione No y continúe con el tutorial guiado.

A continuación le indicamos cómo hacerlo:
  1. Descargue el Solucionador de problemas de Windows y luego seleccione Abrir o Guardar en la ventana emergente.

martes, 2 de julio de 2019

Qué es Evergreen

Qué es Evergreen
En Marketing Online decimos que un contenido es evergreen cuando es apto de perdurar en el tiempo sin que se quede anticuado. No tiene fecha de caducidad. Aporta un valor para el usuario hoy y también dentro de seis meses.
En Internet, donde un día equivale a un año, donde todo pasa de moda antes de que nos enteremos que lo estaba, donde casi cualquier cosa caduca mucho antes de que nos dé tiempo a saborearla, los contenidos más valorados son aquellos que permanecen el el tiempo. ¿Contradictorio? Quizá sí, pero la tendencia actual apuesta por los contenidos evergreen.
No se trata de un contenido que tenga una fecha apta para su consumo: no responde a la actualidad, ni a un momento concreto en el tiempo. Una noticia sobre la última actualización de Twitter sólo sería interesante el día que se publica esa noticia, o unos pocos días después. Pero en ningún caso sería un contenido evergreen ya que pasado esos primeros días, todo el mundo conocería ya las novedades de la red social, y además, a los pocos meses Twitter lanzará nuevas actualizaciones y la noticia quedará ya totalmente obsoleta.
Por el contrario, un contenido evergreen se adapta a la perfección a cualquier momento.Responde siempre a temáticas recurrentes y constituye un valor añadido para cualquiera que se interese por ellas.
Se trata de contenidos que no necesitan de numerosas actualizaciones con el paso del tiempo. No obstante, siempre hace falta su revisión y actualización, aunque en menor medida que otros tipos de contenido. Nunca terminan por ser considerados obsoletos.
Admiten diversos formatos, en lo que a su forma se refiere: ebooks, infografías, posts, whitepapers… y resultan muy interesantes a nivel SEO por su capacidad de generar de forma continuada interés, engagement, links y tráfico.
Por lo tanto, buscar un equilibrio entre contenidos evergreen y otros más relacionados con la actualidad será la llave que nos abra de forma definitiva la puerta del éxito en el Marketing de Contenidos.

Tráfico gratis a tu sitio web

Tráfico gratis a tu sitio web

Tráfico gratis a tu sitio web
Hola querido lector, o lectora claro. En este artículo te voy a enseñar un método que puedes usar para obtener tráfico gratis a tu sitio web. Y es que como todos sabemos, el éxito de tu blog y tus ingresos online depende de varios factores, pero hay uno que diría yo que es indiscutiblemente, fundamental: tráfico.
Sin tráfico hacia tu sitio no habrá suscriptores, ni habrá ventas. No importa si vendes el mejor infoproducto del mundo, no importa si promocionas con enlace de afiliado el mejor producto o servicio. No importa si has elegido el nicho más rentable, sin tráfico, no hay ingresos.
Por cierto, hablando de nichos rentables te invito a que descargues mi ebook gratis: 19 nichos probados. Ahí te resumo un grupo de nichos con sus productos que puedes promocionar en tu blog y generar ingresos.
Volviendo al tema, obtener tráfico gratis a tu sitio web debe ser una prioridad, sobre todo en tus comienzos, cuando todavía no te has posicionado en Google.
Porque sí, aunque implementes muy bien tu SEO, ver los resultados tomará tiempo. Si vas comenzando con tu blog y quieres posicionarlo te recomiendo pasarte por estos otros artículos:
Dicho esto, comencemos

⭐ Tráfico gratis a tu sitio web ⭐

Existen varios sitios en los que puedes conseguir tráfico gratis a tu sitio web. Básicamente funcionan a modo de intercambios de visitas, o sea, tú visitas otros sitios, te adjudican créditos por ello y esos créditos los puedes usar para que otras personas visiten el tuyo.
El funcionamiento en todos estos sitios es muy similar unos con otros, aunque obviamente tienen sus particularidades.
Pero el proceso en general es muy parecido, te registras, completas tu perfil, añades tus sitios, y comienzas a visitar otros sitios por unos 10 a 15 segundos para recibir tus créditos. Si no tienes un sitio web puedes igualmente colocar un enlace de afiliado para enviar tráfico y conseguir referidos.
Cabe destacar que todos estos sitios ofrecen un plan Premium muy económico, lo cual te permite sacarle un mayor provecho.
Veamos ahora algunos de estos sitios que puedes usar para enviar tráfico gratis a tu sitio web.

¿Ganar Dinero SIN VENDER Nada?

Como ganar sin vender nada ebook gratis
Descubra la Fórmula que ya están usando otras personas para ganar miles de dólares en Internet sin vender Absolutamente Nada

Tráfico gratis a tu sitio web: Mega Ayuda

Mega Ayuda es un sitio que me ha gustado mucho, porque además de poder enviar tráfico gratis a tu sitio web puedes ganar unos dólares extra a tu cuenta de Pay Pal.
Una vez que te has registrado añade tu sitio web o enlace para conseguir referidos y comienzas a visitar otros sitios. En Mega Ayuda te limitan la cantidad de sitios que puedes ver en un día, pero puedes ganar dólares por estas visitas. El primer día, yo me gané 0,25 dólares, aunque para retirar tu saldo a Pay Pal debes esperar a tener más de 10 días registrado en su plataforma.
Esos dólares los puedes también canjear por créditos para conseguir más visitas gratis.

Tráfico gratis a tu sitio web: Súper Visitas Gratis

Súper visitas gratis es otro sitio que funciona muy similar, y te permite añadir varios sitios o enlaces de referidos.
También puedes enviar tus banner, solamente aceptan las medidas 468×60, los cuales te los pueden promocionar usando el crédito que te hayas ganado en su plataforma.
Es un excelente sitio para conseguir miles de visitas gratis a tu web.

Tráfico gratis a tu sitio web: Visitas Gratis

Visitas Gratis es una excelente plataforma, que además de todas las funciones que ya habíamos visto, tienen incorporado incluso hasta la funcionalidad de trackers. Con sus trackers te permite rastrear desde qué país vienen tus visitas.
Cuenta además con rotadores de anuncios, lo cual te permite agregar hasta 5 sitios o enlaces de referidos en su cuenta gratis. Puedes indicar al sistema qué cantidad de tráfico enviar a cada uno de los sitios que hayas agregado.
Una de las cosas que más me gusta es que no te limitan la cantidad de páginas que puedes ver al día para ganar más créditos. Y en su parte superior, te coloca el ranking de los 5 miembros que más créditos han ganado en las últimas horas. Yo en apenas una hora me posicioné en el segundo lugar, lo cual me generó más tráfico a mi sitio web.
Tráfico gratis a tu sitio web

Tráfico gratis a tu sitio web: Súper Visitas

Súper visitas es otro sitio donde puedes obtener tráfico gratis a tu sitio web. El proceso de registro es muy sencillo e intuitivo. Una vez registrado, haces lo mismo, completas tu perfil, añades tu sitio web o enlace de referidos y comienzas a visitar otros sitios para ganar créditos.
Algo que me gusta de esta plataforma es que ofrecen un servicio de venta de tráfico bastante económico. Por 20 mil visitas en tres días te cobran 4,50 dólares, y tú eliges desde donde deseas que te lo envíen, desde Google, Yahoo, Bing, Facebook, Twitter, etc. Tráfico cualificado y objetivo.
En la sección de ofertas, puedes colocar un banner a tu sitio o enlace de referidos por solo 2 dólares al mes. Esta opción me gustaría explorarla para enviar tráfico a una oferta de CPA, pero aún no lo he intentado. Hay que tener en cuenta el tráfico permitido en redes de CPA, pero creo que vale la pena.  En todo caso, si deseas hacer esto, te recomiendo primero comentarle a tu mánager de afiliados.

Tráfico gratis a tu sitio web: Promo Hispana

Promo Hispana es una plataforma totalmente diferente. Es un sitio que te permite enviar correos electrónicos a miles de usuarios que han dado su consentimiento para recibir correos promocionales.
Solo debes registrarte y esperar a que te llegue algún correo de otro miembro de la plataforma. Al abrir el correo y hacer clic en el enlace ganarás créditos, y estos a su vez los puedes usar para enviar tus correos a otros miembros. De esta forma puedes enviar tráfico gratis a tu sitio web o conseguir referidos.
Si deseas puedes además comprar créditos y ampliar tu alcance, llegando a más personas.

Concluyendo:

Cuando inicias en este mundo, conseguir tráfico gratis a tu web es indispensable. De esta forma puedes ir dándote a conocer y captar a los primeros suscriptores para tu blog. Con el tiempo, tu sitio se irá posicionando en los buscadores.
Puede parecerte agotador estar visitando otros sitios para conseguir visitas para el tuyo, pero créeme, no lo es tanto. Verás que cuando le agarras el tiro trabajarás con varios sitios a la vez. Sobre todo, cuando no hay presupuesto para anuncios de Facebook.
Y recuerda, deja de esperar que las cosas pasen, sal ahí afuera y haz que pasen. Un abrazo.
Ads by Ganarenlared
Video Point 250x250
Maestría21x-banner-300-300X2
Videos animados 250x250

que es y como solucionar El sistema ERROR system / cron / times / 5min_cron.php debe poder escribirse (cambie los permisos a 777)

que es y como solucionar El sistema ERROR 
system / cron / times / 5min_cron.php debe poder escribirse (cambie los permisos a 777)


toma lo tuyo


<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <id>tag:code.tutsplus.com,2005:/es/categories/linux</id>
  <link rel="alternate" type="text/html" href="https://code.tutsplus.com"/>
  <link rel="self" type="application/atom+xml" href="https://code.tutsplus.com/es/categories/linux.atom"/>
  <title>Envato Tuts+ Code - Linux</title>
  <updated>2017-03-27T12:00:20Z</updated>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-27508</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/tutorials/how-to-program-with-yii2-running-cron-services--cms-27508"/>
    <title>Cómo Programar Con Yii2: Ejecutando Servicios Cron</title>
    <content type="html">&lt;figure class="final-product final-product--image"&gt;&lt;img data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/27508/final_image/featured.jpg" alt="Final product image"&gt;&lt;figcaption&gt;What You'll Be Creating&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Si estás preguntando, "¿Qué es Yii?" revisa mi tutorial anterior:&lt;/em&gt; &lt;a href="http://code.tutsplus.com/articles/introduction-to-the-yii-framework--cms-20948" target="_self"&gt;&lt;em&gt;Introducción al Framework Yii&lt;/em&gt;&lt;/a&gt;,&lt;em&gt; el cuál revisa los beneficios de Yii e incluye un vistazo general de qué hay de nuevo en Yii 2.0, liberado en Octubre de 2014.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En esta &lt;a href="https://code.tutsplus.com/series/programming-with-yii2--cms-725" target="_self"&gt;serie Programando Con Yii2&lt;/a&gt;, estoy guiando a los lectores en el uso del Framework Yii2 para PHP. En el tutorial de hoy, compartiré contigo como sacar ventaja de la capacidad de la consola de Yii para ejecutar trabajos cron.&lt;/p&gt;
&lt;p&gt;En el pasado, he usado wget en mis trabajos cron---una URL accesible desde web ejecutaría mis tareas en segundo plano. Esto elevó los asuntos de seguridad y tiene algunos problemas de desempeño. Mientras que abordé algunas maneras de mitigar los riesgos en &lt;a href="http://code.tutsplus.com/tutorials/building-your-startup-security-basics--cms-26702" target="_self"&gt;episodios de nuestra serie startup en seguridad&lt;/a&gt;, esperaba hacer transición a comandos llevados por consola. Y con Yii2 es bastante sencillo.&lt;/p&gt;
&lt;p&gt;Para el ejemplo de hoy, demostraré comandos cron basados en consola en &lt;a href="https://twixxr.com" target="_self"&gt;mi sitio Twixxtr&lt;/a&gt; el cuál describí en &lt;a href="http://code.tutsplus.com/tutorials/building-with-the-twitter-api-creating-friends-to-follow--cms-27492" target="_self"&gt;este episodio Twitter API&lt;/a&gt;. Debido a límites de taza y problemas de desempeño de administración, la API Twitter es muy dependiente de tareas cron eficientes y confiables. Así que es un gran ejemplo para compartir contigo.&lt;/p&gt;
&lt;p&gt;Antes de que comience, reiteraré: siempre aprecio tus ideas y retroalimentación. Si tienes una pregunta o sugerencia de tema, por favor publica tus ideas en los comentarios de abajo. También puedes contactarme en Twitter &lt;a href="https://twitter.com/intent/user?screen_name=reifman" target="_self"&gt;@reifman&lt;/a&gt; directamente.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;¿Qué Es Cron?&lt;/h2&gt;
&lt;p&gt;Wikipedia &lt;a href="https://en.wikipedia.org/wiki/Cron" target="_self"&gt;describe cron&lt;/a&gt; como "un programador de trabajos basado en tiempo en sistemas operativos computacionales parecidos a Unix." Y eso es bastante preciso. Básicamente, cron ejecuta todas las tareas en segundo plano que necesitamos para ejecutar servicios web, desde administración de registros y respaldos hasta peticiones API para limpieza de base de datos.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Para ver tus trabajos cron existentes en un servidor, usualmente tecleas &lt;code class="inline"&gt;sudo crontab -l&lt;/code&gt; y ves algo como esto:&lt;/p&gt;
&lt;pre class="brush: php noskimlinks noskimwords"&gt;# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
*/3 * * * * wget -O /dev/null http://meetingplanner.io/daemon/frequent
*/15 * * * * wget -O /dev/null http://meetingplanner.io/daemon/quarter
0 * * * * wget -O /dev/null http://meetingplanner.io/daemon/hourly
15 1 * * * wget -O /dev/null http://meetingplanner.io/daemon/overnight
40 2 * * * /usr/sbin/automysqlbackup
15 3 * * 5 wget -O /dev/null http://meetingplanner.io/daemon/weekly
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew &amp;gt;&amp;gt; /var/log/le-renew.log&lt;/pre&gt;
&lt;p&gt;El lado izquierdo especifica activar estas tareas cada 3 o 15 minutos o diariamente a media noche, etc., y el lado derecho es el script a ejecutar. &lt;em&gt;Mira también&lt;/em&gt; &lt;a href="https://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800" target="_self"&gt;&lt;em&gt;Programando Tareas Con Trabajos Cron (Envato Tuts+)&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nota cómo &lt;a href="http://code.tutsplus.com/tutorials/using-lets-encrypt-ssl-with-your-wordpress-project--cms-22303" target="_self"&gt;el script Let's Encrypt&lt;/a&gt; es un comando de consola único. Este se ejecuta desde la línea de comando en nuestro servidor. Sin embargo, todas mis tareas de Planificador de Reuniones de arriba se ejecutan vía &lt;a href="https://en.wikipedia.org/wiki/Wget" target="_self"&gt;wget&lt;/a&gt;. Eso actúa como si un robot estuviera en un navegador web em un horario específico contra nuestra aplicación web que realiza tareas en segundo plano.&lt;/p&gt;
&lt;p&gt;En adición a los gastos generales que una petición web externa requiere y las limitaciones de tiempo muerto en scripts en servidores, tienes que asegurar estos puntos de acceso. Aquí está un ejemplo de cómo lo hace Planificador de Reuniones:&lt;/p&gt;
&lt;pre class="brush: php noskimlinks noskimwords"&gt;// only cron jobs and admins can run this controller's actions
    public function beforeAction($action)
    {
      // your custom code here, if you want the code to run before action filters,
      // which are triggered on the [[EVENT_BEFORE_ACTION]] event, e.g. PageCache or AccessControl
      if (!parent::beforeAction($action)) {
          return false;
      }
      // other custom code here
      if (( $_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR'] ) ||
          (!\Yii::$app-&amp;gt;user-&amp;gt;isGuest &amp;amp;&amp;amp; \common\models\User::findOne(Yii::$app-&amp;gt;user-&amp;gt;getId())-&amp;gt;isAdmin()))
       {
         return true;
       }
      return false; // or false to not run the action
    }&lt;/pre&gt;
&lt;p&gt;Este verifica que el usuario haya iniciado sesión como un administrador o ejecutando localmente en el servidor en una dirección IP de Internet idéntica.&lt;/p&gt;
&lt;h2&gt;Implementado Comandos Cron Basado en Consola&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/samdark" target="_self"&gt;Alex Makarov&lt;/a&gt;, uno de los voluntarios líderes detrás del desarrollo del Framework Yii, ha sido de utilidad repondiéndome preguntas mientras escribo regularmente sobre el framework para Envato Tuts+. Después de leer mi episodio de seguridad, el preguntó por qué no estaba usando la capacidad de consola inherente de Yii2 para trabajos cron. Básicamente, yo no sabía de ella.&lt;/p&gt;
&lt;p&gt;Así como tenía un /frontend/controllers/DaemonController.php, creé un /console/controllers/DaemonController.php. Para este tutorial, haré esto para el más pequeño y simple &lt;a href="https://twixxr.com" target="_self"&gt;servicio web Twixxr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Estoy acostumbrado a usar la consola para &lt;a href="https://code.tutsplus.com/tutorials/how-to-program-with-yii2-working-with-the-database-and-active-record--cms-22768" target="_self"&gt;ejecutar migraciones de bases de datos&lt;/a&gt; (ej. &lt;code class="inline"&gt;./yii migrate/up 7&lt;/code&gt;), pero eso es todo. Estaba ansioso por probar usarlo para tareas en segundo plano.&lt;/p&gt;
&lt;p&gt;Como &lt;a href="http://code.tutsplus.com/tutorials/building-with-the-twitter-api-creating-friends-to-follow--cms-27492" target="_self"&gt;lo escribí en un tutorial anterior&lt;/a&gt;, mi recién nacido sitio Twixxr requiere procesos extensivos en segundo plano para rotar regularmente llamadas API para todas las peticiones de usuario para ofrecer amistas a cuentas influyentes de Twitter pertenecientes a mujeres. &lt;/p&gt;
&lt;p&gt;Aquí está cómo luce la página de inicio:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="How to Program with Yii2 - Console-Based Cron - Twixxr Home Page Example Website" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/27508/image/twixxr%20home%20page.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Así que pensé que Twixxr haría un gran lecho de prueba para ejecutar un controlador cron basado en consola.&lt;/p&gt;
&lt;h3&gt;El Nuevo DaemonController.php&lt;/h3&gt;
&lt;p&gt;Aquí está el núcleo de mi nuevo DaemonController.php basado en consola:&lt;/p&gt;
&lt;pre class="brush: php noskimlinks noskimwords"&gt;&amp;lt;?php
namespace console\controllers;

use Yii;
use yii\helpers\Url;
use yii\console\Controller;
use frontend\models\Twixxr;

/**
 * Test controller
 */
class DaemonController extends Controller {

    public function actionIndex() {
        echo "Yes, cron service is running.";
    }

    public function actionFrequent() {
      // called every two minutes
      // */2 * * * * ~/sites/www/yii2/yii test
      $time_start = microtime(true);
      $x = new \frontend\models\Twixxr();
      $x-&amp;gt;process($time_start);
      $time_end = microtime(true);
      echo 'Processing for '.($time_end-$time_start).' seconds';
    }

    public function actionQuarter() {
        // called every fifteen minutes
        $x = new \frontend\models\Twixxr();
        $x-&amp;gt;loadProfiles();
      }

      public function actionHourly() {
        // every hour
        $current_hour = date('G');
        if ($current_hour%4) {
          // every four hours
        }
            if ($current_hour%6) {
            // every six hours
          }
        }&lt;/pre&gt;
&lt;p&gt;Nota que es prácticamente idéntico a la estructura de mi controlador basado en front-end, pero es seguramente inaccesible a la web porque está en el árbol /console. Ningún servidor web Apache está configurado para navegar esta área.&lt;/p&gt;
&lt;p&gt;Así qué, en el ejemplo de arriba, &lt;code class="inline"&gt;actionFrequent()&lt;/code&gt; será llamado cada dos o tres minutos. Este procesa otro conjunto de peticiones de amistad Twixxr. Por otro lado, &lt;code class="inline"&gt;actionQuarter()&lt;/code&gt; es llamado cada 15 minutos y actualiza &lt;a href="https://twixxr.com/twixxr/browse" target="_self"&gt;la información de perfil para cuentas navegando&lt;/a&gt;. Veamos cómo funciona la programación en el archivo cron.&lt;/p&gt;
&lt;h3&gt;El Nuevo Archivo Crontab&lt;/h3&gt;
&lt;p&gt;Esencialmente, en mi archivo crontab, reemplazo wget con un script Linux directo como se muestra arriba para renovaciones Let's Encrypt.&lt;/p&gt;
&lt;p&gt;Tecleas &lt;code class="inline"&gt;sudo crontab -e&lt;/code&gt; para editar o &lt;code class="inline"&gt;-l&lt;/code&gt; para listar sus contenidos. Aquí está mi archivo cron Twixxr:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;$ sudo crontab -l
# m h  dom mon dow   command
*/3 * * * * /var/www/twixxr/yii daemon/frequent
*/15 * * * * /var/www/twixxr/yii daemon/quarter
0 * * * * /var/www/twixxr/yii daemon/hourly
15 1 * * * /var/www/twixxr/yii daemon/overnight
15 3 * * 5 /var/www/twixxr/yii daemon/weekly
#40 2 * * * /usr/sbin/automysqlbackup
30 2 * * 1 /usr/bin/letsencrypt renew &amp;gt;&amp;gt; /var/log/le-renew.log&lt;/pre&gt;
&lt;p&gt;Es bastante simple. El lado izquierdo de &lt;code class="inline"&gt;/var/www/twixxr/yii daemon/frequent&lt;/code&gt; es la ruta en donde vive el intérprete yii, y el lado derecho es el controlador y método de la consola a llamar.&lt;/p&gt;
&lt;p&gt;Todo funcionó bastante bien cambiando. No he cambiado Planificador de Reuniones todavia ya que quiero hacer más pruebas. Cuando las tareas en segundo plano se quiebran, es difícil saberlo y depurarlas (aunque &lt;a href="http://code.tutsplus.com/tutorials/building-your-startup-error-logging--cms-27349" target="_self"&gt;Sentry error logging&lt;/a&gt; está ayudando mucho).&lt;/p&gt;
&lt;h3&gt;Problemas a Considerar&lt;/h3&gt;
&lt;p&gt;Un elemento con el que me encontré es que el namespace de la consola es distinto al namespace del front-end--- así qué, por ejemplo, el componente SiteHelper.php que establecí en mi tutorial, que describió &lt;a href="http://code.tutsplus.com/tutorials/building-your-startup-running-multiple-domains--cms-27459" target="_self"&gt;ejecutando múltiples sitios desde una sola base de código&lt;/a&gt;, falló cuando lo invoqué. Quitarlo funcionó, pero necesite ejecutar pruebas para asegurar que el código subyacente de fondo aún funcionaba. Sin embargo, la mayoría del intercambio salió bien.&lt;/p&gt;
&lt;p&gt;Como con cualquier otro cambio de código, prueba y monitorea a fondo.&lt;/p&gt;
&lt;h2&gt;Qué Sigue&lt;br&gt;
&lt;/h2&gt;
&lt;p&gt;Viendo hacia adelante, exploraré construir APIs REST dentro del framework Yii2, el cuál depende coincidentemente en crear un sub-árbol distinto como el árbol de consola pero para APIs externas. Por supuesto, esto trae problemas complejos de autenticación y seguridad... así que será divertido explorar estos contigo. Estaré viendo APIs desde varios ángulos. Estoy en realidad bastante emocionado sobre esto. &lt;/p&gt;
&lt;p&gt;Espera los siguientes tutoriales en mi &lt;a href="https://code.tutsplus.com/series/programming-with-yii2--cms-725" target="_self"&gt;serie Programando Con Yii2&lt;/a&gt; mientras continuo sumergiéndome en diferentes aspectos del framework. Por favor también explora la &lt;a href="https://code.tutsplus.com/series/building-your-startup-with-php--cms-742" target="_self"&gt;serie Construyendo Tu Startup Con PHP&lt;/a&gt;, que documento el proceso de construir &lt;a href="https://simpleplanner.io" target="_self"&gt;Simple Planner&lt;/a&gt; y &lt;a href="https://meetingplanner.io" target="_self"&gt;Planificador de Reuniones&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si quisieras saber cuando llega el siguiente tutorial Yii2, sígueme en Twitter &lt;a href="https://twitter.com/intent/user?screen_name=reifman" target="_self"&gt;@reifman&lt;/a&gt; o &lt;a href="http://tutsplus.com/authors/jeff-reifman" target="_self"&gt;revisa mi página de instructor&lt;/a&gt; para actualizaciones. &lt;br&gt;&lt;/p&gt;
&lt;h2&gt;Enlaces Relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt; &lt;a href="http://yii2x.com" target="_self"&gt;Intercambio de Desarrollador Yii2&lt;/a&gt;, mi sitio de recursos Yii2&lt;/li&gt; &lt;li&gt; &lt;a href="https://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800" target="_self"&gt;Programando Tareas Con Trabajos Cron (Envato Tuts+)&lt;/a&gt;&lt;br&gt;
&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.yiiframework.com/wiki/646/how-to-implement-cron-in-yii-2/"&gt;Cómo implementar cron en Yii2 (Documentación Yii)&lt;/a&gt;&lt;/li&gt; &lt;li&gt; &lt;a href="https://twixxr.com" target="_self"&gt;Twixxr&lt;/a&gt;, el servicio web de muestra que mencioné&lt;/li&gt; &lt;/ul&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/317/posts/27508/preview_image/preview.jpg" medium="image" width="200" height="138"/>
    <published>2017-03-27T12:00:20.000Z</published>
    <updated>2017-03-27T12:00:20.000Z</updated>
    <author>
      <name>Jeff Reifman</name>
    </author>
  </entry>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-26425</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/tutorials/installing-the-google-pagespeed-module-alternative--cms-26425"/>
    <title>Instalando el Módulo PageSpeed de Google </title>
    <content type="html">&lt;figure class="final-product final-product--image"&gt;&lt;img data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/26425/final_image/feeatured.jpg" alt="Final product image"&gt;&lt;figcaption&gt;What You'll Be Creating&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Bienvenido a mi tercer turorial sobre &lt;a href="https://code.tutsplus.com/series/improving-google-pagespeed--cms-978" target="_self"&gt;optimizando la Velocidad de Carga de Tu Página en Google&lt;/a&gt;. Para los que no saben, &lt;a href="https://developers.google.com/speed/pagespeed/insights/" target="_self"&gt;Google PageSpeed&lt;/a&gt; es una herramieneta gratuita que evalúa el desempeño y la usabilidaad de tu sitio web para plataformas móviles y de escritorio. Es extra importante porque Google la usa para determinar elementos clave de nuestro posicionamiento SEO, es decir, qué tan alto aparecemos en sus resultados de búsqueda.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Así que los webmasters saben que es algo importante tener una buena PageSpeed, aunque hay un debate sobre ésto. Por ejemplo, la velocidad de la página de The New York Times es actualmente de 60 y 68 de una escala de 100.&lt;/p&gt;
&lt;p&gt;En el primer episodio, te guié para tratar de mejorar mi PageSpeed con un tema creado por ahora un extinto proveedor, &lt;a href="https://code.tutsplus.com/tutorials/hands-on-improving-google-pagespeed--cms-23219"&gt;Práctica para Mejorar Google PageSpeed (Envato Tuts+)&lt;/a&gt;. Últimamente, logré una PageSpeed para dispositivos móviles de 70 y escritorio 86.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;En el segundo episodio, hice mi blog un sitio enfocado en el desarrollo y personalicé mi código de WordPress para alcanzar una PageSpeed de 100 en ambas plataformas, móviles y escritorio. Consulta &lt;a href="https://code.tutsplus.com/tutorials/optimizing-google-pagespeed-to-100-in-wordpress--cms-25804"&gt;Optimizando Google PageSpeed a 100 en WordPress (Envato Tuts+)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Y tuve éxito en ésto por un tiempo:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Google PageSpeed Module - Page Insights at 100 for Mobile and Desktop" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/26425/image/feature.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Hoy, voy a decirte más de mi experiencia con optimización de PageSpeed y una alternativa menos conocida para hacerlo tú mismo, el &lt;a href="https://developers.google.com/speed/pagespeed/module/" target="_self"&gt;propio módulo PageSpeed de Google&lt;/a&gt;. Puedes instalarlo por Apache y nginx.&lt;/p&gt;
&lt;blockquote&gt;PageSpeed puede integrarse con tu servidor web Apache o Nginx para optimizar automáticamente tu sitio. — &lt;a href="https://developers.google.com/speed/pagespeed/module/" target="_self"&gt;Google &lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt;
&lt;p&gt;Antes de comenzar, por favor recuerda, que yo si trato de participar en las discusiones en la sección de abajo. Si tienes una pregunta o sugerencia de tópico, por favor publica un comentario abajo o &lt;a href="https://twitter.com/intent/user?screen_name=reifman" target="_self"&gt;contáctame en Twitter @reifman&lt;/a&gt;. Estoy interesado en tu experiencia con WordPress y PageSpeed.&lt;/p&gt;
&lt;h2&gt;Manteniendo una PageSpeed Óptima&lt;/h2&gt;
&lt;p&gt;Si mi blog fuera mi foco de tiempo completo, entonces quizá no habría sido demasiado difícil mantener el código optimizado para PageSpeed pues actualizaciones de plugin y actualizaciones de temas de WordPress venían incluídas. Pero no lo es. Y, francamente, mantener éste trabajo se comprobó que consumía mucho tiempo.&lt;/p&gt;
&lt;p&gt;Quería regresar a los diás de antaño de actualizaciones por clicks de mouse.&lt;/p&gt;
&lt;h3&gt;Google No Te Recompensa por un Alto PageSpeed&lt;/h3&gt;
&lt;p&gt;También noté que después de que cambié un nuevo tema y optimicé mi PageSpeed a 100, el tráfico realmente disminuyó y permaneció bajo. Ciertamente, el maquetado de tema responsivo tuvo algo que ver con ello, pero Google nunca me recompensó por llegar a un PageSpeed de 100.&lt;/p&gt;
&lt;p&gt;Similarmente, mientras escribía &lt;a href="https://code.tutsplus.com/tutorials/installing-amp-in-wordpress--cms-26272" target="_self"&gt;Instalando AMP WordPress (Envato Tuts+)&lt;/a&gt;, AMP fue creada para capturar la atención de los editores de medios, pero no es un gran beneficio para los pequeños editores. Google nunca proporcionó tráfico adicional a mi blog después de que yo proporcioné soporte de AMP.&lt;/p&gt;
&lt;p&gt;Así que decidí retractar mi foco en PageSpeed y cambiar a un nuevo tema que ayudaría a los usuarios a navegar por mi sitio más fácilmente. También he desinstalado AMP por el momento.&lt;/p&gt;
&lt;h3&gt;Probando el Módulo PageSpeed de Google&lt;/h3&gt;
&lt;p&gt;Parecía la perfecta oportunidad de deshabilitar todo mi paquete personalizado de JavaScript y CSS y experimentar con el módulo PageSpeed de Google, que funciona a nivel del servidor para hacer ésto por tí.&lt;/p&gt;
&lt;h2&gt;Sobre el Módulo PageSpeed de Google&lt;/h2&gt;
&lt;p&gt;Básicamente, el Módulo PageSpeed de Google automatiza muchas de las optimizaciones de rendimiento que buscan sus posicionamientos de PageSpeed. Y está disponible en los populares servidores de código abierto Apache y nginx.&lt;/p&gt;
&lt;p&gt;El Módulo PageSpeed comprime y combina archivos incluídos como JavaScript y hojas de estilo CSS pero también reemplazará imágenes con formatos de archivos comprimidos progresivos (&lt;a href="https://developers.google.com/speed/webp/" target="_self"&gt;.webp&lt;/a&gt;).&lt;/p&gt;
&lt;h3&gt;Imágenes de mi PageSpeed Antes de la Instalación&lt;/h3&gt;
&lt;p&gt;Después de instalar mi tema nuevo, tomé imágenes "antes" de mi puntuación de PageSpeed. Recibí un 83 para escritorio: &lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Google PageSpeed Module - Before Test 83 for Desktop PageSpeed" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/26425/image/ps-desktop-pre.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Y un más bajo 64 para móviles:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Google PageSpeed Module - Before Test 64 for Mobile PageSpeed" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/26425/image/ps-mobile-pr.jpg"&gt;&lt;/figure&gt;&lt;h2&gt;Instalando el Módulo PageSpeed&lt;/h2&gt;
&lt;p&gt;Para éste tutorial, te guiaré por el proceso de instalación para Apache. Google ofrece también &lt;a href="https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source" target="_self"&gt;instrucciones de instalación para nginx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El módulo PageSpeed no está incluído en los directorios de paquete de Ubuntu así que necesitas descargarlo manualmente vía &lt;code class="inline"&gt;wget&lt;/code&gt; :&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;$ wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
--2016-10-02 15:10:54--  https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
Resolving dl-ssl.google.com (dl-ssl.google.com)... 74.125.22.136, 74.125.22.91, 74.125.22.190, ...
Connecting to dl-ssl.google.com (dl-ssl.google.com)|74.125.22.136|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7009850 (6.7M) [application/x-debian-package]
Saving to: ‘mod-pagespeed-stable_current_amd64.deb’

100%[=========================================================================&amp;gt;] 7,009,850   38.6MB/s   in 0.2s

2016-10-02 15:10:54 (38.6 MB/s) - ‘mod-pagespeed-stable_current_amd64.deb’ saved [7009850/7009850]
&lt;/pre&gt;
&lt;p&gt;Luego, usa &lt;code class="inline"&gt;dpkg&lt;/code&gt; para instalar el módulo:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;$ sudo dpkg -i mod-pagespeed-*.deb
Selecting previously unselected package mod-pagespeed-stable.
(Reading database ... 668500 files and directories currently installed.)
Preparing to unpack mod-pagespeed-stable_current_amd64.deb ...
Unpacking mod-pagespeed-stable (1.11.33.2-r0) ...
Setting up mod-pagespeed-stable (1.11.33.2-r0) ...
Enabling module pagespeed.
To activate the new configuration, you need to run:
  service apache2 restart&lt;/pre&gt;
&lt;p&gt;Y finalmente, &lt;code class="inline"&gt;apt-get -f install&lt;/code&gt; para arreglar cualquier dependencia:&lt;/p&gt;
&lt;pre class="brush: php noskimlinks noskimwords"&gt;$ sudo apt-get -f install
  [sudo] password for ...:
  Reading package lists... Done
  Building dependency tree
  Reading state information... Done
  The following packages were automatically installed and are no longer required:
    ca-certificates-java default-jre default-jre-headless fonts-dejavu-extra
    gconf-service gconf-service-backend gconf2 gconf2-common icedtea-6-jre-cacao
    icedtea-6-jre-jamvm icedtea-netx icedtea-netx-common java-common
    java-wrappers libasyncns0 libatk-wrapper-java libatk-wrapper-java-jni
  ...
  ...
    openjdk-7-jre openjdk-7-jre-headless sound-theme-freedesktop
    ttf-dejavu-extra tzdata-java
  Use 'apt-get autoremove' to remove them.
  0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
&lt;/pre&gt;
&lt;p&gt;Posteriormente, reinicia el servidor Apache:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;$ sudo service apache2 restart
 * Restarting web server apache2  &lt;/pre&gt;
&lt;h3&gt;Soportando Archivos Desde Tu CDN&lt;/h3&gt;
&lt;p&gt;Anteriormente, escribí un artículo auspiciado &lt;a href="https://code.tutsplus.com/tutorials/accelerate-your-content-delivery-with-keycdn--cms-23258" target="_self"&gt;Acelera Tu Entrega de Contenidos Con KeyCDN&lt;/a&gt; y todavía lo uso. Si usas un CDN para tu sitio, entonces necesitas avisarle al módulo PageSpeed.&lt;/p&gt;
&lt;p&gt;Aquí está cómo ver y editar el archivo de configuración del módulo:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;$ sudo nano /etc/apache2/mods-available/pagespeed.conf
&lt;/pre&gt;
&lt;p&gt;Y hay una configuración básica:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;&amp;lt;IfModule pagespeed_module&amp;gt;
    # Turn on mod_pagespeed. To completely disable mod_pagespeed, you
    # can set this to "off".
    ModPagespeed on

    # We want VHosts to inherit global configuration.
    # If this is not included, they'll be independent (except for inherently
    # global options), at least for backwards compatibility.
    ModPagespeedInheritVHostConfig on
    &lt;/pre&gt;
&lt;p&gt;Todos tus sitios funcionarán con él por defecto. Pero tienes que agregar los subdominios CDN manualmente:&lt;/p&gt;
&lt;pre class="brush: php noskimlinks noskimwords"&gt;# ModPagespeedDomain
   # authorizes rewriting of JS, CSS, and Image files found in this
   # domain. By default only resources with the same origin as the
   # HTML file are rewritten. For example:
   #
   #   ModPagespeedDomain cdn.myhost.com
   #
   # This will allow resources found on http://cdn.myhost.com to be
   # rewritten in addition to those in the same domain as the HTML.
   #
   # Other domain-related directives (like ModPagespeedMapRewriteDomain
   # and ModPagespeedMapOriginDomain) can also authorize domains.
   #
   # Wildcards (* and ?) are allowed in the domain specification. Be
   # careful when using them as if you rewrite domains that do not
   # send you traffic, then the site receiving the traffic will not
   # know how to serve the rewritten content.
ModPagespeedDomain c?.jeffreifman.com
&lt;/pre&gt;
&lt;p&gt;¿Mis CDNs están en c1-, c2- y c4- .jeffreifman.com, así que utilicé un &lt;code class="inline"&gt;?&lt;/code&gt; el caracter comodín para apuntar a los cuatro de arriba.&lt;/p&gt;
&lt;p&gt;Luego, por supuesto, debes reiniciar de nuevo Apache, como lo hicimos antes.&lt;/p&gt;
&lt;h2&gt;Revisando los Resultados del Módulo PageSpeed&lt;/h2&gt;
&lt;p&gt;Puedes revisar el código fuente en tu sitio para ver si el módulo PageSpeed está funcionando. Aquí está un ejemplo de la parte superior de la página en &lt;a href="http://JeffReifman.com" target="_self"&gt;JeffReifman.com:&lt;/a&gt;&lt;/p&gt;
&lt;pre class="brush: html noskimlinks noskimwords"&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en-US" prefix="og: http://ogp.me/ns#"&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset="UTF-8"&amp;gt;
&amp;lt;meta name="viewport" content="width=device-width, initial-scale=1"&amp;gt;
&amp;lt;link rel="profile" href="http://gmpg.org/xfn/11"&amp;gt;
&amp;lt;link rel="pingback" href="http://jeffreifman.com/xmlrpc.php"&amp;gt;
&amp;lt;script type="text/javascript"
 src="http://jeffreifman.com/wp-content/cache/minify/568f4.js.pagespeed.jm.7B4hJGmADB.js"&amp;gt;
 &amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Nota que el src URL ahora es:&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt;568f4.js.pagespeed.jm.7B4hJGmADB.js&lt;/code&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Aquí está una imagen más grande colocada manualmente (incidentalmente uno de los anuncios de mi casa) que PageSpeed convierte a .webp:&lt;/p&gt;
&lt;pre class="brush: html noskimlinks noskimwords"&gt;&amp;lt;img src="http://c3.jeffreifman.com/wp-content/uploads/2016/10/
xssd-virtual-servers-300x250.jpg.pagespeed.ic.g1foLP8khJ.webp"&lt;/pre&gt;
&lt;p&gt;Todo ésto ocurre automáticamente.&lt;/p&gt;
&lt;h3&gt;Decepcionantes Cambios en PageSpeed&lt;/h3&gt;
&lt;p&gt;En general, los resultados de usar el módulo PageSpeed fueron decepcionantes por sí mismos. Gané 4 puntos en escritorio y (mejor) 8 puntos en móviles.&lt;/p&gt;
&lt;p&gt;Aquí está la puntuación después para escritorio:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Google PageSpeed Module - After Test 87 for Desktop PageSpeed" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/26425/image/ps-desktop-post.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Aquí está la puntuación después para móviles:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Google PageSpeed Module - After Test 72 for Mobile PageSpeed" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/26425/image/ps-mobile-post.jpg"&gt;&lt;/figure&gt;&lt;h2&gt;Concluyendo&lt;/h2&gt;
&lt;p&gt;Si eres un administrador de sistemas, el módulo PageSpeed de Google será muy útil. Es completamente configurable, y puedes personalizarlo en una variedad de formas para un mejor impacto. Sin embargo, para el desarrollador promedio, tengo dudas sobre su eficacia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las ganancias del desempeño básico fueron limitadas.&lt;/li&gt; &lt;li&gt;Más personalización es muy complicado.&lt;/li&gt; &lt;li&gt;Las ganancias de PageSpeed claramente no (si no absolutamente) reflejan un incrementado tráfico en el motor de búsqueda.&lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;Estoy contento de que Google ofrezca el módulo, y está diseñado para trabajar dentro de sistemas complejos, pero su impacto para administradores de sistema DIY de todos los días es limitado.&lt;/p&gt;
&lt;p&gt;Si tienes preguntas, por favor publícalas abajo. O puedes &lt;a href="https://twitter.com/intent/user?screen_name=reifman" target="_self"&gt;contactarme en Twitter @reifman&lt;/a&gt;. Por favor consulta m&lt;a href="http://tutsplus.com/authors/jeff-reifman" target="_self"&gt;i página de instructor en Envato Tuts+&lt;/a&gt; para ver otros tutoriales que he escrito, como &lt;a href="http://code.tutsplus.com/tutorials/clone-wordpress-in-linux--cms-25059" target="_self"&gt;Clonando WordPress en Linux (en 90 segundos)&lt;/a&gt;. Y te animo a consultar mis dos series de programación aquí: &lt;a href="https://code.tutsplus.com/series/how-to-program-with-yii2--cms-725" target="_self"&gt;Cómo Programar Con Yii2 &lt;/a&gt;y &lt;a href="https://code.tutsplus.com/series/building-your-startup-with-php--cms-742" target="_self"&gt;Construyendo Tu Startup Con PHP&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Enlaces Relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/speed/pagespeed/" target="_self"&gt;Google PageSpeed&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://developers.google.com/speed/pagespeed/module/" target="_self"&gt;El Módulo Google PageSpeed &lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://code.tutsplus.com/tutorials/optimizing-google-pagespeed-to-100-in-wordpress--cms-25804"&gt;Optimizando Google PageSpeed a 100 en WordPress (Envato Tuts+)&lt;/a&gt;&lt;/li&gt; &lt;li&gt; &lt;a href="https://code.tutsplus.com/tutorials/hands-on-improving-google-pagespeed--cms-23219"&gt;Práctica para Mejorar Google PageSpeed (Envato Tuts+)&lt;/a&gt;&lt;br&gt;
&lt;/li&gt; &lt;li&gt;&lt;a href="https://www.keycdn.com/blog/google-pagespeed-insights-wordpress/"&gt;Obteniendo una Puntuación 100/100 en Google PageSpeed con WordPress (KeyCDN)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/34/posts/26425/preview_image/Installing-the-Google-PageSpeed-Module.jpg.png" medium="image" width="200" height="138"/>
    <published>2016-12-16T12:00:52.000Z</published>
    <updated>2016-12-16T12:00:52.000Z</updated>
    <author>
      <name>Jeff Reifman</name>
    </author>
  </entry>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-26161</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/articles/useful-nix-shell-commands-for-web-developers--cms-26161"/>
    <title>Útiles Comandos de *NIX Shell para desarrolladores web
</title>
    <content type="html">
&lt;p&gt;Entonces, ¿por qué *NIX y por qué necesitas ir a la consola?&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Según las estadísticas de &lt;a href="http://w3techs.com/technologies/overview/operating_system/all" rel="external" target="_blank"&gt;W3Techs&lt;/a&gt;, Unix es utilizado por el 68% de todos
 los sitios web cuyo sistema operativo conocen. Esto significa que si 
usted es desarrollador web, su código probablemente se esté ejecutando 
en un servidor Linux. Y al menos necesita saber cómo configurar y 
depurar su código en los sistemas Unix y Linux. Descubramos lo que 
necesita saber para sentirse cómodo en la línea de comando.&lt;/p&gt;
&lt;h2&gt;Los basicos&lt;/h2&gt;
&lt;p&gt;El
 comando básico * NIX consta de tres componentes:    &lt;/p&gt; &lt;ul&gt;
&lt;li&gt; &lt;strong&gt;comando&lt;/strong&gt; o programa
 para ejecutar&lt;/li&gt; &lt;li&gt; &lt;strong&gt;opciones&lt;/strong&gt; para alterar o especificar el comportamiento
 del comando&lt;/li&gt; &lt;li&gt; &lt;strong&gt;argumentos&lt;/strong&gt; o datos de entrada que se necesitan para 
ejecutar el comando &lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;Por
 ejemplo, si necesita obtener una lista de archivos en el directorio &lt;code class="inline"&gt;/var/www&lt;/code&gt;, debe ejecutar el comando &lt;code class="inline"&gt;ls&lt;/code&gt; con el argumento &lt;code class="inline"&gt;/var/www&lt;/code&gt;. Para agregar el tamaño de los archivos a la salida, debe agregar la 
opción &lt;code class="inline"&gt;-s&lt;/code&gt;, y el comando final se verá así:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;ls -s /var/www&lt;/pre&gt;
&lt;h3&gt;Redirecciones de E/S y tuberías&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Muchos
 comandos *NIX usan entrada y salida de texto con los que puede operar,
 y la gran característica de esto es que puede enviar los resultados de 
salida del comando a un archivo mediante redirección, o incluso pasar la
 salida de un comando a la entrada de otro comando usando las tuberías. Por ejemplo, podemos enviar el comando del ejemplo anterior a un 
archivo:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;ls -s /var/www &amp;gt; /var/www/files.txt&lt;/pre&gt;
&lt;p&gt;Este comando creará o borrará el archivo &lt;code class="inline"&gt;/var/www/files.txt&lt;/code&gt; y generará una lista de archivos en el directorio &lt;code class="inline"&gt;/var/www&lt;/code&gt;. Aquí hay una lista de redirecciones y canalizaciones de E / S 
estándar:&lt;br&gt;&lt;/p&gt; &lt;ul&gt;
&lt;li&gt; &lt;code class="inline"&gt;&amp;gt;&lt;/code&gt; Redirigir la salida de un comando a un archivo en el 
disco. El archivo será borrado y sobrescrito.&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;&amp;gt;&amp;gt;&lt;/code&gt; El mismo 
redireccionamiento, pero anexando el archivo de salida.&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;&amp;lt;&lt;/code&gt; Obtener entrada al comando desde un archivo.&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;|&lt;/code&gt; Pase la salida de un comando a la entrada de otro comando.&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;tee&lt;/code&gt; Ambos redirigen la salida a un archivo y la pasan al siguiente 
comando en la tubería.&lt;/li&gt; &lt;/ul&gt;
&lt;h3&gt; &lt;b&gt;Los comandos principales&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Para obtener páginas de 
manual para un comando, ejecuta &lt;code class="inline"&gt;man&lt;/code&gt;. Las páginas de manual siguen un 
diseño común y pueden incluir nombre, sinopsis, descripción y ejemplos 
de uso. Esto mostrará la documentación del comando &lt;code class="inline"&gt;chmod&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;man chmod&lt;/pre&gt;
&lt;p&gt;Para ejecutar algunos comandos, como guardar configuraciones o reiniciar procesos, debe ejecutarlos como superusuario. Para hacer esto, debe anteponer &lt;code class="inline"&gt;sudo&lt;/code&gt; a su comando:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:/var/www$ chmod 777 log
chmod: changing permissions of ‘log’: Operation not permitted
user@server:/var/www$ sudo chmod 777 log
sudo chmod 777 log&lt;/pre&gt;
&lt;p&gt;Si necesita ejecutar un conjunto de comandos como superusuario, puede usar &lt;code class="inline"&gt;su&lt;/code&gt; o cambiar el comando del usuario.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:/var/www$ su
Password:
root@server:/var/www#&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Nota&lt;/em&gt;: Para 
guardar la capa de seguridad y evitar la ejecución accidental de 
comandos objetables, no use &lt;code class="inline"&gt;sudo&lt;/code&gt; y &lt;code class="inline"&gt;su&lt;/code&gt; sin ningún propósito.&lt;/p&gt;
&lt;h2&gt;En el mundo real&lt;/h2&gt;
&lt;h3&gt; &lt;b&gt;Navegación básica&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Hay tres comandos principales para 
navegar en el árbol de archivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;code class="inline"&gt;pwd&lt;/code&gt; para imprimir el nombre del 
directorio de trabajo actual    &lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;cd&lt;/code&gt; para cambiar el directorio&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;ls&lt;/code&gt; para enumerar los contenidos del directorio&lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;Aquí hay un ejemplo del uso 
de estos comandos con la salida de la terminal:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:~$ pwd
/home/user
user@server:~$ cd /var/www
user@server:/var/www$ ls -alF
total 16
drwxr-xr-x  5 root    root    4096 Jan 22 09:45 ./
drwxr-xr-x 14 root    root    4096 Jan 22 09:38 ../
drwxr-xr-x  2 root    root    4096 Jan 22 09:45 html/
drwxr-xr-x  3 root    root    4096 Jan 22 09:45 log/
drwxrwxrwx  1 user    user    442  Mar 24 12:22 testing/&lt;/pre&gt;
&lt;h3&gt; &lt;b&gt;Buscando archivos&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Existe el comando &lt;code class="inline"&gt;find&lt;/code&gt; para buscar archivos en una jerarquía de 
directorios. Este comando es muy poderoso y puede buscar archivos y 
directorios por nombre, permisos de acceso, fecha y tamaño.&lt;/p&gt;
&lt;p&gt;Encuentre 
todos los directorios con el nombre "logs" en el directorio &lt;code class="inline"&gt;/var/www&lt;/code&gt; 
usando la opción &lt;code class="inline"&gt;-type&lt;/code&gt;&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;find /var/www -type d -name logs&lt;/pre&gt;
&lt;p&gt;Para buscar archivos PHP en el directorio actual, agregue la opción &lt;code class="inline"&gt;-name&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;find . -type f -name "*.php"&lt;/pre&gt;
&lt;p&gt;Encuentre archivos con permisos definidos usando la opción &lt;code class="inline"&gt;-perm&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;find . -type f -perm 0777 -print&lt;/pre&gt;
&lt;p&gt;Encuentra todos los archivos que son mayores que 500MB:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;find / -size +500M&lt;/pre&gt;
&lt;p&gt;Por 
supuesto, puede combinar todas esas opciones en un comando, y esto es 
solo lo básico del comando &lt;code class="inline"&gt;find&lt;/code&gt;, que es una herramienta muy poderosa 
para buscar archivos. Use las páginas del manual para obtener más información.&lt;/p&gt;
&lt;h3&gt; &lt;b&gt;Manipulación de 
archivos y carpetas&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Hay cinco comandos principales para manipular 
archivos y carpetas en el sistema *NIX:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;code class="inline"&gt;touch&lt;/code&gt;
 se usa para cambiar las marcas de tiempo en los archivos y directorios 
existentes, pero también esta es la forma más fácil de crear un archivo 
nuevo&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;mkdir&lt;/code&gt; para hacer directorios&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;cp&lt;/code&gt; para copiar archivos y 
directorios&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;mv&lt;/code&gt; para mover o renombrar archivos y directorios&lt;/li&gt; &lt;li&gt; &lt;code class="inline"&gt;rm &lt;/code&gt;
para eliminar archivos y carpetas&lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;El
 siguiente ejemplo creará un archivo &lt;code class="inline"&gt;index.html&lt;/code&gt;, copiará este archivo en
 el nuevo directorio en &lt;code class="inline"&gt;/var/www&lt;/code&gt; y eliminará el archivo fuente.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;root@localserver:~# touch index.html
root@localserver:~# mkdir /var/www/newdir
root@localserver:~# cp index.html /var/www/newdir/
root@localserver:~# rm index.html&lt;/pre&gt;
&lt;p&gt;Otro gran comando es &lt;code class="inline"&gt;ln&lt;/code&gt;, que está diseñado para hacer enlaces entre archivos. El comando &lt;code class="inline"&gt;ln&lt;/code&gt; a menudo se usa para crear un enlace simbólico para habilitar un host virtual:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;sudo ln -s /etc/apache2/sites-available/newvirtualhost.com.conf /etc/apache/sites-enabled/ newvirtualhost.com.conf&lt;/pre&gt;
&lt;h3&gt; &lt;b&gt;Cambiar permisos de acceso&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Para cambiar el propietario y el grupo del archivo, use &lt;code class="inline"&gt;chown&lt;/code&gt;. No olvide
 otorgarle la propiedad al usuario de apache cuando esté creando un 
nuevo host virtual de su aplicación web:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;sudo chown -R www-data:www-data /var/www/newvirtualhost.com&lt;/pre&gt;
&lt;p&gt;A veces, 
los directorios de caché o de registro de la aplicación deben poder 
escribirse para todos los usuarios, por lo que debe cambiar los modos de
 acceso a 777 con el comando &lt;code class="inline"&gt;chmod&lt;/code&gt;. Agregue la opción &lt;code class="inline"&gt;-R&lt;/code&gt; para agregar permisos a todos los archivos y carpetas anidados.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;sudo chmod -R 777 /var/www/private/cache&lt;/pre&gt;
&lt;p&gt;Si solo quiere hacer un archivo ejecutable, use &lt;code class="inline"&gt;chmod&lt;/code&gt; con la opción &lt;code class="inline"&gt;+x&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;sudo chmod +x /var/www/private/backup.sh&lt;/pre&gt;
&lt;h3&gt; &lt;b&gt;Lectura de archivo&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Para ver archivos en la consola, puede usar el comando &lt;code class="inline"&gt;cat&lt;/code&gt;. Con
&lt;code class="inline"&gt; cat&lt;/code&gt;, puede concatenar el contenido de los archivos usando parámetros 
adicionales, y también puede usar mask en los nombres de archivo.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;cat /etc/apache2/apache2.conf
cat /etc/apache2/apache2.conf /etc/apache2/ports.conf 
cat /etc/apache2/mods-enabled/*&lt;/pre&gt;
&lt;p&gt;Pero el 
comando &lt;code class="inline"&gt;cat&lt;/code&gt; te confundirá muy rápido, ya que muestra la salida en 
formato sin escaneado sin ninguna paginación, por lo que es 
inconveniente utilizarlo con la salida de registro. Para
 obtener un filtro para paginar a través del texto una pantalla por vez,
 debe usar &lt;code class="inline"&gt;more&lt;/code&gt; o &lt;code class="inline"&gt;less&lt;/code&gt; comandos, que son mucho más que una gran 
cantidad.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;less /etc/apache2/apache2.conf
cat /etc/apache2/mods-enabled/* | less&lt;/pre&gt;
&lt;p&gt;Otro comando útil es &lt;code class="inline"&gt;tail&lt;/code&gt;, que se crea para generar la última parte de los archivos. Este comando es perfecto para revisar historiales de registro. De
 forma predeterminada, este comando de cola imprime las últimas 10 
líneas, y puede cambiar este número utilizando el parámetro &lt;code class="inline"&gt;-n&lt;/code&gt;.&lt;br&gt;&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;tail /var/log/apache2/error.log
tail -n 25 /var/log/apache2/error.log&lt;/pre&gt;
&lt;p&gt;Pero si tiene, por ejemplo, un montón de archivos de registro, necesita algo más poderoso para realizar una búsqueda adecuada. Algo
 así como &lt;code class="inline"&gt;grep&lt;/code&gt;: un programa que lee de la entrada estándar, prueba cada 
línea con un patrón y escribe en la salida estándar las líneas que 
coinciden con este patrón. Al usarlo en combinación con &lt;code class="inline"&gt;cat&lt;/code&gt; y tuberías, 
obtendrá lo que desea.&lt;/p&gt;
&lt;p&gt;Si desea filtrar líneas de texto de salida, puede 
usar el comando &lt;code class="inline"&gt;grep&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;grep notice /var/log/apache2/error.log
cat /var/log/apache2/*.log | grep "shutting down"&lt;/pre&gt;
&lt;p&gt;Como puede ver, &lt;code class="inline"&gt;grep&lt;/code&gt; es bueno para usar en tuberías. En este ejemplo, el último comando generará todas las líneas que 
contengan la cadena de "cierre" de los archivos de registro.&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Edición de 
archivos&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Si desea editar archivos de texto en modo consola, puede usar 
uno de los tres editores de texto más populares:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;GNU nano&lt;/strong&gt;, un editor
 de texto predeterminado pequeño y amigable, que es una elección 
perfecta para tareas básicas    &lt;/li&gt; &lt;li&gt; &lt;strong&gt;Vim&lt;/strong&gt;, un editor de texto de 
programadores mejorado, que es más poderoso, pero complejo para 
principiantes&lt;/li&gt; &lt;li&gt; &lt;strong&gt;mcedit&lt;/strong&gt;,
 un editor de ventana con todas las funciones de Midnight Commander, que
 es fácil de usar pero no está instalado por defecto en los sistemas *NIX&lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;Comparelos y haga su elección:&lt;br&gt;&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;nano /var/log/apache2/error.log
vim /var/log/apache2/error.log
mcedit /var/log/apache2/error.log&lt;/pre&gt;
&lt;h3&gt; &lt;b&gt;Archivar&lt;/b&gt;&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Algunas veces necesita hacer una copia de seguridad o comprimir algunos 
datos en su servidor.&lt;/p&gt;
&lt;p&gt;Las utilidades de archivo más comunes son &lt;code class="inline"&gt;tar&lt;/code&gt; y 
&lt;code class="inline"&gt;zip&lt;/code&gt;. Tenga en cuenta que el comando &lt;code class="inline"&gt;zip&lt;/code&gt; no puede instalarse en su 
servidor de forma predeterminada.&lt;/p&gt;
&lt;p&gt;Puede crear un archivo con los 
siguientes comandos:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;tar -zcvf archive-name.tar.gz directory-or-file-name
tar -jcvf archive-name.tbz2 directory-or-file-name
zip archive-name.zip directory-or-file-name&lt;/pre&gt;
&lt;p&gt;Si solo desea ver una lista de archivos en el archivo, puede usar la opción &lt;code class="inline"&gt;-l&lt;/code&gt; tanto para &lt;code class="inline"&gt;tar&lt;/code&gt; como &lt;code class="inline"&gt;unzip&lt;/code&gt; para descomprimir:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;tar -ztvf archive-name.tar.gz
tar -jtvf archive-name.tbz2
unzip -l archive-name.zip&lt;/pre&gt;
&lt;p&gt;O extraiga algunos archivos fuente:&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;tar -zxvf archive-name.tar.gz
tar -jxvf archive-name.tbz2
zip archive-name.zip&lt;/pre&gt;
&lt;h3&gt;&lt;b&gt;Programar tareas&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Si
 desea programar las secuencias de comandos para que se ejecuten 
periódicamente, debe usar la utilidad Cron, que está impulsada por una 
tabla cron, un archivo de configuración que especifica los comandos de 
la shell que se ejecutarán periódicamente en un programa determinado. Y 
el comando para mantener las tablas cron es &lt;code class="inline"&gt;crontab&lt;/code&gt;.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Llamar a crontab con
 la opción &lt;code class="inline"&gt;-l&lt;/code&gt; mostrará su tabla cron.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Además, se proporciona la opción &lt;code class="inline"&gt;-u&lt;/code&gt;
 para especificar el nombre del usuario cuyo crontab se está utilizando. Si va a ejecutar tareas de su aplicación web, es mejor editar crontab 
para el usuario www-data.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:~$ sudo crontab -lu www-data
# m h  dom mon dow   command
*/5 * * * * php5 /var/www/yii do/tasks &amp;gt;&amp;gt; /var/www/tasks.log
00 15 * * 1-5 /var/www/backuper.sh&lt;/pre&gt;
&lt;p&gt;En esta salida, puede echar un vistazo a un ejemplo de una tabla cron. Como puede ver, cada línea está programada por minuto, hora, día del 
mes, mes y día de la semana. Cada campo puede ser un asterisco, lo que 
significa que cada valor del campo. También puede usar conjuntos y 
rangos usando comas y guiones. Seguir un rango con una barra inclinada 
especifica saltos del valor del número a través del rango. En
 este ejemplo, el primer comando se ejecutará cada cinco minutos, y el 
segundo comando se ejecutará de lunes a viernes a las 15:00.&lt;/p&gt;
&lt;p&gt;Para editar 
esta lista, ejecute crontab con la tecla &lt;code class="inline"&gt;-e&lt;/code&gt; en lugar de &lt;code class="inline"&gt;-l&lt;/code&gt;. La lista 
cron se abrirá en su editor predeterminado. Use la opción &lt;code class="inline"&gt;-r&lt;/code&gt; para borrar
 la lista cron.&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;&lt;b&gt;Supervisión del rendimiento&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;La
 parte superior del comando muestra información de resumen del sistema y
 proporciona una vista dinámica en tiempo real de los procesos del 
sistema en ejecución. Presione &lt;code class="inline"&gt;Shift-M&lt;/code&gt; para ordenar los procesos por uso
 de memoria, o &lt;code class="inline"&gt;Shift-P&lt;/code&gt; para ordenar por uso de CPU.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;top - 21:33:02 up 308 days, 21:24,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    501800 total,   471348 used,    30452 free,    49672 buffers
KiB Swap:  4194300 total,    56192 used,  4138108 free.   149488 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND     
16269 www-data  20   0  348592  38884  12044 S  0.0  7.7   0:02.42 php5        
26533 www-data  20   0  409516  38488  24312 S  0.0  7.7   1:00.04 php5-fpm    
 1076 mysql     20   0  887824  32748   1616 S  0.0  6.5 276:46.59 mysqld      
  862 syslog    20   0  256612  31428    368 S  0.0  6.3  32:45.88 rsyslogd    
18901 root      20   0  105632   4316   3248 S  0.0  0.9   0:00.04 sshd        
25393 www-data  20   0   87356   4312   1564 S  0.0  0.9   4:46.92 nginx       
27846 memcache  20   0  328464   3828    252 S  0.0  0.8   1:04.30 memcached &lt;/pre&gt;
&lt;p&gt;Para mostrar la cantidad de memoria libre y usada en el sistema, use el comando &lt;code class="inline"&gt;free&lt;/code&gt;. Agregue la opción &lt;code class="inline"&gt;-h&lt;/code&gt; para mostrar los campos de salida en formato legible para las personas.&lt;br&gt;&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          490M       453M        36M        23M        46M       140M
-/+ buffers/cache:       265M       224M
Swap:         4.0G        54M       3.9G&lt;/pre&gt;
&lt;p&gt;Otro comando útil es &lt;code class="inline"&gt;df&lt;/code&gt;, que es un comando para informar el uso del espacio de disco del sistema de archivos. Puede llamarlo con la opción &lt;code class="inline"&gt;-a&lt;/code&gt; para mostrar todos los sistemas de 
archivos de su servidor. Además, no olvide agregar la opción &lt;code class="inline"&gt;-h&lt;/code&gt; para el 
formato legible para humanos.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:~$ df -ah
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  6.3G   13G  34% /
udev            235M  4.0K  235M   1% /dev
tmpfs            50M  344K   49M   1% /run&lt;/pre&gt;
&lt;h3&gt;&lt;b&gt;Historial de línea de comando&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Puedes usar el &lt;code class="inline"&gt;!!&lt;/code&gt; comando para repetir el comando anterior, o use &lt;code class="inline"&gt;sudo !!&lt;/code&gt; si olvidó ejecutar un comando con &lt;code class="inline"&gt;sudo&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;user@server:/var/www$ chmod 777 log
chmod: changing permissions of ‘log’: Operation not permitted
user@server:/var/www$ sudo !!
sudo chmod 777 log&lt;/pre&gt;
&lt;p&gt;Si olvidó 
la sintaxis de los comandos o se siente flojo al escribir una consulta 
de comando grande, puede usar &lt;code class="inline"&gt;history&lt;/code&gt; para mostrar su historial de 
comandos. Es bueno combinar este comando con 
comandos de filtro de cadenas como &lt;code class="inline"&gt;grep&lt;/code&gt;, &lt;code class="inline"&gt;tail&lt;/code&gt; y otros para encontrar 
exactamente lo que desea.&lt;/p&gt;
&lt;pre class="brush: powershell noskimlinks noskimwords"&gt;history | tail
history | grep crontab
history | egrep -i 'ssh|ftp'&lt;/pre&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Usar la consola no es ciencia de cohetes. Los sistemas Unix y Linux son 
fáciles de entender y usar debido a su diseño simple y buena 
documentación. Espero
 que este artículo te haga sentir bastante cómodo con la línea de 
comandos y te lleve al próximo nivel de administración de tus 
aplicaciones web con la línea de comando.&lt;/p&gt;
&lt;p&gt;Si
 tiene alguna pregunta o desea compartir sus comandos de consola 
favoritos, no dude en dejar un comentario debajo del artículo.&lt;/p&gt;
&lt;h2&gt;Otras 
lecturas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://archive.oreilly.com/linux/cmd/" rel="external" target="_blank"&gt;Directorio de Comandos de Linux&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html" rel="external" target="_blank"&gt;Guía Bash para 
principiantes&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://help.ubuntu.com/community/UsingTheTerminal" rel="external" target="_blank"&gt;Usando la Terminal&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://lifehacker.com/how-can-i-quickly-learn-terminal-commands-1494082178" rel="external" target="_blank"&gt;¿Cómo puedo aprender 
rápidamente los comandos de terminal?&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://code.tutsplus.com/tutorials/the-command-line-is-your-best-friend--net-30362" rel="external" target="_blank"&gt;La línea de comando es tu 
mejor amigo&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/1203/posts/26161/preview_image/WP_20160330_002.jpg" medium="image" width="200" height="138"/>
    <published>2016-09-02T12:00:17.000Z</published>
    <updated>2016-09-02T12:00:17.000Z</updated>
    <author>
      <name>Anton Bagaiev</name>
    </author>
  </entry>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-22303</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/tutorials/using-lets-encrypt-ssl-with-your-wordpress-project--cms-22303"/>
    <title>Cómo Usar Let's Encrypt SSL En Tu Proyecto WordPress</title>
    <content type="html">&lt;figure class="post_image"&gt;&lt;img alt="" data-src="https://cms-assets.tutsplus.com/uploads/users/48/posts/22303/image/feature2.jpg"&gt;&lt;/figure&gt;&lt;h2&gt;¿Qué es Let's Encrypt?&lt;/h2&gt;
&lt;p&gt;Durante años, adquirir, renovar, instalar y gestionar certificados SSL (Secure Sockets Layer) me abrumaba con sus gastos y complejidad. Ahora, &lt;a href="https://letsencrypt.org" target="_self"&gt;Let's Encryrpt&lt;/a&gt; es bastante sencillo y gratuito.&lt;/p&gt;
&lt;p&gt;Let's Encryrpt es un certificado de autoridad emergente, gratuito y automatizado traído de una corporación para el bien público de California llamada Internet Security Research Group—también tiene el estatus de organización sin ánimo de lucro. &lt;/p&gt;
&lt;p&gt;Su objetivo es convertir el protocolo de navegación en Internet HTTPS en un estándar para asegurar mayor privacidad y seguridad en la web. Mozilla y la Electronic Frontier Foundation son dos de us mayores patrocinadores.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt=""&gt;&lt;img alt="Whats Lets Encrypt Platinum sponsors" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/sponsors.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Let's Encrypt se introdujo al dominio público como versión beta en Diciembre, así que ya puedo guiarte a través de la exploración de sus servicios.&lt;/p&gt;
&lt;p&gt;En este tutorial, te mostraré como he instalado Let's Encrypt en algunas de mis webs, incluyendo mi web de consultoría realizada con WordPress, &lt;a href="http://lookahead.io"&gt;http://lookahead.io&lt;/a&gt;, que pronto pasará a ser https://.&lt;/p&gt;
&lt;p&gt;Antes de comenzar, por favor recuerda que intento participar en las conversaciones del final del artículo. Si tienes cualquier duda o sugerencia, hazme el favor de comentarlo o &lt;a href="https://twitter.com/intent/user?screen_name=reifman" target="_self"&gt;contáctame vía Twitter @reifman&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Resumen de las Características de Let's Encrypt&lt;/h2&gt;
&lt;p&gt;Let's Encrypt se ejecuta sobre Python trabajando con Apache para automatizar el registro y la renovación del certificado, simplificando el proceso de activación de la función HTTPS para cualquier web, incluido WordPress. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Aquí tienes los beneficios clave que proporciona Let's Encrypt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Gratuito:&lt;/strong&gt; Cualquiera con un nombre de dominio puede registrar un certificado verificado sin coste.&lt;/li&gt; &lt;li&gt; &lt;strong&gt;Automático:&lt;/strong&gt; Un servidor web Apache puede fácilmente adquirir un certificado, configurarlo con seguridad, y gestionar su renovación.&lt;/li&gt; &lt;li&gt; &lt;strong&gt;Seguro:&lt;/strong&gt; Let's Encrypt anticipa las mejores prácticas de seguridad TLS, tanto como Autoridad de Certificación como ayudando a los sitios a mantener seguros sus servidores.&lt;/li&gt; &lt;li&gt; &lt;strong&gt;Transparente:&lt;/strong&gt; Todas las transacciones son registradas públicamente y están disponibles para su inspección.&lt;/li&gt; &lt;li&gt; &lt;strong&gt;Abierto:&lt;/strong&gt; La expedición automática y los protocolos de renovación serán publicados como un estándar abierto.&lt;/li&gt; &lt;li&gt; &lt;strong&gt;Cooperativo:&lt;/strong&gt; Let’s Encrypt es fruto de un esfuerzo comunitario que beneficia a todos.&lt;/li&gt; &lt;/ul&gt;
&lt;h2&gt;Instalar SSL con Let's Encrypt&lt;/h2&gt;
&lt;p&gt;Empecemos actualizando mi servidor, Apache Ubuntu.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;sudo apt-get update&lt;/pre&gt;
&lt;p&gt;Si no tienes Git instalado en tu servidor, es mejor disponer de él para instalar Let's Encrypt.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;sudo apt-get install git&lt;/pre&gt;
&lt;p&gt;Una vez instalado, clona el &lt;a href="https://github.com/letsencrypt/letsencrypt" target="_self"&gt;software Let's Encrypt&lt;/a&gt; en el subdirectorio de Apache opcional para aplicaciones de terceros.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt&lt;/pre&gt;
&lt;p&gt;La primera vez experimenté instalando Let's Encrypt en mi aplicación para noticias Fever, no en WordPress. Lo alojé en &lt;a href="http://fever.lookahead.io"&gt;http://fever.lookahead.io&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;cd /opt/letsencrypt
./letsencrypt-auto --apache -d fever.lookahead.io&lt;/pre&gt;
&lt;h3&gt;El Asistente de Instalación&lt;/h3&gt;
&lt;p&gt;Para empezar, te solicitará tu dirección de correo electrónico:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Installation Email Request" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/email%20addr.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Después te mostrará los Términos del Servicio:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Installation Terms of Service" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/install%20-%20tos.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Let's Encrypt te da la oportunidad de ofrecer HTTPS como opción secundaria o dirigir todo el tráfico a HTTPS:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Select HTTPS mode" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/install%20-%20exclusive.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Lo tienes solucionado en minutos:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Congratulations" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/install%20-%20congrats.jpg"&gt;&lt;/figure&gt;&lt;p&gt;También te mostrará algunas notas sobre la expiración del certificado y su renovación:&lt;/p&gt;
&lt;pre class="brush: plain noskimlinks noskimwords"&gt;IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/lookahead.io/fullchain.pem. Your cert will
   expire on 2016-05-03. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le&lt;/pre&gt;
&lt;h3&gt;Instalación en WordPress&lt;/h3&gt;
&lt;p&gt;Instalar Let's Encrypt en mi web de consultoría realizada con WordPress, fue igualmente simple. Sólo existe una pequeña diferencia. Pregunté a Let's Encrypt que admitiese también un subdominio (www.sub-domain):&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;cd /opt/letsencrypt
./letsencrypt-auto --apache -d lookahead.io -d www.lookahead.io&lt;/pre&gt;
&lt;p&gt;Puedes ir y verlo ya tanto con HTTP, como con HTTPS, pero acabarás aquí, &lt;a href="https://lookahead.io"&gt;https://lookahead.io&lt;/a&gt;:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Lookahead Consulting" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/lookahead%20home.jpg"&gt;&lt;/figure&gt;&lt;h3&gt;Informes SSL&lt;/h3&gt;
&lt;p&gt;Puedes ir a sitios como &lt;a href="https://www.ssllabs.com" target="_self"&gt;Qualys SSL Labs&lt;/a&gt; para obtener un informe sobre tu capacidad SSL:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.ssllabs.com/ssltest/analyze.html?d=fever.lookahead.io"&gt;https://www.ssllabs.com/ssltest/analyze.html?d=fever.lookahead.io&lt;/a&gt;&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt SSL Qualys Labs" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/qs%20-%20ssl.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Aquí tienes la página de autentificación:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt SSL Qualys Labs Authentication" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/ssl-auth.jpg"&gt;&lt;/figure&gt;&lt;h3&gt;Auto-Renovación del Certificado&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;La auto-renovación es bastante sencilla también. Primero, cogemos el script de renovación y le asignamos privilegios de ejecución:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;sudo curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew
sudo chmod +x /usr/local/sbin/le-renew&lt;/pre&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Set up auto renewals" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/auto%20renewal.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Después ejecutamos el script para cada dominio:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;sudo le-renew lookahead.io
Checking expiration date for fever.lookahead.io...
The certificate is up to date, no need for renewal (89 days left).&lt;/pre&gt;
&lt;p&gt;Y puedes configurar un cron job para que se ejecute con regularidad:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;crontab -e&lt;/pre&gt;
&lt;p&gt;Añade esta línea:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;30 2 * * 1 /usr/local/sbin/le-renew lookahead.io &amp;gt;&amp;gt; /var/log/le-renew.log&lt;/pre&gt;
&lt;h3&gt;Solución de Problemas&lt;/h3&gt;
&lt;p&gt;Caí en una pocas incidencias que creo que compartiré con vosotros. Cuando instalé SSL para mi antiguo &lt;a href="http://communitystarter.org" target="_self"&gt;proyecto Community Starter open-source&lt;/a&gt; (tanto el dominio raíz como www), la encriptación me devolvió el siguiente error:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;We were unable to find a vhost with a ServerName or Address of 
    │ www.communitystarter.org.
    │ Which virtual host would you like to choose? &lt;/pre&gt;
&lt;p&gt;Yo había indicado un comodín como alias de servidor en mi archivo config:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;&amp;lt;VirtualHost *:80&amp;gt;
        ServerName communitystarter.org
        ServerAlias *.communitystarter.org
        DocumentRoot /var/www/communitystarter/
&lt;/pre&gt;
&lt;p&gt;Este cambio lo solucionó, añadiendo un alias para www holdouts:&lt;/p&gt;
&lt;pre class="brush: plain noskimlinks noskimwords"&gt;&amp;lt;VirtualHost *:80&amp;gt;
        ServerName communitystarter.org
        ServerAlias www.communitystarter.org
        ServerAlias *.communitystarter.org
        DocumentRoot /var/www/communitystarter/
&lt;/pre&gt;
&lt;p&gt;Después falló el vídeo de Vimeo incrustado en la página de inicio:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Vimeo Not Working with HTTPS" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/no%20video.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Simplemente tuve que cambiar el iframe del reproductor de Vimeo para que usase HTTPS:&lt;/p&gt;
&lt;pre class="brush: html noskimlinks noskimwords"&gt;&amp;lt;!-- ***************** - START Video - ***************** --&amp;gt;
&amp;lt;div class="video-wrap video_left"&amp;gt;
&amp;lt;div class="video-main"&amp;gt;
&amp;lt;div class="video-frame"&amp;gt;
&amp;lt;iframe src="https://player.vimeo.com/video/37639283" title="introduction to newscloud's community starter" scrolling="no" width="572" height="312" frameborder="0" marginheight="0"&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end video-frame --&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end video-main --&amp;gt;
&amp;lt;div class="video-sub"&amp;gt;
&amp;lt;h2&amp;gt;NewsCloud's Community Starter&amp;lt;/h2&amp;gt;
 &amp;lt;p&amp;gt;Community Starter is a simple, affordable platform to launch social media communities and extend existing websites. It provides a suite of Facebook-connected interactive features that can help you host a vibrant online community for your neighborhood, topic, community group, nonprofit, membership association or city.&amp;lt;/p&amp;gt;
&amp;lt;a href="/how-community-foundations-can-build-engaged-local-communities-with-newscloud.html" class="ka_button small_button small_tealgrey"&amp;gt;&amp;lt;span&amp;gt;Start your community →&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br class="clear" /&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end video-sub --&amp;gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- end video-wrap --&amp;gt;
&amp;lt;!-- ***************** - END Video - ***************** --&amp;gt;&lt;/pre&gt;
&lt;p&gt;Problema resuelto:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Vimeo Working with HTTPS" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/video%20restored.jpg"&gt;&lt;/figure&gt;&lt;h2&gt;Para Terminar&lt;/h2&gt;
&lt;p&gt;Estoy bastante asombrado con los logros que la comunidad Let's Encrypt ha proporcionado en cuanto a calidad y facilidad de uso. Los profesionales de la publicación web de todo el mundo se pueden aprovechar los beneficios de SSL de forma sencilla y gratuita. ¡Gracias a EFF, Mozilla y let's Encrypt!&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Donate " data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/install%20-%20donate.jpg"&gt;&lt;/figure&gt;&lt;p&gt;También puedes donar tanto a let's Encrypt como a EFF para apoyar su labor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://letsencrypt.org/donate" target="_self"&gt;Donar directamente a Let's Encrypt&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://eff.org/donate-le" target="_self"&gt;Donar directamente a EFF&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;Puedes &lt;a href="https://letsencrypt.org/howitworks/" target="_self"&gt;aprender más detalles técnicos sobre su software aquí&lt;/a&gt;. Let's Encrypt también dispone de un bien estructurado &lt;a href="https://community.letsencrypt.org/" target="_self"&gt;foro para la comunidad&lt;/a&gt;:&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Lets Encrypt Community Forum" data-src="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/image/community%20forum.jpg"&gt;&lt;/figure&gt;&lt;h3&gt;¿Qué Viene Después?&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Let's Encrypt está trabajando de forma activa en terminar su primer lanzamiento público: &lt;/p&gt;
&lt;blockquote&gt;Tenemos más trabajo que realizar antes de sentirnos satisfechos con la versión beta por completo, particularmente en aspectos referidos a la experiencia del usuario. La automatización es una piedra angular en nuestra estrategia, y necesitamos asegurarnos de que el cliente trabaja de forma fluida y segura en un amplio rango de plataformas.&lt;br&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para estar al día con el último código, simplemente actualiza el árbol de git ocasionalmente:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;cd /opt/letsencrypt
sudo git pull&lt;/pre&gt;
&lt;p&gt;Mi web WordPress principal se ejecuta con Varnish 3.x en la actualidad. Esto no funciona de forma directa con Let's Encrypt. Probablemente me lleve algún tiempo encontrar una solución para este tema.&lt;/p&gt;
&lt;p&gt;Mientras tanto, si estás buscando otras utilidades que te ayuden a aumentar tu colección de herramientas para WordPress o código para prepararte y llegar a estar más versado en WordPress, no olvides ver &lt;a href="https://themeforest.net/category/wordpress" rel="external"&gt;lo que tenemos disponible en Envato Market&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Si tienes preguntas, por favor publícalas aquí abajo. O &lt;a href="https://twitter.com/intent/user?screen_name=reifman" target="_self"&gt;puedes contactarme en Twitter @reifman&lt;/a&gt;. Por favor visita &lt;a href="http://tutsplus.com/authors/jeff-reifman" target="_self"&gt;mi página de formador en Enavato Tuts+&lt;/a&gt; para ver otros tutoriales que he escrito, como &lt;a href="http://code.tutsplus.com/tutorials/clone-wordpress-in-linux--cms-25059" target="_self"&gt;Clonar WordPress en Linux (en 90 segundos)&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Enlaces Relacionados&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://letsencrypt.org" target="_self"&gt;Let's Encrypt&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04"&gt;Cómo Securizar Apache con Let's Encrypt en Ubuntu 14.04 (Digital Ocean)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04"&gt;Cómo Securizar Nginx con Let's Encrypt en Ubuntu 14.04 (Digital Ocean)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/317/posts/22303/preview_image/preview 2.jpg" medium="image" width="200" height="138"/>
    <published>2016-05-24T12:00:51.000Z</published>
    <updated>2016-05-24T12:00:51.000Z</updated>
    <author>
      <name>Jeff Reifman</name>
    </author>
  </entry>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-26128</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/articles/new-coffee-break-course-using-linux-for-ruby-development--cms-26128"/>
    <title>El curso del Coffee Break: usar Linux para el desarrollo de Ruby</title>
    <content type="html">&lt;p&gt;Want to work in Ruby? Consider switching to Linux.&lt;/p&gt;

&lt;p&gt;After all, the Ruby ecosystem grew up on Unix and Linux operating systems like Mac OS X or Ubuntu. For this reason, Ruby native packages and build tools are often Linux-first and may perform poorly or break when run under Windows.&lt;/p&gt;

&lt;figure class="post_image"&gt;
  &lt;img alt="Ruby in Linux not Windows" data-src="https://cms-assets.tutsplus.com/uploads/users/48/posts/26128/image/ruby-linux.png"&gt;
&lt;/figure&gt;

&lt;p&gt;Envato Tuts+ instructor &lt;a href="https://tutsplus.com/authors/jose-mota?ec_promo=coffeebreak" target="_self"&gt;José Mota&lt;/a&gt; explains more about this in his recent Coffee Break Course, &lt;a href="https://code.tutsplus.com/courses/why-use-linux-for-ruby-development?ec_promo=coffeebreak" target="_self"&gt;Why Use Linux for Ruby Development?&lt;/a&gt; He explains some of the advantages of using the Linux operating system over Windows for Ruby development. You'll learn how the Ruby tooling and ecosystem is optimized for the Linux environment, and you'll get some pointers for transitioning into a Linux environment.&lt;/p&gt;

&lt;p&gt;You'll learn all of this in a quick, ten-minute video course. Watch the introduction below to find out more.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="//fast.wistia.net/embed/iframe/k5xt1vsmew" width="600" height="338" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed"&gt;&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;You can take our new Coffee Break Course straight away with a &lt;a href="https://tutsplus.com/subscribe-with-elements?ec_promo=coffeebreak" rel="external" target="_blank"&gt;subscription to Envato Elements&lt;/a&gt;. For a single low monthly fee, you get access not only to this course, but also to our growing library of over 1,000 video courses and industry-leading eBooks on Envato Tuts+. &lt;/p&gt;

&lt;p&gt;Plus you also get unlimited downloads from the huge Envato Elements library of 870,000+ creative assets. Create with unique fonts, photos, graphics and templates, and deliver better projects faster.&lt;/p&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/48/posts/26128/preview_image/rubylinux.png" medium="image" width="200" height="138"/>
    <published>2016-03-17T18:57:42.000Z</published>
    <updated>2016-03-17T18:57:42.000Z</updated>
    <author>
      <name>Andrew Blackman</name>
    </author>
  </entry>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-25934</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/tutorials/how-to-use-swift-on-linux--cms-25934"/>
    <title>Cómo utilizar Swift en Linux</title>
    <content type="html">
&lt;h2&gt; &lt;span class="sectionnum"&gt;1.&lt;/span&gt; Estado de la Unión&lt;/h2&gt;
&lt;p&gt;Como con cualquier tecnología nueva y emergente o el lenguaje, siempre es importante estar al tanto de las últimas noticias y actualizaciones. Swift como un lenguaje de programación no es diferente. Apple ha lanzado muchas novedades y mejoras durante la corta existencia de Swift. Así que primero hay que prestar atención a los cambios del lenguaje. Después veremos todo esto del Open Source. Eso es otro gran tema en sí mismo.&lt;/p&gt;
&lt;p&gt;El hecho de que Swift se haya hecho open source no significa que puedes comenzar a escribir aplicaciones con ese lenguaje en cualquier lugar. Aun hay algunas pautas que Apple sugiere seguir como las plataformas soportadas, versiones del lenguaje y las herramientas alrededor que están disponibles actualmente. Toda esta información y mucho más puede encontrarse en &lt;a href="https://swift.org/" target="_self"&gt;Swift.org&lt;/a&gt;. Así que sería una buena idea guardar este sitio web en tus favoritos y visitarlo a menudo para asegurarte de estar al día con los últimos acontecimientos.&lt;/p&gt;
&lt;p&gt;Dicho esto, tiene que haber un lugar para empezar. En el momento de escribir este artículo el &lt;a href="https://swift.org/download/#latest-development-snapshots" target="_self"&gt;último release&lt;/a&gt; disponible es Swift 2.2 corriendo en las tradicionales plataformas de Apple, así como en Ubuntu Linux 15.10 y 14.04. Y aquí es donde comienza nuestra historia.&lt;/p&gt;
&lt;h2&gt; &lt;span class="sectionnum"&gt;2.&lt;/span&gt; Configuración&lt;/h2&gt;
&lt;p&gt;Para realmente probar la apertura del lenguaje de programación Swift, tendrás que configurar un entorno de desarrollo que coincida con uno de los releases (liberaciónes) actuales. Eso es exactamente lo que va a suceder en este paso. Si ya tienes una máquina ejecutando la versión adecuada de Ubuntu Linux, entonces estás a mitad de camino a tu destino. Si no, hay unos cuantos pasos para llegar a donde quieres ir.&lt;/p&gt;
&lt;p&gt;Si no tienes un sistema Linux a tu disposición, no te preocupes. En los siguientes pasos, creará un entorno virtual que coincide con las especificaciones del release actual.&lt;/p&gt;
&lt;p&gt;Puedes utilizar cualquier tipo de software de virtualización que te guste o con el que te sientas cómod@. Casualmente me gusta la combinación de &lt;a href="https://www.virtualbox.org/" target="_self"&gt;VirtualBox &lt;/a&gt;y &lt;a href="https://www.vagrantup.com/" target="_self"&gt;Vagrant&lt;/a&gt;. Si nunca han oído hablar de cualquiera de estos productos, aquí esta un resumen básico.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.virtualbox.org/" target="_self"&gt;VirtualBox&lt;/a&gt; es lo que se conoce como software de virtualización que permite ejecutar algún otro sistema operativo (cliente) sobre su sistema operativo nativo instalado (host). &lt;a href="https://www.vagrantup.com/" target="_self"&gt;Vagrant&lt;/a&gt; es una pieza adicional de software que permite fácilmente crear, configurar y ejecutar los sistemas operativos de cliente. No tienes que usar a &lt;a href="https://www.vagrantup.com/" target="_self"&gt;Vagrant&lt;/a&gt; si no quiere. Pero creo que facilita algunos de los siguientes pasos.&lt;/p&gt;
&lt;h3&gt;Paso 1: Instalar VirtualBox&lt;/h3&gt;
&lt;p&gt;El primer paso en la creación de su nuevo entorno de desarrollo Swift es descargar e instalar &lt;a href="https://www.virtualbox.org/" target="_self"&gt;VirtualBox&lt;/a&gt;. Dirígete a la &lt;a href="https://www.virtualbox.org/wiki/Downloads" target="_self"&gt;página de descarga&lt;/a&gt;, selecciona la versión de &lt;a href="https://www.virtualbox.org/" target="_self"&gt;VirtualBox &lt;/a&gt;que sea compatible con tu sistema host (anfitrión) y descarga al instalador. Estoy usando un host de OS X, así que estoy seleccionando esa versión del instalador.&lt;/p&gt;
&lt;p&gt;Una vez descargado, el proceso de instalación es bastante sencillo. Sólo tienes que seguir las instrucciones del instalador.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="VirtualBox Installation On OS X" data-src="https://cms-assets.tutsplus.com/uploads/users/41/posts/25934/image/figure-virtual-box-1.jpg"&gt;&lt;/figure&gt;&lt;h3&gt;&lt;figure class="post_image"&gt;Paso 2: Instalación de Vagrant&lt;/figure&gt;&lt;/h3&gt;
&lt;p&gt;Como dije anteriormente, puedes conseguir un entorno virtual sin usar &lt;a href="https://www.vagrantup.com/" target="_self"&gt;Vagrant&lt;/a&gt;, sin embargo esta pequeña joya hace increíblemente fácil el proceso. En primer lugar, necesitas abrir en tu navegador la &lt;a href="https://www.vagrantup.com/downloads.html" target="_self"&gt;página de descarga&lt;/a&gt; de Vagrant.&lt;/p&gt;
&lt;p&gt;Elije la versión de &lt;a href="https://www.vagrantup.com/" target="_self"&gt;Vagrant&lt;/a&gt; que sea compatible con tu sistema operativo del host. Una vez hayas descargado al instalador, simplemente necesitas realizar los pasos para la instalación.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Vagrant Installation On OS X" data-src="https://cms-assets.tutsplus.com/uploads/users/41/posts/25934/image/figure-vagrant-1.jpg"&gt;&lt;/figure&gt;&lt;p&gt;Ahora tienes todas las herramientas que necesitas para crear rápidamente una máquina virtual de Ubuntu Linux. Pero ¿que hay de obtener una copia de Linux para instalar? Bueno, eso es otra cosa en la que utilizaremos a nuestro nuevo amigo &lt;a href="https://www.vagrantup.com/" target="_self"&gt;Vagrant&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt; &lt;span class="sectionnum"&gt;3.&lt;/span&gt; Crear la Máquina Virtual&lt;/h2&gt;
&lt;p&gt;Ahora es el momento para finalmente crear la máquina virtual de Ubuntu Linux usando VirtualBox y Vagrant. Ahora comenzarás a ver el poder de usar Vagrant.&lt;/p&gt;
&lt;h3&gt;Paso 1: Configuración de Vagrant&lt;/h3&gt;
&lt;p&gt;Empezaremos por crear un directorio en algún lugar de tu equipo host. Normalmente yo comienzo creadolo en el escritorio y luego lo traslado en otro lugar cuando sea necesario. Dentro de ese directorio, cree un nuevo archivo vacío y dale el nombre de &lt;strong&gt;Vagrantfile&lt;/strong&gt;. El nombre del archivo es importante. Vagrant utilizará este archivo para su configuración.&lt;/p&gt;
&lt;p&gt;Ahora usarás algún código de configuración de &lt;a href="https://www.vagrantup.com/" rel="external" target="_blank"&gt;Vagrant&lt;/a&gt; para realizar los pasos siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descargar Ubuntu Linux y hacerlo correr en &lt;a href="https://www.virtualbox.org/" rel="external" target="_blank"&gt;VirtualBox&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Instalar el compilador Clang&lt;/li&gt; &lt;li&gt;Descargar e instalar Swift&lt;/li&gt; &lt;li&gt;Añadir Swift a la variable &lt;code class="inline"&gt;PATH&lt;/code&gt; para usar desde cualquier lugar&lt;/li&gt; &lt;/ul&gt;
&lt;p&gt;¿Por qué harás todas estas cosas? Porque eso es exactamente lo que nos dicen las&lt;a href="https://swift.org/getting-started/#installing-swift" target="_self"&gt; instrucciones de instalación&lt;/a&gt; en &lt;a href="https://swift.org/" target="_self"&gt;Swift.org&lt;/a&gt;. Pero en lugar de hacerlo todo manualmente, lo haremos todo desde la comodidad de un solo script de Ruby.&lt;/p&gt;
&lt;p&gt;¿Dónde está este script de Ruby? Es el archivo &lt;strong&gt;Vagrantfile&lt;/strong&gt;. A pesar de que el Vagrantfile contiene Ruby, no necesitamos saber usar Ruby. La mayor parte será simplemente asignar valores y ejecutar algunos scripts en el shell. Abre el Vagrantfile en tu editor de texto favorito y agrega el siguiente código:&lt;/p&gt;
&lt;pre class="brush: ruby noskimlinks noskimwords"&gt;Vagrant.configure(2) do |config|
    config.vm.box = "http://cloud-images.ubuntu.com/vagrant/trusty/20151218/trusty-server-cloudimg-amd64-vagrant-disk1.box"

  config.vm.provision "shell", inline: &amp;lt;&amp;lt;-SHELL
  sudo apt-get —assume-yes install clang

  curl -O https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-22-a/swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu14.04.tar.gz

  tar zxf swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu14.04.tar.gz

  echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu14.04/usr/bin:\"${PATH}\"" &amp;gt;&amp;gt; .profile
     echo "Ready to rock and roll"
    SHELL
end&lt;/pre&gt;
&lt;p&gt;¿Qué es exactamente lo que hace este código? Echemos un vistazo a las líneas mas importantes en esta secuencia de comandos:&lt;/p&gt;
&lt;pre class="brush: ruby noskimlinks noskimwords"&gt;Vagrant.configure(2) do |config|&lt;/pre&gt;
&lt;p&gt;El método &lt;code class="inline"&gt;configure&lt;/code&gt; pasando el valor de&lt;code class="inline"&gt; 2&lt;/code&gt; le dirá a Vagrant que el siguiente script esta usando una configuración &lt;strong&gt;v2&lt;/strong&gt;. Esta es la versión principal actual de Vagrant.&lt;/p&gt;
&lt;pre class="brush: ruby noskimlinks noskimwords"&gt;config.vm.box = "http://cloud-images.ubuntu.com/vagrant/trusty/20151218/trusty-server-cloudimg-amd64-vagrant-disk1.box"&lt;/pre&gt;
&lt;p&gt;Esta línea establecerá la ubicación de donde será descargada e instalada la imagen de disco de Ubuntu. Automáticamente!&lt;br&gt;&lt;/p&gt;
&lt;pre class="brush: ruby noskimlinks noskimwords"&gt;config.vm.provision "shell", inline: &amp;lt;&amp;lt;-SHELL&lt;/pre&gt;
&lt;p&gt;Ahora creamos un bloque de código que ejecuta las líneas una a una dentro de un shell del sistema operativo cliente.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;sudo apt-get —assume-yes install clang&lt;/pre&gt;
&lt;p&gt;Utilizar el instalador de apt-get para descargar e instalar el compilador Clang que es requerido por Swift.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;curl -O https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-22-a/swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu14.04.tar.gz&lt;/pre&gt;
&lt;p&gt;Utilizar &lt;strong&gt;curl &lt;/strong&gt;para descargar la versión apropiada de Swift para instalar en el equipo.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;tar zxf swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu14.04.tar.gz&lt;/pre&gt;
&lt;p&gt;Descomprime la versión de Swift que acabas de descargar en el ultimo paso.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-22-a-ubuntu14.04/usr/bin:\"${PATH}\"" &amp;gt;&amp;gt; .profile&lt;/pre&gt;
&lt;p&gt;Incluye la ubicación del binario de Swift en la variable PATH en el equipo cliente para que puedas hacer referencia a Swift de cualquier lugar.&lt;/p&gt;
&lt;h3&gt;Paso 2: Ejecuta el Script&lt;/h3&gt;
&lt;p&gt;Ahora que has creado este &lt;strong&gt;Vagrantfile &lt;/strong&gt;para correr automaticamente a través de la configuración necesaria para correr Swift en Linux, es tiempo para ejecutarlo. Abra una ventana de linea de comandos y cambia los directorios al mismo directorio en el que creaste la &lt;strong&gt;Vagrantfile&lt;/strong&gt;. A continuación, ejecuta el siguiente comando:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;vagrant up&lt;/pre&gt;
&lt;p&gt;Espera unos momentos. Dependiendo de tu velocidad de conexión a internet, este proceso puede tardar algún tiempo. Una vez que se ha completado todo el proceso, deberías poder ver el resultado en el ultimo texto de salida &lt;strong&gt;Vagrantfile&lt;/strong&gt;,&lt;strong&gt; Ready to rock y roll&lt;/strong&gt;.&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;Paso 3: Verificar que todo Funciona Correctamente&lt;/h3&gt;
&lt;p&gt;La última parte de la configuración es simplemente verificar que todo lo que ha hecho a este punto funciona exitosamente. Primero, necesitará realizar una conexión a tu nueva máquina virtual ejecutando el siguiente comando:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;vagrant ssh&lt;/pre&gt;
&lt;p&gt;La linea de comandos pasara de estar en tu máquina local a ser una sesión de ssh que mostrará la linea de comandos de la máquina cliente. Desde aquí, ahora debe ser capaz de verificar la instalación de Swift con el siguiente comando:&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;swift --version&lt;/pre&gt;
&lt;p&gt;Si todo ha salido bien, deberías ver una salida similar a lo siguiente:&lt;br&gt;&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;Swift version 2.2-dev (LLVM *, CLANG *, Swift *)&lt;/pre&gt;
&lt;p&gt;Los detalles de los valores que aparecen después de LLVM, CLANG y Swift en paréntesis no importan. Todo lo que queremos asegurarnos de que ver algo similar a la línea de arriba.&lt;br&gt;&lt;/p&gt;
&lt;h2&gt; &lt;span class="sectionnum"&gt;4.&lt;/span&gt; Obtengamos Swift&lt;/h2&gt;
&lt;p&gt;Ahora que has creado un entorno de desarrollo que es capaz de ejecutar código Swift, es tiempo para probarlo. Desde este punto, hay tantas cosas maravillosas que hacer con Swift, como ejecución de Swift código usando el &lt;a href="https://swift.org/getting-started/#using-the-repl" target="_self"&gt;REPL&lt;/a&gt;, aprovechando el&lt;a href="https://swift.org/getting-started/#using-the-build-system" target="_self"&gt; sistema de construcción (build system)&lt;/a&gt; y hasta aprender a usar el &lt;a href="https://swift.org/getting-started/#using-the-lldb-debugger" target="_self"&gt;depurador&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si has seguido este tutorial, asumiré que tienes por lo menos un conocimiento básico del lenguaje de programación Swift y sabes lo que es el REPL, así que no paso mucho tiempo allí. En cuanto el sistema de compilación y el depurador, te los dejo como ejercicios para que te adentres en la documentación de &lt;a href="https://swift.org/" rel="external" target="_blank"&gt;Swift.org&lt;/a&gt;. Así que por ahora,mantendré las cosas simples y escribiremos algún código sencillo que te permitirá Swift ejecutandose en Linux.&lt;/p&gt;
&lt;h3&gt;Paso 1: Escribiendo el Código&lt;/h3&gt;
&lt;p&gt;Vamos a crear un nuevo directorio en algún lugar en el equipo cliente y crear un nuevo archivo en ahí. Nombra al archivo &lt;strong&gt;sample.swift&lt;/strong&gt; y ábrelo en un editor de texto. Copia y pega el siguiente código en el archivo y guarda.&lt;/p&gt;
&lt;pre class="brush: javascript noskimlinks noskimwords"&gt;print("Running Swift on Linux is as easy as ...")

for num in 1...3 {
   print("\(num)")
}

print("That is all!")&lt;/pre&gt;
&lt;p&gt;Sí, entiendo que esto no es nada sorprendente, pero esta bien para nuestro propósito. Una vez que ha guardado este código Swift en &lt;strong&gt;sample.swift&lt;/strong&gt;, puedes salir su editor e ir a la línea de comando.&lt;/p&gt;
&lt;h3&gt;Paso 2: Compilar y Ejecutar&lt;/h3&gt;
&lt;p&gt;Ahora que estás en línea de comandos, necesitas pasar el nuevo archivo a través del compilador de Swift. La ubicación del compilador de Swift ya ha sido añadida a la variable &lt;code class="inline"&gt;PATH &lt;/code&gt;y lleva el nombre de &lt;strong&gt;swiftc&lt;/strong&gt;. Para compilar tu aplicación, todo lo que necesitas hacer es ejecutar el siguiente comando. Asegúrate de que estás en el mismo directorio que &lt;strong&gt;sample.swift &lt;/strong&gt;o tendrás que dar al compilador la ruta completa al archivo.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;swiftc sample.swift&lt;/pre&gt;
&lt;p&gt;Si la compilación se completó con éxito, ahora verás un nuevo archivo llamado &lt;strong&gt;sample &lt;/strong&gt;(sin extensión) en el mismo directorio. Para ejecutar la aplicación, basta con teclear &lt;code class="inline"&gt;./sample&lt;/code&gt; en la línea de comandos y podrás ver la siguiente salida:&lt;br&gt;&lt;/p&gt;
&lt;pre class="brush: plain noskimlinks noskimwords"&gt;Running Swift on Linux is as easy as ...
1
2
3
That is all!&lt;/pre&gt;
&lt;p&gt;Y ahí lo tienes. Una aplicación Swift simple pero funcionando y corriendo en Linux. ¡ Felicidades! ¡ Lo hiciste!&lt;/p&gt;
&lt;h2&gt;Aprender más en Nuestro Curso de Swift Sobre Linux&lt;/h2&gt;
&lt;p&gt;Si quieres aprender más sobre el uso de Swift en Linux, entonces visita el curso de &lt;a href="http://code.tutsplus.com/courses/how-to-use-swift-on-linux?ec_promo=teaser_post&amp;amp;ec_unit=bottom_of_post" target="_self"&gt;Derek Jensen sobre el uso de Swift en Linux&lt;/a&gt;. Derek te ayudará a tomar Swift open source para una prueba de manejo. Aprenderás a levantar y correr Swift en Linux de forma nativa o mediante una máquina virtual y escribirás una aplicación de cifrado simple para la línea de comandos de Linux. Todo en menos de una hora!&lt;/p&gt;
&lt;iframe src="//fast.wistia.net/embed/iframe/3c50agtsw3" width="600" height="375" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed"&gt;&lt;/iframe&gt;&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;A partir de aquí, el cielo es el límite. Puede aprender más acerca de Swift para hacer aplicaciones más interesantes y complejas. Puede regresar y aprender más sobre el uso de la &lt;a href="https://swift.org/getting-started/#using-the-build-system" target="_self"&gt;sistema de construcción&lt;/a&gt; (build System) o el &lt;a href="https://swift.org/getting-started/#using-the-lldb-debugger" target="_self"&gt;depurador &lt;/a&gt;para diseñar y depurar tus aplicaciones de forma mas sofisticada.&lt;/p&gt;
&lt;p&gt;La elección es tuya realmente. No importa lo que decidas hacer, debes definitivamente estar al día con todas las noticias y comunicados de Swift en &lt;a href="https://swift.org/" target="_self"&gt;Swift.org&lt;/a&gt;. Este sitio será la fuente de información más importante a la hora de escribir aplicaciones que utilizan el lenguaje de programación Swift en plataformas que no sean de OS X.&lt;/p&gt;&lt;p&gt;¡Sé el primero en conocer las nuevas traducciones–sigue &lt;a href="https://twitter.com/tutsplus_es"&gt;@tutsplus_es&lt;/a&gt; en Twitter!&lt;/p&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/41/posts/25934/preview_image/swiftlinux-1.png" medium="image" width="200" height="138"/>
    <published>2016-02-22T17:45:17.000Z</published>
    <updated>2016-02-22T17:45:17.000Z</updated>
    <author>
      <name>Derek Jensen</name>
    </author>
  </entry>
  <entry>
    <id>tag:code.tutsplus.com,2005:PostPresenter/cms-21596</id>
    <link rel="alternate" type="text/html" href="https://code.tutsplus.com/articles/using-hhvm-with-wordpress--cms-21596"/>
    <title>Usando HHVM con WordPress</title>
    <content type="html">
&lt;p&gt;En los últimos meses, HHVM ha sonado muy fuerte para la comunidad PHP. Desde el lanzamiento de WordPress 3.9, HHVM es ya 100% compatible con WordPress.&lt;/p&gt;
&lt;p&gt;Desafortunadamente, HHVM no esta listo para ser usado en produccion en ambientes self-hosted. En mi experiencia, HHVM falla alrededor una vez al día, lo cuál no lo hace viable para sitios donde la disponibilidad es muy importante. Recientemente, WP Engine ha lanzado el proyecto Mercury, el cuál permite perfectamente a HHVM soportar PHP 5.5 cuando este falle.&lt;/p&gt;
&lt;p&gt;En este artículo, vamos a instalar HHVM en un servidor Ubuntu corriendo la ultima version LTS, 14.04. Esto puede ser logrado ya sea usando un programa de virtualización como VirtualBox (Gratis) con un archivo ISO de Ubunt, o usando un sistema de almacenamiento en la nube. DigitalOcean ofrece servidores en la nube por $5 al mes, que es lo que vamos a utilizar en este tutorial.&lt;/p&gt;
&lt;p&gt;Lo primero que deben hacer es actualizar todos los paquetes y dependencias:&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt;$ sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Instalar MySQL&lt;/h2&gt;
&lt;p&gt;Ahora necesitan instalar MySQL, el motor de base de datos que utiliza WordPress.&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt;$ sudo apt-get install mysql-server&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Se debe establecer una contraseña root de MySQL por razones obvias de seguridad. Si eres muy consciente de la seguridad, debes también ejecutar &lt;code class="inline"&gt;$ mysql_secure_installation&lt;/code&gt; y seguir los pasos necesarios para asegurar tu servidor.&lt;/p&gt;
&lt;h2&gt;Instalar Nginx&lt;/h2&gt;
&lt;p&gt;Lo siguiente es configurar el servidor web. Yo prefiero Nginx porque es ligero, versátil y fácil de configurar.&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt;$ sudo apt-get install nginx&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Instalar HHVM&lt;/h2&gt;
&lt;p&gt;Ahora a instalar HHVM. No es tan sencillo como instalar otros paquetes porque no está disponible en el repositorio de Ubuntu. En su lugar, tenemos que descargarlo desde su sitio oficial junto con unas pocas dependencias.&lt;/p&gt;
&lt;pre class="brush: bash noskimlinks noskimwords"&gt;wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -
echo deb http://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
cd /tmp  &amp;amp;&amp;amp; wget http://security.ubuntu.com/ubuntu/pool/main/libm/libmemcached/libmemcached10_1.0.8-1ubuntu2_amd64.de...
sudo dpkg -i libmemcached10_1.0.8-1ubuntu2_amd64.deb &amp;amp;&amp;amp; rm libmemcached10_1.0.8-1ubuntu2_amd64.deb
sudo apt-get install -y libgnutls26
wget http://mirrors.kernel.org/ubuntu/pool/main/r/rtmpdump/librtmp0_2.4+20121230.gitdf6c518-1_amd64.deb &amp;amp;&amp;amp; sudo dpkg -i librtmp0_2.4+20121230.gitdf6c518-1_amd64.deb &amp;amp;&amp;amp; rm librtmp0_2.4+20121230.gitdf6c518-1_amd64.deb
sudo apt-get install hhvm&lt;/pre&gt;
&lt;p&gt;Ahora que tenemos instalado HHVM, tenemos que ejecutar un script de instalacion del modulo para Nginx.&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt;sudo /usr/share/hhvm/install_fastcgi.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ahora reiniciar HHVM y Nginx.&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt; sudo /etc/init.d/hhvm restart&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code class="inline"&gt;sudo /etc/init.d/nginx restart&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Configurar el sitio web&lt;/h2&gt;
&lt;p&gt;Lo siguiente es configurar un servidor virtual para nuestro sitio web. Normalmente debes crear un nuevo servidor virtual por cada sitio web en el servidor, pero como estamos realizando pruebas (y por razones practicas) solamente vamos a sobreescribir el contenido de &lt;code class="inline"&gt;/etc/nginx/sites-available/default&lt;/code&gt; con lo siguiente:&lt;/p&gt;
&lt;p&gt;Nota: necesitas permisos de administrador para editar el archivo.&lt;/p&gt;
&lt;pre class="brush: plain noskimlinks noskimwords"&gt;server {
  listen 80;
      server_name localhost; # or replace localhost with domain name
    include hhvm.conf;
  
   access_log   /var/log/nginx/access.log;
 error_log    /var/log/nginx/error.log;
 
 root /var/www;
 index index.php;
 
 location / {
  try_files $uri $uri/ /index.php?$args; 
   }
}
&lt;/pre&gt;
&lt;p&gt;Ahora podemos configurar WordPress:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Recarga la configuración actualizada de Nginx: &lt;code class="inline"&gt;$ sudo service nginx reload&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Ahora crea un directorio raíz: &lt;code class="inline"&gt;$ sudo mkdir /var/www&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Descarga WordPress: &lt;code class="inline"&gt;$ sudo wgethttp://wordpress.org/latest.tar.gz /var/www/&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Extrae WordPress: &lt;code class="inline"&gt;$ sudo tar xvf /var/www/latest.tar.gz&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Mueve los archivos de WordPress a la carpeta raíz: &lt;code class="inline"&gt;$ sudo mv /var/www/wordpress/* /var/www/&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Limpia: &lt;code class="inline"&gt;$ sudo rm -rf /var/www/wordpress /var/www/latest.tar.gz&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Define permisos: &lt;code class="inline"&gt;$ sudo chmod -R 775 /var/www&lt;/code&gt;.&lt;/li&gt; &lt;li&gt;Establece grupos: &lt;code class="inline"&gt;$ sudo chown -R www-data.www-data&lt;/code&gt; &lt;code class="inline"&gt;/var/www&lt;/code&gt;.&lt;/li&gt; &lt;/ol&gt;
&lt;h2&gt;Configura la base de datos de WordPress&lt;/h2&gt;
&lt;p&gt;Accede a MySQL &lt;code class="inline"&gt;$ mysql -u root -p&lt;/code&gt;. Ahora ejecuta los siguientes comandos:&lt;/p&gt;
&lt;pre class="brush: sql noskimlinks noskimwords"&gt;CREATE DATABASE wordpress;
CREATE USER wordpress@localhost;
GRANT ALL PRIVILEGES ON wordpress.* to username@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit
&lt;/pre&gt;
&lt;p&gt;Ahora puedes ir a la dirección IP de tu servidor y seguir el famoso proceso de "5 minutos" de instalación. &lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;¡Felicitaciones! Ahora tienes tu propio sitio WordPress corriendo con la última tecnología. Aquí están mis estadísticas de velocidad de WordPress usando HHVM, siguiendo las instrucciones anteriores.&lt;/p&gt;
&lt;figure class="post_image"&gt;&lt;img alt="Speed results for website using HHVM" data-src="https://cms-assets.tutsplus.com/uploads/users/160/posts/21596/image/pingdom%20test.png"&gt;&lt;/figure&gt;&lt;p&gt;¿Que tan rapido carga tu sitio?&lt;/p&gt;
&lt;p&gt;¡Sé el primero en conocer las nuevas traducciones–sigue &lt;a href="https://twitter.com/tutsplus_es"&gt;@tutsplus_es&lt;/a&gt; en Twitter!&lt;/p&gt;</content>
    <media:content url="https://cms-assets.tutsplus.com/uploads/users/160/posts/21596/preview_image/hhvm.gif" medium="image" width="200" height="138"/>
    <published>2015-03-31T12:00:31.000Z</published>
    <updated>2015-03-31T12:00:31.000Z</updated>
    <author>
      <name>Zachary Russell</name>
    </author>
  </entry>
</feed>