Dev Perfects – Telegram
Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
چطور می‌توانیم تراکنش‌های پایگاه داده در Django رو به صورت یکپارچه و بدون دردسر مدیریت کنیم؟
در دنیای برنامه‌نویسی، گاهی اوقات با مجموعه‌ای از عملیات پایگاه داده روبه‌رو می‌شویم که باید همگی به طور موفقیت‌آمیز انجام شوند یا اصلاً انجام نشوند. دکوراتور atomic در Django دقیقاً برای همین موقعیت طراحی شده است. در این مقاله به بررسی مزایا و کاربردهای این دکوراتور می‌پردازیم.

دکوراتور atomic چیست؟
دکوراتور atomic در Django ابزاری قدرتمند برای مدیریت تراکنش‌های پایگاه داده است که به شما این امکان را می‌دهد که مجموعه‌ای از عملیات پایگاه داده را به صورت یک تراکنش واحد اجرا کنید. این ویژگی به شما کمک می‌کند تا از مشکلاتی همچون ناسازگاری داده‌ها و تراکنش‌های ناقص جلوگیری کنید.

قابلیت‌ها و کارایی‌های دکوراتور atomic:
مدیریت تراکنش‌ها
اصلی‌ترین وظیفه atomic، مدیریت تراکنش‌های پایگاه داده است. با قرار دادن تابع یا view خود در داخل این دکوراتور، تمامی عملیات پایگاه داده در آن بخش به صورت یک تراکنش واحد اجرا می‌شوند.
جلوگیری از ناسازگاری داده‌ها
اگر در حین انجام عملیات پایگاه داده، خطایی رخ دهد، atomic تضمین می‌کند که هیچ تغییری در پایگاه داده اعمال نشود و تمامی تغییرات به حالت قبلی برمی‌گردند. این کار از ایجاد ناسازگاری در داده‌ها جلوگیری می‌کند.
افزایش عملکرد
در برخی موارد، استفاده از atomic می‌تواند عملکرد برنامه را بهبود دهد. با کاهش تعداد تماس‌های متوالی به پایگاه داده، می‌توان سرعت اجرای عملیات را افزایش داد.
کنترل دقیق‌تر
شما می‌توانید سطح انزوا (Isolation) تراکنش‌ها را نیز مشخص کنید. این ویژگی به شما امکان می‌دهد که دقیقاً کنترل کنید که تراکنش‌ها چگونه اجرا شوند و از تداخل آن‌ها جلوگیری کنید.
ویژگی‌های کلیدی دکوراتور atomic
Atomicidad:
تمام عملیات داخل یک بلوک کد یا view یا به طور کامل انجام می‌شود یا اصلاً انجام نمی‌شود.
Isolation:
سطح انزوای تراکنش‌ها را تعیین می‌کند تا از تداخل تراکنش‌ها با یکدیگر جلوگیری شود.
Durability:
تغییرات اعمال شده در پایگاه داده پس از خرابی سیستم یا قطع برق، باقی می‌مانند.
ACID Properties:
دکوراتور atomic به چهار ویژگی اساسی یعنی Atomicity, Consistency, Isolation و Durability مجهز است که در طراحی برنامه‌های پایدار و قابل اعتماد بسیار موثر است.

موارد استفاده رایج:
انتقال وجه
در سیستم‌های مالی برای جلوگیری از خطاهای احتمالی هنگام انتقال وجه بین حساب‌ها.
ثبت سفارش
در فروشگاه‌های آنلاین برای اطمینان از ثبت کامل سفارش و جلوگیری از ثبت سفارش‌های ناقص.
مدیریت موجودی
در سیستم‌های انبارداری برای به‌روزرسانی موجودی کالاها به طور دقیق و جلوگیری از مغایرت‌ها.
مزایای استفاده از atomic
کاهش خطاهای پایگاه داده: با مدیریت دقیق تراکنش‌ها، احتمال خطاهای ناشی از عملیات ناقص کاهش می‌یابد.
افزایش امنیت داده‌ها: جلوگیری از ناسازگاری داده‌ها موجب حفظ امنیت اطلاعات کاربران می‌شود.
بهبود عملکرد: در برخی سناریوها، استفاده از atomic می‌تواند عملکرد کلی برنامه را بهبود بخشد.

