Feb 252018
 

Cuando se trabaja con TDA se acostumbra a separar las declaracciones y las definiciones, en el momento de implementar el TDA en el Lenguage de Programación C++ las declaraciones se escriben en archivos .h y las definiciones archivos .cpp, usualmente en directorios include y src respectivamente.

Si se está usuando Visual Studio Code, VSCode o simplemente code,  será necesario decirle al editor donde están los .h, aunque también al incluir el archivo el VSCode mostrará un indicador para hacernos saber que no encuentra en .h en su camino de búsqueda (includePath). En la Figura 1 se muestra el indicador por medio de un pqueño bombillo amarillo:

Figura 1 Indicación de archivo no encontrado en el include Path

Si se da click sobre el indicador el VSCode ofrecerá editar la configuración del includePath, eso se vé en la imagen Figura 2 siguiente:

Editar includePath

Figura 2 Editar IncludePath

Se selecciona Edit “includePath” setting, éste abre el archivo  c_cpp_properties.json de configuración y puede agregar el directorio donde se encuentran nuestros archivos .h con las declaraciones. Usualmente trato, en la mayoria de los casos, que los archivos .h con las declaraciones se encuentren en un directorio inmediatamente encima del directorio de trabajo llamado include, sólo falta agregar la línea indicando la posición en la sección includePath del sistema operativo correspondiente. En mi caso busco la sección del sistema operativo Linux y alli agrego

“${workspaceRoot}/../include”,

Tal cual como se muestra en la figura 3:

 c_cpp_properties.json

Figura 3 Edición del archivo c_cpp_properties.json

Cualquiera duda seguimos a la orden (y)

 

Ago 092016
 
Sistemas Operativos

Sistemas Operativos

 

Al revisar el calendario encontramos que hay día de la madre, día del padre, día del amigo, del bombero, del médico, del abogado, …, y así una larga lista de días para rendir un homenaje a quien se lo merece. Si algún día los informáticos decidiésemos establecer un día para reconocer la labor a uno de nuestros mejores colaboradores ¿quién debería ser el primero de nuestra lista? Para mi sería el humilde y siempre disponible vi, para otros su compilador, su biblioteca preferida, su editor de gráficos, … y así comenzaría otra larga lista de programas importantes en nuestra vida de informáticos. Tratando de ser objetivo hay uno que siempre está allí de forma callada haciendo su labor desde que encendemos nuestro equipo hasta que lo apagamos, o lo ponemos en modo de hibernación, ese programa de servicio no es otro que el Sistema Operativo.

Si buscamos una definición podemos resumir la del Profesor A. Silberschatz  que lo ve como una interfaz entre el hardware y el usuario. Otra importante definición obligatoria es la del Profesor Andrew Tanenbaum, que nos habla de la misión del Sistema Operativo como herramienta de control del hardware y como proveedor de la base sobre la cual se puede escribir los programas de aplicación.

Por el lado de nuestros Profesores de habla hispana tenemos la visión del Profesor Jesús Carretero, que nos habla de como el Sistema Operativo nos facilita el uso del computador de una manera segura y eficiente. Así pudiéramos seguir citando a Profesores del área, y hasta llegar a la definición que nos da la wikipedia.

Sistemas Operativos

Sistemas Operativos

 

Cuando hablo de estos temas en clase me emociono bastante y cuento mi experiencia personal desde mis primeros programas en Fortran 77, eso fue hace casi unos 30 años, cuando en nuestra Universidad el trabajo fuerte de procesamiento de datos estaba a cargo de un Computador Burroughs, éste requería cerca de un salón de unos 50 mts cuadrados y que era accesado por medio de terminales conectados por cable serial. Haciendo de interprete de comandos (shell) se tenía algo llamado CandE . Lo duro de esto, no era la necesidad de usar ese duro interprete, lo incomodo es que al tener que enviar datos a un archivo se debía conocer la dirección del archivo escrita como una serie de caracteres en formato hexadecimal.

Y así se fue saltando de equipo en equipo, ya no era un Mainframe sino que comenzaron los computadores de escritorio a poblar nuestras mesas. El problema fue que el aprendizaje obtenidos en el uso del Mainframe poco servía con una EPSON con CP/M, o una NCR Decision Mate, o con una Apple Macintosh o con una moderna y poderosa PC con su Intel 8088.

