Copy-Pega en la consola de comandos de Windows

La consola de comandos es una herramienta básica para todo aquel que trabaja en algún ámbito de la informática y es la forma menos recargada y rápida para ejecutar ciertas acciones en un sistema.

En el caso de Windows su interprete de comandos CMD, a veces resulta un poco engorroso cuando queremos recoger un resultado, y es que la consola no nos permite hacer algo tan simple como seleccionar y copiar. Algo a lo que todos nos hemos acostumbrado...

Existe la posibilidad de redirigir la salida usando ">" ">>" dependiendo si queremos sobrescribir el fichero o añadir información al final del mismo. Un ejemplo:

ping 127.0.0.1 > Log.txt
ping google.es >> Log.txt

Esta opción no resulta práctica cuando lo que queremos es conseguir de manera rápida la salida de un comando, para por ejemplo copiarla y pegarla en otro sitio sin pasar por un fichero.

A tal efecto puedes usar junto a un comando la siguiente pipeline:

 ping 127.0.0.1 | clip

De esta forma el output del comando queda guardado en el portapapeles de Windows y podrás pegarlo en cualquier sitio con la acción contextual "Pegar" del botón secundario del ratón o usando CTRL + V.

MeshlabServer – Aplicación de filtros de Meshlab en lote

En mi día a día trabajo con información tridimensional y hago tratamiento de la misma mediante una herramienta que se ha convertido para mí en un imprescindible. Se trata de Meshlab.

Meshlab es una herramienta Open Source  muy potente que permite el manejo y procesamiento de información 3D. Lo que hace realmente potente a Meshlab, son la cantidad de filtros para procesar esa información, y que más de uno ha pensado en usar como herramienta para hacer cierto procesamiento de un Dataset de información.

Cuando se descargan los binarios de Meshlab, se incluyen dos ejecutables: meshlab y meshlabserver. El primero es obvio para qué sirve, porque se trata del ejecutable que lanza Meshlab para ser utilizado por medio de la interfaz gráfica. El segundo es una ejecutable que nos permite procesar un Dataset completo, usando los filtros de Meshlab, mediante la configuración de un script MLX y prescindiendo de la interfaz gráfica.

Generar el script es tan sencillo como abrir Meshlab y aplicar todos los filtros que deseemos en el Dataset. Veamos un ejemplo.

Yoshi

Tenemos la malla de un modelo 3D de Yoshi como Dataset, pero dicho modelo tiene un agujero en la parte inferior.

Yoshi_with_hole

Meshlab dispone entre sus filtros de uno que se llama "Close Holes", que nos vendrá de perlas para este caso. Vamos a la sección "Filters" y los buscamos.

Meshlab_close_hole

Parametrizamos el filtro como mejor consideremos y le damos a aplicar. Como podemos ver el agujero de la parte inferior queda cerrado.

Yoshi_no_hole

Para generar el script del filtro que acabamos de aplicar y que vemos que da buenos resultados, volvemos a ir a "Filters", y seleccionamos "Show current filter script". Se nos abrirá una ventana como la siguiente:

Meshlab_script

Aquí están todas las acciones que van a constituir nuestro script, en nuestro caso sólo vamos a usar "Close Holes". En esta ventana podemos editar el orden de los filtros que vamos a aplicar, los parámetros  de cada script, borrar un  filtro del script... Cuando todo está en orden guardamos el script, el cual será guardado en formato MLX.

Para aplicar las acciones en lote sólo tenemos que usar el ejecutable meshlabserver indicándole los parámetros necesarios para su funcionamiento (input, output y script de filtros XML). Para ver la parametrización de meshlabserver podemos acudir a su comando de ayuda de la siguiente forma:

meshlabserver -help
Usage:
    meshlabserver arg1 arg2 ...
where args can be:
 -i [filename...]  mesh(s) that has to be loaded
 -o [filename...]  mesh(s) where to write the result(s)
 -s filename		    script to be applied
 -d filename       dump on a text file a list of all the filtering fucntion
 -l filename       the log of the filters is ouput on a file
 -om options       data to save in the output files: vc -> vertex colors, vf -> vertex flags, vq -> vertex quality, vn-> vertex normals, vt -> vertex texture coords,  fc -> face colors, ff -> face flags, fq -> face quality, fn-> face normals,  wc -> wedge colors, wn-> wedge normals, wt -> wedge texture coords
Example:
	'meshlabserver -i input.obj -o output.ply -s meshclean.mlx -om vc fq wn'

Notes:

There can be multiple meshes loaded and the order they are listed matters because
filters that use meshes as parameters choose the mesh based on the order.
The number of output meshes must be either one or equal to the number of input meshes.
If the number of output meshes is one then only the first mesh in the input list is saved.
The format of the output mesh is guessed by the used extension.
Script is optional and must be in the format saved by MeshLab.

De esta forma podemos aplicar una sucesión de operaciones de Meshlab en el Dataset que queramos con muy poco esfuerzo.