نکات مهم
از atomic در مواقعی که نیاز به یکپارچگی عملیات پایگاه داده دارید استفاده کنید.
توجه داشته باشید که استفاده بی‌رویه از atomic ممکن است منجر به کاهش عملکرد برنامه شود.
در صورت نیاز به کنترل دقیق‌تر بر تراکنش‌ها، می‌توانید از پارامترهای مختلف این دکوراتور استفاده کنید.

@DevTwitter | <Sobhan Hassanzadeh/>
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
اوبونتو  ۲۴.۰۴.۲ LTS منتشر شد: با هسته لینوکس ۶.۱۱ و پشته گرافیکی Mesa 24.2


این نسخه نقطه‌ای عمدتاً به‌عنوان مجموعه‌ای از وصله‌های امنیتی و به‌روزرسانی‌های نرم‌افزاری منتشر شده از آگوست ۲۰۲۴ طراحی شده است و هدف آن، نصب‌های جدید است. کاربرانی که از اوبونتو ۲۴.۰۴ LTS یا ۲۴.۰۴.۱ LTS استفاده می‌کنند، تنها نیاز به به‌روزرسانی سیستم خود دارند.
Forwarded from Syntax | سینتکس (Daimon)
تو این ریپازیتوری، میتونید لیستی از workflow های از قبل تنظیم شده رو ببینید، کدهاشو بخونید و ازش استفاده کنید.

https://github.com/actions/starter-workflows/

دوست دارید در خصوص گیتهاب اکشن پست های بیشتری بذاریم؟ تو پروژه هاتون از گیتهاب اکشن استفاده می کنید؟

#github #workflow

@Syntax_fa
Forwarded from Out of Distribution (Mahdi)
سایت بسیار خوبیه در مقایسه llm‌ها با هم از نظر معیارهای مختلف (کیفیت و سرعت و هزینه و ....):


https://artificialanalysis.ai/
Forwarded from GaiaTrader$! (Ml WAVE🌊)
📌درک عمیق منطق کدنویسی و فلسفه‌ی پشت آن، یک فرآیند تکاملی است که نیاز به ترکیب دانش فنی، تفکر منطقی، و حتی نوعی نگاه فلسفی به مسئله دارد. برای اینکه این موضوع را کاملاً حرفه‌ای و در عین حال دوستانه و جذاب توضیح بدهم، بیایید با یک نگاه متفاوت به این مسیر بپردازیم.

۱. کدنویسی یک زبان است، آن را مانند یک زبان انسانی یاد بگیر!

💻همان‌طور که وقتی یک زبان جدید را یاد می‌گیری، ابتدا با واژگان، سپس گرامر و در نهایت با سبک بیان و نوشتن آشنا می‌شوی، کدنویسی هم همین مسیر را دارد. ابتدا باید سینتکس زبان را یاد بگیری (لغات و عبارات آن)، سپس ساختارهای منطقی (گرامر) و در نهایت الگوهای طراحی و معماری کد (سبک نوشتاری).

اما چیزی که باعث می‌شود یک نویسنده‌ی خوب در زبان‌های انسانی بدرخشد، فهم عمیق از ساختارها، تاریخچه‌ی زبان، و فلسفه‌ی آن است. در کدنویسی هم همین اصل برقرار است!

۲. الگوریتم‌ها، شعرهای پنهان دنیای منطق‌اند!

🎗تصور کن یک الگوریتم مانند یک شعر کلاسیک است، هر بیت آن (خط کد) به زیبایی در کنار بیت دیگر قرار می‌گیرد تا یک معنی بزرگ‌تر را منتقل کند. این همان چیزی است که باعث می‌شود الگوریتم‌های خوب، زیبا، کارآمد و تمیز باشند. وقتی یک برنامه‌نویس حرفه‌ای به الگوریتمی نگاه می‌کند، مانند خواندن یک شعر قوی، از هماهنگی خطوط، ارتباط بین بخش‌ها، و تأثیرگذاری آن روی مسئله لذت می‌برد.

