Magazine

  • ¿Cuánto vale una impresión 3D?

    ¿Cuánto cuesta un impresion 3D?

    ¿Cómo podemos calcular los costos de desarrollo de un prototipo o del servicio de impresión.?

    ¿se cobra por minuto?

    ¿se cobra por gramo?

    ¿por la cara del cliente?

    Con este vídeo daremos una guía con los elementos mínimos para determinar el costo de un impresión, ya sea para ofrecer el servicio o para la elaboración de un proyecto personal. Espero que el ejercicio permita visualizar sí estamos obteniendo ganancias por el uso de esta tecnología, o por el contrario, estamos perdiendo dinero por ignorancia.

    {youtube}https://www.youtube.com/watch?v=lP2oZVUBluY{/youtube}

    ¿Cuánto vale una impresión 3D? 

  • ¿Por qué NO usar proveedores de alojamiento compartido ("shared hosting")?

    racks

    Si tomas tu proyecto en serio o eres una empresa, no lo hagas. Si estas arrancando, no tienes los recursos, ni todos los conocimientos requeridos para administrar el producto que estás ofreciendo y no vas a manejar datos sensibles de usuario final, puede ser una alternativa interesante.

    Este tipo de servicios puede tranquilamente soportar varios miles de visitantes al mes para una página web alojada en ellos (hemos visto indices de hasta 10 mil en PROVEEDORES DECENTES). Además de que instalar un wordpress, al mejor estilo Windows de los 90: "siguiente>siguiente>siguiente..." es confortable...¡pero no te conformes con eso! (a menos que estemos hablando de un pasatiempo) y mucho menos si hay un proceso de negocio que depende del aplicativo que se quiere publicar, así sea a nivel de comunicación.

    Aunque en los términos de servicio se exprese que algunas características son ilimitadas, físicamente es imposible garantizar eso. Se evidenciará si comienzas a exigir realmente del servicio (a usarlo a fondo). En el mejor de los casos se degradará la calidad del mismo, lo normal es que empiecen a aparecer condiciones de la letra pequeña que nadie lee.

    Si habláramos de alojamiento para humanos, este modelo sería un inquilinato, nunca sabrás realmente con quien compartes tu espacio. En términos sencillos, tu aplicación, página o servicio, compartirá un servidor con otros miles de usuarios. Este modelo de alojamiento será más barato que una instancia de un Servidor Privado Virtual (VPS por sus siglas en inglés), pero no tendrá su flexibilidad. Desde luego en un alojamiento tipo VPS tú tendrías que asumir muchos aspectos de configuración, aún hasta tener que contratar a alguien que lo haga por tí, pero este esfuerzo a largo plazo será beneficioso si tu proyecto escala en tamaño y carga de trabajo.

    Es necesario decir que actualmente los proveedores (DECENTES) de alojamiento compartido, se toman la seguridad muy en serio, pero la demanda sobre este tipo de servicios hace que por defecto sea díficil garantizar que no existan eventualidades, y que estas sean atendidas a tiempo. Estamos hablando de muchos sitios alojados en sus servidores (miles para que sea viable su negocio), cada uno con particularidades técnicas, de administración, carga de uso, buenas y malas prácticas,  etc.

    En cuanto al precio, existen proveedores de VPS que tienen valores similares o hasta más baratos que los ofrecidos por un alojamiento compartido, desde luego con características muy básicas, pero suficientes para que un proyecto pequeño arranque.

    A medida que el sitio/aplicacion/proyecto crece, así mismo crecen los requerimientos de ajustes sobre el servicio de alojamiento, que rara vez serán posibles atender en un alojamiento compartido, sin acudir a triquiñuelas técnicas...¿cuantos como tú estarían haciendo ese mismo tipo de ajustes, no muchos de ellos responsablemente?. Después de un rato se desperdicia más tiempo intentando ajustar un servicio limitado o tratando de obtener soporte, que desarrollando el aplicativo que se quiere alojar.

    Un shared hosting NO es por definición una mala opción, simplemente se debe estar consciente de que las características "ilimitadas" que ofrecen no pueden ser reales (en la práctica, aparentemente lo son porque alojan muchos proyectos pequeños que nunca las usan...o las usan peligrosamente mal). Son entornos más susceptibles a eventualidades de seguridad y soporte, por su modelo de negocio, donde básicamente se tiene una máquina que comparte alojamiento para miles de usuarios/páginas, con nichos de negocio que van desde contenido para adultos, redes de marketing de enlaces, pymes, blogueros, etc. El soporte generalmente se terceriza (lo que no es malo si se cumplen los tiempos de respuesta ofrecidos) y en algunas ocasiones lo que se tiene es un proveedor que no tiene su propia infraestructura, sino es un re-vendedor del servicio. Aspectos relacionados con la escalabilidad y desarrollo a la medida estarán muy limitados.
     
    Otra alternativa sería usar servicios de alojamiento administrados específicos para la herramienta que usas. La plataforma wordpress.com  es un ejemplo de ello. Ofrece una alternativa para la comunidad de usuarios de su CMS (Content Management System). Más que un alojamiento compartido es un tipo de SaaS (Software as a Service).

    En resumen, NO recomendamos continuar usando este tipo de servicio, y si es la única opción viable, simplemente se deberían conocer las características contratadas, leer muy bien los términos ofrecidos y si hay una empresa intermediaria (cómo cuando tercerizas la fabricación de tu aplicación), se recomienda tener un contrato de soporte que garantice la atención responsable de eventualidades. En shared hosting obtienes lo que estás pagando (no esperes maravillas), tuvo su época dorada hasta la popularización de las nubes públicas (~2008 hacia atrás).

  • ¿Qué es Economía Colaborativa?

    unUsed (original: https://www.flickr.com/photos/kevinkrejci/5186783602/in/photolist-8UkC4u-pxMjNs-9fmdiK-bpzKrR-kpForD-7h6VhK-bVjdcF-pijMgQ-4uuwLf-qrr6W9-ds47kK-qqStM3-FDbra-qwF4xb-pzMU8Y-8X3xB5-8ij5dm-rpuW5A-9M2QU4-px8hdd-6pEbny-dQKqSg-aDEfNV-9a8wF9-97SKe7-nBjSZJ-dRfShM-obnLxN-qr1Te2-drDUAg-qr1TzT-q9KsTc-sShJZg-piiRHg-qoUMKA-dnf1dp-qr8qof-qoUK6s-q9D9bf-ee9Nhd-pucxT9-moTsNj-q9LTfp-q9LWMe-q9Kofz-axVcDt-q9D2uE-qoUV55-moSnri-9f8rhM)

    Mucho se ha hablado de Economía Colaborativa, sin embargo hemos detectado que no existe un consenso alrededor de su definición. Su popularidad obviamente surge del auge de plataformas tecnológicas icónicas tipo Uber o Airbnb.

    Nuestra aproximación a la academia tradicional tampoco nos muchas luces, y si lo hace tienden a estar alejadas de la realidad productiva o social, tienden a ser referencias oscuras para los seres humanos del común, incluyendo autores con nombres sofisticados que confunden aún más, o simplemente son una indexación de lo que comunidades digitales o el sector privado de frontera está haciendo sin pedirle permiso a nadie, por la noble justificación universal de que les funciona.

    El concepto puede estar en construcción o más bien en redescubrimiento porque es tan antiguo como el ser humano y el comercio.

    A primera vista básicamente se podría definir como un sistema económico en el que se comparten e intercambian bienes y servicios, principalmente por medio de plataformas digitales. Pero siendo más especificos la inclusión de una plataforma digital sólo sería un caso particular de lo que se puede comprender como economía colaborativa, lo que si es claro es que comprende la aplicación de una estrategia de gestión de recursos, donde sin comprometer necesariamente y directamente un capital económico específico, de manera concertada, se desarrollan actividades, tareas y proyectos, aprovechando recursos subutilizados u optimizando el uso de los mismos (espacios físicos, agendas de eventos, talento humano especializado, transporte, ropa, herramientas, tiempo, etc.), integrando en algunos casos voluntariado, ayuda mutua y principalmente intercambio.

    Ahora, reiteramos, aunque el intercambio, uso compartido es un factor común, no se queda por fuera el flujo de capital en metálico, aunque bien podría dejarse fuera de la ecuación si nos vamos al extremo de un banco de tiempo o una plataforma de trueque de artículos usados.

    ¿Que es entonces Economía Colaborativa?

    Es la forma, el medio, o la práctica orientada a satisfacer diversas necesidades humanas mediante la utilización de recursos que generalmente son escasos y pueden ser destinados a diferentes usos, integrando de manera concertada, bien sea por plataformas digitales u otros medios de coordinación, estrategias de intercambio, voluntariado, uso compartido, monedas sociales, divisas digitales o pago por insumos y servicios de matchmaking.

    El último caso (insumos y matchmaking) es lo que le justifica a Uber existir y cobrar sin ser una empresa de transporte, porque su negocio no es el transporte y se debe cubrir el valor de los insumos del proceso (el pago a quien prestó su vehículo para su funcionamiento).

    La traducción al español de matchmaking no es muy elegante para estrategias de marketing, pero es perfecta, sería algo asi como un servicio de casamentero. Tiene mucho sentido porque volviendo al ejemplo de Uber o Airbnb es lo que realmente hacen, unen de manera efectiva y eficiente una necesidad específica con una oferta específica en un tiempo específico, y ese modelo se puede aplicar a casi cualquier necesidad humana, la plataforma digital es el sistema nervioso que ofrece la inteligencia colectiva para que eso pase.

    Aunque sin sofisticar tanto el tema, quitando el distractor de las herramientas digitales, la economía colaborativa ha existido desde siempre y por ejemplo en las sociedades andinas avanzadas con su visión sistemica de la realidad, era común y funcionaba bien, tanto así que no necesitaron tener una moneda hasta la llegada de la colonización europea, con las consecuentes situaciones de endeudamiento, escazes que el uso de una moneda y la propiedad privada convencional nos trajeron.

    Lo anterior no tiene nada que ver con comunismo o socialismo, lo que sucede es que para las lógicas económicas en las que fuimos criados es simplemente irracional que usted pueda compartir el uso de su vehiculo privado (SU VEHÍCULO, el que pagó o está pagando con tanto esfuerzo), siendo aún más irracional que usted se suba a un vehículo de un desconocido con la confianza de que no va a ser atracado (en el mejor de los casos), que no tenga que comprar y acumular herramientas que puede usar por horas desde un banco de herramientas, que en vez de pagar con dinero pueda pagar con tiempo o con servicios y que pueda usar si se necesita una moneda que no haya sido emitida por una autoridad central. Analizando, no es otra cosa sino una forma de gestión de recursos, y le funcionaría a una sociedad capitalista, a una colonial, feudal, comunista, o lo que sea. Es más... estas estrategias son muy comunes en el mercado negro de los comercios capitalistas mas agresivos... creo por eso es que nos generan tanta confianza y han tenido tanto éxito, si a ellos les funciona...

    Aclaramos que si por tu mente esta pasando en este momento la gloriosa idea de montar una plataforma de este estílo, dicho proceso a lo último a lo que se refiere es a la creación de una APP o una página. Esa es la parte más fácil, en realidad estás creando no un sistema tecnológico sino un sistema social y su gestión va más allá de lanzar una cuantas lineas de código o contratar a un programador para materializar tu idea. El tema es más complejo.

    El debate esta abierto, espero los expertos en ciencias sociales y económicas no nos crucifiquen (y los otros expertos tampoco) sin ofrecer antes sus luces en el tema y obviamente estamos abiertos a mejorar dicha definición, por el momento creo que nos funciona bien para los temas que trabajamos en OpenSAI.

  • ¿Que es la grid?

    En realidad me da la impresión de que el término se presta para distintas interpretaciones y hasta confusiones, especialmente cuando hay intereses comerciales en juego. Personalmente creo que no alcanzo a dimensionar el alcance de la idea y la definición puede tornarse aún más difusa si en algún momento se intenta comparar o diferenciar de otra idea muy de moda -la nube-. Ahora, no estoy diciendo que no sean claros los lineamientos y definiciones técnicas convencionales al estilo Wikipedia, me refiero más a las implicaciones reales y el contexto general que la caracteriza.

    Un punto de partida para organizar el asunto son los tres ítems que una grid debería cumplir:

    1. recursos coordinados que no están subordinados a un control centralizado. Una grid integra, coordina recursos y usuarios que operan al interior de distintos dominios de control. Por ejemplo -escritorios vs. centros de computo; diferentes unidades administrativas de la misma compañía; o diferentes compañías- abordando las cuestiones de seguridad, políticas, pago, membresías y demás, que aparecen en este tipo de sistemas. De otra forma, estaríamos tratando con la administración de un sistema local.
    2. uso de interfaces, protocolos, de propósito general y abierto. Una grid está construida de protocolos multipropósito e interfaces que abordan problemas fundamentales como la autenticación, autorización, descubrimiento de recursos y acceso a recursos. Es importante que estos protocolos e interfaces sean estándar y abiertos de otra forma se estaría tratando con un sistema específico de una aplicación.
    3. ofrecer niveles no triviales de servicio. Una grid permite que los recursos que la constituyen sean usados de una forma coordinada para entregar diferentes calidades de servicio, refiriéndose por ejemplo a tiempos de respuesta, rendimiento, disponibilidad, seguridad y/o coasignación de múltiples tipos de recursos que satisfagan necesidades complejas de los usuarios, de tal forma que la utilidad de los sistemas combinados es mayor que la suma de sus partes

    De acuerdo a lo anterior, si se implementa algún tipo de planificador de tareas (sheduler) en un entorno de supercomputación no se estaría hablando de grid. Puede ofrecer cualidades de desempeño no triviales y podría ser un recurso de grid pero no es en sí mismo una grid, aún si los recursos que lo constituyen se encuentren operando en el ámbito de distintas organizaciones (algún tipo de cluster interorganizacional) ya que los recursos seguirían subordinados a un control central, en todo momento se conocería y tendría control sobre cada una de sus partes.

    2414578731 82c451232d

    A diferencia del planificador de tareas mencionado, la Web podría cumplir los 2 primeros items, pero no alcanzaría a ser una grid ya que los recursos que la constituyen AÚN no se coordinan en conjunto para ofrecer calidades de servicio como las del tercer punto.

    Siguiendo con la Web, de la misma forma como en términos muy simplificados, una entidad debe hablar IP si quiere ser parte de Internet, una entidad que quiera ser parte de la grid debería adoptar protocolos, interfaces y políticas propias de la grid, siendo estos de naturaleza abierta y estándar. Esta entidad debería solucionar entonces como mínimo una implementación de los protocolos contemplados en OGSA (Open Grid Services Architecture) del GGF (Global Grid Forum). Una herramienta para lograrlo es el Globus Toolkit desarrollado por la Globus Alliance, que implementa algunos estándares del GGF y otros relacionados a la grid.

    Esta son opiniones, interpretaciones y una traducción parcial del texto clásico What is the Grid? A Three Point Checklist {Ian Foster, Argonne National Laboratory & University of Chicago, Julio 20, 2002}
  • ¿Qué es Propiedad Intelectual Abierta?

    knowledgeCommons

    Los abogados son seres humanos partículares, al igual que los desarrolladores son bichos raros que compilan, escriben y se dedican a hacer funcionar código que tiene implicaciones directas sobre ese intangible común que comprendemos como sociedad.

    La analogía ACTUAL con los desarrolladores de software es totalmente pertinente y directa, cada uno de ellos desde su esfera, se encarga de crear unos marcos de soporte para referenciar, lo que en el imaginario colectivo comprendemos y asumimos como realidad.

    Uno lo hace desde las herramientas tecnológicas que hoy en día se han convertido en el sistema nervioso de organizaciones y sociedades, el otro, desde los constructos sociales (también intangibles como el software) que nos permiten funcionar más alla de nuestra existencia finita.

    Los marcos legales son básicamente código fuente compilado por nuestra sociedad a través de la máquinarias institucionales que conocemos como estado, que es ejecutado por nuestro cerebro, día tras día, a veces sin pensarlo. Las tecnologías de la información son una capa neuronal para esa construcción social, nosotros somos unidades temporales de ejecución e inteligencia, inmersas en algo más grande, que a su vez tendría autonomía e inteligencia (propiedades emergentes en si mismas).

    Nos ha llamado mucho la atención que en nuestro entorno o al menos en nuestro país, aun es extraño hablar de Propiedad Intelectual Abierta, aspecto en el que aparentemente, la última voz la tendría el departamento jurídico (o su equivalente). Creemos que es pertinente enlazar de manera formal el modelo bazar,que desde hace rato ha dado frutos en el mundo digital, donde los cerebros de referencia a primera vista provienen más del área de ingeniería o ciencias duras.

    Los bichos raros de ingeniería tienen que hablarse y coordinarse más de cerca con los bichos raros de jurídica (parece obvio pero no se hace), estando siempre concientes de que lo que produce ese diálogo,  tiene implicaciones críticas para la sociedad, se esta jugando con fuego, no con scripts, ni con letra legal de archivo.

    Hoy por hoy, este Modelo Bazar tiene un sustento legal ampliamente utilizado, aunque no muy bien comprendido en su esencia, por eso mismo debería trascender la esfera técnica nerd o geek hacia las realidades humanas y económicas cotidianas. Debe superar el hippismo, la pasión, la útopia, la ilusión, la inocencia, que de alguna manera se han proyectado desde de las comunidades de software y cultura libre a nivel local (posturas respetables desde luego).

    En OpenSAI hemos estructurado la siguiente definición del concepto, creemos que es funcional, sabemos que hay equipos de trabajo que podrían mejorarla, sin embargo es una base para colocar el tema sobre la mesa (otra más).

    ¿Qué concebimos pues como Propiedad Intelectual Abierta?

    Es un marco formal de gestión de propiedad intelectual basado en licencias que explícitamente otorgan el derecho a usar, estudiar, cambiar, mejorar y redistribuir contenidos, software, información, datos, diseños, que son de propiedad colectiva y/o administrados por una comunidad de usuarios, sin necesariamente exigir permiso previo para ello, ni tampoco necesariamente exigir que se conserve la licencia inicial del producto.

    Las anteriores lineas parecen inocentes, pero tienen unas implicaciones sociales gigantescas, tanto a nivel humano como productivo, cada uno de los conceptos involucrados bien podrían dar para hablar durante varias sesiones, el tema está pues abierto.

    REUTILICESE, ITÉRESE Y ADÓPTESE

  • "StartUP Tools" de SPARKlabs...

    startUpTools22Febrero2015
    Interesante recopilación de herramientas del equipo de SPARKlabs. A primera vista el listado es enorme, lo que más llama la atención es que no se enfoca tanto ni en el área técnica, ni en el área administrativa o de negocios, incluye herramientas tanto libres, como de pago. 

    Creo que para abordar la selección presentada es posible que se necesite al menos un semestre, aquí se les deja el enlace para consulta... 

  • Cambiar la interfaz de Blender 3D al Castellano - Español

    Desde hace algunos días varias personas me han preguntado de que manera podían cambiar la interfaz de Blender al castellano, por esta razón he decidido hacer este pequeño tutorial que espero les sea de ayuda.

    {youtube}https://www.youtube.com/watch?v=edVYzulbzRY{/youtube}
     
  • Catedra abierta de computación

    bannerCatedraEs un espacio de encuentro para seguidores de cursos en linea masivos y abiertos (MOOC por sus siglas en inglés) que se relacionan con nuestra temática. Actualmente esta abierto en Coursera desde la Universidad de Washington el curso "Computación Científica de Alto Rendimiento". Los invitamos a inscribirse, semanalmente nos estaremos reuniendo en las instalaciones de la Universidad Distrital Francisco José de Caldas (Jueves 2pm - 4pm - Biblioteca, Facultad de Ingeniería) para intercambiar impresiones & experiencias.

    Pueden consultar el contenido programático e inscribirse en el siguiente enlace:

     HighPerformanceComputingIma

    footerCatedra
  • CentOS 7.3: ¡necesito actualizar a PHP 7 y no viene en los repositorios por defecto! { Notas de Laboratorio }

    CentOSphp7upgradeSCL

    Problema:

    Tengo una instancia de CentOS 7, con el clásico Apache funcionando y por requerimientos de versiones necesito actualizarme a PHP 7...pero no lo veo en los repositorios.

    Solución utilizada:

    • Utilizando una consola (vuelvo y lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix), iniciamos sesión con permisos administrativos (también se puede usar sudo) y agregamos el repositorio SCL (Software Collections), que incluye versiones actualizadas, como la requerida de php: yum install centos-release-scl
    • Instalamos nuestro php: yum install rh-php70 y las dependencias que necesitemos, se pueden listar con yum list rh-php70\*, en específico se requiere como mínimo soporte para mysql (si se usa) y el manejador de procesos php (FPM-PHP), una instalación básica podría ser: 
      • rh-php70-php-fpm
      • rh-php70-php-mysqlnd
      • rh-php70-php-gd
      • rh-php70-php-pspell
      • rh-php70-php-soap
      • rh-php70-php-bcmath
    • Decirle a apache que use fpm, en /etc/httpd/conf.d/php.conf:

    ...

    <FilesMatch \.php$>

    # SetHandler application/x-httpd-php

    SetHandler "proxy:fcgi://127.0.0.1:9000"

    </FilesMatch>

    ...

    • Si se necesitan configuraciones adicionales: php.ini esta en /etc/opt/rh/rh-php70/php.ini ...para correr el servicio FPM como otro usuario que no sea apache (tal vez nginx), eso se configuraría en /etc/php-fpm.d/www.conf (no olvidar reiniciar servicios)
    • Iniciar el servicio fpm: service rh-php70-php-fpm start (para dejarlo como autoarranque: systemctl enable rh-php70-php-fpm). No olvidar reiniciar apache: service httpd restart.

     

  • Cómo montar particiones LVM desde el modo de rescate (CentOS/Fedora) { Notas de Laboratorio }

    LVM (By Emanuel DussThis vector image was created with Inkscape, and then manually edited by Perhelion. - Own work, CC BY-SA 3.0 de, https://commons.wikimedia.org/w/index.php?curid=11624545)

    Original Image: Emanuel Duss vector image created with Inkscape and manually edited by Perhelion. Own work, CC BY-SA 3.0

    Simplemente cómo nota de laboratorio, porque ya me ha pasado varias veces (y necesito anotarlo en algún lado), en un equipo que usa fedora (también sirve para CentOS) y tiene usuarios creativos, de esos que lo apagan a patadas, dejo para el registro el proceso para montar un Volumen Lógico.

    Después de que el usuario deja el equipo en modo de solicitud de restauración (esa consola negra que pide una constraseña administrativa para escanear los discos y restaurar el sistema)...si se tiene la fortuna de recordar la clave de root, no se tiene claro cómo montar ese maldito y sensual volumen lógico que se hizo cool al momento de instalación (LVM es una nota, pero si se retoma un equipo que no se ha tocado en años, puede quedar uno perdido por unos momentos).

    El procedimiento en consola de recuperación es:

    Revisar los volúmenes lógicos de la máquina:

    lvm vgscan -v

    Activar los volúmenes lógicos:

    lvm vgchange -ay

    Listar los volúmenes lógicos disponibles:

    lvm lvs -all

    Montar el volúmen requerido:

    mount /dev/volgroup/logvol /mountpoint

    Con el volúmen detectado y siendo capaces de montarlo, ya se puede recuperar al menos la información.

    Si por algún motivo se imaginan que este procedimiento es mio...pueees nop, agradezco al amigo Jim Zimmerman por hacer la tarea de registrarlo en su sitio, al menos aquí lo tienen en español, aunque con los comandos eso es irrelevante, y reitero, es una nota personal para no andar buscando en google lo mismo, cada vez que se le hace el favor a mi vecina ( "favor" :P...cuando se hace al derecho, queda uno como el Neo del barrio obrero, la consola negra asusta y si se saben par cosillas se descresta jejeje! ).

  • Corriendo código Fortran sobre Python (Debian) { Notas de Laboratorio }

    22Diciembre2017numpyW

    Como nota de laboratorio, básicamente p2py es una herramienta que permite utilizar código Fortran en scripts de python, aunque tal vez Fortran no es un lenguaje que hoy en día marque una tendencia tecnológica, es un hecho que existen investigadores que tienen desarrolladas rutinas computacionales estables sobre dicho lenguaje, teniendo sentido no reescribir la rueda y continuar su uso desde un entorno python.

    Su instalación sobre un equipo que utiliza una versión de Debian (8.9):

    Para proveer p2py es necesario tener numpy instalado:

    apt install python-numpy

    El tutorial que estamos siguiendo es https://docs.scipy.org/doc/numpy-dev/f2py/getting-started.html. Básicamente intentan correr un código en Fortran que calcula la serie fibonacci. No voy a copiar el código Fortran que ellos usan, lo que si menciono es que localmente en este ejemplo lo hemos guardado como en el archivo "fibonnacci.f" (no olvidar la extensión), intentamos pues correrlo y crear el archivo importable posteriormente desde Python:

    f2py -c fibonacci.f -m fibonacciComp

    Al final de todo el proceso nos genera un error:

    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building extension "fibonacciComp" sources
    f2py options: [ ]
    f2py:> /tmp/tmpHgFRJC/src.linux-x86_64-2.7/fibonacciCompmodule.c
    creating /tmp/tmpHgFRJC/src.linux-x86_64-2.7
    Reading fortran codes...
    Reading file 'fibonacci.f' (format:fix,strict)
    Post-processing...
    Block: fibonacciComp
    Block: fib
    Post-processing (stage 2)...
    Building modules...
    Building module "fibonacciComp"...
    Constructing wrapper function "fib"...
    fib(a,[n])
    Wrote C/API module "fibonacciComp" to file "/tmp/tmpHgFRJC/src.linux-x86_64-2.7/fibonacciCompmodule.c"
    adding '/tmp/tmpHgFRJC/src.linux-x86_64-2.7/fortranobject.c' to sources.
    adding '/tmp/tmpHgFRJC/src.linux-x86_64-2.7' to include_dirs.
    copying /usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c -> /tmp/tmpHgFRJC/src.linux-x86_64-2.7
    copying /usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h -> /tmp/tmpHgFRJC/src.linux-x86_64-2.7
    build_src: building npy-pkg config files
    running build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    customize Gnu95FCompiler
    Could not locate executable gfortran
    Could not locate executable f95
    customize IntelFCompiler
    Could not locate executable ifort
    Could not locate executable ifc
    customize LaheyFCompiler
    Could not locate executable lf95
    customize PGroupFCompiler
    Could not locate executable pgfortran
    customize AbsoftFCompiler
    Could not locate executable f90
    Could not locate executable f77
    customize NAGFCompiler
    customize VastFCompiler
    customize CompaqFCompiler
    Could not locate executable fort
    customize IntelItaniumFCompiler
    Could not locate executable efort
    Could not locate executable efc
    customize IntelEM64TFCompiler
    customize GnuFCompiler
    Could not locate executable g77
    customize G95FCompiler
    Could not locate executable g95
    customize PathScaleFCompiler
    Could not locate executable pathf95
    don't know how to compile Fortran code on platform 'posix'
    warning: build_ext: f77_compiler=None is not available.

    building 'fibonacciComp' extension
    error: extension 'fibonacciComp' has Fortran sources but no Fortran compiler found

    Tiene todo el sentido del mundo, si vamos a compilar código Fortran, se necesita un compilador de Fortran...instalamos uno:

    apt install gfortran

    Intentamos de nuevo:

    f2py -c fibonacci.f -m fibonacciComp

    y se obtiene:

    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building extension "fibonacciComp" sources
    f2py options: [ ]
    f2py:> /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fibonacciCompmodule.c
    creating /tmp/tmpTVbfs7/src.linux-x86_64-2.7
    Reading fortran codes...
    Reading file 'fibonacci.f' (format:fix,strict)
    Post-processing...
    Block: fibonacciComp
    Block: fib
    Post-processing (stage 2)...
    Building modules...
    Building module "fibonacciComp"...
    Constructing wrapper function "fib"...
    fib(a,[n])
    Wrote C/API module "fibonacciComp" to file "/tmp/tmpTVbfs7/src.linux-x86_64-2.7/fibonacciCompmodule.c"
    adding '/tmp/tmpTVbfs7/src.linux-x86_64-2.7/fortranobject.c' to sources.
    adding '/tmp/tmpTVbfs7/src.linux-x86_64-2.7' to include_dirs.
    copying /usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c -> /tmp/tmpTVbfs7/src.linux-x86_64-2.7
    copying /usr/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h -> /tmp/tmpTVbfs7/src.linux-x86_64-2.7
    build_src: building npy-pkg config files
    running build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    customize Gnu95FCompiler
    Found executable /usr/bin/gfortran
    customize Gnu95FCompiler
    customize Gnu95FCompiler using build_ext
    building 'fibonacciComp' extension
    compiling C sources
    C compiler: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC

    creating /tmp/tmpTVbfs7/tmp
    creating /tmp/tmpTVbfs7/tmp/tmpTVbfs7
    creating /tmp/tmpTVbfs7/tmp/tmpTVbfs7/src.linux-x86_64-2.7
    compile options: '-I/tmp/tmpTVbfs7/src.linux-x86_64-2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c'
    x86_64-linux-gnu-gcc: /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fibonacciCompmodule.c
    In file included from /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1761:0,
    from /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarrayobject.h:17,
    from /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h:4,
    from /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fortranobject.h:13,
    from /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fibonacciCompmodule.c:18:
    /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
    #warning "Using deprecated NumPy API, disable it by " \
    ^
    /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fibonacciCompmodule.c:111:12: warning: ‘f2py_size’ defined but not used [-Wunused-function]
    static int f2py_size(PyArrayObject* var,...)
    ^
    x86_64-linux-gnu-gcc: /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fortranobject.c
    In file included from /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1761:0,
    from /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarrayobject.h:17,
    from /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h:4,
    from /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fortranobject.h:13,
    from /tmp/tmpTVbfs7/src.linux-x86_64-2.7/fortranobject.c:2:
    /usr/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
    #warning "Using deprecated NumPy API, disable it by " \
    ^
    compiling Fortran sources
    Fortran f77 compiler: /usr/bin/gfortran -Wall -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran f90 compiler: /usr/bin/gfortran -Wall -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran fix compiler: /usr/bin/gfortran -Wall -ffixed-form -fno-second-underscore -Wall -fno-second-underscore -fPIC -O3 -funroll-loops
    compile options: '-I/tmp/tmpTVbfs7/src.linux-x86_64-2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c'
    gfortran:f77: fibonacci.f
    /usr/bin/gfortran -Wall -Wall -shared /tmp/tmpTVbfs7/tmp/tmpTVbfs7/src.linux-x86_64-2.7/fibonacciCompmodule.o /tmp/tmpTVbfs7/tmp/tmpTVbfs7/src.linux-x86_64-2.7/fortranobject.o /tmp/tmpTVbfs7/fibonacci.o -lgfortran -o ./fibonacciComp.so
    Removing build directory /tmp/tmpTVbfs7

    La compilación es exitosa y tenemos un nuevo archivo fibonacciComp.so. Ahora desde la consola de Python el tutorial ya nos debería funcionar:

    Python 2.7.9 (default, Jun 29 2016, 13:08:31)
    [GCC 4.9.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import numpy
    >>> import fibonacciComp
    >>> print fibonacciComp.fib.__doc__
    fib(a,[n])

    Wrapper for ``fib``.

    Parameters
    ----------
    a : input rank-1 array('d') with bounds (n)

    Other Parameters
    ----------------
    n : input int, optional
    Default: len(a)

    >>> a = numpy.zeros(8,'d')
    >>> fibonacciComp.fib(a)
    >>> print a
    [ 0. 1. 1. 2. 3. 5. 8. 13.]

    Recordemos que en nuestro caso el archivo resultante no se llama fib1.so sino fibonacciComp.so y así mismo se importó en el ejemplo de arriba (sin la extensión ".so").

    Para otras distribuciones habría que ajustar la paqueteria necesaria, en otra nota de laboratorio registraremos el proceso para Fedora.

  • Debian 7: ¿remover LXDE e instalar MATE? { Notas de Laboratorio }

    mateDesktop

    Problema:

     
    Tengo una instancia de Debian 7 (wheezy, antigua versión estable), con el escritorio LXDE instalado, me gustaría instalar el escritorio MATE...
     

    Solución utilizada:

    1. se abre una consola (lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix)
    2. se digita el comando "su -" (al ejecutar nos pedirá la clave de administración)
    3. se instalan los paquetes requeridos para el entorno de escritorio mate: "apt-get install mate-desktop-environment mate-desktop-environment-core mate-desktop-environment-extras"
    4. los anteriores comandos resuelven las dependencias requeridas, preguntando antes de instalar que si deseamos continuar... se oprime la tecla homérica 'y'
    5. después de terminar, se termina la sesión y se puede usar el nuevo entorno de escritorio, es posible que sea necesario seleccionar el escritorio en la ventana de login del lightdm.

    Si [email protected] quedó [email protected], abajo está la sección de comentarios...
  • Empezando a usar Ubuntu Linux 14.04, ¿Y ahora que?


    Ubuntu es un sistema operativo basado en GNU/Linux y perteneciente a la familia Debian, este se distribuye como software libre, e incluye su propio entorno de escritorio denominado Unity.

    Esta orientado al usuario promedio de escritorio, por lo cual su premisa de funcionamiento se basa en la facilidad de uso y en brindar las aplicaciones básicas necesarias para que cualquier usuario pueda ejecutar sus tareas cotidianas en un entorno amigable, sencillo y seguro.

    Este articulo esta pensado para aquellas personas que instalan Ubuntu por primera vez y quieren saber que opciones tiene a su alcance para sacar el máximo provecho a su nuevo sistema operativo.

    A la fecha la ultima versión de Ubuntu Linux es la 14.04 LTS. Esta versión al ser una LTS nos garantiza soporte para actualizaciones de seguridad por un periodo de 3 años.

    1 - Activar los repositorios de software de socios Canonical

    Entrando en materia lo primero que deberíamos hacer una vez instalamos un Ubuntu, es activar los repositorios de software de socios Canonical (Empresa creadora de Ubuntu) estos repositorios nos permitirán instalar programas adicionales, que debido a su licencia no libre no están activos al momento de una instalación normal. Para lograrlo simplemente tenemos que hacer lo siguiente:

    • Nos dirigimos al panel de configuración del sistema.

    Paso 1

    • Damos clic sobre la opción "Configuración del sistema..."

    Paso 02 - Configuracion del sistema

    • Damos clic sobre "Software y Actualizaciones"

    Paso 3 - Software y Actualizaciones

    • Activamos la opción "Socios de Canonical"

    Paso 4 - Socios Canonical

    Una vez hecho esto, nos solicitará nuestra contraseña y daremos clic en el botón “Autenticar”, luego daremos clic al botón “Cerrar”. A continuación se mostrara una ventana en la cual daremos clic al botón recargar tal y como se muestra en la siguiente imagen:

    Recargar

    Al terminar la actualización de los repositorios ya podemos instalar los nuevos programas directamente desde el centro de software, programa que en Ubuntu se encarga de instalar y desinstalar aplicaciones de una forma simple.

    2 – Instalando controladores adicionales

    Si tienes una tarjeta de video Nvidia o AMD y quieres obtener el máximo desempeño de la misma, es muy recomendable verificar que tu Ubuntu cuente con los controladores “Drivers” correspondientes y actualizados.

    Una forma fácil de hacer esto es por medio del panel de controladores adicionales en la herramienta de Software y actualizaciones.

    Al dar clic en la pestaña que se muestra en la imagen, Ubuntu empezará a buscar los controladores mas adecuados para su hardware.

    Controladores

    Una vez terminada la búsqueda se puede obtener un listado de controladores del cual usted podrá escoger la mejor opción.

    Por lo general los controladores marcados como (Privativo, Probado) son los mas recomendables.

    ControladorPP
    Para instalarlo, simplemente tenemos que seleccionar el controlador que deseamos y dar clic sobre el botón “Aplicar cambios”

    3 – Instalar codecs y utilidades de terceros.

    Para poder ejecutar de manera adecuada archivos de audio y vídeo algunas veces es necesario contar con ciertos codecsadicionales, para poder lograr esto en Ubuntu simplemente tenemos que instalar el paquete llamado “Extras restringidos de Ubuntu” el cual también instalará lo necesario para poder ejecutar el Adobe Flash, reproducir DVD y las tipografías básicas de Microsoft. Para hacerlo ejecutamos el programa “Centro de Software de Ubuntu” y una vez en el, buscamos el paquete descrito anteriormente tal y como se muestra a continuación.

    Extras

    O simplemente introduciendo el siguiente enlace en el navegador

    apt://ubuntu-restricted-extras

    Si queremos visualizar de forma adecuada DVD cifrados podemos instalar el paquete “libdvdread4” introduciendo el siguiente enlace en el navegador

    apt://libdvdread4

    Y luego ejecutar las siguientes instrucciones en la consola.

    sudo /usr/share/doc/libdvdread4/install-css.sh

    4 – Instalar Skype

    Skype es uno de los programas mas populares de comunicación vía texto, voz y vídeo sobre Internet (VoIP), y si seguimos correctamente el paso No. 1, Instalarlo es muy sencillo.

    Podemos desde el Centro de Software de Ubuntu buscar la palabra “skype” tal y como se muestra a continuación

    Skype

    O simplemente introduciendo el siguiente enlace en el navegador:

    apt://skype

    5 – Java

    Java es una tecnología bastante utilizada en la actualidad para múltiples propósitos, varios programas que usamos cotidianamente están escritos en Java y algunas aplicaciones web lo requieren para funcionar de manera adecuada.

    Para instalar OpenJDK y IcedTea en Ubuntu simplemente tenemos que introducir el siguiente enlace en el navegador

    apt://icedtea-7-plugin,openjdk-7-jre

    6 – DropBox

    Dropbox es un servicio de alojamiento de archivos multiplataforma en la nube. El servicio permite a los usuarios almacenar y sincronizar archivos en línea para así compartirlos con otros.

    Para instalarlo de manera simple en Ubuntu podemos buscarlo en el centro de software de la siguiente manera “nautilus-dropbox” e instalarlo tal y como se muestra a continuación.

    Dropbox

    O introduciendo el siguiente enlace en el navegador: apt://nautilus-dropbox

    7 – Musica y video

    Una de las funcionalidades mas comunes para nuestros computadores personales es el entretenimiento y gran parte de este lo obtenemos en forma de musica y video.

    Ubuntu nos ofrece ya instalados Rhythmbox para reproducir musica y Totem para video, pero si desea explorar un poco más a continuación explicamos como instalar dos de las aplicaciones más populares tanto para musica como para video.

    Describiremos brevemente como instalar Spotify y VLC.

    Instalando Spotify

    Para instalar Spotify en nuestro Ubuntu simplemente tenemos que ejecutar los siguientes comandos tal y como se muestra a continuación:

    • sudo sh -c 'echo "deb http://repository.spotify.com stable non-free" > /etc/apt/sources.list.d/spotify.list'

    Spotify 1
    • sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59
    Spotify 2
    • sudo apt-get update
    Spotify 3
    • sudo apt-get install spotify-client
    Spotify 4

    Y finalmente obtenemos nuestro Spotify Instalado.
    SpotifyFinal

    Instalando VLC

    VLC es quizás uno de los mejores reproductores de video y aunque no viene instalado por defecto en Ubuntu, instalarlo es muy fácil. Para hacerlos nos dirigimos al Centro de software de Ubuntu y lo buscamos como “vlc” tal y como se muestra en la imagen.

    VLC

    O introduciendo el siguiente enlace en el navegador: apt://vlc

    ---

    Esperamos que esta pequeña guía sea de utilidad y estaremos atentos a sus comentarios y sugerencias.

    Hasta una próxima entrada.

  • Entornos de trabajo para ciencia de datos, instalando R-Studio y Anaconda en Ubuntu Linux 18.04

    bannerDS

    La ciencia de datos o “Data Science” como se le denomina en ingles, es una de las áreas que mayor interés ha despertado en últimos años, siendo descrita por muchos expertos como una de las áreas de mayor relevancia laboral durante la próxima década.

    Pero en sí ¿que es la ciencia de datos?; La ciencia de datos es un área de estudio interdiciplinaria que usa métodos científicos, procesos matemáticos y algoritmos computacionales, con el objetivo de obtener información, conocimiento y representación de comportamientos significativos basados en datos de diferentes fuentes y tipos. Esta ciencia se encuentra muy relacionada con otras áreas igualmente destacadas recientemente, como el Big Data o el Machine Learning. Vinculando a su vez conceptos más tradicionales como lo son las bases de datos (relacionales y no relacionales) y un uso extensivo de métodos y técnicas estadística.

    Por lo anterior y con el objetivo de adentrarnos en el estudio de este interesante tema, a continuación describiremos como instalar dos de los principales entornos de desarrollo para ciencias de datos, sobre nuestro Ubuntu Linux 18,04 LTS Bionic Beaver.

    Para empezar describiremos el proceso de instalación de R Studio un IDE especializado para el lenguaje de programación R, lenguaje especialmente diseñado para el desarrollo de estadística computacional y graficación.

    1 - Instalación de R Studio

    Antes de instalar R Studio necesitaremos instalar en nuestro sistema el paquete r-base que provee el lenguaje de programación R sobre el cual trabajara nuestro IDE.

    Abrimos una terminal o consola “ctr + alt + t” e introducimos los siguientes comandos:

    $ sudo apt update sudo

    $ apt -y install r-base

    R Studio esta disponible para dos de las principales distros de Linux; Fedora y Ubuntu. Para este tutorial instalaremos la versión de R Studio para Ubuntu 16,04+/Debian 9+, la cual podemos descargar del siguiente enlace: https://www.rstudio.com/products/rstudio/download/#download

    R1

     Una vez realizada la descarga volvemos a nuestra terminal o consola e introducimos los siguientes comandos:

    $ cd Descargas
    $ ls
    rstudio-xenial-1.1.456-amd64.deb

    La carpeta descargas puede variar de acuerdo a la configuración o la instalación de su sistema así que podría tener Descargas o Downloads*

    Una vez identificado el paquete procedemos a su instalación:

    $ sudo gdebi rstudio-xenial-1.1.456-amd64.deb

    Y a continuación podremos ejecutar R Studio desde la consola con el siguiente comando:

    $ rstudio

    R2
    O bien desde el menú de aplicaciones:

    R3
    2 – Instalación de Anaconda

    Anaconda es una distribución de Python y R especializada en ciencia de datos “Data Science” y “Machine Learning” orientada al procesamiento de datos a gran escala. Cuenta con su propio administrador de paquete e integra más de 250 librerías y utilidades especializada para el trabajo en ciencia de datos.

    Para comenzar, lo primero que tenemos que hacer es dirigirnos a la pagina de Anaconda y descargar el script de instalación. Podemos hacer esto dando clic en el siguiente enlace: https://www.anaconda.com/download/#linux (esta descarga puede tomar algunos minutos según la velocidad de su conexión)

    An1

    Una vez realizada la descarga volvemos a nuestra terminal o consola e introducimos los siguientes comandos:

    $ cd Descargas
    $ ls
    Anaconda3-5.3.0-Linux-x86_64.sh

    Identificado el paquete, volvemos a la terminal e iniciamos el proceso de instalación por medio del siguiente comando:

    $ sh Anaconda3-5.3.0-Linux-x86_64.sh

    Al ejecutarlo se despegará el siguiente mensaje:

    An2

    Oprimimos la tecla Enter para ver todos los términos de la licencia y finalmente escribimos “yes” para aceptar y continuar con el proceso de instalación.

    Posteriormente nos solicita confirmar la ubicación de los archivos de instalación, para el presente caso usaremos los predeterminados por lo que simplemente oprimiremos la tecla Enter

    An3

    A continuación nos pregunta si deseamos que el instalador inicialice Anaconda3 en nuestro bashrc a lo que en este caso diremos que si, “yes”.

    An4

    Una vez finalizada la instalación de Anaconda, el instalador nos preguntará si deseamos instalar el editor Visual Studio Code, con lo que conforme a sus preferencias ustedes podrán aceptar o seguir adelante y utilizar su editor preferido.

    Finalmente procedemos con la activación de la instalación de anaconda ejecutando el siguiente comando:

    $ source ~/.bashrc

    y la confirmamos con:

    $ conda info

    An5
    Ok, ya esta instalado nuestro Anaconda, pero aun falta el paso final, la cereza del pastel. Y es desplegar nuestro entorno grafico de configuración y trabajo desde el navegador.

    Para hacer esto simplemente ejecutamos el siguiente comando desde nuestra terminal y tendremos todo el poder de Anaconda a nuestra disposición.

    $ anaconda-navigator

    An6


  • Fedora 20: ¿Libre Office en español? { Notas de Laboratorio }

    libreOfficeEsp

    Problema:

     
    Tengo una instancia de Fedora 20 ligeramente virgen y mi Libre Office me sale en inglés...
     

    Solución utilizada:

    1. se abre la consola
    2. se digita el comando "su -" (al ejecutar nos pedirá la clave de administración)
    3. se instalan los paquetes requeridos con yum desde la consola: "yum install libreoffice-langpack-es hunspell hunspell-es"
    4. el anterior comando resolvera las dependencias requeridas, preguntando antes de instalar que si deseamos continuar... se oprime la tecla homérica 'y'
    5. después de terminar, al abrir de nuevo Libre Office nos saldrá en español y con corrección de ortografía...
    Si [email protected] quedó [email protected], abajo está la sección de comentarios...

     
  • GCC: Referencias, documentos, enlaces

    Relación de documentos, enlaces, recursos pertinentes para GCC:

     
  • Guía rápida de atajos para Blender 3D

    comandos blender

    Blender es hoy por hoy una de las herramientas de producción de contenidos 3D más importante en el mundo del código abierto. Con una gran comunidad de usuarios, se ha convertido poco a poco en una de las herramientas preferidas por los estudios de todos los tamaños a la hora de desarrollar animaciones, VFX, simulaciones e incluso videojuegos. Es por todo lo anterior que compartimos con ustedes esta pequeña guía de comandos que no pueden faltar a la hora de desarrollar tus proyectos con Blender 3D.

    pdfcomandos_blender.pdf

  • Instalando Django 2.0 en Ubuntu Linux 16.04 LTS

    python

     

    El pasado 2 de Diciembre fue liberada la version 2.0 de Django, Framework para desarrollo web escrito en Python.

    Es por esto que en OpenSAI nos dimos a la tarea de hacer un pequeño resumen de como instalarlo de manera facil en nuestro Ubuntu Linux 16.04.

    Antes de instalar Django verificamos cumplir los requerimientos mínimos del sistema.

    Para la version 2.0 es nesario contar con Python 3.5 instalado.

    Luego Procedemos a instalar pip3

    1 - Como súper usuario ejecutamos:

     

    :~$ apt install python3-pip

     

    2 - Una vez instalado pip procedemos a actualizarlo a la ultima versión disponible

     

    $source djangoprojects/bin/activate

    :~$ pip3 install -U pip

     

    3 - Una vez actualizado pip procedemos a instalar como súper usuario el virtualenv para ejecutar las aplicaciones Django de forma independiente al python del sistema.

     

    :~$ pip3 install virtualenv

     

    4 - Una vez instalado correctamente el virtualenv procedemos a crear el directorio donde se alojara la instancia virtual de python.

     

    :~$virtualenv ENV

     

    5 - A continuación procedemos a activar el ambiente virtual de python con el siguiente comando

     

    :~$source djangoprojects/bin/activate

     

    6 - Sabremos que el entorno virtual esta activado cuando veamos que antes del nombre de nuestra terminal aparece el nombre de nuestro ambiente virtual entre paréntesis, ejem: (djangoprojects) [email protected]:~$

    7 - Para salir del entorno virtual simplemente ejecutamos el comando:

     

    :~$ deactivate

     

    8 - Finalmente procedemos a instalar Django en nuestro entorno virtual.

     

    :~$ pip3 install Django

     

    9 - Una vez instalado Django procedemos a comprobar que en efecto la instalación fue exitosa, ejecutando el siguiente script desde el interprete de python.

    :~$python3

     

    >>> import django

    >>> print(django.get_version())

     

    Finalemente al ejecutarlo deberemos de obtener el numero de la versión de Django que acabamos de instalar.

     

    TerminalDjgo

     

     

  • Instalar y configurar una solución de virtualización en Ubuntu 18.04 basándonos en KVM, Libvirt y Virtual Machine Manager

    kvm

    KVM (Kernel-based Virtual Machine) es un modulo de virtualización para el núcleo de Linux, que le permite a este hacer las veces de un hipervisor, permitiendo así virtualizar sistemas operativos variados como Linux, BSD, Solaris, Windows, Haiku, MacOS, entre muchos otros.

    Inicialmente creado para correr sobre arquitectura x86, ha sido portado para correr sobre arquitecturas adicionales como ARM, AI-64, PowerPC, etc.

    En la actualidad se consolida como una de las opciones de virtualización más destacadas del mercado, compitiendo fuertemente con alternativas como Xen o VirtualBox. (KVM vs VirtualBox)

    A continuación describiremos una forma sencilla de instalar y configurar nuestra solución de virtualización en Ubuntu 18.04 basándonos en KVM, Libvirt y Virtual Machine Manager

    Instalando KVM

    Para dar inicio con el proceso, lo primero que debemos hacer es verificar que nuestro procesador soporta las instrucciones necesarias para virtualizar con KVM. Para hacer esto ejecutamos el siguiente comando:

    egrep -c '(svm|vmx)' /proc/cpuinfo

    Si al ejecutar el anterior comando obtenemos un resultado igual o superior a 1, quiere decir que nuestro CPU es capaz de soportar las instrucciones y tecnología necesaria para virtualizar.

    Dado lo anterior procedemos a instalar los paquetes necesarios por medio del siguiente comando:

    sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager

    Una vez instalados los paquetes podemos verificar que el proceso de instalación ha sido exitoso de la siguiente manera:

    sudo kvm-ok

    Si el proceso se ha efectuado de manera correcta, deberíamos obtener la siguiente salida:

    INFO: /dev/kvm exists
    KVM acceleration can be used

    En lo personal, recomiendo en este punto reiniciar el sistema para asegurar que todos los demonios y subsistemas esten corriendo adecuadamente.

    A continuación creamos un usuario con los permisos necesarios para poder instalar y manipular maquinas virtuales en nuestro sistema. Para lograrlo simplemente ejecutamos el siguiente comando:

    sudo adduser [nombre de usuario] libvirt

    Ahora estamos listos para verificar la instalación, para hacerlo simplemente ejecutamos lo siguiente:

    virsh -c qemu:///system list

    Si todo ha salido bien, deberíamos obtener la siguiente salida:

    salida

    Una vez ejecutados los ateriores pasos, ya estamos listos para empezar a crear nuestras maquinas virtuales con KVM.

    En el siguiente video se muestra de manera basica, como crear una maquina virtual en QEMU/KVM de CentOS 7 sobre un host Ubuntu 18.04. 

    Miralo también en LBRYhttps://beta.lbry.tv/CentOSon-KVM/9

    ¡Comparte tu conocimiento!

  • La alfabetización tecnológica comienza sin tecnología

    alt

    Aunque puede parecer gracioso, la alfabetización tecnológica con lo último que tiene que ver es con tecnología.

    Es peligroso confundir un proceso de alfabetización tecnológica con un proceso de entrenamiento tecnológico. Si bien el segundo se puede integrar al primero, lo que realmente se debe buscar es el desarrollo interno del ser humano, su capacidad para aprender, desaprender, vencer el temor a lo complejo, lo desconocido, su capacidad para reaccionar resolviendo problemas con las herramientas que su entorno le ofrece.

    Si en un programa educativo se integra de una manera rigida un proceso de entrenamiento tecnológico, es posible que cuando dicho programa cumpla su ciclo normal, los participantes se encuentren totalmente desactualizados, así su certificado educativo diga lo contrario.

    Un proceso de esta naturaleza lo que busca es conducir a los usuarios, desde un estado de consumidores pasivos, a otro en el que vean a la tecnología como una herramienta para potenciar cada una de sus capacidades individuales, estando concientes del poder y la responsabilidad que dichas herramientas les otorgan, y del impacto que pueden tener al interior de sus comunidades.

    Tecnología no sólo es aquello que incluye dispositivos electrónicos, o software. Una cuchara es tecnología, un fosforo, una ruana. Si un niño tiene la experiencia de tejer su ropa, cultivar o criar su alimento, crear su propia música, su propio arte, es muy posible que en algún momento se sienta capaz de construir un cohete o de aprender a usar un paquete de software que nunca habia visto.

     El nucleo central de discusión se ha soportado en {http://www.allianceforchildhood.net/projects/spanish_pdf_files/spanish_fg4.pdf}

    La utilización de nuestra expresión despectiva -pinche- para referirse a la mochila, intenta resaltar el complejo de inferioridad que como “nación” tenemos totalmente incrustado en nuestro cerebro, no valoramos nuestra cultura hasta cuando después de extinta la vemos en un museo, o cuando aparece un extranjero “dizke culto” para decirnos que es maravillosa…¿cuantas veces asociamos elementos valiosos que nos podrían identificar como nación, a características por la que debemos avergonzarnos? y  adoptamos con orgullo la intoxicación de la cultura chatarra que nos inyectan por los poros… un ejemplo en ese mismo “sentido”…  para mi sigue siendo tecnológicamente más avanzada la envoltura de plátano de un tamal, que un empaque tetrapack, la hoja del tamal de principio a fin es mucho más maravillosa, culturalmente, ecológicamente, gastronómicamente…  pero a pocos se les ocurriría incluirlo en una “cena de gala” del parque de la 93 en Bogotá, a menos que le pongamos el nombre en francés.. ya lo dijo alguien -la morcilla en ingles les sabe más rico y se les cobra más caro…