Jueves 24 de mayo de 2018

Asociación LiGNUx: El reproductor SMPlayer acaba de publicar su versión 18.5

インプラントとク

インプラントとクラウンの決定的な相違は、歯根部が残っているかどうかの違いです。虫歯などで、歯の損傷が激しくても、歯根部が健全であれば冠状の義歯としてクラウンという義歯をはめられます。抜歯した場合の選択は、入れ歯もありますが、歯根部の代用として、あごの骨に人工歯根を埋入するというインプラント治療が候補となります。いなかで家が広いせいか、着なくなった和服や小物類が家にはどっさりあります。出してみると保管状態が悪いものもありましたが、それなりの値段がついたので良かったです。訊ねてみたら、最近の中古品は、昔なら断っていたようなシミでも、業者が染み抜きの手配をするため、買い取るパターンのほうが多いそうです。とはいえ、査定額はそれなりです。でも自分でシミ抜きする手間を考えたら気楽ですね。
FX投資を始めようとする際に金額はどれ程用意したらいいかというと、業者に口座開設をする時か、もしくは取引をする時に最低証拠金を預ける必要があり、ですからどのFX業者を利用するかにより用意したい金額は変わってきます。必要とされる最低証拠金を100円と設定しているところもありますし5千円~5万円の所もあって割と色々です。さらに、最小取引単位についても業者によって違います。1000通貨のところもあり10000通貨になっているところもありますが、FXの経験がない、全くの初心者の場合は迷わず1000通貨単位にしておけば大きな危険を冒さなくて済みそうです。

施術では下処理が肝心です。事前シェービングは、脱毛サロンでの施術前日には済ませておきましょう。なるべく肌の状態を良くして臨みたいですから、前々日か3日くらい前が理想的です。あまりギリギリだと、つい忘れてしまったなんてこともありますよね。気持ちの準備は万端で行ったものの、施術前の下準備ができていないからと脱毛してもらえないなんて、がっかりですよね。日にちに余裕を見て処理しておくことが大事です。売却物件の印象をアップするコツとしては、明るさ、清潔さ、広さが大切です。電気代をケチらず、照明はあるだけスイッチを入れ、しっかり片付けて室内を広く見えるようにして、隅っこや端まで念入りに掃除するようにしましょう。例えば、ホコリは当然として、水滴も残さないことです。ホテルのように拭き取るのです。あとはニオイも忘れずに気をつけたいポイントですね。向こうは欠点をみつけようとしてくるというくらいの気持ちで物件を手入れし続けることが大切です。

金買取業者の中には、ネットでの申し込みを受け付けているところがあります。買取額の目安がサイト上で見られたり、メールで簡単査定を受け付けている店舗も見られます。ネットを通じて買取をしてもらう時は、免許証など身分を証明するもののコピーを送る必要があります。少しでも高い金額で売却するためには、条件の良いお店を選ぶことが大切です。買取額が高くても手数料を引かれてしまう場合もありますが、手数料を無料にしている店舗も増えてきましたので、店舗選びの際の参考にできます。
多くの方が「顔の産毛を脱毛サロンで処理したい」と思うようになってきました。顔の産毛脱毛が波及して、にきびがよくなる、肌に透明感が出る、さらには化粧ノリがアップしたりと、美容面でも効果が見込めます。こうした点が売りになるので、脱毛サロンが顔脱毛を提供していると人気が出やすいのです。ただし、何分顔は敏感ですし、価格だけで決めず、テクニックに長けたサロンをじっくり選ぶようにしてください。

脱毛サロンではほとんどの場合、バラバラよりもコース同士を組み合わせた方が良いです。脱毛したい場所がいくつかあり、それらをいっぺんにやってもらいたいなら、複数のコースを組み合わせると、別々に処理するよりは安く済みます。安く済むからとホッとして、高額でも大丈夫だとその場の雰囲気に押されて契約すると、自分の行動の浅はかさを嘆く羽目になるかもしれません。どんな店が自分に合っているのかを見極めて契約内容を確かめてからどうするのか決めるようにします。

完全に配偶者の浮気をやめさせ、相手と手を切らせる方法としては、不倫の明らかな証拠を押さえ、それを元に慰謝料請求するというのが一番です。たとえばちょっとしたお遊びとか、本人たちは後先のことまで考えが及んでいないケースも多いですから、代償としての慰謝料を要求することにより、事態の深刻さを自覚させることができるでしょう。

現金融資はカードを使って行うのが大半となっていますが、現代では、カードがなくても、キャッシングが使用可能です。ネットによりキャッシングの申込をすると、銀行口座に振込みしてもらえるのです。カードを紛失する恐れがありませんし、素早くキャッシングが使用可能でしょう。

不動産売却を行い利益が生じた時は、譲渡所得税が課税されるケースがあります。不動産の所有期間が5年を超える長期だった場合、譲渡所得税は所得税が15%、住民税が5%という税率で計算されます。所有期間が5年以下の短期であればさらに倍の税率になります。いつ頃納税すればいいのかというと、所得税と住民税で異なり、所得税が売却の翌年の2月16日から3月15日までの間に一括払いで、一方、住民税は四半期ごとの納付に分かれています。

続きはこちら>>>>>一時にシースリー熊谷店まい

Miércoles 23 de mayo de 2018

Asociación LiGNUx: El editor fotográfico Gimp acaba de publicar su versión 2.10.2 con soporte HEIF

Martes 22 de mayo de 2018

Asociación LiGNUx: La distribución Gnu Linux Parrot Security OS acaba de anunciar su versión 4.0
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.

Sábado 19 de mayo de 2018

Fabric, automatiza tareas en remoto

En la medida de lo posible tenemos que automatizar todo lo posible. No solo reducimos tiempo sino que reducimos errores, y a la vez, estamos documentando un proceso. Muchas de estas ideas ya las dejé claras en ¡Haz scripts! Sin embargo, hay situaciones donde es más complicada esta situación, como por ejemplo, trabajar con máquinas remotas. Aquí entra Fabric en acción, una librería para Python que permite automatizar procesos en remoto a través de SSH.

Originalmente Fabric, compatible únicamente con Python 2, funcionaba a través de unos archivos llamados Fabfile que se ejecutaban con el comando fab. Este mecanismo ha sido transformado por completo en Fabric 2, que ha salido hace nada. Yo ya he hecho la transición y puedo decir que el nuevo sistema, más enfocado a ser una librería sin más, es mucho más práctico y útil que el anterior.

Instalando Fabric

Voy a usar Pipenv, que es la manera recomendada de gestionar proyectos en Python actualmente.

pipenv install fabric==2.0.1

Y accedemos al virtualenv con:

pipenv shell

Conexiones

El elemento fundamental de Fabric a partir de la versión 2 son las conexiones. Estos objetos representan la conexión con otra máquina y podemos:

  • ejecutar comandos en el shell de la otra máquina, run, sudo.
  • descargar archivos desde la máquina remota a local, get
  • subir archivos de local a remoto, put
  • hacer forwarding, forward_local, forward_remote.

Para iniciar una conexión necesitamos la dirección de la máquina y alguna manera de identificarnos. En todo el tema de la autenticación Fabric delega el trabajo en Paramiko, que soporta gran variedad de opciones, incluida la opción de usar gateways.

Vamos a mostrar un ejemplo, en este caso, de autenticación con contraseña:

from fabric import Connection
from getpass import getpass

password = getpass(prompt="Password for Numancia: ")
numancia = Connection(host="192.168.0.158",user="roma",connect_kwargs={"password" : password})

El objeto creado con Connection ya lo podemos usar. Habitualmente no es necesario cerrar la conexión aunque en casos extremos puede ser necesario, una manera es llamando a close, otra es con un bloque with.

Tareas

Una vez que ya tenemos la conexión podemos pasárselo a diferentes funciones, cada una con una tarea distinta. Veamos algunos ejemplos.

Actualizar con apt

def update(cxn):
    cxn.run("sudo apt update")
    cxn.sudo("apt upgrade -y")

Los comandos que necesiten sudo pueden necesitar una pseudo-terminal para preguntar la contraseña (si es que la piden, no todos los servidores SSH piden contraseña al hacer sudo). En ese caso añadimos, pty=True.

def update(cxn):
    cxn.run("sudo apt update",pty=True)
    cxn.run("sudo apt upgrade -y",pty=True)

 

Backup de Mysql/Mariadb y cifrado con gpg

def backup_sql(cxn):
    date = time.strftime("%Y%m%d%H%M%S")
    filename = "/tmp/blog-backup-"+date+".sql.gz"

    cxn.run("sudo mysqldump blog | gzip > "+filename)
    local_filename = "backups/"+os.path.basename(filename)
    cxn.get(filename,local_filename)
    cxn.run("sudo rm "+filename)
    os.system("gpg --cipher-algo AES256 -c "+local_filename)
    os.remove(local_filename)

Requiere que MySQL/MariaDB esté configurado con la opción de autenticación POSIX (modo por defecto en el último Ubuntu)

Como véis, usar Fabric es muy sencillo, ya que apenas se diferencia de un script local.

Si queremos obtener el resultado del comando, podemos simplemente asignar a una variable la evaluación de los comandos run/sudo.

def isLinux(cxn):
    result = cxn.run("uname -s")
    return result.stdout.strip() == "Linux"

Grupos

Fabric es muy potente, pero en cuanto tengamos muchas máquinas vamos a hacer muchas veces las mismas tareas. Podemos usar un simple bucle for, pero Fabric nos trae una abstracción llamada Group. Básicamente podemos juntar conexiones en un único grupo y este ejecutas las acciones que pidamos. Existen dos tipos de grupo, SerialGroup, que ejecuta las operaciones secuencialmente y ThreadGroup que las ejecuta en paralelo.

from fabric import ThreadingGroup

def update(cxn):
    cxn.run("sudo apt update")


pool = ThreadingGroup("roma@192.168.0.158","madrid@192.168.0.155")
update(pool)

O si tienes ya objetos de conexión creados:

from fabric import ThreadingGroup

def update(cxn):
    cxn.run("sudo apt update")

pool = ThreadingGroup.from_connections([roma,madrid])
update(pool)

Con esto ya deberías saber lo básico para manejar Fabric, una fantástica librería para la automatización en remoto. Yo la uso para este blog y otras webs. Existen alternativas como Ansible, aunque a mí nunca me ha terminado de gustar su manera de hacer las cosas, que requiere mucho más aprendizaje.

La entrada Fabric, automatiza tareas en remoto se publicó primero en Adrianistán.

治療ではインプラント埋入手

治療ではインプラント埋入手術が一番の山ですが、部分麻酔が使われ、全身麻酔になることはほとんどありません。ただし、糖尿病や心疾患など、麻酔や出血に関わる持病がある場合は入院設備のあるところで、一晩様子を見ながら手術を行うこともあります。また、インプラントを埋入するあごの骨の厚みがない場合、埋入手術以前に、骨の厚みを増す手術をしなければなりません。腸骨など自分の骨を削り出し、移植する場合、手術が二回以上になる場合や、入院する場合もあります。このような難しい治療を行う場合、信頼できる歯科医とよく話し合った上で、治療計画を立てていってください。有名ブランドの、人気のある商品ばかり店頭に置くことを目指している買取業者の場合、使用感のある古めの製品、型落ちの製品などは、人気も需要もありませんから店の方針として、買い取ってもらえない場合が多いです。こうして買い取り拒否された商品はどうすれば良いかと言うと、新品購入時の付属品、外箱やギャランティカードといったものがなくてもつべこべ言わず、買い取りを引き受けてくれるお店を利用するのが良いでしょう。なんでも買い取ってくれる反面、買取額が総じて低いという難点もありますから、全部ひっくるめて買取に出さず、高い査定額が出そうな物は分けておき他のところで売るようにするべきでしょう。

普通の脱毛サロンでは光脱毛方式を採用しています。皮膚に脱毛クリニックのレーザーよりパワーを落とした光を照射し、抜きたい毛の根元の色素を刺激し、発毛しにくい状態を作ります。使用機器や施術前後のケアは脱毛サロンによって異なっていて、それにより肌への負担や施術の際の痛みも違ってきて、何がベストとは言い切れません。自分でお試しコースなどで体験して違いを見極めるほかないです。クチコミと脱毛サロンでの説明で契約を決めるのは、おすすめしません。
脚のムダ毛を脱毛などをしてくれるサロンを訪れずに、自宅で綺麗に剃るのは困難です。脚はいたることろが曲線ですし、やりにくい部分もあるので、自宅での処理だけで無駄毛がこれっぽっちもないつるつるの状態にするのは手間と時間がかかるでしょう。でも、脱毛サロンに足を運べば、脱毛を忘れたムダ毛がうっかり残ってしまったなんて事態にもなりませんし、肌に負担がかかることも少ないはずです。
使用感というのは個人差がありますから、自分に合った脱毛サロンを探すことが大事です。洗練された内装とサービスなど、脱毛時にも優雅さを求める人には、料金は高めでもエステサロンの系列をお勧めします。価格重視で安価に脱毛する場合は、月額払い制のある脱毛サロンだとかキャンペーン中で割安にできるサロンが向いています。そのほか、行きやすいところにあるかも大事ですから、学校や職場の帰り道といった立ち寄りやすいところがよいでしょう。
酵素飲料はどのタイミングで飲むのがいいのでしょう?酵素ジュースを飲用するなら、お腹が空いている時が一番有効です。空腹の時に服用すると、吸収効率がアップするため、酵素を手っ取り早く摂取することができます。一日の中で一回酵素飲料を飲むのなら、朝目覚めたらすぐに服用してください。朝ごはんを酵素飲料に置き換えるというのも痩せる手段としていいですね。もう着ない着物があって、高値で買い取ってもらえたら着てくれる人に引き継ぎでき、お金も手に入って嬉しくなりますね。状態が良く新品に近いものは、高値がつく期待も持てます。そして流行の柄、上質の素材、仕立てが良いなど付加価値があると思いがけないお宝になるかもしれません。さらに、仕立てる前の反物だけでも買い取ってくれるところがほとんどです。反物も着物と同様に考え買取の相談だけでも試してください。成功報酬の難しいところは、例えば、調査内容が浮気についてだった場合には、その際の調査期間が3日間だったとするとその3日間の調査期間の間に浮気をしていなければ調査は成功ということになるでしょう。実際に浮気があったとしても、その3日間だけ浮気が見つからなければ、結局は浮気の明確な証拠をつかむことなく、専門的な調査は完了となり、事前に約束していた成功報酬を支払うことになるのです。

不倫をやめた原因として圧倒的多数を占めるのは、パートナーにバレたからというものです。ただ、一般人が自力で不倫の証拠を押さえるというのは難しく、気分的にも良いものではありません。最初から興信所や探偵業者などのプロに不倫の調査を依頼することにすれば、安全かつ堅実でしょう。そうは言っても、これは疑わしいと気付くのは、一番近いところにいる人でなければできないことです。

不動産売却を考えたときは、Webの一括査定サービスを利用するのが有効ですよ。と言うのは、査定を一社にお願いするだけでは、本来の相場がはっきりしないまま、廉価で物件を売却することになりかねないためです。そんな時に一括査定サービスを駆使して比較対象の業者の査定額も見てみてから、納得できそうだと思えたサービス内容を持つ業者に掛け合ってみるのが最も要領のいいやり方です。

お世話になってるサイト⇒なふさなふさシースリー 大分ます

Jueves 17 de mayo de 2018

La fuente matemática Garamond-Math

Este artículo es parte de la serie Recomendando fuentes tipográficas Combinar fuentes tipográficas puede ser un dolor de cabeza, especialmente cuando tenemos fórmulas matemáticas en nuestros documentos. Por esto me he alegrado al encontrar el proyecto que hoy presento Garamond-Math | An OTF math font matching the EB Garamond Ciertamente, para utilizar esta fuente necesitamos … Sigue leyendo La fuente matemática Garamond-Math

