Domingo 21 de octubre de 2018

Asociación LiGNUx: Nos hemos mudado de servidor: novedades y características
Domingo Gomes

Domingo Gomes
NewEsc

No dejes escapar la Venta Flash de GearBest

Sin duda alguna, una de las tiendas online que cada día nos sorprende es GearBest. ¿La razón? No solo se trata de la gran variedad de productos que ofrece en marcas, sino que además puedes encontrar de forma frecuente increíbles ventas rápidas. Es muy común entrar a GearBest y toparse con una extensa gama de productos a precios realmente fuera de serie.

Este mes de octubre han lanzado una serie de ofertas rápidas semanales donde cada día puedes encontrar diferentes dispositivos como: smartphones, accesorios para pc, gadgets y más. Estas ventas son segmentadas por diferentes ofertas, iniciando con la oferta diaria donde puedes encontrar equipos con hasta un 50% de descuento.

Venta Flash de GearBest 2018 Octubre Smartphones

Diariamente encontrarás un dispositivo a la venta con una oferta épica. Solo estará disponible por un día y una vez culminado el tiempo no podrás acceder a el descuento. A ello le sigue la sección de cupones, donde puedes encontrar increíbles descuentos para comprar teléfonos inteligentes de todas las gamas y de marcas como Xiaomi, Nokia, OnePlus y más. Solo debes buscar en la lista el dispositivo que más te guste, reclamar el cupón y disfrutar del descuento. ¡Pero ve rápido porque son cupones limitados!

Venta Flash de GearBest 2018 Octubre Epic deals

A continuación, tenemos la sección Epic Flash Sale o la Épica Venta Rápida. Donde encontrarás en venta diferentes smartphones y otros gadgets con un número limitado de dispositivos a la venta. Si la existencia de uno de estos productos se acaba antes de la fecha tope, no podrás adquirirlo a ese precio, ¿qué esperas para ir a buscar tu mega oferta? ¡Ve ahora!

Venta Flash de GearBest 2018 Octubre marcas

Si prefieres buscar por marca, GearBest tiene una sección de Ofertas por Marcas donde puedes encontrar dispositivos de marcas reconocidas como Oukitel, Cubo, Lenovo y UMIDIGI. Allí puedes encontrar tu dispositivo favorito con descuentos increíbles.

Estamos seguros que esta es una oportunidad que no puedes pasar por alto. Si estás buscando buenos dispositivos a precios increíbles, entonces no puedes dejar pasar esta venta rápida de GearBest, que por cierto finaliza este 21 de octubre. A partir de ese momento esta venta se cierra para dar inicio a la venta flash de tablets que inicia el 22 de octubre y termina el 28 de octubre.

La entrada No dejes escapar la Venta Flash de GearBest aparece primero en NewEsc.

Sábado 20 de octubre de 2018

Domingo Gomes

Domingo Gomes
NewEsc

Review Honor 8X en Español

Review Honor 8X wallpaper
Review Honor 8X en Español
El gama media más elegante
El Honor 8X es mucho más que una cara bonita, pero le falta algo de optimización para poder ser considerado como el mejor gama media de la actualidad. Si buscas un smartphone elegante, con una buena cámara y una gran batería, este Honor es una excelente opción.
Diseño90
Pantalla82
Rendimiento75
Autonomía 90
Cámaras75
Ecosistema70
Calidad/Precio85
Lo bueno
Diseño premium
Gran pantalla de 6.5''
Batería de 3.750mAh
Dual SIM + microSD
Lo malo
microUSB
Cámara frontal
Sistema inacabado
81
Recomendado

Octubre suele ser un mes bastante importante para todos los fabricantes de smartphones, no solo porque noviembre tenemos el Black Friday y el Cyber Monday, sino porque las navidades se aproximan. Es por eso que las marcas utilizan este mes para lanzar algunos de sus productos estrella: Google presenta los Pixel, OnePlus su versión “T”, Samsung el Galaxy Note, LG los “V”… Y Honor sus mejores gamas media.

Como ya sabrás, Honor es una sub-marca de Huawei que básicamente lanza versiones más baratas y un poco distintas de los modelos de Huawei. Mira por ejemplo el Honor Play, un smartphone con el Kirin 970 y que cuesta apenas 329€. Pero el modelo que vamos analizar hoy es el Honor 8X, el cual es muy similar al Huawei Y9, otro gama media que se ha lanzado en octubre.

El diseño más premium en un gama media

Su diseño es impecable. Es simplemente hermoso. Hasta me atrevo a decir que por 250€ este es el smartphone más premium en lo que a diseño se refiere, pero no es perfecto.

Lo primero que debes saber es que su carcasa trasera es de vidrio y está dividida en dos partes. A la izquierda tenemos una textura que integra la cámara doble, el flash y el logo; mientras que a la derecha encontramos un patrón que, visto desde diferentes ángulos y al recibir luz, muestra unas líneas y cambia de tonalidad. Para complementar este feeling premium, en los bordes tenemos una construcción en metal que mejora el agarre y aumenta su protección.

Review Honor 8X carcasa

El único defecto que encuentro en su diseño está en las cámaras traseras que sobresalen un poco, un problema que puedes resolver con una carcasa trasera. De todas formas, no sobresale tanto como la del Xiaomi Mi A2.

Review Honor 8X conectores

Los botones de volumen y de bloqueo se encuentran a la derecha, mientras que atrás, justo en el centro, tenemos el lector de huellas. Arriba tenemos el segundo micrófono para la reducción de ruido y abajo el jack de audio, el altavoz, micrófono y también el conector microUSB – sí, porque Huawei todavía no se ha pasado a USB Tipo C, y por este precio debería. Pero lo más incomun de todo esto es que a la izquierda tenemos un slot para dos tarjetas SIM y una tarjeta microSD de hasta 400GB.

Review Honor 8X Dual SIM + microSD

Este equipo, tal como todos los demás smartphones de la actualidad, viene con un notch. Es bastante pequeño cuando lo comparamos con el del Pocophone o Huawei Y9 y también se puede ocultar por software. En ese pequeño espacio tenemos la cámara frontal, el altavoz para llamadas y los sensores.

Una pantalla enorme

Además de su diseño premium, uno de los aspectos claves de este terminal es su gran pantalla de 6.5” con una resolución FHD+ (2340 X 1080) que, con unos bordes muy reducidos, alcanza los 91% de ratio de pantalla, un valor extremadamente alta y que no solemos ver en móviles por este precio.

Es un panel IPS con muy buenos colores y un buen brillo. Durante mis test no he tenido ningún problema utilizándolo en el exterior, lo que suele ser una preocupación bastante común. Sin embargo, si que he notado una fuga de luz en la parte inferior. Apenas espero que no sea un problema que afecte más unidades.

EMUI también permite cambiar el modo del color de “Normal” para “Vivido”, lo que significa que saturará un poco más los colores y aumentará su contraste; así como cambiar la temperatura del color. Existen otras opciones, como la de activar el modo lectura, que reduce la luz azul y no cansa tanto la vista.

He notado como el sonido de su único altavoz no es tan potente, pero aun así se escucha bastante bien y sin distorsiones cuando lo ponemos al máximo.

 

Buen procesador, pero no tanto para juegos

El Honor 8X es uno de los primeros móviles de Huawei a contar con el procesador Kirin 710, un octa-core con 4 núcleos a 2.2 GHz y  otros 4 a 1.7 GHz. A modo de comparación podemos decir que es como un Snapdragon 660, aunque, como verás a continuación, su gráfica, la Mali-G51 es un poco inferior en relación a la Adreno 512. El modelo que hemos analizado viene con 4GB de RAM y 64GB de almacenamiento interno, pero existen otras con 6GB de RAM y hasta 128 GB de almacenamiento.

Estos son los resultados obtenidos en los Benchmarks más importantes:

Honor 8X Benchmarks

Lo he utilizado bastante para juegos y también lo he comparado lado a lado con el Mi A2 y la verdad es que no he notado ninguna diferencia a nivel de fluidez y calidad dentro del juego. Sin embargo, al utilizar el móvil en el día a día, si que he notado una menor fluidez a nivel general. Por ejemplo, las descargas desde la Play Store se hacen un poco más lentas y el simple hecho de cambiar entre apps es un poco más lenta.

Pero no sé hasta que punto esto se deba al firmware y a la falta de optimización, ya que una vez dentro de la app no suelo notar esta lentitud.

Review Honor 8X batería

Su batería de 3750 mAh te durará más de un día de uso moderado, o cerca de 7 horas de pantalla. Al no tener carga rápida o USB Tipo C, su tiempo de carga si que será un poco superior a la media. Aunque su carcasa trasera es de vidrio, tampoco integra carga inalámbrica, un extra que nos hubiese encantado ver en un gama media.

 

Cámara trasera sorprendentemente buena

En la parte trasera encontramos un sensor principal de 20MP con una apertura de f/1,8 acompañado por otro de 2MP que se encargará de recopilar alguna información. En frente tenemos una cámara única de 16MP con una apertura de f/2.0.

Su app es bastante completa, con muchísimos modos y opciones que seguramente nunca utilizaré. Veamos por ejemplo “Lente AR”, un modo que nos permite añadir diversos filtros a las fotos; o “Pintura con Luz” que permite hacer fotos bastante artísticas durante la noche. Su modo “Pro” me ha parecido bastante completo y seguramente le agrade a los más exigentes.

La app de cámara me dio una muy buena impresión al principio, pero a medida que me fui acostumbrando, noté como era muy poco funcional. Por ejemplo, mientras otras cámaras tienen el modo HDR automático, en el Honor 8X es un modo que apenas se activa manualmente. Además, la cámara frontal no tiene HDR.

Review Honor 8X fotos

Toca en la foto para ver más

Pero los resultados obtenidos han sido bastante buenos y creo que la Inteligencia artificial funciona bastante bien en la mayoría de las ocasiones, aunque tiene ciertas limitaciones:

  • Al hacer fotos en este modo la resolución baja hasta 13MP;
  • No funciona con la cámara frontal;
  • No se puede utilizar al mismo tiempo que con otros modos, como el Modo HDR por ejemplo.

Las fotos durante la noche no son las mejores, ni con el modo noche que lo que hace es hacer varias fotos con exposición variada y crear una foto con más nitidez. El flash también me ha parecido poco potente cuando comparado con otros gama media, y lamentablemente el Zoom máximo que tiene es de 5X, aunque los resultados son bastante buenos. Su cámara frontal no está nada mal en mi opinión, pero su rango dinámico es inferior a la de otros modelos por la falta de compatibilidad con HDR.

En lo que toca a la grabación de vídeos, el Honor 8X apenas graba en 1080p a 60fps, y no en 4K ni en cámara lenta a 1080p, algo que no logro entender ya que su procesador debería ser capaz de hacerlo sin ningún problema. Esperemos que en las próximas actualizaciones activen estas funciones.

 

El sistema, su tendón de Aquiles

El Honor 8X viene con EMUI 8.2 basado en Android 8.1. Para los que no lo conocen, EMUI es la capa de personalización de Huawei y Honor, tal como MIUI lo es para Xiaomi. A nivel estético es elegante y permite cierta personalización, como por ejemplo:

  • Podrás tener todas las apps en la pantalla principal, o en el cajón de aplicaciones.
  • Posibilidad de duplicar algunas apps, como Facebook, WhatsApp, Messenger;
  • Activar un modo simple que facilita su utilización por personas mayores;

Me hubiese gustado que EMUI adoptase el sistema de navegación por gestos de Android 9.0, algo que MIUI ya ha hecho desde hace algún tiempo y facilita un montón la navegación en pantallas tan grandes. En la última actualización de software Huawei ha añadido esta funcionalidad.

Es un sistema bonito y elegante, pero noto como le falta cierta optimización. Las animaciones no son tan fluidas como en otros terminales y a nivel general me ha parecido un poco más lento que Android Stock o MIUI.

¿Vale la pena comprar el Honor 8X?

El Honor 8X tiene un diseño impecable que seguramente llamará la atención de muchos. Su carcasa trasera en vidrio se siente premium, así como sus bordes en metal. Su pantalla casi sin marcos es algo que también venderá muchísimo este móvil, especialmente ahora que el tamaño standard empieza a ser 6.5”.

Review Honor 8X wallpaper

Su exterior es impecable, pero el interior no tanto. Por ejemplo, en Benchmarks ha demostrado ser bastante potente, pero durante mi utilización real no ha superado al SD 660, especialmente en juegos. Además, tiene una muy buena batería que te durará más de 8 horas de pantalla, pero viene con microUSB y sin carga rápida.

En lo que toca a la cámara, me ha gustado en la mayoría de las ocasiones. Su Inteligencia Artificial no satura las imagenes como la del Pocophone, pero suele perder en otros apartados, como en fotos nocturnas, selfies o en el modo vídeo.

En resumidas cuentas, me parece un móvil con una buena relación calidad-precio, pero con un firmware inacabado y poco optimizado para el hardware que incorpora. Si te gusta su diseño y sus problemas no son un problema para ti, entonces adelante. Pero si buscas un móvil potente y que te dure bastante tiempo, entonces deberías ir a por el Pocophone.

Sello Recomendado NewEsc

La entrada Review Honor 8X en Español aparece primero en NewEsc.

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

AppImage

AppImage es una forma de empaquetar aplicaciones de forma que se pueden ejecutar encualquier distribución de Linux que tenga pocos años de antigüedad. En el sitio web de AppImage se puede encontrar más información.

Sólo hay que descargar la aplicación, darle permisos de ejecución y ejecutarla. El detalle es que toda la aplicación va empaquetada en un solo archivo. No hay que descomprimir o instalar nada.

Como el movimiento se demuestra andando, vamos a ver un ejemplo. Se puede ir al siguiente enlace para instalar el editor Brackets:

https://github.com/brackets-userland/brackets-electron/releases

Y descargar el fichero con la extensión “AppImage”. Una vez descargado, se le dan permisos de ejecución (botón derecho, propiedades y hay que activar los permisos de ejecución en la pestaña “Permisos”). Ahora simplemente se ejecuta.

permisos

La cuando lo ejecutéis preguntará si lo deseáis integrar en el sistema (que aparezcan sus iconos en los lanzadores).

Pero no es oro todo lo que reluce. Algún fallo he encontrado. Por ejemplo, en el siguiente enlace está Spivak (es una aplicación de Karaoke). Si la descargamos y le damos permisos de ejecución, la aplicación a mi me falla con el siguiente error:

fallo

En la página https://appimage.github.io/apps/ hay aplicaciones preparadas para descargar y ejecutar.

¿Cuál es la diferencia con un paquete Snap? La diferencia está en la seguridad. El paquete Snap está construido de forma que la aplicación está dentro de un contenedor del cual no puede salir. La AppImage es un archivo que contienen a toda la aplicación y el usuario puede ejecutar sin necesidad de ser root para instalar dicha aplicación.

A mi me sigue gustando la ventaja de los sistemas de paquetes de las distribuciones que al instalar la aplicación, instala sus dependencias y estas pueden ser reutilizadas por varias aplicaciones, ahorrando espacio en disco. Pero no es malo tener otras alternativas.

Domingo Gomes

Domingo Gomes
NewEsc

CHUWI Hi9 Plus: ¿la mejor tableta Android 2018 por menos de 200€?

A lo largo de la Exposición de Hong Kong realizada el pasado 18 de octubre, la reconocida marca CHUWI dio a conocer al mercado una serie de productos, entre los cuales también presentaron a la tan esperada CHUWI Hi9 Plus, una tablet con teclado y mucho estilo. La conferencia oficial para el lanzamiento de la Hi9 Plus tuvo lugar el 19 de octubre a las 20:00hrs.

En la presentación se dieron a conocer las características detalladas de todos los componentes de esta tablet que ha sido ansiosamente esperada por todos los seguidores de la marca.

CHUWI Hi9 Plus evento

Para comenzar, la Hi9 Plus cuenta con un diseño bastante cuidado. Durante la presentación se pudo observar un dispositivo color negro bien estilizado, que resulta agradable a la vista. Ademas, sus esquinas son curvas y, si bien sus bordes son algo grandes, no opacan la pantalla de 10.8″ que cuenta con una resolución de 2560 x 1660, donde fácilmente se pueden reproducir vídeos en 2K.

Así también, durante la presentación se dio a conocer que la CHUWI Hi9 Plus cuenta con un procesador MediaTek Helio X27, acompañado por un GPU Mali-T880 MP4, los cuales garantizan una buena reproducción de vídeos y ejecución de juegos casuales. A ellos se les suma una memoria RAM de 4GB y un almacenamiento de 64GB, ampliable a 128GB con una tarjeta MicroSD. La alimentación de esta tablet está a cargo de una batería de 7000mAh, garantizando así largas horas de uso. Todo esto se ejecuta bajo el sistema operativo Android Oreo.

CHUWI Hi9 Plus Exposición de Hong Kong

Una característica interesante de esta tablet es su teclado de acoplamiento, que te permitirá usar la tablet para realizar documentos sin ningún problema. Solo necesitas colocar la tablet sobre la base y comenzar a escribir.

Ahora bien, con motivo de la conmemoración del día de los solteros este 11 de noviembre, CHUWI iniciará su actividad de preventa este 20 de octubre a través de AliExpress, donde encontrarás esta tablet por menos de 200€ gracias a su descuento del 33%. También podrás encontrar sus laptops y tablets más populares en descuento, como la Hi9 Air.

La entrada CHUWI Hi9 Plus: ¿la mejor tableta Android 2018 por menos de 200€? aparece primero en NewEsc.

Asociación LiGNUx: Tutorial para instalar la versión de mantenimiento del Kernel Linux 4.18.16

Viernes 19 de octubre de 2018

BlogDRAKE: AVISO a usuarios de afirma
Asociación LiGNUx: Eliminar línea horizontal de Plank u otro Dock en Xfce

Jueves 18 de octubre de 2018

Microsoft libera 60000 patentes en defensa de Linux

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000; min-height: 12.0px} span.s1 {font-kerning: none} La guerra abierta entre el software libre y Microsoft no es nada nuevo, pero esos días de lucha entre