Lo que quiero hacer énfasis es el trauma de los informáticos de esa época, ya que cada nuevo hardware implicaba un nuevo aprendizaje tanto para si eras usuario y más para si eras programador. En esté último punto es la razón por la que quiero hacer un homenaje al Sistema Operativo actual, no tanto en la definición a las que hice referencia al inicio de este post, sino a mi propia definición.

Para mí el Sistema Operativo es un “Sistema programado encargado de gestionar los recursos del hardware, permitiendo una visión abstracta que da origen a una máquina virtual”. Es esa visión abstracta la que nos habla de una máquina que no es ninguna en especifica y es muchas a la vez. Esa sensación de comodidad que me dio al usar una SUN Sparc con Sun OS y pasar a una NCR con System V y de allí al una PC con UNIX SCO. De verdad que se le debe agradecer a los Sistemas Operativos que al presentar un paradigma común independiente del hardware nos permite hacernos sentir cómodos y seguros.

Este tipo de beneficios se aprecia hoy en día y con mucha más fuerza que antes, lo podemos ver sobre todo en las plataforma móviles. Específicamente hago referencia a las que usan el Sistema Operativo Android. Es conocido que varios fabricantes optaron usar este sistema en sus equipos, esto conlleva a que si una persona decide cambiar de modelo o de marca pero mantiene el mismo Sistema Operativo el efecto negativo por el cambio disminuye, ya que en poco tiempo el usuario puede encontrar la mayoría de sus aplicaciones preferidas en el nuevo equipo.

Es esta característica de Máquina Virtual provista por el Sistema Operativo que destaco en mi definición. Creo que es tal vez el aporte que ha permitido la masificación del uso computadores y smartphone.

Esta ventaja la podemos aplicar a nuestros desarrollos de software, usando paradigmas que sean de dominio público como mecanismo para aumentar el uso de un producto, ya que es capaz de reducir su curva de aprendizaje. Ejemplos que podemos destacar son por ejemplo los navegadores web, donde la opciones de uso se encuentran en los mismos sitios en diferentes aplicaciones, de hecho hasta los mismos atajos de teclado se comparten. Por lo que una buena recomendación es tratar de permitir el uso de un paradigma conocido como opción para que los usuarios que deseen usar la aplicación puedan hacerlo en el menor tiempo posible.

 

El programa que oculta al programador la verdad acerca del hardware y presenta una visión bonita y sencilla de archivos con nombres que se pueden leer y en los que se puede escribir, es por supuesto, el sistema operativo.

A. Tanenbaum

May 102016
 

Rebelión en la granja (en inglés, Animal Farm) es una novela satírica del británico George Orwell publicada en 1945, en donde se relata los hechos ocurridos durante la rebelión de los animales de la granja Manor, en la cual expulsaron a los humanos que utilizaban despiadadamente a los animales de la granja y se crearon mandatos donde se instauraba la enemistad con el hombre y su manera de ser, a no adoptar ningún vicio de los humanos, y recordar que todos los animales siempre serán iguales y deberán ser respetados por igual. Los cerdos, siendo considerados los animales más inteligentes, tomaron el control de la misma.

Dentro de los cerdos se destacan Snowball, un cerdo vivaz e ingenioso, Napoleón, un verraco grande y feroz y Squearles, el más persuasivo y excelente orador. Napoleón, ambicioso de poder, expulso por la fuerza a Snowball de la granja, quedando el solo al mando con la ayuda de  Squearles.

Durante el desarrollo de la fábula se nota claramente la referencia hacia el populismo y manipulación de la historia, el pueblo y de los recursos, que fácilmente podemos comparar con la situación actual del poder en Venezuela. Ejemplo de esto es como Squearles cambiaba constantemente la historia a conveniencia de Napoleón y recordaba frecuentemente las desdichas que vivían en el régimen de los humanos, así como la poca memoria que tenían la mayoría de los animales y que gracias a la pasividad de estos, es que los cerdos lograban manipularlos, y como Napoleón a pesar de promover un estilo de vida frugal y trabajadora para el resto  de los animales, él junto con su especie, llevaba una vida de lujos y placeres.

Otro punto importante es la masacre de todos aquello animales que se atrevían a pensar de forma distinta y las campañas populistas donde repetían constantemente que se encontraban en mejores situaciones que años atrás y se inventaban cifras y escenarios muy distintos de los reales.

Todo esto ocurre en la realidad actual venezolana en donde igualmente se justifican las malas decisiones del gobierno, con el “No volverán” los que gobernaban regímenes anteriores, donde los personas que se encuentran al mando predican una vida socialista, pero ellos viven una vida capitalista, donde tenemos centenares de presos políticos por pensar diferente y todas las calles de nuestro país están adornadas con campañas políticas del gobierno y proyectos que algún día se realizaran, y además en promedio una hora diaria  es dedicada a la cadena nacional en la cual se cuentan historias de progreso muy ajenas a la realidad.

