Publi

  • C.I. VIII: Leyes de programación, SL candidata a los Príncipe de Asturias, ruido de discos duros, llaves al programar

    Tenía muchos enlaces atrasados para compartir, aunque al no haber escrito demasiado estos días, he decidido, para calentar motores, compartir con vosotros algunos enlaces relacionados con la programación, la informática y el software libre.

    Leer artículo completo
  • Tras un periodo de inactividad del blog

    He estado unos días (o unas semanas) sin decir nada por aquí. Vuelvo a la carga con muchas cosas que decir, tengo que sacar tiempo para escribirlo todo y organizar el material, pero poco a poco iré publicándolo todo.

    Sobre todo, en este periodo de inactividad del blog tengo que destacar mi indignación por una «nueva» tecnología, los gráficos híbridos, y la imposibilidad de configurar bien un portátil con GNU/Linux. Ya hablaré un día de estos más a fondo sobre ello.… Leer artículo completo

  • Goodbye Nokia

    Acabo de leer la noticia en MuyComputer: Nokia y Microsoft se alían.
    Symbian nunca ha estado todo lo pulido que debería, a veces los terminales se cuelgan sin sentido, o se reinician, el sistema parece muy rígido desde su diseño, además de la manía que tienen las compañías de crear un software con restricciones, que lo único que hace es que haya desarrolladores que por ingeniería inversa eliminen esas restricciones… Nokia apostó entonces por Maemo y luego se fusionó con Moblin (de Intel), para formar Meego, un sistema para hacer competencia a Android, apoyado por la Linux Foundation.… Leer artículo completo

  • Creando un servidor que acepte múltiples clientes simultáneos en C

    5989707041_64de393f6b_oPara hacer una prueba de esto, crearemos un servidor al que nos podremos conectar por telnet y pedir cierta información a través de comandos. El ejemplo soporta los siguientes comandos (en mayúsculas):

    • DATE: Pide la fecha al servidor
    • TIME: Pide la hora al servidor
    • HOLA: Saluda y me dice mi IP
    • EXIT: Cierra el cliente actual
    • CERRAR: Cierra el servidor.
    • Cualquier otra cosa se manda repetida (ECHO)
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    /**
    *************************************************************
    * @file servtcp.c
    * @brief Breve descripción
    * Ejemplo de un cliente TCP usando threads
    *
    *
    * @author Gaspar Fernández <blakeyed@totaki.com>
    * @version 0.1Beta
    * @date 13 ene 2011
    * Historial de cambios:
    *   20110113 - Versión inicial
    *
    *
    *************************************************************/


    #include <fcntl.h>
    #include <string.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <stdio.h>
    #include <netinet/in.h>
    #include <resolv.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <pthread.h>
    #include <string.h>

    /** Puerto  */
    #define PORT       7000

    /** Número máximo de hijos */
    #define MAX_CHILDS 3

    /** Longitud del buffer  */
    #define BUFFERSIZE 512

    int AtiendeCliente(int socket, struct sockaddr_in addr);
    int DemasiadosClientes(int socket, struct sockaddr_in addr);
    void error(int code, char *err);
    void reloj(int loop);

    int main(int argv, char** argc){

        int socket_host;
        struct sockaddr_in client_addr;
        struct sockaddr_in my_addr;
        struct timeval tv;      /* Para el timeout del accept */
        socklen_t size_addr = 0;
        int socket_client;
        fd_set rfds;        /* Conjunto de descriptores a vigilar */
        int childcount=0;
        int exitcode;

        int childpid;
        int pidstatus;

        int activated=1;
        int loop=0;
        socket_host = socket(AF_INET, SOCK_STREAM, 0);
        if(socket_host == -1)
          error(1, "No puedo inicializar el socket");
       
        my_addr.
    Leer artículo completo
  • Exportar desde MySQL a CSV

    Este post está explicado de forma más extendida aquí.

    He eliminado el contenido de este post porque ya está contenido en el enlace.

    Exportar datos de MySQL a un fichero CSV o tabulado.

    Leer artículo completo
  • C.I. VII : Be Linux, esteganografía, Joins SQL, Other OS, Telégrafo twitter, y más

    He decidido abreviar lo de Curioso e Interesante (C.I.), y presento algunos enlaces que tenía pendientes de estos días:

    Leer artículo completo
  • OpenShot: Revolucionando el vídeo digital en Linux

    openshot_rotate_before

    OpenShot es la revolución del vídeo digital (libre) en Linux. Hace unos meses cuando salió la versón 1.2 veíamos que el programa prometía; pero últimamente (durante este mes y parte del mes pasado) ha habido grandes novedades en el mundo OpenShot.

    OpenShot está desarrollado en Python, ayudándose de la librería MLT (Media Lovin’ Toolkit) y GTK+2 y lo mejor es que no tiene demasiadas dependencias.

    Si nos pasamos por el blog, podremos comprobar:

    • Grandes novedades y efectos como editor de vídeo, algunos de ellos bastante buenos ayudándose de la interfaz python de Blender 2.5.6 (no es estable aún).
    Leer artículo completo
  • Nuevo en Planeta Linux

    Buena noticia. Hace unos días inscribí este blog a Planeta Linux y ya formo parte de la gran familia.

    Planeta Linux es una comunidad de usuarios, entusiastas y desarrolladores iberoamericanos, todos con una idea común: el software libre. Llevan desde 2004 juntando información de todos los blogs relacionados que pueden y yo me pregunté… ¿por qué no sumar Poesía Binaria?

    Yo los conocí hace relativamente poco, cuando entré más a fondo en twitter, hace casi 2 años y donde a través de varios retweets los encontré y empecé a seguirles al encontrar posts interesantes de varios bloggers.… Leer artículo completo

  • Preincremento y postincremento (x++ != ++x)

    Hace unos días un alumno de clases particulares me preguntó la diferencia entre estos dos; me pareció una pregunta interesante ya que los únicos usos que había visto eran como única sentencia:

    a++;
    ++a;

    En este uso no hay diferencia, puesto que hagamos las cosas en el orden que las hagamos el resultado será igual; aunque en este ejemplo tampoco se tiene clara la idea del orden de las operaciones. Pero veamos otro ejemplo:

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

    int main(int argc, char *argv[])
    {
      int a=10;
      int b;

      b=a++;
      printf("a=%d\nb=%d\n", a, b);
    }

    Vemos que estamos realizando un postincremento de a, o lo que es lo mismo, incrementamos la variable a después de las demás operaciones (asignar a b el valor de a).… Leer artículo completo

  • ¿Por qué enseñar Excel en lugar de enseñar a utilizar una hoja de cálculo?

    Vivimos en una época de cambio. En la que muchas personas invierten dinero y tiempo en cursos para aprender a manejar diferentes programas.
    Es cierto, hablando de las herramientas de Microsoft, que el Word o el Excel 95 no se parece en nada al Word o Excel 2007, lo cual provocaría que muchos de los que invirtieron dinero en cursos de la versión antigua, tengan que volver a invertir un dinero en la versión moderna.… Leer artículo completo