Escribiendo código a más velocidad

por:

El nuevo servicio para ganar velocidad a la hora de escribir el código

Una de las cosas que notan todos los usuarios cuando empiezan con la informática, es que hay que escribir gran cantidad de texto con el ordenador. Para ello siempre recomendamos que se haga un curso de mecanografía pero en algunos casos no siempre es suficiente.

La mecanografía del código

Si tenemos algo de experiencia escribiendo código, seguro que hemos notado que los caracteres que escribimos, son algo distintos de los caracteres que escribimos cuando redactamos un texto. Esto básicamente es debido a que en informática se usan mucho los símbolos.

El problema con el que nos encontramos, por lo menos al principio es que tenemos cierta soltura para escribir palabras, pero cuando tenemos que introducir símbolos como {}[] tenemos que mirar dónde están. Esto hace perder mucha velocidad en la escritura del código.

¿Por qué escribimos el código más lento?

Si alguna vez habéis visto el teclado de algún compañero extranjero, habréis notado que la distribución de teclas es ligeramente distinta, esto es debido a que la posición de algunas teclas se adapta al idioma del usuario. Pero esto que puede parecer algo trivial, es un problema para la hora de programar, ya que los símbolos de los lenguajes de programación están pensados para el teclado inglés donde es más fácil introducirlos.
Leer más

Primeros pasos en criptografía

por:

Una de las ramas más importantes hoy en día de la informática es la criptografía, que se encarga de la transmisión segura de la información. En este artículo queremos acercarnos a los principales conceptos y enseñaros un ejemplo de su uso.

Por qué es necesario cifrar los datos

Todavía hoy en día gran cantidad de personas piensan que no es necesario cifrar los datos, puesto que estos viajan de manera segura cuando son enviados. Esta idea es totalmente falsa, todos los datos (incluidas contraseñas) viajan de la misma manera por internet y esta manera consiste en enviarlos tal cual son. Debido a ello pronto se descubrió que no era muy seguro que en nuestro tráfico figurasen cosas como «user=pepe&pass=laPassDePepe» y se empezó a aplicar el cifrado de las comunicaciones.
El cifrado por lo tanto no es una cosa que haga la implementación de Internet por nosotros, sino que es un añadido por parte de los administradores web.

Sistemas criptográficos y funciones hash

Básicamente hay dos tipos de cifrados:

  • Cifrados de clave privada: en este caso tanto el emisor como el receptor comparten una clave con la cual se cifra y descifra la información que se quiere transmitir. Tienen como ventaja el ser más sencillos y rápidos a la hora de descifrar y cifrar, pero tienen el problema de que hay que compartir una misma clave. Un ejemplo de este tipo de sistema de cifrado es AES
  • Cifrados de clave pública: en este caso el emisor y el receptor tienen distintas claves. Sus claves son más complejas y están formadas por dos partes: una pública que se anuncia a cualquier emisor y una privada que nunca se envía. La ventaja radica en que no se necesita compartir una clave y por lo tanto se puede enviar datos por canales inseguros de forma segura. Las desventajas son principalmente el mayor coste computacional y la complejidad de este tipo de comunicaciones. En este caso encontramos RSA como máximo exponente de los sistemas criptográficos de clave pública.
    Leer más

Programacion paralela en C : Semaforos

por:

Te enseñamos a utilizar semaforos para la programación paralela
Uno de los contenidos fundamentales de la programación paralela es la sincronización con semáforos. Este concepto es el que os vamos a explicar en este artículo.

¿Qué es un semáforo?

Por si quedaba alguna duda, no son semáforos de tráfico, es un concepto usado en informática para indicar una estructura con unas características específicas.

Un semáforo es una estructura u objeto que nos va a permitir la sincronización multiproceso o multihilo de nuestro programa. Básicamente se basa en un contador, una función de incrementar el contador y otra de decrementar el contador. El control de acceso se realiza mediante el valor de ese contador, si el contador es negativo el hilo o proceso se suspenderá hasta que ese contador deje de ser negativo, momento en el cual el hilo o proceso empezará a ejecutarse automáticamente.

