Python Hints
یک پست برای مصاحبه الگوریتم توی @pyrust گذاشتم، دوستان پیام دادن پس پایتون چی کتاب پیادهسازی الگوریتم و آموزش و ... توی پایتون چندتایی معرفی شده (بخش Posts کانال رو ببینید، اگر قابلیت استوری برگرده کتاب گذاشتن رو ادامه میدم، چندتا خوب یافتم) ولی اگر فقط…
برای بازگشت قابلیت استوری باید boost کنید، دوستانی که پریمیوم دارند.
https://t.iss.one/boost/pyHints
(شخصاً پیشنهاد خرید، پریمیوم رو نمیدم ویژگی جذابی توش ندیدم)
https://t.iss.one/boost/pyHints
(شخصاً پیشنهاد خرید، پریمیوم رو نمیدم ویژگی جذابی توش ندیدم)
Telegram
Python Hints
از این کانال حمایت کنید تا بتواند به قابلیتهای اضافی دسترسی پیدا کند.
👍25❤5👎4🤪2
بیشترین سوالی که از من میشه، برای پیشرفت چه پروژهای بزنم ؟
یا از کجا بفهمم سطحم برای توسعه پروژه چطوری هست و ...
شاید همین الان هم خود شما درگیر این موضوع باشید، برای بچههای
ولی توی
codecrafters
این موضوع رو لذت بخش کرده (سایت پولی هست) بعضی از چلنجها رایگان هست و بر اساس سطح شما چلنج سخت یا آسون میشه.
مثلاً توی پیادهسازی گیت، اگر
اگر هم نتونستید خرید کنید:
۱- ازش ایده بگیرید
۲- توی یوتیوب اسم چالش رو سرچ کنید، ویدئو گذاشتن از مراحل چالشها و حل اونها از نظر سایت هیچ ایرادی که نداره هیچ، تشویق هم میشه.
بازم میگم
یا از کجا بفهمم سطحم برای توسعه پروژه چطوری هست و ...
شاید همین الان هم خود شما درگیر این موضوع باشید، برای بچههای
frontend, mobile
ساده هست، مثلا وارد یوتیوب میشن و میزنند Clone X in React
Clone Facebook in React, ....
ولی توی
Python
و حالا تمرکز خودم Rust
موضوع سختتر هست و ۹۹٪ مواقع مجبور میشیم Source Code بخونیم که به اندازه کد زدن لذت بخش نیست واقعاًcodecrafters
این موضوع رو لذت بخش کرده (سایت پولی هست) بعضی از چلنجها رایگان هست و بر اساس سطح شما چلنج سخت یا آسون میشه.
مثلاً توی پیادهسازی گیت، اگر
beginner
باشید ویژگیها سادهتر هست وقتی Senior
شدید میتونید دوباره همون رو تمرین کنید.اگر هم نتونستید خرید کنید:
۱- ازش ایده بگیرید
۲- توی یوتیوب اسم چالش رو سرچ کنید، ویدئو گذاشتن از مراحل چالشها و حل اونها از نظر سایت هیچ ایرادی که نداره هیچ، تشویق هم میشه.
بازم میگم
leetcode
برای یادگرفتن و تمرین زبان برنامهنویسی نیست؛ چون دیدم بعضی اساتید به اشتباه leetcode
رو پیشنهاد میدهند برای تمرین زبان برنامهنویسی.CodeCrafters
The Software Pro's Best Kept Secret.
Real-world proficiency projects designed for experienced engineers. Develop software craftsmanship by recreating popular devtools from scratch.
👍52❤16
امروز ۵ تا تماس داشتم، دقیقاً همین الان شمردم
که نه تماس کاری بود
نه تماس حال و احوال بود
نه تماس درد و دل عادی
عیناً هر ۵ تا زنگ زده بودند، که آقا تورو قرآن بگو چیکار کنیم ؟
چرا دولوپر نیست ؟
کسی رو نداری ؟
گفتم نه شرمنده، نیروی خوب توی دست و بالم نیست واقعاً.
- اصن دولوپر سطح بالا نمیخوایم، فقط چندتا جونیور که برنامهنویس باشند نه coder معرفی کن.
کسی رو ندارم واقعاً، اون وقتا که میگفتم تبلیغ آموزشگاه و مدرس چرت و پرت نکنید.
حرفم بریده میشد و بحث ادامه پیدا میکرد.
بر میگشتیم سر اینکه اگر کسی رو پیدا کردی، من رو بذار تو اولویت؛ و خود من که نیاز به نیروی کار دارم.
ببخشیدا دیگه #اوضاع_خیته جواب نیست باید بزنم #اوضاع_کثافته
بخش صحبت خودم؛
همه هم دیدی ؟ حقوق بالای ۵۰ میلیون میخوان؛ اونوقت طرف از ۳۰ تا سوال مصاحبه ۳ تارو جواب داده :/
پ.ن : لینکدین من پر شده از آدمایی که زدن
که نه تماس کاری بود
نه تماس حال و احوال بود
نه تماس درد و دل عادی
عیناً هر ۵ تا زنگ زده بودند، که آقا تورو قرآن بگو چیکار کنیم ؟
چرا دولوپر نیست ؟
کسی رو نداری ؟
گفتم نه شرمنده، نیروی خوب توی دست و بالم نیست واقعاً.
- اصن دولوپر سطح بالا نمیخوایم، فقط چندتا جونیور که برنامهنویس باشند نه coder معرفی کن.
کسی رو ندارم واقعاً، اون وقتا که میگفتم تبلیغ آموزشگاه و مدرس چرت و پرت نکنید.
حرفم بریده میشد و بحث ادامه پیدا میکرد.
بر میگشتیم سر اینکه اگر کسی رو پیدا کردی، من رو بذار تو اولویت؛ و خود من که نیاز به نیروی کار دارم.
ببخشیدا دیگه #اوضاع_خیته جواب نیست باید بزنم #اوضاع_کثافته
بخش صحبت خودم؛
همه هم دیدی ؟ حقوق بالای ۵۰ میلیون میخوان؛ اونوقت طرف از ۳۰ تا سوال مصاحبه ۳ تارو جواب داده :/
پ.ن : لینکدین من پر شده از آدمایی که زدن
FastApi, Django
رو یادگرفتن ولی کار نیست ولی تجربه نشون داده یاد نگرفتن فقط دوره رفتن و مدرک گرفتن (نتایج مصاحبه بعضیهاشون رو از بچهها گرفتم)👍86💔7👎4❤2😭1
از صبح داشتم یک پروژه رو
دسترسی به کدهای قدیمی هم گرفتم، میبینم تست نویسی برای این باگ تو زبان و فریمورک قبلی انجام شده ولی این سمت توی تستها نیست !
بنظرتون مشکل از کجاست ؟
مدیرفنی یا تیملید بکند.
یک درس بزرگی که حتی قبل از ورود به دنیای بکند و بخاطر عادت به سورس کد خوندن گرفتم این بود که
اولویت بالاتری داره از
واقعیت هم همین هست،
خیلی تیمها (ایرانی و خارجی) که
این کاملاً خطا هست، برای مدیر فنی ٫ تیم لید منظورم هست. الان سوالتون اینه که چرا ؟
توی این پروژه اگر
اگر این اتفاق افتاده بود الان که فریمورک عوض شده نیاز به باز نویسی تستها نبود، یعنی ما فقط برای اجرای سرور روی 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
باید جوری باشه که فارغ از فریمورک و زبان قابل اجرا باشه.متاسفانه کدهای جدید این تیم هم این خطا رو داره و باز وابسته شده به فریمورک
👍70✍9❤6👌2👎1
چطوری بفهمیم قراره یک پست مزخرف توی لینکدین بخونیم ؟!
بله طرف عکس خودش رو گذاشته؛ ۸۰٪ خانوم ۶۰٪ مواقع اندام نمایی
۴ تا پست اینور و اونور هم، شکایت مزاحمت و ... داره
این کانکشنهارو درجا بن میکنم؛ اونایی هم لایک میکنند درجا ریمو میکنم.
#پاکسازی_لینکدین
#موقت
پ.ن : اگر عقده دیده شدن دارید، توی about me لینکدین آدرس صفحه اینستاگرام خودتون رو بذارید (یا حتی only-fans)
بله طرف عکس خودش رو گذاشته؛ ۸۰٪ خانوم ۶۰٪ مواقع اندام نمایی
۴ تا پست اینور و اونور هم، شکایت مزاحمت و ... داره
این کانکشنهارو درجا بن میکنم؛ اونایی هم لایک میکنند درجا ریمو میکنم.
#پاکسازی_لینکدین
#موقت
پ.ن : اگر عقده دیده شدن دارید، توی about me لینکدین آدرس صفحه اینستاگرام خودتون رو بذارید (یا حتی only-fans)
👍130😁31👎15👏3😈2❤1🤝1
Python Hints
https://www.youtube.com/@PyHints یوتیوب خودمون یادتون نره لایوها همه اینجا قرار میگیره
YouTube
فصل یازدهم - A Pythonic Object
این جلسات کاملا رایگان و با هدف کمک به جامعه توسعه دهنده پایتون برگذار شده.
توی این جلسه؛ به بررسی فصل یازدهم پرداختیم.
نهایتا همه چیز در پایتون object هست.
کدهای هر جلسه رو میتونید توی گیتهاب بخونید:
https://github.com/Pyhints/fluent_python
اگر دوست…
توی این جلسه؛ به بررسی فصل یازدهم پرداختیم.
نهایتا همه چیز در پایتون object هست.
کدهای هر جلسه رو میتونید توی گیتهاب بخونید:
https://github.com/Pyhints/fluent_python
اگر دوست…
❤65👍12🔥3👎1
#Quick
یک عادت خوبی که توی بچههای ایران هست که یک
برای اونایی که نمیدونند،
حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به
فکر کنم متوجه منظورم شدید؛ توی
توی مثال قبلی اگر
حالا چرا
هر
پس سرویس رو از exception, ... مانیتور کنید با
یک عادت خوبی که توی بچههای ایران هست که یک
endpoint
توی پروژههای بکند میسازند به اسم health-check
اما ۹۰٪ اشتباه پیادهسازی میشه متأسفانه.برای اونایی که نمیدونند،
health-check
برای این هست که بصورت اتوماتیک یک سیستم دیگه مثل k8s
یا سیستم مانیتورینگ بتونه وضعیت بکند رو بررسی کنه و اگر جوابی نگرفت ایمیل بزنه یا اون pod
رو ریست کنه.حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به
postgres, celery
نیاز داره با این وضعیت سیستم شما وقتی سالم هست که به postgres
شما بتونه یه درستی دسترسی بگیره و البته به celery
(عملکرد celery, postgres
رو اگر بخواید بررسی کنید نیاز به ۲ تا سیستم مانیتورینگ جدا دارید، برای شما توی سطح اپلیکیشن دسترسی به این سرویسها مهم هست)فکر کنم متوجه منظورم شدید؛ توی
health-check
باید دسترسی به سرویسهایی که بکند شما بدون اونا healthy
نیست رو هم چک کنید.توی مثال قبلی اگر
celery
برای شما اجبار نیست توی health-check
کانکشن بهش رو تست نمیکنید.حالا چرا
k8s
رو مثال زدم ؟ برای اینکه بگم استفاده از این endpoint
برای بررسی pod ها کار درستی نیست: هر
pod
بصورت جداگونه و بصورت تک سرویس در نظر گرفته میشه که به تنهایی میتونه restart
بشه بدون اینکه به سیستم لطمه بزنه (من HA
درنظرم گرفتم، k8s
برای همینه دیگه) پس باید تو سریعتر زمانی که عملکرد خودش رو از دست میده restart
بشه فکر کن load سیستم بره بالا در این شرایط هم از روی health-check
نمیشه مطمئن بود آیا چون load شبکه رفت بالا جواب دیر میاد یا memory leakage
داریم یا ...پس سرویس رو از exception, ... مانیتور کنید با
k8s
تا جایی که میشه.👍44✍12❤3👎1
Forwarded from Rust for Python developers
#Quick
اگر از
الان اومد یک کدی رو بزنم چندتا از
اگر از
vscode
برای Rust
استفاده میکنید حتما این extension
رو نصب کنید که دستورات sql
رو براتون وسط کدهای rs به خوبی highlight
میکنه ( از حالت str&
خالی در میاد)الان اومد یک کدی رو بزنم چندتا از
Sql Query
هاش خیلی طولانی و سخت شد بدون highlight
خوندنش قطعا آزار دهنده بود با سرچ به این رسیدم و بنظرم گزینه بسیار کمک کننده و عالیای هست.👍29❤6🙏2✍1🔥1
Python Hints
https://youtu.be/Y0JBb3CJeFA
YouTube
فصل دوازدهم - Special Methods for Sequences
این جلسات کاملا رایگان و با هدف کمک به جامعه توسعه دهنده پایتون برگذار شده.
توی این جلسه؛ به بررسی فصل دوازدهم پرداختیم و آماده شدیم برای درک بهتر پروتکلها در پایتون.
کدهای هر جلسه رو میتونید توی گیتهاب بخونید:
https://github.com/Pyhints/fluent_python…
توی این جلسه؛ به بررسی فصل دوازدهم پرداختیم و آماده شدیم برای درک بهتر پروتکلها در پایتون.
کدهای هر جلسه رو میتونید توی گیتهاب بخونید:
https://github.com/Pyhints/fluent_python…
❤55👍5🍾4🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
۲ دقیقه به من وقت بدید.
هم مجاب کنم بجای کمک خیریه، غذا و دارو ؛ کاندوم اهدا کنید.
هم به شما نشون بدم حرومزاده چه شکلی هست.
هم مجاب کنم بجای کمک خیریه، غذا و دارو ؛ کاندوم اهدا کنید.
هم به شما نشون بدم حرومزاده چه شکلی هست.
👍115👎10🤯8❤4😁4🐳4
بگذارید هرکس به آیین خودش باشد.
زنان را گرامی بدارید.
فرودستان را دریابید.
اجازه دهید هرکسی به تکلم قبیلهی خویش سخن بگوید.
آدمی تنها در مقام خویش به منزلت خواهد رسید.
۷ آبان روز بزرگداشت کوروش کبیر، همایون باد.
زنان را گرامی بدارید.
فرودستان را دریابید.
اجازه دهید هرکسی به تکلم قبیلهی خویش سخن بگوید.
آدمی تنها در مقام خویش به منزلت خواهد رسید.
۷ آبان روز بزرگداشت کوروش کبیر، همایون باد.
❤129❤🔥28👎19👍7💘3😁1💯1
گروه مربوط به کانال حذف شد.
خیلیها هنوز شعور عضویت در گروه رو ندارند.
#قوانین و بنر گروه رو خوندن وظیفه اعضا هست.
اینحه صحبتی غیر از Core Python توی گروه نباشه
به خواسته خودتون بوده و رأی گیری شد تا گروه جدابی داشته باشیم.
هیچکدوم از کانالهای
@pyhints
@pytens
@pyrust
هیچوقت هیچ آوردهای برای من نداشتند، هیچ سودی هم نداشته.
قرار باشه تمرکزم رو هم ازم بگیره ترجیح میدم نباشه.
خیلیها هنوز شعور عضویت در گروه رو ندارند.
#قوانین و بنر گروه رو خوندن وظیفه اعضا هست.
اینحه صحبتی غیر از Core Python توی گروه نباشه
به خواسته خودتون بوده و رأی گیری شد تا گروه جدابی داشته باشیم.
هیچکدوم از کانالهای
@pyhints
@pytens
@pyrust
هیچوقت هیچ آوردهای برای من نداشتند، هیچ سودی هم نداشته.
قرار باشه تمرکزم رو هم ازم بگیره ترجیح میدم نباشه.
❤61💔16👀15👍14👎9😁8😨3🎃2👾2🙏1🆒1
#Quick
مثالی برای یک بحث:
یک سری سوالات هست توی مصاحبه که واقعاً نیاز به درک درست از چندین جنبه داره.
یک مثال میزنم و بعدش دیگه این سوال رو از مصاحبههام حذف میکنم :
مثلاً توی بکند؛
چرا به سریالایزر نیاز داریم ؟ من مدل دیتابیس رو دارم پکیجهای مورد نیاز برای کار با
این مثلاً ازون سوالاتی هست که اگر پوزیشن کاری جنگو باشه، توی سطح
اما اگر غیر از اون باشه حتماً توی سطح
به جوابش فکر کنید، اگر نمیدونید هم تحقیق کنید.
مثالی برای یک بحث:
یک سری سوالات هست توی مصاحبه که واقعاً نیاز به درک درست از چندین جنبه داره.
یک مثال میزنم و بعدش دیگه این سوال رو از مصاحبههام حذف میکنم :
مثلاً توی بکند؛
چرا به سریالایزر نیاز داریم ؟ من مدل دیتابیس رو دارم پکیجهای مورد نیاز برای کار با
json
, dict
هم که وجود داره چرا مستقیم خودم اینکار رو نکنم و حتماً باید از serializer
استفاده کنم ؟این مثلاً ازون سوالاتی هست که اگر پوزیشن کاری جنگو باشه، توی سطح
mid
میپرسم.اما اگر غیر از اون باشه حتماً توی سطح
junior
میپرسم، یک نمونه از چیزهایی که میگم بکند رو فارغ از فریمورک یادبگیرید هم هست.به جوابش فکر کنید، اگر نمیدونید هم تحقیق کنید.
👍34🤔9❤2
Python Hints
#Quick مثالی برای یک بحث: یک سری سوالات هست توی مصاحبه که واقعاً نیاز به درک درست از چندین جنبه داره. یک مثال میزنم و بعدش دیگه این سوال رو از مصاحبههام حذف میکنم : مثلاً توی بکند؛ چرا به سریالایزر نیاز داریم ؟ من مدل دیتابیس رو دارم پکیجهای مورد نیاز…
جواب این سوال ساده هست ولی من با یک مثال مهمترین دلایلش رو میگم :
توی فریمورکی مثل جنگو که اگر کار کرده باشید؛ حتما سریالایزر رو دارید؛ توی پایتون جا افتاده که برای باقی فریمورکها هم از همین اسم استفاده میکنند.
فرض کنیم من از کاربر ۵ تا اطلاعات میگیریم تا رجیسترش کنم
این برای ثبتنام هست؛ برای لاگین :
مشاهده پروفایل توسط دیگران:
ادیت پروفایل:
همهی این موارد با یک فیلد کم و زیاد کاملا مشابه هم هستند؛ اگر سریالایزر نبود برای ولیدکردن شماره تماس چون دیتا از نوع str هست هربار باید یادم بمونه که کدهای مربوط به ولید کردنش رو اجرا بذارم اگر یادم بره چی میشه ؟
شخص با شمارهای که ولید نیست توی سیستم ثبتنام میشه و دیگه هیچوقت نمیتونه وارد سیستم بشه.
اما با وجود سریالایزر اگر جایی از کد ببینم دولوپری دیتای request رو داره میخونه فارغ از اینکه چیکار داره میکنه کد رو ناامن و همراه باگ میدونم.
همین ۱ مورد دوتا ویژگی خوب به من میده :
۱- ولیدیشن اصولی و یکپارچه برای کل سیستم
۲- عدم تکرار کد
اما کارهای دیگهای هم هست که میشه کرد؛ فرض کنید یک دیتاتایپ خاص خودتون رو دارید و سمت دیتابیس با
دیگه چکاری میشه کرد ؟
فرض کنید یک باگ توی دیتابیس پیدا شد یا یک نوع حمله مثل
به لطف جنگو شماه هیچکدوم ازین موارد رو نمیبینید اما توی فریمورکهای دیگه باید با این مفاهیم آشنا باشید تا به درستی پیادهسازی کنید.
توی فریمورکی مثل جنگو که اگر کار کرده باشید؛ حتما سریالایزر رو دارید؛ توی پایتون جا افتاده که برای باقی فریمورکها هم از همین اسم استفاده میکنند.
فرض کنیم من از کاربر ۵ تا اطلاعات میگیریم تا رجیسترش کنم
{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
"email": "[email protected]",
"phone": "09122020200"
}
این برای ثبتنام هست؛ برای لاگین :
{
"phone": "09122020200"
}
مشاهده پروفایل توسط دیگران:
{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
}
ادیت پروفایل:
{
"first_name": "Mo",
"last_name": "abbasi",
"channel": "pyhints",
"phone": "09122020200"
}
همهی این موارد با یک فیلد کم و زیاد کاملا مشابه هم هستند؛ اگر سریالایزر نبود برای ولیدکردن شماره تماس چون دیتا از نوع str هست هربار باید یادم بمونه که کدهای مربوط به ولید کردنش رو اجرا بذارم اگر یادم بره چی میشه ؟
شخص با شمارهای که ولید نیست توی سیستم ثبتنام میشه و دیگه هیچوقت نمیتونه وارد سیستم بشه.
اما با وجود سریالایزر اگر جایی از کد ببینم دولوپری دیتای request رو داره میخونه فارغ از اینکه چیکار داره میکنه کد رو ناامن و همراه باگ میدونم.
همین ۱ مورد دوتا ویژگی خوب به من میده :
۱- ولیدیشن اصولی و یکپارچه برای کل سیستم
۲- عدم تکرار کد
اما کارهای دیگهای هم هست که میشه کرد؛ فرض کنید یک دیتاتایپ خاص خودتون رو دارید و سمت دیتابیس با
extension
های مربوطه اضافه شده؛ به کمک سریالایزر میتونید مطمئن بشید اگر یک tuple
براتون ارسال شده حتما از اون دیتاتایپ مدنظر هست (مثال vector2d
جلسات کتابخونی رو یادتون هست ؟)دیگه چکاری میشه کرد ؟
فرض کنید یک باگ توی دیتابیس پیدا شد یا یک نوع حمله مثل
SQL Injection
اونوقت فقط کافیه یکبار روی Base Serializer
این مورد رو بررسی کنید و جلوگیری کنید (مثلا برای فیلد ایمیل / اسمها) بعد هرجا برای فیلد ایمیل یا اسمها ازین inherit
میکنید بصورت خودکار SQL Injection prevention
رو هم خواهید داشت.به لطف جنگو شماه هیچکدوم ازین موارد رو نمیبینید اما توی فریمورکهای دیگه باید با این مفاهیم آشنا باشید تا به درستی پیادهسازی کنید.
👍48❤12✍6
Media is too big
VIEW IN TELEGRAM
مصاحبه
Joe Rogan
با
Elon musk
خیلی سیاسی بود ولی بخش آخرش ایلان میگه فقط چندماه فاصله داریم تا سرویس دهی به گوشیهای معمولی.
ولی با اینم کاری ندارم؛ سرعت دانلود درحال حاضر روی
حساب کردم؛ ۱۰۰ برابر ضعیفتر اینترنت ۱۵۰ مگ (هنوز تمام ماهوارهها ارسال نشده) میشه ۱.۵ مگ و این سرعت اینترنت خیلی بیشتر از پرسرعت ترین اینترنتی هست که خیلی بچههای ایرانی دارند.
پوف ......
Joe Rogan
با
Elon musk
خیلی سیاسی بود ولی بخش آخرش ایلان میگه فقط چندماه فاصله داریم تا سرویس دهی به گوشیهای معمولی.
ولی با اینم کاری ندارم؛ سرعت دانلود درحال حاضر روی
150MB
هم گزارش شده؛ و توی صحبت ایلان میگه فقط اینکه 100x اینترنت ضعیفتری خواهد بود که بدرد پیام دادن، تصویر دیدن، یا ویدیو کیفیت پایین میخوره حساب کردم؛ ۱۰۰ برابر ضعیفتر اینترنت ۱۵۰ مگ (هنوز تمام ماهوارهها ارسال نشده) میشه ۱.۵ مگ و این سرعت اینترنت خیلی بیشتر از پرسرعت ترین اینترنتی هست که خیلی بچههای ایرانی دارند.
پوف ......
👍107👎6❤3👏3😭3😁2✍1⚡1😈1
Python Hints
#Quick مثالی برای یک بحث: یک سری سوالات هست توی مصاحبه که واقعاً نیاز به درک درست از چندین جنبه داره. یک مثال میزنم و بعدش دیگه این سوال رو از مصاحبههام حذف میکنم : مثلاً توی بکند؛ چرا به سریالایزر نیاز داریم ؟ من مدل دیتابیس رو دارم پکیجهای مورد نیاز…
#Quick
یک سری پروژه داشتم نگاه میکردم، پروژههایی که یا توی دورههای مختلف گذاشته شده (برای آموزش) یا بچهها برای تمرین زدند.
(جلوتر میگم چرا اینکارو داشتم میکردم)
بعد میدیدم که خب هیچکدوم ازین پروژهها مثلاً از ابزاری مثل
اول اینکه مگه توی دنیای فعلی میشه شما پروژهای داشته باشی ولی
یا یک مثال دیگه، هیچکدوم از پروژهها رو نمیشد با تک کامند
بحث ci/cd نیست الان، ولی docker compose و ... باید به درستی نوشته بشه
و البته کلی نکات دیگه مثل این موضوع.
اینکه چرا دارم این موارد رو دنبال میکنم :
ضبط یک دوره کامل، اگر به نتیجه برسیم با یک تیم حرفهای.
یک سری پروژه داشتم نگاه میکردم، پروژههایی که یا توی دورههای مختلف گذاشته شده (برای آموزش) یا بچهها برای تمرین زدند.
(جلوتر میگم چرا اینکارو داشتم میکردم)
بعد میدیدم که خب هیچکدوم ازین پروژهها مثلاً از ابزاری مثل
Celery
استفاده نکردن یا Celery
داره ولی Flower
نداره.اول اینکه مگه توی دنیای فعلی میشه شما پروژهای داشته باشی ولی
celery
توش نباشه؟ یا اینکه celery
رو ببری روی پروداکشن ولی مانیتور نکنی (اینو توی خیلی پروژهها هم دیدم).یا یک مثال دیگه، هیچکدوم از پروژهها رو نمیشد با تک کامند
deploy
کرد.local, stage, production
بحث ci/cd نیست الان، ولی docker compose و ... باید به درستی نوشته بشه
و البته کلی نکات دیگه مثل این موضوع.
اینکه چرا دارم این موارد رو دنبال میکنم :
ضبط یک دوره کامل، اگر به نتیجه برسیم با یک تیم حرفهای.
👍77❤21👎5❤🔥3🔥2
#خارج_از_بحث
شخص لینوس توروالدز یک تصمیمی گرفت و اونم اخراج تمام
البته اونهایی که داستان
سال قبل روی پروژه xz (برای فایل compression) یک گروهی حدوداً ۲ سال وقت گذاشتن و کد سالم ارائه کردند، از یک طرف دیگر هم یک کاراکتر با هویت خانوم (میگم کاراکتر چون جعلی هست) روی یک سری پروژههای دیگه شروع کرده بود کد سالم فرستادن، اما اینها پروژههایی بود که نزدیک به mainrainer اصلی xz بود و مطمئن بود ایشون کدها و تلاشش رو میبینه (بدون اینکه روی کرنل یا لینوکس کاری بکنه)
گروه شروع میکنه به maintainer اصلی فشار آوردن که آقا چقدر دیر تأیید میکنی و بررسی میکنی اگر وقت نداری جایگزین معرفی کن، که نهایتاً همون کارکتر خانوم رو وارد میکنه بعد از یک مدت کاراکتر خانوم کار رو دست میگیره و ایمیلهای باگ امنیتی رو برای خودش میفرسته و
باقی داستان رو هم که میدونید، دنیا شانس آورد که یک نفر به میزان
بعد از آنالیز
از همون زمان هم این بحث بررسی مجدد
بالاخره روسیه داخل جنگ هست و همه میدونند که دولت روسیه چه فشار و اعمال قدرتی روی هکرها و برنامهنویسهاش داره
خلاصه که شخصاً ازین کار لینوس توروالدز شدیداً حمایت میکنم.
امنیت دنیا مهمتر از چندتا
شخص لینوس توروالدز یک تصمیمی گرفت و اونم اخراج تمام
maintainer
های روس بود. من خیلی صبر کردم ببینم کسی ازین موضوع حمایت میکنه یا نه که دیدم خیر همه مخالفان این موضوع هم شدند.البته اونهایی که داستان
ssh backdoor
سال قبل رو یادشون هست، حمایت کردند.سال قبل روی پروژه xz (برای فایل compression) یک گروهی حدوداً ۲ سال وقت گذاشتن و کد سالم ارائه کردند، از یک طرف دیگر هم یک کاراکتر با هویت خانوم (میگم کاراکتر چون جعلی هست) روی یک سری پروژههای دیگه شروع کرده بود کد سالم فرستادن، اما اینها پروژههایی بود که نزدیک به mainrainer اصلی xz بود و مطمئن بود ایشون کدها و تلاشش رو میبینه (بدون اینکه روی کرنل یا لینوکس کاری بکنه)
گروه شروع میکنه به maintainer اصلی فشار آوردن که آقا چقدر دیر تأیید میکنی و بررسی میکنی اگر وقت نداری جایگزین معرفی کن، که نهایتاً همون کارکتر خانوم رو وارد میکنه بعد از یک مدت کاراکتر خانوم کار رو دست میگیره و ایمیلهای باگ امنیتی رو برای خودش میفرسته و
maintenaner
اصلی رو دور میزنه (این پروسه ۳ سال طول کشیده از شروع کد زدن تا گرفتن این سطح دسترسی) باقی داستان رو هم که میدونید، دنیا شانس آورد که یک نفر به میزان
load cpu
اش بسیار اهمیت میداد (پایچارم رو پاک کنید، شاید روی لود رم شما باگ بعدی رو پیدا کردید 🤣😂)بعد از آنالیز
git log
مشخص میشه این گروه تلاش میکردند، خودشون رو چینی، هندی نشون بدهند (دستکاری تایمزون و ...) اما رفتارشون نشون داده نه تعطیلات چین و نه تعطیلات هند رو هیچوقت بیکار نبودند، فقط تعطیلات روسیه رو کار نمیکردند و ... از همون زمان هم این بحث بررسی مجدد
maintainer
های روسی و سطح دسترسی و ... شروع شد.بالاخره روسیه داخل جنگ هست و همه میدونند که دولت روسیه چه فشار و اعمال قدرتی روی هکرها و برنامهنویسهاش داره
خلاصه که شخصاً ازین کار لینوس توروالدز شدیداً حمایت میکنم.
امنیت دنیا مهمتر از چندتا
maintainer
هست و اگر این افراد هم واقعاً هدفشون پیشرفت جامعه لینوکس بوده بنظرم براشون قابل درک خواهد بود (توجیه شدند)👍93👎88❤26👏4🆒2😁1
#تجربه
از طرف یک شرکت اومدن، کار استارتاپی داشتند حالا مشتری بینالمللی پیدا شده براشون میخوان
چرا ؟
چون توی قرارداد، باید بگن که چه مقدار
این شامل همهی موارد میشه، آپگرید، جابجایی سرور و ...
این بین که داشتم با نیروها صحبت میکردم و مشاوره و همفکری داشتیم، متوجه شدم
فرض کنید، شما سیستم رو به بهترین شکل چیدید. Load balancer, k8s , ... و برای دپلوی هم rolling update رو گذاشتید.
حالا فرض کنید، قراره برای یک فیچر جدید، یک ستون به جدول user اضافه کنید که به محض لاگین یا اولین استفاده کاربر باید پر بشه ؟
توی rolling update، شما وضعیتی خواهید داشت که هم نسخه قدیمی و هم نسخه جدید همزمان بالا هستند و دارن به کاربر پاسخ میدهند :
اگر نسخه قدیمی اجرا باشه models, database با هم نمیخونه تازه اگر این ستون not null هم باشه که باید پر بشه ولی منطق این کد توی ورژن قبلی کدها نیست و خطا ....
اگر نسخه جدید هم اجرا بشه که نیاز به تغییرات دیتابیس داره.
یک راهکار اینه که کلاً نسخه قدیمی رو خاموش کنید (همزمان همش رو) و نسخه جدید رو جایگزین کنید که خب ازون ۱ ساعت downtime با ارزش میزان زیادی رو از دست میدید.
یک راهکار multistep migration هست، که مثلاً توی مثال بالا یک ستون nullable تعریف کنید، ولی توی منطق کد مطمئن بشید که هیچوقت null نمونه بعد که ورژن قدیمی کامل از بین رفت، یک migration دیگه بنویسید که دیگه ستون nullable نباشه و مجدد دپلوی کنید.
دیدم بچههای این شرکت با این موضوع آشنایی نداشتند گفتم بگم، صرف اینکه HA, K8s, Replica, ... تعریف میکنید مشکل downtime شما حل نمیشه، فقط بهتر میشه.
اضافه کنم، مشکل شما وقتی حادتر میشه که ci/cd هم دارید و پروژه توی قدمهای اولش هست، کلی فیچر و تغییرات هم قراره اضافه بشه
پ.ن:
این موضوع توی مصاحبهها جزو سوالات مهم هست.
از طرف یک شرکت اومدن، کار استارتاپی داشتند حالا مشتری بینالمللی پیدا شده براشون میخوان
uptime, high availability, ...
رو بالا ببرند.چرا ؟
چون توی قرارداد، باید بگن که چه مقدار
uptime
دارند (معروفترین میزان 99.99% هست که یعنی سالانه ۱ ساعت میتونند سرور رو down داشته باشند) این شامل همهی موارد میشه، آپگرید، جابجایی سرور و ...
این بین که داشتم با نیروها صحبت میکردم و مشاوره و همفکری داشتیم، متوجه شدم
migration
ها یکی از معضلات خواهد بود.فرض کنید، شما سیستم رو به بهترین شکل چیدید. Load balancer, k8s , ... و برای دپلوی هم rolling update رو گذاشتید.
حالا فرض کنید، قراره برای یک فیچر جدید، یک ستون به جدول user اضافه کنید که به محض لاگین یا اولین استفاده کاربر باید پر بشه ؟
توی rolling update، شما وضعیتی خواهید داشت که هم نسخه قدیمی و هم نسخه جدید همزمان بالا هستند و دارن به کاربر پاسخ میدهند :
اگر نسخه قدیمی اجرا باشه models, database با هم نمیخونه تازه اگر این ستون not null هم باشه که باید پر بشه ولی منطق این کد توی ورژن قبلی کدها نیست و خطا ....
اگر نسخه جدید هم اجرا بشه که نیاز به تغییرات دیتابیس داره.
یک راهکار اینه که کلاً نسخه قدیمی رو خاموش کنید (همزمان همش رو) و نسخه جدید رو جایگزین کنید که خب ازون ۱ ساعت downtime با ارزش میزان زیادی رو از دست میدید.
یک راهکار multistep migration هست، که مثلاً توی مثال بالا یک ستون nullable تعریف کنید، ولی توی منطق کد مطمئن بشید که هیچوقت null نمونه بعد که ورژن قدیمی کامل از بین رفت، یک migration دیگه بنویسید که دیگه ستون nullable نباشه و مجدد دپلوی کنید.
دیدم بچههای این شرکت با این موضوع آشنایی نداشتند گفتم بگم، صرف اینکه HA, K8s, Replica, ... تعریف میکنید مشکل downtime شما حل نمیشه، فقط بهتر میشه.
اضافه کنم، مشکل شما وقتی حادتر میشه که ci/cd هم دارید و پروژه توی قدمهای اولش هست، کلی فیچر و تغییرات هم قراره اضافه بشه
پ.ن:
این موضوع توی مصاحبهها جزو سوالات مهم هست.
👍68❤10✍8🤷♀1👏1
Python Hints
اومدم یک تولز معرفی کنم و برم : من حدودا ۲ سالی میشه که Postman ندارم؛ از وقتی که لاگین و Sync و ... کم کم اجباری شد (احمقانه) ی مدت طولانی رفتم روی کد پایتون؛ یک بخشی داشتم به اسم api client توی اکثر کدهام که خودش ی پروژه کنار پروژه اصلی میشه ( کارفرما و…
#Quick
و در نهایت :
استفاده از
بخاطر اینکه برای استفاده ازین ۲ ابزار حتماً باید اکانت داشته باشید و حتماً هم این ابزارها تمام اطلاعات رو با سرورهاشون
پیشنهاد خودشون
پ.ن : اگر کسی گزینه بهتری میشناسه قطعاً منتظر شنیدنش هستم.
هم درحال حاضر استفاده میکنم البته، ولی خب چندتا از دولوپرها
و در نهایت :
استفاده از
Insomnia, Postman
توی شرکت برای پروژههای اصلی ممنوع شد.بخاطر اینکه برای استفاده ازین ۲ ابزار حتماً باید اکانت داشته باشید و حتماً هم این ابزارها تمام اطلاعات رو با سرورهاشون
Sync
میکنند.پیشنهاد خودشون
Bruno
بوده (پیشنهاد من بود) ولی هر ابزاری که بدون نیاز به اینترنت و sync
بشه استفاده کرد مشکلی نداره.پ.ن : اگر کسی گزینه بهتری میشناسه قطعاً منتظر شنیدنش هستم.
Thunder Client
هم درحال حاضر استفاده میکنم البته، ولی خب چندتا از دولوپرها
vscode
ندارند که دردسر شده.👍29✍6👎3👏2🤔2