Jueves 25 de mayo de 2017

Baltasar Ortega

Baltasar Ortega
KDE Blog

Slimbook Pro, una nueva maravilla en ultrabooks para linux

Si la gente de la Comunidad KDE no para (ayer se lanzó su nueva versión de Plasma), la gente de Slimbook parece que tampoco. Y es que hace unos días que fue lanzado Slimbook Pro, una nueva maravilla en ultrabooks para linux que te ofrece una nueva alternativa a la hora de adquirir un dispositivo los más libre posible.

Slimbook Pro, una nueva maravilla en ultrabooks para linux

La búsqueda de un portátil compatible con GNU/Linux fue una de mis luchas en el pasado. Eran difíciles de encontrar, de calidad dudosa y caros.

Afortunadamente, en el presente, el problema de encontrar uno ha cambiado: ahora es cual escoger. En la actualidad que existen algunas marcas que han ofrecido y ofrecen portátiles con Linux: Dell, System76, Slimbook, etc.

Y es de esta última marca de la que quiero hablar hoy, ya que hace unos días han lanzado un nuevo modelo a su creciente colección de ultrabooks y dispositivos compatibles 100% con GNU/Linux.

Se trata de Slimbook Pro, una nueva maravilla de los chicos de la empresa del mismo nombre que viene a complicarnos más la vida a la hora de decantarnos por uno o por otro portátil.

Slimbook Pro

Además de un cambio de carcasa los nuevos Slimbook Pro nos ofrecen:

  • Pantalla de 13″ (mi tamaño ideal) con dos resoluciones disponibles FullHD de 1920 x 1080 o  QHD+ de 3200 x 1800 HiDPI.
  • Procesadores Intel i3, i5 e i7 de 7ª generación
  • Memoria RAM DDR4
  • Espacio para un disco duro principal (normalmente un sssd) y otro auxiliar (mecánico o ssd) del tipo SATA 3 y formato clásico 2,5 pulgadas.
  • Tarjetas wifi Intel 8265 AC con nuevas antenas
  • Nuevo touchpad de la marca Synaptics
  • Conectividad: red RJ45, USB3, HDMI y DisplayPort, entrada de audio jack y salida independiente de jack.
  • Peso: 1,3 kg

Como véis, es como si Slimbook Clásico lo hubieran vitaminado y nos ofreciera una versión muy mejorada, acorde con los nuevos tiempos.

Con toda seguridad podré tener uno en mis manos el próximo julio durante Akademy-es y Akademy de Almería, así que ya os informaré de más detalles.

Por cierto, y a modo de recordatorio, no penséis que hago toda esta publicidad porque reciba una compensación económica… la publicidad del margen es voluntaria y no recibo nada por ponerla. Está porque creo firmemente en este proyecto.

Más información: Slimbook

Asociación LiGNUx: Graba tu escritorio con Green Recorder

Dos novedades que vendrán en LibO 5.4

He estado probando LibO 5.4 beta 1 (descargado desde aquí e «instalado en paralelo» como se comenta aquí) por lo que en este breve artículo mostraré, en una sola captura de pantalla, dos de las novedades más interesantes que nos ofrece: Una de ellas está «completa» y a la otra le faltan algunos detalles. Veamos: […]

Slimbook pro, tu portátil libre sin renunciar a nada

Si hace apenas unas semanas os hablábamos de una de las más potentes alternativas en el mercado para comprar un portátil si eras un fan acérrimo a Mac pero querías ser más libre, hoy volvemos con otra con marca nacional. Se trata de la empresa española Slimbook, que pretende ser otra gran alternativa para muchos que estén buscando un portátil que se ajuste a sus más exigentes

Miércoles 24 de mayo de 2017

Asociación LiGNUx: Termius, un cliente SSH con interfaz gráfica moderna

Triángulo de Sierpinski en JavaScript

Un amigo me propuso esta mañana que viera un vídeo de Numberphile, concretamente uno titulado Chaos Game. El vídeo es bastante interesante y habla de como de una aparente aleatoriedad es posible sacar fractales y patrones regulares. Esta misma mañana al llegar a casa y antes de comer me he picado y me he puesto a implementar el algoritmo en JavaScript usando el Canvas de HTML5. El resultado lo tenéis aquí:

http://adrianistan.eu/sierpinski/

Y el código que lleva es el siguiente:

const COLOR_LIST = ["red","green","yellow","pink","brown","purple","cyan","blue","orange"];

function punto(x,y){
    var p = {
        x:x,
        y:y
    };
    return p;
}

function puntoMedio(p,q){
    var m = {
        x: Math.round((p.x+q.x)/2),
        y: Math.round((p.y+q.y)/2)
    };
    return m;
}

function getRandomColor(){
    return COLOR_LIST[Math.floor(COLOR_LIST.length * Math.random())];
}

function dibujarPunto(ctx,p,size){
    ctx.fillStyle = getRandomColor();
    ctx.fillRect(p.x,p.y,size,size);
}

function $(id){
    return document.getElementById(id);
}

function get(id){
    return Math.round(document.getElementById(id).value);
}

function main(){
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");

    var interval;

    $("start").addEventListener("click",function(){

        var size = get("size");
        var vertex = [punto(get("a-x"),get("a-y")),punto(get("b-x"),get("b-y")),punto(get("c-x"),get("c-y"))];

        let p = punto(get("s-x"),get("s-y"));

        dibujarPunto(ctx,p,size);

        interval = setInterval(function(){
            var q = vertex[Math.floor(3*Math.random())];
            p = puntoMedio(p,q);
            dibujarPunto(ctx,p,size);
        },get("speed"));
    });

    $("stop").addEventListener("click",function(){
        clearInterval(interval);
    });

    $("reset").addEventListener("click",function(){
        ctx.fillStyle = "white";
        ctx.fillRect(0,0,600,600);
    });
}

window.addEventListener("DOMContentLoaded",main);

Con distinto número de vértices existen otros fractales, también muy chulos. Incluso en el vídeo de Numberphile realizan un fractal con un gran parecido a una hoja de helecho, usando dos triángulos y una ligera modificación del algoritmo.

Un saludo y soñad con fractales.

La entrada Triángulo de Sierpinski en JavaScript aparece primero en Blog - Adrianistan.eu.

Miguel Parada

Miguel Parada
Ubuntizando.com

La revolución tecnológica llega de la mano de OpenExpo

 

  • Vive la experiencia OpenExpo en la cuarta edición de la Feria, el próximo 1 de junio en La N@ve (Madrid).
  • Robots, hologramas, gafas de Realidad Virtual, simuladores de Fórmula E,… harán las delicias de los visitantes.
  • Las empresas más punteras del sector como Microsoft, Red Hat o Irontec no se perderán esta cita única.

 

Madrid, Mayo 2017. “El open source es tendencia entre las empresas, es factor clave en la Transformación Digital de las empresas en todos los ámbitos”, nos comenta Philippe Lardy, CEO de OpenExpo. Esta es la premisa bajo la que OpenExpo ha organizado la cuarta edición de su Feria y Congreso Anual el próximo 1 de junio en La N@ve (Madrid).

Una edición prometedora que sorprenderá al visitante en cada rincón de los 5.900 m2 de La N@ve. OpenExpo se ha convertido en la Feria referente del sector de nuestro país, el perfecto lugar de encuentro de los amantes del software libre y las tecnologías abiertas donde se descubren las últimas tendencias del Open Source y el Software Libre.

Las tecnologías abiertas son el camino perfecto hacia la modernización de las diferentes áreas de las compañías y una de las piezas fundamentales en la Transformación Digital. Los visitantes podrán conocer cómo el open source fomenta la innovación y la agilidad en la empresa para impulsar su transformación global y sus procesos tecnológicos.

Entre los key speakers más destacados del Congreso encontramos a Chema Alonso, Chief Data Officer de Telefónica además del hacker más famoso y mediático de España que nos nutrirá de la cultura hacker y Pau Garcia-Milà, el fundador del proyecto de software libre EyeOS, que nos explicará el concepto de “Fast Innovation” en las empresas.

Representantes de Telefónica, Repsol, Uber, Liberty Seguros, BBVA, PcComponentes, Accenture Digital, Amnistía Internacional España… completan el impresionante cartel de ponentes nacionales e internacionales que impartirán más de 200 sesiones en las 11 salas de conferencias del encuentro y que cubrirán todo el espectro temático del sector: IoT, Smart Cities, Big Data, Open Data, Ciberseguridad, Robótica, CRM, CMS, e-Learning…

Desde el observatorio Women at Technology, el primero en España que estudia el papel de la mujer en el mundo profesional STEM (Sciencie, Technology, Engineering, Mathematics), Universia y Womenalia organizan un foro de debate en el marco del evento cuyo objetivo es poner foco en las mujeres y dedicación a disciplinas STEM.
En este foro participarán mujeres líderes del sector en representación de empresas como Accenture, Banco Santander y Oracle. 

Open Talks es otro de los espacios en el que los visitantes podrán disfrutar de mesas redondas donde se debatirá sobre el futuro del Open Source, la modernización de la Administración gracias a las TIC, Blockchain… entre otras muchas temáticas.

En esta edición los visitantes podrán deleitarse también en las zonas totalmente interactivas como Open Lab, Open Experience y Virtual Experience donde habrá cabida para la interacción del público con tecnologías de última generación, sin duda, uno de los mayores reclamos de la Feria: robots, Realidad Virtual, hologramas, simuladores de surf 3600, drones…

En el espacio Open Talent se celebrará en directo un kata para gente junior acompañada de mentores para colaborar en 2 proyectos de OSW: Ginger Code, donde los participantes contribuirán haciendo repositorios de ejercicios y soluciones para neófito, o cerrando una release de la aplicación de escritorio o la landing con un try live de Ginger y Oswaldito, donde podrán hacer mejoras y hacks del estilo, hacer una escucha pasiva del entorno y con reconocimiento de voz que vaya lanzando Gifs random por la pantalla usando la API de giphy al estilo Peego.

Como novedad este año, OpenExpo apuesta por la integración de la industria automovilística en su programa: los asistentes disfrutarán del automovilismo virtual conduciendo coches de Fórmula E mediante unos simuladores by mdtel.

Los actores más importantes del ecosistema open source no se quieren perder este acontecimiento único y se dan cita en la zona expositiva de la Feria de tecnologías abiertas más importante del país: Microsoft, Red Hat, Arsys, OVH, Irontec, Exevi, OTRS, Carto, Magnolia, Hopla! Software, Docker, WhiteBearSolutions, Bacula Systems, ackstorm, Google Cloud, mdtel, HAYS, Zextras, esri, BBVA, 87 seconds… son algunas de las más de 200 empresas participantes.

Las startups también tienen cabida en OpenExpo. Podremos conocer a las startups participantes en esta edición en la zona Startup Village & Community Village.

Además si eres una startup o un emprendedor y necesitas asesoramiento, podrás disfrutar gratuitamente de sesiones de mentoring individuales, donde recibirás feedback profesional y podrás resolver tus dudas en materias como: Desarrollo Web/Hosting, Marketing Online, Fiscal, Financiación y Legal,… Regístrate en el Open Startup Connector – Mentoring y pide tu cita.

La tarde estará dedicada a la celebración de diferentes Meetups que reunirán a las comunidades de Docker, Python y Moodle, entre otros.

En esta franja horaria, la presentadora de Mundo Hacker, Mónica Valle, liderará la Gala de Entrega de premios Open Awards 2017 donde se otorgarán los galardones a los vencedores de los premios más importantes del mundo open source, patrocinados por A3Sec, Irontec e Ydral. Además, la organización de OpenExpo hará entrega de menciones especiales a personalidades y proyectos Open Source/Software Libre que han cumplido un papel importante en el sector, por su implicación y compromiso en el ámbito del Open Source y el Software Libre.

¿Quién querría perderse semejante jornada? ¡Vive la experiencia OpenExpo y no esperes a que te lo cuenten! Desde Ubuntizando no queremos que te pierdas el evento tecnológico del año y por eso hemos conseguido invitaciones gratuitas para nuestra comunidad. Puedes registrarte gratis directamente desde este enlace.

Miguel Parada

Miguel Parada
Ubuntizando.com

SurBook: La Surface killer de CHUWI ya es una realidad.

El pasado mes hablaba de la expectación que despierta el último producto de CHUWI. Se trata de la Surbook, una tablet 2×1 (Windows 10 y Android) promete ser la próxima “SurFace Killer” ya que supera a ésta en muchos aspectos ya que cuenta con un procesador Intel Apollo Lake Lake N3450 (pequeño pero potente) y un chipset gráfico Intel HD Graphics de novena generación a un precio asequible.

Para lograrlo CHUWI inició una encuesta entre sus usuarios de cara a presentar un producto redondo en indieGOGO, plataforma de crowdfunding donde espera lograr la financiación necesaria para fabricar su próximo modelo.

Dentro de este dispositivo de 12,3 pulgadas (2736 x 1824 píxeles de resolución), encontramos además 6GB DDR de RAM y un almacenamiento de 128GB eMMC. Totos esto alimentado por una batería de 10.000 mAh de capacidad que garantiza más de 6 horas de autonomía.

 

La mala noticia es que por el momento CHUWI apuesta por WINDOWS 10 pero ya sabemos que su línea Lapbook si contará con la posibilidad de adquirirse con Ubuntu próximamente.

Este fabricante lo está haciendo muy bien. La meta fijada ha sido superada en más de un 265% de los $30,000 fijados como objetivo en menos de un mes. Todo un logro. Solo resta que se animen a apostar por Linux como desde aquí venimos demandando. ¿Nos harán caso?

Miguel Parada

Miguel Parada
Ubuntizando.com

Completo curso para usuarios de Raspberry Pi

En core-electronics acaban de publicar una interesante guía para  sacar todo el provecho a nuestra Raspberry Pi y enfocada a un nivel de usuario principiante que no quiere complicarse mucho pero que busca exprimir toda la potencia y prestaciones de este dispositivo.

Los videos están en inglés pero pueden activarse  los subtítulos para no perdernos. Aquí colgamos el primer vídeo pero si quieres ver la lista de capitulos completa tienes que acceder al siguiente enlace. 😉

 

 

 

Baltasar Ortega

Baltasar Ortega
KDE Blog

Cómo instalar Telegram en openSUSE

Hace tiempo que no hago un pequño tutorial. Las noticias sociales cada vez tienen más peso y creo que son muy importantes en algo como KDE, que no olvidemos que es una Comunidad. Además, creo que el mundo GNU/Linux es cada día más sencillo y necesita menos este tipo de artículos. Así que me complace haber encontrado un hueco para publicar cómo instalar Telegram en openSUSE de dos formas, las dos muy sencillas.

Cómo instalar Telegram en openSUSE

Cómo instalar Telegram en openSUSEPor méritos propios, y aunque no sea 100% libre según los cánones, Telegram se ha convertido en una herramienta muy importante para la Comunidades del Software Libre. Y poco a poco se

Para instalar Telegram en openSUSE tenemos varias opciones.

  • Las primera de ellas se basan en utilizar respositorios adicionales, ya que esta aplicación no se encuentra en los habituales, de esta forma  se actualizará automáticamente la aplicación cuando el mantenedor lo haga y nosostros actualicemos nuestro sistema
  • La última será bajar directamente la aplicación desde los servidores oficiales de Telegram, con lo que deberemos actualizar cuando la aplicación nos lo pida.

Desde repositorios

Para realizar esta forma debemos

  • Abrir la consola
  • Añadir el siguiente repositorio para openSUSE Leap 42.2.

$ sudo zypper addrepo http://download.opensuse.org/repositories/server:messaging/openSUSE_Leap_42.2/server:messaging.repo

  • Actualizar

$ sudo zypper refresh

  • Instalar Telegram

$ sudo zypper install telegram-desktop

Con One Click Install

Básicamente se trata de pinchar este enlace para openSUSE Leap 42.2 y seguir instrucciones.

Para otras versiones de openSUSE os aconsejo visitar la página fuente de este minitutorial.

Desde página web

Este método se basa en:

Este método es muy sencillo pero no me gusta que se me quede la aplicación “suelta” por mi disco duro.

Por cierto, aprovecho la coyuntura para pedir ayuda a algún desarrollador que quiera hacer el favor a un profesor que anehla una aplicación que una comunicación, escuela y Telegram.

Martes 23 de mayo de 2017

Asociación LiGNUx: Recuerda los servicios que ofrecemos: Listas de distribución, foro, nodo Mastodon y Diaspora, etc
Baltasar Ortega

Baltasar Ortega
KDE Blog

Sysadmins de KDE decimonoveno podcast de KDE España

Quinto mes y quinto podcast. Al menos este año no os podréis quejar de la regularidad de los miembros de KDE España que se reunen alrededor de sus pantallas, micrófonos y cámaras web para hablar un rato sobre temas relacionados con el mundo KDE. De esta forma se grabó el decimonoveno podcast que estuvo dedicado al trabajo, generalmente oculto, de los Sysadmins de KDE. Espero que sea de vuestro agrado.

Sysadmins de KDE decimonoveno podcast de KDE España

El quinto podcast de vídeo de la tercera temporada de KDE España titulado Sysadmins de KDE se grabó el pasado 16 de mayo utilizando los servicios de Google sin ningún problema técnico destacable.

Los participantes del decimoséptimo vídeo podcast fueron:

  • Ruben Gómez Antolí, miembro de KDE España y que siguió realizando las labores de presentador.
  • Baltasar Ortega (@baltolkien), secretario de KDE España y creador y editor del presente blog, qué puso el punto de vista del usuario y labores de presentador.
  • Y el invitado especial, Nicolas Álvarez, sysadmin de la Comunidad KDE, que nos ilustró con sus conocimientos ya que es uno de las 3 personas que se encargan de que todo el engranaje virtual de KDE funcione.

A lo largo de casi la hora y cuarto que duró el vídeo podcast se habló de todo lo relacionado con el trabajo de Sysadmin: servidores, mantenimiento, seguridad, software utilizado, aplicaciones ofrecidas, carga de trabajo, problemas, soluciones, futuro, etc.


Además, gracias al trabajo de VictorHck (no os perdáis su blog) ya está disponible el podcast en archive.org.

Espero que os haya gustado, si es así ya sabéis: “Manita arriba“, compartid y no olvidéis visitar y suscribiros al canal de Youtube de KDE España.

Sysadmins de KDE decimonoveno podcast de KDE España

Como siempre, esperamos vuestros comentarios que os aseguro que son muy valiosos para los desarrolladores, aunque sean críticas constructivas (las otras nunca son buenas para nadie). Así mismo, también nos gustaría saber los temas sobre los que gustaría que hablásemos en los próximos podcast.

