🐳 تیلویند ۴ ریلیز شد!
- موتور جدیدی به نام Oxide در این نسخه معرفی شده است که عملکرد و سرعت پروژهها را به شکل چشمگیری بهبود میدهد.(خودشون گفتن تا ۵ برابر)
- پیکربندی پروژهها از JavaScript به CSS منتقل شده است. این تغییر انعطافپذیری بیشتری برای توسعهدهندگان فراهم میکند.
- پشتیبانی از ویژگیهای مدرن CSS مانند کوئریهای کانتینر و پالت رنگی P3 به نسخه ۴ اضافه شده است.
- بهبودهای عملکردی در موتور جدید، سرعت ساخت و توسعه پروژهها را افزایش داده است.
- ویژگی جدید لایههای آبشاری (Cascade Layers) امکان کنترل دقیقتر استایلها را فراهم کرده است.
🔗 مستندات کامل تیلویند ۴
🔗 ویژگیهای نسخه بتای تیلویند ۴ در Code News
🔗 تحلیل نسخه ۴ تیلویند در وبلاگ مهرداد ترکم
🔗 معرفی ویژگیهای مدرن تیلویند ۴ در Code Explore
🔗 بررسیCascade Layers در نسخه ۴ در ویرگول
🔗 ویدئوی معرفی ویژگیهای جدید تیلویند ۴
#آموزشی #مهم
@codeaghajcs
- موتور جدیدی به نام Oxide در این نسخه معرفی شده است که عملکرد و سرعت پروژهها را به شکل چشمگیری بهبود میدهد.(خودشون گفتن تا ۵ برابر)
- پیکربندی پروژهها از JavaScript به CSS منتقل شده است. این تغییر انعطافپذیری بیشتری برای توسعهدهندگان فراهم میکند.
- پشتیبانی از ویژگیهای مدرن CSS مانند کوئریهای کانتینر و پالت رنگی P3 به نسخه ۴ اضافه شده است.
- بهبودهای عملکردی در موتور جدید، سرعت ساخت و توسعه پروژهها را افزایش داده است.
- ویژگی جدید لایههای آبشاری (Cascade Layers) امکان کنترل دقیقتر استایلها را فراهم کرده است.
🔗 مستندات کامل تیلویند ۴
🔗 ویژگیهای نسخه بتای تیلویند ۴ در Code News
🔗 تحلیل نسخه ۴ تیلویند در وبلاگ مهرداد ترکم
🔗 معرفی ویژگیهای مدرن تیلویند ۴ در Code Explore
🔗 بررسیCascade Layers در نسخه ۴ در ویرگول
🔗 ویدئوی معرفی ویژگیهای جدید تیلویند ۴
#آموزشی #مهم
@codeaghajcs
👍3
Forwarded from یه آدم عادی (ArshA)
یه تعداد مغالطه ی منطقی آوردم، دور هم بخونیم شاید به دردمون خورد:
قبل از شروع احتمالا اسم مغالطه، مغلطه یا سفسطه رو شنیده باشید. به طور خلاصه یعنی خطاهایی که در عملیات های فکری رخ میدهد یا ممکن است رخ بدهد. ساده ترین مثالش که همیشه بهش اشاره میشه نمونه ی استدلال در باز و پرنده بازه
در باز است
باز یک پرنده است
پس در یک پرنده است.
استدلال بالا یه مغالطه توی ساختار براش رخ داده و مفهوم اشتباهی رو به وجود اورده. از نظر ظاهری درسته ولی به مفهوم آسیب زده.
۱. مغالطه توسل به شخص (Ad Hominem)
حمله به شخصیت فرد به جای استدلال او.
مثال: «نظر او دربارهٔ محیط زیست مهم نیست، چون او خودش ثروتمند است.»
۲. مغالطه توسل به اکثریت (Appeal to Popularity)
ادعا که چیزی درست است چون بسیاری از مردم آن را باور دارند.
مثال: «همه این محصول را میخرند، پس حتماً خوب است.»
۳. مغالطه توسل به اقتدار (Appeal to Authority)
استفاده از نظر یک فرد متخصص در زمینهای نامرتبط به عنوان دلیل.
مثال: «این پزشک مشهور میگوید این محصول غذایی سالم است، پس حتماً درست است.»
۴. مغالطه علت نادرست (False Cause)
فرض ارتباط علّی بین دو رویداد بدون شواهد کافی.
مثال: «از وقتی این کلاه را خریدهام، باران میبارد. پس این کلاه باعث باران است.»
۵. مغالطه سیاه و سفید (False Dilemma)
ارائه تنها دو گزینه در حالی که گزینههای بیشتری وجود دارد.
مثال: «یا با ما هستید، یا علیه ما.»
۶. مغالطه توهین عام (Hasty Generalization)
نتیجهگیری کلی بر اساس نمونههای محدود یا ناکافی.
مثال: «دو نفر از همسایههایم بیکار هستند، پس اقتصاد کشور در حال فروپاشی است.»
۷. مغالطه دوری (Circular Reasoning)
استفاده از نتیجه به عنوان دلیل برای اثبات همان نتیجه.
مثال: «او قابل اعتماد است چون قابل اعتماد است.»
۸. مغالطه توسل به احساسات (Appeal to Emotion)
استفاده از احساسات به جای استدلال منطقی.
مثال: «اگر به این قانون رای ندهید، کودکان بیگناه رنج خواهند کشید.»
۹. مغالطه انحراف موضوع (Red Herring)
معرفی یک موضوع نامرتبط برای منحرف کردن توجه از موضوع اصلی.
مثال: «چرا دربارهٔ فساد صحبت میکنید؟ وضعیت اقتصادی کشور بهتر شده است.»
۱۰. مغالطه ترکیب (Composition)
فرض اینکه ویژگیهای اجزای یک کل، لزوماً به کل نیز منتقل میشود.
مثال: «هر بازیکن این تیم عالی است، پس تیم حتماً قهرمان میشود.»
۱۱. مغالطه تقسیم (Division)
فرض اینکه ویژگیهای کل لزوماً به اجزای آن نیز منتقل میشود.
مثال: «این تیم قهرمان است، پس هر بازیکن آن بهترین است.»
۱۲. مغالطه توهین به زبان (Straw Man)
تحریف استدلال طرف مقابل به شکل ضعیفتر برای راحتتر رد کردن آن.
مثال: «او گفت باید به محیط زیست توجه کنیم، پس یعنی میخواهد صنعت را نابود کند.»
۱۳. مغالطه تکرار (Begging the Question)
فرض نتیجه در دل استدلال بدون ارائه دلیل.
مثال: «او بهترین است چون هیچکس بهتر از او نیست.»
۱۴. مغالطه انکار (Slippery Slope)
ادعا که یک اقدام کوچک منجر به پیامدهای بزرگ و فاجعهبار خواهد شد.
مثال: «اگر امروز دیر به خانه بیایی، فردا ممکن است اصلاً به خانه نیایی.»
۱۵. مغالطه مقایسه نادرست (False Analogy)
استفاده از یک مقایسه نامناسب برای اثبات یک ادعا.
مثال: «دانشآموزان مانند درخت هستند، پس باید به آنها زیاد آب داد.»
@y_adam_adi
قبل از شروع احتمالا اسم مغالطه، مغلطه یا سفسطه رو شنیده باشید. به طور خلاصه یعنی خطاهایی که در عملیات های فکری رخ میدهد یا ممکن است رخ بدهد. ساده ترین مثالش که همیشه بهش اشاره میشه نمونه ی استدلال در باز و پرنده بازه
در باز است
باز یک پرنده است
پس در یک پرنده است.
استدلال بالا یه مغالطه توی ساختار براش رخ داده و مفهوم اشتباهی رو به وجود اورده. از نظر ظاهری درسته ولی به مفهوم آسیب زده.
۱. مغالطه توسل به شخص (Ad Hominem)
حمله به شخصیت فرد به جای استدلال او.
مثال: «نظر او دربارهٔ محیط زیست مهم نیست، چون او خودش ثروتمند است.»
۲. مغالطه توسل به اکثریت (Appeal to Popularity)
ادعا که چیزی درست است چون بسیاری از مردم آن را باور دارند.
مثال: «همه این محصول را میخرند، پس حتماً خوب است.»
۳. مغالطه توسل به اقتدار (Appeal to Authority)
استفاده از نظر یک فرد متخصص در زمینهای نامرتبط به عنوان دلیل.
مثال: «این پزشک مشهور میگوید این محصول غذایی سالم است، پس حتماً درست است.»
۴. مغالطه علت نادرست (False Cause)
فرض ارتباط علّی بین دو رویداد بدون شواهد کافی.
مثال: «از وقتی این کلاه را خریدهام، باران میبارد. پس این کلاه باعث باران است.»
۵. مغالطه سیاه و سفید (False Dilemma)
ارائه تنها دو گزینه در حالی که گزینههای بیشتری وجود دارد.
مثال: «یا با ما هستید، یا علیه ما.»
۶. مغالطه توهین عام (Hasty Generalization)
نتیجهگیری کلی بر اساس نمونههای محدود یا ناکافی.
مثال: «دو نفر از همسایههایم بیکار هستند، پس اقتصاد کشور در حال فروپاشی است.»
۷. مغالطه دوری (Circular Reasoning)
استفاده از نتیجه به عنوان دلیل برای اثبات همان نتیجه.
مثال: «او قابل اعتماد است چون قابل اعتماد است.»
۸. مغالطه توسل به احساسات (Appeal to Emotion)
استفاده از احساسات به جای استدلال منطقی.
مثال: «اگر به این قانون رای ندهید، کودکان بیگناه رنج خواهند کشید.»
۹. مغالطه انحراف موضوع (Red Herring)
معرفی یک موضوع نامرتبط برای منحرف کردن توجه از موضوع اصلی.
مثال: «چرا دربارهٔ فساد صحبت میکنید؟ وضعیت اقتصادی کشور بهتر شده است.»
۱۰. مغالطه ترکیب (Composition)
فرض اینکه ویژگیهای اجزای یک کل، لزوماً به کل نیز منتقل میشود.
مثال: «هر بازیکن این تیم عالی است، پس تیم حتماً قهرمان میشود.»
۱۱. مغالطه تقسیم (Division)
فرض اینکه ویژگیهای کل لزوماً به اجزای آن نیز منتقل میشود.
مثال: «این تیم قهرمان است، پس هر بازیکن آن بهترین است.»
۱۲. مغالطه توهین به زبان (Straw Man)
تحریف استدلال طرف مقابل به شکل ضعیفتر برای راحتتر رد کردن آن.
مثال: «او گفت باید به محیط زیست توجه کنیم، پس یعنی میخواهد صنعت را نابود کند.»
۱۳. مغالطه تکرار (Begging the Question)
فرض نتیجه در دل استدلال بدون ارائه دلیل.
مثال: «او بهترین است چون هیچکس بهتر از او نیست.»
۱۴. مغالطه انکار (Slippery Slope)
ادعا که یک اقدام کوچک منجر به پیامدهای بزرگ و فاجعهبار خواهد شد.
مثال: «اگر امروز دیر به خانه بیایی، فردا ممکن است اصلاً به خانه نیایی.»
۱۵. مغالطه مقایسه نادرست (False Analogy)
استفاده از یک مقایسه نامناسب برای اثبات یک ادعا.
مثال: «دانشآموزان مانند درخت هستند، پس باید به آنها زیاد آب داد.»
@y_adam_adi
👍1
یه آدم عادی (ArshA)
یه تعداد مغالطه ی منطقی آوردم، دور هم بخونیم شاید به دردمون خورد: قبل از شروع احتمالا اسم مغالطه، مغلطه یا سفسطه رو شنیده باشید. به طور خلاصه یعنی خطاهایی که در عملیات های فکری رخ میدهد یا ممکن است رخ بدهد. ساده ترین مثالش که همیشه بهش اشاره میشه نمونه ی…
🐳 ما اینجا معمولا در مورد نرمافزار حرف میزنیم
ولی این موارد هم مفیده واقعا که ما ها هم بدونیم
مثلا خیلی ممکنه مورد ۱۱ یا ۱۰ رو توی درآوردن باگ یک چیزی یا قضاوت در مورد یه پکیج یا زبانی استفاده کنیم
مثلا یه چیزی که مورد ۱۰ داره اینه که لزوما پرفرومنس برنامه ای خوب نیست که همه فانکشن هاش سریع باشن
ممکنه شما یه برنامه داشته باشی که فانکشن هاش اونقدر هم رویایی نباشن از لحاظ پیچیدگی زمانی ولی دارن کنار هم درست کار میکنن
یا مثلا شما ممکنه اونقدر خوب تست نوشته باشی و codecoverage بالایی هم داشته باشی ولی باز ببینی که سیستمت کار نمیکنه
گرچه این مورد توی یک فانکشن یکم غلط اندازه ولی اونجا هم میشه اینطور نگاه ها رو داشت
یا مثلا مورد ۸. ما خیلی خوشحال میشیم که پروژه های خوب رو قبل از ددلاین برسونیم، ولی این ممکنه باعث بشه یه چیز هایی رو تست نکنیم و...
مورد آخر هم که موقع یاد گرفتن الا ماشالله زیاد پیش.میاد علی الخصوص وقتی که دارین شئگرایی رو یاد میگیرین برای اولین بار
@codeaghajcs
ولی این موارد هم مفیده واقعا که ما ها هم بدونیم
مثلا خیلی ممکنه مورد ۱۱ یا ۱۰ رو توی درآوردن باگ یک چیزی یا قضاوت در مورد یه پکیج یا زبانی استفاده کنیم
مثلا یه چیزی که مورد ۱۰ داره اینه که لزوما پرفرومنس برنامه ای خوب نیست که همه فانکشن هاش سریع باشن
ممکنه شما یه برنامه داشته باشی که فانکشن هاش اونقدر هم رویایی نباشن از لحاظ پیچیدگی زمانی ولی دارن کنار هم درست کار میکنن
یا مثلا شما ممکنه اونقدر خوب تست نوشته باشی و codecoverage بالایی هم داشته باشی ولی باز ببینی که سیستمت کار نمیکنه
گرچه این مورد توی یک فانکشن یکم غلط اندازه ولی اونجا هم میشه اینطور نگاه ها رو داشت
یا مثلا مورد ۸. ما خیلی خوشحال میشیم که پروژه های خوب رو قبل از ددلاین برسونیم، ولی این ممکنه باعث بشه یه چیز هایی رو تست نکنیم و...
مورد آخر هم که موقع یاد گرفتن الا ماشالله زیاد پیش.میاد علی الخصوص وقتی که دارین شئگرایی رو یاد میگیرین برای اولین بار
@codeaghajcs
👍1
Forwarded from Faridreza
برای اینکه تمیز تر و حرفه ای کد بزنید پیشنهاد میکنم Best Practices های زبانی که باش کار میکنید رو بخونید 💠
🔻 @iFaridreza
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Faridreza
برای اینکه تمیز تر و حرفه ای کد بزنید پیشنهاد میکنم Best Practices های زبانی که باش کار میکنید رو بخونید 💠 🔻 @iFaridreza
و البته معمول ترین روش های دیزاین کد و اسم گذاری و....
گرچه مهم نیته 😁👌
گرچه مهم نیته 😁👌
1❤1
🐳 ویکی لایسنس
- سایت جالبی بود گفتم بزارمش اینجا. اومده یه سری مقاله در مورد لایسنس های MIT و GPL و Mozila و Apache رو به اضافه Unlicence نوشته و خیلی خوب توضیح داده فرق هاشون چیه (توی این عکس هم میتونید ببینید فرق لایسنس ها توی چی هست). کلا چیز خوبیه !
🔗 ویکی لایسنس
#اوپن_سورس
@codeaghajcs
- سایت جالبی بود گفتم بزارمش اینجا. اومده یه سری مقاله در مورد لایسنس های MIT و GPL و Mozila و Apache رو به اضافه Unlicence نوشته و خیلی خوب توضیح داده فرق هاشون چیه (توی این عکس هم میتونید ببینید فرق لایسنس ها توی چی هست). کلا چیز خوبیه !
🔗 ویکی لایسنس
#اوپن_سورس
@codeaghajcs
👍1
🐳 ویژگیهای جدید CSS و Tailwind CSS 4
در سال ۲۰۲۴، CSS با ویژگیهای جدید و ابزارهای پیشرفتهتری ارائه شد که طراحی های وب رو خیلی دقیق تر و منعطف تر کرد. قول داده بودم که بررسیشون کنم و حالا که تیلویند 4 هم اومده، این ها رو در تیلویند 4 و ونیلا با هم بررسی میکنیم.
- کوئری کانتینر (Container Queries)
- ویژگی: امکان استایلدهی به عناصر بر اساس اندازۀ والد (container یا همان تگی که تگ فعلی داخل اون قرار داره) به جای اندازه کل صفحه، که طراحیهای واکنشپذیر را دقیقتر و پیچیدهتر میکند. این ویژگی به شما اجازه میده که استایلها رو بر اساس تغییرات اندازه یک کانتینر تغییر بدید، نه صرفاً اندازه کل صفحه. مثل همون تگ media query هست و دقیقا هم کاربردشون یکیه، فقط ایشون نسبت به والد کار میکنن نه بر اساس اندازه کل صفحه.
- مثال در Vanilla CSS:
- مثال در Tailwind 4:
در Tailwind 4 برای استفاده از کوئری کانتینر، از ویژگی
- CSS Nesting
- ویژگی: امکان نوشتن استایلها به صورت تو در تو برای سازماندهی بهتر کد. دیگه لازم نیست یک سلکتور جدا برای child هایی که میخوایم بنویسیم، بجاش میتونیم توی همون براکت های تگ والد، اسم تگ child رو بیاریم و یه براکت بزنیم و استایل بدیم
- مثال در Vanilla CSS:
- توی تیلویند خیلی فرقی نمیکنه چون از postcss استفاده میکنه میتونید خیلی راحت توی فایل های css از Nesting استفاده کنید.
- انتخابگر `:has()`
- ویژگی: انتخاب تگ والد، بر اساس وجود داشتن یا وجود نداشتن فرزند.
- مثال در Vanilla CSS:
- مثال در Tailwind 4: در حال حاضر، Tailwind مستقیماً از این ویژگی پشتیبانی نمیکنه ولی میتونید توی فایل های css ازش استفاده کنید. (واقعا باید ایده خلاقانه ای برای استفاده از has توی کلاس ها داشته باشن!)
- انیمیشنهای اسکرولمحور
- ویژگی: انیمیشنهایی که با اسکرول کاربر فعال میشوند. قبلا این ها رو با کتابخونهه ایی مثل scroll magic و... پیاده میکردیم.
- مثال در Vanilla CSS:
- مثال در Tailwind 4:
- بهبود متغیرهای CSS
- ویژگی: تعریف متغیرهای CSS با ویژگیهایی مانند نوع داده، مقدار اولیه و وراثت.
- مثال در Vanilla CSS:
- توی تیلویند هم خیلی فرق نمیکنه مثل همون has، اینم میتونید استفاده کنید
- سابگرید (Subgrid)
- ویژگی: ایجاد سابگرید در CSS Grid که با گرید اصلی همتراز میشود.
- مثال در Vanilla CSS:
- مثال در Tailwind 4: من چیزی توی مستندات Tailwind برای پشتیبانی از
🔗 مستندات تیلویند در مورد ویژگی های جدیدش که حتما بخونیدش
🔗 مقاله MDN در مورد Container Query
🔗 رویداد google io که درمورد آینده CSS و UI وب هست
#آموزشی #مهم
@codeaghajcs
در سال ۲۰۲۴، CSS با ویژگیهای جدید و ابزارهای پیشرفتهتری ارائه شد که طراحی های وب رو خیلی دقیق تر و منعطف تر کرد. قول داده بودم که بررسیشون کنم و حالا که تیلویند 4 هم اومده، این ها رو در تیلویند 4 و ونیلا با هم بررسی میکنیم.
- کوئری کانتینر (Container Queries)
- ویژگی: امکان استایلدهی به عناصر بر اساس اندازۀ والد (container یا همان تگی که تگ فعلی داخل اون قرار داره) به جای اندازه کل صفحه، که طراحیهای واکنشپذیر را دقیقتر و پیچیدهتر میکند. این ویژگی به شما اجازه میده که استایلها رو بر اساس تغییرات اندازه یک کانتینر تغییر بدید، نه صرفاً اندازه کل صفحه. مثل همون تگ media query هست و دقیقا هم کاربردشون یکیه، فقط ایشون نسبت به والد کار میکنن نه بر اساس اندازه کل صفحه.
- مثال در Vanilla CSS:
.container {
container-type: inline-size;
}
.child {
width: 100%;
}
@container (min-width: 600px) {
.child {
width: 50%;
}
}
- مثال در Tailwind 4:
در Tailwind 4 برای استفاده از کوئری کانتینر، از ویژگی
container
همراه با کلاسهای مناسب برای استایلدهی استفاده میکنید:<div class="@container">
<div class="flex flex-row @sm:@max-md:flex-col">
<!-- ... -->
</div>
</div>
- CSS Nesting
- ویژگی: امکان نوشتن استایلها به صورت تو در تو برای سازماندهی بهتر کد. دیگه لازم نیست یک سلکتور جدا برای child هایی که میخوایم بنویسیم، بجاش میتونیم توی همون براکت های تگ والد، اسم تگ child رو بیاریم و یه براکت بزنیم و استایل بدیم
- مثال در Vanilla CSS:
parent {
/* parent styles */
& child {
/* child of parent styles */
}
}
- توی تیلویند خیلی فرقی نمیکنه چون از postcss استفاده میکنه میتونید خیلی راحت توی فایل های css از Nesting استفاده کنید.
- انتخابگر `:has()`
- ویژگی: انتخاب تگ والد، بر اساس وجود داشتن یا وجود نداشتن فرزند.
- مثال در Vanilla CSS:
form:has(input:invalid) {
border-color: red;
}
- مثال در Tailwind 4: در حال حاضر، Tailwind مستقیماً از این ویژگی پشتیبانی نمیکنه ولی میتونید توی فایل های css ازش استفاده کنید. (واقعا باید ایده خلاقانه ای برای استفاده از has توی کلاس ها داشته باشن!)
- انیمیشنهای اسکرولمحور
- ویژگی: انیمیشنهایی که با اسکرول کاربر فعال میشوند. قبلا این ها رو با کتابخونهه ایی مثل scroll magic و... پیاده میکردیم.
- مثال در Vanilla CSS:
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.scroll-element {
animation: fadeIn 1s scroll-timeline(scroll);
}
- مثال در Tailwind 4:
<div class="animate-fadeIn scroll-timeline">
<!-- محتوا -->
</div>
- بهبود متغیرهای CSS
- ویژگی: تعریف متغیرهای CSS با ویژگیهایی مانند نوع داده، مقدار اولیه و وراثت.
- مثال در Vanilla CSS:
:root {
--main-color: #3498db;
}
.button {
background-color: var(--main-color);
}
- توی تیلویند هم خیلی فرق نمیکنه مثل همون has، اینم میتونید استفاده کنید
- سابگرید (Subgrid)
- ویژگی: ایجاد سابگرید در CSS Grid که با گرید اصلی همتراز میشود.
- مثال در Vanilla CSS:
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
.item {
display: subgrid;
grid-column: span 2;
}
- مثال در Tailwind 4: من چیزی توی مستندات Tailwind برای پشتیبانی از
subgrid
ندیدم.🔗 مستندات تیلویند در مورد ویژگی های جدیدش که حتما بخونیدش
🔗 مقاله MDN در مورد Container Query
🔗 رویداد google io که درمورد آینده CSS و UI وب هست
#آموزشی #مهم
@codeaghajcs
🔥2👍1
🐳 کتابخونه هایی برای کار کردن با زبان طبیعی انسان در زبان گو | Libraries for working with human languages.
- سایت Awsome Go کلی لیست از کلی کتابخونه برای کار های مختلف در Golang داره و این لیستش واقعا بدرد من خورد.
🔗 Natural Language Processing - Awesome Go
🔗 Awesome Go 👈 صفحه اولشو ببینین
#آموزشی
@codeaghajcs
- سایت Awsome Go کلی لیست از کلی کتابخونه برای کار های مختلف در Golang داره و این لیستش واقعا بدرد من خورد.
اگر میدونین که بدردتون میخوره، یگن بیشتر در مورد NLP مطلب بزارم. حقیقتش اخیرا خیلی دلم میخواد یه جهتی بدم به جریان یه سری پست آموزشی توی کانال (بجز لینک مقاله هایی که میزارم)
🔗 Natural Language Processing - Awesome Go
🔗 Awesome Go 👈 صفحه اولشو ببینین
#آموزشی
@codeaghajcs
👍1
🐳 کاربرد های Dock Typing در دنیای واقعی
- یکی از دوستان یه سوالی پرسید یه جایی و منم به این فکر افتادم که Dock Typing (مثل interface های زبان go) کجا ها توی پروژه های مختلف کمک آدم میکنه ؟
- ساده ترین مثالش، User و Admin User هست. شما چه Admin باشی چه یوزر معمولی باشی، میتونی توی یک گروه تلگرامی مثلا پیام بدی (اگر دسترسیتو نبنده کسی البته)
- حالا کافیه که وقتی میخواید توی گروه پیام بدید، تایپ پارامتر ورودی تابع رو از User بگیرید و مطمئین بشید که هرکس میاد، متد SendMessage رو داره !
- یکی از مثال هایی که رسید به ذهنم و یه جایی هم قبلا کار کردم باهاش، Load Balancer هستش. شما وقتی خیلی بزرگ میشید (مثل netflix و یوتیوب و فیلیمو و آپارات وP*rn Hub😄 که دارن ساعت ها ویدیو باکیفیت استریم میکنن) سرور های مختلفی برای کار های مختلف نیاز دارید (مثلا بکاپ و Cache) و همچنین اینکه باید بتونید ترافیک روی این سرورا بالانس کنید. همچنین توی مهندسی برق هم این اتفاق زیاد میوفتهو مثلا توی سیستم های کنترلی و پردازش سیگنال مثل رادار های پیچیده. (حتما رادار جت جنگنده نیست 😁)، Load Balancing بین پردازنده هایی که باید سیگنال ها رو تجذیه کنن اتفاق میوفته، همچنین توی مخابرات (ایرانسل و..) هم وقتی که سیستم خیلی بزرگ میشه، میان بین آنتن های یک منطقه توزیع بار (Load Blancing) انجام میدن که ترافیک بین ملت یکسان باشه!
- برای دیدن یک مثال عملی از این Load Balancing میتونید سورس پروژه X-Ray که به زبان go هم هست رو بخونید که میشه یه جورایی بنیان همین V2Ray هایی که داریم. یک سیستم خیلی جالب دارن که میان و node های شبکه سر راه پروکسی شما رو به دو دسته inbound و outbound تقسیم میکنن که هرکدوم کار های خودشون رو میکنن (نمیخوام وارد جزئیات شبکه ایش بشم) و خلاصه بگم که این یعنی باید درخواستا بین این outbound ها و inbound ها یه جور خاصی توزیع بشه! حتی برای مدیریت بار بین خود inbound ها و outbound ها هم باید یه چیزی باشه که مواظب باشه مثلا یک سرور inbound، بیشتر از بقیه روش فشار نیاد. این اینترفیس رو ببینید :
- یکم پیچیدست ساختارشون ولی اصلا مهم نیست برای ما، نکتش اینه که ممکن بوده چند جور Manager بخوان داشته باشن و مجبور میشن یه interface تعریف کنن که هر جا Manager بخوان مطمئن باشن اون چیزی که میاد، مثلا حتما متد
#آموزشی #مهم
@codeaghajcs
- یکی از دوستان یه سوالی پرسید یه جایی و منم به این فکر افتادم که Dock Typing (مثل interface های زبان go) کجا ها توی پروژه های مختلف کمک آدم میکنه ؟
- ساده ترین مثالش، User و Admin User هست. شما چه Admin باشی چه یوزر معمولی باشی، میتونی توی یک گروه تلگرامی مثلا پیام بدی (اگر دسترسیتو نبنده کسی البته)
type UserInGroup interface {
SendMessage(message string) bool
}
- حالا کافیه که وقتی میخواید توی گروه پیام بدید، تایپ پارامتر ورودی تابع رو از User بگیرید و مطمئین بشید که هرکس میاد، متد SendMessage رو داره !
- یکی از مثال هایی که رسید به ذهنم و یه جایی هم قبلا کار کردم باهاش، Load Balancer هستش. شما وقتی خیلی بزرگ میشید (مثل netflix و یوتیوب و فیلیمو و آپارات و
- برای دیدن یک مثال عملی از این Load Balancing میتونید سورس پروژه X-Ray که به زبان go هم هست رو بخونید که میشه یه جورایی بنیان همین V2Ray هایی که داریم. یک سیستم خیلی جالب دارن که میان و node های شبکه سر راه پروکسی شما رو به دو دسته inbound و outbound تقسیم میکنن که هرکدوم کار های خودشون رو میکنن (نمیخوام وارد جزئیات شبکه ایش بشم) و خلاصه بگم که این یعنی باید درخواستا بین این outbound ها و inbound ها یه جور خاصی توزیع بشه! حتی برای مدیریت بار بین خود inbound ها و outbound ها هم باید یه چیزی باشه که مواظب باشه مثلا یک سرور inbound، بیشتر از بقیه روش فشار نیاد. این اینترفیس رو ببینید :
type Manager interface {
features.Feature
// GetHandler returns an InboundHandler for the given tag.
GetHandler(ctx context.Context, tag string) (Handler, error)
// AddHandler adds the given handler into this Manager.
AddHandler(ctx context.Context, handler Handler) error
// RemoveHandler removes a handler from Manager.
RemoveHandler(ctx context.Context, tag string) error
}
- یکم پیچیدست ساختارشون ولی اصلا مهم نیست برای ما، نکتش اینه که ممکن بوده چند جور Manager بخوان داشته باشن و مجبور میشن یه interface تعریف کنن که هر جا Manager بخوان مطمئن باشن اون چیزی که میاد، مثلا حتما متد
AddHandler
رو داشته باشه. برای اینکه بیشتر بدونید به سورسشون یه نگاهی بندازید علی الخصوص این فایل که پیاده سازی مستقیم بالانسر هست.#آموزشی #مهم
@codeaghajcs
👍2
Forwarded from 🦞 Geek Engineers ([ Taha. Dostifam ])
Cyrus: A high-performance, statically-typed, manually memory-managed and procedural programming language empowered by GCCJIT. Made with Rust 🦀.
برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با دوستاتون شیر کنید خیلی خوشحال میشیم =) ❤️🤌🏿
Community:
@cyrus_lang
GitHub:
https://github.com/cyrus-lang/Cyrus-Lang
برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با دوستاتون شیر کنید خیلی خوشحال میشیم =) ❤️🤌🏿
Community:
@cyrus_lang
GitHub:
https://github.com/cyrus-lang/Cyrus-Lang