‘Cursos’

Aprovecha el puente y aprende algo con nuestros cursos

Microcontrolador
Hoy empieza el puente y aunque la flojera siempre es tentadora, puedes hacerte el ánimo y aprovechar el tiempecito de más que tienes para hacer algo productivo. Aquí en QuieroBits te la ponemos fácil, con nuestros tutoriales de seguro aprendes y no te llevas ni 15 minutos en cada uno.

 

Entiende la arquitectura de los microprocesadores. Apenas el martes pasado que celebramos 40 años del primer microprocesador, el Intel 4004, así que es buen tiempo para que entiendas a la arquitectura RISC, que es en la que se basan los procesadores modernos.

 

Instala Active Directory en un servidor. ¿A quién no le gusta tener el control? Con Active Directory podrás administrar todas tus compus. Además, nunca está de más saber administrar un servicio de directorio. Solo que puede ser un poco enrredoso al principio. Pero aquí te decimos como. Además es screencast para que no te de flojera.

 

Aprende a programar un microcontrolador. Los microcontroladores son lo de hoy. Con tanto sistema embebido alrededor no te puedes quedar atrás. Aprende las báses con nuestro set de 4 tutoriales. Además que está fácil y si te queda alguna duda, no dudes en preguntarnos ya sea por Facebook, Twitter o Google+.

 

¿Cómo se hablan las computadoras? Para que las computadoras se puedan hablar, siempre hace falta que se pongan de acuerdo primero. Como muchas tecnologías, para hacer esto se inspiraron en la vida real y en como nos comunicamos los humanos. Este video te explica paso a paso como funciona este protocolo mejor conocido como Three-Way Handshake.

RISC, explicando la arquitectura de los procesadores

Sin que la gran mayoría lo sepa, los procesadores que utilizamos día a día, desde hace unas cuantas décadas están basados en lo que se llama arquitectura RISC, que es el acrónimo de Reduced Instruction Set Computing, o computación con un set de instrucciones reducias.

La arquitectura RISC se opne a su predecesor, la arquitectura CISC, el cual uilizaba instrucciones complejas en lugar de instrucciones sencillas. En los inicios de los microprocesadores se tenía la idea de que entre más información pudieras meter en una instrucción era mejor. Hasta cierto punto no estaban tan equivocados, el conseguir más con una misma instrucción les permitía tener programas mucho más pequeños y también reducir las veces que se hacían lecturas a memoria.

Sin embargo, investigadores de IBM se dieron cuenta de que estas capacidades no estaban siendo aprovechadas al 100 por ciento, sobre todo por lo limitados que eran los compiladores para generar código que fuera completamente eficiente. Fue entonces cuando a mediados de los 70’s se empezó a desarrollar la ideología de RISC (incluso CISC no se había denominado de esa forma hasta que nació RISC).

RISC se basaba en la idea de que los procesadores era más eficientes si las tareas que le eran entregadas era muy sencillas. Esto se reflejaba en gran parte al momento de decodificar las instrucciones. Aunque el tener instrucciones más sencillas implica un número más grande de las mismas, los procesadores tienden a ser más eficientes al ejecutar este tipo de instrucciones que menos pero más complejas.

Algunas personas tienden a confundirse al pensar que RISC significa un set de instrucciones más pequeño. Al contrario, las instrucciones crecieron considerablemente, solo se hicieron más específicas en lo que tenían que hacer, por ejemplo, existen instrucciones que se dedican únicamente al acceso a memoria, pero por lo mismo, son más eficientes en lo que hacen.

Esto también facilitó el desarrollo de lo que se conoce como pipelines, que es dividir las tareas en instrucciones sencillas que se puedan ir encolando para su ejecución “en paralelo”. Esto se dio en gran parte a que se buscó que las instrucciones tardaran solo un ciclo de reloj para ser ejecutadas (obviamente si era una búsqueda en memoria y los datos no estaban disponibles, pues se perdía el propósito).

En fin, para que te des una idea de dónde se encuentra la arquitectura RISC, puedes pensar en:

  • ARM, que básicamente están en los iPhone, iPod Touch, iPad, Nintendo DS, etc.
  • MIPS, que está o estuvo más bien en el PlayStation 1 y 2, en el Nintendo 64 y en el PSP. El MIPS R400, el primer procesador de 64 bits, también es un caso de éxito.
  • La Power Architecture de IBM y el ahora Freescale en sus PowerPC, en el GameCube y el Wii.
