Publi

  • Cómo generar una clave privada a partir de un sonido captado por el micrófono

    Screenshot 03-07-2016-140746_2

    Puede que no sea el método más seguro, pero como curiosidad, está muy bien. Vamos a aprovecharnos de que OpenSSL nos deja especificar la fuente de números aleatorios a la hora de generar una clave privada (y para otras cosas también). Aunque dicha característica está pensada para dispositivos externos que generen números aleatorios, como un dispositivo de hardware especial, o un software que genere siempre los mismos de cara a compartirlos… vamos a utilizar como generador de números aleatorios nuestra tarjeta de sonido.… Leer artículo completo

  • Cómo cifrar archivos con OpenSSL y con par de claves pública y privada. Varios métodos, paso a paso

    photo-1458419948946-19fb2cc296af

    Si queremos aumentar la seguridad del cifrado de archivos con OpenSSL. En lugar de utilizar una contraseña plana como se indica en el post anterior podemos utilizar un par de claves pública y privada para este cifrado. De estar forma, por un lado podemos ahorrarnos (si queremos) el tener que recordar una contraseña segura, y por otro ganar en seguridad, ya que las contraseñas, al fin y al cabo terminan siendo poca cosa.… Leer artículo completo

  • Generando imágenes en C, sólo por diversión, empezando desde cero (Parte I)

    colores_y_formasHace tiempo que no pongo nada de imagen digital, y ya tenía ganas. No haremos nada complicado, pero muchas veces, cuando empezamos a programar, pensamos en representar el contenido de un array en una imagen, o para esas veces en que pensamos que un simple algoritmo nos puede ayudar a crear la imagen que queremos.

    Cómo generar las imágenes

    Para generar las imágenes, vamos a pensar en un buffer sencillo, lineal de tipo unsigned char, o uint8_t, para imágenes en blanco y negro… vamos a empezar con imágenes sencillas, ya meteremos color… y más cosas.… Leer artículo completo

  • Monitorizar nuestro sistema desde una aplicación en C++11

    14255861975_42cb043745_k

    Nuestros programas, muchas veces necesitan conocer información sobre el ordenador donde se están ejecutando. Una característica muy interasante y útil (para mi gusto) es que los sistemas Unix nos proporcionan una interfaz para conocer muchas cosas a través del sistema de archivos, de esta forma podemos conocer la información estemos donde estemos y usemos en lenguaje que usemos (no tenemos que tener una API en nuestro lenguaje que pida al sistema la información ni nada).… Leer artículo completo

  • Reemplazar cadenas en C++, esta vez desde un map, para múltiples sustituciones

    Hace unos días hablamos de cómo reemplazar cadenas de texto en C++, tuvimos un método para copiar y pegar en nuestros proyectos muy fácil, pero cuando queremos hacer múltiples sustituciones podemos tener un problema: demasiadas llamadas a la función que producirán un código un poco feo…

    Para ello podemos utilizar el contenedor map de C++ y crear la misma función replace() que creamos hace unos días, pero esta vez aceptando un mapa como argumento, así buscaremos en cada una de las claves, y lo sustituiremos por cada uno de los valores que encontremos:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <iostream>
    #include <string>
    #include <map>

    using namespace std;

    string replace(string source, std::map<string,string>strMap, int offset=0, int times=0)
    {
      int total = 0;
      string::size_type pos;

      for (std::map<string, string>::iterator i=strMap.
    Leer artículo completo
  • Magia en Bash 50 ejemplos en una sola linea (o dos)

    Bash es una de las herramientas más potentes que tenemos a nuestro alcance, aunque no sólo de bash trata el artículo, sino de trucos para consola, one-liner como dirían muchos (aunque habrá algunos two-liners) que podemos utilizar y pueden hacernos la vida un poco más fácil:

    Cadenas de texto

    Trim

    Es una herramienta que utilizaremos para recortar nuestra cadena basándonos en los a la ìzquierda y a la derecha, en este caso nos basaremos en los espacios, que es uno de sus usos más comunes (así podemos obtener la cadena limpia tanto por delante como por detrás.… Leer artículo completo

  • Crear un archivo PHP que sólo contenga un array (desde un programa PHP)

    Aunque puede parecer redundante, pero es una idea curiosa. Sobre todo cuando creamos un sitio web con muchas opciones. Tenemos varias opciones:

    • Guardarlas en base de datos. Con lo cual cada página que carguemos tiene que hacer una petición, y si hay muchas visitas podemos saturar el sistema. Además una petición es una tarea un poco lenta
    • Guardarlas en un archivo de texto. Por lo que tendremos que hacer un programa que lea el fichero y lo interprete.
    Leer artículo completo
  • Caché+Compresión+Palabras clave en ficheros CSS y JS

    photo-1445912842705-7ee858b234c9_r
    Cuando nos aventuramos en un proyecto web con más o menos visitas, queremos que sea lo más rápido para el usuario y para ello enviar la menor cantidad de información (si nuestro hosting nos cobra además por transferencia también ganamos por esto), para ello podemos comprimir la información (y ya lo soportan la mayoría de los navegadores).
    Aunque tenemos que tener en cuenta que si comprimimos información (la compresión es un proceso algo pesado), estamos gastando recursos de CPU que, si lo pensamos, estar comprimiendo la misma información a cada petición que nos hagan de un fichero Javascript es tontería; por tanto, una vez que lo comprimamos, lo almacenamos en disco, que este tipo de información no ocupa tanto.… Leer artículo completo