Disfruta de ChromeCast desde Gnome con GnomeCast

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} Hoy en día, quien más o quien menos es

Viernes 11 de mayo de 2018

Google I/O 2018: Android se pone seria con su seguridad

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} Después del Google I/O, el mayor evento del año por parte de Google para presentar las novedades de la

Jueves 10 de mayo de 2018

Comillas dinámicas en LyX 2.3

Pasados los meses, miro nuevamente mi libro sobre LYX y, aunque no esté bien que sea yo quien lo diga, debo admitir que me ha quedado bastante bien 😉 Pero en un punto he sido un tanto escueto: la sección 4.4.1 donde describo la nueva habilidad de la versión 2.3 de utilizar comillas dinámicas tiene … Sigue leyendo Comillas dinámicas en LyX 2.3

Domingo 06 de mayo 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

Sábado 05 de mayo de 2018

Como Virtualizar un Servidor y crear un Cluster

Virtualizar un servidor es básicamente crear mediante software una aglomeración de los recursos para que posteriormente se crear instancias o entornos. Mi recomendación es que si eres una empresa o no tienes conocimientos de informática (Virtualización, redes y subredes) mandes un correo o llames a una empresa especializada. En este caso hay una empresa en […]

La entrada Como Virtualizar un Servidor y crear un Cluster aparece primero en Blog de Informática ✏ Luisi.

Jueves 03 de mayo de 2018

LibreOffice y el escritorio Plasma

Buena noticia: El proyecto LibreOffice está desarrollando un plug-in para que su librería gráfica (VCL) pueda integrarse con Qt5 y el escritorio Plasma. Mala noticia: A juzgar por la cantidad de veces que la palabra «broken» aparece en la propuesta del próximo GSoC, falta mucho para que esa nueva interfaz resulte mínimamente utilizable. En estos … Sigue leyendo LibreOffice y el escritorio Plasma

Miércoles 02 de mayo de 2018

Instalar Rust en 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} span.s2 {text-decoration: underline ; font-kerning: none} Rust es un lenguaje de programación creado

Sábado 28 de abril de 2018

体毛の濃さにつき抜け毛間隔が多くな

体毛の濃さにつき抜毛瞬間が多くなってしまったり、最後まできれいにできないのではないかと不安に思うのは、陥りがちな間違いだ。
よく聞く光線抜毛は、黒色の色素にのみ効く輝きを打つため、敢然と抜毛製作をおこなうことが可能です。
黒ければ黒いほど大聴く反応する結果、ムダ毛が少ないよりは、体毛が多いと効能も激しく感じ取れ、抜毛効能を実感できます。
抜毛エステを比較してランクづけ始めるネットはいくつもあり、銘銘面白いだ。
但し、抜毛エステの何を比較しているのかを一概に把握することがやっと抜毛決めるという個人には必要でしょう。
金額を基準にするか、抜毛効能の会得性を注目かも、抜毛エステの品種プラスなんて変わってしまいます。
数ある考察インフォメーションを抜き出していくと、利用する上で何を重要視するのかという判断する際に役にたつでしょう。
抜毛エステでの手入れが主な光線抜毛という抜毛クリニックが提供する診療レーザー抜毛で異なる点は、どんな設備を手入れに使用してよいかにあります。
光線抜毛の場合は照射する光線の強さを規定器量まで特別しますが、診療レーザー抜毛においては、もう一度インパクトを有する光線を手入れであてかまいません。
というのも従事するのが医者資格を有する医者で「対応」として手入れをおこなうことができる結果で、レーザー抜毛の取りあつかいが抜毛エステでは見られないのはここに起因するのです。
素肌がデリケートな人間の場合ですと剃刀敗北をしてしまうことがあるものです。
あんな個人におすすめしたいのが抜毛エステでの光線抜毛だ。
この方法なら、アトピー因習をお持ちの個人も安全な手入れがもらえるようになっていらっしゃる。
側の抜毛に耐える場合であればぜひともお試しちょーだい。
ニードル抜毛の場合、毛根の中に狭いニードルを直接的差し込み、電流を押し流すので、手入れを受けた事後は赤みのある跡が止まるケー。
但し、手入れ後に抜毛ことを充分に冷やしておくとあしたには跡がすっかり消えている場合が多いので心配する必要はありません。
お宅の郵便箱に抜毛エステの折込み宣伝があることがあるでしょう。
こういった折込みはエースのサービスが開催される瞬間などに生まれ、立場に届けられます。
ですから、見逃せないお値打ち授業が買えることが多々あるので、ステージ激しく抜毛エステの成果を勘案してい立とすれば、それに乗じて応用をはじめてみてはいかがでしょうか。
レアケースではありますが、抜毛の手入れを受けた次、小気味よいやけどを担うこともあるみたいです。
その理由に、手入れに扱う光線の器量が高いすぎた為に起きてしまいます。
安全に抜毛が出来るように、ツーリストの素肌ごとに器量の取りまとめを行ってから手入れに入ります。
回を重ねるうちにその人の素肌に合う器量での手入れができるようになる結果、仮に変調を感じた場合はしっかり申し出ましょう。
殆どの抜毛エステの脱毛するのに数のマキシマムを設けていないところは、無制限であるというのに日取りがありません。
何とか抜毛が完了したのに、またムダ毛が生えてきても手入れを受けることができるのです。
また、会合箇所などで実に時間が作れないという人間にもお勧めです。
一見すると高めに思えるようですが、自分の状態などに合わせられることなどを踏まえれば、お得になることだってあり得ます。
全身脱毛するならシースリー『新越谷店』

Viernes 27 de abril de 2018

Como cumplir las leyes Españolas para tú blog o página

Lo primero es evitar los contenidos con trabas legales como nombrar o usar marcas registradas sin permiso de esta o insultar por medio de nuestra página web, por ejemplo al Rey, o alabar al terrorismo. Así que lo primero es cumplir el Código Penal, aunque estemos en Internet. Si todo esto te resulta aburrido o […]

La entrada Como cumplir las leyes Españolas para tú blog o página aparece primero en Blog de Informática ✏ Luisi.

Martes 17 de abril de 2018

Natural Language Understanding con Snips NLU en Python

Uno de los campos más importantes de la inteligencia artificial es el del tratamiento del lenguaje natural. Ya en 1955, en el primer evento sobre Inteligencia Artificial, y promovido entre otros por John McCarthy (creador de Lisp) y Claude Shannon (padre de la teoría de la información y promotor del uso del álgebra de boole para la electrónica), estas cuestiones entraron en el listado de temas.

En aquella época se era bastante optimista con las posibilidades de describir el lenguaje natural (inglés, español, …) de forma precisa con un conjunto de reglas de forma similar a las matemáticas. Luego se comprobó que esto no era una tarea tan sencilla.

Hoy día, es un campo donde se avanza mucho todos los días, aprovechando las técnicas de machine learning combinadas con heurísticas propias de cada lenguaje.

Natural Language Understanding nos permite saber qué quiere decir una frase que pronuncia o escribe un usuario. Existen diversos servicios que provee de esta funcionalidad: IBM Watson, Microsoft LUIS y también existe software libre, como Snips NLU.

Snips NLU es una librería hecha en Rust y con interfaz en Python que funciona analizando el texto con datos entrenados gracias a machine learning y da como resultado un intent, o significado de la frase y el valor de los slots, que son variables dentro de la frase.

¿Qué tiempo hará mañana en Molina de Aragón?

Y Snips NLU nos devuelve:

  • intent: obtenerTiempo
  • slots:
    • cuando: mañana
    • donde: Molina de Aragón

Pero para esto, antes hay que hacer un par de cosas.

Instalar Snips NLU

Instala Snips NLU con Pipenv (recomendado) o Pip:

pipenv install snips-nlu

pip install snips-nlu

 

Datos de entrenamiento

En primer lugar vamos a crear un listado de frases que todas expresen la intención de obtener el tiempo y lo guardamos en un fichero llamado obtenerTiempo.txt. Así definimos un intent:

¿Qué tiempo hará [cuando:snips/time](mañana) en [donde:localidad](Molina de Aragón)?
¿Qué tal hará [cuando:snips/time](pasado mañana) en [donde:localidad](Ponferrada)?
¿Qué temperatura habrá [cuando:snips/time](mañana) en [donde:localidad](Frías)?

La sintaxis es muy sencilla. Cada frase en una línea. Cuando una palabra forme parte de un slot, se usa la sintaxis [NOMBRE SLOT:TIPO](texto). En el caso de [donde:localidad](Frías). Donde es el nombre del slot, localidad es el tipo de dato que va y Frías es el texto original de la frase. En el caso del slot cuando, hemos configurado el tipo como snips/time que es uno de los predefinidos por Snips NLU.

Creamos también un fichero llamado localidad.txt, con los posibles valores que puede tener localidad. Esto no quiere decir que no capture valores fuera de esta lista, como veremos después, pero tienen prioridad si hubiese más tipos. También se puede configurar a que no admita otros valores, pero no lo vamos a ver aquí.

Burgos
Valladolid
Peñaranda de Bracamonte
Soria
Almazán
Íscar
Portillo
Toro
Fermoselle
Sahagún
Hervás
Oña
Saldaña
Sabiñánigo
Jaca

Ahora generamos un fichero JSON listo para ser entrenado con el comando generate-dataset.

generate-dataset --language es --intent-files obtenerTiempo.txt --entity-files localidad.txt > dataset.json

Entrenamiento

Ya estamos listos para el entrenamiento. Creamos un fichero Python como este y lo ejecutamos:

import io
import json
from snips_nlu import load_resources, SnipsNLUEngine

load_resources("es")

with io.open("dataset.json") as f:
    dataset = json.load(f)

engine = SnipsNLUEngine()

engine.fit(dataset)

engine_json = json.dumps(engine.to_dict())
with io.open("trained.json",mode="w") as f:
    f.write(engine_json)

El entrenamiento se produce en fit, y esta tarea puede tardar dependiendo del número de datos que metamos. Una vez finalizado, generama un fichero trained.json con el entrenamiento ya realizado.

Hacer preguntas

Ha llegado el momento de hacer preguntas, cargando el fichero de los datos entrenados.

import io
import json
from snips_nlu import SnipsNLUEngine, load_resources

load_resources("es")

with io.open("trained.json") as f:
    engine_dict = json.load(f)

engine = SnipsNLUEngine.from_dict(engine_dict)

phrase = input("Pregunta: ")

r = engine.parse(phrase)
print(json.dumps(r, indent=2))

Ahora sería tarea del programador usar el valor del intent y de los slots para dar una respuesta inteligente.

Te animo a que te descargues el proyecto o lo hagas en casa e intentes hacerle preguntas con datos retorcidos a ver qué pasa y si guarda en los slots el valor correcto.

La entrada Natural Language Understanding con Snips NLU en Python se publicó primero en Adrianistán.

Jueves 12 de abril de 2018

Introducción a Prolog, tutorial en español

Prolog es un lenguaje de programación lógico, quizá uno de los más populares de este paradigma ya que fue el primero en implementarlo, en el año 1972 en Francia.

Durante un tiempo, se creyó que PROLOG supondría la revolución de los lenguajes de programación, siendo uno de los estandartes de los lenguajes de programación de quinta generación. Tanto se creía que Borland, la famosa empresa de compiladores para MS-DOS, tenía Turbo Prolog, junto a Turbo C++, Turbo Pascal, Turbo Assembler y Turbo Basic.

Desafortunadamente, Prolog no triunfó como se esperaba y solo fue usado dentro del mundo de la Inteligencia Artificial. Existe un estándar ISO sobre Prolog (al igual que Ada, C++ y otros lenguajes estandarizados) pero no es demasiado influyente. Tampoco ha habido ningún éxito en alguna de las versiones propuestas para dotarle de orientación a objetos al lenguaje.

Prolog sin embargo ha influenciado a algunos lenguajes como Erlang, que toman algunos aspectos de él.

No obstante, Prolog sigue siendo un lenguaje muy interesante, diferente al resto de lenguajes (tanto imperativos, como funcionales), así que pongámonos a ello.

Actualmente existen varios compiladores de Prolog: SWI Prolog, GNU Prolog, Visual Prolog (al mucha gente no lo considera Prolog de verdad), …

La mejor versión bajo mi punto de vista es SWI Prolog, que tiene una librería de predicados bastante extensa. Es rápido y permite generar ejecutables nativos (realmente no lo son, pero la máquina virtual de Prolog ocupa muy poco y apenas se nota en el tamaño del ejecutable).

Lo podéis descargar gratuitamente desde su página oficial que como curiosiad, está hecha en SWI Prolog. También está en la paquetería de las distribuciones GNU/Linux habituales.

Nuestro primer programa

Para empezar con Prolog voy a tomar un camino distinto de muchos tutoriales y voy a empezar haciendo un programa con Entrada/Salida y que se ejecute como un binario independiente. La potencia de Prolog no está ahí especialmente, pero es un buen punto de partida

Para ello definimos un predicado main de la siguiente forma y lo guardamos en un fichero main.pl.

main :- 
	write("Hola Mundo"),
	nl,
	write("¿Cuál es tu nombre? "),
	read_string(user_input,['\n'],[],_,Nombre),
	write("Hola "),write(Nombre),nl,
	halt.

¿Qué hace el programa? Imprime en pantalla Hola Mundo (write), una nueva línea (nl), lee un string de teclado con el separador \n y lo unifica con la variable Nombre. Esto ya veremos que significa, pero de momento puedes pensar que Nombre es una variable de salida y que a partir de ahí Nombre tiene un valor establecido.

Compilamos con el siguiente comando:

swipl --goal=main --stand_alone=true -o main -c main.pl

Con esto le decimos a SWI Prolog que el objetivo a demostrar es main y que nos genere un fichero stand_alone (independiente).

Y ejecutamos el fichero ejecutable como uno más.

Ahora que ya sabemos como se generan programas compilados, vamos a introducirnos más en lo que hace especial a Prolog.

La terminal de Prolog

Prolog fue diseñado con una terminal interactiva en mente. La idea era que el usuario fuese introduciendo preguntas y el programa en Prolog fuese contestando. Este enfoque, similar a usar un programa desde el REPL de tu lenguaje, no ha acabado cuajando, pero es necesario pasar por él. Más adelante veremos como con SWI Prolog no hace falta usar la terminal. La terminal se abre escribiendo swipl en la línea de comandos:

Vemos un símbolo de interrogación. Eso nos permite saber que estamos en una terminal de Prolog. Podemos escribir write(“Hola”). y tener nuestro hola mundo tradicional, aunque no es muy interesante, pero sí es muy interesante que después escribe true. Más adelante veremos por qué.

Los programas Prolog

En Prolog los programas son algo diferentes a lo que estamos acostumbrados. Realmente en Prolog no hay programas sino una base de datos. Un programa se compone de predicados, muy parecidos a los del Cálculo de Predicados. Los predicados aportan información sobre las relaciones entre elementos. Todos los predicados tienen que acabar en punto.

Siguiendo las mismas normas que el cálculo de predicados:

  • Las constantes empiezan por minúscula
  • Las variables empiezan por mayúscula
  • Las funciones son constantes seguidas de N teŕminos. Son funciones estrictamente matemáticas.
  • Los predicados pueden ser atómicos o compuestos, con operadores lógicos (and, or, implica, etc)

Prolog durante la ejecución, va a intentar demostrar que el predicado es cierto, usando el algoritmo de backtracking. Y ahí está la verdadera potencia de Prolog. Veamos unos ejemplos:

fruta(manzana).
fruta(naranja).
fruta(platano).

Guarda ese archivo con extensión .pl y ejecuta swipl comida.pl.

