SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill julia-programming명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
| name | julia-programming |
| description | Programmer en Julia pour le calcul scientifique. |
| version | 1.0.0 |
| author | EVA |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"tags":["julia","scientific-computing","multiple-dispatch","type-stability","dataframes","pythoncall"],"related_skills":["data-analysis-exploration","simplify-code"]} |
Le langage Julia est conçu pour combiner la vitesse des langages compilés (C/Fortran) avec la flexibilité et la simplicité d'utilisation des langages dynamiques (Python/R). Il est particulièrement adapté pour le calcul scientifique, la simulation physique, l'optimisation mathématique et la manipulation de données volumineuses.
Cette compétence guide l'agent EVA pour écrire du code Julia performant, structurer les projets à l'aide de packages isolés, éliminer les instabilités de types, et interfacer des composants Julia avec des infrastructures Python existantes.
À utiliser lorsque l'utilisateur demande de :
Project.toml, Manifest.toml).DataFrames.jl.PyCall/PythonCall).Julia utilise le dispatch multiple (surcharge de fonctions basée sur le type de tous les arguments) et compile le code de manière juste-à-temps (JIT) avec LLVM. Pour obtenir des performances optimales, le compilateur doit pouvoir déduire le type exact de chaque variable lors de la compilation : c'est la stabilité des types (Type Stability).
# 1. Définition de structures concrètes immuables
struct Point2D
x::Float64
y::Float64
end
struct Point3D
x::Float64
y::Float64
z::Float64
end
# 2. Dispatch multiple : surcharge de la fonction distance
distance(p::Point2D) = sqrt(p.x^2 + p.y^2)
distance(p::Point3D) = sqrt(p.x^2 + p.y^2 + p.z^2)
# 3. Fonction type-stable (le type de retour dépend uniquement du type des arguments)
function compute_total_distance(points::Vector{T}) where {T}
total = 0.0 # Initialisation avec le type de retour correct (Float64)
for p in points
total += distance(p)
end
return total
end
# 4. Diagnostic de stabilité de type avec la macro @code_warntype
# (Vérifie si le compilateur détecte des types dynamiques de type "Any" ou des allocations)
using InteractiveUtils
pts = [Point2D(1.0, 2.0), Point2D(3.0, 4.0)]
@code_warntype compute_total_distance(pts)
Pkg)Sous Julia, la gestion des paquets est intégrée et pilotée par le module système Pkg.
using Pkg
# Activer l'environnement dans le dossier courant (cherche Project.toml)
Pkg.activate(".")
# Installer des packages spécifiques
Pkg.add("DataFrames")
Pkg.add("CSV")
Pkg.add("PythonCall")
# Résoudre et télécharger toutes les dépendances définies dans le Manifest.toml
Pkg.instantiate()
DataFrames.jlL'analogue de Pandas sous Julia est la bibliothèque DataFrames.jl associée à CSV.jl :
using DataFrames
using CSV
# 1. Lecture efficace d'un fichier CSV
df = CSV.read("data/sensor_logs.csv", DataFrame)
# 2. Filtrage et sélection
# Syntaxe de macro typique : filtre les lignes et sélectionne les colonnes
filtered_df = filter(row -> row.cycle_time > 0, df)
# 3. Calculs et nouvelles colonnes avec la syntaxe source => fonction => destination
transform!(filtered_df, :actual_speed => (s -> 100.0 ./ s) => :normalized_speed)
# 4. Groupement et agrégation statistique
grouped = groupby(filtered_df, :machine_id)
summary = combine(grouped,
:cycle_time => mean => :mean_cycle,
:cycle_time => std => :std_cycle
)
println(summary)
PythonCall.jl)Nous privilégions PythonCall.jl pour interfacer Julia avec les bibliothèques Python sans partage de processus lourd :
using PythonCall
# Importer un module Python
np = pyimport("numpy")
pd = pyimport("pandas")
# Créer un tableau NumPy via Julia
py_arr = np.array([1, 2, 3])
# Convertir un objet Julia en objet Python
jl_arr = pyconvert(Vector{Int}, py_arr)
# Côté script Python :
from juliacall import Main as jl
# Charger un script Julia
jl.include("my_julia_algorithm.jl")
# Appeler une fonction Julia directement
result = jl.my_julia_function([1.0, 2.0, 3.0])
Variables globales non typées (Performance Killer) :
x = 10.0 et l'utiliser dans une boucle de calcul. Le compilateur JIT ne peut pas garantir que x ne changera pas de type et désactive toutes les optimisations de type, ralentissant le code d'un facteur 100.const x = 10.0, ou passer la variable en argument de fonction.Indexation à base 1 (1-based indexing) :
arr[0], provoquant une erreur BoundsError.1 (comme Matlab ou R). Le premier élément est arr[1] et le dernier est arr[end].Le coût de la première compilation ("Time to first plot") :
BenchmarkTools.jl avec la macro @btime).Allocations mémoire inutiles par création de copies :
func(arr[1:100])), ce qui force Julia à créer une copie physique des données en mémoire.func(@view arr[1:100]) ou @views func(arr[1:100])).Pkg.activate(".") pour isoler les dépendances.const ou passées explicitement en argument.1 et utilise arr[end] pour cibler le dernier élément.@code_warntype confirme l'absence d'instabilités de types (mots colorés en rouge dans la sortie du terminal ou type de retour Any).@view pour éviter les allocations mémoires superflues.Project.toml.