Web Scraping With Python and BeautifulSoup Library

Standard

apython

Some time ago i wrote a post about web crawling using google´s api (See here). However, it lacks of HTML labels recognition support and it becomes tedious to find key components on web pages.

In this post, i will try to show you how to successfully recognize web page’s key HTML labels such as title, div, etc using a library named BeautifulSoup using the programming language Python. For this reason, we need to have basic HTML and python knowledge. For experiment purposes i will be using the native python installation on OSX 10.11.5 “El Capitan”. Continue reading

Aprender a Programar Jugando

Standard

Hola a todos, en mi post anterior nos pusimos serios revisando los tipos de competencias que un buen programador debe de contar en su arsenal de conocimientos y habilidades. En este post vamos a enfocarnos en el aprendizaje continuo, pero jugando. 😃

Habiendo actualmente tantos recursos donde aprender como:

  • Libros.
  • Blogs.
  • Tutoriales.
  • Videos.
  • MOOC (Massive Online Open Courses)
  • Degrees y Nanodegrees. (De estos dos últimos hablaré en algún post a futuro).
  • otros…
Destaca uno en particular que son los juegos, que te ayudan a reforzar los conceptos de programación, inteligencia artificial (AI)  o herramientas, tratan de hacerlo divertido en el proceso y promueven que aprendas “ensuciandote las manos”.
Les voy a compartir tres juegos que he usado y estoy usando actualmente en tres plataformas y herramientas diferentes: VIM, R y Ruby.
zelda-nes
Zelda NES Screenshot (tomada de http://www.EmuParadse.me)

Continue reading

4 Métodos científicamente comprobados para dejar de procrastinar

Standard

Tienes una fecha limite y se esta convirtiendo en una pesada carga para tus hombros, sabes que solo tiene que comenzar pero la dejas para después. En vez de eso contestas correos electrónicos pendientes, limpias tu escritorio, llamas a un viejo amigo por teléfono o prefieres navegar otros cinco minutos en Facebook, haces todo lo posible para retrasar ese proyecto de enormes proporciones un poco más (como yo con este blog).

Cara-Menghadapi-Deadline

Obviamente, este es el método de productividad, particularmente es cuando realmente solo tienes que tomar al toro por los cueros y conquistar esa tarea temida, misma que ha estado volando por fuera de la lista de tareas todas las semanas.

Pero, ¿Qué se puede hacer para inspirarnos a empezar a hacer progresos en los proyectos que parecen completamente abrumadores? Resulta que la ciencia tiene algunas respuestas.

Continue reading

Quemar bootloader de arduino en microcontrolador ATMEGA328P

Standard

Que tal amigos lectores, es un placer para mí redactar nuevamente. Esta ocasión traigo ante ustedes algo muy interesante y orientado a beginners makers con afinidad al diseño electrónico. Este tipo de personas suelen ser aquellas que prefieren desarrollar sus propias placas con el objetivo que realicen una labor específica. Esto difiere de las placas de desarrollo tradicionales, las cuales son fabricadas para un propósito general. La ventaja que representa el diseñar tu propia tarjeta electrónica es que se logran optimizar las dimensiones. Lo que acabo de explicar, se aprecia en la siguiente imagen:

13901871_10153827781923634_1741285343_o

Lo que acaban de observar son 2 tarjetas que utilizan la plataforma open-source Arduino para el desarrollo de software. A la izquierda se aprecia la tarjeta oficial Arduino UNO con la cual podemos desarrollar tantos proyectos, como lo permita su capacidad. A la derecha, tenemos una tarjeta que diseñamos en esta compañía en la cual su microcontrolador es el ATMEGA328P, el mismo chip que tiene Arduino UNO. Sin embargo, el circuito de la derecha, lo diseñamos con el único propósito de tomar lecturas de algunos sensores. En el fondo estamos hablando de lo mismo, pero el diseñar tu propia placa genera limpieza, estética y se aprecia como un trabajo más profesional. Continue reading

Teoria de Grafos I

Standard

Hola a todos espero y tengan un buen día, el día de hoy en esta primera parte de este blog vamos a empaparnos un poco acerca de a teoría grafos, espero y les sea útil, bien pues comencemos.

¿Que es un grafo?

Pues un grafo es una colección finita de vértices o nodos(nodes) y aristas (edges).Seguramente se preguntaran, ¿lo usamos en nuestra vida diaria?. Vamos a poner un ejemplo: Facebook. La inmensa red social que seguramente usamos casi a diario, es considerada un grafo social (social graph). En este grafo, cada persona es considerada un nodo del grafo y cada arista es la encargada de relacionar a dos personas. En facebook un amigo tuyo es una relación bi-direccional. Ejemplo A es amigo de B => B es amigo de A, entonces estamos hablando de un grafo no­-dirigido.

Cada arista de un grafo es representado como un par ordenado (u,v) donde (u,v) indica que existe una arista del vértice u al vértice v. Las aristas es posible que contengan un costo(cost), un peso (weight) o longitud (length). La valencia de un vértice es es el numero de aristas que conectan a este mismo. Continue reading

Hablemos de API’s (Parte 1)

6917646235_25a3eb3f4f_b
Standard

Hola que tal, espero se encuentren muy bien! Hace algún tiempo que no escribía en el blog, espero que este tema sea de su interés y que lo disfruten.

En esta ocasión, abordaremos un tema de moda desde hace algún tiempo, en el cual he tenido la oportunidad de involucrarme desde hace algunos proyectos: Las API’s

Las API (Application Programming Interface, por sus siglas en ingles), son interfaces que nos permiten interactuar con un sistema de una manera mas practica y escalable, sin necesariamente saber que sucede detrás. Desde métodos para realizar acciones de un CRUD, hasta solo mandar una cantidad mínima de datos y que la API nos resuelva todo un proceso que seria extremadamente complejo o tardaríamos una eternidad en completar por nuestra cuenta. Nos permiten encapsular y separar los componentes de un sistema para poder compartirlos con otros usuarios (personas o sistemas). Si lo ponemos en términos mas simples, una API son una serie de acuerdos y requisitos de como una aplicación se comunicara con otra. Continue reading

Elaboración de Planos y relaciones de posición en SolidWorks

Standard

Hola! muy buen día, aquí estoy de nuevo compartiendo un tema del tutorial de SolidWorks continuando con funciones básicas del programa.

En esta ocasión veremos funcionalidades que son relativamente sencillas (ya las he visto en otros ocasiones en el blog) pero encontraremos una solución sencilla de como hacer esta figura.

r1

Analizando la figura:

Vemos varios lados inclinados, donde podemos usar planos para hacer los cortes, recordando, que el ideal es iniciar el croquis desde la cara que tiene mayor numero de cotas, y después de eso definir detalles de la pieza que realizaremos. Así que iniciaré un croquis desde la vista de “planta”. Continue reading

Android: Conexión simultánea con múltiples dispositivos BLE + sensor Acelerómetro

Standard

 

Imagen tomada de: http://pocketnow.com/2013/01/17/bluetooth-low-energy

Imagen tomada de: http://pocketnow.com/2013/01/17/bluetooth-low-energy

¡Qué tal, gente! Después de un algún tiempo sin publicar, traigo para ustedes este ejemplo práctico y resumido (aunque usted no lo crea) de una implementación a la medida que fue realizada recientemente para un proyecto en el que me encuentro colaborando.

La situación—brevemente explicada— es esta: es necesario, mediante una app Android para móvil, conectarse como mínimo con 3 dispositivos BLE 4.0 vestibles de manera simultánea y leer los datos de sus diversos sensores en tiempo real. Los dispositivos en cuestión no cuentan con el sistema operativo Android instalado.

Para fines prácticos, en el presente ejemplo sólo se leen y muestran los datos del sensor acelerómetro de los dispositivos BLE 4.0 utilizados. Cabe destacar, además, que se consiguió conectar con hasta 4 dispositivos simultáneamente, esto ya que no se contaba con una cantidad mayor de los mismos. Por lo tanto, me aventuro a conjeturar que es probablemente viable el conectar con más de 4 dispositivos sin problema mediante esta aplicación.

Y bien, sin mayor preámbulo, pasemos a la descripción de las clases y layouts necesarios para construir nuestra aplicación de prueba. Pueden encontrar en GitHub el CÓDIGO COMPLETO DEL PROYECTO.

Continue reading

Matriz de Competencias del Programador

Reacciones-programadores-portada
Standard

Esta publicación es el resultado de la experiencia como programador y de la lectura de varios libros, no tanto de una tecnología o plataforma en concreto, si no más bien de conceptos, patrones y buenas prácticas.

En particular decidí escribir al respecto por un par de blogs y un libro que fueron seminales para esta idea:
– La discusión por la cuál nació la idea de este post, aquí se referencia la matriz, y a aparte hay una discusión muy interesante a favor y en contra de estos puntos.
– La matriz de la cual me tomé la libertad de traducir y agregar mis comentarios.
– 97 cosas que todo programador debería saber. A través de historias y anécdotas de programadores experimentados, van ilustrando algunos de los puntos considerados en esta matriz.
Cabe mencionar que más que volvernos expertos en herramientas, yo valoro los atributos como que este fuerte en los conceptos necesarios para ser programadores exitosos, ya que debido a la experiencia, las herramientas, frameworks, etc., pueden variar, pero las buenas bases y prácticas aceleran la adopción de nuevas tecnologías y mejora el desempeño de los equipos.
Gran parte de estos puntos los estamos utilizando activamente en Hunabsys, para definir que buscamos en nuestros equipos de desarrollo, en qué los vamos a entrenar y como base para seleccionar algún nuevo integrante.

Continue reading

Engranes helicoidales

Standard

Buen día compañeros del blog, este día nos adentraremos un poco más sobre el tema de los engranes dándole seguimiento al blog anterior, por lo que quiero compartir con ustedes esta información de importancia sobre los engranes helicoidales en sus generalidades.

El engranaje cilíndrico helicoidal es una rueda dentada que posee dientes inclinados oblicuos respecto al eje de rotación de la rueda. Esto hace que puedan transmitir potencia entre ejes paralelos. En estos engranajes el movimiento se transmite de modo igual a los engranajes rectos, pero con mayores ventajas. A medida que los engranes helicoidales giran, cada diente engrana primero en un lado, y posteriormente el contacto va aumentando hasta recorrer toda la anchura del diente conforme continúa la rotación.

Los dientes presentan inclinación a un cierto ángulo, a este ángulo se le denomina ángulo de hélice. Estos engranajes se consideran más silenciosos que los rectos y se emplean siempre que se trate de velocidades elevadas, necesitando cojinetes de empuje para contrarrestar la fuerza axial se puede utilizar un engranaje doble helicoidal ya que debido a la inclinación doble en sentido contrario de sus dientes se contrarrestan dichas fuerzas.

e1 Continue reading