martes, 10 de octubre de 2017

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 variables y  funciones claros, acordes al contexto y tarea. 

El Kernel de Linux tiene un documento con pautas para sus desarrolladores: Linux Kernel coding Style. Las pautas están inspiradas fundamentalmente en El lenguaje de programación C, de  Kernighan y Ritchie. Un viejo libro, escrito por Kernighan y Plunger, sobre el tema es The Elements of Programming Style. Un libro viejo, con muchos ejemplos en Fortran, pero con una serie de lecciones aun validas y aplicables en lenguajes mas modernos como Python o Go. Lo menciono ademas por haber influido Libros y Papers sobre el tema. Uno de esos Papers es Recommended C Style and Coding Standards

Hace algunas semanas buscando otra cosa llegué a la página de Steve Oualline, autor con varios libros publicados sobre C, C++ y PERL. Tengo (y lei) Practical C Programming y Practical C++ Programming. Me impresionó muy bien cuando los leí por el énfasis en escribir programas claros, bien documentados y mantenibles. En el sitio del autor me encontré una copia de C Elementos of Style, de rápida lectura y muy recomendable.

http://www.oualline.com/books.free/style/index.html

viernes, 6 de octubre de 2017

Pan de Banana

El pan de Banana es de los llamados Panes rápidos, utilizan polvo de hornear en vez de levadura biológica. Este pan tiene origen en USA, en la década de los años 30 del pasado siglo. Una de las explicaciones de su origen afirma que lo inventaron amas de casa, como una forma de aprovechar bananas demasiado maduras para su consumo.

En una tarde lluviosa, buscando hacer algo distinto y rápido, encaré una receta de pan de banana, que saqué del Libro del Crandon. A la que hice algunos cambios: sustituí parte de la harina por harina integral y la manteca la cambié por aceite vegetal; este ultimo usé aceite de Girasol, lo que tenia en casa en ese momento; puede ser interesante hacerlo con aceite de oliva.

Tamizar y Mezclar:
  • 1 y 1/2 Taza de Harina de Trigo (340 Gr)
  • 1/2 Taza de Harina Integral  (110 Gr.)
  • 1 cucharada de polvo de Hornear (10 Gr.)
  • 1/2 Cucharadita de Sal
  • 1/2 taza de Azúcar (100 Gr)
 Mezclar en otro Bowl:
  • 2 Huevos batidos
  • 50 ml de Aceite (usé Aceite de Girasol)
  • 1 Taza de Bananas en puré. 
Mezclamos los ingredientes líquidos con los secos y vertemos en un molde enmantecado. Luego llevamos a horno caliente  (180 grados) por unos 50 minutos.

Pan de Banana recien desmoldado  (Foto del autor)

Conclusiones

El pan es agradable de gusto, apto para untarlo o utilizarlo en Sándwiches. Se puede tostar, si bien no es usual esto último. Envuelto en film se conserva varios días.  Hay variantes de esta receta, vi en un envase de salvado una receta interesante y otra en el blog de Silvia Pirez, concursante de la primera edición de MasterChef Uruguay. Esta última receta utiliza levadura biológica, lo que la hace interesante para probarla.

miércoles, 7 de junio de 2017

Listar Esquemas y Tablas de Oracle

Una de mis tareas laborales es fungir como DBA de una base de datos Oracle. Para un nuevo proyecto necesitaba crear un usuario y darle a ese usuario permisos de SELECT sobre todas las tablas de un Esquema.  Estuve investigando y llegué a algunas consultas útiles, pero todo repartido en varios sitios. 

Listar todos los SCHEMAS

Esta consulta la encontré en sitio de Burleston Consulting, un referente para todos los que tenemos que lidiar con bases de datos Oracle. Si nunca visitaron el sitio vale la pena hacerlo. La consulta la encontré aquí

SELECT DISTINCT owner AS SCHEMA
FROM dba_segments
WHERE owner IN (SELECT username  

                FROM dba_users 
                WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))
ORDER BY owner ASC;

Listar todas las tablas de un SCHEMA

Encontré varias posibilidades para resolver esta consulta. De todas esta es la que me convenció más, la  saqué de una discusión en stackoverflow.

