NexCono, tu sitio viral preferido

NexCono es uno de mis últimos proyectos. Se trata de un sitio de noticias fácilmente viralizables (eso creo yo) pero bajo mi propia línea editorial. Todo el contenido es propio. Dispone de aplicación para Firefox OS y Ubuntu Phone.

NexCono

NexCono se ha dividido en las siguientes secciones:

Y podemos encontrar artículos muy interesantes y variados como los Pensamientos de Thomas Edison en París o una demostración interactiva del teorema del seno

Participación de los usuarios

Para NexCono es muy importante la participación de los usuarios. Todas las páginas tienen comentarios de Disqus. Además de tener un formulario para proponer temas. NexCono dispone de un newsletter para recibir las novedades del sitio directamente en tu buzón de correo. Las secciones Tests y Preguntas están diseñadas especialmente para fomentar la participación

Monetización

NexCono ha sido diseñado para tener el menor coste posible de infraestructura. De hecho, ahora mismo no estoy pagando nada. Uso AppEngine de Google como hosting pero solo como almacenamiento estático pues el sitio está construido en Jekyll. Mucha gente me hubiese recomendado WordPress, pero decidí quedarme con Jekyll por los costes y porque es una plataforma que ya domino. Los ingresos son por la publicidad. Estoy probando muchas combinaciones de anuncios: Adpv, AdPrimary, PropellerAds, ExoClick, YesAdvertising, Anonymous Ads, etc aunque todavía no tengo muy claro con quien quedarme.

Mi pregunta

Os pido a vosotros, los lectores de esta entrada que entreis a NexCono y me digais lo que debería mejorar en cualquier apartado (diseño (la fuente, la disposición), contenido (más largo, más corto, otros temas, más imágenes), categorías, etc) para así poco a poco ir mejorando ese portal.

Easter egg en Linux: la syscall reboot

Ayer me encontré con un curioso easter egg en el interior de Linux que no conocía. Se trata de la syscall reboot usada para reiniciar el ordenador. Primero veamos lo que nos dice el manual sobre reboot

man-reboot

Tiene algo interesante. Los dos primeros parámetros para llamar a reboot se llaman magic y magic2 y no son muy importantes realmente porque reboot también admite una versión sin esos parámetros.

Si leemos algo más podemos ver que magic debe ser igual al valor de LINUX_REBOOT_MAGIC1, que es 0xfee1dead (feel dead ?) y que para magic2 se admiten varios posibles valores

  • LINUX_REBOOT_MAGIC2 que es 672274793
  • LINUX_REBOOT_MAGIC2A que es 85072278
  • LINUX_REBOOT_MAGIC2B que es 369367448
  • LINUX_REBOOT_MAGIC2C que es 537993216

¿Por qué la constante primera está en hexadecimal y el resto no? ¿Qué pasa si pasamos los posibles valores de magic2 a hexadecimal?

672274793 = 0x28121969

85072278 = 0x05121996

369367448 = 0x16041998

537993216 = 0x20112000

¿A qué se parece? ¿Serán fechas? Veamos la primera. 28 de diciembre de 1969. ¿Qué ocurrió? ¡Pues que nació Linus Torvalds ese día! Y el resto de fechas son las fechas de nacimiento de sus hijas. Así que ya sabes, cada vez que reinicias en Linux estás usando fechas de nacimiento de la familia Torvalds.

Torvalds

 

Un repaso por las aplicaciones de Haiku

Haiku dispone de un catálogo pequeño pero interesante de aplicaciones que merecen la pena ser vistas. Voy a probar estas aplicaciones en una versión nightly recién descargada del sitio de Haiku (hrev49344)
Solo voy a usar los paquetes binarios. En Haikuports hay todavía más software, pero requiere compilación y puede estar desactualizado.

HaikuDepot

Se trata de la tienda de aplicaciones de Haiku. Similar a Ubuntu Software Center. Desde aquí podemos instalar cientos de aplicaciones ya compiladas para Haiku. Además permite comentar los progranas con una valoración.
HaikuDepot dispone de una versión web

HaikuDepot

HaikuDepot2

Instalar

HaikuDepot ya viene instalado en Haiku

WonderBrush

WonderBrush se trata del editor gráfico de Haiku para imágenes de mapa de bits como PNG, JPEG o BMP.