Nueva versión de KDE, Plasma 5.14 disponible

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000; min-height: 12.0px} li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000} span.s1 {font-kerning:

Miércoles 17 de octubre de 2018

Cómo instalar Ubuntu

Ubuntu es una distribución de Linux. Ofrece un sistema operativo enfocado a los ordenadores de escritorio, sin embargo, también se utiliza para servidores. Por otro lado, Ubuntu está basado en Debian GNU Linux y patrocinado por Canonica Ltd, la cual es una empresa de Reino Unido. Este sistema operativo permite su instalación de forma sencilla, […]

La entrada Cómo instalar Ubuntu aparece primero en Blog de Informática ✏ Luisi.

Martes 16 de octubre de 2018

衣替えのたびに、納戸の桐た

衣替えのたびに、納戸の桐たんすにある着物を処分できやしないかと考えるのですが、それぞれに思い出もある着物なので、良い引き取り手もなく放ったらかしにしてきました。でも試しにウェブで調べたら、買取専門業者さんって多いらしいんですね。驚きました。和服を着たい人って多いんですね。買取実例を見ると結構高額で、そこはやはり専門店ですから、大事にしていた着物の処分も安心して頼めると思いました。そのうちの一社に、折をみて電話をかけてみるつもりです。

通うのに便利かどうかを考慮するなら、勤め口や我が家の近辺にある脱毛サロンが重宝します。しょっちゅう通うものではないですが、1度や2度で済むものとも言えないので、自分にとって立地がよくないサロンだと、自然と行くのが億劫になってくることでしょう。実際に通うことになった際のことも考えつつ、入念に見極めてください。言わずもがなですが、料金や施術について文句がないことも外せません。
たとえ未使用の着物で、傷みがなくても、必ずしも高値がつくものではありません。袖を通したことはなくても、保管している間に経年劣化して、状態の悪化はどうにも避けられません。未使用だから絶対高値というわけでもなく、査定したときの状態が悪ければ価値はありません。もし、未使用で今後着る予定がないという着物に心当たりがあれば、一日でも早く買取業者に見せましょう。
妊活中や妊娠初期に必要不可欠な葉酸ですが、いくら必要不可欠な栄養素だと言っても、摂取量に気を付けてください。これは、特にサプリや健康補助食品を利用されている方に知っていただきたいのですが、こうしたものは、食事で摂れる葉酸よりも、ずっと多い葉酸が含まれています。それゆえ、簡単に大量摂取してしまう危険性がある為、既定の容量をきちんと守り、正しい摂取を心がけてください。葉酸が過剰に体に蓄積されることで、母体には吐き気や食欲不振といった副作用があらわれることがあるそうです。それに、胎児は喘息にかかりやすいという話もありますから、過剰摂取は禁物ですね。
初めてインプラントの説明を聞いた人は、差し歯とどう違うのか疑問に思うかもしれません。まず、差し歯というのは、天然の歯や歯根を利用して、そこに金属の土台を埋め込みます。そのため、歯そのものを抜いてしまうと、差し歯は利用しようがないということです。では、インプラントの場合はどうでしょうか。インプラントは、金属製の歯根を顎の骨に埋め込んで癒着させ、その上に人工の歯を取り付けて固定するという施術なのです。自由診療になるので差し歯より高いですが、歯がなくなっていても気にせず行えるのが最大の特長であるといえます。
切手を買い取ってもらう際に切手買取の業者に直接手渡すというやり方以外にも「宅配買取」してもらう方法もあります。そういった時には、宅配料金を負担してくれたり、梱包材まで用意してくれる買取業者も多くあります。けれども、買取してもらう切手が数枚しかないような場合、サービスしてもらえないかもしれないので気を付けましょう。着物の宅配買取は、多くの業者が無料で行っていますが送るときには、最後まで気を遣ってください。ある程度以上の品質の着物には、必ずついてくる反物の切れ端や保証書をとっておいたかどうかです。家電やパソコンを売るときと同じでこれらは産地や製作者の証明になるので、あるかないかというだけで査定結果が明らかに違ってきます。着物の一部と考えて一緒に送るのが、かなり大きなポイントです。
もしバストアップに興味があるなら、湯船につかる習慣をつけてみませんか?湯船につかれば血行をよくすることができるので、胸に栄養が届きやすい状態にすることができます。血の巡りがよくなった状態の時にバストアップのためのマッサージなどを行うとより一層、効率よくバストアップすることができるでしょう。お仕事などで忙しい時は、シャワーでバストの辺りをマッサージするだけでも違うでしょう。

昔買ったきりでずっとご無沙汰というプラチナや金製の指輪などの装飾品はどなたにもあるかと思われます。タダで手放すのは惜しいという場合には、お店で買取を依頼するのを考えてみてはどうでしょう。金・プラチナの高額買取をウリにした店もあちらこちらにありますので、本当に高額で売却できるかどうか一度見てもらうのもいいでしょう。

デザインが気に入って買った高価なブランドの靴。でも数回履いてみたら、微妙に形やサイズが合わないのか、履く度に足が痛くなるからもう履かない、できればそんな目に遭いたくはありませんが、意外とよくある話でもあります。靴に限っては、合わなければ履くのは難しいですからね。新しいけどもう履けない、そんな靴を持っているなら、中古のブランド品を買い取ってくれる業者の利用を、考えてみてはいかがでしょうか。使わないでいる靴を、簡単な手入れをすることもなく置いておくと状態は悪くなっていくばかり、商品価値は下がる一方でしょう。けれどもまだ何度か履いただけ、それに、目立つようなキズもなく、もちろんカビが生えてもいない、見た目が美品であるなど良い条件が揃っていれば、かなり良い査定結果が出るでしょうから、高額で買い取ってもらえそうです。

管理人のお世話になってるサイト⇒二六時中女性 わきが 対策 治す方法せる

Sábado 13 de octubre de 2018

Cómo grabar un ISO con NERO 7

Primero definamos lo que es un ISO: Es un archivo de almacenamiento de grandes dimensiones que alberga la copia de archivos de instalación de Software o también puede ser usado para guardar un Backup (copia de seguridad) del disco duro del ordenador. Es muy habitual este tipo de archivo para instalar los sistemas operativos. Tanto […]

La entrada Cómo grabar un ISO con NERO 7 aparece primero en Blog de Informática ✏ Luisi.

Jueves 11 de octubre de 2018

Chromium vs Chrome

Los navegadores web son básicos en nuestro día a día. Ya lo utilicemos para investigar, distraernos o para el trabajo. Google Chrome es uno de estos navegadores web. Es el rey de los navegadores. No porque lo diga yo. Si no por que tiene el 63,2 % de cuota de mercado. Fue lanzado el 2 de […]

La entrada Chromium vs Chrome aparece primero en Blog de Informática ✏ Luisi.

途中で脱毛エステをやめたくなったら、キ

途中で脱毛エステをやめたくなったら、キャンセル料として違約金や解約損料を支払う必要があるでしょう。ペナルティーの料金は法律で決められた上限がありますが、本当に支払うべき金額については、契約をしているサロンに、聞いておくことが必要です。後々後悔しないように、契約の前に途中での解約中止についても明白にしておくと安心です。

有名どころの脱毛サロンはいくつもありますが、特に利用者の満足度が高いのは銀座カラーでしょう。リーズナブルな価格ながら、高い技術力を持つエステティシャンが多く、最小限のストレスで脱毛効果を感じられる点が評価されているようです。お試しコースはもちろん脱毛学割などを上手に使えば、脱毛サロンを利用したことがなくても気軽にトライできます。しょっちゅう色々なキャンペーンを提供しているサロンさんなので、マメにキャンペーン情報に目を通していれば、非常にリーズナブルなお値段で脱毛できると思います。
ブランド品を持つ年齢層は広く、早ければ10代の頃からブランド品を使っている、という人も少なくないのですが、所有のブランド品を、ブランド買取店で買い取ってもらうことは基本的に20歳未満の人はできないことなっていますので、気を付けましょう。店ごとに年齢制限の細かい違いはあり、原則として20歳未満の人との取引はしない、としたり、取引に保護者が同意していることを示す書類を持っていれば未成年であっても18歳以上で取引を可能とするというお店もあり、少なくとも気軽な利用はできないことになっています。買取店の利用を予定しているなら、未成年の人はお店側がどういった対応を取るかなど、事前にHPなどで確認しておいた方が良いでしょう。自分が通いやすいことに重点を置くなら、仕事先や住まいの近隣にある脱毛サロンを選ぶことを勧めます。引っ切り無しに行くというわけではないのですが、何度か行けばそれで終わりということでもないので、通うのに不便な脱毛サロンの場合、自然と行くのが億劫になってくることでしょう。アクセスの面も勘案しながら、入念に見極めてください。当然ですが、値段や施術も希望に合致していることが第一条件でしょう。

不動産売却に際してかかる税金の中で譲渡所得税と住民税には特に気を配りましょう。物件売却で利益が出れば、これらは必ず賦課される税金です。しかしながら、売却物件が居住用ならば、特別控除額が3000万円あります。さらに、所有期間に応じてこれらの税金は課税方法が変わるため、この点を調べてから売却に向かった方がいいでしょう。

浮気調査に必要な期間は、普通は3~4日が目安です。最初に断わっておきますが、これはあくまでも平均の期間です。普段から気づかれないように気を使っているパートナーの調査だと、1週間から1カ月くらい調査期間が必要になることがあり得ます。それとは逆に、この日は浮気しそうだという日が特定済みの場合は、たった1日で調査が完了してしまうこともあるのです。子供を連れて行ける脱毛サロンが少ないのはご存じですか。最近のエステサロンであったら、託児所があるところも増えてきています。脱毛サロンの場合、施術に使う光線が子供の健康に影響がある可能性があり、絶対安全であるとは言い切れず、入店さえも断っているところも少なくありません。施術自体は意外と短い時間で終わるので、短時間だけでも子供を見てくれる人はいないか声をかけたり、大型ショッピングモール内のサロンでは託児所完備な場合があるので、そこを利用するのもいいですね。
持っているだけで使う機会のなくなったブランド品はありませんか。価値は下がって行く一方ですし、場所もとりますから、いっそ売ってしまいましょう。さて買取業者に売却したいと考えるのなら、可能な限り良い値段をつけてもらいたいところです。ところが買取価格というのは、一律で同じということはなく、業者ごとに異なってくるものなのです。要するに高く売りたいということであれば、高い値段をつけてくれる業者を探すことになってしまいます。しかし、そう難しくはないので、安心してください。ネット上にある一括査定という仕組みを使用してみましょう。文字通り、一括で何社もの査定を依頼でき、業者から知らせてくる査定額を比較するだけです。無料サイトであり、売りたいブランド品についての情報と連絡先を入力するだけで、一括査定の申し込みができます。
顔の産毛を剃らないと、パッと見の印象が大きく変化します。まゆ毛の手入れをせずにそのままにしていると顔の印象がボーッとしてしまいますし、女の子がヒゲを生やしていたらとても嫌なイメージがあるでしょう。顔の産毛のお手入れは大人のエチケットです。顔は一番人目に付く部位ですし、デリケートな場所ですから、剃ったりするときには丁寧に注意深く行うようにしましょう。

購入はこちら⇒30代 40代 出会い

Lunes 08 de octubre de 2018

Ramón Miranda

Ramón Miranda
Ramón Miranda

Digital Atelier Streaming Youtube


Edit: the link of the streaming :https://www.youtube.com/watch?v=vYHZ5kPZ4DU

Hi all!,
Next friday i will be making my first streaming in Youtube (it will be in english.) There we will see what the Digital Atelier New bundle pack can give to your art in Krita.
So if you like brushes, patterns and these kind of things this is going to be really interesting for you. 
Share with your friends because this Friday 20:00 CEST you have a date with me and krita. 

At the end of the streaming i have surprises and goodies. Stay with me and enjoy it! We can have a lot of fun.


Sábado 06 de octubre de 2018

脱毛サロンに通

脱毛サロンに通って脇の脱毛をしてもお肌が黒ずんでしまうことに悩みを覚えている方は多いでしょう。脇の黒ずみは自分で処理した時の刺激によって発生しているケースが多いので、いつもはできるだけカミソリなどを使わずにお肌に負担がかからないようにするだけでだいぶ目立たなくなってきますよ。
ブランド買取業者に商品を買い取ってもらう際、つけられる価格のことですが、価格が高くなるか、そうでないかというのはまず、商品が新しいものかどうかという点にかかってきます。むろん、新しい商品の方が古いものよりずっと良い価格になるのは極々、自然で当然のことです。使われた形跡が、ありありとわかる物でも極端に古いものでない限りは、買い取ってもらえることが多いのですが、新品同様とはいかなくても、できる限りこざっぱりきれいにしておく必要があるでしょう。最低限、見える範囲の汚れを拭いておく位しておき、靴や鞄でしたら中のほこりも除去し、査定に少しでも影響を与えられるように簡単に事前準備をしておくと良いでしょう。

近頃は、脱毛サロンは大変多くありますが、脱毛方法は色々あり、痛みを多く伴う場所もありますし、痛くない施術を行うサロンも存在するのです。人それぞれ痛みの強さの感じ方は異なるので、他の人に痛くないと聞いても、そのサロンで施術されたら、痛みに耐えられないこともあります。長期の契約を結ぶ場合はそれ以前に、施術を受けて痛みがどのくらいか様子をみることをオススメします。足の裏の臭いの主な原因は、足の裏で細菌が繁殖したことによります。靴などを履くと湿度が高くなるので、雑菌が繁殖しやすいのです。足裏にはエクリン汗腺が集中して存在し、手のひらの汗と同様に精神的なことで発汗します。靴や靴下の中のムレを防止して、制汗剤などを使用すると良いでしょう。私の父の趣味の一つだった切手が遺されてしまいました。どうやって手放せば一番いいのでしょうね。きちんとスクラップされていないものも多いので買取が一度で済めばそれがベストだと思います。かなり気を遣って保管していたので父がきれいにとっておいた切手を、大事にしてくれる方に渡せるようにしたいです。改めて見て、いろいろな切手があると思いました。妊婦にとって重要な葉酸ですが、加熱すると失われやすいという弱点があります。ですから、葉酸摂取を目的とした調理において、気を付けてほしいポイントがあります。出来るだけ葉酸の流出を防ぐために、火を通さずそのまま食べられるのが一番良いのですが、食材によって加熱調理が避けられない場合には加熱時間を短時間にしてわずかな時間で済ませた方が、葉酸の流出が少なくて済みます。いくつかのポイントを紹介しましたが、このような調理が手間で負担になる場合には、葉酸のサプリメントを活用するのが良いでしょう。脱毛サロンをご利用の際、以下の点にご注意ください。まず、価格が分かりやすいかどうか、あなたの肌の事をしっかりと考えてくれているかどうか確認しておく事は必須でしょう。もし満足できなかったとしたら、気が変わって解約するという場合にかかる違約金の事も確認しておきましょう。契約する前にきちんと確かめておくべきでしょう。予約の取りやすさはチェックしましたか?予約のキャンセル料はいくらくらいなのかといった事も見落としがちなので注意しましょう。

バーバリーと言えば、コートと、その裏地のスマートなバーバリーチェックでおなじみのイギリス生まれのファッションブランドであり、人気は大変高いです。服飾の印象が強いバーバリーですが、もちろんそれだけでなく、アクセサリーやバッグ、財布、香水、靴なども手広く商品を扱ってはいるのですが、バーバリーといえば、伝統があって機能の優れた名高いトレンチコート、これが最も人気のある商品となっており、物と状態によるのは当然なから、買取店を利用して査定を受けてみると概ね、高めの査定額に出ることになるでしょう。

脱毛エステを利用しようとして悩んだ時、選び方としてはまず、料金のことをはっきりとわかりやすく説明しているかどうかが一番大事なポイントでしょう。それから脱毛できている、という実感がじゅうぶんに感じられて、しっかりとしたアフターケアが受けられるかどうかも大切な点です。そして体験コースなどのサービスを受けてみたりして、リアルな印象を確認しておくことも大変大事なことです。候補のお店のいくつかで体験コースを受けて、一番気に入ったところを選ぶというのがいいでしょう。
やりやすいようにブラジャー着用の人はただしい付け方か見てください間違った着方をしたせいでバストアップが期待できないかもしれませんブラを正しくつけることで面倒でもありますが嫌にもなると思います。続けてみたらだんだんバストアップできるはずです
不妊が続く状態を打破するために、普段の食生活の見直しも一つの手かもしれません。精子や卵子は、パパ・ママの栄養をベースにして作られるのですから、食生活が乱れていては卵子や精子の活発さは、望めません。妊娠しやすさのためには夫妻そろって健康的な食生活を大事にしていくといいでしょう。
購入はこちら⇒のうさのうさレジーナクリニック 池袋院 医療脱毛 豊島区ような

Jueves 04 de octubre de 2018

Fedora 29 beta ya está disponible para su descarga

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Helvetica Neue'; color: #000000; -webkit-text-stroke: #000000; min-height: 12.0px} span.s1 {font-kerning: none} span.s2 {text-decoration: underline ; font-kerning: none} Los amantes y usuarios de la distribución de Linux

Miércoles 03 de octubre de 2018

Ubuntizando.com

Ubuntizando.com
Ubuntizando.com

Probando la CHUWI Hi9 Air

Aunque parezca mentira llevo casi medio verano con este análisis de producto pendiente y tenía muchas ganas de compartir mis primeras impresiones de la nueva tablet económica de CHUWI que ya está a la venta desde el pasado mes de marzo. Hablo por supuesto de la CHUWI Hi9 Air. Lo bueno de poder probar esta tablet por algo más de un mes y no una semana como viene siendo costumbre es que me permite saber cómo se comporta la tablet no solo tras el primer uso sino además compartir mis valoraciones tras el paso del tiempo sin tanta emoción.

La Hi9 Air es una evolución mejorada de su modelo Hi9. Este modelo fue muy duramente criticado por los usuarios porque si bien era una Tablet pensada para un publico Gamer tenía una serie de puntos que no acababan de gustar como era su escasa dimensión de pantalla, acabados en plástico y bajo rendimiento de su CPU en comparación a otras tabletas disponibles en el mercado.

Así que cuando salió la Hi9 Air de inmediato me interesó conocer hasta que punto CHUWI había recogido las impresiones de los usuarios para mejorar su producto.

Características técnicas

Antes de comenzar siempre es buena idea repasar las características técnicas de esta tablet que destaca por su CPU MediaTek X20 y GPU ARM Mali-T880 que sin ser lo más potente del mercado, sabido es los problemas de rendimiento que ofrecen los procesadores MediaTek, responde bastante bien gracias a sus diez núcleos a lo que podemos esperar de una tablet de menos de 200€.

  • Diseño y Pantalla
    • Tamaño: 241.7 mm x 172.0 mm x 7.9 mm
    • Relación de aspecto: 8:5
    • Peso: 550 g
    • Superficie Útil:71 %
    • Materiales: Plástico y aluminio
    • Colores: Negro
    • Diagonal: 10.1″
    • Tipo: LCD IPS
    • Resolución: 2560 x 1600 px(QHD+)
    • Densidad: Media densidad, 299 Pixeles por pulgada diferenciables a menos de 40 cm. de distancia
    • Otras: 350 cd/m² Capacitiva Multi-touch OGS (One Glass Solution)
  • Hardware
    • CPU Deca-Core Modelo MediaTek Helio X20 (MT6797) 64 Bits (2,1GHz)
    • GPU ARM Mali-T880 MP4
    • RAM 4 GB
    • Conectividad WiFi, Bluetooth y 4G
    • Cámara trasera de 13 Mpx y frontal de 5Mpx
    • Batería Li-Polymer de 8.000 mAh
  • Software
    • Android 8.0 Oreo

 

Primeras impresiones

Cuando llega el pedido el paquete es enorme y digo enorme porque su contenido está muy bien protegido con varias capas de plástico y un estuche protector que hace prácticamente imposible que esta Tablet tenga algún daño durante su envío. Luego la caja, aunque recuerda a una caja de pizzas, sigue la misma línea austera aunque elegante que la marca nos viene acostumbrado. No hay muchas novedades al respecto.

En su interior encontramos la Tablet con una lámina protectora de pantalla y instalada y cargada para comenzar a darle uso desde el primer momento. Por supuesto no puede faltar los papeles de garantía, cargador y cable microUSB.

La construcción de la Tablet ha mejorado en general siendo ahora su acabado exterior en aluminio. Esto hace que el conjunto gane un poco de peso pero a cambio ahora se siente mucho más solida, aunque la tapa donde se alojan las tarjetas SIM es de un plástico bastante sencillo. Que para colocar las tarjetas SIM y olvidarnos es más que suficiente pero no deja de ser un detallito que bien podría haberse resuelto de otro modo y que desluce un poco el conjunto final.

El conector de carga es microUSB y está ubicado en la parte superior justo al lado de la cámara. Me había acostumbrado en otros modelos a cargar mi Tablet conectando el cable en un lateral. Creo que es mucho más cómodo por no hablar que volver al MicroUSB es una vuelta atrás. Siempre ha sido un conector que me ha dado infinidad de problemas por no hablar de la frustrante que resulta no poder conectar el cable a la primera porque te has equivocado de lado, algo que con el USB tipo C ya no sucede. Puedes llamarme quisquilloso pero creo que muchos coincidirán en que en 2018 microUSB es un atraso. Mal CHUWI, mal.

Otro detalle es que no tiene salida de vídeo HDMI. Eso sería genial porque conectar nuestra tablet a una pantalla mayor puede ser una buena idea si queremos ver vídeos en 4k (la pantalla de tiene una resolución 2K) o usar la Hi9 Air como un completo centro de ocio. Y ya si nos ponemos a buscar defectos en exteriores la pantalla no es lo suficientemente brillante para todas las condiciones de luz y en ocasiones con mucho sol puede ser difícil leer la pantalla. En interiores la cosa cambia. El detalle es fino y podemos leer o ver vídeos con buena calidad.

Me olvidaba comentar que la Tablet cuenta con la posibilidad de conectarnos en todo momento a Internet gracias a su conexión 4G. Cuenta para ello con dos ranuras microSIM para introducir nuestras tarjetas. Puedes pensar que esto es demasiado y que con una ranura es suficiente pero si viajas fuera de Europa pronto te darás cuenta de la ventaja que representa una tablet dualSIM como esta. ¿Es la CHUWI Hi9 Air la tablet recomendada para un viajero? Es posible que no te arrepientas si la compras. 🙂

Cuenta con Android 8.0 (Oreo) como sistema operativo y en las pruebas que he realizado tengo que decir que para un uso general la tablet es capaz de mover con fluidez vídeo y aplicaciones comunes además de algunos juegos exigentes en cuanto a gráficos. Pero donde me he quedado muy sorprendido es con la batería. Con un uso normal, navegar, ver algunos vídeos, etc la batería es capaz de ofrecernos entre 6 a 8 horas de autonomía y permanecer hasta varios días en suspensión.

Si he notado que la memoria interna eMMC es un poco lenta en escritura pero nada destacable, algo que no ocurre en la velocidad de lectura. Aunque para su precio no me quejo. ¿64GB por el precio de una tablet de una marca de renombre con 32GB? Yo no me lo pensaba.

Dicho todo esto y antes de terminar mejor te dejo un vídeo por si te queda alguna duda.

Conclusiones finales

La CHUWI Hi9 Air es una Hi9 con mayor y mejor pantalla. Su procesador y chip gráfico son capaces de mover juegos exigentes y su batería no te dejará tirado tras pocas horas de uso. Su construcción es solida aunque detallitos deslucen un poco su aspecto final. Cuenta con 4GB de RAM que comienzan a saber a poco en los tiempos que corren pero que son aprovechados al máximo gracias a Android Oreo como su sistema operativo. Cuenta además con 64GB de almacenamiento que podemos ampliar con una tarjeta microSD y un conexión 4GB gracias a su dos puertos para tarjetas microSIM. Podemos por tanto estar conectados en cualquier lugar y todo ello por menos de 160€ en GearBest (con un descuento del 30%).

¿Es una tablet adecuada para viajar? Sí, sin duda. ¿Podemos jugar con ella? A todo lo que quieras y más. ¿Me quedaré corto de almacenamiento? No salvo que seas una de esas personas que prueban aplicaciones de manera compulsiva. ¿Es una compra recomendable? Su calidad y relación potencia precio la hacen muy valorable para su compra de hecho yo la he comprado tras hacer la review.

Lunes 01 de octubre de 2018

Ubuntizando.com

Ubuntizando.com
Ubuntizando.com

OpenROV: Exploración subacuática con Raspberry Pi

Cuando era pequeño uno de mis juguetes soñados era poder tener un submarino de radio control. Unos amigos tenían uno que usaban para jugar en la piscina en verano y ciertamente aquello era una locura. Recuerdo que hasta podía disparar unas piezas a  modo de torpedos, lo cual ya era la caña por aquellos años.  OpenROV no es juguete pero si puede ser el próximo objeto soñado por muchos aficionados a la tecnología. Armado con una Raspberry Pi 3 se trata de un dron subacuático desarrollado por la la compañía con sede en California, Trident y que llegó a recaudar más de 815,000 en Kickstarter.

El drone todavía no se encuentra a la venta pero se puede preordenar por unos 1499 dólares.  Pero antes de que nos echemos las manos a la cabeza hay que pensar que a diferencia de otras compañías Trident promete abrir su API para que todos podamos hackear el drone y darle el uso que queramos, por ejemplo explorar los fondos marinos sin necesidad de mojarnos ni un pelo o para patrullar muelles y vigilar nuestras embarcaciones.

 

Fuente: https://www.raspberrypi.org/

Martes 25 de septiembre de 2018

Ramón Miranda

Ramón Miranda
Ramón Miranda

Sunset garden


"El otoño está ya aquí. Con sonido de verano, pero ya la luz va siendo menos. El verano se aleja como una figura distante a la que no podemos tocar. ¿Volveremos a vernos dentro de un tiempo? ¿Hasta la próxima vez quizás? Los últimos rayos de sol adornan tu figura y yo te miro esperando volverte a ver aquí donde las rosas no son rojas sino amarillas, donde las sombras crean recovecos y se puede charlar mejor"

Así de romanticón despido el verano 2018 con una imagen estilo impresionista. El "jardín de la puesta de sol" con la figura de un típico pintor bohemio y a su vez protagonista de una obra impresionista como se presentaban aquellas obras.

Hecho con Krita en una tarde, había reservado esta imagen para un momento especial y este lo es. Veremos que nos depara el Otoño.

Lunes 24 de septiembre de 2018

Alojando una web en IPFS

En el primer post vimos como interactuar con IPFS de forma sencilla. Ahora vamos a dar un paso más y vamos a alojar una web en IPFS, aprovechando todas las ventajas de escalabilidad y disponibilidad que nos ofrece la red. Para ello usaremos además otro protocolo llamado IPNS, que sería similar a DNS pero en la red IPFS.

Las páginas ideales para IPFS actualmente son las que siguen el JAMstack, es decir, uso extensivo de JavaScript en el cliente, que podrá conectarse a APIs para obtener/actualizar información. Las APIs no tienen por qué ser centralizadas, ya que JavaScript con WebRTC puede buscar peers, posibilitando APIs descentralizadas.

Generando el contenido estático

El primer paso será generar el contenido estático de la web. Para ello existen herramientas muy conocidas como Jekyll, Hugo o Pelican.

No nos vamos a alargar más en esto, ya que cada herramienta tiene sus pasos. El resultado final será una carpeta con ficheros HTML, CSS, fuentes, imágenes y JavaScript.

Subir a IPFS

Teniendo el nodo IPFS en funcionamiento, subimos la carpeta del modo habitual, en mi caso, voy a subir la página que está en http://adrianistan.eu .

ipfs add -r adrianistan.eu/

Y anotamos el último hash.

Comprobamos que la web es accesible, tanto desde la gateway del nodo, como una externa:

Tanto en el nodo local como en uno externo, la web carga perfectamente con el hash

IPFS tiene direccionamiento por contenido

En el post anterior mencionamos que IPFS direcciona por contenido gracias a los hashes. Esto tiene unas consecuencias interesantes. Por ejemplo, si se añade un archivo duplicado a IPFS, este tiene exactamente la misma dirección, ya que comparten hash. Por otro lado, los documentos no se pueden actualizar, porque entonces su hash cambia. Sin embargo en una web queremos cambiar contenido, ahí entra en acción IPNS.

IPNS, gestión de nombres para IPFS

IPNS es un protocolo parecido en intenciones a DNS que redirige un ID única al hash correspondiente en ese momento. Registramos el hash de la web actual en IPNS.

ipfs name publish HASH

Ahora sí, el hash IPNS puede publicarse por la red, ya que siempre apuntará a la última versión de la web.

Para acceder a recursos a través de IPNS tenemos que cambiar de protocolo, en vez de /ipfs/HASH, tenemos que poner /ipns/HASH. Vale tanto para comandos como para las gateways HTTP.

https://cloudflare-ipfs.com/ipns/QmYDVeoadAzk9ZW6zwJK3E3KHrA1LWLveEdqUv4XAcCjKa/

En cualquier momento podemos comprobar a que dirección IPFS apunta el hash IPNS:

ipfs name resolve QmYDVeoadAzk9ZW6zwJK3E3KHrA1LWLveEdqUv4XAcCjKa

Para actualizar el contenido simplemente se vuelve a repetir el paso de ipfs name publish. IPFS automáticamente modificará la redirección de IPNS.

Los contenidos antiguos no desaparecen, pero pueden no ser accesibles ya que ningún nodo tenga copia de ellos.

DNSLink

Aún así, ir dándole a la gente un hash IPNS es demasiado complicado. Afortunadamente, podemos usar el DNS tradicional para indicar una ruta IPNS y así, como veremos, facilitar bastante las cosas.

Para ello añadimos un campo TXT en los DNS de nuestro dominio. El contenido es el siguiente:

dnslink=/ipns/HASH

Con esto podremos usar /ipns/dominio.com en la red IPFS. Pero todavía hace falta un cliente IPFS.

Afortunadamente, podemos redirigir mediante CNAME a una gateway HTTP de confianza y ¡la web funcionará correctamente! Para ello hay que crear un campo TXT en el subdominio _dnslink con el mismo contenido que el anterior.

Todas las gateways de IPFS soportan DNSLink para que la transición a IPFS sea lo más transparente posible.

Así, finalmente la página carga con un dominio normal y corriente en un navegador normal y corriente.

Fijaos en la URL

De hecho, vosotros mismos podéis acceder:

http://adrianistan.yayeyo.ga

IPFS Companion

Si usamos mucho IPFS, puede que nos interese una extensión que maneje el protocolo ipfs:// . Tanto en Firefox como en Chrome existe IPFS Companion, una extensión que nos permite acceder a contenido IPFS de forma sencilla.

Servicio systemd

Por último, quiero dejar el servicio de systemd necesario para tener el nodo IPFS funcionando constantemente en nuestro ordenador. En este caso, IPFS lo instalé vía Snap.

[Unit]
Description=IPFS daemon

[Service]
ExecStart=/snap/bin/ipfs daemon
Restart=on-failure

[Install]
WantedBy=default.target

sudo cp ipfs.service /etc/systemd/user/

sudo systemctl --user start ipfs.service
sudo systemctl --user enable ipfs.service

Y con esto ya tendríamos suficiente como para jugar con IPFS un buen rato.

La entrada Alojando una web en IPFS se publicó primero en Adrianistán.

Domingo 23 de septiembre de 2018

Liher Sanchez

Liher Sanchez
El blog de Liher

Que es el dropshipping

Internet es genial y nos ofrece a todo el mundo un sinfín de posibilidades en muchos ámbitos. Internet contiene información sobre cualquier cosa, es una fuente de conocimiento tremendamente excepcional. Podemos encontrar páginas web sobre cualquier tema que podamos imaginar. Si te gusta la informática y tienes ganas podrás aprender a programar, hacer webs, crear y manejar bases de datos, gestionar sistemas operativos y un largo etcétera de posibilidades. También, sea cual sea vuestra profesión, podéis encontrar información y tutoriales tanto escritos como en vídeo sobre como hacer esto o lo otro y así poder conocer mejor vuestro oficio. Otra de las grandes cosas que tiene Internet es el mundo de los negocios, que es en lo que me quiero centrar en este artículo, mas concretamente en el dropshipping. Para aquellos que no sepáis lo que es os lo voy a explicar para que sepáis un poco de que va el tema y las posibilidades que ofrece.

Este blog no fue creado con la idea de ganar dinero, aunque reconozco que en algunas ocasiones se me ha presentado la oportunidad de ganar algunos euros y, no en todas, he aceptado. Aun a pesar de ser un “hobby” y de hacerlo muy a gusto tengo que reconocer que cuesta dinero mantenerlo online, tanto el VPS como los dominios y una ayuda nunca viene mal. En otras ocasiones os he hablado de como ganar algo de dinero en Internet y esta es una de ellas, el dropshipping. Es un modo de montar un negocio que tiene muchas y muy buenas ventajas y muy poco riesgo, lo cual os detallaré a continuación.

Creo que la mejor forma de explicar que es el dropshipping es con un ejemplo. Imaginad que queréis montar una tienda en Internet. Con el sistema tradicional habría que montar una web con una tienda online. Ademas habría que disponer de un almacén para los productos que queréis vender. También hay que preocuparse de ir renovando el stock de productos. Unos de los grandes riesgos de este sistema tradicional es el hecho de tener un producto que no lográis vender, lo cual supondría una pérdida económica. Hay mas factores a tener en cuenta con el sistema tradicional.

Ahora suponed que los productos que vendéis no los tenéis físicamente en un almacén. Para empezar supondría un ahorro el no tener que pagar un local para usarlo como almacén, es obvio, ¿no? Imaginad que cuando un cliente os compra un producto en vuestra tienda online, automáticamente, ese producto se pide a vuestro proveedor y es el mismo proveedor quien se encarga de mandar el producto al cliente que lo ha comprado en vuestra tienda. El precio de venta en vuestra tienda lo ponéis vosotros y la diferencia entre ese precio y el de vuestro proveedor es vuestra ganancia. En esto consiste a grandes rasgos el dropshipping, una nueva manera de tener una tienda online. Esto conlleva muchas ventajas, algunas ya las he comentado como el hecho de no necesitar un almacén y no tener que preocuparos por gestionar el envío de los productos.

Ademas de las ventajas ya mencionadas podemos tener muchas mas. Por poner un ejemplo, imaginaos hubiese una plataforma que nos ofreciese plantillas ya hechas para la tienda online, eso nos facilitaría el trabajo. Estaría muy bien que nos permitiese agregar productos de una manera sencilla e intuitiva, incluso que nos ofreciese productos según nuestras preferencias. Esto y muchas ventajas mas nos ofrece Oberlo, una página web en la cual tenéis todas las facilidades del mundo para convertiros en expertos del dropshipping y ganar un buen dinero. Incluso tienen un blog con artículos que os ayudaran mucho.

 

 

Oberlo

 

Así que ya sabéis, si queréis ganar algo de dinero en Internet tenéis muchas posibilidades, lo mas importante es tener realmente ganas y no pensar que todo os va a llover del cielo. Es algo que requiere mucho esfuerzo y dedicación y no podéis pensar que con abrir una tienda online os van a entrar los clientes en manada, cuesta llegar a tener un negocio prospero, precisamente por eso os comentaba lo de la web de Oberlo, con ellos es todo mucho mas fácil y podéis centraros mejor en promocionar los productos que vendáis, algo para lo que dispondréis de mas tiempo ya que no tendréis que preocuparos de cosas como el almacen o los envíos, entre otras cosas.

Un saludo a todos.

Xavier Genestos

Xavier Genestos
SYSADMIT

Linux: Como saber el gateway (puerta de enlace)

En este post veremos como saber el gateway (puerta de enlace) de un sistema Linux. Los administradores de sistemas Windows, ya saben que ejecutando el comando ipconfig, este nos mostrará la dirección ip, mascara de subred y gateway. En sistemas Linux, ejecutando el comando equivalente: ifconfig, no nos mostrará el gateway. Veamos a continuación las distintas formas de saber el gateway (

Miércoles 19 de septiembre de 2018

IPFS, el futuro de la web descentralizada

Imagina la web sin servicios centralizados. Donde puedas acceder a un vídeo o a una galería de fotos y que no haya una única manera de acceder a contenido. Eso y mucho más es IPFS. IPFS son las siglas de InterPlanetary File System y se trata de una red descentralizada de intercambio de archivos. Nos puede recordar a BitTorrent y en efecto, una buena descripción para IPFS es Torrent 2.0. No obstante IPFS implementa bastantes mejoras sobre BitTorrent, mejoras que lo hacen más útil.

En un post próximo explicaré como podemos sacar partido a IPFS ahora mismo, pero antes vamos a ver algunos conceptos fundamentales de IPFS.

Siendo más técnicos, IPFS es una red P2P inspirada en BitTorrent, Git y Kademlia. El protocolo es una red de distribución de contenido (CDN) y define un sistema de archivos donde el identificador es el propio contenido (a través de su hash). En IPFS nada desaparece sino que se versiona.

Vamos a ver como usar IPFS desde la terminal. Existen varios clientes, en diferentes lenguajes, como js-ipfs (que tendrá mucha utilidad en aplicaciones web descentralizadas usando JavaScript), pero de momento el cliente más maduro es go-ipfs. Desde la web puedes descargarlo.

Iniciar IPFS

Una vez IPFS esté instalado hay que ejecutar lo siguiente:

ipfs init
o
ipfs init --profile server

La segunda opción es para centros de datos, ya que reduce el tráfico interno.

Este comando genera las claves RSA del nodo, necesarias para la comunicación con la red IPFS. Además se nos informa de nuestro ID de nodo. Para acceder a este ID en cualquier momento podemos escribir:

ipfs id

Iniciar el nodo IPFS

Para acceder al contenido IPFS necesitamos ejecutar un nodo. Este nodo se inicia con ipfs daemon. Una cosa importante es que por ejecutar el nodo no se va a descargar nada que no pidamos. IPFS es explícito, pero necesita estar activo.

ipfs daemon

Obtener archivos

Ahora vamos a descargar nuestros primeros archivos de la red IPFS.

Para obtener un archivo existen varias formas:

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
o
ipfs cat QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Podemos usar el comando cat de IPFS, que funciona de forma similar a cat de Unix.

Las URL de IPFS todavía no han sido definidas de forma definitiva pero de momento siguen el siguiente formato: /protocolo (omitible)/hash/fichero (si es una carpeta). Es el hash el que identifica el bloque de contenido y es lo que sirve para encontrar el contenido en la red IPFS. Internamente usa una DHT (Distributed Hash Table). IPFS no usa trackers como las primeras versiones de BitTorrent. En cambio usa una DHT basada en Kademlia (bastante rápida).

Para obtener un fichero binario usamos el operador de redirección de Linux.

ipfs cat QmWYhH2Nac5vSgTmc6NULncakvhCXgAci33M5NXHjjBuU8 > Comuneros.jpg

También se puede acceder a IPFS por dos métodos más:

FUSE

Podemos montar un sistema de ficheros en Linux gracias a FUSE que es una puerta a IPFS.

ipfs mount

Y tendrás acceso a carpetas /ipfs/hash/ integradas en tu sistema. Muy útil si lo queremos integrar en aplicaciones.

GATEWAY HTTP

Podemos usar IPFS sin tener instalado nada, usando la puerta de acceso que alguien generosamente proporcione a la red. La puerta se encargará de llevar el contenido IPFS al mundo cliente-servidor de HTTP. Existen varias, de hecho cada nodo tiene un servidor HTTP en localhost para esto mismamente, pero aquí voy a mencionar dos: la de IPFS.io y la de CloudFare.

Esto sirve para llevar IPFS a cualquier ordenador a través de un navegador web tradicional como Chrome, Firefox o Safari. También facilita la tarea de integrar IPFS en aplicaciones que no tengan desarrollada una librería específica.

Añadir archivos

Ahora vamos a poner en la red IPFS nuevos archivos. Para ello usamos ipfs add.

Esta operación genera el hash que identifica al contenido en la red y que tendremos que enviar a las personas que queramos que accedan al contenido.

La red IPFS de este modo es semi-privada, ya que sin saber el hash no podemos acceder al contenido en cuestión.

Y ya estaría, así de simple. También podemos añadir carpetas.

El último hash que se ve en la pantalla hace referencia a la carpeta entera.

Pining

Por defecto, IPFS almacena los archivos propios del nodo (los que hemos añadido con ipfs add). Pero entonces IPFS no supone ninguna ventaja respecto a HTTP. No es distribuido, solo hay una copia de los ficheros en el universo.

Cuando descargamos un fichero, IPFS guarda en caché una copia para ofrecer a la red, haciendo que sea un sistema distribuido de verdad. No obstante si estamos realmente interesados en conservar el fichero en nuestro nodo a disposición de la red IPFS tenemos que hacer pin (ipfs add). Cuando nos deje de interesar conservar el fichero a la red, podemos quitar el pin (ipfs rm).

ipfs pin add QmWYhH2Nac5vSgTmc6NULncakvhCXgAci33M5NXHjjBuU8
ipfs pin rm -r QmWYhH2Nac5vSgTmc6NULncakvhCXgAci33M5NXHjjBuU8

Más cosas

Todavía nos quedan muchas cosas de IPFS que ver, como el versionado, el sistema de nombres IPNS, el sistema de enlazado semántico IPLD y como podemos usar IPFS para páginas y aplicaciones web.

 

La entrada IPFS, el futuro de la web descentralizada se publicó primero en Adrianistán.

Bruno Exposito

Bruno Exposito
Puro Linux

ReactOS – Windows de código abierto

ReactOS es un sistema operativo de código abierto escrito en C/C++ y disponible para las arquitecturas x86, x86-64 y ARM.

El proyecto nació en el año 1995 como una clon de Windows 95 y está basado en el diseño de la arquitectura de Windows NT. Es compatible (lo intenta al menos) con las aplicaciones y controladores de Windows NT 5.X (Windows XP y posteriores).

Pese a estar construido basándose en Windows, ReactOS incluye ciertas mejoras que no están incluidas en el susodicho, como un gestor de paquetes, similar al que usa GNU/Linux.

reactos_desktop

 

Auditoría

Dado que Windows es un sistema operativo de código cerrado, los desarrolladores de ReactOS emplean ingeniería inversa para comprender el funcionamiento de Window.

En enero del 2016, uno de los desarrolladores encontró código desensamblado de Windows XP, algo completamente ilegal y que afectó a la credibilidad del proyecto, sin embargo en la actualidad ese código ha sido reescrito en C y el proyecto está auditado para que no existan dudas acerca del origen del código.

Este problema ocasionó la eliminación de los enlaces de descarga, una pérdida de credibilidad y la prohibición de colaborar con WINE.

 

Demostraciones a políticos rusos

ReactOS ha despertado cierto interés entre algunos políticos rusos, en 2007 Víktor Alksnis se reunió con Aleksey Bragin “coordinador” del proyecto, para realizar una demostración y en 2012 se realizó otra demostración a Vladimir Putin.

Estabilidad

En estos momentos, y pese a llevar tantos años en desarrollo, sigue en versión alpha, por lo que no se recomienda instalarlo en máquinas de producción.

 

Look and feel

En lo relativo a su aspecto visual, es muy similar a Windows 95/98/2000, con ligeras diferencias respecto al original.

El tema ha quedado tremendamente obsoleto y el menú de inicio es poco usable.

Personalmente considero que deberían modificar la interfaz para asemejarse a Windows 7 Basic (porque tiene pocas animaciones y transparencias) o Windows 10, porque es bastante “flat”.

 

Descarga

Puedes descargar la ISO de instalación como el live CD desde su página oficial: https://www.reactos.org/es/download

Lunes 17 de septiembre de 2018

Ramón Miranda

Ramón Miranda
Ramón Miranda

Krita’s 2018 Squash the Bugs. New fundraiser!



Wow long time no posting! beach, summer, daikiris... ? Not, something even more good!




Hi, finally is here. A new Krita fundraiser campaign  has begun and my new resources pack  " Digital Atelier" is going to be available for bakers over 50€:  \o/
You can check the new here : https://krita.org/en/item/introducing-digital-atelier-a-painterly-brush-preset-pack-by-ramon-miranda-with-tutorial-videos/

The Campaign is here: https://krita.org/es/fundraising-2018-campaign-es/

This job has been sponsored by the Krita team and done with one idea in my mind. Keep it simple, keep it versatile. What i like the most is that "is not only a resources pack but also a training pack".

Why this campaign is so important? 
We are in a very exciting moment for Krita. It is very stable but it still have bugs. A lot of them! Because code is like art, you have to polish it carefully if you want to have clean and perfect code. And that takes time. a looot of time watching the screen with python and c files in fron of you. That is what we call Debugging stage.

¿Why i would support a campaign with no features promise?
When software runs smoothly we all love it and nobody cares about how this is achieved. But when a program crash and ALL the software crashes we start to blame on them. we all do. poor coders. So to make Krita 0 Bugs, which is an absolutely amazing goal krita needs support from users and fans.
They will make a lot of work for us!

That is what this campaign is about. To give a solid as rock behavior to Krita. And not only that, but rewards as this pack "Digital Atelier".
A "solid as rock" Software can be very appealing for new users or companies. And if Krita looks great, more features will be added in future. So your little money has an invaluable value in future, you see?

If you like Krita this is going to be very interesting for you. I could tell you a lot about the project, but i am thinking to do it in a different way. maybe streaming in future? if people is interested we could do it.

Y ahora en español ;)
Wow mucho tiempo sin publicar! playa, verano, daikiris ... No, ¡algo aún más bueno!

Hola, finalmente ya  llegó, Ha comenzado una nueva campaña de recaudación de fondos de Krita y mi nuevo paquete de recursos "Atelier Digital" estará disponible para los que apoyan con más de 50 €: \o/
Puedes consultar la noticia aquí: https://krita.org/en/item/introducing-digital-atelier-a-painterly-brush-preset-pack-by-ramon-miranda-with-tutorial-videos/

La campaña y más información: https://krita.org/es/fundraising-2018-campaign-es/

Este trabajo ha sido patrocinado por el equipo de Krita y hecho con una idea en mi mente. "Mantenlo simple, mantenlo versátil". Lo que más me gusta es que "no es solo un paquete de recursos sino también un paquete de capacitación".

¿Por qué esta campaña es tan importante?
 Estamos en un momento muy emocionante para Krita. Es muy estable pero todavía tiene errores. ¡Muchos de ellos! Como el código es como el arte, debes pulirlo cuidadosamente si quieres tener un código limpio y perfecto. Y eso lleva tiempo. Un montón de tiempo mirando la pantalla con archivos python y c frente a ti. Eso es lo que llamamos Etapa de depuración.

¿Por qué apoyaría una campaña sin características prometedoras?
Cuando el software funciona sin problemas, a todos nos encanta y a nadie le importa cómo se logra esto. Pero cuando un programa falla y TODO el software falla, comenzamos a culparlos. todos lo hacemos. codificadores pobres. Entonces para hacer Krita 0 Bugs, que es un objetivo absolutamente increíble, Krita necesita el apoyo de los usuarios y fanáticos.

¡Nos harán mucho trabajo!
De eso se trata esta campaña. Para darle un comportamiento sólido como roca a Krita. Y no solo eso, sino recompensas como este paquete "Digital Atelier".

Un software "sólido como roca" puede ser muy atractivo para los nuevos usuarios o compañías. Y si Krita se ve genial, se agregarán más características en el futuro. Entonces, tu pequeño dinero tiene un valor inestimable en el futuro, ¿lo ves?

Si te gusta Krita, esto va a ser muy interesante para ti. Podría contarte mucho sobre el proyecto, pero estoy pensando en hacerlo de una manera diferente. tal vez transmisión? si la gente está interesada, podríamos hacerlo.









Sábado 01 de septiembre de 2018

Liher Sanchez

Liher Sanchez
El blog de Liher

La web de la biblioteca y su dominio

Llevaba bastante tiempo queriendo retomar este blog, lo tenía bastante abandonado y la razón principal era mi forma de tomarme las cosas y y mi manera de pensar. Hace unos días me puse a revisar todo un poco ya que hacía mucho tiempo que no entraba. Después de ponerlo todo al día estuve pensando como intentar enfocar las cosas para poder volver a escribir. En este anterior artículo os comentaba que tenía muchas cosas que quería hacer y que no poder dedicar el tiempo necesario a todo me bloqueaba. Entonces tomé la decisión de tomármelo con mas calma e ir paso a paso con las cosas marcándome objetivos alcanzables a corto plazo para no perder la ilusión y las ganas.

Una de las primeras cosas que hice es que mi VPS soportara cifrado SSL para poner los dominios de las webs que tengo alojadas en el con el HTTPS. Recientemente Google ha sacado una actualización de su navegador web, el Google Chrome, en la cual calificaba a todas las webs que no tuviesen SSL como webs no seguras, lo cual es una puñeta para los que no lo teníamos.

 

 

Pues bien, ese tema ya está hecho. Esta web ya esta considerada una web segura por parte de Google. Gracias a esto podréis navegar mas seguros por ella. Ademas eso mejorará el SEO de la web y así podré llegar a mas personas con mis artículos.

Hecho ya el tema del SSL en el VPS y en los dominios que tengo en el, lo siguiente era crear la web de la biblioteca. Hace ya tiempo que cree una con un programa llamado Mollify pero, lamentablemente, el programa fue abandonado por sus creadores y la biblioteca dejó de funcionar.

 

 

El Mollify era como un administrador de archivos que permitía moverse por la jerarquía de directorios que tu quisieses crear y también permitía subir y bajar archivos. Todas estas opciones eran configurables y de una forma bastante sencilla. Esta era una solución temporal mientras que diseñaba la web para que pudieseis descargaros los libros y manuales pero al final quedó en el olvido. Durante un tiempo estuvo funcionado hasta que el Mollify dejo de ser un proyecto activo y fue eliminado de Internet.

Me he puesto a la tarea y estoy haciendo un diseño de una web nueva. La estoy haciendo con WordPress y un plugin para modificar plantillas. La verdad es que es muy fácil de usar y permite hacer cosas que de otra forma implicaría tocar mucho código. El plugin que uso para la biblioteca es el Page Builder de Site Origin. Con este plugin todo es mucho mas fácil y rápido y es un proyecto que lleva mucho tiempo activo y es muy usado, lo cual inspira bastante confianza, por eso lo he elegido.

Un aspecto a tener en cuenta también era si contratar o no un dominio para la web de la biblioteca. De momento y para ver si consigo el diseño y las funcionalidades que quiero tener en la web de la biblioteca estoy centrado en diseñar todas las subpáginas de la web y subir algo de contenido. Una vez que consiga esto lo mas seguro es que compre un dominio web para ella. Digamos que, por ahora, lo que estoy haciendo es una plantilla de la página principal y otra plantilla para las demás páginas de la web ya que todas serán iguales en estructura, lo único que cambiará de la página de descarga de manuales de Ubuntu a la página de descarga de manuales de Seguridad es el contenido y los archivos a descargar, el tema del diseño será igual. Una vez que vea que todo vaya bien y sea funcional solo tendré que ir subiendo los archivos para que los tengáis disponibles.

Aquí os dejo un enlace a la página principal para que veáis como va, por ahora, el diseño de la web:

 

 

Esto es lo que podréis ver cuando entréis a la biblioteca. Hay un listado con las distintas categorías disponibles. En cada categoría hay un botón que os dirigirá a otra subpágina en la cual podréis ver un listado con los archivos disponibles para descargar y allí podréis descargarlos. En el sidebar o barra lateral colocaré todo lo relacionado con las redes sociales para que podáis seguirme y compartir el contenido. Por lo demás todavía no se muy bien lo que voy a poner en esa barra lateral, acepto sugerencias.

Se que el diseño es muy sencillo pero no quiero complicarme mas la vida, mi prioridad es que funcione lo antes posible. Por supuesto que todos los archivos que pondré disponibles para descargar estarán comprimidos para que las descargas sean mas rápidas y repercutan lo menos posible en el VPS.

Otra cosa en la que estoy trabajando es en el menú, no se que poner en el ya que incluir todas las categorías en el menú creo que haría que fuese muy engorroso de usar. Por ahora solo hay unas 5 categorías, pero va a haber muchísimas mas. Respecto a este tema quiero decir algo antes de que pueda aparecer algún “simpaticote” 🙂 , en la anterior imagen de la página principal la primera categoría es “GNU/Linux” y la segunda es “Ubuntu” y esto tiene una razón de ser. Habrá muchos libros o manuales que se podrán usar en cualquier distro GNU/Linux y también habrá manuales que sean de una distribución en concreto, de ahí esas categorías. Es mas, iré poniendo categorías que serán de distribuciones en concreto e incluso de entornos de escritorio.

Se me olvidaba, casi no os pongo el enlace de la biblioteca para que lo podáis visitar y así podáis hacerme sugerencias, el enlace es:

Espero que os guste y que me ayudéis a llevarla a buen puerto. También os quiero decir que si alguno de vosotros tiene material que pueda poner en la web para descargar lo aceptaré encantado. Un saludo.

Viernes 31 de agosto de 2018

Liher Sanchez

Liher Sanchez
El blog de Liher

Problema al intentar abrir un archivo de texto plano en Ubuntu

En varias ocasiones me he encontrado con una situación un poco molesta cuando intentaba abrir un archivo de texto plano en el cual había escrito algún comando. Mas concretamente me pasaba cuando iniciaba una instalación limpia de Ubuntu o derivadas ya que los comandos necesarios que usaba después de la instalación del sistema operativo para ponerlo a punto los guardo en un archivo de texto plano para, posteriormente, ir copiando y pegando en la Terminal lo que necesitaba. Mas concretamente el problema es que al intentar abrir un archivo de texto plano con dichos comandos lo que yo quería es que se me abriese el editor de textos y, en su lugar, aparecía un mensaje mostrándome varias opciones, las cuales os comentaré mas abajo. He probado el procedimiento en Ubuntu 16.04, Ubuntu 18.04 y Linux Mint 19.

Os voy a explicar mejor lo que quiero decir. Al intentar abrir un archivo de texto plano que contiene comandos te puedes encontrar con que os salga una ventana en la cual tenéis 4 opciones a realizar. Dicha ventana la poder ver en la siguiente imagen:

 

Ventana al abrir un archivo de texto plano en ubuntu

 

Como podéis ver hay 4 opciones disponibles a realizar con el archivo. La primera es “Ejecutar en un terminal”, después “Visualizar”, “Cancelar” y “Ejecutar”. El tema es que cuando abría dicho archivo lo que yo quería es que se abriese en el editor de textos para ver su contenido y copiar o cortar algunas partir para pegarlas en la Terminal de mi Ubuntu. Me parece bastante molesto tener que estar siempre pulsando en “Visualizar” para poder ver el contenido. Vamos a ver como solucionar esto de dos formas. La primera que os voy a explicar seria una solución para un archivo en concreto y la otra opción seria para todos los archivos de texto plano que tengamos.

Si hacéis click con el botón derecho sobre el archivo con el que os pasa esto os aparecerá un menú en el cual hay una opción al final llamada “Propiedades”. Pulsáis sobre ella y os aparcerá una ventana en la cual podéis ver información sobre el archivo. La ventana en cuestión es esta:

 

ventana de propiedades de archivo en ubuntu

 

Hay que pulsar en la pestaña “Permisos” que se ve en la parte superior para ver esta sección. En la imagen, la penúltima linea, hay una opción que es “Permitir ejecutar el archivo como un programa”, en mi caso esta marcada, como podéis ver en la imagen. Esto permite que Ubuntu pueda ejecutar este archivo como si de un programa se tratara. Si desmarcamos dicha opción el mensaje con las 4 opciones que os he comentado al principio del articulo no os aparecerá mas cuando queráis abrir este archivo.

Pero, ¿si tenemos mas archivos como este? Pues con este método abría que ir uno por uno y repetir el proceso. Ahora es cuando vamos a ver como hacer para que todos los archivos de texto plano se visualicen directamente en Ubuntu. Lo primero que vamos a hacer es abrir el administrador de archivos que usemos, en mi caso tengo Linux Mint 19. En Ubuntu es Nautilus y el procedimiento es igual. Una vez abierto el administrador de archivos, en la barra de menú hacemos click en “Editar” y buscamos la opción “Preferencias” que podeis ver resaltada en la siguiente imagen:

 

 

menu preferencias ubuntu

 

Al hacer click en “Preferencias” os aparecerá una ventana con varias pestañas, tenéis que hacer click en la segunda opción llamada “Comportamiento”, esta en la parte superior. Al hacerlo veréis las opciones como en la siguiente imagen.

 

preferencias administradorarchivos de ubuntu

 

Ahora os tenéis que fijar donde apunta la flecha roja de la imagen. En la sección “Archivos de texto ejecutables” hay 3 opciones. Cuando aparece el mensaje con las 4 opciones que os indicaba al principio es que está marcada la opción que veis en la imagen “Preguntar cada vez”. Lo único que hay que hacer es marcar la segunda opción “Ver los archivos de texto ejecutables al abrirlos” y de esta manera no os volverá a salir el mensaje con las cuatro opciones si no que se abrirá con el editor de texto que uséis. Y ya está.

Ahora todos los archivos de texto plano sobre los que hagáis doble click con el ratón se abrirán con vuestro editor de texto predeterminado. Como ya he dicho al principio este procedimiento lo he probado en Ubuntu 16.04, Ubuntu 18.04 y Linux Mint Cinnamon 19 y funciona sin problemas.

Un saludo.

Lunes 27 de agosto de 2018

Ubuntizando.com

Ubuntizando.com
Ubuntizando.com

Cómo correr Windows 95 en tu Linux como una aplicación más

Hace la friolera de 23 se presentaba al mercado Windows 95, el producto estrella de Microsoft, destinado a revolucionar nuestros escritorios. Los que lo recordamos sabemos que aquello era una “castaña” de la buena que no resolvió sus principales problemas hasta varias revisiones después. Pero en aquel entonces era lo que había y todo el mundo hablaba de Windows 95, la multitarea y la multimedia como si no existiera mañana. Solo aquellos poseedores de un Amiga o quienes podían permitirse correr un Unix en casa o ya puestos un IBM OS/2 podían ver aquello por encima del hombro, el resto de los mortales teníamos que sufrir aquello.

La campaña publicitaria de Microsoft fue brutal llegando a comprar los derechos de Start Me Up de los Rolling Stones para su campaña principal. La multitarea había llegado y Microsoft quería dejar claro que ellos iban a ser la única referencia posible. Vale, me olvido de Apple y sus Macintosh pero esa es otra historia.

Volviendo al tema que motiva esta entrada, el desarrollador Felix Rieseberg acaba de lanzar la versión 1.0 de Windows 95 en modo aplicación bajo Linux. De este modo podemos instalar y correr Windows 95 en Linux como una aplicación más. Hoy por hoy no deja de ser una curiosidad más pero bien vale la pena descargar los 130 MB que ocupa y recordar como era trabajar con PAINT, WordPad o navegar usando un Internet Explorer de 1995.

Si tienes Debian, Ubuntu o cualquier otra distribución derivada debemos seguir los siguientes pasos abriendo el terminal:

  1. wget https://github.com/felixrieseberg/windows95/releases/download/v1.2.0/windows95-linux_1.2.0_amd64.deb
  2. sudo dpkg -i windows95-linux_1.2.0_amd64.deb
  3. sudo apt install -f

Si todo ha ido correctamente ya podemos volver a usar Windows 95 y recordar los horrores por los que nos hizo pasar. Recuerda, en 1995 era el futuro o eso creíamos, afortunadamente.

 

Domingo 26 de agosto de 2018

Xavier Genestos

Xavier Genestos
SYSADMIT

Linux: Cambiar fecha de un archivo

En ocasiones nos podemos encontrar con la necesidad de tener que cambiar la fecha de modificación, etc... de un archivo en sistemas Linux. Antes de empezar, hemos de entender que existen 3 tipos de marcas de tiempo en los ficheros. Fijémonos en este ejemplo: Con el comando stat, al indicar como parámetro un fichero, vemos que aparece: Access: Se actualiza cuando abrimos el
Xavier Genestos

Xavier Genestos
SYSADMIT

Linux: Ver últimos archivos modificados

En ocasiones nos puede interesar obtener un listado de los últimos ficheros modificados en un sistema Linux. Para obtener este listado, utilizaremos el comando find. En este post, vimos algunos ejemplos de uso del comando find: Linux: Buscar ficheros, directorios con find (SYSADMIT.com) por otro lado, también vimos en otro post, cómo cambiar la fecha de un archivo: Linux:

Viernes 17 de agosto de 2018

Bruno Exposito

Bruno Exposito
Puro Linux

Cambiar grupo de un fichero o directorio – Comando CHGRP

El comando chgrp sirve para modificar el grupo (group) de un fichero o directorio. Está instalado en todas las distribuciones GNU/Linux, dentro del paquete coreutils.

Puedes consultar los grupos usando el comando:

cat /etc/group | cut -d ‘:’ -f1/

Sintaxis de chgrp

sudo chgrp {{opciones}} {{grupo}} {{fichero_o_carpeta}}

La sintaxis de chgrp es sencilla, tras el comando chgrp se escriben los modificaciones (opcionales), a continuación el nombre del grupo y para finalizar el nombre del fichero o carpeta.

Opciones de chgrp

-c, –changes Igual que la opción “verbose” pero solo si hay cambios
-f, –silent, –quiet Omite la mayoría de los mensajes de error
-v, –verbose Muestra el resultado de cada fichero procesado
–dereference Afecta a la referencia del enlace simbólico, en lugar del enlace simbólico en si (opción por defecto).
-h, –no-dereference Afecta al enlace simbólico, en lugar de la referencia a la que apunta.
–no-preserve-root No trata “/” de manera espacil (por defecto)
–preserve-root Falla al intentar operar recursivamente sobre “/”
–reference=RFILE use RFILE’s group rather than specifying a GROUP value
-R, –recursive Se ejecuta sobre ficheros y directorios recursivamente
-H Si es un enlace simbólico a un directorio, entra en el
-L Atraviesa todos los enlaces simbólicos a directorios que encuentre
-P No atravesar enlaces simbólicos (por defecto)
–help Muestra la ayuda
–version Muestra la versión y licencia

Cambiar el grupo de un fichero

sudo chgrp {{grupo}} {{fichero}}

sudo chgrp comerciales ventas.odt

*El fichero ventas pertenece ahora el grupo comerciales

Cambiar el grupo recursivamente

sudo chgrp -R {{grupo}} {{carpeta}}

sudo chgrp -R soporte /mnt/shared/software

*Todo el contenido de la carpeta /mnt/shared/software pertece ahora al grupo soporte

Cambiar el grupo a un fichero

sudo chgrp sistemas foto.jpg

*Estando dentro de la carpeta donde se encuentra el fichero “foto.jpg“, cambia el grupo a sistemas.

sudo chgrp comerciales /home/paco/documento.odt

*Independientemente del directorio actual, cambia el dueño de “documento.odt” a comerciales.

sudo chgrp admins “/home/juan/Música/Barón Rojo – Tierra de nadie.ogg”

*Independientemente del directorio actual, cambia el dueño del audio (que contiene espacios en el nombre) a admins.

 

sudo chgrp consultores /home/juan/Documentos -Rv

 *Cambia el grupo de la carpeta y todo su contenido de forma recursiva (-R), mostrando los detalles de cada fichero procesado (-v)

sudo chgrp -RHc grupo carpeta/

 *Cambia el grupo recursivamente atravesando enlaces a carpetas y mostrando los cambios.

sudo find . -name “*.txt” -exec sh -c ‘chgrp -v aula3 “$0″‘ {} \;

*Busca todos los ficheros con extensión txt y les cambia el grupo a “aula3” mostrando los detalles de cada operación realizada

Jueves 09 de agosto de 2018

Gorka Urrutia

Gorka Urrutia
Nideaderedes

Actualización de seguridad Laravel 5.6.30

Ayer se publicó una actualización de seguridad para Laravel. Es una vulnerabilidad relacionada con la APP_KEY. Esta variable es un valor que se usa para encriptar algunos valores como las sesiones de usuarios.

¿Es grave? Sí, pero solo debes preocuparte si alguien se ha hecho con esta APP_KEY. Eso solo puede hacerlo alguien con acceso al servidor (por ejemplo algún antiguo proveedor o un empleado resentido).

Si crees que no es el caso no deberías preocuparte aunque siempre es preferible actualizar.

La APP_KEY se usa para cifrar las sesiones de usuario, no para las contraseñas. Así que si la cambias las contraseñas no se verán afectadas pero sí las sesiones de usuario (cosa que, bueno, no es tan grave).

Laravel - el framework de los artesanos

Laravel – el framework de los artesanos

Sábado 04 de agosto de 2018

BlogDRAKE: Disponible TuningDrake 2.2.0

Sábado 28 de julio de 2018

BlogDRAKE: Mejorar la carga de youtube en firefox

Miércoles 18 de julio de 2018

Gorka Urrutia

Gorka Urrutia
Nideaderedes

Cómo indicarle al git la llave ssh que debe usar

Si tienes tantas llaves ssh como yo seguro que tarde o temprano tendrás problemas porque en algún sitio se quejará de “too many retries”. Si eso te pasa en git hay una forma de indicar cuál es la llave que quieres usar al conectarte vía ssh.

En mi caso yo tenía problemas al conectarme a BitBucket. Así que para solucionarlo hay que editar el fichero de configuración SSH de tu ordenador. En mi caso:

/home/gorka/.ssh/config

y añadir:

host bitbucket.org
    HostName bitbucket.org
    IdentityFile ~/.ssh/llave_publica_para_conectarme_a_bitbucket.pub
    User gorka

En tu caso deberás cambiar “gorka” por tu usuario en BitBucket y ~/.ssh/llave_publica_para_conectarme_a_bitbucket.pub por la ruta de tu llave pública (la que uses para conectarte a BitBucket).

Si el problema lo tuvieses con GitHub harías:

host github.com
    HostName github.com
    IdentityFile ~/.ssh/llave_publica_para_conectarme_a_github.pub
    User git

Martes 17 de julio de 2018

Computación cuántica para torpes: introducción para programadores

Hace ya bastante tiempo quese viene hablando de ordenadores cuánticos. ¿Qué son? ¿En qué se diferencian de los ordenadores clásicos? ¿Son de verdad tan potente como dicen?

En este largo artículo, ideal para el verano, vamos a ver los principios fundamentales de los ordenadores cuánticos más allá de lo que la típica revista o web te podría contar. Veremos qué es un qubit y algunas puertas lógicas interesantes, así como su aplicación.

Los ordenadores cuánticos actuales requieren temperaturas de funcionamiento cercanas al cero absoluto

Notación de Dirac

Lo primero antes de entrar en materia cuántica, será adaptar nuestra notación clásica, a otra más potente. Esta notación que vamos a ver, llamada notación de Dirac o Bra-ket, nos será muy útil ya que los bits clásicos no son más que un caso concreto de qubit en esta notación.

En esta notación tenemos que representar los bits como matrices. Un conjunto de N bits se representa con una matriz de 1 columna y \(2^N\) filas. En todas las posiciones existen ceros salvo para la posición que representa la combinación que representa. Veamos algunos ejemplos sencillos:

Un bit con valor 0 se representa así

\(
| 0 \rangle = \begin{pmatrix}
1\\
0
\end{pmatrix}\)

Un bit con valor 1 se representa así:

\(
| 1 \rangle = \begin{pmatrix}
0\\
1
\end{pmatrix}\)

Aquí contamos como en informática, empezando desde cero. Como ves la posición 0 del vector solo es 1 cuando representa el bit 0. Si la posición que tiene el 1 es la segunda, representa el bit 1.

La parte que va a la izquierda del igual se llama ket. En este caso hemos representado ket 0 y ket 1.

Si tenemos más bits se puede hacer de la misma forma. Vamos a representtar ket 10. 10 en binario es 2, así que estará en la posición tercera.

\(
| 10 \rangle = \begin{pmatrix}
0\\
0\\
1\\
0
\end{pmatrix}\)

Puertas lógicas como producto de matrices

¿Recuerdas el producto de matrices de tus clases de álgebra? Resulta que todas las puertas lógicas clásicas pueden representarse como producto de matrices. Por ejemplo, la puerta lógica NOT se puede implementar con esta matriz:

\(
\begin{pmatrix}
0 & 1 \\
1 & 0 \\
\end{pmatrix}
\)

Y aquí la vemos en acción

\(
\begin{pmatrix}
0 & 1 \\
1 & 0 \\
\end{pmatrix}\begin{pmatrix}
1 \\
0
\end{pmatrix}
=
\begin{pmatrix}
0 \\
1
\end{pmatrix}
\)

También podría hacerse con la puerta AND que toma como entrada dos bits.

\(
\begin{pmatrix}
1 & 1 & 1 & 0 \\
0 & 0 & 0 & 1
\end{pmatrix}
\begin{pmatrix}
0 \\
0 \\
0 \\
1
\end{pmatrix}
=
\begin{pmatrix}
0 \\
1
\end{pmatrix}
\)

Un teclado con puertas cuánticas

Juntando bits

Para formar bits más grandes ya sabemos que tenemos que tener una matriz tan grande como combinaciones haya (\(2^N\) posiciones, N bits). Existe una forma de calcular automáticamente la posición que hay que marcar y es hacer el producto tensorial. Si no sabes calcularlo no importa mucho, porque apenas lo vamos a usar, pero puedes ver un ejemplo de como funciona. En este ejemplo, queremos juntar los bits 1 y 1 (3 en decimal).

\(
\begin{pmatrix}
0 \\
1
\end{pmatrix}
\otimes
\begin{pmatrix}
0 \\
1
\end{pmatrix}
=
\begin{pmatrix}
0 \\
0 \\
0 \\
1
\end{pmatrix}
\)

Qubits

Hasta ahora no hemos visto nada realmente nuevo, solo hemos preparado el terreno para dejar paso a los qubits. Personalmente desconocía que podían usarse matrices para operar con bits y aunque no es tan práctico como otros sistemas, lo cierto es que es muy explícito y elegante.

Los qubits son bits como los que hemos visto antes pero tienen un estado indeterminado. No es que tengan un valor de forma secreta y no sepamos cuál es. Podríamos decir que son los dos valores clásicos a la vez, como el gato de Schrodinger. Cuando realizamos una observación sobre el qubit, este colapsa y podemos ver uno de los dos estados. ¿Cuál vemos? No podemos saberlo a priori, pero hay probabilidades. Los bits clásicos no son más que qubits cuyas probabilidades de colapsar a 0 o 1 es del 100%, por tanto no hay duda y su valor sí que está determinado.

¿Cómo representamos los qubits y sus estados cuánticos? Con números complejos. Si recuerdas, estos eran los que tenían una parte real y una imaginaria. No obstante, voy a tomar solo los números reales para simplificar. Los números reales son números complejos válidos, pero los complejos son mucho más extensos.

La esfera de Bloch permite representar todos los estados cuánticos (números complejos)

Para calcular la probabilidad que tiene un estado cuántico de colapsar a un valor, hacemos el módulo y elevamos al cuadrado: \(|a|^2\).

Todo qubit además debe cumplir una propiedad fundamental:

\(
\begin{pmatrix}
a \\
b
\end{pmatrix}
\text{ es un qubit}
\Leftrightarrow
|a|^2 + |b|^2 = 1
\)

Y es que la probabilidad de ser 0 y de ser 1 sumadas deben equivaler al suceso seguro, es decir, 1. 100% de probabilidades de que de 0 o 1.

Con esto ya podemos definir algunos qubits.

\(
\begin{pmatrix}
\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}}
\end{pmatrix}
\)

