شروع به اکسیر، میکس و اکتو.

من این مقاله را با این فرض می نویسم که شما، خواننده، اصول برنامه نویسی را دارید. من قصد دارم خواندن آن را ساده نگه دارم، اما اگر اولین زبان برنامه نویسی شما Elixir باشد، ممکن است گیج شوید.
اکسیر
Elixir یک زبان برنامه نویسی کاربردی است که در بالای ماشین مجازی ERlang a BEAM اجرا می شود.
اکسیر در سراسر جهان عمدتاً در کشورهای دیگر و محصولات بزرگ مانند برکس، دیسکورد، پینترست و چندین مورد دیگر استفاده می شود، اما یک افتخار ملی است.
تفاوت اکسیر در این است که کد آن در فرآیندهای ایزوله اجرا می شود.این جداسازی باعث می شود که بازگشت از هر فرآیند به طور مستقل جمع آوری شود و از منابع دستگاه به بهترین شکل استفاده شود.
انواع داده ها در اکسیر
در اکسیر انواع داده ای وجود دارد که برای نمایش انواع مختلف اطلاعات استفاده می شود، مانند:
int
اعداد صحیحی که می توانند مثبت یا منفی باشندfloat
نقاط شناور که نشان دهنده اعداد اعشاری است.string
که نشان دهنده دنباله ای از کاراکترها هستند که بین دو علامت نقل قول نوشته شده اندboolean
نشان دهنده مقادیر درست یا نادرست / true
false
atom
که برای مثال ثابت هایی هستند که خود مقدار معادل خود نام است :true, :heyThere, :barco
نحو و ماژول ها
بیایید برای موفقیت یک Hello World را شروع کنیم.
defmodule helloModule do
def hello do
IO.puts("Hello World") #Output => Hello World
end
end
در اینجا می توان به برخی از “ویژگی های اکسیر” توجه کرد که عبارتند از módulos
.
ماژول ها در Elixir واحدهای سازماندهی کد هستند و برای گروه بندی عملکردهای مرتبط استفاده می شوند. ماژول ها همچنین می توانند حاوی مقادیر، ثابت ها و حتی ماژول های دیگر باشند.
شما همچنین می توانید یک تابع را بدون کپسوله کردن آن با یک ماژول ایجاد کنید، اما در Elixir این بهترین روش است که توابع را در ماژول ها کپسوله کنید تا کد خود را به روشی واضح تر و ماژولارتر سازماندهی و ساختار دهید.
ماژول ها در اکسیر نیز اتم هستند
iex> is_atom(helloModule) #Output => true
همانطور که اشاره کردم، در اکسیر امکان ایجاد ماژول در داخل ماژول ها وجود دارد، اما طبق قرارداد، توصیه می شود در هر فایل فقط یک ماژول ایجاد کنید. (مگر اینکه شرایط اقتضا کند)
علاوه بر این، ما همچنین دو پسوند اصلی در اکسیر داریم، بودن .ex
ه .exs
.
فایل ها .ex
برای کدهای کامپایل شده که بخشی از برنامه یا کتابخانه است، در حالی که فایل ها استفاده می شوند .exs
برای اسکریپتهای اکسیر که مستقیماً توسط مفسر اجرا میشوند، عمدتاً برای کارهای اتوماسیون، آزمایش و نمونهسازی استفاده میشوند.
نظارت و سرپرستان
مفاهیم نظارت و سرپرست از سیستم ERlang آمده است. در اکسیر، سرپرستان وظیفه نظارت بر چرخه زندگی یک فرآیند کودک و راه اندازی مجدد آن را در صورت لزوم بر عهده دارند.
سرپرست اطمینان می دهد که در صورت شکست فرآیند، طبق استراتژی تعریف شده مجدداً راه اندازی می شود. این به ایجاد سیستم های مقاوم در برابر خطا کمک می کند.
چند نوع ناظر وجود دارد:
- Simple Supervisor: ابتدایی ترین نوع، بر فرآیندها نظارت می کند و در صورت شکست آنها را مجدداً راه اندازی می کند.
- Dynamic Supervisor: با این کار می توان به صورت پویا پردازش های فرزند را در حین اجرای سیستم اضافه و حذف کرد.
- Task Supervisor: این ناظر بر کارهای ناهمزمان مانند عملیات I/O نظارت می کند.(ورودی و خروجی)
- سرپرست گروه: به شما امکان می دهد فرآیندهای فرزند را گروه بندی کنید تا با هم مدیریت شوند.
نمونه ای از سرپرست:
defmodule GenericSupervisor do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE, [])
end
def init([]) do
children = [
worker(GenericWorker), []]
Supervisor.init(children, strategy: :one_for_one)
end
end
در این مثال، GenericSupervisor
بر یک فرآیند واحد نظارت می کند که در صورت شکست، طبق استراتژی مجدداً راه اندازی می شود :one_for_one
مخلوط کردن
Mix یکی از ابزارهایی است که به توسعه برنامه های کاربردی Elixir کمک می کند. او مسئول ایجاد، کامپایل و مدیریت پروژه ها و همچنین اتوماسیون و آزمایش وظایف است.
با Mix می توانید به راحتی با استفاده از دستور یک پروژه جدید Elixir را شروع کنید mix new projeto
. این یک ساختار دایرکتوری استاندارد برای پروژه شما با فایل های پیکربندی، تست ها و اسکلت کد اصلی ایجاد می کند.
├── README.md
├── lib
│ └── projeto.ex
├── mix.exs
└── test
├── projeto_test.exs
└── test_helper.exs
ساختار یک پروژه میکس
lib
این دایرکتوری جایی است که کد منبع و فایل های پروژه شما قرار دارد. .ex
در اینجا آنها گردآوری خواهند شد.
mix.exs
این فایل پیکربندی اصلی پروژه شما است. اینجا جایی است که شما ابرداده پروژه، وابستگی ها، وظایف سفارشی و تنظیمات دیگر را تعریف می کنید.
test
این فهرست شامل فایل های آزمایشی پروژه شما می باشد. فایل های تست با استفاده از ExUnit نوشته می شوند و دارای پسوند هستند .exs
علاوه بر این، Mix برای کامپایل و اجرای کد شما استفاده می شود. برای مثال می توانید استفاده کنید mix compile
برای کامپایل پروژه خود و mix run
برای اجرای آن
Mix همچنین از ایجاد وظایف سفارشی پشتیبانی می کند، که می تواند برای خودکارسازی وظایف توسعه رایج مانند اجرای آزمایش ها یا تولید اسناد استفاده شود.
اکتو
Ecto یک کتابخانه پایداری داده برای Elixir است که برای کار با پایگاه های داده رابطه ای طراحی شده است. با استفاده از رویکرد مبتنی بر مدل و پرس و جو، روشی تمیز و ظریف برای تعامل با پایگاه داده ارائه می دهد.
(پایداری داده مفهوم ذخیره سازی اطلاعات به شیوه ای پایدار است، به طوری که می توان بعداً بازیابی و استفاده کرد، حتی پس از بستن برنامه ای که آن را ایجاد کرده است)
با Ecto می توانید مدل هایی را برای نمایش جداول پایگاه داده خود تعریف کنید و از این مدل ها برای ایجاد، به روز رسانی، حذف و پرس و جو رکوردها در پایگاه داده استفاده کنید.
علاوه بر این، Ecto مکانیزم مهاجرت را ارائه می دهد که به شما امکان می دهد طرحواره پایگاه داده خود را در طول زمان مدیریت کنید. با مهاجرت، می توانید جداول، فهرست ها و محدودیت های کلید خارجی را به روشی کنترل شده و برگشت پذیر ایجاد و اصلاح کنید.
Ecto همچنین از پرس و جوها با استفاده از زبان پرس و جو Ecto.Query پشتیبانی می کند. با Ecto.Query، میتوانید پرسوجوهای SQL را به صورت برنامهنویسی بسازید، و تولید کوئریهای پویا را بر اساس متغیرهای ورودی آسانتر و ایمنتر میکند.
Ecto همچنین از تراکنش ها پشتیبانی می کند و به شما امکان می دهد چندین عملیات پایگاه داده را به عنوان یک واحد اتمی انجام دهید. این تضمین می کند که همه عملیات ها با موفقیت انجام می شوند یا هیچ یک از آنها اعمال نمی شوند و یکپارچگی داده ها حفظ می شود.
اگر به اکسیر علاقه دارید، مستندات شگفت انگیز را بررسی کنید.
https://elixir-lang.org/docs.html
و البته آموزش PT-BR
https://elixirschool.com/pt