La ventana principal puede contener cualquier número de documentos llamados Canvas. Un canvas tiene asociado un nombre y una resolución por píxel además de muchas otras propiedades. También referencia a dos archivos, uno como formato de exportación y otro como formato nativo.
Cada canvas puede tener cualquier número de capas, actualmente representadas como una lista. Cada capa representa una imagen del tamaño del canvas. Dependiendo del método de fusión de capas, estas son unidas para formar la imagen final.

WonderBrush WonderBrush2

Instalar

Lo puedes encontrar en HaikuDepot o

Icon-O-Matic

Icon-O-Matic es la aplicación de gráficos vectoriales nativa de Haiku. Trabaja con el formato HVIF (Haiku Vector Icon Format) y está pensada para diseñar iconos principalmente. También exporta a PNG y SVG.

IconOMatic

Instalar

Ya viene instalado por defecto en Haiku

WebPositive

WebPositive es el navegador web por defecto en Haiku. Usa una versión especial de WebKit adaptada a Haiku y algo retrasada en funcionalidad.

haiku-webpositive

MultiversosHaiku

Instalar

WebPositive ya viene instalado

PoorMan

PoorMan es un ligero servidor HTTP totalmente gráfico.

PoorMan

Instalar

PoorMan ya viene instalado por defecto en Haiku

Vision

Vision es un cliente IRC

Vision

Instalar

Ya viene instalado por defecto en Haiku

People

People es el gestor de contactos de Haiku

People

Instalar

Ya viene instalado por defecto en Haiku

Album

Una aplicación para tratar los metadatos de las imágenes

Album

Instalar

En HaikuDepot o pkgman install album

ArmyKnife

Una aplicación para tratar los metadatos de las canciones

ArmyKnife

Instalar

En HaikuDepot o pkgman install armyknife

BeAE

BeAE es una gran aplicación junto a Wonderbrush e Icon-O-Matic para la edición multimedia. En este caso podremos editar audio de manera muy intuitiva. En su momento fue una aplicación de pago para BeOS.

BeAE

Instalar

En HaikuDepot o pkgman install beae

BePDF

El visor de documentos PDF de Haiku

BePDF

Instalar

En HaikuDepot o pkgman install bepdf

BeShare

Haiku también dispone de un sistema de transferencia de archivos P2P propio. Se trata de BeShare y esta es la implementación referencia. BeShare como no podía ser menos, tiene un magnífico soporte para búsquedas.

BeShare

Instalar

En HaikuDepot o pkgman install beshare_x86. Para permitir la conexión entre distintos sistemas operativos a las redes BeShare se creó JavaShare

BeZilla

El port de Mozilla Firefox para Haiku. Está muy desactualizado y no lo recomiendo.

BeZilla

Instalar

En HaikuDepot o pkgman install bezilla

MailNews

El port de Mozilla Thunderbird para Haiku. Está igual de desactualizado que BeZilla pero al tratarse de correo electrónico puedes tener menos problemas al usarlo.

MailNews MailNews-2

Instalar

En HaikuDepot o pkgman install mailnews

Beam

Se trata de un cliente de correo electrónico plenamente integrado en Haiku

Beam

Instalar

En HaikuDepot o pkgman install beam

BlogPositive

Una aplicación para escribir en blogs de WordPress y otros proveedores sin tener que usar el navegador

BlogPositive

Instalar

En HaikuDepot o pkgman install blogpositive

CapitalBe

Una aplicación de contabilidad sencilla y fácil de empezar a utilizar. GnuCash, que es el que uso en Linux, es mucho más complejo de empezar a usar.

CapitalBe CapitalBe2

Instalar

En HaikuDepot o pkgman install capitalbe

Sum-It

Una sencilla hoja de cálcula para realizar operaciones no muy complejas. La mejor hoja de cálcula es la de GoBe Productive, pero sigue siendo un producto privado que no se puede adquirir.

SumIt

Instalar

En HaikuDepot o pkgman install sum_it

Caya

Caya es una aplicación que unifica la mensajería instantánea el estilo de Pidgin. Soporta AIM, Google Talk, Jabber, Facebook, MSN y Yahoo.

Caya

Instalar

En HaikuDepot o pkgman install caya

LibreCAD

LibreCAD es una aplicación de CAD 2D escrita en Qt.

LibreCAD

Instalar

En HaikuDepot o pkgman install librecad_x86