Ahora en la terminal podemos hacer preguntas. ¿Es la manzana una fruta? Prolog responde verdadero. ¿Es la pera una fruta? Prolog responde que falso, porque según el archivo comida.pl, no lo es. Prolog no es inteligente, no sabe que significan las palabras, simplemente actúa siguiendo un conjunto de normas formales.

Hemos dicho que Prolog tiene variables. Una variable en Prolog es un marcador de hueco, es algo que no existe, porque no es ninguna constante en específico. Veamos la potencia de las variables con este otro predicado.

En este caso pedimos demostrar fruta(X).. Prolog buscará la primera solución que demuestra el predicado, que es que X valga manzana. Aquí podemos pulsar ENTER y Prolog se para o pulsar N y Prolog busca otra solución. ¿Potente, verdad? Prolog realiza un proceso interno que se llama unificación, es importante saber como funciona para ver que hace Prolog en realidad.

Unificación

La unificación es un proceso que combina dos predicados en uno que encaja. Para ello buscamos las sustituciones de valores con los que dos predicados son compatibles (realmente solo se pueden modificar las variables). No obstante, Prolog busca siempre el unificador más general, que es aquel que unifica dejando los predicados de forma más genérica posible, es decir, que pueden usarse con más valores.

Espero que esta imagen aclare el concepto de unificación. Básicamente Prolog para intentar demostrar un predicado intentará unificar con otros predicados del programa. Así cuando ponemos por ejemplo comida(manzana) , unifica con comida(X) así que Prolog toma ese predicado para continuar.

Backtracking

Cuando Prolog intenta demostrar un predicado aplica el algoritmo de backtracking. Este algoritmo recorre todas las soluciones posibles pero de forma más inteligente que la fuerza bruta. Backtracking intenta conseguir una solución hasta que un predicado falla, en ese momento, Prolog va hacia atrás y continúa por otra vía que pueda seguir.

Cada predicado es un nodo. Si un predicado falla se vuelve atrás. Esto es muy interesate ya que Prolog técnicamente puede ejecutar código hacia atrás.

Un predicado Prolog sigue esta estructura:

Predicados avanzados

Pero los predicados de Prolog no tienen por qué ser así de simples. Normalmente se usa el operador :- para indicar algo que para que se cumpla la parte de la izquierda, tiene que cumplirse la parte de la derecha antes (en cálculo de predicados es ←).

Por ejemplo, todas las frutas son comidas, así que podemos añadir esto a nuestro archivo.

fruta(manzana).
fruta(naranja).
fruta(platano).

comida(X) :- fruta(X).

Y los predicados en Prolog se pueden repetir y repetir y repetir. Prolog siempre intenta demostrar de arriba a abajo, si falla un predicado, prueba con el siguiente más para abajo y termina cuando no hay más predicados que probar. ¡Así que podemos definir comida en base a más predicados!

fruta(manzana).
fruta(naranja).
fruta(platano).

carne(pollo).
carne(vaca).
carne(cerdo).
carne(caballo).

comida(paella).
comida(pulpo).

comida(X) :- fruta(X).
comida(X) :- carne(X).

Operaciones

En Prolog existen varios operadores importantes:

  • , (coma) AND
  • ; (punto y coma) OR
  • A = B, se intenta unificar A y B. Devuelve true si funciona
  • A \= B es falso si A y B unifican
  • A is B, se evalúa B (es decir, se calcula lo que representa) y se unifica con A
  • A =:= B , evalúa A, evalúa B y los compara. Verdadero si son iguales
  • A =\= B, evalúa A, evalúa B y los compara. Falso si son iguales
  • Y muchos otros como =<, >=, >, < que tienen el comportamiento esperado.
  • Las operaciones matemáticas solo se pueden introducir en expresiones que vayan a ser evaluadas.

Quiero prestar especial atención en símbolo de igual que no es asignación sino unificación, pero puede parecerse. Estas dos líneas son equivalentes:

X = 5
% y 
5 = X

Ya que en ambos casos se unifica X con 5.

Veamos un ejemplo de todo esto, ya mucho más realista.

%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   Programa restaurante  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%	

% menu

entrada(paella).
entrada(gazpacho).
entrada(pasta).

carne(filete_de_cerdo).
carne(pollo_asado).

pescado(trucha).
pescado(bacalao).

postre(flan).
postre(nueces_con_miel).
postre(naranja).

% Valor calorico de una racion

calorias(paella, 200).
calorias(gazpacho, 150).
calorias(pasta, 300).
calorias(filete_de_cerdo, 400).
calorias(pollo_asado, 280).
calorias(trucha, 160).
calorias(bacalao, 300).
calorias(flan, 200).
calorias(nueces_con_miel, 500).
calorias(naranja, 50).

% plato_principal(P) P es un plato principal si es carne o pescado

plato_principal(P):- carne(P).
plato_principal(P):- pescado(P).

% comida(Entrada, Principal, Postre)

comida(Entrada, Principal, Postre):-
        entrada(Entrada),
        plato_principal(Principal),
        postre(Postre).
    
% Valor calorico de una comida

valor(Entrada, Principal, Postre, Valor):-
        calorias(Entrada, X),
        calorias(Principal, Y),
        calorias(Postre, Z),
        sumar(X, Y, Z, Valor).

% comida_equilibrada(Entrada, Principal, Postre)

comida_equilibrada(Entrada, Principal, Postre):-
        comida(Entrada, Principal, Postre),
        valor(Entrada, Principal, Postre, Valor),
        menor(Valor, 600).


% Conceptos auxiliares

sumar(X, Y, Z, Res):-
        Res is X + Y + Z.             % El predicado "is" se satisface si Res se puede unificar
                                      % con el resultado de evaluar la expresion X + Y + Z 
menor(X, Y):- 
        X < Y.                        % "menor" numerico

dif(X, Y):-
        X =\= Y.                      % desigualdad numerica 


% cuantas comidas llevan naranja de postre
%

comidas_con_naranja :-
	write("Comidas con naranja: "),
	aggregate_all(count,comida(_,_,naranja),X),
	write(X),
	nl.

Lo cargamos con swipl restaurante.pl y podemos contestar a las siguientes preguntas de forma sencilla:

¿Qué valor calórico tiene la comida de paella, trucha y flan?

valor(paella,trucha,flan,N).

Dime una comidas equilibrada que lleve naranja de postre

comida_equilibrada(X,Y,Z),Z=naranja.

¿Cuántas comidas con naranja hay?

comidas_con_naranja.

Variables anónimas y predicados predefinidos

Si te fijas en el predicado comidas_con_naranja, es diferente al resto. Esta programado de otra forma. La salida por pantalla se hace con write como ya habíamos visto al principio, write es un predicado que siempre es cierto y en caso de backtracking simplemente pasa. aggregate_all es también otro predicado incluido en SWI Prolog, para en este caso, contar cuantas soluciones tiene el predicado comida(_,_,naranja). X unifica en aggregate_all con el valor que toca (que es una constante, los números son constantes) y en las siguientes sentencias (write), X ha sido sustituido por el valor con el que unificó en aggregate_all.

Por otro lado, ¿qué significa la barra baja? Es una variable anónima. Cuando no usamos una variable en más lugares y no nos interesan sus valores podemos simplemente poner barra baja.

Listas en Prolog

Prolog tiene un tipo de dato más avanzado, las listas. Su tamaño es dinámico y es conveniente distinguir la cabeza de la cola. La cabeza es el primer elemento de una lista, la cola el resto de la lista.

Las listas se crean con corchetes:

X = [1,2,3,4,5],
sumlist(X,N).

sumlist es un predicado de SWI que hace la suma de todos los elementos de una lista.

Con la barra podemos separar cabeza y cola de una lista:

[1,2,3,4] = X,
[H|T] = X.

Implementando sumlist

Vamos a ver como se puede implementar sumlist con Prolog de forma sencilla.

sumar([],0).
sumar([H|T],N) :-
	sumar(T,X),
	N is X+H.

El predicado es sencillo, para un caso base de lista vacía, la suma es 0. Para otros casos más complejos separamos la lista en cabeza H y cola T y la suma es N. Esta suma se define como el resultado de sumar T (queda en X) y la cabeza H.

Assert y retract

¿Podemos crear predicados en tiempo real? Claro. Prolog provee de los predicados especiales assert para añadir y retract para eliminar un predicado.

Operador de corte

Prolog tiene un operador muy controvertido, el operador de corte, !. Se trata de un operador que permite no volver hacia atrás. Hay que intentar no usarlo, pero muchas veces mejora el rendimiento.

Metaprogramación

Prolog tiene un gran soporte para la metaprogramación. Assert y Retract son ya formas de metaprogramación, no obstante Prolog tiene muchas más.

call permite ejecutar código Prolog desde Prolog.

setarg permite modificar un término de un predicado y arg unifica una variable con el término de un predicado que queramos. nb_setarg es la versión de setarg que en caso de backtracking no deshace la operación. Un ejemplo de esto lo podemos encontrar en la definición de aggregate_all en la librería de SWI Prolog:

aggregate_all(count, Goal, Count) :-
    !,
    aggregate_all(sum(1), Goal, Count).
aggregate_all(sum(X), Goal, Sum) :-
    !,
    State = state(0),
    (  call(Goal),
           arg(1, State, S0),
           S is S0 + X,
           nb_setarg(1, State, S),
           fail
    ;  arg(1, State, Sum)
).

 

Debug con trace

Prolog posee un predicado muy útil para hacer debugging. Es trace y con el predicado que vaya a continuación podremos inspeccionar todas las operaciones del motor de backtracking.

La entrada Introducción a Prolog, tutorial en español se publicó primero en Adrianistán.

Martes 10 de abril de 2018

Gorka Urrutia

Gorka Urrutia
Nideaderedes

¿Qué es el acoplamiento de código?

Hoy he publicado un divertido (eso espero) artículo sobre lo que es el acoplamiento de código y cómo evitarlo.

Puedes descargarlo desde la web de PHP Sensei.

Lunes 09 de abril de 2018

Como mejorar el funcionamiento del portátil HP Stream 11 (parte 2)

Posts in this series
  1. Como mejorar el funcionamiento del portátil HP Stream 11 (parte 1)
  2. Como mejorar el funcionamiento del portátil HP Stream 11 (parte 2)

Lo primero que hay que hacer en cualquier portátil o sobremesa es poder arrancar un pendrive USB con un instalador de GNU/Linux. Y para eso es necesario dos cosas: un pendrive USB con un instalador de GNU/Linux y un HP Stream 11 que arranque y se deje instalar por USB un GNU/Linux…ya os adelanto que lo primero es mas sencillo que lo segundo.

un pendrive USB con un instalador de GNU/Linux

Hay muchas alternativas para hacer un pendrive USB autoarrancable, por casualidad en uno de los últimos podcast de Birras & Bits (el titulado BYB 2×08 – Los Testigos de Godot ) el que voy a usar en este tutorial es ETCHER porque es muy muy fácil, dice que tiene soporte para Windows…pero asumo que tu lector eres una persona que ya ha pasado al otro lado del espejo y tiene un ordenador a mano con GNU/Linux, y para crear un pendrive USB autoarrancable necesitamos las siguientes cosas:

  • Un pendríve USB de 1 Gb mínimo y limpio o relleno de cosas sin valor, porque aunque no estoy seguro, pero creo que Etcher cuando pone una imagen de un instalador en un pendrive lo formatea.
  • Una ISO de Debian…¿Por qué Debian? Porque es la que voy a usar para este tutorial, pero si seguro que si te apañas con otra distribución, seguro que cambiando cuatro cosas de las recetas puedes hacer lo mismo. Para descargarla podréis en la página oficial en Installing Debian via the Internet y descargáis el link de “Small CDs or USB sticks” amd64. El cual os descargará un fichero .iso con el instalador de Debian.

Etcher viene en formato appimage (link a la wikipedia inglesa) o un tutorial en español en Cómo usar AppImage en GNU/Linux que recuerda mucho a como se instalan y usan los programas en los ordenadores de la manzana envenenada. Es un formato que viene en un solo fichero todo el programa y no necesita librerías extra ni nada, y se puede instalar.

Al ejecutarlo, salen 3 iconazo enormes en la ventana del programa, que son los pasos que hay que ir haciendo para completar el USB autoarrancable. Y se empieza de izquierda a derecha, y se van a ir iluminando según se van haciendo.

  1. Elegir la ISO en tu carpeta de descargas o donde la tengas.
  2. Elegir el pendrive USB enchufado, OJO mira bien que es un pendrive USB y no otro disco duro que tengas enchufado a la vez en el PC…y recuerda que se va formatear por lo que tenlo vacío o lleno de mierda sin importancia…sin fotos de comunión ni nada.
  3. Flashear, en este punto ya guarda en USB la ISO y la prepara para ser autoarrancable. Te pedirá la contraseña de root o sudo para hacerlo.

Mientras quema la imagen en el USB veras una barra de progreso y un tiempo de espera estimado y después chequeara si lo ha copiado bien y finalmente lo desmonta (para sincronizar como dice el señor Eugenio) para después mostrarte en ventana una bonita/hipster imagen de que lo ha completado.

un HP Stream 11 que arranque y se deje instalar por USB un GNU/Linux

Menuda metedura de pata adrede o no…me da que pensar adrede para evitar que la gente entre a la BIOS, pero para conseguir acceder a la BIOS en un HP Stream 11 necesitas un teclado USB externo, porque para entrar al minimenu previo a elegir las opciones como entrar a la BIOS, elegir sistema de arranque…Hay que hacerlo con la tecla ESC que como digo no la coge muy bien, pero con un teclado externo a la primera te la coge.

En mi caso, tenia por casa un teclado inalámbrico USB que uso para el PC de las pelis y las series en el sofá y con ese me he apañado.

Una vez llegas al minimenu tendrás que pulsar F10 como ves en la siguiente imagen:

Y ya en la BIOS hay un par de cosas que hacer:

  • Quitar el asqueroso caballo de troya de Micro$oft llamado Secure Boot: que es en moviendote a la derecha en las pestañas de arriba, comenzando por Main, vas a Security y otra vez a la derecha “System Configuration”. Ahí vas para abajo hasta “Boot options” y pulsas intro (o enter como vos lo llames), y ahí esta el satánico “Secure boot” activado vas para abajo hasta resaltar su satánica linea y le das intro y te sale un popup para activar o desactivar…si quieres continuar en el camino de la libertad, desactívalo.
  • En esa misma pantalla activa USB Boot y para mayor facilidad sube al primero la opción de arranque para “USB Diskette on Key/USB Hard Disk” con las teclas F5 para bajar y F6 para subir.
  • Y de propina en la pantalla anterior “System Configuration” activa “Virtualization Technology” que te puede venir bien para cosas como XEN o Virtualbox para algún apaño.

Y para guardar la configuración de la BIOS ve a la pestaña de arriba llamada Exit y en la pantalla de salida elige la opción “Exit Saving Changes”.

Al arrancar otra vez el miniportatil, ten enchufado el pendrive con la instalación de GNU/Linux, te saldrá un menú para instalar si todo lo anterior ha ido bien (si te da problemas ESC y después en el minimenu elige F9 para que te salga un menú de posibles opciones de arranque y elijas lanzar el instalador de USB).

La instalación de Debian desde hace años es muy muy sencilla, pero vamos a fijarnos en los siguientes puntos:

  • ¡¡OJO!! NO SE COMO TENÉIS EL HP STREAM 11, en mi caso fue sacarlo de la caja de cartón y hacer lo que os comento en estos artículos para que funcione mejor que con la basura de Windows, pero puede que vosotros lo hagáis con un portátil usado y queráis guardar las fotos de las últimas vacaciones. HACER BACKUP DE VUESTROS FICHEROS.
  • Pero señor MD yo quiero tener Windows en dualboot…PUES BÚSCATE OTRO TUTORIAL, este es para TENER UN SOLO SISTEMA OPERATIVO EN EL PORTÁTIL. A partir de este punto si seguís os va quedar un buen ordenador pero ni rastro de la mierda de windows.
  • En el particionado tenéis que elegir uso completo del disco duro y LVM.
  • Y en un par de pantallas siguientes tenéis que elegir que el directorio /home este separado en una partición.

