Publi

  • Linux on Movies: KDE en Miénteme

    Una serie donde analizan micro-expresiones faciales y corporales para pillar a los malos. Miénteme. Analizan al milímetro los gestos de la gente y por supuesto, leen su correo en Kmail, aunque, como tapadera (ya que son todos unos expertos informáticos) reciben los e-mails a través de la lista de correo KDE-Plasma:
    kde_mienteme
    En el minuto 9:15 del capítulo 9 de la segunda temporada podemos ver este pantallazo durante un momento… Leer artículo completo

  • Algoritmos: generar números aleatorios para la lotería

    Es un ejemplo típico y nos muestra el uso de rand() con arrays para generar varios números aleatorios y no repetidos.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    /**
    *************************************************************
    * @file loteria.c
    * @brief Saca números aleatorios para la lotería
    * Basado en el sorteo de la primitiva, hay que sacar 7 números
    * del 1 al 49, sin repetir
    *
    * @author Gaspar Fernández <blakeyed@totaki.com>
    * https://poesiabinaria.net/algoritmos/
    *************************************************************/


    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>       /* para time() */


    int numero_aleatorio(int desde, int hasta)
    {
      return desde+rand()%(hasta-desde+1);
    }

    short numero_repetido(int numeros[7], int n)
    {
      int i=0;

      while (i<n)
        {
          /* Si un número sacado anteriormente es igual al número
             en la posición n, decidido, está repetido.
    Leer artículo completo
  • Linux on Movies: Person of Interest usa GNOME

    En esta serie, Person of Interest (Vigilados en español) protagonizada por Jim Caviezel y Michael Emerson, salen escritorios Gnome 2 por todas partes, con diferentes temas.

    Aunque no se termina de ver claro, hay algunas veces que se perfila algo, es un escritorio muy personalizado que siempre tiene textos de terminal o en hexadecimal en movimiento (porque los mejores informáticos lo hacen así)… pero en la barra inferior, tiene un texto «Applications», «Places», «System», os suena… porque a mi me recuerda horrores a GNOME 2.… Leer artículo completo

  • Algoritmos: Validar un DNI en C

    En España, para identificar de forma única a cada ciudadano se utiliza el número del Documento Nacional de Identidad (DNI). Como es costumbre, en muchos datos numéricos, como este, un número de cuenta corriente, códigos ISBN, etc existe un algoritmo de verificación que comprueba que el número es válido. En este caso, la comprobación se realiza con la letra que acompaña el número.

    El algoritmo es sencillo, puede que a la hora de implementarlo no nos acordemos del orden de las letras (para eso lo pongo, y podemos hacer Copia y Pega rápidamente).… Leer artículo completo

  • Redimensionar ventanas con Alt+Botón derecho en GNOME 2

    Aunque GNOME2 ya está algo antiguo, aún lo uso en algún equipo viejo, y una cosa que yo utilizo muy a menudo es la redimensión de ventanas con Alt+Botón derecho del ratón (para mover también es muy rápido Alt+Botón izquierdo), aunque GNOME 2 trae por defecto la redimensión con Alt+Botón central lo que no me resulta muy cómodo a veces (sobre todo en portátiles cuando no hay botón central).

    Para ello, aunque se puede hacer de forma gráfica, a veces es mejor un copia y pega de consola:

    $ gconftool-2 –set /apps/metacity/general/resize_with_right_button –type=bool True

    Leer artículo completo
  • Algoritmos: Probar la existencia de un fichero con open() en C

    Estos días a varios de mis alumnos les ha surgido la necesidad de probar la existencia de un archivo haciendo la llamada al sistema open(). Es bastante sencillo, sólo hay que probar si éste se ha podido abrir (como lectura, por ejemplo, para no tocar el fichero en la medida de lo posible).
    Una vez se abre el fichero pueden ocurrir varias cosas:

    • que la llamada a open() no devuelva error.
    Leer artículo completo
  • Linux On Movies: Linux en TRON Legacy

    Hace más de un año que se estrenó la película, pero ahora es cuando decido incluirla aquí, que tengo capturas y tiempos concretos:
    En el minuto 11 segundo 25 podemos ver el primer regalo… GNU/EMACS !!
    tron_emacs
    y para los que no sepan lo que es capaz de hacer Emacs… ahora lo vemos ejecutando un juego en Emacs lisp: hanoi-unix:
    tron_emacs2
    Aunque sólo sale un instante… igual que sólo sale durante un solo frame…
    tron_ubuntu
    ¡ Ubuntu !… Leer artículo completo

  • Algoritmos: Factorial y cálculo del seno por la serie de MacLaurin (Taylor alrededor de 0) en C

    Algo más matemático vuelvo cuando propongo lo siguiente. Vamos a calcular un seno con la serie de MacLaurin. Ésta es la fórmula, extraída de Wikipedia.sin_maclaurin

    Y este el algoritmo en C:

    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
    #define PI 3.141592653588

    unsigned factorial(int n)
    {
      if (n<1)
        return 1;
     
      return n*factorial(n-1);
    }

    double senoTaylor(double n)
    {
      double t=0;
      int i;

      short signo=(n>=0);
      n=fabs(n);            /* Calculamos el valor absoluto */

      while (n>PI)      /* Reducimos el ángulo, de dos en dos cuadrantes*/
        {
          n-=PI;            /* 1 vuelta = 2PI radianes */
          signo=!
    Leer artículo completo
  • Algoritmos: Año bisiesto y validación de fechas en C

    Para inaugurar la nueva sección de Algoritmos de este blog, empezaré presentando una función para calcular años bisiestos (lo podemos encontrar en Wikipedia en bastantes más lenguajes, pero, ¿por qué aquí no?

    1
    2
    3
    4
    function bisiesto(int year)
    {
      return (a%4==0) && ( (a%100!=0) || (a%400==0) );
    }

    Es decir, cada 4 años hay un año bisiesto, no cuando el año es múltiplo de 100, aunque sí cuando es múltiplo de 400.… Leer artículo completo

  • mayúsculas y minúsculas en BASH (toupper(), tolower()) [copia y pega]

    mayuscula En ocasiones, es muy útil crear scripts en bash, aunque en ocasiones debemos controlar las mayúsculas y minúsculas, por ejemplo renombrando archivos, escribiendo informes o para ajustarse a diferentes convenciones a la hora de hacer un programa. Aquí dejo ejemplos de funciones tipo strtoupper(), strtolower(), por decir un equivalente en PHP.

    Hay opciones, la elección de alguna de estas opciones depende del entorno en que nos encontremos, ya sea BASH, algún otro clon, y dispongamos de awk o tr.… Leer artículo completo