lunes, diciembre 30, 2013

¿Y si el "pleno empleo" en España fuera una tasa del 15% de paro?

Ayer, a partir de los datos de la Encuesta de Población Activa (EPA) que publica el Instituto Nacional de Estadística desde el año 1987 realicé las siguientes tres gráficas de las tasas de desempleo, según la definición que estuviese vigente para dicha tasa durante los diferentes periodos



La información que aporta la EPA durante estos casi 26 años no puede dejar indiferente a nadie:

  • Del año 1987 al año 2000 el paro estuvo por encima del 15%
  • Sólo se consigue tener una tasa de paro por debajo del 10% apenas 3 años, los que coinciden con el pico de la riqueza comprada a crédito.
  • Durante estos 26 años ha habido tres periodos durante los cuales el paro ha estado por encima del 20%
  • El ritmo de recuperación de empleo es muy lento.

Como con todas las variables económicas no hay una explicación simple ni siquiera lineal a semejante desastre genuinamente español - cosa que no se da en otros países, a pesar de haber atravesado por dificultades económicas similares a las nuestras -, pero hay que reflexionar y darse cuenta que no es normal que un país como España a la primera dificultad económica, se produzca tal destrucción de empleo (y de tejido productivo, no nos engañemos, han cerrado cientos de miles de empresas).

Reflexionando sobre el tema:

  • ¿Qué responsabilidad tienen nuestra legislación laboral?. ¿Sirve en el entorno actual donde las empresas deben tener flexibilidad para competir en un mercado único con libre circulación de mercancías y servicios?. ¿Protege realmente al trabajador?
  • ¿Tenemos empresas que aporten gran valor añadido y que exporten?. ¿O realmente nuestra productividad y valor añadido es del montón?
  • ¿Sirve para algo las políticas de formación encaminadas a reciclar a las personas que se quedan en paro?
  • La falta de movilidad propiciada por la cantidad de personas que tienen vivienda en propiedad hace que la gente sea muy reacia a moverse para buscar empleo, como me a apuntaba @Sefuelix.
  • ¿La economía sumergida complementada con cosas como el PER hace que la gente tire trabajando en B y dichas cifras de la EPA no sean reales?.
  • La falta de una política energética a largo plazo y no a las próximas elecciones y al calor de los grupos de amigos de turno, ¿hace que sea complicado que se establezcan grandes grupos industriales en España?.
  • La burocracia española y las falta de seguridad jurídica que transmitimos, ¿hace que la gente se lo piense mucho antes de hacer cierto tipo de inversiones y cuando se hacen, se intenta que el Estado avale y cubra el problema ante un cambio de legislación?
  • El comportamiento gremial y alérgico a la competencia de muchos sectores empresariales, ¿hace que se establezcan elevadas barreras de entrada a ciertos sectores económicos?
  • ¿Tan podrido está nuestro sistema laboral que si una persona de cierta edad se queda en paro, le es muy difícil volver a encontrar empleo?
  • La planificación económica por parte de nuestras autoridades - el ladrillo , el turismo , la exportación de automóviles o renovables -,¿ mira el largo plazo o simplemente son consecuencia de los grupos de presión de turno?.

Los políticos, sociólogos y economistas tan preocupados por el paro, ¿realmente hacen una análisis global e histórico de las cifras y el porqué se ha llegado a ellas, o simplemente miran con las anteojeras ideológicas de la teoría económica a la que pertenecen destacando aquellos factores que más se ajustan a la misma?. No digamos ya los periodistas que amplifican estas ideas según convengan

viernes, diciembre 27, 2013

Publicidad en aplicaciones móviles

La prensa en Internet necesita la publicidad para vivir, al menos la prensa española, ya que sus posibles lectores no suelen ser muy dados a pagar por contenidos. Pero claro, todo tiene una serie de costes, teniendo que recurrir la publicidad para poder hacer frente a los mismos.

Lo que no tengo tan claro es si los diseñadores de las aplicaciones y portales de prensa en España tienen claro que abrir una aplicación desde el móvil y que te salte una capa completa de publicidad, encima con video embebido es rentable. El ancho de banda no es un infinito y las cicateras tarifas de datos que nos ofrecen las operadoras tampoco ayudan demasiado. Si a esto le añadimos que en cualquier noticia que pinches de periódicos como el País o El Mundo, te mete una primera página con un anuncio en flash, es añadir más sal a la herida. Esta manera de mostrar la publicidad ha hecho que prescinda de las aplicaciones de iPhone de El Mundo y el Economista, y no me extrañaría mucho que todas las de periódicos digitales que tengo instaladas en el teléfono fueran detrás.

Aunque claro, lo ideal sería poder pagar por el contenido que te interesa, cosa que yo estoy dispuesto a hacer. Sólo que para eso ocurra, las cabeceras nacionales tendrían que dejar de comportarse como periódicos de trincheras y las noticias estar redactadas para adultos no para adolescentes buscando clicks y RT rápidos en Twitter.


viernes, diciembre 20, 2013

¿Sabemos lo que pagamos en impuestos?

Desde mi punto de vista, uno de los principales problemas que tiene el Estado español es que sus ciudadanos no somos demasiado conscientes de lo que cuesta. Hablamos de servicios gratuitos o de derechos, pero pocas veces nos paramos a pensar que los mismos tienen un coste que debe ser sufragado a través de impuestos. Se tiene la errónea creencia de que el Estado es una teta de la cual se puede mamar de manera indefinida y que jamás se quedará sin recursos y que por lo tanto puede ofrecer derechos, subvenciones o servicios a coste cero.

Pero esto no es real. Para que el Estado pueda financiarse y ofrecer dichos servicios debe de recaudar impuestos o emitir deuda (que son los impuestos del futuro). Esto que resulta bastante obvio parece que no encaja en la cosmovisión de muchos de los españoles: se quieren servicios públicos pero no se quiere ni pagar deuda ni que haya demasiados impuestos. Es más, parece como si esos recursos los tuviese que aportar otros, que se suelen etiquetar como los ricos.

Sería interesante hacer un pequeño ejercicio, imaginaros que se cambia la legislación para que:

  • Ningún precio de un bien o servicio tuviese el IVA incluido.
  • Los bienes o servicios sujetos a impuestos especiales como la gasolina, el tabaco, el alcohol o la energía no tiene en el precio estos impuestos especiales.
  • Las empresas no retienen el IRPF ni la seguridad social. Eres tú el encargado de presentarlo a Hacienda cada mes o una vez al año cuando se realiza la declaración de renta.

Cuando se realiza una compra, se pasa a cobrar los correspondientes impuestos, de tal manera que queda perfectamente claro cual es cada concepto. Sólo entonces, empezaremos a darnos cuenta de verdad de cual es el coste del Estado. Me gustaría ver la cara de la gente cuando se da cuenta que sus facturas de luz, casi un 50% son impuestos y en los combustibles lo mismo. Que de casi cualquier cosa que compre, pagas un 21% de IVA.

Si, se puede argumentar que normalmente en los tickets de la compra viene la cantidad de IVA que has pagado, pero si los precios ya incluyen el impuesto la gente no suele darse cuenta de ese detalle. De nada sirve iniciativas como estado limitado, los artículos en periódicos que hablan de tal o cual subvención o las webs que se dedican a mirar el BOE para saber en qué se gasta el dinero, porque al final, esa información sólo la leemos aquellos a los cuales nos interesa, por no hablar del periodismo de trinchera practicado en España donde se ve la subvención ajena por pequeña que sea y no la propia.

A muchos políticos, jueces y comunicadores se les llena la boca con la palabra transparencia. Pues la primera medida que deberían adoptar es reclamar que la gente sea consciente del coste de los servicios y de lo que paga para que los tenga. Lo que no es de recibo es que se siga pensando que el dinero público no es de nadia o que se tiene derecho a tal o cual subvención cuando lo que estás recibiendo por un lado lo estás pagando por otro (¿nadie recuerda lo de los 400 euros?)

miércoles, diciembre 18, 2013

Notas de VirtualBox (III): Redes Internas

VirtualBox tiene una funcionalidad muy interesante que permiten definir redes internas al propio entorno virtual, siendo emuladas por el software. Son de gran utilidad, para probar despliegues de DHCP, instalaciones remotas o configuraciones de red distribuidas. Cuando se configura un adaptador para que esté conectado a una red interna, se elije el tipo de red como red interna y el nombre de la red a la cual está conectado. Se pueden definir varias redes, aunque como puede verse, el sistema sólo deja configurar desde el gui 4 adaptadores


Al igual que otras propiedades de las máquinas virtuales, se puede modificar sus propiedades a través del comando VBoxManage, en este caso con la opción --intnetN nombr donde N es el número de interfaz que queremos modificar y nombre el nombre de la red virtual a la cual se quiere conectar el adaptador. Aparte, se puede configurar las propiedades de la red, como la posibilidad que las máquinas virtuales tengan acceso al modo promiscuo. Puede ser útil, si se desea en este tipo de entornos usar el servidor de dhcp interno del sistema para proporcionar una dirección IP a los host que se conecten a dicha red.

Un ejemplo de uso de esta configuración puede verse en el siguiente esquema, que lo monté para probar la instalación de una distribución Debian desde red. La primera máquina virtual vm1, tiene dos interfaces virtuales, una conectada vía bridging (Adaptador puente en español) a la misma red del host, donde recibe una IP vía DHCP. La otra interfaz es una red interna, red-interna, con una dirección IP fija. La máquina vm2, obtiene su configuración de red de vm1 a través de los servicios de DHCP que ésta monta. Por último vm1 hace de NAT a toda la red-interna. Toda la comunicación queda dentro de

