Bienvenido(a) a Grupo Linuxero del Bajío domingo, noviembre 28 2021 @ 04:11 CET

Artículos

La pesadilla de los punteros

  • martes, noviembre 16 2021 @ 11:18 CET
  • Autor:
  • Lecturas 14
Artículos Cuando uno aprende a programar en C y se adueña del uso de los punteros, uno generalmente se siente capaz de cualquier hazaña. Sin embargo, todo poder es ilusorio, porque esconde una poderosa debilidad. El concepto de puntero es intrínsecamente demasiado frágil. Tan así que es la fuente de muchos de los agujeros de seguridad, en especial el problema conocido como Use-after-Frees.

Supongamos que uno hace uso de un recurso, un objecto por ejemplo, y tiene una referencia a través de un puntero. Digamos

Object *p = get_object();

Pero en algún momento este objeto es liberado mientras retenemos el puntero p. Y entonces, si hacemos:

p->do_action();

Tenemos, en el mejor de los casos, una falla de segmento (segmentation fault). En el peor de los casos, el método es reemplazado, a través de un buffer overflow, por una función maliciosa.

El problema es generalizado y no es, de ninguna manera, excluviso de programadores novatos. Tanto es así que Google, en Chrome, que usa C++, esta proponiendo una clase llamada MagicPtr<T>, para manejar todos los punteros de los cuales la clase responsable no tiene control:

https://docs.google.com/document/d/1p...Nb_dbQ3ZBg

Contenedores

  • viernes, octubre 22 2021 @ 09:03 CEST
  • Autor:
  • Lecturas 38
Artículos Uno de los procesos más extendidos en TI es la instalacción de programas y servicios, llega a ser tedioso el tener que resolver todas las dependencias y compilar un programa para que funcione como es debido.

La gran diversidad de sistemas operativos y sus derivados trae alta complejidad para el desarrollador y por ende, casi nunca se soportan todos los posibles casos, más aún "la nube" trae la complejidad de trabajar o bien en un sistema recién horneado o limitado.