Aprovecho la ocasión para invitaros a suscribiros al canal de Ivoox de los podcast de KDE España que pronto estará al día.

Lunes 22 de mayo de 2017

¿Nos vemos en la LechazoConf?

El próximo sábado 27 de mayo tendrá lugar en Valladolid la LechazoConf. Uno de los mayores eventos de informática de la región.

Este evento cuenta con ponencias muy interesantes sobre el éxito y el fracaso (o al menos interesantes sobre el papel). Además, se podrá comer lechazo.

Yo estaré por allí, gracias a una invitación que tengo, así que si quieres: hablarme, comentarme, explicarme, insultarme, agradecerme, increparme, consolarme, abrazarme, besarme, matarme, vacilarme, comer unas patatas juntos, pasear juntos, debatir sobre metafísica, hacer travesuras por la ciudad o simplemente explicarte como conseguir la clave del WiFi o explicarte como instalar Windows sin que parezca que estés haciendo el vago, no dudes en buscarme.

PD: Me llamo Adrián Arroyo, no creo que me lo cambie para cuando sea la Lechazo.

PD2: Aunque nos hagamos muy buenos amigos, recuerda que mi lechazo es mi lechazo y el tuyo el tuyo

La entrada ¿Nos vemos en la LechazoConf? aparece primero en Blog - Adrianistan.eu.

Domingo 21 de mayo de 2017

Liher Sanchez

Liher Sanchez
El blog de Liher

Batería externa solar para moviles

A todos los que nos gusta la informática y los móviles no podemos evitar el estar mirando productos en Internet y nos produce curiosidad el encontrar algunos de ellos, como es el caso. Tengo un móvil con una batería bastante buena, de 4.000 mAh, me suele durar todo el día sin problemas salvo que haga un uso muy intensivo, pero siempre esta bien tener una batería auxiliar por si acaso.

Mi pareja tiene una batería de 16.000 mAh de capacidad y yo la he usado en alguna ocasión pero me parece muy grande. La suelo usar en algunas ocasiones en combinación con una lampara LED USB cuando abro algún ordenador ya que la lampara tiene un brazo flexible y la batería la puedo poner en la posición que quiera, por lo que  viene muy bien para iluminar los rincones internos de los ordenadores.

Y en estas estoy cuando me he encontrado con una batería externa que me ha llamado mucho la atención por varias razones. Os hablo de una batería de 5.000 mAh que tiene tres características que me gustan mucho. Si queréis mas información solo tenéis que visitar la web en la que la venden aquí. Su precio es de unos 15 euros pero podéis conseguirla por unos 11 si usáis un cupón que os ofrezco, “L1665RO”, poniendo ese texto al comprarla conseguiréis ese estupendo precio. La primera es la capacidad ya que me serviría para llenar mi móvil en caso de necesidad. La segunda es que la carga se puede hacer mediante un panel solar que tiene incorporado, por lo que no influiría en la factura de la luz, hoy en día hay que mirar esto ya que la electricidad cada vez es mas cara. Y la tercera característica que me gusta mucho es que viene con una linterna incorporada.

 

 

Tengo que mirar mas aunque esta batería tiene muchas opciones que acabar entre mis complementos para el móvil ya que, ademas, me serviría para mas cosas ya que podría ser mi herramienta ideal para poder tener buena iluminación cuando abra cualquier ordenador. La capacidad  de 5.000 Mah que tiene para estar hecha a medida para la capacidad de la batería de mi teléfono móvil. Otra cosa que me llama mucho la atención es que se carga mediante la luz solar y, como ya he dicho antes, es algo a tener muy en cuenta con lo que cuesta enchufar cualquier cosa en casa.

Nunca había pensado en la opción de necesitar un aparato de este tipo pero si sueles ir de acampada no te puede faltar una batería como esta por las múltiples utilidades que le podíamos dar.

Un saludo a todos.

Liher Sanchez

Liher Sanchez
El blog de Liher

Este blog es para recien iniciados en Linux y lo seguira siendo

Todos los que escribimos en un blog lo hacemos por varias razones. En mi caso abrí este blog porque me gusta escribir sobre Linux y diseño web, aunque este último tema todavía no lo he tocado lo que me gustaría. Esas son las temáticas que trato aquí e intento que todo lo que publico sea accesible a cualquier tipo de usuario, pero especialmente a los usuarios que están empezando a usar Linux y que necesitan ayuda para entender conceptos sencillos.

Yo mismo me vi en ese grupo de usuarios hace unos años cuando empecé a usar Linux, y para algunas cosas todavía estoy en el. Por aquel entonces me costaba encontrar explicaciones sencillas a conceptos nuevos para mi, como por ejemplo saber que es un repositorio, lo cual es algo muy sencillo pero si no das con el artículo adecuado puede generar confusión.

También, al igual que otros muchos usuarios, recibí mas de una mala contestación a alguna de mis preguntas, lo cual es algo bastante desagradable, ya que solo pretendía aprender. Muchos dirán que antes de preguntar habría que mirar la ayuda que viene con el sistema operativo, pero suelen estar llena de palabras técnicas que pueden conseguir generar mas dudas todavía. Quiero aclarar, para los que no me conocen, que no empece en esto de la informática ayer y que no soy un usuario sin conocimientos. A día de hoy llevo 25 años entre ordenadores, soy programador informático y diseñador web, ademas de arreglar ordenadores a familiares y amigos desde hace años, incluso llegue a hacerlo en una tienda de reparación de ordenadores de la que me llamaban cuando tenían mucho trabajo o no sabían hacer algo.

Si yo, que no soy un neófito ahora ni cuando empece en Linux, he necesitado y necesito ayuda, ¿que se puede decir de aquellos que no son informáticos? Pues que necesitan toda la ayuda que podamos darles y para ellos abrí este blog.

¿A que viene todo esto? Pues muy fácil, he recibido un par de comentarios en los cuales me dicen que el contenido que publico es muy simple. El primero de ellos es en un artículo en el cual muestro como usar el icono del Launcher de Ubuntu para maximizar o minimizar una ventana y que supuso que Dario me dejase este comentario:

 

comentario blog 1

 

El otro articulo en el que recibí un comentario de este tipo es uno en el que mostraba como permitir el contenido remoto en los emails por defecto en Thunderbird y el comentario que me dejo Targarian es el siguiente:

 

comentario en el blog 2

 

Como ya he dicho este blog lo creé orientado a los usuarios que se están iniciando en el mundo de Linux y que buscan respuestas lo mas claras posibles a los términos que se manejan en este sistema operativo y tutoriales explicados de la forma mas sencilla que pueda para ayudarles y que no lo abandonen.

Hay otros blogs mucho mas técnicos y de usuarios que saben muchísimo mas que yo como el de Linuxito, el cual recomiendo visitar y seguir, que tienen artículos mas complejos y que serán del agrado de usuarios como Dario y Targarian. Quiero decir también que tanto estos dos usuarios como cualquier otro siempre serán bien recibidos aquí, pero me gustaría, que es el objetivo de este articulo, que entendiesen que hay usuarios que tienen dudas sobre cosas sencillas y que si una persona quiere saber como cómo listar y setear ACLs en formato NFSv4, por citar algo complejo, y otra persona quiere saber como minimizar una ventana desde el Launcher de Ubuntu, ambas tienen que poder encontrar tutos sobre ello en Internet. Entre los blog mas avanzados y los mas sencillos creo que formamos un equipo con el cual satisfacemos las necesidades de muchos usuarios y espero y deseo que siga siendo así.

Gracias al trabajo gratuito que hacen muchos programadores en todo el mundo desarrollando Linux podemos disfrutar de el en nuestros ordenadores y, gracias a blogs como este o el de Linuxito, muchos usuarios aprenden a manejarse en el y resuelven sus dudas o aprenden a hacer esto o aquello.

Otra razón por la que abrí este blog es que en algunos sitios en los que pregunté mis dudas no recibí respuesta de ningún tipo, eso en este blog no ha pasado nunca y no va a pasar, todos los comentarios que habéis hecho han sido respondidos, aunque sea para decir que no tengo los conocimientos necesarios para poder ayudar, pero al menos he respondido.

Un saludo a todos.

David González

David González
Blog Bitix

Sobre el ataque de ransomware que ha sufrido Telefonica y otras empresas

Microsoft
Windows 10

El día 12 de mayo de 2017 se produjo un ataque informático de tipo ransomware que afectó a varias empresas entre ellas Telefonica. El ataque se aprovecha de una vulnerabilidad conocida en los sistemas con el sistema operativo Windows no parcheados y vulnerables y para la cual Microsoft ya había publicado un parche de seguridad que la corregía. El programa ransomware WannaCry era extremadamente peligroso ya que cifra los archivos y documentos locales o en unidades a las que tuviese acceso el sistema afectado solicitando para recuperarlos 300 dólares en bitcoins.

La peligrosidad de este ransomware radica en que cifra los datos que es una de las cosas más importantes de un sistema, también causa que el sistema deje de prestar su servicio con los quebrantos que puede ocasionar si el buen funcionamiento del sistema es crítico en una empresa. Una vez un sistema es corrompido la forma de no ser víctima de la extorsión para recuperar los archivos es a través de una copia de seguridad una vez reinstalado Windows.

Captura del ransomware WannaCry en un sistema infectado

El programa ransomware se introduce en los los sistemas aún vulnerables conectados a internet o porque un usuario lo activa por ejemplo mediante un clic en un correo electrónico en un sistema interno no conectado directamente a internet. Una vez un sistema es infectado se transmite al resto de equipos vulnerables a los que tenga acceso de la red local, multiplicando el problema.

Unos dicen que el problema es de Windows pero al ser un sistema operativo mayoritario este es más interesante de atacar por los delincuentes informáticos. También en defensa de Windows unos dicen que Microsoft ya publicó un parche de seguridad que lo resolvía y que la culpa es de las empresas que no los mantiene actualizados pero no es tan sencillo, algunos sistemas son críticos o desempeñan funciones importantes por los que una actualización que cause problemas no es plausible ya que genera problemas y costes entre otras cosas, la opción es mantenerlos desactualizados hasta que las actualizaciones se comprueben que no causan problemas.

Son numerosos los medios que se han hecho eco del acontecimiento tecnológico de esa semana:

Quizá alguien piense que un sistema con GNU/Linux hubiese sido distinto pero no, un sistema GNU/Linux desactualizado es igual de vulnerable, por el hecho de ser GNU/Linux no es más seguro. Lo que hay que implementar son procedimientos y aplicar medidas para evitar estos fallos de seguridad y para minimizar las vulnerabilidades de los sistemas cualquiera que sea el sistema utilizado. A pesar de lo anterior una muestra de la seguridad que ofrece GNU/Linux que hay que destacar es que es un sistema utilizado en una gran mayoría de servidores importantes de los que ofrecen servicios en internet u otros servicios críticos, correctamente configurados y mantenidos funcionando de forma segura.

En unas empresas y sociedad cada vez más dependientes de la tecnología un ataque como este puede causar importantes daños como ha sido en el caso del sistema de salud británico, en empresas como en el mismo caso de Telefonica ha obligado a apagar sistemas para evitar la propagación y preventivamente males mayores impidiendo trabajar con normalidad a un importante número de empleados de la empresa. El ataque de WannaCry es una advertencia de lo que puede provocar un caso peor en el futuro, y este ransomware cuando actúa es evidente que se está sufriendo, otros ataques menos notorios pueden pasar inadvertidos. Algo que ocasionará lo sucedido es que se dedicarán más recursos a la seguridad.

GNU/Linux es un sistema más abierto y público que Windows, su código fuente está disponible para ser analizado por cualquiera con los conocimientos de programación suficientes y cuando un fallo de seguridad es descubierto el parche de seguridad es publicado no mucho tiempo más tarde sin depender de los intereses de una única empresa. Windows al ser más cerrado y desarrollado por una empresa que tiene su control absoluto, del cual dependen otras empresas y organizaciones gubernamentales, algunos fallos de seguridad son ocultados pero explotables hasta que son resueltos por el parche de seguridad.

Pero sin duda en cualquiera de los dos sistemas operativos el usuario o administrador del sistema es una pieza clave para mantener su seguridad como comento en el artículo Distribuciones GNU/Linux, ¿más seguras que Windows?.

Sábado 20 de mayo de 2017

David González

David González
Blog Bitix

Sobre el anuncio de Shuttleworth de abandonar Unity y Mir y volver a GNOME en Ubuntu

Ubuntu
Canonical

Hace unas semanas el fundador de Ubuntu, Mark Shuttleworth, una de las distribuciones más populares de GNU/Linux publicaba que abandona dos de sus proyectos más conocidos, la interfaz Unity y el servidor gráfico Mir. Uno de ellos la interfaz Unity en favor de GNOME que se materializará en la siguiente versión de Ubuntu, la 17.10 o 18.04 LTS. Al mismo tiempo daba a conocer que abandonaba el desarrollo de su servidor gráfico Mir en favor de su alternativa y más aceptada en la comunidad Wayland.

El abandono de un proyecto no es nada nuevo en el software libre o en el software a secas, unos tienen éxito y otros perecen y volverá a pasar en el futuro. En cualquier caso queda claro que Ubuntu, Canonical o Shuttleworth no han tenido éxito para continuar y finalizar el desarrollo de Mir, un motivo porque su desarrollo requiere gran esfuerzo en desarrolladores dedicados y también económicamente que no le deben sobrar. Tampoco ha sido un proyecto aceptado por la comunidad, finalmente el vencedor a sido GNOME y Wayland más apoyados por RedHat empresa con gran éxito a nivel empresarial, al igual que pasó con el sistema de inicio Upstart abandonado en favor de systemd y en el futuro quien sabe si pasará algo parecido con la forma de distribuir software con snaps y su equivalente Flatpak. Tampoco, lo que no ha conseguido Shuttleworth es tener el apoyo de la comunidad e incluir en sus desarrollos al resto de empresas del mundo del software libre como RedHat.

Creo que Shuttleworth tiene razón para apostar por la convergencia ya que coincido en que la convergencia será la siguiente disrupción tecnológica y la empresa que primero consiga implementarla con éxito tendrá una ventaja sobre el resto y estará en la mejor posición para dominar el mercado tecnológico durante la siguiente década. La que llegue tarde corre peligro de perder gran parte de su relevancia o incluso desaparecer del primer plano como le sucedió a Nokia con la llegada de los smartphones por parte de Apple o con la llegada tardía de Microsoft con su sistema operativo para estos dispositivos sin éxito y con una cuota de mercado mínima. Parece que Microsoft está bien posicionada en este caso para la convergencia y ya se están publicando algunos artículos indicando que los procesadores basados en ARM como es el Snapdragon 835 serán capaces de ejecutar Windows 10 y programas x86 vía emulación con un rendimiento satisfactorio, en el momento que esto se comercialice incluso el dominio de Intel en el mercado de procesadores puede verse amenazado.

La apuesta de Unity en Ubuntu como entorno de escritorio por defecto no ha sido bien acogido por sus usuarios y una buena cantidad de ellos han migrado a distribuciones como Linux Mint que debe en gran parte a su éxito al no éxito de Unity y en otra parte a las críticas que recibió en su día GNOME. La vuelta a GNOME que inicialmente era un escritorio aún inmaduro, ya desde 3.18 añadió multitud funcionales y realizado una gran mejora que puede convencer a alguno de sus antiguos usuarios a regresar a Ubuntu. En las últimas versiones de GNOME se van puliendo detalles de menor importancia que en anteriores versiones pero haciendo cada vez más de GNOME un escritorio muy completo y bien integrado.

Otro de los motivos que se ha comentado es que Shuttleworth quiere que su empresa empiece a cotizar el bolsa y para mejorar su valoración los inversores considerarían en mejor grado deshacerse de los proyectos que no tiene éxito para centrarse en las áreas que sí como el internet de las cosas y la computación en la nube.

Aunque Canonical haya abandonado estos dos proyectos hay que reconocerle su trabajo para intentar innovar y liderar con dos proyectos que hubiesen contribuido a Linux y el software libre al igual que hay que agradecerle a popularizar aún más Linux con Ubuntu. En cualquier caso parece que los proyectos continuarán por parte de la comunidad pero ahora sin el apoyo oficial de Canonical.

Liher Sanchez

Liher Sanchez
El blog de Liher

Un móvil con dos pantallas

En varias ocasiones os he hablado de teléfonos móviles en el blog, es algo que me apasiona y me gusta estar al día. Siempre estoy mirando webs en las que se venden los nuevos modelos para ver como evoluciona el mercado y, algunas veces, suelo encontrarme con sorpresas.

En esta ocasión os quiero hablar de un teléfono móvil con dos pantallas que es encuentran en la parte frontal del terminal. Al principio me costaba imaginar las ventajas de esta segunda pantalla pero la idea esta muy bien. Puedes tener la segunda pantalla encendida ya que es pequeña y en el ella puedes ver notificaciones o accesos a las APPs que mas uses. Al ser una pantalla pequeña su consumo no es alto por lo que no tendrá apenas incidencia en la duración de la batería.

El teléfono móvil del que os estoy hablando es el LG V20. Os haré un breve resumen para que os hagáis una idea del tipo de terminal del que estamos hablando. La pantalla principal es de 5,7 pulgadas LCD (Quantum IPS) con resolución QHD (2560 x 1440 píxeles). La secundaria es de 2,1 pulgadas con resolución 160 x 1040. Tiene el procesador Snapdragon 820 de Qualcomm, 4GB de RAM y 64 GB de almacenamiento interno ademas de tener la posibilidad de usar una MicroSD, una batería de 3.200 mAh, tienes dos cámaras en la parte trasera y una en la frontal de alta calidad. Estas especificaciones no son muy detalladas, si queréis mas información sobre este teléfono móvil podéis verla en el enlace. Os recomiendo que lo miréis, merece mucho la pena. Se me olvidó poner que viene con Android 7. Si queréis ver como es el terminal os dejo una foto para que podáis tener una primera impresión.

 

 

 

Como podéis ver en la imagen lo tenemos disponible en varios colores. También en la imagen podéis ver las dos pantallas, la secundaria esta en la parte superior y va de lado a lado.

No cabe duda que en el mercado de la telefonía móvil es muy difícil diferenciarse del resto en cuanto a innovación se refiere pero si que me parece muy buena la intención de LG de hacerlo sacando un teléfono móvil con dos pantallas, puede que se convierta en un estándar a corto plazo. De hecho el LG V20 no es el primer móvil que la marca pone en el mercado con dos pantallas ya que también lo hizo con el LG V10 que cosechó bastante éxito. En este enlace podéis ver más información sobre el terminal. Ahí podéis leer una buen análisis del terminal y saber como funciona el tema de las dos pantallas.