🥇پس برای درک عمیق‌تر، الگوریتم‌ها را نه فقط به‌عنوان یک ابزار حل مسئله، بلکه به‌عنوان یک اثر هنری ریاضی ببین که باید آن را درک کنی و حتی از آن لذت ببری.

۳. برنامه‌نویسی، هنر ترجمه‌ی ایده‌ها به واقعیت است!

🥇شاید عجیب باشد، اما کدنویسی چیزی بیشتر از نوشتن یک سری خطوط پشت سر هم است. برنامه‌نویسی یک هنر ترجمه است؛ ترجمه‌ی ایده‌ها و انتظارات به واقعیت دیجیتال. مهارت در این کار به این معنی است که نه‌تنها کد را بنویسی، بلکه قبل از نوشتن، مسئله را بشکافی، راه‌حل‌های مختلف را در ذهن بررسی کنی، و سپس به بهینه‌ترین، زیباترین و کارآمدترین راه برسید.

🥇در اینجا، تفکر طراحی نرم‌افزار مهم می‌شود؛ اینکه قبل از اینکه انگشتانت روی کیبورد حرکت کنند، مغزت باید بهترین مسیر را ترسیم کرده باشد!

۴. فلسفه‌ی کدنویسی: چرا پشت پرده را ببینی؟

🥇کدنویسی صرفاً یک مهارت فنی نیست، بلکه پشت آن یک فلسفه‌ی عمیق نهفته است. چرا؟

🏅چون تمام سیستم‌هایی که در دنیا وجود دارند، بر پایه‌ی منطق و تفکر انسان ساخته شده‌اند. وقتی برنامه‌نویسی می‌کنی، در واقع در حال خلق جهان‌های جدید از جنس منطق و داده هستی.

🎖یک برنامه‌نویس واقعی، فقط به یادگیری سینتکس و حل مسائل سطحی اکتفا نمی‌کند؛ بلکه همیشه در جستجوی این است که بفهمد چرا یک راه‌حل بهتر است؟ چرا این الگوریتم سریع‌تر است؟ چرا معماری نرم‌افزار باید به این شکل باشد؟

این دقیقاً جایی است که تو را از یک کدنویس معمولی به یک معمار نرم‌افزار تبدیل می‌کند.

۵. سادگی و مینیمالیسم؛ روح برنامه‌نویسی حرفه‌ای!

🎖بزرگ‌ترین اشتباهی که بسیاری از توسعه‌دهندگان مرتکب می‌شوند، اضافه‌گویی در کد است!
یک کد عالی، مثل یک جمله‌ی کوتاه و پرمعناست؛ نه پیچیده و نه مبهم.

🏅«سادگی» همیشه نهایت ظرافت و قدرت است. هر چه در کدنویسی بیشتر پیشرفت کنی، می‌بینی که چطور می‌توانی همان راه‌حل‌ها را با کدهای کوتاه‌تر، واضح‌تر و زیباتر بنویسی.

۶. آزمایش، خطا، و شکست = مسیر موفقیت!

🎖اگر فکر می‌کنی که یک برنامه‌نویس حرفه‌ای از روز اول بدون خطا کدنویسی می‌کرده، سخت در اشتباهی! بهترین توسعه‌دهندگان، کسانی هستند که بارها شکست خورده‌اند، باگ‌های وحشتناک پیدا کرده‌اند، و بارها مجبور شده‌اند از اول شروع کنند!

🏅پس هرگز از اشتباهاتت نترس. هر باگ، یک درس جدید برای درک عمیق‌تر منطق برنامه‌نویسی است.

۷. همیشه یاد بگیر و عمیق‌تر شو!

🏅دنیای برنامه‌نویسی مثل یک اقیانوس بی‌انتها است؛ هرچقدر جلوتر بروی، عمق بیشتری برای کشف کردن پیدا می‌کنی. اگر می‌خواهی در کار خود به نهایت موفقیت برسی، باید همیشه به این فکر کنی که چگونه بهتر بفهمم؟ چگونه بهتر طراحی کنم؟ چگونه مفاهیم را عمیق‌تر درک کنم؟

🏆راز اصلی پیشرفت، ذهنی است که هیچ‌وقت از یادگیری خسته نشود.