Y con eso ya esta lo importante para en la instalación para aprovechar la magia del LVM.

Siguiendo con la instalación, en estos tiempos es tan fácil que solo hay que darle siguiente, elegir idioma, elegir claves para el usuario por defecto y usuario root, alguna cosilla mas y después elegir entorno/escritorio. En mi caso elegí Mate porque es la civilización Gnome en su máximo esplendor…después vino la edad media….

Y ya tienes un flamante netbook, ligero y potente porque tiene GNU/Linux, aunque no se vayan todavía porque tenemos para la parte 3 de esta telenovela de tutorial:

  • instalar los drivers privativos de el chip wifi, porque como siempre los cabroncetes de Realtek haciendo tarjetas wifi sin liberar los drivers para GNU/Linux, pero en Debian es fácil de instalar…los no-libres…
  • ponerle sin abrir el HP Stream 11 mas disco duro con la magía que os comente de LVM, por 17€ le he multiplicado por dos el tamaño de disco duro.
  • Y si queda pequeño, comentar como aprovechar la pantalla tan pequeña y la poca RAM de este netbook usando “escritorios frikis” y ligeros como I3 que quita mucha tonteria.

Martes 03 de abril de 2018

Ramón Miranda

Ramón Miranda
Ramon Miranda

A new dawn, alegory . The Making off


Hi all, today I am going to show you my latest painting done in Krita 4.0 while i was collaborating to provide resources like brushes, brushtips, and patterns.
I think Krita deserves a good promotional images (at least finished images) and this was also a good testing canvas for that. My 2 cents ;)
This image reflects the emotional state that makes me feel this new release. So here you have...
"A new dawn, alegory" i hope you like it.

The process. (click on the images to see big-res images)

Step 01. First i start with the background, the mood itself of the image. I focus my attention on color and overall emotion. You can see there is no texture but i define where the figure must be placed.

Step 02. Then i continue working with brushes and wet paint.Here i am testing how to get the Oil or at least the painterly effect on some brushtrokes and i remove some coldness on the background. I start to add a bit of glow, this is an easy way to get more corlors to play with. Also you can see some primitive structures on the BG.

Step 03. I feel i need more color, why not! and i start to define better the path of viewers eye. I use very often the contrast to catch the attention. You can see a lot of brushtrokes , some are from 3.3 brushes and others are testing brushes for 4.0. Not too much detail here but i feel i like the red color and movement on clothes

Step 04. After some crazyness, lot of fun and exploration, is time to define a bit the image, the message and planes. You can see now arcs, rocks and a more defined pose for the woman. But at the moment i have only big spots of color.

Step 05. Time for block stage defining more and more.  

Step 06. I sketch a better figure in paper with pen, I love strong characters and strong women so i decide to give her a powerful pose, dominant but a bit humble holding her clothes with bare hands.


Step 07. I change the scale of figure to emphasize the environment and movement on the folds. Now you can see the folds and better idea o what the final image is going to be.

Step 08. Is time to detail a bit more all the scene. Structures on background, the ruins in midplane, the ground, adding a bit of texture and the main arc in the foreground with the woman in focal point. The folds are well stablished and is time to see if everything works. I am not sure with the arm pose so i delete it for the moment.

Step 09. I redefine a bit the mood, to be not so pictoric but more actual looking. I focus my attention on bg and add glow to the gate, wich is the symbol of "how krita is seeing a new light and how reborns from the ruins. (you know the history) I block the main shapes of arm and detail lot of parts.

Step 10. So... what i miss oh yes! more details ;) . I left this image posted because you can see how i use temporary swatches (in this case for the folds) you can see also this for the hair and how the strands starts to appear more realistic.

Step 11. And now a dramatic light change because the lighting was not coherent. Final details in hair, texture, folds, folliage, and fx. All done with krita 4 brushes.

I  hope you enjoy this new release as I do. Remember Krita it can be amazing but you are the artist.
If you have qustions or want to know more about my work, check my social media.



Viernes 30 de marzo de 2018

Como mejorar el funcionamiento del portátil HP Stream 11 (parte 1)

Posts in this series
  1. Como mejorar el funcionamiento del portátil HP Stream 11 (parte 1)
  2. Como mejorar el funcionamiento del portátil HP Stream 11 (parte 2)

Bueno como os como os conté en los comentarios en el artículo En busca de un netbook en el 2018 , mi crío me regalo (pagado con mi tarjeta de crédito…pero claro el pobre no trabaja con 2 añitos) un HP Stream 11  azulote.

Haciendo un matrioska, un Inception para los milenians. Vamos foto del portátil, escribiendo este artículo, con cervezas….saludos Birras&Bits…

Y claro por internet mucha gente se queja de que el HP Stream 11 es una caca de portátil, pero la culpa es de la mierda de sistema operativo que viene, un Windows 10, pero si pones un GNU/Linux puedes aprovechar toda la potencia del cacharro. Y te preguntarás: “¿Por qué mejora el portátil con un GNU/Linux?” Pues porque:

  • El portátil va mas rápido.
  • Vas a poder usar mas programas en GNU/Linux que en Windows 10.
  • Vas a poder crear “un disco duro virtual” mas grande el que viene en el portátil, sin tener que recurrir a operar el portátil con destornilladores o hacerle carnicerías peores.

Por cierto el cacharro tiene las siguientes características:

  • CPU: Intel Celeron 2,4 Ghz de 2 núcleos
  • Memoria: 2 GB de SDRAM DDR3L
  • Disco duro: 32 GB eMMC
  • Gráfica: intel
  • Pantalla: 11’5″

Ya veis es un equipo modesto y de estos de todo soldado en la placa, por lo que para aumentarle el tamaño de disco duro solo puedes hacerlo usando GNU/Linux y con una tecnología que lleva años llamada LVM muy útil y que parece ciencia ficción que permite crear “discos duros virtuales”. En este caso lo que he hecho, aprovechando la ranura de microSD, le he puesto una tarjeta de 32Gb y con eso ahora el portátil tiene un disco duro de 64 Gb que eso mola mucho.

Y hasta aquí,  podemos leer…en cuando saque un poco de tiempo os explico paso a paso como instalar un GNU/Linux en un HP Stream 11 para tener un portátil ligero pequeño, duro y muy chulo.

 

Es de buen nacido ser agradecido. Planetas donde aparece los tomates asesinos.

Viendo un poco las estadísticas, cada vez que público algo sobre software libre o GNU/Linux, los planetas que me enganchan, me traen un montón de visitas, y sobre todo de gente que dialoga, es agradable hablar con personas de todo el mundo sobre nuestro tema común.

Además para los que no conozcan estos planetas pues tiene una excelente oportunidad para ver mas blogs de las tématicas de software libre y estas hierbas. Por cierto, un planeta es una web que muestra en plan timeline de twitter, una entradilla de los artículos nuevos de los blogs que están enganchados a ese planeta. Y bueno estos son los planetas:

  • Planeta Linux: de eso, Linux, agrupado por países, muy muy interesante porque anima ver que del otro lado del charco la gente esta muy activa en el software libre.
  • PlanetLibre: un proyecto personal del señor Jesús, el dictador benévolo de Birras y Bits un tío que lleva años en la “scene hacker”,  el planetacon un diseño muy cuidado (y azúcar en javascript para cositas como autocarga de en scroll), otro planeta que da muchos ánimos porque cada día hay artículos nuevos cargados de nuevas noticias sobre el software libre.

 

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.

Jueves 22 de marzo de 2018

Ramón Miranda

Ramón Miranda
Ramon Miranda

Krita 4.0 ya está aquí


"Un nuevo amanecer, una nueva versión de Krita que cambia muchas cosas como la luz cuando va iluminando poco a poco lo que la rodea." Alegoría.

Hola, muy buenas. ¿Será la primavera? ¿será mi espiritu ñoño haciendo de las suyas? Pues no!
Es que hoy estamos de enhorabuena. Ya ha salido la nueva versión de Krita, la 4.0 donde vamos a poder encontrar muchas novedades. Y si no conoces este programa pues te estás perdiendo una muy buena herramienta que además es completamente gratuita gracias a ser software libre.

Durante la fase de desarrollo he podido colaborar aportando ideas, pinceles, y patrones para usar como texturas. En un post futuro puede que hable de la experiencia en general. Cómo lo he vivido a nivel personal, pero hoy me voy a centrar en Krita.

Lo primero de todo, dar las gracias por ese duro trabajo que hacen los desarrolladores. Y no pienses que Krita es sólo pinceles a nivel de código, es mucho más, y encima multiplataforma. Imagínate todo ese trabajo de depuración de código.

Pero ¿qué es lo que me ha gustado a mí personalmente? Como sabes, si me sigues en el blog o redes, soy un fanático de los pinceles y herramientas digitales. Así que allá voy.
  • Un Nuevo set mejor organizado y más versátil. Pero lo bueno es que se mantiene el set antiguo con lo cual si estabas muy acostumbrado a los pinceles de krita 3 pues no hay problema.
  • El set principal tiene su propia etiqueta así que se puede aislar.
  • Krita ahora soporta el multithread para las pinceladas, con lo cual deberiamos notar una mejora en el rendimiento de krita. Y eso siempre es bueno ¿no? con Shift+ L o desde el menú View/Instant preview mode.
  • Previsualización del trazo en el editor de pinceles. Eso hace más fácil la creación de pinceles. 
  • Krita te ayuda con un nuevo asistente al salvar un nuevo pincel donde puedes añadir imágenes prediseñadas e incluso cambiar cosas como el color de algunas partes del icono.
  • Masked brushes o dual brush como se llama en Photoshop. Permite a los pinceles tener una doble punta que le da más realismo. Fíjate como tenemos un trazo duro en el contorno pero hay utilizamos una doble punta que usa lineas para simular ese efecto útil para fondos o suciedad.
  • El tamaño máximo del pincel puede sobrepasar los 1000px. Pero ojo esto requiere potencia.
  • Curvas prediseñadas para no andar continuamente moviendo puntos en las curvas o simplemente para hacer pruebas.
  • Ahora se puede cambiar el tamaño de los iconos de pinceles más fácilmente con un slider.(Yo sigo usando el Ctrl+Rueda de ratón arriba o abajo.)
A parte de todo esto, muchas mejoras se producen bajo el capó o en funcionalidades no tan usadas. Algo muy bueno va a ser el uso de Python scripts. Y si no preguntádselo a Blender y todo su ecosistema de plugins. De momento hoy mismo ya he visto que alguien está haciendo un plugin para publicar en Mastodon a través de Krita. Pruébalo bajo tu responsabilidad que esto no es de los desarrolladores, que conste. https://github.com/spaceottercode/kritatoot

También si te interesan los videojuegos que seguro que sí ;)

  • Pixel grid si lo que haces se relaciona con el pixelart
  • Normal map si estás más orientado a cosas realistas.
Y luego cosillas que tengo pendiente de probar. 

  • Colorize mask tool para amantes del comic que necesitan dar un color plano a sus imágenes de manera más rápida.
Estabilidad
Personalmente no he tenido, si recuerdo bien, ningún cuelgue mientras pintaba. He notado un buen comportamiento con imágenes de 6000px de ancho, como la que encabeza este post. También tengo que decir que ahora uso tanto Windows 10 como Linux con kde neón o sea que es una gozada poder tener Krita en los dos sistemas.  
Al final del artículo te dejo 2 enlaces. 1º A la noticia oficial de lanzamiento donde puedes ver mucha más info y 2º un enlace las release notes o en spanish las "cosillas guenas que han metido en la saca"

Ahora la última palabra la tienes tú. Si te gusta y lo ves útil para tu trabajo pues dale duro y exprime Krita. Seguro que me dejo algunas cosas por enseñar :D. Y tú? ¿Para que vas a utilizar Krita 4.0? ¿Qué es lo que más te ha gustado de esta nueva versión?

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

Xavier Genestos

Xavier Genestos
SYSADMIT

Linux: Servicios systemd systemctl

Muchas distribuciones de Linux actuales han pasado del modelo de SystemV a SystemD y por tanto se cambia la forma de administrar los servicios del sistema. En el caso de distribuciones Linux RedHat o CentOS: - Versiones anteriores a la 7: SystemV - Versión 7: SystemD Siguiendo con las distribuciones RedHat/CentOS, en las versiones que funcionan con SystemV, la administración de los
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.

Sábado 10 de marzo de 2018

José María Morales Vázquez

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

Instalando Laravel en Windows 7 con XAMPP

icono de php Hace unos minutos hemos publicado la forma de instalar Laravel en una Debian con Apache. Vamos ahora a ver como se hace en un windows 7 con xampp. Imagino que hacerlo en cualquier otra versión de windows más moderna será igual de fácil.

Partimos entonces de ese windows instalado, funcionando, y con xampp también instalado y funcional. Lo primero que tenemos que instalarnos es composer, el gestor de paquetes PHP que utiliza Laravel para crear la estructura que necesistan sus proyectos. Para ello nos descargamos el instalador para windows y ya sabéis: siguiente-siguiente-siguiente-aceptar 😀

Y ya está. Ya tenemos todo lo que necesitamos. Vamos ahora a crear la estructura para nuestra primera aplicación con Laravel. La versión del framework en el momento de escribir esto es la 5.6. Suponemos que se llamará prueba y que la instalaremos en el directorio web por defecto que usa xampp. Nos vamos a la línea de comandos y, suponiendo que trabajamos sobre el disco C:, ejecutamos lo siguiente:

cd c:\xampp\htdocs
composer create-project laravel/laravel prueba --prefer-dist

En segundo lugar tenemos que crear el virtual host necesario para esta aplicación. Xampp usa para ello el archivo httpd-vhosts.conf que reside en el directorio c:\xampp\apache\conf\extra. Editamos este archivo y añadimos lo siguiente:

<VirtualHost *:80>
  DocumentRoot "C:\xampp\htdocs\prueba\public"
  DirectoryIndex index.php
  <Directory "C:\xampp\htdocs\prueba">
        AllowOverride All
  </Directory>
  ErrorLog "logs/pruebalaravel-error.log"
  CustomLog "logs/pruebalaravel-access.log" combined
</VirtualHost>

Y listo. Reiniciamos apache y abrimos un exporador. Si escribimos http://localhost veremos la página de bienvenida de Laravel:

Laravel 5.6 en windows con Xampp

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: Instalando Laravel en Windows 7 con XAMPP || Hospedado en un Cloud VPS de Gigas.

Jueves 01 de marzo de 2018

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

Martes 27 de febrero de 2018

BlogDRAKE: Caída de Blogdrake

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.

Jueves 22 de febrero de 2018

BlogDRAKE: Dianara 1.4.1 en el repositorio de BlogDrake

Martes 20 de febrero de 2018

BlogDRAKE: Problema de Seguridad en Mageia Identity
Lenin Hernandez

Lenin Hernandez
Leninmhs

Como enviar correos desde Perl usando Gmail

En esta entrada tendremos realizaremos el envió de correo desde el SMTP de Gmail usando el lenguaje de programación Perl para realizar esta tarea, específicamente usando el modulo Email::Sender. Perl es un lenguaje muy común para escribir scripts, por lo cual, es muy útil poder enviar de correos electrónico desde el. En Perl existen varias … Sigue leyendo Como enviar correos desde Perl usando Gmail

Lunes 19 de febrero de 2018

Emiliano A. González Salgado

Emiliano A. González Salgado
El blog de Emi

BITDEFENDER ANTIVIRUS SCANNER EN FEDORA 27

BitDefender Antivirus Scanner for Unices, un antivirus de BitDefender y que se puede utilizar gratuitamente.

