用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill elixir-programming命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | elixir-programming |
| description | Programmer en Elixir, utiliser OTP et les outils Mix. |
| version | 1.0.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"tags":["elixir","otp","mix","nerves","functional-programming","iot","industrial-protocols"],"related_skills":["siemens-scl-generation","rockwell-l5x-generation"]} |
Cette compétence régit l'écriture de code Elixir, la conception d'architectures concurrentes et tolérantes aux pannes avec OTP, et l'intégration d'applications industrielles embarquées via le framework Nerves.
Activez cette compétence lorsque l'utilisateur demande :
Elixir est un langage fonctionnel dynamique conçu pour créer des applications scalables et maintenables.
=) : L'opérateur = n'est pas une simple affectation, mais une assertion d'égalité de motifs.
{status, result} = {:ok, "Donnée capteur"}
|>) : Enchaîne les appels de fonctions en passant le résultat de la fonction précédente comme premier argument de la suivante.
capteur_id
|> lire_mesure()
|> filtrer_bruit()
|> normaliser_echelle()
Mix est l'outil d'automatisation de build d'Elixir. Il gère la création de projets, la compilation, les tests et la gestion des dépendances.
mix new mon_app --sup
Le drapeau --sup configure automatiquement un arbre de supervision de base.iex -S mix
Permet d'exécuter l'application interactivement et de recharger les modules à la volée avec recompile().mix test
mix.exs sous la fonction deps/0, et récupérées avec :
mix deps.get
L'atout majeur d'Elixir réside dans son modèle d'acteurs de processus légers (indépendants des threads de l'OS) managés par la machine virtuelle BEAM.
Composant standard pour encapsuler l'état d'un processus et gérer des requêtes synchrones (call) ou asynchrones (cast).
defmodule EVA.TelemetryWorker do
use GenServer
# API Client
def start_link(opts) do
GenServer.start_link(__MODULE__, opts, name: __MODULE__)
end
def get_last_measure() do
GenServer.call(__MODULE__, :get_last)
end
# Rappels (Callbacks) Server
@impl true
def init(_opts) do
# Initialise l'état du capteur
{:ok, %{last_value: 0.0}}
end
@impl true
def handle_call(:get_last, _from, state) do
{:reply, state.last_value, state}
end
end
Les superviseurs surveillent d'autres processus (leurs enfants) et les redémarrent automatiquement en cas de crash suivant des stratégies précises (one_for_one, one_for_all, rest_for_one).
defmodule EVA.Supervisor do
use Supervisor
def start_link(opts) do
Supervisor.start_link(__MODULE__, opts, name: __MODULE__)
end
@impl true
def init(_opts) do
children = [
{EVA.TelemetryWorker, []}
]
Supervisor.init(children, strategy: :one_for_one)
end
end
Nerves permet de compiler du code Elixir directement en une image système minimale (firmware) démarrant instantanément sur du matériel embarqué (Raspberry Pi, BeagleBone, PC industriels).
export MIX_TARGET=rpi4
mix deps.get
mix firmware
mix firmware.burn
Elixir excelle dans le décodage binaire grâce au pattern matching sur les binaires.
# Exemple de parsing d'une trame Modbus/TCP en Elixir
def parse_modbus_response(<<transaction_id::16, protocol_id::16, length::16, unit_id::8, function_code::8, data::binary>>) do
%{
transaction_id: transaction_id,
unit_id: unit_id,
function: function_code,
payload: data
}
end
with plutôt que de multiples blocs if ou case imbriqués.Poolboy).@spec et utilisez Dialyxir pour valider la correction statique des types lors des analyses CI.