Por ello, se han implementado diversas soluciones (que no resuelven el problema al 100%), siendo una de ellas los llamados contenedores, liderado por Docker (https://www.docker.com/) y alternativas como Singularity (https://sylabs.io/singularity/).

Rust en el Kernel

  • martes, octubre 12 2021 @ 05:44 CEST
  • Autor:
  • Lecturas 37
Artículos Ojalá todos aquí sepamos que es Rust, y si no es así, nunca es tarde para saberlo.

Rust es un lenguaje de programación, patrocinado inicialmente por Mozilla, con el propósito de desarrollar su navegador web de siguiente generación, llamado Servo. No obstante, Mozilla ha sorteado vaivenes económicos y tuvo que cortar Servo. Sin embargo, el lenguaje de programación, que siempre conservó su independencia organizacional, sigue tan sano y vibrante como el primer día. Hoy por hoy, Google, Microsoft y muchas otras empresas potentes están utilizando el lenguaje para su consumo interno y en prototipos de futuros productos.

¿Por qué tanto éxito? Veamos sus características:

* Rust no necesita de un entorno de ejecución. Se compila y el binario opera directamente sobre el hardware y SO, tal como un programa escrito en C/C++. Su compilación tiene niveles de optimización elevados, además de generar binarios para varias plataformas, al utilizar LLVM (un framework para hacer compiladores, como clang).

* Rust no necesita de un recolector de basura. Sin embargo, garantiza seguridad de memoria, evitando desbordamientos de búfer (buffer overflow) o fugas de memoria (memory leaks). Esto lo logra a través de un sistema de posesión (ownership) de las variables (esto es lo más interesante y con más implicaciones a la hora de programar). No permite punteros nulos y favorece la asignación de memoria de la pila (stack) sobre la del heap.

* Rust tiene un modelo de programación orientado a la concurrencia, gracias a su tipado (tipos de datos), su sistema de posesión de variables, evitando las condiciones de carrera (race conditions) verificado en tiempo de compilación,

* Rust adopta características de varios modelos de programación: imperativa (como C/C++), funcional (como Lisp o Haskell), orientada a objetos (como Java).

* Rust se distribuye con una serie de utilerías que permiten desarrollar, perfilar y optimizar aplicaciones complejas con solo descargar su toolchain, facilitando la "productividad" del desarrollador.

* Rust tiene ya un enorme catálogo de librerías (llamadas crates) listas para descargar y utilizar: https://crates.io/

Tuve la oportunidad de colaborar en Servo en su momento, desarrollando el soporte para los tags <video> y <audio>, con los excelentes bindings de GStreamer para Rust.

En fin, hay más cosas que decir, pero harían este post más largo de lo que es.

El propósito del post es para comentar que la gente del kernel de Linux ha estado debatiendo los últimos años de usar Rust dentro del Kernel, sobre todo para desarrollar drivers, que suelen ser los que contienen el código más mediocre y menos revisado.

Miguel Ojeda ha sido el promotor de este adopción creando bindigs para las APIs internas del kernel y cuenta con el apoyo de varios mantenedores. Hasta al propio Linus Torvalds le parece prometedor.

Esta es una charla que dio en el pasado Linaro Connect:

https://www.youtube.com/watch?v=VlSkZYBeK8Q

automatizando el montado con autofs

  • sábado, septiembre 26 2015 @ 11:01 CEST
  • Autor:
  • Lecturas 1,630
Artículos

Durante los últimos días dentro del proyecto donde trabajo, nos dimos a la tarea de buscar una solución para poder otorgar a los usuarios sin privilegios a los servidores, una forma simple de acceder a puntos de montaje remotos y evitar la jerga de tener que hacerles el favor ocupar los privilegios de root en estatarea. Asi que nos estamos dando a la tarea implementar el servicio de autofs.

Linux Unified Key Setup

  • domingo, junio 07 2015 @ 12:48 CEST
  • Autor:
  • Lecturas 2,028
Artículos

Compré un SSD externo con interfaz USB3 como dispositivo de respaldo. En realidad ya no me cabían tantos "repositorios" en mi computadora y siempre es necesario tener espacio libre en disco para maniobrar.

No obstante, no quiero que la información que está allí almacenada pueda ser leída por cualquiera sin mi consentimiento. Son mis datos, y como la intimidad, éstos no se toman por asalto, sino por consenso. Es por ello que decidí enterarme en cómo usar el cifrado de discos duros.

Para cifrar discos duros se usa el comando cryptsetup, que es la interfaz de usuario para módulo del kernel dm-crypt, que a su vez usa la infraestructura del kernel llamada device-mapper, cuya función es mapear dispositivos físicos de bloques (discos) a un dispositivo virtual de bloques de alto nivel, donde podemos tener servicios como Linux volume manager, dm-cache, etc.. Distribuciones como Debian o Fedora instalan esta funcionalidad por defecto.

CyanogenMod

  • miércoles, mayo 13 2015 @ 01:15 CEST
  • Autor:
  • Lecturas 2,498
Artículos

Hace unas semanas me convencí de cambiar de teléfono móvil. Después de poco más de tres años, decidí cambiar mi N9 por un OnePlus One.

Detesto cambiar de hardware, pero mi N9 ya sufría de varios achaques, producto del acelerado cambio tecnológico. Por ejemplo, su navegador Web ya no despliega correctamente muchos sitios, en especial Wikipedia, que me es indispensable. También su aplicación para Whatsapp (wazapp), a pesar de que admiro el esfuerzo de sus desarrolladores, nunca llegó a ser utilizable, ya que drena la batería.

¿Por qué elegí OnePlus One? Por pereza. Es decir, cuando tengo que comprar cacharros, le pregunto a gente que ha indagado a profundidad al elegir los suyos, escucho sus razones y no lo pienso mucho más. Soy afortunado de conocer personas que dedican tiempo a investigar y son generosos al compartir sus conclusiones.

La razón con más peso es que estos teléfonos llevan, pre-instalado, CyanogenMod.

Wayland

  • viernes, abril 17 2015 @ 11:56 CEST
  • Autor:
  • Lecturas 1,934
Artículos

Parafraseando un famoso manifiesto:

Un fantasma recorre el software libre: el fantasma de Wayland. Todas las fuerzas del viejo X Window System se han unido para reemplazar a este pesado protocolo con uno más compacto y moderno.

El problema de X Window es que se desarrolló cuando aún no había tarjetas de vídeo con aceleración gráfica que pudieran hacer composición de vídeo, tales como transparencias (composición alfa), desvanecidos, sombreados, escalado, rotación, etcétera. Todo esto en tiempo real.

En la década de los ochentas, cuando surgió X Window, el problema se limitaba a pintar cuadrados en una pantalla. Sin embargo, ahora queremos cosas más complejas. La solución a estas nuevas demandas ha sido a base de extensiones a X Window, que lo han convertido en una pesadilla.

Software libre y feminismo

  • domingo, febrero 01 2015 @ 05:21 CET
  • Autor:
  • Lecturas 1,587
Artículos

El título de esta entrada es demasiado ambicioso e impone unas expectativas difíciles de cumplir. Por tanto, debo advertir que me limitaré a enumerar una serie de eventos que han ocurrido últimamente en la esfera del software libre relacionados con el feminismo.

Me posiciono y parto de una premisa: la diversidad es vital para el desarrollo de cualquier organización. Para que esta diversidad florezca es indispensable la igualdad material y social de los individuos que la componen, abrazando y celebrando así sus diferencias específicas e individuales.

Llegado a este punto cabe preguntarse ¿Qué es el feminismo? Pues es la búsqueda de esa igualdad entre mujeres y hombres. No faltará el cuñado que zanje el problema diciendo "todos nacemos iguales ante la ley, todos somos ciudadanos" y se queda tan ancho. Ignora por completo las relaciones estructurales enraizadas en la sociedad. Parte de la suposición de que las legislación define la realidad, y si ésta no se ajusta a la ley, la responsabilidad recae en los individuos.

systemd

  • miércoles, enero 21 2015 @ 10:31 CET
  • Autor:
  • Lecturas 1,598
Artículos

En la esfera del software libre han existido muchas guerras "santas", donde los proponentes de un software se enzarzan con los proponentes de otro software que tiene objetivos similares la primero: emacs vs vi, KDE vs GNOME, etcétera.

Una de estas épicas batallas, y la más reciente, es la lucha por ser el primer proceso de usuario al iniciar el sistema operativo, en este caso, Linux.

Page navigation