Este es mi qubit preferido. Representa el estado de superposición cuántica. Cada valor tiene el 50% de probabilidades de salir. \(|\frac{1}{\sqrt{2}}|^2 = \frac{1}{2}\). Cuando colapsemos el qubit al observarlo será como lanzar una moneda al aire.

Otro detalle que a veces se nos pasa por alto es que los qubits pueden contener valores negativos. Estos qubits son físicamente diferentes a los positivos, pero tienen las mismas probabilidades de colapsar en los mismos valores que los positivos.

\(
\begin{pmatrix}
-1 \\
0
\end{pmatrix}
\)

Es un qubit válido, que colapsa con 100% de probilidad a 0.

¿Cómo se representan los qubits en notación de Dirac? Representando la probabilidad que tiene cada combinación de bits de aparecer. Para un qubit sería algo así:

\(
\alpha | 0 \rangle + \beta | 1 \rangle
\)

Siendo \(\alpha\) y \(\beta\) las probabilidades de colapsar a cada estado.

Puertas cuánticas

Ahora vamos a ver cuáles son las puertas lógicas más importantes del mundo cuántico.

Negación (Pauli X)

Esta es exactamente igual que en el mundo clásico, con la misma matriz que hemos visto antes. Su símbolo es el cuadrado con una X.