Y eso es todo, solo quería hablaros un poco del LG V20 y sus características ya que me parecía algo para compartir por lo curioso que es, ya que yo no había visto todavía un teléfono móvil con dos pantalla en la parte frontal.

Un saludo a todos.

Jueves 18 de mayo de 2017

Acariya: una fuente de diseño «clásico»

Este artículo es parte de la serie Recomendando fuentes tipográficas Definida por su autor (Bhikkhu Pesala, el mismo de Sukhumala) como una «garamond» (si bien yo la veo más como «de transición»), Acariya es una fuente con gracias de alto contraste sumamente interesante: Como puede verse de las capturas de pantalla, la fuente ofrece un […]

Clouding.io un cloud server con linux e IP española

Si en algún sitio encontramos Linux en casi todas partes, es en cualquier tipo de servidor o cloud server, no en vano, ya que está considerado uno de los sistemas operativos más seguros. Hoy venimos a hablaros precisamente de una de las tantas alternativas que tenemos y consideramos que es buena en relación calidad / precio.  Se trata de clouding, una empresa 100% española con sede en

Miércoles 17 de mayo de 2017

Instala Ubuntu, Suse o Fedora en Windows 10 sin máquina virtual

Desde hace un tiempo ya sabíamos que Microsoft quería apostar fuerte por el software libre y en concreto por Linux, lo que no esperábamos es que quisiera hacerlo tanto como incluso para “promocionar” el uso de otras distribuciones. Si habéis leído bien, con la salida de Windows 10 al mercado de forma estable, Microsoft incluyó un subsistema de Linux en esta última versión, esto sin

Martes 16 de mayo de 2017

Disponible LyX 2.2.3

El proyecto LyX ha hoy anunciado que está disponible para su descarga la versión 2.2.3 de esta magnífico procesador de documentos construido sobre LaTeX y derivados. Public release of LyX version 2.2.3 Con numerosas correcciones de error (incluyendo un molesto problema que tenía con los atajos de teclado), esta versión también nos regala varias mejoras […]

Lunes 15 de mayo de 2017

Anrokku, un videojuego tipo puzzle

Anrokku es un juego de puzles que he programado estas semanas. Las reglas son simples, somos una ambulancia y tenemos que salir del parking debido a una emergencia. Desafortunadamente el parking es un caos y los coches bloquean la salida. Tu labor es ir moviendo los coches para lograr que la ambulancia salga del parking. Y cuantos menos movimientos hagas mejor.

En el menú principal podremos seleccionar a cuál de los 20 niveles queremos jugar. No podremos jugar a todos a la vez, es necesario habernos pasado los niveles anteriores para desbloquear el siguiente.

Ya en el juego tenemos que ir arrastrando los coches con el ratón para que la ambulancia pueda irse por la derecha. El juego está programando en Python 2.7 usando GTK. El renderizado está hecho en un GtkDrawingArea donde he usado Cairo. ¿Quiéres jugar? El juego completo es gratuito y open source bajo la liencia MIT en GitHub. No obstante, puedes descargar el archivo ZIP con el juego desde este enlace.

Descargar Anrokku

Después de descargar y descomprimir el archivo. Ejecuta el fichero main.py haciendo doble click o desde la terminal:

python2 main.py

¡Quiero ver muchas pantallas como esta!

 El juego almacena los récords obtenidos en cada nivel. Puede ser interesante repetir los niveles para hacerlo en el menor número posible de movimientos. En el primer nivel he conseguido ganar en 32 movimientos, ¿alguien se atreve a superarme?

La entrada Anrokku, un videojuego tipo puzzle aparece primero en Blog - Adrianistan.eu.

Domingo 14 de mayo de 2017

David González

David González
Blog Bitix

Luces navideñas con la Raspberry Pi y Java

Con diferentes sensores y dispositivos de salida de electrónica se pueden realizar proyectos muy interesantes. En el siguiente usaré múltiples diodos LED que se encenderán y apagarán de forma aleatoria cada cierto tiempo. El resultado será muy vistoso y lo utilizaré cuando lleguen las fechas como luces navideñas.

Raspberry Pi
Java

Como muestra de lo que se puede hacer con la Raspberry Pi usando los pines GPIO haré un ejemplo que consistirá en múltiples diodos LED de diferentes colores enciendan y apaguen simulando una especie de luces navideñas. Como yo tengo la Raspbperry Pi 1 B con 26 pines de los cuales solo 17 son GPIO podré usar hasta 17 diodos LED, aunque solo usaré 15. En el kit de iniciación a la electrónica para la Raspberry Pi viene incluidos 24 diodos LED de diferentes colores 6 blancos, 6 rojos, 6 amarillos y 6 verdes, también es necesario una resistencia por cada diodo de unos 200 ohmios de los cuales en el kit se incluyen 20 de este valor.

Aunque con muchos más LED el ejemplo no es más complicado que el ejemplo que ya mostré de encender y apagar un diodo LED. Usaré diodos de diferentes colores y dispuestos de forma aleatoria para darle un aspecto desordenado, para darle un aspecto más caótico los LEDs se encenderán y apagarán de forma aleatoria. Usaré el lenguaje de programación Java y la librería de alto nivel diozero para controlar el encendido y apagado de los diodos.

Esta es la foto del cableado usando múltiples cables macho-macho para conectar los pines con el polo positivo de los diodos pasando por la resistencia y también múltiples cables para conectar el polo negativo del diodo con tierra. Usando una placa breadboard para realizar las conexiones sin soldadura y una placa de extensión wiringPi para conectar la Raspberry Pi con la placa breadboard con un cable de 26 pines en mi caso por el modelo que tengo de RPi este es el aspecto de cableado.

Cableado de las luces LED del árbol de navidad

Cada cierto tiempo los diodos cambian de estado, algunos se encenderán, otros se apagarán y otros seguirán en el estado que estaban. Para ello generaré un booleano aleatorio para cada uno de los diodos que determinará si debe estar encendido o apagado. Este es el programa Java junto con la parte relevante del archivo Gradle para compilar y construir el ejemplo y el comando que uso para ejecutarlo.

Esta aplicación para la Raspberry Pi queda bastante vistosa y no es muy complicado de realizar a pesar del del lío de cables que resulta. Este es un vídeo de su funcionamiento.

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando el comando ./gradlew executeChristmasTree.

Miércoles 10 de mayo de 2017

Gorka Urrutia

Gorka Urrutia
Nideaderedes

Limpiar la caché de SOAP en PHP

Todo el que ha probado a trabajar con SOAP en PHP sabe que no es precisamente una delicia. Cuando te enfrentas con SOAP por primera vez en tu vida te puedes pasar varios días hasta que consigues hacerlo funcionar (y eso que hoy en día es mucho más fácil). Pero esta maravillosa tecnología siempre puede darnos algunos disgustos adicionales.

Por ejemplo, cuando cambias el nombre de uno de los servicios (o webservices) puede que te encuentres con este error:

Server did not recognize the value of HTTP Header SOAPAction

Si compruebas en la llamada que haces a SOAP seguramente el nombre que estás usando sea el correcto. Entonces ¿a qué viene este error? Lo más probable será que la llamada está usando la caché así que tendrás que “limpiarla”.

Tienes dos opciones:

1) Desactivar la caché temporalmente:

$this->nusoapDefault = new SoapClient( $soapUrl, [ 'cache_wsdl' => WSDL_CACHE_NONE ] );

Esto hará que las próximas llamadas no usen la caché. El problema es que tendrás una pequeña pérdida de rendimiento. Puedes mantener esto mientras haces pruebas pero cuando termines será mejor borrar la caché.

2) Borrar la caché de SOAP.

Los ficheros de la caché de SOAP se almacenan en la carpeta /tmp (en un servidor tipo Linux), normalmente dentro de subcarpetas cuyos nombres empienzan por wdsl. Éstas puedes borrarlas tranquilamente (ojo no borres otras cosas de la carpeta /tmp).

Por cierto, estoy escribiendo un nuevo libro de Programación Orientada a Objetos en PHP. Sígueme en twitter y no te lo pierdas. Va a ser un bombazo.

Lunes 08 de mayo de 2017

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Haciendo SSH a través de SSH. Rápido y fácil con ProxyCommand.

SSH a través de SSH
Como vemos en las películas de hackers. ¡Alguien ha conectado con el servidor y no podemos averiguar su IP porque ha estado rebotando a través de varios servidores! Bueno, yo me quejaría un poco de la velocidad de la conexión entre mi ordenador y el ordenador destino cuando paso por dos servidores intermedios. Pero puede ser un buen ejercicio. A la vez que útil cuando queremos ocultar el acceso a nuestro servidor o tenemos que acceder a un ordenador que está en una red privada.

En el primer ejemplo me refiero a un servidor cuyo acceso SSH está cerrado a todas las IPs exceptuando las de una red o una máquina concreta. Por ejemplo, podemos abrir el puerto SSH de nuestro ordenador de casa o nuestro mediacenter sólo a la IP de un servidor de nuestra propiedad. Así, cuando nos hagan un scan de puertos, el puerto estará cerrado. Pero cuando quiera conectarme desde fuera, primero tendré que conectarme a mi servidor y desde ahí conectarme al mediacenter de casa.

En el segundo ejemplo, imaginad que tenemos un servidor web conectado directamente a Internet, y un servidor de base de datos conectado al servidor web. Si deseamos acceder al servidor de base de datos desde Internet tendremos que entrar primero al servidor web y desde ahí acceder al servidor de base de datos. Bueno, este esquema de red lo podemos complicar mucho más. Además, esquemas parecidos nos los podemos encontrar, por ejemplo, en Amazon, cuando hemos creado una VPC con subred pública y privada y queremos acceder a las máquinas de la subred privada.

Pinceladas de seguridad

Antes de nada, os recomiendo este post sobre Consejos para endurecer un servidor SSH y hacerlo más seguro. Con muchas cosas a tener en cuenta a la hora de montar nuestro servidor SSH y aislarlo de posibles ataques desde fuera.
Otro detalle más, y muy interesante es que lo que pongo en este post debemos hacerlo siempre en servidores de confianza. Es decir, puede que tengamos acceso a un servidor SSH que hemos encontrado por Internet, que sea muy rápido y todo muy bonito. Pero al final, la clave privada de acceso al segundo servidor va a pasar por el primero para poder conectar. Como algún administrador de sistemas esté atento se puede quedar con tu clave privada y las claves privadas no se pueden dar a nadie.

Por otra parte, al conectar con un servidor intermedio y estar enviando una clave privada, si alguien intercepta el tráfico con el primer servidor y consigue descifrarlo podrá entrar en los dos servidores en nuestro nombre. Aunque son cosas difíciles de descifrar… todo es posible. Siempre es importante tener actualizado tanto el cliente como el servidor SSH en todos los puntos para que la negociación de protocolos elija siempre los algoritmos más seguros disponibles.

El método clásico. SSH, entro, SSH, entro

Lo primero que se nos puede pasar por la cabeza es hacer SSH en al primer servidor y una vez dentro hacer SSH al segundo. Esto es sencillo cuando tenemos contraseñas. Es decir, para entrar en el primero nos pide introducir contraseña y luego para entrar en el segundo también. Luego para cerrar la sesión, hacemos exit en el segundo y seguidamente exit en el primero.
Pero siempre se recomienda utilizar pares de claves pública y privada (ver los consejos para endurecer un servidor SSH). Aunque ahora empieza a ser un poco incómodo porque conectar al primer servidor es inmediato. Ya que el servidor conoce nuestra clave pública podemos entrar directamente. Pero para entrar en el segundo servidor, es decir, nuestro destino, este segundo servidor tiene que tener la clave pública del primer servidor y el primero la clave privada correspondiente. Por lo que configurar un sistema así es arriesgado:

  • Por un lado, la clave privada de acceso al segundo servidor debe estar siempre en el primero. Cualquiera podría verla, sobre todo si el usuario dentro del servidor es compartido. Aunque no es una técnica recomendable, se utiliza.
  • Configurarlo todo es un rollo, y es muy fácil confundirse con las claves. Además, para copiar en el servidor no vamos a utilizar nuestra clave privada, utilizamos otra por si las moscas.
  • Acceder al servidor es lento, necesitamos ejecutar un comando intermedio. Y luego si no queremos sólo acceder sino que queremos copiar archivos, es mucho más lío copiar los archivos al primero y una vez copiados, copiarlos al segundo.

Otro método que podríamos utilizar. VPN

Otro método interesante sería crear una red VPN entre nuestro ordenador y el ordenador de destino. Pasaríamos por el servidor VPN y tendríamos la conexión cifrada. Sobre esa conexión estableceríamos la conexión por SSH y listo. Aunque tendríamos que tener de antes la VPN. De todas formas, el método que explicaré a continuación con ProxyCommand podríamos utilizarlo para entra en la máquina antes de tener la VPN montada.

Conectar con ProxyCommand

Este método ha sido inventado precisamente para conectar con un servidor intermedio. En este caso, hacemos que para conectar tengamos que ejecutar algo en el servidor intermedio. ¿Qué ejecutamos? ssh para conectar y nc (netcat) para que el primer servidor haga de puente. Veamos la línea de conexión más a fondo:

ssh -o ‘ProxyCommand=ssh usuario@intermedio.com nc %h %p’ usuario@final.com

Con esto, hacemos que se utilize la opción ProxyCommand que justo antes de conectar hará ssh al intermedio.com (nuestro servidor intermedio) con el usuario usuario y seguidamente ejecutará nc al host y puerto con el que vamos a conectar. En nuestro caso el host sería final.com y el puerto 22 para SSH (aunque como veremos en futuros ejemplos, podremos variar estos puertos).

Perfectamente podríamos cambiar los puertos, por ejemplo SSH al puerto 221 para el servidor intermedio y el puerto 222 para el servidor final:

ssh -p222 -o ‘ProxyCommand=ssh -p221 usuario@intermedio.com nc %h %p’ usuario@final.com

Conectando de esta forma, la clave privada no tiene por qué estar almacenada en el servidor intermedio todo el tiempo, ni tampoco tendríamos que añadir una clave pública extra al servidor final. Directamente las cogerá de nuestro directorio ~/.ssh/ local. Y ssh se encargará de hacer la negociación de claves y protocolos.

Esto también podríamos añadirlo en nuestro archivo ~/.ssh/config con la siguiente información:

Host final.com
ProxyCommand ssh -p221 usuario@intermedio.com nc %h %p
Port 222

Ahora, haciendo sólo:

ssh usuario@final.com

Conectaría automáticamente con el proxy. Es decir, sería transparente para nosotros y no tendríamos que especificar el ProxyCommand todo el rato para conectar. Aún así hemos de ser conscientes que se ejecuta un netcat en el servidor, es decir, en ese punto, la información está sin cifrar. Si alguien mete mano en el nc estamos perdidos. Por lo tanto, hacedlo siempre en servidores de confianza. Además, si se compromete el servidor intermedio, tal vez no se haya comprometido sólo la clave privada para el servidor final. Así que cuidado.

Transfiriendo archivos

Podemos hacerlo con scp. Si en nuestro ~/.ssh/config hemos hecho las modificaciones anteriormente mencionadas no habrá problema, podremos hacer scp sin mover un dedo. Pero, ¿cómo sería el comando para hacer scp?

scp -P222 -o ‘ProxyCommand=ssh -p221 usuario@intermedio.com nc %h %p’ fichero_origen usuario@final.com:directorio_o_fichero_destino

Aunque lo interesante es hacerlo con rsync que nos da muchas facilidades y ventajas frente a la transmisión con scp:

rsync -avhP -e “ssh -p222 -o ‘ProxyCommand=ssh -p 221 usuario@intermedio.com nc %h %p'” edid_monitor fichero__o_directorio_origen usuario@final:directorio_o_fichero_destino

Aunque los argumentos -avhP no son estrictamente necesarios. Con rsync tengo siempre esta coletilla que me vale para la mayoría de los casos. Pero añadiremos -e con el comando para ejecutar ssh y tendremos que añadir toda la línea de conexión. Aunque, como antes, si lo tenemos configurado en ~/.ssh/config no hace falta.

Notas finales

Para realizar este tipo de conexión, debemos tener acceso al servidor intermedio y el servidor intermedio deberá tener acceso al segundo. Pero no es necesario que tengamos acceso al servidor final, es más, puede que no tengamos ping, puede que el servidor final, como dije al principio esté dentro de una red privada y el intermedio sea sólo el punto de entrada. Aunque lo pongamos en nuestro archivo de configuración (~/.ssh/config) podemos poner una IP privada a la que no tenemos acceso (siempre es mejor que los hosts tengan su nombre, pero no nos vamos a morir si no es así).
Pero insisto, el servidor intermedio sí que debe tener acceso.

Foto principal: Metropolitan transportation

The post Haciendo SSH a través de SSH. Rápido y fácil con ProxyCommand. appeared first on Poesía Binaria.

Sábado 06 de mayo de 2017

Raúl González Duque

Raúl González Duque
Linux – Mundo Geek

Linux en Windows: el Subsistema de Windows para Linux

El Subsistema de Windows para Linux o WSL es una nueva característica de Windows 10 que permite ejecutar binarios ELF64 de Linux directamente en Windows. Aunque el funcionamiento es parecido, no es exactamente una máquina virtual; es una nueva alternativa que abre montones de posibilidades, debido a una mucho mayor integración: realmente es casi como si estuviéramos ejecutando Linux en Windows, con un único sistema operativo común para las aplicaciones Windows y Linux.

Este proyecto, como decimos, permite utilizar herramientas nativas de Linux en Windows, desde una simple consola bash, a programas como vim, awk o git, ¡e incluso un entorno gráfico alternativo completo! ¿Quieres probarlo? ¡Pues sigue estas instrucciones!

Prerequisitos

Necesitas tener instalada la versión de 64 bits de Windows y tener actualizado el sistema a la compilación 14393 de Windows 10 Anniversary Update o superior.

Activar el Modo de programador

Pulsa Windows + I, y selecciona Actualización y seguridad -> Para programadores. Marca la opción de “Modo de programador”

Activar el Modo de programador de Windows 10

Instalar el Subsistema de Windows para Linux

Pulsa Windows + R, y escribe “optionalfeatures” para abrir el diálogo de “Activar o desactivar las características de Windows”. Selecciona “Subsistema de Windows para Linux (beta)”. Una vez instalado Windows te pedirá que reinicies el ordenador.