🎗نتیجه‌گیری : کدنویسی یک مسیر فکری است، نه فقط یک مهارت !

برای اینکه به موفقیت واقعی در برنامه‌نویسی برسی، باید به آن به چشم یک مسیر فکری نگاه کنی. وقتی برنامه‌ای می‌نویسی، در حال پیاده‌سازی یک مدل از جهان هستی هستی؛ این کار فقط یک سری "if" و "loop" نیست، بلکه یک هنر، علم، و فلسفه‌ی ذهنی است که هرچه در آن عمیق‌تر شوی، درک بهتری از دنیای اطرافت خواهی داشت.

حالا بلند شو، یک چای خوب بریز، لپ‌تاپت را باز کن، و با نگاه جدیدی به کدنویسی، شروع کن به خلق چیزهایی که دنیا را تغییر می‌دهند!


#مهم
#پیشنهادی

#note_wave
#ml_wave
#gaia_information


@codingrealm
جالبه بدونید hello, world
اولین بار در کتابی با عنوان "The C Programming Language" نوشته برایان کرنیگان و دنیس ریچی در سال 1978 استفاده شد و از آن زمان به بعد به عنوان یک تمرین ابتدایی در بسیاری از زبان‌های برنامه‌نویسی محبوبیت پیدا کرد.
من هم زمانی که برای اولین بار این کلمه رو بعد از کامپایل برنامه توسط استاد دانشگاهم دیدم به معنای واقعی کلمه به دنیای جدید با زبان های مختلف سلام کردم :)

@DevTwitter | <Mohammad Goroohi/>
Forwarded from Curious Geek ⚡️
Tehran ICT / Golestan ICT
این کامیونیتی در راستای کانکشن سازی بین فعالان حوزه تکنولوژی از جمله
1- Software Engineer
2- DevOps & SRE
3- AI Engineer & Data Engineer
4- Computer Scientist & Data Analyst
5- Frontend & Backend Developer
6- Cloud Architect
ها هستش ، ما منحصرا و متعصبانه حامی هیچ جریانی نیستیم ، هر کدوم از اعضا ممکنه دیدگاه خودشون رو داشته باشن.
اصلی ترین هدف این کامیونیتی شکستن دیوار های بین حوزه های مختلف در راستای شکل گیری ایده و تیم های نوست.

تلاش بر اینه جَو کامیونیتی ها دوستانه و غیر رسمی باقی بمونه.
در حال حاضر این کامیونیتی در گرگان شکل گرفته و در تهران اولین رویدادش برگزار شده.

خوشحال میشیم شما هم پیش‌مون باشید 😊
🔗 Tehran ICT / Golestan ICT
🆔 @Hiradsajde
👩‍💻 لاراول در ورژن 11 خودش، یک کلاس معرفی کرد به نام Number

با استفاده از این کلاس شما میتونید عملیات هایی که روی اعداد انجام میدید رو باهاش انجام بدید.
در مثال شما میبینید که ب استفاده از این کلاس، ما اومدیم و کار number_format رو به صورت خیلی راحت و براساس هر کشور انجام دادیم😎

#لاراول #آموزشی

📱 @milwad_dev_fun
Please open Telegram to view this post
VIEW IN TELEGRAM
کازمیک آلفا ۶ هم منتشر شد 🤑


https://blog.system76.com/post/cosmic-alpha-6-big-leaps-forward


هرچند هنوز زیاد کار داره تا قابل استفاده بشه.


@SohrabContents
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
اصول SOLID چین دقیقا ⁉️

درواقع SOLID یه سری اصول مهم توی برنامه‌نویسی شیءگراست هستش که کمک میکنه کدهای تمیز، قابل تغییر و کم‌اشکال بنویسیم.

اصل مسئولیت واحد
Single Responsibility Principle

هر کلاس فقط باید یک کار انجام بده.

چرا ؟ اگه یه کلاس چند کار مختلف انجام بده، تغییر توی یک بخش ممکنه بقیه قسمت‌ها رو هم خراب کنه.

