Publi

  • EMACS: Cambiando la codificación

    Es muy común, sobre todo en trabajos colaborativos, que cada persona trabaje en una codificación diferente (casi siempre porque se usan programas diferentes para editar, y poca gente se para a cambiar la codificación por defecto). Por ejemplo, hay quienes guardan todos sus archivos en iso-8859-1 o iso-8859-15, incluso utf-8. Pero llega el momento en que se edita el archivo de otra persona, y esas codificaciones producen extraños comportamientos en la ejecución.… Leer artículo completo

  • Descargar automáticamente todos los programas de Redes

    neuron
    Apenas veo la televisión, pero hay ciertos programas que son interesantes y merecen la pena como Redes. Y tampoco me gusta verlos desde la web ya que Flash es muy lento, y me gusta tener lo que veo echar hacia atrás y hacia alante (como hace mplayer) y verlo cómodamente.

    Para ello, lo más cómodo es descargarlos, pero cómo descargarlos si tengo que bajarlos uno a uno (y son muchos), y tengo que mirar dónde está el archivo de vídeo (lo primero que nos podemos bajar a mano es una archivo de metadatos que nos dirá dónde está el vídeo), es una tarea muy lenta para hacerla a mano.… Leer artículo completo

  • Enseñando a programar

    Desde hace tiempo, me ofrezco como profesor particular de programación en C/C++ (entre otros), he conocido bastantes alumnos, y metodologías de varios profesores. Este artículo es una opinión personal de mi experiencia.

    En principio tengo que decir que muchos de mis alumnos, sólo venían para sacarse una asignatura, no tenían demasiado interés, aunque fuera una de las asignaturas claves de sus estudios, y algo que les ayudaría el día de mañana; aunque es cierto que no todo el mundo puede aprender a programar desde cero y con soltura en 3 ó 4 meses, requiere un entrenamiento, dedicación, mucho tiempo y enfrentarse con problemas una y otra vez, y si le sumamos a esto poco interés estamos perdidos.… Leer artículo completo

  • Búsquedas rápidas en el historial de BASH

    2683642114_bba3d6383e
    Cuando pasamos mucho tiempo en escribiendo en terminal, a veces tenemos la necesidad de repetir algo que escribimos en el pasado. Puede que estemos compilando algún programa, o haciendo un ./configure e instalando dependencias de un programa…
    Muchas distribuciones lo tienen por defecto (por ejemplo Gentoo), pero otras muchas (Ubuntu, Mandriva, ArchLinux…) no lo tienen; se trata de activar las teclas de Avance y Retroceso de página para hacer búsquedas en nuestro historial.… Leer artículo completo

  • Getters / Setters en PHP

    Cuando estamos programando con clases en PHP, a veces tenemos la necesidad de acceder a atributos privados de una clase desde fuera, tal vez para sólo lectura, sólo escritura, o porque estos no pueden tener cualquier valor.

    Pero claro, son atributos privados, no podemos hacer esto tal alegremente:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    class test
    {
        private $privado;
        function test()
        {
          $privado="Variable privada";
        }  
    }

    $t=new test;

    echo $t->privado;

    ?>

    En C++, por ejemplo, definimos getters/setters para todos los atributos qud podamos «tocar» desde fuera, aunque, es escribir demasiado (tratamos cada atributo por separado, y está bien).… Leer artículo completo

  • El lenguaje C en primera posición [de nuevo]

    tiobeLeo en el Blog de Manuel Pereira que a su vez lee en Mi visión la nueva actualización del índice TIOBE.
    En el que el lenguaje C vuelve a estar en primera posición con respecto a Java, que lo ha dejado en segundo lugar durante muchos años, y junto con C++ (aunque PHP sigue de cerca) forman el podio.

    Aunque, en muchos centros de enseñanza se considere que C o C++ son lenguajes anticuados, podemos ver que están a la orden del día y de hecho son usados, y mucho.… Leer artículo completo

  • Cosas que damos por hechas en C/C++: int main(int argc, char *argv[])

    photo-1444212568492-d2799d30943b_red

    Esta serie de posts está dedicada a tod@s mis alumn@s de clases particulares de programación. Iré añadiendo información de diferentes niveles, dificultades, colores y sabores. Espero que les parezca interesante.

    Fue en el primer año de carrera, cuando en la asignatura Fundamentos de Programación y luego en Laboratorio de Programación cuando empezábamos a hacer los primeros programas en C; yo hasta entonces no me había atrevido a programar nada en C, prefería Pascal, al menos llegué con una buena base de programación.… Leer artículo completo

  • Cuando un proceso «se come» la memoria de nuestro sistema

    Hoy en día no se le suele ver la cara, dado que la memoria de nuestro sistema suele ser grande, pero cuando por ejemplo, a un proceso se le va la mano y reserva más memoria de la que tiene nuestro sistema, entra en marcha un proceso especial del núcleo de Linux; el OOM Killer (Out Of Memory Killer), que se encarga de detectar qué proceso es el peor del sistema y matarlo.… Leer artículo completo

  • Por qué no debemos utilizar gets()

    getsA veces me sorprendo (como profesor de programación) de que en muchos sitios siguen enseñando la función gets() para la entrada de datos desde teclado sin explicar lo que puede pasar.

    gets() es una función peligrosa. Imaginemos que escribimos el siguiente programa:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>

    int main()
    {
      char cadena2[10];
      char cadena1[10];

      printf("c1: %x\nc2: %x\n", cadena1, cadena2);
      gets(cadena1);

      printf("Cadena 2: %s\n", cadena2);
    }

    Ahora la compilamos, ejecutamos e introducimos un texto de prueba:

    $ gcc -o test3 test3.c
    /tmp/ccK2P2ON.o: In function `main’:
    test3.c:(.text+0x32): warning: the `gets’ function is dangerous and should not be used.

    Leer artículo completo
  • Tamaño de un fichero en C

    Veo en nosolounix un ejercicio similar. Se trata de averiguar el tamaño en bytes de un archivo (Luego podemos saber su tamaño en Kb, Mb, Gb…).

    Yo propongo una solución algo más ligera (sin necesidad de recorrer el fichero para contar sus bytes), utilizando las funciones fseek y ftell para posicionarnos y averiguar la posición del puntero del fichero en un instante:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>


    main ()

    {

      FILE *fich;

      fich=fopen("test.c","r");

      fseek(fich, 0L, SEEK_END);
      printf("test.c ocupa %d bytes", ftell(fich));
      fclose(fich);

    }
    Leer artículo completo