Activar el Modo de programador de Windows 10

¡Instalar Ubuntu en Windows!

Pulsa Windows + R, y ejecuta el comando “bash“. Te pedirá que aceptes la licencia de Canonical, la empresa detrás de Ubuntu, y descargará e instalará la distribución de Ubuntu Linux. Durante el proceso de instalación te preguntará si quieres establecer la configuración regional a la misma que tenga Windows (probablemente) y te pedirá un nombre de usuario y contraseña para crear una nueva cuenta.

Rock and roll

A partir de ahora ya tienes un sistema Linux totalmente funcional (aunque sin interfaz gráfica), con los comandos y el funcionamiento habitual de una distro Linux. Para iniciar la consola de Linux en cualquier momento, de nuevo pulsa Windows + R y ejecuta el comando bash.

Si queremos actualizar los paquetes del sistema que hemos instalado, al estar basado en Ubuntu, escribiríamos los siguientes comandos:

sudo apt update
sudo apt upgrade

Nuestro nuevo sistema tiene los discos de Windows montados en /mnt/, por lo que para listar los archivos en C:, por ejemplo, escribiríamos el siguiente comando:

ls /mnt/c

Para buscar un programa en los repositorios:

apt search término1 término2 término3

Para instalar un programa desde repositorio:

sudo apt install programa

Desinstalar Linux

Si en algún momento quieres desinstalar WSL, con un poco de suerte, porque prefieras instalar un Linux completo, basta con escribir el siguiente comando en la línea de comandos de Windows:

lxrun /uninstall /full /y

Lunes 01 de mayo de 2017

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Cómo obtener información de configuración del sistema Linux o tu servidor en C y C++ (II. Sistema y CPU)

Hace unos días comentábamos algunos ejemplos sobre obtención de información relativa a la memoria de nuestro sistema en C, tanto RAM, Swap, buffers, caché, como información relativa a una aplicación. También vimos cómo obtener el uptime de nuestro equipo o la carga media del sistema en 1, 5 y 15 minutos. Son cosas que podemos hacer fácilmente desde la línea de comandos y que pueden sernos muy útiles en nuestros programas. Por ejemplo para evaluar cuándo es el mejor momento para realizar una acción, realizar una limpieza, ajustar tamaños de nuestras reservas o detectar un posible error.

En el post de hoy veremos algunas utilidades para ver la configuración del sistema y con configuración me refiero a cosas propias del equipo en el que estamos ejecutando nuestro programa como el número de procesos que puede ejecutar un usuario, el número máximo de ficheros que pueden abrirse, número de cores o núcleos con los que cuenta el ordenador, cuáles de ellos están activos, características propias del sistema y muchas más cosas.

Configuración numérica del sistema: sysconf()

sysconf() es de esas funciones de unistd.h con las que podemos obtener gran cantidad de información. Es más, en este post no está todo lo que podéis obtener, sólo algunas cosas que me han parecido interesantes. Eso sí, si veis algo curioso que se me ha pasado, dejadme un comentario. Todas las posibilidades las podéis encontrar en el archivo /usr/include/unistd.h , tal vez las constantes no estén directamente ahí, pues depende de la plataforma y versión del sistema, pero es un punto de partida.
De forma general, sysconf() devuelve un long int y como entrada admite un int, aunque ese int, es mejor indicarlo con el valor de una constante, pues será mucho más significativo para nosotros y portable en caso de que cambiemos de arquitectura o versión de las bibliotecas.

Sin más dilación aquí va un listado de las constantes que podemos utilizar y la respuesta que esperamos:

  • _SC_ARG_MAX: Longitud máxima de los argumentos a la hora de ejecutar un comando.
  • _SC_CHILD_MAX: Número de procesos que puede lanzar un usuario determinado.
  • _SC_CLK_TCK: Ticks de reloj por segunto. Los sistemas operativos utilizan los ticks de reloj para medir el tiempo de los procesos que están corriendo, o para programar la realización de tareas (tiempo de vida de páginas de memoria o tiempos de espera de un recurso) o para tomar el control de forma síncrona. Un valor de 100 aquí, indica que cada 10ms se produce un tick de reloj.
  • _SC_LOGIN_NAME_MAX: Es el tamaño máximo del nombre de usuario para identificarnos en el sistema.
  • _SC_HOST_NAME_MAX: Tamaño máximo del hostname
  • _SC_OPEN_MAX: Número máximo de archivos abiertos por un proceso.
  • _SC_PAGESIZE: Tamaño de página de memoria (igual que utilizar getpagesize())
  • _SC_PHYS_PAGES: Número de páginas físicas en memoria. (Igual que utilizar get_phys_pages())
  • _SC_AVPHYS_PAGES: Número de páginas físicas disponibles en memoria. (Igual que usar get_avphys_pages())
  • _SC_NPROCESSORS_CONF: Número de núcleos del procesador.
  • _SC_NPROCESSORS_ONLN: Número de núcleos activos del procesador.
  • _SC_ATEXIT_MAX: Máximo de funciones que podemos encolar con atexit(). Cuidado con este valor, puede ser muy grande, y podemos decir que no estamos limitados.
  • _SC_SIGQUEUE_MAX: Máximo de señales que podremos encolar para un proceso.
  • _SC_LEVEL1_ICACHE_SIZE: Tamaño en bytes de la caché de procesador de instrucciones de nivel 1.
  • _SC_LEVEL1_DCACHE_SIZE: Tamaño en bytes de la caché de procesador de datos de nivel 1.
  • _SC_LEVELX_CACHE_SIZE: Tamaño en bytes de la caché de procesador de nivel X

Aquí vemos un ejemplo con algunas más:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <unistd.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    printf ("Máximo de argumentos: %ld\n", sysconf(_SC_ARG_MAX));
    printf ("Máximo de procesos por usuario: %ld\n", sysconf(_SC_CHILD_MAX));
    printf ("Ticks por segundo: %ld\n", sysconf(_SC_CLK_TCK));
    printf ("Máximo de streams abiertos: %ld\n", sysconf(_SC_STREAM_MAX));
    printf ("Máximo de archivos abiertos: %ld\n", sysconf(_SC_OPEN_MAX));
    printf ("Control de tareas POSIX: %ld\n", sysconf(_SC_JOB_CONTROL));
    printf ("Tamaño máximo del login: %ld\n", sysconf(_SC_LOGIN_NAME_MAX));
    printf ("Tamaño máximo del hostname: %ld\n", sysconf(_SC_HOST_NAME_MAX));
    printf ("Caché de instrucciones de nivel 1: %ld\n", sysconf(_SC_LEVEL1_ICACHE_SIZE));
    printf ("Caché de datos de nivel 1: %ld\n", sysconf(_SC_LEVEL1_DCACHE_SIZE));
    printf ("Caché de nivel 2: %ld\n", sysconf(_SC_LEVEL2_CACHE_SIZE));
    printf ("Caché de nivel 3: %ld\n", sysconf(_SC_LEVEL3_CACHE_SIZE));
    printf ("Caché de nivel 4: %ld\n", sysconf(_SC_LEVEL4_CACHE_SIZE));
    printf ("Núcleos del procesador: %ld\n", sysconf(_SC_NPROCESSORS_CONF));
    printf ("Núcleos online del procesador: %ld\n", sysconf(_SC_NPROCESSORS_ONLN));
    printf ("Bits que tiene un char: %ld\n", sysconf(_SC_CHAR_BIT));
    printf ("Bits que tiene un long: %ld\n", sysconf(_SC_LONG_BIT));
    printf ("Máximo de bytes en nombre de huso horario: %ld\n", sysconf(_SC_TZNAME_MAX));
    printf ("Funciones que podemos encolar con atexit(): %ld\n", sysconf(_SC_ATEXIT_MAX));
    printf ("Máximo de señales para encolar: %ld\n", sysconf(_SC_SIGQUEUE_MAX));
    printf ("Máximo número de referencias en enlaces simbólicos: %ld\n", sysconf(_SC_SYMLOOP_MAX));

    return 0;
       
}

Configuración textual de sistema: confstr()

A veces necesitamos un texto para expresar todo lo que necesitamos decir. En este caso, POSIX, nos brinda la función confstr() en la que, pasandole una cadena de caracteres, copia en ella el valor que le pedimos a través de una constante (como hacíamos antes). Aunque, claro, para reservar memoria en consecuencia (ajustado al tamaño del texto a almacenar) podemos llamar a esta función con NULL en lugar de un puntero a cadena y que nos devuelva el tamaño que necesita para almacenar el valor.

De todas formas, veremos pocos valores aquí. (Muchos de ellos son para ver flags de compilación, como vemos aquí). Por ejemplo encontramos cosas como:

  • _CS_PATH: Es la ruta donde están las utildades POSIX por defecto. Sería el $PATH más básico del sistema.
  • _CS_GNU_LIBC_VERSION: Versión de LIBC.
  • _CS_GNU_LIBPTHREAD_VERSION: Versión de pthreads.

Información del sistema operativo

Como cuando ejecutamos el comando uname, en C, tendremos una función también llamada uname que devolverá un struct utsname con la siguiente información (todos los elementos son cadenas de caracteres):

  • sysname: Tipo de sistema, como este post es sobre Linux, siempre veremos Linux
  • nodename: Nombre del equipo (hostname)
  • release: Versión del kernel
  • version: Versión del SO: Ubuntu, Fedora, Arch Linux junto con versión y fecha
  • machine: arquitectura de máquina: i686, arm, x86_64…
  • __domainname: Nombre de dominio (extansión GNU)

La longitus de cada campo no está claramente definida, en unos sistemas serán los campos más grandes que en otros. Eso sí, todos tienen terminador, el sistema operativo se asegura de ello, por lo que podemos utilizarlos de forma segura.

Aquí tenemos un ejemplo de uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/utsname.h>

int main(int argc, char* argv[])
{
    struct utsname unameInfo;
   
    if (uname(&unameInfo)==-1)
        {
            fprintf (stdout, "ERROR\n");
            exit(-1);          
        }
       
    printf ("S: %s\n", unameInfo.sysname);
    printf ("S: %s\n", unameInfo.nodename);
    printf ("S: %s\n", unameInfo.release);
    printf ("S: %s\n", unameInfo.version);
    printf ("S: %s\n", unameInfo.machine);

    return 0;
       
}

Hostname y nombre de dominio

Aunque uname() obtenemos el nodename que a fin de cuentas es nuestro hostname. El nombre de dominio, o domain name, no está claro y no estará siempre presente, es una extensión de GNU, que puede que no siempre tengamos disponible. Así que dejaremos por aquí otro fragmento de código que puede ser muy interesante para obtener esta información:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
    char domainname[10];

    /* Podemos hacer esto, si queremos hacerlo seriamente, utilizando
         la configuración del sistema para el tamaño máximo del hostname
         asegurándonos de no tener problemas.
         Aunque siempre podríamos declarar:

         char hostname[64];

         O un valor más grande, y no vamos a tener problemas.
    */

    char* hostname;
    int hostname_size = sysconf(_SC_HOST_NAME_MAX);
    hostname = (char*)malloc(hostname_size);
   
    if (gethostname(hostname, hostname_size)!=-1)
        printf ("Hostname: %s\n", hostname);
    else
        printf ("errno: %s (%d)\n", strerror(errno), errno);

    if (getdomainname(domainname, 10) != -1)
        printf ("Domain name: %s\n", domainname);

    return 0;      
}

Información sobre la CPU

Si has curioseado alguna vez tu sistema, habrás visto un archivo llamado /proc/cpuinfo que contiene mucha información útil sobre la CPU. Como la marca, modelo, extensiones del procesador, cores físicos, fpu, familia, frecuencia para la que fue diseñado y mucho más. Podemos parsear la información de /proc/cpuinfo en C (aunque en el ejemplo utilizo una función de C++ para extraer el archivo, podríamos hacerlo en C puro si queremos). Eso sí, me gusta extraer el fichero y luego parsear la información, aunque no sea lo más rápido (podemos leer el fichero y al mismo tiempo ir extrayendo información), porque hace nuestro código más reutilizable para otras situaciones. Aquí va el ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <unistd.h>                         /* Utilidades UNIX */
#include <fcntl.h>                          /* Control de archivos */
#include <cstring>
#include <cstdio>
#include <cstdlib>

/** Extract a whole file into a string  */
std::string extractFile(const char *filename, size_t bufferSize=512)
{
    int fd = open(filename, O_RDONLY);
    std::string output;

    if (fd==-1)
        return "";      /* error opening */

    char *buffer = (char*)malloc(bufferSize);
    if (buffer==NULL)
        return "";      /* Can't allocate memory */

    int datalength;
    while ((datalength = read(fd, buffer, bufferSize)) > 0)
        output.append(buffer, datalength);

    close(fd);
    return output;
}

using namespace std;

int main(int argc, char* argv[])
{
    string cpuinfo = extractFile("/proc/cpuinfo");
    char* tokenized;
    char* ptrptr;

    /* Es más fácil hacer el parse con sscanf() que con streams de C++
       no es tan seguro hablando de memoria, pero este tipo de ficheros
         no suelen tener fallos y no suelen exceder unos tamaños determinados. */

    tokenized=strtok_r((char*)cpuinfo.c_str(), "\n", &ptrptr);
    while (tokenized)
        {
            char name[64];
            char value[1024];
            memset(value, '\0', 1024);
            sscanf (tokenized, "%[^\t:] : %[^\t\n]", name, value);
            cout << "["<<name<<"]" << " = " << value << "\n";

            tokenized = strtok_r(NULL, "\n", &ptrptr);
        };
 
    return 0;
}

Para parsear, en este caso prefiero las utilidades que nos da C como strtok y sscanf porque son mucho más rápidas que hacerlo con streams de C++. Además, con estos últimos tenemos que hacer algunas comprobaciones o reescribir los streams para que sea más amigable y resultarían muchas más líneas de código.

Identificador único

Si necesitas un identificador único para el equipo en el que se está ejecutando el programa, puedes leer el archivo /etc/machine-id (o generalmente podemos encontrarlo en /var/lib/dbus/machine-id y debe ser el mismo archivo) ; también podemos utilizar la función gethostid() que devolverá el mismo número que devuelve el comando hostid, aunque es un identificador muy pequeño para ser universalmente único y puede que se repita alguna vez si manejamos muchos IDs de sistema.

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main (void)
{
    printf ("%ld\n", gethostid());
    return 0;
}

Es más, este ID de host se puede definir mediante la función sethostid() sólo si eres root, pero se puede definir. Otro valor que es único para cada ordenador es el obtenido directamente del hardware. Podemos consultarlo desde /sys/devices/virtual/dmi/id/product_uuid aunque sólo podremos leerlo si somos root.

Otra forma de hacerlo es obtener información variada sobre el sistema: CPU, núcleos, MAC de interfaces de red, y en definitiva, muchos de los datos que podemos ver en este post, mezclarlos y hacer un hash.

Variables de entorno

En stdlib.h encontramos la función getenv() que nos ayuda a obtener la información encerrada en variables de entorno del sistema. No sólo para Linux. Esto lo podemos ver en práctica en este ejemplo: buscando archivos dentro de nuestro PATH.

Dispositivos de red

Para no repetirme, os remito a este post: Hallar la IP de un dispositivo de red. En el cual, no sólo podremos averiguar la IP de un dispositivo de red, sino mucha más información útil del mismo como también podemos ver aquí.

En el próximo post…

El próximo post estará dedicado a los procesos. Obtención de información propia del proceso en el que nos encontramos y otros procesos a los que tenemos acceso. Estará publicado el 15 de Mayo.

Foto principal: Team UI8

The post Cómo obtener información de configuración del sistema Linux o tu servidor en C y C++ (II. Sistema y CPU) appeared first on Poesía Binaria.

Jueves 27 de abril de 2017

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

¿Qué es un VPS y cómo crear uno en DigitalOcean? [Vídeo]


Cuando vamos a contratar un hospedaje para nuestro servicio web o nuestro blog siempre pueden surgir algunas dudas. En este vídeo intento aclarar la diferencia entre contratar un servidor compartido y un servidor privado virtual. Aunque tenemos muchas opciones entre nosotros.

Todo se explica de una forma muy general, intentando simplificar las cosas lo máximo posible. Y quiero aclarar que tener un hosting compartido en muchas ocasiones no es malo, al igual que no siempre un VPS es lo mejor.

¿Qué es un VPS? ¿Cómo crear uno en DigitalOcean?

Contratar un VPS en DigitalOcean

Este proveedor ofrece hospedaje en servidories privados virtuales asequible y de calidad. Llevo varios años con ellos, y el servicio está cada vez mejor. Hay más soporte de software y cada vez podemos hacer más cosas. Últimamente soportan balanceo de carga y almacenamiento adicional. Cosas que, si las querías antes tenías que adaptarlas a mano.
Por otro lado, puedes ayudar a mantener vivo este blog. Si contratas un servidor con DigitalOcean, cuando pagues tus primeros $25 (aunque estés en España te cobran en dólares. En abril de 2017 el dólar vale un poco menos que el euro, por lo que saldría por algo menos de 24€). Una vez agotados los $10 de bienvenida, a mí me darán otros $25 para gastar en hospedaje, con lo que habrías colaborado con los gastos del servidor y encima te habrás llevado un buen hospedaje para tu web, servicio o blog.

Mucha más información

Si quieres saber alguna cosa más sobre DigitalOcean. Tengo otro tutorial para crear direcciones IP flotantes. Donde explico la utilidad de las mismas y algún ejemplo de uso.

Dudas y comentarios

Puedes dejar tus dudas y comentarios sobre el vídeo tanto en la página de youtube como aquí. Intentaré responderlos todos cuanto antes.

The post ¿Qué es un VPS y cómo crear uno en DigitalOcean? [Vídeo] appeared first on Poesía Binaria.

Lunes 17 de abril de 2017

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Temas y plantillas en Hugo – Parte 4

En esta serie de artículos sobre el gestor de contenidos Hugo, vamos a centrarnos en los temas.

En el siguiente enlace podemos ver cientos de ejemplos de temas para Hugo:

http://themes.gohugo.io/

Para instalarlos sólo hay que descargarlos y copiarlos en la carpeta themes de nuestro sitio. Aunque la mayoría de los temas los podemos instalar usando el comando git.

Algunos temas nos van a requerir alguna distribución especial de los contenidos o introducir alguna configuración especial en el sitio. Esto lo podemos ver en las descripciones de los temas.

Los temas se crean a través de las plantillas (Templates) de Hugo. Básicamente una plantilla es un fichero html y en el que vamos a encontrar algunas etiquetas especiales del tipo “{{ algo }}”.

