یک دلیلی که نباید از تم دیفالت pycharm استفاده کنید. چون همه چیزو سفید نشون میده. تو این مثال baz.bar هم رنگ foo.bar میشد.
و شما نمیتونی متوجه شی چیزی که بهش دسترسی داری واقعا type داره یا نه.
پی نوشت:نگفتم تغییر بدین IDEرو. گفتم فقط مهمه که رنگا متفاوت باشه. که شما متوجه شین به attr درستی دسترسی پیدا کردین یا نه. دیفالتشو ظاهرا میتونید تغییر بدید...
@PyBackendHub
و شما نمیتونی متوجه شی چیزی که بهش دسترسی داری واقعا type داره یا نه.
پی نوشت:نگفتم تغییر بدین IDEرو. گفتم فقط مهمه که رنگا متفاوت باشه. که شما متوجه شین به attr درستی دسترسی پیدا کردین یا نه. دیفالتشو ظاهرا میتونید تغییر بدید...
@PyBackendHub
👍18👎5
استفاده از privilege های pg خیلی میتونه مفید باشه. داکش زیره میتونید بخونید:
https://www.postgresql.org/docs/current/ddl-priv.html
یوزکیس هاش:
۱. اولا نیازی نیست برنامه نویسا write access داشته باشن. یک read کافیه اکثر مواقع. یا اگه write میخواین بدین دو یوزر بسازین یکی read باشه فقط یکی هم read هم write
۲. میتونید کنترل کنید که یک نفر GRANT خاصی رو نگیره. مثلا یوزر mani قابلیت دیلیت رو هیچ تیبلی نداشته باشه. یا قابلیت select رو تیبل اطلاعات شخصی کاربرا نداشته باشه و ... .
میتونید لاگ pg هم فعال کنید. که متوجه شین چه کسی چه query ای زده. از کجا رو کدوم تیبل. و کلی متا دیتا دیگه. از لینک زیر میتونید راجب لاگ pg هم بخونید.
https://www.postgresql.org/docs/current/runtime-config-logging.html
یک نکته فقط داره اونم اینه که postgresql لاگ قدیمی رو پاک نمیکنه. فقط rotate میکنه. پاک کردن لاگ قدیمی رو توصیه میکنم با logrotate انجام بدید. نه فقط لاگ pg بلکه خیلی جاها به درد بخوره.
https://linux.die.net/man/8/logrotate
@PyBackendHub
https://www.postgresql.org/docs/current/ddl-priv.html
یوزکیس هاش:
۱. اولا نیازی نیست برنامه نویسا write access داشته باشن. یک read کافیه اکثر مواقع. یا اگه write میخواین بدین دو یوزر بسازین یکی read باشه فقط یکی هم read هم write
۲. میتونید کنترل کنید که یک نفر GRANT خاصی رو نگیره. مثلا یوزر mani قابلیت دیلیت رو هیچ تیبلی نداشته باشه. یا قابلیت select رو تیبل اطلاعات شخصی کاربرا نداشته باشه و ... .
میتونید لاگ pg هم فعال کنید. که متوجه شین چه کسی چه query ای زده. از کجا رو کدوم تیبل. و کلی متا دیتا دیگه. از لینک زیر میتونید راجب لاگ pg هم بخونید.
https://www.postgresql.org/docs/current/runtime-config-logging.html
یک نکته فقط داره اونم اینه که postgresql لاگ قدیمی رو پاک نمیکنه. فقط rotate میکنه. پاک کردن لاگ قدیمی رو توصیه میکنم با logrotate انجام بدید. نه فقط لاگ pg بلکه خیلی جاها به درد بخوره.
https://linux.die.net/man/8/logrotate
@PyBackendHub
PostgreSQL Documentation
5.8. Privileges
5.8. Privileges # When an object is created, it is assigned an owner. The owner is normally the role that executed …
👍10
Python BackendHub
استفاده از privilege های pg خیلی میتونه مفید باشه. داکش زیره میتونید بخونید: https://www.postgresql.org/docs/current/ddl-priv.html یوزکیس هاش: ۱. اولا نیازی نیست برنامه نویسا write access داشته باشن. یک read کافیه اکثر مواقع. یا اگه write میخواین بدین دو…
برای پسا social engineeringا هم خیلی روش دفاعی خوبیه. مثلا organization ها data breach داشتن ولی نفهمیدن از کجا خوردن :)) ولی لاگتون فعال کنید و هر سرویس یوزر و هر کاربر یوزر خودشو داشته باشه و لاگ انداخته شه کاملا مشخص میشه که چه اتفاقی افتاده اگه یک درصد data breach بود.
@PyBackendHub
@PyBackendHub
❤2
AioClock 🚀🔥
خب یک لایبری دیگه نوشتم 🚀 این بار یک فریم ورک کاملا scheduler با async و خیلی سبک.فیچر هاش؟
۱. دپندسی اینجکشن
۲. داشتن trigger های مختلف (تو عکس واضحه) و scheduling
۳. ماژول بندی با Group که به code maintainabilityتون کمک میکنه
۴. سینتکس خیلی خوب و استفاده از pydantic
چی شد اینو نوشتم؟ مشکل اینجا بود که من از rocketry استفاده میکردم و خیلی وقتا که نسخه pyddanticشو آپدیت نکرده. میخواستم یک پروژه دیگه بالا بیارم حال نداشتم دوباره برم پکیجشو vendor کنم و نسخه pydanticشو ببرم بالا و ... .گفتم چه کاریه کاره خاصی نمیکنه خودم تو یک نصف روز میکنم 😁 اینترفیسش به نظره خودم جذاب تر شد!
برای حمایت خیلی ممنون میشم استار بدید 🙏
https://github.com/ManiMozaffar/aioclock
و خوشحال میشم contribute کنید مثل همیشه. لایبری رو خیلی سریع نوشتم. ایده های بهتری دارم براش بعدا روش کار میکنم.
Make It Work Make It Right Make It Fast
@PyBackendHub
خب یک لایبری دیگه نوشتم 🚀 این بار یک فریم ورک کاملا scheduler با async و خیلی سبک.فیچر هاش؟
۱. دپندسی اینجکشن
۲. داشتن trigger های مختلف (تو عکس واضحه) و scheduling
۳. ماژول بندی با Group که به code maintainabilityتون کمک میکنه
۴. سینتکس خیلی خوب و استفاده از pydantic
چی شد اینو نوشتم؟ مشکل اینجا بود که من از rocketry استفاده میکردم و خیلی وقتا که نسخه pyddanticشو آپدیت نکرده. میخواستم یک پروژه دیگه بالا بیارم حال نداشتم دوباره برم پکیجشو vendor کنم و نسخه pydanticشو ببرم بالا و ... .گفتم چه کاریه کاره خاصی نمیکنه خودم تو یک نصف روز میکنم 😁 اینترفیسش به نظره خودم جذاب تر شد!
برای حمایت خیلی ممنون میشم استار بدید 🙏
https://github.com/ManiMozaffar/aioclock
و خوشحال میشم contribute کنید مثل همیشه. لایبری رو خیلی سریع نوشتم. ایده های بهتری دارم براش بعدا روش کار میکنم.
Make It Work Make It Right Make It Fast
@PyBackendHub
👌20👍10🔥6❤1🤩1😐1
https://github.blog/2015-06-08-how-to-undo-almost-anything-with-git/
این مقاله رو حتما توصیه میکنم بخونید. به شدت کاربردیه.
@PyBackendHub
این مقاله رو حتما توصیه میکنم بخونید. به شدت کاربردیه.
@PyBackendHub
The GitHub Blog
How to undo (almost) anything with Git
One of the most useful features of any version control system is the ability to "undo" your mistakes. In Git, "undo" can mean many slightly different things.
👍14
HICTE Blog
#گوناگون جواب ادمین FFmpeg قشنگ بود 😁 🚁 Hicte Blog
در پی این توییت:
توجه کنید اشتباه برداشت نکنید. این meme منظورش این نیست که دیزاین پترن یا abstraction نداشته باشین هیچوقت. منظورش اینه که اگه نیاز ندارین نداشته باشین. و بیشتر از اینکه نگران perfect بودن OOPتون باشین, نگران سادگی و فهم کد باشین در مقابل پیچیدگی مشکلی که داره حل میکنه. یک وقتا ممکنه یک abstraction کد رو خیلی ساده تر کنه. و اون یعنی کد خوبیه.
@PyBackendHub
توجه کنید اشتباه برداشت نکنید. این meme منظورش این نیست که دیزاین پترن یا abstraction نداشته باشین هیچوقت. منظورش اینه که اگه نیاز ندارین نداشته باشین. و بیشتر از اینکه نگران perfect بودن OOPتون باشین, نگران سادگی و فهم کد باشین در مقابل پیچیدگی مشکلی که داره حل میکنه. یک وقتا ممکنه یک abstraction کد رو خیلی ساده تر کنه. و اون یعنی کد خوبیه.
@PyBackendHub
👍18😁3👌1
یک فکت:امروز ۶ میلیون نفر pydantic رو دانلود کردن! pydantic تبدیل به یکی از پر استفاده ترین پکیج های پایتونی شده, و احتمال داره به جایی برسه در آینده نزدیک که به پر دانلود ترین پکیج پایتونی هم تبدیل شه!در حال حاضر معدود پکیج هایی فقط بالاتر از pydantic هستند مثل نام پای با ۹ میلیون دانلود روزانه. این در حالیه که فست فقط یک میلیون دانلود داشته. این آمار و ارقام نشون میده pydantic کامل وارد اکوسیستم پایتون شده و تو انواع پروژه ها استفاده میشه.
اگه هنوز pydantic رو شروع نکردین, اهل خوندن داک هم نیستن(!), ویدیو دکتر فرد رو بهتون توصیه میکنم:
https://www.udemy.com/course/pydantic/
دکتر فرد دوره پایتونی خیلی خوبی هم داره. deep dive into python. اگه میخواین بیشتر پایتون یاد بگیرین به شدت توصیه میشه:
https://www.udemy.com/user/fredbaptiste/
@PyBackendHub
اگه هنوز pydantic رو شروع نکردین, اهل خوندن داک هم نیستن(!), ویدیو دکتر فرد رو بهتون توصیه میکنم:
https://www.udemy.com/course/pydantic/
دکتر فرد دوره پایتونی خیلی خوبی هم داره. deep dive into python. اگه میخواین بیشتر پایتون یاد بگیرین به شدت توصیه میشه:
https://www.udemy.com/user/fredbaptiste/
@PyBackendHub
Udemy
Pydantic V2: Essentials
An in-depth guide to mastering Pydantic V2 for data modeling, parsing and validation
👍14❤4🔥2
Python BackendHub
یک فکت:امروز ۶ میلیون نفر pydantic رو دانلود کردن! pydantic تبدیل به یکی از پر استفاده ترین پکیج های پایتونی شده, و احتمال داره به جایی برسه در آینده نزدیک که به پر دانلود ترین پکیج پایتونی هم تبدیل شه!در حال حاضر معدود پکیج هایی فقط بالاتر از pydantic…
معادل pydantic برای بقیه زبونا:
Type Script (ترکیب این ۳ تا)
https://github.com/typestack/class-validator
https://github.com/typestack/class-transformer
https://github.com/vega/ts-json-schema-generator
اینم گزینه جذابیه:
https://arktype.io/
Rust (ترکیب این دو)
https://github.com/serde-rs/serde
https://github.com/GREsau/schemars
با serde کار کردم. با تایپ اسکریپت نه. ولی بنظرم pydantic قشنگ ترین اینترفیس و فیچر هارو داره.
@PyBackendHub
Type Script (ترکیب این ۳ تا)
https://github.com/typestack/class-validator
https://github.com/typestack/class-transformer
https://github.com/vega/ts-json-schema-generator
اینم گزینه جذابیه:
https://arktype.io/
Rust (ترکیب این دو)
https://github.com/serde-rs/serde
https://github.com/GREsau/schemars
با serde کار کردم. با تایپ اسکریپت نه. ولی بنظرم pydantic قشنگ ترین اینترفیس و فیچر هارو داره.
@PyBackendHub
GitHub
GitHub - typestack/class-validator: Decorator-based property validation for classes.
Decorator-based property validation for classes. Contribute to typestack/class-validator development by creating an account on GitHub.
👍2
این روزا ردیس خیلی شلوغ کرده احتمالا خونده باشین راجبش که لاینسس تغییر کرده
میخواستم بگم یک alternative داره که api اش کاملا با ردیس compatible هست و مدعیه که پرفومنس خیلی بهتری میده نسبت به ردیس. همچنین شرکت هایی مثل ubisoft و epic games هم ازش استفاده میکنن ظاهرا.
توصیه میکنم یک سری بزنید. خودم هنوز تستش نکردم. ولی احتمالا ردیسو با این تغییر بدم اگه تست کنم و ببینم هیچ ساید افکتی نداره.
https://www.dragonflydb.io/
@PyBackendHub
میخواستم بگم یک alternative داره که api اش کاملا با ردیس compatible هست و مدعیه که پرفومنس خیلی بهتری میده نسبت به ردیس. همچنین شرکت هایی مثل ubisoft و epic games هم ازش استفاده میکنن ظاهرا.
توصیه میکنم یک سری بزنید. خودم هنوز تستش نکردم. ولی احتمالا ردیسو با این تغییر بدم اگه تست کنم و ببینم هیچ ساید افکتی نداره.
https://www.dragonflydb.io/
@PyBackendHub
Dragonfly
Dragonfly | An In-Memory Data Store without Limits
Discover Dragonfly - the most performant in-memory data store, engineered for extreme throughput at scale.
👍9
یک جمله به شدت حق 😂👌
I finally understand the rust people.
Its javascipt devs who got out of a toxic relationship and now they want to date the opposite person.
@PyBackendHub
I finally understand the rust people.
Its javascipt devs who got out of a toxic relationship and now they want to date the opposite person.
@PyBackendHub
😁23🤣16👍1
چند روز پیش ازم یک سوالی شد که جذاب بود برام:
شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت هم باید آپدیت بدید که چند درصد دانلود انجام شده رو وب سوکت. فرض کنید اون لایبری sync ای که ازش دارین استفاده میکنید برای دانلود دیتا, یک hook داره که در واقع یک callable بهش میدین و اون صدا میزنه رو هر n درصد از دانلودی که پیش بره. یک همچین اینترفیسی:
در واقع چالش این سوال اینه که کد sync و async با هم به طور real time تو یک پروسس حرف بزنن.
سوال اول:اینو چطور پیاده سازی میکنید؟
سوال دوم: اگه requirement ای وجود نداشت برای دپندسی خارجی, از چه چیزی استفاده میکردین؟ و چرا؟
@PyBackendHub
شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت هم باید آپدیت بدید که چند درصد دانلود انجام شده رو وب سوکت. فرض کنید اون لایبری sync ای که ازش دارین استفاده میکنید برای دانلود دیتا, یک hook داره که در واقع یک callable بهش میدین و اون صدا میزنه رو هر n درصد از دانلودی که پیش بره. یک همچین اینترفیسی:
def download_hook(info: DownloadInfo):
...
# notify your webhook client which is async
download_big_data(hook=download_hook, every_n_percent=10)
در واقع چالش این سوال اینه که کد sync و async با هم به طور real time تو یک پروسس حرف بزنن.
سوال اول:اینو چطور پیاده سازی میکنید؟
سوال دوم: اگه requirement ای وجود نداشت برای دپندسی خارجی, از چه چیزی استفاده میکردین؟ و چرا؟
@PyBackendHub
🤔3👍1
Python BackendHub
چند روز پیش ازم یک سوالی شد که جذاب بود برام: شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت…
خب نکته ای که این سوال اول داشت این بود که چطور حرف میزنن؟ بهترین جواب اینه که وب سوکتت وقتی کانشن باز میشه یک ترد دیگه باز میکنه، و یک queue میسازه برای خودش، و تو اون یکی ترد از کد sync اپدیت میگیره. داخل هوکش مسیج رو میذاره که بفرسته سمت queue. اماااا یک نکته ریز داره!
شما اگه از Queue خوده تردینگ استفاده کنید تو کد async ددلاک میشه کدتون، و همینطور اگه تو threading از لاک asyncio استفاده کنید بازم همین مشکل دارین. ضمن اینکه لاک asyncio ترد سیف نیست، و لاک تردینگ کوروتین سیف نیست.
این لایبری queue ای داره که هم asyncio aware هست و هم ترد سیفه!
https://github.com/aio-libs/janus
@PyBackendHub
شما اگه از Queue خوده تردینگ استفاده کنید تو کد async ددلاک میشه کدتون، و همینطور اگه تو threading از لاک asyncio استفاده کنید بازم همین مشکل دارین. ضمن اینکه لاک asyncio ترد سیف نیست، و لاک تردینگ کوروتین سیف نیست.
این لایبری queue ای داره که هم asyncio aware هست و هم ترد سیفه!
https://github.com/aio-libs/janus
@PyBackendHub
GitHub
GitHub - aio-libs/janus: Thread-safe asyncio-aware queue for Python
Thread-safe asyncio-aware queue for Python. Contribute to aio-libs/janus development by creating an account on GitHub.
👌4👍1😱1
Python BackendHub
چند روز پیش ازم یک سوالی شد که جذاب بود برام: شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت…
نکته سوال دوم: scale این پروژه به شدت سخته. جایی که وب سوکت میاد به شدت سخت scale میشه چون state داره اپلیکیشن. شما فکر کنید ۱ میلیون کاربر یک دفعه به وب سوکتتون وصل میشن، حالا ۲ تا اپ جدید میذارین، کسی بهش وصلنمیشه! چون همه به اپ اول وصلن هنوز. ولی rest api اینطوری نیست چون state نداره. فکر کنید میخواین دیپلوی کنید، اگه وب سوکت رو بیارین پایین همه ۱ میلیون کاربر باهم قطع میشن. وقتی داره یک دانلود بزرگ رخ میده، احتمال اینکه مموری بچسبه به سقف هم خیلی زیاده!
پس هر جایی که اپتون state داره سعی کنید کمترین فشار روش باشه. کاره منطقی اینه که یک بروکر داشته باشین، و یک سرور دیگه وظیفش فقط دانلود باشه و اطلاع بده تو مسیج بروکر که چقدر انجام شده. دیگه اینطوری درگیر لاک و … نمیشین و کد async و sync خیلی راحت میتونن باهم حرف بزنن
@PyBackendHub
پس هر جایی که اپتون state داره سعی کنید کمترین فشار روش باشه. کاره منطقی اینه که یک بروکر داشته باشین، و یک سرور دیگه وظیفش فقط دانلود باشه و اطلاع بده تو مسیج بروکر که چقدر انجام شده. دیگه اینطوری درگیر لاک و … نمیشین و کد async و sync خیلی راحت میتونن باهم حرف بزنن
@PyBackendHub
👍6
Python BackendHub
نکته سوال دوم: scale این پروژه به شدت سخته. جایی که وب سوکت میاد به شدت سخت scale میشه چون state داره اپلیکیشن. شما فکر کنید ۱ میلیون کاربر یک دفعه به وب سوکتتون وصل میشن، حالا ۲ تا اپ جدید میذارین، کسی بهش وصلنمیشه! چون همه به اپ اول وصلن هنوز. ولی rest…
این اصل همیشه هست، جایی که اپتون state داره، خیلی کار کمی انجام بدید.
پست مشابه:
https://news.1rj.ru/str/PyBackEndHub/838
پست مشابه:
https://news.1rj.ru/str/PyBackEndHub/838
Telegram
Python BackendHub
یک بحث خیلی خوبی شد تو گروه, گفتم تو کانالم بهش اشاره کنم.
تو معماری Event driven هر وقت شما یک periodic taskای دارین باید یک نکته رو بهش خیلی دقت کنید. این تسک پریودیک شما خیلی خیلی باید تا جایی که میتونه کم بار باشه. یعنی چی؟
فکر کنید یک تسک پریودیک دارین…
تو معماری Event driven هر وقت شما یک periodic taskای دارین باید یک نکته رو بهش خیلی دقت کنید. این تسک پریودیک شما خیلی خیلی باید تا جایی که میتونه کم بار باشه. یعنی چی؟
فکر کنید یک تسک پریودیک دارین…
👍4😁1
Forwarded from Python BackendHub
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند.
اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط باشین. اولین قدمش داشتن یک حساب بانکی و شماره مالیاته که بتونید یک شرکت یک جای دیگه دنیا رو به صورت قانونی invoice کنید!
این مقاله خیلی قشنگ توضیح داده دست نویسنده اش درد نکنه 🙂
@ManiFoldsPython
اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط باشین. اولین قدمش داشتن یک حساب بانکی و شماره مالیاته که بتونید یک شرکت یک جای دیگه دنیا رو به صورت قانونی invoice کنید!
این مقاله خیلی قشنگ توضیح داده دست نویسنده اش درد نکنه 🙂
@ManiFoldsPython
ویرگول
چطور به عنوان یه ایرانی با ۳۰۰ یورو تو اروپا شرکت ثبت کنیم؟
اگر شما برنامه نویس هستید و تو ایران (یا هرجای دیگه دنیا) زندگی میکنید ممکنه دنبال شغل ریموت از بقیه دنیا یا حتی ایدهای جهانی دارید ولی از…
👍26
Python BackendHub
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند. اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط…
من یک چیزی اضافه کنم: تو مهاجرتتون خیلی تاثیر داره اگه بتونید اینکارو انجام بدید. چون وقتی شما میتونید یک شرکتی رو invoice کنید دیگه نیازی نیست نگران ویزا اسپانسرشیپ باشین. و برای شرکت کلی خرج ندارین تا onboard شید. نمونش اینه که فرض کنید من آفر گرفتم از یک شرکت استارت آپ. اون شرکت ممکنه توان اینو نداشته باشه که ۳ ماه منتظر بشه تا نیرو بهش اضافه شه و تو این مدت هم یک نفر براش اختصاصی بذاره که کارای ویزاشو انجام بده. و پکیج onboarding بده. نمیگم این غیرممکن هستا.. این دیفالته شرکت های بزرگه شکی نیست توش. ولی من بحثم اینه که میتونید شانس مهاجرتتون رو بیشتر کنید. وقتی شما invoice میدین به یک شرکت -> میتونید از فردا روزی که قرارداد رو امضا کردین کار کنید. کنارشم هم کارای ویزاتون پیش میره و در نهایت جا به جا میشین. اگه هم دوست نداشتین مهاجرت کنید که میتونید تو ایران بمونید و درآمد دلاری داشته باشین.
@PyBackendHub
@PyBackendHub
❤21👍6
دوستانی که از داخل ایران اپلای کردن و به من خبر ندادن, لطفا یا به من مراجعه کنند یا داخل توضیحات اضافه بنویسن که قابلیت invoice دادن رو دارند از داخل ایران. اگه اینکارو نکنید متاسفانه ریجکت میشید.