La implementación de los semáforos varía entre plataformas, por ejemplo en Linux están implementadas a nivel del sistema operativo dentro de los IPCs.

Si estáis más interesados en cómo funciona un semáforo por dentro podéis leer los problemas: problema del barbero y el problema de los filósofos.
Leer más

Programacion paralela en C : Acceso concurrente

por:

Te enseñamos como lidiar con el acceso concurrente en programacion paralela
En la entrada anterior os contaba que había realizado un pequeño truco para que el programa funcionase. Esto es debido al acceso concurrente.

Acceso concurrente

Esto de acceso concurrente a un recurso puede parecer a simple vista algo raro o complejo de entender, así que veámoslo con un ejemplo:
Si por ejemplo tenemos dos teléfonos fijos en casa, que los llamaremos A y B en la mayoría de los casos solo uno de los dos puede utilizar la línea para hablar. Así si A y B se ponen a llamar a la vez seguramente ocurrirá que se entrecruzan las conversaciones y hay interferencias entre las mismas. Por ello si A está llamando B tiene que esperar a que A acabe de usar la línea para luego utilizarla él.

Recursos y usuarios

Normalmente se suele utilizar estas dos palabras como terminología básica en el acceso concurrente:

  • Recursos: son los elementos, dispositivos o datos a los que se quiere acceder.
  • Usuarios: son las personas, programas o cualquier otro sistema que necesita acceder a un recurso.

Leer más

Usando números grandes en C

por:

Usando números grandes en C
Una duda que surgió hace tiempo en el foro pero a la que no me había enfrentado hasta ahora, es el uso de números grandes en C.

La necesidad de usar números grandes

En mi caso estaba trabajando con algoritmos de cifrado de datos, que usan números enteros de varios miles de bits, lo que implica que son números que no «entran» en ningún tipo de dato entero de C. Sin embargo estos números hay que almacenarlos de alguna manera, para ello surgen los números grandes.

¿Qué son los números grandes?

Básicamente es una implementación de un tipo de dato numérico, que permite trabajar con números de cualquier longitud, donde no hay un numero máximo que podamos almacenar. Para ello trabajan a con memoria dinámica y reescriben las operaciones aritméticas y lógicas.

Bibliotecas de números grandes

Como experiencia personal yo he trabajado con dos:

  • OpenSSL que trae un tipo de dato denominado BIGNUM que tiene implementado la mayoría de las operaciones (básicamente las que necesitan ellos para cifrar los datos).
  • GMP que traen una implementación completa de números grandes, siendo la biblioteca de este tipo más potente que he encontrado y una de las más usadas.
    Leer más

Programacion paralela en C : Memoria compartida

por:

Utilizando memoria compartida para la programacion paralela
Si el otro día hablábamos de los inicios en programación paralela, hoy os vengo a hablar del paso de datos cuando realizamos un programa con varios procesos. Como repaso del otro día podemos decir que hay dos tipos de intercambio de datos, memoria compartida ( todos acceden a la misma posición de memoria) y paso de mensajes (se envía los datos a un proceso en concreto).

¿Qué es la memoria compartida?

Cuando nosotros creamos un proceso, se reserva una zona de memoria con acceso exclusivo para nuestro proceso, de tal manera que si otro proceso quiere acceder a esta zona de memoria, generalmente nos dará un error. El error suele aparecer con cierta frecuencia cuando no manejamos bien los punteros en C y es el famoso segmentation fault.
Leer más

Programacion paralela en C : Inicio

por:

Los inicios de la programacion paralela en C para Linux

En esta serie de entradas que hoy empezamos, nos vamos a enfocar en la programación de sucesos paralelos en C. Este tipo de programación implica conocer una serie de conceptos especiales y saber cómo funcionan como los semáforos.

Programación paralela