Referencias


viernes, diciembre 13, 2013

Algunas notas sobre VirtualBox (II): Capturando tráfico de red

Hoy me he encontrado con una opción que desconocía de VirtualBox, la posibilidad de generar un fichero pcap con el tráfico que pasa a través de las interfaces de red de las máquinas virtuales. Esta opción es muy útil en caso de que se desee analizar problemas que estar ocurriendo en la red, porque este fichero puede ser procesado por programas como tcpdump o WireShark en busca de problemas.

Hay que usar dos parámetros con VBoxManage modifyvm nombre_de_maquina_virtual para poder capturar el tráfico de las interfaces que interesen:

  • --nictracefileN file dónde N es el número de la interfaz que vamos a usar para guardar tráfico y file es la ruta completa al fichero donde se almacenará el mismo.
  • --nictraceN on|off , siendo N el número deinterfaz iterfaz, usando on en caso de que se desee activar la captura y off para desactivarla.

Por ejemplo, para captura el tráfico de la interfaz 1 de la máquina test_machine en el fichero /tmp/captura .test_machine.pcap se usa el siguiente comando:

VboxManage modifyvm test_machine --nictracefile1 /tmp/captura.test_machine.pcap --nictrace1 on

jueves, diciembre 05, 2013

Previsiones de empleo a veinte años

Ayer varios medios de comunicación se hicieron eco de la publicación por parte de la consultora PricewaterhouseCoopers de un estudio llamado La economía española en 2033. La conclusión que más destacaba era la siguiente:España no recuperará el empleo destruido durante esta crisis hasta el año 2033, en la que su tasa de paro será similar a los países de su entorno

Suelo tomarme con bastante cautela este tipo de previsiones a tan largo plazo. Recomiendo la lectura de Estimates of Uncertainty around the RBA’s Forecasts, un estudio de la Reserva Federal Australiana - su banco central - sobre la fiabilidad de sus previsiones a largo plazo. Una de las conclusiones destacadas es que la estimación de la tasa de desempleo más allá de unos trimestres es tan fiable como hacerlo de manera aleatoria:

Forecasts of the unemployment rate outperform a random walk only for a few quarters ahead.

Una de las cosas que me gustaría que hiciese la prensa económica es un buen artículo analizando la fiabilidad de las múltiples previsiones que hacen diferentes organismos tanto públicos como privados a lo largo del año. Pero mucho me temo que hay demasiados intereses para realizar un estudio serio del tema, en especial en el particular periodismo militante español donde un estudio de un organismo puede ser una basura o muy riguroso, en función de que sirva o no para atizar al gobierno de turno.

miércoles, noviembre 27, 2013

Algunas pinceladas de la historia de OS/2

Leía hace unos días en Ars Technica el artículo de Jeremy Reider Half an operating system: The triumph and tragedy of OS/2 sobre el sistema operativo de IBM OS/2. En el mismo se hace um resumen de algunas de las estrategias empresariales que llevaron al nacimiento de OS/2, así como ciertas decisiones técnicas y de estrategia empresarial que llevaron a condenar este sistema operativo al olvido. Aunque merece la pena la lectura completa del mismo, voy a destacar dos conclusiones del mismo que me llamaron la atención (están el epígrafe lessons learned)

OS/2 siempre fue un DOS mejor que DOS y un Windows mejor que Windows - tenía una excelente capa de emulación de ambos sistemas -. Pero era tan sumamente buena que los desarroladores no tenían necesidad ninguna de hacer aplicaciones nativas para la plataforma.

IBM also made a crucial error in promoting OS/2 as a “better DOS than DOS and a better Windows than Windows.” Having such amazing compatibility with other popular operating systems out of the box meant that the market for native OS/2 apps never had a chance to develop. Many people bought OS/2. Very few people bought OS/2 applications

Cuando dentro de una compañía tiene hay divisiones con intereses encontrados, se gastan esfuerzos cada uno tirando en su sentido, que llevan a destrozar un producto. Eso pasó en IBM donde los que vendían mainframes veían a los PC's como una amenaza para su negocio, no querían que fueran tan potentes.

Unfortunately, IBM was being pulled in two directions. The company's legacy mainframe division didn’t want any PCs that were too powerful, lest they take away the market for big iron. The PC division just wanted to sell lots of personal computers and didn’t care what it had to do in order to meet that goal. This fighting went back and forth, resulting in agonizing situations such as IBM’s own low-end Aptivas being unable to run OS/2 properly and the PC division promoting Windows instead.


lunes, noviembre 11, 2013

No hubo bastante con el desastre de las Cajas de Ahorro

Parece que en España no hemos tenido bastante con ese desastre financiero público que han sido las cajas de ahorro. Protagonistas de la burbuja financiera, cerraron a cal y canto sus departamentos de análisis de riesgo y regaron de crédito barato la piel de toro. En sus consejos de administración, estaban representados los políticos y sindicatos de cada región donde operaban. El crédito con destino a la promoción de viviendas y la financiación de las obras de las administraciones de turno. Los resultados, de todos conocidos: Casi 33000 millones de euros gastados hasta ahora por el FROB para mayor gloria del bolsillo del ciudadano español -.

Bien, pues la Junta de Andalucía quiere otra vez su banco público. Pero claro, no son los únicos. Que en los consejos de administración de estas entidades se vivía muy bien. Que son unas entidades estupendas para financiar a los amigos y los proyectos que pueden ser buenos caladeros de votos. El problema, es que cuando se tuerce la cosa, no son los votantes que jaleaban estas medidas quienes pagan el agujero.

Ah, y si alguien piensa que lo que había antes no es banca pública, que mire la Ley 15/1999 de la Junta de Andalucía, concretamente el artículo dos y tres:

Las Cajas de Ahorros domiciliadas en Andalucía, con o sin Monte de Piedad, son entidades de crédito de naturaleza fundacional y de carácter social, sin ánimo de lucro, que orientan su actividad a la consecución de fines de interés público.
Las Cajas de Ahorros orientarán sus actuaciones a la consecución de fines de interés público tales como el fomento del empleo, el apoyo a los sectores productivos, la protección y mejora del medio ambiente, el patrimonio cultural e histórico y la investigación, a fin de contribuir al desarrollo social y económico de Andalucía, así como su equilibrio territorial

jueves, octubre 31, 2013

Paralelismos

A mediados del año 2007 empezó a interesarme los temas económico. Comencé a oír tertulias en la radio sobre economía y a leer prensa económica. Uno de los primeros digitales donde aterricé fue Cotizalia, la parte del diario El Confidencial que trataba sobre economía. Y una de las primeras columnas que me empezaron a interesar fue Valor añadido cuyo autor es Alberto Artero - escribía con el seudónimo de McCoy -

Por aquellos entonces, leía una columna, que a la postre terminaría retratando parte de lo que pasó después, Está de moda una nueva droga: la hipoteca, que me dejó pensativo, empezando a pensar que lo que se estaba gastando en casas en España no era una gran bolsa de dinero negro, como creía por aquellos entonces, sino que la gente se estaba endeudando hasta las cejas. Aunque hace seis años de esa columna, se escribía en los días de vino y rosas de la economía española, empezando ya a levantar las primeras señales de alarma. Luego, descubriríamos que muchas de esas hipotecas, se habían convertido en productos derivados que se habían vendido y revendido, siendo uno de los detonantes de la actual crisis económica.

Avanzamos de nuevo hasta el 2013. Han pasado seis años de crisis y en España - si no nos empeñamos en excavar - parece la economía ha tocado fondo. Todo el mundo debería estar advertido de lo que puede ocurrir si los mercados de derivados no son supervisados por profesionales diligentes. Bien, pues la semana pasada leía de nuevo a un artículo de Alberto Artero La banca gana: ahora, a forrarse con los alquileres" donde destaco este par de párrafos

Más aún. El proceso de innovación en la economía del dinero continúa firme su curso y, curiosamente, lo hace sobre pilares similares a los que nos provocaron hace seis años que lo improbable se hiciera posible y lo impensable, realidad
Un mismo mercado, el ladrillo; distinto subyacente, las rentas a percibir; similar instrumento, la titulización; igual objetivo, sacar rentabilidad adicional al flujo económico asociado a la vivienda (antes para la entidad financiera, ahora para el propietario). El patrón de siempre, en cualquier caso: agrupar cash-flows asociados a algún tipo de garantía, ponerles el lacito del refrendo de un tercero, por cuestionado que esté, y... ¡a jugar!

Cosa por otra parte totalmente lógica, cuando a muchos de estos innovadores financieros, se les ha salvado el culo. Si la red de seguridad del Estado está por debajo y se sabe que va a intervenir si la cosa se tuerce, ¿qué incentivos hay para dejar de hacer el ganso?. ¿Se ha aprendido algo, o como mucho me temo nada?. Muchos dirán que esto se arregla con más regulación o prohibiendo vehículos financieros o limitando los bonus de los directivos, yo al igual que Sefuelix cuenta en este artículo, prefiero a supervisores con un alto grado técnico y que se hagan respetar:

Al día siguiente, Banco de España llamó a los presidentes al orden. Anuló todas las operaciones realizadas (las cuales se liquidaban a través de sus sistemas) y avisó de que, en caso de repetirse, se llevaría por delante a los presidentes responsables.

PD: No se pierdan tampoco la entrevista en el FT con Alan Greenspan. Da muchísimo que pensar sobre el papel de Bancos Centrales y supervisores en esta crisis, y sobre todo , da que pensar sobre la validez de los modelos económicos.

miércoles, octubre 30, 2013

Breves notas sobre el uso de matrices en Microsoft Excel (II)

En la primera parte del artículo hablé de como usar operaciones con matrices y dejé algunos enlaces a las operaciones que se podían hacer con las mismas en Excel. En este voy a tratar otras operaciones que pueden realizarse con matrices.

Multiplicación

Dada dos matrices A de dimensión m x k y B de dimensión k x n, el producto de ambas matrices AB es una matriz de dimensión m x n. La función de Excel que realiza el producto de matrices es MMULT. Recibe como parámetros las dos matrices que van a usarse como operadores. En la siguiente captura se ve como multiplicar la matriz A de dimensión 4 x 2 por la matriz B de dimensión 2 x 4, dando como resultado la matriz destino 4 x 4. Hay que tener en cuenta que al introducir la fórmula hay que pulsar CTRL + SHIFT + ENTER en vez de ENTER para informar a Excel que es una operación con matrices.

Multiplicación por una constante

Si queremos multiplicar todos los elementos de una matriz por un determinado número, supuesto que la matriz es m x n, seleccionamos una región en la hoja Excel como destino de la matriz,e introducimos la fórmula que queramos, no olvidando pulsar CTRL + SHIFT + ENTER para señalizar la operación de matrices.

Cálculo de determinantes

La función MDETERM nos permite calcular el determinante de una matriz. Por ejemplo, en la matriz A15:D18, calculamos el determinante, que en este caso es cero.

Inversa

La función para calcular la inversa - en el Excel en español - es MINVERSA, que recibe como parámetros la matriz sobre la cual queremos calcular. Esta matriz inversa no tiene porqué existir siempre, y en caso de que no existe, Excel advertirá del error con un #NUM en la celda donde hayamos introducido la fórmula. La fórmula sólo funciona con matrices cuadradas

Trasponer

En la versión de Excel en español, la fórmula encargada de hacer la transposición es TRANSPONER. Recibe como parámetro la matriz que queremos intercambiar filas y columnas y debemos de tener seleccionado las celdas destino.


martes, octubre 29, 2013

Breves notas sobre el uso de matrices en Microsoft Excel (I)

Ayer necesite realizar algunas operaciones con matrices. Normalmente, cuando tengo necesidad de realizar dichas operaciones, suelo recurrir a Matlab o el clon libre del mismo Octave. Ayer tenía un poco de prisa y como del primero no tengo licencia ni tenía ganas de buscar una versión de evaluación y del segundo me tocaba bajarlo y compilarlo, decidí buscar si Excel tenía algún soporte básico para realizar cálculos con matrices.

Aparte de las operaciones de suma, existen una serie de funciones en Excel que permiten diversos cálculos con matrices: multiplicación (MMULT), trasposición (TRANSPOSE), cálculo de la inversa - si existe - (MINVERSE) o cálculo del determinante (MDETERM)

Sólo hay que tener en cuenta los dos detalles siguientes para usar las fórmulas de matrices correctamente:

  • Definir correctamente la matriz: Una matriz m x n, se define en Excel por las coordenadas del elemento de la esquina superior izquierda a11 y por el elemento de la esquina inferior derecha amn. Por ejemplo en la siguiente captura de pantalla la matriz quedaría definida por el rango A1:C4


  • Cuando se define una fórmula para operar con una matriz, hay que tener seleccionado las celdas que ocupará el destino, introducir la fórmula pero en vez de pulsar enter, pulsar CTRL + SHIFT + ENTER. Esto rodea la fórmula de llaves - que no pueden introducirse normalmente - y le indica a Excel que estamos realizando una operación de matrices.

Para explicar los dos puntos anteriores voy a sumar dos matrices, Matriz A y Matriz B, ambas de tamaño 4 x 3. El resultado es una matriz del mismo tamaño. La matriz A está en las celdas A2:C5 y la matriz B está en las celdas A8:C11. El resultado estará en las celdas A14:C17, las cuales deben de estar seleccionadas, como puede verse en la captura:


Dos matrices A2:C5 y A8:C11, para sumar colocando el resultado en A14:C17, el área resaltada

Con el área destino seleccionada (celdas A14:C17 en la captura anterior), introducimos la fórmula de la suma =A2:C5+A8:C11 en y pulsamos CTRL + SHIFT + ENTER, para indicar que es una operación con matrices. En la siguiente captura puede verse como la tras pulsar la combinación de teclas anterior, la fórmula queda entre llaves, para indicar que es una operación de matrices. Dichas llaves no pueden introducirse manualmente.


Barra de fórmulas tras pulsar CTRL+SHIFT+ENTER

El resultado de la operación de suma se puede ver en la siguiente captura:


Resultado de la operación de suma de matrices

Referencias


domingo, octubre 27, 2013

MacOS X Mavericks: Toma de contacto (I)

Esta semana he actualizado el ordenador con el que trabajo a la última versión del sistema operativo de Apple, OS X Mavericks. La actualización, sin problemas, en unos 45 minutos, incluyendo la actualización de las herramientas de desarrollo. Una vez reiniciado el sistema, otro bloque de actualizaciones a diversas aplicaciones de la suite iLife de Apple que tenía instaladas, así como soporte de impresoras y archivos de cámaras raw.

Hasta ahora, estas han sido los pequeños detalles que he tenido que solucionar:

  • Se ha cambiado en las herramientas de desarrollo el depurador gdb por el depurador del proyeco llvm, lldb. En mi caso, que estoy acostumbrado al primero, lo he compilado desde fuentes, desde la última versión estable disponible, la 7.6.1. Tras bajar las fuentes, verificar la firma electrónica de las mismas, las órdenes necesarias para compilarlo son las siguientes:
    env CC=clang  CFLAGS="-Wno-string-plus-int" \
    ./configure --prefix=/usr/local
    make
    make install  (como usuario root / administrador)
    

    Es necesario establecer la variable CC puesto que se ejecuta varios scripts configure anidados. Por otra parte, puesto que el gdb lo suelen probar con el gcc, no compila de manera limpia con el clang, teniendo que desactivar un warning con la opción que se pasa.
  • La versión del MacVim que usaba no arranca en Macvericks. Esto se debe a que está compilada contra la librería de Perl 5.10, el cual ha sido actualizado a una nueva versión en el sistema operativo. Es muy sencillo compilar desde las fuentes siguiendo las instrucciones de compilación del MacVim. Si se quiere compilar desde el git, los pasos a seguir son los siguientes:
    git clone git://github.com/b4winckler/macvim.git
    cd macvim
    env CC=clang ./configure --with-features=huge \
                  --enable-rubyinterp \
                  --enable-pythoninterp \
                  --enable-perlinterp \
                  --enable-cscope
    make
    #Comprobamos que ha compilado ok
    open src/MacVim/build/Release/MacVim.app
    #Abrimos la carpeta donde está
    #la aplicación y la copiamos a donde queramos
    open src/MacVim/build/Release/
    
  • Desactivar el llavero iCloud. Nunca me ha gustado mantener cierto tipo de información en servicios de terceros. No me interesa almacenar son contraseñas en servicios de terceros, mucho menos después de todo lo que vamos conociendo de la NSA - que probablemente sea la punta del iceberg de lo que están haciendo los Estados a la hora de espiar - . El servicio iCloud lo tengo desactivado en el iPhone y en el ordenador. Para ello, desde las Preferencias del Sistema, iCloud no tengo la cuenta logeada. También, desde el mismo menú se puede controlar los elementos que se quieren almacenar en los servidores de Apple
  • Según me comentaba algún amigo, Macports podía tener algún problema, que supongo solucionado a estas alturas de la semana.


miércoles, octubre 23, 2013

Francia y la NSA, la damisela ofendida

Más allá de contar lo obvio - los Estados espías - , las revelaciones de Snowden sobre la NSA también están sirviendo para sacar a la luz esa hipocresía tan europea sobre que las cosas malas solo se hacen en USA. Resulta que Francia ha convocado al embajador de EEUU porque cree que la NSA ha intervenido en sus comunicaciones y se muestra indignada ante esas prácticas. El problema es que muchos recordamos una particularidad de las primeras versiones del navegador web Netscape: la existencia de una versión especial para Francia, ya que las leyes francesas prohibían el uso de sistemas que usaran criptografía fuerte. Ese detalle se puede ver aquí. Lástima de no saber donde están mis antiguos mirrors de Netscape, para verificar los binarios.

PD: Repasen ustedes los algoritmos de criptografía que usaba el GSM A5/1 y A5/2, este último para exportación, que ha estado soportado en los móviles hasta hace pocos años. O la vieja polémica del chip chip clipper, para que el gobierno tuviese acceso a cualquier clave criptográfica sin problemas. Los gobiernos jamás les ha interesado el uso sencillo de encriptaciones fuertes


miércoles, octubre 09, 2013

Debian: Problemas al arrancar un daemon desde el postint de un paquete