🎯 مثال: فرض کن یه کلاس داریم که هم سفارش ثبت می‌کنه، هم فاکتور صادر می‌کنه، هم ایمیل ارسال می‌کنه! اگه فقط بخش ایمیل نیاز به تغییر داشته باشه، ممکنه کل سیستم بهم بریزه. بهتره هر کار رو به کلاس مخصوص خودش بسپاریم.


اصل باز/بسته
OCP - Open/Closed Principle‌ ‌‌ ‌ ‌ ‌‌ ‌ ‌

کد باید برای تغییر بسته، ولی برای توسعه باز باشه.

چرا؟ اگه مجبور باشیم برای اضافه کردن یه قابلیت، کدهای قدیمی رو تغییر بدیم، ممکنه یه جای دیگه خراب بشه.

🎯 مثال: فرض کن یه کلاس داریم که تخفیف رو روی فاکتور اعمال می‌کنه. اگه بخوایم یه نوع جدید تخفیف اضافه کنیم، نباید توی کلاس قبلی دست ببریم. به‌جاش یه کلاس جدید برای نوع جدید تخفیف می‌سازیم که به سیستم اضافه بشه، بدون اینکه چیزی خراب بشه.


اصل جایگزینی لیسکوف
LSP - Liskov Substitution Principle

کلاس‌های فرزند باید بدون مشکل جایگزین کلاس والد بشن.

چرا؟ اگه یه کلاس فرزند به‌درستی جای والد خودش رو نگیره، برنامه رفتار غیرمنتظره‌ای پیدا می‌کنه.

🎯 مثال: فرض کن یه سیستم پرداخت داریم که روش‌های مختلفی مثل کارت بانکی و کیف پول رو پشتیبانی می‌کنه. اگه یه متد "پرداخت()" توی والد باشه، همه کلاس‌های فرزند باید بتونن درست ازش استفاده کنن. حالا اگه یه روش پرداخت مثل "پرداخت با امتیاز" اضافه کنیم که امکان پرداخت نصفه‌نیمه داره، کل سیستم ممکنه به مشکل بخوره!


اصل تفکیک اینترفیس‌ها
ISP - Interface Segregation Principle

اینترفیس‌ها نباید متدهای اضافی داشته باشن.

چرا؟ اگه یه کلاس مجبور بشه متدهایی رو پیاده‌سازی کنه که بهش نیاز نداره، کد به‌هم‌ریخته و پیچیده می‌شه.

🎯 مثال:
فرض کن یه اینترفیس داریم به اسم Device که متدهای پرینت، اسکن و فکس داره. حالا یه کلاس داریم برای یه پرینتر ساده که فقط پرینت می‌کنه، ولی مجبور می‌شه متدهای اسکن و فکس رو هم پیاده‌سازی کنه، در حالی که بهشون نیازی نداره. بهتره اینترفیس رو به چند بخش جدا تقسیم کنیم.


اصل وارونگی وابستگی
DIP - Dependency Inversion Principle

ماژول‌های اصلی نباید مستقیم به جزئیات وابسته باشن، بلکه به اینترفیس‌ها وابسته باشن.

چرا؟ اگه یه بخش از سیستم وابسته به یه کلاس خاص باشه، هر تغییری توی اون کلاس می‌تونه باعث خرابی کل سیستم بشه.

🎯 مثال: فرض کن یه سیستم گزارش‌گیری داریم که داده‌ها رو از یه دیتابیس خاص مثل MySQL می‌گیره. اگه یه روز بخوایم به PostgreSQL یا MongoDB مهاجرت کنیم، کل کدهای گزارش‌گیری باید تغییر کنن. ولی اگه وابستگی‌ها به یه اینترفیس Database باشه، می‌تونیم دیتابیس رو عوض کنیم، بدون اینکه به کدهای اصلی دست بزنیم.


#WhatsThat #SOLID

𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣

Forwarded from Linuxor ?
ترجیح شرکت ها به گیتهاب های کویری بجای گیتهاب های سرسبز برای استخدام!

برای استخدام شدن گاهی مهارت‌ها و تجربه شما اهمیت کمتری نسبت به این داره که چقدر شبیه تیم فعلی یا نظر مدیر منابع انسانی هستید. بیشتر شرکت ها به تناسب شما و روابطتون با تیم توجه می‌کنن.

