ATEMI, Aitor Atencia ORM de Odoo en profundidad: search, browse, read y search_read Odoo · ORM · Rendimiento El ORM de Odoo abstrae PostgreSQL, pero no hace milagros. Saber cuándo usar search , browse , read y search_read marca la diferencia entre un módulo rápido y uno que dispara c...
ATEMI, Aitor Atencia Herencia en Odoo: _inherit vs _inherits explicado con ejemplos Odoo · Arquitectura · Herencia Odoo ofrece dos mecanismos de herencia que suenan parecidos pero funcionan de forma muy distinta: _inherit extiende un modelo existente; _inherits delega en otro. Elegir...
ATEMI, Aitor Atencia TDD en módulos Odoo: desarrollo guiado por pruebas en Odoo 19 Odoo · Testing · TDD El Test-Driven Development (desarrollo guiado por pruebas) cambia el orden: primero el test que falla, luego el código mínimo que lo pasa, y después el refactor. En Odoo funciona ...
ATEMI, Aitor Atencia SOLID en módulos Odoo: principios de diseño para desarrolladores Odoo · Arquitectura · SOLID Los principios SOLID no son teoría de laboratorio: son la brújula para construir módulos Odoo mantenibles, extensibles y libres de deuda técnica. SOLID aplicado al ecosiste...
ATEMI, Aitor Atencia Cómo desarrollar un módulo Odoo 19: convenciones de la comunidad Odoo · Desarrollo · Convenciones OCA Aprende a crear un módulo Odoo 19 siguiendo las reglas que define la comunidad: estructura de carpetas, manifest, seguridad, ORM y buenas prácticas. Un módulo bien...
ATEMI, Aitor Atencia Cómo instalar Odoo 19 con Docker: guía paso a paso Odoo · Docker · Guía práctica Monta un entorno Odoo 19 reproducible con Docker Compose : PostgreSQL, Odoo, proxy inverso y volúmenes para tus módulos custom. Odoo 19 + Docker: la combinación que uso e...
ATEMI, Administrator El Concilio de Tolkien: ¿Qué hubiera pasado si los Padres de la Iglesia hubieran leído El Señor de los Anillos? Un experimento mental: Nicea, 325 d. C., pero los obispos abren por error la obra de Tolkien en lugar de los evangelios. ¿Qué fe habría nacido de ese despiste? Variedades · Ensayo Corría el año 325 de...
ATEMI, Aitor Atencia Arduino desde cero · Lección 15 de 15 — Proyecto: alarma de proximidad Lección 15 de 15 Proyecto final ¡Proyecto final! Si un objeto se acerca a menos de 20cm, suena el buzzer y se enciende el LED. Conexión del sensor ultrasónico del proyecto final. Conexiones HC-SR04 Se...
ATEMI, Aitor Atencia Arduino desde cero · Lección 11 de 15 — Bucles y funciones Lección 11 de 15 Programación Evita repetir código: usa bucles y funciones propias. Bucle for parpadeo_rapido.ino for (int i = 0; i < 5; i++) { digitalWrite(8, HIGH); delay(100); digitalWrite(8, LOW);...
ATEMI, Aitor Atencia Arduino desde cero · Lección 12 de 15 — Analógico y PWM Lección 12 de 15 Analógico Los pines analógicos leen valores intermedios; el PWM simula salida analógica. Gira y lee valores en A0. Lectura analógica leer_analogico.ino int valor = analogRead(A0); // ...
ATEMI, Aitor Atencia Arduino desde cero · Lección 13 de 15 — Leer sensores (LDR) Lección 13 de 15 Sensores Los sensores reales necesitan calibración: imprime valores y elige umbrales. LDR — sensor de luz Montaje divisor de tensión: LDR + resistencia fija. La lectura cambia según l...
ATEMI, Aitor Atencia Arduino desde cero · Lección 14 de 15 — Buzzer y servo Lección 14 de 15 Actuadores Los actuadores convierten la señal eléctrica en sonido o movimiento. Buzzer con tone() buzzer.ino void loop() { tone(8, 440); // La 440 Hz delay(500); noTone(8); delay(500)...