Programación

Usé el ARI de Asterisk para grabar voces de contestador automático y transcribirlas con la API Whisper del motor de IA de Sakura. El contenido transcrito se notifica a Slack. Introducción Ya tenía un entorno de Asterisk, así que lo utilicé. Habilitando ARI Edita el archivo de configuración de Asterisk ari.conf para habilitar ARI. ari.conf [general] enabled = yes [asterisk] type = user read_only = no password = asterisk password_format = plain También habilita el servidor HTTP de Asterisk.
Vamos a explicar cómo construir un PR-Agent utilizando el “motor de IA de Sakura” proporcionado por Sakura Internet. No hay opción de no utilizar esto como parte del desarrollo si trabajas en Sakura Internet. ¿Qué es el motor de IA de Sakura? El “motor de IA de Sakura”, que es la plataforma de IA generativa de Sakura, es un servicio que permite utilizar modelos de IA generativa ofrecidos por Sakura Internet.
En el artículo anterior, escribimos un programa para devolver el ICMP Echo Reply usando XDP. Implementamos un programa que devuelve un ICMP Echo Reply, pero descubrimos que el checksum de ICMP no se estaba calculando correctamente. Hacerlo rápidamente Introducción a XDP Parte 3 (ICMP Echo Reply Parte 1) En esta ocasión, quiero escribir sobre cómo calcular correctamente el checksum de ICMP y devolverlo. No me he dejado llevar por la pereza y logré escribir durante dos días seguidos, así que por favor, alénenme a ello.
En el artículo anterior, utilizamos un mapa eBPF con XDP para intercambiar datos con el espacio de usuario. Realización Rápida de una Introducción a XDP Parte 2 (Capítulo de eBPF Map) En el artículo anterior a ese, escribimos un programa que descartaba todos los paquetes utilizando un programa XDP. Realización Rápida de una Introducción a XDP Esta vez, vamos a escribir un programa que devuelva un ICMP Echo Reply en respuesta a un ICMP Echo Request.
Resumen En el artículo anterior, escribimos un programa que utiliza el programa XDP para DROPAR todos los paquetes. Una introducción rápida a Ultra XDP Ahora, vamos a escribir un programa que utiliza el Map de eBPF para contar los paquetes DROPEADOS. Esta vez, el enfoque es experimentar rápidamente con XDP + eBPF Map. Por lo tanto, omitiremos explicaciones detalladas sobre eBPF y otros tipos de Maps que no utilizaremos. Configuración del entorno Este artículo se basa en Ubuntu 22.
¿Qué se hizo? Había implementado OpenDKIM en mis notas sobre la adición de OpenDKIM a Postfix + DMARC, pero quería habilitar el soporte para firmas ARC, así que cambié a arcmilter. arcmilter es un milter para realizar firmas ARC, pero también puede realizar firmas DKIM. arcmilter está escrito en el lenguaje Go. O mejor dicho, lo escribí yo… ¿no? arcmilter se encuentra en el siguiente repositorio. github.com/masa23/arcmilter He colocado paquetes rpm y deb en la sección de Releases, así que puedes usar esos o construirlo desde el código fuente.
Resumen Este es un artículo sobre cómo tocar rápidamente XDP. Por lo tanto, omitiré las explicaciones detalladas sobre eBPF y otros temas. XDP es un marco para procesar paquetes en la etapa más temprana de la pila de red del núcleo de Linux, y permite insertar programas directamente en la tarjeta de interfaz de red (NIC) utilizando eBPF. Al operar paquetes en la etapa más temprana de la pila de red del núcleo de Linux, se puede procesar de manera más rápida que filtros como iptables.
Al depurar un programa construido con gcc en GDB en FreeBSD, a veces se produce un error debido a un formato de información de depuración diferente. Aquí están mis notas al respecto. Problemas Al depurar un programa construido con gcc en GDB en FreeBSD, a veces aparece un error que indica que no hay información de símbolo. # gcc -g test.c # gdb a.out Soluciones Al configurar el uso de información de depuración en formato DWARF-2, GDB muestra la información de símbolo correctamente.
Este es un contenido trasladado desde Qiita. Para especificar el formato de fecha en Golang, se utiliza el método Format de time, pero era necesario que tuviera el siguiente formato para graphite-api. Sin embargo, por alguna razón, funcionaba en un ambiente y no en otro, y perdí mucho tiempo intentando resolverlo. Para resumir, parece que era un error. Se corrigió con la actualización de la versión de Golang. Especificación del formato Formato especificado HH:SS_YYYYMMDD Así que, en Golang, sería Format("15:04_20060102") Código de prueba package main import ( "fmt" "time" ) func main() { now := time.
Este es contenido trasladado desde Qiita. Al codificar en el lenguaje Go con Vim, es posible facilitar el proceso utilizando syntax, gofmt y goimports. Sin embargo, encontré algunos artículos escritos por otras personas un poco complejos, así que decidí resumir la información de manera personal. Instalación de golang OS X $ brew install golang CentOS $ sudo yum install golang --enablerepo=epel Ubuntu $ sudo apt install golang Crear un directorio para GOPATH $ mkdir $HOME/go Configurar las variables de entorno en .