Forwarded from Ninja Learn | نینجا لرن
خب خب خب Django Channels چیه؟ و چرا من ازش خوشم نمیاد
قبل از اینکه با هم بریم سراغ Django Channels، یه کم درباره WebSocket بگیم که اصلاً بدونیم داریم درباره چی حرف میزنیم. خب، WebSocket یه پروتکل که بهت اجازه میده ارتباط دوطرفه و دائمی بین کلاینت و سرور داشته باشی. یعنی چی؟ یعنی مثلاً تو یه اپلیکیشن چت، به جای اینکه هر چند ثانیه یه بار درخواست بفرستی "چیزی جدید اومده؟"، سرور خودش هر وقت یه پیام جدید داشت، بلافاصله میفرسته سمتت 🚀.
حالا Django Channels چی میگه؟ 🤔
ـDjango Channels یه ابزار تو اکوسیستم Djangoئه که میاد پشتیبانی از WebSocket، پروتکلهای real-time و کارای async رو به پروژههات اضافه میکنه. به زبان ساده، اگه Django عادی رو یه "خیابون یکطرفه" فرض کنیم، Channels میاد این خیابون رو دوطرفه میکنه. این یعنی میتونی کارایی مثل:
و...
رو خیلی راحتتر با Django انجام بدی.
خب پس مشکلش چیه؟ چرا من ازش خوشم نمیاد؟ 🤷♂️
از دور که نگاه میکنی، Channels خیلی جذاب به نظر میاد، ولی وقتی میخوای باهاش کارکنی، مشکلات خودش رو نشون میده:
1⃣ پیچیدگی توی تنظیمات 😵💫
ـDjango همیشه به خاطر سادگی معروف بوده، ولی Channels میاد این سادگی رو خراب میکنه خیلی خراب میکنه. باید ASGI رو راه بندازی، Redis نصب کنی، routing یاد بگیری، و کلی تنظیمات دیگه انجام بدی. یه پروژه ساده که با Django راحت بود، یهو برات میشه یه جنگل از تنظیمات.
2⃣ وابستگی به Redis 🤦♂️
یکی از مشکلات بزرگ Channels اینه که برای مدیریت eventها و ارتباطها حتماً نیاز به Redis داره. خب چرا؟ دلیلش اینه که Redis بهعنوان message broker استفاده میشه تا پیامها بین کلاینتها و سرور مدیریت بشه. ولی اگه پروژه کوچیک باشه، این وابستگی میتونه دردسرساز بشه.
3⃣ محدودیت توی scale کردن 😩
اگه پروژه کوچیک باشه، Channels بد نیست. ولی وقتی تعداد کاربران زیاد میشه و حجم درخواستها بالا میره، Channels سریع از نفس میافته. این محدودیت بیشتر به خاطر پیچیدگی WebSocket و محدودیتهای سرورهای تک رشته ای هست تا خود Channels. برای پروژههای بزرگ و real-time محور، ابزارای دیگهای مثل Socket.IO یا FastAPI خیلی بهتر عمل میکنن.
4⃣ مشکلات performance 🚨
حتی اگه پروژه خیلی هم بزرگ نباشه، Channels برای real-time پروژههای سنگین خوب عمل نمیکنه. کارای پیچیده async و ارتباطات real-time میتونن سرور رو داغون کنن. البته با تنظیم درست workerها و Redis channel layers میتونی بخشی از این مشکلات رو کم کنی، ولی باز هم کار اضافهست.
5⃣ کمبود مستندات و منابع آموزشی درست و حسابی 📚
یکی دیگه از مشکلات اینه که منابع آموزشی کامل و بهروزی برای Channels خیلی کمه. هر وقت گیر کنی، یا باید بری توی GitHub دنبال issueها، یا دست به دامن دیگران بشی. این باعث میشه زمان زیادی صرف حل مشکلات کنی.
خب حالا راهحل چیه؟ 💡
اگه بخوای real-time کار کنی، اینا میتونن گزینههای بهتری باشن:
ـFastAPI: اگه دنبال سرعت، سادگی و پرفورمنس خوب هستی، FastAPI انتخاب فوقالعادهایه. با WebSocket خیلی راحت کار میکنه و خبری از دردسرای Channels نیست 🚀.
ـSocket.IO: این یکی برای پروژههای real-time شاهکاره. خیلی ابزارای متنوع داره و با Node.js هم عالی مچ میشه.
جمعبندی 🎯
ـDjango Channels میتونه برای پروژههای کوچیک و ساده مناسب باشه، ولی اگه بحث scale، پرفورمنس یا راحتی کار مطرح باشه، اصلاً گزینه خوبی نیست. من از پیچیدگیها و محدودیتهاش خسته شدم و به جای اون سراغ ابزارای دیگه رفتم.
نظر تو چیه؟ Django Channels تا حالا اذیتت کرده یا ازش خوشت میاد؟ بگو ببینم چی تو ذهنت میگذره🧐
➖➖➖➖➖➖➖➖➖
قبل از اینکه با هم بریم سراغ Django Channels، یه کم درباره WebSocket بگیم که اصلاً بدونیم داریم درباره چی حرف میزنیم. خب، WebSocket یه پروتکل که بهت اجازه میده ارتباط دوطرفه و دائمی بین کلاینت و سرور داشته باشی. یعنی چی؟ یعنی مثلاً تو یه اپلیکیشن چت، به جای اینکه هر چند ثانیه یه بار درخواست بفرستی "چیزی جدید اومده؟"، سرور خودش هر وقت یه پیام جدید داشت، بلافاصله میفرسته سمتت 🚀.
حالا Django Channels چی میگه؟ 🤔
ـDjango Channels یه ابزار تو اکوسیستم Djangoئه که میاد پشتیبانی از WebSocket، پروتکلهای real-time و کارای async رو به پروژههات اضافه میکنه. به زبان ساده، اگه Django عادی رو یه "خیابون یکطرفه" فرض کنیم، Channels میاد این خیابون رو دوطرفه میکنه. این یعنی میتونی کارایی مثل:
چت real-time 💬
نوتیفیکیشنهای فوری 🔔
استریم داده (مثل قیمتهای ارز دیجیتال) 📈
و...
رو خیلی راحتتر با Django انجام بدی.
خب پس مشکلش چیه؟ چرا من ازش خوشم نمیاد؟ 🤷♂️
از دور که نگاه میکنی، Channels خیلی جذاب به نظر میاد، ولی وقتی میخوای باهاش کارکنی، مشکلات خودش رو نشون میده:
1⃣ پیچیدگی توی تنظیمات 😵💫
ـDjango همیشه به خاطر سادگی معروف بوده، ولی Channels میاد این سادگی رو خراب میکنه خیلی خراب میکنه. باید ASGI رو راه بندازی، Redis نصب کنی، routing یاد بگیری، و کلی تنظیمات دیگه انجام بدی. یه پروژه ساده که با Django راحت بود، یهو برات میشه یه جنگل از تنظیمات.
نکته: از Django 4.0 به بعد، پشتیبانی از ASGI مستقیم داخل هسته Django اومده، پس برای پروژههای ساده شاید نیاز نباشه کل پروژه رو وابسته به Channels کنی.
2⃣ وابستگی به Redis 🤦♂️
یکی از مشکلات بزرگ Channels اینه که برای مدیریت eventها و ارتباطها حتماً نیاز به Redis داره. خب چرا؟ دلیلش اینه که Redis بهعنوان message broker استفاده میشه تا پیامها بین کلاینتها و سرور مدیریت بشه. ولی اگه پروژه کوچیک باشه، این وابستگی میتونه دردسرساز بشه.
جایگزین: میتونی از RabbitMQ یا حتی راهحلهای سادهتر مثل In-Memory Layers برای پروژههای سبک استفاده کنی.
3⃣ محدودیت توی scale کردن 😩
اگه پروژه کوچیک باشه، Channels بد نیست. ولی وقتی تعداد کاربران زیاد میشه و حجم درخواستها بالا میره، Channels سریع از نفس میافته. این محدودیت بیشتر به خاطر پیچیدگی WebSocket و محدودیتهای سرورهای تک رشته ای هست تا خود Channels. برای پروژههای بزرگ و real-time محور، ابزارای دیگهای مثل Socket.IO یا FastAPI خیلی بهتر عمل میکنن.
4⃣ مشکلات performance 🚨
حتی اگه پروژه خیلی هم بزرگ نباشه، Channels برای real-time پروژههای سنگین خوب عمل نمیکنه. کارای پیچیده async و ارتباطات real-time میتونن سرور رو داغون کنن. البته با تنظیم درست workerها و Redis channel layers میتونی بخشی از این مشکلات رو کم کنی، ولی باز هم کار اضافهست.
5⃣ کمبود مستندات و منابع آموزشی درست و حسابی 📚
یکی دیگه از مشکلات اینه که منابع آموزشی کامل و بهروزی برای Channels خیلی کمه. هر وقت گیر کنی، یا باید بری توی GitHub دنبال issueها، یا دست به دامن دیگران بشی. این باعث میشه زمان زیادی صرف حل مشکلات کنی.
خب حالا راهحل چیه؟ 💡
اگه بخوای real-time کار کنی، اینا میتونن گزینههای بهتری باشن:
ـFastAPI: اگه دنبال سرعت، سادگی و پرفورمنس خوب هستی، FastAPI انتخاب فوقالعادهایه. با WebSocket خیلی راحت کار میکنه و خبری از دردسرای Channels نیست 🚀.
ـSocket.IO: این یکی برای پروژههای real-time شاهکاره. خیلی ابزارای متنوع داره و با Node.js هم عالی مچ میشه.
جمعبندی 🎯
ـDjango Channels میتونه برای پروژههای کوچیک و ساده مناسب باشه، ولی اگه بحث scale، پرفورمنس یا راحتی کار مطرح باشه، اصلاً گزینه خوبی نیست. من از پیچیدگیها و محدودیتهاش خسته شدم و به جای اون سراغ ابزارای دیگه رفتم.
نظر تو چیه؟ Django Channels تا حالا اذیتت کرده یا ازش خوشت میاد؟ بگو ببینم چی تو ذهنت میگذره🧐
#programming #web #django
➖➖➖➖➖➖➖➖➖
🔆 CHANNEL | GROUP
👍22😁3
Forwarded from Ninja Learn | نینجا لرن
خب خب خب Sentry چیه؟ 🔍
اگه برنامه نویسی میکنی احتمالاً این سناریو برات آشناست:
کلی وقت میذاری، کد مینویسی، تست میکنی، همهچی درست کار میکنه. ولی وقتی میدی دست کاربر، یهو یه ارور عجیب غریب میاد که اصلاً نمیدونی از کجا دراومده اینجاست که Sentry وارد بازی میشه.
ـSentry چیه اصلاً؟
ـSentry یه ابزار خطایاب (Error Tracking) که کمک میکنه باگها و خطاهای پروژهت رو همون لحظهای که اتفاق میفتن، پیدا کنی.
این ابزار نهتنها ارورها رو جمعآوری میکنه، بلکه یه گزارش دقیق و کامل ازشون میده؛ از جزئیات خطا گرفته تا شرایطی که باعث شده ارور پیش بیاد.
فرض کن یه باگ تو اپلیکیشن ته که اصلاً قابل پیشبینی نبوده. بهجای اینکه کاربر بیاد غر بزنه یا خودت بری تو لاگها دنبال مشکل بگردی، Sentry خودش ارور رو تشخیص میده و گزارشش رو مستقیم برات میفرسته.
چرا Sentry محبوبه؟ 🌟
1⃣ گزارش ارور دقیق و کاربردی 🛠️
2⃣ پشتیبانی از پلتفرمهای مختلف 📱
3⃣ دستهبندی ارورها 🗂️
4⃣ هشدار و نوتیفیکیشن 🔔
5⃣ـ Release Tracking 🚀
6⃣ـPerformance Monitoring ⚡
چطور از Sentry استفاده کنیم؟
ثبتنام کن:
تو سایت Sentry.io یه اکانت بساز. نسخه رایگانش برای شروع کافیه.
نصب کن:
ـSDK مخصوص زبان پروژهت رو نصب کن. مثلاً برای Django این دستور کافیه:
تنظیمش کن:
با چند خط کد ساده Sentry رو به پروژه وصل کن:
ارورها رو مدیریت کن:
حالا هر اروری اتفاق بیفته، مستقیم تو داشبورد Sentry میره.
چند نکته مهم:
نسخه رایگان Sentry محدودیت داره (مثلاً تعداد ارورهای ماهانه). برای پروژههای بزرگ باید پلنهای پولیش رو بگیری.
میتونی از مستندات رسمی کمک بگیری تا تنظیمات حرفهایتر انجام بدی.
جمعبندی ✍
اگه میخوای ارورهای پروژهت رو حرفهای مدیریت کنی و حتی قبل از اینکه کاربر بفهمه، خودت رفعشون کنی، Sentry بهترین انتخابه. هم راحت نصب میشه، هم کلی قابلیت خفن داره.
تا حالا از Sentry استفاده کردی؟ نظرت چیه؟ 👀
➖➖➖➖➖➖➖➖➖
اگه برنامه نویسی میکنی احتمالاً این سناریو برات آشناست:
کلی وقت میذاری، کد مینویسی، تست میکنی، همهچی درست کار میکنه. ولی وقتی میدی دست کاربر، یهو یه ارور عجیب غریب میاد که اصلاً نمیدونی از کجا دراومده اینجاست که Sentry وارد بازی میشه.
ـSentry چیه اصلاً؟
ـSentry یه ابزار خطایاب (Error Tracking) که کمک میکنه باگها و خطاهای پروژهت رو همون لحظهای که اتفاق میفتن، پیدا کنی.
این ابزار نهتنها ارورها رو جمعآوری میکنه، بلکه یه گزارش دقیق و کامل ازشون میده؛ از جزئیات خطا گرفته تا شرایطی که باعث شده ارور پیش بیاد.
فرض کن یه باگ تو اپلیکیشن ته که اصلاً قابل پیشبینی نبوده. بهجای اینکه کاربر بیاد غر بزنه یا خودت بری تو لاگها دنبال مشکل بگردی، Sentry خودش ارور رو تشخیص میده و گزارشش رو مستقیم برات میفرسته.
چرا Sentry محبوبه؟ 🌟
1⃣ گزارش ارور دقیق و کاربردی 🛠️
وقتی یه ارور اتفاق میفته، Sentry دقیقاً بهت میگه مشکل کجاست. جزئیاتی مثل:
فایل و خط کدی که ارور داده
نوع خطا (Exception)
اطلاعات مرورگر یا دستگاه کاربر
وضعیت سرور (مثلاً رم و CPU)
حتی مراحل درخواست کاربر تا لحظهای که ارور رخ داده
2⃣ پشتیبانی از پلتفرمهای مختلف 📱
هرچی فکرش رو بکنی، Sentry ساپورتش میکنه.
Backend: Python (جنگو، فلاسک و ...)، Node.js
Frontend: React، Vue.js
Mobile: اندروید و iOS
DevOps: Docker، Kubernetes
3⃣ دستهبندی ارورها 🗂️
وقتی تعداد ارورها زیاد بشه، Sentry اونا رو گروهبندی میکنه. مثلاً یه باگ اگه صد بار اتفاق بیفته، همشون رو زیر یه گزارش میذاره که بتونی راحت مدیریت کنی.
4⃣ هشدار و نوتیفیکیشن 🔔
به محض اینکه یه ارور جدید اتفاق بیفته، سریع بهت خبر میده. از ایمیل گرفته تا Slack یا حتی پیامک.
5⃣ـ Release Tracking 🚀
یه قابلیت جالبش اینه که میتونی ارورها رو به نسخههای پروژت وصل کنی و بفهمی کدوم تغییرات باعث مشکل شده.
6⃣ـPerformance Monitoring ⚡
علاوه بر ارورها، میتونی بفهمی اپلیکیشن کجاها کنده.
چطور از Sentry استفاده کنیم؟
ثبتنام کن:
تو سایت Sentry.io یه اکانت بساز. نسخه رایگانش برای شروع کافیه.
نصب کن:
ـSDK مخصوص زبان پروژهت رو نصب کن. مثلاً برای Django این دستور کافیه:
pip install sentry-sdk
تنظیمش کن:
با چند خط کد ساده Sentry رو به پروژه وصل کن:
import sentry_sdk
sentry_sdk.init(
dsn="لینک DSN که Sentry میده",
traces_sample_rate=1.0
)
ارورها رو مدیریت کن:
حالا هر اروری اتفاق بیفته، مستقیم تو داشبورد Sentry میره.
چند نکته مهم:
نسخه رایگان Sentry محدودیت داره (مثلاً تعداد ارورهای ماهانه). برای پروژههای بزرگ باید پلنهای پولیش رو بگیری.
میتونی از مستندات رسمی کمک بگیری تا تنظیمات حرفهایتر انجام بدی.
جمعبندی ✍
اگه میخوای ارورهای پروژهت رو حرفهای مدیریت کنی و حتی قبل از اینکه کاربر بفهمه، خودت رفعشون کنی، Sentry بهترین انتخابه. هم راحت نصب میشه، هم کلی قابلیت خفن داره.
تا حالا از Sentry استفاده کردی؟ نظرت چیه؟ 👀
#programming #python #sentry
➖➖➖➖➖➖➖➖➖
🔆 CHANNEL | GROUP
Sentry
Application Performance Monitoring & Error Tracking Software
Application performance monitoring for developers & software teams to see errors clearer, solve issues faster & continue learning continuously.
👍21❤1
Forwarded from Agora (Alireza Azadi)
پیچیدگی و نشانههای آن
___________
کتاب A Philosophy of Software Design نوشتهی John Ousterhout، میاد و سه نشانه (manifestation) از پیچیدگی در سیستم مطرح میکنه و اینجا میخوام این سه مورد رو باهم مرور کنیم:
- Change Amplification
یک تغییر ساده [در یک عملکرد کلی]، نیازمند تغییر در قسمتهای مختلفه. دم دستی ترین مثال ممکن که احتمالا در ذهنتون بیدرنگ نشست، استفاده از یک ثابته (مثل کد رنگ) که در تمام تابعها داره بهکار برده میشه و هر جا هم یک اسمی داره و ما قراره اون رو عوض کنیم. حالا یک تغییر سادهی ما amplify شد و از یکی شد ۱۰۰ تا (مشابه write amplification در دیتابیسها که گاهی یک رایت ساده، منجر به چسبیدن IO به سقف میشه).
- Cognitive Load
چقدر یک توسعهدهنده نیازه که [راجعبه سیستم] بدونه برای این که یک تسک رو به سرانجام برسونه. هرچقدر این «دونستن» بیشتر لازم باشه، به طبع نیازمنده تا زمان بیشتری رو صرف یادگیری کنه تا تسک مذکور رو انجام بده و این تعدد نیاز به دانستنها، ریسک به وجود اومدن باگ رو بیشترو بیشتر میکنه.
در این مورد، گریزی هم به ماجرای تعداد خطها میشه زد. بعضی طراحان سیستم فکر میکنند که تعداد خط کمتر منجر به کاهش پیچیدگی سیستم میشه.
شاید اینطور باشه که خوندن یک کلاس عریض و طویل بسیار وحشتناکه، اما به تجربه، هیچچیز ترسناک تر از خوندن کدهای کوتاهی نیست که سراسر پر شدند از trick و magicهایی که بدون دانش قبلی هیچ ایدهای نخواهیم داشت راجعبه این که این چند خط چطور کار میکنند.
کاهش تعداد خط با خیال کاهش پیچیدگی در نهایت میتونه به افزایش cognitive load منجر بشه و مارو از اون رویای شیرین، به وسط کابوس کدبیس پیچیده پرتاب کنه.
- Unknown unknowns
بدترین بین این سه اما، ناشناختههای ناشناختهست. به این معنی که ما ندونیم کدوم قسمت از کد باید تغییر کنه تا تسک ما انجام بشه.
در این حالت، برای ما روشن نخواهد بود که چه کار باید بکنیم، یا اونچه که قصد انجامشو داریم اصلا کاراست یا نه.
در نهایت سیستمی که پیادهسازی و طراحی مبرهنی داره، برای توسعه دهنده این امکان رو به وجود میاره که به سادگی بفهمه که کد فعلی چطور کار میکنه و بتونه به سرعت حدس بزنه چطور باید تغییرات مورد نظرش رو اعمال کنه و خیالش آسوده باشه از این که حدسی که زده صحیحه و قرار نیست تغییرات جدید در جایی که فکرش رو هم نمیکرد مشکلات جدیدی رو به وجود بیاره.
پینوشت:
- از عباس عزیز واقعا ممنونم بابت معرفی کتاب.
- کتاب رو دو روزه که شروع کردم و دلم میخواد تیکههاییش که برام جالبه یا ممکنه برای شما جالب باشه رو چه با نقل و قول مستقیم، چه غیرمستقیم اینجا هم بنویسم.
- بجز تعریف سیستم پیچیده که به شکل تعریف نشانههاش بالاتر ازش حرف زدیم و مختص به سیستمهای نرمافزاری بود، بد نیست یک گریزی بزنیم به کتاب Melanie Mitchell
با عنوان «سیری در نظریه پیچیدگی» (عنوان اصلی کتاب، Complexity: A Guided Tour) که اون هم کتابیه خوندنی و توصیهش میکنیم. در انتهای فصل اول کتاب، سیستم پیچیده رو به دو شکل تعریف میکنه:
و تعریف دوم:
که فکر میکنم تعریف دوم، بیشتر با شرح نشانههایی که از یک سیستم نرمافزاری دیدیم همسو باشه.
___________
کتاب A Philosophy of Software Design نوشتهی John Ousterhout، میاد و سه نشانه (manifestation) از پیچیدگی در سیستم مطرح میکنه و اینجا میخوام این سه مورد رو باهم مرور کنیم:
- Change Amplification
یک تغییر ساده [در یک عملکرد کلی]، نیازمند تغییر در قسمتهای مختلفه. دم دستی ترین مثال ممکن که احتمالا در ذهنتون بیدرنگ نشست، استفاده از یک ثابته (مثل کد رنگ) که در تمام تابعها داره بهکار برده میشه و هر جا هم یک اسمی داره و ما قراره اون رو عوض کنیم. حالا یک تغییر سادهی ما amplify شد و از یکی شد ۱۰۰ تا (مشابه write amplification در دیتابیسها که گاهی یک رایت ساده، منجر به چسبیدن IO به سقف میشه).
- Cognitive Load
چقدر یک توسعهدهنده نیازه که [راجعبه سیستم] بدونه برای این که یک تسک رو به سرانجام برسونه. هرچقدر این «دونستن» بیشتر لازم باشه، به طبع نیازمنده تا زمان بیشتری رو صرف یادگیری کنه تا تسک مذکور رو انجام بده و این تعدد نیاز به دانستنها، ریسک به وجود اومدن باگ رو بیشترو بیشتر میکنه.
در این مورد، گریزی هم به ماجرای تعداد خطها میشه زد. بعضی طراحان سیستم فکر میکنند که تعداد خط کمتر منجر به کاهش پیچیدگی سیستم میشه.
شاید اینطور باشه که خوندن یک کلاس عریض و طویل بسیار وحشتناکه، اما به تجربه، هیچچیز ترسناک تر از خوندن کدهای کوتاهی نیست که سراسر پر شدند از trick و magicهایی که بدون دانش قبلی هیچ ایدهای نخواهیم داشت راجعبه این که این چند خط چطور کار میکنند.
کاهش تعداد خط با خیال کاهش پیچیدگی در نهایت میتونه به افزایش cognitive load منجر بشه و مارو از اون رویای شیرین، به وسط کابوس کدبیس پیچیده پرتاب کنه.
- Unknown unknowns
بدترین بین این سه اما، ناشناختههای ناشناختهست. به این معنی که ما ندونیم کدوم قسمت از کد باید تغییر کنه تا تسک ما انجام بشه.
unknown unknown means that there is something you need to know, but there is no way for you to find out what it is, or even whether there is an issue.
در این حالت، برای ما روشن نخواهد بود که چه کار باید بکنیم، یا اونچه که قصد انجامشو داریم اصلا کاراست یا نه.
در نهایت سیستمی که پیادهسازی و طراحی مبرهنی داره، برای توسعه دهنده این امکان رو به وجود میاره که به سادگی بفهمه که کد فعلی چطور کار میکنه و بتونه به سرعت حدس بزنه چطور باید تغییرات مورد نظرش رو اعمال کنه و خیالش آسوده باشه از این که حدسی که زده صحیحه و قرار نیست تغییرات جدید در جایی که فکرش رو هم نمیکرد مشکلات جدیدی رو به وجود بیاره.
پینوشت:
- از عباس عزیز واقعا ممنونم بابت معرفی کتاب.
- کتاب رو دو روزه که شروع کردم و دلم میخواد تیکههاییش که برام جالبه یا ممکنه برای شما جالب باشه رو چه با نقل و قول مستقیم، چه غیرمستقیم اینجا هم بنویسم.
- بجز تعریف سیستم پیچیده که به شکل تعریف نشانههاش بالاتر ازش حرف زدیم و مختص به سیستمهای نرمافزاری بود، بد نیست یک گریزی بزنیم به کتاب Melanie Mitchell
با عنوان «سیری در نظریه پیچیدگی» (عنوان اصلی کتاب، Complexity: A Guided Tour) که اون هم کتابیه خوندنی و توصیهش میکنیم. در انتهای فصل اول کتاب، سیستم پیچیده رو به دو شکل تعریف میکنه:
سیستمی که شبکهٔ بزرگ اجزای آن که فاقد کنترل مرکزی هستند و مطابق با قواعد سادهای عمل میکنند، موجب پدیداد شدن رفتار پیچیدهٔ جمعی، پردازش اطلاعات پیشرفته، و انطباق از راه یادگیری یا تکامل میشود.
و تعریف دوم:
سیستمی که رفتارهای نابدیهی (nontrival) و نوظهور و خود-سازمان را بهنمایش میگذارد.
که فکر میکنم تعریف دوم، بیشتر با شرح نشانههایی که از یک سیستم نرمافزاری دیدیم همسو باشه.
👍4❤1🤔1
Forwarded from An Inspired Engineer
یکی از پرطرفدارترین آموزشهای دکتر کلامی در فرادرس، آموزش اصول و مبانی برنامهنویسی است که به صورت رایگان در دسترس است و به طور متوسط، در هر ماه بیش از ۴۰۰۰ نفر درخواست دسترسی به آن را ثبت میکنند.
🔗لینک آموزش:
https://faradars.org/courses/fvrprg101-programming-basics-concepts
این آموزش در کمتر از ۳ ساعت، هر آنچه را که برای ورود به دنیای برنامهنویسی لازم است، یاد میدهد. آموزش اصول و مبانی برنامهنویسی، در واقع درس شماره صفر سایر آموزشهای برنامهنویسی است و دانستن مفاهیم ارائه شده در آن، در یادگیری بهتر هر زبان برنامهنویسی دلخواه، کمککننده است.
دکتر کلامی هریس
🔗لینک آموزش:
https://faradars.org/courses/fvrprg101-programming-basics-concepts
این آموزش در کمتر از ۳ ساعت، هر آنچه را که برای ورود به دنیای برنامهنویسی لازم است، یاد میدهد. آموزش اصول و مبانی برنامهنویسی، در واقع درس شماره صفر سایر آموزشهای برنامهنویسی است و دانستن مفاهیم ارائه شده در آن، در یادگیری بهتر هر زبان برنامهنویسی دلخواه، کمککننده است.
دکتر کلامی هریس
👍6
Forwarded from An Inspired Engineer
همونطور که میدونین HTTP میاد روی TCP سوار میشه و توسط اون داده رو میفرسته، عملا پروتکل http چیزی جز یه مشت قوانین روی چند خط string نیست. اکثرا وظایفش توسط Tcp پیاده سازی شده و ما فکر میکنیم که Http داره نقشش رو خوب بازی میکنه.
حالا دوتا از این نقش هایی که توسط Tcp بازی میشن چی هستن؟
- اطمینان از تحویل داده: توی Http ما گارانتی اینو از پروتکل میگیریم که داده ها صحیح و سالم تحویل داده بشن
- ترتیب صحیح داده ها: توی شبکه ممکنه بستهها به صورت ناهمزمان و با ترتیبی غیر از ترتیب ارسال شده دریافت بشن، اما TCP این تضمین رو میده که دادهها توی مقصد به ترتیب ارسال مرتب و بازسازی بشن. خود HTTP هم از این ویژگی استفاده میکنه و نیازی به مدیریت ترتیب دادهها نداره.
به طور کلی، خیلی از ویژگی هایی که ما از HTTP میدونیم در حقیقت توسط TCP پیادهسازی میشن و HTTP بیشتر به عنوان یه لایه برای تعریف اون قوانینی که بالا گفتم برای تبادل این داده ها و نوع محتوای ارسال شده عمل میکنه.
همه ی اینارو گفتم که بگم تا حالا به این فکر کردین که بیاییم Http رو روی UDP پیاده سازی کنیم چی میشه؟ میشه پروتکل Http/3 که بهش میگن QUIC حالا چالشاش چیه؟ پستای بعدی میگم
@knowpow
حالا دوتا از این نقش هایی که توسط Tcp بازی میشن چی هستن؟
- اطمینان از تحویل داده: توی Http ما گارانتی اینو از پروتکل میگیریم که داده ها صحیح و سالم تحویل داده بشن
- ترتیب صحیح داده ها: توی شبکه ممکنه بستهها به صورت ناهمزمان و با ترتیبی غیر از ترتیب ارسال شده دریافت بشن، اما TCP این تضمین رو میده که دادهها توی مقصد به ترتیب ارسال مرتب و بازسازی بشن. خود HTTP هم از این ویژگی استفاده میکنه و نیازی به مدیریت ترتیب دادهها نداره.
به طور کلی، خیلی از ویژگی هایی که ما از HTTP میدونیم در حقیقت توسط TCP پیادهسازی میشن و HTTP بیشتر به عنوان یه لایه برای تعریف اون قوانینی که بالا گفتم برای تبادل این داده ها و نوع محتوای ارسال شده عمل میکنه.
همه ی اینارو گفتم که بگم تا حالا به این فکر کردین که بیاییم Http رو روی UDP پیاده سازی کنیم چی میشه؟ میشه پروتکل Http/3 که بهش میگن QUIC حالا چالشاش چیه؟ پستای بعدی میگم
@knowpow
👍18
Media is too big
VIEW IN TELEGRAM
توی این ویدئو تغییراتی توی کد دادم، تا وقتی کاربر لاگین شد، آیتم های سبد خریدی که توی دیتابیس داره، لود بشن و توی سبد خریدش مشاهده شون کنه.
اگه کاربر لاگین نکرده باشه و چندتا آیتم هم توی سبد خریدش داشته باشه (همون سبد خرید سشنی) ، بعد از لاگین، ابتدا آیتم های سبد خرید دیتابیسی لود میشن، سپس آیتم های سبد خرید سشنی توی دیتابیس ذخیره میشن.
✅این ویدئو بخشی از آپدیت جدید آموزش ساخت فروشگاه اینترنتی است.
لینک همین ویدئو در آپارت:
https://www.aparat.com/v/pneon5r
لینک یوتیوب:
https://youtu.be/w9_PnBoG1jU
✔️لینک سورس کد کامل دوره فروشگاه اینترنتی با جنگو:
https://github.com/miladhzz/daneshjooyar_shop2/
خوشحال میشم ریپو رو نقد کنید.
اگه کاربر لاگین نکرده باشه و چندتا آیتم هم توی سبد خریدش داشته باشه (همون سبد خرید سشنی) ، بعد از لاگین، ابتدا آیتم های سبد خرید دیتابیسی لود میشن، سپس آیتم های سبد خرید سشنی توی دیتابیس ذخیره میشن.
✅این ویدئو بخشی از آپدیت جدید آموزش ساخت فروشگاه اینترنتی است.
لینک همین ویدئو در آپارت:
https://www.aparat.com/v/pneon5r
لینک یوتیوب:
https://youtu.be/w9_PnBoG1jU
✔️لینک سورس کد کامل دوره فروشگاه اینترنتی با جنگو:
https://github.com/miladhzz/daneshjooyar_shop2/
خوشحال میشم ریپو رو نقد کنید.
👍6❤3
Forwarded from Python Hints
#Quick
داشتم پروژه
اولین کاری کردم این بوده که یک سری دیتا تست با
چیز جالبی که دیدم؛ پروژه موقع کار کردن با
ولی
حجم دیتاهای تست رو کم کردم و مشکل حل شد؛ توی چندتا تست مختلف که زدم دیدم مسئله و مشگل از سمت پیکج
بجای اینکه برای
مشکل خیلی ساده حل شد؛ ولی برای این حل ساده خیلی زمان و درک
اهمیت
داشتم پروژه
django
شرکت رو میخوندم یک مشکل داریم سر بعضی endpoint
ها و برخی تسکها. اولین کاری کردم این بوده که یک سری دیتا تست با
faker
بهش دادم مثه loadtest
ولی بدون ابزار و بعد هم profiling
گرفتم و ذخیره کردم.چیز جالبی که دیدم؛ پروژه موقع کار کردن با
redis
به مشکل میخورد.ولی
redis
منابعش بیشتر از حد مورد نیازش بود.حجم دیتاهای تست رو کم کردم و مشکل حل شد؛ توی چندتا تست مختلف که زدم دیدم مسئله و مشگل از سمت پیکج
redis
هست توی پایتون و راهکار ساده رو هم خود redis
داده (هرچند من برعکس بهش رسیدم)$ pip install "redis[hiredis]"
بجای اینکه برای
parse
کردن دیتا از python
استفاده کنه وقتی hiredis
رو نصب کنید از C
استفاده میکنه (بنچمارکاش هم توی گیتهاب hiredis
هست ببینید)مشکل خیلی ساده حل شد؛ ولی برای این حل ساده خیلی زمان و درک
profiling
لازم بود.اهمیت
profiling
👍23
یک سوال:
آیا هنوز داشتن sitemap در SEO سایت مون تاثیر داره؟
ممنون میشم اگه کسی تجربه ای داره، کامنت کنه.
آیا هنوز داشتن sitemap در SEO سایت مون تاثیر داره؟
ممنون میشم اگه کسی تجربه ای داره، کامنت کنه.
Final Results
57%
نمیدونم
24%
تاثیر زیادی داره
13%
تا حدودی تاثیر داره
3%
بودن و نبودنش فرقی نداره
2%
موتورهای جستجو دیگه بهش اهمیت نمیدن
2%
باید توضیح بدم. پس نظر میدم
👍1
این سوال ع stackoverflow برای منم سوال شده بود (البته عکسی که گذاشتم یه پاسخه)
Django 'Sites' Model - what is and why is 'SITE_ID = 1'?
لینک سوال:
https://stackoverflow.com/questions/25468676/django-sites-model-what-is-and-why-is-site-id-1
عکسی که گذاشتم اشاره کرده که تا جنگو 1.4 فریمورک sites کارش چیز دیگه ای بوده. ایشویی که اشاره کرده رو ببینید.
✔️راستی اون SITE_ID به خاطر این مقدارش 1 باید باشه، چون وقتی sites رو به installed_app اضافه میکنیم باید مایگریت کنیم و یه رکورد به جدول site اضافه میکنه با مقدار example.com و آیدی ش هم 1 هست.
و خب مسلما قابل تغییره
Django 'Sites' Model - what is and why is 'SITE_ID = 1'?
لینک سوال:
https://stackoverflow.com/questions/25468676/django-sites-model-what-is-and-why-is-site-id-1
عکسی که گذاشتم اشاره کرده که تا جنگو 1.4 فریمورک sites کارش چیز دیگه ای بوده. ایشویی که اشاره کرده رو ببینید.
✔️راستی اون SITE_ID به خاطر این مقدارش 1 باید باشه، چون وقتی sites رو به installed_app اضافه میکنیم باید مایگریت کنیم و یه رکورد به جدول site اضافه میکنه با مقدار example.com و آیدی ش هم 1 هست.
و خب مسلما قابل تغییره
👍5
Forwarded from Mahi in Tech
یکی از مواردی که میتونه دید خیلی خوبی نسبت به سناریوهای مختلف توی پروژههای کوچیک و بزرگ بهتون بده و شما رو به مهندس بهتری تبدیل کنه نه صرفا کدنویس، مطالعهی tech blog شرکتهای بزرگ هست؛ حالا چه ایرانی و چه خارجی. معمولا تجربیات و مقالات ارزشمندی بینشون پیدا میشه.
در ادامه لیستی از مقالات تخصصی و فرانتاندی شرکت PayPal رو که توسط Soheib Kiani معرفی شده بود قرار دادم:
🔻 چطور PayPal Checkout اپلیکیشن frontend خودش رو مقیاسپذیر کرد؟
https://bluepnume.medium.com/sane-scalable-angular-apps-are-tricky-but-not-impossible-lessons-learned-from-paypal-checkout-c5320558d4ef
🔻 PayPal درباره Dependency injection چه نظری داره؟
https://bluepnume.medium.com/dependency-injection-in-angular-isn-t-worth-it-more-lessons-learned-from-scaling-paypal-checkout-2189ec9c21a0
🔻 کاهش 1000 دکمه PayPal به iFrame
https://bluepnume.medium.com/less-is-more-reducing-thousands-of-paypal-buttons-into-a-single-iframe-using-xcomponent-d902d71d8875
🔻 درخواستهای cross-origin بدون CORS
https://bluepnume.medium.com/reinventing-cross-origin-requests-without-cors-b9c4cb645376
🔻 چرا اپلیکیشن وب جدید در PayPal از Typescript استفاده میکنه؟
https://medium.com/@kentcdodds/why-every-new-web-app-at-paypal-starts-with-typescript-9d1acc07c839
🔻 مقیاسپذیری GraphQL در PayPal
https://medium.com/paypal-tech/scaling-graphql-at-paypal-b5b5ac098810
🔻 کامپوننتهای UI قابل اشتراکگذاری PayPal در سطح Enterprise
https://medium.com/paypal-tech/reusing-ui-components-at-enterprise-level-a7df1ea1f8dd
🔻 اپلیکیشنهای PayPal معماری Microfrontend رو دنبال میکنند
https://medium.com/paypal-tech/how-micro-frontend-has-changed-our-team-dynamic-ba2f01597f48
🔻 توضیح PayPal درباره پذیرش GraphQL
https://medium.com/paypal-tech/graphql-at-paypal-an-adoption-story-b7e01175f2b7
🔻 داستان موفقیت PayPal Checkout
https://medium.com/paypal-tech/graphql-a-success-story-for-paypal-checkout-3482f724fb53
#PayPal #FrontEnd
در ادامه لیستی از مقالات تخصصی و فرانتاندی شرکت PayPal رو که توسط Soheib Kiani معرفی شده بود قرار دادم:
https://bluepnume.medium.com/sane-scalable-angular-apps-are-tricky-but-not-impossible-lessons-learned-from-paypal-checkout-c5320558d4ef
https://bluepnume.medium.com/dependency-injection-in-angular-isn-t-worth-it-more-lessons-learned-from-scaling-paypal-checkout-2189ec9c21a0
https://bluepnume.medium.com/less-is-more-reducing-thousands-of-paypal-buttons-into-a-single-iframe-using-xcomponent-d902d71d8875
https://bluepnume.medium.com/reinventing-cross-origin-requests-without-cors-b9c4cb645376
https://medium.com/@kentcdodds/why-every-new-web-app-at-paypal-starts-with-typescript-9d1acc07c839
https://medium.com/paypal-tech/scaling-graphql-at-paypal-b5b5ac098810
https://medium.com/paypal-tech/reusing-ui-components-at-enterprise-level-a7df1ea1f8dd
https://medium.com/paypal-tech/how-micro-frontend-has-changed-our-team-dynamic-ba2f01597f48
https://medium.com/paypal-tech/graphql-at-paypal-an-adoption-story-b7e01175f2b7
https://medium.com/paypal-tech/graphql-a-success-story-for-paypal-checkout-3482f724fb53
#PayPal #FrontEnd
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Media is too big
VIEW IN TELEGRAM
✅پیاده سازی sitemap در فروشگاه جنگو
توی این ویدئو یاد می گیریم sitemap چی هست و چه تاثیری روی SEO سایت میتونه داشته باشه.
همچنین روش پیاده سازی سایت مپ در پروژه جنگویی رو یاد میگیریم.
با تنظیمات و فیچرهای مختلف sitemap هم آشنا میشیم
و همچنین داستان SITE_ID = 1 رو متوجه میشیم که چرا باید مقدارش عدد یک باشه
لینک آپارات:
https://www.aparat.com/v/tuoj1xx
لینک یوتیوب:
https://youtu.be/zmj8CdpABbM
این ویدئو بخشی از آپدیت دوره فروشگاه جنگو ع
توی این ویدئو یاد می گیریم sitemap چی هست و چه تاثیری روی SEO سایت میتونه داشته باشه.
همچنین روش پیاده سازی سایت مپ در پروژه جنگویی رو یاد میگیریم.
با تنظیمات و فیچرهای مختلف sitemap هم آشنا میشیم
و همچنین داستان SITE_ID = 1 رو متوجه میشیم که چرا باید مقدارش عدد یک باشه
لینک آپارات:
https://www.aparat.com/v/tuoj1xx
لینک یوتیوب:
https://youtu.be/zmj8CdpABbM
این ویدئو بخشی از آپدیت دوره فروشگاه جنگو ع
👍11
Media is too big
VIEW IN TELEGRAM
✅گفتگو با نیما جمشیدی Database admin
🎧ویس این ویدئو:
https://t.me/djangolearn_ir/986
سوالاتی که از نیما پرسیدم:
-دبیرستان بودید یا هنرستان؟ چه رشته ای؟ به نظر شما هنرستان خوبه یا دبیرستان؟
-چه شرکت هایی کار کردید و چه سمتی داشتید؟
-توی حوزه کار خودتون بزرگترین دستاورد یا خفن ترین کاری که کردید چی بوده؟
-آیا مدرسه، دانشگاه میتونه به db admin خوب شدن کمک کنه؟
-آیا تخصص شما هم برنامه نویسی حساب میشه
-اگر برگردید عقب برنامه نویسی رو انتخاب می کنید یا dbadmin یا اصلا چیز دیگه ای؟
-اگه فقط دستورات sql بلد باشیم میتونیم همکار شما بشیم؟
-آیا sql server قوی ترین نرم افزار مدیریت دیتابیس ع؟
-اگر نسخه ۱۸ ساله خودشون رو ملاقات میکردن چه توصیه هایی بهشون میکردن و بهش چیا میگفتن
-اگه تو این دوره هم سن ما بودن چه شاخه ای رو برای ادامه تحصیل در دانشگاه انتخاب میکردن که بازار کار خوبی هم داشته باشه
-به نظر شما یه db admin چه ویژگی هایی باید داشته باشه که بهش بگیم حرفه ای؟
لینک ویدئو در آپارت:
https://www.aparat.com/v/elax9bc
لینک یوتیوب:
https://youtu.be/5ZEEfvjpQeo
🎧ویس این ویدئو:
https://t.me/djangolearn_ir/986
سوالاتی که از نیما پرسیدم:
-دبیرستان بودید یا هنرستان؟ چه رشته ای؟ به نظر شما هنرستان خوبه یا دبیرستان؟
-چه شرکت هایی کار کردید و چه سمتی داشتید؟
-توی حوزه کار خودتون بزرگترین دستاورد یا خفن ترین کاری که کردید چی بوده؟
-آیا مدرسه، دانشگاه میتونه به db admin خوب شدن کمک کنه؟
-آیا تخصص شما هم برنامه نویسی حساب میشه
-اگر برگردید عقب برنامه نویسی رو انتخاب می کنید یا dbadmin یا اصلا چیز دیگه ای؟
-اگه فقط دستورات sql بلد باشیم میتونیم همکار شما بشیم؟
-آیا sql server قوی ترین نرم افزار مدیریت دیتابیس ع؟
-اگر نسخه ۱۸ ساله خودشون رو ملاقات میکردن چه توصیه هایی بهشون میکردن و بهش چیا میگفتن
-اگه تو این دوره هم سن ما بودن چه شاخه ای رو برای ادامه تحصیل در دانشگاه انتخاب میکردن که بازار کار خوبی هم داشته باشه
-به نظر شما یه db admin چه ویژگی هایی باید داشته باشه که بهش بگیم حرفه ای؟
لینک ویدئو در آپارت:
https://www.aparat.com/v/elax9bc
لینک یوتیوب:
https://youtu.be/5ZEEfvjpQeo
👍7
Audio
🎧ویس گفتگو با نیما جمشیدی Database admin
سوالاتی که از نیما پرسیدم:
-چند سال دارید؟
-دبیرستان بودید یا هنرستان؟ چه رشته ای؟ به نظر شما هنرستان خوبه یا دبیرستان؟
-دانشگاه چی خوندید؟
-چه شرکت هایی کار کردید و چه سمتی داشتید؟
-توی حوزه کار خودتون بزرگترین دستاورد یا خفن ترین کاری که کردید چی بوده؟
-آیا مدرسه، دانشگاه میتونه به db admin خوب شدن کمک کنه؟
-آیا تخصص شما هم برنامه نویسی حساب میشه
-اگر برگردید عقب برنامه نویسی رو انتخاب می کنید یا dbadmin یا اصلا چیز دیگه ای؟
-اگه فقط دستورات sql بلد باشیم میتونیم همکار شما بشیم؟
-آیا sql server قوی ترین نرم افزار مدیریت دیتابیس ع؟
-اشتباهی که کردید و اگه برگریدید عقب مرتکبش نمیشید چیه?
-اگر نسخه ۱۸ ساله خودشون رو ملاقات میکردن چه توصیه هایی بهشون میکردن و بهش چیا میگفتن
-الگوی شما تا اینجای کار چه کسی بوده ؟
-اگه تو این دوره هم سن ما بودن چه شاخه ای رو برای ادامه تحصیل در دانشگاه انتخاب میکردن که بازار کار خوبی هم داشته باشه
-به نظر شما یه db admin چه ویژگی هایی باید داشته باشه که بهش بگیم حرفه ای؟
لینک ویدئوی این گفتگو:
https://t.me/djangolearn_ir/985
سوالاتی که از نیما پرسیدم:
-چند سال دارید؟
-دبیرستان بودید یا هنرستان؟ چه رشته ای؟ به نظر شما هنرستان خوبه یا دبیرستان؟
-دانشگاه چی خوندید؟
-چه شرکت هایی کار کردید و چه سمتی داشتید؟
-توی حوزه کار خودتون بزرگترین دستاورد یا خفن ترین کاری که کردید چی بوده؟
-آیا مدرسه، دانشگاه میتونه به db admin خوب شدن کمک کنه؟
-آیا تخصص شما هم برنامه نویسی حساب میشه
-اگر برگردید عقب برنامه نویسی رو انتخاب می کنید یا dbadmin یا اصلا چیز دیگه ای؟
-اگه فقط دستورات sql بلد باشیم میتونیم همکار شما بشیم؟
-آیا sql server قوی ترین نرم افزار مدیریت دیتابیس ع؟
-اشتباهی که کردید و اگه برگریدید عقب مرتکبش نمیشید چیه?
-اگر نسخه ۱۸ ساله خودشون رو ملاقات میکردن چه توصیه هایی بهشون میکردن و بهش چیا میگفتن
-الگوی شما تا اینجای کار چه کسی بوده ؟
-اگه تو این دوره هم سن ما بودن چه شاخه ای رو برای ادامه تحصیل در دانشگاه انتخاب میکردن که بازار کار خوبی هم داشته باشه
-به نظر شما یه db admin چه ویژگی هایی باید داشته باشه که بهش بگیم حرفه ای؟
لینک ویدئوی این گفتگو:
https://t.me/djangolearn_ir/985
👍4
Forwarded from PhiloLearn with ArshA
بریم با زبان سادهتر ببینیم چرا اختراعات AI دیپسیک همه رو انگشت به دهن گذاشته (و احتمالا مارکت کپ ۲ تریلیون دلاری انویددیا رو به خطر انداخته)
اول یکم زمینه رو توضیح بدیم: فعلا فرایند آموزش مدلهای AI به شدت پرهزینهست. انترپرایزهایی مثل OpenAI Anthropic و ... بیشتر از ۱۰۰ میلیون دلار فقط برای محاسبات خرج میکنن
پس نیاز به مراکز داده بسیار بزرگ با هزاران GPU چهل هزار دلاری دارن
انگار یه نیروگاه برق بسازی برای راهاندازی یک کارخونه
حالا DeepSeek اومده گفته «هه! اگه همه این کارها رو با ۵ میلیون دلار انجام دادم چی؟»
وحرف مفت هم نزده و واقعا این کار رو کرده!
مدل اونها توی تسکهای زیادی تونسته GPT-4 و Clause رو شکست بده
و این باعث شگفتی دنیای هوش مصنوعی شده!
چطور این کار رو کردن؟
همه چیز رو از اول بازاندیشی کردن. هوش مصنوعیهای سنتی مثل اینن که هر عدد رو با ۳۲ اعشار مینویسن.
دیپسیک گفته« خب چرا با ۸ تا ننویسیم؟ تقریبا همون قدر دقیقه!»
بوم! ۷۵٪ کاهش در حافظه مورد نیاز!
بعد رفتن سراغ سیستم Multi token
هوش مصنوعیهای نرمال مثل یه بچه کلاس اولی میخونن: « بابا .... نان .... داد»
ولی دیپسیک کل جمله رو یکجا میخونه با سرعت ۲ برابر و دقت ۹۰٪
وقتی قراره میلیاردها کلمه رو تحلیل کنی این خیلی مهمه!
ولی قسمت هوشمندانهشون اینه:
یه چیزی ساختن مثل «سیستم تخصص»
به جای اینکه یه AI غولآسا همه چیز رو بدونه (مثلا یه آدم که هم دکتر باشه هم مهندس، هم جامعهشناس و ... )، فقط از متخصصینی استفاده میکنن که در مواقع نیاز فراخوانی میشن
مدلهای نرمال سنتی؟
تمام ۱.۸ تریلیون پارامتر در لحظه فعالن
دیپسیک؟
۶۷۱ بیلیون در مجموع داره که ۳۷ بیلیونش در لحظه فعالن
مثل این میمونه که تیم بزرگی داشته باشی ولی فقط اونی رو صدا بزنی که الان برای یک کاری بهش نیاز داری
نتیجه حیرتانگیزه:
هزینه آموزش مدل: ۱۰۰ میلیون >> ۵ میلیون
تعداد GPU: صد هزار > دو هزار
هزینه API: نود و پنج درصد ارزونتر
میتونه روی کارت گرافیکهای گیمینگ هم ران بشه بدون نیاز به سختافزار مرکز داده
حالا ممکنه بگی «صبر کن ببینم! حتما یه ریگی توی کفششون هست!»
اصلا قسمت جذاب داستان همینه: همهاش اپن سورسه! همه میتونن کارشون رو بررسی کنن. کدش عمومیه. راهنمای تکنیکال همه چیز رو توضیح میده. جادو جنبل نکردن، صرفا هوشمندانه مهندسی کردن.
چرا این داستان مهمه؟
چون این فرض و مدل رو که «فقط کمپانیهای بزرگ میتونن توی عرصه AI بازی کنن» رو باطل میکنه
برای انویدیا این ترسناکه! کل مدل بیزنسشون بر مبنای این بود که با مارجین ۹۰ درصد GPU های فوق گرون بفروشن. حالا معلومه مشکل چیه اگه همه بتونن با GPUهای گیمینگ مدل هوش مصنوعی بسازن!
ضربه نهایی هم این بود:
دیپسیک این کار رو با تیمی کمتر از ۲۰۰ نفر انجام داد.
در حالیکه هزینههایی که متا برای حقوق کارکنانش میپردازه از کل بودجه آموزش دیپسیک بیشتره و مدلشون هم به این اندازه خوب نیست
یه داستان کلاسیک از شکستن وضع موجود:
در حالیکه بنگاههای مستقر دارن فرآیندهای موجودشون رو بهینهسازی میکنن، بتشکنها میان و کل پروسه رو از اول بازاندیشی میکنن
دیپسیک هم پرسید «چی میشه به جای اینکه هی سختافزار اضافه کنیم، این کار رو هوشمندانهتر انجام بدیم؟»
عواقبش چشمگیره:
- دسترسی به توسعه هوش مصنوعی بیشتر میشه
- رقابت به شدت افزایش پیدا میکنه
- «سنگر»های بزرگ شرکتهای تکنولوژیک مثل دستاندازهای کوچیک جلوه می کنه
- نیازهای سختافزاری و هزینهها به شدت کم میشه
البته غولهایی مثل OpenAI و Anthropic بیکار نمیشینن. احتمالا همین الان هم شروع کردن به استفاده و به کارگیری این ابداعات. ولی غول بهرهوری از چراغ جادو اومده بیرون. دیگه نمیتونی برگردی به دورانی که هی سختافزار اضافه کنی
به نظر میرسه این لحظه از اونهاست که بعدا به عنوان نقطه عطف بهش نگاه میکنیم. درست مثل موقعهایی که PCها کامپیوترهای بزرگ رو از رده خارج کردن، یا محاسبات ابری همه چیز رو تغییر داد.
هوش مصنوعی قراره باز هزینه بسیار کمتر، و به مقدار بیشتری در دسترس قرار بگیره.
سوال این نیست که آیا این باعث تغییر زمین بازیگران بزرگ این عرصه میشه یا نه، سوال اینه که با چه سرعتی این کار رو میکنه.
https://x.com/Cryptonut24/status/1883897510936314158
@PhiloLearn
اول یکم زمینه رو توضیح بدیم: فعلا فرایند آموزش مدلهای AI به شدت پرهزینهست. انترپرایزهایی مثل OpenAI Anthropic و ... بیشتر از ۱۰۰ میلیون دلار فقط برای محاسبات خرج میکنن
پس نیاز به مراکز داده بسیار بزرگ با هزاران GPU چهل هزار دلاری دارن
انگار یه نیروگاه برق بسازی برای راهاندازی یک کارخونه
حالا DeepSeek اومده گفته «هه! اگه همه این کارها رو با ۵ میلیون دلار انجام دادم چی؟»
وحرف مفت هم نزده و واقعا این کار رو کرده!
مدل اونها توی تسکهای زیادی تونسته GPT-4 و Clause رو شکست بده
و این باعث شگفتی دنیای هوش مصنوعی شده!
چطور این کار رو کردن؟
همه چیز رو از اول بازاندیشی کردن. هوش مصنوعیهای سنتی مثل اینن که هر عدد رو با ۳۲ اعشار مینویسن.
دیپسیک گفته« خب چرا با ۸ تا ننویسیم؟ تقریبا همون قدر دقیقه!»
بوم! ۷۵٪ کاهش در حافظه مورد نیاز!
بعد رفتن سراغ سیستم Multi token
هوش مصنوعیهای نرمال مثل یه بچه کلاس اولی میخونن: « بابا .... نان .... داد»
ولی دیپسیک کل جمله رو یکجا میخونه با سرعت ۲ برابر و دقت ۹۰٪
وقتی قراره میلیاردها کلمه رو تحلیل کنی این خیلی مهمه!
ولی قسمت هوشمندانهشون اینه:
یه چیزی ساختن مثل «سیستم تخصص»
به جای اینکه یه AI غولآسا همه چیز رو بدونه (مثلا یه آدم که هم دکتر باشه هم مهندس، هم جامعهشناس و ... )، فقط از متخصصینی استفاده میکنن که در مواقع نیاز فراخوانی میشن
مدلهای نرمال سنتی؟
تمام ۱.۸ تریلیون پارامتر در لحظه فعالن
دیپسیک؟
۶۷۱ بیلیون در مجموع داره که ۳۷ بیلیونش در لحظه فعالن
مثل این میمونه که تیم بزرگی داشته باشی ولی فقط اونی رو صدا بزنی که الان برای یک کاری بهش نیاز داری
نتیجه حیرتانگیزه:
هزینه آموزش مدل: ۱۰۰ میلیون >> ۵ میلیون
تعداد GPU: صد هزار > دو هزار
هزینه API: نود و پنج درصد ارزونتر
میتونه روی کارت گرافیکهای گیمینگ هم ران بشه بدون نیاز به سختافزار مرکز داده
حالا ممکنه بگی «صبر کن ببینم! حتما یه ریگی توی کفششون هست!»
اصلا قسمت جذاب داستان همینه: همهاش اپن سورسه! همه میتونن کارشون رو بررسی کنن. کدش عمومیه. راهنمای تکنیکال همه چیز رو توضیح میده. جادو جنبل نکردن، صرفا هوشمندانه مهندسی کردن.
چرا این داستان مهمه؟
چون این فرض و مدل رو که «فقط کمپانیهای بزرگ میتونن توی عرصه AI بازی کنن» رو باطل میکنه
برای انویدیا این ترسناکه! کل مدل بیزنسشون بر مبنای این بود که با مارجین ۹۰ درصد GPU های فوق گرون بفروشن. حالا معلومه مشکل چیه اگه همه بتونن با GPUهای گیمینگ مدل هوش مصنوعی بسازن!
ضربه نهایی هم این بود:
دیپسیک این کار رو با تیمی کمتر از ۲۰۰ نفر انجام داد.
در حالیکه هزینههایی که متا برای حقوق کارکنانش میپردازه از کل بودجه آموزش دیپسیک بیشتره و مدلشون هم به این اندازه خوب نیست
یه داستان کلاسیک از شکستن وضع موجود:
در حالیکه بنگاههای مستقر دارن فرآیندهای موجودشون رو بهینهسازی میکنن، بتشکنها میان و کل پروسه رو از اول بازاندیشی میکنن
دیپسیک هم پرسید «چی میشه به جای اینکه هی سختافزار اضافه کنیم، این کار رو هوشمندانهتر انجام بدیم؟»
عواقبش چشمگیره:
- دسترسی به توسعه هوش مصنوعی بیشتر میشه
- رقابت به شدت افزایش پیدا میکنه
- «سنگر»های بزرگ شرکتهای تکنولوژیک مثل دستاندازهای کوچیک جلوه می کنه
- نیازهای سختافزاری و هزینهها به شدت کم میشه
البته غولهایی مثل OpenAI و Anthropic بیکار نمیشینن. احتمالا همین الان هم شروع کردن به استفاده و به کارگیری این ابداعات. ولی غول بهرهوری از چراغ جادو اومده بیرون. دیگه نمیتونی برگردی به دورانی که هی سختافزار اضافه کنی
به نظر میرسه این لحظه از اونهاست که بعدا به عنوان نقطه عطف بهش نگاه میکنیم. درست مثل موقعهایی که PCها کامپیوترهای بزرگ رو از رده خارج کردن، یا محاسبات ابری همه چیز رو تغییر داد.
هوش مصنوعی قراره باز هزینه بسیار کمتر، و به مقدار بیشتری در دسترس قرار بگیره.
سوال این نیست که آیا این باعث تغییر زمین بازیگران بزرگ این عرصه میشه یا نه، سوال اینه که با چه سرعتی این کار رو میکنه.
https://x.com/Cryptonut24/status/1883897510936314158
@PhiloLearn
X (formerly Twitter)
freemartian.Patron (@Cryptonut24) on X
توییت این شخص در مورد DeepSeek رو حدودی ترجمه میکنم دستتون بیاد قضیه چیه؛ با ما همراه باشید.
بریم با زبان سادهتر ببینیم چرا اختراعات AI دیپسیک همه رو انگشت به دهن گذاشته (و احتمالا مارکت کپ ۲ تریلیون دلاری انویددیا رو به خطر انداخته)🧵
بریم با زبان سادهتر ببینیم چرا اختراعات AI دیپسیک همه رو انگشت به دهن گذاشته (و احتمالا مارکت کپ ۲ تریلیون دلاری انویددیا رو به خطر انداخته)🧵
👍26👏1
bigdeli.pdf
1.2 MB
✅نرمال سازی پایگاه داده چیه و چطور انجام میشه
مطلبی از لینکدین علی بیگدلی
نرمالسازی یه روشیه که توی طراحی پایگاه دادهها استفاده میشه تا دادهها رو منظم و کارآمد ذخیره کنیم. هدفش اینه که از دادههای تکراری خلاص بشیم و از بروز مشکلاتی مثل ناسازگاری اطلاعات جلوگیری کنیم. به این ترتیب، دادهها به شکلی ذخیره میشن که فقط یک نسخه از هر اطلاعات وجود داشته باشه، یعنی اگر بخواهیم اطلاعات رو تغییر بدیم، فقط یهجا باید تغییر کنیم و همهجا بهروز میشه. اینطوری هم فضای ذخیرهسازی کمتر میشه و هم کار با دادهها سریعتر و راحتتر میشه.
چطور انجام میشه؟ برای نرمالسازی، دادهها رو توی جداول مختلف تقسیم میکنیم و این جداول رو طوری طراحی میکنیم که اطلاعات تکراری نباشه و همهچیز بهدرستی ارتباط داشته باشه.
مزایای نرمالسازی:
- کاهش افزونگی دادهها
- جلوگیری از ناسازگاریها
- سادهسازی بهروزرسانی و نگهداری دادهها
- بهبود عملکرد کوئریها
قطعا نیاز به توضیحات بیشتری هستش برای همین رفرنس های مناسبی رو براتون در نظر گرفتم.
همه پست جا نشد: لینکش
مطلبی از لینکدین علی بیگدلی
نرمالسازی یه روشیه که توی طراحی پایگاه دادهها استفاده میشه تا دادهها رو منظم و کارآمد ذخیره کنیم. هدفش اینه که از دادههای تکراری خلاص بشیم و از بروز مشکلاتی مثل ناسازگاری اطلاعات جلوگیری کنیم. به این ترتیب، دادهها به شکلی ذخیره میشن که فقط یک نسخه از هر اطلاعات وجود داشته باشه، یعنی اگر بخواهیم اطلاعات رو تغییر بدیم، فقط یهجا باید تغییر کنیم و همهجا بهروز میشه. اینطوری هم فضای ذخیرهسازی کمتر میشه و هم کار با دادهها سریعتر و راحتتر میشه.
چطور انجام میشه؟ برای نرمالسازی، دادهها رو توی جداول مختلف تقسیم میکنیم و این جداول رو طوری طراحی میکنیم که اطلاعات تکراری نباشه و همهچیز بهدرستی ارتباط داشته باشه.
مزایای نرمالسازی:
- کاهش افزونگی دادهها
- جلوگیری از ناسازگاریها
- سادهسازی بهروزرسانی و نگهداری دادهها
- بهبود عملکرد کوئریها
قطعا نیاز به توضیحات بیشتری هستش برای همین رفرنس های مناسبی رو براتون در نظر گرفتم.
همه پست جا نشد: لینکش
❤7👍5
✅جعبه های شانس دانشجویار رو تست کنید.
شاید تخفیف خوبی گرفتید.
یه نفر دوره من رو با 90 درصد تخفیف خریده 😬
لینکش:
https://www.daneshjooyar.com/landing/birthday-1403/
شاید تخفیف خوبی گرفتید.
یه نفر دوره من رو با 90 درصد تخفیف خریده 😬
لینکش:
https://www.daneshjooyar.com/landing/birthday-1403/
👍6❤2👎1😁1🤮1
Forwarded from Easy Microservices (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
وقتی هنوز به میزان کافی متوجه بیزنس نشدی سعی نکن معماری خفنی پیادهسازی کنی. اینکار باعث میشه به بیزنس سرعت ببخشی.
چون اگه اینکار رو نکنی و سعی کنی به بهترین شکل ممکن از همون اول بری جلو مطمئن باش وقتی بیزنس رو فهمیدی با خودت میگی ای کاش این قسمتش رو اینطوری زده بودم. یعنی هم بیزنس رو از دست میدی هم کولهباری از بدهی فنی رو دوشته...
ولی خب اگر در شروع کار over engineering انجام ندی، به زودی ایدههای جالبی به ذهنت میرسه که هم بیزنس رو دگرگون میکنه و هم کد رو. ولی خب تا اینجا بیزنس رو از دست ندادی و مشتری داره از همون کد معمولی شما استفاده میکنه که قراره بدهیهای فنیش رو با ایدههای جدید حل و فصل کنی.
اگر بیزنس رو سیر کنی، بیزنس هم بهت فرصت میده تا بدهیهای فنی خودت رو رفع کنی، در غیر این صورت با یک بیزنس طلبکار طرفی که ازت خروجی میخواد و بدهیهای فنیای که دست از سرت بر نمیدارن.
به عبارتی، شما همیشه در هر صورت بدهی فنی خواهی داشت ولی اگر به مشتری بدهکار باشی هم اعصاب نداری هم همیشه بدهکاری... پس در ابتدا مشتری رو فراموش نکن. و برای ساختن یک سیستم خوب عجول نباش، یک سیستم خوب باید راهش رو کم کم پیدا کنه و هم باید از نظر مالی تغذیه بشه و هم از نظر کیفی... نه فقط کیفی...
#بدهی_فنی
#over_engineering
چون اگه اینکار رو نکنی و سعی کنی به بهترین شکل ممکن از همون اول بری جلو مطمئن باش وقتی بیزنس رو فهمیدی با خودت میگی ای کاش این قسمتش رو اینطوری زده بودم. یعنی هم بیزنس رو از دست میدی هم کولهباری از بدهی فنی رو دوشته...
ولی خب اگر در شروع کار over engineering انجام ندی، به زودی ایدههای جالبی به ذهنت میرسه که هم بیزنس رو دگرگون میکنه و هم کد رو. ولی خب تا اینجا بیزنس رو از دست ندادی و مشتری داره از همون کد معمولی شما استفاده میکنه که قراره بدهیهای فنیش رو با ایدههای جدید حل و فصل کنی.
اگر بیزنس رو سیر کنی، بیزنس هم بهت فرصت میده تا بدهیهای فنی خودت رو رفع کنی، در غیر این صورت با یک بیزنس طلبکار طرفی که ازت خروجی میخواد و بدهیهای فنیای که دست از سرت بر نمیدارن.
به عبارتی، شما همیشه در هر صورت بدهی فنی خواهی داشت ولی اگر به مشتری بدهکار باشی هم اعصاب نداری هم همیشه بدهکاری... پس در ابتدا مشتری رو فراموش نکن. و برای ساختن یک سیستم خوب عجول نباش، یک سیستم خوب باید راهش رو کم کم پیدا کنه و هم باید از نظر مالی تغذیه بشه و هم از نظر کیفی... نه فقط کیفی...
#بدهی_فنی
#over_engineering
👍18👎1