sábado, julio 08, 2017
Skype for linux y los tonos DTMF
Obviamente, sin eso no podés hablar con el 90% de las empresas que tienen un preatendedor (“para ventas, marque 1; para soporte, marque 2, …”), que es para lo que fundamentalmente lo utilizo.
Si eso anduvo siempre… ¿qué necesidad había de cambiar el código?
Sabemos que Skype viene cayendo desde hace rato, pero caer… tan bajo?
martes, julio 04, 2017
Post instalación Debian GNU/Linux 9 (Stretch)
Para continuar la secuencia de recomendaciones post-instalación que inició con un post de Tomás, es buen momento de llevar mi humilde sugerencia de paquetes para obtener un escritorio usable en esta última versión.
Haciendo un copy-paste del post previo, éste tiene dos destinatarios principales:
- para el que quiera tener una instalación de debian stretch (estable) usable, vale decir, con algunas aplicaciones más modernas que las que trae por defecto pero tratando de no salir demasiado de los repos oficiales;
- y para mí, para no perder tiempo haciendo memoria en el caso de tener que reinstalar el sistema.
- en primer lugar -y fundamentalmente- porque el explorador de archivos Nemo tiene árbol de directorios. Nautilus no lo tiene y eso lo hace inutilizable;
- en segundo lugar, porque el entorno es estéticamente agradable y razonablemente liviano;
- y finalmente, porque a diferencia de Mate, está hecho con GTK3 e integra adecuadamente la mayoría de las aplicaciones de escritorio.
Bueno, sin mas charla, vamos a lo que nos trae.
Paso 1
Esta instalación ocupará al menos 6 GB, por lo que tengan en cuenta cuanto desean dejar libre para los directorios de usuario y para el crecimiento/mantenimiento del sistema. Para comenzar, partimos de la instalación base de Debian Stretch. Para que se den una idea, hay que seguir la instalación tradicional y cuando presenta el uso que se dará (escritorio, servidor, etc) desmarcar todas las opciones y continuar normalmente.Paso 2
Una vez instalado y hecho el primer arranque, luego de iniciar sesión lo que suelo hacer al toque es deshabilitar la opción de instalación de paquetes recomendados, puesto que pocas veces son necesarios y además engordan sobremanera el espacio ocupado por el sistema. Para ello basta con ejecutar la línea siguiente para que las próximas instalaciones eviten instalarlos.echo "APT::Install-Recommends \"false\";" > \
/etc/apt/apt.conf.d/90-powerup-disable-recommends.conf
Paso 3
Luego, sólo si están detrás de un proxy, hay varias formas de configurarlo: puede ser globalmente mediante las variables de entornohttp_proxy y https_proxy o bien mediante la configuración de APT para aquellos casos donde dispongan de un servidor de caché como APT-Cacher. Por ejemplo:PROXY="http://proxy.miorganizacion.com.ar:8080/" export http_proxy=$PROXY export https_proxy=$PROXY echo "Acquire::http::Proxy \"$PROXY\";" > /etc/apt/apt.conf.d/90-powerup-proxy.conf
Paso 4
Verificar que están configurados los repositorios oficiales de la distribución. Por ahora omito backports, pero en un futuro será útil. Para ello, el archivo/etc/apt/sources.list debería listar, al menos, los siguientes:deb http://debian.unnoba.edu.ar/debian/ stretch main contrib non-free deb http://security.debian.org/debian-security/ stretch/updates main contrib non-free deb http://debian.unnoba.edu.ar/debian/ stretch-updates main contrib non-free deb http://deb.debian.org/debian/ stretch-backports main contrib non-freeAquí utilizo el mirror que cordialmente provee la UNNOBA pues gracias a la Asociación Redes de Interconexión Universitaria estamos a pocos saltos de distancia. Traten de no atosigarla de peticiones o utilicen cualquier otro de los mirrors listados oficialmente.
Paso 5
Agregar repositorios externos (no oficiales) que contienen software útil. Este paso es un tanto complejo pues a partir de Stretch es necesario incorporar las claves públicas para poder descargar software adicional. Además, algunas aplicaciones sólo están disponibles para arquitectura de 64 bits. Desde luego, tengan en cuenta que adicionar un repositorio no oficial implica confiar en lo que sus administradores publiquen allí.Paso 5.1. Paquetes requeridos para las operaciones posteriores
apt install apt-transport-https ca-certificates gnupg wget
Paso 5.2. Instalar las claves públicas de los repositorios
El nombre final indica qué aplicación contiene cada repositorio. Las claves deben alojarse en el directorio siguiente:cd /etc/apt/trusted.gpg.d/ wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | gpg --dearmor > google-chrome.gpg wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | gpg --dearmor > vscode.gpg wget -q "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xFC918B335044912E" -O- | gpg --dearmor > dropbox.gpg wget -q "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA87FF9DF48BF1C90" -O- | gpg --dearmor > spotify.gpg wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | gpg --dearmor > virtualbox.gpg
Paso 5.3. Definir los repositorios externos
Van todos en el directorio siguiente:cd /etc/apt/sources.list.d/ # software solo disponible para amd64 echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > google-chrome.list echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > vscode.list # software disponible para i386 y amd64 echo "deb [arch=i386,amd64] http://linux.dropbox.com/debian sid main" > dropbox.list echo "deb http://repository.spotify.com stable non-free" > spotify.list echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" > virtualbox.list
Paso 6
Clásico: actualizar la lista de paquetes. Utilizaremosapt en vez de apt-get sólo por cuestión de gusto. Ustedes utilicen el que prefieran.apt update
Paso 7
Instalar un entorno gráfico. Para la interfaz gráfica hay varios metapaquetes que se corresponden a cada entorno de escritorio: para Cinnamon instalaremostask-cinnamon-desktop; para KDE, instalen kde-plasma-desktop; para GNOME supongo que gnome-core alcanza (no lo sé con certeza); para XFCE instalen xfce4; para LXQT (lo que antes era LXDE) instalen lxqt; y para Mate el paquete mate-desktop-environment . Si alguno quedó afuera me avisan.Tengo entendido que para placas GPU AMD/ATI ya no es necesario ningún driver privativo, pues el driver open-source Radeon alcanza, pero eventualmente podría ser necesario para placas GPU nVidia, donde el paquete a instalar es
xserver-xorg-video-nvidia o alguno de los drivers que aparecen con el nombre nvidia-legacy. Si tienen un chipset Intel, con lo que viene por defecto suele alcanzar.Sobre el entorno gráfico, como comentaba al inicio del artículo, mi recomendación esta vez es utilizar Cinnamon, pero instalo Openbox también pues suele ser útil para casos de urgencia. Los demás componentes de nombre extraño son bibliotecas que evitan que Cinnamon arroje advertencias o aplicaciones que se prefieren antes de las que vendrían por defecto.
apt install xorg lightdm mesa-utils openbox \ xserver-xorg-input-all xserver-xorg-input-synaptics apt install task-cinnamon-desktop cinnamon-l10n \ desktop-base gir1.2-gtop-2.0 gir1.2-nmgtk-1.0 \ network-manager-gnome pulseaudio firefox-esr \ firefox-esr-l10n-es-ar thunderbird \ thunderbird-l10n-es-ar
Superpaso 8
Instalar paquetes desde los repositorios oficiales. Como en la línea anterior, cada paquete está enlazado a su descripción en el sitio de Debian.Paso 8.1. Controladores y servicios útiles
apt install acpi-support amd64-microcode cifs-utils \ dkms fail2ban intel-microcode ntfs-3g ssh \ unattended-upgrades uptimed
Paso 8.2. Herramientas útiles de línea de comando
apt install acpi alsa-utils aptitude buku bash-completion \ clamav curl deborphan dialog ffmpeg file fish flac \ hexedit htop iotop imagemagick iptraf-ng irqbalance \ jmtpfs less lftp livestreamer manpages markdown mc \ mlocate nano netcat-openbsd nethogs nmap p7zip-full \ pv pxz qemu-kvm screen smbclient sshfs tcpdump \ trickle tshark unrar unzip vbindiff w3m wavemon \ wget youtube-dl zip
Paso 8.3. Lenguajes de programación, herramientas y documentación
apt install build-essential git git-doc git-man idle3 \ ipython3 pylint3 python3 python3-doc sqlite3 \ sqlite3-doc
Paso 8.4. Programas gráficos para fines variados (editores, reproductores, etc)
apt install default-jre filezilla fslint gufw hardinfo \ keepassx mpv pavucontrol sound-theme-freedesktop \ sqlitebrowser synaptic vlc wireshark-gtk \ xdg-user-dirs-gtk xterm apt install baobab blueman brasero cheese \ gnome-font-viewer gnome-system-monitor gnote \ gvfs-backends gvfs-fuse nemo-fileroller rhythmbox \ transmission-gtk audacious file-roller gedit-plugins \ ghex gimp gksu gucharmap leafpad meld sound-juicer
Paso 8.5. Soporte y drivers para impresoras
apt install cups cups-browsed foomatic-db-compressed-ppds \ foomatic-db-engine openprinting-ppds \ printer-driver-cups-pdf system-config-printer \ system-config-printer-udev
Paso 8.6. Iconos y temas de escritorio
apt install arc-theme breeze-icon-theme \ clearlooks-phenix-theme faba-icon-theme \ gnome-colors lxde-icon-theme mate-icon-theme \ mate-icon-theme-faenza tango-icon-theme
Paso 8.7. Versión más moderna del kernel (4.17) y encabezados
Reemplacenamd64 por i386 si su arquitectura es de 32 bits. La primera línea instala la versión de kernel de Estable. La segunda línea (que dice stretch-backports) instala adicionalmente una versión más moderna.apt install firmware-linux linux-headers-amd64 \ linux-image-amd64 linux-doc apt -t stretch-backports install firmware-linux \ linux-headers-amd64 linux-image-amd64 \ linux-doc
Paso 8.8. Versión más moderna de la suite LibreOffice (6.1)
apt -t stretch-backports install libreoffice \ libreoffice-help-es libreoffice-l10n-es \ libreoffice-gtk3 hunspell-es libreoffice-style-breeze libreoffice-style-sifr \ libreoffice-style-tango libreoffice-gnome \ libreoffice-style-colibre \ libreoffice-style-elementary
Paso 8.9. Firefox más moderno
Omitido pues la que viene por defecto (ERS 52) es una versión bastante moderna.Paso 8.10. Tipografías
apt install fonts-cantarell fonts-croscore \ fonts-crosextra-caladea fonts-crosextra-carlito \ fonts-dejavu fonts-dkg-handwriting fonts-awesome \ fonts-humor-sans fonts-liberation fonts-noto \ fonts-oxygen fonts-roboto
Paso 9
Instalar paquetes desde repositorios externos.apt install dropbox spotify-client virtualbox-5.2Las aplicaciones siguientes sólo están disponibles en versión de 64 bits, por lo que si su arquitectura es 32... lo siento...
apt install code google-chrome-stableCon eso queda listo prácticamente todo lo que proviene por fuera de Debian. Lo único queda pendiente es PyCharm, que como no tiene paquete disponible hay que bajarse el comprimido y alojarlo donde crean conveniente.
Paso 10
Listo, con eso les queda un sistema operativo casi perfecto.Todo lo documentado aquí está disponible en un sencillo script que instala Cinnamon y ejecuta todos estos pasos de un saque. Lo dejo disponible por si les sirve: stretch-powerup.sh (20180802)
Algunos consejos adicionales:
- Para iniciar un programa rápidamente, usen la tecla Win y escriban parte del nombre. Alt+F2 también funciona, pero no tiene autocompletado.
- La fuente Noto tiene un montón de variantes para distintos idiomas y por ello los cuadros de dialogo de selección de fuente se hacen eternos. Como usualmente uno sólo utiliza los alfabetos latinos, es posible desactivar aquellas fuentes que no se utilizan y reducir el listado. Para ello, descarguen este archivo 95-powerup-restrict-noto.conf y guardenlo en el directorio
/etc/fonts/conf.d/ - Para tener la tipografía clásica en las terminales Fx, ejecuten
dpkg-reconfigure console-setupy en “Tipo de letra para la consola” seleccionen “No cambie la tipografía del arranque”.
martes, junio 27, 2017
Benchmark day 3: Kingston HyperX SSD 240GB (SHSS37A240G)
Para dar una definición en una línea, un Solid-State Drive o SSD es análogo a un "disco rígido" que almacena los datos persistentemente en memoria Flash, en vez de hacerlo sobre un dispositivo de rotación. La principal ventaja es una gran velocidad de acceso, además del hecho de no ser un dispositivo de base mecánica. No es la única diferencia contra un HDD, pero sí la más notable. Los SSD no son tecnología demasiado nueva, pero alrededor de 2008 / 2009 hubo un boom y desde allí comenzaron a verse más seguido en las casas de venta de hardware.
Entre las opciones del mercado, me quedé con un modelo Kingston Hyperx Savage SSD 240GB SATA 3 que hasta la fecha (año y medio de uso) se ha portado excelentemente bien (aquí las reviews). Y ahora que los tiempos no apremian tanto, puedo aprovechar para publicar el benchmark que hice en su momento, continuando con la serie de benchmarks de discos que venía realizando años atrás (ver parte I y parte II).
Antes de realizar los diagnósticos, debo mencionar que si van a hacer un análisis de atributos SMART en discos SSD de Kingston, conviene actualizar la base de unidades (drivedb.h) del paquete smartmontools mediante el comando
update-smart-drivedb, pues Kingston ha variado la semántica de los atributos SMART para ciertas unidades SSD (como se detallan en este documento). Versiones antiguas de smartmontools utilizan los nombres genéricos para ciertos atributos y esto puede dar lugar a confusiones, tales como creer que una SSD está por fallar cuando no es así.Siguen las especificaciones y más abajo los resultados por si a alguno le interesa. He remarcado los datos más relevantes.
Kingston HyperX Savage SSD 240GB
Modelo: KINGSTON SHSS37A240G
Capacidad: 240 GB
Interfaz: SATA III
Caché: 8 MB
Tipo: Disco de estado sólido
Tamaño de sector: 512 físico, 512 lógico
ATA device, with non-removable media
Model Number: KINGSTON SHSS37A240G
Serial Number: [REDACTED]
Firmware Revision: SAFM00.r
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
Likely used: 9
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 468862128
Logical Sector size: 512 bytes
Physical Sector size: 512 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 228936 MBytes
device size with M = 1000*1000: 240057 MBytes (240 GB)
cache/buffer size = 10104 KBytes
Form Factor: 2.5 inch
Nominal Media Rotation Rate: Solid State Device
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
SET_MAX security extension
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* Disable Data Transfer After Error Detection
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* unknown 76[13]
* unknown 76[14]
* unknown 76[15]
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* DOWNLOAD MICROCODE DMA command
* SET MAX SETPASSWORD/UNLOCK DMA commands
* WRITE BUFFER DMA command
* READ BUFFER DMA command
* DEVICE CONFIGURATION SET/IDENTIFY DMA commands
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
supported: enhanced erase
2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
Checksum: correct
# smartctl -x /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.6.0-0.bpo.1-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Phison Driven SSDs
Device Model: KINGSTON SHSS37A240G
Serial Number: [REDACTED]
Firmware Version: SAFM00.r
User Capacity: 240.057.409.536 bytes [240 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2 (minor revision not indicated)
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Wed Jul 6 22:13:10 2016 ART
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 30) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 2) minutes.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 050 Pre-fail Always - 0
2 Not_In_Use 0x0005 100 100 050 Pre-fail Offline - 0
3 Not_In_Use 0x0007 100 100 050 Pre-fail Always - 0
5 Retired_Block_Count 0x0013 100 100 050 Pre-fail Always - 0
7 Not_In_Use 0x000b 100 100 050 Pre-fail Always - 0
8 Not_In_Use 0x0005 100 100 050 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 100 100 000 Old_age Always - 2488
12 Power_Cycle_Count 0x0012 100 100 000 Old_age Always - 30
168 SATA_Phy_Error_Count 0x0012 100 100 000 Old_age Always - 0
170 Bad_Blk_Ct_Erl/Lat 0x0003 100 100 010 Pre-fail Always - 0/556
173 MaxAvgErase_Ct 0x0012 100 100 000 Old_age Always - 40 (Average 3)
175 Not_In_Use 0x0013 100 100 050 Pre-fail Always - 0
183 Unknown_Attribute 0x0012 100 100 100 Old_age Always FAILING_NOW 2621443
187 Reported_Uncorrect 0x0012 100 100 000 Old_age Always - 0
192 Unsafe_Shutdown_Count 0x0012 100 100 000 Old_age Always - 19
194 Temperature_Celsius 0x0023 076 060 030 Pre-fail Always - 24 (Min/Max 19/40)
196 Not_In_Use 0x0002 100 100 010 Old_age Always - 0
197 Not_In_Use 0x0032 100 100 000 Old_age Always - 0
199 CRC_Error_Count 0x000b 100 100 050 Pre-fail Always - 0
218 CRC_Error_Count 0x000b 100 100 050 Pre-fail Always - 0
231 SSD_Life_Left 0x0013 100 100 000 Pre-fail Always - 100
233 Flash_Writes_GiB 0x000b 100 100 000 Pre-fail Always - 570
240 Not_In_Use 0x0013 100 100 000 Pre-fail Always - 0
241 Lifetime_Writes_GiB 0x0012 100 100 000 Old_age Always - 538
242 Lifetime_Reads_GiB 0x0012 100 100 000 Old_age Always - 186
244 Average_Erase_Count 0x0002 100 100 000 Old_age Always - 3
245 Max_Erase_Count 0x0002 100 100 000 Old_age Always - 40
246 Total_Erase_Count 0x0012 100 100 000 Old_age Always - 239616
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 2481 -
# 2 Extended offline Completed without error 00% 529 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
El atributo 183, indicado como FAILING NOW no ha de ser estimado pues según el documento de Kingston no corresponde a un atributo relevante.# hdparm -tT /dev/sdb
/dev/sdb: Timing cached reads: 25580 MB in 2.00 seconds = 12801.73 MB/sec Timing buffered disk reads: 1580 MB in 3.00 seconds = 526.61 MB/sec$ dd if=/dev/zero of=archivo.img count=1K bs=1M conv=fdatasync
1024+0 registros leídos 1024+0 registros escritos 1073741824 bytes (1,1 GB) copiados, 2,35045 s, 457 MB/sLas pruebas de lectura con hdparm y con dd. Cuanto más velocidad indiquen, mejor, por supuesto.
palimpsest – Prueba de rendimiento de solo lectura (clic para agrandar)
Este gráfico representa la velocidad de lectura y el tiempo de acceso en distintas partes del disco. La línea azul representa la velocidad de lectura (asociada a la escala izquierda), mientras que los puntos verdes representan los tiempos de acceso en distintas ubicaciones del disco (asociada a la escala derecha).
Como puede verse, al ser un disco SSD (no rotativo), la velocidad de lectura es casi constante en todo el espacio, y se aprecia la diferencia notable entre los discos tradicionales. Los tiempos de acceso de la SSD rondan entre 0.1 y 0.2 ms (SSD) contra 20.1 ms (HDD), velocidad media de lectura de 554 MB/s contra 118 MB/s de un disco rígido tradicional.
Aquí dejo una comparativa de velocidad entre un disco rotativo y la SSD (clic para agrandar). Presten especial atención a las unidades.
Gráficos originales: parte I, parte II y parte III.
$ bonnie++
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hc-maurom 15864M 1514 99 521685 34 259973 24 +++++ +++ 645581 28 +++++ +++
Latency 10308us 246ms 296ms 2681us 3144us 2510us
Version 1.97 ------Sequential Create------ --------Random Create--------
hc-maurom -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency 50us 407us 1048us 667us 5us 442us
Los resultados de bonnie++ son bastante completos. Además de hacer mediciones de entrada/salida sobre el disco, mide también operaciones sobre el sistema de archivos (que por ahora no reviso). Lo relevante son las tasas de escritura y lectura en bloques, la cantidad de búsquedas por segundo (más es mejor) y la latencia de las mismas (menos es mejor). Al comparar contra otras mediciones, recuerden que las unidades en este último reporte son ms (milisegundos) y µs (microsegundos)!
Todas las pruebas fueron realizadas sobre una partición ext4.
martes, marzo 07, 2017
Recuperar el icono desaparecido de Dropbox en Linux
Recientemente he tenido algunos choques con Dropbox en Linux. El más incómodo es que en los escritorios modernos de Linux, léase KDE Plasma, Cinnamon, XFCE y otros, no aparece el ícono de Dropbox en el panel de notificaciones, aunque sí funciona la sincronización.
La resolución es bastante sencilla. Tan sencilla, de hecho, que es extraño que no la hayan agregado en el paquete oficial. Según Web Upd8, hay que hacer lo siguiente:
- Renombrar el archivo de autoinicio de Dropbox, ubicado en
~/.config/autostart/y cambiar la línea donde diceExecporExec=dbus-launch dropbox start - Copiar el archivo recién editado a
~/.local/share/applications/ - Desactivar el inicio automático de Dropbox, usando el comando
dropbox autostart npara que no se vuelva a generar el archivo incorrecto. No se preocupen, Dropbox iniciará automáticamente de todas formas.
cd ~/.config/autostart/
sed -i 's/^Exec=.*/Exec=dbus-launch dropbox start/' \
dropbox.desktop
cp dropbox.desktop start-dropbox.desktop
mkdir -p ~/.local/share/applications/
mv dropbox.desktop ~/.local/share/applications/
dropbox autostart n
Y listo. Prueben cerrar y volver a iniciar la sesión, y con eso tendrán el clásico ícono indicador del estado de la sincronización.
martes, julio 12, 2016
WireGuard, una VPN rápida, moderna y (esperemos) segura
Desde su presentación hace unas semanas atrás le estoy siguiendo el hilo a la nueva implementación de túnel VPN denominada WireGuard que, básicamente, y copypasteando el marketing de su sitio web,
WireGuard es una VPN extremadamente sencilla, aunque rápida y moderna que utiliza técnicas de criptografía avanzadas. Apunta a ser más rápida, más simple, más reducida y más útil que IPSec, evitando a la vez los dolores de cabeza [de su implementación]. Además, busca ser considerablemente más performante que OpenVPN...
Los puntos fuertes de este software son:
- Sencillez y facilidad de uso: Busca ser tan fácil de configurar y desplegar como SSH. Una conexión VPN requiere el intercambio de claves públicas sencillas -tal como el intercambio de claves SSH- y todo lo demás se maneja en forma transparente por el software.
- Criptográficamente robusto: Utiliza criptografía moderna: Noise protocol framework y los algoritmos Curve25519, ChaCha20, Poly1305 (estos últimos de la mente de D. J. Bernstein), BLAKE2, SipHash24, HKDF, con decisiones conservadoras y razonables, y ha sido revisado por criptógrafos [aunque no sabemos quienes].
- Mínima superficie de ataque: Fue diseñado teniendo en mente la sencillez y la facilidad de implementación, siendo implementable fácilmente con pocas líneas de código, y fácilmente auditable por vulnerabilidades de seguridad.
- De alto rendimiento: Utiliza instrucciones criptográficas disponibles en los procesadores modernos y está implementado en el propio núcleo de Linux, con lo que permite armar una red segura manteniendo altas tasas de transferencia. Puede ser usado tanto en smartphones como en routers de backbone.
- Bien definido y estudiado: WireGuard es el resultado de un extenso proceso académico detallado y extenso, cuyo resultado es un documento de investigación técnica que define claramente el protocolo y las consideraciones que se tomaron en cuenta en cada decisión.
Más allá de la propaganda del sitio web, además de su pequeño tamaño (en líneas de código) y de estar implementado sobre UDP, lo más relevante de esta implementación es que corre enteramente en el kernel, evitando los cambios de contexto de las implementaciones tradicionales de VPN. WireGuard parece haber sido desarrollado inicialmente por una sola persona: Jason A. Donenfeld, y está licenciado como GPLv2. A él agradecemos, entonces, haberse tomado este tremendo trabajo.
Al dia de hoy es posible probarlo en Debian gracias al trabajo de Daniel Kahn Gillmor (dkg), quien se encargó de empaquetarlo muy responsablemente.
En principio se requiere un kernel Linux igual o mayor a 4.1, pero eso se consigue fácilmente desde backports:
echo "deb http://httpredir.debian.org/debian/ jessie-backports main" \
> /etc/apt/sources.list.d/jessie-backports.list
apt update
apt -t jessie-backports install linux-image-amd64 linux-headers-amd64
Luego de reiniciar con el kernel nuevo, descargar e instalar los paquetes wireguard-dkms y wireguard-tools desde el repositorio experimental. Esto instalará el código fuente del módulo y la aplicación de configuración. La infraestructura de compilación dkms se encarga de compilar el código a un módulo usable.
echo "deb http://httpredir.debian.org/debian/ experimental main" \
> /etc/apt/sources.list.d/experimental.list
apt update
apt install dkms
apt -t experimental install wireguard-dkms wireguard-tools
En caso de no disponer de una instalación de Debian a mano, hay otras opciones, como también está el último recurso de compilarlo a la vieja usanza.
Finalmente, una vez que está todo listo,
Para todo lo demás, los remito a la documentación en línea, y al paper que detalla el protocolo.
Vale decir que esto aún está en los principios de su desarrollo. No hay una versión estable y su implementación real aún no ha tenido análisis relevantes desde la comunidad de seguridad en redes, pero vale decir que suena prometedor. Desde luego, si están interesados en participar/desarrollarlo/probarlo/documentarlo, el grupo acepta nueva gente.
Actualización 08/02/2017: Jason ha publicado en el sitio web los videos y slides de sus últimas presentaciones, de las cuales recomiendo particularmente la de FOSDEM 2017: Next Generation Secure Kernel Network Tunnel como visión rápida del proyecto y actualización del estado del mismo.
martes, mayo 17, 2016
No cree una cuenta de usuario "user"
Leyendo Hacker News encuentro que en Windows 8.1, si creás una cuenta de usuario que contenga la cadena de texto user, el proceso taskhost.exe puede llegar a desbocarse y consumir CPU en forma desproporcionada.
¿El motivo? "This is a problem in the component DFPCommon.dl in Windows 8.1." ¿La solución? El título de este post.
Tan claro como eso. Ya lo habíamos hablado tiempo atrás. Debí haberlo imaginado.
viernes, febrero 19, 2016
Renombrando archivos con mc
Tendría que haberlo encontrado muchos años atrás!
PD: Shift+F6, no lo olvides.
jueves, diciembre 03, 2015
jueves, octubre 15, 2015
Post instalación Debian GNU/Linux 8 (Jessie)
En abril de este año salió una nueva versión de la rama estable de Debian, y para continuar la secuencia de recomendaciones post-instalación que inició con un post de Tomás referido a Ubuntu, es buen momento de llevar mi humilde sugerencia de paquetes para un escritorio usable a esta nueva versión.
Para repasar, al igual que la vez anterior, este post tiene dos objetivos principales:
- para el que quiera tener una instalación de debian jessie (estable) usable, vale decir, con algunas aplicaciones más modernas que las que trae por defecto pero tratando de no salir demasiado de los repos oficiales;
- y para mí, para no perder tiempo haciendo memoria en el caso de tener que reinstalar el sistema.
Pero a diferencia de aquel post para Debian Wheezy, en el cual recomendé instalar como escritorio a GNOME Clásico, en esta oportunidad la recomendación de entorno de escritorio será KDE, pues me ha resultado más completo y usable que las últimas versiones de los demás escritorios. Además, mientras antes se requería un equipo bastante potente para aprovecharlo completamente, a la fecha los equipos con suficiente poder de cómputo y memoria ya están masificados. Por otro lado, según comentan en Slashdot, hoy es el cumpleaños del proyecto KDE así que resulta un momento justo para navegar en la nostalgia y volver a recomendarlo.
Paso 1
Para comenzar, partimos de la instalación base de Debian Jessie. Para que se den una idea, hay que seguir la instalación tradicional y cuando presenta el uso que se dará (escritorio, servidor, etc), desmarcar todas las opciones y continuar normalmente.
Paso 2
Una vez instalado y hecho el primer arranque, luego de iniciar sesión lo que suelo hacer al toque es deshabilitar la opción de instalación de paquetes recomendados, puesto que pocas veces son necesarios y además engordan sobremanera el espacio ocupado por el sistema. Para ello basta con ejecutar la línea siguiente para que las próximas instalaciones eviten instalarlos.
echo "APT::Install-Recommends \"false\";" > \ /etc/apt/apt.conf.d/90-jessie-powerup-disable-recommends.conf
Paso 3
Luego, sólo si están detrás de un proxy, hay varias formas de configurarlo: puede ser globalmente mediante las variables de entorno http_proxy, https_proxy y ftp_proxy, o bien mediante la configuración de APT para aquellos casos donde dispongan de un servidor de caché como APT-Cacher. Por ejemplo:
PROXY="http://proxy.miorganizacion.com.ar:8080/" export http_proxy=$PROXY export https_proxy=$PROXY export ftp_proxy=$PROXY echo "Acquire::http::Proxy \"$PROXY\";" > /etc/apt/apt.conf.d/90-jessie-powerup-proxy.conf echo "Acquire::ftp::Proxy \"$PROXY\";" > /etc/apt/apt.conf.d/90-jessie-powerup-proxy.conf
Paso 4
Verificar que están configurados los repositorios oficiales de la distribución, más el repositorio de backports. Para ello, el archivo /etc/apt/sources.list debería listar, al menos, los siguientes:
deb http://httpredir.debian.org/debian/ jessie main contrib non-free deb http://security.debian.org/ jessie/updates main contrib non-free deb http://httpredir.debian.org/debian/ jessie-backports main contrib non-free
Paso 5
Agregar algunos repositorios externos (no oficiales) que contienen software útil, por ejemplo mozilla-debian para la última versión de Firefox, el de Dropbox y el de Google Chrome. Se pueden agregar en un archivo denominado /etc/apt/sources.list.d/repos-externos.list
deb http://mozilla.debian.net/ jessie-backports firefox-release deb [arch=i386,amd64] http://linux.dropbox.com/debian jessie main deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main deb http://repository.spotify.com testing non-free
Paso 6
Clásico: actualizar la lista de paquetes. Utilizaremos apt en vez de apt-get sólo por cuestión de gusto, y para ir probando qué tal funciona esta nueva interfaz de gestión de paquetes.
apt update
Paso 7
Instalar un entorno gráfico y los controladores de la placa de video. Para la interfaz gráfica hay varios metapaquetes que se corresponden a cada entorno de escritorio, los más conservadores son los siguientes: para Gnome, instalando gnome-core alcanza; para KDE, instalen kde-plasma-desktop; para XFCE instalen xfce4; para LXDE instalen lxde; incluso pueden instalar Mate o Cinnamon mediante los paquetes mate-desktop-environment o cinnamon-desktop-environment.
Eventualmente puede ser necesario instalar un driver privativo, por ejemplo para placas GPU AMD/ATI suele ser necesario el paquete fglrx-driver, mientras que para placas GPU nVidia el paquete a instalar es xserver-xorg-video-nvidia. También hay versiones para chipsets más antiguos (aparecen como paquetes con el nombre legacy). Si tienen un chipset Intel, con lo que viene por defecto suele alcanzar. Sobre el entorno gráfico, como comentaba al inicio del artículo, mi recomendación esta vez es utilizar KDE Plasma Desktop.
apt install xorg lightdm lightdm-kde-greeter \ kde-plasma-desktop kde-l10n-es pinentry-qt4
Superpaso 8
Instalar paquetes desde los repositorios oficiales. Como en la línea anterior, cada paquete está enlazado a su descripción en el sitio de Debian.
Paso 8.1. Controladores y servicios útiles
apt install amd64-microcode dkms fail2ban intel-microcode \ ntfs-3g ssh uptimed
Paso 8.2. Herramientas útiles de línea de comando
apt install alsa-utils aptitude bash-completion ccze \ clamav colordiff colortail curl deborphan dialog file \ flac hexedit highlight htop iotop imagemagick \ irqbalance jmtpfs less lftp libav-tools markdown mc \ mlocate nano netcat-openbsd nethogs nmap os-prober \ p7zip p7zip-full pv pxz qemu-kvm screen sshfs trickle \ tshark unattended-upgrades unrar unzip vbindiff w3m \ wget zip
Paso 8.3. Lenguajes de programación, herramientas y documentación
apt install build-essential git git-doc idle ipython \ pylint python python-doc sqlite3 sqlite3-doc
Paso 8.4. Programas gráficos para fines variados (editores, reproductores, etc)
apt install chromium chromium-l10n desktop-base filezilla \ fslint gstreamer1.0-libav hardinfo icedove \ icedove-l10n-es-ar keepassx mpv openbox \ owncloud-client owncloud-client-l10n sqlitebrowser \ synaptic vlc wireshark xdg-user-dirs xterm apt install audex calligra-l10n-es filelight k3b k3b-i18n \ kde-standard kdegraphics-thumbnailers kdiff3 \ kio-audiocd kio-mtp kompare krita okteta plasma-nm \ soundkonverter transmission-qt
Paso 8.5. Iconos y temas de escritorio
apt install dmz-cursor-theme faenza-icon-theme \ tango-icon-theme
Paso 8.6. Versión más moderna del kernel (4.3 para 64 bits)
apt -t jessie-backports install firmware-linux \ linux-headers-amd64 linux-image-amd64 linux-doc
Paso 8.7. Versión más moderna de VirtualBox (5.0.16)
apt -t jessie-backports install virtualbox \ virtualbox-dkms virtualbox-qt
Paso 8.8. Versión más moderna de LibreOffice (5.1.1)
apt -t jessie-backports install libreoffice \ libreoffice-kde libreoffice-help-es \ libreoffice-l10n-es libreoffice-style-sifr \ libreoffice-style-tango fonts-opensymbol
Paso 8.9. Versión más moderna de Firefox (45)
apt -t jessie-backports install firefox firefox-l10n-es-ar
Paso 8.10. Tipografías
apt install fonts-cantarell fonts-crosextra-caladea \ fonts-crosextra-carlito fonts-dkg-handwriting \ fonts-humor-sans fonts-droid fonts-font-awesome \ fonts-liberation fonts-roboto ttf-dejavu \ ttf-mscorefonts-installer
Paso 9
Instalar paquetes desde repositorios externos:
apt install dropbox google-chrome-stable
Además de estos paquetes, suelo instalar PyCharm, Netbeans y Skype, para programar cómodamente y hacer alguna videoconferencia cuando es necesario, pero aquí la instalación es particular para cada software.
Paso 10
Listo, con eso les queda un sistema operativo de unos 5 GB, a mi juicio, casi perfecto. Todo lo documentado aquí está disponible en un sencillo script que instala KDE y ejecuta estos pasos de un saque. Lo dejo disponible por si les sirve: jessie-powerup.sh
Algunos consejos adicionales:
- Para tener la tipografía clásica en las terminales Fx, ejecuten
dpkg-reconfigure console-setupy en "Tipo de letra para la consola" seleccionen "No cambie la tipografía del arranque".
Vuelvo a recomendar que se den una vuelta por el post de Tomás pues el da también una buena lista de software para instalar, y si me olvido de algo, o ven algo que sobra, abajo están los comentarios...
sábado, octubre 10, 2015
Abandonado
Este es un instrumental que ha quedado grabado en mí desde los tiempos sin memoria. La cadencia, la selección de notas y, particularmente, la selección de silencios.
Tiene cinco o seis minutos? Hágame caso:
baje la luz, ponga el video en pantalla completa, y suba el volumen del equipo de música.
En un buen equipo de audio, y con el video que lo acompaña, con imágenes de la ISS y de Pripyat, pone la piel de gallina. Para un tema que salió improvisado, es la definición de una obra de arte. Coincidimos, Andrea.
lunes, mayo 11, 2015
Kernels nuevos en Debian Jessie
Todas estas son directamente instalables sobre Debian GNU/Linux 8.0 Jessie de 64 bits sin quilombo de dependencias. Cada directorio contiene los paquetes con la imagen del kernel, los encabezados, el firmware y la configuración utilizada en la compilación.
- http://maurom.com/kernel/ - Kernels disponibles
- http://maurom.com/kernel/4.11.5/ - Linux 4.11.5 amd64
- http://maurom.com/kernel/4.10.17/ - Linux 4.10.17 amd64
- http://maurom.com/kernel/4.9.32/ - Linux 4.9.32 amd64
A medida que vayan saliendo nuevas versiones iré actualizando este pequeño "repositorio" para mantenerlo al día.
Actualización 2017: en función a la reciente publicación de la nueva versión estable Debian GNU/Linux 9.0 Stretch, y tras haber migrado los equipos que utilizo habitualmente, este repositorio dejará de alojar versiones de kernel pues no podré compilarlos para la versión Jessie. Les recomiendo actualizar la versión del sistema operativo y, en caso de preferir versiones de kernel más modernas, utilizar aquellas disponibles en los repositorios Sid y/o Experimental.
lunes, abril 13, 2015
FLISOL 2015 - Festival Latinoamericano de instalación de Software Libre
El próximo Sábado 25 de abril la Universidad Nacional de Luján se unirá a las distintas sedes del festival, siendo una excelente oportunidad para asistir a charlas y talleres relacionados con la temática, así como también llevarse instalado gratuitamente un sistema operativo libre.
El grupo de usuarios de Software Libre de la UNLu (UNLuX) los invita a conocer más sobre el Software Libre en sus múltiples facetas: artística, técnica, cultural y filosófica. Dentro del ámbito académico, los principios propuestos por el Software Libre son especialmente útiles, ya que sus diversos proyectos nos proporcionan una inmensa cantidad de herramientas con las que podemos experimentar y aprender (programas, bibliotecas, lenguajes de programación, etc).
Desde su base, la filosofía pretende que nosotros, los usuarios, controlemos la tecnología y que podamos utilizarla sin restricciones, a diferencia del software no-libre, que está limitado según las restricciones impuestas por su fabricante. El software libre es necesario para una sociedad libre.
Invitamos a estudiantes, profesores, organizaciones culturales y al público en general a participar, ya sea ayudando a difundir el evento, presentando una charla, colaborando con la organización, o simplemente acercándose a disfrutar del festival.
Inscripción
Podes registrarte mediante el siguiente enlace: http://flisol.usla.org.ar/sede/Lujan/registrationSi bien el registro no es obligatorio, nos permitirá brindarte un espacio físico adecuado y nos preparará para realizar las instalaciones que sean necesarias.
En agenda
- Lugar: Universidad Nacional de Luján
Cruce Ruta Provincial Nº7 y Ruta Nacional Nº5
Luján (BA), Argentina
Pabellón de Aulas 400 (Mapa!) - Fecha: Sábado 25 de abril de 2015
- Hora: a partir de las 13:00 hs (Agendalo!)
- Más info: Sitio oficial de FLISoL
lunes, diciembre 22, 2014
Analizando logs en 5 minutos con ELK
Para dar una mínima introducción, diremos que ElasticSearch es un motor de búsqueda RESTful basado en el archiconocido Lucene, Logstash es una especie de concentrador/manipulador/estandarizador de logs provenientes de múltiples fuentes, y Kibana es un visualizador de eventos que corre enteramente en el navegador. Los tres son componentes que pueden utilizarse en forma separada, pero en conjunto aplican precisamente esto de que el todo es más que la suma de las partes. De hecho yo había estado viendo Logstash aparte para una charla sobre logging que diera algunos años atrás, cuando aún era un proyecto incipiente, y ahora me encuentro con que es un proyecto ampliamente utilizado en un montón de lados.
Pero hoy no quiero detenerme demasiado en la teoría; la idea de este post es analizar registros yendo de 0 a 100 en 5 minutos (o lo que tarde en bajar cada aplicación) y para ello nada mejor que arrancar ahora. Así que...
Analizando logs en 5 minutos con ELK
Prerrequisitos
Como prerequisito es necesario el motor de ejecución java 1.6 o 1.7. En distribuciones basadas en debian alcanza con instalaropenjdk-6-jre u openjdk-7-jre. O eso creo, a lo mejor es necesario el jdk también; prueben por las dudas. El resto de los pasos se pueden hacer sin necesidad de ser root, como usuario común.
Paso 0. Ubicarnos en un directorio limpio
mkdir elk cd elk
Paso 1. Obtener logstash
wget -c https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz tar zxf logstash-1.4.2.tar.gz
Paso 2. Obtener elasticsearch
wget -c https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.tar.gz tar zxf elasticsearch-1.1.1.tar.gz
Paso 3. Obtener un log de apache
... de algún lado. Si tienen un apache a mano, cópiense el archivo al directorio actual y dénle permisos de lectura para su usuariocp /var/log/apache2/access.log access.log chmod go+r access.log
O si no tienen ninguno a mano, acá les dejo uno que es un fragmento del log de este mismo sitio. Ustedes pueden hacer lo que les plazca con él, total este es un blog personal. Si quieren optar por otra alternativa, google hacking es su amigo y yo no se los recomendé.
wget http://maurom.com/files/access.elk.log -O access.log
Paso 4. Iniciar elasticsearch
echo Iniciando Elasticsearch. Aguarde 15s ... elasticsearch-1.1.1/bin/elasticsearch & sleep 15
Paso 5. Crear un archivo de configuración para parsear logs de apache
Para ello, creen un archivo de texto llamadologstash-apache.conf en el directorio actual y copien y peguen el siguiente bloque. Luego editen la ruta al archivo de logs, indicándola en forma absoluta, y configuren el tipo de entradas de log y el lenguaje de los meses según corresponda (sino tira unos errores horribles).input {
file {
# apuntar a donde haga falta, con ruta absoluta!
path => "/home/usuario/elk/access.log"
# desde dónde leer el log, o
# "end" para tomar datos en vivo
start_position => beginning
}
}
filter {
if [path] =~ "access" {
mutate { replace => { "type" => "apache_access" } }
grok {
# depende del formato de archivo
match => { "message" => "%{COMBINEDAPACHELOG}" }
#match => { "message" => "%{COMMONAPACHELOG}" }
}
kv {
#con esto parsea incluso querystrings
source => "request"
target => "params"
field_split => "?&"
}
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
# si los meses estan en ingles, o
# "es" si estan en castellano
locale => "en"
}
}
output {
elasticsearch { host => localhost }
# salida estandar coloreada, util para debug
#stdout { codec => rubydebug }
}
Todo este archivo tiene su lógica según la documentación de logstash.
Paso 6. Iniciar logstash+kibana con la configuracion dada
echo Iniciando Logstash. Aguarde 15s ... logstash-1.4.2/bin/logstash -f logstash-apache.conf -- web & sleep 15
Paso 7. Levantar un navegador web
xdg-open "http://localhost:9292/index.html#/dashboard/file/logstash.json"
Paso 8. Jueguen con los filtros, los gráficos y deléitense con la visualización
Fíjense de qué epoca son las entradas del log, pues puede que tengan que modificar algunas cosas para que Kibana les encuentre los eventos para esas fechas. Por ejemplo, el log de apache que les pasé solo tiene entradas para el mes de julio de 2014, así que seleccionen ese rango en el filtro de fechas de Kibana.Acá les dejo algunas capturas de lo que pueden llegar a hacer, que si bien no son de análisis de apache, dan una idea de las posibilidades:
Paso 9. Terminar la tarea
Para cerrar los procesos, matelos sanamente conkill PID a cada proceso java asociado.Ah, y una mención antes de terminar: cada vez que logstash procesa un archivo, anota hasta donde leyó para no volver a cargar la información, por lo que si están jugando con la configuración van a tener que borrar unos archivos
.sincedb_algo que genera en el directorio $HOME del usuario para que vuelva a recorrer el mismo log.Por último, en este caso estamos parseando son entradas de accesos a un sitio web, pero el combo ELK puede procesar casi cualquier tipo de flujo de eventos, y si bien java mucho no me atrae, todo este paquete vale la pena; piensen cuanto habrían tardado en programar ustedes una interfaz tan flexible y completa...
Como sé que ustedes son tan haraganes como yo, acá tienen todo en un solo script que lo hace de una.
Si se quedaron manija, acá van algunas demos y algo de documentación:
Eso es todo por hoy. Feliz análisis y Felices fiestas!
lunes, noviembre 17, 2014
Tipografía práctica
Buscando un sumario de reglas generales referidas al diseño de textos impresos y de sitios web di con el libro Practical Typography de Matthew Butterick, que tras haber leído detenidamente considero indispensable para todo aquel que se haya dedicado tres minutos de su vida a plantearse con qué fuente plasmar, con qué alineación, o cómo dar énfasis a un texto que se encontraba escribiendo. Butterick es autor de diversas tipografías que provee en su sitio web, pero como diseñador viene de un trasfondo de letras: es escritor y es abogado, una profesión donde los documentos escritos son ineludibles.
Del sitio web del libro, que está disponible enteramente en línea, comiencen por “Typography in ten minutes”, luego pasen a “Summary of key rules” y, si les interesa lo que ven, sigan por el resto. En el texto, Butterick -menos teórico y más pragmático- también recomienda varias familias de tipografías y reniega de muchas otras, da excelentes consejos sobre cómo dar formato al texto y componer las páginas de un documento, y presenta además algunos ejemplos de diseño de elementos tales como artículos de investigación, encabezados, currículums, entre otros. Todos consejos bien fundamentados y con los que coincido casi plenamente; creo que la única diferencia que tengo es sobre el tamaño de letra que utiliza en el sitio web, pero eso se arregla fácilmente con el zoom del navegador.
Por lo demás, Practical Typography.
lunes, noviembre 10, 2014
SRC: Control de versiones para proyectos de un solo archivo
Tomás me recomendó GistBox, que parece bastante piola puesto que en cierta forma está destinado a mantener esa “biblioteca” de código variado que uno va acumulando con el tiempo. Además los Gists siguen siendo repositorios git, por lo cual tienen todas las ventajas de un control de versiones. Pero aquí ya uno depende un poco de los servicios en la nube y además sigue siendo necesario mantener los archivos fuente en directorios aparte.
Salvando GistBox, hasta el momento no había encontrado ningún software que realice tal tarea, e incluso estuve tentado a comenzar un proyecto propio para tal fin.
Sin embargo, recientemente di con un post de Eric Raymond en el cual menciona la creación de un nuevo proyecto denominado SRC o “Simple Revision Control”, basado en RCS y definido como “Revision control with a modern UI for single-file solo projects kept possibly more than one to a directory”. En palabras sencillas, justo lo que estoy buscando.
Según el sitio web del proyecto -que al involucrar múltiples archivos, está mantenido en git, pun intended!-, Simple Revision Control es:
RCS recargado -un pequeño y cómodo sistema de control de versiones para proyectos de único archivo, único desarrollador, tal como todos esos pequeños scripts en el directorio ~/bin. Cuenta con operación libre de bloqueo, una interfaz de usuario limpia y moderna similar a la de subversion, documentación integrada, y los archivos de historia son archivos sencillos de RCS.A primera vista tiene tres ventajas: a) cumple con lo que yo había solicitado; b) está desarrollado en python; y c) por el propio autor de “The Art of UNIX Programming”. Más no se puede pedir.
Y mientras estaba leyendo el artículo, en los comentarios aportan otra utilidad similar (que también desconocía): Zit, the git-based single file content tracker. Por ahora voy a probar SRC y ver si se ajusta a mi forma de trabajo. En un tiempo les comento que tal fue.