Aquí vemos una imagen del simulador IBM Q usando la puerta X cuántica. IBM nos deja ejecutarlo en ordenadores cuánticos reales. Veamos los resultados.

¡Terrible! La mayoría de casos, el ordenador cuántico responde 1, el valor correcto, pero un 13% de los casos no. Teóricamente había una probabilidad del 100% y en la práctica solo es del 86.3%. ¡Y solo es una puerta X! Es por ello que los procesadores cuánticos todavía necesitan mejorar mucho. Google, Microsoft e IBM están investigando de forma independiente en ordenadores cuánticos. Veremos quién consigue tener antes ordenadores cuánticos precisos (aunque hay expertos que piensan que nunca se podrá lograr).

CNOT

Esta puerta es muy interesante. Toma dos qubits, uno de control, que permanece invariable al traspasar la puerta y otro de datos. Al qubit de datos se le aplica la puerta X si el qubit de control está activo. Su matriz es la siguiente:

\(
CNOT = \begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 0 & 1 \\
0 & 0 & 1 & 0
\end{pmatrix}
\)

Se reprensenta de esta forma:

O similar, porque los símbolos de computación cuántica no están todavía muy estandarizados. El punto grande es el qubit de control y el punto pequeño está sobre el qubit de datos.

HADAMARD

