Martes 31 de mayo de 2016

Miguel Parada

Miguel Parada
Ubuntizando.com

Server Density: La importancia de tenerlo todo bajo control

La semana pasada saltaba la noticia de que Telefónica había fichado a Chema Alonso como Chief Data Officer (CDO). Sin duda una gran noticia y que apunta al nuevo rumbo que está tomando la compañía desde la llegada su nuevo presidente, José María Álvarez-Pallete, y sin duda Alonso tiene mucho que aportar con su experiencia en seguridad informática. En sus propias palabras “prácticamente todas las empresas y organizaciones del mundo tienen puntos vulnerables en sus sistemas informáticos y deberían mantener auditorías de seguridad constantes para evitar ciberataques” y Telefónica como las demás no está libre de pecado.

Cada vez es más importante tenerlo todo bajo control. No son tiempos para dejar ningún fleco abierto en nuestros servidores ya que sin saberlo, importante información puede estar siendo vista por personas que nada tienen que ver con nuestra organización. Monitorizar  nuestros sistemas nos permite protegerlos de ciberataques o advertir con tiempo suficiente cualquier incidencia como una carga de trabajo inusualmente elevada o cuando alguno de los servicios no opera correctamente. Una caída de servicio puede suponer no sólo el descontento de nuestros usuarios, sino también una importante pérdida de recursos, tiempo y dinero.

Tanto si disponemos de servidores en nuestros centros de datos, como si estamos utilizando distintos proveedores cloud, ¿cómo monitorizar toda mi infraestructura? ¿Qué es importante y qué no? ¿Cómo muestro toda la información relevante en pantalla? Y si no estoy en la oficina, ¿cómo puedo recibir una alerta a tiempo? ¿Cómo puedo coordinarme con el responsable de seguridad a cientos de kilómetros?

Estas preguntas tienen respuesta. Cada vez más empresas y proveedores TIC se preocupan por ofrecer soluciones cercanas, que humanizan la información recibida y permitiendo implementar monitorización en unas pocas horas y sin tener que mantener la monitorización tu mismo. La imagen de estar delante del terminal introduciendo comandos constantemente ya sólo forma parte de las películas de hackers. 😉

Server Density

De todas las opciones que conozco, Server Density es una solución muy interesante a tener en cuenta. Como el agente que se instala en tu servidor es open source podemos darle multitud de sorprendentes aplicaciones como la de monitorizar la actividad de nuestro gato o tener bajo control el clima que hace en el exterior de nuestro datacenter.

Trae soporte para Linux (Ubuntu, Debian, CentOS, RedHat, etc), OSX, FreeBSD y Windows, y de los servicios más populares que corren encima (Nginx, MySQL, PostgreSQL, Redis, Memcached, MongoDB, etc) y en su blog explican cómo monitorizar todas estas tecnologías, por ejemplo cómo monitorizar LEMP (Linux, Nginx, MySQL y PHP) necesario por ejemplo para un WordPress, Drupal o Magento. También incluye un servicio de monitorización web desde más de 35 ciudades por todo el mundo, así podemos saber qué rápido carga nuestra página web desde el otro lado del charco.

Pero para mi, su verdadero punto fuerte es que podemos llevarnos nuestro panel de control a cualquier lugar. Además de sus dashboards web, cuenta con un cliente que podemos instalar en nuestro smartphone o tablet ya sea Android o iPhone. Así podemos estar seguros de no perder detalle de lo que ocurre en ningún momento. Me pareció realmente curioso que también han desarrollado una aplicación para AppleTV.

Además, con Server Density podemos enviar alertas no sólo por email, SMS, a las app de iPhone o Android, también a Slack, HipChat o cualquier webhook. Por lo que es muy fácil que todas las partes implicadas de la organización puedan estar al corriente y responder cuando toca resolver una incidencia. A la hora de automatizar, podemos usarlo junto a Puppet, Chef, Ansible y también dispone de una API pública con wrappers para Python y PHP, ¡perfecto para todos los que estén implementado ya DevOps!

Server Density cuenta con la posibilidad de probar sus funciones durante 15 días de forma gratuita y aunque después tiene un costo por servidor, sale a cuenta con la cantidad de problemas que nos evita. Así, ya seas un administrador de sistemas ayudando al imperio a construir una nueva estrella de la muerte o responsable de administrar los servidores de tu empresa, no tienes escusas para probar una solución que puede hacer tu vida más fácil.  😉

La entrada Server Density: La importancia de tenerlo todo bajo control aparece primero en Ubuntizando.com.

Disponible Krita 3.0

El equipo del proyecto Krita ha anunciado hoy la disponibilidad de la versión 3.0 de este magnífico software de dibujo: Krita 3.0 Released Esta versión representa un enorme avance en el proyecto. No solo se ha adaptado todo a las tecnologías Qt5 y KF5, también se ha agregado una herramienta de animación, vista preliminar instantánea, […]
GUbuntu.es: El repositorio más rápido
GUbuntu.es: Bienvenido
Baltasar Ortega

Baltasar Ortega
KDE Blog

Pynocchio, un lector de cómics para Linux

Los que me conocen saben que soy un ávido lector de cómics. Por norma general me gusta leerlos en plan físico pero me encanta saber que cada vez es más sencillo utilizar aplicaciones informáticas para hacerlo. Hoy os presento a  Pynocchio, un  lector de cómics que viene a engrosar la lista de este tipo de programas.

Pynocchio, un lector de cómics para Linux

Pynocchio es un visor de imágenes especializado en cómics y manga, desarrollador con PySide API por MStuttgart con el que podrás disfrutar de tus cómics favoritos en tu ordenador.

Son muchas las ventajas de tener en formato digital cómics y revistas. Una de ellas es la facilidad para seguir sagas, ordenarlas, releer números especiales, utilizar marcadores, etc. Aunque en mi carca opinión es bastante difícil a la sensación de tener un buen cómic entre las manos.

Las características generales de Pynocchio son las siguientes:

  • Soporte de muchos tipos de vista (horizontal, vertical, doble página, ancho de pantalla,etc) utilizando anti-aliasing.
  • Soporte para múltiple formatos de imagen proporcionados por Qt: JPG, JPEG, PNG, GIF, BMP, PBM, PGM, PPM, XBM, XPM.
  • Soporte para muchos formato: .ZIP, .RAR, .TAR, .CBT, .CBR, .CBZ , etc.
  • Visualmente elegante
  • Libre
  • Fácil de utilizar.

Pynocchio

De momento solo he visto que se puede utilizar en distribuciones de la familia Ubuntu, así que toca dar un poco la lata para que se pueda utilizar en openSUSE, el sistema que actualmente tengo instalado en mis ordenadores. Así que si eres un empaquetador y te gustan los cómics esta es una excelente oportunidad de aportar tu granito de arena por la Comunidad.

Podéis descargar el código fuente desde la página de GitHub del desarrollador: https://github.com/pynocchio/pynocchio.

En definitiva, con Pynocchio tenemos una alternativa a QComicBook (del cual ya hablamos hace mucho en el blog) con el que disfrutar de tus cómics y mangas favoritos.

Más información: KDE Apps

Asociación LiGNUx: Warzone 2100 Resurrection, estrategia Open Source

Lunes 30 de mayo de 2016

Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Windows10 y los sistemas operativos modernos

IMG_20160527_220015
Windows10 lleva casi un año entre nosotros y, sinceramente no lo he tocado hasta el viernes pasado, y tampoco tenía demasiado interés. Como muchos lectores sabrán no uso Windows como sistema operativo principal desde 2004, cuando dejé Windows2000 definitivamente.
Aunque más o menos, me vi obligado a utilizar WindowsXP en muchos ordenadores, incluso instalar máquinas virtuales de Windows para utilizar algún programa aislado, o revisar la configuración específica de algún software en particular sólo disponible en esa plataforma. Con Windows7 pasó algo parecido, y Windows8 no lo he tocado.

Pero hace poco me he comprado un portátil nuevo. Y, al tratarse de un ordenador devuelto en la tienda donde lo compré, le instalaron Windows10 para probarlo por completo y asegurarse de que todo funcionaba… pero se lo dejaron instalado, y decidí curioserarlo un poco.

El portátil es un Asus GL552VW-DM141. Vamos un procesador i7-6700HQ, 8GB de RAM, 1TB de disco duro y una gráfica dedicada GTX960M, no está mal para los cerca de 640€ que me ha costado (por ser procedente de una devolución, en Amazon por ejemplo a día de hoy está por cerca de 840€ con envío y todo) y bueno, con el dinero que me ahorro me compro un poco de RAM y un SSD.

Primera impresión

El caso es que, nada más arrancar (desde que pulsé el botón de arranque), fueron 1 minuto y 18 segundos de espera, hasta que pude tocar algo. Está bien que el logotipo de la marca del portátil se mezcle con el inicio del sistema operativo… te quitas por un lado aquellas letras feas clásicas de la BIOS (que a mí me gustan, vamos) que te decían la memoria, detectaban los dispositivos de almacenamiento y te decían las teclas que tenías que pulsar para ciertas tareas de configuración y mantenimiento (Configuración del sistema, elegir el volumen de arranque, arranque de red y alguna cosa más).

Por otro lado, aunque está bonito, la pantalla bota un poco (se vuelve un instante a negro), en varias ocasiones como si intentara cambiar de modo y no pudiera, hasta que por fin el logotipo de la marca se vuelve más pequeño (por fin, cambio de resolución, que para eso la pantalla es FullHD).

De todas formas, comprendo que es un primer arranque, pero me parece excesivo que un equipo tarde más de un minuto en arrancar (en 2016) aunque sea un HDD magnético, que puede tener más de 80Mb/s de transferencia.

Bienvenida de Windows10

Diseño minimalista y tipografías sencillas y legibles, se nota que hasta el tono del color de fondo está muy estudiado, aunque no se han currado nada más allá. Por ejemplo, para cambiar la zona horaria tuve que buscar “Madrid” y eso lo veo una pérdida de tiempo, he visto otros diálogos que pulsas la M varias veces y ahí lo tienes. Además, el desplazamiento en la lista no puede hacerse con los dos dedos, o desplazando en un lateral sobre el touchpad (cosa que parece ser que no funciona en ningún lado).

Vamos a conectarnos

Yo creo que Windows no ha destacado nunca por su facilidad para conectarse (si tu red tiene alguna restricción). Es decir, hay un diálogo, precioso, a pantalla completa, con las redes inalámbricas disponibles (diálogo en el que tampoco puedo desplazarme bien con el touchpad). Desde aquí puedo seleccionar una red y si tiene clave introducirla y conectarme. Hasta ahí es muy fácil, y si la conexión es directa y la IP se asigna automáticamente todo va bien. Pero en casa, no tengo DHCP, y mi máscara de red no es 255.255.255.0, así que no me pude conectar a Internet desde este diálogo. Muy sencillo, pero poco útil si te sales un poco de la norma. Más tarde sí que se puede conectar cuando termina la instalación, aunque me parece un esfuerzo inútil crear varios diálogos diferentes para lo mismo.
También me molestó que no pudiera utilizar el teclado retroiluminado en esta pantalla. Estoy prácticamente a oscuras, y no me he hecho aún a este teclado, por lo que quería ver las teclas y pensé que era un buen momento para probar esto, pero Microsoft no quiso. No creo que haya ningún problema de seguridad dejando activar esta característica en la pantalla de bienvenida, o tal vez Windows requiera un driver especial para esto. No lo sé, aunque el teclado retroiluminado no lo he podido utilizar en Windows (tras instalar Linux sí que he podido utilizarlo sin problema.)

Tipo de configuración

Omitido el paso de conexión, puedo elegir entre configuración rápida y personalizada (Qué recuerdos de los 90 y principios del 2000, pero me gusta esto de poder elegir cómo quiero hacer las cosas). La configuración rápida es muy: siguiente, siguiente, siguiente, y no tengo que hacer nada entre los pasos, lo cual considero un poco tonto. La personalizada me descubre que Windows10 envía todo lo que quiere a Microsoft:

  • Personalizar mi voz, escritura y entrada de lápiz para enviar a Microsoft los detalles de contactos y calendarios, junto con otra información de entrada asociada. Es decir, Microsoft, con la excusa de mejorar mi experiencia de usuario tiene que recibir toda esa información. Aunque considero que muchas cosas podrían procesarse de manera local, pero el reconocimiento de voz y escritura no lo hacen así y como dicho reconocimiento no es local, tu información debe estar en sus servidores para que Windows, sepa que existe y te la pueda servir. Es una ventaja porque constantemente actualizarán los algoritmos y mejorarán la respuesta, pero definitivamente una vulneración de nuestra privacidad como usuarios.
  • Enviar a Microsoft datos de escritura y entrada de lápiz para mejorar el reconocimiento y la plataforma de sugerencias: Igual que antes, como los algoritmos de reconocimiento no los tienes en tu ordenador, si quieres dichas características, tienes que enviarles la información.
  • Permitir que las aplicaciones usen tu identificador de publicidad para las experiencias entre aplicaciones.
  • Permitir que Skype (si está instalado) te ayude a conectarte con amigos de tu libreta de direcciones y compruebe tu número de móvil. Se pueden aplicar carga de datos y SMS: No comprendo cómo una opción que puede aplicar carga de datos y SMS viene activada por defecto y en la configuración rápida no te hablan de ella.
  • Ubicación. Activa Encontrar mi dispositivo y permite que Windows y las aplicaciones soliciten tu ubicación, con el historial de ubicaciones, y envía a Microsoft y asociados de confianza datos de ubicación para mejorar los servicios de ubicación: La copia del texto es textual y sí, repiten ubicación un montón. Esto ya lo hacen otros como Google y Apple, mejoran tu ubicación enviándoles datos sobre la misma y al mismo tiempo te ponen en peligro. Microsoft y sus asociados de confianza sabrán dónde estás en cada momento.

Antes de continuar, voy a desactivar todo.

Segunda pantalla de opciones personalizadas