La página de descarga es:

https://www.bitdefender.es/business/antivirus-for-unices.html

Después deberemos solicitar una licencia gratuita por un año, esta parte si que está visible desde el enlace Solicite licencia gratuita, que nos mandará una clave a nuestro email.

Una vez descargado, simplemente ejecutamos (sin olvidarnos de hacerlo ejecutable), como root:

sh BitDefender-Antivirus-Scanner-7.7-1-linux-amd64.rpm.run

Seguimos las instrucciones de la terminal, incluyendo escribir la palabra accept e indicando que queremos instalar también la interfaz gráfica.

El software ha sido discontinuado desde principios de 2016. Esta versión 7.7.1, data de noviembre de 2014, que en software antivirus es un mundo, las firmas siguen actualizándose diariamente, esencialmente son las mismas que usan otros productos de BitDefender, así que ningún problema.

Como habéis podido ver, además tiene versión nativa de 64 bits, que es de las cosas que más me gustan en BitDefender.

Si te has registrado con anterioridad y tienes licencia, puedes descargarlo directamente de:
https://download.bitdefender.com/SMB/Workstation_Security_and_Management/BitDefender_Antivirus_Scanner_for_Unices/Unix/Current/EN_FR_BR_RO/Linux/

Para evitar errores y que se carguen los motores antivirus, una vez instalado hay que ejecutar estos dos comandos, como root:

ln –force –symbolic /opt/BitDefender-scanner/var/lib/scan/Plugins /opt/BitDefender-scanner/var/lib/scan/Plugins/plugins
(todo lo anterior en la misma linea, pues es un único comando)

ll /opt/BitDefender-scanner/var/lib/scan/Plugins/plugins

Con ello ya se puede arrancar el programa, proceder al cambio de licencia (la consta es la de evaluación), actualizar las firmas y comenzar el escaneo.

Viernes 16 de febrero de 2018

Review “Magento” plataforma para tiendas online.

¿Qué es Magento? Magento es una plataforma de comercio electrónico escrita en PHP. Es de código abierto, esto significa que tienen una version gratuita. Usa MySQL, MariaDB y Zend Framework. Tiene dos versiones: Magento Open Source: Cualquiera puede modificar el núcleo del sistema. Los desarrolladores pueden implementar los archivos del núcleo. Esto nos permite aprovecharnos de su marketplace […]

La entrada Review “Magento” plataforma para tiendas online. aparece primero en Blog de Informática ✏ Luisi.

Martes 13 de febrero de 2018

Ramón Miranda

Ramón Miranda
Ramon Miranda

Round 2. Visual Experiment for Krita 4.0 new layout proposal

Round2.

Virtual Deleted (for now) 44 brushes,  88 left.

virtual deleted bruhes.

How i decide what to remove? well i have tried to get the more visual pleasant and useful combination. My focus is what people could expect the first time krita opens. and make the experience as much comfortable as possible. No knowledge of tools or brushes are needed.
So if you like the idea here we go.

This is a document with lot of info, not for begginers even when they can learn some tips here and there, but lot of terminology is present.

You are going to see lot of “IMO”( in my opinion). Of course you can disagree totally or not. I expose my ideas based on my own experience and i hope this help, if you like flames i am not you man ;)
Also you will need this image to follow the numbers.
  • 1 it can be changed by eraser soft. They do basically the same, erase softly. the Airbrush erase don´t use the Airbrush feature. Also imo is not a good idea put an eraser as the first brush in the default pack.If you(begginer) try it in a blank layer you can see nothing is happening and think the software is bad or the tool is not working.
  • 3 The “noise” size controlled by density can’t be modified In big canvas sizes. This could be make the noisy effect invisible or not perceptible.
  • 4 Airbrush pressure is a redundant term. It would be like the tipical Airbrush. Added 2 instead, Airbrush linear i would remove linear.
  • 7 we have a lot of “wetpaint” colorsmudge brushengine based brushes. 
  • 9 Gaussian term is not a common word to describe behavior in brushes. It is slow and Soft curve can do the same and more imo.
  • 12 The Soft thing is not enough for me to be as brush.
  • 14 Added 20 instead. If the tablet has no tilt options, we can use RMB to change angle.
  • 22,26, 27 Added 24 instead.I wish to control the size of bristles and the scale of them. nowadays they are always 1px width wich is nice for low res but is useless for highres images. 6000px wide.
  • 38, 39, 40 i can’t see practical uses. Maybe sketching. Added 37 to have a sample of this brushengine. I would add to the “specials” category
  • 44 added 45 instead in “ink” category. It is only to fill big areas, it could be replaced by 86 or 87. The tip can be changed to be square to be more usable in squared surfaces just changing the brush tip to square.
  • 46 Slow and nowadays we have another Blender Blur wich is soft. If DOF is what we need i would put it in FX or Distort Category
  • 51 There is a newer version for krita4. WIP
  • 55, 56, 57 Added 53, 54 instead in Texture category
  • 60 It can be replaced by 63. The ink stroke
  • 62, 64 Very small imo. Added 63 instead
  • 65 added 68 instead.
  • 69, 70, 71,72 i consider them as basic brushes. 69 or 71 can be replaced for 20. 70 can be replaced by basic brush with opacity by pressure. 72 can be replaced by ink brush just to take notes. 
  • 77 added 78 instead . Is texture controlled by pattern in Basic category
  • 94 Added 93 instead. We can control opacity by the upper menu slider or RMB. it would be great to have opacity by pressure or gradient as original Alchemy software.
  • 97,98,99,100,101,102,103,104,105. added 95, 96 as representation of the Sketchbrushengine. Shows basic features. Too much variation of the same brush engine (11 brushes). The pencil icon is not very intuitive. Size doesn’t control real size but Area to be affected and this is not usual behavior but special behavior in sketch brushengine. This can confuse some users.
  • 115 Useless imo. Only show change on color dynamics.The sorrounder brushes are very different. And the icon is related to dry technique like pastel so this could be confusing. 
  • 117 Added 120 (Blending cat. “Particle” Effect that blends color.)
  • 123 Added 118, 121 instead
  • 129 It is not related with nature neither texture. Random in rotation makes very hard to predict results. And useless imo.


That's all for the Round 2. Could i remove more brushes? could i simplify a bit more but without loosing quality and options for the user? maybe in Round 3 . Sharing and comments are apreciated as always. more feedback means better software

Lunes 12 de febrero de 2018

Gorka Urrutia

Gorka Urrutia
Nideaderedes

Taller online gratuito de Python

¿Quieres empezar con Python y no sabes por dónde empezar? Pues apúntate a mi taller gratuito de introducción a Python para perderle miedo.

Funcionará a modo de videoconferencia y durará aproximadamente una hora. Nos veremos las caras todos los participantes y podrás preguntar dudas sobre la marcha. Los grupos serán de máximo de cinco personas.

Las fechas aún están por decidir, pero si te interesa apúntate cuanto antes que las plazas son limitadas.

Jueves 01 de febrero de 2018

Curso: Gestión de proyectos Software con Git y GitHub

Independiente si te mueves por el mundo del desarrollo, la administración de servidores o simplemente eres una mente inquieta en...

La entrada Curso: Gestión de proyectos Software con Git y GitHub aparece primero en Nosinmiubuntu | Ubuntu en concreto, GNU/Linux en general.

Gorka Urrutia

Gorka Urrutia
Nideaderedes

Taller online de refactorización en PHP

En los próximos días voy a organizar talleres online en los que refactorizaremos código PHP. Aprenderemos cómo convertir una chapuza de código espaguetti en código de calidad yendo a través de pequeñas mejoras. En el taller usaremos buenas prácticas, programación orientada a objetos, interfaces, composición, phpunit, git, etc.

Será divertido y podrás aprender un montón. Requisitos imprescindibles: participación activa, conocimientos de PHP y saber algo de programación orientada a objetos.

PHP Sensei - Nueva sección de trucos sobre PHP

Miércoles 31 de enero de 2018

Curso: Desarrollo en HTML5, CSS y Javascript de Apps Web, Android e IOS (8ª edición)

Retomamos las publicaciones en la web para hablaros de la próxima edición del curso gratuito Desarrollo en HTML5, CSS y...

La entrada Curso: Desarrollo en HTML5, CSS y Javascript de Apps Web, Android e IOS (8ª edición) aparece primero en Nosinmiubuntu | Ubuntu en concreto, GNU/Linux en general.

Domingo 28 de enero de 2018

Xavier Genestos

Xavier Genestos
SYSADMIT

Linux: Saber si existe un directorio o fichero

Con scripts de bash de Linux, podemos necesitar saber si existe un directorio o fichero para ejecutar una cosa u otra.Para saber si existe un directorio o fichero, podemos utilizar la sentencia if. Con la sentencia if, podemos especificar como parámetro si existe o no un directorio o fichero. Con el parámetro -d: Especificaremos un directorio.Con el parámetro -f: Especificaremos un

Lunes 22 de enero de 2018

TutorialesLinux.com: Borrar un volumegroup y extender el principal

Jueves 18 de enero de 2018

Bruno Exposito

Bruno Exposito
The Linux Alchemist

Comando chown – Cambiar el propietario

El comando chown (change owner) permite modificar el dueño de uno o varios ficheros o carpetas.

Está instalados en todas las distribuciones GNU/Linux, dentro del paquete coreutils.

Puedes consultar el listado de usuarios en el fichero /etc/passwd usando el siguiente comando:

 cat /etc/passwd | cut -d ':' -f1

 

chown

Sintaxis de chown

sudo chown {{dueño}}:{{grupo}} {{nuevodueño}} {{fichero-o-carpeta}}

Opciones de chown

-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.
–from=DUEÑO_ACTUAL:GRUPO_ACTUAL Cambia el dueño y/o grupo del fichero solo si el actual dueño y/o grupo coincide con el especificado.
Cualquiera de los dos puede ser omitido.
–no-preserve-root No trata “/” de manera especial (por defecto)
–preserve-root Falla al intentar operar recursivamente sobre “/”
–reference=RFILE Cambia la propiedad de file a la del fichero rfile.
-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)
-v, –verbose Muestra el resultado de cada fichero procesado
–help Muestra la ayuda
–version Muestra la versión y licencia

* Se utiliza junto con el modificador -R

Cambiar el dueño de un fichero

Sintaxis

sudo chown {{usuario}} {{fichero}}

Ejemplos

sudo chown jose documento.txt

El fichero documento.txt que está dentro del directorio actual pasa ser propiedad del usuario jose.

sudo chown juan /home/bruno/Documentos/Reporte.pdf

El fichero Reporte.pdf pasa a ser propiedad del usuario juan, con independencia del directorio en el que te encuentres.

sudo chown pedro ~/Imágenes/foto.jpg

El fichero foto.jpg dentro de /home/TuUsuario/Imágenes pasa a ser propiedad de pedro.

sudo chown francisco “/home/bruno/Documentos/fichero con espacios.odt”

El fichero “fichero con espacios.odt” pasa a ser propiedad de francisco. Si el fichero o alguna carpeta tienen espacios debe estar entrecomillado.

Cambiar el dueño de todos los ficheros recursivamente

Sintaxis

sudo chown -R {{usuario}} {{carpeta}}

Ejemplos

sudo chown -R juan Imágenes

La carpeta Imágenes, y todos los ficheros/carpetas que están dentro (-R) pasan a ser propiedad de juan.

sudo chown -R jose “/home/bruno/Mis Imágenes”

La carpeta Mis Imágenes y todo su contenido pasa a ser propiedad de jose

sudo chown -R vicente ~/Imágenes

Mi carpeta /home/MiUsuario/Imágenes y todo su contenido pasa a ser propiedad de vicente.

Cambiar el dueño de todos los ficheros y carpetas del directorio actual que pertenecen a un determinado usuario.

Sintaxis

 sudo chown --from={{dueñoactual}} {{nuevodueño}} *

Ejemplos

sudo chown –from=jose bruno *

Todos el contenido del directorio actual que pertenezca a jose pasa a ser propiedad de bruno.

sudo chown –from=bruno fernando *

Todo con contenido del directorio actual propiedad de bruno pasa a ser propiedad de fernando.

Cambiar recursivamente el dueño de todos los ficheros y carpetas del directorio actual que pertenecen a un determinado usuario.

Sintaxis

 sudo chown -R --from={{dueñoactual}} {{nuevodueño}} {{carpeta}}

Ejemplos

sudo chown -R –from=jose bruno Documentos

Todos los fichero y directorios dentro de la carpeta Documentos (-R) que eran propiedad de jose pertenecen ahora a bruno.

sudo chown -R –from=juan bruno /home/juan/

Todos los ficheros y directorios dentro de /home/juan (-R) que eran propiedad de juan pertenecen ahora a bruno.

sudo chown -R –from=vicente jose .

Todos los ficheros y directorios del directorio actual (.) que eran propiedad de vicente pertenecen ahora a jose.

Cambia el dueño de todo el contenido de una carpeta si el actual dueño y grupo coincide con el especificado.

Sintaxis:

sudo chown -R --from={{dueño}}:{{grupo}} {{nuevodueño}} {{carpeta}}

Ejemplos:

sudo chown -R –from=juan:consultores javi Imágenes

La carpeta Imágenes y su contenido, cuyo dueño es juan y pertenece al grupo consultores es ahora propiedad de javi.

sudo chown -R –from=bruno:administradores paco ~

Tu carpeta /home/TuUsuario (~) y su contenido, propiedad del usuario bruno y que pertenece al grupo administradores pasa a ser propiedad de paco.

sudo chown -R –from=bruno:administradores jose /home/bruno

El directorio /home/bruno y su contenido,

Búsquedas complejas: find + chown

Para búsquedas mas complejas es posible usar el comando chown con find, ya que find permite realizar búsquedas por nombre, fecha, tipo, tamaño, etc

sudo find . -iname “*.txt” -exec chown bruno {} \;

Busca todos los archivos con extensión txt y les cambia el propietario a bruno.

sudo find . -type d -exec chown bruno {} \;

Busca todos los directorios (-type d) y les cambia el dueño a bruno.

Miércoles 10 de enero de 2018

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Desactivando los parches para los fallos en las CPUs de Intel en Linux

Los recientes fallos de seguridad en las CPUs de Intel llamados Meltdown y Spectre, han obligado modificar los sistemas operativos. Esto causa que los procesadores afectados lleguen a perder de un 5% hasta un 30% de rendimiento en la realización de ciertas tareas.

En determinados casos es un gran inconveniente. Existen situaciones en los que el usuario puede gestionar el riesgo de forma que, a costa de perder ese extra de seguridad, gane en rendimiento. Un ejemplo, supongamos que hay un grupo de científicos realizando cálculos matemáticos. Supongamos también que este grupo de científicos realizan sus cálculos en equipos aislados, de forma que no tienen interacción con otros equipos ni conexión con Internet. Perfectamente podrían deshabilitar los parches y continuar con sus cálculos con ese extra de rendimiento.

Otra situación: disponemos de un portátil. Cuando estemos navegando por Internet es totalmente necesario tener activado las protecciones frente a Meltdown y Spectre (y todas las medidas de seguridad que se nos ocurran). Supongamos ahora que nos vamos de viaje y no tenemos red (incluso puede que no tengamos ni posibilidad de conectarnos), suponamos que tenemos totalmente controlados los programas que vamos a ejecutar en ese tiempo y su procedencia. ¿No sería lógico desactivar dichas protecciones y así, posiblemente, ganar un de un 5% hasta un 30% más de rendimiento y de batería?

Lo que vamos a buscar aquí es cómo se deshabilitan dichas protecciones y qué condiciones podemos usar un equipo, con las protecciones desactivadas de forma segura.

¿Cómo se desactivan las protecciones?

