✅از لینکدین Hossein Nazari
مخاطبم بیشتر جوونای عزیز جویای کار هست، خیلی توجه کنید.
دیروز با دوست عزیزی صحبت میکردم و چالش پیدا کردن کار در سن بالا رو با هم صحبت میکردیم.
یه سوال خیلی مهم از من پرسید که نتونستم بهش جواب درستی بدم، سوال با این مفهوم که چرا پزشک، مشاور، وکیل و حسابدار، هرچقدر که سنشون بالاتر میره مشتری شون بیشتر میشه حتی با وجود دستمزد بیشتر، ولی برنامه نویس ها در سنین بالاتر خواهانشون کمتر میشه؟
من برنامه نویسی به شیوه صرفا کارمندی رو یه شغل پایدار در بلند مدت نمیدونم، و فکر میکنم باید به فکر روش های درآمدزایی متفاوت بود.
فکر می کنید برنامه نویسی بعد از چهل سالگی چه شکلی میشه؟
خیلی عدد ۴۰ مهم نیست، مهم مرز سنی مشخصی هست که بعدش چالش های ویژه خودش رو داره برای کار کردن و کار پیدا کردن.
تجربه شخص ممکنه بیش از حد زیاد باشه، حوصله کار شخص کمتر از حد قابل قبول باشه و همچنین، سطح انتظار حقوقی شخص بالا میره و هر شرکتی نمیتونه انتظاراتش رو برآورده کنه. و جمع این فاکتورها ممکنه فرصت های شغلی رو کم کنه.
حرف آخر اینکه خوبه که کارمندی و برنامه نویسی رو تجربه کنید، اما شغل دائم نبینیدش، چون میتونه چالش های جدی ایجاد کنه در سنین بالاتر.
در آخر خوشحال میشم اگه تجربه و راهکاری برای این چالش دارید و حتی تجربه ای دارید، کامنت کنید.
مخاطبم بیشتر جوونای عزیز جویای کار هست، خیلی توجه کنید.
دیروز با دوست عزیزی صحبت میکردم و چالش پیدا کردن کار در سن بالا رو با هم صحبت میکردیم.
یه سوال خیلی مهم از من پرسید که نتونستم بهش جواب درستی بدم، سوال با این مفهوم که چرا پزشک، مشاور، وکیل و حسابدار، هرچقدر که سنشون بالاتر میره مشتری شون بیشتر میشه حتی با وجود دستمزد بیشتر، ولی برنامه نویس ها در سنین بالاتر خواهانشون کمتر میشه؟
من برنامه نویسی به شیوه صرفا کارمندی رو یه شغل پایدار در بلند مدت نمیدونم، و فکر میکنم باید به فکر روش های درآمدزایی متفاوت بود.
فکر می کنید برنامه نویسی بعد از چهل سالگی چه شکلی میشه؟
خیلی عدد ۴۰ مهم نیست، مهم مرز سنی مشخصی هست که بعدش چالش های ویژه خودش رو داره برای کار کردن و کار پیدا کردن.
تجربه شخص ممکنه بیش از حد زیاد باشه، حوصله کار شخص کمتر از حد قابل قبول باشه و همچنین، سطح انتظار حقوقی شخص بالا میره و هر شرکتی نمیتونه انتظاراتش رو برآورده کنه. و جمع این فاکتورها ممکنه فرصت های شغلی رو کم کنه.
حرف آخر اینکه خوبه که کارمندی و برنامه نویسی رو تجربه کنید، اما شغل دائم نبینیدش، چون میتونه چالش های جدی ایجاد کنه در سنین بالاتر.
در آخر خوشحال میشم اگه تجربه و راهکاری برای این چالش دارید و حتی تجربه ای دارید، کامنت کنید.
👍13
Forwarded from Ninja Learn | نینجا لرن
💎معرفی دیتابیس MongoDB 💎
دیتابیس MongoDB یکی از محبوبترین دیتابیسهای NoSQL تو دنیای امروزه.
به جای اینکه مثل دیتابیسهای رابطهای (مثل MySQL یا PostgreSQL) از جداول و ردیفها استفاده کنه، اطلاعات رو به شکل Document ذخیره میکنه که ساختارش خیلی شبیه به JSON هست.
هر داکیومنت میتونه شامل انواع مختلفی از دادهها باشه، و مهمتر از همه، هیچ محدودیتی هم روی ساختار دادهها وجود نداره.
حالا چرا MongoDB انقدر محبوبه؟
1⃣ انعطافپذیری بالا :
توی MongoDB، نیازی نیست برای همه رکوردها یک ساختار ثابت داشته باشی.
مثلاً توی یه دیتابیس سنتی اگه یک فیلد جدید اضافه کنی باید اون فیلد رو به همه رکوردها اضافه کنی.
اما توی Mongo، هر Document میتونه فیلدهای خاص خودش رو داشته باشه. یعنی اگه توی یک داکویمنت مثلاً فیلد "address" داشته باشی و توی داکیومنت دیگه نداشته باشی، هیچ مشکلی پیش نمیاد.
مثال:
2⃣ مقیاسپذیری بالا
اگه یه پروژه خیلی بزرگ داشته باشی که نیاز به مقیاسپذیری بالا داره (مثلاً یه فروشگاه اینترنتی با میلیونها کاربر)، MongoDB میتونه راحت با افزایش حجم دادهها سازگار بشه. Sharding توی Mongo بهت کمک میکنه که دیتابیس رو روی چندین سرور تقسیم کنی و عملکرد رو بالا ببری.
3⃣ سرعت بالا در خوندن و نوشتن دادهها:
چون MongoDB داکیومنت ها رو به صورت ساده و با ساختار JSON-گونه ذخیره میکنه، خوندن و نوشتن دادهها خیلی سریعتر از بعضی دیتابیسهای سنتی انجام میشه. این ویژگی به خصوص برای اپلیکیشنهایی که دادههای زیاد و پویا دارن خیلی مفیده.
4⃣ مناسب برای دادههای پیچیده و پویا
تو برنامههایی که دادههاشون خیلی سریع تغییر میکنه و یا نوع دادهها ممکنه پیچیده باشه (مثل پروژههای اینترنت اشیا، شبکههای اجتماعی یا اپلیکیشنهای موبایل)، MongoDB انتخاب بهتریه. چون لازم نیست هر دفعه که ساختار دادت عوض میشه، کل دیتابیس رو دوباره طراحی کنی.
حالا MongoDB چطور کار میکنه؟🤔
دادهها توی MongoDB به شکل مجموعهای از اسناد ذخیره میشن. هر سند مثل یک فایل JSON عمل میکنه. برای کار با Mongo، نیازی نیست اول دیتابیس و جداول رو مثل سیستمهای رابطهای تعریف کنی. هر وقت داکیومنتی رو به Mongo اضافه کنی، خودش به صورت خودکار دیتابیس و کالکشنها (معادل جدول توی دیتابیسهای رابطهای) رو ایجاد میکنه.
مثال از یک داکویمنت در MongoDB:
این داکیومنت شامل یه _id یکتا است که MongoDB خودش به طور خودکار تولید میکنه
❓چرا MongoDB؟
1⃣ انعطافپذیری توی ساختار داده (Schema less)
2⃣ مقیاس پذیری:
مناسب برای پروژههای بزرگ
3⃣ سرعت بالا:
سادگی استفاده و خواندن دادههای حجیم
4⃣ سادگی استفاده:
راحت و بدون درد
جمع بندی 🎯
فهمیدیمMongoDB انتخاب خوبیه برای وقتی که پروژهت نیاز به تغییرات سریع داره، دادهها ساختار پیچیدهای دارن، یا حجم بالایی از دادهها رو باید ذخیره کنی. به همین خاطر کمپانی های بزرگ مثل Uber ،Lyft، eBay از MongoDB استفاده میکنن.
امیدوارم مفید بود باشه :)
@ninja_learn_ir
دیتابیس MongoDB یکی از محبوبترین دیتابیسهای NoSQL تو دنیای امروزه.
به جای اینکه مثل دیتابیسهای رابطهای (مثل MySQL یا PostgreSQL) از جداول و ردیفها استفاده کنه، اطلاعات رو به شکل Document ذخیره میکنه که ساختارش خیلی شبیه به JSON هست.
هر داکیومنت میتونه شامل انواع مختلفی از دادهها باشه، و مهمتر از همه، هیچ محدودیتی هم روی ساختار دادهها وجود نداره.
حالا چرا MongoDB انقدر محبوبه؟
1⃣ انعطافپذیری بالا :
توی MongoDB، نیازی نیست برای همه رکوردها یک ساختار ثابت داشته باشی.
مثلاً توی یه دیتابیس سنتی اگه یک فیلد جدید اضافه کنی باید اون فیلد رو به همه رکوردها اضافه کنی.
اما توی Mongo، هر Document میتونه فیلدهای خاص خودش رو داشته باشه. یعنی اگه توی یک داکویمنت مثلاً فیلد "address" داشته باشی و توی داکیومنت دیگه نداشته باشی، هیچ مشکلی پیش نمیاد.
مثال:
{
"name": "Ali",
"age": 25,
"email": "ali@example.com"
}
{
"name": "Sara",
"age": 30
}
2⃣ مقیاسپذیری بالا
اگه یه پروژه خیلی بزرگ داشته باشی که نیاز به مقیاسپذیری بالا داره (مثلاً یه فروشگاه اینترنتی با میلیونها کاربر)، MongoDB میتونه راحت با افزایش حجم دادهها سازگار بشه. Sharding توی Mongo بهت کمک میکنه که دیتابیس رو روی چندین سرور تقسیم کنی و عملکرد رو بالا ببری.
3⃣ سرعت بالا در خوندن و نوشتن دادهها:
چون MongoDB داکیومنت ها رو به صورت ساده و با ساختار JSON-گونه ذخیره میکنه، خوندن و نوشتن دادهها خیلی سریعتر از بعضی دیتابیسهای سنتی انجام میشه. این ویژگی به خصوص برای اپلیکیشنهایی که دادههای زیاد و پویا دارن خیلی مفیده.
4⃣ مناسب برای دادههای پیچیده و پویا
تو برنامههایی که دادههاشون خیلی سریع تغییر میکنه و یا نوع دادهها ممکنه پیچیده باشه (مثل پروژههای اینترنت اشیا، شبکههای اجتماعی یا اپلیکیشنهای موبایل)، MongoDB انتخاب بهتریه. چون لازم نیست هر دفعه که ساختار دادت عوض میشه، کل دیتابیس رو دوباره طراحی کنی.
حالا MongoDB چطور کار میکنه؟🤔
دادهها توی MongoDB به شکل مجموعهای از اسناد ذخیره میشن. هر سند مثل یک فایل JSON عمل میکنه. برای کار با Mongo، نیازی نیست اول دیتابیس و جداول رو مثل سیستمهای رابطهای تعریف کنی. هر وقت داکیومنتی رو به Mongo اضافه کنی، خودش به صورت خودکار دیتابیس و کالکشنها (معادل جدول توی دیتابیسهای رابطهای) رو ایجاد میکنه.
مثال از یک داکویمنت در MongoDB:
{
"_id": "60c72b2f9b1e8e0015cfd31a",
"name": "Product1",
"price": 100,
"catego_idlectronics"
}
این داکیومنت شامل یه _id یکتا است که MongoDB خودش به طور خودکار تولید میکنه
❓چرا MongoDB؟
1⃣ انعطافپذیری توی ساختار داده (Schema less)
2⃣ مقیاس پذیری:
مناسب برای پروژههای بزرگ
3⃣ سرعت بالا:
سادگی استفاده و خواندن دادههای حجیم
4⃣ سادگی استفاده:
راحت و بدون درد
جمع بندی 🎯
فهمیدیمMongoDB انتخاب خوبیه برای وقتی که پروژهت نیاز به تغییرات سریع داره، دادهها ساختار پیچیدهای دارن، یا حجم بالایی از دادهها رو باید ذخیره کنی. به همین خاطر کمپانی های بزرگ مثل Uber ،Lyft، eBay از MongoDB استفاده میکنن.
#mongodb #db #nosql
❤6👍4🔥1
Forwarded from Python BackendHub (Mani)
AioClock
در ماه ۴ هزار دانلود داره 🚀
یک شرکت بزرگ تو برزیل هم داره ازش استفاده میکنه و تو لینکدین ازم تشکر کردن خیلی حس خوبی داشت :))
واقعا دوست دارم فول تایم اوپن سورس کار کنم. و مثلا همین پروژه naked sqlalchemy ام حاصله دو شب کار بود.
ولی متاسفانه هنوز به نقطه ای نرسیدم که بتونم کسب درآمد کنم از پروژه اوپن سورسم
برای همین به حمایتتون نیاز دارم این حمایت میتونه یک استار گیت هاب باشه, که پروژه هام بیشتر دیده شه و به اون نقطه نزدیک تر شم 🫶
فریم ورک/لایبری های مفید اوپن سورسی که تاحالا منتشر کردم:
AioClock - A modern python scheduling framework with dependency injection and modular integration support. Alternative for Rocketry or apscheduler
Naked SQLA - A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy ORM.
CfCrawler - Cloudflare scraper and cralwer written in Async, In-place library for HTTPX. Crawl website that has cloudflare enabled, easier than ever!
@PyBackendHub
در ماه ۴ هزار دانلود داره 🚀
یک شرکت بزرگ تو برزیل هم داره ازش استفاده میکنه و تو لینکدین ازم تشکر کردن خیلی حس خوبی داشت :))
واقعا دوست دارم فول تایم اوپن سورس کار کنم. و مثلا همین پروژه naked sqlalchemy ام حاصله دو شب کار بود.
ولی متاسفانه هنوز به نقطه ای نرسیدم که بتونم کسب درآمد کنم از پروژه اوپن سورسم
برای همین به حمایتتون نیاز دارم این حمایت میتونه یک استار گیت هاب باشه, که پروژه هام بیشتر دیده شه و به اون نقطه نزدیک تر شم 🫶
فریم ورک/لایبری های مفید اوپن سورسی که تاحالا منتشر کردم:
AioClock - A modern python scheduling framework with dependency injection and modular integration support. Alternative for Rocketry or apscheduler
Naked SQLA - A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy ORM.
CfCrawler - Cloudflare scraper and cralwer written in Async, In-place library for HTTPX. Crawl website that has cloudflare enabled, easier than ever!
@PyBackendHub
🔥8👍3
👌این عکسو دادم به ربات هوشیفای گفتم متن های عکس رو بده. نتیجه:
ترجمه متنهای موجود در عکس به شرح زیر است:
بالا:
"تمام زیرساختهای دیجیتال مدرن"
پایین:
"یک پروژه که یک فرد تصادفی در نبراسکا از سال 2003 به طور بیمنت نگهداری کرده است"
قصدم تبلیغ نبود. نکته عکس جالب بود و باهاش هوشیفای رو هم تست کردم.
لینک ربات هم نمیدم
ترجمه متنهای موجود در عکس به شرح زیر است:
بالا:
"تمام زیرساختهای دیجیتال مدرن"
پایین:
"یک پروژه که یک فرد تصادفی در نبراسکا از سال 2003 به طور بیمنت نگهداری کرده است"
قصدم تبلیغ نبود. نکته عکس جالب بود و باهاش هوشیفای رو هم تست کردم.
لینک ربات هم نمیدم
👍4
✅سوال جنگویی
این ویو (تصویر سفید) رو دارم. و میخوام class-based ش کنم. و صفحه بندی یا pagination هم داشته باشه.
تصمیم می گیرم از ListView ارث بری کنم (تصویر سیاه)
حالا با توجه به اینکه صفحه بندی رو میخوام و میخوام کمترین و مفهوم ترین کد رو بنویسم. چکار کنم؟
این ویو (تصویر سفید) رو دارم. و میخوام class-based ش کنم. و صفحه بندی یا pagination هم داشته باشه.
تصمیم می گیرم از ListView ارث بری کنم (تصویر سیاه)
حالا با توجه به اینکه صفحه بندی رو میخوام و میخوام کمترین و مفهوم ترین کد رو بنویسم. چکار کنم؟
❤1
Forwarded from Python Hints
از صبح داشتم یک پروژه رو
دسترسی به کدهای قدیمی هم گرفتم، میبینم تست نویسی برای این باگ تو زبان و فریمورک قبلی انجام شده ولی این سمت توی تستها نیست !
بنظرتون مشکل از کجاست ؟
مدیرفنی یا تیملید بکند.
یک درس بزرگی که حتی قبل از ورود به دنیای بکند و بخاطر عادت به سورس کد خوندن گرفتم این بود که
اولویت بالاتری داره از
واقعیت هم همین هست،
خیلی تیمها (ایرانی و خارجی) که
این کاملاً خطا هست، برای مدیر فنی ٫ تیم لید منظورم هست. الان سوالتون اینه که چرا ؟
توی این پروژه اگر
اگر این اتفاق افتاده بود الان که فریمورک عوض شده نیاز به باز نویسی تستها نبود، یعنی ما فقط برای اجرای سرور روی thread دیگر دستورات رو عوض میکردیم و تستها رو اجرا میکردیم.
وقتی دارم از بیرون به سیستم نگاه میکنم برام چه فرقی داره که چه زبان برنامهنویسی یا چه فریمورکی استفاده شده؛ همونطور که برای یوزر من فرقی نداره.
خواستم بگم حواستون به این نکته باشه،
متاسفانه کدهای جدید این تیم هم این خطا رو داره و باز وابسته شده به فریمورک
review
میکردم که بنا به مشکلات از یک فریمورک به فریمورک دیگه جابجا شده؛ اما بعد از جابجایی یک سری بخشهای پروژه باگ داره و من وارد شدم برای کد ریویو (امروز صبح روز اول کارم بود) دسترسی به کدهای قدیمی هم گرفتم، میبینم تست نویسی برای این باگ تو زبان و فریمورک قبلی انجام شده ولی این سمت توی تستها نیست !
بنظرتون مشکل از کجاست ؟
مدیرفنی یا تیملید بکند.
یک درس بزرگی که حتی قبل از ورود به دنیای بکند و بخاطر عادت به سورس کد خوندن گرفتم این بود که
Intégration test
اولویت بالاتری داره از
Unit test
واقعیت هم همین هست،
unit test
برای راحتی خودمون و دولوپر بعدی هست و intégration
test
برای راحتی و بدون باگ بودن استفادههای client
خیلی تیمها (ایرانی و خارجی) که
intégration test
نمینویسند متاسفانه ولی اونهایی هم که مینویسند مثل کدهای امروز من دقیقاً از آنچه که فریمورک ارائه میده استفاده میکنند.این کاملاً خطا هست، برای مدیر فنی ٫ تیم لید منظورم هست. الان سوالتون اینه که چرا ؟
توی این پروژه اگر
intégration test
ها میومد سرور رو روی یک thread
جدا اجرا میکرد و بعد با استفاده از پکیج دیگری مثل requests
درخواست میزد به api
هاش بنظرتون بهتر نمیشد ؟ اگر این اتفاق افتاده بود الان که فریمورک عوض شده نیاز به باز نویسی تستها نبود، یعنی ما فقط برای اجرای سرور روی thread دیگر دستورات رو عوض میکردیم و تستها رو اجرا میکردیم.
وقتی دارم از بیرون به سیستم نگاه میکنم برام چه فرقی داره که چه زبان برنامهنویسی یا چه فریمورکی استفاده شده؛ همونطور که برای یوزر من فرقی نداره.
خواستم بگم حواستون به این نکته باشه،
intégration test
باید جوری باشه که فارغ از فریمورک و زبان قابل اجرا باشه.متاسفانه کدهای جدید این تیم هم این خطا رو داره و باز وابسته شده به فریمورک
👍11
Forwarded from Python BackendHub
با این اپلیکیشن دقیقا میتونید متوجه شین که چه اتفاقی داره میفته.
مثلا یک برنامه دارین (پایتونی یا هرچی) و هر درخواستی که از سیستم عاملتون رد شه چه HTTP باشه چه HTTPS رو کامل capture میکنه و به صورت plain خیلی تمیز بهتون نشون میده.
مثلا یک برنامه دارین (پایتونی یا هرچی) و هر درخواستی که از سیستم عاملتون رد شه چه HTTP باشه چه HTTPS رو کامل capture میکنه و به صورت plain خیلی تمیز بهتون نشون میده.
👍6
Forwarded from کانال دانشجویان آیزیلِرن (Ahmad)
This media is not supported in your browser
VIEW IN TELEGRAM
🔸 مفهوم Comprehensions قطعه کدهایی قدرتمند در پایتون (معرفی)
🙋🏽♂️ خیلی وقتها کدهای افراد باتجربه توی پایتونو نگاه میکنیم میبینم که برای ایجاد sequence؛ لیست، دیکشنری، سِت، از یه روش خاصی استفاده میکنند که کدشون بهینهتر، خواناتر و خلاصهتر میشه! اسم این روشcomprehension هست!
🔸 ما توی دوره صفر تا قهرمانیِ پایتون از آیزیلرن یاد میگیریم چطور انواع comprehensions رو با مثال توی کدهامون پیادهسازی کنیم.
--------------------
🔗 وبسایت : آیزیلرن
🙋🏽♂️ خیلی وقتها کدهای افراد باتجربه توی پایتونو نگاه میکنیم میبینم که برای ایجاد sequence؛ لیست، دیکشنری، سِت، از یه روش خاصی استفاده میکنند که کدشون بهینهتر، خواناتر و خلاصهتر میشه! اسم این روش
🔸 ما توی دوره صفر تا قهرمانیِ پایتون از آیزیلرن یاد میگیریم چطور انواع comprehensions رو با مثال توی کدهامون پیادهسازی کنیم.
--------------------
🔗 وبسایت : آیزیلرن
👍3🔥2❤1
Forwarded from Ninja Learn | نینجا لرن
💎 عملیاتهای IO Bound و CPU Bound در جنگو 💎
امروز میخوایم درباره عملیاتهای IO Bound و CPU Bound صحبت کنیم و اینکه این دو نوع عملیات چطور روی عملکرد اپلیکیشنهای جنگو تاثیر میذاره.
حالا IO Bound چیه؟ 🤔
عملیاتهای IO Bound به کارهایی اشاره دارن که بیشتر زمانشون صرف ورود و خروج دادهها میشه. مثلاً وقتی داریم با دیتابیس، فایلها یا شبکه کار میکنیم. این نوع عملیات معمولاً منتظر میمونن تا دادهها از دیسک یا شبکه بیاد.
مثالهایی از IO Bound:
- خوندن و نوشتن در دیتابیس
- ارسال یا دریافت دادهها از API
- بارگذاری فایلها
حالا CPU Bound چیه؟ 🧠
عملیاتهای CPU Bound به کارهایی اشاره دارن که بیشتر زمانشون صرف محاسبات سنگین میشه. یعنی برای پردازش و محاسبات نیاز به قدرت پردازشی بالا دارن. در اینجا عملکرد CPU نقش کلیدی رو ایفا میکنه.
مثالهایی از CPU Bound:
- پردازش تصاویر و ویدئوها
- انجام محاسبات ریاضی پیچیده
- اجرای الگوریتمهای پیچیده
تفاوتهای اصلی بین IO Bound و CPU Bound 🔍
1⃣ مدت زمان انتظار:
-عملیات های IO Bound معمولاً منتظر ورود و خروج دادهها هستن و زمان زیادی رو صرف این کار میکنن.
- عملیات های CPU Bound بیشتر زمانشون رو برای پردازش و محاسبات صرف میکنن.
2⃣ تکنیکهای بهینهسازی:
- برای عملیاتهای IO Bound میتونی از Async و Threading استفاده کنی تا زمان انتظار رو کاهش بدی.
- برای CPU Bound باید به سراغ Multiprocessing بری تا بتونی از چند هسته CPU به طور همزمان استفاده کنی.
چطور در جنگو با اینها کار کنیم؟ 🚀
- برای IO Bound:
میتونی از
- برای CPU Bound:
میتونی از ماژول
جمعبندی 🎯
درک تفاوتهای بین IO Bound و CPU Bound میتونه بهت کمک کنه تا اپلیکیشنهای جنگو رو بهتر بهینهسازی کنی. اگه عملیاتهای IO Bound داری، از async استفاده کن و اگر CPU Bound هستن، برو سراغ multiprocessing.
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم درباره عملیاتهای IO Bound و CPU Bound صحبت کنیم و اینکه این دو نوع عملیات چطور روی عملکرد اپلیکیشنهای جنگو تاثیر میذاره.
حالا IO Bound چیه؟ 🤔
عملیاتهای IO Bound به کارهایی اشاره دارن که بیشتر زمانشون صرف ورود و خروج دادهها میشه. مثلاً وقتی داریم با دیتابیس، فایلها یا شبکه کار میکنیم. این نوع عملیات معمولاً منتظر میمونن تا دادهها از دیسک یا شبکه بیاد.
مثالهایی از IO Bound:
- خوندن و نوشتن در دیتابیس
- ارسال یا دریافت دادهها از API
- بارگذاری فایلها
حالا CPU Bound چیه؟ 🧠
عملیاتهای CPU Bound به کارهایی اشاره دارن که بیشتر زمانشون صرف محاسبات سنگین میشه. یعنی برای پردازش و محاسبات نیاز به قدرت پردازشی بالا دارن. در اینجا عملکرد CPU نقش کلیدی رو ایفا میکنه.
مثالهایی از CPU Bound:
- پردازش تصاویر و ویدئوها
- انجام محاسبات ریاضی پیچیده
- اجرای الگوریتمهای پیچیده
تفاوتهای اصلی بین IO Bound و CPU Bound 🔍
1⃣ مدت زمان انتظار:
-عملیات های IO Bound معمولاً منتظر ورود و خروج دادهها هستن و زمان زیادی رو صرف این کار میکنن.
- عملیات های CPU Bound بیشتر زمانشون رو برای پردازش و محاسبات صرف میکنن.
2⃣ تکنیکهای بهینهسازی:
- برای عملیاتهای IO Bound میتونی از Async و Threading استفاده کنی تا زمان انتظار رو کاهش بدی.
- برای CPU Bound باید به سراغ Multiprocessing بری تا بتونی از چند هسته CPU به طور همزمان استفاده کنی.
چطور در جنگو با اینها کار کنیم؟ 🚀
- برای IO Bound:
میتونی از
async
و await
استفاده کنی تا درخواستها به صورت غیر همزمان انجام بشن و سرعت اپلیکیشن بالا بره.- برای CPU Bound:
میتونی از ماژول
concurrent.futures
و ProcessPoolExecutor
استفاده کنی تا کارهای سنگین رو در چند پروسه اجرا کنی.جمعبندی 🎯
درک تفاوتهای بین IO Bound و CPU Bound میتونه بهت کمک کنه تا اپلیکیشنهای جنگو رو بهتر بهینهسازی کنی. اگه عملیاتهای IO Bound داری، از async استفاده کن و اگر CPU Bound هستن، برو سراغ multiprocessing.
#iobound #cpubound #python #django
👍18👎1
Forwarded from جنگولرن
Media is too big
VIEW IN TELEGRAM
✅مصاحبه علی بیگدلی با من در مورد فروشگاه اینترنتی با جنگو
توی این ویدئو یک مصاحبه با مهندس علی بیگدلی پیرامون طراحی یک فروشگاه اینترنتی با جنگو داشتم.
علی بیگدلی من رو به عنوان یک برنامه نویس با تجربه انتخاب کرده بود. و سوالات خودش رو از من پرسید.
سعی کردم تا جایی که دانش دارم جواب بدم.
امیدوارم از این ویدئو چیزی یاد بگیرید.
لینک آپارت:
https://www.aparat.com/v/kuocju0
لینک یوتیوب:
در حال آپلود
لینک مکتب خونه
توی این ویدئو یک مصاحبه با مهندس علی بیگدلی پیرامون طراحی یک فروشگاه اینترنتی با جنگو داشتم.
علی بیگدلی من رو به عنوان یک برنامه نویس با تجربه انتخاب کرده بود. و سوالات خودش رو از من پرسید.
سعی کردم تا جایی که دانش دارم جواب بدم.
امیدوارم از این ویدئو چیزی یاد بگیرید.
لینک آپارت:
https://www.aparat.com/v/kuocju0
لینک یوتیوب:
در حال آپلود
لینک مکتب خونه
👍6❤2
✅ویدئوی آموزشی برخی از دستورات SQL
لینک:
https://www.aparat.com/v/gdmmamx
توی این قسمت در مورد مفاهیم زیر صحبت کردیم:
✔️نکات مربوط به استفاده از کلید اصلی ترکیبی
✔️نکات دستور delete
✔️نکات دستور update
✔️اجرای کوئری های مختلف select
✔️نکات مرتب سازی رکوردها
✔️نکات مربوط به group by
✔️نکات مربوط به join دو جدول با هم
✔️نکات مربوط به ضرب دکارتی در join جدول ها بدون where
این ویدئو رو برای معلم های هنرستان و درس توسعه برنامه سازی و پایگاه داده ساختم.
اما چون مفاهیم ش کلی هست به درد همه میخوره.
لینک:
https://www.aparat.com/v/gdmmamx
توی این قسمت در مورد مفاهیم زیر صحبت کردیم:
✔️نکات مربوط به استفاده از کلید اصلی ترکیبی
✔️نکات دستور delete
✔️نکات دستور update
✔️اجرای کوئری های مختلف select
✔️نکات مرتب سازی رکوردها
✔️نکات مربوط به group by
✔️نکات مربوط به join دو جدول با هم
✔️نکات مربوط به ضرب دکارتی در join جدول ها بدون where
این ویدئو رو برای معلم های هنرستان و درس توسعه برنامه سازی و پایگاه داده ساختم.
اما چون مفاهیم ش کلی هست به درد همه میخوره.
👍5
Forwarded from آکادمی دکتر مسفروش (Ali Mesforush)
http://tiny.cc/Mes_Academy
سلام.
دورههای آموزشی رایگان زیر در ۸ سال گذشته توسط من تهیه شده است که میتواند برای دانشجویان علوم پایه، فنی و مهندسی و علوم کامپیوتر مفید باشد.
تلاش من بر این بوده است که برای درسهای دانشگاهی تمام سرفصل مصوب وزارت علوم رعایت شود و درسها به شکل پایهای و اصولی آموزش داده شوند.
با توجه به شروع سال تحصیلی جدید سپاسگزار خواهم شد اگر این پست را باز نشر (Repost) فرمایید.
۱- آموزش رایگان ریاضی پیشدانشگاهی، ویژه نودانشجویان
http://tiny.cc/Mes_PreMath
۲- آموزش رایگان ریاضی عمومی یک مهندسی
http://tiny.cc/Mes_Calculus1
۳- آموزش رایگان ریاضی عمومی ۲ مهندسی
http://tiny.cc/Mes_Calculus2
۴- آموزش رایگان معادلات دیفرانسیل رشتههای مهندسی
http://tiny.cc/Mes_ODE
۵- دوره تست معادلات دیفرانسیل
http://tiny.cc/Mes_ODETest
۶- آموزش رایگان ریاضی مهندسی
http://tiny.cc/Mes_EngMath
۷- آموزش رایگان محاسبات عددی ویژه دانشجویان رشتههای مهندسی
http://tiny.cc/Mes_Mohasebat
۸- آموزش رایگان احتمال مهندسی
http://tiny.cc/Mes_Probabilty
۹- آموزش رایگان کار و برنامهنویسی با MATLAB
http://tiny.cc/Mes_Matlab
۱۰- آموزش رایگان Maple
http://tiny.cc/Mes_Maple
۱۱- آموزش رایگان برنامهنویسی با Python
http://tiny.cc/Mes_Python
۱۲- آموزش رایگان برنامهنویسی پایتون (کلاس درس)
http://tiny.cc/Mes_PythonClass
۱۳- مبانی کامپیوتر با پایتون ۳
http://tiny.cc/Mes_Mabani
۱۴- آموزش رایگان Numpy, Scipy
http://tiny.cc/Mes_Numpy
۱۵- آشنایی با یادگیری ماشین
http://tiny.cc/Mes_ML
۱۶- آموزش رایگان برنامهنویس با C++
http://tiny.cc/Mes_CPP
۱۷- هنر برنامهنویسی
http://tiny.cc/Mes_Art
۱۸- آموزش رایگان حروفچینی مستندات علمی با LaTeX و بسته XePersian.
http://tiny.cc/Mes_LaTeX
۱۹- کارگاه آشنایی با لاتک و زیپرشین دانشگاه کاشان
http://tiny.cc/Mes_Kashan
۲۰- کارگاه آشنایی با LaTeX و XePersian بهشهر
http://tiny.cc/Mes_Behshar
۲۱- آموزش رایگان رسم در LaTeX
http://tiny.cc/Mes_Tikz
۲۲- آموزش رایگان مبانی آنالیز عددی
http://tiny.cc/Mes_Adadi1
۲۳- آموزش رایگان آنالیز عددی ۲
http://tiny.cc/Mes_Adadi2
۲۴- آموزش رایگان آنالیز عددی پیشرفته
http://tiny.cc/Mes_AdvNum
۲۵- آموزش رایگان جبرخطی و مبانی ماتریسها
http://tiny.cc/Mes_LinAlg
۲۶- آموزش رایگان جبرخطی عددی (ریاضی، برق و علوم کامپیوتر)
http://tiny.cc/Mes_NumLinAlg
۲۷- آموزش رایگان جبرخطی عددی پیشرفته
http://tiny.cc/Mes_AdvNumAna
۲۸- آموزش رایگان معادلات دیفرانسیل با مشتقات جزئی
http://tiny.cc/Mes_PDE
۲۹- آموزش رایگان روش عناصر متناهی (FEM)
http://tiny.cc/Mes_FEM
۳۰- آموزش رایگان FEniCS، برای حل معادلات دیفرانسیل با مشتقات جزئی
http://tiny.cc/Mes_Fenics
۳۱- آموزش رایگان کار و برنامهنویسی در R
http://tiny.cc/Mes_R
۳۲- حل تمرین دروس مختلف
http://tiny.cc/Mes_HaleTamrin
۳۳- آموزش رایگان حسابان (۱) پایه یازدهم
http://tiny.cc/Mes_Hesaban11
۳۴- آموزش رایگان ریاضی (۲) پایه یازدهم تجربی
http://tiny.cc/Mes_Riazi11
۳۵- آشنایی با سوالات آزمون استخدامی
http://tiny.cc/Mes_Estekhdami
۳۶- آموزش رایگان روش سریع تراختنبرگ در حساب
http://tiny.cc/Mes_Trachtenburg
۳۷- آشنایی مختصر با لینوکس
http://tiny.cc/Mes_Linux
۳۸- آمادگی برای المپیاد ریاضی
http://tiny.cc/Mes_Olympiad
لطفا با سابسکرایب کردن کانال در یوتیوب و انتشار این پست در گروهها، کانالها در فضای مجازی از آن حمایت کنید.
سلام.
دورههای آموزشی رایگان زیر در ۸ سال گذشته توسط من تهیه شده است که میتواند برای دانشجویان علوم پایه، فنی و مهندسی و علوم کامپیوتر مفید باشد.
تلاش من بر این بوده است که برای درسهای دانشگاهی تمام سرفصل مصوب وزارت علوم رعایت شود و درسها به شکل پایهای و اصولی آموزش داده شوند.
با توجه به شروع سال تحصیلی جدید سپاسگزار خواهم شد اگر این پست را باز نشر (Repost) فرمایید.
۱- آموزش رایگان ریاضی پیشدانشگاهی، ویژه نودانشجویان
http://tiny.cc/Mes_PreMath
۲- آموزش رایگان ریاضی عمومی یک مهندسی
http://tiny.cc/Mes_Calculus1
۳- آموزش رایگان ریاضی عمومی ۲ مهندسی
http://tiny.cc/Mes_Calculus2
۴- آموزش رایگان معادلات دیفرانسیل رشتههای مهندسی
http://tiny.cc/Mes_ODE
۵- دوره تست معادلات دیفرانسیل
http://tiny.cc/Mes_ODETest
۶- آموزش رایگان ریاضی مهندسی
http://tiny.cc/Mes_EngMath
۷- آموزش رایگان محاسبات عددی ویژه دانشجویان رشتههای مهندسی
http://tiny.cc/Mes_Mohasebat
۸- آموزش رایگان احتمال مهندسی
http://tiny.cc/Mes_Probabilty
۹- آموزش رایگان کار و برنامهنویسی با MATLAB
http://tiny.cc/Mes_Matlab
۱۰- آموزش رایگان Maple
http://tiny.cc/Mes_Maple
۱۱- آموزش رایگان برنامهنویسی با Python
http://tiny.cc/Mes_Python
۱۲- آموزش رایگان برنامهنویسی پایتون (کلاس درس)
http://tiny.cc/Mes_PythonClass
۱۳- مبانی کامپیوتر با پایتون ۳
http://tiny.cc/Mes_Mabani
۱۴- آموزش رایگان Numpy, Scipy
http://tiny.cc/Mes_Numpy
۱۵- آشنایی با یادگیری ماشین
http://tiny.cc/Mes_ML
۱۶- آموزش رایگان برنامهنویس با C++
http://tiny.cc/Mes_CPP
۱۷- هنر برنامهنویسی
http://tiny.cc/Mes_Art
۱۸- آموزش رایگان حروفچینی مستندات علمی با LaTeX و بسته XePersian.
http://tiny.cc/Mes_LaTeX
۱۹- کارگاه آشنایی با لاتک و زیپرشین دانشگاه کاشان
http://tiny.cc/Mes_Kashan
۲۰- کارگاه آشنایی با LaTeX و XePersian بهشهر
http://tiny.cc/Mes_Behshar
۲۱- آموزش رایگان رسم در LaTeX
http://tiny.cc/Mes_Tikz
۲۲- آموزش رایگان مبانی آنالیز عددی
http://tiny.cc/Mes_Adadi1
۲۳- آموزش رایگان آنالیز عددی ۲
http://tiny.cc/Mes_Adadi2
۲۴- آموزش رایگان آنالیز عددی پیشرفته
http://tiny.cc/Mes_AdvNum
۲۵- آموزش رایگان جبرخطی و مبانی ماتریسها
http://tiny.cc/Mes_LinAlg
۲۶- آموزش رایگان جبرخطی عددی (ریاضی، برق و علوم کامپیوتر)
http://tiny.cc/Mes_NumLinAlg
۲۷- آموزش رایگان جبرخطی عددی پیشرفته
http://tiny.cc/Mes_AdvNumAna
۲۸- آموزش رایگان معادلات دیفرانسیل با مشتقات جزئی
http://tiny.cc/Mes_PDE
۲۹- آموزش رایگان روش عناصر متناهی (FEM)
http://tiny.cc/Mes_FEM
۳۰- آموزش رایگان FEniCS، برای حل معادلات دیفرانسیل با مشتقات جزئی
http://tiny.cc/Mes_Fenics
۳۱- آموزش رایگان کار و برنامهنویسی در R
http://tiny.cc/Mes_R
۳۲- حل تمرین دروس مختلف
http://tiny.cc/Mes_HaleTamrin
۳۳- آموزش رایگان حسابان (۱) پایه یازدهم
http://tiny.cc/Mes_Hesaban11
۳۴- آموزش رایگان ریاضی (۲) پایه یازدهم تجربی
http://tiny.cc/Mes_Riazi11
۳۵- آشنایی با سوالات آزمون استخدامی
http://tiny.cc/Mes_Estekhdami
۳۶- آموزش رایگان روش سریع تراختنبرگ در حساب
http://tiny.cc/Mes_Trachtenburg
۳۷- آشنایی مختصر با لینوکس
http://tiny.cc/Mes_Linux
۳۸- آمادگی برای المپیاد ریاضی
http://tiny.cc/Mes_Olympiad
لطفا با سابسکرایب کردن کانال در یوتیوب و انتشار این پست در گروهها، کانالها در فضای مجازی از آن حمایت کنید.
YouTube
Ali Mesforoush
Share your videos with friends, family, and the world
🔥8👍2❤1
✅معرفی پکیج های پایتونی
فروشگاه saleor یه نسخه قدیمی داره که دیگه آرشیو ش کرده.
من یه فورک ازش گرفتم توی این آدرس:
https://github.com/miladhzz/saleor-old
فایل requirements.txt رو که دیدم، پکیج های خیلی زیادی توش بود.
از ChatGPT کمک گرفتم و خواستم کار هر کدوم رو در یک جمله کوتاه بگه
خروجی ChatGPT رو عینا توی پست های بعدی قرار میدم.
آپدیت: یکی از دوستان زحمت کشید و pdf ش کرد. پست بعدی
فروشگاه saleor یه نسخه قدیمی داره که دیگه آرشیو ش کرده.
من یه فورک ازش گرفتم توی این آدرس:
https://github.com/miladhzz/saleor-old
فایل requirements.txt رو که دیدم، پکیج های خیلی زیادی توش بود.
از ChatGPT کمک گرفتم و خواستم کار هر کدوم رو در یک جمله کوتاه بگه
خروجی ChatGPT رو عینا توی پست های بعدی قرار میدم.
آپدیت: یکی از دوستان زحمت کشید و pdf ش کرد. پست بعدی
👍4
Used packages.pdf
117.8 KB
لیست همه پکیج های استفاده شده در فروشگاه اوپن سورس saleor نسخه قدیمی تمپلت
در قالب pdf
تشکر از Arash
پست های حذف شده رو منتقل کردم به کامنت همین پست
در قالب pdf
تشکر از Arash
پست های حذف شده رو منتقل کردم به کامنت همین پست
👍10
⚠️خواهشا ردیس را به عنوان Primary Database استفاده نکنید!
از لینکدین Hasan Arab borzo
✔️کامنت هاشم بخونید. لینک این مطلب
💥 یکی از جذابترین ریفکتور هایی که در اکالا انجام دادم، به ریلیز کردن ۴۰ گیگابایت رم ردیس برای استفاده در سبد خرید و سفارشها مربوط میشه. در این فرآیند، موفق شدم تنها از ۴۰۰ مگابایت رم استفاده کنم!
در شروع کار، به این فکر میکردم که چگونه میتوانم ۴۰ گیگابایت رم را آزاد کنم. اولین راهحلی که به ذهنم رسید، فشردهسازی دادهها بود. اما هیچ کامپرسوری نمیتوانست به اندازه کافی این حجم داده را فشرده کند، و هزینهی Decompress کردن آن بخاطر لود بالای سیستم، بسیار بالا بود.
🤔 هر کلید ما حاوی حدود ۱-۲ کیلوبایت JSON بود و مجبور بودیم که هر محصول را بدون TTL در Redis نگه داریم، زیرا Round Trip ما به Redis در لحظه به حدود ۳۰K میرسید و Redis ۴۰ گیگابایتی را مصرف میکرد. هیچ اپلیکیشنی نمیتوانست این حجم Request را با منابع پایین و زمان پاسخدهی ۱۰ میلیثانیه انجام دهد!
در ادامه، وقتی وارد فضای حل مسئله شدم:
💡 پاکسازی دادههای اضافی: اولین قدم ما حذف کلی دادههای غیرضروری بود که هر کلید را به حدوداً ۵۰۰ بایت تبدیل کرد.
💡 استفاده از Protobuf: به این فکر کردم که چرا از JSON استفاده کنیم؟ با استفاده از deserializer و serializer قدرتمندی مثل Protobuf، میتوانستیم حجم دادهها را به طور چشمگیری کاهش دهیم. با تبدیل دادهها به باینری و ذخیره آن، حجم هر کلید به حدود ۳۰۰ بایت کاهش یافت، که به معنای کاهش ۸۰ درصدی مصرف رم بود. با این حال، کیفیت و سرعت بالا در اکالا برای ما بسیار مهم بود.
💡 شکستن کلیدها: کلیدها را به دو بخش تقسیم کردم:
اطلاعات محصول (شامل نام، بارکد، آدرس عکس و...) در یک کلید با حجم تقریباً ۲۰۰ بایت.
موجودی هر محصول در فروشگاهها در کلیدی دیگر با حجم حدود ۱۰۰ بایت.
در روش قبلی، اگر یک میلیون کالا داشتیم، مصرف حدود ۲۸۶ مگابایت بود. اما در روش جدید، فرض کنیم از یک میلیون تا 2000 محصول داریم و برای یک میلیون کالا موجودی در استور های مختلف، حدود ۹۵ مگابایت مصرف میشد!
💡 کش کردن محصولات: همچنین، کالاهای اضافهشده به سبد خرید مشتریان را به مدت ۴ روز کش کردم. به جای استفاده از Redis به عنوان Primary Database و بدون TTL، هرگاه دادهای نداشتیم، از منبع اصلی اطلاعات را میگرفتیم و دوباره به مدت ۴ روز کش میکردیم. اگر کاربری همان کالا را دوباره به سبد خرید اضافه میکرد، TTL آن به صورت Sliding افزایش مییافت.
در نهایت، با همین ۴۰۰ مگابایت، همه چیز به خوبی به هم رسید و ما توانستیم پرفورمنس و سرعت را بدون هیچ افت کیفیتی حفظ کنیم!
از لینکدین Hasan Arab borzo
✔️کامنت هاشم بخونید. لینک این مطلب
💥 یکی از جذابترین ریفکتور هایی که در اکالا انجام دادم، به ریلیز کردن ۴۰ گیگابایت رم ردیس برای استفاده در سبد خرید و سفارشها مربوط میشه. در این فرآیند، موفق شدم تنها از ۴۰۰ مگابایت رم استفاده کنم!
در شروع کار، به این فکر میکردم که چگونه میتوانم ۴۰ گیگابایت رم را آزاد کنم. اولین راهحلی که به ذهنم رسید، فشردهسازی دادهها بود. اما هیچ کامپرسوری نمیتوانست به اندازه کافی این حجم داده را فشرده کند، و هزینهی Decompress کردن آن بخاطر لود بالای سیستم، بسیار بالا بود.
🤔 هر کلید ما حاوی حدود ۱-۲ کیلوبایت JSON بود و مجبور بودیم که هر محصول را بدون TTL در Redis نگه داریم، زیرا Round Trip ما به Redis در لحظه به حدود ۳۰K میرسید و Redis ۴۰ گیگابایتی را مصرف میکرد. هیچ اپلیکیشنی نمیتوانست این حجم Request را با منابع پایین و زمان پاسخدهی ۱۰ میلیثانیه انجام دهد!
در ادامه، وقتی وارد فضای حل مسئله شدم:
💡 پاکسازی دادههای اضافی: اولین قدم ما حذف کلی دادههای غیرضروری بود که هر کلید را به حدوداً ۵۰۰ بایت تبدیل کرد.
💡 استفاده از Protobuf: به این فکر کردم که چرا از JSON استفاده کنیم؟ با استفاده از deserializer و serializer قدرتمندی مثل Protobuf، میتوانستیم حجم دادهها را به طور چشمگیری کاهش دهیم. با تبدیل دادهها به باینری و ذخیره آن، حجم هر کلید به حدود ۳۰۰ بایت کاهش یافت، که به معنای کاهش ۸۰ درصدی مصرف رم بود. با این حال، کیفیت و سرعت بالا در اکالا برای ما بسیار مهم بود.
💡 شکستن کلیدها: کلیدها را به دو بخش تقسیم کردم:
اطلاعات محصول (شامل نام، بارکد، آدرس عکس و...) در یک کلید با حجم تقریباً ۲۰۰ بایت.
موجودی هر محصول در فروشگاهها در کلیدی دیگر با حجم حدود ۱۰۰ بایت.
در روش قبلی، اگر یک میلیون کالا داشتیم، مصرف حدود ۲۸۶ مگابایت بود. اما در روش جدید، فرض کنیم از یک میلیون تا 2000 محصول داریم و برای یک میلیون کالا موجودی در استور های مختلف، حدود ۹۵ مگابایت مصرف میشد!
💡 کش کردن محصولات: همچنین، کالاهای اضافهشده به سبد خرید مشتریان را به مدت ۴ روز کش کردم. به جای استفاده از Redis به عنوان Primary Database و بدون TTL، هرگاه دادهای نداشتیم، از منبع اصلی اطلاعات را میگرفتیم و دوباره به مدت ۴ روز کش میکردیم. اگر کاربری همان کالا را دوباره به سبد خرید اضافه میکرد، TTL آن به صورت Sliding افزایش مییافت.
در نهایت، با همین ۴۰۰ مگابایت، همه چیز به خوبی به هم رسید و ما توانستیم پرفورمنس و سرعت را بدون هیچ افت کیفیتی حفظ کنیم!
👍11❤6👏1