Hace unos días nos encontramos un curioso problema en un paquete Debian de construcción propia: Por alguna razón que desconocíamos en ese momento ,el script postint de un paquete debian, no terminaba la ejecución, convirtiéndose en un proceso zombie, que dejaba al proceso que lo lanzó esperando indefinidamente la finalización del mismo. Como el proceso que lanza estos paquetes es el debconf, encargado de la instalación de paquetes, ésta nunca finalizaba de manera correcta.

Tras buscar bastante, dimos con el problema: hay ciertos programas que no pasan a segundo plano de manera correcta y dejan descriptores de ficheros abierto contra debconf, que es el programa encargado de realizar las instalaciones y configuraciones de paquetes en sistemas basados en Debian. Esto sólo ocurre si desde el postint intentamos arrancar algún tipo de proceso que debe ser un daemon.

Para evitar este problema, Debian provee un script, que puede llamarse desde nuestro fichero postint: Antes de terminar la ejecución del fichero postint, se debe de añadir la llamada db_stop al final del mismo (o bien en aquellos puntos donde se finalice la ejecución). De esta manera, se soluciona el problema del cuelgue de la instalación de paquetes que arrancan daemons que no cierran bien los descriptores de ficheros.


domingo, septiembre 29, 2013

str8voices: Far over the misty mountains cold

Hace unos días, buscando alguna versión de la banda sonora de la película de El Hobbit, encontré en Youtube una referencia al grupo str8voices, un grupo de ocho miembros que cantan a capella. Me llamó mucho la atención la interpretación que hacen de una de las canciones de El Hobbit: Far over the misty mountains cold - Hobbit Soundtrack. Disfruten del vídeo


viernes, septiembre 27, 2013

Iberpix: Un visor de la topografía española

A la hora de conocer sitios, muchos hemos usado el estupendo Google Maps: sus imágenes por satélite o la posibilidad de navegación en 3D son características que aportan mucho valor al producto . No pocos han colaborado subiendo fotos a Picassa o Panoramio, que luego Google utiliza para ilustrar sus mapas. También lo hemos usado para calcular rutas o planificar excursiones.

Sin embargo, siempre he pensado que estaba cojo en un aspecto: Le falta información sobre la topografía: Los nombres de los lugares: cabos, montañas , valles o ríos. Excepto los más importantes la anterior información no está presente en Google Maps. Sin embargo hay una gran alternativa, al menos en España, que es la aplicación Iberpix del Instituto Geográfico Nacional. Esta aplicación pone a disposición de todo el mundo una inmensa base de datos de información de la geografía española. Una de las cosas más que más me gusta es la calidad de los mapas y la cantidad de información que tienen. Tampoco se queda atrás las imágenes por satélite que tiene en una de las capas, comparadas con el Google Maps.

En las siguientes dos capturas pueden verse las capas de satélite de Google Maps y de Iberpix.


Ribadesella, Google Maps

Ribadesella, Iberpix

La siguiente captura es la capa de mapas de Iberpix, donde puede apreciarse la riqueza y detalle de información disponible


miércoles, septiembre 18, 2013

Verificar firmas de binarios en MacOS X con codesign

Una sana costumbre cuando uno se baja de Internet cualquier programa es intentar verificar su autenticidad: que el creador sea el que dice ser y que el binario no ha sido alterado por terceros. La manera tradicional de hacer esto es usar algún tipo de función hash y técnicas de firmado digital que permitan comprobar que el binario es auténtico. El lado malo: normalmente tenemos complicado verificar la autenticidad de las claves públicas en las que se apoya estos procesos.

Algunos sistemas operativos han incluido en sus últimas versiones servicios que permiten comprobar la autenticidad e integridad de programas que se bajan de Internet, siempre que hagan uso de estas facilidades. En el caso del MacOS X esta infraestructura empezó a aparecer en la versión 10.5 (Leopard) del sistema operativo. A través del comando codesign se puede realizar operaciones de firma digital de los binarios que la incorporen.

La herramienta da la oportunidad de comprobar las firmas digitales tanto de un fichero en disco como de una aplicación que esté ejecutándose en ese momento. Por ejemplo:

codesign --verify --verbose /Applications/Twitter.app
/Applications/Twitter.app: valid on disk
/Applications/Twitter.app: satisfies its Designated Requirement

De igual manera, se puede verificar la integridad de un proceso que esté ejecutándose en el sistema. En este caso, en vez de un path se le pasa el PID del proceso. En este ejemplo verificaría la integridad del proceso cuyo PID es 1234

swordcoast:~ terron$ codesign --verify --verbose 1234

También se puede obtener información sobre la firma criptográfica de un binario con ayuda de la opción --display

codesign --display --verbose=4 /Applications/Twitter.app
Executable=/Applications/Twitter.app/Contents/MacOS/Twitter
Identifier=com.twitter.twitter-mac
Format=bundle with Mach-O universal (i386 x86_64)
CodeDirectory v=20100 size=14072 flags=0x200(kill) hashes=697+3 location=embedded
Hash type=sha1 size=20
CDHash=4db441b1c36dfaf0edb5d548c78587b0037698c1
Signature size=4169
Authority=Apple Mac OS Application Signing
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Info.plist entries=32
Sealed Resources rules=5 files=124
Internal requirements count=2 size=344

La última versión de MacOS X, Mountain Lion, y a partir de la versión 10.7.5 de Lion , se tiene una infraestructura llamada GateKeeper que permite la configurar el sistema para evitar la ejecución de aquellos programas que no cuenten con una firma digital válida.

Si el binario que nos bajamos no tiene firma digital, es aconsejable usar algún tipo de servicio, como VirusTotal para pasar el programa por una batería de antivirus.

Por supuesto, todo este proceso de verificación implica que nos fiamos de Apple y de la cadenas de criptografía que lleva el sistema operativo. No voy a ser iluso, si cualquier agencia estatal deseara que instalásemos un binario con un troyano, no creo que le cueste mucho convencer a Apple que le firme un binario "aliñado" que el sistema se lo tragase sin problemas.


Technorati Tags:

viernes, agosto 30, 2013

diskutil: Información de los discos en OS X en el CLI

Una de las cosas que más me gusta de MacOS X es la posibilidad de trabajar tanto con la interfaz gráfica como con la línea de comandos. De vez en cuando hay que realizar operaciones de mantenimiento de discos en las que queremos averiguar información sobre el mismo. La utilidad que se encarga de gestionar los discos es diskutil. Este comando admite varios verbos cada uno de los cuales invoca una función determinada. Aquí van algunos de los que permiten obtener información. Si se le añade a cualquiera de los dos el modificador -plist, se volcará la información en dicho formato.

diskutil list

Permite listar todos los discos que haya en el sistema - incluye los CDROM / DVD -, dando información sobre las particiones que tienen: tamaño, tipo, nombre de la partición y el nombre de dispositivo que aparecerá bajo el directorio /dev:

/dev/disk0
  #:                       TYPE NAME                    SIZE       IDENTIFIER
  0:      GUID_partition_scheme                        *121.3 GB   disk0
  1:                        EFI                         209.7 MB   disk0s1
  2:                  Apple_HFS Macintosh HD            120.5 GB   disk0s2
  3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
  #:                       TYPE NAME                    SIZE       IDENTIFIER
  0:      GUID_partition_scheme                        *80.0 GB    disk1
  1:                        EFI                         209.7 MB   disk1s1
  2:                        ZFS zfs                     39.9 GB    disk1s2
  3:                  Apple_HFS hfsformat               39.7 GB    disk1s3

diskutil info path_disco

Permite obtener información sobre un disco físico o partición. Ejecutando la orden anterior sobre el disco /dev/disk0:

   Device Identifier:        disk0
   Device Node:              /dev/disk0
   Part of Whole:            disk0
   Device / Media Name:      APPLE SSD SM128E Media

   Volume Name:              Not applicable (no file system)

   Mounted:                  Not applicable (no file system)

   File System:              None

   Content (IOContent):      GUID_partition_scheme
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified

   Total Size:               121.3 GB (121332826112 Bytes) (exactly 236978176 512-Byte-Blocks)
   Volume Free Space:        Not applicable (no file system)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         Not applicable (no file system)
   Ejectable:                No

   Whole:                    Yes
   Internal:                 Yes
   Solid State:              Yes
   OS 9 Drivers:             No
   Low Level Format:         Not supported

Technorati Tags:

martes, agosto 27, 2013

Controlar la generación de paquetes Debian a través de DEB_BUILD_OPTIONS

Las opciones de construcción de paquetes Debian a través dpkg-buildpackage pueden controlarse con la variable de entorno DEB_BUILD_OPTIONS. Algunos de los posibles cambios son no ejecución de los tests, desactivar las optimizaciones o no quitar la onformación de depuración de los binarios. Pueden combinarse los diferentes valores para compilar el paquete de acuerdo con las necesidades que se tengan. Las posibles opciones de la variable son las siguientes:

  • nocheck El sistema de paquetes no ejecuta los posibles tests que puede tener el paquete (si el paquete usa las autotools para generarse normalmente esto equivale a no hacer el make check)
  • noopt Desactiva las optimizaciones, explícitamente pasa los flags -O0 -g al compilador (que como suele ser el gcc implica desactivar la optimización y activar la generación de los símbolos de depuración).
  • nohardening Desactiva las opciones que permiten introducir mecanismos en los binarios para prevenir la explotación de fallos de seguridad en los mismos (si se tiene instalado los paquetes para ello en Debian). Se puede ver más sobre en el wiki de Debian en Hardening.
  • nodocs No construye los paquetes de documentación.
  • nostrip La información de depuración no debe quitarse de los binarios generados durante la instalación.
  • parallel=n Si el paquete permite la construcción en paralelo, usar hasta n procesos.