Para desactivar estas opciones, hay que arrancar el ordenador y cuando aparezca el grub solicitando el sistema que queremos arrancar, pulsaremos la tecla e. Aparecerá un editor de texto. En este editor buscamos la línea que arranca el kernel y se le añade la opción “pti=off”. Es decir, al final tendremos que tener una línea similar a:

linux   /boot/vmlinuz-4.4-x86_64 root=UUID=a56... rw  quiet pti=off

Para comprobar si la protección ha sido desactivada, se debe teclear en un terminal.

dmesg | grep 'page tables isolation'

Si aparece la respuesta:

Kernel/User page tables isolation: disabled

es que la protección está deshabilitada y se tendrá el extra de rendimiento.

Evidentemente es más cómodo introducir una nueva entrada en el Grub de forma que podamos elegir entre un sistema seguro o un sistema un poco más rápido en el momento de arrancar.

¿Cuándo se debe deshabilitar estos parches?

Respuesta corta: Nunca.

He estado haciendo pruebas en mis equipos y para las tareas de oficina, programar/compilar, navegar o juegos, no parece que haya una pérdida de rendimiento acusada.

Tened en cuenta que por el sólo hecho de visitar una página web y que tengas un fallo en el navegador, te pueden infectar y usar tu sistema para minar bitcoin, obtener tus contraseñas,…

Como conclusión final sólo decir que el hecho de conocer cómo se desactivan estas protecciones conlleva la responsabilidad de saber usarlo sabiamente.

Espero que os sea útil.

Miércoles 27 de diciembre de 2017

Emiliano A. González Salgado

Emiliano A. González Salgado
El blog de Emi

Prueba

Esto es una prueba.

Realizada con el cliente de sobremesa WordPress.

Trabajar con archivos PDF en Linux

PDF (sigla del inglés Portable Document Format, «formato de documento
portátil») es un formato de almacenamiento para documentos digitales
independiente de plataformas de software o hardware.

Los documentos son de tipo compuesto (imagen vectorial, mapa de bits y
texto).

Actualmente es de los mas usados para el intercambio de información.

En Linux existen programas para crear y editar documentos en dicho formato.

En estos momentos el sistema operativo que uso es Fedora 27 x86_64 KDE.

Mis herramientas principales son:

Visor de archivos: Okular.

Edición de documentos: MasterPDF Editor, LibreOfficeDraw y Xournal.

Creación de archivos PDF: LibreOffice(extensión pdfimport),

MasterPDF Editor y CUPS-pdf.

Formularios (principalmente cumplimentarlos): Okular. y

MasterPDF Editor.

Se pueden crear escaneando un documento o una imagen.

Para el escaneo, aunque  al instalar el driver de la multifunción ya
incorpora su programa, el que uso es Xsane,
un software bastante veterano, pero muy completo. Permite escanear desde el
alimentador automático y desde la base de escaneo. Salida en varios
formatos: PDF, jpeg, gif, png, bmp, etc. Multipágina o página
individuales.  Enviar a la impresora o al fax.

La multifunción es una Epson, y el programa de escaneo es “Image Scan! for
Linux”, que es muy simple, y efectivo, pero con un defecto, tiene una falta
de compatibilidad con el formato PDF. Lo he comprobado al aplicar un script
para comprimir ficheros de gran tamaño. Siempre me daba errores, lo que no
ocurre con Xsane.

La mayoría de los programas anteriores se encuentran en los repositorios de
gran parte de las distribuciones Linux.

Master PDF
Editor
es software propietario. Está desarrollado por Code
Industry
. En Linux se puede utilizar libremente, sin fines
comerciales, por ejemplo para propósitos educativos o personales. Para otros
fines habría que adquirir la respectiva licencia.

Para ver las características mas importantes lo mejor es consultar esta entrada
de El atareao.

Aunque ya tiene unos meses, ha habido pocos cambios.

El principal problema que nos encontramos en Linux con los archivos PDF es
el de la firma digital.

El único programa que tiene incorporado todo para la misma es Adobe Acrobat.
Para Windows y, creo que también, para Apple y Android.

En Linux, la versión que hay es antigua y de 32 bits. Discontinuada por
Adobe.

No trae soporte para firma digital.

Tengo la costumbre de escanear con alta resolución, normalmente 300 dpi, con
lo cual los archivos son de gran tamaño. Para optimizarlos suelo empelar un
scrip que encontré hace tiempo, y no me acuerdo dónde.

Lo tengo en un fichero ejecutable: comprimepdf.sh

El contenido es el siguiente:

#!/bin/sh

dpi=72

