👾 Geek Engineers
503 subscribers
47 photos
41 files
300 links
👾 Extremist software engineering guidance for Geeks.

Website:
https://geekengineers.netlify.app

Github:
https://github.com/geekengineers
https://github.com/tahadostifam

Community:
@geek_engineers_community
Download Telegram
Orchestration vs Choreography Coordination

▫️Orchestration:

1. Centralized Control: Orchestration involves a central component (the "orchestrator") that dictates the flow of interactions between services. This orchestrator is responsible for telling each service what to do and when to do it.

2. Command-Driven: The orchestrator issues commands to the services, instructing them to perform specific actions.  

3. Characteristics:

3.1: Provides clear visibility into the workflow.

3.2: Simplifies error handling, as the orchestrator can manage retries and compensations.  

3.3: Can introduce a single point of failure if the orchestrator fails.  

3.4: Can lead to tighter coupling between the orchestrator and the services.

4. Analogy: A conductor leading an orchestra, telling each musician when to play.

▫️Choreography:

1. Decentralized Control: Choreography relies on services communicating with each other through events. Each service is responsible for knowing when to act based on the events it receives.
There is no central coordinator.

2. Event-Driven: Services publish events when they complete a task, and other services subscribe to those events.

3. Characteristics:

3.1: Promotes loose coupling between services.  

3.2: Increases system resilience, as there is no single point of failure.  

3.3: Can make it more difficult to track the overall workflow.

3.4: Can make debugging and troubleshooting more challenging.

4. Analogy: A group of dancers who know their parts and perform together without a leader, responding to each other's movements.

◾️Choosing Between Them:

The choice between orchestration and choreography depends on the specific needs of the application.

- Orchestration is often preferred for complex workflows that require strict control and visibility.

- Choreography is often preferred for highly scalable and resilient systems where loose coupling is essential.  

It is also possible to use a hybrid approach, combining elements of both orchestration and choreography.
5🗿2
این ها پارامتر هایی ست که Software Architect موقع دیزاین معماری یک نرم افزار در نظر میگیرد که راجب ارتباط میان سرویس ها (Communication) و استحکام سرویس ها از نظر ساختاری (Consistency) و هم پایگی (Coordination) آن ها است.

انتخاب هر کدام ازین ها یک trade-off است و اینطور نیست که انتخاب یکی از ان ها بهترین سولوشن ممکن باشد.
👨‍💻5👍1
برا ویندوز هم tiling window manager ساختن :)

https://github.com/LGUG2Z/komorebi

شایدم میدونستید من نمیدونستم.
ولی خیلی باحاله :>

پ.ن: عیدتونم مبارک❤️🤌🏿
🆒51
یه HttpRouter خیلی ساده با C ساختم🙂🤌🏿

هدف یادگیری بود که با موفقیت انجام شد.
اگه خواستید میتونید ریپو شو چک کنید :

https://github.com/tahadostifam/HttpRouter-C
🆒10👍4🔥1
یه کد ادیتوری هست به اسم Helix که واقعا منو شگفت زده کرده :)

این ادیتور با Rust نوشته شده و شباهت زیادی به neovim داره. فقط خوبی ش اینه که کانفیگ دیفالتش خیلی خوبه. اونقد خوبه که نیاز نیست انگولکش بکنید... همینطوری اوکیه.

از اکثر LSP های زبونا ساپورت میکنه. از امتحان کردنش پشیمون نمیشید :)

منم یه تم شخصی ساختم که توی تصویر میبینید. اینجا میتونید سورس ش رو پیدا کنید :

https://github.com/tahadostifam/TahaOS/tree/main/home-manager/modules/helix

پ.ن: بنظر خودم هلیکس اندازه GNU Emacs و Neovim باحاله :) ❤️🤌🏿

Helix Official Website:
https://helix-editor.com
🔥5👍4👎1
و اما بلاخره! PR ای که برای c3 lang باز کرده بودم مرج شد :)
هدف این بود که مشارکت رسمی م رو روی این زبان اغاز کنم و از لحاض معنوی انگیزه ای باشه برای بیشتر کار کردن رو این پروژه فوق العاده.

امروز مرج شد :]

https://github.com/c3lang/c3c/pull/2055