Ahora veo algunas opciones de conectividad:

  • Conectarse automáticamente a las zonas con cobertura inalámbrica abiertas sugeridas. No todas las redes son seguras. No sé quién determina la seguridad de una red abierta, tampoco sé si quiero conectarme siempre a una red.
  • Conectarse automáticamente a las redes que tus contactos comparten. Esta sí puede ser buena, si un contacto comparte conmigo una red, que no tenga que hacer nada para entrar.
  • Conéctate automáticamente a las zonas con cobertura inalámbrica temporalmente para averiguar si hay servicios Wi-Fi de pago disponibles: Supongo que se conecta a una red, mira lo que hay y si es una red de suscripción te avisa para que entres. No está mal, pero supongo que puede consumir batería (por ejemplo si te mueves mucho puedes ver muchas redes de este tipo, aunque supongo que se almacenará todo en una base de datos con la MAC del punto de acceso, para no estar todo el rato entrando.
  • Envía a Microsoft información completa sobre errores y diagnósticos: Esto no está del todo mal, muchos lo hacen y estoy de acuerdo, para mejorar los diferentes programas. Está bien que me dé la opción de hacerlo, no sé si me avisará cuando haya un problema de si particularmente quiero enviar la información de ese problema… por si estoy haciendo algo en el ordenador que no quiero que nadie sepa.

Estas las dejo activas, de todas formas, sólo es un juego de una tarde.

Tercera pantalla de opciones personalizadas

Cada vez menos opciones por pantalla, pero con alguna cosa interesante:

  • Usar los servicios en línea SmartScreen para ayudar a proteger contra contenido y descargas malintencionados en sitios web que carguen los exploradores de Windows y las aplicaciones de la tienda.
  • Usa la predicción de páginas para mejorar la lectura, acelerar la exploración y mejorar la experiencia global a la hora de usar los exploradores de Windows. Tus datos de exploración se enviarán a Microsoft: Ya estamos enviando más información a la empresa de Redmond.
  • Obtén actualizaciones de Internet y envía actualizaciones a otros equipos a través de Internet para acelerar las aplicaciones y las descargas de Windows Update. Y finalmente, vemos una forma de llenar nuestro disco duro, sabemos que los discos duros cada día son más baratos, las CPUs y las redes más rápidas. Es una buena forma de que Microsoft aproveche esa potencia, para no saturar sus servidores.
    • En este paso, desactivo las dos últimas.

      Siguiente paso de instalación: Nombre de usuario

      Nos pregunta nombre de usuario y contraseña, aunque la única seguridad que he visto ahí es que no puedes hacer que el recordatorio contenga la contraseña (he podido poner 1234 sin problema). Por un lado me viene bien, porque sólo voy a probarlo rápido, pero espero que las políticas de contraseñas no sean las mismas en otros lugares del sistema.

      Tras ello, viene una pequeña animación, mientras el disco duro no deja de girar. Al menos, como hacían los antiguos instaladores, mientras está copiando, muestran algo para que la espera se haga más corta.

      Finalmente, arranca Windows.

      Conexión de red

      Como dije antes, para conectar a la red de casa no tengo DHCP y tengo que cambiar la IP. Por lo que tengo que editar la configuración del dispositivo. Me ha resultado más sencillo que Windows7 en el que el primer día no encontré de forma fácil la configuración de TCP/IP. Aunque el diálogo de configuración del dispositivo de red no lo han cambiado mucho desde Windows95 (20 años con el mismo diálogo más o menos).

      Otra cosa que no he encontrado es configuración de IPs por conexión de forma nativa (supongo que todo se soluciona metiendo más programas). Es decir, hacer que la configuración de cada red (IP/puertas de enlace/DNS/etc) pertenezcan a cada red y no al dispositivo. Así, si me quiero conectar a otra red que no tenga la configuración automática pueda hacerlo sin tener que editar la configuración de dispositivo, y luego cuando vuelva a cada, no tengo que poner la configuración como estaba. Yo busco algo tan sencillo como llegar a casa, que mi dispositivo detecte la nueva conexión y que se conecte a ésta, listo.
      captura_win1

      Conectando dispositivos

      Es algo que ha mejorado mucho con los años, aunque los USB llevan con nosotros desde el 1996, y en el 2001/2002 empezaron a ser muy populares, parece que Microsoft ha tardado 20 años en hacer que el tiempo desde el que se enchufa un dispositivo sencillo (un pendrive) hasta el momento en que se puede usar sea mínimo. Como contraste, recuerdo que en Linux a eso de 2005/2006 en muchas distribuciones costaba que fuera automático y funcionara siempre, aunque desde 2008 al menos funciona muy bien en casi todas las distribuciones.
      En esta versión, Windows tras enchufar un pendrive pasa algo más de un segundo en detectarlo (lo cual está muy bien), en ocasiones, con algunas unidades ve problemas que quiere corregir. Esto sí que puede ser un problema, porque muchas veces la forma de corregir es formateando y a veces no pasa nada. Es más, he cerrado la ventana y he accedido de forma normal a la unidad.
      Otra cosa es cuando enchufas un dispositivo de red externo, un bluetooth USB, o algunos ratones, supongo que tarda un poco porque como no tiene driver, se lo descarga y en eso sí que tarda un poco.

      Apagado

      La tecla de apagado, por defecto suspende o hiberna el equipo, sin mostrar nada en pantalla. En teoría no pasa nada y, en un mundo ideal no pasa nada. Lo más que puede pasar es que gastes unos cuantos segundos de tu vida si le das accidentalmente. Por ejemplo, el teclado de mi portátil tiene la tecla de encendido integrada en el resto del teclado, en la esquina superior derecha, lo que puede hacer que alguna vez me confunda con mi antiguo teclado (que en esa posición tiene la tecla Fin).
      IMG_20160529_175255
      El problema viene cuando tienes muchas aplicaciones abiertas, llevas mucho tiempo usando el ordenador y no puedes perder lo que tienes, en ese momento, si Windows no durmiera o no espabilara correctamente podría ser terrible. Y he hablado con personas a las que les ha pasado con esta versión del sistema operativo.

      Por otro lado, hablando del apagado, cuando vas a Inicio (o icono de Windows) – Inicio/Apagago – Apagar, no apaga del todo. Parece ser que entra en un modo medio hibernación/medio apagado, se descargan las aplicaciones de memoria y se apaga, pero cuando se arranca el ordenador la próxima vez no tarda tanto en hacerlo (menos de 20 segundos). Pero aquí tenemos otro problema, hay veces que no arranca bien (no digo que sea común, pero sucede), y no te deja entrar en el sistema y al volver a apagar vuelve a entrar en el mismo modo de apagado ficticio que provoca que no se pueda salir de ahí. La solución más rápida en ese caso es apagar dejando pulsado 4 segundos el botón de apagado, lo que provoca que el apagado no pase por el sistema operativo y conlleva un riesgo para nuestro ordenador ya que puede que el disco duro esté en uso y se produzca pérdida de datos.

      Si quieres apagar el equipo del todo puedes hacerlo desde la línea de comandos (o símbolo del sistema) y escribir:

      > shutdown /s /t 0

      Notaremos que tarda algo más en apagar, y al encender en mi caso tarda 1 minuto y 30 segundos en volverse completamente usable (recordemos que está recién instalado).

      Sinceramente estos tiempos de arranque me parecen inadmisibles en 2016. Hace 6 años el tiempo medio de arranque de un ordenador era de 89 segundos. Aunque en muchos casos sea posible apagarlo para tener un arranque rápido, si una vez tengo un problema al encender, voy a ir con miedo siempre.

      Actualizaciones automáticas

      Desde que empecé a escribir el post (aunque estoy desde otro ordenador) he visto cómo se han instalado 3 actualizaciones. Creo que es una ventaja que si una actualización no es crítica no haga falta reiniciar, pero no me parece bien que todo se actualice solo. Es más, cuando estoy utilizando el ordenador, a veces necesito potencia y dichas actualizaciones provocan botes que no me dan buena impresión. Por otra parte, a mí me gusta decidir cuándo instalo las cosas y, en el pasado, incluso en el presente (tengo referencias de usuarios de Windows7), tengo noticias de muchas actualizaciones de aplicaciones o del sistema que han dejado algunos ordenadores sin conexión, sin arranque, sin poder utilizar una aplicación o con alguna característica congelada hasta la siguiente actualización. Aunque no tarden mucho en arreglarlo, es incómodo.

      Espacio en disco

      Algo que me ha sorprendido gratamente. Aunque Windows, desde hace tiempo crea varias particiones para instalarse. En mi caso tengo una partición de 450Mb, otra de 100Mb y otra de 16Mb, tras eso tengo una partición más con todo el espacio del disco duro. En total, Windows ocupa cerca de 20Gb. Puede parecer mucho, pero en realidad, creo que entre imágenes, drivers, diálogos y ventanas para muchas cosas no ocupa tanto como debería. ¿Vendrán ciertas partes comprimidas? Aunque estos 20Gb son con el sistema recién instalado, puede que a medida que se vaya usando ocupe más con copias de seguridad, instantáneas, actualizaciones y demás. También, mientras escribía este post, el espacio en disco disponible ha bajado unos 300Mb (¿actualizaciones descargadas?)-

      Ventanas

      Desde hace mucho tiempo digo que prefiero usar un sistema GNU/Linux porque puedo tener varios escritorios a la vez. Parece ser que después de casi 20 años, Microsoft lo ha pensado y ha decidido incluir esta característica de forma nativa. Aunque no he visto ninguna forma sencilla e intuitiva de mover ventanas entre escritorios (Vista de tareas – Seleccionas escritorio y mueves ventanas con el ratón). Para cambiar de escritorio con el teclado Control+Windows+Derecha o Control+Windows+Izquierda.

      Incluso otras operaciones básicas de forma nativa, como aplicar transparencia a ventanas o cambiar su posición relativa a la pantalla (frente / fondo). En ocasiones, son herramientas muy útiles para trabajar. Cuando te acostumbras resulta tremendamente útil. Hay soluciones para esto, pero no nativas.

      Varias pantallas

      Algo muy frustrante para mí es cuando enchufo o desenchufo un monitor y el sistema se queda congelado unos segundos. Es cierto que a finales de los 90 y primeros de 2000, cuando hacías esto tenías que tener el ordenador apagado porque se podía quedar colgado, incluso cuando lo hacías por los conectores RCA (enchufando una televisión), pero han pasado muchos años y tanto el hardware como el software debería estar preparado para aguantar la conexión/desconexión de un monitor sin molestarse mucho.
      Con Windows recién instalado e iniciado, he enchufado un monitor a través del puerto HDMI y Windows se ha quedado unos 12 segundos con el escritorio congelado. Es decir, alguna ventana en primer plano funcionaba y podía usarla, pero no podía tocar el escritorio. Tras ese tiempo, cuando reaccionó accedí a Escritorio (con el derecho) – Configuración de pantalla y no había detectado nada. Reinicié el equipo (con el reinicio rápido) y seguía sin detectar el monitor. No ha sido hasta que he apagado (del todo) e iniciado, cuando ha cogido el monitor.
      Pero eso no es todo, imaginémonos que hay un problema eléctrico, el monitor se desenchufa y se enchufa, el sistema se ha congelado unos 20 segundos, y luego todo se ha puesto a moverse y parpadear un par de veces (las dos pantallas) hasta que se recupera la configuración de los monitores. Aunque si me quedo sin tocarlo durante un tiempo todo vuelve a recuperarse. Aunque frustra que tarde.

      Nota de hardware: El hardware funciona perfectamente, arranqué con un live DVD de Linux Mint KDE 17.3, y repetí la operación, enchufar un monitor, no sólo el sistema no ha dejado de ser usable, sino que 2 segundos más tarde, veo un aviso de un monitor nuevo y un diálogo para aceptar la configuración automática o configurarlo a mano. Tras desenchufar y enchufar en menos de esos 2segundos, el sistema se ha recuperado y se ha conservado la configuración de los escritorios.

      Captura de pantalla

      Una cosa muy curiosa que sí que me ha gustado, es posible pulsar Windows + Imprimir pantalla y se guarda la captura completa en una carpeta de capturas de pantalla, sin necesidad de tener que abrir una aplicación y pegarla. Tenemos la aplicación de recortes, pero a veces no nos viene bien tener que abrirla (mejor una tecla rápida para todo).

      Recuperación del sistema

      Para mí, el peor punto de Windows10 con diferencia. Ya era así con Windows7 en casos en que todavía el sistema de recuperación dependía del fabricante del portátil (y en realidad era un WindowsXP que ejecutaba el software de recuperación). Luego en Windows8, era todo hecho por Microsoft y sigue en esta versión.
      Quiero valorar la opción de restablecer el sistema correctamente, es decir, volverlo todo como de fábrica, borrar todos los datos. El sistema me advierte que puede tardar varias horas. ¡Varias horas! Y de hecho, es así, en total, tardé 3h y 15min aproximadamente en hacer dicha recuperación de sistema. Me imagino un ordenador de trabajo que haya que restaurar y se pierda semejante tiempo en tareas de mantenimiento, tras las que haya que instalar luego software y hacer configuración.
      Personalmente no entiendo cómo se puede tardar tanto tiempo, con el disco trabajando casi todo el tiempo, con la CPU en uso (más que nada porque el ventilador que apenas se oye en el ordenador sí que se oía un poco durante ese tiempo).
      Otro detalle, es que durante la recuperación no puedes hacer nada. El sistema es inútil, es un pisapapeles que consume electricidad y hace ruido de forma gratuita. Es más, incluso si durante la recuperación, el portátil se desconecta de la electricidad, nada ni nadie te lo advierte, la batería se gasta sin ninguna advertencia y el ordenador se apaga teniendo que empezar desde el principio tras el arranque. Eso sí todo muy sencillo, más que sencillo, es que no hay que hacer nada mientras el ordenador trabaja.

      Para acceder al menú de mantenimiento tuve, que abrir el menú de Windows, pulsar Mayúscula – Inicio/Apagado – Reiniciar. Desde esa anti-intuitiva combinación de acciones accederemos a un menú de mantenimiento en el que podemos realizar ciertas tareas de reparación.

      Reconocimiento de voz

      Es una mala experiencia. Actualmente el reconocimiento de voz sólo está de mano de los grandes (Microsoft, Apple, Google…), porque hay tantas cosas a tener en cuenta, tantos idiomas y tantísima información a cotejar para leer una palabra que el hecho de que venga alguien nuevo y presente un sistema de estas características es casi inviable. Además, si estas grandes empresas reciben gran cantidad de audios con las voces de los usuarios y son capaces de saber cuáles funcionaron y cuáles no, pueden perfeccionar mucho sus sistemas.
      Pero tras utilizar un rato el reconocimiento de voz de Microsoft, e intentando hablar con mi mejor acento, pronunciación y completando todas las palabras, este reconocimiento de voz, no me entiende, cosa que sí que hace el de Google, por ejemplo, incluso algún pequeño proyecto con CMU Sphinx, aunque tenga pocas palabras disponibles y no sea para dictado.

      Fantasmas en mi ordenador

      Como todos los sistemas modernos, cuando el usuario no está haciendo nada, aprovechan para ciertas tareas de mantenimiento. En ocasiones, cuando está el equipo sin usarse, empieza a hacer un poco de ruido el ventilador (no es ensordecedor, ni mucho menos, es más, me sorprende escucharlo porque normalmente no hace ruido), observo el disco duro y lo veo en funcionamiento. Se tira así unos 20 segundos cada 10 minutos o así. No es que sea malo, pero desconcertante la frecuencia con la que lo hace. Casi siempre es el “Antimalware Service”, aunque otras veces puede ser algún servicio de actualziación, indizado, etc. Pero esto no es nada malo si no sucede de manera muy frecuente.

      En resumen

      Windows ha cambiado mucho en los últimos años, aunque conserva su esencia. Internamente tiene un núcleo híbrido, que teóricamente hace las veces de kernel monolítico con algunas de las ventajas de los microkernels. Su aspecto en los últimos años ha cambiado mucho, la experiencia de usuario también y la forma de presentar la información.
      Parece que en los últimos años, es más importante no agobiar al usuario con mensajes y opciones que proporcionarle una experiencia completa, haciendo aún más grande la brecha entre el usuario que maneja cuatro cosas en el ordenador y el usuario medio o el avanzado.

      No he probado Bash en Windows10 ni aplicaciones gráficas de Linux, porque ahora mismo quiero empezar a disfrutar de mi ordenador nuevo y ponerme a instalar otro sistema operativo con el que sigo sintiéndome más cómodo. Sé que hay un problema de energía a día de hoy con los Intel Skylake y el núcleo Linux que no permite que se activen los nuevos modos de bajo consumo, pero por lo que he podido usar desde un Live DVD no he tenido ningún problema.

      Por otro lado, quiero indicar que los problemas que he tenido, que he visto en otros ordenadores o he tenido conocimiento de ellos, no tienen por qué pasarle a todo el mundo. Como también hay personas a las que Windows ME no les ha dado nunca un problema (yo recibí un pantallazo azul nada más instalarlo o que enchufan un disco duro externo y no les da problemas el formato que viene de fábrica… cuestión de suerte, supongo.

The post Windows10 y los sistemas operativos modernos appeared first on Poesía Binaria.

Asociación LiGNUx: Gnu Gluco control nos ayuda a controlar la diabetes
Baltasar Ortega

Baltasar Ortega
KDE Blog

Aplicaciones KDE en las IV Jornadas Libres de la UNED Vila-real

Hoy os presento la última ponencia del año del evento libre que monto en la sede de la UNED de Vila-real. El próximo 15 de junio tendremos Aplicaciones KDE en las IV Jornadas Libres.  Una ponencia que reemplaza a Hardware Libre y KDE por razones que explicaré el mismo día de la charla o que desvelaré cuando redacte las conclusiones.

 

Aplicaciones KDE en las IV Jornadas Libres de la UNED Vila-real

 

Para finalizar las IV Jornades Libres de la UNED de Vila-real tenemos un cambio respecto a la programación inicial. Por varios motivos no tendremos Hardware KDE pero si Aplicaciones KDE en las IV Jornadas Libres.

Esta charla nace con la intención de mostrar el funcionamiento detallado a una pocas aplicaciones KDE a la vez que explicaré algunos de sus trucos más útiles a la hora de optimizar nuestro tiempo delante del ordenador.De esta forma veremos a fondo Gwenviews, Amarok, Digikam o Kontact, entre otros.

Como es habitual unos días antes de la celebración os pondré el enlace para ver la charla en streaming. Atentos a la etiqueta #jornadeslliures.Aplicaciones KDE en las IV Jornadas Libres

 

La información básica de la charla es la siguiente:

Otras informaciones

Otras informaciones útiles respecto a las IV Jornades Lliures son las siguientes:

Agradecemos a la UNED de Vila-real las facilidades para realizar las charlas y los talleres, así como a toda la gente involucrada en las jornadas su buena predisposición.

¡Os esperamos!

Las charlas de las IV Jornadas Libres

El 14 de octubre se inauguraron las IV Jornadas Libres de la UNED de Vila-real, una serie de ponencias que tienen como objetivo primordial difundir el Conocimiento Libre en todas las variables posibles: software, hardware, proyectos, redes, cultura libre, etc. A lo largo de estos meses se han ido celebrando una tras otras, hasta completar casi al 100% lo programado:

El listado de las mismas ha sido el siguiente:

  • 28 de Octubre: Descubre GNU/Linux por Baltasar Ortega
  • 11 de Noviembre: Proyecto Wikipedia por Santiago Navarro
  • 09 de Diciembre: Slimbook, tu portátil libre por Alejandro López
  • 13 de Enero: Introducción a Raspberry Pi por Jesús Marín
  • 17 de Febrero: Descubre Plasma 5 por Baltasar Ortega
  • 09 de Marzo: Sistemas inalámbricos/radioenlaces por Héctor Tomás
  • 13 de Abril: Proyectos Libres por Baltasar Ortega
  • 27 de Abril: Que no te tomen el pelo con el Feisbuc por Jonathan Secanella
  • 11 de Mayo: Aplicaciones de diseño para impresoras 3D por Juanjo Vidal [pendiente de confirmación] Finalmente no se realizó
  • 15 de Junio: Hardware libre y KDE Aplicaciones KDE por Baltasar Ortega

Domingo 29 de mayo de 2016

Miguel Parada

Miguel Parada
Ubuntizando.com

Steam ya puede ejecutarse en una PlayStation4

No es una opción oficial sino un hack para PlayStation 4 que hace posible la magia de hacer correr el cliente Steam de Valve en la consola de Sony. OsirisX, el autor de este hack, usó un firmware antiguo de la consola y Arch Linux para lograrlo. Y por lo que se ve en el vídeo el resultado luce muy bien.

Fuente: http://www.digitaltrends.com/

La entrada Steam ya puede ejecutarse en una PlayStation4 aparece primero en Ubuntizando.com.

Asociación LiGNUx: Sebran: 12 juegos para ejercitar operaciones matemáticas, lectura y memoria
Baltasar Ortega

Baltasar Ortega
KDE Blog

openSUSE Conference 2016 de Nuremberg

Hay noticias que vale la pena repetir ya que no todo el mundo lee los mismos blogs. De esta forma me complace anunciar la celebración de la openSUSE Conference 2016 de Nuremberg del 22 al 26 de junio. Un evento al que si puedes asistir no deberías perderte.

El presente artículo no es más que una sombra de la gran entrada que ha realizado mi amigo Victorhck en un blog (Victorhck in the free world) pero que me apetece hacer para ampliar un poco más su radio de difusión.

Además, coincide con mi reencuentro con las distribuciones del camaleón, que aunque nunca se fue de mis ordenadores de sobremesa han vuelto a mi portátil con la versión Tumbleweed.

openSUSE Conference 2016 de Nuremberg

openSUSE Conference 2016 de NurembergEl gran evento de la Comunidad openSUSE europea se va a celebrar en Nuremberg, ciudad alemana con una amplia experiencia en la celebración de encuentros libres y cuartel general de SUSE.

Siendo más precisos, openSUSE Conference 2016 de Nuremberg se va a celebrar del 22 al 26 de junio en el Nuremberg Docker Meetup y promete ser un gran evento para todos los simpatizantes de la distribución del Camaleón en particular y del Software Libre en general.

Ya se ha publicado el programa de ponencias, donde podemos encontrar de todo charlas de todo tipo, desde técnicas a más informales.  Además, y al igual que Akademy 2016, la conferencia de openSUSE se va a celebrar junto con otras reuniones de Comunidades Libres como Kolab, ownCloud, SaltStak y SUSE Labs.

Por otra parte, algunas de las charlas se van a retransmitir vía “streaming” con lo que para los que nos pilla un poco lejos tenemos la opción de verlas en directo.

Y para finalizar esta entrada, os pongo el vídeo promocional del evento al cual, lamentablemente, no podré asistir:

Más información: openSUSE Conference | Victorhck in the free world

Sábado 28 de mayo de 2016

Marcelo Fortino

Marcelo Fortino
Fortinux

Ubuntu como entorno de programación y diseño web – PARTE II

Ubuntu como entorno de programación y diseño web - PARTE II Palabras claves: programación web, diseño web, entorno de desarrollo, Ubuntu, front-end developer, full-stack developer.
Marcelo Fortino

Marcelo Fortino
Fortinux

Ubuntu como entorno de programación y diseño web – PARTE I

Ubuntu como entorno de programación y diseño web - PARTE I Este tutorial tiene como objetivo preparar Ubuntu 14.04 o 16.04 como entorno de desarrollo y diseño web, siendo que con algunas variantes se puede aplicar a Debian y otras derivadas. Yo lo uso tanto para pequeñas tareas de programación como para testar aplicaciones en mis trabajos de SysAdmin e últimamente DevOps.

Viernes 27 de mayo de 2016

José María Morales Vázquez

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

Cuentas de correo de “usar y tirar” o de un solo uso

correo Los correos electrónicos de un sólo uso son una gran herramienta para evitar el spam. Cuando queremos probar o evaluar un servicio para el que nos exigen una cuenta de correo electrónico y la evaluación no se hace efectiva mientras que no validemos dicha cuenta (por regla general haciendo click en un link que recibimos en la misma) lo más cómodo y práctico es recurrir a una de estas cuentas. Tienen, por supuesto, otros usos, pero mejor no te doy ideas por si acaso… 😉
Este tipo de correos tienen también una parte negativa, no lo olvides: la privacidad de lo que recibes en ellos es nula, puede que no puedas volver a usarlos en el futuro para recuperar la contraseña del servicio o, por el contrario, puede que alguien que no seas tu “suplante” tu personalidad a través de dicho correo y te robe la identidad en el servicio para el que la utilizaste en primer lugar… Así que ten mucho cuidado donde y para que las usas y trata de ser consciente de los riesgos que corres.

Allá por el año 2000 que fue cuando empecé a usar este tipo de cuentas e hice mi primera lista había apenas cinco servicios de este tipo. Ahora tengo listados más de 30. El único que sobrevive de aquellos tiempos es Mailinator…

No te voy a recomendar ninguno. Échales un vistazo por ti mismo. En esta lista encontrarás de todo: servicios con registro, sin él, que destruyen los correos en unos minutos, que los guardan para siempre, que te permiten elegir la cuenta o que la generan de forma aleatoria… Lo dicho, si necesitas algo así busca por ti mismo que es lo que mejor se ciñe a lo que quieres:

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: Cuentas de correo de “usar y tirar” o de un solo uso || Hospedado en un Cloud VPS de Gigas.
Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Vicio con el teclado, comandos, manías y coletillas que nos salen sin pensar

photo-1445605081472-9788fb3bc02f

Como apasionado de la consola, soy una de esas personas que tarda menos en escribir un comando y pulsar enter que en cargar una interfaz gráfica, click, click, control, clic, arrastrar, soltar, click… y el tiempo es muy valioso.
Eso sí, cuando empiezas a pegarle al teclado y escribir comandos en la terminal, parece que todo va más lento, una simple coma, o un espacio es capaz de fastidiarlo todo, pero cuando llevas mucho tiempo, lo tienes todo tan automatizado que te sale el alma.

Anécdota (o batallita)

En la Universidad, tenía una asignatura de laboratorio, y tras cada sesión, teníamos que copiar una serie de archivos a una carpeta de red, por ese motivo, el profesor avisaba 5 minutos antes de terminar. El sistema era Microsoft Windows, y todo el mundo optaba por abrir las carpetas gráficamente y arrastrar; eran varias carpetas y no todos los archivos de todas las carpetas, por lo que muchos entraban, seleccionaban, copiaban, salían, entraban en otra carpeta…
Yo, ejecutaba varios comandos desde consola, que terminé metiendo en un script, y así me iba antes.

Dejando a un lado estas historias, cada usuario, va creando una base mental de comandos que, a menudo, van acompañados de argumentos. El objetivo es no pensar demasiado y dejar que tus dedos tecleen.

Por ello, no pretendo hacer un tutorial de uso de comandos (porque no cabría todo aquí), pero sí una visión personal de lo que más suelo teclear y cómo lo hago y, es curioso ver que los argumentos siempre van en el mismo orden. Del mismo modo, me gustaría que dejarais algún comentario con algún comando curioso que os salga del alma, o de otras alternativas que soléis utilizar.

¿Por qué no uso alias

Porque no estoy siempre en mi ordenador, a menudo suelo entrar en varios servidores, y no quiero acostumbrarme a utilizar los comandos con los alias de mi equipo, que soy muy despistado y me confundo cuando esté en otra máquina (me ha pasado). También porque hay muchas otras veces que no quiero o puedo utilizar estos argumentos, no son generales, sólo comunes y no quiero tener problemas cuando vaya a usarlos para otra cosa.

ls

Yo creo que ls, junto con cd es de lo más usado del mundo, ya que es una de las tareas más básicas. Pero casi siempre que lo ejecuto lo hago con:

ls -latr

Porque me gusta listar todos los archivos, ordenarlos por tiempo dejando en última posición al más nuevo.
También suelo hacer

$ ls -latrh

Cuando quiero que los tamaños de archivos estén en formato humano o,

$ ls -laSr

Cuando quiero ordenarlos por tamaño de archivo.

ps

En el último post ya hablé de ps, y casi siempre lo que suelo hacer es:

$ ps ax

Para que muestre todos los procesos, luego ya los filtraré con grep…

rsync

Otro viejo conocido, aunque casi casi siempre que lo uso, lo hago con los siguientes argumentos:

$ rsync -avhP [origen] [destino]

De esta forma copio archivos de forma recursiva, incluyo enlaces, mantengo permisos, marcas de tiempo y algunas cosas más, muestro lo que se está copiando, los tamaños son en formato humano.

rm

Esto es muy peligroso, y alguna vez, este vicio me ha jugado una mala pasada, y es que casi siempre que pongo este comando suelo poner:

$ rm -rf [archivos, directorios…]

Intenté acostumbrarme a poner una i en medio, algo así como:

$ rm -rif [archivos, directorios…]

al menos, por precaución, aunque me acabé hartando y no lo hice.

du

Esta herramienta nos muestra el uso en disco de una carpeta, por ejemplo. Casi siempre lo suelo utilizar para saber el tamaño de un directorio y de todo lo que hay dentro, es decir, sólo quiero un número y no quiero desgloses. Además, me gusta el tamaño en formato humano, que no estoy aquí para hacer cuentas…

$ du -sh [carpeta]

df

Del mismo modo que otros comandos, y sobre todo con éste, a nadie nos apetece hacer cuentas para ver los tamaños de un modo inteligible:

$ df -h

pwgen

Un simple programa para generar contraseñas, temporales o no, para muchos sistemas. Si lo ejecutas tal cual te da buenas contraseñas, pero suelo utilizarlo de la siguiente forma:

$ pwgen -sy 12

Así me genera una colección de contraseñas de 12 caracteres, difíciles de memorizar y además incluyendo símbolos. Perfecto para contraseñas de MySQL, OTP, y cosas así, aunque alguna que otra sí que tengo aprendida de memoria.

tar

Este comando depende, mis variables más comunes en este caso son: ¿comprimir? ¿descomprimir? ¿gz?¿bz2?

Por ello, para cada combinación tengo un comando (y todos muy parecidos):

Comprimir, bzip2

$ tar cvjf [archivo de destino] [directorios, archivos… a comprimir]

Descomprimir, bzip2

$ tar xvjf [archivo de destino] [directorios, archivos… a comprimir]

Comprimir, gzip

$ tar cvzf [archivo de destino] [directorios, archivos… a comprimir]

Descomprimir, gzip

$ tar xvzf [archivo de destino] [directorios, archivos… a comprimir]

Como veis, todo queda muy sistemático, la v y la f no se mueven, la primera letra puede ser c o x y la penúltima j o z.

Opcionalmente, suelo poner a veces una p delante de la f para conservar los permisos de los archivos, sólo a veces.

grep

Su uso es sencillo cuando queremos filtrar la salida de un comando anterior (por ejemplo lsof):

lsof | grep /dev/sdc2

Pero cuando queremos buscar un patrón dentro de un archivo también nos vale este comando, aunque muchas veces, aunque grep nos dice que ha encontrado el patrón, seguimos sin la más remota idea de dónde está, para ello suelo hacer:

$ grep -nC3 ‘patron’ [archivo]

De esta forma, grep me devolverá 3 filas anteriores, 3 filas posteriores y el número de línea. Opcionalmente, si quiero que grep no sea sensible a mayúsculas minúsculas, pongo una i detrás de la n… -niC:

$ grep -niC3 ‘patron’ [archivo]

egrep

Soy muy dado a perder las cosas y luego no saber dónde están, por eso, suelo usar este comando. Con él busco un contenido dentro de una serie de archivos y directorios, casi siempre suelo hacerlo así:

$ egrep -Rn ‘texto_que_busco’ *

Así, busco en todos los archivos y carpetas de forma recursiva partiendo del directorio actual, además, cuando lo encuentro, muestro también el número de línea donde se ha encontrado lo que busco.
¿Sólo busco archivos con una extensión determinada? (antes del include van dos signos -)

$ egrep -Rn ‘texto_que_busco’ –include=’*.cpp’ –include=’*.hpp’ *

También podemos poner una i delante de la n, y parece que dice Rin… con el mismo propósito de antes, no hacer la búsqueda sensible a mayúsculas y minúsculas.

netstat

Un programa que nos sirve para mostrar conexiones de red. Casi siempre, lo que quiero hacer es mostrar las conexiones TCP (t), mostrarlas todas, incluso las que están sólo escuchando (a), no resolver los hosts (n), con esto el comando se ejecuta mucho más rápido, dando sólo las direcciones IP, y mostrar los procesos que originan dicha conexión (p), para este último argumento, ejecutar el comando como root tiene más gracia.

$ netstat -tanp

arp

Como el anterior, si resolvemos los nombres de los hosts, tardaremos mucho, y muchas veces no los necesitamos, para ello:

$ arp -n

firefox

¡Hombre! Firefox también se ejecuta desde consola, si quieres, para ello suelo hacer:

$ firefox -ProfileManager –no-remote

Así puedo cargar varios perfiles diferentes de Firefox al mismo tiempo en el sistema.

Tu turno

¿Tienes algún comando curioso que casi siempre ejecutes con los mismos argumentos? ¿Alguna manía con la consola? ¿Reglas mnemotécnicas nemotécnica para acordarte de los parámetros de algún programa? ¡Deja tu comentario!

Foto principal: Web Donut

The post Vicio con el teclado, comandos, manías y coletillas que nos salen sin pensar appeared first on Poesía Binaria.

Disponible LyX 2.2.0

Al momento de escribir estas líneas falta aún el anuncio oficial, pero ya está disponible la versión 2.2.0 de LyX. De hecho, los usuarios de openSUSE tenemos ya esta nueva versión en el repositorio Publishing. EDITO: ya ha sido oficialmente anunciado [ANNOUNCE] LyX 2.2.0 Released Ya hemos comentado (por ejemplo, aquí) las novedades de esta […]
BlogDRAKE: Instalando Oracle 11gR2 XE y Oracle SQL Developer en Mageia, usando el escritorio XFCE

Jueves 26 de mayo de 2016

Adrián Arroyo

Tutorial de Hugo en español, generador de sitios estáticos

Los generadores de sitios estáticos son aplicaciones que dados unos ficheros generan un sitio web completo, listo para ser desplegado en Apache o Nginx. El generador es llamado bajo demanda del administrador por lo que, al contrario que en un CMS completo, este programa solo genera las páginas una sola vez, reduciendo considerablemente la carga de trabajo y el precio y aumentando en velocidad y rendimiento.

Página web de Hugo

Los generadores más populares son:

Nombre Lenguajde Plantillas Licencia Sitio web
Jekyll Ruby Liquid MIT http://jekyll.rb.com
Hexo JavaScript EJS y Swig MIT http://hexo.io
Hugo Go Go Template, Acer y Amber Apache http://gohugo.io
Pelican Python Jinja2 GPL http://blog.getpelican.com/

Además es también bastante conocido Octopress pero Octopress no es más que Jekyll con una colección de utilidades extra, el núcleo del programa sigue siendo Jekyll.

¿Por qué voy a elegir Hugo? Yo empecé con Jekyll y me gustó. Sin embargo Liquid no me acabó de convencer nunca y miré otras alternativas. Hexo me pareció excelente si lo que quieres hacer es un blog, funciona muy bien y es más rápido que Jekyll pero Jekyll tenía la ventaja de que se podía usar no solo en blogs, sino en cualquier web en general. Entonces oí hablar de Hugo. Hugo es el más rápido y el más flexible. No está enfocado solo en blogs, soporta todo lo que le eches. Sin embargo me parece que Hugo no es el más sencillo de configurar, así que aquí va el tutorial.

Instalando Hugo

Hugo está hecho en Go, quiere decir que está compilado y por tanto hay una versión diferente para cada sistema operativo. Descarga la versión de tu sistema operativo desde aquí. Si usas GNU/Linux es posible que tu distro haya empaquetado ya Hugo. Búscalo.

Una vez lo tengamos instalado comprobamos que todo esté en orden:

hugo version

Por defecto Hugo no trae ningún tema. Si quieres instalarte uno y no crear uno de cero puedes clonarlos desde Git. Si quieres probar los temas antes de instalarlos no dejes de mirar Hugo Themes

git clone --recursive https://github.com/spf13/hugoThemes ~/themes

Si queremos tener coloreado de sintaxis podemos usar Pygments. Si tienes PIP instalado es fácil.

sudo pip install Pygments

Además si quieres activar el autocompletado de Bash solo tienes que hacer

sudo hugo gen autocomplete
. /etc/bash_completion

Y con esto ya tenemos Hugo instalado correctamente. Ejecuta:

hugo new site MiSitioSupercalifragilisticoespialidoso

Hugo Themes

Organización en Hugo

En Hugo tenemos que tener muy en cuenta la organización de los ficheros. En primer lugar van los themes. Como puedes comprobar la carpeta themes generada esta vacía. Para ir probando los distintos temas puedes hacer un sencillo enlace simbólico entre la carpeta con los temas descargada y esta.

rmdir themes
ln -s ../themes .

Veamos el resto de carpetas:

  • archetypes. Arquetipos. Son plantillas para cuando añadimos un nuevo elemento. Por ejemplo, podemos tener un arquetipo de post sobre un vídeo de YouTube. Es posible crear un arquetipo que contenga configuración ya específica (categorías, reproductor insertado, etc) y que cuando escribamos ya lo tengamos medio hecho. A la hora de generar el sitio los arquetipos de origen no son tenidos en cuenta.
  • config.toml (o config.json o config.yaml). Este archivo contiene la configuración del sitio.
  • content. Aquí va el contenido central de la web. Dentro de content debes crear tantas carpetas como secciones tengas (aunque se puede sobreescribir vía configuración, es práctica recomendada). Cada sección tiene asignado un layout distinto. Dentro de la carpeta de cada sección la organización es libre, los archivos suelen ser de Markdown, pero HTML puro también vale.
  • layouts. ¿Cómo se organiza el contenido? Los layouts son la respuesta. Por cada sección hay que crear mínimo dos layouts, uno para mostrar un contenido solamente y otro para múltiples contenidos del mismo tipo (listas).
  • data. Aquí puedes almacenar archivos en JSON, YAML o TOML a los que puedes acceder desde Hugo. Estos archivos pueden contener cualquier tipo de información, piensa en ellos como en una especie de base de datos.
  • static. El contenido estático, imágenes, JavaScript, CSS, que no deba ser procesado por Hugo debes ponerlo aquí.

Configuración

Dentro del fichero config.toml hay que editar unos cuantos valores.

baseurl = "mi-sitio.com" # La dirección base del sitio
languageCode = "es-es" # El idioma de la web
title = "" # El título de la web
theme = "bleak" # El tema que se va a aplicar al contenido
googleAnalytics = "" # Código de seguimiento de Google Analytics
disqusShortname = ""

[Params] # A estos parámetros se puede acceder de forma directa con .Site.Params.NOMBRE
Author = "Adrián Arroyo"

También es configurable Blackfriday el motor de Markdown de Hugo, aunque las opciones por defecto son más que suficientes.

Creando contenido

Crea un archivo dentro de content. Puede estar dentro de una sección si así lo prefieres. En Hugo al igual que en Jekyll cada contenido tiene un front matter, es decir, los metadatos se añaden al principio en un formato que no se va a renderizar. Hugo soporta TOML, YAML y JSON. Si usamos TOML, los delimitadores del front matter serán +++, si usamos YAML --- y si usamos JSON tenemos que poner un objeto con las llaves, {}

+++
title = "El título de la entrada"
description = "Una pequeña descripción"
tags = ["hola","otra","etiqueta"]
date = "2016-05-23"
categories = ["Sobre el blog"]
draft = true
+++

Aquí va el contenido en Markdown o HTML que va a ser renderizado.

Podemos crear variables nuevas a las que podremos acceder desde .Params. Otras opciones predefinidas son type (que sobreescriben el valor de la sección), aliases (que permite hacer redirecciones), weight (la prioridad cuando el contenido sea ordenado) y slug (permite ajustar la URL del contenido).

Modificando el tema

Puedes modificar el tema usando la carpeta layouts. En el fondo un tema es una colección de layouts y recursos estáticos que son combinados con el tuyo. Si ya usas un tema y solo quieres realizar pequeñas modificaciones puedes editar el tema directamente. Si quieres añadir nuevas secciones o crear un tema de 0 entra a la carpeta layouts.

Hay varias subcarpetas dentro de layouts importantes:

  • _default. Es la que se usa cuando no hay otro disponible. Normalmente los temas sobreescriben esta carpeta. Si sobreescribes esta carpeta perderás el tema.
  • index.html. La página de entrada a la web
  • partials. En este carpeta se pueden guardar trozos HTML reutilizables para ser usados por los layouts.
  • shortcodes. Son pequeños trozos de HTML reutilizables con parámetros de entrada para ser usados por el contenido.

Dentro de cada layout (como en _default) tiene que haber mínimo dos archivos. Un archivo single.html que se usará cuando solo se tenga que representar una unidad de ese contenido y un archivo list.html que se usará cuando sea necesario mostrar un conjunto de esos contenidos.

Estos archivos han de programarse usando el motor de plantillas de Go y la API de Hugo. Un archivo single.html básico que muestra el título y el contenido tal cual sería así.


{{ partial "header.html" . }}
{{ partial "subheader.html" . }}
<section id="main">
  <h1 id="title">{{ .Title }}</h1>
  <div>
        <article id="content">
           {{ .Content }}
        </article>
  </div>
</section>
{{ partial "footer.html" . }}

Dentro de las páginas list.html es práctica habitual definir una vista li.html como un elemento individual. Esos elementos individuales se unen para formar la lista en list.html.

Algunos extras

Los shortcodes son pequeños trozos de HTML que aceptan parámetros. Podemos usarlos en el contenido. Piensa en ellos como Mixins de CSS o funciones de JavaScript. Por ejemplo, para marcar un resaltado de sintaxis:


<section id="mira-este-super-codigo">
	<p class="html-is-broken">Rompiendo el HTML</p>
</section>

O un enlace dentro de nuestra web: ```

```

Miércoles 25 de mayo de 2016

BlogDRAKE: Se extiende el plazo para el concurso de arte
Gaspar Fernández

Gaspar Fernández
Poesía Binaria

Cómo conocer CPU y memoria ocupada por un grupo de procesos con el mismo nombre

photo-1463123081488-789f998ac9c4

En multitud de ocasiones, mientras estamos trabajando con nuestro ordenador, o incluso con un servidor remoto, se presenta la necesidad de saber la memoria ocupada o la CPU consumida por un determinado proceso.
Para ello tenemos herramientas como top o ps (entre otras) que nos permiten conocer dicha información. Podemos encontrar multitud de tutoriales para ambos comandos, sólo daré una pincelada aquí.

ps

Casi siempre que uso ps suelo hacerlo de la siguiente manera:

$ ps ax

para así mostrar todos los procesos que están corriendo actualmente, y si queremos obtener información sobre memoria y CPU podremos ejecutar:

$ ps axl

o

$ ps axo pid,pcpu,pmem,size,cmd

Si queremos obtener más datos como ID de proceso (pid), % de CPU (pcpu), % de memoria (pmem), tamaño en memoria (size), comando que genera el proceso (cmd).

top

Desde aquí podemos ver en tiempo real los procesos que están ejecutándose en la máquina (se va actualizando en el tiempo) y podemos ordenarlos por varios criterios pulsando (<) y (>) además de filtrarlos, matarlos, etc. Para salir, debemos pulsar q.
Screenshot 24-05-2016-170548

Otros administradores

Por supuesto, también tenemos administradores gráficos de tareas, por ejemplo, aquí tenemos un pantallazo del administrador de tareas de KDE:
Screenshot 25-05-2016-120557
Con muchas opciones.

Agrupando procesos

Pero en la vida del sysadmin, en ocasiones tenemos la necesidad de saber lo que ocupan todos los procesos con el mismo nombre. Porque, muchas veces, un mismo programa lanza varios procesos homónimos que corren de forma concurrente. Podemos verlo, por ejemplo, cuando ejecutamos Chrome o Chromium, Spotify, procesos de Apache, PHP, o incluso cuando tenemos muchas sesiones de terminal abiertas y queremos saber cuánta memoria ocupan todas juntas.

Para eso, podemos utilizar el siguiente script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash

GROUP_ARG=$1
HUMAN=0
case $GROUP_ARG in
     "rss")
    GROUPABLE="rss"
    HUMAN=1
    ;;
     "size")
    GROUPABLE="size"
    HUMAN=1
    ;;
     "pmem")
    GROUPABLE="pmem"
    HUMAN=0
    ;;
     "pcpu")
    GROUPABLE="pcpu"
    HUMAN=0
    ;;
     *)
    echo "Bad argument!"
    exit
