Publi

  • Bailando con bits III. Mostrando el valor binario de un número [bash, C, C++, PHP, Java, Python, Ruby]

    photo-1425036458755-dc303a604201_red

    De todos es sabido que un ordenador, internamente trabaja con ceros y unos, simplemente eso, a partir de ese simple valor, verdadero o falso, abierto o cerrado, existe o no existe es capaz de formar sonidos, imágenes, textos y cualquier cosa que podamos imaginarnos.

    Aunque no vamos a hacer algo tan complicado, muchas veces puede que tengamos un valor entre manos y queramos saber qué bits hay a uno y qué bits hay a cero aunque sólo sea para verificar que una operación se está realizando como debe o porque estamos aprendiendo a utilizar este sistema de numeración y queremos verificar que todo nos sale bien.… Leer artículo completo

  • Cancelando y reanudando una tarea con Timer y TimerTask en Java

    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
  • 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
  • Introducción a Timer y TimerTask en Java.

    Los timers son una herramienta muy útil para lanzar una tarea cada cierto tiempo, por ejemplo, si estamos conectados a un servidor, podemos enviar información de estado para no desconectarnos, o lanzar una tarea a una hora determinada, o incluso puede servir para crear una animación (ya que con el tiempo va variando aquello que hayamos dibujado, o va cambiando el fotograma).
    El ejemplo más sencillo de un timer puede ser lo siguiente:

    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
    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()
            {
                if (tic%2==0)
                System.
    Leer artículo completo
  • Algoritmos: Ejemplo de un HashMap en Java y acelerando nuestras búsquedas de datos


    Un hashmap es una estructura donde podemos asociar muchas claves con sus respectivos valores, eso sí, una única clave a un valor, no podremos tener una clave con varios valores (eso sería un multimapa, no tiene implementación nativa en Java, a no ser que incluyamos bibliotecas como la commons collections de Apache).
    La gracia de este tipo de estructuras está en las búsquedas, que se portan como si fueran Arrays, es decir el tiempo de acceso al elemento no depende del número de elementos de la estructura, la complejidad será O(1), aunque puede que haya casos un poquito peores, casi siempre será así.… Leer artículo completo

  • Obtener una lista de las localizaciones instaladas en el sistema desde PHP y Java [locales]

    En linuz, para obtener todas las locales, o localizaciones instaladas en el sistema, podemos hacerlo con el comando locale -a:

    $ locale -a
    C
    C.UTF-8
    en_AG
    en_AG.utf8
    en_AU.utf8
    en_BW.utf8
    en_CA.utf8
    en_DK.utf8
    en_GB.utf8
    en_HK.utf8
    en_IE.utf8
    en_IN
    en_IN.utf8
    en_NG
    en_NG.utf8
    en_NZ.utf8
    en_PH.utf8
    en_SG.utf8
    en_US.utf8
    en_ZA.utf8
    en_ZM
    en_ZM.utf8
    en_ZW.utf8
    es_AR.utf8
    es_BO.utf8
    es_CL.utf8
    es_CO.utf8
    es_CR.utf8
    es_DO.utf8
    es_EC.utf8
    es_ES
    es_ES.iso88591
    es_ES.utf8
    es_GT.utf8
    es_HN.utf8
    es_MX.utf8
    es_NI.utf8
    es_PA.utf8
    es_PE.utf8
    es_PR.utf8
    es_PY.utf8
    es_SV.utf8
    es_US.utf8
    es_UY.utf8
    es_VE.utf8
    POSIX
    zh_CN.utf8
    zh_SG.utf8

    Ahora bien, podemos usar este comando dentro de PHP para obtener la lista y añadir a la lista información como el idioma y el país usando una lista de países e idiomas.… Leer artículo completo

  • Numerar objetos de una clase determinada [Java]

    Hace un tiempo comentaba esto mismo en lenguaje C++, aunque por el motivo de las clases particulares, a algunos les interesaba más el tema en Java, aunque es muy parecido, tenemos que crear un atributo estático y coger su valor cada vez que instanciemos la clase.

    Como hice en C++, planteamos este problema como un almacén de clientes (es un ejemplo, no vale si tenemos muchos clientes, ya usaríamos bases de datos, por ejemplo).… Leer artículo completo