#تجربه
بیش از ۹۸٪ پروژههای اپلیکیشنهایی که کار کردم دیتابیس رو اشتباه انتخاب کرده بودند!
اصلا طبیعیت دیتاها و کار با دیتابیس و ... اشون
اما ۱۰۰٪ تأکید دارند که از
مشکل کجاس ؟
- عدم شناخت کافی از دیتابیسهای دیگه:
این بیشترین موردی هست که دیدم.
- عدم توانایی طراحی درست سیستم؛ معماری سیستم خیلی مهم هست.
- عدم بررسی و آنالیز نیازمندیهای سیستم؛ اینکه درگیر دنبال بهترینها بودن نشید چیز خوبیه ولی اینکه سر چیزای ابتدایی هم تحقیق نمیکنید و میندازید گردن اینکه من نمیخوام کمالگرا باشم یک موضوع متفاوت هست.
- ترس، ترس از تست کردن چیزای جدید.
طرف میگه من ۱۰ ساله دارم
احمقانه تصمیم نگیر
راجب mongodb بخونید، خیلی از شما چیزی که بهش نیاز دارید
رو هم داره؛ تا ۱۰۰ لول ارتباط تو در تو هم نگه میداره (که عمرا و عملاً بهش نمیرسید)
به راحتی میتونید
دیزاین collection (مثل table بهش فکر کنید) میتونی ثانیهای عوض بشه اگر بخواید.
فرض کنید توی sql بتونید، هروقت خواستید بدون دردسر و
به کمک پکیج
Janus
هم گزینه خوبی هست برای اونهایی که به دیتابیس
۶ سال قبل بعنوان جایگزین رایگان Neo4j ازش استفاده کردم روی حجم داده بسیار بسیار بالا و خیلی رضایت بخش بود.
خلاصه که زرتی نرید با
بیش از ۹۸٪ پروژههای اپلیکیشنهایی که کار کردم دیتابیس رو اشتباه انتخاب کرده بودند!
اصلا طبیعیت دیتاها و کار با دیتابیس و ... اشون
SQL
نیستاما ۱۰۰٪ تأکید دارند که از
SQL
استفاده بشه و اکثراً بعد از مدتی کوئریهای پیچیده کل سیستمشون رو میگیره !مشکل کجاس ؟
- عدم شناخت کافی از دیتابیسهای دیگه:
Mongo, Janus, Casandra, Scylla, ....
این بیشترین موردی هست که دیدم.
- عدم توانایی طراحی درست سیستم؛ معماری سیستم خیلی مهم هست.
- عدم بررسی و آنالیز نیازمندیهای سیستم؛ اینکه درگیر دنبال بهترینها بودن نشید چیز خوبیه ولی اینکه سر چیزای ابتدایی هم تحقیق نمیکنید و میندازید گردن اینکه من نمیخوام کمالگرا باشم یک موضوع متفاوت هست.
- ترس، ترس از تست کردن چیزای جدید.
طرف میگه من ۱۰ ساله دارم
SQL
کار میکنم (خب به درک!!)، نهایت همرو خودم Query
مینویسم! به فکر نفرات بعدی روی پروژه هم باش احمقانه تصمیم نگیر
راجب mongodb بخونید، خیلی از شما چیزی که بهش نیاز دارید
mongodb
هست Transaction
رو هم داره؛ تا ۱۰۰ لول ارتباط تو در تو هم نگه میداره (که عمرا و عملاً بهش نمیرسید)
به راحتی میتونید
replication
و read-only
داشته باشید دیزاین collection (مثل table بهش فکر کنید) میتونی ثانیهای عوض بشه اگر بخواید.
فرض کنید توی sql بتونید، هروقت خواستید بدون دردسر و
migration
, ... ستون اضافه کنید.به کمک پکیج
motor
خیلی راحت؛ async
رو هم در اختیار خواهید داشتJanus
هم گزینه خوبی هست برای اونهایی که به دیتابیس
Graph
نیاز دارند.۶ سال قبل بعنوان جایگزین رایگان Neo4j ازش استفاده کردم روی حجم داده بسیار بسیار بالا و خیلی رضایت بخش بود.
خلاصه که زرتی نرید با
SQL
شروع کنید.👍80❤16👏5❤🔥2
متا دیگه دنبال
حتی اینکه چندتا
ازین پس، توی مصاحبههای شرکت
۱ سال و نیم قبل گفتم، شرکتها قطعاً و حتماً به این سمت خواهند رفت 👌
تعریف جونیور هم بیشتر عوض خواهد شد !
پینوشت:
برای دوستان تازه وارد
coder
نمیگرده حتی اینکه چندتا
leetcode
هم حل کردید و حفظ کردید توی متا مهم نیست.ازین پس، توی مصاحبههای شرکت
META
اجازه استفاده از هوش مصنوعی رو هم دارید.۱ سال و نیم قبل گفتم، شرکتها قطعاً و حتماً به این سمت خواهند رفت 👌
تعریف جونیور هم بیشتر عوض خواهد شد !
پینوشت:
Coder != Software Engineer
برای دوستان تازه وارد
👍105❤13🔥1
طبق تجربه خودم؛
بیشترین دلیل fail شدن استارتاپهایی که دیدم ایده بد یا وجود رقیب و .... نیست!
فقط یک چیز هست؛ انجام کارهای تکراری به تعداد دفعات تغییر توی کدها
دلیلش؛عدم تست نویسی !
از هر ۱۰ مورد، ۹ مورد دلیلش جز این نبوده.
پ.ن:
راجب این مورد، قطعاً روی استارتاپ یکی از دوستان صحبت خواهم کرد (صحبتی که باهم داشتیم، راجب اینکه حتی وقتی پول زیادی هم پشتوانهاش بود بازم نهایتاً استارتاپ fail شد)
بیشترین دلیل fail شدن استارتاپهایی که دیدم ایده بد یا وجود رقیب و .... نیست!
فقط یک چیز هست؛ انجام کارهای تکراری به تعداد دفعات تغییر توی کدها
دلیلش؛
از هر ۱۰ مورد، ۹ مورد دلیلش جز این نبوده.
پ.ن:
راجب این مورد، قطعاً روی استارتاپ یکی از دوستان صحبت خواهم کرد (صحبتی که باهم داشتیم، راجب اینکه حتی وقتی پول زیادی هم پشتوانهاش بود بازم نهایتاً استارتاپ fail شد)
❤48👍17🔥2
#مصاحبه
چندوقت پیش برای یک شرکتی داشتم مصاحبه انجام میدادم؛ یک توسعه دهنده پایتون میخواستند با دانش بالا از concurrency, parallelism کلی هم روزمه دریافت کرده بودند.
قرار بود من فقط ۲ روز براشون وقت بذارم و مصاحبه کنم ولی انقدر تعداد روزمهها زیاد بود که ۱ هفته کار میبرد؛ مصاحبه رو ۲ مرحلهای کردیم توی مرحله اول سوال جوابای کلی پایتون بود که نیروهای خود شرکت انجام میدادند و درنهایت هم ۱ تسک بهشون داده میشد که توی همون مصاحبه انجام بدند؛ تسک این بود (چون خودم تسک رو داده بودم میگم):
تقریبا همه شرکت کنندهها حل کردند مسئله رو؛ به هیچکس هیچ راهنمایی داده نمیشد و از هیچکدوم از افراد هم چیزی اضافه بر متن بالا خواسته نمیشد.
حدود ۱۲ نفر موندند که به مصاحبه مرحله دوم دعوت شدند؛ اما یکنفر بود که کلا آدم اعتراض کردن هست (پستهاش توی لینکدین توی چند وقت اخیر چیزایی که منم تگ شدم)
نمیدونست سوال مصاحبه با من بوده و ادعا کرده توی لینکدین که بهترین راه حل رو ارائه داده ولی رد شده (انگاز کسی باهاش جنگ داره) ازش خواستم پستش رو پاک کنه وگرنه براش خیلی بد میشه ...
اما این قضیه و دیدن اینکه خیلی از بچههای حتی سنیور عکسی که از راهکار گذاشته رو لایک کردند باعث شد بیام و بگم چرا کدی که اون آدم گذاشته بود اصلا بدرد نمیخورد:
بله کد
همهی کدهای parallel به یک اندازه خوب نیستند و یا حتی درست هم نیستند.
ادامه پست بعدی ...
چندوقت پیش برای یک شرکتی داشتم مصاحبه انجام میدادم؛ یک توسعه دهنده پایتون میخواستند با دانش بالا از concurrency, parallelism کلی هم روزمه دریافت کرده بودند.
قرار بود من فقط ۲ روز براشون وقت بذارم و مصاحبه کنم ولی انقدر تعداد روزمهها زیاد بود که ۱ هفته کار میبرد؛ مصاحبه رو ۲ مرحلهای کردیم توی مرحله اول سوال جوابای کلی پایتون بود که نیروهای خود شرکت انجام میدادند و درنهایت هم ۱ تسک بهشون داده میشد که توی همون مصاحبه انجام بدند؛ تسک این بود (چون خودم تسک رو داده بودم میگم):
یک کد ۸ رقمی با الگوریتم sha256 هش شده؛ و تونستیم هش خروجی رو بدست بیاریم. کدی بنویسید که عدد رو برامون پیدا کنه.
توی سوال و جواب بهشون گفته میشد که عدد میتونه مثلا 5 هم باشه ولی به اینصورت:
"00000005"
تقریبا همه شرکت کنندهها حل کردند مسئله رو؛ به هیچکس هیچ راهنمایی داده نمیشد و از هیچکدوم از افراد هم چیزی اضافه بر متن بالا خواسته نمیشد.
حدود ۱۲ نفر موندند که به مصاحبه مرحله دوم دعوت شدند؛ اما یکنفر بود که کلا آدم اعتراض کردن هست (پستهاش توی لینکدین توی چند وقت اخیر چیزایی که منم تگ شدم)
اما این قضیه و دیدن اینکه خیلی از بچههای حتی سنیور عکسی که از راهکار گذاشته رو لایک کردند باعث شد بیام و بگم چرا کدی که اون آدم گذاشته بود اصلا بدرد نمیخورد:
بله کد
parallel
اجاره میشه ولیهمهی کدهای parallel به یک اندازه خوب نیستند و یا حتی درست هم نیستند.
ادامه پست بعدی ...
❤32👍3🔥1
Python Hints
#مصاحبه چندوقت پیش برای یک شرکتی داشتم مصاحبه انجام میدادم؛ یک توسعه دهنده پایتون میخواستند با دانش بالا از concurrency, parallelism کلی هم روزمه دریافت کرده بودند. قرار بود من فقط ۲ روز براشون وقت بذارم و مصاحبه کنم ولی انقدر تعداد روزمهها زیاد بود که…
اول کد آقای اعتراض (این سورس کد رو خودم زدم ولی با تکنیکی که ایشون بعنوان راهکار نهایی ثبت و ایمیل کردند.)
کد پارالل هست و اجرا هم میشه؛ هش اول رو توی ۲۲ ثانیه پیدا میکنه و عدد 5 رو به درستی بر میگردونه. (این هشها توی تست به مصاحبه شوندهها داده نشده بود و من الان ایجادشون کردم اعدادش هم به عمد هست)
چرا 5 ؟
برای اینکه توی رنج اعدادی که ایجاد میشه اوایل اولین لیست chunk قرار میگیره پس سریع محاسبه میشه.
با همین نکته باید فهمیده باشید مشکل کد بالا چیه!
ربطی نداره کد ۸ رقمی کجای لیست قرار بگیره تمام اعداد ۸ رقمی رو باید تست کنه تا به جواب برسه. برای همین انقدر طول کشید.
چرا 69269268 ؟
مشگل دوم باگ برنامهنویس هست؛ من هم میخواستم خروجی رو برای یک عدد رندوم ببینم و هم میخواستم توی
یک مقدار دقت کنید پیداش میکنید (البته من بخاطر این اشتباه ردش نکردم)
ادامه پست بعدی ...
کد پارالل هست و اجرا هم میشه؛ هش اول رو توی ۲۲ ثانیه پیدا میکنه و عدد 5 رو به درستی بر میگردونه. (این هشها توی تست به مصاحبه شوندهها داده نشده بود و من الان ایجادشون کردم اعدادش هم به عمد هست)
چرا 5 ؟
برای اینکه توی رنج اعدادی که ایجاد میشه اوایل اولین لیست chunk قرار میگیره پس سریع محاسبه میشه.
با همین نکته باید فهمیده باشید مشکل کد بالا چیه!
ربطی نداره کد ۸ رقمی کجای لیست قرار بگیره تمام اعداد ۸ رقمی رو باید تست کنه تا به جواب برسه. برای همین انقدر طول کشید.
چرا 69269268 ؟
مشگل دوم باگ برنامهنویس هست؛ من هم میخواستم خروجی رو برای یک عدد رندوم ببینم و هم میخواستم توی
chunk
های اول نباشه ولی برای این عدد بهم -1
برگردوند.یک مقدار دقت کنید پیداش میکنید (البته من بخاطر این اشتباه ردش نکردم)
ادامه پست بعدی ...
👍20❤1🔥1
اینم براساس راهکار کسی که استخدام شد؛ استفاده از
برای اینکه بتونه بین پراسسها وضعیت رو بررسی کنه؛ به محض اینکه یکی از پراسسها اعلام کنه به جواب رسیده
باقی پراسسها قطع میشند و پردازش تکمیل میشه.
با این روش؛ جواب هش اول توی 7ms بدست میاد.
اما این کد هم میتونه بهتر بشه؛ برای hash دوم با عدد
بطور کلی برای اعدادی که توی ۲۵٪ انتهای
راهکار بهتر رو کسی توی مصاحبه ننوشته بود برای همین کدهای هیچکدوم از مصاحبه شونده هارو با اون مقابسه نکردم؛ ولی تمرین خوبی هست اگر بهش فکر کنید!
=================
سوال شده:
۱- لینکدین من روی پست اول توی پین شدهها هست
۲- فونتی که استفاده میکنم
۳- ادیتور و تم و ... هم مربوط به تنظیمات
۴- توی مصاحبه اول، دسترسی به
۵- سوال اصلی مصاحبه نبود؛ برای حذف روزمههای اضافه بود
multiprocessing.Value
برای اینکه بتونه بین پراسسها وضعیت رو بررسی کنه؛ به محض اینکه یکی از پراسسها اعلام کنه به جواب رسیده
found.value
باقی پراسسها قطع میشند و پردازش تکمیل میشه.
با این روش؛ جواب هش اول توی 7ms بدست میاد.
اما این کد هم میتونه بهتر بشه؛ برای hash دوم با عدد
69269268
تقریبا ۲ برابر روش قبلی زمان نیاز داره!بطور کلی برای اعدادی که توی ۲۵٪ انتهای
chunk
خودشون قرار میگیرند! راهکار بهتر رو کسی توی مصاحبه ننوشته بود برای همین کدهای هیچکدوم از مصاحبه شونده هارو با اون مقابسه نکردم؛ ولی تمرین خوبی هست اگر بهش فکر کنید!
=================
سوال شده:
۱- لینکدین من روی پست اول توی پین شدهها هست
۲- فونتی که استفاده میکنم
operator mono
هست ۳- ادیتور و تم و ... هم مربوط به تنظیمات
neovim
هست که گذاشتم البته از برنچ javascript
استفاده کنید این تغییرات اونجاس (فونت رو باید روی ترمینال فعال کنید)۴- توی مصاحبه اول، دسترسی به
ai
وجود نداشت؛ مصاحبه دوم بلامانع بود استفاده از ai
۵- سوال اصلی مصاحبه نبود؛ برای حذف روزمههای اضافه بود
👍22❤7
Python Hints
اینم براساس راهکار کسی که استخدام شد؛ استفاده از multiprocessing.Value برای اینکه بتونه بین پراسسها وضعیت رو بررسی کنه؛ به محض اینکه یکی از پراسسها اعلام کنه به جواب رسیده found.value باقی پراسسها قطع میشند و پردازش تکمیل میشه. با این روش؛ جواب هش اول…
یه کار خوب دیگم که میشه کرد استفاده از concurrent.futures هست به نظر من. interface راحتی در اختیار میذاره برای حل کردن این موضوع. میشه یه process pool ساخت، تسک ها رو submit کرد و بعد wait کرد روی future ها. منتها با return_when عه FIRST_COMPLETE. اولی که اومد باقی kill بشن. برای مواقعی که نیاز نداریم gracefully تسک ها رو shutdown بکنیم (مثل اینجا) این جواب میده.پ.ن:
حالا من انتظار داشتم که متد shutdown یه argument ای چیزی تحت عنوان force میگرفت من مجبور نشم process ها رو اونطوری بگیرم و کیل کنم. ولی بازم خونه api تمیزی داره این.
یک راهکار خوب از سروش؛ منم توضیحاتم رو همینجا مینویسم.
توی راهحل اول گفتم نتایج بهتری میشه داشت؛ مشکل راهحل این بود که فرقی نمیکرد کی به جواب برسیم باید برای همه صبر میکردیم.
اما یک کار خوب کرده بودیم؛ استفاده از ProcessPool و عدم نیاز به SharedMemory و انتقال مقدار اون بین پروسسها (اینکار سربار زیادی داره)
ادامه پست بعدی ....
❤13👍4
Python Hints
یه کار خوب دیگم که میشه کرد استفاده از concurrent.futures هست به نظر من. interface راحتی در اختیار میذاره برای حل کردن این موضوع. میشه یه process pool ساخت، تسک ها رو submit کرد و بعد wait کرد روی future ها. منتها با return_when عه FIRST_COMPLETE. اولی که…
چرا این راهکار بهتره ؟
۱- نیازی به Shared Memory نداریم؛ به محض اینکه یکی از future ها جواب بده، میدونیم به نتیجه رسیدیم.
۲- حتی اگر جواب توی آخرین عناصر یکی از chunk ها هم باشه بازم، نهایتاً به اندازه تست اون صبر میکنیم.
اما یک مسئلهای هم با این راهکار دارم؛
توی سیستمهای فعلی که core ها سرعت متفاوتی دارند (بعضی از cpu ها) اونایی که سرعت بالاتری دارند chunk خودشون رو سریعتر انجام میدهند، این روش اونجا مشکل ساز میشه یا نه ؟
سوال بالا رو بهش فکر کنید؛ اگر توی مصاحبه به Senior بر میخوردم قطعاً این سوال رو ازش میپرسیدم ولی کسی نبود حالا که سروش جواب خوب رو داد؛ این سوال رو هم با باقی اعضا به اشتراک میذارم!
پ.ن:
چون گفتید؛ شخصاً نظرم اینه که
یا یک موضوعی رو نباید بررسی کرد؛ یا اینکه به همهی حالاتش باید دقیق فکر کرد.
حالا که انقدر زحمت کشیدید و خوندید، بهتره کامل بررسیش کنیم! تا با نحوه تفکر مغز مریض منم آشنا بشید 😂
سروش خودش راهکار درست رو ارائه داد، ولی شماهم بهش فکر کنید.
راهکار درست و بهینه توی همون کد قبلی سروش هست؛ فقط مشکلی که توی چند خط بالا گفتم رو حل کنید.
۱- نیازی به Shared Memory نداریم؛ به محض اینکه یکی از future ها جواب بده، میدونیم به نتیجه رسیدیم.
۲- حتی اگر جواب توی آخرین عناصر یکی از chunk ها هم باشه بازم، نهایتاً به اندازه تست اون صبر میکنیم.
اما یک مسئلهای هم با این راهکار دارم؛
توی سیستمهای فعلی که core ها سرعت متفاوتی دارند (بعضی از cpu ها) اونایی که سرعت بالاتری دارند chunk خودشون رو سریعتر انجام میدهند، این روش اونجا مشکل ساز میشه یا نه ؟
سوال بالا رو بهش فکر کنید؛ اگر توی مصاحبه به Senior بر میخوردم قطعاً این سوال رو ازش میپرسیدم ولی کسی نبود حالا که سروش جواب خوب رو داد؛ این سوال رو هم با باقی اعضا به اشتراک میذارم!
پ.ن:
چون گفتید؛ شخصاً نظرم اینه که
یا یک موضوعی رو نباید بررسی کرد؛ یا اینکه به همهی حالاتش باید دقیق فکر کرد.
حالا که انقدر زحمت کشیدید و خوندید، بهتره کامل بررسیش کنیم! تا با نحوه تفکر مغز مریض منم آشنا بشید 😂
سروش خودش راهکار درست رو ارائه داد، ولی شماهم بهش فکر کنید.
راهکار درست و بهینه توی همون کد قبلی سروش هست؛ فقط مشکلی که توی چند خط بالا گفتم رو حل کنید.
👍19❤7
وقتی یکی میگه؛ حالا مگه الگوریتم چقدر مهمه ؟
آدما این سوال رو میپرسند،چون هیچوقت تفاوت عددی بین مثلا
O(log n), O(n log n)
درک نکردند و دوتا دلیل هم داره؛
۱- پردازندهها سرعت بسیار بالایی دارند.
۲- هیچوقت روی دیتاهای خیلی حجیم کار نکردند.
برای همین گشتم تا یک جدولی رو پیدا کنم؛ که الگوریتمها رو با زمان اجرا اونها مقایسه کنه!
مثلاً توی این جدول ñ² رو با n مقایسه کنید؛ برای ۱ میلیون ورودی!
دیگه همینجوری for تو در تو ننویسید!
پ.ن:
برای !n هم مسئله داریم توی دنیای کامپیوتر،
آدما این سوال رو میپرسند،چون هیچوقت تفاوت عددی بین مثلا
O(log n), O(n log n)
درک نکردند و دوتا دلیل هم داره؛
۱- پردازندهها سرعت بسیار بالایی دارند.
۲- هیچوقت روی دیتاهای خیلی حجیم کار نکردند.
برای همین گشتم تا یک جدولی رو پیدا کنم؛ که الگوریتمها رو با زمان اجرا اونها مقایسه کنه!
مثلاً توی این جدول ñ² رو با n مقایسه کنید؛ برای ۱ میلیون ورودی!
دیگه همینجوری for تو در تو ننویسید!
پ.ن:
برای !n هم مسئله داریم توی دنیای کامپیوتر،
فروشنده دورهگرد
❤🔥35👍19👏2❤1
این یکی هم مقایسه سرعت عملکرد
دلیل پافشاری من بر اینکه؛ حتماً
خوندنش اینطوری هست؛ ۱ سیکل سیپییو (توی چند نسل قبل اینتل ۱۴ تا
خوندن داده از سریعترین رمهای موجود؛ ۶ دقیقه میشه به نسبت اون! و خوندن از درایو
و اگر async کد نمیزنید توی تمام این مدت
حالا میتونید قشنگ درک کنید که چرا میگیم تسکهای I/O bound رو حتماً async کنید.
CPU
نسبت به گرفتن داده هست! دلیل پافشاری من بر اینکه؛ حتماً
concurrency
رو یاد بگیرید هم همین هست! خوندنش اینطوری هست؛ ۱ سیکل سیپییو (توی چند نسل قبل اینتل ۱۴ تا
instruction
میتونست انجام بده) رو اگر فرض کنیم ۱ ثانیه زمان میبره (زمان واقعیتر ستون وسط هست)خوندن داده از سریعترین رمهای موجود؛ ۶ دقیقه میشه به نسبت اون! و خوندن از درایو
SSD
(بسته به سرعت و ...) مثل این میمونه که بین ۲ تا ۶ روز زمان ببره!و اگر async کد نمیزنید توی تمام این مدت
CPU
شما بیکار هست، باید صبر کنه تا اون دادهها بهش برسه!حالا میتونید قشنگ درک کنید که چرا میگیم تسکهای I/O bound رو حتماً async کنید.
🔥40👍6❤4
#خارج_از_بحث
پست قبلی یک کلمه غلط املایی داشت؛
اصرار رو من اسرار نوشتم که باید بگم!
بعد یک پستی گذاشتم؛ که چندتا از دوستان لطف کردند پیام دادند که فرم درست این کلمه اصرار هست، توضیح دادم با این منظور که آقا کلمه رو بیخیال اگر مفهوم رو متوجه شدید من کارم رو کردم (البته که ازین دوستان ممنونم که انقدر دقیق پستها رو میخونند و اهمیت میدند، خداییشم خیلیها مودبانه این موضوع رو مطرح کردن) برای همین کلمه رو به پافشاری تغییر دادم.
ولی ازونجایی که توی هر جمعی چندتا بیشعور هم هست؛ بعضیها با کلمات و لحن نامناسب جواب دادند.
خطاب به این بیشعورها؛
یاد هزاران بار؛ مصاحبهها، دمو محصول برای مدیران و دانشگاه افتادم ...
وقتایی که یک بحث تخصصی رو انجام میدادی؛ یک محصول رو نشون میدادی یا ...
و همگی لال بودند، چون سواد نداشتند و مغزشون به این بحثها نمیکشید.
بعد در آخر جلسه؛ میگفتن چرا رنگ بنر رو آبی نکردی ؟ چرا اسلایدت فونت
پستهای قبلی گواه این موضوع هستند؛ گروهی که به کانال متصل بود بیشتر!
توی مملکت ما یکسری آدم عقدهای هستند، که برای اینکه بتونند عذاب وجدان بیسوادی رو از روی دوش خودشون بردارند، نشستند تا ازت ایراد بگیرند. اما چون سواد تخصصی ندارند ایراد گرفتنهاشون دقیقاً مثالهایی هست که زدم.
اینارو گفتم، چون توی کانالهای باقی دوستان بدتر از اینها رو دیدم (مخصوصاً اونهایی که به گروه وصل هستند)
همه مثل من بیادب و بیاعصاب نیستند که همونجا جواب بدند، خیلی از بچههای متخصص بیانگیزه میشوند.
اما برای دوستان متخصص:
پیشنهادمم اینه که، نه تنها نادیده بگیرید بلکه این افراد رو از گروها و کانالهاتون بن کنید!
همونجوری که کسی آدم لاابالی رو توی مهمونیش دعوت نمیکنه؛ تو میزبان این مهمونی هستی بذار مهمونات لذت ببرند، تمرکزت رو بذار روی لذت اونهایی که دعوتند.
بازهم ممنون از دوستانی که فقط برای درست بودن پست پیام دادند، نه برای ماهی گیری از آب گل آلود.
پست قبلی یک کلمه غلط املایی داشت؛
اصرار رو من اسرار نوشتم که باید بگم!
I don't give a shit about it ...
بعد یک پستی گذاشتم؛ که چندتا از دوستان لطف کردند پیام دادند که فرم درست این کلمه اصرار هست، توضیح دادم با این منظور که آقا کلمه رو بیخیال اگر مفهوم رو متوجه شدید من کارم رو کردم (البته که ازین دوستان ممنونم که انقدر دقیق پستها رو میخونند و اهمیت میدند، خداییشم خیلیها مودبانه این موضوع رو مطرح کردن) برای همین کلمه رو به پافشاری تغییر دادم.
ولی ازونجایی که توی هر جمعی چندتا بیشعور هم هست؛ بعضیها با کلمات و لحن نامناسب جواب دادند.
خطاب به این بیشعورها؛
یاد هزاران بار؛ مصاحبهها، دمو محصول برای مدیران و دانشگاه افتادم ...
وقتایی که یک بحث تخصصی رو انجام میدادی؛ یک محصول رو نشون میدادی یا ...
و همگی لال بودند، چون سواد نداشتند و مغزشون به این بحثها نمیکشید.
بعد در آخر جلسه؛ میگفتن چرا رنگ بنر رو آبی نکردی ؟ چرا اسلایدت فونت
Arial
نبود و ...پستهای قبلی گواه این موضوع هستند؛ گروهی که به کانال متصل بود بیشتر!
توی مملکت ما یکسری آدم عقدهای هستند، که برای اینکه بتونند عذاب وجدان بیسوادی رو از روی دوش خودشون بردارند، نشستند تا ازت ایراد بگیرند. اما چون سواد تخصصی ندارند ایراد گرفتنهاشون دقیقاً مثالهایی هست که زدم.
اینارو گفتم، چون توی کانالهای باقی دوستان بدتر از اینها رو دیدم (مخصوصاً اونهایی که به گروه وصل هستند)
همه مثل من بیادب و بیاعصاب نیستند که همونجا جواب بدند، خیلی از بچههای متخصص بیانگیزه میشوند.
اما برای دوستان متخصص:
پیشنهادمم اینه که، نه تنها نادیده بگیرید بلکه این افراد رو از گروها و کانالهاتون بن کنید!
همونجوری که کسی آدم لاابالی رو توی مهمونیش دعوت نمیکنه؛ تو میزبان این مهمونی هستی بذار مهمونات لذت ببرند، تمرکزت رو بذار روی لذت اونهایی که دعوتند.
بازهم ممنون از دوستانی که فقط برای درست بودن پست پیام دادند، نه برای ماهی گیری از آب گل آلود.
❤91👍26❤🔥5👏3
Python Hints
#تجربه بیش از ۹۸٪ پروژههای اپلیکیشنهایی که کار کردم دیتابیس رو اشتباه انتخاب کرده بودند! اصلا طبیعیت دیتاها و کار با دیتابیس و ... اشون SQL نیست اما ۱۰۰٪ تأکید دارند که از SQL استفاده بشه و اکثراً بعد از مدتی کوئریهای پیچیده کل سیستمشون رو میگیره !…
اینو میخواستم توی یک کانال دیگری بذارم ولی دیدم بحث انتخاب اشتباه دیتابیس اینجا بوده اینجا میذارم!
۵-۶ ماه پیش، یکی سوال پرسیده بود آقا من پستگرسم هی به مشکل میخوره روی پروژهام!
من هی میومدم کمک کنم، هر سوالی میپرسیدم یا جواب نمیداد (انگار داشت ناسا رو هک میکرد) یا نمیدونست.
چندبار بهش گفتم تا مشکل رو پیدا نکنم نمیشه به راهکار رسید
ولی
آخر عصبی شدم؛ گفتم برو
الان پیام داد، تشکر کرد بابت پیشنهاد
بعد توی همین صحبت فعلی متوجه شدم؛ دیتابیس برای کار ایشون واقعاً در همین حد
برای بکاپ هم بهش گفتم بذار برای خودت ایمیل کنه هر ۶ ساعت؛ واقعاً رفت اینم پیادهسازی کنه! 😂
خلاصه که تا ی چیزی توی ویدئو آموزشی میبینید نپرید سراغش؛ یک مقدار تحقیق بد هم نیست!
تجربه جالبی هم بود برای خودم!
۵-۶ ماه پیش، یکی سوال پرسیده بود آقا من پستگرسم هی به مشکل میخوره روی پروژهام!
من هی میومدم کمک کنم، هر سوالی میپرسیدم یا جواب نمیداد (انگار داشت ناسا رو هک میکرد) یا نمیدونست.
چندبار بهش گفتم تا مشکل رو پیدا نکنم نمیشه به راهکار رسید
ولی
آخر عصبی شدم؛ گفتم برو
sqlite
بزن! واقعاً منظورم این نبود که اینکارو بکنه میخواستم بفهمه که اینجوری نمیشه راهنمایی کرد و البته دیگه پیام نده.الان پیام داد، تشکر کرد بابت پیشنهاد
sqlite
(صحبت کردم باهاش اجازه گرفتم این پست رو بذارم) منم توضیحات بالا رو دادم بهش .... بعد توی همین صحبت فعلی متوجه شدم؛ دیتابیس برای کار ایشون واقعاً در همین حد
sqlite
زیادم بوده؛ کل دیتابیساش بعد از ۶ ماه کار به کمی کمتر از ۱۰۰ مگ رسیده (البته ازینجا به بعد سرعت رشدش کمتر میشه شاید سالی ۲۰-۳۰ مگ) برای بکاپ هم بهش گفتم بذار برای خودت ایمیل کنه هر ۶ ساعت؛ واقعاً رفت اینم پیادهسازی کنه! 😂
خلاصه که تا ی چیزی توی ویدئو آموزشی میبینید نپرید سراغش؛ یک مقدار تحقیق بد هم نیست!
تجربه جالبی هم بود برای خودم!
👍53❤12🔥6👏1
#یکبار_برای_همیشه
خیلی دیدم؛ دوستانی که از لینوکس دسکتاپ استفاده میکنند پارتیشن Swap رو تحت همه شرایط فعال میکنند.
بعضی وقتا حتی تا ۱۶ گیگ روی لپتاپ با رم ۱۶ گیگ دیدم بهش هارد اختصاص دادند.
اولاً که؛ ۹۹.۹٪ روی
اینکه خیلی از مدرسین لینوکس، هی میگن
اگر از تاریخچهاش بگذریم (اگر خواستید بخونید باید دنبال این باشید، از llm کمک بگیرید)
1970s Virtual memory on IBM OS/360 or Unix
این virtual memory یا نوع پیشرفته تر امروزش به اسم
امروزه فقط برای اینکه، به ادمین سرور وقت بده تا قبل از هنگ کردن یا .... سرور مشکل رو حل کنه استفاده میشه!
که ۹۹.۹٪ کاربرهای دسکتاپ این مشکل رو ندارند (نهایتاً ریاستارت میکنید، سرور که نیست بگی صدای یوزرهام در میاد) و استفاده از swap فقط باعث افت سرعت سیستم و هنگ کردن بسیار براشون میشه بخصوص اونایی که
خیلی دیدم؛ دوستانی که از لینوکس دسکتاپ استفاده میکنند پارتیشن Swap رو تحت همه شرایط فعال میکنند.
بعضی وقتا حتی تا ۱۶ گیگ روی لپتاپ با رم ۱۶ گیگ دیدم بهش هارد اختصاص دادند.
اولاً که؛ ۹۹.۹٪ روی
Desktop
و یوزر عادی نباید اصلا کار به Swap بکشه؛ توی باقی موارد هم برای ۱۶ گیگ رم نهایتاً ۱-۲ گیگ باید باشه که به محض اینکه دیدید رم درحال پرشدن هست؛ قبل از هنگ سیستم بتونید مشکل رو حل کنید.اینکه خیلی از مدرسین لینوکس، هی میگن
swap
رو فعال کنید و ... رو هم نمیفهمم!اگر از تاریخچهاش بگذریم (اگر خواستید بخونید باید دنبال این باشید، از llm کمک بگیرید)
1970s Virtual memory on IBM OS/360 or Unix
این virtual memory یا نوع پیشرفته تر امروزش به اسم
swap
برای این اومد که سیستمعاملها برای multi-task
مشکل رم داشتند و چون تکنولوژی رم حجم بالا اون موقع نبود ازین تکنیک استفاده کردند.امروزه فقط برای اینکه، به ادمین سرور وقت بده تا قبل از هنگ کردن یا .... سرور مشکل رو حل کنه استفاده میشه!
که ۹۹.۹٪ کاربرهای دسکتاپ این مشکل رو ندارند (نهایتاً ریاستارت میکنید، سرور که نیست بگی صدای یوزرهام در میاد) و استفاده از swap فقط باعث افت سرعت سیستم و هنگ کردن بسیار براشون میشه بخصوص اونایی که
swappiness
رو هم کانفیگ نمیکنند.👍38❤11👏2
چه تغییرات قشنگی داریم روی؛
برای من سه موردش خیلی جذاب هست؛
اولیش بالاخره؛
دومیش؛ پشتیبانی کامل از
تازه اگر پستهای قبلی رو دنبال کرده باشید میدونید
نهایتا یک سری
و یک اشاره هم بکنم به این پست (حدودا همین موقعها ۲ سال پیش):
https://t.iss.one/pyHints/117
هنوزم دیر نشده؛ وقت بذارید براش و درکش کنید!
پ.ن؛
از دوستان اشاره کردند،
شوخی خوبی بود، اگر نگرفتید:
بخاطر این هست که
PostgreSql 18
شماهم دیدید ؟برای من سه موردش خیلی جذاب هست؛
اولیش بالاخره؛
Asynchronous I/O
بله منم خوندم فعلا فقط روی Read
ولی همینم خوبه ۲-۳ برابر سرعت بیشتر اونم مفتی کیه که بدش بیاد ؟دومیش؛ پشتیبانی کامل از
UUIDv7
یعنی بدون دردسر میتونی حتی روی distributed system
هم primary key
کاملا یونیک داشته باشی.تازه اگر پستهای قبلی رو دنبال کرده باشید میدونید
UUIDv7
برای ایندکس هم عملکرد بهتری داره (مشکلی که خیلی از پروژهها با UUIDv4
داشتند و حالا تقریبا حل شده)نهایتا یک سری
Optimization
های خاص که بصورت اتومات کوئری شما رو قبل از اجرا بهبود میده مثلا اگر OR
زیاد باشه و بشه با Any تغییرش میده و ...و یک اشاره هم بکنم به این پست (حدودا همین موقعها ۲ سال پیش):
https://t.iss.one/pyHints/117
هنوزم دیر نشده؛ وقت بذارید براش و درکش کنید!
پ.ن؛
از دوستان اشاره کردند،
created_at
هم اگر یادمون بره به چخ نمیریم 😁شوخی خوبی بود، اگر نگرفتید:
بخاطر این هست که
UUIDv7
بر اساس زمان هستTelegram
Python Hints
#Quick
من این اخطار هارو همیشه زودتر به دوستان نزدیکم میگم
گفتم ازین به بعد بعضیهاش رو اینجا هم بگم:
اولین :
asyncio
رو هرچه زودتر یاد بگیرید، پترنها و مفاهیم برنامهنویسی
Async, Parallel, Concurent
قبلتر تأکید زیادی روش نداشتم، اما دیر نیست (توی…
من این اخطار هارو همیشه زودتر به دوستان نزدیکم میگم
گفتم ازین به بعد بعضیهاش رو اینجا هم بگم:
اولین :
asyncio
رو هرچه زودتر یاد بگیرید، پترنها و مفاهیم برنامهنویسی
Async, Parallel, Concurent
قبلتر تأکید زیادی روش نداشتم، اما دیر نیست (توی…
🔥27👍2
Python Hints
نمیدونم چرا ولی خیلیها پیام دادید کتاب برای fastapi هم معرفی کنم! برای خودمم نیاز بود یک کتاب خوب تو زمینه FastApi پیدا کنم برای معرفی؛ برای review مطالب یکی از دوستان هم اینکار رو زودتر شروع کرده بودم (۲ هفته قبل). تا اینجا ۳ تا کتاب رو خوندم که بنظرم…
👆👆👆👆👆
هر ۵ تا کتابی که گفتم + ۱ کتاب هم شما گفتید همرو خوندم.
اگر تا حالا اصلا سراغ FastApi نرفتید و خیلی با مفاهیم بکند هم آشنا نیستید؛ هرکدوم از کتابها که تاریخ 2024 یا 2025 خورده رو میتونید بخونید!
اما اگر ۳ ساعت بیشتر روی
داکیومنت FastApi رو بخونید!
داکیومنت ابزارهایی که معرفی کرده رو بخونید مثل celery یا sqlmodel بطور استثنا برای sqlalchemy کتاب خوب داریم (سرچ کنید میاد)
نگاهی هم به اسپانسرهاش و پروژههای open-source که باهاش نوشته شده بندازید که خودش یک دانشگاه هست!
متاسفم، کتابی برای این مورد نمیتونم معرفی کنم.
چون کتاب درخوری ندیدم
هر ۵ تا کتابی که گفتم + ۱ کتاب هم شما گفتید همرو خوندم.
اگر تا حالا اصلا سراغ FastApi نرفتید و خیلی با مفاهیم بکند هم آشنا نیستید؛ هرکدوم از کتابها که تاریخ 2024 یا 2025 خورده رو میتونید بخونید!
اما اگر ۳ ساعت بیشتر روی
FastApi
وقت گذاشتید؛ هیچکدوم از کتابها بدرد شما نخواهد خورد! داکیومنت FastApi رو بخونید!
داکیومنت ابزارهایی که معرفی کرده رو بخونید مثل celery یا sqlmodel بطور استثنا برای sqlalchemy کتاب خوب داریم (سرچ کنید میاد)
نگاهی هم به اسپانسرهاش و پروژههای open-source که باهاش نوشته شده بندازید که خودش یک دانشگاه هست!
متاسفم، کتابی برای این مورد نمیتونم معرفی کنم.
چون کتاب درخوری ندیدم
❤25👍10🔥3❤🔥2