Forwarded from Python Hints
YouTube
فصل دوازدهم - Special Methods for Sequences
این جلسات کاملا رایگان و با هدف کمک به جامعه توسعه دهنده پایتون برگذار شده.
توی این جلسه؛ به بررسی فصل دوازدهم پرداختیم و آماده شدیم برای درک بهتر پروتکلها در پایتون.
کدهای هر جلسه رو میتونید توی گیتهاب بخونید:
https://github.com/Pyhints/fluent_python…
توی این جلسه؛ به بررسی فصل دوازدهم پرداختیم و آماده شدیم برای درک بهتر پروتکلها در پایتون.
کدهای هر جلسه رو میتونید توی گیتهاب بخونید:
https://github.com/Pyhints/fluent_python…
Forwarded from IRCF | اینترنت آزاد برای همه
Forwarded from LearnPOV | لرن پی او وی
اگر برنامه نویسی به زودی قراره چشمات به فنا بره اگر به این توصیه هایی که بهت میگم عمل نکنی :)
👀 استفاده از قطره اشک مصنوعی
این بزرگواری که تو تصویر میبینید قطره اشک مصنوعی هستش، من تحقیق کردم استفاده ازش ضرری نداره و خب از اونجایی که ما خیلی به مانیتور و کد هامون خیره میشیم و تعداد دفعات پلک زدن میاد پایین چشمامون خشک میشه
⏰ استراحت دادن به چشم
هر 20 دقیقه یک بار پنج دقیقه دست از کار بکشید و 3 الی 5 دقیقه به چشمای خودتون استراحت بدید
حالا به چه شکلی ؟
➊ برید لب پنجره یا جایی که نور طبیعی وجود داره و به دور نگاه کنید، وقتی اینکارو انجام میدید چشماتون یه حالتی میشه و خودتون متوجه تغییر میشید
➋ چشم خودتون رو ببندید و با چپ، راست، بالا و پایین کردن چشمتون بهش ورزش بدید، این کار باعث تقویت عضله های چشم میشه
و در نهایت مراقب چشماتون باشید چون یه عمر قراره باهاشون زندگی کنید و سلامتش رو در اولویت قرار بدید ❤️
👀 استفاده از قطره اشک مصنوعی
این بزرگواری که تو تصویر میبینید قطره اشک مصنوعی هستش، من تحقیق کردم استفاده ازش ضرری نداره و خب از اونجایی که ما خیلی به مانیتور و کد هامون خیره میشیم و تعداد دفعات پلک زدن میاد پایین چشمامون خشک میشه
به همین دلیل سعی کنید روزی حداقل ➍ مرتبه ازش استفاده کنید ✅
⏰ استراحت دادن به چشم
هر 20 دقیقه یک بار پنج دقیقه دست از کار بکشید و 3 الی 5 دقیقه به چشمای خودتون استراحت بدید
حالا به چه شکلی ؟
➊ برید لب پنجره یا جایی که نور طبیعی وجود داره و به دور نگاه کنید، وقتی اینکارو انجام میدید چشماتون یه حالتی میشه و خودتون متوجه تغییر میشید
➋ چشم خودتون رو ببندید و با چپ، راست، بالا و پایین کردن چشمتون بهش ورزش بدید، این کار باعث تقویت عضله های چشم میشه
این مورادی که گفتم بهتون توصیه چندین چشم پزشک مختلف به من بوده مخصوصا مورد اول پس جدیش بگیرید !
و در نهایت مراقب چشماتون باشید چون یه عمر قراره باهاشون زندگی کنید و سلامتش رو در اولویت قرار بدید ❤️
#️⃣ #tips #programming
🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Forwarded from Rust for Python developers
توی بعضی شرایط rust-analyzer ممکنه رو دستش بیاد؛ اونوقت highlight به درستی انجام نمیشه اگر اینطوری شد توی تنظیمات
وارد بشید و گزینهاش رو غیر فعال کنید موقتا ( تا آخر پروژه مثلا)
Rust-analyzer > Semantic Highlighting > String
وارد بشید و گزینهاش رو غیر فعال کنید موقتا ( تا آخر پروژه مثلا)
Forwarded from Gopher Academy
🔵 عنوان مقاله
Some Go Web Dev Notes
🟢 خلاصه مقاله:
مقالهی مورد بحث بر اهمیت و کارایی پستهای جولیا تاکید دارد که به دلیل صداقت، کمک و بیپردهگوییاش مشهور است. این مقاله یک مجموعه نکات فوری، توصیهها و مشاهدات میباشد که نشان از کیفیت بالای محتوای ارایه شده توسط جولیا دارد. نویسنده به خوانندگان تضمین میدهد که جولیا همواره چیز جدیدی برای ارائه دارد و چشمان آنها را به موضوعات یا دیدگاههای نو باز میکند. این شیوه نوشتار جولیا تاثیرگذار و مفید ارزیابی شده و خواننده را به مطالعه بیشتر ترغیب میکند.
🟣لینک مقاله:
https://golangweekly.com/link/160479/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Some Go Web Dev Notes
🟢 خلاصه مقاله:
مقالهی مورد بحث بر اهمیت و کارایی پستهای جولیا تاکید دارد که به دلیل صداقت، کمک و بیپردهگوییاش مشهور است. این مقاله یک مجموعه نکات فوری، توصیهها و مشاهدات میباشد که نشان از کیفیت بالای محتوای ارایه شده توسط جولیا دارد. نویسنده به خوانندگان تضمین میدهد که جولیا همواره چیز جدیدی برای ارائه دارد و چشمان آنها را به موضوعات یا دیدگاههای نو باز میکند. این شیوه نوشتار جولیا تاثیرگذار و مفید ارزیابی شده و خواننده را به مطالعه بیشتر ترغیب میکند.
🟣لینک مقاله:
https://golangweekly.com/link/160479/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Julia Evans
Some Go web dev notes
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
🔸توی این پست میخوایم پروژههای دانلودر از سوشال مدیا رو معرفی کنیم اگه موردی دیگه سراغ داشتید کامنت کنید:
1) پروژههای اوپن سورس:
+https://github.com/vaaski/telegram-ytdl
+https://github.com/tskau/cobold
+https://github.com/Rojeck/alwaysReelsBot
+https://github.com/yt-dlp/yt-dlp
+https://github.com/imputnet/cobalt
+https://github.com/TeamNewPipe/NewPipe/
2) سایت:
+https://cobalt.tools/
+https://newpipe.net/
+https://chatgpt.com/share/6714c3a7-a0c0-800f-ae49-869d26afb706
3) رباتهای تلگرام:
+@uvd_bot
+@coboldbot
+@AlwaysReels_bot
+@MegaSaverBot
#معرفی
@TheRaymondDev
1) پروژههای اوپن سورس:
+https://github.com/vaaski/telegram-ytdl
+https://github.com/tskau/cobold
+https://github.com/Rojeck/alwaysReelsBot
+https://github.com/yt-dlp/yt-dlp
+https://github.com/imputnet/cobalt
+https://github.com/TeamNewPipe/NewPipe/
2) سایت:
+https://cobalt.tools/
+https://newpipe.net/
+https://chatgpt.com/share/6714c3a7-a0c0-800f-ae49-869d26afb706
3) رباتهای تلگرام:
+@uvd_bot
+@coboldbot
+@AlwaysReels_bot
+@MegaSaverBot
#معرفی
@TheRaymondDev
Forwarded from Pink Orca ✌️ پینک اورکا
This media is not supported in your browser
VIEW IN TELEGRAM
~> ACID Properties
ACID یه سری خصوصیات کلیدی هستش که تو دیتابیسهای رابطهای برای تضمین صحت تراکنشها (Transactions) استفاده میشه. این مفهوم اولین بار سال 1983 توسط Theo Härder و Andreas Reuter معرفی شد.
حالا ACID مخفف چیه؟!⬇️
Atomicity (اتمی بودن): یعنی یه تراکنش یا باید کامل انجام بشه یا اصلا انجام نشه. مثلا وقتی پول از یه حساب بانکی به حساب دیگه منتقل میشه، یا باید هم کم شدن از حساب اول و هم اضافه شدن به حساب دوم انجام بشه، یا هیچکدوم انجام نشه. حالت نصفه و نیمه نداریم. اگه وسط کار مشکلی پیش بیاد، عملیات Rollback میشه.
Consistency (سازگاری): یعنی دیتابیس باید همیشه تو حالت معتبر (valid) باشه، چه قبل تراکنش و چه بعدش. مثلا اگه قانون داریم که موجودی حساب نباید منفی بشه، هیچ تراکنشی نمیتونه این قانون رو نقض کنه. اگه تراکنشی بخواد این کار رو بکنه، کامل کنسل میشه.
Isolation (انزوا): یعنی تراکنشهای همزمان نباید روی هم تاثیر بذارن. مثلا اگه دو نفر همزمان از یه حساب برداشت میکنن، سیستم باید طوری مدیریت کنه که نتیجه نهایی درست باشه. این کار با مکانیزمهای مختلف Locking انجام میشه.
سطوح مختلف Isolation وجود داره:
- Read Uncommitted: کمترین سطح ایزوله بودن.
- Read Committed: فقط تغییرات تایید شده دیده میشن.
- Repeatable Read: خوندنهای تکراری نتیجه یکسان میدن.
- Serializable: بالاترین سطح ایزوله بودن.
Durability (ماندگاری): یعنی وقتی تراکنشی موفق انجام شد (Commit شد)، تغییراتش باید دائمی باشه و حتی با قطع برق یا کرش سیستم هم از بین نره. این کار معمولا با Write-Ahead Logging (WAL) انجام میشه.
تو دنیای واقعی گاهی باید بین این خصوصیات تعادل برقرار کرد. مثلا NoSQLها معمولا از مدل BASE استفاده میکنن که Basically Available, Soft State, Eventually Consistent هستش و سازگاری کمتری داره ولی در عوض مقیاسپذیری (Scalability) بیشتری داره.
PostgreSQL یکی از بهترین پیادهسازیهای ACID رو داره و میتونه همه سطوح Isolation رو ساپورت کنه. MySQL هم ACID رو پشتیبانی میکنه ولی فقط با موتور InnoDB، موتور MyISAM این قابلیت رو نداره.
یه نکته جالب اینه که پیادهسازی ACID روی عملکرد (Performance) دیتابیس تاثیر منفی میذاره. به همین خاطر بعضی سیستمها مثل Redis از تکنیکهای خاصی مثل AOF (Append-Only File) استفاده میکنن تا تعادل بهتری بین کارایی و تضمینهای ACID برقرار کنن.
#نرم_افزار #علوم_کامپیوتر #نوشته
~> @PinkOrca🩷
ACID یه سری خصوصیات کلیدی هستش که تو دیتابیسهای رابطهای برای تضمین صحت تراکنشها (Transactions) استفاده میشه. این مفهوم اولین بار سال 1983 توسط Theo Härder و Andreas Reuter معرفی شد.
حالا ACID مخفف چیه؟!⬇️
Atomicity (اتمی بودن): یعنی یه تراکنش یا باید کامل انجام بشه یا اصلا انجام نشه. مثلا وقتی پول از یه حساب بانکی به حساب دیگه منتقل میشه، یا باید هم کم شدن از حساب اول و هم اضافه شدن به حساب دوم انجام بشه، یا هیچکدوم انجام نشه. حالت نصفه و نیمه نداریم. اگه وسط کار مشکلی پیش بیاد، عملیات Rollback میشه.
Consistency (سازگاری): یعنی دیتابیس باید همیشه تو حالت معتبر (valid) باشه، چه قبل تراکنش و چه بعدش. مثلا اگه قانون داریم که موجودی حساب نباید منفی بشه، هیچ تراکنشی نمیتونه این قانون رو نقض کنه. اگه تراکنشی بخواد این کار رو بکنه، کامل کنسل میشه.
Isolation (انزوا): یعنی تراکنشهای همزمان نباید روی هم تاثیر بذارن. مثلا اگه دو نفر همزمان از یه حساب برداشت میکنن، سیستم باید طوری مدیریت کنه که نتیجه نهایی درست باشه. این کار با مکانیزمهای مختلف Locking انجام میشه.
سطوح مختلف Isolation وجود داره:
- Read Uncommitted: کمترین سطح ایزوله بودن.
- Read Committed: فقط تغییرات تایید شده دیده میشن.
- Repeatable Read: خوندنهای تکراری نتیجه یکسان میدن.
- Serializable: بالاترین سطح ایزوله بودن.
Durability (ماندگاری): یعنی وقتی تراکنشی موفق انجام شد (Commit شد)، تغییراتش باید دائمی باشه و حتی با قطع برق یا کرش سیستم هم از بین نره. این کار معمولا با Write-Ahead Logging (WAL) انجام میشه.
تو دنیای واقعی گاهی باید بین این خصوصیات تعادل برقرار کرد. مثلا NoSQLها معمولا از مدل BASE استفاده میکنن که Basically Available, Soft State, Eventually Consistent هستش و سازگاری کمتری داره ولی در عوض مقیاسپذیری (Scalability) بیشتری داره.
PostgreSQL یکی از بهترین پیادهسازیهای ACID رو داره و میتونه همه سطوح Isolation رو ساپورت کنه. MySQL هم ACID رو پشتیبانی میکنه ولی فقط با موتور InnoDB، موتور MyISAM این قابلیت رو نداره.
یه نکته جالب اینه که پیادهسازی ACID روی عملکرد (Performance) دیتابیس تاثیر منفی میذاره. به همین خاطر بعضی سیستمها مثل Redis از تکنیکهای خاصی مثل AOF (Append-Only File) استفاده میکنن تا تعادل بهتری بین کارایی و تضمینهای ACID برقرار کنن.
#نرم_افزار #علوم_کامپیوتر #نوشته
~> @PinkOrca
Please open Telegram to view this post
VIEW IN TELEGRAM
Audio
رادیوجادی ۱۷۹ - کیلومتر آخر، هکر بین المللی برزیلی، ترمینال اندروید، استارلینک و دسترسی پذیری دیوار
در رادیو جادی شماره ۱۷۹، سریع هستیم. از هکری میگیم که در برزیل دستگیر شده، سری به اندروید میزنیم و سرعت استارلینک و بحث رو با دسترسی پذیری و اهمیتش میبندیم. با هم باشیم؛ حتی اگر کوتاهیم.
00:00 - رادیو جادی ۱۷۹
01:11 - دستگیری هکر بین المللی در برزیل
09:45 - اندروید ۱۶ احتمالا دارای یه ترمینال واقعی لینوکس خواهد بود
14:28 - استارلینک ویژه سرویس دهنده ها به دیگران
17:40 - بحث دسترسی پذیری اپ ها و درگاهها با تشکر از دیوار
20:19 - بخش آخر
https://youtu.be/MTg2YqDA4H0
#پادکست
در رادیو جادی شماره ۱۷۹، سریع هستیم. از هکری میگیم که در برزیل دستگیر شده، سری به اندروید میزنیم و سرعت استارلینک و بحث رو با دسترسی پذیری و اهمیتش میبندیم. با هم باشیم؛ حتی اگر کوتاهیم.
00:00 - رادیو جادی ۱۷۹
01:11 - دستگیری هکر بین المللی در برزیل
09:45 - اندروید ۱۶ احتمالا دارای یه ترمینال واقعی لینوکس خواهد بود
14:28 - استارلینک ویژه سرویس دهنده ها به دیگران
17:40 - بحث دسترسی پذیری اپ ها و درگاهها با تشکر از دیوار
20:19 - بخش آخر
https://youtu.be/MTg2YqDA4H0
#پادکست
Forwarded from Go Casts 🚀
معرفی یه دوره ناب
چهار سال پیش به توصیه استاد عزیز مصطفی جان صولتی شروع کردم به دیدن دوره ویدیویی uncle bob
و نمیتونم بگم دیدن این دوره، حتی در حد ۱۰، ۱۵ جلسه اولش، چقدر به شما دید خوبی میده در مورد مسائل مختلف مهندسی نرم افزار
این دوره رو نبینید که نکاتش رو حفظ کنید، این دوره رو ببینید که از قدرت تحلیل بهره مند بشید.
اصلا مهم نیست چقدر uncle bob رو قبول دارید یا نه، و اصلا مهم نیست که در نهایت قبولش خواهید داشت یا نه، مهم اینه که شنیدن حرف هاش به عنوان یه برنامه نویس با تجربه به شما قدرت تحلیل میده، حتی اگه در نهایت خروجی تحلیل شما باهاش متفاوت بشه، مهم بهره مند شدن از قدرت تحلیل هست و نه خروجی تحلیل…
اون موقع وقت و حوصله بیشتر بود و نکته برداری میکردم و تحلیل میکردم، به همه تون دیدن این سری ویدیویی رو توصیه میکنم
https://cleancoders.com/library/all
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515
@gocasts
#uncle_bob #clean_architecture #clean_code #software
چهار سال پیش به توصیه استاد عزیز مصطفی جان صولتی شروع کردم به دیدن دوره ویدیویی uncle bob
و نمیتونم بگم دیدن این دوره، حتی در حد ۱۰، ۱۵ جلسه اولش، چقدر به شما دید خوبی میده در مورد مسائل مختلف مهندسی نرم افزار
این دوره رو نبینید که نکاتش رو حفظ کنید، این دوره رو ببینید که از قدرت تحلیل بهره مند بشید.
اصلا مهم نیست چقدر uncle bob رو قبول دارید یا نه، و اصلا مهم نیست که در نهایت قبولش خواهید داشت یا نه، مهم اینه که شنیدن حرف هاش به عنوان یه برنامه نویس با تجربه به شما قدرت تحلیل میده، حتی اگه در نهایت خروجی تحلیل شما باهاش متفاوت بشه، مهم بهره مند شدن از قدرت تحلیل هست و نه خروجی تحلیل…
اون موقع وقت و حوصله بیشتر بود و نکته برداری میکردم و تحلیل میکردم، به همه تون دیدن این سری ویدیویی رو توصیه میکنم
https://cleancoders.com/library/all
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515
@gocasts
#uncle_bob #clean_architecture #clean_code #software
Forwarded from Laravel News
Check Env Variables Across All .env Files https://laravel-news.com/laravel-env-keys-checker
Laravel News
Check Env Variables Across All .env Files - Laravel News
The Laravel Env Keys Checker package checks if all keys are available across all .env files. This is useful if you have multiple .env files and want to ensure that all values are present.
Forwarded from کانال اطلاعرسانی توزیع پارچ
چینش ها به پارچ گنوم میآیند!
به زودی در پارچ گنوم قادر خواهید بود تا میان ۴ چینش پیشفرض انتخاب کنید.
این چینش ها عبارتند از:
- Windows 11 Style
- Unity Style
- Parch Style
- Stock Gnome
@ParchLinux
به زودی در پارچ گنوم قادر خواهید بود تا میان ۴ چینش پیشفرض انتخاب کنید.
این چینش ها عبارتند از:
- Windows 11 Style
- Unity Style
- Parch Style
- Stock Gnome
@ParchLinux
Forwarded from Laravel News
Laravel performance monitoring in Honeybadger https://laravel-news.com/honeybadger-laravel-performance-monitoring
Laravel News
Laravel performance monitoring in Honeybadger - Laravel News
Learn how to improve the performance of your Laravel applications in Honeybadger Insights—our new logging and performance monitoring tool.
Forwarded from IRCF | اینترنت آزاد برای همه
اپ Purlite که اخیرا برای سیستمعامل اندروید عرضه شده، یک فیلترشکن ساده و رایگان برای دورزدن فیلترینگ هست، که از مخازن کانفیگ رایگان استفاده کرده و از امکان تعریف لیستسیاه برنامهها برخورداره.
اینفیلترشکن بهطور متنباز منتشر شده و با گیتهاباکشنز بیلد گرفته میشه.
👉 github.com/davudsedft/purlite/releases/latest
🔍 ircf.space/software
@ircfspace
اینفیلترشکن بهطور متنباز منتشر شده و با گیتهاباکشنز بیلد گرفته میشه.
👉 github.com/davudsedft/purlite/releases/latest
🔍 ircf.space/software
@ircfspace
Forwarded from DevTwitter | توییت برنامه نویسی
یه اسکریپت پایتون نوشتم که خیلی سریع و راحت میشه سایز queue ها و topicهای روی سرویس باس Azure روی ترمینال مانیتور کرد.
راه های دیگه هم داره، ولی من یه چیز ساده و مخصوص ترمینال میخواستم تا توی کارم ازش استفاده کنم.
https://github.com/imaun/servicebus-size-monitor
@DevTwitter | <imun/>
راه های دیگه هم داره، ولی من یه چیز ساده و مخصوص ترمینال میخواستم تا توی کارم ازش استفاده کنم.
https://github.com/imaun/servicebus-size-monitor
@DevTwitter | <imun/>
Forwarded from LearnPOV | لرن پی او وی
💻 #مسابقه 🎮
فکر کن بهت این اجازه رو دادن که با هر زبان، فریمورک و لایبرری که میخوای خونه خودت رو بسازی 🏠
بین بهترین جواب ها رای گیری میزارم ببینم خونه کی درست حسابی تره 😎🔥
فکر کن بهت این اجازه رو دادن که با هر زبان، فریمورک و لایبرری که میخوای خونه خودت رو بسازی 🏠
استفاده از هر زبان و یا فریمورکی آزاده توی هر حوزه ای ؛)
ترکیب درست و منطقی از ابزارها و لایبرریها امتیاز بالاتری داره 🔥
توضیح در مورد جذئیات و دلیل ترکیبی که چیدید هم امتیاز مثبت داره ✅
بین بهترین جواب ها رای گیری میزارم ببینم خونه کی درست حسابی تره 😎🔥
#️⃣ #question #fun
🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Forwarded from DevTwitter | توییت برنامه نویسی
در لاراول، به جای اینکه خودمون بیایم و شناسههای مدلها رو دستی مقایسه کنیم، بهتره از روابطی که بین مدلها تعریف کردیم استفاده کنیم. اینجوری هم کدمون تمیزتر و خواناتر میشه، هم استانداردتر و حرفهایتر!
مثلاً فرض کن میخوایم یه پست رو بر اساس دستهبندی و نویسندهاش پیدا کنیم. به جای اینکه شناسهها رو اینطوری چک کنیم:
میتونیم از متدهای خفن لاراول مثل
یا مثلاً برای اینکه ببینیم نویسنده یه پست همون کاربری هست که ما میخوایم، به جای اینکه شناسهها رو مستقیم مقایسه کنیم:
خیلی راحت میتونیم از رابطه استفاده کنیم:
اینجوری کدمون سادهتر و شیکتر میشه و از امکانات قوی لاراول هم به بهترین شکل ممکن استفاده میکنیم!
@DevTwitter | <Firoozeh Daeizadeh/>
مثلاً فرض کن میخوایم یه پست رو بر اساس دستهبندی و نویسندهاش پیدا کنیم. به جای اینکه شناسهها رو اینطوری چک کنیم:
Post::where('category_id', $category->id)
->where('author_id', $user->id)
->first();میتونیم از متدهای خفن لاراول مثل
whereBelongsTo استفاده کنیم که خودش باهوشه و از روابط تعریفشده استفاده میکنه:Post::whereBelongsTo($category)
->whereBelongsTo($user, 'author')
->first();
یا مثلاً برای اینکه ببینیم نویسنده یه پست همون کاربری هست که ما میخوایم، به جای اینکه شناسهها رو مستقیم مقایسه کنیم:
$post->author_id == $user->id;
خیلی راحت میتونیم از رابطه استفاده کنیم:
$post->author()->is($user);
اینجوری کدمون سادهتر و شیکتر میشه و از امکانات قوی لاراول هم به بهترین شکل ممکن استفاده میکنیم!
@DevTwitter | <Firoozeh Daeizadeh/>
Forwarded from Python BackendHub (Mani)
خیلی وقت پیش یکی تو گروه پرسید چطور با زبونای دیگه مثل rust برای پایتون لایبری مینویسن.
منم جوابشونو دادم ولی یادم رفت بفرستم تو کانال. برای همین پست بعدیو به این موضوع اختصاص میدم.
منم جوابشونو دادم ولی یادم رفت بفرستم تو کانال. برای همین پست بعدیو به این موضوع اختصاص میدم.