Así que de ahora en adelante ya sabes que tus gadgets, consolas y demás están en su mayoría basadas en esta simple, pero revolucionaria idea.

TCP Three-Way Handshake explicado

En el protocolo TCP de redes existe algo que se llama Three-Way Handshake que consiste en una especie de saludo que hay entre las dos partes de la comunicación, de manera que establecen los parámetros necesarios y se aseguran de que la comunicación tenga éxito.

En sí, es un protocolo sencillo pero si no estás familiarizado con él, podrías llegar a confundirte en algún paso. Aquí te dejamos un video que explica paso a paso como se lleva a cabo este 3-way handshake y de que se trata cada uno de los parámetros que se pasan entre sí:

[Security Tube]

[Tutorial] Cómo configurar políticas en Active Directory

Para el día de hoy ya deberías tener instalado Active Directory con un par de OU’s, usuarios y hasta conectado por lo menos un cliente  (si no lo tienes, visita nuestro tutoriales previos >>). Es hora de comenzar a trabajar con las políticas.

Las políticas permiten establecer permisos o restringirlos a las computadoras cliente. Se pueden establecer políticas ya sea por usuario o por equipo y también por grupo de trabajo. En realidad trabajar y configurar las políticas de Active Directory es bastante sencillo. La mayoría de las políticas se configuran de la misma manera. Lo único complicado es encontrar la política que realmente te interesa, pero por lo demás no hay ningún problema.

En el siguiente video te mostraremos como configurar la política para establecer un fondo de escritorio para tus computadoras cliente. Para configurar cualquier otra política solo sigue los mismos pasos:

[Tutorial] Explicando el protocolo SPI (incluye código)

El protocolo SPI es un protocolo de comunicación serial para equipos periféricos. Su nombre  básicamente indica esto: Serial Peripheral Interface o interface serial periférica. Probablemente ya te hayas topado con algún otro protocolo serial, el más común es el que todos llamamos serial y que lo relacionamos con la UART.

Pero entonces ¿qué es diferente en este protocolo?  Resulta que es un protocolo de Maestro-Esclavo, diseñado para controlar varios periféricos utilizando un mismo bus de datos. Consta de cuatro líneas de comunicación que son lo que cualquier ingeniero hubiera pensado si le hubieran pedido que diseñara un protocolo en 5 minutos:

  • CLK. Clock para el control de las operaciones.
  • MISO. Master in, slave out. Bus de entrada de datos
  • MOSI. Maste out, slave in. Bus de salida de datos.
  • SS. Slave select. Señal de habilitación del esclavo.

Por supuesto, con forme va incrementando el número de esclavos, va incrementando el número de señales de habilitación, pero los otros tres buses se reutilizan, lo que ahorra considerablemente líneas de comunicación. Aquí abajo aparece un diagrama para su mejor comprehensión:

La secuencia de comunicación con el dispositivo es bastante sencilla, en realidad lo único que tienes que hacer como master es habilitar (0 lógico, por trabajar con lógica negativa) el esclavo con el que quieres comunicarte y después empiezas a transmitir o recibir datos, un bit por ciclo de reloj y comenzando por el más significativo (MSB) hasta el menos significativo (LSB). Algo así como lo que muestra el siguiente diagrama:

El protocolo no define por sí mismo el baud rate o velocidad de transmisión, por lo que en teoría podría alcanzar velocidades muy altas. Lo que limita la comunicación es el dispositivo con el cual estás trabajando.

En fin, probablemente no te estemos diciendo más que Wikipedia o cualquier otro sitio, así que para que quede más claro y puedas hasta practicar, te dejamos una rutina hecha en C para un microcontrolador que ejemplifica el protocolo.

Como queremos ejemplificarlo de la forma más sencilla haremos la comunicación con un componente muy sencillo, porque es un ejemplo real. Se trata de un potenciómetro controlado digitalmente por SPI (¡obviamente!). En fin, se trata del MAX5402 el cual solo recibe información por lo que no tendremos que lidiar con la comunicación de regreso. A este componente solo se le envía un byte y con eso tiene para mediar el valor del potenciómetro de 0 a 255.

Pero dejémonos de palabras y vamos a lo que realmente nos interesa, el código:

