¿Cómo es esto posible? Si tenemos una cosa clara en el mundo de Internet es que si queremos tener en pie un servicio, éste debe estar alojado en una máquina que esté conectada a Internet, con energía y que nos asegure en cierta forma que está levantada. Estos servidores pueden ser de diversos tipos según las necesidades de la aplicación: web, base de datos, autentificación, tareas, logs, notificaciones, etc. Así que, ¿qué es esto de aplicaciones sin servidor?… Leer artículo completo
Aplicaciones web sin servidor, o casi (arquitecturas serverless)
Generando la salida de nuestros programas con plantillas en C++ con Silicon en pocas líneas
A medida que el hardware y el software van evolucionando, van cambiando las preferencias a la hora de desarrollar un producto. Hace unos años, el objetivo principal era que el producto final funcionara, intentar hacer el mínimo número de operaciones para que el software corriera en un ordenador de la mejor forma posible. Desde hace unos años, el hardware es capaz de hacer muchas cosas y muy rápido, los lenguajes han evolucionado y se han optimizado mucho; por lo tanto, podemos aprovechar y hacer que desde el punto de vista del mantenimiento, legibilidad del código, hacer que el código sea poesía y hacer que todas las piezas encajen perfectamente.… Leer artículo completo
Empezando la semana con humor y curiosidades
Antes de volver a la carga, quería compartir unos enlaces que me han llamado la atención:
La lámpara de Pixar vive gracias a un hack de Arduino
Un buen, enlace desde el que podremos ver una introducción y un vídeo, pero si profundizamos algo más podremos sumergirnos en la vida de la lámpara de Pixar. Vía @Deilusia.
40 Mentiras aceptadas de la ciencia
Alguna que otra es un poco tonta, pero es una recopilación interesante.… Leer artículo completo
Bailando con bits: Trabajando a nivel de bit II
Hace unos días empecé con la serie Bailando con Bits (aunque llevaba escrito varios meses) trata de formas para trabajar a nivel de bit desde C.
Hoy voy a proponer otra forma, quizás menos intuitiva que la anterior, pero diferente. Esta vez no utilizaremos un registro enorme ni nada parecido, utilizaremos un mismo número entero para hacer el ejemplo:
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#include <stdio.h>
#define PESOBIT(bpos) 1<<bpos
#define COGEBIT(var,bpos) (var & PESOBIT(bpos))?1:0
#define PONE_1(var,bpos) var | PESOBIT(bpos)
#define PONE_0(var,bpos) var & ~(PESOBIT(bpos))
#define CAMBIA(var,bpos) var ^ PESOBIT(bpos)
int main()
{
int numero;
int i;
numero=63;
printf ("Numero: %d\n", numero);
for (i=31; i>=0; i--)
printf("%4d", i);
printf("\n");
for (i=31; i>=0; i--)
printf("%4d",COGEBIT(numero,i));
printf("\n");
numero=PONE_1(numero, 17);
numero=PONE_0(numero, 3);
numero=CAMBIA(numero, 20);
numero=CAMBIA(numero, 5);
for (i=31; i>=0; i--)
printf("%4d",COGEBIT(numero,i));
printf("\nNúmero: %d\n", numero);
}Ahora usamos varias macros que harán operaciones de bit con la variable a analizar (están definidas en la parte de arriba), tenemos PESOBIT, COGEBIT, PONE_1, PONE_0 y CAMBIA:
- PESOBIT: Nos dice cuánto vale un bit con valor 1 en la posición especificada, por ejemplo en la posición 0 (LSB) vale 1, en la posición 1, vale 2, en la posición 3, vale 4, en la posición 4, vale 8…
- COGEBIT: Nos dice si el bit en la posición bpos de la variable var vale 0 ó 1
- PONE_1: Pone un 1 en el bit bpos de la variable var
- PONE_0: Pone un 0 en el bit bpos de la variable var
- CAMBIA: Cambia el valor (de 0 a 1 y viceversa) del bit en la posición bpos de la variable var
Como vemos en el ejemplo si queremos poner a 1 el bit 5 de numero, tendremos que hacer numero=PONE_1(numero,5), aunque en el siguiente ejemplo veremos cómo simplificar todo eso.… Leer artículo completo
Últimos comentarios