Clef – Inicio de sesión fácil y seguro

Todos los días manejamos un infinidad de accesos distintos para servicios web. Por seguridad deberíamos usar claves distintas para cada uno de los servicios en los que nos registramos, pero lo cierto es que terminamos usando variaciones de una misma clave o simplemente la misma. Esto a todas luces entraña su riesgo, puesto que desvelar una clave en cualquiera de los muchos servicios que usamos, conlleva comprometer el resto de accesos web. Puedes comprobar si este es tu caso gracias a servicios como "Have I been pawned?":

https://haveibeenpwned.com

clef_desktop

Clef es un servicio gratuito de autenticación e inicio de sesión único, simple y seguro. Se trata de un servicio que hace uso de tu smartphone para poder abrir la sesión de tus servicios web.

https://getclef.com

Clef se instala en tu móvil Android o IOS  y queda protegida su apertura mediante un PIN que pondremos durante su instalación. A partir de este momento podremos unificar todos los accesos usando Clef.

Clef simplifica el acceso y lo hace más rápido y cómodo, usando dos credenciales para idetificarnos. Por un lador el propio móvil, que se usa para escanear el código que se nos presenta, y el PIN que es algo que sabemos. De esta forma un elemento cotidiano que todos llevamos encima como es el smartphone, se convierte junto a un PIN, en tus credenciales de acceso para todos aquellos servicios web que estén integrados con Clef. Este modelo de autenticación de dos factores es un modelo clásico, siendo similar al de las tarjetas de crédito, que para hacer uso de las mismas es necesario la tarjeta (algo que tenemos) y el PIN (algo que sabemos).

Una vez autenticados en un servicio web, podemos controlar la caducidad de la sesión desde nuestro móvil o cerrarla, si por ejemplo se nos olvidó cerrarla en el equipo donde la abrimos. Además, si en algún momento perdemos el móvil siempre podremos desactivar Clef desde la siguiente dirección:

https://getclef.com/deactivate

Para que quede más claro, el siguiente vídeo ilustra su funcionamiento:

También es posible probar su funcionamiento en la siguiente dirección:

https://getclef.com/tutorial

Aquellos que tengan dudas sobre la seguridad del servicio, a continuación se facilitan los siguientes enlaces, accesibles desde la propia web de Clef:

https://getclef.com/security

https://getclef.com/static/dist/pdf/whitepaper.pdf

Es posible usar Clef en tu blog WordPress, instalándolo como plugin. De esta forma se dota a los usuarios de una manera más simple y segura de acceso al blog, además de eliminar los ataques de fuerza bruta por completo, tan extendidos en el mundo de WordPress. También es posible usar Clef junto la extensión Waltz para navegadores Chrome, para usar Clef como sistema de autenticación para cualquier servicio web. Waltz es además Open Source y su código fuentes puede ser encontrado en Github.

SyntaxHighlighter

SyntaxHighlighter es un completo coloreador de sintaxis desarrollado en JavaScript. Al ser un desarrollo de JavaScript la ejecución se realiza en el lado del cliente, en el navegador, lo que no añade carga extra al servidor.

Oficialmente soporta la detección de sintaxis para los siguientes lenguajes:

Brush nameBrush aliasesFile name
ActionScript3as3, actionscript3shBrushAS3.js
Bash/shellbash, shellshBrushBash.js
ColdFusioncf, coldfusionshBrushColdFusion.js
C#c-sharp, csharpshBrushCSharp.js
C++cpp, cshBrushCpp.js
CSScssshBrushCss.js
Delphidelphi, pas, pascalshBrushDelphi.js
Diffdiff, patchshBrushDiff.js
Erlangerl, erlangshBrushErlang.js
GroovygroovyshBrushGroovy.js
JavaScriptjs, jscript, javascriptshBrushJScript.js
JavajavashBrushJava.js
JavaFXjfx, javafxshBrushJavaFX.js
Perlperl, plshBrushPerl.js
PHPphpshBrushPhp.js
Plain Textplain, textshBrushPlain.js
PowerShellps, powershellshBrushPowerShell.js
Pythonpy, pythonshBrushPython.js
Rubyrails, ror, rubyshBrushRuby.js
ScalascalashBrushScala.js
SQLsqlshBrushSql.js
Visual Basicvb, vbnetshBrushVb.js
XMLxml, xhtml, xslt, html, xhtmlshBrushXml.js

El proyecto es Open Source con licencia MIT:

https://github.com/syntaxhighlighter/syntaxhighlighter

Y la página oficial es la siguiente:

http://alexgorbatchev.com/SyntaxHighlighter

Si estás interesado en integrarlo en tu WordPress, existen plugins como SyntaxHighlighter Evolved que integran SyntaxHighlighter.

A continuación dejo un ejemplo de código en JavaScript, para mostrar el funcionamiento de SyntaxHighlighter:

 

var x = myFunction(4, 3);

function myFunction(a, b) {
    return a * b;
}