Por ejemplo:

<!DOCTYPE html>
<html>
<head>
  <title>{{ .Title }}</title>
</head>
<body>
  <h1>{{ .Title }}</h1>
  {{ .Content }}
</body>
</html>

Esto es una plantilla html del lenguaje Go. Para ver una introducción a este lenguaje podemos consultar la documentación de Hugo sobre las plantillas:

https://gohugo.io/templates/go-templates/

En el ejemplo anterior, se puede ver que aparece la etiqueta “{{ .Title }}”, que lógicamente se reemplaza por el título cuando el sitio se construye. También tenemos la etiqueta “{{ .Content }}”, que se reemplazará por el contenido.

Temas y layouts

Hay dos carpetas que nos var interesar la carpeta themes y la carpeta layouts. Generalmente layouts estará vacía y cuando se tenga que crear un sitio, se tomarán los archivos de themes y se usará el tema que se haya seleccionado. Puede ocurrir que deseemos que independientemente del tema a utilizar, se use una determinada configuración para la página de inicio (por ejemplo), podemos entonces crear nuestra página de inicio en layouts que se usará independientemente del tema que se vaya a poner por defecto.

Plantillas principales de Hugo

Tenemos la plantillas:

  • Single: Representa cómo se va a dibujar una entrada o un elemento simple de contenidos
  • List: Representa cómo se va a dibujar una lista de contenidos.
  • Homepage: Es la página de inicio de nuestro sitio.

Empecemos por la página de inicio, la vamos a entrar en el directorio “themes/nuestro-tema/index.html”. Probad a editarla y veréis cómo se modifica la página de inicio de vuestro sitio.

Según el tema, también deberéis tocar ciertos parámetros de la configuración para cambiar ciertos elementos del tema.

Pero antes de continuar vamos a ver las posibilidades de las plantillas de Go.

Plantillas de Go

Variables

Hugo usa las plantillas del lenguaje Go para procesar el texto html de forma muy rápida. Como ya se ha dicho, las plantillas van entre los símbolos {{ }}. Así, por ejemplo, para obtener el valor de una variable ya definida se pondría:

<!DOCTYPE html>
<html>
<body>
  {{ variable }}
</body>
</html>

Las variables que define Hugo, se pueden encontrar en:

http://gohugo.io/templates/variables/

Para definir el valor de una variable también se puede usar el símbolo $ delante de la variable:

{{ $variable := "Hola mundo" }}

Después se obtiene su valor:

{{ $variable }}

Hugo también permite usar funciones, las funciones predefinidas se pueden encontrar en:

http://gohugo.io/templates/functions/

Para usar una función simplemente se la llama por su nombre:

{{ función }}

Para pasar argumentos a una función, se ponen los argumentos separados por espacios:

{{ add 1 2}}

La función add suma dos valores, en este caso devolverá 3.

Iteraciones

Las plantillas de Hugo permiten iterar entre los elementos de una array. Para ello se usará “range”. Por ejemplo, para listar todos los elementos de un array:

{{ range $elemento := array }}
    {{ $elemento }}
{{ end }}

Vamos a verlo funcionar, se abre el archivo index.html, dentro de nuestra carpeta themes/tema, e introducimos:

{{ range $pagina := .Data.Pages }}
    Títulos de páginas: {{ $pagina.Title }}<br/>
{{ end }}

Ahora al generar el sitio veremos el contenido que se ha introducido al ejecutar “range”.

Se puede también acceder por contexto:

{{ range array }}
    {{ . }}
{{ end }}

En el ejemplo que estábamos manejando:

{{ range .Data.Pages }}
    Títulos de páginas: {{ .Title }}<br/>
{{ end }}

Por último, se pueden usar mapas, para iterar en el mapa se puede usar la siguiente construcción:

{{range $índice, $elemento := array}}
    {{ $índice }}
    {{ $elemento }}
{{ end }}

En nuestro ejemplo:

{{ range $index, $page := .Paginator.Pages }}
    {{ $index }}
    {{ $page.Title }} <br/>
{{ end }}

Condicionales

La estructura if está soportada por la plantillas de Go. Por ejemplo:

{{ if lt 2 3 }}
    Cierto
{{ end }}

que significa si 2 es menor que 3 escribe “Cierto”.

Disponemos de los comparadores:

  • eq Devuelve verdadero si arg1 == arg2
  • ne Devuelve verdadero si arg1 != arg2
  • lt Devuelve verdadero si arg1 < arg2
  • le Devuelve verdadero si arg1 <= arg2
  • gt Devuelve verdadero si arg1 > arg2
  • ge Devuelve verdadero si arg1 >= arg2

Se puede usar and y or para añadir nuevas condiciones, pero hay que tener en cuenta que en la plantillas de Go los argumentos van siempre detrás de la función:

{{ if and (lt 2 3) (gt 3 2) }}
    Cierto
{{ end }}

Por supuesto, la estructura if-else también se puede usar:

{{ if lt 3 2 }}
    False
{{ else }}
    Cierto
{{ end }}

Else if:

{{ if lt 3 2 }}
    False
{{ else if gt 3 2 }}
    Cierto
{{ end }}

Se puede usar not para negar una condición:

{{ if not lt 3 2 }}
    Cierto
{{ end }}

Contextos

A veces tenemos que hacer referencia a objetos dentro de otros objetos y hay que escribir mucho código. Una forma de hacer esta tarea más cómoda es usando with. En el siguiente ejemplo, cada vez que nos refiramos a . dentro de la estructura with, nos estaremos refiriendo a “.Params.title”:

{{ with .Params.title }}
    <h4>{{ . }}>
{{ end }}

Tuberías

Se tiene algo similar a las tuberías UNIX, por ejemplo, supongamos la siguiente operación matemática:

{{ add 5 (add 3 2) }}

Se podría escribir de la siguiente forma:

{{ add 3 2 | add 5 }}

Como se puede ver el resultado de la suma 3+2 se pasa como último argumento de la siguiente operación “add 5”.

Se pueden encadenar varias tubería:

{{ add 3 2 | add 5 | add 4}}

Uso del operador . en contextos

El operador {{ . }} siempre se refiere al contexto actual. Nos sirve para llamar a variables y a varibles dentro de variables (“.Params.title”). Dentro de un bucle {{ . }} se referirá al valor del elemento actual. Si es necesario acceder al contexto global, se puede usar $., por ejemplo:

{{ range .Data.Pages }}
    Títulos de páginas: {{ .Title }}
    {{ $.Site.Title }} <br/>
{{ end }}

Includes

Se puede incluir un archivo dentro de otro. Por ejemplo, podríamos tener en una archivo la cabecera que queremos que aparezca en todas las páginas web de nuestro sitio. En otro archivo el pie de página. En cada página que escribamos, podemos incluirlos usando:

{{ partial "cabecera" . }}

Texto de la página

{{ partial "pie" . }}

De forma automática Hugo incluirá el pie y la cabecera en la página. Si hacemos una modificación en la cabecera, todas las páginas en las que hayamos incluido la cabecera, recibirán la actualización.

Para incluir archivos podemos usar el comando partial:

{{ partial "archivo" contexto }}

El archivo debe estar localizado en el directorio layout/partials. El contexto se refiere a las variables a las que tendrá acceso el archivo incluido, normalmente acceden a “.”.

Tenemos otra forma de incluir archivos usando template:

{{ template "archivo" contexto }}

La diferencia se encuentra en que el archivo a incluir deberá estar en layout. La documentación de Hugo recomienda usar partial.

Si exploráis los temas de Hugo vais a ver buenos ejemplos del uso de partial.

Existe otra forma de incluir plantillas, la función “.Render”. Para introducir contenidos con “.Render” sólo hay que incluir el nombre de la plantilla a utilizar. Por ejemplo, para ver la plantilla “summary.html”:

{{ .Render "summary"}}

Eliminando espacios en blanco

Imaginad que el comando “.Title” devuelva un título con espacios en blanco y saltos de línea antes y después, por ejemplo:

<h1>{{ .Title }}</h1>

e imaginad que la salida final fuera:

<h1>
    Ejemplo de título
        </h1>

Esta salida no es elegante ni cómoda de leer a la hora de editar código.

Usando el operador {{- -}} se pueden eleminar estos espacios:

<h1>{{- .Title -}}</h1>

La salida final sería:

<h1>Ejemplo de título</h1>

Paso de parámetros a las pantillas

Hugo tiene predefinidas una serie de variables que pueden ser útiles:

http://gohugo.io/templates/variables/

A través de los archivos de configuración o a través de metadatos, se pueden pasar parámetros, definidos por el usuario, a las plantillas. Supongamos que se define la sección params en el archivo “config.toml”. Dentro de esta sección definimos las variables que necesitamos, por ejemplo:

baseurl = "http://localhost:1313"
languageCode = "es"
title = "Ejemplo de nuevo sitio"

[params]
ejemplo = "Ejemplo de valor definido"

Dentro de uno de los archivos del tema podremos introducir:

{{ .Site.Params.Ejemplo }}

y allí obtendremos el valor de la variable.

De forma similar se pueden definir variables en la cabecera de las entradas. Por ejemplo, si se tiene la entrada “hola-mundo.md”, se podría introducir la variable “Fecha”:

+++
date = "2017-04-07T01:04:36+02:00"
title = "hola mundo"
Fecha = true

+++

Hola mundo **esto** es un ejemplo.

Ahora se podría ir a la parte del tema correspondiente y hacer que si Fecha es true, se muestre la fecha de esta entrada:

{{ if .Params.Fecha }}
    {{ .Date.Format .Site.Data.Formats.date }}
{{ end }}

Como se puede ver usando “.Params.parámetro” se puede acceder al valor de la variable.

Para terminar

Hasta aquí esta breve introducción a los temas Hugo. Un par de recomendaciones:

La primera, ver la documentación oficial de Hugo:

https://gohugo.io/templates/go-templates/

Por otro lado es bueno bajarse un tema y explorarlo y modificarlo. Veremos que se usan cosas como “.Render” que llama a alguna plantilla para mostrar los contenidos. Para no volvernos locos buscando los archivos se recomenda usar los comandos de UNIX grep y find:

Con grep buscaremos los archivos que contengan algún tipo de texto que nos interese:

grep -Re 'texto a buscar'

Por otro lado find nos ayuda a buscar archivos por su nombre:

find . -name "nombre del archivo"

En el nombre del archivo se pueden introducir wildchars como son el * y la ? que nos ayudan a buscar los archivos de forma más cómoda.


Lunes 10 de abril de 2017

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Resolviendo el problema de los acentos y las eñes que de repente dejan de funcionar

¿Alguna vez os ha pasado que estabais escribiendo algo en vuestro Linux y los acentos han dejado de funcionar? Pues tiene solución y es sencilla, se llama ibus.

En Ubuntu sólo tenemos que ir a “Configuración del sistema/Soporte de Idiomas” y seleccionar en “Sistema de método de entrada de teclado” la opción ibus. Reiniciamos y… problema resuelto.

¿Y si no tengo esta ventana? Por ejemplo, estoy usando un escritorio LXDE con lo mínimo instalado. Entonces hay que instalar ibus:

sudo apt install ibus

Una vez instalado con la herramienta ibus-setup, lo podemos configurar:

Captura de pantalla de 2017-04-09 17-03-22

Fin.


Domingo 09 de abril de 2017

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Contenidos en Hugo – Parte 3

En esta serie de artículos sobre el gestor de contenidos Hugo, vamos a centrarnos en la creación de los contenidos.

Con el comando:

hugo new

Se pueden introducir nuevas entradas en nuestro sitio web. Por ejemplo:

hugo new eldiario/noticia1.md

Dentro del directorio content, se habrá creado una carpeta llamada “eldiario” y allí dentro un archivo con la extensión “md”, “noticia1.md”.

Ahora con:

hugo new eldiario/noticia2.md

Dentro del directorio eldiario/noticia se habrá creado “noticia2.md”.

Si ahora con el comando:

hugo server --theme=hugo_theme_robust -Dv

Visitamos el sitio web creado, se puede comprobar que aparecen noticia1 y noticia2, y a cada una se les ha asignado la etiqueta “eldiario” (que coincide con el nombre del directorio). Si se hace clic sobre el nombre de la etiqueta, nos mostrará todas las noticias que tengan asignada esta etiqueta (notica1 y noticia2).

Si las comparamos con las taxonomías, en las taxonomías se creaba un menú con las etiquetas que se habían introducido. En el caso de las etiquetas no.

Vamos ahora a introducir una imagen en una de las entradas que hemos creado. Las imágenes las podemos poner en 2 lugares:

  • En la carpeta en la que se introduce la entrada.
  • En la carpeta static.

Por ejemplo, creamos una entrada nueva:

hugo new noticia/noticia1.md

Se creará la carpeta “content/noticia” y dentro de ésta “noticia1.md”.

Ahora ponemos una imagen en “content/notica”, por ejemplo, “imagen1.png”. Si queremos hacer que esta imagen aparezca en la noticia, en el texto de la noticia deberemos poner:


+++
date = "2017-04-09T15:35:01+02:00"
draft = true
title = "noticia1"

+++

En formato markdown
![Esto es una imagen](../imagen.png)

En formato html:
<img src='../imagen.png' />

Si nos fijamos, la referencia a la imagen la hacemos a la carpeta anterior “../imagen.png”.

Si ahora, la imagen la ponemos en la carpeta static, la referencia deberá ser:


+++
date = "2017-04-09T15:35:01+02:00"
draft = true
title = "noticia1"

+++

En formato markdown
![Esto es una imagen](/imagen.png)

En formato html:
<img src='/imagen.png' />

Es decir a “/imagen.png”, los contenidos de static se copian directamente a la raíz del sitio web.

Por último, si en static creamos la carpeta “img” y ponemos la imagen en “static/img”, deberemos poner:


+++
date = "2017-04-09T15:35:01+02:00"
draft = true
title = "noticia1"

+++

En formato markdown
![Esto es una imagen](/img/imagen.png)

En formato html:
<img src='/img/imagen.png' />

Es decir, en la raíz del sitio web se va crear la carpeta “/img” y dentro de ella se copiará la imagen.

Algunos temas soportan imágenes en las cabeceras de las noticias, para ello usamos el parámetro thumbnail en la cabecera del documento:

+++
date = "2017-04-09T15:35:01+02:00"
draft = true
title = "noticia1"
thumbnail = "/imagen.png"

+++

Esta es la noticia 1.

Por último, vamos a dar un repaso a los directorios que se crean cuando se ejecuta el comando “hugo new site” para crear un sitio nuevo:

  • archetypes: Cuando se crea un nuevo contenido con el comando “hugo new”, se añaden al artículo algunas configuraciones por defecto, como el título o la fecha. Aquí se pueden definir las configuraciones por defecto que se van a colocar.
  • config.toml: Es el archivo de configuración del sitio web. Usa el lenguaje TOML, aunque se pueden usar otros como JSON o YAML. En él se definen cosas como el nombre del sitio, el idioma, la URL.
  • content: Aquí se almacenan los contenidos que el usuario almacena en el sitio.
  • data: Se usa para almacenar la configuración que Hugo usa para generar el sitio web.
  • layouts: Indica la forma en la que los contenidos van a ser transformados en un sitio estático.
  • static: Lo podemos usar para almacenar todos los contenidos estáticos del sitio, como imágenes, Javascript, CSS, imágenes,… El contenido se copiará a la raíz del sitio.
  • themes: Son los temas que definen la apariencia que va a tener el sitio web. Se pueden crear e instalar varios temas y cambiar de uno a otro. Hay muchos temas disponibles para ser descargados y modificados.

Jueves 06 de abril de 2017

José María Morales Vázquez

José María Morales Vázquez
tecnología – Un lugar en el mundo…

Problemas de postgrey y las listas grises con los servidores de correo de outlook y hotmail de Microsoft

correo Hace ya años que contamos por aquí en que consisten las listas grises a la hora de validar como bueno un correo y combatir contra el spam y enseñamos a configurarlas en un servidor con Debian y postfix. Recientemente he tenido muchos problemas con los correos que vienen de servidores de Microsoft (¡como no!) que provocaban retrasos de hasta algunos días o pérdida de correos en algunas ocasiones. Vamos a contar que es lo que ocurre y como solucionarlo.

El problema que tenemos con los servidores de correo de Microsoft es que el reintento de envío del correo que exige el sistema de listas grises no se realiza desde el mismo servidor que realiza el envío original con lo que nuestro sevidor toma el reintento como un correo diferente al original y no lo valida como correcto. La solución es fácil y seguramente estará “parcheada” en un futuro en nuestras Debian, pero por el momento tienes que solucionarla por ti mismo. Vamos a verlo.

En el directorio /etc/postgrey tenemos dos ficheros: whitelist_clients y whitelist_recipients. En ellos podemos incluir manualmente los servidores y direcciones de correo (respectivamente) que queremos validar automáticamente sin pasar por el sistema de listas grises. No obstante, hacerlo es una mala idea: en estos ficheros (sobre todo en el primero) es donde los mantenedores de Debian incluyen los servidores de correo que ya saben que dan problemas con el sistema de listas grises pero son servidores válidos. Posiblemente nuestro problema se resolverá en un futuro próximo cuando la gente de Debian incluya los servidores de Microsoft en este fichero pero mientras tanto tenemos que buscarnos una solución. Postgrey admite incluir en este mismo directorio dos nuevos ficheros con la misma funcionalidad pero donde podamos incluir nuestros propios servidores y direcciones de correo sin miedo a perder actualizaciones: whitelist_clients.local y whitelist_recipients.local.

Ahora ya sólo nos hace falta saber cuales son las direcciones de los servidores de correo de Microsoft. Afortunadamente están casi todas publicadas aquí. En algún foro he leído que es interesante añadir un par de líneas adicionales para validar los servidores de los servidores de Office 365. Al final, mi fichero whitelist_clients.local ha quedado así:

23.103.132.0/22
23.103.136.0/21
23.103.144.0/20
23.103.156.0/22
23.103.191.0/24
23.103.198.0/23
23.103.198.0/24
23.103.199.0/24
23.103.200.0/22
23.103.212.0/22
40.92.0.0/14
40.107.0.0/17
40.107.128.0/18
52.100.0.0/14
65.55.88.0/24
65.55.169.0/24
94.245.120.64/26
104.47.0.0/17
104.212.58.0/23
134.170.132.0/24
134.170.140.0/24
157.55.234.0/24
157.56.110.0/23
157.56.112.0/24
207.46.51.64/26
207.46.100.0/24
207.46.163.0/24
213.199.154.0/24
213.199.180.128/26
216.32.180.0/23
2a01:111:f400:7c00::/54
2a01:111:f403::/48
104.47.0.0/17
40.107.0.0/16
/.*outbound.protection.outlook.com$/
/outlook/