Esta puerta es quizá la más famosa del mundo cuántico. Veamos su matriz:

\(
\begin{pmatrix}
\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}}
\end{pmatrix}
\)

Esta puerta permite poner un qubit clásico en estado de superposición cuántica. Y también deshacerlo. Es muy usada en algoritmos cuánticos. Se representa con un cuadrado y una H.

Los resultados en el ordenador cuántico real de IBM Q son:

Cuando debería de ser bastante más cercano a 50% en los dos valores.

Con esto ya tenemos las puertas más usadas. Básicamente con Hadamard, X y CNOT se pueden implementar casi todos los circuitos cuánticos. Solo nos faltarían las puertas que operan entran en números complejos para poder implementar todos los circuitos.

Algoritmo de Deutsch-Jozsa

El algoritmo de Deutsch-Jozsa es uno de los algoritmos cuánticos más sencillos de entender y que mejoran drásticamente el rendimiento respecto a un algoritmo clásico.

El planteamiento básico es que tenemos una caja negra que aplica una función sobre un bit. Estas funciones pueden ser: set-to-0, set-to-1 (ambas constantes), identidad (no cambiar nada) y X (ambas dinámicas) . Si queremos saber que función contiene la caja negra, ¿Cuántas veces tenemos que pasar valores? En una CPU clásica tendríamos que hacerlo dos veces para poder determinar que función contiene la caja negra. En una CPU cuántica… también. No hay diferencia. Pero, si cambiamos la pregunta a ¿de qué categoría es la función de la caja negra?, la cosa cambia. En una CPU clásica seguiríamos necesitando 2 pruebas, pero en una CPU cuántica y con un circuito por el exterior, podemos aprovechar la superposición cuántica para realizar una sola prueba y determinar si en el interior hay una función constante o dinámica.

Vamos a ver estas 4 funciones de la caja negra como son:

¿Se te ocurre como puedes crear un circuito fuera de la caja negra que con una sola prueba, ya sepa si estamos ante las funciones Set-0, Set-1 o Identidad, Negación?

El circuito es el siguiente:

Tal y como está diseñado si en q[1] medimos 0, la función es de tipo constante y si medimos 1, es de tipo dinámica. Un desarrollo matemático de los productos de matrices, como el que hay en Wikipedia, te mostrará como siempre es cierto. Este también es un ejemplo de como los ordenadores cuánticos pueden dar resultados totalmente deterministas.

Esta idea, se puede generalizar y extrapolar a otros problemas, generando una colección muy interesante de algoritmos que se ejecutan en tiempo exponencialmente menor que en una CPU clásica.

Algoritmos de Shor y de Grover

Estos dos algoritmos han sido llamados los killer apps de la computación cuántica, ya que son algoritmos que mejoran sustancialmente (uno de forma exponencial, otro de forma cuadrática) los tiempos de problemas reales.

El algoritmo de Shor fue el primero en ser descubierto, en 1994 por Peter Shor. Sirve para factorizar números (es decir, sacar los números primos que multiplicados generan el número original). Lo puede hacer en \(O((\log{n})^3)\). De este modo, los algoritmos tipo RSA que se basan en la factorización de números podrían romperse en tiempo polinómico, por lo cuál RSA ya no serviría como protección. El algoritmo de Shor no da siempre los resultados correctos, pero tiene una probabilidad de éxito superior a la de fracaso, por lo que con repetir múltiples veces la ejecución podríamos estar casi seguros del resultado.

El algoritmo de Grover fue descubierto en 1996 por Lov Grover y permite buscar en una lista no ordenada de datos en \(O(\sqrt{n})\) mientras que en una computadora clásica sería \(O(n)\).

Estos dos algoritmos sin duda marcan lo que se ha llamada la supremacía cuántica y que ocurrirá cuando los ordenadores cuánticos puedan ejecutar con suficiente precisión estos algoritmos y su utilidad en el mundo real supere a la de los algoritmos clásicos.

Entrelazamiento cuántico

Ya hemos visto las bases de los circuitos cuánticos. Ahora veamos algunas consecuencias de todo lo anterior. Cosas cuánticas que parecen hasta cierto punto fuera de la lógica. ¿Qué ocurre si tenemos varios qubits en un estado como este?

\(
\begin{pmatrix}
\frac{1}{\sqrt{2}} \\
0 \\
0 \\
\frac{1}{\sqrt{2}}
\end{pmatrix}
\)

En este estado solo puede colapsar a 00 o a 11. ¿Esto qué significa? Significa que los qubits están entrelazados entre sí, uno depende de otro, si los separamos y uno colapsa a 0, el otro colapsa a 0. Si uno colapsa a 1, el otro colapsa a 1.

Es importante destacar que los qubits pueden separarse en este estados. Los qubits alejados a millones de kilómetros siguen entrelazados y el valor al que deciden colapsar se decide de forma instantánea. Esto quiere decir que se sincronizan a una velocidad superior a la de la luz. El truco es que no se transmite información, por eso el universo lo permite, pero esto permite realizar la teletransportación cuántica.

La forma de entrelazar qubits es muy sencilla, con una puerta Hadamard y una CNOT.

IBM Q todavía tiene que mejorar, pero se aprecia claramente el entrelazamiento cuántico.

Teletransportación cuántica

La teletransportación existe, al menos entre qubits. Y es instantánea (más o menos). La teletransportación cuántica la podemos provocar usando varios qubits entrelazados. Necesitamos 3 qubits. El qubit que va a ser teletransportado, un qubit del emisor y un qubit del receptor. La idea es entrelazar el emisor con el receptor (qubit de destino) y posteriormente el qubit del emisor con el qubit que va a ser transportado.

No he sido capaz de hacer que IBM Q haga una teletransportación, así que aquí viene un esquema distinto. T es el qubit a transportar, A es el emisor y B el receptor. En este ejemplo se usa la puerta Pauli Z, cuya matriz es la indicada.

El truco de la teletransportación instantánea tiene que ver con que A y B tienen que estar entrelazados, por tanto, han tenido que ser transportados a sus respectivos lugares anteriormente a velocidad inferior a la luz.

Esto teletransporta qubits pero no hace copias. Esto es debido al Teorema de No Clonación.

Lenguajes de programación

Mientras esperamos a que los ordenadores cuánticos sean lo suficientemente estables, ya existen lenguajes de programación que podemos usar en simuladores. Quizá el más conocido sea Q# de Microsoft (funciona en Linux, tranquilos), que guarda similitudes con C#. Otro bastante usado es OpenQasm de IBM, algo más parecido a ensamblador.

namespace Quantum.Bell
{
    open Microsoft.Quantum.Primitive;
    open Microsoft.Quantum.Canon;

    operation Set (desired: Result, q1: Qubit) : ()
    {
        body
        {
            let current = M(q1);
            if (desired != current)
            {
                X(q1);
            }
        }
    }
    operation BellTest (count : Int, initial: Result) : (Int,Int,Int)
    {
        body
        {
            mutable numOnes = 0;
            mutable agree = 0;
            using (qubits = Qubit[0])
            {
                for (test in 1..count)
                {
                    Set (initial, qubits[0]);
                    Set (Zero, qubits[1]);

                    H(qubits[0]);
                    CNOT(qubits[0],qubits[1]);
                    let res = M (qubits[0]);

                    if (M (qubits[1]) == res) 
                    {
                        set agree = agree + 1;
                    }

                    // Count the number of ones we saw:
                    if (res == One)
                    {
                        set numOnes = numOnes + 1;
                    }
                }

                Set(Zero, qubits[0]);
            }
            // Return number of times we saw a |0> and number of times we saw a |1>
            return (count-numOnes, numOnes, agree);
        }
    }
}

Este es un ejemplo de lanzar la moneda con entrelazamiento cuántico en Q#, el lenguaje cuántico de Microsoft.

Referencias

Quantum Computing for Computer Scientists
Cats, Qubits, and Teleportation: The Spooky World of Quantum Algorithms
Microsoft Quantum Development Kit: Introduction and step-by-step demo
Qubit

La entrada Computación cuántica para torpes: introducción para programadores se publicó primero en Adrianistán.

Domingo 15 de julio de 2018

Gorka Urrutia

Gorka Urrutia
Nideaderedes

Mi Libro de programación en C ahora es gratuito

A partir de hoy, 16 de Julio de 2018, mi libro de programación en C para principiantes estará disponible de manera gratuita. Hace ya tiempo que lo escribí y considero que ya he ganado lo suficiente con él. Así que he decidido regalarlo.

Por ahora estará disponible gratuitamente en Amazon. Como Amazon no me deja ponerlo a precio cero hasta septiembre lo voy a deshabilitar y crearé uno nuevo esta vez gratuito y sin drm (esa cosa que no te deja copiarlo ni nada).

Ahora voy a maquetarlo de nuevo en formato PDF y, posiblemente en epub o algo así. Cuando termine lo pondré disponible gratuitamente para descarga en el Rincón del C.

Si quieres me puedes echar una mano maquetando el libro. Voy a ir poniendo el código fuente del libro disponible en GitHub para que todo el mundo pueda colaborar.

Si lo ves a la venta en algún sitio avísame, que se trata de un timo.

Jueves 05 de julio de 2018

Mayúsculas iniciales en WordPress

Ciertamente si tenemos un sitio propio, con dominio propio y acceso como administrador a sus «entrañas» podremos crear nuestros propios estilos CSS y con ellos construir cualquier formato que queramos en nuestras páginas. Pero eso solo si «tenemos el poder» (y queremos utilizarlo). Ahora bien, esto no quiere decir que no podamos hacer «cosas extrañas» … Sigue leyendo Mayúsculas iniciales en WordPress

Miércoles 04 de julio de 2018

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Píldora: Utilizar arrays con nombre dinámico en Bash

Arrays con nombre dinámico en Bash

Una de las grandes ventajas de los lenguajes interpretados es que podemos almacenar en una variable el nombre de otra variable y trabajar con su valor. ¿Punteros? Bueno, al final es parecido a la utilización de punteros en C, aunque aquí podemos hacer referencia por el mismo nombre de la variable incluso, previo filtrado y con mucho cuidado, preguntarle al usuario el de la variable para trabajar con ella.

Esto nos puede dar mucha flexibilidad en nuestro código. Por ejemplo, yo lo he utilizado para perfeccionar mi script de lectura de ficheros de configuración al que le podemos pasar también el nombre de la variable donde almacenar la configuración.

Arrays con nombre dinámico

En Bash, acceder a una variable cuyo nombre está contenido dentro de otra variable es sencillo, podemos hacerlo llamando a ${!NOMBREDEVARIABLE}. Podemos ver un ejemplo en el post referenciado.
El problema es que cuando son arrays no es tan inmediato. El objetivo es que, teniendo una variable que contiene el nombre del array podamos acceder a su información de una forma sencilla. Y El problema aquí viene en la versión de Bash que estemos utilizando. En este caso debemos hacerlo de una forma u otra dependiendo de si utilizamos una versión inferior a la 4.3 (más o menos salió en 2014) o si tenemos una versión posterior.

Ejemplo para Bash < 4.3

Lo siento, mira que no me gusta utilizar eval, pero claro, para estas versiones del intérprete necesitamos crear una cadena de caracteres con la llamada que vamos a hacer y luego evaluar dicha cadena de caracteres. Esto nos dará el valor que buscamos. Por ejemplo:

1
2
3
4
5
6
MIARRAY=("cero" "uno" "dos" "tres")
REFERENCIA="MIARRAY"

# Lo que necesitamos es acceder a cada uno de los elementos de MIARRAY a través de REFERENCIA.

eval echo \${$REFERENCIA[2]}

Si os fijáis, al construir la cadena. El primer símbolo de dólar ($) lo escapamos con la barra para que no se interprete. El que sí tiene que interpretar es el segundo, para que $REFERENCIA se transforme en el nombre del array.

Lo podemos hacer con arrays asociativos también sin problema, pero es algo complicado y realizamos demasiadas tareas para hacer referencia a una variable. Además no queda muy elegante o intuitivo tener que escapar un dólar y otro no.

Ejemplo para Bash >= 4.3

Para estas versiones, disponemos de un modificador en la orden declare (también llamada typeset) a través del cual podemos crear una variable de referencia que se comportará exactamente igual que nuestro array:

1
2
3
4
MIARRAY=("cero" "uno" "dos" "tres")
declare -n REFERENCIA="MIARRAY"

echo ${REFERENCIA[2]}

Además, de esta forma, el nombre de la variable puede venir dado en otra variable, con lo que podemos permitir que el usuario especifique el nombre de variable. Eso sí, con mucho cuidado.

Foto principal: unsplash-logoRuben Ortega

The post Píldora: Utilizar arrays con nombre dinámico en Bash appeared first on Poesía Binaria.

Jueves 28 de junio de 2018

“El paciente” a descompilar es un exe de msdos en formato MZ

Posts in this series
  1. Compilar C en m$dos en nuestros tiempos
  2. "El paciente" a descompilar es un exe de msdos en formato MZ

Aunque voy despacio, voy a ir poniendo mis avances, que supongo que es poquito, pero bueno por seguir la Método de depuración del patito de goma o el refrán oriental que dice “El que enseña aprende dos veces.” .

La verdad es que en los primeros palos de ciego y análisis creí que “el paciente” era un ejecutable de tipo COM o algo así, pero ahora volviendo a analizarlo he encontrado el famoso:

MZ

0x4D 0x5A

Eso ayuda un montón porque si queridos mios, los ejecutables también tienen formato y no es estándar, hay muchos muchos estándares (en m$-dos hablamos…en otros sistemas operativos…pues habrá los suyos).

Como dice en el foro de ubuntu: Learning how to disassemble dos binaries

If actual DOS executables disassembly is the thing you are searching for, then search for disassemblers, that can handle the MZ magic [$4D 5A] (the default DOS 16bit header) or elf, coff, xcoff, ecoff, mach and such …

Bueno pues ahora entender la estructura de fichero de el formato DOS MZ .

Si alguno tiene alguna pista, estaré agradecido.

KDE-Plasma: Agregar una plantilla al menú «Crear nuevo»

Cuando hacemos clic derecho en Dolphin, tenemos la opción «Crear nuevo» lo que nos permite crear una carpeta, un archivo de texto, enlace a aplicación, etcétera. Hoy veremos cómo agregar una nueva entrada a ese menú. Usaré como ejemplo el crear un documento Writer con una plantilla definida por nosotros. Primero, claramente, tenemos que crear … Sigue leyendo KDE-Plasma: Agregar una plantilla al menú «Crear nuevo»

Videojuegos libres que se han ido de github después de ser fagocitada por Microsoft

Después de la mala noticia (gracias capitalismo) de el canibalismo salvaje de Micro$oft comiendose a github. Ya hablamos por los tomates de eso en Github ha muerto…bueno lo han asesinado.

Muchos proyectos de software libre han migrado a otras forjas/repositorios de software, y de entre estos tenemos los videojuegos libres…junto con respirar, una de las cosas que mas me ocupa la cabeza…me gustaría algún día intentar conseguir vivir de hacer videojuegos libres…pero bueno…

Bueno pues conocidos por mi, he encontrado los siguientes videojuego libres que se han ido de github:

Solarus, un clon libre del Zelda de SNES/GBA/GB con editor de mapas y todo en plan RPGmaker. Solarus has moved to Gitlab

Y OpenMW que es un clon libre del videojuego de rol en 3D Morrowin. OpenMW code, bug tracker, and wiki are now on GitLab!

Y seguro que hay mas. Amable lector…¿Conoces algún otro videojuego libre que se haya pirado de github?

Domingo 24 de junio de 2018

Compilar C en m$dos en nuestros tiempos

Posts in this series
  1. Compilar C en m$dos en nuestros tiempos
  2. "El paciente" a descompilar es un exe de msdos en formato MZ

La verdad es que para escalar una montaña, primero hay que tener la montaña.

Mi montaña es descompilar un videojuego (de momento uno)  y liberarlo, pese a la polémica que hay con esta forma de liberar videojuegos como podéis leer en: Devilution – Decompiled Diablo 1 en el subreddit de videojuegos libres.

El juego en cuestión, ya os lo contare si lo consigo, pero como ya he empezado con los problemas, he querido ir paso a paso, y me he buscado un montecito, descompilar un C de un hola mundo.

Todo este gusanillo viene los articulos del Fanta: mierda.tv (cosas de dosbox que no tiene tags y hay que tirar de busqueda).

A ver, quiero ser perro mordedor y poco ladrador, por eso no voy a ponerme grandes metas y voy a ver hasta donde llego.

Y lo primero que hay que hacer es tener un m$-dos entre manos, como no me apetece llamar al tito Gates y decirle que me venda unos disquetes de su apestoso sistema operativo, he encontrado el viejo y querido dosbox  (no os asustéis con ese web de los dosmiles).

En casi todas las distribuciones de GNU/Linux viene en el repositorio de paquetes oficial por lo que no sera difícil instalarlo. Aunque cosa distinta es si queréis ver la matrix de m$-dos que hay que seguir el tutorial que hizo Fanta para poner el debug heavy.

Una vez instalado hay que descargar el djgpp, que es la versión del compilador libre por excelencia el Gcc para m$-dos, el proyecto tiene un formulario web para darte una lista de crípticos ficheros zip para tener el gcc funcionando según gustos personales, básicamente tienes que seleccionar:

  • compilar y ejecutar programas
  • C y ensamblador
  • Por frikeo el Rhide
  • Depurador gdb

Como podéis ver en la captura de pantalla:

 

Y tendrás de la descarga los siguientes ficheros zip con nombres bastante crípticos, pues tienes que descomprimirlos a una misma carpeta todos, en mi caso le puse el nombre tan original como djgpp y tendrás algo tal que así (donde todos las carpetas bin de cada zip estarán fusionadas y el resto de tipos de carpetas al igual con sus respectivos nombres):

Ahora como enganchamos el dosbox para que coja ese directorio en el path de ejecutables (si, por si no lo recordabais m$-dos tenia un invento parecido a los Unix), pues aunque se puede cambiar la configuración de dosbox para hacerlo, voy a enseñaros vía parámetros de la shell…porque así explico una parte el señor Fanta y seguir el hilo de su trabajo.

$ dosbox -c "keyb sp" -c "mount c: ." -c "C:" -c "set PATH=C:\DJGPP\BIN;%PATH%" -c "set DJGPP=c:/djgpp/djgpp.env"

Y después puedes probar cosas tan frikis como usar rhide para editar un fichero c con un hola mundo.

Recuerda, para sacar al ratón del dosbox es: ctrl + F10

Y aquí tenéis el holamundo en C para m$-dos:

En cuanto puedo os sigo mostrando los siguientes paso hasta escalar mi montaña personal.

Jueves 21 de junio de 2018

DAE-18: El texto ya está en su lugar (mayormente)

Bueno, parece que después de todo es posible que la edición 2018 de «domando al escritor» no se convierta en la edición 2019… El texto está, mayormente, «en su lugar». De hecho el índice ya ha llegado a las siete páginas. No hay aún diagramas ni capturas de pantalla, solo texto y dos tablas. Hay … Sigue leyendo DAE-18: El texto ya está en su lugar (mayormente)

Martes 19 de junio de 2018

Bruno Exposito

Bruno Exposito
Puro Linux

Diferencia entre ruta relativa y absoluta

Para acceder a un fichero o carpeta (ya sea en Windows, Linux o Mac) utilizamos lo que se llama una ruta, una ruta es algo así como la dirección de una casa.

Hay dos tipos de rutas:
– Relativas
– Absolutas

La diferencia entre una ruta relativa y una absoluta radica en que la relativa depende del directorio en el que te encuentras actualmente, mientras que la absoluta no.

Pongamos un ejemplo, imagina que estás en el directorio “F” y quieres llegar hasta el directorio “H”.

estructura

 

Hay dos modos de llegar a la carpeta destino:

Ruta relativa

– Desde tu posición actual (F), subir hasta “B”, luego subir al directorio “A”, luego bajar al directorio “D” y a continuación llegas a tu destino, el directorio “H”. El problema de seguir estas “indicaciones” es que solo sirven si estás en “F” o en “E”, si estás en otro directorio no llegarás a “tu destino” con las indicaciones recibidas.

relativa

Ruta absoluta

– Desde el directorio raíz entras en “D” y luego en “H”. En este caso la ruta absoluta es mas corta, si el origen fuera “G” y el destino “H” sería mas larga.

absoluta

 

Volvamos a Linux. Suponiendo que estás en tu carpeta home (cd ~) y que quieres mostrar el contenido de un fichero txt, puedes usar:

cat Documentos/informe.txt (relativo)
cat /home/bruno/Documentos/informe.txt (absoluto)

 

¿Cuando usar uno u otro? Depende de lo que estés haciendo.

Por ejemplo, tengo un script que ejecuto usando un alias que está en el fichero ~/.bashrc y que uso para compilar varios proyectos con maven.

El script lo ejecuto desde la primera terminal que tenga a mano, independientemente del directorio en el que esté la terminal en ese momento.

En este caso el script usa la ruta absoluta hacia la carpeta con el código, pues no puedo confiar en estar en el directorio correcto.

 

Otro ejemplo, estoy desarrollando una web en HTML y quiero enlazar una imagen.

En este caso tengo que usar una ruta relativa, ¿por que? Porque si uso una absoluta solo va a funcionar en mi ordenador, si le paso el código a otra persona la imagen no se verá a menos que tenga la imagen exactamente el mismo sitio.

Dentro del directorio hay una carpeta llamada imgs y dentro la foto. Es correcto.
<img src”imgs/foto.jpg” alt=”foto”>

En el directorio padre del actual (../) hay una carpeta llamada imágenes y dentro la foto. Correcto también.
<img src”../imagenes/foto.jpg” alt=”foto”>

En mi carpeta imgs que esta en mi home tengo la foto. Incorrecto.
<img src”/home/bruno/imgs/foto.jpg” alt=”foto”>

Yo me voy por mi izquierda…

Lunes 11 de junio de 2018

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Programación de tareas en segundo plano para nuestras aplicaciones web (Introducción. Parte 1 de 3)

Tareas programadas en segundo plano

Las aplicaciones web se van complicando cada vez más. Es un hecho y es algo bueno. Los ordenadores tienen más potencia, y los creadores cada vez más opciones e imaginación para destacar sobre la competencia. Una práctica interesante es la posibilidad de realizar tareas en segundo plano o en un momento concreto del tiempo sin que exista una mediación por parte del usuario.