/***************************************************************************** SPI routines for MAX5402 Digital Potentiometer. MCU: Freescale 9S12EXP100 Clk: 2Mhz Developed by: Arturo Javier Hernández
javier@quierobits.com 07/02/2011 *****************************************************************************/
#include <hidef.h> /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ #define MOSI PORTA_PA0 /// Master Out Slave In, Port A Pin 0 #define SCLK PORTA_PA1 /// Source Clock, Port A Pin 1 #define SS PORTA_PA2 /// Chip Select, Port A Pin 2 /** MISO uninplemented **/ void main(void) { EnableInterrupts; SPI_init();
for(;;) { asm nop; send_byte(169); _FEED_COP(); } /* loop forever */ } /* END OF MAIN */ /** Port initialization **/ void SPI_init(void){ /** Set pins as Output **/ DDRA_DDRA0=0x01; DDRA_DDRA1=0x01; DDRA_DDRA2=0x01; SS=1; MOSI=0; SCLK=0; }
void send_byte(unsigned char rByte){ unsigned char dataToSend; unsigned char tempCountr; dataToSend=rByte; tempCountr=7; SS=0; /// Alert for slave do{ MOSI=(dataToSend/128); /// Send from MSB to LSB SCLK=1; /// Send every clock cycle dataToSend<<=1; SCLK=0; }while(tempCountr--); SS=1; /// End of transmission }

Como verán, la rutina que nos interesa es la de send_byte en la que se llevan a cabo los pasos para lograr la comunicación.

Esperamos que con este ejemplo quede más claro cómo implementar un protocolo de comunicación SPI y que les sirva de base para crear rutinas más complejas. Les comparto también el archivo .c descargable por si lo quiere utilizar.

Comunicación SPI.c >>

Las imágenes las tomé de:

Leens, F. (2009) An introduction to I^2C and SPI protocols.

[Tutorial] Cómo conectar una computadora cliente al dominio de un servidor con Active Directory

Siguiendo con los tutoriales para dominar Active Directory, esta vez conectaremos una computadora como host al dominio que hemos creado en nuestro servidor. Este paso es de los más importantes, pues nos permitirá probar si todos los pasos que vamos haciendo están bien. Finalmente, el objetivo es tener clientes en nuestro servidor, de otra forma no nos sirve de nada.

El proceso es muy sencillo, solo se necesita que se encuentren en la misma red y dado que nuestro servidor tiene una IP fija, es necesario configurar esa dirección en el cliente. Después solo es necesario seleccionar el dominio al que nos queremos conectar y listo.

El siguiente video muestra las configuraciones necesarias que se tienen que hacer tanto en el servidor como en el cliente para lograr una conexión. Si al final todo sale bien, el cliente aparecerá en las computadoras de tu Active Directory.

Inténtalo y déjanos saber como te fue en los comentarios. También puedes revisar nuestras entradas anteriores por si te perdiste en algún paso:

Creando Organizational Units en Active Directory >>

Cómo instalar Active Directory en Windows Server 2008 >>

Nota. El servidor está corriendo Windows Server 2008 y Active Directory. El cliente corre Windows 7. Ambos están conectados a la misma red.

[Tutorial] Creando Organizational Units en Active Directory

La semana pasada les mostrábamos como iniciarse en el servicio de directorio utilizando Active Directory. Sin embargo, instalarlo es solo el primer paso. Windows siempre ha tratado de hacer sus productos de una manera straight forward, con sus clásicos menúes denext…next…next.

Aun así, siempre nos encontramos con problemas a lo largo de todo el camino y por eso te queremos explicar paso a paso lo necesario para que puedas trabajar con Active Directory.

Esta vez te mostramos cómo crear  unidades organizacionales o mejor conocidas como OU’s (organizational units) y también a crear usuarios y grupos dentro de ellas. Esto más adelante te servirá para llevar un mejor control sobre las políticas aplicadas a las computadoras clientes.

Por lo pronto, te dejo con este tutorial que no te llevará prácticamente nada de tu tiempo. Estén pendientes de los siguientes tutoriales y déjenos saber que piensan en sus comentarios.

[Tutorial] Cómo instalar Active Directory en Windows Server 2008

Hace no mucho tiempo que publicamos un par de entradas explicando de forma  muy sencilla y breve lo que es un servicio de directorio. En la primera lo explicábamos en general, después hablamos sobre LDAP. Pero pasemos de la teoría a la práctica.

Una de las formas de implementar LDAP en Windows Server es con Active Directory, que incluye ese servicio además de muchos más. Por eso te preparamos un screencast en el que mostramos cómo instalar desde cero Active Directory en Windows Server 2008 y no te llevará prácticamente nada de tiempo. Más adelante te estaremos mostrando cómo configurar políticas, como conectar un cliente a un servidor y al dominio, entre otra cosas. Así que mantente al tanto de este tu sitio QuieroBits.com.

[Tutorial] Explicando el protocolo LDAP

¿Qué es LDAP?

LDAP es un protocolo de acceso ligero a datos y archivos contenidos en un directorio. El servicio LDAP permite organizar toda la información del directorio. Está basado en el modelo X.500.

Descripción protocolo

LDAP utiliza el protocolo TCP/IP para las comunicaciones a través de la red. El protocolo seguido por los clientes y servidores que se comunican es el siguiente:

1.       El cliente se conecta al servidor y solicita autenticación (Bind).

2.       El servidor regresa el código de resultado de la operación de autenticación.

3.       El cliente solicita una operación de búsqueda o cualquier otra operación.

4.       El servidor regresa los resultados de la búsqueda. Si no se encontró nada, no regresa nada.

5.       El servidor envía el código del resultado de la operación de búsqueda al cliente.

6.       El cliente solicita el cierre de la conexión (Unbind).

7.       El servidor regresa el código del resultado de la operación de cierre de conexión y cierra la conexión.

Namespace

Namespace es un concepto que se refiere principalmente a cómo es que las entradas son nombradas en un servicio de directorio, pero también se puede implicar cosas como la estructura organizacional de las entradas.

El namespace de LDAP se utiliza en general para referenciar a los objetos en el directorio. Dado que cada objeto en el directorio debe tener un nombre, este sirve tanto para hacer referencia al mismo como para que pueda ser organizado en la estructura del directorio. Esto implica que si sabes el nombre de la entrada, puedes saber también en dónde está localizado el objeto.

DNS se ha convertido en el namespace estándar de Internet. El namespace que utiliza LDAP es muy similar a DNS, por lo que pueden trabajar bien juntos.

¿Qué es el ESQUEMA?

El esquema (o schema) define las reglas necesarias para que el servicio de directorio trabaje de forma correcta. Estas reglas definen qué tipo de entradas pueden estar dentro del directorio. Uno no puede crear un objeto dentro de un directorio si no está dentro del esquema.

Además, el esquema define reglas sobre qué tipo de valores pueden ponerse en los atributos y qué tipo de operadores son válidos para esos atributos, entre otros.

¿Qué es LDIF?

LDIF es un acrónimo para LDAP Data Interchange Format. Este formato permite representar entradas de un directorio LDAP o cambios hechos en el mismo, en un archivo con formato de texto. Esto nos da una gran flexibilidad en el momento en que queremos migrar datos entre directorios.

LDIF es utilizado para varias funciones como son respaldos de un directorio, replicación, modificación de esquema y cuando mueves una gran cantidad de datos de un directorio a otro.

LDIF permite manipular grandes cantidades de información mucho más fácil de lo que sería con el formato de LDAP. Además, tener el archivo en formato de texto nos permite manipular la información con otros lenguajes como Perl o PHP.

Software para implementación:

Existe mucho software que nos ayuda a implementar un servicio de directorio LDAP. Podemos mencionar los siguientes:

  • Microsoft Active Directory
  • OpenLDAP
  • phpLDAPadmin
  • Novell eDirectory
  • Samba (permite comunicación entre sistemas operativos)

Click aquí para saber más sobre el servicio de directorios.

[Tutorial] Explicando el Servicio de Directorios

¿Qué es el servicio de Directorios?

Un servicio de directorio es aquel encargado de manejar los directorios en un sistema, provee las herramientas necesarias para acceder al contenido, buscar y organizar la información.

Se puede decir que un directorio es un tipo de base de datos que contiene entradas. Estas entradas están llenas de información sobre algo, por ejemplo, los datos de una persona, su nombre, su dirección, teléfono, etc. A las entradas también se les llama record u objeto de directorio.

Los directorios tienen dos parámetros que son:

Estructura. Define como un directorio almacenará la información.

Contenido. ¿Qué tipo de información va a guardar dicho directorio?

Los directorios tienen algunas características que le permiten realizar sus funciones de una mejor manera, estas son:

  • Son dinámicos. Esto significa que pueden ser actualizados constantemente, incluso en tiempo real, por lo que la información contenida siempre será reciente-
  • Flexibilidad. Esto se refleja tanto en contenido como en la búsqueda. El contenido es actualizable y pueden agregarse nuevos campos o nueva información sin alterar realmente el funcionamiento. Además, el directorio nos ofrece distintas formas para hacer una búsqueda, es decir, se puede buscar con diferentes parámetros.
  • Seguro. Se pueden definir permisos de acceso y de modificación de los datos de muchas maneras, lo que contribuye a la seguridad de la información.
  • Configurable. Esto es, dependiendo de los permisos, se puede definir que cierta información se muestre a las diferentes personas.

¿Cuál es su uso y objetivo?

Los directorios tienen una función muy clara, organizar la información de forma que sea más sencillo encontrar lo que uno está buscando.

Es importante resaltar que los directorios están hechos prácticamente para realizar búsquedas eficientes, pero no tanto así para hacer escrituras en archivos, es decir, los directorios están optimizados para lectura y no tanto para escritura.

En cuanto a sus posibles usos en la realidad son prácticamente ilimitados. Podemos pensar en un sistema de directorio para almacenar información sobre productos en una tienda, la lista de empleados en una empresa o la lista telefónica de una ciudad (he aquí la relación con los directorios telefónicos).

También son importantes para el acceso a la información por parte de aplicaciones. Con esto, las aplicaciones pueden hacer uso de los recursos y los datos que se tienen disponibles en algún lugar, por ejemplo, un gestor de correo electrónico necesita información sobre el nombre de a quién va a mandar el correo y también su dirección de correo.

Componentes y forma de operación

Un servicio de directorio está conformado por objetos o entradas que están ordenadas en forma jerárquica. Cada entrada cuenta con un nombre que la identifica y que también indica cuál es su posición en el árbol del directorio.

Para mantener actualizada la información, el servicio de directorio realiza las siguientes funciones:

  • Buscar y retroalimentar las entradas desde el directorio.
  • Añadir nuevas entradas.
  • Actualizar entradas existentes.
  • Eliminar entradas.
  • Renombrar entradas.

Estas son las acciones que permiten al servicio de directorio funcionar de forma correcta y proveer de la información necesaria.

Similitudes y diferencias con bases de datos

Habíamos mencionado anteriormente que se podría decir que los directorios son un tipo de bases de datos, pues almacenan información de algo en específico. Sin embargo, existen algunas diferencias entre ambos.

Una de las más importantes es el hecho de que los directorios están optimizados para la búsqueda o para la lectura, mientras que las bases de datos están hechas para lectura y escritura. Esto se debe a que la información contenida en un directorio cambia muy pocas veces o muy rara vez, de manera que la información se mantiene constante la mayoría del tiempo y solo se necesita para leer o para informarse de algo. Las bases de datos por otro lado, cuentan con algoritmos que permiten un mejor manejo de los campos y de los datos.

Otra gran diferencia es el manejo de Keys en las bases de datos y no en los directorios. Estas keys sirven para organizar la información y establecer relaciones entre diferentes tablas, valores y “nombres”. En cambio, los directorios no manejan esta estructura de relaciones, sino que manejan una estructura jerárquica, esto hace que los directorios estén mucho más estructurados que las bases de datos.

Ejemplos de estructuras de directorio

•       Flat Directory Structure

•       Vertical Directory Structure

•       Relatively Flat Directory Structure

Metadirectorios

Los metadirectorios son un servicio que pretende hacer la comunicación entre directorios de forma transparente, es decir que uno pueda transferir manejar la información que tiene en distintos directorios como si estuvieran en uno mismo.

Este concepto no está desarrollado completamente y debido a que cada compañía requiere diferentes políticas y reglas en su directorio, es muy difícil crear un estándar para todos. Esto se soluciona vía scripts que cada compañía debe desarrollar por su cuenta. Esto es más costeable que comprar uno que probablemente no se ajuste a las necesidades requeridas.