DevTwitter | توییت برنامه نویسی – Telegram
DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.1K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
با Webtop دسترسی لحظه ای به Alpine, Ubuntu, Fedora, و Arch همراه با full desktop environments
ساده فقط روی مرورگر بدون نیاز به نصب
فقط کافیه http://lscr.io/linuxserver/webtop:latest را pull
و روی http://yourhost:3000 استفاده کنید

@DevTwitter | <MehrdadLinux/>
👍24
ویدیوهای کامل و محتوای دوره‌ی «یادگیری ماشین» دانشکده‌ی مهندسی کامپیوتر دانشگاه شریف منتشر شد:
http://SharifML.ir
کل این محتوا رایگان است.
تهیه‌ی این مجموعه ممکن نبود، مگر با تلاش جدی یک تیم ۷۰ نفره که قدردان یکایک آن‌ها هستم.

@DevTwitter | <علی شریفی زارچی/>
🔥111👍14👎109
#نقل_کد
A person who never made a mistake never tried anything new.
Albert Einstein

«کسی که نمیرینه نمیتونه تپه‌های جدید رو فتح کنه»
آلبرت انیشتین

@DevTwitter
🤣134👍41👎7🔥2
۱. الگوریتم جدید ما، LinearBoost، منتشر شد. این الگوریتم بسیار سریع برای Classification روی داده‌های Tabular استفاده میشه. روی هفت دیتاست معروف بنچمارک، دقتش از XGBoost در هر هفت تا، و از LightGBM در پنج تا بالاتر بوده، و زمان اجراش تا ۹۸ درصد کمتره!

۲. روی این الگوریتم، چند سال با Reza Rawassizadeh وقت گذاشتیم تا به نتیجه برسه. و البته به عنوان پروژه جانبی و در اوقات فراغت جلو بردیمش و تمرکز اصلی‌مون نبوده. به همین دلیل جای کار زیاد داره. در ادامه جنبه فنی رو بیشتر توضیح میدم. نتایج رو هم در داخل ریپو گیت‌هاب ببینید.

۳. ماجرا اینه که سه الگوریتم‌ رایج یعنی XGBoost و LightGBM و CatBoost مبتنی بر بوستینگ درخت تصمیم هستند. اما آیا نمیشه یه الگوریتم خطی رو جانشین درخت تصمیم کرد؟ درخت تصمیم فیچرها رو یکی یکی در نظر می‌گیره، در حالی که یه الگوریتم خطی همه فیچرها رو با هم می‌بینه و این جنبه مثبتیه.

۴. جواب اینه که میشه، ولی دو تا مشکل هست، یکی این که الگوریتم‌های خطی مثل SVM معمولا زمان‌بر هستند و بوستینگشون زمان بسیاری خواهد گرفت، و دیگری این که این الگوریتم‌ها خودشون خوب هستند و خیلی جنبه Weak Classifier ندارند. اما ما اومدیم و الگوریتم قبلی‌مون، یعنی SEFR رو بوست کردیم.

۵. نتیجه تا الان که جالب شده. مقاله‌اش رو هم به‌زودی منتشر خواهیم کرد. کار هم به صورت متن‌باز و هم به صورت پکیج پایتون ارائه شده و اگر دوست دارید، شما هم تستش کنید.
https://github.com/LinearBoost/linearboost-classifier

@DevTwitter | <Hamidreza Keshavarz/>
🔥56👍16🤣31
قبل از اینکه بخواید مقایسه‌ی سرعت زبون‌های برنامه‌نویسی (benchmark) رو جدی بگیرید، این ۲ تا ویدیو رو ببینید؛ یه خرده طولانین ولی کاملا می‌ارزه.
https://youtube.com/watch?v=RrHGX1wwSYM
https://youtube.com/watch?v=EH12jHkQFQk

@DevTwitter | <Mohammad FS/>
👍23🤣5👎21
از نکات جالب اینکه Microsoft جزو 20 شرکت اول توسعه‌دهنده کرنل لینوکس 6.12LTS هست.
در کنار این توسعه، Microsoft توزیع مخصوص خودش به نام Azure Linux را دارد که کلیه سرورهای LinkedIn از CentOS بتازگی به آن مهاجرت کرده اند.
منابع:
https://linkedin.com/blog/engineering/architecture/navigating-the-transition-adopting-azure-linux-as-linkedins-operatingsystem
https://lwn.net/Articles/997959/

@DevTwitter | <Vahid Nameni/>
🤣60👍314
دیزاین پترن Facade در Golang
یکی از دیزاین پترن های جذاب و کاربردی، پترن Facade! شاید اسمش یه کم شیک به نظر بیاد، ولی قول میدم که خیلی کاربردیه و کارمون رو راحت‌تر می‌کنه.

حالا Facade چیه؟
فرض کن جلوی یه ساختمون خیلی شیک و بزرگ وایسادی، ولی لازم نیست بری داخلش و همه اتاقاشو ببینی. فقط کافیه از بیرون، نمای ساده و مرتبش رو ببینی و کارتو راه بندازی. پترن Facade دقیقاً همینه! یه رابط کاربری ساده می‌ده که دیگه لازم نباشه با پیچیدگی‌های سیستم درگیر بشی.