La decisión de utilizar programación paralela parte de la base de que muchas veces queremos agilizar nuestros cálculos y para ello queremos usar todo el potencial de nuestra CPU. Actualmente seguramente muchos tendremos una CPU con varios núcleos, así que por qué no utilizarlos todos para agilizar los cálculos. Por ejemplo si queremos sumar (por fuerza bruta) el primer millón de números, tardaremos menos si distribuimos la carga entre varios núcleos que si hay que realizarlo todo de manera secuencial.

Conceptos de programación paralela

Básicamente hay dos maneras de realizar la programación paralela, mediante hilos o mediante procesos:

  • Todos los hilos comparten los recursos, es decir si nosotros cambiamos con un hilo el valor de una posición de memoria, ese valor nuevo lo tendrán el resto de hilos.
  • Todos los procesos realizan una copia de los recursos del proceso padre, especialmente de su memoria y sus variables. En este caso un valor que cambiemos en un proceso no tiene repercusión en otro proceso, son entornos totalmente aislados.

Leer más

¿Cómo usar colores en C?

por:

Te enseñamos cómo usar colores en tus programas en C

Una de las cosas que siempre nos gusta cuando diseñamos un programa es darle un aspecto visual, adecuado al mismo. Pero el problema lo tenemos cuando nuestro software no va a tener una interfaz gráfica, sino que va a funcionar solo en modo texto.

En este caso una de las cosas que nos podemos plantear para añadirle algo de mejora visual, es utilizar distintos colores en la salida por pantalla.

¿Cómo usar colores en C?

Muchos os preguntaréis si es posible pintar la pantalla con un conjunto de colores y no utilizar en todo momento el color que marca la terminal del usuario.
Pues sí, es posible y en este artículo os vamos a enseñar cómo hacerlo.

Para ello vamos a utilizar algo que se denomina caracteres no imprimibles que como su propio nombre indica son caracteres no visibles, pero que realizan funciones normalmente de control.
Leer más

Los Trigger en una base de datos

por:

¿Qué es un Trigger?

Un Trigger, también llamado Disparador, en una base de datos, es un procedimiento que se ejecuta cuando se cumple una condición establecida.

Depende de la base de datos, los Triggers pueden ser antes o después de ejecutar un INSERT, UPDATE o DELETE.

Un Trigger funciona tanto al insertar,actualizar o borrar datos en una base de datos o incluso al crear o editar usuarios.

¿Qué funcionalidad tienen?

Los Triggers son usados para mejorar la administración de la Base de Datos, sin necesidad de que el usuario ejecute esas sentencias SQL.

La utilidad que se le acostumbra mayoritariamente a dar, es para prevenir errores de datos, actualizar tablas, modificar valores, entre muchas utilidades que el administrador le quiera dar.

¿Qué necesito para hacer mi propio Trigger?

Un programa en el cual poder escribir sentencias SQL/MySQL, por ejemplo MySQL Workbench, y en él una base de datos, con tablas, campos o inserciones.

Creando un trigger en una base de datos MySQL

Leer más

Aprendiendo a trabajar con Node.js

por:

Node.js es lo que comúnmente se conoce como JavaScript del lado del servidor, esto es nos permite montar un servidor web, con un motor JavaScript en este caso el motor que utiliza es el motor de ejecución de JavaScript de Chrome.

Aprendiendo a usar Node.js

Aprendiendo Node.js con node School paso a paso

Hoy os proponemos una gran guía para que aprendáis a usar esta tecnología, para ello vamos a usar los recursos de Node School. Así que vamos a ver que recursos son esos:

Los recursos son módulos del propio Node.js así que lo primero que debemos hacer es instalarlo, para ello nos lo bajamos de la web oficial.
Una vez que lo tenemos podremos instalar los módulos de Node.js con la orden «npm«.

Probando Node.js

Ahora lo único que necesitamos es ejecutar el primer módulo y ver que contiene:

Empezando a usar Node.js

Leer más