No hablo de ningún curso de agua, quiero informar que no abandoné el blog. Espero a la brevedad estar publicando varios articulo. Tengo varios en el tintero, que no he terminado de escribir o pulir.
Estoy haciendo un curso de introducción a IPV6, en el campus virtual de LACNIC. Con bastante trabajo y poco tiempo para escribir en el blog.
Más noticias a la brevedad ... "Stay tuned".
viernes, 27 de mayo de 2016
lunes, 25 de abril de 2016
Whatsapp sin Google Play
A un compañero de trabajo le traen un celular para "desbloquear". Y quiere instalar en el celular whatsapp, pero no configurarle una cuenta de google play. He instalado en dispositivos móviles de mi trabajo varias aplicaciones a partir del paquete, pero son desarrollos a medida para la empresa.
Buscando encontré un enlace del desarrollador para descargarlo. Lo instalamos y quedó pronto.
¿Otras aplicaciones?
Amazon permite descargar directamente kindle. No encontré como bajar directamente acrobat reader. Sitios como softonic ofrecen descargas para dispositivos android, pero no me inspiran confianza. En APKMirror hay muchos paquetes para bajar, no conozco el sitio como para recomendarlo.
Al menos con dispositivos android se aplica el supuesto de que son dispositivos de uso personal, hay aplicaciones de dispositivos mobiles donde no interesa configurar una cuenta google o estar instalando aplicaciones frecuentemente. No encontré nada para esta situación.
Etiquetas:
Administración de Sistemas,
Android,
Dispositivos Moviles
lunes, 21 de marzo de 2016
getline y getdelim: alternativas a gets o fgets
Quiero leer archivos de texto linea a linea, desconozco el largo de la linea. Esto es útil tenerlo encapsulado en una función para procesar archivos de log u otros archivos con lineas de largo variable, usuales en sistemas que intercambian información mediante archivos de texto.
La función gets(3), deprecada por largo tiempo, no es una buena opción. Si la linea es mas larga que el buffer, esta función permite leer mas allá del final del buffer que recibe como parámetro. Esto se explotado para romper la seguridad de una computadora, en ataques de desbordamiento de buffers.
La función fgets(3), es un remplazo "seguro" de gets. Esta función lee hasta que el buffer se llene o encuentre el fin de linea. Si la linea es más larga que el buffer, va a ser necesario otra lectura. Y no tenemos certeza de saber si la función terminó por llegar al final de la linea o por que se llenó el buffer.
Buscando mejores alternativas encontré las funciones de biblioteca getline(3) y getdelim(3). Originalmente ambas funciones eran extensiones del proyecto GNU a la glibc. Fueron integradas al standard POSIX a partir de la revisión POSIX.1-2008. Reciben como parámetros un puntero a un buffer, puntero al tamaño inicial del mismo y un puntero FILE al archivo que se quiere leer. Adicionalmente getdelim recibe un carácter que se utilizará como fin de lectura (en vez de '\n'). Si el buffer no resulta suficiente para completar la lectura, la función lo agranda llamando a realloc(3), actualizando el valor del tamaño del mismo.
Estas funciones son una buena opción para leer archivos con lineas de largo variable o desconocido. Incluso, con algo de cuidado, se pueden leer archivos creados en otros sistemas operativos (Windows/MS-DOS). En la manpage hay un ejemplo de uso.
Estas funciones son una buena opción para leer archivos con lineas de largo variable o desconocido. Incluso, con algo de cuidado, se pueden leer archivos creados en otros sistemas operativos (Windows/MS-DOS). En la manpage hay un ejemplo de uso.
Etiquetas:
C,
Desarrollo de Software,
Linux,
UNIX,
Windows
sábado, 19 de marzo de 2016
Punteros a Cadenas en C
Estoy escribiendo una biblioteca en C para levantar archivos de texto. Mirando la documentación de getline(3) me entraron dudas sobre punteros. He trabajado poco en C, buen momento para repasar.
Esta discusión me refresco las diferencias entre char * y char**. Esta pagina es bastante didáctica, con muchos ejemplos. Y esta discusión cubre Arrays de cadenas.
Etiquetas:
Administración de Sistemas,
C,
Desarrollo de Software
Suscribirse a:
Entradas (Atom)