Referencias


Technorati Tags: ,

miércoles, agosto 21, 2013

Quinto aniversario del accidente del vuelo JKK 5022

Ayer se cumplieron cinco años del desgraciado accidente del vuelo JKK 5022 operado por la desaparecida Spanair, que acabó con un balance de ciento cincuenta y cuatro muertos y dieciocho heridos. Toda la prensa nacional ha publicado artículos recodando la tragedia, pero me ha sorprendido el tono de todos ellos, porque dan a entender que no se sabe la verdad o no hubo un juicio justo. Por ejemplo El Mundo titula Familiares de Spanair critican a los jueces 'por quitarse el muerto de encima', El País Las víctimas del accidente de Barajas piden indemnizaciones como las del 11-M y el Abc Los afectados por el accidente de Spanair critican a los jueves por archivar el caso. En cualquiera de los enlaces anteriores hay declaraciones como la siguiente:

«siguen pidiendo justicia y que se conozca la verdad desde que el año pasado la Audiencia Provincial de Madrid archivara el caso para quitarse el muerto de encima y evitar responsabilidades penales».

Sin embargo, creo que la verdad se sabe. Y está perfectamente documentada en los informes del CIAIAC sobre el accidente. Si nos vamos al informe final, en la página 254, el apartado 3.2 Causas se dice lo siguiente:

La tripulación perdió el control del avión como consecuencia de la entrada en pérdida inmediatamente después del despegue, por no haber configurado el avión correctamente, al no realizar la acción de despliegue de los flaps/slats, tras una serie de fallos y omisiones, junto con la ausencia de aviso de la configuración incorrecta de despegue.
La tripulación no detectó el error de configuración al no utilizar adecuadamente las listas de comprobación que contienen los puntos para seleccionar y comprobar la posición de flaps/slats en las labores de preparación de vuelo, en concreto:
  • No llevó a cabo la acción de seleccionar flaps/slats con la correspondiente palanca de mando (en «After Start Cheklist»);
  • No realizó la comprobación cruzada de la posición de la palanca y el estado de las luces indicadoras de flaps y slats al ejecutar la lista de comprobación «After Start»;
  • Omitió la comprobación de flaps y slats en el punto «Take Off Briefing» de la lista de comprobación de taxi;
  • n la comprobación visual realizada en la ejecución al punto «Final Items»

Si, se puede entrar en la discusión de que si el TOWS hubiese funcionado bien podrían haber sido advertidos los pilotos que la configuración del despegue era la correcta y no se hubiese producido el accidente, pero eso no cambia la raíz del problema: Casi seguro si el avión hubiese estado bien configurado no se habría estrellado. En el mismo informe se afirma (página 83).

Estas evidencias se corresponderían con la palanca de flaps/slats posicionada en UP/RET en el momento en el que se produjo dicho impacto entre tetón y guía.

Además la información grabada en el FDR (caja negra con los parámetros de vuelo) apoyan la afirmación anterior.


Technorati Tags:

miércoles, julio 24, 2013

Intel MPX: Extensiones de protección de memoria

(via reddit.programming) Intel acaba de presentar una serie de extensiones de protección de memoria que permita un uso más seguro de punteros en C y C++. Este conjunto de nuevas instrucciones permiten verificar si un acceso a memoria está dentro de un rango permitido protegiendo al programa de un posible buffer overflow.

Intel® MPX is designed to allow a system to run both Intel MPX enabled software and legacy software together. When executing software containing a mix of Intel MPX code and legacy code, the legacy code does not benefit from Intel MPX, but it also does not experience any change in functionality or performance. Performance of Intel MPX enabled code running on processors that do not support Intel MPX is similar to embedding NOPs in the instruction stream. Intel MPX is designed such that enabled applications can link with, call into, or be called from legacy software (libraries, etc.) while maintaining existing application binary interfaces (ABIs)

Las extensiones se pueden consultar en Intel® Architecture Instruction Set Extensions Programming Reference, concretamente en el capítulo 9 del mismo.

La idea de MPX es asociar rangos de direcciones válidas a los que pueden acceder un puntero determinado, siendo el hardware el encargado de verificar que cualquier acceso a dicho puntero está dentro del rango permito, intentando proteger al sistema de un buffer overflow. Por supuesto, hace falta compiladores y sistemas operativos que permitan usar estas nuevas extensiones. Lo que no me queda demasiado claro es que ocurre con un binario que tenga estas instrucciones y se intente ejecutar en un procesador que no tenga soporte para las mismas. De este párrafo creo entender que no debe de haber problemas en ejecutar un binario con estas instrucciones en un procesador que no soporte las mismas:

All Intel MPX instructions are NOP on processors that report CPUID.(EAX=07H, ECX=0H).EBX.MPX [bit 14] = 0, or if Intel MPX is not enabled by the operating system (see Section 9.3.3). Applications can selectively opt-in to use Intel MPX instructions.


Technorati Tags: ,

domingo, julio 21, 2013

VLC: De vuelta a la plataforma iOS

Ha vuelto a la plataforma iOS el magnífico reproductor multimedia VLC, el cual fue retirado de la misma por problemas de licencia hace dos años. Reescrito desde cero, de fuentes abiertas y licenciado de manera dual - Mozilla y GPL 2 o posterior - para ser compatible con los términos de la AppStore de Apple, permite reproducir una gran variedad de archivos multimedia. Se puede ejecutar en cualquier dispositivo que tenga la versión de iOS 5.1 en adelante. Funciona sin problemas en hardware tan antiguo como el iPhone 3GS o el iPad 1.

He tenido algún pequeño problema a la hora de reproducir algunos vídeos en el iPad 1, que se ha solucionado reiniciando la aplicación. Lo más interesante para mi - puesto que puedo reproducir vídeos en formato mp4 sin problemas con Quicktime en el iPad - es que soporta los ficheros de subtítulos en formato SubRip (srt).


Technorati Tags: ,

martes, julio 09, 2013

Desactivar IPv6 en Mac OS X desde la línea de comandos

Una de las características de Mac OS X que siempre más me ha gustado es la posibilidad de usar tanto la interfaz gráfica del sistema como diferentes utilidades la línea de comandos para la configuración y administración del mismo. Una de esas joyas desconocidas que permiten el control total de la configuración de red desde la línea de comandos es networksetup.

En Mac OS X , un servicio de red (network service) no es más que un conjunto de configuraciones de un puerto de red determinado (ethernet, wifi). Por ejemplo, se pueden tener varios servicios para el puerto ethernet en función de la localización donde se esté: casa, oficina, etc. networksetup permite la configuración y gestión de los servicios de red.

Se puede obtener la lista de servicios de red que hay en el sistema con ayuda del parámetro -listallnetworkservices

baldurgate:~ terron$networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Bluetooth DUN
Ethernet
FireWire
Wi-Fi
Bluetooth PAN
baldurgate:~ terron$

Con ayuda de la opción -getinfo se puede obtener información sobre una servicio de red determinado. Por ejemplo, para el servicio de Wi-Fi:

baldurgate:~ terron$ networksetup -getinfo Wi-Fi
DHCP Configuration
IP address: 192.168.x.x
Subnet mask: 255.255.x.x
Router: 192.168.x.x
Client ID: 
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID:  XX:XX:XX:XX:XX:XX 

Puede verse como está activado el soporte de IPv6 en modo automático.

Para desactivar IPv6 en cualquier servicio, se usa el parámetro -setv6off seguido del nombre del mismo:

networksetup -setv6off Ethernet
networksetup -setv6off Wi-Fi

Para que el sistema pueda realizar cambios en las bases de datos que almacenan la configuración de red, se debe estar autentificado con un usuario que tenga privilegios de admin o root. En caso de que no sea así, el sistema nos presentará un cuadro de diálogo para que se introduzcan las credenciales de un usuario con dichos privilegios.


Technorati Tags:

viernes, junio 28, 2013

Notas rápidas de la instalación de Apache Cassandra en MacOS X

Cassandra es una base de datos NoSQL diseñada para trabajar de manera distribuida y manejar grandes cantidades de datos. Su diseño tolerante a fallos y la escalabilidad son dos de sus puntos fuertes.