Pe

Pe es el editor de texto más usado en Haiku. Tiene resaltado de sintaxis y soporte para extensiones.

Pe Pe-2

Instalar

Pe viene instalado por defecto en Haiku

NetSurf

NetSurf es un navegador ligero que no implementa JavaScript. Tiene una arquitectura interna muy limpia. Todo está contenido y modularizado. Está diseñado pensando en Haiku, RISC OS y otros sistemas desconocidos, aunque en Linux también funciona.

NetSurf

Instalar

En HaikuDepot o pkgman install netsurf

BePodder

BePodder es una aplicación para escuchar tus podcasts favoritos por RSS

BePodder

Instalar

En HaikuDepot o pkgman install bepodder

A-Book

Una aplicación de calendario con recordatorios

Instalar

En HaikuDepot o pkgman install a_book

BurnItNow

Una aplicación gráfica y fácil de usar para grabar CDs de todo tipo (datos, audio, rescate, …)

BurnItNow

Instalar

En HaikuDepot o pkgman install burnitnow_x86

Clockwerk

Ya hemos hablado de Wonderbrush, Icon-O-Matic y BeAE. Le toca el turno a Clockwerk, el editor de vídeo no linear open source que trabaja en Haiku.

Clockwerk

Instalar

En HaikuDepot o pkgman install clockwerk

LMMS

LMMS es una completa suite de edición de audio pensada para Linux pero que funciona también en Haiku.

LMMS

Instalar

En HaikuDepot o pkgman install lmms_x86

MilkyTracker

MilkyTracker es un programa para componer música de estilo 8 bits o tune.

MilkyTracker

Instalar

En HaikuDepot o pkgman install milkytracker

Paladin

Paladin nace con la idea de ser el IDE de referencia en Haiku. Trae plantillas y ejemplos y se integra con el resto de Haiku para no reduplicar esfuerzos. Por ejemplo, el editor de texto es Pe.

Paladin

Instalar

En HaikuDepot o pkgman install paladin

QEMU

QEMU es un contenedor de máquinas virtuales open source que permite emular arquitecturas diferentes a la de nuestro ordenador. Con QEMU podemos ejecutar Linux dentro de Haiku.

Instalar

En HaikuDepot o pkgman install qemu_x86

Yab IDE

Yab es un entorno que permite programar aplicaciones para Haiku en BASIC. Yab IDE es el IDE para este entorno espefífico.

Yab Yab2

Instalar

En HaikuDepot o pkgman install yab_ide

Juegos

En este apartado voy a mencionar algunos juegos disponibles para Haiku. Todos se pueden encontrar en HaikuDepot

BeMines

  • BeLife – pkgman install belife
  • BeMines – pkgman install bemines
  • Critical Mass – pkgman install criticalmass
  • DOSBox – pkgman install dosbox_x86
  • Flare – pkgman install flare_x86
  • FreedroidRPG – pkgman install freedroidrpg_x86
  • LBreakout2 – pkgman install lbreakout2
  • LMarbles – pkgman install lmarbles
  • LTris – pkgman install ltris
  • OpenTTD – pkgman install openttd_x86
  • Pipepanic – pkgman install pipepanic
  • Road Fighter – pkgman install roadfighter
  • Rocks’n’diamonds – pkgman install rocksndiamonds_x86
  • SDL Lopan – pkgman install sdllopan
  • Slime Volley – pkgman install slime_volley
  • Super Transball 2 – pkgman install super_transball
  • XRick – pkgman install xrick

Tutorial de CMake

Llevo varios años usando de forma habitual CMake. Sin embargo me doy cuenta que alguien que quiera empezar a usar este sistema va a encontrarse con documentación confusa.

1º Regla de CMake. La documentación puede ser confusa

¿Qué es CMake?

CMake se trata de una herramienta multiplataforma para generar instrucciones de compilación del código. No sustituye a las herramientas de compilación como Make o MSBuild, sino que nos proporciona un único lenguaje que será transformado a las instrucciones del sistema operativo donde nos encontremos. Sería un sustituto de Autotools.

cmake-dia