این یعنی بیشتر به مفید بودن شما برای خودشون اهمیت می‌دن نه اون 20k استار گیتهابتون در واقع دنبال نابغه نیستن یه حد معمولی بدونید و بتونید براشون کار ‌کنید کافیه.


@Linuxor
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۶۷۹

در مدرسه عشق اگر قال بود
کی فرق میان قال با حال بود
در عشق نداد هیچ مفتی فتوی
در عشق زبان مفتیان لال بود

#مولانا | گنجور
📍@iipoem
یه ریپازیتوری گیت‌هاب راه‌اندازی کردم که بهترین منابع یادگیری جاوا رو با تمرکز روی سیستم دیزاین، معماری نرم‌افزار و امنیت جمع‌آوری کنیم. شامل کتاب‌ها، دوره‌های ویدیویی، مقالات، نمونه‌کدها و نکات کاربردی.

https://github.com/Parsa-Parvizi/Java-Toturial

@DevTwitter | <Parsa-py/>
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰دستورات کمتر دیده شده در لینوکس #سری بیست و چهارم
🔰دستور udisksctl
در لینوکس برای مدیریت دیسک‌ها و پارتیشن‌ها استفاده می‌شوند. در اینجا توضیحی درباره دو دستور شما ارائه می‌شود:



🔹دستور udisksctl: این دستور برای مدیریت دیسک‌ها و پارتیشن‌ها در لینوکس استفاده می‌شود.
🔹گزیه mount: این بخش از دستور به سیستم می‌گوید که پارتیشن مورد نظر را به یک نقطه (دایرکتوری) در سیستم فایل متصل کند.
🔹گزینه unmount: این بخش از دستور به سیستم می‌گوید که پارتیشن مورد نظر را از سیستم فایل جدا کند.

دستور اتصال
udisksctl mount -b /dev/sdb1

دستور جدا کردن
udisksctl unmount -b /dev/sdb1



📌نویسنده: حسین سیلانی
📌منبع :  آکادمی کندوی دانش
https://learninghive.ir
Forwarded from Geek Alerts
موزیلا میگه فقط تا سپتامبر ۲۰۲۵ (شهریور ۱۴۰۴) از مرورگر فایرفاکس روی ویندوز قبل از ۱۰ مثل سون، ۸ و ۸.۱ پشتیبانی میکنه و بعد از این تاریخ دیگه آپدیت‌های امنیتی برای این نسخه‌ها منتشر نمیشن.

البته خیلی دور از ذهن هم نیست چون نسخه‌های از ویندوز رو داره میگه که خود مایکروسافت سال‌ها هست دیگه ازشون پشتیبانی نمیکنه و امنیت کافی برای اتصال به اینترنت رو هم ندارن.

🔗 windowsreport
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Geek Alerts
اپل اینتلیجنس یه قابلیتی داره که میشه Siri رو برد روی ChatGPT تا جواب‌هارو اون بهت بده، الان خبر رسیده که اپل داره Gemini گوگل‌رو هم اضافه میکنه و کاربرهای اکوسیستم اپل میتونن بین گوگل و OpenAI حق انتخاب داشته باشن.

اپل توی این مورد بر خلاف نقدهای رسانه‌ها باهوش‌تر عمل کرده چون هر نوع جواب سیاسی یا جواب‌هایی که مردم دوست ندارن رو میتونه گردن گوگل و OpenAI بندازه، اینجوری کسی هم از اپل ناراحت نمیشه.

🔗 9to5mac
🤓 @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Woland's Linux Journal (Woland)
Media is too big
VIEW IN TELEGRAM
💠بازی بالدورز گیت روی آرچ لینوکس 💠

ویدیویی که یکی از دوستان گرفته از بازی محبوب بالدورز گیت که روی آرچ و کی‌دی‌ای با استفاده از ویلند و لوتریس داره به بهترین شکل اجرا میشه.

ویدیو دارای توضیحات خیلی خوبیه و توصیه می‌کنم از دست ندین.

#آموزش #بازی
#gaming_on_linux
#baldursgate
#بالدورزگیت