esac

ps -axo pid,$GROUPABLE,cmd | awk '
function human(x) {
         s="KiB MiB GiB TiB EiB PiB"
         while (x>=1024 && length(s)>1)
               {
               x/=1024;
               s=substr(s,5)
           }
         s=substr(s,0,3)
         return sprintf( "%.2f%s", x, s)
}
BEGIN {
    i=0
}
{
    if (!procesos[$3])
    {
        procesos[$3]=i
        pids[i]=$1 ""
        group[i]=$2
        i++

    }
    else
    {
        n = procesos[$3]
        pids[n]=pids[n] ", " $1 ""
        group[n]+=$2
    }
}
END {
    for (p in procesos)
    {
        i = procesos[p];
                if ('
$HUMAN')
                printf "%s %s (%s)\n", p, human(group[i]), pids[i]
        else
                printf "%s %s (%s)\n", p, group[i], pids[i]
    }
}
'
;

Cuando lo ejecutemos, debemos pasar un argumento: rss (tamaño de la parte residente en memoria del proceso), size (tamaño virtual del programa), pmem (% de memoria), pcpu (% de CPU) dependiendo del criterio que vamos a agrupar.

Si observamos, el script hace una llamada a ps -axo pid,(parametro),cmd por lo que recibiremos sólo 3 elementos de cada proceso, su identificador, el elemento que queremos agrupar y la línea de comandos invocada para correr el proceso. Todo eso se lo pasamos a awk que procesará línea por línea dicha información.

Dentro de awk, tenemos la función human, que transformará tamaños de KiB a unidades superiores (para que los tamaños sean más fáciles de leer, por ejemplo 1048576KiB = 1GiB). Awk, manejará 3 arrays, procesos, pids y group. Procesos[] asignará a cada cmd un índice consecutivo. pids[] asignará a cada índice una lista de IDs de procesos separados por comas, al final será una cadena de texto y group[] asignará a cada índice un número que será la suma de todos los argumentos que agrupemos (ya sabemos, memoria, cpu…). Lo que awk hará en cada iteración será buscar si ya ha visto un proceso con ese nombre, en caso afirmativo añadirá la información de la línea actual a los arrays del proceso, de otro modo, añadirá un elemento a cada array con información del proceso que acabamos de ver.

Para finalizar, una vez se haya recopilado la información, se recorrerá el array de procesos para imprimir en pantalla la información formateada y, en el caso de que la información a agrupar sea un tamaño (memoria), lo pondremos en formato humano (función human de arriba) para facilitar la legibilidad.

Ejemplos de uso

Yo he llamado al programa groupps. Para ejecutarlo puedo hacer:

$ ./groups size

y me mostrará el espacio ocupado por todos los procesos. Aunque podemos usar grep para filtrar esta información, por ejemplo, para ver cuánto ocupan todos los procesos de php-cgi-5.5 que tengo actualmente corriendo:

$ ./groups size | grep php-cgi-5.5
/opt/phpfarm/inst/bin/php-cgi-5.5.19 101.23MiB (4790, 4791, 4792, 4793, 4846, 4847, 4848, 4849, 4850, 4851, 4852, 4853, 28576, 28640, 28641, 28642)

En este caso veo que la suma del tamaño de todos los procesos de php es de 101.23MiB. Tenemos que tener

O puedo ver la CPU total consumida por los procesos de Spotify:

$ ./groupps pmem | grep spotify
/usr/share/spotify/spotify 12.3 (31847, 31849, 31863, 31879)

En este caso un 12.3%

Sobre este script

Este script lo incluiré en gscripts muy pronto, junto con una colección de scripts para hacer nuestra vida con la terminal más fácil.

Foto: Hoach Le Dihn

The post Cómo conocer CPU y memoria ocupada por un grupo de procesos con el mismo nombre appeared first on Poesía Binaria.

Miguel Parada

Miguel Parada
Ubuntizando.com

Motorsport Manager pasará del móvil al PC

hqdefault

Del teclado del móvil al del ordenador. Ese es el proceso de evolución de Motosport Manager, uno de los simuladores más completos del mundo de las cuatro ruedas y lo es porque como jugador te brinda la posibilidad de crear tu propia escudería y llevarla a pelear por los dos títulos (constructores y pilotos) dentro del Gran Ciro, entre otras cosas. Lo que viene siendo el PC Fútbol, con el que tantas generaciones crecieron, aplicado a la F1.

Se trata, en definitiva, de levantar de cero el equipo al completo y no solo fichar a los pilotos. Hay faena y horas de entretenimiento para gestionar un garaje y equipararlo en profesionalidad con el tiempo a los de Maranello o Woking. Entre sus muchas opciones, te brinda la posibilidad de jugar a ser AdrianNeweyo Ross Brawn y diseñar el bólido campeón desde el punto de vista de la ingeniera. Te tocará ponerte las pilas con el reglamento para saber si se puede colocar un difusor doble o tirar de KERS para que tu monoplaza pase el visto bueno de la FIA. Se trata de todo un reto el de equipar tu creación en competitividada los Mercedes de Nico Rosberg y Lewis Hamilton, que, según las apuestas en directo de bet365, son los favoritos al campeonato de 2016.

Una de las grandes novedades para su versión en camino es su nuevo motor de 3D, que te brinda también más libertad para trabajara pie de pista. El abanico se extiende a la elección de neumáticos, tácticas de carrera y demás factores a tener en cuenta antes y durante el encendido de los semáforos. Y es que el trabajo empieza a principios de semana con el traslado de material de un circuito a otro con la preparación de los libres, la calificación y sobre toda con la carrera en mente.

Éxito en descargas

Será a partir de septiembre cuando el proyecto de PlaysportGames vea la luz para PC, Mac y Linux a raíz del éxito que ha tenido en Android e iOS con más de 1,4 millones de descargas. Eso sí, Motorsport Manager, como le ha ocurrido a Pro Evolution Soccer en gran parte de su historia, carece de las licencias de la FOM, por lo que los nombres de los equipos que estarán contigo en la parrilla no serán los auténticos.

Christian West, fundador de la compañía, confía, en cualquier caso, en que la repercusión en los smartphonessea extensible al PC gracias a la colaboración con SEGA.Queríamos llevar la experiencia al siguiente nivel para construir una nueva versión del Motorsport Manager para PC, con más detalles, incluso mostrar los efectos de la degradación de los neumáticos respecto a la temporada previa“, aseguró.

La visión positiva de West es secundada por su nuevo socio (SEGA) y John Clack, vicepresidente de publicación comercial de Europa de SEGA, también tiene grandes expectativas puestas en esta alianza.

La entrada Motorsport Manager pasará del móvil al PC aparece primero en Ubuntizando.com.

Lunes 23 de mayo de 2016

Cómo se ve la versión impresa de «Domando al escritor»

El viernes ha llegado la copia del libro. He aquí cómo se ve «en persona»… La tapa: El interior: Se ve bien Algún pequeño error se ha escapado: en al menos un lugar un punto ha quedado (¡horror!) luego de un signo de admiración mientras que la ruta a un menú (la indicación para quitar […]

Domingo 22 de mayo de 2016

David González

David González
Blog Bitix

Cómo realizar copias de seguridad en Windows con FreeFileSync

Realizar copias de seguridad cada cierta frecuencia nos salvará de perder los datos en algún momento, no sabemos cuando pero tarde o temprano algo del equipo que usemos fallará ya sea a causa de software o hardware. A nivel de usuario mantener una copia sincronizada en otro dispositivo de nuestros archivos seguramente sea suficiente para no perderlos a causa de un desastre, para ello podemos usar FreeFileSync.

FreeFileSync

Realizar copias de seguridad es algo imprescindible si no queremos perder los datos el día que el sistema falle. No sabemos cuando alguna de las piezas de las que se compone un sistema fallará pero es seguro que un día fallará, puede que sean en meses, años, un lustro o una década. El fallo puede producirse por múltiples motivos relacionados con el hardware en el que algún componente físico se ha estropeado por desgaste, un pico de tensión, un golpe o caída como el disco duro, SSD, la placa base, la pantalla de un portátil, la fuente de alimentación, la memoria, el microprocesador o puede ser que el software como el sistema operativo que no se inicia por una actualización problemática, algún controlador de dispositivo produce algún error fatal en forma de BSOD, algún virus que impide iniciar el sistema, ha cifrado los archivos o ha corrompido el sistema haciendo que no sea usable.

Nuestros datos en forma de documentos, fotos, música o vídeos son más importantes que el equipo estropeado ya que este se se puede reemplazar pero recuperar los datos será mas complicado o imposible dependiendo del fallo si no hemos realizado copias de seguridad. En GNU/Linux hay múltiples programas y formas de hacer las copias de seguridad, incrementales, comprimidas, cifradas, … pero para un uso personal hacer una copia de los archivos y mantenerla sincronizada con rsync es más que suficiente. En Windows un programa es FreeFileSync equivalente a rsync disponible en GNU/Linux.

FreeFileSync tiene una licencia de software libre y está disponible tanto para Windows, GNU/Linux y Mac OS X. Ofrece una interfaz gráfica y su uso no es complicado. Primero deberemos seleccionar los directorios de los que hacer copia de seguridad y para cada uno de ellos el directorio destino en el que se guardará la copia de seguridad, FreeFileSync llama al origen y destino izquierdo y derecho ya que los presenta así en la interfaz y con la característica que cualquiera de ellos puede actuar como origen y destino. Habitualmente el directorio origen será uno del disco duro del sistema y el directorio destino un directorio de un disco duro o memoria USB externa. La copia de seguridad debería guardase en un dispositivo diferente al origen.

Después de indicar orígenes y destinos debemos seleccionar el tipo sincronización entre ambos directorios. Las opciones que nos ofrece de sincronización son:

  • Bidireccional: busca cambios en tanto en el lado izquierdo como del derecho y hace la sincronización en el otro lado.
  • Espejo: hace una copia exacta del lado izquierdo al lado derecho haciendo las modificaciones necesarias para que el lado derecho sea exactamente igual que el izquierdo, elimina archivos del lado derecho eliminados del lado izquierdo.
  • Actualizar: copia archivos nuevos y actualiza los modificados del lado izquierdo al lado derecho, no resolviendo los conflictos en caso de haber modificaciones en un archivo tanto del lado izquierdo y derecho, no elimina del lado derecho los archivos eliminados del lado izquierdo.
  • Personalizada: para cada categoría de modificación podemos seleccionar la acción que queremos que realice FreeFileSync.

En cada opción de sincronización es posible personalizar las acciones a realizar según la categoría de modificación, que son:

  • Copiar nuevo elemento a la derecha o a la izquierda.
  • Eliminar elemento izquierdo o derecho.
  • No hacer nada.
  • Actualizar elemento izquierdo o derecho.

Las categorías de modificación son las siguientes:

  • El elemento solo existe en el lado izquierdo.
  • El lado izquierdo es más reciente.
  • Hay un conflicto.
  • El lado derecho es más reciente.
  • El elemento solo existe en el lado derecho.

Antes de hacer la copia de seguridad podemos comparar el origen y destino viendo que diferencias hay entre los archivos y obteniendo unas estadísticas según el número de archivos para los que es necesario una acción de sincronización. También veremos que archivos se añaden, se eliminan o se modifican. FreeFileSync únicamente realiza la modificaciones imprescindibles para mantener la sincronización por lo que realizando la copia de seguridad con cierta frecuencia las acciones necesarias no serán muchas y se realizará rápidamente dependiendo del tamaño de los archivos.

Las opciones que ofrece son bastantes y seguro que cubren la mayoría de casos de uso que un usuario a nivel personal tiene. En el manual de usuario de FreeFileSync están comentadas más detalladamente sus opciones.

  • Opciones de comparación. Donde podremos indicar como detectar cambios entre los archivos, por fecha y tamaño, por contenido o por tamaño del archivo.
  • Opciones de filtrado. Con expresiones regulares indicamos los archivos a incluir y excluir en la sincronización, por ejemplo, *.jpg para fotos, *.docx para documentos de Microsoft Word, … normalmente querremos seleccionar por extensión del archivo. También podremos excluir según el tamaño mínimo, máximo.
  • Opciones de sinconización. Es dónde seleccionaremos el tipo de sincronización y las acciones a realizar según el tipo de categoría de modificación. Para las eliminaciones podremos elegir entre eliminar de forma permanente, enviar a la papelera de reciclaje o versionar los archivos. También elegiremos la posibilidad de que nos muestre una ventana con los conflictos que se produzcan. Por último, la acción una vez terminada la sincronización en caso de tomar mucho tiempo que nos servirá para desatender la sincronización, por ejemplo, apagar el equipo al terminar.
  • Notas y trucos.

La ventaja realizar un copia de los archivos directamente sin comprimir o cifrar es que no necesitaremos ningún programa adicional para acceder a ellos en caso de necesidad. Otros programas de copias de seguridad son capaces de guardar los datos cifrados y comprimidos pero para recuperar los datos necesitaremos esos programas. Dependiendo de los requerimientos para la copia de seguridad podemos cifrar la unidad USB externa con BitLocker en Windows y cifrar la unidad USB externa con dm-crypt y LUKS en GNU/Linux.

Referencia:
Copia de seguridad con rsync
Cifrar unidad USB completamente con dm-crypt y LUKS en GNU/Linux
Cifrar archivos con EncFS en GNU/Linux

David González

David González
Blog Bitix

3 opciones ofimáticas alternativas a Microsoft Office

Office es la suite ofimática de Microsoft con un margen de diferencia en la cuota de uso muy amplio sobre la siguiente opción en los sistemas con Windows. Es muy completa que incluye más funciones incluso que la mayoría de usuarios conoce o necesita pero también es una opción más cara que otras alternativas que incluso llegan a ser gratuitas sin tener nada que envidiarle para la mayoría de usuarios y casos de uso.

Microsoft
LibreOffice

En el primer artículo de este 2016 comentaba que Windows y Office aún siguen siendo fáciles de usar sin licencia. Licencia que cuesta nada más ni nada menos que unos 125€ para el hogar y estudiantes y unos 250€ para empresas, por equipo. Y si el equipo se renueva o estropea requiriendo cambiar algunos componentes debe adquirirse una nueva licencia. Dado el coste nada despreciable de la licencia no es de extrañar que tanto Windows como Office sean unos de los productos más usados sin licencia o pirateados.

Dada lo fácil que es usar Windows y Office sin licencia junto con el impuesto Windows hacen que tengan una cuota de mercado en números prácticamente de monopolio ni hay muestras de que vaya a cambiar a corto plazo. A veces pienso que a Microsoft no le importa que uses Windows u Office sin licencia para uso personal. Sin embargo, hay alternativas tanto para Windows como para Office que tienen poco que envidiarle, mucho más baratas o incluso gratuitas y de software libre incluso con un soporte mejor que el que ofrece Microsoft para su propio software.

Las alternativas a Windows son los caros productos de Apple muy orientados a gamas altas sobre todo por el precio o alguna de las muchas distribuciones GNU/Linux que son prácticamente en su totalidad gratuitas y de software libre, aunque el software libre no tiene por que ser gratuito en la mayoría de los casos lo es.

En este artículo me centraré más en las alternativas a Office que también son varias. Obviando el tema del software libre, Office es una buena y completa suite ofimática con más opciones de la que muchos usuarios necesitarán.

Microsoft Office

Microsoft Office incluye Word como procesador de textos, Powerpoint para presentaciones, Excel para hojas de cálculo, Access para bases de datos, Outlook como cliente de correo electrónico, OneNote para tomar notas o Publisher para publicaciones. Solo está disponible para Windows y Mac para el escritorio y las versiones web para estos y otros sistemas. Office 365 tiene un coste alrededor de 8,80€ por usuario y mes según el plan que incluye más o menos aplicaciones.

LibreOffice

La alternativa libre y gratuita equivalente de Office es LibreOffice. Incluye un editor de textos con Writer, hojas de cálculo con Calc, presentaciones con Impress, Draw para crear gráficos y Base para bases de datos sencillas. Sin embargo, la interfaz es el similar al de Office en las ediciones anteriores a la incorporación de ribbon con una estética sin la sensación de estar cuidada. Los menús son largos y encontrar un opción entre las muchas disponibles no es sencillo, al abrir una opción de menú uno se puede sentir intimidado por la longitud del mismo y es algo más difícil encontrar rápidamente la opción buscada entre todas las mostradas. Habrá usuarios que prefieran la interfaz de menús y barras de herramientas, yo soy de los que les gusta más ribbon. Está disponible para Windows, Linux y Mac.

WPS Office

Si nos gusta más la interfaz ribbon sin menús con multitud de opciones y que esté más cuidada en cuanto a diseño que LibreOffice similar a la usada en Microsoft Office, WPS Office es una opción muy a tener en cuenta, también puede activarse en modo clásico con menús y barras de herramientas soportando editar varios documentos en tabuladores. Ofrece únicamente los programas básicos de una suite ofimática: editor de textos, hojas de cálculo y presentaciones. Para un uso personal es gratuita con algunas limitaciones al imprimir y exportar documentos a formato PDF pero más que suficiente aún sin todas las opciones solo disponibles en la opción de pago.

Para el ámbito empresarial o con todas sus opciones su licencia tiene un coste mucho más razonable que el de Microft Office, 45€ para una licencia de un año y 80€ para la licencia de por vida por usuario.

Está disponible para Windows (XP, Vista, 7, 8, 10) incluso en versiones para los que ni Microsoft Office ya ofrece soporte, Linux, Android e iOS. Su instalador ocupa únicamente unos 80 MiB contra los más de 3 GiB de Office.

Google Docs

Otra alternativa a Office es Google Docs, no tiene todas las opciones que tiene Office pero para la mayoría de usuarios es suficiente. Basta con tener una cuenta de Google para usarla que incluye un editor de textos, de hojas de cálculo, de presentaciones y la posibilidad de realizar formularios. Se ejecuta en el navegador y aunque es posible en trabajo sin conexión a internet en momentos puntuales es requerirdo. Los documentos se almacenan en la nube con lo que no los perderemos en caso de estropearse nuestro equipo, podremos acceder a los documentos desde cualquiera de nuestros dispositivos como un teléfono inteligente, editar el mismo documento dos o más personas de forma simultanea o compartir los documentos con otras personas. Al estar basado en la nube no necesitamos realizar actualizaciones de software salvo el navegador.

Para las empresas se ofrece al precio de 4€ por usuario al mes que incluye el cliente de correo Gmail, calendarios, videollamadas y 30 GB de almacenamiento. Serán 8€ con más opciones de almacenamiento y retención de mensajes.

Alguna otra opción que merece ser comentada es Calligra la suite del entorno de escritorio KDE, Abiword, Lyx o Gnumeric.

La próxima vez que me pidan reinstalar Windows u Office en vez de instalar la suite ofimática de Microsoft sin licencia creo que instalaré la opción para uso personal de WPS Office, recomendaré usar Google Docs o LibreOffice que espero mejore y actualice a los tiempos modernos su interfaz cuando tenga que instalarlo.

Referencia:
A Microsoft no le importa que uses Windows u Office sin licencia
Windows 10 y Office 2016 tan fáciles de usar sin licencia como siempre
El impuesto Windows
LibreOffice
WPS Office
Google Docs

Jueves 19 de mayo de 2016

Ramón Miranda

Ramón Miranda
Ramon Miranda

BTR. Diseño de Logotipo para Grupo de deportistas.

Hola a Todos! desde hace algún tiempo que vengo interesándome por el deporte a varios niveles y de ese interés nace la colaboración con el grupo BTR para el cual diseñé este logotipo. Os dejo con el resultado final y más adelante publicaré el making off que de seguro os va a sorprender

Logotipo BTR (Bike·Trail·Run) Formato Horizontal Banner y formato vertical

Y esta es la aplicación desarrollada para la camiseta.


Sergio García Mondaray

Sergio García Mondaray
yakiboo.net

Wedding Invitations Templates For Word 2016

Wedding Invitation Templates Word   Wedding Invitation Collection S8SxdIZq

Wedding Invitation Templates Word Wedding Invitation Collection

Free Wedding Invitation Websites   Wedding Invitation Collection 9G8KhxDr

Free Wedding Invitation Websites Wedding Invitation Collection

Example Of Wedding Invitation Card   Wedding Invitation Collection PoE7HUl3

Example Of Wedding Invitation Card Wedding Invitation Collection

Free Wedding Invitations Templates For Word 2016 wwwroselliacom lxwsmhfH

Free Wedding Invitations Templates For Word 2016 wwwroselliacom

wedding invitation background free download   weddingbackgroundclub 8aEESrcD

wedding invitation background free download weddingbackgroundclub

Wedding Invitation Templates Word Wedding Invitation Collection

Sergio García Mondaray

Sergio García Mondaray
yakiboo.net

Vintage Invitation Templates 2016

Free Download Templates For Vintage Wedding Invitations CNJzrUaO

Free Download Templates For Vintage Wedding Invitations

Vintage Graduation Invitation   Printable Graduation Announcement   A 5wJ3gBCw

Vintage Graduation Invitation Printable Graduation Announcement A

Vintage Wedding Invitations 2015 2016 Fashion 2016 eFZGJM6X

Vintage Wedding Invitations 2015 2016 Fashion 2016

2016 Cheap New Gold Wedding Invitations Vintage Hollow Lace Laser Cut x9q76JwK

2016 Cheap New Gold Wedding Invitations Vintage Hollow Lace Laser Cut

Simple Wedding Invitation Template Invitation Templates mHIyzaem dr6eLvZa

Simple Wedding Invitation Template Invitation Templates mHIyzaem

Free Download Templates For Vintage Wedding Invitations

Sergio García Mondaray

Sergio García Mondaray
yakiboo.net

Vintage Invitation Templates 2016

Free Download Templates For Vintage Wedding Invitations CNJzrUaO

Free Download Templates For Vintage Wedding Invitations

Vintage Graduation Invitation   Printable Graduation Announcement   A 5wJ3gBCw

Vintage Graduation Invitation Printable Graduation Announcement A

Vintage Wedding Invitations 2015 2016 Fashion 2016 eFZGJM6X

Vintage Wedding Invitations 2015 2016 Fashion 2016

2016 Cheap New Gold Wedding Invitations Vintage Hollow Lace Laser Cut x9q76JwK

2016 Cheap New Gold Wedding Invitations Vintage Hollow Lace Laser Cut

Simple Wedding Invitation Template Invitation Templates mHIyzaem dr6eLvZa

Simple Wedding Invitation Template Invitation Templates mHIyzaem

Free Download Templates For Vintage Wedding Invitations

Miércoles 18 de mayo de 2016

Adrián Arroyo

Programando para Haiku - BApplication, BWindow y BButton - Parte I

Hoy voy a comenzar una serie de tutoriales donde explicaré la programación de una apliación en Haiku. Para ello vamos a usar C++ y la BeAPI. Siempre que tengais cualquier duda podéis visitar la documentación oficial: tanto la antigua de BeOS en el BeBook y la nueva de Haiku en Haiku API. Aun así hay APIs nuevas que todavía no aparecen documentadas. En ese caso hay que recurrir al código fuente.

Librerías en Haiku

Haiku (y BeOS) comparte con UNIX muchas características de bajo nivel. El tema de las librerías es uno de ellos. También han de empezar por lib y terminar por .so si son compartidas y .a si son estáticas. Para compilar también se usa GCC. Sin embargo hay una pequeña diferencia con el resto de sistemas UNIX. En UNIX normalmente disponemos de una librería del C, libc y una librería de funciones matemáticas, libm. En Haiku no existe libm, en cambio existen muchas más, libroot y libbe, para interactuar con el sistema de manera básica, libtracker, con funciones relacionadas con el explorador de archivos, libnetwork y libnetapi, con funciones de red, y muchas otras.

Además la API se divide en Kits, cada Kit se encarga de una tareas diferentes dentro del sistema operativo. AppKit, Game Kit, Interface Kit, Media Kit, Storage Kit, etc… Si queremos usar la funcionalidad de un kit tendremos que revisar que hemos añadido la librería correcta al compilador y que hemos añadido #include dentro del código que lo usemos.

Un hola mundo

Vamos a empezar por lo simple, una aplicación que muestre una ventana y ya.

Creamos un archivo de C++, será el punto de inicio de nuestra aplicación. Como sabéis, el punto de inicio de un programa de C o C++ es la función main.

int main(int argc, char** argv)
{
	AplicacionPrueba app;
    return app.Run();
}

Hemos creado un objeto llamado app del tipo AplicacionPrueba y después hemos ejecutado la aplicación. AplicacionPrueba tiene que ser del tipo BApplication. Es la clase básica de todas las aplicaciones Haiku/BeOS. BApplication provee de mensajería entre los distintos procesos del programa (hay que tener en cuenta que BeOS se diseñó pensando en el multiproceso). Vamos a ver como definimos AplicacionPrueba

#include <AppKit.h>

class AplicacionPrueba : public BApplication {
	public:
    	VentanaPrueba* ventana;
    	AplicacionPrueba() : BApplication("application/x-applicion-prueba"){
        	ventana = new VentanaPrueba();
            ventana->Show();
        }
};

Las Application necesitan un MIME type, al igual que se usa para indicar los tipos de archivo. No es necesario que sea real. Además hemos creado un objeto VentanaPrueba y la mostramos. VentanaPrueba es del tipo BWindow y es la ventana básica de Haiku, lo que vemos. Veamos la definición:

class VentanaPrueba : public BWindow{
	public:
    	VentanaPrueba() : BWindow(BRect(100,100,900,700),"Mi ventana", B_TITLED_WINDOW,0){
         // iniciar ventana
        }
        bool QuitRequested(){
        	be_app_messenger.SendMessage(B_QUIT_REQUESTED);
            return BWindow::QuitRequested();
        }
        void MessageReceived(BMessage* msg){
        	switch(msg->what){
            	default:
                	BWindow::MessageReceived(msg);
            }
        }
};

BWindow necesita un tamaño, que es indicado con BRect, un título, un estilo (por defecto es B_TITLED_WINDOW, pero podemos tener ventanas sin bordes o modal) y opciones varias. En las opciones varias podemos especificar que al cerrar la ventana se cierre la aplicación (B_QUIT_ON_WINDOW_CLOSE), que el usuario no pueda cambiar su tamaño (B_NOT_RESIZABLE), que no se pueda minimizar (B_NOT_MINIMIZABLE) y otras opciones por el estilo.

Además dentro de la clase hemos definido dos funciones virtuales, es decir, que tienen implementación por defecto de la clase padre, BWindow, pero nosotros podemos modificar su comportamiento.

QuitRequested es llamada cuando algo pide el cierre de la ventana. El objeto global be_app_messenger es del tipo BApplication, pero está definido en todos los puntos de nuestra aplicación sin que nosotros hagamos nada. Gracias a este objeto podemos enviar mensajes entre procesos. En este caso enviamos el mensaje a la aplicación de B_QUIT_REQUESTED. Y luego llamamos a la función sin modificar.

MessageReceived es muy importante. Se encarga de procesar todos los mensajes que recibe la ventana. Para distinguir los mensajes (que son del tipo BMessage) tenemos que inspeccionar la propiedad what. Se trata de un valor de tipo uint32. Hay algunos ya definidos por el sistema como B_QUIT_REQUESTED pero nosotros podemos definir más. Veremos más tarde como. De momento simplemente devolvemos el procesado de mensajes a BWindow padre.

Con esto ya podemos compilar.

gcc -o AplicacionPrueba app.cpp -lbe -lroot

Añadiendo BView, BButton y BGroupLayout

Ahora vamos a añadir cosas a nuestra ventana sosa. Ponemos una vista dentro de la ventana. Las vistas en Haiku son muy potentes pero eso lo trataré en otro momento. A esa vista le añadiremos un botón.

VentanaPrueba() : BWindow(BRect(100,100,900,700),"Mi ventana", B_TITLED_WINDOW,0){
         // iniciar ventana
         BGroupLayout* sizer = new BGroupLayout(B_HORIZONTAL);
         BView* panel = new BView(Bounds(), NULL, B_FOLLOW_ALL_SIDES,
                           B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE |
                               B_FRAME_EVENTS | B_DRAW_ON_CHILDREN);
         panel->SetViewColor(220, 220, 220);
         panel->SetLayout(sizer);
         
         BButton* boton = new BButton("Hola Mundo",NULL);
         
         sizer->AddView(boton);
         AddChild(panel);
        }
        

Aquí hemos hecho varias cosas. Por una parte he creado un layout horizontal. Es decir, dispongo el espacio de la ventana de manera horizontal, según se vayan añadiendo elementos lo harán a la derecha. Esto no estaba en BeOS y es particular de Haiku, pero recomiendo usar este sistema pues permite realizar un responsive design. Creamos una vista o panel. Bounds() indica que cubra todo el espacio disponible. El resto son propiedades de la vista más o menos estándar. Con SetViewColor le podemos poner un color de fondo, y con SetLayout le aplicamos el layout previamente creado.

Creamos un botón, que es del tipo BButton. BButton tiene muchos constructores si revisais la documentación pero este es muy cómodo si usamos el sistema de layouts. Simplemente indicamos el texto que va a mostrar y el mensaje que envía. En este caso NULL pues no vamos a poner ninguno.

sizer->AddView() lo usamos para añadir el botón al layaout y AddChild para añadir la vista a la ventana. Puedes compilar.

Añadiendo eventos. Mensajería con BMessage. Diálogo con BAlert.

Vamos ahora a crear un evento para el botón. Cuando pulsemos el botón mostrará un mensaje al usuario.

Los eventos se realizan por el sistema de mensajería basado en BMessage y BHandler. Para crear un BMessage necesitamos un ID, que es del tipo uint32. Eso es lo mínimo y con eso ya serviría para este caso.

const uint32 MOSTRAR_DIALOGO = 1;

...

BMessage* msg = new BMessage(MOSTRAR_DIALOGO);
BButton* boton = new BButton("Hola mundo",msg);

...

Pero los mensajes pueden llevar información adicional de cualquier tipo. Por ejemplo si queremos añadir además una cadena de texto al mensaje usaremos AddString.

msg->AddString("NombrePropiedad","ValorPropiedad");

Podremos recuperar el valor en cualquier momento con FindString.

Ahora si vamos a MessageReceived podemos añadir código que gestione este tipo de mensaje.

        void MessageReceived(BMessage* msg){
        	switch(msg->what){
            	case MOSTRAR_DIALOGO:
                BAlert* alert = new BAlert("Hola", "Sabes pulsar el boton, eh?", "Sip");
                alert->Go();
                break;
            	default:
                	BWindow::MessageReceived(msg);
            }
        }

Con un simple case gestionamos el mensaje. Para mostrar un diálogo simple se puede usar BAlert. Es muy simple, indicamos el título, el contenido del mensaje y el texto del botón que aparecerá. Y con Go lo mostramos.

Esta ha sido la primera parte del tutorial. Os ha gustado. Hay algo que no haya quedado claro. Comentádmelo.

#include <AppKit.h>
#include <InterfaceKit.h>
#include <Layout.h>
#include <GroupLayout.h>

const uint32 MOSTRAR_DIALOGO = 1;

class AplicacionPrueba : public BApplication {
	public:
    	VentanaPrueba* ventana;
    	AplicacionPrueba() : BApplication("application/x-applicion-prueba"){
        	ventana = new VentanaPrueba();
            ventana->Show();
        }
};

class VentanaPrueba : public BWindow{
	public:
VentanaPrueba() : BWindow(BRect(100,100,900,700),"Mi ventana", B_TITLED_WINDOW,0){
         // iniciar ventana
         BGroupLayout* sizer = new BGroupLayout(B_HORIZONTAL);
         BView* panel = new BView(Bounds(), NULL, B_FOLLOW_ALL_SIDES,
                           B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE |
                               B_FRAME_EVENTS | B_DRAW_ON_CHILDREN);
         panel->SetViewColor(220, 220, 220);
         panel->SetLayout(sizer);
         
         BMessage* msg = new BMessage(MOSTRAR_DIALOGO);
         BButton* boton = new BButton("Hola Mundo",msg);
         
         sizer->AddView(boton);
         AddChild(panel);
        }
        bool QuitRequested(){
        	be_app_messenger.SendMessage(B_QUIT_REQUESTED);
            return BWindow::QuitRequested();
        }
        void MessageReceived(BMessage* msg){
        	switch(msg->what){
            	case MOSTRAR_DIALOGO:
                BAlert* alert = new BAlert("Hola", "Sabes pulsar el boton, eh?", "Sip");
                alert->Go();
                break;
            	default:
                	BWindow::MessageReceived(msg);
            }
        }
};

int main(int argc, char** argv)
{
	AplicacionPrueba app;
    return app.Run();
}
Ramón Ramón Sánchez

Ramón Ramón Sánchez
Software Libre y Comunicación

Autismo y software libre

Soy papa de un niño con autismo y lucho por hacer del mundo un lugar más comprensivo e inclusivo.  El Trastorno del espectro autista (TEA)  afecta la capacidad de una persona para comunicarse y relacionarse con las demás personas y su manera de percibir al mundo. Está asociado con rutinas y comportamientos repetitivos, también en mayor o menor medida una... Leer más »

La entrada Autismo y software libre aparece primero en Software Libre y Comunicación.

Domingo 15 de mayo de 2016

Lakka: una distribución basada en videojuegos retro

Si eres fanático de los videojuegos retro, la distribución Lakka es la que debes tener instalada en tu ordenador con Linux, puesto que la misma nos permitirá tener acceso a juegos de 8 y 16 bits de una manera muy práctica. Esta distribución de Linux se caracteriza por estar basada en OpenELEC, un sistema operativo con excelentes epecificaciones como es el caso de la estabilidad y el buen

Martes 10 de mayo de 2016

BlogDRAKE: Concurso de Arte para Mageia 6

Lunes 09 de mayo de 2016

Adrián Arroyo

The Everything Building

The Everything Building es un juego que fue presentado al Ludum Dare 34. Ludum Dare es una game jam, la más popular quizá. Se trata de hacer un juego en 72 horas. Normalmente hay un tema para el juego y si te ciñes a él podrás optar a ganar en más categorías. El tema de esta vez fue “Two game controls” (dos controles). The Everything Building quedó segundo en la general aunque en la categoría de diversión ganó.

The Everything Building

¡Probadlo! A mí me ha encantado, es un gran juego. Con solo dos controles (flecha arriba, flecha abajo) controlamos un ascensor. Tenemos que llevar a la gente de una planta a otra. Si hay demasiada gente espereando perdemos. Hasta ahí parece simple pero el tipo de personas que montan en el ascensor tiene efectos sobre el resto. Por ejemplo, existen las parejitas, con un corazón encima, que no van a revelar su planta hasta que no se encuentren con su pareja. Están los zombies que ahuyentan a la gente. Los perros ocupan poco espacio y entran 4 mientras que coches solo entran 1. Si llevas payasos con globos te será más fácil subir y más difícil bajar. Este comportamiento a la inversa si coges a un fortachón. Hay un personaje que puede cambiar el tipo de establecimiento de esa planta (que en definitiva es lo que genera los personajes especiales) y que nos puede servir para jugar táctico.

En el apartado técnico no hay ningún reproche, es ligero, tiene un diseño pixel art bellísimo, la música acompaña perfectamente y la jugabilidad está ajustada, ¡perderás en el mejor momento!

En definitiva, jugadlo, es de lo mejorcito que he visto en HTML5.

Mis felicitaciones a Olli Ethuaho, Kimmo Keskinen, Sakari Leppä, Valtteri Heinonen y Anastasia Diatlova. El código está en GitHub: https://github.com/Oletus/elevator

Open365: completo paquete de aplicaciones libre

El Open365 es el paquete de herramientas que está buscando cualquier persona que necesite crear y leer desde sus ordenadores con Linux documentos de diferente tipo, como es el caso de documentos textuales, plantillas e incluso presentaciones de diapositivas. Se trata de una excelente alternativa para otras herramientas vigentes en la actualidad como Microsoft Office e incluso también para Open

Cómo liberar espacio en Ubuntu fácilmente

Si tienes problemas de espacio, te recomendamos en primera instancia revisar los archivos multimedia que tienes almacenado en tu ordenador equipado con la distribución Ubuntu de Linux, ya que las imágenes, vídeos y música son los archivos que más ocupan espacio. Luego se encuentran las aplicaciones, las cuales tienden a ocupar bastante espacio, aunque los usuarios de diferentes distribuciones de

Lunes 02 de mayo de 2016

Ramón Ramón Sánchez

Ramón Ramón Sánchez
Software Libre y Comunicación

Review Tablet Aquaris M10 Ubuntu Edition

Hoy os traigo la review de una de las tablets más esperadas de este año: Aquaris M10 Ubuntu Edition BQ ha sido la primera empresa encargada de estrechar lazos con Canonical para lanzar tanto los primeros smartphones como también la tablet con sistema operativo Ubuntu. Las especificaciones las tenéis en la web de BQ (tanto la versión HD como la... Leer más »

La entrada Review Tablet Aquaris M10 Ubuntu Edition aparece primero en Software Libre y Comunicación.

Miércoles 27 de abril de 2016

Ramón Ramón Sánchez

Ramón Ramón Sánchez
Software Libre y Comunicación

Adoctrinamiento tecnológico en tiempos de Open Source

Christopher Lathan Sholes (14 de febrero de 1819 – 17 de febrero de 1890) fue un inventor y político estadounidense. A el le debemos la distribución de teclado QWERTY, como parte integrante de las modificaciones hechas a una máquina de contar billetes que el mismo había patentado 4 años antes. El objetivo era la creación de la primera máquina de... Leer más »

La entrada Adoctrinamiento tecnológico en tiempos de Open Source aparece primero en Software Libre y Comunicación.

Viernes 22 de abril de 2016

David González

David González
Blog Bitix

Tutorial sobre los tipos genéricos de Java

Hace ya más de una década que en Java 5 se introdujeron los generics para dotar al lenguaje de una mejor comprobación de tipos en tiempo de compilación y al mismo tiempo eliminar los cast que hasta entonces eran necesarios al usar las colecciones. Dada la lentitud de adopción que suele haber en la plataforma Java en los grandes entornos empresariales puede que aún no los hayamos usado extensamente o tengamos alguna duda en su uso. Hay unos cuantos conceptos sobre los generics que son convenientes conocer.

Java

Los generics fueron introducidos en la versión 5 de Java en 2004 junto con otras muchas novedades suponiendo en su historia una de las mayores modificaciones o al mismo nivel de las novedades introducidas con Java 8 más recientemente al lenguaje Java. Los generics son importantes ya que permiten al compilador informar de muchos errores de compilación que hasta el momento solo se descubrirían en tiempo de ejecución, al mismo tiempo permiten eliminar los cast simplificando, reduciendo la repetición y aumentando la legibilidad el código. Los errores por cast inválido son especialmente problemáticos de debuggear ya que el error se suele producir en un sitio alejado del de la causa.

Los generics permiten usar tipos para parametrizar las clases, interfaces y métodos al definirlas. Los beneficios son:

  • Comprobación de tipos más fuerte en tiempo de compilación.
  • Eliminación de casts aumentando la legibilidad del código.
  • Posibilidad de implementar algoritmos genéricos, con tipado seguro.

Un tipo usando generics tiene el siguiente aspecto, por ejemplo usando una clase Box contenedor de una referencia a un tipo no determinado en la definición de la clase pero que lo será en su uso. Una clase genérica puede tener múltiples argumentos de tipos y los argumentos pueden ser a su vez tipos genéricos. Después del nombre de la clase se puede indicar la lista de parámetros de tipos con el formato <T1, T2, T3, …>.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/Box.java">Box.java</pre></a></noscript>
<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/Pair.java">Pair.java</pre></a></noscript>
<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/OrderedPair.java">OrderedPair.java</pre></a></noscript>

Según las convenciones los nombres de los parámetros de tipo usados comúnmente son los siguientes:

  • E: elemento de una colección.
  • K: clave.
  • N: número.
  • T: tipo.
  • V: valor.
  • S, U, V etc: para segundos, terceros y cuartos tipos.

En el momento de la instanciación de un tipo genérico indicaremos el argumento para el tipo, en este caso Box contendrá una referencia a un tipo Integer. Con Java 7 se puede usar el operador diamond y el compilador inferirá el tipo según su definición para mayor claridad en el código. Podemos usar cualquiera de esta dos maneras prefiriendo usar el operador diamond por ser más clara.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/Instantation.java">Instantation.java</pre></a></noscript>

Para mantener la compatibilidad con versiones anteriores a Java 5 los tipos genéricos que al usarse no indican argumentos de tipo se denominan raw. El compilador indicará una advertencia como un uso potencialmente peligroso ya que no podrá validar los tipos.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/Raw.java">Raw.java</pre></a></noscript>

Además de las clases los métodos también pueden tener su propia definición de tipos genéricos.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/Method.java">Method.java</pre></a></noscript>

La sintaxis completa de uso sería:

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/MethodUsage.java">MethodUsage.java</pre></a></noscript>

Aunque puede abreviarse ya que el compilador puede inferir los tipos:

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/MethodUsageInference.java">MethodUsageInference.java</pre></a></noscript>

A veces querremos limitar los tipos que pueden ser usados empleando lo que se denomina bounded type. Con <U extends Number> el tipo U debe extender la clase Number.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/BoxBounds.java">BoxBounds.java</pre></a></noscript>

Una clase puede tener múltiples limitaciones, si una es una clase debe ser la primera y el resto de argumentos interfaces.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/Bounds.java">Bounds.java</pre></a></noscript>

En Java un tipo puede ser asignado a otro mientras el primero sea compatible con el segundo, es decir tengan una «relación es un». Una referencia de Object puede referenciar una instancia de Integer (un Integer es un Object).

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/IsA.java">IsA.java</pre></a></noscript>

Sin embargo, en el caso de los generics, ¿una referencia de Box<Number> puede aceptar una instancia Box<Integer> or Box<Double> aun siendo Integer y Double subtipos de Number?. La respuesta es no, ya que Box<Integer> y Box<Double> en Java no son subtipos de Box<Number>. La jerarquía de tipos es la siguiente:

Los tipos genéricos pueden extenderse o implementarse y mientras no se cambie el tipo del argumento la «relación es un» se preserva. De modo que ArrayList<String> es un subtipo de List<String> que a su vez es un subtipo de Collection<String>.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/PayloadList.java">PayloadList.java</pre></a></noscript>

En los generics un parámetro para un tipo ? se denomina wildcard siendo este un tipo desconocido. Son usados para reducir las restricciones de un tipo de modo que un método pueda funcionar con una lista de List<Integer>, List<Double> y List<Number>. El término List<Number> es más restrictivo que List<? extends Number> porque el primero solo acepta una lista de Number y el segundo una lista de Number o de sus subtipos. List<? extends Number> es un upper bounded wildcard.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/BoundedWildcard.java">BoundedWildcard.java</pre></a></noscript>

Se puede definir una lista de un tipo desconocido, List<?>, en casos en los que:

  • La funcionalidad se puede implementar usando un tipo Object.
  • Cuando el código usa métodos que no dependen del tipo de parámetro. Por ejemplo, List.size o List.clear.

Digamos que queremos definir un método que inserte objetos Integer en un List. Para mayor flexibilidad queremos que ese método pueda trabajar con cualquier tipo de lista que permita contener Integer, ya sea List<Integer>, List<Number> y List<Object>. Lo podemos conseguir definiendo List<? super Integer> que se conoce como Lower Bounded Wildcard.

Las clases genéricas no tienen relación alguna aunque sus tipos los tengan, pero usando wildcads podemos crearlas.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/WildcardList.java">WildcardList.java</pre></a></noscript>

Uno de las mayores confusiones al usar generics es cuando usar upper bounded wildcards o cuando usar lower bounded wildcards. Podemos usar las siguientes reglas:

  • Una variable generic que se usa como fuente de datos (in), por ejemplo src en <U> copy(List<? extends U> src, List<? super U> dest) se define usando upper bounded wildcard con la palabra clave extends. De modo que la lista del parámetro src pueda ser una lista de un tipo U o de un subtipo de U.
  • Un variable generic que se usa como destino de datos (out), por ejemplo dest en <U> copy(List<? extends U> src, List<? super U> dest) se define usando lower bounded wildcard con la palabra clave super. De modo que la lista del parámetro dest pueda ser una lista de un tipo U o de un supertipo de U.
  • En caso de que la variable pueda ser usando mediante métodos definidos en la clase Object se recomienda usar un unbounded wildcard (?).
  • En caso de que la variable se necesite usar como fuente de datos y como destino (in y out) no usar wildcard.

Los generics son un mecanismo para proporcionar comprobaciones en tiempo de compilación, sin embargo, el compilador aplica type erasure que implica:

  • Reemplazar todos los tipos con sus bounds o por Object si son unbounded.
  • Insertar casts para preservar el tipado seguro.
  • Generar métodos puente para preservar el polimorfismo en generics en los que son extendidos.

Un tipo non reifiable son aquellos cuya información de tipo ha sido eliminada en tiempo de compilación por el type erasure, para la JVM no hay ninguna diferencia en tiempo de ejecución entre List<String> y List<Number>. No se crean nuevas clases para los tipos parametrizados de modo que no hay ninguna penalización en tiempo de ejecución. Una clase genérica al compilarla se transforma aplicando type erasure:

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/TypeErasure.java">TypeErasure.java</pre></a></noscript>

Los generics tiene algunas restricciones:

  • No se pueden instanciar tipos genéricos con tipos primitivos.
  • No se pueden crear instancias de los parámetros de tipo.
  • No se pueden declarar campos static cuyos tipos son parámetros de tipo.
  • No se pueden usar casts o instanceof con tipos parametrizados.
  • No se pueden crear arrays de tipos parametrizados.
  • No se pueden crear, capturar o lanzar tipos parametrizados que extiendan de Throwable.
  • No se puede sobrecargar un método que tengan la misma firma que otro después del type erasure.

Este artículo es gran medida una traducción del tutorial de Java sobre Generics, que también es recomendable echarle un vistazo incluso leerlo varias veces por la cantidad de información que contiene, en algunos puntos todo lo comentado en este artículo está explicado de forma más extensa.

Para profundizar más en este importante tema de genéricos de Java tenemos a nuestra disposición varios libros, alguno como Java Generics and Collections dedicado enteramente a él, no importa que se un libro del 2006 ya que desde entonces los genéricos no han tenido grandes cambios y su contenido sigue siendo válido.

A pesar de los generics y el compilador es posible poner en un String en un HashSet<Integer> usando el tipo raw de HashSet, cosa que se denomina heap pollution y que provoca exepciones ClassCastException en tiempo de ejecución. Usando colecciones envueltas por los métodos Collections.checkedSet, checkedList y checkedMap evitaremos el heap pollution produciendo una excepción no en el momento de extraer el objeto de la colección sino en el momento de insertarlo.

<noscript><pre><a href="https://gist.githubusercontent.com/picodotdev/c5360a2d848a594c4dba518d6f1cfd62/raw/HeapPollution.java">HeapPollution.java</pre></a></noscript>

En resumen, los genéricos en Java son un añadido muy útil al lenguaje.

Referencia:
Novedades y nuevas características de Java 8
Introducción y nuevas características de Java EE 7
10 razones para seguir usando Java
Java Tutorials: Lesson: Generics
Java 1.5 Generics Tutorial

José María Morales Vázquez

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

find, ejemplos de uso

chuleta El comando find es uno de los más útiles y versátiles de que disponen nuestros Linux. La potencia y la cantidad de opciones disponibles de esta utilidad es increible. Yo, que tengo una pésima memoria, tengo una chuletilla donde voy recopilando los más útiles que encuentro y/o he usado en alguna ocasión. Os copio aquí una selección y una pequeña introducción previa con los comandos más básicos para los novatos.

NOTA: Si no ejecutas el comando como root habrá muchos archivos y/o directorios a los que no tengas acceso y a los que, por tanto, el comando find no podrá acceder y no aparecerán en la lista. Aún como root es normal que en ocasiones te encuentres errores de acceso en determinados ficheros. Algo como esto:

find: «/proc/9308/task/9308/fd/5»: No existe el archivo o el directorio

NOTA (y II): Piensa que puedes combinar fácilmente entre si la mayoría de los ejemplos que veremos a continuación para obtener búsquedas aún más precisas.

Si queremos buscar un archivo de nombre archlinux.iso en nuestro equipo:

find / -name archlinux.iso

Si queremos restringir la búsqueda al directorio /opt (y todo lo que haya debajo):

find /opt -name archlinux.iso

En cualquiera de los casos anteriore podemos usar comodines en el nombre del archivo:

find / -name archlinux*.iso

Y si queremos que la búsqueda sea “insensible” a que el nombre del archivo (o la parte de este que especificamos) esté en mayúsculas o minúsculas:

find / -iname archlinux*.iso

Si sólo estamos interesados en encontrar directorios:

find / -type d -name log

Y sí sólo queremos encontrar ficheros:

find / -type f -name temp

Para encontrar archivos con distintos patrones (por ejemplo todos los iso y los tar.gz):

find /mnt/temp -type f \( -name *.iso -o -name *.tar.gz \)

O archivos que no cumplan un patrón (todos los que no sean iso):

find /mnt/temp/downloads -type f -not -name *.iso

Para encontrar archivos y directorios vacíos:

find / -empty

Para encontrar los ficheros que pertenecen a un determinado usuario:

find /opt -user josemaria

Para encontrar todos los ficheros con un determinado patrón cuyo contenido ha sido modificado por última vez hace exactamente tres días:

find /mnt/datos *.odt -type f -mtime 3

Idem pero modificados por última vez hace menos de 7 días:

find /mnt/datos *.odt -type f -mtime -7

Idem pero modificados por última vez hace más de un año:

find /mnt/datos *.odt -type f -mtime +365

NOTA: Si cambiamos mtime por atime en los tres ejemplos anteriores se realiza la búsqueda teniendo en cuenta el momento del último acceso al fichero y si usamos ctime se tiene en cuenta la última modificación no sólo del contenido del fichero sino también de sus atributos (propietario, permisos, etc.)

Para buscar los archivos con un determinado patrón y guardarlos comprimidos:

find /mnt/temp -type f -name *.txt | xargs tar cvzf textos.tar.gz

Para buscar los archivos con un determinado patrón y borrarlos:

find /mnt/temp -type f -name *.txt -exec rm {} \;

Para encontrar todos los archivos de más de 500 Megas:

find / -type f -size +500M

Idem al anterior pero mostrando el tamaño del archivo (en bytes) antes del nombre:

find / -type f -size +500M -printf '%s %p\n'

Para buscar los 10 archivos o directorios que más espacio ocupan:

find / | sort -nr | head -10

NOTA: ¿find o locate? La única ventaja de locate frente a find es que es más (mucho más) rápido, así que si realizas búsquedas a menudo y quieres que sean como centellas no te leas este texto que no es para ti. Las ventajas de find frente a locate son muchas otras (¡todas las demás que se te ocurran!). Y si no me crees leete esto.

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: find, ejemplos de uso || Hospedado en un Cloud VPS de Gigas.

Domingo 17 de abril de 2016

Liher Sanchez

Liher Sanchez
El blog de Liher

Que son los paquetes Snap en Ubuntu

Hoy he estado revisando varias noticias que tenia almacenadas en mis cuentas de email y me he encontrado con una de la que ya había leído algo pero no en profundidad. Esta noticia trataba sobre los paquetes Snap en Ubuntu, que son y las ventajas e inconvenientes que suponen y eso es de lo que os voy a hablar en este articulo.

Como muchos de vosotros sabréis la nueva versión LTS de Ubuntu, la 16.04, esta a la vuelta de la esquina y habrá varias novedades. Una de esas novedades es que los paquetes Snap harán su aparición en la versión de escritorio y conviviran junto con los Deb, pero ¿que son los paquetes Snap?

 

snap ubuntu

 

Hasta ahora cuando queríamos instalar un programa en Ubuntu o sus derivadas lo podíamos hacer de varias formas, desde el Centro de software, Synaptic y la Terminal pero todo se reduce a que Ubuntu se descarga el archivo instalable en formato Deb y lo instalaba en nuestro ordenador. Deb es el formato de paqueteria que se usa en Ubuntu y proviene de Debian. Os voy a explicar un poco a grandes rasgos como funciona. Supongamos que queremos instalar un programa llamado Gimp, accedemos al Centro de Software para instalarlo, lo buscamos y le damos al botón en el que pone “Instalar”, entonces se comprueba que en nuestro Ubuntu estén todos los programas o librerías de las que depende para instalarse el Gimp, si no están se descargan las necesarias y el propio Gimp, todo ello en formato Deb y después se instala. Esto tiene una ventaja clara, si un paquete sirve para varios programas lo pueden compartir, con el consiguiente ahorro de espacio en nuestro disco duro y RAM.

Snap es otro tipo de paqueteria que tiene como objetivo que cuando quieres instalar un programa viene todo lo necesario para dicho programa en un solo paquete, de esa forma evitaremos resolver las dependencias. Esto tiene una ventaja muy buena y es que como no necesitamos cumplir dependencias podremos tener la ultima versión del paquete Snap independientemente de la versión de Ubuntu que tengamos instalado. Ademas, como un programa empaquetado Snap tiene todo lo necesario para funcionar estará aislado del resto del sistema por lo que su repercusión en el sistema sera nula.

De momento convivirán los dos tipos de paqueteria, dudo mucho que a corto/medio plazo Ubuntu tenga previsto eliminar los Deb de su sistema operativo, aunque si que puede ser un primer paso para hacerlo en el futuro.

Una de las grandes desventajas que tiene Snap sobre Deb es que los programas ocuparan mas espacio en disco, aunque eso no es un problema con las capacidades de los discos duros de hoy en dia.

Un saludo.

Sábado 16 de abril de 2016

José María Morales Vázquez

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

Publicidad: Código de descuento para hosting en Gigas

hosting Gigas, la empresa de hosting en la que está alojado este blog desde hace ya más de dos años (y eso que siempre he sido un culo inquieto para esto de los hostings) ofrece en estos momentos un par de cupones de descuento para algunas de sus modalidades de hosting, así que si estás buscando alojamiento en la web tenlo en consideración. No son los más baratos, es verdad, pero si uno de los que dan mejor soporte y servicio desde nuestro país y con soporte en español. Y con estos cupones el precio es realmente competitivo.

En la información que me han enviado sobre estos cupones no pone hasta cuando son válidos. Lo digo por si pasas por aquí dentro de unas semanas y ya no valen. No me lo eches en cara que no tengo ni idea ¿vale?

Los cupones son estos:

  • INTRO25 – Cupón válido para planes Nova y Pro con facturación semestral o anual (25% de descuento).
  • EXPERT30 – Cupón válido para planes Élite y Summun con facturación mensual, semestral o anual (30% de descuento).

DISCLAIMER: Si contratas después de entrar por mi enlace de referidos yo me llevo unas pelillas para que mi próxima renovación me salga un poco más barata pero a ti no te supone cargo alguno adicional. Palabra 😉

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: Publicidad: Código de descuento para hosting en Gigas || Hospedado en un Cloud VPS de Gigas.
Marcelo Fortino

Marcelo Fortino
Fortinux

Instalar Ubuntu 14.04 LTS en un notebook Acer Aspire E5-573 junto con Windows 10

Instalar Ubuntu 14.04 LTS en un notebook Acer Aspire E5-573 junto con Windows 10 Como siempre el duopolio Wintel bloquea abiertamente la instalación de sistemas operativos libres, al poner trabas que a un usuario común le resultan difíciles de resolver. Por ello, pongo aquí a disposición los 10 pasos que he realizado para tener los dos sistemas operativos funcionando en mi portátil.

Sábado 09 de abril de 2016

Raúl González Duque

Raúl González Duque
Linux – Mundo Geek

Ubuntu está en todas partes

Lleva años con nosotros, es una de las distros Linux más populares de la historia y hace poco hizo su desembarco en Windows. Hablamos de Ubuntu, cuya nueva versión estará disponible en un par de semanas y que, como el amor y los restaurantes McDonalds, está ya en todas partes.

Lo usa Netflix, Wikipedia, Dropbox, Instragram, Reddit, Snapchat y el mayor súper computador del mundo. Está en millones de PCs y servidores, en los coches de Google, y en la órbita terrestre, en la Estación Espacial Internacional.

Infografía 'Ubuntu está en todas partes'

Viernes 08 de abril de 2016

Ramón Miranda

Ramón Miranda
Ramon Miranda

Muses DVD preset Pack in bundle format for 2.9!



It is time for an update!
Recently some people asked for a bundle format so i have been working on making a bundle. If you like it, let me know..

Download here

Want to see some examples?



For newcomers i post some images and info about the set.
Here you have it.


The colors of the squares are only for differentiating the parts,  they don’t have nothing to be with the colour coding we designed for distinguishing the presets.
– Sketching:
This first part of the set covers the sketching and dry techniques phases like pencil, charcoal and hard pastel.
Usually you’d use these presets in black and white, but the advantage of the digital painting is that with only one preset you can still use all the colors you want, for instance to simulate the effect of color pencils.





– Digital:
This part of the set covers the most common presets that you need for digital painting. The classic round brushes with a good velocity in bigger sizes, smooth contour, squared… The illustration of below, for example, makes an extensive use of the squared brush for creating the structures of the mountain. After that, you will have to do a detailing finish, of course, but is a fast way for delimiting the contours.
Personally, I use these presets all the time.
– Ink & Fx:
In principle, this presets aren’t for inking comics (for that see the presets created by Timothee Giet), they are for doing studies or fast sketches. We can emulate the markers technique very easily.
– Oils & water:
I use this presets for creating the brushstrokes of wet paint, for giving the painting the look and feel of oil paint and gouache. They create expressive effects and they are fast but I don’t recommend the using them at really big sizes: you can easily saturate the resources of even a beefy computer. They use the “ascension” sensor for the color-rate.



– Blender:
This presets mix the color that is applied in the canvas. They are quite explanatory in themselves.
– Texturing:
This presets are used for fill big parts of the image with varied shapes like leaves, clouds, etc. They simulate effects that will take a lot of time painting it directly with normal round brush, saving us a lot of time that can be spent on places where we need manual detailing.


Download here

Bundle install

To install, download the file , then import it in Krita this way : Setting > Manage Ressources > Import Bundle/Resources.


License :  the brushkit itself and thumbnails is released under the WTFPL 2.0  (compatible with Public Domain and CC-0 ).
Ramón Miranda

Ramón Miranda
Ramon Miranda

Ramon Miranda Illustration. Diseño de Logotipo. Parte 2/2


Vamos a por la segunda parte de este post sobre la creación de mi logotipo.
(si no viste la primera y te apetece leer el artículo desde el inicio Aqui. http://www.ramonmiranda.com/2016/02/ramon-miranda-illustration-diseno-de.html)


  • Fase 3. De lápiz a Vectores
  • Fase 4. Tipografía
  • Fase 5. Prueba sobre soportes. 

Fase 3. De lápiz a vectores

Ahora es momento de ponerse en el ordenador teniendo una idea sólida sobre la que trabajar.
En esta fase voy a transformar lo que he hecho con el lápiz mediante un programa de vectores como inkscape, illustrator, corel draw. en esta ocasión Inkscape.
Voy a aprovechar una función que es la de trazar imágenes.  menú Path/trace Bitmap (shift+alt+b). Lo que hace es traducir cada contorno a un trazado vectorial. Como el diseño es simple y sin color se lo ponemos muy fácil. Aunque con color también puede hacer cosas muy interesantes pero eso lo dejamos para otro momento.
Trazado de imagen a vectores
No recomiendo dejar el trazado según salga de esa operación porque suele haber un exceso de nodos. Pero sí es un buen punto de partida para empezar a limpiar el trazado. ¡130 nodos son demasiados!
Nodos sin limpiar

En este caso concreto me gusta la sensación de "orgánico". Pero aun así decido probar a hacerlo puro vectorial partiendo de un cuadrado y dibujo de nodos. Se puede ver el proceso de izq a derecha. usando primitivas básicas y operaciones de unión, resta, puedo obtener rápidamente un resultado que parece más complejo. ¿pero funciona?...hmm.

Diseño Vector desde 0
No, no funciona porque he perdido la sensación de orgánico, parece algo muy frío y no me convence tanta frialdad. Tomo la decisión de desechar este camino y depurar el trazado anterior que guarda mejor la sensación orgánica del boceto.

Zonas a limpiar y resultado

Diseño limpiado de exceso de nodos.
Más tarde veré si quito algun nodo más sin perder esa sensación de "mancha" Si quito demasiados nodos se quedan las líneas planas.
Poniéndolos cara a cara este es el resultado
Orgánico vs Lineas puras

Fase 4. Tipografía

La elección de la tipografía tiene la misma importancia que el propio diseño del "logo" . Gracias a la fase de diseño en papel, ya se lo que busco en la tipografía. así que me lanzo a ello en Dafont.com. Quiero algo limpio, moderno, y con trazos muy concretos. ¿Lo encontraré? Después de ver 55 páginas de Dafont.com bajo la categoría de básico/sans serif. he seleccionado 10 que tienen licencias para poder usarlas libremente. o bajo condiciones aceptables.
10 primeras candidatas
Tras analizar cada palo, asta, altura de la x, interlineado etc... veo 5 que pasan a la siguiente fase.
Tipografías seleccionadas
Es duro dejar atrás unas fuentes tan bonitas pero hay claros indicativos de por qué no las elegí. Demasiado ángulo en su diseño,(picos en M y R) palos no redondeados, kerning que produce espácios ópticos que no me agradan, demasiado grosor, mi propio gusto o intuición...
Con las seleccionadas sigo cribando poco a poco
Proceso de selección de tipografía
Al final la elegida en el certamen "miss tipografia RM 2016 " es...
¡La Chata!
Crédito de la tipografía "la chata" para su creador. http://defharo.com/
Grácias Fernando por tan buen trabajo. Si buscais fuentes para vuestros proyectos personales o comerciales, Fernando es todo un profesional.
Información de logotipo

Y con esto ya tengo establecido todo el diseño de mi logo. Tamaños, relaciones fuentes, kerning... ¿y el color?
Color para una tinta
En el caso del color no he tenido muchos problemas porque sabía ya que iba a ser un tono cáĺido. Si a eso le sumamos el significado simbólico que le quiero dar pues ya está  os presento a #cc7722ff más conocido como ocre.

Desde el inicio de la humanidad hemos transmitido información a través de pinturas. El pigmento de la tierra es estable, duradero, y además nos ha acompañado durante todo la historia y todo lugar. Desde Egipto hasta el renacimiento y la actualidad. Ese para mí, es el color de la ilustración donde al final lo que hacemos es comunicar.

Y después de tener el color adecuado vamos a ver qué tal queda sobre fondos que ya tengo ganas de verlo en un uso real.
 Fase 5. Prueba sobre soportes
Con la tipografía ya elegida y todos los detalles definidos, me interesa ver como queda sobre diferentes soportes como por ejemplo fondos claros, fondos oscuros, y fondo de imagen. Esto me va a dar información para saber si mi diseño es versatil o me va a presentar algún problema que hasta ahora no haya visto. 
Lo primero a probar es una camiseta. Blanca y Negra.

Prueba simulación camiseta
Lo siguiente es probar con una imágen de fondo.
Prueba de logo sobre imagen


¡Y esto es todo por hoy! si te ha gustado no olvides compartir para que más personas lo vean, quizás le quites un dolor de cabeza a alguien. Comentadme lo que querais o preguntad si veis que algo no se explicó en su justa medida. 

Martes 22 de marzo de 2016

bq Aquaris M10 Ubuntu Edition, fechas confirmadas

El pasado 22 de febrero se presentó la bq Aquaris M10 Ubuntu Edition que como sabes es la  primera tablet...

La entrada bq Aquaris M10 Ubuntu Edition, fechas confirmadas aparece primero en Nosinmiubuntu | Ubuntu en concreto, GNU/Linux en general.

Domingo 20 de marzo de 2016

Liher Sanchez

Liher Sanchez
El blog de Liher

La realidad virtual, por fin, a la vuelta de la esquina

 

Después de pasar tiempo esperando lo que parecía su inminente llegada, la realidad virtual está  por fin al caer para cambiar nuestra experiencia de juego. Las gafas que nos trasladarán a otra realidad imaginaria dejarán pronto de ser un elemento de nuestra imaginación o de formar parte del atrezzo de películas como Existenz.

El último paso firme por la apuesta de este nuevo concepto de juego lo ha dado Sony con la presentación de PlayStation VR, las gafas de realidad virtual que funcionarán y dependerán de la PS4. La firma japonesa ha prometido un precio de lanzamiento de 399€, lo que indica que su punto de mira es el público masivo en comparación de otras gafas más caras como la Oculus Rift , que llegará en marzo y que se venderá por unos 750€ y la HTC Vive, las gafas de realidad virtual de gama más alta cuyo precio se calcula casi en los 900€.

Las gafas de Sony se esperan para el próximo mes de octubre y, por el momento, la marca nipona ha prometido unos 50 juegos compatibles para finales del 2016, bastantes menos que los que tendrán sus competidoras de gama alta que ofrecerán un catálogo mayor de juegos de PC.

La llegada de las gafas de realidad virtual conllevará un cambio necesario en el concepto y diseño de los juegos. En este sentido, podremos ver cómo se producen adaptaciones de muchos tipos de aventuras gráficas para satisfacer la nueva demanda que llega con la realidad virtual, en la que se busca una mayor inmersión en la experiencia de juego.

De los juegos de disparos en primera persona, pasaremos  a ser un personaje dentro de la historia, a hablar con los otros protagonistas o a interactuar con los objetos del escenario. Como podemos ver en el juego London Heist Getaway, nos convertiremos en atracadores cuyo cometido es salir con vida de la fechoría.

 

De poder interactuar con el crupier en la ruleta en vivo de algunos casinos online pasaremos a poder interactuar en los casinos de realidad virtual donde jugar, directamente, manipulando las máquinas de juego que llenan el espacio.

 

Algunos juegos se adaptarán a la realidad virtual ofreciendo una versión más realista de sí mismos. Con el juego Rock Band VR para las gafas Oculus, no habrá que imaginarse que uno es una rock star porque se podrá vivir la experiencia de serlo directamente encima del escenario.

 

Con la llegada de PS VR de Sony, el público mayoritario podrá tener acceso a este nuevo paso en la evolución de los videojuegos.  Pero seríamos ingenuos si pensásemos que las gafas de realidad virtual se quedarán solo en el ámbito del ocio.

Gracias a la realidad virtual, las marcas podrán ofrecer diferentes experiencias de inmersión antes de decidirnos por la compra de un producto, como poder ver detalladamente el interior de un coche o poder realizar una visita virtual antes de reservar una habitación de hotel.

Las compañías son conscientes del filón que se les presenta con la llegada de la realidad virtual y, por eso, no es de extrañar que las grandes tecnológicas ya estén invirtiendo en el desarrollo de negocios relacionados con este ámbito. Apple ya ha fichado a expertos en la materia para el desarrollo de sus propias gafas y Alphabet (Google) tiene su propio departamento para el desarrollo de unas gafas que funcionen con móviles Android.

Todos se apuntan a esta nueva realidad que cambiará nuestra forma de interactuar con nuestro alrededor. La última en anunciar que quiere formar parte del cambio ha sido Sony con sus gafas pro más económicas. Aunque si los 399€ que cuestan sigue pareciéndote caro, hay oferta para todos los bolsillos incluidas gafas de realidad virtual por menos de 50€.

 

Sábado 19 de marzo de 2016

Juanjo Amor

Juanjo Amor
DrAmor's Blog

¡Cifremos la web!

Qué es Let’s Encrypt

Es bien sabido que conviene cifrar siempre que podamos, y la web no lo es menos. De hecho, hace tiempo que Google fomenta el uso de web cifrada amenazando con penalizar aquellas que no lo estén.

El caso es que, para tener una web cifrada, tenemos dos problemas: por un lado, comprar un certificado a una entidad certificadora reconocida, y por otro, renovarlo periódicamente (lo que suele tener un coste también). Desde hace tiempo, iniciativas como CaCert, intentaron crear una autoridad certificadora libre de costes para sus usuarios y gestionada por la comunidad, de la que, pese a ser yo mismo uno de sus notarios, tengo que decir que su éxito ha sido siempre escaso, entre otras razones porque lleva ya bastantes años con nosotros y aún no es reconocida por la mayoría de los navegadores.

Por otro lado, la renovación tiene otro problema: hay que estar pendiente de ello. Para resolver ambos problemas, ha surgido una iniciativa, llamada Let’s Encrypt.

Let's Encrypt

Lo primero que vemos es que la reconocen todos los navegadores. El coste de conseguir esto debe estar cubierto por la multitud de sponsors que tiene el proyecto.

En segundo lugar, utiliza un desafío, llamado ACME, para verificar que la web que queremos cifrar es la dueña del dominio a usar (por ejemplo, https://dramor.net/). Con esta verificación, se pueden emitir sin problemas, certificados sin coste (al ser generados automáticamente), siempre que no necesitemos otras características como la validación de identidad.

Veremos que con este proyecto, se pueden conseguir certificados de sitio web de forma bastante sencilla. Por ejemplo, veamos cómo se resuelve para Nginx.

Implementación en los sitios de DrAmor.net

Antes de nada, decir que no voy a dar la configuración completa de nginx, entendiendo que el lector sabrá de lo que hablo, o podrá ayudarse de los tutoriales mencionados en este artículo.

En general, lo que veremos nos vale en cualquier Linux o Unix que pueda ejecutar git, python y nginx. Lo primero que haremos es bajarnos el repositorio de Let’s Encrypt:

$ git clone https://github.com/letsencrypt/letsencrypt

Este repositorio trae plugins para varios servidores web, pero como Nginx no está aun bien soportado, debemos usar el plugin webroot.

Hemos seguido la documentación oficial y el tutorial de Digital Ocean para hacernos una idea, aunque los pasos seguidos fueron, en primer lugar crear un fichero de configuración llamado /etc/letsencrypt/letsencrypt-dramor.net.ini:

rsa-key-size = 4096

email = Direccion-email-valida@gmail.com

webroot-map = {"dramor.net,www.dramor.net":"/var/www/dramor.net", "blog.dramor.net,www.blog.dramor.net":"/var/www/dramor_blog", "home.dramor.net":"/var/www/dramor_home"}

Por supuesto, el e-mail debe ser correcto. Lo oculto con el ánimo de evitar un poco el spam, claro. Y el webroot-map no es más que un formato json donde especifica los dominios a firmar, junto con la carpeta raíz de cada sitio, que debe incluir una subcarpeta publicada por nginx, para poder ejecutar el desafío ACME.

La carpeta a publicar en nginx se debe llamar .well-known. Por ejemplo, la podemos publicar en los sitios virtuales nginx con:

location ~ /.well-known {
    allow all;
}

Una vez configurado nginx, ya podemos generar los certificados:

$ cd letsencrypt

$ sudo ./letsencrypt-auto certonly -a webroot --renew-by-default --config /etc/letsencrypt/letsencrypt-dramor.net.ini
Checking for new version...
Requesting root privileges to run letsencrypt...
   sudo /home/jjamor/.local/share/letsencrypt/bin/letsencrypt certonly -a webroot --renew-by-default --config /etc/letsencrypt/letsencrypt-dramor.net.ini

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/dramor.net/fullchain.pem. Your cert will
   expire on 2016-06-16. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

La primera vez creará un virtualenv de la versión de Python requerida, y actualizará algunos paquetes. Una vez generados los certificados, se instalan en: /etc/letsencrypt/live/dramor.net. Si dio algún error, debemos revisar que esté accesible .well-known en los sitios virtuales de nginx, y que los DNS del dominio deseado apunten correctamente al servidor web, entre otras cosas. Los mensajes de error siempre son lo suficientemente descriptivos como para no requerir más explicación. Por ejemplo, nos puede avisar de que algún nombre DNS del dominio a asegurar no resuelve correctamente el registro A o CNAME, o no apunta a nuestro servidor.

Usar los certificados en Nginx ya es cosa de usar las líneas de configuración de nginx similares a:

ssl_certificate /etc/letsencrypt/live/dramor.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dramor.net/privkey.pem;

Renovación automática

Los certificados así generados tienen una vigencia de solo tres meses. Pero renovarlos consiste simplemente en volver a ejecutar el desafío ACME.

Para ello, solo hay que llamar a letsencrypt-auto con otro parámetro:

$ ./letsencrypt-auto renew

Podemos hacer un script a ejecutar periódicamente (por ejemplo, un cron semanal), que realice esta acción y a continuación ejecute un reload de nginx. De este modo, podemos olvidarnos de las renovaciones: tendrán lugar cuando hagan falta.

Conviene probar todos los scripts antes de automatizarlo con el cron. Por ejemplo, si nada más generar los certificados intentamos renovarlos:

$ ./letsencrypt-auto renew
Checking for new version...
Requesting root privileges to run letsencrypt...
   sudo /home/jjamor/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/dramor.net.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/dramor.net/fullchain.pem (skipped)
No renewals were attempted.

Podemos forzar la renovación para verificar que funciona, con:

$ ./letsencrypt-auto renew --force-renewal

Por último, indicar que si vamos a hacer muchas pruebas, mejor generemos los certificados con la opción staging, para que que se generen certificados no válidos. Si hacemos muchas pruebas seguidas, alcanzaremos fácilmente el límite diario y no podremos generar más hasta el día siguiente.

Si hemos hecho todo correctamente, podremos navegar por el sitio web con cifrado; y si queremos, podemos comprobar la calidad del mismo aquí: SSLLabs. Conseguir una buena puntuación ya es cosa de seguir determinadas buenas prácticas con el servidor web, que no cubriré aquí.

Martes 15 de marzo de 2016

Liher Sanchez

Liher Sanchez
El blog de Liher

Cuales son los mejores moviles chinos

Ya llevo un mes y medio con mi nuevo Xiaomi Redmi Note 3 y sigo estando muy contento con el. Desde hace tiempo hablo con amigos y conocidos acerca de los móviles chinos y muchos de ellos todavía son muy reacios a comprar un terminal de esta procedencia, y la verdad es que no se la razón.

Si que es verdad es hay móviles chinos que son malos, y muchos, pero también los hay muy buenos, puedo dar fe de ello. No me considero con fanático de los móviles y no estoy muy al día pero que me he informado un poco sobre los móviles chinos y creo que tener algo de base para emitir una opinión medianamente valida, de hecho cuando me propuse adquirir mi actual teléfono estuve leyendo bastante sobre las distintas marcas.

Después de todo lo que leí en Internet me quede con una seria de marcas que son una referencia en cuanto a móviles chinos se refiere, estas marcas son:

  • Xiaomi
  • Meizu
  • Huawei

Por supuesto que hay muchas mas marcas que son muy buenas, pero a mi entender las tres que he citado son una garantía de calidad, ademas las tres tienes móviles que relación calidad/precio son de lo mejorcito que puedes encontrar. Ademas, si te mueves un poco por paginas del sector como Andro4all, donde tienen muy buenas reviews de terminales, veras que esas marcas gozan de prestigio. Repito que hay mas marcas de mucha calidad, no quiero que nadie piense que porque no las he citado no piense así, pero yo me decanto por esas. Pongo un ejemplo, Apple hace terminales de mucha calidad pero yo no compraría un Iphone, y eso no quiere decir que yo piense que son malos, pero no compraría uno ya que los precios que tienen me parecen tremendamente inflados y no me va el secretismo con respecto sus especificaciones.

 

moviles-chinos-son-rentables-L-Mq8kC1

 

Saber cuales son los mejores móviles chinos es bastante complicado, hay que tener en cuenta lo que un usuario se quiere o puede gastar en un terminal. Si dispones de 300 euros puedes tener un Xiaomi Mi5, que es un autentico pepinaco de móvil, pero no todos se quieren gastar ese dinero. Sin embargo tienes un Meizu M2 Note por unos 130/140 euros, la relación calidad precio esta muy muy bien. Hay muchísimos artículos y paginas que hablan y mucho sobre estos terminales y que están mas especializados en el tema, os dejo un enlace a un articulo que me pareció interesante, hablan sobre los mejores moviles chinos baratos y habla de varias marcas, me parece un muy buen punto de partida.

Hay muchísima información en Internet y es obvio que el hecho de tener tiendas en las que podamos “palpar” estos teléfonos antes de comprarlos puede empujarnos a dar el salto. Desde luego que yo estoy muy contento después de haber cambiado, por ahora lo único que me queda por comprobar es la durabilidad del teléfono Xiaomi que tengo, pero si os puedo asegurar una cosa, es duro. Yo soy muy torpe y se me ha caído en varias ocasiones de la mano y no tiene ni un rasguño ni se le ha roto nada.

Por supuesto que si hacéis como yo hice una vez que compre un móvil chino con apariencia estética al Iphone 4 por 22 euros en una tienda china de Internet no podéis esperar gran cosa, pero hay que tener en cuenta una serie de cosas:

  • Era un teléfono con dual sim
  • Tenia cámara de fotos
  • Tenia radio y televisión analógica
  • Admitía tarjeta microsd
  • Venia con dos baterías

Y funcionaba, se lo preste a un familiar y se rompió, pero iba bien. Vete aquí a una tienda y dile que quieres un móvil por 22 con cámara de fotos. Esto no quiere decir que fuese un móvil bueno, pero por ese precio ¿que puedes pedir?

Un saludo.

Miércoles 09 de marzo de 2016

MD5sum: comprueba la integridad de una ISO

Cuando descargas una ISO, por ejemplo de tu distribución favorita o de una ROM de Android, antes de  instalarla en...

La entrada MD5sum: comprueba la integridad de una ISO aparece primero en Nosinmiubuntu | Ubuntu en concreto, GNU/Linux en general.

Domingo 06 de marzo de 2016

Curso: Desarrollo en HTML5, CSS y Javascript de Apps Web, Android e iOS

Ya hemos hablado en la web acerca de otros cursos gratuitos e interesantes que podían ayudarte a ampliar tu formación...

La entrada Curso: Desarrollo en HTML5, CSS y Javascript de Apps Web, Android e iOS aparece primero en Nosinmiubuntu | Ubuntu en concreto, GNU/Linux en general.

Sábado 05 de marzo de 2016

Alvaro del Castillo

Alvaro del Castillo
Entorno de acs

Configuración de WordPress

Después de varios días por fin saco tiempo para continuar la entrada del otro día donde os comentaba las bondades de WordPress. Hoy voy a daros algunos consejos sobre como configurarlo:

1. Estructura Permalink

Lo primero que debes cambiar es la estructura de enlaces permanentes. Se encuentran en Configuración → Enlaces permanentes. El enlace permanente por defecto es <postid>, pero yo prefiero utilizar el nombre de la entrada:

/%postname%/

Permalinks

2. ¿SSL o no SSL?

En 2014 Google anunció que las webs corriendo bajo https tendrían mejor valoración de cara al posicionamiento por este motivo muchas web han cambiado a SSL. Todo depende de nuestro presupuesto, los SSL cuestan $$$.

3. ¿WWW vs no-WWW?

Aquí es cuestión de gustos, si quieres que tu blog aparezca en el navegador como como www.example.com o simplemente example.com. Asegúrate de que en Configuración → General, la versión que deseas aparece correctamente.

4. Optimiza las descripciones

Los webmaster suelen centrarse en los títulos pero nunca hay que dejar de lado las descripciones. La descripción muestra una parte de información muy importante en los resultados de búsqueda y podemos incluir en ella las palabras clave (keywords) que queremos resaltar.

5. Limpiar el código

Reduce al mínimo posible los Javascript y CSS que pueda tener tu plantilla. Google valora la rapidez de carga de tu web, de hecho hay un test específico para ello que mide tanto la versión normal como la móvil (responsive):

Test de velocidad de carga de Google

6. SEO y contenido duplicado

Debes huir siempre del contenido duplicado ya que es una de las cosas que más penalizan a la hora de posicionar tu blog. Google tiene avanzados algoritmos que analizan el texto (densidad keywords, frases, párrafos, incluso el conjunto!) para ver si son copiados de otros existentes.

7. Encabezamientos (headers)

Aunque cada vez tienen menor peso en el SEO aún sigue siendo una buena idea poner algunos textos con encabezamientos, por ejemplo el de mayor tamaño <h1> para el nombre de la entrada. Puedes poner también algún <h2> y <h3> para slogan o títulos secundarios.

 

Lunes 08 de febrero de 2016

Alvaro del Castillo

Alvaro del Castillo
Entorno de acs

WordPress SEO

Con la invención de Internet y el marketing digital el alcance de la optimización de motores de búsqueda (SEO) se ha convertido en uno de los métodos preferidos de promoción web. Por este motivo en la entrada de hoy quiero hablaros de como utilizar el software de blogs más conocido del mundo (WordPress) para mejorar el SEO de vuestras webs.

SEO, en términos generales se denomina como la optimización de motores de búsqueda. A diario millones de personas utilizan los buscadores para acceder a la información que necesitan. Aparecer en las primeras posiciones de las palabras clave (keywords) es imprescindible para el éxito de nuestro proyecto en Internet. Por este motivo la mayoría de los webmasters han optado por la promoción basada en SEO para poder llegar a su público objetivo.

Con el paso de los años (incluso meses) las técnicas de optimización en buscadores se actualizan por lo que hay que estar atentos y en constante evolución ante los cambios del algoritmo de Google.

Recientemente la empresa donde alojo ACS (podeis ver su banner al pie del blog) ha lanzado un VPS específico para el SEO basado en WordPress.

¿Y por qué han elegido WordPress?

WordPress es uno de los mejores sistemas de gestión de contenido cuando se trata de SEO, teniendo en cuenta que casi una cuarta parte de las webs de internet están hechas con este CMS tantos webmasters no han podido equivocarse!.

Ahora al grano, lo que proponen con este VPS SEO es poder levantar en pocos minutos hasta 4 hosting WordPress cada uno con una dirección IP clase C propia (IPs españolas).

WordPress es un software muy bien optimizado y permite que cada página sea indexada rapidamente por los buscadores, por este motivo es muy sencillo crear un blog, añadir buen contenido y enlazar a nuestras webs para mejorar sus rankings.

Miércoles 03 de febrero de 2016

Alberto Ruiz

Alberto Ruiz
Silicon Island

This blog has moved to Wordpress.com

I've moved my blog, you can read my new posts here https://siliconislandblog.wordpress.com/

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Adapt: La forma sencilla de instalar paquetes de otra versión de Ubuntu

Adapt es un programa que permite instalar paquetes de otras versión de Ubuntu en la versión que tengamos instalada. Se pueden instalar paquetes de una Ubuntu 15.10 en una Ubuntu 14.04, por ejemplo. Todo esto funciona gracias a contenedores que descargan una versión de la distribución que se haya elegido.

Si queréis saber más sobre adapt os recomiendo leer la siguiente presentación realizada por Dustin Kirkland:

http://people.canonical.com/~kirkland/SCALE%2014x-%20adapt%20install%20anything.pdf

¿Por qué puede ser útil?

La mayoría de las personas tratan de usar las versiones estables de Ubuntu, las LTS. Esto significa que vamos a trabajar con versiones de los programas “estables”. Es decir, que si nuestra Ubuntu 14.04 viene con la versión 4.2 de LibreOffice, aunque salga la versión 5 de LibreOffice, las actualizaciones sólo nos van a permitir instalar la versión 4.2. A no ser que instalemos LibreOffice desde los backports, desde un ppa o bajando el instalador de LibreOffice, seguiremos siempre con la misma versión 4.2 de LibreOffice.

Esto es cierto para casi todos los paquetes de la distribución. Por ejemplo, Firefox sí se actualiza a la última versión que salga, pero LibreOffice no. Esto es así por motivos de seguridad.

Esta forma de gestionar las versiones se hace por estabilidad de la distribución, que es algo muy deseable en servidores, pero puede resultar fustrante para el usuario doméstico.

Si queremos estar siempre a la última, tenemos dos opciones, pasarnos a una distribución rolling-release (que instala siempre las últimas versiones de los programas) o intentamos instalar los paquetes por otros medios.

Ahora aparece adapt que instala un contenedor y dentro de ese contenedor descarga la versión que necesitemos de Ubuntu. Las aplicaciones se ejecutarán dentro de dicho contenedor.

Un contenedor es una forma de virtualización que simplemente le dice a los programas vais a estar confinados dentro de este espacio en el disco duro, vais a poder usar estas conexiones de red, podéis usar estos recursos de CPU y ¡tenéis prohibido salir de ahí! Evidentemente lo que vayamos a ejecutar dentro del contenedor tiene que estar adaptado a funcionar en ese entorno. Es fácil darse cuenta que un contenedor va a usar menos recursos que una máquina virtual de VirtualBox y podemos tener miles funcionando en un servidor.

Para saber más sobre la magia de los contenedores:

https://es.wikipedia.org/wiki/LXC

http://www.ubuntu.com/cloud/lxd

https://wiki.gentoo.org/wiki/LXD


Martes 19 de enero de 2016

Alvaro del Castillo

Alvaro del Castillo
Entorno de acs

Ruby On Rails

Según me han comentado Ruby es una especie de Perl simplificado con una buena orientación a objetos, algo como Python pero con una sintaxis más similar a la de Perl.

Supongo que lo primero será instalar en mi servidor Ruby On Rails que supongo que consistirá en el lenguaje de programación Ruby junto con un entorno de ejecución (librerías, ficheros de configuración, componentes …).

En Debian tenemos el paquete rails que diría tiene todo lo necesario: «Rails is a full-stack, open-source web framework in Ruby for writing real-world applications.». El paquete no parece estar disponible en Debian Sarge así que haremos un paquete desde la versión inestable de Debian (backport). Ha sido realmente sencillo: ruby y las librerías de Debian Sarge valen para rails. Sólo he tenido que instalar una versión más moderna de rake con respecto a la que viene en Debian Sarge (haciendo un backport) y tras ello, he podido hacer el paquete de rails para Debian Sarge.

Como me ocurre siempre, el vídeo en Totem no se ve. Utilicemos mplayer. El vídeo es un poco grande y ha sido grabado en un escritorio MacOS X. Para poderlo ver de forma cómoda voy a reproducirlo a pantalla completa en 1024×768.

acs@delito:~$ mplayer -fs rails_take2_with_sound.mov

Será esencial la tecla de pausa para irlo siguiendo paso a paso. Las primeras impresiones es que al crearte una aplicación rails por defecto, se crean un montón de ficheros que serán la infraestrutura de la aplicación y que son los que nos ahorrarán el escribir mucho código. De momento no nos ha tocado tener que escribir Ruby, pero seguro que algo nos tocará ;-)

Para crear el esqueleto básico de una aplicación rails:

acs@macito:~/devel/rails$ rails testRails
      create
      create  app/controllers
      create  app/helpers
...
acs@macito:~/devel/rails$ sloccount testRails/
...
WARNING! File /home/acs/devel/rails/testRails/script/plugin has unknown start: #!/usr/bin/env ruby
...
SLOC    Directory       SLOC-by-Language (Sorted)
36      config          ruby=36
7       test            ruby=7
4       app             ruby=4
4       public          ruby=4
...
Totals grouped by language (dominant language first):
ruby:            51 (100.00%)

Vemos que tampoco se generá mucho código Ruby de forma automática, algo que sin duda es bueno (aunque sloccount ha fallado al contar en varios directorios, pero tras mirar a mano, parecen sólo unas 30 líneas de Ruby).

Por defecto dentro de cada aplicación Rails existe el fichero “README” que cuenta lo básico sobre como poner en marcha la aplicación y una descripción de los contenidos. Y también se incluye un servidor de web que ejecuta la aplicación rails. Para iniciarlo basta con:

acs@macito:~/devel/rails$ testRails/script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2006-02-20 05:41:51] INFO  WEBrick 1.3.1
...

En el puerto 3000 de la máquina donde estamos ejecutando el servidor tenemos ya el servidor de rails funcionando. Pero aún no hemos hecho nada así que no hay gran cosa aún en él, salvo documentación de más pasos en el camino. En general da la impresión de que está todo rails muy trabajado para llevar de la mano al desarrollador durante todo el proceso.

Los siguientes pasos siguiendo la página web por defecto son los de crear la base de datos, configurarla en nuestra aplicación rails y utilizar el programa “script/generate” para generar los modelos y controladores de los datos en la base de datos, justo el proceso que se sigue durante el vídeo.

Sábado 16 de enero de 2016

Emiliano A. González Salgado

Emiliano A. González Salgado
El blog de Emi

Instalar dos versiones de LibreOffice en Fedora 23

Debido a un bug en LibreOffice Base 5.0, que resulta bastante molesto, he tenido que instalar dos versiones del mismo.

Uso Fedora 23 kde de 64 bits. En los repositorios sólo está LibreOffice 5.0. La versión 4 es para Fedora 22

Uno de los programas que me interesa es Base. El motivo es la gestión de dos BB.DD. de escritorio.

Las tengo preparadas desde hace tiempo en Access de MS-Oficie 2003, pero tengo ganas de desprenderme de Virtual-Box y la MV de Windows 7. Sólo lo utilizaba para estabas bases de datos.

Con LibreOffice 4 no tenía problemas con las BB.DD., pero con la versión 5.0 comenzaron a aparecer.

El primero, que no aceptaba los cambios en el tipo de fuentes ni en el resto de formatos en tablas, consultas y control de tablas de formularios. Tomaba la fuente del sistema, creo, y no había forma de cambiarla. Tenías que irte a Preferencias del sistema y en fuentes, variabas el tamaño, y veías si te gustaba el formulario a imprimir, si cabían todos los caracteres en sus casillas, etc. Vamos un lio.

El segundo, ya en la última versión (5.0.4.2) es con los controles tabla de los formularios. No se pueden editar. Imprimes y te salen unas letras gigantes en los encabezados de las columnas.

He probado en varios ordenadores, distintas distribuciones, e incluso en Windows 7 y 10.

El patrón siempre es el mismo, con LibreOffice 5.0 el bug se repite, con la versión 4 no.

Ambos errores están reportados en varias ocasiones, sin resultado hasta la fecha.

Total que quise probar instalando dos versiones: LibreOffice, instalación en paralelo.

Pero no había forma, lanzaba el comando y siempre daba error.

Total que con DNF desinstalé LibreOffice Base 5.0, descargué de la página de LibreOffice la versión 4.7, descomprimí todos los archivos en un directorio y, desde la línea de comandos, instalé lo mínimo indispensable: base, Writer y los paquetes de idiomas. Si me solicitaba algún paquete mas lo añadía al comando. (Writer es necesario para poder visualizar los formularios y los informes).

Otro cambio que hubo que realizar fue el de los iconos. Sustituir Breeze por Oxygen.

Lo “malo” es que la integración de escritorio de base no es la misma que la del resto de paquete. Fedora siempre ha mantenido la interfaz de LibreOffice igual que el resto del escritorio, sin desentonar. Con el instalador descargado de la página de LibreOffice, aunque instales el paquete de kde, nunca queda bien, los colores desentonan, el navegador de archivos es antiguo y no sigue el patrón de Dolphin, etc.

Otro problema que hay es que si tienes abierto base no se puede abrir Writer o Calc 5.0.

Pero hasta que se solucione el bug no habrá más remedio que hacerlo así. No tengo ganas de hacer una instalación de Fedora 22 en Virtual-Box para poder tener la versión 4.7

Parece que base es “el patito feo” de LibreOffice. Por lo que se ve en las notas de lanzamiento de las distintas versiones y lo que se dice en foros, blogs, redes sociales, etc. es que las novedades son mínimas y hay bug que se arrastran y tardan en arreglarse.

Un saludo,

Emiliano


Domingo 03 de enero de 2016

If we have seen further

If we have seen further it is by standing on the shoulders of giants.
You are very dearly missed, Ian. You were one of those giants.

Viernes 27 de noviembre de 2015

Pedro L. Lucas

Pedro L. Lucas
Cartas de Linux

Insertar o extraer archivos en un PDF

Muchas veces tengo que generar un archivo PDF a partir, por ejemplo, de un LibreOffice o de unos archivos en LaTEX.

El problema es que, o se es muy ordenado, o con el tiempo te puedes quedar con el PDF pero sin los archivos que lo generaron.

Sería práctico, por ejemplo, poder incluir los ficheros LaTEX dentro del PDF y extraerlos cuando fuese necesario.

Por eso he escrito los siguientes scripts:

Para insertar archivos en el PDF se puede usar el siguiente script que llamaremos “pdf-insert-file.sh”:

#!/bin/bash

_new_pdf=`echo "$1" | sed 's/pdf$//g' | sed 's/PDF$//g'`tar.pdf
cp "$1" "$_new_pdf"
echo >> "$_new_pdf"
shift
tar --to-stdout -cJ $* |  base64 | awk '{print "% tar:" $1}' >> "$_new_pdf"

Para extraer los archivos se usará el script “pdf-extract-file.sh”:

#!/bin/bash

grep -ae '^% tar:' "$1" | sed 's/% tar://g' | base64 -d  | tar -xJvf -

Por ejemplo, supongamos que se tiene el archivo texto.pdf y se quieren insertar los archivos texto.tex e imagen.png, escribiríamos en un terminal:

bash pdf-insert-file.sh texto.pdf texto.tex imagen.png

Se generará el archivo texto.tar.pdf. Se puede comprobar que tiene mayor tamaño que el texto.pdf original.

Como se puede ver primero se pone el nombre del PDF y a continuación el nombre de los archivos a insertar.

Para posteriormente poder extraerlos se usará:

bash pdf-extract-file.sh texto.tar.pdf

Con esto extraerá los archivos texto.tex e imagen.png.

¿Cómo funcionan los scripts?

La idea es sencilla. Los archivos PDF se pueden editar como archivos de texto y se les pueden añadir comentarios que deben comenzar con el símbolo %. En un archivo PDF toda línea que comience por % es ignorada.

Lo que hace el script pdf-insert-file es:

  • Se crea un archivo tar.xz con los archivos que se quieren incluir.
  • Se codifica en base64. Ya que las secuencias del archivo tar podrían estropear el PDF con sólo insertar un salto de línea.
  • A cada línea del resultado se le añade al principio la cadena “% tar:”, así se pueden distinguir los comentarios del PDF del los comentarios que se van a añadir con los contenidos.
  • Finalmente se incluyen al final del PDF los comentarios que se han generado con los contenidos.

Espero que os sea útil.