Ahora sólo queda reiniciar los daemons de postgrey y postfix para que los cambios tomen efecto y listo

Artículo Original: .

Este artículo pertenece a Un lugar en el mundo... Si quieres ver actualizaciones y comentarios interesantes visita el texto original en: Problemas de postgrey y las listas grises con los servidores de correo de outlook y hotmail de Microsoft || Hospedado en un Cloud VPS de Gigas.

Miércoles 22 de marzo de 2017

BlogDRAKE: La magia sigue viva

Lunes 20 de marzo de 2017

BlogDRAKE: 3 de mis imagenes estaran en Mageia 6

Lunes 13 de marzo de 2017

Guillermo Garron

Guillermo Garron
GNU Linux

{{ post.title }}

{{ post.content | xml_escape }}
Juanje Ojeda

Juanje Ojeda
Nada de particular

Cambio de profesión

El 8 de noviembre del año pasado cumplí 38 años y me siento mejor de lo que me sentía con 20, así que estoy muy contento :-)

Además, celebré mi cumpleaños regalándome un cambio de profesión. He vuelto a una de mis 2 grandes pasiones, el cuerpo humano y la educación física.

Después de estar un tiempo reciclándome (hace 15 años que estudié Ciencias de la Actividad Física y del Deporte y han cambiado muchas cosas desde entonces...) y dedicándome a mejorar mi salud, me decidí a tirarme a la piscina y dejar los ordenadores para dedicarme a las personas.

Hacía mucho que no estaba tan motivado con algo :-)

Ya llevo casi un año metido en esa aventura y cada día más motivado. Aprendo mucho cada día e intento compartir ese conocimiento en mi nuevo blog profesional:
Juanje Ojeda

La mayoría de mis clientes son personas con mi antiguo perfil. Personas sedentarias que trabajan todo el día con ordenadores y que les cuesta encontrar tiempo y fuerza de voluntad para tomar las riendas de su salud.
Incluso he empezado a ayudar de forma remota a antiguos compañeros de trabajo y gente del gremio. Es lo bueno de Internet y las nuevas tecnologías :-P
Entrenamiento online

Espero seguir así de contento e ilusionado con esta nueva etapa durante mucho tiempo. Pero si no es así, al menos lo intenté y lo disfrutaré mientras dure :-)
Juanje Ojeda

Juanje Ojeda
Nada de particular

Nace ASOLIF. Una apuesta de futuro y colaboración

Copio el anuncio que hizo el amigo Agustín sobre el nacimiento de la asociación de empresas de software libre federadadas (ASOLIF) en la lista de socios de Hispalinux, que el lo explica mejor de lo que lo haría yo ;-)

Ayer precisamente vi a Gonzalo (Fotón), que venía de la firma de la misma y que venía muy animado y esperanzado con el proyecto. Más tarde se nos unió Victor Fernandez (gerente, socio y amigo de Emergya) y tuvimos una cena muy agradable con tapitas y cervezas en la que hablamos de ASOLIF, los diferentes modelos de negocio y enfoques de las empresas que producen y consumen software libre, y más temas relacionados y muy interesantes.
Fué un debate intenso, interesante y muy constructivo. Que es lo más importante. Exponer opiniones, argumentarlas y sacar lo mejor de cada una de ellas para mejorar y avanzar.

Bueno, no me enrollo más, les dejo el mensaje de Agustín, para que aquellos que no están en la lista, puedan enterarse de esta interesante y prometedora noticia.

-----Original Message-----
From: Agustín Benito Bethencourt

Date: Fri, 29 Feb 2008 16:25:46
To:socios EN hispalinux PUNTO es
Subject: [Socios-HispaLinux] nace asolif


Hola a todos,

me congratulo en comentar que hoy nace oficialmente ASOLIF, la asociación de
empresas de software libre federadas. Forman parte de ella inicialmente las
asociaciones regionales ESLIC (Canarias), ESLE (País Vasco) y CatPL
(Cataluña). La inauguración ha sido auspiciada por el CENATIC esta mañana.

Como miembro fundador (y de la actual Junta Directiva) de ESLIC, quiero
decirles que se trata de una iniciativa que ha costado un año llevar adelante
y que esperamos todos sea la chispa que nos permita a las empresas de
software libre disponer de un foro efectivo, donde poder conectarnos formando
una red de empresas que den soporte e impulsen el software libre a nivel
empresarial en nuestro pais. El software libre SI tiene quien lo soporte en
España.

Sé que hay muchos empresarios que pertenecen a Hispalinux y sé que la propia
asociación ha servidor muchas veces como vehículo de nuestras demandas e
inquietudes. Sólo espero que la colaboración entre Hispalinux y la nueva
Federación sea lo más fructífera posible. Nos necesitamos.

Si eres profesional o empresa, permíteme invitarte a moverte para formar una
asociación de empresas en tu Comunidad (hay algunas que lo están haciendo ya)
y pasar a formar parte de esta Federación. Debemos estar todos para que el
esfuerzo que hemos puesto en esto tenga sentido.

Saludos
--
Agustín Benito Bethencourt
Grupo CPD
abenito @ grupocpd.com
http://www.grupocpd.com
http://agustin.ejerciciosresueltos.com
http://www.toscalix.blogspot.com
_______________________________________________


IMPORTANTE: Los mensajes y opiniones que aparecen en esta lista son de la exclusiva responsabilidad de sus autores. No son atribuibles a Hispalinux ni a los gestores de la lista.
-----Original Message-----


A ver qué tal va este asunto. ¡Mucha suerte a todos! :-)



Juanje Ojeda

Juanje Ojeda
Nada de particular

Sobre la BlackBerry desde la BlackBerry (III)

Lo prometido es deuda, aquí tienen el listado de mis aplicaciones favoritas para la BlackBerry.

He buscado cosas libres, pero es complicado encontrarlas. En su defecto he encontrado aplicaciones gratuitas. No es lo mismo, pero siendo prácticos, me sirven.

Listaré las aplicaciones por funcionalidad:


Y algunas aplicaciones vía web o wap:

¿Qué es lo que más uso yo? Pues después de probar mucho y pasarseme algo de la novedad lo que realmente uso y me resulta bastante práctico es:
(ordenado por frecuencia de uso)


Por cierto, el Opera Mini está muy bien, pero tiene algunas cosas que no terminan de gustarme y no se integra bien con la Perla. El trackball no funciona como esperas y no te deja ir a un enlace directamente con él, tienes que dar dos pasos...
Menú -> Selecionar

Usabilidad: -10 :-(

Una pena porque en cuanto a rapidez de carga y formateo de páginas es genial.

Otro día una escribo una revisión a algunas de estás webs o aplicaciones que uso. Pero espero que esta pequeña relación de enlaces le resulte útil a más de uno. A mí tener algo así me hubiera ahorrado bastante tiempo...
Otra cosa de la que me gustaría hablar es sobre el PIN. Si alguien tiene información útil e interesante sobre el tema, que lo diga, así me documento mejor del tema ;-)


Viernes 10 de marzo de 2017

BlogDRAKE: Humor: La comunidad en estos momentos 2
José María Morales Vázquez

José María Morales Vázquez
tecnología – Un lugar en el mundo…

Chuletillas (y XXXXVII) – Instalar un programa de debian Stretch mientras que usas debian stable (Jessie)

chuletaSi quieres instalar un determinado programa (y sus dependencias obligatorias) incluido en la próxima versión de Debian (Stretch) mientras continuas usando la versión stable (Jessie) puedes hacerlo de la siguiente forma:

En primer lugar edita tu fichero sources.list (en el directorio /etc/apt) e incluye al final las direcciones de los repositorios de Stretch pero sin eliminar ni modificar los que ya usas de Jessie. Por ejemplo así:

# Repositorios de Jessie
deb http://http.debian.net/debian/ jessie main contrib non-free
deb-src http://http.debian.net/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

# Updates de Jessie, antes conocidos como 'volatile'
deb http://http.debian.net/debian/ jessie-updates main contrib non-free
deb-src http://http.debian.net/debian/ jessie-updates main contrib non-free

# Backports de Jessie
deb http://http.debian.net/debian jessie-backports main contrib non-free

#Repositorios de Stretch
deb http://http.debian.net/debian/ stretch main contrib non-free
deb-src http://http.debian.net/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

# Updates de Stretch
deb http://http.debian.net/debian/ stretch-updates main contrib non-free
deb-src http://http.debian.net/debian/ stretch-updates main contrib non-free

A continuación creamos un fichero llamado stretch en el directorio /etc/apt/preferences.d y escribimos en el lo siguiente:

Package: *
Pin: release n=jessie
Pin-Priority: 900

Package: *
Pin: release n=stretch
Pin-Priority: 100

Con esto estamos modificando la prioridad con la que Debian actualizará nuestros paquetes. Por defecto instala siempre la versión más moderna de todas las que tenga disponibles en sus repositorios. Con este fichero le dará preferencia a cualquier paquete de jessie frente a uno de stretch aunque tenga una versión menor. Es decir, mantendremos nuestro sistema con las versiones de jessie salvo que un paquete no exista en esta y si en stretch… O se lo indiquemos manualmente durante la instalación que es lo que vamos a ver a continuación. Si quieres maś información sobre la forma de establecer preferencia para apt puedes echarle un vistazo a esta página.

Y ya lo tenemos todo listo. Ahora, tenemos que actualizar nuestros repositorios (apt update) y cuando queramos instalar un paquete directamente de stretch lo especificamos manualmente en el comando apt. Por ejemplo, si quisiéramos instalar la versión de apache de stretch lo haríamos así:

apt-get install -t stretch apache2

Artículo Original: .

Este artículo pertenece a Un lugar en el mundo... Si quieres ver actualizaciones y comentarios interesantes visita el texto original en: Chuletillas (y XXXXVII) – Instalar un programa de debian Stretch mientras que usas debian stable (Jessie) || Hospedado en un Cloud VPS de Gigas.

Jueves 02 de marzo de 2017

José María Morales Vázquez

José María Morales Vázquez
tecnología – Un lugar en el mundo…

Nueva página: Herramientas web de testing y monitorización

herramientas En muchos de los articulos que publico por aquí referencio herramientas web encaminadas a ayudar con la configuración, pruebas o análisis de diversos elementos de nuestra infraestructura informática. Servidores Web, certificados SSL, Disponibilidad, Correo Electrónico, Seguridad, etc. El enlace a la página está en el índice lateral y aquí:

Herramientas web de Testing y Monitorización

El propósito de esta nueva página es recogerlas en un único lugar para mantener una referencia completa, cómoda y perfectamente autorizada. Todas las herramientas relacionadas en ella son gratuitas al menos en un modo básico aunque podrían tener un modo de pago más completo. Y si conoces alguna otra que no aparece y crees que puede ser útil no dejes de enviármela a través de un comentario por favor. Gracias.

Artículo Original: .

Este artículo pertenece a Un lugar en el mundo... Si quieres ver actualizaciones y comentarios interesantes visita el texto original en: Nueva página: Herramientas web de testing y monitorización || Hospedado en un Cloud VPS de Gigas.

Domingo 19 de febrero de 2017

Marcelo Fortino

Marcelo Fortino
Fortinux

Tutorial Instalar PHP Server Monitor en Ubuntu GNU/Linux

En este tutorial vamos a instalar PHP Server Monitor en un servidor Ubuntu 14.04. PHP Server Monitor es una aplicación web open source que sirve para monitorear servidores web y/o sitios web.

Martes 07 de febrero de 2017

Ramón Miranda

Ramón Miranda
Ramon Miranda

TRUN videogame cover for VGsource


Talking about TRON is talking about a classic science fiction film and one of the best tributes to creativity and imagination in the world of cinema. Somewhat misunderstood film at first, but time makes justice and put TRON in its place. And if we talk about mythical elements of the film, we have to talk about bikelight racings ...

TRUN is a videogame created in Z80 assembler based on  original TRON.
The creators of the game are Vgsource, an indie development group that codes for MSX.
A few months ago, I was contacted to design their videogame cover and thus give it a greater visual impact.
It was an interesting work because from the first moment we looked for a 80's look"  immitating the style of covers of the era of Dinamic or Topo (spanish companies), where Azpiri was king illustrating those beautiful casettes and the less important was the result on screen (at least for people like me)
The first thing I did was to take references, and as it was not going to be otherwise the TRON movie itself was the main source of inspiration. I had several keys in mind while painting this illustration:
  •     blue
  •     Light
  •     No Fx overlay.
  •     Speed
  •     80's smell
Do you want to see how development was? Then we analyze the different phases briefly.

Sketches Phase

After analyzing what I want to emphasize in the image I start working on the sketches.
These are not very detailed drawings, but you can see the main elements of the design.


I decide for the first by movement feeling.



As we know the diagonals add movement to the composition and as I want to transmit speed I choose the design with that scheme and the broad to be able to study where to place each thing. Something that in the end I will change are the bikes. Finally will be even more "homage" to the original light bikes designed by Syd Mead.

References Phase

Being the game a "clone" of the game of TRON does not seem crazy to me to take references of the film. Since we are going to make a copy of a classic we will do well. Let it be noticed! That's why I create a composition with multiple references to then paint over what I need and get the result I want, not so photo but 2d. There is still a lot of work left. This system is not the only one I use for my illustrations.
This is the result of collage done inside Krita. All images have their corresponding copyright. We only use this as an idea. At the end, 100% of the illustration is repainted.



From this point we will work the Backgrounds. For the backgrounds, brushes that are quick for "covering big areas" are usually used. I use a brush that has the characteristic that diffuses the paint when low pressure is used and is adding more paint as the pressure increases. This is what I show you in the capture.




It has a Knive effect and belongs to the set I made for the DVD of the krita foundation #muses. If you are interested you can download it here totally free.

PACK bundle muses

Note: If for some reason you see that this brush produces somekind of "Lag", a very useful thing that speed up this brush and many of Krita's brushes is to use the "precision" parameter inside the brush editor and lower it from 5 to 1 If you also use large sizes you can increase the brush spacing to 0.5 or 0.7. It can be further optimized to gain speed in very large sizes.




Beyond it you will see that it is very fluid but loses a little of quality. These brushes require important computation operations for the CPU but give very interesting results.
What I want is to blur the photo effect but respecting the colors that are underneath while still being spots and at the same time giving me more freedom to paint over. You will see that the result is very pictorial. Handcrafted within the digital.

 
Now it's time to start defining all the elements of the image.
The face in the photo does not show an emotion according to what I look for, come on man! You're playing with your life in a race! :)
I have created this Gif for those who like to follow the evolution of the steps to follow.


You can see how the lighting changes as I work the metal. The gif was done with Gimp. It explains much more than a page of text. Among other things it is seen how the light is affecting the face of the character and his helmet.

The same thing happens in the background. When I go detailing the bikes and the kind of hangar where they come from.

When completing the image we run the risk of adding too many details. So beware of the Glow and the additive or color dodge modes that hook.
Making lines or curves accurately is complicated with freehand so one way to avoid headaches is to use paint assistants.

For example a use would be in the curve that defines the motorcycle panel of the character.


LightBykes

A main element of this image are the light bikes. Let's do something simple so we do not separate too much from what will be seen on the screen.


 

The problem as I see it is that the bikes need some lines of movement. This will convey more sense of career. In the end I choose lines not on the whole bike but in part. The result is something more shocking.


Logotype design for the cover

All we have left to do is create a logo for the cover design. For that task I better use an image editor like Gimp and a vector design program like Inkscape.

In Gimp I select the text tool with the previously downloaded typography that is very similar to TRON.


To vary slightly the layout i adjust and complete the contour of the word "TRUN" That way I have a good basis for editing in Inkscape and that can be adapted to any size without loss of quality.


Now we can add the text to our image.
And the end result is what we expected. Did you like it?

** If you liked the article and learned something to help you, you can support me by sharing the news with your friends. See you in the next article.

If you want to know more about the video game these links may seem interesting.


Some photos

Asociación de amigos del MSX




https://www.msx.org/es/news/software/es/trun-nuevo-juego-de-msx
 



Ramón Miranda

Ramón Miranda
Ramon Miranda

Portada para videojuego TRUN de VGsource


Hablar de TRON es hablar de un clásico de la ciencia ficción y de uno de los mejores tributos a la creatividad e imaginación en el mundo del cine. Película un tanto incomprendida al inicio, pero el tiempo le dio la razón y la puso en su lugar. Y si hablamos de elementos míticos de la película, tenemos que hablar de las carreras de motos de luz...

TRUN es un videojuego creado en ensamblador Z80 basado en TRON.
Los creadores del Juego son Vgsource, un grupo indie de desarrollo que programa para MSX.
Hace unos meses, me contactaron para diseñar su portada y así darle un impacto visual mayor.
Fue un trabajo interesante porque desde el primer momento se buscaba un "look" ochentero imitando el estilo de portadas de la época de Dinamic o Topo, donde Azpiri era el rey ilustrando esos bellos casettes y lo de menos era el resultado en pantalla ( al menos para personas como yo)
Lo primero que hice fue coger referencias, y como no iba a ser de otra forma la propia película de TRON fue la principal fuente de inspiración. Tenía varias claves en mente mientras pintaba esta ilustración:
  • Azul
  • Luz
  • No Fx overlay.
  • Velocidad
  • Espíritu 80's