چرا باید ازش استفاده کنیم؟
دو تا اصل مهم دنیای کدنویسی اینجا برامون روشن‌تر می‌شه:
1- همه چی ساده باشه KISS
2- تکرار نکن DRY

وقتی از Facade استفاده می‌کنی، پیچیدگی‌های پشت پرده سیستم رو قایم می‌کنی و فقط چیزی که کاربر (یا حتی خودت!) نیاز داری رو نشون می‌دی. کدت مرتب‌تر، قابل نگهداری‌تر و قابل‌فهم‌تر می‌شه.

ی مثال ساده: اتصال به دیتابیس
فرض کن می‌خوای به دیتابیس وصل بشی، کوئری بزنی و قطع کنی. بدون Facade و با Facade داخل تصویر هست.

کاربردهای دیگه:
کار با فایل‌ها
ارتباط با API
راه‌اندازی وب‌سرور
مدیریت سفارش‌های فروشگاه آنلاین
و...

این Facade مثل یه شمشیر دولبه‌ست. اگه زیادی ساده‌سازی کنی یا بخوای همه کارها رو تو یه struct و متدهاش بذاری، ممکنه یه ساختار پیچیده (God Object) بسازی که خودش یه مشکل جدیده.

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


@DevTwitter | <Mohammad Abdorrahmani/>
👍24🤣71
تو دیتابیس ها یه مفهومی وجود داره به اسم 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/>
👍29👎21
شرط میبندم اینو نمیدونستی:
توی 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/>
🔥28👍10🤣51
می‌دونستی می‌تونی کوئری‌هات رو هوشمندانه‌تر و بهینه‌تر کنی؟
اگه توی پروژه‌هات همیشه برای فیلتر کردن محتوا بر اساس فیلدخاصی شرط می‌نویسی، می‌تونی این شرط رو یک بار برای همیشه به مدل اضافه کنی و از تکرار کدهای اضافی خلاص بشی!
کد اسلاید رو ببین:
ما یه Global Query Scope ساختیم به اسم TeamScope و به مدل Article اضافه کردیم. از این به بعد، هر وقت کوئری مربوط به مقالات رو بزنیم، خودکار فقط مقالات تیم کاربر لاگین شده برمی‌گرده.
نکته مهم:
این کار رو می‌تونید با سه روش مختلف پیاده‌سازی کنید که هر کدوم بسته به نیازتون کاربردی هستن.
نتیجه؟
کدهای تمیزتر و حرفه‌ای‌تر
حذف شرط‌های تکراری
راحت‌تر کردن نگهداری و گسترش پروژه

@DevTwitter | <Saber Qadimi/>
🔥12👍101👎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/>
👍103🤣324🔥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/>
👍24👎21🤣104
چرا بعضی Unit Testها به هیچ دردی نمی خورن؟

تا حالا براتون پیش اومده که بعد از کلی وقت گذاشتن روی نوشتن تست های واحد، بازم سیستم با یه باگ ناجور منفجر بشه؟ اون حس ناامیدی که انگار همه اون تست ها فقط وقت تلف کردن...

خب، چرا این اتفاق می افته؟
یه سری اشتباهات رایج باعث می شه تست ها بی اثر بشن. مثلا:

استفاده از داده های واقعی به جای داده های ساختگی:
فکر کنید تست تون روی دیتابیس واقعی اجرا بشه. اگه رکوردها تغییر کنن یا دسترسی به دیتابیس قطع بشه، تست می ترکه. تست خوب باید مستقل از محیط باشه.

عدم استفاده از 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/>
🤣4421👍9
دوستان یه ریپوزیتوری توی گیت‌هاب شروع کردم که دیزاین پترن ها توی پایتون رو کدش رو میزارم، دوست داشتید فورک کنید و کانتریبیوت کنید و در نهایت PR بزنید.

https://github.com/khodealib/designpattern-in-python

@DevTwitter | <فرداد/>
🤣4033👍13👎3
همین چنل رو با همین محتوا توی واتساپ هم بزنیم، حمایت می‌کنید؟
Anonymous Poll
55%
نه، همین تلگرام خوبه
45%
خیر، واتساپ بدرد نمیخوره، همین تلگرام کافیه
🤣468👎12👍75
به من خیلی پیام می‌دید که کامنت‌های چنل رو باز کنم.

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

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

مخلص همتون
👍408👎7827🔥8
هر بار که یک پروژه رو شروع می‌کنم باید سرچ کنم و دنبال یک .gitignore فایل برای اون پروژه باشم،
سایت 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/>
👍60👎14🔥2
#بدرد

خدا خیرش بده این جوون رو
اومده alias رو توی ویندوز پیاده سازی کرده

https://gist.github.com/benjamine/5992592


@DevTwitter | <0x000A0000/>
👍25👎4