Las ventajas son que no tenemos que tener varios archivos para gestionar la compilación. Usando CMake podemos generar el resto. Actualmente CMake (3.2.3) soporta:

  • Unix Make
  • Ninja
  • CodeBlocks
  • Eclipse CDT
  • KDevelop
  • Sublime Text 2
  • Borland Make
  • MSYS Make
  • MinGW Make
  • NMake
  • NMake JOM
  • Watcom WMake
  • Kate
  • CodeLite
  • Xcode
  • Visual Studio (desde el 6 hasta 2013)

Usando CMake

En CMake las configuraciones estan centralizadas por defecto en un archivo llamado CMakeLists.txt. Este se encuentra en la carpeta central del proyecto. Normalmente con CMake los proyectos se construyen en una carpeta diferente de la que tenemos el código fuente. Es corriente crear una carpeta build en lo alto del proyecto. Así si tenemos un proyecto con CMake ya descomprimido haríamos lo siguiente.

También puedes usar la aplicación gráfica. Muy cómoda cuando debamos modificar las configuraciones.

cmake-gui

Podemos ajustar las variables de CMake desde la interfaz de usuario, usando el modo interactivo de la línea de comandos (cmake .. -i) o usando flags cuando llamamos a CMake (cmake .. -DCMAKE_CXX_FLAGS=-std=c++11)

El archivo CMakeLists.txt

Ya estamos listos para crear nuestro primer archivo de configuración de CMake.

proyecto

Vamos a ir viendo distintas versiones del archivo donde voy a ir añadiendo diferentes tareas. Estate atento a los comentarios de los archivos

Compilar como programa main.cpp

Y ya está.

Trabajar con opciones y condicionales

CMake permite ajustar muchas opciones como hemos visto con el asistente gráfico de CMake. Sin embargo no todas las variables se muestran ahí. Solo son modificables las que nosotros marquemos explícitamente. Se usa OPTION()

Usar librería estática

Usar librería dinámica

Seleccionar archivos de forma masiva

Usar SET para los archivos es muy fácil de entender, pero es posible que no queramos mantener una lista explícita del código fuente.

Esto tiene un inconveniente y es que CMake no detecta automáticamente si hay nuevos archivos que cumplen la característica, por lo que hay que forzar la recarga.

Copiar, crear, eliminar y descargar archivos

Incluir archivos de cabecera

A veces es necesario incluir archivos de cabecera en localizaciones no estándar

Plugins de CMake

CMake es extensible a través de módulos. La instalación por defecto de CMake trae unos cuantos módulos, no obstante, podemos añadir módulos solo para nuestro proyecto. Los módulos tienen extensión .cmake. Normalmente se dejan en una carpeta llamada cmake.

Mostrar información y generar errores

En ciertas situaciones querremos que no se pueda compilar el proyecto. MESSAGE es la solución.

Condicionales avanzados

Bucles

Submódulos

CMake usa un único archivo, pero quizá nos conviene repartir la configuración de CMake por varias carpetas entre zonas diferenciadas.

Librerías externas

Una de las características más interesantes de CMake es que es capaz de encontrar librerías externas que necesite nuestro programa. Esta característica se implementa con plugins de CMake. Aquí voy a necesitar wxWidgets.

Definiciones

Podemos añadir directivas del preprocesador de C++ con CMake

Dependencias

Se pueden crear árboles de dependencias en CMake

Usando Qt

Ejemplo práctico usando CMake y Qt5 que es capaz de usar QML. Soporta archivos QRC de recursos. Requiere los plugins de Qt5.

Usando Java

CMake soporta Java, aunque no maneja dependencias como Maven o Gradle.

Usar C++11

A partir de CMake 3.1, podemos definir el estándar de C y C++ que vamos a usar

omandos personalizados, Doxygen

En CMake podemos crear comandos personalizados. Por ejemplo, generar documentación con Doxygen

Archivos de configuración

En Autotools es común usar un archivo con configuraciones en tiempo de compilación. Normalmente se trata de una cabecera con soporte para plantillas. En CMake se puede hacer.

config.hpp.in

Instalar

CMake permite instalar también los programas

CPack

Pero make install es un poco incómodo. No se puede distribuir fácilmente. Aquí CMake presenta CPack, que genara instaladores. Yo soy reacio a usarlos pues son de mala calidad pero soporta:

  • ZIP
  • TAR.GZ
  • TAR.BZ2
  • TZ
  • STGZ – Genera un script de Bash que ejecutará la descompresión y hará la instalación
  • NSIS
  • DragNDrop
  • PackageMaker
  • OSXX11
  • Bundle
  • Cygwin BZ2
  • DEB
  • RPM