Patricia Rivas

 

Feb 192016
 

 

Siempre que llego a esta parte del curso de PR2 busco donde está la documentación de los principales Widgets y Layouts de Qt para usarlos desde C++. Esta vez voy a ponerlo en esta entrada así que el próximo semestre sabré donde está de forma más rápida.

 

 Widgets and Layouts

Tomado de Qt Documentation

Feb 242015
 

La siguiente instalación es sobre una máquina recien instalada con Ubuntu 14.04, instalé esta versión ya que el el LTS mas reciente para la fecha.

Pasos:

  1. Instalación de C++:
    sudo apt-get install g++
  2. Bajar el Qt 5.4.1 y Qt Creator 3.3.1 (versiones actuales) desde http://www.qt.io/download-open-source/#section-3
    Si estás desde la RedULA puedes bajarlas de estos enlaces: Qt 5.4.1 y Qt Creator 3.3.1
  3. Instalar el Qt bajo /opt con:
    sudo ./qt-opensource-linux-x86-5.4.1.runAl ejecutarlo dío el siguiente error:

    ./qt-opensource-linux-x86-5.4.1.run: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory

    Para corregirlo basta con instalar la biblioteca faltante con:

    sudo apt-get install libsm6:i386
  4. Intentar instalar de nuevo con:
    sudo./qt-opensource-linux-x86-5.4.1.run
  5. Instalar Creator también bajo el directorio /opt
    sudo ./qt-creator-opensource-linux-x86-3.3.1.run

 

Listo el Qt y el Creator para usarse  😀

 

Jul 032013
 

 

Ghost Script Logo

Mi vieja impresora HP DeskJet tiene problemas para imprimir  archivos PDF en escala de grises por un problema de “Filter Failed”, pero si imprimo en modo a color lo hace sin problemas, por lo que busqué la forma de convertir un archivo PDF a  escala de grises. La solución fue usar el siguiente script basado en gs

gs -sDEVICE=psgray \
    -dNOPAUSE -dBATCH -dSAFER \
    -sOutputFile=archivo_de_salida.ps archivo_de_entrada.pdf

Donde archivo-de_entrada.pdf es el archivo a convertir  y archivo_de_salida.ps es el nombre del archivo en escala de grises.

May 302013
 

Gravatar Logo

Para que tu avatar aparezca al dejar un comentario en este blog o en cualquiera hecho con Wordpres, Flatpress o similares  sólo hay que registrarse en http://www.gravatar.com y subir la imagen del gravatar de tu elección.

Después, para que se muestre tu avatar al dejar un comentario, tienes que usar el mismo e-mail con el que te registraste en Gravatar.

[wpvideo HNyK67JS]

May 132013
 

Qt LogoAl probar Qt 5 desde la consola de comandos en Ubuntu 13.04 obtuve el siguiente error:

error fatal: QApplication: No existe el archivo o el directorio

Al buscar  en Internet encontré que se le debe indicar al archivo .pro que use widgets, esto se hace agregando al archivo .pro generado por qmake la siguiente línea

QT += widgets

Leer el artículo completo »

Dic 082012
 

Tangery

Desde hace días he estado probando alternativas para compartir varios Gygas de música que tengo en un PC en mi casa. Los dispositivos clientes son otros PC con Windows, un portátil con Ubuntu y celulares con Android conectados por medio de un router con WiFi . La primera alternativa fue copiar, pero eso de copiar y borrar luego no me pareció óptimo. Después probé con Samba y NFS y tampoco me pareció lo ideal. En realidad quería montar un servidor DAAP  y clientes que tomaran el flujo de audio. Mi primera prueba con forked-daapd, pero no me funcionó de forma transparente.

Leer el artículo completo »

Nov 222012
 


Enlace al video en TED
Transcripción en castellano por Irene Ramos  :

Como muchos de Uds., soy una de las afortunadas. Nací en una familia en la que la educación lo impregnaba todo. Soy la tercera generación de doctores, hija de dos académicos. De niña jugué alrededor del laboratorio universitario de mi padre. Así que se daba por hecho que asistiría a una de las mejores universidades, lo que me abrió la puerta a un mundo de oportunidades.

Leer el artículo completo »

 Publicado por en 9:45