Los requisitos necesarios para poder instalar este programa en MacOS X son los siguientes:

  • Una cuenta de usuario sobre la cual se va a ejecutar. En este caso,se va a suponer que existe una cuenta de usuario estándar, sin privilegios especiales llamada cassadmin
  • Tener instalada el Java Runtime Enviroment en MacOS X. Normalmente,se ha usado el que suministra Apple1 (al menos en Mac OS X Lion que es donde se han hecho las pruebas). Se puede comprobar que versión se tiene del JRE con la siguiente orden:
    swordcoast:~ terron$ java -version
    java version "1.6.0_51"
    Java(TM) SE Runtime Environment (build 1.6.0_51-b11-456-11M4508)
    Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-456, mixed mode)
    
  • Tener la posibilidad de bloquear en RAM la suficiente cantidad de memoria sin que su contenido sea paginado por el sistema. Los sistemas operativos actuales utilizan un espacio de direcciones virtuales, paginando a disco páginas cuando necesitan liberar RAM para otros procesos. Se le puede indicar al sistema que ciertas regiones de memoria no puedan paginarse y estén siempre en RAM. Sin embargo, para evitar abusos, esta cantidad suele estar limitada. Puede comprobarse su valor en la shell bash con la orden ulimit:
    swordcoast:~ terron$ ulimit -l
    unlimited
    
    En MacOS X esta cantidad no está limitada, sin embargo, en otros sistemas si. Por ejemplo, en Debian está limitado a 64 Kbytes. En este caso sería necesario añadir un fichero que modificara el comportamiento del usuario que utiliza Cassandra para ejecutarse para que pueda bloquear toda la memoria que quiera.
  • Tener instalado Java Native Access, una serie de clases Java, que permiten el acceso sencillo a librerías dinámicas del sistema sin necesidad de usar JNI. Estas clases Java pueden bajarse empaquetadas en un fichero jar desde jna, el repositorio
  • . En este caso se ha usado la versión 3.5.2, compuesta por los ficheros jna-3.5.2jar (sha1 f1bf9fe267e17c1a8f7d1aa2c985e7fe81a06da6 ) y platform-3.5.2.jar (sha1 beac07d13858ef3697ceeab43897d70aeb5113c9 )
  • La versión binaria de Cassandra, bajada de la página del proyecto. En este caso se ha usado el fichero apache-cassandra-1.2.6-bin.tar.gz (sha1 25b9c63eb33c3ce483390e6edab4a5d1bb95eb4c ). En este caso existe una firma GPG que se puede verificar (keyid 2B5C1B00)

Una vez que se ha descargado todo el software, se va al directorio raíz del usuario que va a ejecutar Cassandra (se va a suponer que es /Users/cassadmin) s para crear la estructura de directorios que utiliza se va a usar y descomprimir el software:

cd /Users/cassadmin
mkdir -p logs/cassandra
mkdir -p lib/cassandra/{data,commitlog,saved_caches}
tar zxvf apache-cassandra-1.2.6-bin.tar.gz
ln -s apache-cassandra-1.2.6 cassandra
cp jna-3.5.2.jar platform-3.5.2.jar cassandra/lib/

  • El directorio donde se va a guardar los ficheros de logs que genere la base de datos será /Users/cassadmin/logs/cassandra
  • El directorio donde se va a almacenar los datos y que utilizará para trabajar la base de datos será /Users/cassadmin/lib/cassandra. La sintaxis empleada funciona con la shell bash.
  • El enlace simbólico se crea para hacer más sencillo el uso de varias versiones del producto.
  • Se copian los ficheros de clases del JNA al directorio lib de cassandra para que el sistema pueda encontrarlos.

Configurar la base de datos para que utilice la estructura de directorios que se ha creado. Se edita el fichero /Users/cassadmin/cassandra/conf/cassandra.yaml y se cambian los siguientes parámetros para usar la estructura de directorios creada

data_file_directories:
- /Users/cassadmin/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
data_file_directories:
- /Users/cassadmin/lib/cassandra/data
# commit log
commitlog_directory: /Users/cassadmin/lib/cassandra/commitlog
saved_caches_directory: /Users/cassadmin/lib/cassandra/saved_caches

Configurar el log4j para que almacene los registros en el directorios que interesa. Para ello se editar el fichero /Users/cassadmin/tmp/cassandra/conf/log4j-server.properties para modificar la propiedad que apunta al fichero de registro del sistema:

log4j.appender.R.File=/Users/cassadmin/log/cassandra/system.log

Por último se arranca el programa con la orden:

cassandra/bin/cassandra -f
Este último comando supone que estamos en el directorio $HOME del usuario cassadmin. El parámetro -f hace que el programa permanezca en primer plano para poder ver los errores que genere al escribir los mismos a la consola.

Notas

  1. Se puede bajar la versión que interese utilizar del Java Runtime Enviroment (JRE) desde Java.com. Ajustando las variables PATH y JAVA_HOME se puede seleccionar la versión del JRE a usar de las instaladas.

Technorati Tags: ,,

jueves, junio 27, 2013

De móviles en frigoríficos y otras hierbas

Esta tarde me ha llamado la atención las noticias en la prensa donde se relata como, Edward Snowden - perseguido por EEUU por filtrar a la prensa que los estados espían las comunicaciones -, tuvo una reunión secreta donde insistió que sus asesores introdujeran los móviles en un frigorífico. La idea es crear una Jaula de Faraday, la cual impide la recepción y emisión de ondas electromagnéticas.

Este hecho me resulta curioso, quizás porque la manera más sencilla de crear dicha jaula es la de envolver el móvil en papel de aluminio. Cualquiera puede hacer este experimento en su casa para ver el efecto. Pero lo que me sorprende de todo esto es que si fueron con los móviles encendidos hasta la reunión con Snowden no habrán tenido ningún problema en localizarle por triangulación. Me explico:

Aunque tengo los recuerdos borrosos y no tengo el Transmisión por Radio de Hernando Rábanos a mano, el GSM utiliza células con diferentes frecuencias asociadas en racimos. El tamaño de las células depende del tráfico que tienen que soportar, siendo más pequeñas en ciudades donde tienen que dar servicios a muchos terminales móviles. Creo recordar que el diámetro de dichas células podía rondar los quinientos metros. Un móvil en una ciudad puede recibir información de varias estaciones base a la vez, y éstas captar la señal que radia el móvil - decir que el tamaño mayor de una célula de GSM recuerdo que estaba entorno a los 30 km -. Las estaciones base tienen el hardware suficiente para poder saber qué teléfono móvil está radiando - recordar, todos tiene un IMEI único - , en que dirección y con qué potencia. A nada que envíen esos datos - y he visto centrales de tránsito de telefónica hacerlo de manera instantánea - tendrán localizado al sujeto en cuestión con una precisión de decenas de metros (más en localización GSM)


Technorati Tags:

viernes, junio 21, 2013

Video del Boeing 787 Dreamliner en el Salón aéreo de Farnborough 2012

Esta mañana encontré el siguiente vídeo de la exhibición de Boeing 787 de Qatar Airways durante el Salón Aeronáutico de Farnborough 2012. Especialmente bonito el touch and go entorno al minuto 1:50 de la grabación


Technorati Tags:

miércoles, junio 19, 2013

Apache Accumulo a.k.a NSA Bigtable

Estos últimos días la National Security Agency (NSA) ha estado en boca de todo el mundo tras la publicación por The Guardian de varias noticias sobre lo que debería de ser obvio para todo el mundo desde hace mucho tiempo: los Estados espían, y lo que hacen con la información es desconocido para todos - oficialmente luchar contra los malos -. Los Estados siempre se han preocupado mucho de poder pinchar las comunicaciones, y en general los ciudadanos suelen mirar para otro lado pensando que no tienen nada que esconder. Además, en este programa, PRIM, parecer ser que están involucradas todas las grandes tecnológicas y empresas de telecomunicaciones de Estados Unidos.

Sin embargo este aluvión de noticias ha tenido un efecto positivo: Por diferentes agregadores de noticias han empezado a surgir referencias a software en el que ha estado trabajando la NSA, y que podría estar siendo utilizado dentro de estos programas de espionaje. Dicho software, que la NSA donó a la fundación Apache hace dos años, es Apache Accumulo. Los responsables del proyecto lo describen de la siguiente manera:

The Apache Accumulo™ sorted, distributed key/value store is a robust, scalable, high performance data storage and retrieval system. Apache Accumulo is based on Google's BigTable design and is built on top of Apache Hadoop, Zookeeper, and Thrift. Apache Accumulo features a few novel improvements on the BigTable design in the form of cell-based access control and a server-side programming mechanism that can modify key/value pairs at various points in the data management process

Es una mejora de las ideas implementadas por Google en BigTable, un sistema de almacenamiento y recuperación de información basado en clave valor ordenados, con el añadido de seguridad a nivel de celda y la posibilidad de ejecutar procesos en el servidor a través de mecanismos de personalización implementados en el mismo. La particularidad es que las consultas al sistema devuelven siempre los datos ordenados según las claves, en función del orden lexicográfico de las mismas.

A su vez el software usa varios bloques de para construirse que están bajo el paraguas de la fundación Apache como Hadoop, Thrift o Zookeeper

Referencias


Technorati Tags:

jueves, junio 13, 2013

El coste de oportunidad de las retenciones en nómina

Estamos en época de retratarse ante Hacienda y me ha dado por hacer un pequeño ejercicio: Supongamos que uno es trabajador por cuenta ajena y la empresa donde trabaja le pedimos que no nos haga ninguna retención1 de lo que nos corresponde a pagar, para hacerlo de golpe el último día en que se puede presentar la declaración de la renta. Y que ese dinero, lo invertimos en algún tipo de cuenta remunerada o un depósito plazo fijo2 el cual nos rentaría un determinado tanto por ciento hasta el momento de pagar.

La siguiente gráfica está elaborada usando salarios desde 18000 € brutos a 60000 € brutos, de una persona soltera , que tiene una licenciatura y en 12 pagas. Si nos vamos a la web Calcula tu Sueldo, introduciendo dichos salarios en saltos de 3000 € podremos ver cuanto hay que pagar de IRPF y de Seguridad Social, siempre que no se tengan otras deducciones.