if [ $# -lt 2 ]

then

echo “usage: $0 input output [dpi]”

exit 1

fi

if [ $# -gt 2 ]

then

dpi=$3

fi

echo “Shrinking document…”

gs  -q -dNOPAUSE -dBATCH -dSAFER \

-sDEVICE=pdfwrite \

-dCompatibilityLevel=1.3 \

-dPDFSETTINGS=/screen \

-dEmbedAllFonts=true \

-dSubsetFonts=true \

-dColorImageDownsampleType=/Bicubic \

-dColorImageResolution=$dpi \

-dGrayImageDownsampleType=/Bicubic \

-dGrayImageResolution=$dpi \

-dMonoImageDownsampleType=/Bicubic \

-dMonoImageResolution=$dpi \

-sOutputFile=$2 \

$1

#sh comprimepdf.sh ~/input.pdf ~/output.pdf 150

Este último párrafo es la orden para ejecutarlo.

El modificador 150, se puede cambiar para aumentar o disminuir la
resolución.

Es muy efectivo. Archivos de mas 10 MB los reduce a 200 o 300 Kb. sin
afectar a su calidad.

Es necesario tener instalado Ghostscript
para que funcione.

Existe un script, que en Fedora se puede instalar desde los repositorios, shrinkpdf.sh,
pero después de utilizar ambos, prefiero el primero.

Trabajar con archivos PDF en Linux

PDF (sigla del inglés Portable Document Format, «formato de documento
portátil») es un formato de almacenamiento para documentos digitales
independiente de plataformas de software o hardware.

Los documentos son de tipo compuesto (imagen vectorial, mapa de bits y
texto).

Actualmente es de los mas usados para el intercambio de información.

En Linux existen programas para crear y editar documentos en dicho formato.

En estos momentos el sistema operativo que uso es Fedora 27 x86_64 KDE.

Mis herramientas principales son:

Visor de archivos: Okular.

Edición de documentos: Master
PDF Editor
, LibreOffice
Draw
y Xournal.

Creación de archivos PDF: LibreOffice
(extensión pdfimport)
, Master
PDF Editor
y CUPS-pdf.

Formularios (principalmente cumplimentarlos): Okular. y Master
PDF Editor
.

Se pueden crear escaneando un documento o una imagen.

Para el escaneo, aunque  al instalar el driver de la multifunción ya
incorpora su programa, el que uso es Xsane,
un software bastante veterano, pero muy completo. Permite escanear desde el
alimentador automático y desde la base de escaneo. Salida en varios
formatos: PDF, jpeg, gif, png, bmp, etc. Multipágina o página
individuales.  Enviar a la impresora o al fax.

La multifunción es una Epson, y el programa de escaneo es “Image Scan! for
Linux”, que es muy simple, y efectivo, pero con un defecto, tiene una falta
de compatibilidad con el formato PDF. Lo he comprobado al aplicar un script
para comprimir ficheros de gran tamaño. Siempre me daba errores, lo que no
ocurre con Xsane.

La mayoría de los programas anteriores se encuentran en los repositorios de
gran parte de las distribuciones Linux.

Master PDF
Editor
es software propietario. Está desarrollado por Code
Industry
. En Linux se puede utilizar libremente, sin fines
comerciales, por ejemplo para propósitos educativos o personales. Para otros
fines habría que adquirir la respectiva licencia.

Para ver las características mas importantes lo mejor es consultar esta entrada
de El atareao.

Aunque ya tiene unos meses, ha habido pocos cambios.

El principal problema que nos encontramos en Linux con los archivos PDF es
el de la firma digital.

El único programa que tiene incorporado todo para la misma es Adobe Acrobat.
Para Windows y, creo que también, para Apple y Android.

En Linux, la versión que hay es antigua y de 32 bits. Discontinuada por
Adobe.

No trae soporte para firma digital.

Tengo la costumbre de escanear con alta resolución, normalmente 300 dpi, con
lo cual los archivos son de gran tamaño. Para optimizarlos suelo empelar un
scrip que encontré hace tiempo, y no me acuerdo dónde.

Lo tengo en un fichero ejecutable: comprimepdf.sh

El contenido es el siguiente:

#!/bin/sh

dpi=72

if [ $# -lt 2 ]

then

echo “usage: $0 input output [dpi]”

exit 1

fi

if [ $# -gt 2 ]

then

dpi=$3

fi

echo “Shrinking document…”

gs  -q -dNOPAUSE -dBATCH -dSAFER \

-sDEVICE=pdfwrite \

-dCompatibilityLevel=1.3 \

-dPDFSETTINGS=/screen \

-dEmbedAllFonts=true \

-dSubsetFonts=true \

-dColorImageDownsampleType=/Bicubic \

-dColorImageResolution=$dpi \

-dGrayImageDownsampleType=/Bicubic \

-dGrayImageResolution=$dpi \

-dMonoImageDownsampleType=/Bicubic \

-dMonoImageResolution=$dpi \

-sOutputFile=$2 \

$1

#sh comprimepdf.sh ~/input.pdf ~/output.pdf 150

Este último párrafo es la orden para ejecutarlo.

El modificador 150, se puede cambiar para aumentar o disminuir la
resolución.

Es muy efectivo. Archivos de mas 10 MB los reduce a 200 o 300 Kb. sin
afectar a su calidad.

Es necesario tener instalado Ghostscript
para que funcione.

Existe un script, que en Fedora se puede instalar desde los repositorios, shrinkpdf.sh,
pero después de utilizar ambos, prefiero el primero.


Martes 14 de noviembre de 2017

Liher Sanchez

Liher Sanchez
El blog de Liher

Cómo crear un sitio web con un constructor de sitios web y un diseño listo

Si no eres bueno en el diseño, y tampoco eres un profesional del diseño de sitios web, podemos ofrecerte una manera más fácil de crear un sitio web. Tu sitio web nuevo no sólo será totalmente funcional, sino también atractivo, es decir, creado de acuerdo con todas las tendencias de moda del diseño web de hoy.

Un constructor web y una plantilla prediseñada te ayudarán a completar esta tarea difícil. Así pues, hoy vamos a hablar de las nuevas plantillas de sitios web de TemplateMonster que han sido desarrolladas especialmente para MotoCMS 3.0.

 

 

Las ventajas principales del constructor de sitios web de MotoCMS 3.0

La principal diferencia entre el motor de MotoCMS y otros sistemas de gestión de contenidos es la simplicidad y claridad del primero. Te permite editar plantillas simplemente arrastrando y soltando varios elementos de sus diseños.

Ahora no tienes que saber codificar, no se te obliga a programar nada o hacer otras cosas técnicas. Simplemente arrastra y suelta los elementos prediseñados, textos e imágenes y obten un diseño único y funcional.

En otros CMS normalmente se te ofrece sólo un panel de administración y una plantilla prediseñada. Y todo lo que puedes hacer en el panel es crear páginas y añadir contenidos a ellas.

Mientras tanto, MotoCMS incorpora un poderoso editor visual que te permite crear un diseño de plantilla único arrastrando y editando diferentes elementos preestablecidos.

Es decir, no tendrás que codificar nada y preocuparte por el rendimiento del sitio en caso de que algo salga mal en el código. Todas tus configuraciones y experimentos con el diseño se guardarán automáticamente y el código del sitio permanecerá perfecto y funcionará adecuadamente en cualquier navegador.

La creación de sitios web con el constructor web de MotoCMS tiene un montón de ventajas:

  • Facilidad y comodidad. Incluso un principiante inexperto no tendrá problemas con su uso.
  • No se requiere programar o codificar nada.
  • Una gran cantidad de plantillas de alta calidad.
  • Sistema de edición visual sencilla de arrastrar y soltar.
  • Selector de colores único.
  • Alta velocidad de carga de sitios web.
  • Plantillas adaptativas y creadas de acuerdo con todas las tendencias actuales del diseño web.
  • Optimización para SEO.
  • Versión de prueba gratuita de 14 días.

 

 

Presta atención al último punto. Puedes probar este constructor web completamente gratis, experimentar con los ajustes, construir tu propio diseño único y, a continuación, si te gusta el resultado, comprar el sitio web creado y transferirlo a tu propio alojamiento web. En este caso, no perderás ningún dato. Nos parece una opción muy buena y útil.

Además, el producto se te ofrece junto con el servicio de soporte técnico, por lo que siempre puedes solicitar ayuda, en caso de que te confundas en algo o no puedas entender algo. Podrás solicitar ayuda del equipo de asistencia técnica justo después del registro en el sitio y obtendrás respuesta a cualquier pregunta tuya.

Hay cinco secciones principales en el panel de control de MotoCMS 3.0:

  1. Pages/Páginas. Se te permite crear y editar fácilmente páginas del sitio, personalizar su apariencia y al mismo tiempo hacer la optimización para los motores de búsqueda (SEO).
  2. Design/Diseño. En esta sección, se te permite personalizar la parte visual del diseño, el diseño del texto, los fondos, los estilos y los widgets. Estos últimos, a su vez, tienen sus propios ajustes preestablecidos que puedes modificar fácilmente.
  3. Multimedia library/Biblioteca multimedia. Una sección especial para trabajar con todos los archivos multimedia: videos, audios, etc.
  4. Configuration/Configuración. Los ajustes principales del sitio, así como la opción de integración de las herramientas de webmaster (para usuarios avanzados).
  5. Blog. Una sección separada para las configuraciones de visualización y funciones de blog.

Estas secciones puedes editar a tu gusto y tantas veces como deseas. Crea tu propio sitio, añade los widgets y bloques necesarios, inserta archivos multimedia, textos, tablas o cualquier otra cosa. Todo esto es fácil y rápido de configurar, así que, incluso una persona que nunca ha trabajado en el desarrollo web, podrá construir su propia página web sin mucho esfuerzo.

Las categorías principales de las plantillas MotoCMS 3.0 de TemplateMonster:

  • Arte y cultura;
  • Animales;
  • Diseño y fotografía;
  • Educación y libros;
  • Negocios y servicios;
  • Autos y motos;
  • Computadoras e Internet;
  • Electrónica;
  • Entretenimiento, juegos y vida nocturna;
  • Hogar y familia;
  • Moda y belleza;
  • Comida y restaurantes;
  • Vacaciones, regalos y flores;
  • Medicina;
  • Bienes raíces;
  • Sociedad y gente;
  • Deportes, naturaleza y viajes.

Como puedes ver, hay temas para todos los gustos. Y si no has encontrado una plantilla adecuada, entonces, créala por tí mismo! 🙂 Todo esto es muy fácil de hacer con el constructor web de MotoCMS 3.0. A pesar de toda esta simplicidad, tu sitio web todavía tendrá un aspecto profesional y fiable.

Todas las nuevas plantillas creadas por TemplateMonster para MotoCMS 3.0 son 100% adaptativas. Esto significa que funcionarán perfectamente en cualquier dispositivo y se adaptarán automáticamente a cualquier tamaño de pantalla.

Por supuesto, todas las nuevas plantillas incluyen aquellas características modernas, como el efecto de paralaje, la tipografía elegante, la adaptabilidad, los iconos de alta calidad, la animación preintegrada, el diseño de alta calidad en CSS3 y HTML5 y mucho más.

Viernes 13 de octubre de 2017

Liher Sanchez

Liher Sanchez
El blog de Liher

Ganar dinero en Internet

No hay duda de que, hoy en día, Internet pone al alcance de nuestras manos un sinfín de posibilidades para muchas facetas de nuestra vida. Una de las mas importantes es el conocimiento, hay muchas páginas web en las cuales podemos aprender cualquier cosa que queramos, es una gran ayuda para cualquier persona que tenga ganas de aprender cosas nuevas, sea de la temática que sea, como por ejemplo los idiomas, no se si conoceréis el traductor de Google, pero es muy bueno ya que permite traducir entre muchos idiomas y tiene la opción de escuchar las traducciones o decir la palabra o frase que queréis traducir en vez de teclearla para ayudarnos así a aprender a hablar en ese idioma. A mi me ayuda bastante para hacer los deberes del colegio con mis hijas.

Otra de las bondades de Internet es la posibilidad de conocer gente de cualquier lugar del mundo de una forma muy sencilla, para ello las redes sociales son un medio muy bueno. Otra opción que tenemos en Internet es ganar algo de dinero o incluso, si se nos da bien, vivir de Internet, aunque eso pocos lo logran, pero la posibilidad esta ahí, eso es innegable. Hoy os quiero hablar un poco de esto, ya que conozco de cerca algunos casos que os voy a comentar.

Una amiga mía conoce una pareja que creo una página web en la cual hablaban de muchas cosas que rodeaban a las personas que hicieron la EGB en mi país, hablan de recuerdos de la gente que estudiamos en aquella época y con el tiempo fueron creciendo y han conseguido llegar a vivir de ello, de hecho han publicado libros y juegos, entre otras cosas. Esta web se llama Yo fui a EGB y esta muy bien ya que te hace recordar cosas que, por lo menos yo, ya tenia olvidadas. Esta es una muestra de como un hobby se puede convertir en tu forma de vida, algo que a muchas personas nos gustaría.

 

 

Otro caso de como ganar dinero en Internet es el trading. En alguna ocasión me había interesado en esto pero nunca he terminado por informarme bien. Yo pensaba que era necesario tener conocimiento avanzados sobre finanzas para poder sacar provecho del trading pero no es así. Hace poco he hablado con un amigo sobre temas de ordenadores y me estuvo hablando de lo que hace su mujer para ganarse un sueldo. Trabaja desde casa y lo hace con el Ibex trading, me estuvo explicando un poco como iba el tema, aunque el no lo hacia ya que que su mujer quien se dedica a ello. Dedicas unas horas al día, el tiempo varia según el día, pero viene a ver como una jornada partida, es decir, unas 4 horas diarias mas o menos. Con dedicarle ese tiempo, una inversión mínima y paciencia ha llegado a conseguir un sueldo que mucha gente no tiene en un trabajo normal hoy en día, lo cual es mucho decir. Por lo tanto esta es otra opción de ganar dinero en Internet.

Otra opción que no me había planteado como una forma de ganar dinero en Internet es el tema de las apuestas. Como todo en esta vida hay quien convierte esto en una manera de ganarse las habichuelas. En este caso conozco a una persona que se lo toma como un trabajo y esta todo el día informándose sobre cualquier cosa relacionada con el deporte para poder afinar las apuestas todo lo posible. Hay muchas empresas que dan estos servicios y una buena forma de empezar seria ir a una web en la cual poder conocer las ventajas de este tipo de webs para elegir la adecuada. Después ya tendréis los datos necesarios para elegir una web de apuestas y poder empezar. En esa web tenéis también noticias deportivas para poder estar al día, algo muy importante si queréis conseguir un dinerillo.

Hay mas formas de ganar dinero en Internet pero hay algo que es necesario en todas ellas, lo que haces te tiene que gustar y apasionar ya que de otra forma sera difícil conseguir algo. En mi caso puedo decir que el dinero que gano con este blog, aunque sea poco me sirve para lo que busco. Algunas de las cosas que me puedo permitir son:

  • Tener un VPS para la web y otros proyectos
  • Me permite cambiar de ordenador cada poco tiempo y comprarles accesorios para así estar al día
  • Hacer donaciones a proyectos de software libre

Y poco mas, algún capricho pero pequeñito. Ahora tengo en mente comprar un portátil viejito para ponerlo a punto y usarlo para probar distribuciones Linux en un ordenador mas limitado. También voy a comprar un disco Msata SSD para mi portátil de 120 GB. En esas cosas dedico el dinero que gano con el blog, así os puedo dar opiniones de primera mano sobre estas cosas.

Un saludo a todos.

Lunes 02 de octubre de 2017

Bruno Exposito

Bruno Exposito
The Linux Alchemist

Solución al mensaje “se ha detectado un problema en un programa del sistema”

Desde hace ya algún tiempo, Ubuntu arrastra un pequeño (aunque molesto) problema. Se titula “Se ha detectado un problema en un programa del sistema” y es cortesía del sistema de reporte de errores de Ubuntu (apport).

se-ha-detectado-un-problema-programa-sistema

Lo que ha ocurrido es que alguna aplicación se ha cerrado inesperadamente, el fallo se ha almacenado en /var/crash y apport insiste en reportarlo.

 

No es un problema excesivamente importante, aunque es bastante molesto y alarma a los nuevos usuarios, que creen que está fallando constantemente algo.

 

Hay dos soluciones: limpiar la carpeta donde se almacenan los informes de errores o desactivar la aplicación que reporta los errores (apport).

 

¿Como borro el log de los errores de Ubuntu?

Pues es sencillo, solo es necesario ejecutar el rm como root sobre el contenido de la carpeta.
sudo rm /var/crash/*

 

¿Como desactivo el reporte de errores en Ubuntu?

Editando el fichero [b]/etc/default/apport/b] con cualquier editor:
sudo nano /etc/default/apport
sudo gedit /etc/default/apport
sudo pluma /etc/default/apport
sudo kate /etc/default/apport
sudo vi /etc/default/apport

Y cambiando el valor de enabled a 0. Tal que así:
enabled=0

Viernes 29 de septiembre de 2017

Ubuntizando.com

Ubuntizando.com
Ubuntizando.com

La nueva consola de Atari usará Linux y mola cantidad

Atención jugones y nostálgicos, Atari prepara el inminente lanzamiento de su nueva consola. La primera desde la Atari Jaguar de 1993 lo cual es ya un montón de tiempo y parece que Atari tras aprender de los errores quiere volver por la puerta grande. Por lo pronto vamos conociendo detalles de lo que está por llegar.

Con un aspecto retro que recuerda a la atari 2600, la Ataribox contará con un lector de tarjetas SD, cuatro puertos USB y una salida HDMI en el exterior y un procesador AMD y con una unidad gráfica basada en la tecnología Radeon. Sí, lo sé… estoy siendo muy vago en detalles pero es que hasta la fecha todo es de un secreto que asusta. No se ha revelado qué clase de modelo de GPU y CPU están incluidos en el chip AMD, ni la cantidad de memoria que tendrá.

Lo que sí sabemos es que Atari apostará por GNU/Linux como sistema operativo principal.  Lo cual de entrada supone una oportunidad muy interesante para afirmar “¿Quien dijo que en GNU/Linux no se podía jugar?”

Se estima que la nueva consola de Atari vendrá a costar unos 249 a 299 dólares según configuración aunque se desconoce fecha exacta de salida al mercado.

Fuente: juegosadn / gamingonlinux.com

Ubuntizando.com

Ubuntizando.com
Ubuntizando.com

10 elementos esenciales del plan de proyecto perfecto

La semana pasada tuve el placer de colaborar en la organización y celebración de una nueva edición del WordPress Pontevedra donde profesionales y curiosos tienen su punto de encuentro para discutir diferentes aspectos sobre esta plataforma de contenidos. Allí tuve ocasión de coincidir y hablar con una antigua colaboradora sobre un proyecto pasado donde participamos como freelance para un cliente que “no salió del todo bien”.

Lo cierto es que no suelo hablar mucho de mi trabajo en el blog pero creo importante compartir mis impresiones. Algunas veces los proyectos no salen bien aunque sobre el papel todo parece muy fácil. Claro está que en este caso el papel era más una servilleta arrugada con un par de anotaciones y claro… qué podríamos esperar de ello. Mi culpa no fue darme cuenta y salir corriendo de la primera reunión. Tengo que aprender a decir NO. Este proyecto en particular supuso una continua perdida de horas de trabajo, consumo de tiempo y el que no pudiera atender como debiera a otros clientes. Sinceramente un desastre donde no gané dinero, perdí mis nervios y del que todavía me estoy recuperando.

Mi experiencia me dice que cuando se gestiona un proyecto antes hay que trabajar en plasmar cuanta idea sea posible y determinar la toma de decisiones necesarias y sus razones para poder lograr el éxito. No valen las ocurrencias de último momento y menos el “marear al personal apagando fuegos con cambios constantes”.  Claro que una cosa es decirlo y otra es hacer. No es fácil y hay radica el poder de un buen gestor de proyectos.

Para ilustrar lo que digo encontré en Pinterest la siguiente infografía que deja muy claros los pasos que deben darse y qué evitar a la hora de gestionar nuestros proyectos.

10 elementos esenciales del plan de proyecto perfecto
Infografía ofrecida por Wrike – Gestión De Proyectos

Ubuntizando.com

Ubuntizando.com
Ubuntizando.com

Microsoft ingresa en la Open Source Initiative

Microsoft Loves Linux Foto: arstechnica.com

Foto: arstechnica.com

¿Recordáis todo ese rollo de que Microsoft ahora ama a Linux y que romance y patatín. Pues parece que va en serio? Bromas a parte esta semana se acaba de anunciar que Microsoft ingresa en la Open Source Initiative (OSI) como patrocinador oficial. Esto supone todo un hito en la historia de la organización encargada de promocionar el código abierto.

Idilio o mero interés seguro traerá importantes novedades en el futuro. Eso sí, la noticia ya ha causado importantes reacciones dentro de la comunidad. Es el caso de Stallman, poco entusiasta con el amor que ahora Microsoft deposita en Linux, quien afirma lo siguiente:

Sin duda se ve de esa manera. Pero no será tan fácil extinguirnos, porque nuestras razones para usar y avanzar en el software libre no se limitan a la conveniencia práctica.

Queremos libertad. Como una manera de usar las computadoras en libertad, Windows no es un comienzo.

Esto no avanza la causa del software libre, ni una pizca. El objetivo del movimiento del software libre es liberar a los usuarios de sistemas propietarios, que niegan la libertad como Windows […].

Una opinión que no comparte Mark Shuttleworth, de Canonical y Ubuntu:

No es que Microsoft esté robando nuestros juguetes, es más que los estamos compartiendo con Microsoft para dar a todos la mejor experiencia posible.

WSL proporciona a los usuarios que son bien versados en el entorno de Windows con mayor variedad y flexibilidad, al tiempo que abre una nueva base de usuarios potenciales para la plataforma de código abierto.

O Patrick Masson, Gerente General y Director de Junta de la OSI:

Este es un importante hito para la OSI y el movimiento del Open Source para tener una mayor difusión. No creo que haya una mayor prueba de madurez, viabilidad, interés y éxito para el Open Source que no solo el reconocimiento de Microsoft, sino también su apoyo como patrocinador, así como su participación como contribuyente a muchos proyectos Open Source y comunidades.

Lo que sí parece claro es que desde que Satya Nadella fuera nombrado CEO del gigante de Redmon, Microsoft ha dado un giro radical en torno al Open Source y Linux. Muy opuesta y en nada tiene que ver con la dirección que la compañía con Ballmer al frente en 2001:

Linux es un cáncer que se une en un sentido de propiedad intelectual a todo lo que toca

¿Cómo cambió el cuento? ¿Cierto?

Lunes 18 de septiembre de 2017

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Bash: ¿Cómo ejecutar código antes y después de cada comando? Logging, monitorización, notificaciones y mucho más

Ejecutar código antes y después de cada comando

Con el fin de hacer nuestro sistema (o servidor) más flexible. Aunque podemos hacer muchas cosas con estas técnicas. Es de gran utilidad poder ejecutar un script justo antes de la ejecución de cualquier orden de Bash y que, justo cuando esta orden termine, podamos ejecutar cualquier otra cosa. Esto nos abre las puertas, por ejemplo a notificaciones de inicio/finalización, logging, monitorización y muchas más posibilidades que veremos en futuros posts. Cosas que podremos hacer tanto en el ámbito local, como en servidores de forma muy sencilla.

Aunque otros intérpretes, como ksh, tcsh, zsh y algunos más tienen facilidades para estas tareas. Vamos a hacerlo en bash, ¡porque somos unos valientes! Porque se instala por defecto con muchas distribuciones y porque es el que me he encontrado con más frecuencia.

Ejecutar algo cuando termina un comando

Cuando un comando se ha ejecutado y Bash nos vuelve a pedir una nueva orden, justo antes de darnos el control, y para mostrar el prompt (ese texto que suele ser usuario@host /directorio/actual y termina en un dólar o una almohadilla), Bash, ejecutará lo que contenga la variable PROMPT_COMMAND, ya sea una función, un alias, o la ejecución de un programa. Vamos a hacer una prueba:

PROMPT_COMMAND=”date”
lun sep 18 10:23:47 CEST 2017
pwd
/home/gaspy
lun sep 18 10:24:47 CEST 2017

Incluso si sólo pulsamos enter, como se vuelve a generar el prompt, justo antes nos mostrará la fecha (porque el comando a ejecutar es date)

Como ejemplo práctico, vamos a hacer un pequeño script que nos notificará cuando alguna partición de nuestro disco duro llegue a un punto crítico, en este caso, vamos a revisar todas las particiones de /dev/sdb y avisar al usuario cuando alguna de estas sobrepase el 90% (opciones que podremos configurar luego), para ello, vamos a crear un script llamado critp.sh con lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/sh

PARTITION_PATTERN="/dev/sdb*"
WARNING_PERCENT=90
__RED='\033[1;31m'
__YELLOW='\033[1;33m'
__NC='\033[0m' # Color end

function space_notifier()
{
        local OLDIFS=$IFS
        IFS=$'\n'
        local STATUS=($(df -h $PARTITION_PATTERN | awk 'NR > 1'))
        IFS=$' \n\t\r'
        for st in "${STATUS[@]}"; do
                local _ST=($st)
                local _PERCENT=$(echo ${_ST[4]}| tr -d '%')
                if (("$_PERCENT">"$WARNING_PERCENT")); then
                        echo -e $__RED"El dispositivo "$__YELLOW"${_ST[0]}"$__RED" está al ${_ST[4]}$
                fi
        done 2>/dev/null
        IFS=$OLDIFS
}

PROMPT_COMMAND="
space_notifier"

Y lo cargaremos de la siguiente manera:

source critp.sh

Con esto, cada vez que pulsemos enter o finalice un comando, veremos el conjunto de dispositivos que ha alcanzado ese porcentaje de espacio:
Ejemplo de salida de terminal

Una buena idea sería también notificar sólo a veces, tal vez con una probabilidad del 50%. Para que no siempre esté calculando ni nos sintamos abrumados por los mensajes de notificación. Para ello, podemos dejar el script así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh

PARTITION_PATTERN="/dev/sdb*"
WARNING_PERCENT=90
PROBABILITY=50
__RED='\033[1;31m'
__YELLOW='\033[1;33m'
__NC='\033[0m' # Color end

function space_notifier()
{
        if (($(($RANDOM%100))<$PROBABILITY)); then
                return
        fi
        local OLDIFS=$IFS
        IFS=$'\n'
        local STATUS=($(df -h $PARTITION_PATTERN | awk 'NR > 1'))
        IFS=$' \n\t\r'
        for st in "${STATUS[@]}"; do
                local _ST=($st)
                local _PERCENT=$(echo ${_ST[4]}| tr -d '%')
                if (("$_PERCENT">"$WARNING_PERCENT")); then
                        echo -e $__RED"El dispositivo "$__YELLOW"${_ST[0]}"$__RED" está al ${_ST[4]}$
                fi
        done 2>/dev/null
        IFS=$OLDIFS
}

PROMPT_COMMAND="
space_notifier"

Ya tenemos lo básico. Aunque estaría muy bien conocer información sobre el comando que se acaba de ejecutar y que, por supuesto, tenemos a nuestra disposición como es el propio comando ejecutado y su estado de salida. Más adelante podremos saber si se ha ejecutado realmente un comando, porque claro, cuando pulsas enter, vuelve a llamarse a la función. Ahora mismo, está muy bien si queremos realizar tareas de mantenimiento, notificar al usuario si está mal de espacio en disco, etc. Como el siguiente ejemplo que servirá para notificar al usuario cuando termine una determinada tarea. Suponemos que estamos en un entorno gráfico, así que avisaremos con zenity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

function notify() {
        NOTIFY=1
}

function pcom() {
        local _PIPESTATUS=( ${PIPESTATUS[@]} )
        if [ -n "$NOTIFY" ]; then
                local OLDIFS=$IFS
                IFS=' '
                local STATUS="${_PIPESTATUS[@]}"
                IFS=$'\n'
                local HIST=($(HISTTIMEFORMAT= history 1 | awk '{ print $1"\n"substr($0, index($0,$2)) }'))
                IFS=$OLDIFS
                zenity --info --text "$(echo -e "COMANDO FINALIZADO: ${HIST[1]}\n ESTADO: $STATUS")"
        fi
        unset NOTIFY
}

PROMPT_COMMAND="pcom"

Ahora, cargaremos el archivo con source. Y podremos ejecutar cualquier comando con normalidad, aunque, cuando vayamos a hacer algo que vaya para largo podremos hacer lo siguiente:

notify; sleep 100

De esta forma, cuando termine la ejecución de sleep 100, o de cualquier otra cosa que creamos que va a tardar mucho, recibiremos un mensaje parecido a este:
Diálogo GUI provocado por PROMPT_COMMAND
Este script tiene algunas cosas curiosas. Para hallar el estado de la ejecución de las órdenes, utilizo PIPESTATUS. Esta variable, si el comando es sencillo, devolverá sólo un valor, haciendo lo mismo que $?. Pero cuando hemos llamado varios comandos unidos por una pipe o tubería, nos va a devolver el estado de todos los comandos ejecutados. Eso sí, como PIPESTATUS se actualiza tras cada cosa que ejecutamos, lo primero que haremos nada más entrar en la función será guardar su valor en otra variable, y así nos aseguramos de no perderlo.

Y esto está muy bien cuando estamos haciendo varias cosas y se nos puede ir la cabeza con una tarea. Nos puede servir para cuando estemos creando o restaurando un dump de base de datos, cuando estemos haciendo una copia de archivos (local o remota), o estemos realizando alguna tarea de cálculo intenso. Tan solo tenemos que llamar antes de la tarea en cuestión a notify y ya se encargará él de todo. Podemos extender la funcionalidad de notify, incluso aprovechar lo que voy a contar a continuación para hacerlo más potente (te adelanto que en unos días publicaré un script mucho más completo).

Ejecutar algo justo antes de llamar al comando

Para tener control total sobre los comandos ejecutados es interesante poder ejecutar código antes de la ejecución de los comandos. Esto, principalmente nos ayuda a depurar nuestros scripts, porque sabremos en qué orden se ejecuta cada cosa, pero también puede ser una buena herramienta de control, gran ayuda para hacer una visualización interactiva de comandos o, para saber lo que ejecutan nuestras visitas o los comandos que se ejecutan en un servidor además de muchas otras utilidades.

Como ejemplo, empezaremos con algo básico, simplemente haciendo echo antes y después de una llamada. Y, para dar un valor añadido, ya que somos capaces de ejecutar algo antes de hacer cualquier llamada, podremos detectar cuando simplemente se pulsa enter. Ya que, cuando pulsamos enter, la primera función, precmd, no se va a ejecutar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
function postcmd() {
        if [ "${#COMANDOS[@]}" -gt 1 ]; then
                HISTORY=$(HISTTIMEFORMAT= history 1)
                echo "COMANDO EJECUTADO: "${HISTORY:7}
        fi;
        COMANDOS=();
}

function precmd() {
        COMANDOS+=("$BASH_COMMAND");
        if [[ "$BASH_COMMAND" != "$PROMPT_COMMAND" ]]; then
                echo "INICIA EJECUCIÓN: "$BASH_COMMAND
        fi
}

PROMPT_COMMAND="postcmd"

trap 'precmd' debug

Trabajando un poco en este código podremos ser capaces, por ejemplo de guardar un log de todo lo que los usuarios ejecutan, simplemente introduciendo:

1
logger $BASH_COMMAND

En lugar del echo “INICIA EJECUCION”. Así podemos hacer que el sistema sea totalmente transparente al usuario. Además, para completar el registro podremos incluir otra función:

1
2
3
4
5
function errcmd() {
        echo "ERROR EJECUTANDO: $BASH_COMMAND en linea $LINENO Codigo de error: $?"
}

trap 'errcmd' err

Que vinculamos a cualquier error. Es decir, cancelación de ejecución o que el código de salida de lo que sea que hayamos llamado no sea 0. Por supuesto, podríamos ayudarnos de más traps como int (para Control+C), quit (para Control+\), term (para cuando se mata el proceso), etc.

Bueno, y, hagamos algo interesante como evitar que el usuario ejecute cosas que no queremos que ejecute:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
shopt -s extdebug

function denyaccess () {
        if [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ]; then
                return
        fi
        local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ $

        if [ "
shopt -u extdebug" == "$this_command" ]; then
                return 0
        elif [[ "
$this_command" =~ ping ]]; then
                return 0
        fi
        echo "
ACCESO DENEGADO para: $this_command"
        return 1
}

trap 'denyaccess' DEBUG

En este caso, haremos return 0, sólo cuando ejecutemos shopt -u extdebug y el comando ping. Mostrando el texto “ACCESO DENEGADO” si queremos ejecutar cualquier otra cosa. Esto en la práctica no vale de nada, tendríamos que introducir muchas restricciones o tal vez denegar (return 1) ciertas palabras, manteniendo el return 0 por defecto. Pero nos da una idea de cómo funciona.
Gracias a la opción extdebug, esta función es capaz de denegar la ejecución de la orden que hemos llamado en función del valor de retorno de la función denyaccess().
En este caso, el argumento -s de shopt, activa (set) esta capacidad. Del mismo modo, cuando utilizamos -u, la desactiva, y por eso esa orden está permitida, porque es un programa de ejemplo.

Para todo lo demás, incluso nos podemos servir de expresiones regulares para Bash, o incluso la llamada a una función.

Y, para terminar, vamos a hacer sustituciones de órdenes dentro de un comando. O lo que es lo mismo, cambiar el comando que vamos a ejecutar. Podríamos afectar a cualquier parte de la orden ejecutada, aunque para hacer un sencillo ejemplo, vamos a cambiar las llamadas a sudo por gksudo, así vemos un bonito entorno gráfico y será más llevadero para el usuario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
shopt -s extdebug

function changesudo() {
        if [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ]; then
                return
        fi
        local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*/$

        if [ "
shopt -u extdebug" == "$this_command" ]; then
                return 0
        fi
        eval ${this_command/sudo/gksudo}
        return 1
}

trap 'changesudo' DEBUG

Incorporar a nivel de sistema estos scripts

Los scripts que hagamos utilizando estas técnicas podemos cargarlos a nivel de usuario, introduciendo:

1
source script.sh

en el archivo ~/.bashrc o a nivel de sistema añadiendo esa línea en /etc/profile , /etc/bash.bashrc , o, mejor aún, en un nuevo archivo dentro de /etc/profile.d/

En las próximas semanas quiero publicar algunos ejemplos en los que veremos, aún más, la potencia de estas acciones.

Andrew Worley

The post Bash: ¿Cómo ejecutar código antes y después de cada comando? Logging, monitorización, notificaciones y mucho más appeared first on Poesía Binaria.

Miércoles 13 de septiembre de 2017

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Lanzando servidores TCP/IP en puertos libres aleatorios haciendo bind al puerto 0

Servidores TCP en el puerto 0
¿Cómo? ¡Que los puertos TCP empiezan en el 1! Aunque algo sospechaba, porque en informática, el cero siempre ha valido para algo. Por eso se dice que los humanos empiezan a contar desde el uno y los informáticos desde el cero. Con esta cara me quedé cuando vi que puedes lanzar un servidor y que éste escuche en el puerto 0. Pero si el 0 no es un puerto válido, ¿para qué vale?

Cuando lanzamos un servidor y lo asociamos al puerto 0, el sistema escogerá un puerto aleatorio y libre con permiso para crear un servidor (por ejemplo los puertos menores al 1024 requieren de privilegios de administración o root). Así que nuestro servidor escuchará donde primero pille. Además, esto funciona tanto en sistemas Unix como en Windows, no tiene pérdida.
¿Y qué sentido tiene escuchar en un puerto aleatorio?¿Cómo sabrán nuestros usuarios en qué puerto acceder a los servicios? De primeras a mí se me ocurren ciertas cosas:

  • Para las prácticas de redes, o más bien para cuando estás programando un servidor. Si alguno de vosotros está haciendo prácticas de redes, éste es un buen consejo. Yo recuerdo hace muchos años que tenía que crear un servidor TCP con unas ciertas características y, claro, creas un programa, compilas, ejecutas, y… algo no va bien, lo cierras, cambias algo muy rápidamente, compilas, ejecutas y… ¡el puerto está en uso! Tenía que esperar al sistema operativo para que se diera cuenta de que el puerto no lo iba a utilizar más y lo cerrara. Entonces, si cada vez que lanzo el servidor lo lanzo en un puerto diferente… ¡problema solucionado! Que el SO cierre puertos cuando tenga tiempo. Otra forma de hacerlo sería poder especificar el puerto en el que asociamos el servidor cada vez que lo ejecutamos.
  • Lanzamiento de servidores de prueba. Por ejemplo, voy a abrir un servidor web temporal para que un compañero de piso/de trabajo/amigo o yo mismo desde otro ordenador me pueda descargar un fichero o enviarme un mensaje. Podemos acordar un puerto, por ejemplo el 40563, pero seguro que si tienes muchas cosas en el ordenador tirando de Internet, está en uso.
  • Como en el punto anterior… en lugar de un servidor web, puede ser un servicio de backup, un FTP, un servicio de correo…
  • Lanzar servicios experimentales en las máquinas de producción pruebas. Y así evitamos visitantes no deseados, y calentamientos de cabeza por puertos bloqueados.
  • Tener un servidor en un puerto localizado para la conexión de control, y crear un servidor por un puerto aleatorio para enviar o recibir datos (o cualquier cosa), por la conexión de control comunicar el puerto del otro servidor y empezar a transmitir por el otro lado. Algo parecido al FTP…
  • Más sugerencias en los comentarios!!

Aquí traigo un pequeño programa hecho en Python que nos devuelve un puerto libre y aleatorio, extraído de: The port 0 trick..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import socket;

def findFreePorts(howMany=1):
    """Return a list of n free port numbers on localhost"""
    results = []
    sockets = []
    for x in range(howMany):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind(('localhost', 0))
        # work out what the actual port number it's bound to is
        addr, port = s.getsockname()
        results.append(port)
        sockets.append(s)

    for s in sockets:
        s.close()

    return results

print (findFreePorts(10));

Y podemos montar una prueba rápida con netcat.

nc -l 0

Luego desde otro terminal podemos hacer:

netstat -tanp | grep nc
tcp        0      0 0.0.0.0:38321       0.0.0.0:*        ESCUCHAR    9042/nc

De todas formas, hay programas a los que no les gusta que le des el puerto 0, como Apache, que se niega a encenderse en ese puerto. Otros servidores como MySQL, te dejan especificar el puerto 0 y de hecho escuchan en un puerto aleatorio, aunque podrían decirte aunque sea en logs en qué puerto están escuchando (podemos averiguarlo con la línea de antes del netstat). Y servidores como redis que si les das el puerto 0, no escuchan en ningún puerto TCP.

Foto principal: Scott Walsh

The post Lanzando servidores TCP/IP en puertos libres aleatorios haciendo bind al puerto 0 appeared first on Poesía Binaria.

Miércoles 06 de septiembre de 2017

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Píldora: Recupera los nombres de los interfaces de red de tu equipo, eth0, wlan0, etc

Network interfaces

A medida que una tecnología crece, siempre tenemos el mismo problema, terminamos metiendo muchos elementos de un mismo tipo en un equipo. Y terminamos teniendo el mismo problema: si cambiamos algo de sitio, o un driver se carga antes que otro, estamos perdidos porque nada funcionará igual.

Preámbulo

El caso más claro es el de los discos duros, las placas base suelen tener un montón de puertos para conectar discos duros. Y, simplemente tendría que dar igual dónde enchufemos cada uno. Incluso si cambiamos un disco duro de sitio una vez instalado el sistema (porque se ha roto el puerto, porque nos viene mejor cambiar las conexiones por la longitud de los cables… o ¡porque lo desarmamos todo y tenemos que enchufar séis discos duros y no queremos apuntar dónde estaba cada uno! Por eso, si miramos un /etc/fstab más o menos reciente, veremos que los discos duros están identificados por un UUID (que podemos obtener si ejecutamos blkid como superusuario).

Del mismo modo pasa con los interfaces de red. Podemos tener varias tarjetas de red enchufadas, varios WiFi y que, cada uno tenga un cometido diferente. Los dispositivos de red, por cable, históricamente han sido siempre eth0, eth1, eth2… y así hasta el final. Pero, ¿qué sucedería si cuando reiniciemos el que antes era eth0, ahora es eth2? seguramente el cable que está conectado a eth0 no tenga acceso a los equipos de eth2 y no funcione nada.

Personalmente, tuve un problema parecido en un miniPC casero que tengo funcionando de router. Este equipo tiene dos interfaces de red: uno integrado en la placa base que está conectado a Internet, y otro enchufado por USB que está conectado a un switch y punto de acceso WiFi. Un día, tras actualizar el equipo en remoto no volví a tener acceso a la máquina hasta que físicamente le conecté un monitor y me di cuenta de que los nombres de los interfaces de red habían cambiado (eth0 pasó a ser eth1 y eth1 se convirtió en eth0). En aquel momento, lo que hice fue cambiar la configuración de los interfaces, cambiar los interfaces en el firewall y listo. Pero, desde udev versión 197 estos dispositivos pasaron a tener un nombre fijo y muy feo, pero pongas el dispositivo como lo pongas, el nombre se mantendrá.

¡Al grano!

Por un lado está bien, por ejemplo, para el caso que comenté antes. Aunque en el ordenador de trabajo, que solo tengo un eth0 y wlan0, pero muchísimos scripts que utilizan interfaces de red fijos, no me gustaba la idea de tener que cambiar los nombres de dispositivos, así que decidí volver a utilizar eth0 y wlan0 como antes.

Nota: Estas modificaciones están hechas para una Ubuntu, para otra distribución, si usamos grub tendremos que buscar el archivo de configuración.

Para ello, editamos el archivo /etc/default/grub y en la línea de GRUB_CMDLINE_LINUX_DEFAULT añadimos net.ifnames=0. Por ejemplo esta línea puede quedarse así (depende mucho del contenido anterior):

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0"

Y luego ejecutamos:

sudo update-grub

Cuando reiniciemos el sistema, volveremos a tener todo como antes.

Más info: Systemd/PredictableNetworkInterfaceNames en Freedesktop.org

Actualizado 07/09/2017: Añadido enlace de Freedesktop. Gracias Osqui.

Foto principal: Seb Zurcher

The post Píldora: Recupera los nombres de los interfaces de red de tu equipo, eth0, wlan0, etc appeared first on Poesía Binaria.