Tenemos varias posibilidades y en estos posts vamos a centrarnos en cada una de ellas. Por otro lado, aunque este post es más general e independiente del lenguaje, quiero centrarme en PHP. Por un lado, es un lenguaje con el que he trabajado mucho, por otro, aunque es posible que diferentes partes de un proyecto estén realizadas en diferentes lenguajes, y PHP no sea un lenguaje pensado a priori para esto, en ocasiones, es más fácil y barato para una empresa pequeña recolocar a alguien en otro módulo de la apliación si todo está desarrollado en el mismo lenguaje. Como quiero hacer este post más o menos completo y relatar mi experiencia en cada uno de los puntos, se me ha alargado mucho, por eso he decidido dividirlo en tres partes, incluso puede que algún ejemplo dé para una cuarta.

¿Qué podemos hacer con estas tareas?

Bueno, ¿para qué vale todo esto? Es cierto que una web que tenga sus usuarios, envíe correos y sirva cierta información al usuario no tiene por qué ejecutar nada en segundo plano. Todo se servirá y se realizará al ritmo que los usuarios lo pidan. Eso está bien, en principio. Pero claro, imaginad que la web empieza a ganar visitantes. Lo primero que puede darnos problema es el envío de correo.

Puede que si se registran 10 usuarios por hora no pase nada pero, ¿10 usuarios por segundo? A los que debemos enviar confirmaciones de registro (no son muchos), pero luego enviaremos alertas para ciertos eventos, recordatorios de contraseña, avisos de que están intentando entrar con esa cuenta de correo… en definitiva, nuestra aplicación deberá establecer varias conexiones por segundo con el sistema de correo, sistema que muchas veces es externo y seguro que se cabrea (y nos expulsa por establecer tantas conexiones). Seguro que estaría bien coger cada 10, 15 o 20 segundos, y ejecutar una tarea que envíe todos los mensajes que tenga pendiente, lo que se llama un spool de correo, incluso enviar todos los correos pendientes aprovechando una misma conexión al servidor de correo, de manera mucho más eficiente y ordenada.

Supongamos que queremos tener un control de la llegada de dichos mensajes, o al menos comprobar que el e-mail sigue siendo válido para determinar si nuestros usuarios son legítimos o tenemos algún problema con sus datos. En este caso, cuando el servidor de correo de destino está recibiendo el mail normalmente contestará. Puede que el correo se entregue bien, o puede que estemos en una lista negra, el servidor de destino puede aplicar listas grises, nuestro correo puede ser tachado como Spam, o incluso que el servidor de destino no funcione ahora mismo. En caso de fallo, nuestro servidor de correo nos enviará un mensaje con el motivo por el que no se ha podido entregar el correo. Dichos mensaje podemos leerlos periódicamente y asignar un código de estado a los mensajes que hemos enviado a modo de diagnóstico, o para hacer un reintento pasados unos minutos, desactivar usuarios, etc.

Una web actual, normalmente también descarga contenidos de otros lados, y los procesa. Puede que descarguemos tweets, una captura de una web, extraigamos una imagen o una descripción de un post, la cotización del euro o de alguna criptomoneda. Esto son tareas que no dependen de nosotros. Así que no podemos controlar que el tiempo que tardamos en ellas sea fijo, o que nos pueda echar por tierra una página. También tenemos que pensar en que si cada vez que un visitante requiere alguno de estos datos desde nuestro sitio tenemos que acceder a otro lado para sacarlo, tal vez el otro lado se harte de nosotros, o que no responda en algún momento debido a una caída. Lo que podemos hacer es acceder periódicamente a esos sitios sin que exista mediación por parte de nuestros usuarios y guardar esos contenidos en una memoria o base de datos, de modo que nosotros podamos acudir a esos datos de forma muy rápida. Nuestro dato tal vez no sea el más actualizado, en el caso de las cotizaciones, tal vez tengamos un cierto desfase (aunque podemos aplicar otras técnicas), pero si se trata de tweets, posts y demás, esos contenidos no van a variar con el tiempo.

Otro uso muy útil es la importación, exportación y cálculo de datos. En sistemas de estadística, puede que nuestra aplicación deba importar gran cantidad de datos procedente de diversas fuentes (webs externas, ficheros de usuario, APIs, etc). Esta tarea puede ser muy rápida o llegar a ser muy lenta en su ejecución. ¿Por qué no hacerla en segundo plano y avisar al usuario cuando terminemos? Por un lado, evitamos que el usuario esté eternamente esperando una respuesta (y que se estrese poniéndose a pedir los mismos datos una y otra vez), por otro, si la tarea hace un uso muy intensivo de CPU, podemos limitarlo (la tarea puede realizarse de forma más lenta, pero al menos no nos tira el servicio). Tanto si estamos introduciendo datos, generando un fichero de reporte, realizando cálculos, que también puede ser convirtiendo un vídeo u obteniendo una miniatura de un vídeo, son tareas que pueden estresar al usuario y no deberían influir en la carga de nuestras páginas.

También puede que nos interese eliminar sesiones de usuarios inactivos, invalidar o generar cachés de contenidos complicados. El objetivo es que el usuario final de nuestra página tenga que esperar lo menos posible para la realización de las tareas antes de ver un resultado en la página web. Por supuesto, luego podemos consultar por Ajax si una tarea ha finalizado para avisar al usuario o, como es el caso del envío de correos, es algo que al usuario no le importa, pero a nosotros sí.

Escalabilidad

Algo que tenemos que tener en cuenta cuando estamos inmersos en un proyecto es su escalabilidad. En un primer momento, y si no nos queda otra, cuando empezamos a tener visitas a nuestros servicios podremos optar por una escalabilidad vertical. Es decir, utilizar máquinas más potentes para servir nuestros contenidos. Aunque pronto empiezan a surgir más problemas si hacemos de esta práctica algo común. Los costes suelen dispararse, es más barato comprarse 4 ordenadores pequeños que uno cuya potencia englobe a los cuatro. Vale, no siempre es así, pero si nos ponemos a mirar presupuestos de ordenadores llega un momento en el que sí se cumple. Por otro lado, si tenemos nuestro servicio alojado únicamente en una máquina, sólo hace falta que se rompa una máquina para echar todo al traste. Parece una frase tonta pero es así, mientras que si tenemos nuestro servicio replicado en cuatro máquinas, si se rompe una nos fastidia, pero no nos pillamos los dedos. Bueno, tras todo esto tendríamos que pensar qué parte debemos escalar y cómo, porque puede que escalar toda una aplicación mastodóntica no sea la solución, debemos analizar los cuellos de botella y optar por una solución inteligente.

El caso es que muchas veces este tipo de tareas pueden pasarse a otra máquina. Es decir, nuestra máquina principal (o máquinas), como punto de entrada servirán webs y punto. Pero para las tareas programadas, que puede que algunas requieran mucha CPU vamos a utilizar otra máquina, que incluso será privada y funcionará de forma independiente, incluso si vemos que las tareas son muy exigentes podemos dividirlas en varias máquinas a nuestro gusto. De esta manera podremos hacer crecer nuestra aplicación.

Informes de errores

Aunque muchos programadores dejan esto para el final, en mi opinión es lo primero que deberíamos implementar. Cada vez que ejecutamos una de estas tareas deberíamos escribir en algún lado (base de datos, fichero log, servicio de logs externo, etc) que estamos empezando a realizar la tarea. Deberíamos escribir los errores que nos encontramos y los pasos que damos a la hora de ejecutar tareas, así como su finalización. Con esto tendremos un seguimiento que nos puede ayudar a corregir errores o saber si alguna tarea se ha quedado bloqueada. Más tarde podremos desactivar mensajes para que solo muestre inicio de tarea, fin de tarea y errores, así sabemos que nuestro programa hace su trabajo.

Tareas tras la carga de la web

Una técnica que se ha utilizado durante mucho tiempo es que tras la carga completa de la web se ejecute cierto código de mantenimiento. Es cierto que durante mucho tiempo, una vez se ha cargado la web, se comprueba si se deben realizar tareas y se realizan en caso afirmativo. Muchos sitios lo hacen cuando carga una web, otros sitios hacen una petición Ajax para ejecutar tareas… el problema es que en cualquier caso, estamos haciendo que el usuario intervenga en el disparo de dichas tareas. Eso puede causar que la página cargue más lenta, que haya demasiadas peticiones innecesarias al sistema de tareas, que si la tarea tarda mucho en ejecutarse se cancele debido a los timeouts de PHP o del servidor web, o que, si ningún usuario entra a la web en un tiempo, no se lance ninguna tarea. En cualquier caso, yo soy de la idea de que “son cosas que al usuario no le interesan“, incluso en algunos sistemas, podemos ver tras la petición (sobre todo las Ajax), si se ha ejecutado la tarea y cómo ha ido dicha ejecución, cosa que interesa mucho menos al usuario.

El origen de todo esto es porque muchos servidores (sobre todo los compartidos), históricamente no nos dejaban hacer llamadas a otras aplicaciones de gestión de tareas o incluso la creación de tareas programadas (cron jobs). Actualmente, hasta los hospedajes compartidos nos dejan hacer cosas así, de todas formas, yo te recomiendo montarte por lo menos un VPN para tener más libertar con estas cosas. Aún así, las necesidades de ejecución de tareas en nuestras aplicaciones están creciendo.

Cron jobs

Reloj
Son las tareas programadas de toda la vida, de esta forma le podemos decir al sistema ejecuta este programa cada x días, h horas y m minutos. Normalmente un servidor ejecuta muchas tareas en segundo plano como pueden ser mantenimiento de logs, sincronización del reloj, comprobación de actualizaciones, envío de informes de salud, generación de estadísticas y algunas más. Así que, ¿por qué no introducir nuestras propias tareas?

Por un lado podríamos utilizar un script para cada tarea, por ejemplo invalidación de cachés o limpieza de base de datos, consulta de webs externas y envío de e-mails incluso introducir diferente periodicidad para cada una de ellas. Pero en muchas ocasiones podemos incluso centralizarlo todo en una única llamada. Si hablamos de PHP, podremos ejecutar un único archivo PHP o Python, o Java y que éste se encargue de revisar las tareas pendientes y ejecutar las que crea pertinentes. Habrá ejemplos en PHP en el siguiente post. Incluso si lo hacemos de forma centralizada, podremos introducir tareas que solo deban lanzarse una vez en el juego. Por ejemplo cuando exista una tarea que no tiene por qué ser periódica, como puede ser la obtención de los últimos posts de un blog que acaban de introducir en nuestra web (no es periódico, se realiza cuando un usuario da de alta su blog). Luego este cron job lo podemos ejecutar cada minuto o cada dos minutos, como lo creamos necesario. Basta con ejecutar:

crontab -e

Y luego añadir
1
2
# m h  dom mon dow   command
*/2 * * * * php /ruta/del/archivo/archivo.php

Con esto ejectaremos la tarea cada dos minutos. Seguro que buscando por la red encontramos mucha información sobre los cron jobs.

En nuestro script podremos hacer una consulta a base de datos para determinar las tareas que hay pendientes (periódicas o no) y ejecutar la que toque, incluso cada tarea podrá realizar llamadas a otros procesos, y todo sin que el usuario tenga que intervenir y sin costarle tiempo a él.

Lo malo es que los cron jobs de Unix no pueden alcanzar una resolución de segundos por lo que si queremos lanzar una tarea cada segundo, cada dos, o cada quince segundos tenemos que andar ejecutando tareas con sleep delante, aunque podríamos tener problemas si una tarea tarda más de lo normal en ejecutarse.

Programador de tareas en ejecución

Otra opción es crear nosotros un programador de tareas en el lenguaje en el que estemos trabajando. Por un lado, si utilizamos una base de datos para el control de nuestras tareas no tendremos que iniciar conexiones cada vez que ejecutamos la tarea, lo que gasta tiempo y recursos, sino que podremos tener una conexión abierta todo el tiempo. Y, por otro lado, podemos mirar si tenemos una tarea pendiente cada menos tiempo, por ejemplo cada dos segundos. En este caso, si, en el caso de una tarea de envío de correo electrónico, comprobamos si tenemos que enviar e-mails cada minuto, en el peor de los casos, el mensaje tardará un minuto (más o menos en salir). Mientras que si comprobamos cada dos segundos, al usuario prácticamente le da tiempo a cambiar de ventana, acceder a su correo y comprobar si tiene algo nuevo cuando ya ha recibido el mensaje. Parece que no, pero da una mejor sensación a los usuarios.

Por otro lado, si utilizamos un programador de tareas de este estilo podremos tener varias instancias del programador corriendo en una misma máquina. En caso de que no sean tareas muy intensas computacionalmente, como son enviar e-mails, descargar información de webs externas, etc podríamos tener varias tareas en ejecución a la vez. Eso sí, deberíamos controlar muy bien que no se lance la misma tarea por dos programadores a la vez, lo que puede ser un problema. Así como determinar qué tareas pueden ejecutarse en varios sitios a la vez y cuáles no.

Como el artículo me ha quedado muy largo, he decidido dividirlo en tres. Así que para el próximo incluiré ejemplos de código fuente. La segunda parte estará disponible el día 18 de Julio.

Foto principal: unsplash-logoEstée Janssens

Foto (reloj): unsplash-logoÁlvaro Bernal

The post Programación de tareas en segundo plano para nuestras aplicaciones web (Introducción. Parte 1 de 3) appeared first on Poesía Binaria.

Martes 05 de junio de 2018

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Ejecutando tareas desde consola simultáneamente con GNU Parallel


Los ordenadores cada día son más potentes. Y una de las formas de poder ejecutar tareas de forma más rápida, es simultanearlas. Por un lado, es lógico que si una tarea está esperando un dato (ese dato puede venir del disco, del usuario por medio del teclado o el ratón, o descargándoselo de Internet), es normal que el ordenador decida ejecutar otras cosas para no perder el tiempo. Y de hecho se ha aprovechado esto para tener varios programas en ejecución, constantemente dando y quitando el acceso al procesador. Aunque, con la evolución en el mundo del hardware, ahora es común tener ordenadores que comprenden varios núcleos de procesador y son capaces de disponer de varios hilos de ejecución simultáneos. Lo que quiere decir, que pueden hacer realmente varias cosas a la vez, por lo que tiene más sentido incluso ejecutar tareas en paralelo.

Ejecución concurrente en la shell

Normalmente, si queremos ejecutar varias tareas al mismo tiempo, o concurrentes desde una terminal Unix. Basta con ejecutar un programa de la siguiente manera:

programa &
19238
… ejecuto más cosas …

Con un ampersand (&) al final. De esta forma, el terminal nos devolverá el control a nosotros como usuarios, permitiéndonos ejecutar otras cosas mientras la tarea que le hemos pedido que ejecute lo hace de fondo (en background). Es conveniente que la tarea no escriba muchas cosas en pantalla, porque si no va a ser un jaleo.
También podemos ejecutarla de forma normal, y en mitad de la ejecución pulsar Control+Z (Representado por ^Z). Control+Z enviará una señal SIGSTOP al programa en cuestión, por lo que la ejecución se detendrá, permitiéndonos ahora ejecutar otras cosas, y luego continuar la tarea anterior tanto en el frente (foreground), escribiendo fg o, de fondo (como hacíamos antes, en background), escribiendo bg.
programa
^Z
[1]+ Stopped   programa
… ejecuto más cosas …
fg
programa
… programa sigue ejecutándose …
^Z
[1]+ Stopped    programa
bg
[1]+ programa &
… puedo ejecutar lo que quiera …

Generalmente, si tenemos un ordenador con varios núcleos y capaz de ejecutar varias tareas al mismo tiempo. El núcleo del sistema operativo se encargará de repartir estas tareas entre los núcleos disponibles para que la ejecución global sea más rápida. Si tenemos 2 tareas que se ejecutan en un solo hilo y nuestro ordenador puede ejecutar dos hilos de forma simultánea, ¡vamos a ejecutar los dos al mismo tiempo y terminarán antes!
Concretamente, si tenemos dos programas:

  • pi : Calcula el número PI con 4000 decimales, y tarda 10 segundos.
  • color : Corrige el color de una imagen jpg enorme, y tarda 14 segundos.

Si ejecutamos los dos programas de forma secuencial (primero uno y luego otro), tardaremos 24 segundos en realizar las dos tareas. Pero si las ejecutamos a la vez, como nuestro procesador tiene dos núcleos y no está haciendo nada más, tardaremos en completar las dos tareas 14 segundos (lo que tarda la más lenta de las dos).

Cuando se nos queda corto…

Cuando hablamos de paralelizar tareas, podemos hacerlo en casi cualquier lenguaje o entorno. Es más, justo con la información de antes podemos aprovechar para lanzar varias tareas. Incluso con algo de programación, establecer algún que otro bloqueo para guardar el orden de las ejecuciones. O incluso para poder ejecutar las tareas de dos en dos, o de tres en tres… aunque tratándose de Bash puede ser un poco duro programar ciertas cosas, sobre todo cuando tenemos prisa.

GNU Parallel nos permite ejecutar tareas de forma simultánea, agrupar tareas, ordenar la salida, e incluso nos evita tener que pelearnos con aquellos conceptos de concurrencia que a más de uno nos han traído de cabeza. Como extras, nos permite jugar con los argumentos de entrada de los programas de forma muy divertida a la par que útil.

Instalación

GNU Parallel suele venir en los repositorios de las distribuciones de GNU/Linux más populares, así que podemos hacer:

sudo apt install parallel

En caso de Debian/Ubuntu y derivados

dnf install parallel

Si estamos en Fedora.

pacman -S parallel

El programa no tiene muchas dependencias y es totalmente multiplataforma, ya que está escrito en Perl. Podremos ejecutarlo en nuestro ordenador, un servidor, un móvil, una Raspberry PI o cualquier cacharro que corra GNU/Linux.

Es importante saber la versión que tenemos instalada. Podemos averiguarlo con:

parallel --version
GNU parallel 20161222

Aunque casi todos los ejemplos del post corren con versiones anteriores, para algunas cosas necesitaremos como mínimo la versión 20161222. Si tu distribución no la tiene por defecto, siempre podemos descargarlo de la página oficial.

Calcular el número PI

Un programa que suelo utilizar para este tipo de ejemplos es el cálculo del número Pi. Sobre todo porque es una tarea que tarda un rato y utiliza intensamente el procesador. Sólo necesitamos tener bc instalado. El script es muy sencillo y lo he llamado pi:

1
2
#!/bin/bash
echo "scale=4000; a(1)*4" | bc -l

Ahora debemos dar permiso de ejecución a dicho archivo:

chmod +x pi

Y podemos hacer una prueba sin concurrencia ni nada para ver lo que tarda en ejecutarse en nuestro ordenador:
time ./pi
3.141592653589793238462643383279502884197169399375105820974944592307\
….
66983895228684783123552658213144957685726243344189303968642624341077\
3226978028073189154411010446823252716201052652272111660396
real 0m10.800s
user 0m10.792s
sys 0m0.008s

Si quieres seguir esta guía y ves que la ejecución de pi tarda mucho, puedes bajar el número de dígitos (donde pone scale=4000, puedes bajar el número). El objetivo es no eternizarnos, pero darnos cuenta de cómo se está ejecutando todo.

Varias ejecuciones de un programa

GNU Parallel está diseñado para pasar argumentos de forma variable a cada una de las instancias que ejecutemos del programa. Siempre tendremos que pasar argumentos al programa a ejecutar aunque, en este caso, solo queremos ejecutar varias veces pi, sin argumentos. Una forma fácil es generar una secuencia de números del 1 al total de veces que queremos ejecutar el programa, lo podemos hacer con seq (por ejemplo con 10):

seq 10
1
2
3
4
5
6
7
8
9
10

Una vez que tenemos esta entrada, se la podemos pasar a GNU Parallel. En este caso, le diremos que a pi no le pase argumentos (-n0):
seq 10 | parallel -n0 ./pi

Esta ejecución tardará un tiempo. Eso sí, mientras se ejecuta, estaría bien que investigáramos un poco qué está haciendo el programa. En mi ordenador, puedo ejecutar hasta 8 hilos de forma simultánea. Eso quiere decir que, como pi es una tarea que tira mucho de CPU, ejecutar las 10 instancias del programa al mismo tiempo no haría que la ejecución global fuera más rápido que una ejecución secuencial puesto que dos procesos se pelearían por utilizar la CPU y el sistema operativo tendría que dar y quitar el paso a CPU de los procesos. La situación se agravaría si en lugar de 10 ejecuciones hiciéramos 100 o más, incluso podríamos tener otros problemas si intentamos ejecutar una tarea muy complicada demasiadas veces al mismo tiempo.

Podemos ver qué está haciendo la CPU en cada momento ejecutando top, un gestor de tareas o un monitor de CPU.
Uso de CPU
Lo que quiero que observemos es el número de procesos que estamos utilizando en cada momento. En este caso, la ejecución se hará de 8 en 8 porque GNU Parallel ha detectado que mi sistema puede correr 8 hilos simultáneamente. Podemos comprobarlo si mientras ejecutamos el comando anterior, en otro terminal ejecutamos:

pidof bc | wc -w
8

Veremos ese 8 todo el tiempo. Ya que parallel controla ese número de ejecuciones.

Alternativamente, podemos especificar nosotros cuántas ejecuciones simultáneas tendrá el programa con el argumento -j. De la siguiente manera:

seq 10 | parallel -j2 -n0 ./pi

En este caso, ejecutaremos las tareas de 2 en 2. Podemos especificar el número de tareas simultáneas que necesitemos. Incluso puede exceder el número de núcleos o hilos disponibles en nuestro sistema. El objetivo es que da igual lo que dure la ejecución de pi, mantendremos el número de ejecuciones que le digamos a parallel hasta que ya no haya más instancias por lanzar.

Cambiando los argumentos de entrada

La gracia de ejecutar tareas en paralelo es que podamos variar los argumentos de entrada de dicho programa. Es más, un programa podrá tener argumentos fijos y argumentos variables. Esto lo podemos poner en práctica ejecutando echo de forma concurrente con diferentes parámetros. Vale, ejecutar echo no es ninguna tarea intensiva, pero nos vale para ver cómo se están produciendo las ejecuciones y algunas cosas curiosas más.

Argumentos desde teclado (entrada estándar)

Una forma muy sencilla de pasar argumentos de entrada a parallel es de forma interactiva, escribiéndolos por teclado y pulsando Control+D al finalizar:

parallel echo
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
Jaén
Córdoba
Sevilla
Huelva
Cádiz
Málaga
Granada
Almería
Jaén
Córdoba
Sevilla
Huelva
Cádiz
Málaga
Granada
Almería

Argumentos desde pipe

Estos argumentos podemos pasarlos desde una pipe o desde un archivo, pero tiene que haber uno por línea. Podemos introducir las provincias en un archivo o hacer lo siguiente (con tr estamos convirtiendo los espacios en retornos de carro), además, estamos introduciendo un argumento fijo “Saludos desde”:

echo “Jaén Córdoba Sevilla Huelva Cádiz Málaga Granada Almería” | tr ‘ ‘ ‘\n’ | parallel echo “Saludos desde”
Saludos desde Jaén
Saludos desde Córdoba
Saludos desde Sevilla
Saludos desde Huelva
Saludos desde Cádiz
Saludos desde Málaga
Saludos desde Granada
Saludos desde Almería

Argumentos desde pipe en orden