CPack necesita que usemos el comando cpack en vez de cmake

Usando ensamblador

CMake soporta correctamente GNU ASM. Nasm requiere más trabajo.

Algunas variables interesantes

|CMAKE_CURRENT_SOURCE_DIR|La ruta completa a la carpeta donde se encuentra CMakeLists.txt|
|CMAKE_MODULE_PATH|Las rutas para buscar plugins de CMake|
|PROJECT_BINARY_DIR|La carpeta que se está usando para guardar los resultados de la compilación|
|CMAKE_INCLUDE_PATH|Las carpetas de búsqueda de cabeceras|
|CMAKE_VERSION|Versión de CMake|
|CMAKE_SYSTEM|El nombre del sistema|
|CMAKE_SYSTEM_NAME|El sistema operativo|
|CMAKE_SYSTEM_PROCESSOR|El procesador|
|CMAKE_GENERATOR|El generador usado en ese momento|
|UNIX|Si estamos en Linux, OS X, BSD o Solaris será cierto|
|WIN32|Si estamos en Windows|
|APPLE|En OS X|
|MINGW| Usando MinGW|
|MSYS| Usando MSYS|
|BORLAND| Usando Borland|
|CYGWIN| Usando Cygwin|
|WATCOM| Usando OpenWatcom|
|MSVC| Usando Visual Studio|
|MSVC10| Usando Visual Studio 10|
|CMAKE_C_COMPILER_ID| El identificador de compilador de C|
|CMAKE_CXX_COMPILER_ID| El identificador de compilador de C++|
|CMAKE_COMPILER_IS_GNUCC| El compilador de C es una variante de GNU GCC|
|CMAKE_COMPILER_IS_GNUCXX| El compilador de C++ es una variante de GNU G++|
|CMAKE_BUILD_TYPE| La configuración Debug/Release que estamos usando|
|CMAKE_C_COMPILER| La ruta al compilador de C|
|CMAKE_C_FLAGS| La configuración del compilador de C|
|CMAKE_C_FLAGS_DEBUG| La configuración del compilador de C solo si estamos en la configuración Debug|
|CMAKE_C_FLAGS_RELEASE| La configuración del compilador de C solo si estamos en la configuración Release|
|CMAKE_SHARED_LINKER_FLAGS| La configuración del compilador para librerías compartidas|
|BUILD_SHARED_LIBS| Por defecto en ADD_LIBRARY, las librerías son compartidas. Podemos cambiar esto|

Muchas más en la wiki de CMake

RPath

El RPath es importante en los sistemas UNIX. Se trata de cargar librerías dinámicas que no están en directorios estándar.

Esto hará que los ejecutables construidos en UNIX puedan cargar librerías desde la carpeta donde se encuentran. Al estilo Windows.

Literatura Adrianistaní, un libro ligero de relatos cortos

Finalmente después de convencer a Raúl Izquierdo y después de maquetar los relatos ya está disponible Literatura Adrianistaní para comprar. Se trata de un libro de recopilación de algunos relatos cortos que teníamos por ahí.

Se trata de 11 relatos, algunos mucho más largo que otros. De ellos 3 son de Raúl y el resto son míos. La idea de este libro surgió después de perder un concurso literario donde había un generoso premio económico. Entonces decidimos vender nuestros propios relatos, muchos presentados a otros concursos, simplemente para ver que éramos capaces.

Prefacio

Este libro es una colección de pequeños relatos que hemos ido componiendo en nuestro paso por la faz de la Tierra. Un pequeño trocito de nosotros directo a vosotros. – Adrián Arroyo Calle

 

En este pequeño libro están escritos los mejores relatos, compuestos de la mejor creatividad, y en ellos, hacemos lo posible por transportaros a la más inimaginable realidad para que al menos por un ratito os hagamos sentir irreales, y a la vez igual de dichosos que nosotros nos sentimos al presentar esta colección. Disfrutadlo. Raúl Izquierdo Buznego

Comprar

He subido el libro a un par de tiendas, ninguna de las copias tiene DRM y en la mayoría de tiendas está en formato EPUB. Si lo deseas, puedes enviarme un correo para realizar la transacción sin intermediarios.

Comprar Literatura Adrianistaní