Eventos de programación: Google HashCode 🎉

por:

Te mostramos los eventos de programación como el Google HashCode

Una de las cosas en las que más me gusta participar, son los eventos de programación, y la semana pasada no pude dejar pasar la oportunidad de concursar en el Google HashCode. Por eso hoy te cuento por qué deberias asistir a este tipo de eventos, los cuales considero muy importantes y cómo funciona uno de los más conocidos, el Google HashCode.

¿Por qué ir a eventos de programación?

Nuestro hub en el Google HashCode con todos los participantes

Apuntarte a un evento de programación, tiene multitud de beneficios:

  • Compruebas tus conocimientos y eres capaz de medirlos.
  • Conoces compañeros del sector, lo que te va a ayudar a incrementar tus contactos.
  • Aprendes nuevas técnicas para resolver problemas.
  • Obtienes stickers y regalos de tus empresas favoritas.

Leer más

Cómo manejar números grandes

por:

Cómo manejar números grandes

Una duda que nos plantearon hace algún tiempo, es la problemática de operar con números grandes en C, aunque este acercamiento también es válido para otros lenguajes. Lo primero de todo decir que cuando hablamos de números grandes debemos definir el número de cifras con las que consideramos que el número es grande.

Conociendo el número más grande que podemos almacenar en un tipo de dato

Un modo bastante simple, para acercarnos a este problema es ver cual es el mayor número que podemos almacenar en un tipo de dato. Aquí hay que hacer distinciones, por una parte si hablamos de números reales y por otra si hablamos de números enteros.

En el caso de números enteros, por ejemplo si nuestro tipo de dato es un entero de 32bits, y acepta números tanto positivos como negativos, el mayor número que puede almacenar es: 2^31 -1 = 2.147.483.647. Si queremos almacenar números más grandes, y no vamos a utilizar los negativos, podemos usar un entero de 32bits sin signo. En este caso tenemos que el mayor número es el 2^32 -1 = 4.294.967.295

El siguiente paso para poder manejar números más grandes, es bastante obvio y consiste en aprovechar las máquinas de 64bits, utilizando enteros de 64bits. Pudiendo almacenar como máximo el número 18.446.744.073.709.551.615.

Los tipos de datos reales, utilizan otra representación que podéis ver aquí.

Leer más

Como crear un instalador en Windows

por:

Cómo crear un instalador en Windows

En esta entrada os queremos enseñar cómo crear un instalador en Windows, de una manera simple, visual y rápida.

Como crear un instalador en Windows

Como muchos conocéis, en Windows la manera más sencilla de distribuir vuestras aplicaciones es usando un instalador, que suele tener extensión .exe o .msi . Estos instaladores básicamente realizan las siguientes tareas:

  • Copiar los ficheros del programa a la ubicación correspondiente.
  • Añadir al registro los datos necesarios.
  • Añadir un acceso directo al programa en el escritorio.
  • Registrar nuestra aplicación en Windows
  • Registrar un desinstalador de la aplicación.
  • Registrar una extensión de archivo, para abrir con nuestro programa.

Herramientas necesarias

Las únicas herramientas que vamos a necesitar para este tutorial son Visual Studio 2015 y Microsoft Visual Studio 2015 Installer Projects.

Leer más

CLOC la herramienta para contar líneas de código

por:

Cloc la herramienta para contar las líneas de código

En algunos casos cuando desarrollamos proyectos, no interesa llevar un conteo de cuantas líneas hemos escrito para estimar el trabajo que nos ha llevado hacer el proyecto. Pero medir este número muchas veces es complejo, puesto que podemos tener muchos ficheros fuente y algunos IDEs no traen una herramienta que nos ayude a contarlas. Para ello hoy les quiero hablar sobre CLOC.

Cloc tu contador de líneas de código

Aunque como comentaba anteriormente, las líneas de código no es una buena medida del esfuerzo de un proyecto, ya que podemos tener algoritmos muy complejos que ocupen pocas líneas, en algunos casos es interesantes medirlas. Pero también encontramos distintas maneras de medir las líneas de código, medir solo el código, medir el código y los comentarios o medir el código, los comentarios y las líneas blancas que haya en los archivos. Además en ciertos lenguajes como C o C++ es útil diferenciar si las líneas son en ficheros de cabecera, o en ficheros fuente.

Leer más

5 habilidades necesarias para un informático

por:

Las habilidades necesarias para un informatico

 

Este artículo surge de una charla con otros compañeros de profesión, algunos de ellos novatos y otros con varios años de experiencia a sus espaldas. En ella nos planteábamos que cosas consideramos indispensables dentro de nuestro ámbito, la informática y esta es la conclusión a la que llegamos.

1 Conocer un lenguaje o tecnología en profundidad

Aunque muchos, entro los que me incluyo, hacemos desarrollos en múltiples lenguajes según lo que se nos pida, llegamos a la conclusión que es necesario saber algún lenguaje a un nivel medio-avanzado. Esto nos va a permitir desarrollar por una parte nuestra carrera profesional y por otra tener un conjunto de conocimientos amplios sobre programación. Esto último es muy útil cuando cambiamos de lenguaje o tecnología, porque ya sabemos dos cosas, cómo plantear el problema y cómo lo resolveríamos en el lenguaje que nos sentimos más cómodos, así que lo único que tenemos que hacer es ver si podemos adaptar esa estrategia a nuestro lenguaje actual.

Si un informático cumple este primer punto, es poco probable que se atasque al plantear o intentar resolver, aunque sea en pseudocódigo, la mayor parte de los problemas que le vayan surgiendo.

2 Comprender el inglés