Ahora, supongamos que el dinero que nos tuviese que retener la empresa lo metemos en algún producto, aunque este no de demasiado rendimiento. Por ejemplo un depósito bancario que nos ofrezca un 1.5% TAE. A las ganancias que se vayan obteniendo, hay que quitarles el 25% de impuestos sobre el capital. Al menos, no se está financiando gratis al Estado y estamos aprovechando la oportunidad para obtener algo de rendimiento a nuestro dinero. Algo similar ocurre cuando una empresa te paga en 14 periodos: se está financiando al 0% con el dinero de las pagas extras. Por eso, por ejemplo, yo prefiero que sean 12 pagas.

Relacionado con lo anterior, la gente que se alegra porque hacienda le devuelve, lo que ha hecho durante ese año es financiar gratis al Estado: éste te ha retenido un dinero que en tu poder podías haber aprovechado para hacer alguna inversión. Puede que pare sueldos brutos bajos no merezca la pena, pero para gente que le rentenga mucha cantidad, da para sacarse unos euros a lo largo del año.

Notas

  1. Desconozco si por ley las empresas están obligadas a hacer una retención mínima.
  2. Eso si, recuerden que una cuenta o un plazo fijo es un préstamo que se le hace al banco, que aunque los depositantes están los últimos en el grado de prelación, podría darse el caso de que perdieran dinero. Que se lo pregunten a los chipriotas.

Technorati Tags:

lunes, junio 03, 2013

Canción triste de la obra pública

Esta mañana, paso por la calle Quintana en Madrid. Veo que están volviendo a levantar la misma acera que hace apenas quince días levantaron y pusieron nueva. Días de vino y rosas de la burbuja inmobiliaria, inauguran el tramo de la A-49 entre San Juan del Puerto y Ayamonte, finales del 2002, para en el verano del 2003 levantar todo el tramo para reasfaltarlo de nuevo. Presupuesto de las nuevas terminales de Barajas (T4 y T4s) , 4185 millones de euros, coste final 6185 millones, casi 2000 millones de euros por encima de lo presupuestado.

Ya lo decía aquella ministra que el dinero público no es de nadie, en especial el que se van en comisiones de contratación de obras. Y lo peor es que todavía hay muchos que piensan que es la manera de salir de la crisis (con planes como el famoso Plan E, de tan estupendos resultados)


Technorati Tags:

jueves, mayo 30, 2013

Notas sobre la Xbox One y la Playstation 4

Estos últimos dos meses he seguido con bastante interés las presentaciones de la siguiente generación de consolas de Sony y Microsoft, la PlayStation 4 y la Xbox One. Hay varios puntos que han captado mi interés:

  • Ambas están diseñadas para ser el centro de entretenimiento en los salones de las casas. Los negocios no son ya sólo los juegos, sino todo tipo de contenido multimedia que pueda llegar a los televisores a través de las mismas. Un filón que tanto Sony como Microsoft quieren explotar al máximo.Esto implica sistemas diseñados para trabajar permanentemente conectados a Internet, no sólo para bajar el contenido sino para tener un control mucho más estricto sobre lo que se ve, se hace o se juega.
  • En la parte más técnica ambas giran entorno a un SoC de AMD - un chip que integra los núcleos de proceso, el hardware gráfico, los controladores de memoria y los diversos interfaces dentro de la misma oblea de silicio. Ambas consolas usan una APU de AMD cuya microarquitectura se llama Jaguar, de la cual se puede encontrar un buen análisis en este artículo AMD’s Jaguar Architecture. Ambas llevan unidades de blue ray, 8 Gb de RAM - eso sí, con mucho más ancho de banda la GDDR5 que monta la PS4 frente a la XBox One - , 8 cores cada una, Wifi, discos duros y puertos USB
  • A día de hoy es probable que las consolas no se compren por su potencia de proceso bruta sino por las franquicias de juegos que tenga. En eso, parece ser que Microsoft intenta ponerse al día, al menos en la presentación de la Xbox , se hablaba que iba a tener 15 franquicias en exclusiva. Cada vez más cualquiera de estos juegos necesita equipos de desarrollo y presupuestos más cercanos a una superproducción de cine de Hollywood.
  • Enlazando con lo anterior, estoy bastante interesado en el desarrollo independiente de juegos, indie en el argot. Parece ser que Sony tiene claro que quiere atraer a los desarrolladores independientes a su plataforma, y cuanto más haya dotándola de contenido mejor. En el caso de las Xbox One no está tan claro que el soporte sea tan sencillo, al menos por ahora. Veremos que ocurre cuando las plataformas estén en la calle. Tampoco me extrañaría que llegado el momento, intentasen ambos fabricantes imitar los modelos de tienda de aplicaciones de Apple o Google. No olvidemos que estos dos fabricantes se están comiendo el mercado de juegos móviles en detrimento de plataformas como la Nitendo DS o la PlayStation Vita.
  • Una cosa que me preocupa bastante es las posibles implicaciones que tiene la obligatoriedad del sensor Kinect en la Xbox One, unido a la necesidad que la consola esté conectada a Internet, para chequear información, por el momento desconocida. No olvidemos que este sensor es una cámara, y que por el diseño de la consola esta siempre está activa, aunque en diversos estados de consumo de energía. Esto ha levantado algunas suspicacias respecto a la privacidad y posibles usos del sensor. Por ejemplo, Microsoft tiene una patente de uso del Kinect para contar las personas que están enfrente del mismo.

Pocas más noticias tendremos hasta el próximo E3 2013. Personalmente espero más información sobre el desarrollo indie de juegos, las características técnicas de las consolas y cual será el uso permitido de los juegos en las mismas. Hay bastante preocupación de que tanto Sony como Microsoft intenten acabar con los mercados de segunda mano para obligar a que todo el mundo pase por caja, algo que el modelo de tienda de aplicaciones de Google y Apple parece que están logrando.


Technorati Tags: ,

domingo, mayo 26, 2013

Airport Express, utilidad de configuración versión 5.6 y MacOS X Lion

Tengo un viejo punto de acceso de Apple, un Airport Express, de primera generación, que soporta redes wifi con los estándares b o g. El programa que por defecto viene incluido en MacOS X Lion, no soporta este tipo de estaciones base, es necesario bajarse e instalar la Airport Utility 5.6 para Lion. Todo parece sencillo, pero en realidad no lo es, el instalador que suministra Apple falla.

Lo primero que hay que ver en caso de error de instalación son los registros que el sistema deja en el fichero /var/log/install.log. Puede verse ejecutando la aplicación Terminal.app, yendo al directorio y usando cualquiera de las utilidades de la línea de comandos como puede ser more, o bien usar la aplicación Consola que está en dentro de la carpeta utilidades de la carpeta aplicaciones. En cualquiera de los dos casos es necesario un usuario con privilegios de administración del sistema para poder ver dicho fichero. En el mismo podía encontrar cada vez que intenta la instalación las siguientes líneas de registro:

May 24 00:20:08 swordcoast installd[62762]: ./preinstall: nothing found to unload
May 24 00:20:09: --- last message repeated 1 time ---
May 24 00:20:09 swordcoast _securityagent[62791]:Error stopAPD.sh: 256

Vaya, todo parecía indicar que había un error en uno de los scripts, stopAPD.sh que venían con la instalación del paquete.Lo primero que tenía que hacer era extraer los ficheros del paquete y ver el contenido del script para intentar averiguar la causa del fallo. Con la ayuda de la utilidad pkgutil se extraen los contenidos del fichero pkg de instalación a un directorio que nos interese. Una vez realizada la operación, localizar el script stopAPD.sh

pkgutil --expand /Volumes/AirPortUtility/AirPortUtility56.pkg  ~/tmp/airport
cd ~/tmp/airport/AirPortUtility56Lion.pkg/Scripts/preinstall_actions
Dentro de dicho directorio está el script que causa los problemas: Intenta parar a través de launchd el servicio que se especifica en el fichero com.apple.AirPortBaseStationAgent.plist, el cual no existe en mi máquina. La solución para que funcione la instalación es crear uno correcto - porque posteriormente el sistema lo reescribirá - , y para ello, dentro del directorio /System/Library/LaunchAgents/ cree un fichero llamado com.apple.AirPortBaseStationAgent.plist, simplemente copiando el contenido del fichero org.openbsd.ssh-agent.plist que se encuentra en dicho directorio. Lancé la instalación y finalizó sin problemas.


Technorati Tags: ,

lunes, mayo 13, 2013

vim:Usar el resaltado de sintaxis para generar código HTML

Hoy en día, casi cualquier editor tiene soporte para el coloreado de sintaxis en función del tipo de fichero que se esté editando.En vim es muy fácil de activar con la orden :syn on en modo comando. Ahora, no todos son capaces de coger dicho texto editado y exportarlo como fichero HTML para que pueda usarse en una página web. Aunque hay herramientas como GNU Source-highlight o algunas web como Online syntax highlighting que realizan esta labor, el script 2html.vim de vim, consigue resultados muy buenos usando los esquemas de color del editor. Si estamos editando un fichero, se puede crear un fichero HTML completo a partir del mismo ejecutando la siguiente orden en modo comando:

:runtime! syntax/2html.vim

La orden anterior dividirá la ventana que se está editando en dos, y en la nueva ventana insertará el código HTML correspondiente al contenido de la ventana desde la cual se ejecutó. En la siguiente captura de pantalla puede verse el resultado de ejecutar dicho script cuando se está editando un pequeño programa en C:


Resultado de ejecutar 2html.vim