Pero claro, no todos los programas aceptan los argumentos en el mismo lugar, imaginemos que queremos decir algo más tras el nombre de la provincia andaluza, para ello tendremos que introducir alguna cosa más:

echo “Jaén Córdoba Sevilla Huelva Cádiz Málaga Granada Almería” | tr ‘ ‘ ‘\n’ | parallel echo “Saludos desde” {}”, una bonita provincia andaluza.”
Saludos desde Jaén, una bonita provincia andaluza.
Saludos desde Córdoba, una bonita provincia andaluza.
Saludos desde Sevilla, una bonita provincia andaluza.
Saludos desde Huelva, una bonita provincia andaluza.
Saludos desde Cádiz, una bonita provincia andaluza.
Saludos desde Málaga, una bonita provincia andaluza.
Saludos desde Granada, una bonita provincia andaluza.
Saludos desde Almería, una bonita provincia andaluza.

Varios argumentos variables por ejecución

Ahora, vamos a crear un archivo, en el que introduciremos un número (el número de letras que tiene la provincia) y la provincia, de forma alternativa en cada línea. Lo llamaremos andalucia.txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4
Jaén
7
Córdoba
7
Sevilla
6
Huelva
5
Cádiz
6
Málaga
7
Granada
7
Almería

Con este archivo podríamos hacer lo siguiente:

cat andalucia.txt | parallel -n 2 echo “Dame {1} letras para {2}”
Dame 4 letras para Jaén
Dame 7 letras para Córdoba
Dame 7 letras para Sevilla
Dame 6 letras para Huelva
Dame 5 letras para Cádiz
Dame 6 letras para Málaga
Dame 7 letras para Granada
Dame 7 letras para Almería

Con -n2 estamos indicando que echo llevará dos argumentos, por lo que cada ejecución de echo tomará dos líneas del fichero como argumentos. Con {1} y {2} indicamos el número de parámetro que estamos colocando. También podríamos hacer lo siguiente:
cat andalucia.txt | parallel -n 2 echo “{2} tiene {1} letras.”
Jaén tiene 4 letras.
Córdoba tiene 7 letras.
Sevilla tiene 7 letras.
Huelva tiene 6 letras.
Cádiz tiene 5 letras.
Málaga tiene 6 letras.
Granada tiene 7 letras.
Almería tiene 7 letras.

Argumentos de parallel como argumentos del programa

Otra forma de incluir argumentos variables es la siguiente:

parallel echo ::: Ávila Burgos León Palencia Salamanca Segovia Soria Valladolid Zamora
Ávila
Burgos
León
Palencia
Salamanca
Segovia
Soria
Valladolid
Zamora

Argumentos y combinaciones

Cuando tenemos que lanzar muchas tareas, a veces es útil que los argumentos hagan combinaciones de parámetros. De esta manera no tendremos que generar un fichero que reúna las combinaciones y luego pasárselo a Parallel. Por ejemplo, si queremos hacer una operación lógica AND, podemos hacer lo siguiente:

parallel ‘echo -n {1} \&\& {2} = ; (({1}&&{2})) && echo 1 || echo 0’ ::: 0 1 ::: 0 1
0 && 0 =0
0 && 1 =0
1 && 0 =0
1 && 1 =1

O, mucho más sencillo, si queremos todas las combinaciones que podemos hacer con 3 bits, podemos hacer lo siguiente:

parallel echo ::: 0 1 ::: 0 1 ::: 0 1
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Un paso más, ahora queremos averiguar con bc su valor en decimal:

parallel echo -n {1}{2}{3} = \;’echo “ibase=2;{1}{2}{3}” | bc’ ::: 0 1 ::: 0 1 ::: 0 1
000 =0
001 =1
010 =2
011 =3
100 =4
101 =5
110 =6
111 =7

Datos desde un fichero separado por columnas

Podemos utilizar un archivo cuyo contenido pueda ser determinado por columnas, como un CSV (Comma Separated Values) o TSV (Tab Separated Values). Podríamos coger el archivo de provincias y hacer lo siguiente (andalucia2.csv):

1
2
3
4
5
6
7
8
4,Jaén,jiennense
7,Córdoba,cordobés
7,Sevilla,sevillano
6,Huelva,onubense
5,Cádiz,gaditano
6,Málaga,malagueño
7,Granada,granadino
7,Almería,almeriense

En este caso descartaremos el primer valor. No tenemos por qué utilizarlo si no queremos.

parallel --colsep ‘,’ echo “Un habitante de {2} se llama {3}” :::: andalucia2.csv
Un habitante de Jaén se llama jiennense
Un habitante de Córdoba se llama cordobés
Un habitante de Sevilla se llama sevillano
Un habitante de Huelva se llama onubense
Un habitante de Cádiz se llama gaditano
Un habitante de Málaga se llama malagueño
Un habitante de Granada se llama granadino
Un habitante de Almería se llama almeriense

El orden de ejecución

Como se lanzan varios procesos a la vez y no todos tienen por qué tardar lo mismo. El orden en el que vemos los resultados puede variar. Lo podemos comprobar de la siguiente forma:

parallel sleep {}\; echo {} ::: 4 8 2 6
2
4
6
8

De esta forma hemos ejecutado 4 procesos que generarán esperas de 4, 8, 2 y 6 segundos, eso sí, la salida se irá generando por el orden en el que los procesos lleguen al echo. Aunque el orden de salida no es el orden de los argumentos que le hemos pasado. Es más, si queremos, podemos hacerlo más enrevesado:
parallel -j2 sleep {}\; echo {} ::: 4 8 2 6
4
2
8
6

