دیزاین پترن Facade در Golang
یکی از دیزاین پترن های جذاب و کاربردی، پترن Facade! شاید اسمش یه کم شیک به نظر بیاد، ولی قول میدم که خیلی کاربردیه و کارمون رو راحتتر میکنه.
حالا Facade چیه؟
فرض کن جلوی یه ساختمون خیلی شیک و بزرگ وایسادی، ولی لازم نیست بری داخلش و همه اتاقاشو ببینی. فقط کافیه از بیرون، نمای ساده و مرتبش رو ببینی و کارتو راه بندازی. پترن Facade دقیقاً همینه! یه رابط کاربری ساده میده که دیگه لازم نباشه با پیچیدگیهای سیستم درگیر بشی.
چرا باید ازش استفاده کنیم؟
دو تا اصل مهم دنیای کدنویسی اینجا برامون روشنتر میشه:
1- همه چی ساده باشه KISS
2- تکرار نکن DRY
وقتی از Facade استفاده میکنی، پیچیدگیهای پشت پرده سیستم رو قایم میکنی و فقط چیزی که کاربر (یا حتی خودت!) نیاز داری رو نشون میدی. کدت مرتبتر، قابل نگهداریتر و قابلفهمتر میشه.
ی مثال ساده: اتصال به دیتابیس
فرض کن میخوای به دیتابیس وصل بشی، کوئری بزنی و قطع کنی. بدون Facade و با Facade داخل تصویر هست.
کاربردهای دیگه:
کار با فایلها
ارتباط با API
راهاندازی وبسرور
مدیریت سفارشهای فروشگاه آنلاین
و...
این Facade مثل یه شمشیر دولبهست. اگه زیادی سادهسازی کنی یا بخوای همه کارها رو تو یه struct و متدهاش بذاری، ممکنه یه ساختار پیچیده (God Object) بسازی که خودش یه مشکل جدیده.
خلاصه صحبت هامون:
دیزاین پترن Facade، یه ابزار فوقالعاده برای سادهسازی و مرتب کردن کدهاتونه. اما همونطور که هر چیزی حد داره، از این پترن هم فقط وقتی استفاده کن که به درد بخوره و لازم باشه.
@DevTwitter | <Mohammad Abdorrahmani/>
یکی از دیزاین پترن های جذاب و کاربردی، پترن Facade! شاید اسمش یه کم شیک به نظر بیاد، ولی قول میدم که خیلی کاربردیه و کارمون رو راحتتر میکنه.
حالا Facade چیه؟
فرض کن جلوی یه ساختمون خیلی شیک و بزرگ وایسادی، ولی لازم نیست بری داخلش و همه اتاقاشو ببینی. فقط کافیه از بیرون، نمای ساده و مرتبش رو ببینی و کارتو راه بندازی. پترن Facade دقیقاً همینه! یه رابط کاربری ساده میده که دیگه لازم نباشه با پیچیدگیهای سیستم درگیر بشی.
چرا باید ازش استفاده کنیم؟
دو تا اصل مهم دنیای کدنویسی اینجا برامون روشنتر میشه:
1- همه چی ساده باشه KISS
2- تکرار نکن DRY
وقتی از Facade استفاده میکنی، پیچیدگیهای پشت پرده سیستم رو قایم میکنی و فقط چیزی که کاربر (یا حتی خودت!) نیاز داری رو نشون میدی. کدت مرتبتر، قابل نگهداریتر و قابلفهمتر میشه.
ی مثال ساده: اتصال به دیتابیس
فرض کن میخوای به دیتابیس وصل بشی، کوئری بزنی و قطع کنی. بدون Facade و با Facade داخل تصویر هست.
کاربردهای دیگه:
کار با فایلها
ارتباط با API
راهاندازی وبسرور
مدیریت سفارشهای فروشگاه آنلاین
و...
این Facade مثل یه شمشیر دولبهست. اگه زیادی سادهسازی کنی یا بخوای همه کارها رو تو یه struct و متدهاش بذاری، ممکنه یه ساختار پیچیده (God Object) بسازی که خودش یه مشکل جدیده.
خلاصه صحبت هامون:
دیزاین پترن Facade، یه ابزار فوقالعاده برای سادهسازی و مرتب کردن کدهاتونه. اما همونطور که هر چیزی حد داره، از این پترن هم فقط وقتی استفاده کن که به درد بخوره و لازم باشه.
@DevTwitter | <Mohammad Abdorrahmani/>
👍24🤣7❤1
تو دیتابیس ها یه مفهومی وجود داره به اسم clustered index که در مقابلش non clustered index قرار میگیره
خب این clustered index یعنی چی؟ یعنی اینکه ترتیبی که داده ها در ایندکس قرار میگیرن، همون ترتیبی هست که داده ها در فایل و دیسک ذخیره میشن.
بنابراین هر جدول دیتابیس فقط میتونه یه clustered index داشته باشه که معمولا primary key هست.
کجا ها clustered index مهمه؟ جاهایی که شما range query یا sequential scan داری مهم میشه
چرا مهم میشه؟ چون دیتابیس با تعداد io کمتر رکوردهارو از فایل و دیسک fetch میکنه
حالا قرار دادن یه guid مثل uuid به عنوان primary key چه بلایی سر clustered index میاره؟ عملا رکوردهایی که در ایندکس دارن مرتب میشن میتونن تو فایل های مختلفی از دیسک scatter بشن و هزینه fetch کردن شون در کوئری های range رو بالا ببره.
یه سری دیتابیس ها یه سری بهبود برای این قضیه دارن، مثلا یه implicit primary key خودشون در نظر میگیرن که incremental integer هست و اون رو clustered index در نظر میگیرن.
https://blog.novanet.no/careful-with-guid-as-clustered-index/
@DevTwitter | <Hossein Nazari/>
خب این clustered index یعنی چی؟ یعنی اینکه ترتیبی که داده ها در ایندکس قرار میگیرن، همون ترتیبی هست که داده ها در فایل و دیسک ذخیره میشن.
بنابراین هر جدول دیتابیس فقط میتونه یه clustered index داشته باشه که معمولا primary key هست.
کجا ها clustered index مهمه؟ جاهایی که شما range query یا sequential scan داری مهم میشه
چرا مهم میشه؟ چون دیتابیس با تعداد io کمتر رکوردهارو از فایل و دیسک fetch میکنه
حالا قرار دادن یه guid مثل uuid به عنوان primary key چه بلایی سر clustered index میاره؟ عملا رکوردهایی که در ایندکس دارن مرتب میشن میتونن تو فایل های مختلفی از دیسک scatter بشن و هزینه fetch کردن شون در کوئری های range رو بالا ببره.
یه سری دیتابیس ها یه سری بهبود برای این قضیه دارن، مثلا یه implicit primary key خودشون در نظر میگیرن که incremental integer هست و اون رو clustered index در نظر میگیرن.
https://blog.novanet.no/careful-with-guid-as-clustered-index/
@DevTwitter | <Hossein Nazari/>
👍29👎2❤1
شرط میبندم اینو نمیدونستی:
توی php میتونی واسه خوانایی بیشتر بین اعداد _ قرار بدی و هیچ خللی توی برنامت وارد نشه؟ حتی عملیات ریاضی هم به درستی کار میکنن.
اگه باور نداری همین الان برو امتحانش کن
حالا به چه دردی میخوره؟ خوب از اونجایی که نمیشه داخل کد کاما بین اعداد گذاشت، این حرکت میتونه خوانایی کد رو ببره بالا.
@DevTwitter | <Pouya Farshidnia/>
توی php میتونی واسه خوانایی بیشتر بین اعداد _ قرار بدی و هیچ خللی توی برنامت وارد نشه؟ حتی عملیات ریاضی هم به درستی کار میکنن.
اگه باور نداری همین الان برو امتحانش کن
حالا به چه دردی میخوره؟ خوب از اونجایی که نمیشه داخل کد کاما بین اعداد گذاشت، این حرکت میتونه خوانایی کد رو ببره بالا.
@DevTwitter | <Pouya Farshidnia/>
11🤣110👍64🔥12👎6
This media is not supported in your browser
VIEW IN TELEGRAM
یک آموزش جدید درست کردم
تو این ویدیو یاد میگیریم چجوری با Docker Compose بتونیم MinIO رو داخل VPS ارزون خودمون بالا بیاریم و برای خودمون S3 Object Storage داشته باشیم.
بعدش یاد میگیریم چجوری داخل یک اپ Next.js به MinIO وصل بشیم و اول ازش یک Pre-Signed URL بگیریم بعدش مستقیم فایلمون رو داخل MinIO آپلود کنیم.
لینک ویدیو:
https://www.youtube.com/watch?v=UPygkumJc2A
لینک گیتهاب:
https://github.com/sesto-dev/next-minio-self-host
@DevTwitter | <Amirhossein Mohammadi/>
تو این ویدیو یاد میگیریم چجوری با Docker Compose بتونیم MinIO رو داخل VPS ارزون خودمون بالا بیاریم و برای خودمون S3 Object Storage داشته باشیم.
بعدش یاد میگیریم چجوری داخل یک اپ Next.js به MinIO وصل بشیم و اول ازش یک Pre-Signed URL بگیریم بعدش مستقیم فایلمون رو داخل MinIO آپلود کنیم.
لینک ویدیو:
https://www.youtube.com/watch?v=UPygkumJc2A
لینک گیتهاب:
https://github.com/sesto-dev/next-minio-self-host
@DevTwitter | <Amirhossein Mohammadi/>
🔥28👍10🤣5❤1
میدونستی میتونی کوئریهات رو هوشمندانهتر و بهینهتر کنی؟
اگه توی پروژههات همیشه برای فیلتر کردن محتوا بر اساس فیلدخاصی شرط مینویسی، میتونی این شرط رو یک بار برای همیشه به مدل اضافه کنی و از تکرار کدهای اضافی خلاص بشی!
کد اسلاید رو ببین:
ما یه Global Query Scope ساختیم به اسم TeamScope و به مدل Article اضافه کردیم. از این به بعد، هر وقت کوئری مربوط به مقالات رو بزنیم، خودکار فقط مقالات تیم کاربر لاگین شده برمیگرده.
نکته مهم:
این کار رو میتونید با سه روش مختلف پیادهسازی کنید که هر کدوم بسته به نیازتون کاربردی هستن.
نتیجه؟
کدهای تمیزتر و حرفهایتر
حذف شرطهای تکراری
راحتتر کردن نگهداری و گسترش پروژه
@DevTwitter | <Saber Qadimi/>
اگه توی پروژههات همیشه برای فیلتر کردن محتوا بر اساس فیلدخاصی شرط مینویسی، میتونی این شرط رو یک بار برای همیشه به مدل اضافه کنی و از تکرار کدهای اضافی خلاص بشی!
کد اسلاید رو ببین:
ما یه Global Query Scope ساختیم به اسم TeamScope و به مدل Article اضافه کردیم. از این به بعد، هر وقت کوئری مربوط به مقالات رو بزنیم، خودکار فقط مقالات تیم کاربر لاگین شده برمیگرده.
نکته مهم:
این کار رو میتونید با سه روش مختلف پیادهسازی کنید که هر کدوم بسته به نیازتون کاربردی هستن.
نتیجه؟
کدهای تمیزتر و حرفهایتر
حذف شرطهای تکراری
راحتتر کردن نگهداری و گسترش پروژه
@DevTwitter | <Saber Qadimi/>
🔥12👍10❤1👎1
ماجرای crash کردن Windows 95 بعد از 49.7 روز!
امروز به یه مطلب جالبی برخوردم.
وقتی مایکروسافت نسخه اولیه ویندوز 95 رو منتشر کرد، بعد از مدتی متوجه شد که کامپیوتر هایی که از این سیستم عامل استفاده میکنن اگر 49.7 روز به طور مداوم روشن بمونن ویندوز یهو crash میکنه.
بعد از بررسی متوجه میشن علتش type متغیری هست که زمان روشن بودن سیستم(Uptime) رو نگهداری میکنه. این متغیر زمان روشن بودن سیستم رو به میلی ثانیه نگه میداره و type رو unsigned int 32 انتخاب کرده بودن که این تایپ نهایتا تا عدد 4,294,967,295 رو میتونه توی خودش ذخیره کنه و چون بعد از 49.7 روز مقدار میلی ثانیه های گذشته از روشن بودن سیستم به عدد بالا میرسه، overflow رخ میده و این متغیر دوباره به 0 ریست میشه!
حالا بعضی از قسمت های سیستم عامل دائم در حال بررسی مقدار این متغیر هستن و این فرض رو دارن که این متغیر دائم باید در حال زیاد شدن باشه، وقتی که میبینن یهو ریست شده براشون غیر منتظرس و crash رخ میده.
بعد از اینکه مشکل رو پیدا کردن type رو به unsigned int 64 تغییر دادن و مشکل حل شد
@DevTwitter | <Bassam Nazemi/>
امروز به یه مطلب جالبی برخوردم.
وقتی مایکروسافت نسخه اولیه ویندوز 95 رو منتشر کرد، بعد از مدتی متوجه شد که کامپیوتر هایی که از این سیستم عامل استفاده میکنن اگر 49.7 روز به طور مداوم روشن بمونن ویندوز یهو crash میکنه.
بعد از بررسی متوجه میشن علتش type متغیری هست که زمان روشن بودن سیستم(Uptime) رو نگهداری میکنه. این متغیر زمان روشن بودن سیستم رو به میلی ثانیه نگه میداره و type رو unsigned int 32 انتخاب کرده بودن که این تایپ نهایتا تا عدد 4,294,967,295 رو میتونه توی خودش ذخیره کنه و چون بعد از 49.7 روز مقدار میلی ثانیه های گذشته از روشن بودن سیستم به عدد بالا میرسه، overflow رخ میده و این متغیر دوباره به 0 ریست میشه!
حالا بعضی از قسمت های سیستم عامل دائم در حال بررسی مقدار این متغیر هستن و این فرض رو دارن که این متغیر دائم باید در حال زیاد شدن باشه، وقتی که میبینن یهو ریست شده براشون غیر منتظرس و crash رخ میده.
بعد از اینکه مشکل رو پیدا کردن type رو به unsigned int 64 تغییر دادن و مشکل حل شد
@DevTwitter | <Bassam Nazemi/>
👍103🤣32❤4🔥4
همزمانی (Concurrency) در لاراول 11 را بیشتر بشناسیم
همزمانی یا Concurrency در Laravel نقش مهمی در بهبود عملکرد و مدیریت بار دارد. با استفاده از مکانیزم Queue و قابلیت Task Scheduling، میتوان وظایف را بهصورت همزمان اجرا کرد. برای جلوگیری از Race Condition، اغلب از Lock و Transaction در سطح دیتابیس بهره میبریم. هنگامی که تعداد درخواستها بالا میرود، توزیع بار توسط سرورهای متعدد در کنار مدیریت صحیح Session و Cache، Concurrency را کارآمدتر میکند. همچنین نظارت بر Performance و پیادهسازی الگوی Event-driven رویکردی کلیدی برای ساخت اپلیکیشنهای مقیاسپذیر است. همچنین بهکارگیری ابزارهایی مثل Horizon جهت مانیتورینگ Queue و Jobها، در تضمین سلامت Concurrency کمک میکند.
@DevTwitter | <Alireza Javadi/>
همزمانی یا Concurrency در Laravel نقش مهمی در بهبود عملکرد و مدیریت بار دارد. با استفاده از مکانیزم Queue و قابلیت Task Scheduling، میتوان وظایف را بهصورت همزمان اجرا کرد. برای جلوگیری از Race Condition، اغلب از Lock و Transaction در سطح دیتابیس بهره میبریم. هنگامی که تعداد درخواستها بالا میرود، توزیع بار توسط سرورهای متعدد در کنار مدیریت صحیح Session و Cache، Concurrency را کارآمدتر میکند. همچنین نظارت بر Performance و پیادهسازی الگوی Event-driven رویکردی کلیدی برای ساخت اپلیکیشنهای مقیاسپذیر است. همچنین بهکارگیری ابزارهایی مثل Horizon جهت مانیتورینگ Queue و Jobها، در تضمین سلامت Concurrency کمک میکند.
@DevTwitter | <Alireza Javadi/>
👍24👎21🤣10❤4
چرا بعضی Unit Testها به هیچ دردی نمی خورن؟
تا حالا براتون پیش اومده که بعد از کلی وقت گذاشتن روی نوشتن تست های واحد، بازم سیستم با یه باگ ناجور منفجر بشه؟ اون حس ناامیدی که انگار همه اون تست ها فقط وقت تلف کردن...
خب، چرا این اتفاق می افته؟
یه سری اشتباهات رایج باعث می شه تست ها بی اثر بشن. مثلا:
استفاده از داده های واقعی به جای داده های ساختگی:
فکر کنید تست تون روی دیتابیس واقعی اجرا بشه. اگه رکوردها تغییر کنن یا دسترسی به دیتابیس قطع بشه، تست می ترکه. تست خوب باید مستقل از محیط باشه.
عدم استفاده از Mocking:
وقتی همه وابستگی های کد واقعی باشن، دارین کل سیستم رو تست می کنید، نه فقط یه بخش خاص رو. این دیگه Unit Test نیست! استفاده از Mock باعث می شه به جای اینکه به API واقعی یا دیتابیس وصل بشید، شبیه ساز اون ها رو تست کنید.
نوشتن تست های زیاد ولی بدون هدف مشخص:
یه زمانی فکر می کردم هرچی تعداد تست ها بیشتر باشه بهتره. بعد فهمیدم تستی که هدفمند نباشه، فقط کد رو شلوغ می کنه و باعث می شه موقع تغییرات کلی مشکل زا بشه.
حالا راه حل چیه؟
۱. وابستگی ها رو Mock کنید. با ابزارهایی مثل Mockito می تونید رفتار وابستگی ها رو شبیه سازی کنید.
۲. از داده های ثابت و ساختگی (Fake Data) استفاده کنید که تغییر نمی کنن.
۳. روی سناریوهای کلیدی تمرکز کنید. مثلا یه تابع مهم چطوری ورودی های خاص رو هندل می کنه؟ این مهم تر از اینه که صد تا تست بنویسید که همشون بی هدف باشن.
@DevTwitter | <Hamed Farzanefar/>
تا حالا براتون پیش اومده که بعد از کلی وقت گذاشتن روی نوشتن تست های واحد، بازم سیستم با یه باگ ناجور منفجر بشه؟ اون حس ناامیدی که انگار همه اون تست ها فقط وقت تلف کردن...
خب، چرا این اتفاق می افته؟
یه سری اشتباهات رایج باعث می شه تست ها بی اثر بشن. مثلا:
استفاده از داده های واقعی به جای داده های ساختگی:
فکر کنید تست تون روی دیتابیس واقعی اجرا بشه. اگه رکوردها تغییر کنن یا دسترسی به دیتابیس قطع بشه، تست می ترکه. تست خوب باید مستقل از محیط باشه.
عدم استفاده از Mocking:
وقتی همه وابستگی های کد واقعی باشن، دارین کل سیستم رو تست می کنید، نه فقط یه بخش خاص رو. این دیگه Unit Test نیست! استفاده از Mock باعث می شه به جای اینکه به API واقعی یا دیتابیس وصل بشید، شبیه ساز اون ها رو تست کنید.
نوشتن تست های زیاد ولی بدون هدف مشخص:
یه زمانی فکر می کردم هرچی تعداد تست ها بیشتر باشه بهتره. بعد فهمیدم تستی که هدفمند نباشه، فقط کد رو شلوغ می کنه و باعث می شه موقع تغییرات کلی مشکل زا بشه.
حالا راه حل چیه؟
۱. وابستگی ها رو Mock کنید. با ابزارهایی مثل Mockito می تونید رفتار وابستگی ها رو شبیه سازی کنید.
۲. از داده های ثابت و ساختگی (Fake Data) استفاده کنید که تغییر نمی کنن.
۳. روی سناریوهای کلیدی تمرکز کنید. مثلا یه تابع مهم چطوری ورودی های خاص رو هندل می کنه؟ این مهم تر از اینه که صد تا تست بنویسید که همشون بی هدف باشن.
@DevTwitter | <Hamed Farzanefar/>
👍40🤣14👎3
اگر درس ساختمان داده داشتید و میخواستید بفهمید Linkedlist چطوریه این پروژه مثال خوبی ازشه ...
https://github.com/Mahdi-Rashidiyan/data-structure-study/blob/main/Liblinkedlist.py
@DevTwitter | <Mehdi Rashidiyan/>
https://github.com/Mahdi-Rashidiyan/data-structure-study/blob/main/Liblinkedlist.py
@DevTwitter | <Mehdi Rashidiyan/>
🤣44❤21👍9
دوستان یه ریپوزیتوری توی گیتهاب شروع کردم که دیزاین پترن ها توی پایتون رو کدش رو میزارم، دوست داشتید فورک کنید و کانتریبیوت کنید و در نهایت PR بزنید.
https://github.com/khodealib/designpattern-in-python
@DevTwitter | <فرداد/>
https://github.com/khodealib/designpattern-in-python
@DevTwitter | <فرداد/>
🤣40❤33👍13👎3
همین چنل رو با همین محتوا توی واتساپ هم بزنیم، حمایت میکنید؟
Anonymous Poll
55%
نه، همین تلگرام خوبه
45%
خیر، واتساپ بدرد نمیخوره، همین تلگرام کافیه
🤣468👎12👍7❤5
به من خیلی پیام میدید که کامنتهای چنل رو باز کنم.
دلیل این که کامنتا رو باز نمیکنم فقط شعور و شخصیت بعضی آدمهاست.
توی همین ریاکشنهای چنل میبینید که توی تمام پستها ریاکشن خنده میذارن.
اینا همونهایی هستن که میان مینوسین کامنت اول، یا گیفها و استیکرهای نامربوط میفرستن.
وقتی هنوز شعور استفاده ازش توی بعضیها وجود نداره، ما ترجیح میدیم کام خودمون و بقیه بابت این موارد تلخ نشه.
مخلص همتون
دلیل این که کامنتا رو باز نمیکنم فقط شعور و شخصیت بعضی آدمهاست.
توی همین ریاکشنهای چنل میبینید که توی تمام پستها ریاکشن خنده میذارن.
اینا همونهایی هستن که میان مینوسین کامنت اول، یا گیفها و استیکرهای نامربوط میفرستن.
وقتی هنوز شعور استفاده ازش توی بعضیها وجود نداره، ما ترجیح میدیم کام خودمون و بقیه بابت این موارد تلخ نشه.
مخلص همتون
👍408👎78❤27🔥8
هر بار که یک پروژه رو شروع میکنم باید سرچ کنم و دنبال یک .gitignore فایل برای اون پروژه باشم،
سایت gitignore.io کار رو راحت کرده، کافیه کیورد رو توش سرچ کنید تا فایل مناسب بسازه
از این بهتر یک پلاگین برای zsh هم داره: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/gitignore
@DevTwitter | <Arya Shabane/>
سایت gitignore.io کار رو راحت کرده، کافیه کیورد رو توش سرچ کنید تا فایل مناسب بسازه
از این بهتر یک پلاگین برای zsh هم داره: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/gitignore
@DevTwitter | <Arya Shabane/>
👍71👎7
تو یه اقدام پشم ریزون در راستا کامبک زدن به دنیا برنامه نویسی یه پکیج برای استفاده از API صرافی کوینکس نوشتم و روی Pypi منتشر کردم
فعلا حدود 15 درصد از API رو پوشش میده ولی برا شروع خوبه
باشد که بدرد یه نفر دیگه هم بخوره
https://pypi.org/project/coinexlib/
@DevTwitter | <Rezolini/>
فعلا حدود 15 درصد از API رو پوشش میده ولی برا شروع خوبه
باشد که بدرد یه نفر دیگه هم بخوره
https://pypi.org/project/coinexlib/
@DevTwitter | <Rezolini/>
👍60👎14🔥2
#بدرد
خدا خیرش بده این جوون رو
اومده alias رو توی ویندوز پیاده سازی کرده
https://gist.github.com/benjamine/5992592
@DevTwitter | <0x000A0000/>
خدا خیرش بده این جوون رو
اومده alias رو توی ویندوز پیاده سازی کرده
https://gist.github.com/benjamine/5992592
@DevTwitter | <0x000A0000/>
👍25👎4
یه پکیج لاراولی اپن سورس جدید برای کوتاه کردن لینک اومده به اسم Lua
امکانات خوبی داره، برای کارهای فوری فوتی به درد میخوره.
https://github.com/luadotsh/lua
@DevTwitter | <شایان ذکر/>
امکانات خوبی داره، برای کارهای فوری فوتی به درد میخوره.
https://github.com/luadotsh/lua
@DevTwitter | <شایان ذکر/>
👍27👎8
This media is not supported in your browser
VIEW IN TELEGRAM
کتابخانه drawdata به شما امکان میده در محیط Jupyter دادههای دلخواهتون رو بسازید. ابزار کاربردی برای تمرین و یادگیری الگوریتمهای ماشین لرنینگ.
لینک ریپو:
https://github.com/koaning/drawdata
@DevTwitter | <Reza Jafari/>
لینک ریپو:
https://github.com/koaning/drawdata
@DevTwitter | <Reza Jafari/>
❤24👍11🔥3👎1
نسخه بعدی سی شارپ Type Unions اضافه میشه، چیزی که از ابتدا در اف شارپ و تایپ اسکریپت وجود داشت/
به شماره اجازه میده که یه مقدار از نوع مختلف رو در یک جا نگهداری کنید.
الان با اینترفیس و وراثت پیاده سازیش می کردیم، به زودی به عنوان فیچر زبان اضافه میشه./
https://github.com/dotnet/csharplang/blob/main/proposals/TypeUnions.md#specialized---union-structs
@DevTwitter | <imun/>
به شماره اجازه میده که یه مقدار از نوع مختلف رو در یک جا نگهداری کنید.
الان با اینترفیس و وراثت پیاده سازیش می کردیم، به زودی به عنوان فیچر زبان اضافه میشه./
https://github.com/dotnet/csharplang/blob/main/proposals/TypeUnions.md#specialized---union-structs
@DevTwitter | <imun/>
👍44❤8👎4
سایت لیت کد LeetCode یک پلتفرم برای کمک به ارتقای مهارتها، گسترش دانش و آمادگی برای مصاحبههای فنی
گروهی دیگر برای machine learning نمونه این سایت را ساختند به نام Deep-ML
https://deep-ml.com
@DevTwiiter | <MehrdadLinux/>
گروهی دیگر برای machine learning نمونه این سایت را ساختند به نام Deep-ML
https://deep-ml.com
@DevTwiiter | <MehrdadLinux/>
🔥41👍15
کاش آدما بفهمن، این که ده تا چیز بلدن، یا این که توی عنوان شغلیشون Senior وجود داره، اونارو تبدیل به سینیور نمیکنه.
سینیور شدن توی این حوزه نیاز به دانش عمیق و تجربهی زیاد داره.
تعصب نداشتن، بروز بودن، توانایی تحلیل و حل مسئله و البته تجربهی پروژههایی با اسکیل بالا میتونه از ویژگیهای یک برنامهنویس ارشد باشه.
بقیه رو شاید بتونید گول بزنید، اما گول زدن خودتون با عناوین اشتباه میتونه در آینده براتون گرون تموم بشه.
@DevTwitter
سینیور شدن توی این حوزه نیاز به دانش عمیق و تجربهی زیاد داره.
تعصب نداشتن، بروز بودن، توانایی تحلیل و حل مسئله و البته تجربهی پروژههایی با اسکیل بالا میتونه از ویژگیهای یک برنامهنویس ارشد باشه.
بقیه رو شاید بتونید گول بزنید، اما گول زدن خودتون با عناوین اشتباه میتونه در آینده براتون گرون تموم بشه.
@DevTwitter
6👍195❤7👎4
دنبال یادگیری دیزاین پترن هستی؟ اونم فارسی؟ اونم اکثر زبان ها مثل پایتون، پی اچ پی و..؟
بیا بگیر برو جوان ایرانی:
https://github.com/3lf/design-patterns-for-humans
@DevTwiiter | <Milwad Khosravi/>
بیا بگیر برو جوان ایرانی:
https://github.com/3lf/design-patterns-for-humans
@DevTwiiter | <Milwad Khosravi/>
👍64🔥12👎10❤2