La salida de esta orden es una página HTML completa.A partir de aquí, se puede coger las partes que interesen para insertarlas en el código HTML que se esté editando. Las propiedades del texto se controlan a través del uso de CSS, se pudiéndose modificar de acuerdo a nuestros intereses.

Por ejemplo, los listados de esta entrada del blog están hechos usando este script, insertando el código CSS está insertado en la plantilla del blog


Technorati Tags:

sábado, mayo 11, 2013

Como algunas administraciones públicas facilitan la labor empresarial

Hace unos días me pasaron un enlace al siguiente vídeo.

Por desgracia lo único que demuestra es que ciertas administraciones públicas pasan más tiempo creando burocracias y leyes para justificar su existencia que estando al servicio de los ciudadanos. Luego no debemos extrañarnos de los casos de sobornos y tráfico de influencias a la hora de buscar la documentación y abrir obtener los permisos necesarios para abrir cualquier actividad por inocua que ésta sea.

No he podido dejar de pensar en la ironía que supone los machacones mensajes de todos los políticos durante esta crisis a la hora de hablar de emprendedores y de la creación de empresas que a su vez, permita crear puestos de trabajo para bajar la vergonzante tasa de paro de este país: Si los primeros que ponen todas las trabas son los mismos que se les llena la boca con la palabra emprendedor.


Technorati Tags: ,

martes, mayo 07, 2013

Autotools, tutorial de uso (II): Un ejemplo sencillo

En esta segunda entrada sobre las autotools voy a describir un sencillo ejemplo que compila un programa en C. El código fuente del mismo se puede bajar del git autotools-tutorial. En el directorio tut1 se encuentran las plantillas Makefile.am y configure.ac, un subdirectorio m4 con un fichero de macros ,acexample.m4 - vacío de momento - , el código fuente que se va a compilar, tut1.c y por último un shell script que va a ejecutar los diferentes herramientas de las autotools para generar los ficheros intermedios.

Cuando las distintas herramientas procesan las plantillas, se va sustituyendo aquellas construcciones que reconoce copiando a los ficheros de salida el resto de la entrada. El resultado de procesar el fichero configure.ac, será un fichero configure, que no es más que un shell script, con lo cual se podrá incluir código Bourne Shell1 que las diferentes herramientas copiaran sin tocar - o haciendo las sustituciones correspondientes - , mientras que la plantilla Makefile.am se puede incluir código de Makefile que será copiado sin modificar a la salida.

A continuación se describe un pequeño ejemplo de las plantillas para generar el script configure y a partir de la ejecución del mismo se generan los Makefile, que permitirá compilar un programa simple:

configure.ac

 1 dnl Esto es un comentario
 2 dnl Esta macro fuerza a una versión mínima de autoconf
 3 AC_PREREQ([2.59])
 4 AC_INIT([tut1],[1.0],[cterron@users.sourceforge.net],[tut1.tar.gz],
 5         [https://sourceforge.net/p/autotutorial/])
 6 dnl Necesitamos el compilador de C
 7 AC_CONFIG_HEADERS([config.h])
 8 AC_PROG_CC
 9 dnl Init automake 
10 AM_INIT_AUTOMAKE
11 dnl Debe de ir al final de la plantilla. Genera el fichero config.status
12 AC_CONFIG_FILES([Makefile])
13 AC_OUTPUT

El fichero configure.ac es procesado por varias utilidades - autoconf, autoheader y automake -. Es procesado por el macroprocesador m4. En este pequeño ejemplo se pueden ver algunas de las características de este lenguaje de macros:

  • En primer lugar tenemos la macro dnl. Esto lo que hace es descartar toda la entrada del fichero hasta el fin de línea, lo cual es útil para poner comentarios. También nos puede server el símbolo #.
  • AC_PREREQ es una macro es opcional, pero nos sirve para indicar cual es la versión mínima de autoconf que se va a usar. En este caso se necesita como mínimo la versión 2.59. Aquí se puede ver una característica del lenguaje m4, que es el paso de parámetros: Estos tienen que ir encerrados entre corchetes, [2.59]
  • AC_INIT es la macro que se encarga de emitir el código en el configure que se encargará de realizar la inicialización del script. Tiene dos parámetros obligatorios, que son el nombre del paquete y la versión (tut1 y 1.0 en el ejemplo). Los otros tres parámetros son opcionales. Esta macro debe de estar presente en el fichero antes de cualquier macro que genere una salida. La definición de esta macro generará una serie de variables que se podrán usar en el fichero configure, así como unas macros de preprocesador, que también podremos usar.
  • AC_CONFIG_HEADERS Esta macro va a generar un fichero de definiciones en C, cuyo nombre final se pasa como parámetro, en este caso config.h. Pero para generar dicho fichero, por defecto el script configure que se generará espera encontrar un fichero config.h.in que se genera a partir del procesamiento de este fichero por autoheader..
  • AM_INIT_AUTOMAKE Esta macro es la encargada de inicializar todo el conjunto de código necesario para poder procesar los ficheros Makefile.in y generar los Makefiles. Puede llevar una lista de parámetros opciones que se utiliza para procesar cada fichero Makefile.am.
  • AC_CONFIG_FILES Esta macro especifica que ficheros de salida debe de crear el automake. En este ejemplo sólo queremos crear el fichero Makefile en el directorio actual.
  • AC_OUTPUT Procesa la lista de ficheros que se especifica. En este caso, puesto que los Makefile se están especificando con la macro AC_CONFIG_FILES no es necesario poner parámetros. Si se le da una lista de parámetros, son nombres de fichero separados por espacios, lo que hará el sistema es procesar el nombre junto al sufijo .in cuando se ejecute. Por ejemplo AC_OUTPUT([start.py]), hará que cuando se ejecute el configure el sistema busque start.py.in y lo procese de manera adecuada. Puede llevar dos parámetros opcionales que indican comandos antes y después de ejecutar la salida del fichero.

Makefile.am

1 bin_PROGRAMS= tut1
2 tut1_SOURCES = tut1.c

El formato que sigue la plantilla de Makefile.am es muy similar: Siempre un nombre y un sufijo separado por un subrayado. Así:

  • En primer lugar está bin_PROGRAMS que es una lista separada por espacios de los programas que se van a compilar y que se instalarán cuando tras compilar se ejecute la orden make install. La instalación por defecto será en $prefix/bin, lo que en la terminología de GNU se llama bindir2
  • La segunda línea nos define cuales son los ficheros fuentes necesarias para compilar el binario tut1, en este caso sólo tenemos tut1.c

Generación de los scripts

Aunque el script autogen.sh que hay en el directorio de ejemplo hace todos los pasos, a continuación se detallan para que se puedan ver cuales son pasos:

1 aclocal -I m4
2 rm -rf autom4te.cache/
3 autoheader
4 automake --foreign
5 autoconf

En primer lugar se genera el fichero aclocal.m4 ejecuanto aclocal, en el mismo directorio donde está el resto de ficheros de plantilla. Se va a usar las macros que estén en el directorio m4, cosa que pasamos como parámetro con la opción -I. Decir que, aunque no estaba en el dibujo que se publicó en la entrada anterior, al ejecutar aclocal se incluirá diversas definiciones de macros en el fichero aclocal.m4, entre otras, aquellas que definen las macros que usará automake

La segunda orden borra un directorio caché que crea las diversas ejecuciones de las autotools para ir más rápido en la ejecución

autoheader va a recorrer el fichero configure.ac, para encontrar la primera llamada a la macro AC_CONFIG_HEADERS de donde tomará el nombre del fichero de salida que va a generar, añadiéndole el sufijo .in. Así si dicha macro tiene como parámetro el nombre config.h, generará un fichero llamado config.h.in donde estará las posibles definiciones que se hayan hecho en el configure.ac.

automake va a generar los ficheros Makefile.in a partir de los Makefile.am que se tengan en los directorios. Generará las reglas por defecto, definirá variables, definirá todos los objetivos estándar de construcción (install, install-exec,clean, ....). Algunas definiciones que serán procesadas cuando se ejecute el configure quedará entre símbolos @, para ser procesado posteriormente por configure. El parámetro --foreign le indica al automake que es un proyecto que no sigue con los estándares GNU a la hora de tener ciertos ficheros de documentación. Un trozo de un fichero Makefile.in generado a partir del Makefile.am puede verse a continuación.

....
 15 @SET_MAKE@
 16 
 17 VPATH = @srcdir@
 18 pkgdatadir = $(datadir)/@PACKAGE@
 19 pkglibdir = $(libdir)/@PACKAGE@
 20 pkgincludedir = $(includedir)/@PACKAGE@
....

Pueden verse variables que definirá el proceso (por ejemplo $(libdir)) o zonas de texto cuyo valor será sustituido cuando se ejecute el configure y procese este fichero (por ejemplo @SET_MAKE@ o @PACKAGE)

Por último, autoconf procesará el fichero configure.ac para generar el fichero configure. Una vez generado lo podemos ejecutar con ./configure, y podremos ver como se procesa los ficheros, y se generan los ficheros Makefile.

Documentación

Notas

  1. Curiosamente, hay que usar construcciones lo más compatibles posible, porque no todos los Bourne Shell se comportan igual.
  2. Estoy adelantando información, ya que el configure define una serie de variables - a fin de cuenta es un shell script - que se pueden usar a lo largo de todo nuestro sistema para especificar directorios u otros valores de configuración.

Technorati Tags: ,