Flags en un enum en C


Las flags, son opciones binarias que acompañan un dato o un sistema y valen para informar o definir su comportamiento o su estado entre otras cosas.

En muchos casos, utilizaremos flags para ver el resultado de una operación, imaginémonos que estamos pasando una serie de tests a un dato de texto:

  1. El dato no está vacío
  2. El dato tiene más de 3 letras
  3. El dato tiene menos de 20 letras
  4. El dato tiene caracteres no numéricos
  5. El dato tiene caracteres no números/letras
  6. El dato tiene caracteres de control
  7. El dato tiene caracteres no válidos
  8. El dato tiene formato de fecha
  9. El dato tiene formato de hora
  10. El dato tiene formato de teléfono
  11. El dato tiene formato de coordenadas

Bueno, así puedo poner muchas condiciones, lo importante es la forma de almacenarlo.… Leer artículo completo

Cómo crear un volumen cifrado en un archivo


Queremos alojar en un archivo un sistema de archvos, ya sea para probarlo, para organizarnos o para almacenar información sensible. También puede ser una buena solución si tenemos una unidad con una partición en un sistema de archivos FAT32 y queremos establecer permisos de Linux a ciertos archivos, esos archivos podemos almacenarlos en nuestro nuevo volumen, que residirá en un archivo muy grande dentro de la partición FAT.

Lo primero que debemos hacer es crear un archivo con el tamaño del volumen que queremos crear, no importa lo que escribamos dentro, podemos copiar un fichero grande, o escribir desde un fichero de texto… pero vamos a lo fácil, vamos a crear un archivo que sólo contenga ceros.… Leer artículo completo

Creando un mutex con semáforos entre procesos hijos en C [fork()]

Hemos estado viendo cómo compartir variables entre procesos hijos, y dejamos un poco en el tintero la implementación de mutex en ese caso, esta vez, para implementar el mutex vamos a utilizar semáforos. Estos semáforos también tienen que ser variables compartidas para funcionar correctamente.

Los semáforos tendrá un funcionamiento peculiar. En principio, pensemos en ellos con los valores 1 y 0. Por tanto, si el semáforo vale 1, el semáforo está abierto y lo haremos 0, pero si vale 0, nos esperaremos hasta que valga 1 (al contrario que un while (semaforo==0); utilizando semáforos, será el sistema operativo el que active nuestro proceso cuando el semáforo vale 1 por lo que podemos utilizar los recursos del sistema para otra cosa mientras).… Leer artículo completo

Variables compartidas entre procesos hijos en C [fork()]

26 febrero, 2014 No comments

Otra forma de enfrentarse con la concurrencia, en el maravilloso mundo de hacer varias cosas al mismo tiempo, es utilizar procesos hijos con fork(). La principal diferencia con respecto a los threads es que éstos son procesos completos, es decir, el sistema operativo les ha dado una zona de memoria de código, otra de datos, y otra de pila, a diferencia de los threads que compartían código y datos, sólo tenían la pila diferente.… Leer artículo completo

ListView con búsqueda rápida en GTKMM

19 febrero, 2014 2 comments

Es muy útil cuando listamos elementos en una aplicación proporcionar al usuario una opción de búsqueda rápida. Hacemos la aplicación más amigable con poco esfuerzo extra por nuestra parte.

El ejemplo que traigo es muy parecido al ejemplo de ListStore, aunque añado la posibilidad de filtrar la lista con el texto introducido en un widget Entry.

La clave está en crear una columna más en el modelo de datos (c_visible) que determinará si el elemento es visible o no en la lista, y en lugar de hacer que nuestro TreeView siga el modelo por defecto, haremos que siga un modelo filtrado.… Leer artículo completo

Cancelando y reanudando una tarea con Timer y TimerTask en Java

12 febrero, 2014 No comments

Hemos estado viendo cómo utilizar TimerTask para programar tareas en el tiempo y cómo pasarle argumentos para hacer una funcionalidad más completa. Ahora vamos a ver cómo podemos cancelar una tarea periódica que ha sido programada (eso es fácil), pero pueden surgir problemas a la hora de reanudar la tarea, para lo cual propongo algunas ideas.

Lo primero, es tener un código básico para lanzar una tarea y cancelarla:
TimerEx.java

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
import java.util.Timer;
import java.util.TimerTask;

class TimerEx
{
    public static void main(String arglist[])
    {
    Timer timer;
    timer = new Timer();

    TimerTask task = new TimerTask()
        {
        int tic = 0;

        @Override
        public void run()
        {
            System.

Leer artículo completo

Concurrencia, cuando varios hilos (threads) pelean por el acceso a un recurso [ejemplos en C]

7 febrero, 2014 2 comments

Si estamos desarrollando nuestra aplicación multi-hilo y además compartimos información entre el hilo principal y el secundario, o entre varios hilos tenemos que tener en cuenta el tipo de acceso a las variables compartidas.
Por ejemplo, si sólo vamos a permitir que un hilo escriba, y todos los demás lean, casi no vamos a tener problemas, pero si cualquier thread de nuestra aplicación va a poder escribir en cualquier momento, tenemos que tener cuidado con cómo lo hacemos, ya que si varios hilos intentan escribir un recurso, sólo la última escritura será efectiva, y si el valor antiguo de la variable es crítico, en muchos casos no se tendrá en cuenta.… Leer artículo completo

CI XXV: Nueva web de Renfe, vacuna VIH, clickable paper, QR, penalización Google, Lightworks en Linux y más

2 febrero, 2014 No comments

Estos días, he recopilado algunos enlaces que me han parecido interesantes, aquí van:

Categories: curioso Tags:

Pasando argumentos a un TimerTask en Java

Siguiendo con los posts sobre TimerTasks en Java, hoy toca hablar sobre cómo pasar argumentos a un TimerTask, para que éste utilice variables, atributos u objetos desde fuera. Ya vimos algo parecido cuando definíamos el TimerTask de forma implícita o anidada, pero hoy vamos simplemente a crear una clase derivada de TimerTask y pasarle datos a través del constructor.

MyTimerTask.java

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
import java.util.TimerTask;

class MyTimerTask extends TimerTask
{
    private int times;
    private String result;
    private int tic=0;

    public MyTimerTask (int times, String arg2)
    {
    this.

Leer artículo completo

CI XXIV: Ataques de red lásicos, Intel Edison, representación de PI, RSYNC, entrevista de trabajo, face substitution

Categories: curioso Tags:
Top