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

Cómo actualizar a Windows 10

por:

Como muchos de vosotros sabréis ayer miércoles fue la fecha elegida por Microsoft para lanzar Windows 10 al público. Windows 10 podríamos decir que es un nuevo Windows basado en Windows 8 pero intentado cambiar todas aquellas cosas por las que fue criticado (diseñado para pantallas táctiles, no apto para las empresas, falta de integración etc).

Actualizando a Windows 10 paso a paso

Para actualizar a Windows 10, podemos instalarlo de 0 utilizando para ello las ISO que provee Micrososft o actualizar nuestra copia a la nueva versión (esto conserva nuestros documentos, programas, drivers, configuraciones etc). Si nuestra decisión es tomar la primera opción, debemos seguir el mismo proceso que seguiríamos con cualquier otro sistema operativo.

Para actualizar a Windows 10 desde Windows 8 o 7, debemos reservar nuestra copia utilizando el icono de Windows que tendremos en nuestra barra de tareas ( si no lo tenemos, seguramente necesitemos instalar las actualizaciones que tengamos pendiente).

Después desde Windows Update nos debería salir la opción de instalar Windows 10. En caso de que no nos salga esta opción podemos forzarlo de la siguiente manera: Apretamos el botón Windows + R y ejecutamos wuauclt.exe /updatenow y si sigue sin ir podéis usar este programa de Microsoft para arreglar Windows Update.

Ahora ya empezará a descargarse (son unos 6Gb) y nos saldrá una ventana de confirmación:

Actualizando a Windows 10

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

Crear tu portfolio de desarrollos con un click

por:

Hace algún tiempo estuve buscando alguna iniciativa o página que nos permitiera mostrar de manera visual los proyectos que se han desarrollado. Después de buscar por distintos sitios descubrí Stockroom que es el sitio sobre el que os vengo a hablar hoy.

¿Por qué es necesario un portfolio?

Básicamente este recurso nos permite mostrar de una manera formal y eminentemente visual, los proyectos que hemos desarrollado. En el caso de Stockroom ellos se encargan de obtener nuestros repositorios de Github y Bitbucket y a extraer información de Stackoverflow para que con un click se cree nuestro portfolio.

Ventajas de usar Stockroom

La principal ventaja de usarlo es que funciona todo de manera automática, no teniendo la necesidad de ir introduciendo a mano información sobre nuestros proyectos. Además presenta una interfaz muy llamativa que es perfecta para enseñar a compañeros o incluirlo en nuestro currículo si nos dedicamos al desarrollo de aplicaciones.

Leer más

JSFIDDLE tu IDE online para desarrollo web

por:

En el artículo de hoy os presentamos una web que os ayudará en gran medida para realizar pruebas y compartir código de proyectos web.

Descubriendo JSFIDDLE

JSFIDDLE es una página web, que actúa como si fuera un IDE (un entorno de desarrollo) con algunas características que te van a permitir probar cosas de manera muy rápida.
Algunas de sus características son:

  • Soporte de bibliotecas con un click: para ayudarnos a realizar las pruebas, tenemos la posibilidad de usar algunas de las bibliotecas más utilizadas de JavaScript con sólo seleccionarlas de la lista:

Las bibliotecas de JavaScript más utilizadas a un click con JSFIDDLE
Soporte para cargar recursos externos: en este caso si por ejemplo necesitamos una biblioteca que no está en el menú, la podemos cargar desde aquí, así como plantillas CSS ya definidas:

Soporte para recursos personalizados en JSFIDDLE
Soporte para formateado de código: con pulsar sobre la opción TidyUp nuestro código será formateado para que sea más fácil de leer.
Análisis del código: con pulsar sobre la opción JSHint nos realizará una validación de nuestro código JavaScript:

Analizando nuestro código JavaScript con JSFIDDLE

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