چطور شد اینطور شد؟😜
یه مدت داکیومنت ش رو داشتم میخوندم و حتی یادتون باشه یه lz4 هم بایند کردیم براش و اونم مرج شد توی vendor ش. موقع خوندن سورس کد کامپایلرش به لطف comment anchors توی vscode این تودو رو دیدم. که میگفت موقع vendor-fetch یا همون دریافت پکیج های third party به یه progress bar نیاز داریم.

خب.. خداروشکر که تسک آسونی بود😂🤌🏿
دم عیدی اتفاق خوشحال کننده ای بود برام.

در آینده امیدوارم مشارکت های عمیق تری روی این پروژه انجام بدم.
به امید مشارکت های عمیق😋🍻

#c3 #programming_languages
👍6🔥51👾1
ما سنمون قد نمیده ولی یه زمونی یک زبان برنامه نویسی وجود داشت به نام D که با عنوان DasBetterC شناخته میشد.

این زبان تو سال 2001 توسط Walter Bright ساخته شد که یک زبان high level و system programming همانند C و ++C است. این زبان ساخته شده بود تا پرفرمنس بالا و کنترل روی low level ارائه بده. و در عین حال productivity و safety ای که python و java داشتن رو هم ارائه کنه.
چون D پرفرمنس خوبی ارائه میده برای اپلیکیشن های performance-critical مثل game engines و real-time systems و high-frequency trading مناسبه. و جالبه بدونید که D از GC و scope based memory management استفاده میکنه :)

همچنین فیچر هایی داره که به detect کردن buffer overflow و memory leak کمک میکنه. باید بگم با اینکه D در واقع ۲۴ سالشه (تقریبا همسن #C) سینتکس مدرن و خوانایی رو ارائه میده. از Concurrency ساپورت میکنه بوسیله Fiber ها و همینطور از مکانیزم های message passing و immutable data structure ساپورت میکنه.

این زبان فوق العاده interoperability فوق العاده ای با C و ++C و Objective-C و Python داره. و همینطور cross-platform هست. درکل هدفش productive and safe systems programming language بوده و همچنان کامیونیتی ش زنده ست.

چیزای جالب و بامزه ای هم راجبش وجود داره :)
مثلا اینکه دوتا stdlib داره😂🤷 با نام های Phobos و Tango.

این هم یک program ساده با زبان جذاب D :

import std.stdio;

void main() {
string name = "D Programming Language";
writeln("Hello, ", name);

// Type inference with 'auto'
auto number = 42;
writeln("The answer is: ", number);
}


#programming_languages
🆒11👍31
Codon: AOT compiler for Python

خیلی خوب نوشته شده که ساپورت Gpu programming و Parallelism داره. همینطور میتونید لایبرری های موجود پایتون رو ایمپورت بکنید. بدون هیچ مشکلی کار میکنه.

https://docs.exaloop.io/codon
🔥7
توی LLVM یه instruction وجود داره به اسم phi.
اینطوری که کار میکنه نسبت به جایی که ازش اومدیم مقدار register (x برای مثال) متفاوت خواهد بود :)

برای مثال توی C :

int x;
if (some_condition) {
x = 10;
} else {
x = 20;
}

Now it's dependent on some_condition!

و اما توی LLVM-ir چطوریه؟ اینطوریه:

%x = phi i32 [ 10, %if_true ], [ 20, %if_false ]

همینقد کیوت و دوس داشتنی :)

#llvm
👍7👎3🔥1
درود فراوان به مینتینر های tinygo. نشستم دارم کدشو میخونم کلی trick یاد گرفتم برای compiler design :)

https://github.com/tinygo-org/tinygo/blob/release/compiler/compiler.go
10
عجب چیزی پیدا کردم :)
یه guidance خیلی کوچیک برای کسایی که تازه میان سمت LLVM.
دم نویسنده ش بشدت گرم

https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/index.html
👍12
👾 Geek Engineers pinned «دوس دارید مطالب چنل مون اکثرا راجب چه موضوعی باشه؟»
کامونیتی سازنده systemd لینوکس دارن یه توزیع جدید میسازن:

https://news.itsfoss.com/systemd-particle-os/

پ.ن: هر وقت استیبل شد بگید ما هم تست کنیم🥱
👾5🫡2