En este caso ejecutamos dos hilos de forma simultánea, por lo que se lanzan los procesos que tardan 4 y 8 segundos a la vez. El de 4 segundos termina, y se lanza el de 2 (ahora están trabajando el proceso que tarda 8 (que va por su cuarto segundo) y el que tarda 2. Lógicamente acaba primero el que tarda 2 segundos y se lanza el de 6, pero al de 8 le quedan 2 segundos, por lo que acaba antes que el de 6.
El caso es que puedo forzar a parallel para que muestre la salida en el mismo orden en el que le paso los argumentos de entrada con el argumento -k:
parallel -k sleep {}\; echo {} ::: 4 8 2 6
4
8
2
6

Da igual qué hilos esté lanzando y cómo termine, la salida generada me la mostrará parallel en el orden que yo le he dicho, lo cual es útil para nuestros scripts si necesitamos controlar la salida generada.

Ejecutando funciones de Bash

Como hemos visto parallel nos permite ejecutar echo, palabra reservada de Bash, pero también es posible crear nuestras propias funciones y ejecutarlas. De esta forma, no solo podemos ejecutar un programa, podremos crear funciones y ejecutarlas también. Solo tenemos que exportarlas:

1
2
3
4
5
6
7
8
function distancia() {
  local ORIGEN="$(echo -n $1 | jq -s -R -r @uri)";
  local DESTINO="$(echo -n $2 | jq -s -R -r @uri)";
  curl -s  "http://maps.googleapis.com/maps/api/directions/json?origin=${ORIGEN}&destination=${DESTINO}&sensor=false" 2>/dev/null | tee "${ORIGEN}_${DESTINO}.txt" | jq '.routes[0].legs[0].distance.text';
}

export -f distancia
parallel echo -n "De {1} a {2} =\> " \; distancia {1} {2} ::: "La Coruna" "Lugo" "Orense" "Pontevedra" ::: "Alicante" "Castellon" "Valencia"

Con este ejemplo sacaremos muchas distancias entre ciudades con la ayuda de la API de mapas de Google. Es un ejemplo donde podemos ver que cada petición tarda un tiempo diferente, los resultados salen en orden de llegada.

Reemplazos de argumentos

Parallel permite no solo pasar los argumentos a los programas que ejecuta tal cual, sino que podemos hacer alguna operación de reemplazo por si no queremos el parámetro tal cual nos lo pasan. Algunos parámetros comunes pueden ser nombres de archivo (a los que podremos quitarle rutas o extensiones), cadenas de caracteres (que podremos recortar), o incluso extraer información de las tareas. Incluso podremos cambiar las cadenas si nos resulta incómodo utilizar estos caracteres en nuestros scripts. Esto podría ser muy extenso, así que voy a extraer algunos ejemplos rápidos:

Convertir imágenes de JPG a PNG

Con esta orden podremos buscar todas las imágenes jpg que hay en el directorio actual y convertirlas a png. Eso sí, utilizando toda la potencia de nuestro ordenador, iniciando tantos procesos convert simultáneos como núcleos tenga nuestra CPU. Podemos ver que {} muestra el argumento tal cual, pero {/.} extrae la ruta y la extensión. Si queremos investigar, {/} solo extrae la ruta y {.} solo extrae la extensión. En este caso guardamos las imágenes convertidas en el directorio convertidas.

find -maxdepth 1 -name ‘*.jpg’ | parallel convert -verbose {} convertidas/{/.}.png

Slots y tareas

Podemos saber qué número de tarea estamos ejecutando en cada momento. Es muy útil si por ejemplo cada tarea tiene que repartirse un tamaño muy grande y estas deben saber qué trozo de tarea les corresponde. Pensad en una imagen, divididla en cuadros numerados secuencialmente y cada tarea que lancemos debe atacar a uno de los cuadros. En este caso cada una de las tareas debe saber a qué cuadro tienen que ir. Por otro lado, los slots son grupos, como si fueran “cajas” en las que se ejecutan las tareas. Es decir, si vamos a ejecutar 3 tareas simultáneamente, tendremos 3 cajas y una tarea en ejecución ocupará una caja. De tal forma que nunca tendremos dos trabajos corriendo al mismo tiempo en el mismo slot. Podemos ver cómo funciona esto de los slots así:

parallel -j2 sleep {} \; echo {%} {#} --- {} ::: 5 2 1 3 4
2 2 --- 2
2 3 --- 1
1 1 --- 5
2 4 --- 3
1 5 --- 4

Reemplazo con funciones

Parallel también soporta funciones (casi todas las funciones están disponibles a partir de la versión 20161222. Por ejemplo podemos decirle a una tarea el número total de tareas que vamos a ejecutar. Aunque {= ‘$_=total_jobs($_)’ =} podemos sustituirlo por {##}:

seq 100 | parallel echo Job {#} of {= ‘$_=total_jobs($_)’ =}

Aunque algo muy útil es la implementación de condiciones dentro de la propia ejecución, de la siguiente manera:

seq 50 | parallel echo Hola Mundo {%} ‘> {= $_= $job->seq() % 2 == 0 ? “/dev/tty” : “/dev/null” =}’

Con esto le decimos que la salida se produzca por /dev/tty si el número de la tarea (job->seq()) es par (si su división por dos da resto cero), y si no, mandamos la salida a /dev/null.

Hay muchos más reemplazos

Progreso

Como siempre, el usuario se desespera, y muchas veces necesita que le demos algo de información para que no se desespere. Una buena idea es mostrar un progreso para que sepa por dónde va la ejecución. Como parallel está pensado para ejecutar muchas tareas, puede medir el progreso mirando todas aquellas tareas que han finalizado y midiendo tiempos. Podemos utilizar el mismo ejemplo de antes para convertir fotos de la siguiente manera:

find -maxdepth 1 -name ‘*.jpg’ | parallel --progress convert {} convertidas/{/.}.png

O también podemos utilizar –bar. O incluso mejor, pasarle la salida del progreso a un programa como zenity, para ver la salida de forma bonita:
find -maxdepth 1 -name ‘*.jpg’ | parallel --bar convert {} convertidas/{/.}.png 2> >(zenity --progress --auto-kill)

También podemos utilizar –eta para que nos indique el tiempo estimado de finalización de la tarea.

Muchas más opciones

Las utilidades de este programa no han terminado. El propio parallel nos permite ejecutar tareas simultáneas en servidores desde nuestra máquina cliente. Además, junto con GNU Parallel encontramos utilidades para acceso a base de datos y para la realización de operaciones. Es un programa muy flexible que nos permite realizar multitud de operaciones muy útiles y muy interesantes.

Sobre GNU Parallel

El autor nos pide que le citemmos si utilizamos este programa para una publicación. Sólo hay que mencionar al autor, además, en el enlace encontramos un manual muy completo y actualizado:

Encontramos otras formas de mención muy útiles si estamos escribiendo en LaTeX:

parallel --bibtex

Foto principal: unsplash-logoJonathan Pendleton

The post Ejecutando tareas desde consola simultáneamente con GNU Parallel appeared first on Poesía Binaria.

Emiliano A. González Salgado

Emiliano A. González Salgado
El blog de Emi

Migración a LibreOffice 6.1 Base

Hace unos días se ha publicado la beta1 de LibreOffice 6.1.
He descargado el paquete y lo he instalado en Fedora 28.
Al ser una versión de desarrollo, al ejecutarse, crea sus propios directorios de usuario, distintos de los de la versión estable.

El motor de base de datos que viene implementado por defecto es Firebird, aunque HSQLDB sigue funcionando normalmente.

Al abrir una base de datos realizada con HSQLDB, que puede ser cualquier base realizada con una versión menor (salvo que se hubiera activado Firebird anteriormente) siempre solicita convertirla a Firebird.

Esto se puede obviar presionando el botón “latest” en vez de “yes”.

Para convertirla a la versión de Firebird hay que tener presente varias cuestiones, pues el sistema de conversión aún tiene fallos:

Realizar un copia de seguridad de la base de datos que queremos abrir y trabajar con la copia.

Comprobar si tenemos alguna vista de tabla. Es decir en el menú “tablas” están las tablas propiamente dichas y la vistas, que no son mas que una consulta, que puede ser de tablas combinadas.

En caso de que existan vistas de tablas hay que abrirlas y comprobar que no haya campos calculados o campos concatenados que no estén realizados de manera que puedan ser correctamente interpretados por la nueva versión, pues en caso contrario la vista se elimina en la conversión.

Si hay campos calculados o campos concatenados en la vista lo mejor es crear una nueva consulta en modo SQL, copiar la instrucción SQL que nos muestra la vista y guardar la nueva consulta que hemos realizado con esta instrucción SQL copiada.

El error mostrado venía dado por un campo concatenado, que no se ajustaba a Firebird. En la consulta cambié la instrucción y conseguí que funcionara.
Usaba: “Prenom” + SPACE( 1 ) + “Nom”
Rectifiqué: “Prenom” || ‘ ‘ || .”Nom”

A continuación tendríamos que comprobar todos las consulta que tenemos. En la que figure la vista de tabla habría que cambiar todos los datos por los de la consulta.

Un método puede ser con un editor de texto y la edición SQL de consultas.

En mi caso la vista de tabla de llamaba vMovimientos y la consuta creada con la misma instrucción c_vMovimientos. Copiaba el resultado de la salida de la consulta en un editor de texto (kate) y con buscar y remplazar ya tenía la nueva sintaxis. Volvía a copiar y pegar. Guardaba la consulta y la base. Resuelto parcialmente.


La consultas con parámetros, si en criterio se hace referencia a un campo de una tabla, poniendo <= [tabla].[campo] muestra error.

Los campos numéricos y con decimales dan problemas.
Tengo en una tabla “Movimientos” que tiene, entre otros, tres campos “DECIMAL” con dos decimales.
Al importar los campos INTEGER, DATE, VARCHAR Y BOOLEAN no han dado problemas, pero los DECIMAL sí.

Había cantidades que no daban problemas, pero en otras el resultado era desastroso.
Números positivos los convertía en negativos que no tenía relación alguna, las cantidades con decimales terminados en 00 las dividía por 100. 9000,00 pasaba a ser 90,00, un 9xx,xx lo pasaba a -16xx,xx.

Para solucionarlo copio desde la base guardada y, abierta con una versión antigua, la tabla en Calc:
Crear tres nuevas columnas,
Multiplicar el resultado por 100.
Cambiar a formato numérico y sin decimales.
Transponer a sus antiguas columnas.

Con esto ya puedo realizar la exportación de datos a la tabla Movimientos de la nueva base convertida.

Parece un proceso muy engorroso, pero si se hace con tranquilidad, en poco tiempo se ha finalizado.

Por ahora, en la comprobación que he realizado, tanto los datos de fecha como los numéricos están correctos, sin que haya diferencia entre una y otra tabla.

NOTA.- En una comprobración posterior, y en un campo calculado, el resultado del mismo es el que he importado de la hoja de cálculo, no de lo que figura en la tabla.

Es decir, está multiplicado por 100 con respecto a lo que figura en la tabla.

El bug ha sido reportado por Xisco Fauli @x1sc0    https://bugs.documentfoundation.org/show_bug.cgi?id=118043 .

 

Jueves 31 de mayo de 2018

José María Morales Vázquez

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

WordPress. El misterioso caso del cuelgue diario a las 9 de la mañana

icono de wordpress Los blogs están muertos. Por fin. Bueno, no todos. Hay alguno que resiste hoy y siempre a la invasión de las redes sociales. A ratos me gusta pensar que este es uno de ellos… pero si soy sincero conmigo mismo ciertamente está un poco desnutrido. No le presto mucha antención, no… Hace meses, por ejemplo, que se cuelga durante aproximadamente media hora todas las mañanas y ni siquiera me he preocupado de ver que le pasa. Bueno, ya no. Ya está arreglado. Los malos hados subestiman el poder de esas tareas tediosas y desagradables que hacen que hasta te den ganas de ponerte a planchar o a limpiar los baños. Bueno, yo me he conformado con arreglar por fin este problemilla. Los baños otro día. 🙂

¿Síntomas mi querido Watson? Apenas nada: la indisponibilidad se producía por un elevado consumo de CPU y mirando con htop resulta que la responsable es mariadb (aunque en el pantallazo aparezca mysql ya sabéis que son compatibles a nivel binario).

htop - mysql se come todo el tiempo de proceso de ambos cores

Alguna pista mas: conéctandome a mariadb observo que lo que se están ejecutando son consultas aparentemente bastante simples sobre la tabla wp_options:

MariaDB [unlugar]> show processlist;
+-------+---------+-----------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+----------+
| Id    | User    | Host      | db      | Command | Time | State        | Info                                                                                                 | Progress |
+-------+---------+-----------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+----------+
| 29462 | unlugar | localhost | unlugar | Query   | 1043 | Sending data | DELETE a, b FROM wp_options a, wp_options b
			WHERE a.option_name LIKE '\\_transient\\_%'
			AND a. |    0.000 |
| 29552 | root    | localhost | unlugar | Query   |    0 | init         | show processlist                                                                                     |    0.000 |
| 29559 | unlugar | localhost | unlugar | Query   |   40 | update       | INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('jetpack_nonce_15275779 |    0.000 |
| 29560 | unlugar | localhost | unlugar | Query   |   22 | updating     | UPDATE `wp_options` SET `option_value` = '1527578481.1030609607696533203125' WHERE `option_name` = ' |    0.000 |
| 29561 | unlugar | localhost | unlugar | Query   |    7 | updating     | UPDATE `wp_options` SET `option_value` = '1527578505', `autoload` = 'yes' WHERE `option_name` = 'jet |    0.000 |
| 29562 | unlugar | localhost | unlugar | Query   |    0 | updating     | UPDATE `wp_options` SET `option_value` = '1527578503.1177010536193847656250' WHERE `option_name` = ' |    0.000 |
+-------+---------+-----------+---------+---------+------+--------------+------------------------------------------------------------------------------------------------------+----------+

Así que le echamos un vistazo a esa tabla y resulta que tiene la friolera de más de 40.000 registros y consume cerca de 38 Megas de espacio ¿Qué tiene dentro?¿Los casos de corrupción del PP? Porque la estructura de la tabla también es bastante simplona:

MariaDB [unlugar]> describe wp_options;
+--------------+---------------------+------+-----+---------+----------------+
| Field        | Type                | Null | Key | Default | Extra          |
+--------------+---------------------+------+-----+---------+----------------+
| option_id    | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| option_name  | varchar(191)        | NO   |     | NULL    |                |
| option_value | longtext            | NO   |     | NULL    |                |
| autoload     | varchar(20)         | NO   |     | yes     |                |
+--------------+---------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

Un último dato: la exactitud en la periodicidad me escamaba también. Incluso uno de esos días de puentes con un tiempo maravilloso donde no queda ni el friki más irredento paseándose por algo donde no despachan cerveza el blog también se caía. Y a la misma hora, así que le eché un vistazo al cron del sistema y no había nada que se lanzara a esa hora. ¿Y? De repente recordé que wordpress viene con su propio planificador de tareas y que estas se pueden inspeccionar fácilmente. Por ejemplo a través del plugin WP Cron Cleaner. Bingo. Ahí la tengo: Justo a las 9.04 y todos los días hay una tarea que se llama delete_expired_transients. Y eso de “transient” ya era algo que habíamos visto por ahí arriba en la consulta que se estaba realizando en mariadb.

El proceso que se lanza diariamente alrededor de las 9 realiza una limpieza de transients

Tocaba googlear a ver que es eso de los transients pero ya teníamos datos suficientes para reunir en la biblioteca a todos los implicados y desvelar quien es el asesino.

Los transients, al parecer, son registros con información temporal que proviene de los plugins que tenemos instalados. ¿Sirven para algo? Pues una vez que caducan no, para nada. De hecho precisamente por eso está ahí esa tarea que elimina los caducados. ¿Qué es lo que ocurre entoces? Pues que es evidente que muy bien no funciona porque la mayoría de esos 40.000 registros son transients. Más de 35.000, de hecho. Y la búsqueda se realiza a través del campo wp_options que como vemos no está indexado. Fatal. La primera aproximación al problema pasa, pues, por crear un índice sobre esa columna:

MariaDB [unlugar]> alter table wp_options add index (option_name);
Query OK, 0 rows affected (3 min 47.86 sec)         
Records: 0  Duplicates: 0  Warnings: 0

Mano de santo, oigan. Al día siguiente a las 9.04 por primera vez en meses el blog no se colgó. ¿Lo dejo así?¿Con una tabla diez veces mas grande que el contenido de todo lo escrito en el blog?¿Hasta donde la dejo crecer entonces? Toca hacer otra búsqueda y por ahí me encuentro con mucha mas gente que ha tenido problemas similares y que asegura que se puede hacer tábula rasa y borrarlos todos. Así que hago un backup rápido, los elimino… y parece que todo va bien. Fantástico 🙂

¿Cómo eliminarlos? Pues a través de línea de comando es fácil:

MariaDB [unlugar]> DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')

Puestos a buscar una solución más cómoda y permanente para no llegar de nuevo aquí dentro de 10 años encontré otro plugin (Transient Cleaner) que te permite borrarlos puntualmente y/o programar una tarea para hacer una limpieza mas efectiva que la de wordpress de forma periódica.

Y listo. O eso parece. Mañana los baños. Sin falta 🙂

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: WordPress. El misterioso caso del cuelgue diario a las 9 de la mañana || Hospedado en un Cloud VPS de Gigas.

Martes 22 de mayo de 2018

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Cuenta oficial en Twitter de LXQt y LXQt 0.13.0

Con el nuevo lanzamiento de LXQt, ya van por la versión 0.13.0, el proyecto lanza su cuenta oficial en Twitter: https://twitter.com/LXQtOfficial Y luce así de bien:

¿Qué trae de nuevo LXQt? Pues según sus notas, muchas correcciones a errores: https://blog.lxqt.org/2018/05/release-lxqt-0-13-0/

Combinaciones de teclas útiles

Un par de combinaciones de teclas útiles que trae por defecto son:

  • Ctr + Alt + i  Abre el navegador web por defecto (¡utilísima!)
  • Ctr + Atl + e  Abre el explorador de ficheros
  • Ctr + Atl + t  Abre el terminal

Control de brillo y contraste

De entre la aplicaciones disponibles de LXQt, voy a hablaros de una que me ha hecho gracia, la posibilidad de controlar el brillo de pantalla.

¿Qué es lo que me gusta de esta aplicación? Permite cambiar el brillo de pantalla tanto por hardware como por software. En un portátil puedes cambiar el brillo de la pantalla modificando la intensidad luminosa de los LED que hay detrás de la pantalla. En un ordenador de sobremesa esto no se puede hacer, pero te permite cambiar el brillo de la pantalla por software y es algo muy agradable a la vista. ¡Sobre todo con pantallas excesivamente brillantes!

Aprovechando el espacio de la pantalla eliminando las barras de título

Otra curiosidad, si pulsáis sobre una barra de menús con el clic derecho del ratón y seleccionáis “Decorar”, se eliminan las barras de título. Muy útil para aprovechar todo el espacio disponible de la pantalla. Por ejemplo:

Es esta captura de pantalla, he puesto el panel a la izquierda y he eliminado la barra de título del terminal. Como se puede ver la pantalla se aprovecha mejor.

Para volver a decorar las ventanas, pulsamos Atl + espacio. Aunque, yo las gestiono pulsando con el botón derecho del ratón sobre su icono en el panel.

Y Wayland… ¿Para cuándo?

Los desarrolladores están teniendo ardientes debates sobre el tema: https://github.com/lxqt/lxqt/issues/1011

La postura que están adoptando es mantenerse independientes del gestor Wayland usado, de forma que se puedan usar las herramientas LXQt en cualquier gestor de composición Wayland. Parece que tienen claro que no van a reescribir otro compositor Wayland más habiendo opciones disponibles. Aunque hay voces que apuntan a que finalmente, por la estructura de Wayland, no va quedar más remedio.

Viernes 23 de marzo de 2018

José María Morales Vázquez

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

Bootstrap 4. Primeros pasos

icono de php Bootstrap es una colección de elementos, plantillas y componentes HTML, CSS y Javascript para crear rápidamente páginas web con un aspecto moderno y “responsivo” (¡menudo palabro!) al tamaño de pantalla de cualquier dispositivo. Su versión 4 se liberó hace un par de meses y aporta algunos cambios significativos como, por ejemplo, la inclusión de Popper como librería javascript para “tooltips” y otros elementos emergentes y la eliminación de las tipografías Glyphicons para introducir símbolos y pictogramas.

Podemos trabajar con Bootstrap bien descargandonosla en nuestro propio servidor web, o bien usando sus librerías directamente desde los CDN que nos ofrecen. Aquí usaremos este segundo método por sus evidentes ventajas de cara a montar una primera plantilla para pruebas. Necesitamos incluir simplemente el siguiente tag en :

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />

Si vamos a usar los elementos javascript necesitamos incluir también las librerías correspondientes y, ademas, las de jquery y popper en nuestro proyecto las cuales también tienen disponible la posibilidad de enlazarlas directamente sin necesidad de descargarlas en local:

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.1/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

IMPORTANTE: los enlaces anteriores corresponden a las versiones estables más recientes en el momento de escribir esto. No suelen eliminar las versiones anteriores, pero conviene que te cerciores si llegas a este texto en un futuro lejano.

Con todo esto, la plantilla mínima de HTML para empezar a trabajar (incluyendo los enlaces correspondientes a las librerías javascript comentados) sería esta:

<!DOCTYPE html>
<html lang="es">
    <head>
    	<meta charset="utf-8" />
    	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />
    	<title>Plantilla Bootstrap</title>
  	</head>
  	<body>
		<h1>Plantilla Bootstrap</h1>

    
		<!-- Javascript opcional -->
		<!-- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    	     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.1/umd/popper.min.js"></script>
    	     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> -->
  	</body>
</html>

Sosa, verdad? Claro, aún no hemos empezado a trabajar… Si quieres ver algo más impactante, bootstrap dispone de plantillas con algo mas de chicha para tus diseños. Las tienes disponibles en este enlace. Si prefieres empezar desde cero, tienes disponible un montón de La documentación bastante fácil de seguir que incluye multitud de ejemplos prácticos para empezar a trabajar desde el primer minuto.

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: Bootstrap 4. Primeros pasos || Hospedado en un Cloud VPS de Gigas.

Lunes 19 de marzo de 2018

Baltasar Ortega

Baltasar Ortega
KDE Blog

Presenta tu charla para Akademy-es 2018 de Valencia

Hace tiempo que se anunció la sede y desde ese momento el blog va dando los detalles necesarios para ir abriendo boca.. Y es que en poco más de mes y medio se celebrará en Valencia la reunión anual en España de usuarios y desarrolladores de KDE, Akademy-es 2018. Concretamente se celebrará del 11 al 13 de mayo y es el momento de seguir preparando el programa. Como el evento es una celebración comunitaria se abrió en el momento del anuncio de la sede la posibilidad de que todo el mundo, además de acudir,  participara de forma activa. Así que presenta tu charla para Akademy-es 2018 de Valencia y muestra a toda el mundo tu proyecto personal o comunitario.

Presenta tu charla para Akademy-es 2018 de Valencia

Recordemos que en Akademy-es se realizarán las típicas charlas que presentan las novedades tanto de las aplicaciones como de las herramientas de programación, sin olvidar de los proyectos activos o de aquellos de los que se quieren lanzar en un futuro cercano.

En anteriores ediciones en estas charlas (extraído del programa de Akademy-es 2017 de Almería) descubrimos KDE,  nos pusimos a colaborar con KDE, conocimos la asociación KDE España, aprendimos más de Plasma 5, vimos pinceladas de un posible futuro de KDE, aprendimos como colaborar con KDE sin ser programador, conocimos mejor la relación de Slimbook co KDE, aprendimos a hacer aplicaciones para el móvil y recibimos las primeras leccions de Qt.

¿Y qué encontraremos en esta edición? Pues depende de ti, ya que si tienes algún tema que crees que interesará a la Comunidad KDE y sus simpatizantes, no lo dudes a y presenta tu charla para Akademy-es 2018. Estaremos encantados en escuchar tu propuesta.

Si quieres más información, basta con que leas el siguiente texto oficial o que visites la web oficial de Akademy-es 2018, no obstante aquí te lo puedo contar yo:
Para proponer actividades se deberá enviar un correo a akademy-es-org@kde-espana.es antes del 31 de marzo con un resumen breve de la presentación.

Presenta tu charla para Akademy-es 2018Es importante tener en cuenta las siguientes consideraciones:

  • Se puede elegir entre dos formatos de charlas:
    • Charlas de 30 minutos.
    • Lightning talk de 10 minutos.
  • Si la duración de las charlas propuestas no se ajusta a ninguno de estos dos esquemas (por ejemplo, si se necesita más tiempo), esto debe indicarse claramente en la comunicación.
  • Se permitirá a KDE España la distribución bajo una licencia libre de todo el material utilizado para la realización de la actividad, así como de la grabación de la misma.
  • La charla puede ser tanto a nivel de usuario como de nivel técnico.

Se trata de una gran oportunidad de darte a conocer en el mundo KDE y en el mundo del Software Libre en general.

Más información: Akademy-es 2018

¿Qué es Akademy-es?

Akademy-es (#akademyes, que es la etiqueta para las redes sociales) es evento más importante para los desarrolladores y simpatizantes de KDE, que se ha ido celebrando desde el 2006 con éxito creciente.

En general, las Akademy-es son el lugar adecuado para conocer a los desarrolladores, diseñadores, traductores, usuarios y empresas  que mueven este gran proyecto.

En ellas se realizan ponencias, se presentan programas, se hace un poco de caja para los proyectos libres (camisetas, chapas, etc) pero sobre todo se conoce a gente muy interesante y se cargan baterías para el futuro.

Podéis repasar las anteriores ediciones en estas entradas del blog:

Domingo 18 de marzo de 2018

Baltasar Ortega

Baltasar Ortega
KDE Blog

Noticias linux 02, tercer domingo de marzo de 2018

Esta semana sigue la sección que inicié de forma no oficial ya hace más de un mes y que se dedica a mostrar las novedades del mundo GNU/Linux que no aparecen en el blog por falta de tiempo y que deberían aparecer. Así que os doy la bienvenida a Noticias linux 02, correspondiente tercer domingo de marzo de 2018 con Firefox, Kubuntu, Plasma 5.12.3 y editores multimedia GNU/Linux

Noticias linux 02, tercer domingo de marzo de 2018

La semana de las mil actividades ha llegado a su fin, dejándome a las puertas de otra un poco más relajada en cuanto a obligaciones laborales, pero llena de tareas que hacer para poder sobrevivir a este tercer trimestre que llega.

Así que aprovecho la tranquilidad de este domingo para seguir con la nueva sección de Noticias Linux, que llega a su segunda edición, compartiendo noticias que han aparecido en otros blogs o webs y que hubiera estado genial que aparecieran en éste.

Firefox lanza su versión 59

Mientras esperamos que madure Falkon, los usuarios de la Comunidad KDE podemos seguir utilizando Firefox, el gran explorador web, que sigue mejorando y evolucionando.

Según podemos leer en Genbeta, el pasado 13 de marzo fue lanzado Firefox 59, una nueva versión del excelente explorador (disponible ya en las principales distribuciones GNU/Linux) que nos ofrece las siguientes novedades:

  • Tiempos de carga de página más rápidos.
  • Posibilidad de arrastrar y soltar nuestros “sitios favoritos en Firefox Home (la pantalla que aparece si creamos una nueva pestaña)
  • Posibilidad de desactivar la notificación que indica que una web está intentando acceder a la cámara.

Más información: Firefox

Plasma 5.12.3 ya disponible para Kubuntu 17.10

Noticias linux 02Los usuario de Kubuntu 17.10 están de enhorabuena. Según leemos en Ubunlog, ya está disponible la versión de Plasma 5.12.3 para sus escritorios.

Para hacerlo debéis activar los repositorios backports, abriendo una konsola y escribiendo los siguientes comandos:

sudo add-apt-repository ppa:kubuntu-ppa/backports -y
sudo apt update && sudo apt full-upgrade
Pero alerta, como dicen en el Ubunlog “Si tenemos una versión anterior a Kubuntu 17.10, no solo se actualizará el escritorio sino también la distribución
Más información: Kubuntu

Los 10 mejores editores Multimedia

Y finalizo esta entrada de Noticias Linux 02, con otra mención a un blog que se ha convertido en imprescindible para cualquier simpatizante del Software Libre: Maslinux.

En esta ocasión nos ha obsequiado con un recopilatorio de los 10 mejores editores multimedia GNU/Linux:  A modo de resumen, los mejores editores en orden de aparición son: Shotcut, VidCutter, FlowBlade, Kdenlive, Blender, Openshot, Cinelerra, Pitivi, Ardour y Rosegarden.
Y como siempre digo, son todos los que están, pero no están todos los que son. ¿Qué noticia os ha llamado la atención esta semana? Ponedlo en los comentarios y mejores esta entrada.

 

 

 

 

Sábado 17 de marzo de 2018

Baltasar Ortega

Baltasar Ortega
KDE Blog

Helium 8, un nuevo tema para Plasma

Volvemos a tema de diseño al blog con Helium 8, un nuevo tema para Plasma de tono grisáceo y ligero. Una gran creación de David Linares, conocido como @mcder3 que sigue ofreciéndonos diseños muy cuidados.

Helium 8, nuevo tema para Plasma

Los temas para el escritorio Plasma de la Comunidad KDE son sutiles pero importantes. La verdad es que todos se parecen mucho inicialmente, pero una vez instalados y tras un poco tiempo de uso ves las diferencias y decides si te gusta o no.

Y esto es así porque aunque los cambios son sutiles, abarcan a todo el sistema: iconos de la bandeja del sistema, pantalla de apagado, reinicio o cambio de usuario, animaciones al ejecutar aplicaciones, decoraciones de plasmoide, etc.

Es por ello, que me complace presentaros la nueva creación de David Linares (aka @mcder3) con la que tendremos un Plasma, como con todos sus diseños, elegante y ligero, con transparencias adecuadas y con un tono grisáceo.

Helium 8

 

También es de detacar su pantalla de salida y las animaciones con toques azulados cuando se ejecutan aplicaciones y se colocan en la barra de tareas. Todo muy sencillo pero visualmente muy atractivo.

 

Y como siempre digo, si os gusta el tema Helium 8 para Plasma podéis “pagarlo” de muchas formas, desde donaciones a mcder pasando por todo tipo de acciones en la página de KDE Store, que estoy seguro que el desarrollador lo agradecerá: puntúale positivamente, hazle un comentario en la página o realiza una donación. Ayudar al desarrollo del Software Libre también se hace simplemente dando las gracias, ayuda mucho más de lo que os podéis imaginar, recordad la campaña I love Free Software Day 2017 de la Free Software Foundation donde se nos recordaba esta forma tan secilla de colaborar con el gran proyecto del Software Libre y que en el blog dedicamos un artículo.

Más información: KDE Store

Martes 13 de marzo de 2018

TutorialesLinux.com: Herramientas de análisis de tráfico

Domingo 11 de marzo de 2018

José María Morales Vázquez

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

Laravel 5.6. Estructura y primeros pasos: Autenticación de usuarios

icono de php Ya yenemos Laravel 5.6 instalado en alguno de los dos entornos que hemos visto antes. ¿Qué sigue? Lo primero, entender un poquito la estructura de directorios que nos ha creado composer. Sólo lo imprescindible. El resto lo iremos viendo a medida que avanzamos.

josemaria@valeria /var/www/html/prueba $ ls -la
total 236
drwxr-xr-x 12 root www-data   4096 mar  9 19:31 .
drwxr-xr-x  3 root www-data   4096 mar  9 18:29 ..
drwxr-xrwx  6 root www-data   4096 ene  3 17:52 app
-rwxr-xrwx  1 root www-data   1686 ene  3 17:52 artisan
drwxr-xrwx  3 root www-data   4096 ene  3 17:52 bootstrap
-rw-r--rw-  1 root www-data   1413 ene  3 17:52 composer.json
-rw-r--rw-  1 root www-data 143565 mar  8 07:37 composer.lock
drwxr-xrwx  2 root www-data   4096 ene  3 17:52 config
drwxr-xrwx  5 root www-data   4096 ene  3 17:52 database
-rw-r--r--  1 root www-data    612 mar  9 19:31 .env
-rw-r--r--  1 root www-data    565 ene  3 17:52 .env.example
-rw-r--r--  1 root www-data    111 ene  3 17:52 .gitattributes
-rw-r--r--  1 root www-data    146 ene  3 17:52 .gitignore
-rw-r--rw-  1 root www-data   1125 ene  3 17:52 package.json
-rw-r--rw-  1 root www-data   1040 ene  3 17:52 phpunit.xml
drwxr-xrwx  4 root www-data   4096 ene  3 17:52 public
-rw-r--rw-  1 root www-data   3550 ene  3 17:52 readme.md
drwxr-xrwx  5 root www-data   4096 ene  3 17:52 resources
drwxr-xrwx  2 root www-data   4096 ene  3 17:52 routes
-rw-r--rw-  1 root www-data    563 ene  3 17:52 server.php
drwxrwxrwx  5 root www-data   4096 ene  3 17:52 storage
drwxr-xrwx  4 root www-data   4096 ene  3 17:52 tests
drwxr-xrwx 36 root www-data   4096 mar  8 07:38 vendor
-rw-r--rw-  1 root www-data    549 ene  3 17:52 webpack.mix.js

El directorio public ejerce de DocumentRoot. Allí encontraremos el index.php que da entrada a nuestra aplicación web así como las hojas de estilos, etc. El fichero .env que vemos aquí arriba en el directorio raiz de nuestra aplicación es el fichero de configuración principal. De hecho, puesto que vamos a empezar a trabajar con bases de datos en este momento podemos aprovechar para editar las siguientes directivas:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secreto

Importante: aunque usemos mariadb la directiva DB_CONNECTION debe de ser mysql porque Laravel no entiende otra y, a fin de cuentas, ambas son compatibles a nivel binario. Para que Laravel sea capaz de hacer uso de esa base de datos debemos de crearla. A ella y al usuario que le hemos dicho que va a usar para manejarla. Entramos en nuestro gestor (mysql o mariadb) y ejecutamos lo siguiente:

CREATE DATABASE laravel;
CREATE USER laravel@localhost IDENTIFIED BY 'secreto';
GRANT ALL ON laravel.* TO laravel@localhost;

Vamos ahora a crear nuestro sistema de autenticación. Laravel viene ya con un módulo llamado User.php que reside en el directorio app. Para generar el resto de lo que necesitamos ejecutamos lo siguiente:

php artisan make:auth
php artisan migrate

La primera línea crea el código y rutas necesario para la gestión de usuarios. En particular, creará o modificará los siguientes ficheros:

routes/web.php
resources/views/auth/login.blade.php
resources/views/auth/register.blade.php
resources/views/auth/passwords/email.blade.php
resources/views/auth/passwords/reset.blade.php

La segunda instrucción crea la estructura de tablas necesaria en la base de datos que hemos configurado previamente. Si ahora volvemos a cargar la web de nuestro aplicación veremos que en la esquina superior derecha tenemos dos nuevos enlaces correspondientes a las funcionalidades de Login y Registro:

Laravel 5.6 con la funcionalidad de login y registro

Las pantallas de registro y login por defecto son estas:

Pantalla de registro en Laravel 5.6
Pantalla de login en Laravel 5.6

Y una vez hecho login vemos que en la barra de menú se nos identifica con nuestro nombre de usuario y tenemos la posibilidad de cerrar sesión:

Logout en Laravel 5.6

Si le echamos un vistazo a “las tripas” vemos que nos ha creado dos tablas una de las cuales, la de usuarios, es la que guardará la información relativa a los registros de usuarios.
Tablas creadas por Laravel 5.6 para la autenticación de usuarios

Además, tal y como está mandado, vemos que no almacena las contraseñas en claro sino un hash de las mismas:

hash de las passwords en Laravel 5.6

La castellanización de los recursos es tan sencilla como editar alguno de los ficheros php que hemos indicado anteriormente. Por ejemplo, el fichero login.blade.php es el que contiene la ventana de login y register.blade.php la de registro. Con muy poco esfuerzo tendremos las ventanas anteriores en perfecto castellano. Pero eso ya os lo dejo a vosotros 😉

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: Laravel 5.6. Estructura y primeros pasos: Autenticación de usuarios || Hospedado en un Cloud VPS de Gigas.

Jueves 01 de marzo de 2018

TutorialesLinux.com: Vulnerabilidad en Memcached (DDoS), cómo solucionarla.

Sábado 24 de febrero de 2018

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Viendo la degradación de la batería de un portátil

Las baterías de los portátiles, móviles y otros dispositivos van perdiendo capacidad con el tiempo. Esta pérdida de capacidad la podemos comprobar con diversas herramientas.

Por ejemplo, con la aplicación de gestión de la batería de LXQt se puede ver la siguiente captura:

En esta captura se puede comprobar que en el diseño original tenía una capacidad de 51.50Wh. Actualmente tiene 45.44Wh, por lo que su capacidad total se ha reducido, está al 88% de su capacidad inicial, es decir ha perdido un 12% en los 4 años que lleva en uso. Realmente si la batería estuviera totalmente vacía o totalmente llena se degradaría más rápido, por lo que la electrónica no debería dejar que la batería se llene o vacíe totalmente.

En siguiente parámetro es “Energy rate”. Muestra la energía que está entrando o saliendo de la batería en el momento actual. Según se ve, el portátil está consumiendo 10.22W en el momento de hacer la captura. Cuando el portátil está cargando, muestra la energía que está entrando en la batería y es fácil ver valores de 30W, aunque esta potencia que entra en la batería va bajando según se va llenando.

En la siguiente captura se puede ver que el “Energy rate” vale 0W:

En esta situación la batería está cargada y el portátil conectado a corriente eléctrica, por lo que no entra ni sale energía de la batería.

Consultar la degradación vía terminal

Usando el terminal del Linux es posible consultar la degradación de la batería y otras características visitando la carpeta /sys/class/power_supply/. Dentro de esta carpeta hay archivos que se pueden consultar para ver la capacidad, el voltaje o la intensidad eléctrica que está entrando o saliendo la batería.

Evolución de la degradación y tratando de evitarla

En teoría las baterías nuevas se degradan un poco, luego bajan linealmente para, finalmente, morir rápidamente. Más información se puede encontrar en el siguiente enlace:

http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries

La primera conclusión que se obtiene del artículo anterior es: no se puede evitar la degradación de la batería. Lo que sí se puede hacer es que esta degradación vaya más despacio.

Dentro de la batería se producen multitud de reacciones químicas. La mayoría de ellas interesan, pero hay otras que no. Se suele recomendar no cargar la batería más allá del 80% y no dejar que su nivel baje del 20%. Si se llena o vacía la batería completamente, comienzan estas reacciones químicas que no interesan. Es mejor pequeñas cargas y descargas que llenarla y vaciarla completamente. Si el fabricante ha sido responsable, habrá dejado un margen de la batería que no podréis usar, este margen es para evitar la degradación.

La temperatura es también un factor importante. Las temperaturas muy altas, degradan las baterías a mayor velocidad. Por esta y otras causas, siempre vais a leer que no hay que dejar los dispositivos electrónicos al Sol o bajo otras fuentes de calor.

Cuando la temperatura de la batería es baja, su desempeño empeora. Pero esta situación en un portátil va a ser difícil que se dé.

Curiosidades

En Internet se puede encontrar información de portátiles o teléfonos que han explotado. Esto ha sido investigado y se debe a que se forman dendritas dentro de la batería que acaban formando cortocircuitos y provocando que se incendien:

https://computerhoy.com/noticias/hardware/esto-es-que-provoca-que-exploten-baterias-metal-litio-52834

Otra curiosidad son las baterías de Ni-Fe que no sufren ningún tipo de degradación. Pueden llegar a durar más de 20 años y no sufrir ni el 2% de degradación. Y como extra su reciclaje es muy simple:

https://en.wikipedia.org/wiki/Nickel%E2%80%93iron_battery

Su punto débil, su peso y volumen. Pero se pueden usar para otros usos como instalaciones solares en los que los paneles recargan las baterías cuando hay Sol y se obtiene la electricidad cuando es de noche:

http://www.zappworks.com/battery_prices.htm

Como veis en el anterior enlace los precios son prohibitivos.

Ya se comienzan a escuchar otras tecnologías novedosas como las baterías de ánodo de grafeno, de electrolito sólido, Litio-azufre,…

Habrá que esperar para ver cuál de ellas acaba desarrollándose de forma definitiva.