Entradas

Mostrando las entradas etiquetadas como C

C elements of Style

Programar es análogo a escribir. De pequeños aprendemos poner letra tras letra para formar palabras y estas forman frases.  Análogamente quien aprende a programar escribe programas cortos, aprendiendo a manejar archivos o familiarizarse con las estructuras de control.  Cuando pasamos la etapa de programas cortos, de unos cientos del lineas, a programas más complejos, bibliotecas o sistemas completos es necesario aprender a estructurar estos programas.A lo largo del ciclo de vida un programa este va a sufrir modificaciones. Para poder modificar un programa es necesario entender su funcionamiento, hablamos allí de "código legible" . Hay quien compara el código difícil de leer con un plato de tallarines , hablamos de "spaghetti code" . En producción escrita se habla de "estilo" para redactar bien y con propiedad. Si hablamos de programar también se habla de estilo. Y pasa por cosas que escuchamos hasta el hartazgo: comentar el código, nombres de var...

Humble Bundle 2016

Tengo idea de que leí hace años de Humble Bundle , si no me falla la memoria en el blog de Fernando Briano . Como la oferta eran juegos, no le presté atención. Años atrás Rodolfo Pilas escribió en su blog sobre otra oferta de juego para jugar en el navegador , tampoco me llamó la atención. Hasta hoy, que leo una entrada en el blog de Rodolfo este año hay un bundle de libros de UNIX, de la editorial O'Reilly . Para quienes trabajamos en Linux/UNIX esta editorial no necesita presentación. La idea de Humble Bundle es que paguemos por el Bundle lo que entendamos razonable. Desde U$S 1, podemos llevar 5 libros, por U$S 8 o más se agregan 7 libros más. Pagando U$S 15 o más nos agregan 4 libros más, estos últimos para mi son "esenciales"; esos que si trabajas en Linux/UNIX deberías tener a la mano siempre, agregaría a estos 4 últimos Network Warrior .  La oferta es por tiempo limitado (termina en 5 días) , mis 8 lectores que quieran beneficiarse pueden verla aca...

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 getl...

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.

Ayudas para programar en C

Imagen
Estoy escribiendo un pequeño programa en C , para sacar texto desde un archivo binario. Estaba necesitando refrescar algunos conocimientos y el particular algunas funciones de la biblioteca estandar . Un recurso obligado a tener a mano es El lenguaje de Programacion C , también conocido como el " Kernighan y Ritchie ". Un libro que intimida y asusta al novicio, pero un invaluable ayuda como referencia. El Lenguaje de Programación C, segunda edicion. No encuentro en mi casa el libro de marras, perdido entre tantas cosas que aun no acomodé desde la ultima mudanza. Buscando recursos en linea encontré esta referencia de la biblioteca estandard . Tiene buenos ejemplos, es una suerte de man versión hipertexto.

Advanced Linux Programming

Imagen
El titulo de este libro, publicado por New Riders ,  lo describe completamente. Tratando de resolver un problema en el trabajo, tuve que repasar el funcionamiento de la memoria compartida . Es un libro orientado a programadores con conocimiento de C . Buscando recursos en linea, encontré que los autores del libro lo dejaron en linea para descarga . El libro cubre temas clásicos en libros de esta temática, como los de Richard Stevens . Es interesante que trata temas como hilos o utilizar Assembler en linea en programas en C. En lo personal me sigue gustando más Advanced UNIX Programming , de Richard Stevens. Eso no desmerece a este libro que es muy recomendable. Cuenta con el valor agregado adicional de estar disponible para descarga y consulta en linea.