¿Os apetece ver como fue el desarrollo? Pues analizamos las diferentes fases brevemente.

    Fase de Bocetos

    Después de analizar qué quiero destacar en la imagen empiezo a trabajar en los bocetos.
    Estos son dibujos no muy detallados en los que se pueden ver los elementos principales del diseño.



    Me decido por la primera por la sensación de movimiento.



    Como ya sabemos las diagonales añaden movimiento a la composición y como quiero transmitir velocidad elijo el diseño con ese esquema y lo amplio para poder estudiar dónde colocar cada cosa. Algo que al final voy a cambiar son las motos. Finalmente serán aun más “homenaje” a las originales motos de luz diseñadas por Syd Mead.

    Fase de referencias

    Siendo el juego un calco del juego de TRON no me parece una locura coger referencias de la película. Ya que vamos a hacer una copia de un clásico vamos a hacerlo bien. ¡Que se note! Por eso creo una composición con las múltiples referencias para luego pintar por encima lo que necesite y llegar al resultado que quiero, no tan foto sino más 2d. Queda aun mucho trabajo.Este sistema no es el único que uso para mis ilustraciones.

    Este es el resultado del collage realizado dentro de Krita. Todas las imágenes tienen sus derechos de autor correspondientes. Esto solo lo usamos como idea. Al final se repinta el 100% de la ilustración.



    A partir de este punto vamos a trabajar los fondos. Para los fondos normalmente se usan pinceles que sean rápidos que "cubran" Utilizo un pincel que tiene la característica que difumina la pintura cuando se ejerce poca presión y va añadiendo más pintura según aumenta la presión. Es este que os muestro en la captura.



    Tiene un efecto como de espátula y pertenece al set que hice para el DVD de la krita foundation #muses. Si os interesa os lo podéis descargar aquí totalmente gratis.

    PACK bundle muses

    Nota: Si por alguna razón veis que este pincel produce algo de "Lag", una cosa muy útil que acelera tanto este pincel como muchos de los de Krita es utilizar el parámetro "precisión" dentro del editor de pinceles y bajarlo de 5 a 1. Si además utilizas tamaños grandes puedes aumentar el espaciado del pincel hasta 0.5 o 0.7. Se puede optimizar aun más para ganar velocidad en tamaños muy grandes.




    Más allá verás que va muy fluido pero pierde un poco de calidad. Estos pinceles exigen operaciones de cómputo importantes para la CPU pero dan resultados muyyy interesantes.  

    Lo que quiero es desdibujar el efecto foto pero respetando los colores que hay debajo aun siendo manchas  y a la vez darme más libertad para pintar por encima. Veréis que el resultado es muy pictórico. Artesanal dentro de lo digital.


     

    Ahora es tiempo de empezar a definir todos los elementos de la imagen.

    La cara en la foto no muestra una emoción acorde a lo que busco, vamos hombre! ¡Que te estás jugando la vida en una carrera! :)

    He creado este Gif para los que les gusta seguir una evolución de los pasos a seguir.

    Se puede apreciar como va cambiando la iluminación según voy trabajando el metal. El gif lo hice con Gimp. Explica mucho más que una página de texto. Entre otras cosas se ve cómo la luz va afectandola cara del personaje y su casco.
    Lo mismo sucede en el fondo. Cuando voy detallando las motos y la especie de hangar de donde salen.


    Al ir completando la imagen corremos el riesgo de añadir demasiados detalles. Así que cuidado con el Glow y los modos aditivos o color dodge que enganchan.
    Hacer lineas o curvas con precisión es complicado a mano alzada por eso una forma de evitarnos quebraderos de cabeza es utilizar los asistentes de pintura.



    Por ejemplo un uso sería en la curva que define el panel de la moto del personaje.


    Motos de Luz.

    Un elemento principal de esta imagen son las motos de Luz. Vamos a hacer algo sencillo para no separarnos demasiado de lo que se verá en pantalla.

     

    El problema según veo es que las motos necesitan unas lineas de movimiento. Esto va a transmitir más sensación de carrera. Al final opto por lineas no en toda la moto sino en parte. El resultado es algo más impactante.


    Diseño de Logo para la portada

    Ya solo nos queda realizar un logotipo para el diseño de la portada. Para esa tarea mejor utilizo un editor de imágenes como Gimp y un programa de diseño vectorial como Inkscape.

    En Gimp selecciono la herramienta texto con la tipografía previamente descargada que es muy parecida a la de TRON.



    Para variar un poco el diseño ajusto y completo el contorno de la palabra TRUN De esa forma ya tengo una buena base para editarlo en Inkscape y que se pueda adaptar a cualquier tamaño sin perdida de calidad.

    Ahora ya podemos añadir el texto a nuestra imagen.
    Y el resultado final es lo que esperábamos . ¿Os ha gustado?
    **Si te ha gustado el artículo y has aprendido algo que te ayude, puedes apoyarme compartiendo la noticia con tus amigos. Nos vemos en el próximo artículo.
    Si quieres saber más del video juego estos enlaces te pueden parecer interesantes.

    Algunas fotos

    Asociación de amigos del MSX


    https://www.msx.org/es/news/software/es/trun-nuevo-juego-de-msx
     




    Domingo 29 de enero de 2017

    Gorka Urrutia

    Gorka Urrutia
    Nideaderedes

    Cómo instalar PrestaShop con Vagrant

    Para evtiar dolores de cabeza y tener que andar configurando un servidor local en Linux o algún Wamp en Windows o Mamp en Mac podemos usar Vagrant. He creado una máquina virtual que puedes usar como entorno de desarrollo para PrestaShop.

    Cómo instalar PrestaShop con Vagrant

     

    Gorka Urrutia

    Gorka Urrutia
    Nideaderedes

    La guía definitiva del código espagueti II: Que tus variables y funciones confundan al enemigo

    Porque elegir unos nombres horribles para tus variables y funciones es un arte:

    La guía definitiva del código espagueti II: Que tus variables y funciones confundan al enemigo

    Sábado 21 de enero de 2017

    Ramón Miranda

    Ramón Miranda
    Ramon Miranda

    Underwater Romance


    Hola a todos mis lectores y colegas. Se fue el 2016, y el 2017 ya lo tenemos aquí.
    Este pequeño artículo es de esos momentos en los que uno hace balance de cómo le fue el año y se pone nuevas metas.Para mi ha sido espectacular. Lo más importante es que al fin di el sí quiero con la mujer que amo. Se llama Lara y es parte fundamental de que esté aquí en Málaga, en esta tierra de luz y color donde tantas veces veranee de pequeño. Nos casamos de manera discreta y sin mucho ruido como queríamos que fuera. Así que en estos momentos estoy muy feliz. Quizás algún día asome por el blog, aunque de momento os digo que no tiene nada que ver con el mundo de la imagen.

    Ya metidos en materia también es muy destacable toda la evolución que ha habido dentro del mundo Krita. Increíble trabajo el de los desarrolladores. Una de las imágenes que la fundación decidió utilizar, fue esta que publico la cual pinté exclusivamente para ellos como recompensa para los que apoyaron la campaña de Kickstarter de Krita en este año. Este es el resultado de apoyar a Krita. la recompensa de ver cómo mejora cada día y ver que más usuarios puedan aprender desentrañando la imagen en alta resolución viendo todas las capas correctamente nombradas. Si quieres apoyar para que el proyecto sea aun mas grande aquí tienes un link https://krita.org/en/support-us/donations/




    Cabe destacar que la idea de hacer la ilustración como vista en el fondo del mar, se le ocurrió a mi mujer tras ver lo que estaba haciendo y los colores que estaba usando. 

    La cara de ella quizás ha sido la parte más difícil. 3 veces la repetí hasta dar con el gesto que buscaba, una pose de inocencia y a la vez de "me dejo seducir por este guapo sireno" ;D



    Si os gusta el resultado seguro que vais a disfrutar con el próximo artículo donde explicaré cómo se hizo esta imagen desde el boceto de color a la pintura acabada.

    Nos leemos






    English Readers

    Hello to all my readers and colleagues. 2016 has gone, and 2017 is already here

    This small article is one of those moments in which you think about how the year went and set new goals. For me it has been spectacular. The most important thing is that finally! I said "yes, i do" to the woman I love. Her name is Lara and she is a fundamental part for being here in Malaga, in this land of light and color where i spent so many summers as a child. We married discreetly and without too much noise as we wanted it to be. So right now I'm very happy. Maybe someday she will write something here, for now I swear you she has nothing to do with the world of the image. :D

    Talking about the picture... is also very remarkable all the evolution that has been in the Krita world. Incredible work for the developers. One of the images that the foundation decided to use, was this one that I published exclusively for them as a reward for those who supported Krita's Kickstarter campaign this year. The bakers with 50$ baked if i remember well received the image in high res and .kra format to learn more about how to use krita. If you want to support krita more there you have a link https://krita.org/en/support-us/donations/



    It is noteworthy that the idea of ​​making the illustration as seen on the bottom of the sea, occurred to my wife after seeing what i was doing and the colors i was putting on canvas.

    Mermaid's face has been the hardest part. I repeated 3 times until I found the gesture I was looking for, a pose of innocence and at the same time "I let myself be seduced by this handsome siren";D





    If you like the result you will enjoy with the next article where I will explain how this image was made from the color sketch to the finished painting.









    Domingo 08 de enero de 2017

    David Moreno

    David Moreno
    dm's blog

    Thanks Debian

    I sent this email to debian-private a few days ago, on the 10th anniversary of my Debian account creation:

    Date: Fri, 14 Aug 2015 19:37:20 +0200
    From: David Moreno 
    To: debian-private@lists.debian.org
    Subject: Retiring from Debian
    User-Agent: Mutt/1.5.23 (2014-03-12)
    
    [-- PGP output follows (current time: Sun 23 Aug 2015 06:18:36 PM CEST) --]
    gpg: Signature made Fri 14 Aug 2015 07:37:20 PM CEST using RSA key ID 4DADEC2F
    gpg: Good signature from "David Moreno "
    gpg:                 aka "David Moreno "
    gpg:                 aka "David Moreno (1984-08-08) "
    [-- End of PGP output --]
    
    [-- The following data is signed --]
    
    Hi,
    
    Ten years ago today (2005-08-14) my account was created:
    
    https://nm.debian.org/public/person/damog
    
    Today, I don't feel like Debian represents me and neither do I represent the
    project anymore.
    
    I had tried over the last couple of years to retake my involvement but lack of
    motivation and time always got on the way, so the right thing to do for me is
    to officially retire and gtfo.
    
    I certainly learned a bunch from dozens of Debian people over these many years,
    and I'm nothing but grateful with all of them; I will for sure carry the project
    close to my heart — as I carry it with the Debian swirl I still have tattooed
    on my back ;)
    
    http://damog.net/blog/2005/06/29/debian-tattoo/
    
    I have three packages left that have not been updated in forever and you can
    consider orphaned now: gcolor2, libperl6-say-perl and libxml-treepp-perl.
    
    With all best wishes,
    David Moreno.
    http://damog.net/
    
    
    [-- End of signed data --]
    

    I received a couple of questions about my decision here. I basically don’t feel like Debian represents my interests and neither do I represent the project – this doesn’t mean I don’t believe in free software, to the contrary. I think some of the best software advancements we’ve made as society are thanks to it. I don’t necessarily believe on how the project has evolved itself, whether that has been the right way, to regain relevancy and dominance, and if it’s remained primarily a way to feed dogmatism versus pragmatism. This is the perfect example of a tragic consequence. I was very happy to learn that the current Debian Conference being held in Germany got the highest attendance ever, hopefully that can be utilized in a significant and useful way.

    Regardless, my contributions to Debian were never noteworthy so it’s also not that big of a deal. I just need to close cycles myself and move forward, and the ten year anniversary looked like a significant mark for that.

    Poke me in case you wanna discuss some more. I’ll always be happy to. Specially over beer :)

    Peace.

    Miércoles 21 de diciembre de 2016

    Juanjo Amor

    Juanjo Amor
    DrAmor's Blog

    Acabemos con los intersticiales

    ¡Interstitials!

    Vaya palabro. “Interstitials”. Intersticiales en español. Anuncios intersticiales; que para la RAE serían aquellos que ocupan los intersticios, pero que, realmente, son anuncios que ocupan toda la pantalla y son especialmente molestos porque,

    • Impiden visualizar la página que queremos ver. Vamos, que molestan, y mucho más, que los pop-ups de toda la vida.
    • Incitan al click fraudulento: La mayor parte de las veces que pulsamos sobre el anuncio, no es para acceder al producto anunciado sino para cerrar el mismo. El botón para cancelarlo suele requerir de una especial destreza (o puntería) del usuario sobre su pantalla multitáctil… a menos que tengas los dedos del tamaño de la cabeza de un alfiler.

    Anuncio Intersticial, imagen de Google

    Pues bien, hace ahora más de 4 meses, Google anunció que iba a penalizar el uso de anuncios intersticiales en las búsquedas desde móvil a partir de enero de 2017, algo que ya está a la vuelta de la esquina.

    Es bueno recordarlo porque, a día de hoy, la mayor parte de las páginas de actualidad en Internet siguen incorporando este tipo de anuncios como si nada, haciendo muy incómoda la lectura, sobre todo en móviles, donde deshacerse del anuncio resulta complicado y por lo que, muchas veces, un servidor decide abandonar el medio de comunicación elegido para irme a uno alternativo que me informe más y me moleste menos.

    Aún me queda la esperanza de que esta penalización del buscador realmente consiga su efecto. Mientras tanto, seguiremos haciendo uso extensivo y abusivo de los bloqueadores de anuncios, pese a los avisos de determinados medios de que eso les hace daño.

    Lunes 05 de diciembre de 2016

    Emiliano A. González Salgado

    Emiliano A. González Salgado
    El blog de Emi

    Error al inicio de Linux debido a CUPS

    Uso Fedora 25 KDE. Desde hace tiempo y, con varias versiones anteriores. se está produciendo el mismo fallo al inicio del sistema.

    Para ver los errores que se han producido en el inicio de sesión, en los sistemas que incorporan Systemd, hay que teclear el comando:

    [root@HOST-PC ~]# journalctl -b -p err

    Uno de los que estaba arrojando últimamente era:
    cupsd[1213]: Missing value on line 11 of /var/cache/cups/job.cache.

    Los números 1213 y 11 pueden variar. El primero debe ser un índice de Journal (el registro de logs de Systemd) y el segundo hace referencia a la línea del fichero job.cache que produce el fallo.

    Es este caso era debido a que cups-pdf (la impresora virtual) al crear un fichero no le asignó un nombre en el archivo job.cache.

    Intenté borrar la caché de Cups desde el administrador de impresión (system-config-printer), pero no se encontraban trabajos pendientes ni terminados. También desde la interfaz web del servidor cups: http://localhost:631/jobs?which_jobs=all

    No era posible. No se podía borrar. Incluso eliminé el contenido de  job.cachecon un editor de texto, pero al volver a iniciarse el contenido estaba otra presente, así como el error se reproducía.

    Al final la solución llegó a través de la consola.

    Los comandos a ejecutar son:

    Parar Cups:

    [root@HOST-PC ~]# systemctl stop cups.service

    Ver la lista de trabajos completados:

    [root@HOST-PC ~]# lpstat -W completed -o

    Ver la lista de trabajos no completados:

    [root@HOST-PC ~]# lpstat -o

    Eliminar todos los trabajos:

    [root@HOST-PC ~]# cancel -a -x

    Esto cancelará todos los trabajos.

    Editar el fichero  /var/cache/cups/job.cache, borrar el contenido y guardar de nuevo.

    por ejemplo con nano como root

    [root@HOST-PC ~]# nano /var/cache/cups/job.cache

    Reiniciar el sistema y ver si se ha solucionado el fallo.

    SI las respuestas dadas aquí no funcionan:

    ps aux | grep printer kill {printer job}

    Este último comando no lo he probado. con lo anterior fue suficiente.

    Un saludo,

    Emiliano

     


    Jueves 01 de diciembre de 2016

    Luis Vilchez

    Luis Vilchez
    El blog de Jabba

    Pillars of Eternity, el heredero espiritual de Baldur's Gate para OSX y Linux

    Hablar de Baldur’s Gate es hablar del gran clásico entre los clásicos de los juegos de rol computerizado. Su legado y su influencia están muy presentes en gran cantidad de los títulos que conforman el panorama del videojuego actual. Un juego con una profundidad, libertad y capacidad de personalización nunca vistas hasta entonces. Un juego que muchos tenemos como uno de los mejores -sino el mejor- RPG de la historia.


    Quince años después Pillars of Eternity pretende devolvernos la magia, la ambientación, la jugabilidad y esa aura cautivadora y mítica propia de los grandes clásicos del género; un deleite para los sentidos de los veteranos en los juegos de rol y una experiencia inigualable para los recién llegados. Me han bastado unas semanas perdiéndome virtualmente por el mundo de Eora para confirmar que Pillars of Eternity es la oportunidad de volver a revivir un JUEGAZO infinity engine de corte clásico como los de antaño. Un juego que rezuma a Baldur's Gate del bueno por los cuatro costados. ¿Y sabéis lo mejor? Con versiones nativas para OSX y... ¡Linux!

    Es de recibo decir que gran parte de la culpa de todo esto la tienen los fans y el modelo kickstarter que sus creadores usaron para financiar el proyecto (por aquel entonces bajo el nombre de Project Eternity). El resultado ha sido un RPG de corte occidental distribuido por Paradox Interactive y desarrollado por Obsidian Entertainment, creadores de sagas como Fallout, IceWind Dale o Neverwinter Nights, además del citado Baldur’s Gate.

    Como en Baldur's Gate, la primera cosa que hay que hacer en Pillars of Eternity es crear un personaje. Aspectos como las diferentes ventajas e inconvenientes de cada raza, los atributos, las clases, las limitaciones de atributo por clase, las alineaciones morales, las habilidades complementarias, afinidad de armas, selección de conjuros, clases duales... habrá que tenerlos muy en cuenta antes incluso de comenzar la "aventura". Y seguramente no es el sistema de creación de personajes más amplio de la historia del género, pero sí es MUY completo. Incluso me atrevo a decir que podrá parecer algo complejo para los recién llegados pero hará las delicias de los veteranos del género. A fin de cuentas aprender forma parte de la esencia del rol y eso pasa por cosas como la creación de nuestro personaje. A continuación os dejo un vídeo para que lo veáis en acción.


    En otras plataformas no sé, pero en Linux sin duda estamos ante el juego del año :)

    Miércoles 30 de noviembre de 2016

    Raúl González Duque

    Raúl González Duque
    Linux – Mundo Geek

    Cómo crear un pendrive USB bootable con Ubuntu en Windows

    Tener un USB con Ubuntu siempre listo en el bolsillo puede ser muy útil para solucionar problemas con Windows, eliminar virus, realizar operaciones seguras en Internet, o simplemente para jugar un poco con Linux.

    Para crear una unidad USB arrancable con Ubuntu me gusta utilizar Rufus, que es gratuita, muy ligera, rápida y cuenta con versión portable. Además de Rufus, sólo necesitaremos una ISO de Ubuntu y un pincho USB con al menos 2GB de espacio, que debe estar vacío, o no importarte mucho su contenido, porque se formateará durante el proceso.

    Conecta el pincho USB a tu equipo y ejecuta Rufus.

    En “Dispositivo” selecciona tu pincho USB.

    Marca la opción “Crear disco de arranque con:”, selecciona “Imagen ISO”, y haz clic sobre el icono del CD Rom para abrir un diálogo en el que buscar la imagen ISO que has descargado

    USB booteable Ubuntu

    Pulsa el botón “Empezar”. Te avisará de que necesita descargar un par de archivos de Internet, pulsa en “Sí”.

    Cuando te pregunte por el modo de escritura de la imagen, selecciona “Escribir en modo Imagen ISO (Recomendado)”.

    A continuación te avisará de que va a proceder a formatear el dispositivo USB. Haz clic en “Aceptar” para empezar el proceso.

    Martes 08 de noviembre de 2016

    Raúl González Duque

    Raúl González Duque
    Linux – Mundo Geek

    ¿Cuántos usuarios de Linux se necesitan para cambiar una bombilla?

    Sea merecida o no, lo cierto es que los usuarios y desarrolladores de GNU/Linux tenemos fama de arrogantes, extremistas y de perdernos en los detalles. Desde el Proyecto GNU se toman con humor estos estereotipos calculando cuántos usuarios de Linux se necesitarían para cambiar una bombilla.

    • 1 para publicar un hilo en la lista de correo informando de que la bombilla se ha fundido
    • 1 para sugerir reiniciar la bombilla usando la línea de comandos
    • 1 para quejarse de que el usuario rompiera la bombilla
    • 1 para preguntar qué bombilla se debería instalar
    • 1 para aconsejar que no se use la palabra “fundida” para referirse a una bombilla rota, porque puede interpretarse que la bombilla se ha prendido fuego, en lugar de haberse estropeado por un exceso de corriente eléctrica
    • 25 para sugerir todos los tipos de bombilla imaginables
    • 5 para para decir que la bombilla fundida es un fallo de origen
    • 1 novato para sugerir instalar una bombilla de Microsoft
    • 250 usuarios para inundar el correo del susodicho novato
    • 300 para decir que la bombilla de Microsoft se pondría azul y tendrías que reiniciarla constantemente para que volviera a funcionar
    • 1 antiguo usuario de GNU/Linux, que todavía frecuenta el foro, para sugerir una iBombilla de Apple, que tiene un diseño fresco e innovador y sólo cuesta 250$
    • 20 para decir que las iBombillas no son libres, y que tienen muchas menos funcionalidades que una bombilla estándar 20 veces más barata
    • 15 para sugerir una bombilla nacional
    • 30 para decir que las bombillas nacionales son copias de las bombillas extranjeras y que no ofrecen nada nuevo
    • 23 para discutir si la bombilla debe ser blanca o transparente
    • 1 para recordar a todo el mundo que el nombre correcto es GNU/Bombilla
    • 1 para decir que las bombillas son sólo para usuarios de Window$ y los usuarios de GNU/Linux de verdad no tienen miedo a la oscuridad
    • 1 para anunciar finalmente el modelo de la bombilla elegida
    • 217 para descartar el modelo escogido y sugerir otro
    • 6 para quejarse de que el modelo elegido tiene elementos propietarios, y que debería usarse otro
    • 20 para decir que una bombilla 100% libre sería incompatible con el interruptor
    • Los mismos 6 anteriores para sugerir cambiar el interruptor por uno compatible
    • 1 para chillar “¡DEJAD DE DISCUTIR Y CAMBIAR LA P*#@!%¡# BOMBILLA DE UNA VEZ, POR EL AMOR DE DIOS!”
    • 350 para preguntar al usuario anterior a qué Dios se refiere, y si tiene pruebas empíricas de su existencia
    • 1 para explicar cómo funciona la electricidad y por qué una bombilla eléctrica es ineficiente
    • 1 para decir que no se puede confiar en una bombilla fabricada por una corporación y que deberíamos confiar en bombillas hechas por la comunidad
    • 1 para publicar un enlace a un archivo ODF explicando cómo construir una bombilla desde cero
    • 14 para quejarse del formato del archivo anterior, pidiendo que se envíe en txt o LaTeX
    • 5 para decir que no les gustó la decisión y van a hacer forks de la instalación eléctrica de la casa para instalar una lámpara mejor
    • 1 para publicar una serie de comandos a introducir para cambiar la bombilla
    • 1 para comentar que ejecutó los comandos y obtuvo un mensaje de error
    • 1 para aconsejar que los comandos deberían ejecutarse como root

    Y finalmente:

    • El padre del usuario original, que mientras todos estaban discutiendo, se acercó a la tienda y compró la bombilla más barata que vendían

    Domingo 30 de octubre de 2016

    Marcelo Fortino

    Marcelo Fortino
    Fortinux

    Tutorial usar git-annex para sincronizar archivos entre dispositivos GNU/Linux

    Tutorial usar git-annex como repositorio de archivos Una forma de tener nuestros archivos sincronizados entre el notebook, desktop y otros dispositivos es usar como herramienta git-annex. Git-annex gestiona archivos con Git sin verificar el contenido de los mismos. Esto permite trabajar con archivos grandes usando repositorios sincronizados.

    Martes 18 de octubre de 2016

    わき毛の抜毛には女性の大きな関心事だ。幾ら素敵な装い

    わき毛の抜毛にはマミーの大きな関心事だ。
    幾ら素敵な装いをし立としても、傍らのむだ毛が伸びていたら、ガッカリですね。
    好感触に感じていた輩も瞬く間にきらいになってしまうかも知れません。
    薄着の季節では余計に傍ら後が開いた洋服が多くなりますし、自分で処理をすると皮膚が炎症を起こしたりして余計な不便まで秘める片付けになります。
    抜毛店舗実践のお値段ですが、いつの抜毛店舗かで予算は違ってきますし、希望の抜毛要素次第で移り変わるでしょう。
    大手の抜毛店舗でよく言えるようなお得なキャンペーンの利用によって、案外低料金の抜毛が可能になる場合もあるでしょう。
    またワキや拳固など抜毛ニーズ部位ごとに通うお店を取りかえる、つまり抜毛要素それぞれでちがう抜毛店舗に通うようにするといった華奢に抜毛が進められそうです。
    また一つのお店だけを利用するのに比べてリザーブを格段に取り去り易く罹るのもうれしい部分だ。
    経済的に無理なく抜毛しようと、最初から抜毛器で自己処理やる分と抜毛店舗に任せるパイと、区別してある輩もある。
    適性もありますが、自家用の抜毛器を上手に使えば、各回、抜毛のために抜毛店舗を予約しなくてもすむでしょう。
    厳しい部分は抜毛店舗で施術してもらい、そのほかの部分は抜毛器で自己処理やる為す。
    但し抜毛器もそれなりの性能のものでないとその抜毛器による店だけムダ毛余りしてしまう結果、購入前のプレ認証は不可欠です。
    カラダ抜毛をしたら、ムダ毛のお手伝いを自分でするわずらわしさから解放され、処置がヤバイ楽になる事は確実です。
    但し、お金が幾らくらい陥るのか、ムダ毛はどのくらいきれいになるのか事前に調べておきましょう。
    カラダ脱毛するお店や店舗にて、抜毛作用やそのために加わる費用が非常に違ってきます。
    むだ毛の抜毛の手当て方法の中で、ニードル法は無限抜毛作用が最も期待できる抜毛法だと思われます。
    今は病院です抜毛病舎や一部の抜毛店舗でしか行われていない抜毛法だ。
    著しい痛みがあるので、興味はレーザー抜毛の方が高いようですが、大きい効果が期待できる結果、この方法をわざと選ぶ人も少なくないようです。
    間違って認識してる輩もいるようですが、店舗をめぐってもツルッパゲスキンになるまで、一度や二都度の手入れで抜毛が完了し立とは言えません。
    抜毛を受ける要素にても変りますが、おおまかに言って、6回から18回ほど抜毛を受ける人が多いようです。
    ですが、スキンへの恐怖によって、手入れを受けた数日後にまた抜毛が行なえる所以ではなく、頭髪回転の階級が二ヵ月なので、それくらいのスパンを空けて伺うのが最適です。
    ただただ「抜毛」と言ってもこのように長期戦になる結果、売店が多いなどで利用しやすい店舗で行ないましょう。
    できるだけ抜毛代金を安く終えるために、破格値の抜毛店舗を探している輩は少なくないです。
    ただし激安予算ばかりが売りの抜毛店舗は無事故や浄化をおろそかにしているかも知れません。
    低価格なパイ、普通の回数ではほとんど効果が出ないとか、スキンを傷める結果になっては給与も損害ですが、かけた日数ってスキンは戻って来ないでしょう。
    スキンを傷めたらムダ毛手当ては当分できません。
    予算の低廉さばかりを代物にする抜毛店舗の場合はあらかじめ評価や手答えをチェックしておいた方がいいでしょう。
    きれいに脱毛するには少々抜毛店舗に通うことになりますから、自分に当てはまるリザーブ切り口があるか確認してから契約するべきです。
    立とえばリザーブ切り口が連絡のみの抜毛店舗だと忙しさにかまけているとリザーブ電話をかけるのが後回しになりがちだ。
    リザーブがタブレットから叶う抜毛店舗だったら、単なる合間に予約できるので、心づもりをずらす必要がありません。
    綺麗に抜毛しようと思ったら、抜毛店舗に何度となく乗り物を運ばなければなりませんから、手入れのリザーブが取り易いかどうかは店舗選びの重大要素のひとつです。

    Lunes 17 de octubre de 2016

    家屋でのムダ毛加工はヘビーな操作だ。剃ろうにもビデオラ

    住宅でのムダ毛作製はヘビーな工程だ。
    剃ろうにも映像路線や背中は上手くできなかったり、毎日ムダ毛のお手入れをするのは煩わしくて疲れたり、問題に感じている方もいるのではないでしょうか。
    抜け毛店舗を利用すれば、たえず苦労しているフィールドの抜け毛も平安、自宅での作製のもめごとも気にしなくてよくなります。
    体内抜け毛店舗はたくさんありますが、抜け毛で失敗し立と感じないためには、じっさいに体内抜け毛を先輩のクチコミを聞いてみるのが一番良いでしょう。
    感想は自身によるの部分はありますが、誰もがいいという店舗は粗方決まってくる。
    重要視するのは出来ばえや早さですとか、やはり短いのが有難いとか、自分が抜け毛でやはり重視する主題を決めておくってきっと納得できるはずです。
    妊婦様であれば、多くの抜け毛店舗ではメンテナンスを行ないません。
    懐妊内輪はホルモンの不調でメンテナンスを通じても抜け毛の効力が出にくかったり、神経質になっているスキンは、少しのモチベーションも荒れてしまうからだ。
    抜け毛が完了していないうちに懐妊のリサーチが出てきたら、店舗によっては産後2ヶ月ぐらいまで休会ができる店舗もあるので申込む前にそぐういう通り道や制度を確認しましょう。
    抜け毛料金がサラリー制のところもありますから、一通りの抜け毛承認までに総額が予見できずに困ってしまっ立という自身も要るかも知れません。
    体内抜け毛総額確認の際には、抜け毛フィールドといった抜け毛承認までに陥る値段を比べて、メンテナンスのアポイントメントを入れ易い店舗を選ぶことも重要なのです。
    どんどん一度の抜け毛で全てのパートを施術して得る店舗ならひときわ容易でしょう。
    指のムダ毛は凄く自身には映るものです。
    他人のしかたを見ればわかりますが、例えネイルやかざりで盛装していても、指頭髪があるという冴えない自身認定されてしまう。
    指のお手入れの基本としてムダ毛作製を抜け毛店舗で講じる側は以前からすごく多いのです。
    しかたや指のように表皮の無い部分は考えも素晴らしいので、抜け毛手法は事前にぐっすり検討したほうがよいでしょう。
    見立て抜け毛は効力が持続するかわりに痛みを伴うので、低モチベーションの光線抜け毛様式を施術するのが一般的なようです。
    出向ける場所に一種しか仕事場がない場合はレンジがありませんが、仕事場が沢山あれば、各仕事場の詳細などを比較してから、抜け毛店舗を選択するという良いでしょう。
    では、効力、総額、アポイントメントの取り方、姿勢行為などをサイトなどの人づてなどを見て確認しなければならないことが山ほどあります。
    いくつか選択をサイトなどで通り道や人づてにおいて選んでから必ず、自分自身に合っているのか、事実通り道にあたって判断しましょう。
    ニードル抜け毛は何かと障害が多いと言います。
    最近のレギュラーな抜け毛法ではないのでほとんど知られていない手法なのかもしれませんが、ニードル抜け毛にはひどくの痛みがあるのです。
    もう一度、毛孔の全てに針をより刺していくのです極の時間がかかります。
    痛みがある上に長時間のメンテナンスが必須となるって、それなりに障害も多くなってくるのだと思います。
    華奢ゾーンの抜け毛を抜け毛店舗ですると、キレイな出来ばえだったし、肌荒れが起きにくいといわれています。
    ただし、抜け毛店舗の全てがVIO抜け毛が出来ない場合もあるのでウェブサイトなどで確認してから行きましょう。
    華奢ゾーンの抜け毛は気まずいという方も、よくいますが、同性それぞれですし、ベテランが行なうほうが自分で行うからセキュリティだ。

    Domingo 16 de octubre de 2016

    Marcelo Fortino

    Marcelo Fortino
    Fortinux

    Tutorial instalar Plone CMS en Ubuntu server

    En este tutorial veremos como podemos instalar el gestor de contenidos Plone en un servidor Ubuntu 14.04 o 16.04. Plone es un gestor de contenidos basado en el servidor de aplicaciones Zope que es bastante utilizado como Intranet en gobiernos y empresas, entre ellos, el gobierno brasileño, la universidad de Oxford (Reino Unido) o Google.

    仮に代価に余裕があるなら、その代価で抜毛ショップの加療

    もしも財貨に余裕があるなら、その財貨で抜け毛店先の施術費用を払って仕舞うのもありです。
    資金で支払うのですから、あとでカードの支払いお日様も気になりません。
    ただし、仮に資金が手もとにあって高額な先払いをしてしまうと、途中で通えない原因ができ立ときは空白分の精算が必要になります。
    それに、抜け毛店先そのものが潰れたら、先払いしてあった分だけ損をすることになります。
    少額だったり、そのつど払う場合は資金支払いも良いですが、そこそこの金額に繋がるようならカード支払いをお薦めします。
    月々定額(月収制)の抜け毛店先の場合、清算が明確なので気軽に抜け毛できるのでお薦めです。
    とはいえ体の一端しか抜け毛したくないときは、月収制を選ぶというかえってロスかも知れません。
    発毛周期を見ながら脱毛するので、もし1ポイントだけなら隔月に一度の抜け毛になるからだ。
    そのかわり、思いポイントが多いほど月収制による有難みがあるといえるだと言えます。
    ご自身の場合はどうしたいかを明確にして、ピッタリ合う抜け毛店先によるっていいだと言えます。
    「ムダ毛の憂慮」で多くの人が走り込む抜け毛スパのランキングには、大御所エステティックサロンのTBC、エルセーヌなどのエースがデイリー、上位に食い込んでいらっしゃる。
    これとは別に、抜け毛店先をこういうランキングに含めたタイミング、たとえば、ミュゼプラチナム、シースリー(C3)、抜け毛研究所、等々が上の順番に名称を連ねます。
    人気といえば、ピュウベッロやキレイモなどもあります。
    その中には、要望する抜け毛フィールドを通じてもくろみごとに分けて向かう方もいらっしゃる。
    何とか抜け毛スパに通うとすると、気にならなくなるまで脱毛するなら12回等前文向かう必要があるようです。
    気になるフィールドが上腕や脚等、他とくらべて分厚く無いポイントであるならば、5、6回の施術で感動する方もあるだと言えます。
    ただし、横やアンダーヘア等の眼たつ濃い毛が生えてしまってあるところは、ベイビー(ベイビーが生まれるまでは乳幼児好きじゃなかった方も、自分の乳幼児が産まれてみると、ベイビーがかわいくて仕方がないということがよくあるみたいです)のお肌の様なツルッとしたお肌にしようとすると、上腕や脚等の二ダブルは施術回数が必要になるケースと思います。
    皮膚がデリケートであるヤツですと剃刀負債が発生することがあるだと言えます。
    そういう人におすすめしたいのが抜け毛店先における灯抜け毛だ。
    これならば、アトピー風習の人も安全に施術をうけることが出来る為す。
    横の抜け毛に耐えるのだったら、ぜひ試してちょうだい。
    駅前駅近で目にする行いの多い抜け毛店先ですが、ムダ毛と呼ばれる体の邪魔な毛に、美専用の電気道具などを使用し、ムダ毛が出現するチェーンを遅らせたり、発毛しないように治療をするおみせのことです。
    以前は抜け毛製作というとエステでするというのが一般的なスタンスでしたが、抜け毛にもハイテクノロジーが普及した現在では短時間で効率的に抜け毛できるようになった事で抜け毛というサービスに限定して商売始めるサロンの飛躍的な繁殖につながったりゆうだ。
    ほとんどの女性がムダ毛製作を考え始めるのは温暖な春から初夏程だ。
    皮膚が周囲にふれる機会が多くなりますし、歩き、上腕のムダ毛だけでなく横などもプロフェショナルにきれいにしてもらいたいといった指し初めるのです。
    とくにいよいよ顧客はこの時期が多く、抜け毛店先が大混雑始めるぐらいですし、貸し賃は安くありません。
    貸し賃が短いのは、温度が薄くなり皮膚の登場がなくなる年代だと言えます。
    抜け毛だけでなく益々まとまりたいヤツはジェイエステティックが良いだと言えます。
    美顔、シェイプアップスパ、美貌脚も揃えたすべて美店先だ。
    一般の抜け毛店先みたい、灯方式の抜け毛を取り扱っています。
    格安で同店の美肌抜け毛を体験できるお試し教科も用意され、サロン単位の設定もスムーズなのがジェイエステティックのウリだ。
    サロンは全国に100サロン以上あり、思わぬところにおみせがあったり決める。
    もしも近くに支店があったら、キャリア教科などで様式を探るのもいいかも知れませんね。

    Lunes 29 de agosto de 2016

    David Moreno

    David Moreno
    dm's blog

    Webhook Setup with Facebook::Messenger::Bot

    The documentation for the Facebook Messenger API points out how to setup your initial bot webhook. I just committed a quick patch that would make it very easy to setup a quick script to get it done using the unreleased and still in progress Perl’s Facebook::Messenger::Bot:

    use Facebook::Messenger::Bot;
    
    use constant VERIFY_TOKEN => 'imsosecret';
    
    my $bot = Facebook::Messenger::Bot->new(); # no config specified!
    $bot->expect_verify_token( VERIFY_TOKEN );
    $bot->spin();
    

    This should get you sorted. What endpoint would that be, though? Well that depends on how you’re giving Facebook access to your Plack’s .psgi application.