👾 Geek Engineers
Software_Architecture_The_Hard_Parts_Neal_Ford_OReilly_9781492086895.pdf
این کتاب واقعا العاده ست! clue هایی که میده رو واقعا useful یافتم.
تو این ویدیو هم نویسنده ش Mark Richards راجب :
Difference between Atomic vs Eventual Transactions
حرف میزنه.
https://www.youtube.com/watch?v=trmwHdumBrs
پ.ن: این کتاب بشدت پیشنهادیه :)
تو این ویدیو هم نویسنده ش Mark Richards راجب :
Difference between Atomic vs Eventual Transactions
حرف میزنه.
https://www.youtube.com/watch?v=trmwHdumBrs
پ.ن: این کتاب بشدت پیشنهادیه :)
YouTube
Lesson 169 - Atomic vs Eventual Transactions
In lesson 109 I talked about BASE transactions and eventual consistency in distributed architectures. In this lesson I dive deeper into the differences between ACID and BASE transactions, and what it means to have an “atomic” transaction in a distributed…
👍4
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.
▫️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 است و اینطور نیست که انتخاب یکی از ان ها بهترین سولوشن ممکن باشد.
انتخاب هر کدام ازین ها یک trade-off است و اینطور نیست که انتخاب یکی از ان ها بهترین سولوشن ممکن باشد.
👨💻5👍1
یک کورس آموزشی Go از طرف شرکت محبوب RedHat. از دستش ندید :)
https://github.com/RedHatOfficial/GoCourse
https://github.com/RedHatOfficial/GoCourse
GitHub
GitHub - RedHatOfficial/GoCourse: Go language course
Go language course. Contribute to RedHatOfficial/GoCourse development by creating an account on GitHub.
❤6👍1
برا ویندوز هم tiling window manager ساختن :)
https://github.com/LGUG2Z/komorebi
شایدم میدونستید من نمیدونستم.
ولی خیلی باحاله :>
پ.ن: عیدتونم مبارک❤️🤌🏿
https://github.com/LGUG2Z/komorebi
شایدم میدونستید من نمیدونستم.
ولی خیلی باحاله :>
پ.ن: عیدتونم مبارک❤️🤌🏿
GitHub
GitHub - LGUG2Z/komorebi: A tiling window manager for Windows 🍉
A tiling window manager for Windows 🍉. Contribute to LGUG2Z/komorebi development by creating an account on GitHub.
🆒5❤1
یه HttpRouter خیلی ساده با C ساختم🙂🤌🏿
هدف یادگیری بود که با موفقیت انجام شد.
اگه خواستید میتونید ریپو شو چک کنید :
https://github.com/tahadostifam/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
این ادیتور با 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
👾 Geek Engineers
پروفسور دانشگاه استنفورد John Ousterhout راجب فلسفه معماری نرم افزار و اهمیت آن صحبت میکند. همینطور راجب کتابی که در همین موضوع نوشته است. جان بر این باور هست که برنامه نویس های خوب میتونن تعلیم داده بشن. یکی از کار های مهم و بزرگ ایشون برگذار کردن کورس هایی…
A Philosophy of Software Design, John Ousterhout, 2019.pdf
1.6 MB
این همون کتاب که راجبش میگفتم،
متاسفانه من قبلا خوندمش :)
متاسفانه من قبلا خوندمش :)
👍7
و اما بلاخره! PR ای که برای c3 lang باز کرده بودم مرج شد :)
هدف این بود که مشارکت رسمی م رو روی این زبان اغاز کنم و از لحاض معنوی انگیزه ای باشه برای بیشتر کار کردن رو این پروژه فوق العاده.
امروز مرج شد :]
https://github.com/c3lang/c3c/pull/2055
چطور شد اینطور شد؟😜
یه مدت داکیومنت ش رو داشتم میخوندم و حتی یادتون باشه یه lz4 هم بایند کردیم براش و اونم مرج شد توی vendor ش. موقع خوندن سورس کد کامپایلرش به لطف comment anchors توی vscode این تودو رو دیدم. که میگفت موقع vendor-fetch یا همون دریافت پکیج های third party به یه progress bar نیاز داریم.
خب.. خداروشکر که تسک آسونی بود😂🤌🏿
دم عیدی اتفاق خوشحال کننده ای بود برام.
در آینده امیدوارم مشارکت های عمیق تری روی این پروژه انجام بدم.
به امید مشارکت های عمیق😋🍻
#c3 #programming_languages
هدف این بود که مشارکت رسمی م رو روی این زبان اغاز کنم و از لحاض معنوی انگیزه ای باشه برای بیشتر کار کردن رو این پروژه فوق العاده.
امروز مرج شد :]
https://github.com/c3lang/c3c/pull/2055
چطور شد اینطور شد؟😜
یه مدت داکیومنت ش رو داشتم میخوندم و حتی یادتون باشه یه lz4 هم بایند کردیم براش و اونم مرج شد توی vendor ش. موقع خوندن سورس کد کامپایلرش به لطف comment anchors توی vscode این تودو رو دیدم. که میگفت موقع vendor-fetch یا همون دریافت پکیج های third party به یه progress bar نیاز داریم.
خب.. خداروشکر که تسک آسونی بود😂🤌🏿
دم عیدی اتفاق خوشحال کننده ای بود برام.
در آینده امیدوارم مشارکت های عمیق تری روی این پروژه انجام بدم.
به امید مشارکت های عمیق😋🍻
#c3 #programming_languages
GitHub
Added a progress bar to vendor-fetch in compiler section by tahadostifam · Pull Request #2055 · c3lang/c3c
Hi,
I wrote a progress bar for vendor-fetch. I hope you like it :)
Also I wanna mention that these two lines needs to be refactored, it does not seem pretty well :
if (count == 0)
error_exit(&...
I wrote a progress bar for vendor-fetch. I hope you like it :)
Also I wanna mention that these two lines needs to be refactored, it does not seem pretty well :
if (count == 0)
error_exit(&...
👍6🔥5❤1👾1
👾 Geek Engineers
یه کد ادیتوری هست به اسم Helix که واقعا منو شگفت زده کرده :) این ادیتور با Rust نوشته شده و شباهت زیادی به neovim داره. فقط خوبی ش اینه که کانفیگ دیفالتش خیلی خوبه. اونقد خوبه که نیاز نیست انگولکش بکنید... همینطوری اوکیه. از اکثر LSP های زبونا ساپورت میکنه.…
YouTube
The Most Underrated IDE
A look at the Helix IDE, with extra focus on some of the features that have been implemented in the past two years.
Keyboard: Glove80 - https://bit.ly/3EKyn7X
Camera: Canon EOS R8 https://amzn.to/4gSpivt
Monitor: Dell U4914DW 49in https://amzn.to/3MJV1jx…
Keyboard: Glove80 - https://bit.ly/3EKyn7X
Camera: Canon EOS R8 https://amzn.to/4gSpivt
Monitor: Dell U4914DW 49in https://amzn.to/3MJV1jx…
ما سنمون قد نمیده ولی یه زمونی یک زبان برنامه نویسی وجود داشت به نام 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 :
#programming_languages
این زبان تو سال 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👍3❤1
Codon: AOT compiler for Python
خیلی خوب نوشته شده که ساپورت Gpu programming و Parallelism داره. همینطور میتونید لایبرری های موجود پایتون رو ایمپورت بکنید. بدون هیچ مشکلی کار میکنه.
https://docs.exaloop.io/codon
خیلی خوب نوشته شده که ساپورت Gpu programming و Parallelism داره. همینطور میتونید لایبرری های موجود پایتون رو ایمپورت بکنید. بدون هیچ مشکلی کار میکنه.
https://docs.exaloop.io/codon
🔥7
توی LLVM یه instruction وجود داره به اسم phi.
اینطوری که کار میکنه نسبت به جایی که ازش اومدیم مقدار register (x برای مثال) متفاوت خواهد بود :)
برای مثال توی C :
Now it's dependent on
و اما توی LLVM-ir چطوریه؟ اینطوریه:
%x = phi i32 [ 10, %if_true ], [ 20, %if_false ]
همینقد کیوت و دوس داشتنی :)
#llvm
اینطوری که کار میکنه نسبت به جایی که ازش اومدیم مقدار 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
https://github.com/tinygo-org/tinygo/blob/release/compiler/compiler.go
GitHub
tinygo/compiler/compiler.go at release · tinygo-org/tinygo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM. - tinygo-org/tinygo
❤10
عجب چیزی پیدا کردم :)
یه guidance خیلی کوچیک برای کسایی که تازه میان سمت LLVM.
دم نویسنده ش بشدت گرم
https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/index.html
یه guidance خیلی کوچیک برای کسایی که تازه میان سمت LLVM.
دم نویسنده ش بشدت گرم
https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/index.html
👍12
دوس دارید مطالب چنل مون اکثرا راجب چه موضوعی باشه؟
Anonymous Poll
33%
Web Development
38%
System programming
14%
Programming Language Implementation (زبون هایی که تازه ساخته شدن)
26%
Rust Programming Language
27%
Go Programming Language
18%
C Programming Language
24%
Cyrus Programming Language (زبونی که ما میسازیم)
24%
نمیدونم. هرچی صلاحه🤌🏿
Pitfalls of Safe Rust: چیزایی که راست گارانتی نمیکنه و چجوری درستش کنیم
https://corrode.dev/blog/pitfalls-of-safe-rust/
https://corrode.dev/blog/pitfalls-of-safe-rust/
Corrode Rust Consulting
Pitfalls of Safe Rust | corrode Rust Consulting
When people say Rust is a “safe language”, they often mean memory safety.
And while memory safety is a great start, it’s far from all it takes to build robust applications.
Memory safety is important but not sufficient for overall r…
And while memory safety is a great start, it’s far from all it takes to build robust applications.
Memory safety is important but not sufficient for overall r…
کامونیتی سازنده systemd لینوکس دارن یه توزیع جدید میسازن:
https://news.itsfoss.com/systemd-particle-os/
پ.ن: هر وقت استیبل شد بگید ما هم تست کنیم🥱
https://news.itsfoss.com/systemd-particle-os/
پ.ن: هر وقت استیبل شد بگید ما هم تست کنیم🥱
It's FOSS News
ParticleOS: Systemd's Very Own Linux Distro in Making
A Linux distro from systemd? Sounds interesting, right?
👾5🫡2