SELECT DISTINCT owner, object_name
FROM all_objects
WHERE object_type = 'TABLE' AND owner = '[PROPIETARIO_SCHEMA]'

Listar todas las tablas de todos los SCHEMAS

A partir de las dos anteriores hice una consulta que me lista todas las tablas de todos los schemas.
 
SELECT DISTINCT owner, object_name
FROM all_objects 
WHERE object_type = 'TABLE' AND
owner IN (SELECT username
          FROM dba_users 
          WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))
ORDER BY owner ASC;

viernes, 2 de junio de 2017

Accesorios Utiles para el auto

Empecé este articulo a fines del pasado año, comienzo del verano. En esta parte del mundo, muchos se toman vacaciones en verano. Es buen momento para hablar de algunos accesorios que compré para mi auto, que me han sacado de apuro varias veces.

Cables de Puente

Los cables para hacer puente permiten arrancar un auto cuya batería está totalmente descargada. Llevar un juego de estos cables me ha sido de gran utilidad, tuve un problema eléctrico en el auto que descargaba la batería. Tengo un servicio de auxilio mecánico, pero la demora en atender puede llegar hasta un par de horas. Con los cables y otro auto podemos salir airosos en pocos minutos.Es importante comprar cables de buena calidad, estos no suelen encontrarse en grandes superficies (supermercados). Por consejo de los mecánicos del auxilio los compré en una casa de repuestos. No son más caros que los del supermercado, nunca me fallaron (los utilicé reiteradas veces).

Arrancando un auto en puente (de wikipedia)

Lanza de Remolque 

La lanza de remolque permite remolcar un auto en forma segura y confiable.  Una vez mi auto falló, me remolcó un compañero con su camioneta auxiliado de una lanza. La experiencia fue bastante mejor que previos remolques, con Cintas o viejas cuerdas. La distancia entre ambos autos se mantiene constante, se puede circular a velocidades relativamente altas. Este compañero de trabajo dice haber remolcado a 80 Km/h. Meses después de esa experiencia, compré una lanza de remolque, también en una casa de repuestos. Estas lanzas se desarman en tres piezas, para facilitar guardarla en el baúl de nuestro vehículo.

Spray para reparar Pinchaduras

Hace muchos años que conozco la existencia de estos  sprays. Nunca los había visto en venta en Uruguay, hasta principios del año pasado. Lo que prometen estos sprays: a una goma pinchada la inflan y sellan la pinchadura. Se puede circular a velocidad moderada (no más de 80 Km/h) hasta llegar a reparar la cubierta. No lo he probado aun, espero no tener que hacerlo.


Días atrás, en la góndola de ferretería del supermercado, encontré otro producto que vale la pena mencionar. Este producto se aplica a una goma sana, en caso de pinchar sella la pinchadura evitando que la goma se desinfle. No tengo experiencia con el producto, hay que reconocer que es interesante. 

Linterna

La linterna es de esas cosas que me acuerdo cuando me hace falta de ella. Noches lluviosas buscando una dirección en una calle mal iluminada. Mas recientemente, salir a buscar una amiga de la familia que se extravío en la noche, tratando de llegar a nuestra casa. Son situaciones que me hicieron echar en falta una linterna. No tiene por que ser grande o sofisticada (estilo maglite). Encontré una linterna económica, que utiliza cuatro pilas D. La compré inmediatamente y la deje en la guantera del auto. Cualquier linterna es mejor que no tener ninguna, hay que revisarla periódicamente, acordarse de cambiar las pilas al menos una vez al año. Si optamos por pilas recargables, es conveniente probar la linterna periódicamente.
Linterna


Semanas atrás, revolviendo en la liquidación de una cadena de ferreterías, encontré un faro piloto muy barato.  Es otra alternativa, a mi entender más limitada que la linterna pero no menos útil.

¿Que Llevar? 

Obligatoriamente una auxiliar (neumatico de repuesto) en buen estado (¡revisarla antes de salir!), gato y baliza. En Uruguay por ley debemos llevar un botiquín de primeros auxilios. A donde vamos, las posibilidades de inconvenientes en la ruta y nuestras posibilidades económicas nos dictaran que agregar en el auto. El celular cargado, y un cargador para auto, pueden transformar un percance en una anécdota del viaje.