En mi caso me he encontrado con muchos compañeros y usuarios en foros de internet, que preguntan cosas como las siguientes: ¿Dónde esta la documentación oficial de Apple en español?, ¿Por qué stackoverflow está en ingles? ¿Cómo pongo X programa o IDE en español? etc. El inglés es algo necesario para cualquier informático, actualmente la mayor parte de documentación técnica, programas, foros y webs de tecnología están en este idioma, así que sin él, es como desarrollar sin tener casi internet. En mi caso no soy un experto en inglés, pero tengo la suficiente comprensión lectora como para entender el idioma y la capacidad de poder redactar en él y que me entiendan (esto último también es importante).

Leer más

Comprobando las fugas de memoria con Valgrind

por:

Una de los errores más comunes cuando realizamos un programa con un lenguaje como C, son las fugas de memoria (memory leaks). Este error aunque parezca menor, tiene una gran importancia porque estamos desperdiciando parte de los recursos de nuestro equipo, dejándolos inaccesibles para todos los programas.

Cómo se produce una fuga de memoria

Una fuga de memoria consiste en reservar memoria dinámica y luego modificar el puntero que apunta a esta zona, dejándola inaccesible.
Por ejemplo en este código hay una fuga de memoria, que se produce al reutilizar el puntero sin liberar antes el bloque de 5 enteros:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio .h>
#include <stdlib .h>
 
int main(){
 
  int *pt = NULL;
  pt = (int *)malloc(sizeof(int)*5);
  
  //mas codigo ...
  pt = (int *)malloc(sizeof(int)*10);
  free(pt);
 
}
</stdlib></stdio>
#include <stdio .h>
#include <stdlib .h>
int main(){
int *pt = NULL;
pt = (int *)malloc(sizeof(int)*5);
//mas codigo ...
pt = (int *)malloc(sizeof(int)*10);
free(pt);
}
</stdlib></stdio>

Leer más

Prolog el lenguaje de programación lógico

por:

Prolog el lenguaje de programación lógico

Hoy en día cuando queremos estudiar o realizar un proyecto tenemos una gran cantidad de lenguajes a nuestra disposición. Pero hay muchos de ellos cuyas características principales son similares. Sin embargo dentro de ese grupo de lenguajes distintos y poco conocidos está Prolog.

¿Qué es Prolog?

Prolog es un lenguaje lógico, utilizado para programar en el campo de la inteligencia artificial. Sus características son bastante peculiares ya que no sigue la filosofía estructurada ni la orientada a objetos. Algunas de las cosas llamativas que podemos encontrar en el mismo es que no hay bucles.

El lenguaje se basa principalmente en:

  • hechos algo que siempre es verdadero.
  • reglas algo que para que sea verdadero se tienen que cumplir aquellas condiciones del cuerpo de la regla.

El proceso de resolución

La solución que suele ofrecer es verdadero o falso y para ello intenta buscar el objetivo que le indicamos analizando las cláusulas (hechos y reglas) de arriba a abajo. Además utiliza el algoritmo de backtracking para intentar al alcanzar la solución aunque sea utilizando múltiples reglas.

Leer más

Qué son los snippets o fragmentos de código

por:

Que son los snippets o fragmentos de codigo

Normalmente cuando desarrollamos programas, nos encontramos con cierto código que se suele repetir de manera constante en la mayoría de los proyectos. Normalmente esto lo solemos encapsular en una clase, en una plantilla de proyecto o en un fichero externo, según el lenguaje y plataforma que utilicemos. Sin embargo hay otras líneas de código, que sin ser tan frecuentes como las anteriores, sí nos gustaría tener a mano para solucionar un problema o recordar de una manera rápida cómo se solucionaba el mismo.

Snippets o fragmentos de código

Como sabréis los lectores más fieles a mis artículos, normalmente intento utilizar los términos en español para las palabras inglesas, siempre que esa traducción se use con frecuencia. En este caso, la mayoría de gente que conozco siempre dice snippets, así que he decidido incluir el término en el artículo.

Leer más

JSON el formato de datos mas popular

por:

Con el creciente desarrollo de Internet en los últimos tiempos debido a los dispositivos móviles, hemos asistido a una revolución en la manera de intercambiar datos. La mayoría de servicios nacieron para ser consultados desde un navegador web, pero se tuvieron que ir adaptando para poder hacer aplicaciones nativas, que permiten un mayor y mejor uso de los mismos. En estos casos la mayoría de las empresas decidió que la manera más sencilla de proveer a esas aplicaciones de datos, sería mediante una API.

En un principio la forma de comunicar datos entre dos aplicaciones fue XML, un lenguaje de marcado (similar a HTML). Pero su sintaxis es poco clara y en muchos casos tiende a generar ficheros con mucha sintaxis para la información real que queremos transmitir. Para sustituir a XML el formato que mejor se ha posicionado es JSON.

JSON

JSON es un formato mucho más claro, con mucha menor sintaxis al no utilizar etiquetas para indicar cada contenido y esta basado en un sistema similar a los diccionarios (relación clave-valor). Este formato ha sido elegido por la mayoría de las APIs y desarrollos en los últimos años y actualmente XML se está quedando relegado a aplicación antiguas.
Leer más

Visual Studio y la telemetría

por:

Una de las cosas más criticadas de Windows 10 ha sido que invadía la privacidad por su sistema de telemetría. Hoy os vamos a explicar qué es y qué datos nos da la telemetría utilizando un ejemplo real de aplicación realizada con Visual Studio.

Añadiendo telemetría a nuestra aplicación

Lo primero que tenemos que hacer es crearnos una cuenta de Azure para que recoja y procese nuestros datos sobre telemetría. Después cuando vayamos a crear nuestra aplicación debemos marcar la siguiente opción:

La telemetria en Windows 10 y Visual Studio

Esto va a cargar de manera automática información sobre el uso de nuestra aplicación a nuestra cuenta de Azure.

Leer más