Sadra Codes

@lnxpylnxpy


Sadra Yahyapour ✌️

Let's dive deeper together. :)

📝 imsadra.me
🐙 github.com/lnxpy
🤳 linkedin.com/in/sadra-yahyapour
🐤 twitter.com/lnxpylnxpy
📬 [email protected]

Sadra Codes

23 Oct, 04:14


ولی ویندوز عامل چه شکلیه ینی؟ 🧐

Sadra Codes

21 Oct, 08:05


LGTM 🤙

Sadra Codes

20 Oct, 07:05


ایشالا که باگ کش توییتره.. 😂

Sadra Codes

20 Oct, 06:48


ابزارهایی که Astral درست کرده، معنی واقعی پکیجه.

uv = virtualenv + pip + pyenv
ruff = flake + black + isort
rye = uv + ruff + twine + ...

توی سرعت که حرف ندارن و واقعا کار میکنن! 🤟

Astral: https://github.com/astral-sh

Sadra Codes

19 Oct, 20:34


به هیچی دست نزدی ولی یهو بعد از یه مدت، کل سیستم Fail میشه و هیچی درست کار نمی‌کنه!!

یه مشکل خیلی عجیب توی یه سری از اکشن‌هایی که با pyaction نوشته بودم رخ داد و اونم این بود که اکشن بدون هیچ دلیلی موقع نصب requirementها Fail می‌شد! عملا به هیچی دست نزده بودم.

مشکل رو می‌گم، خودتون بسطش بدید و سعی کنید خیلی توی اینجور موارد حواستون باشه. من توی اکشن‌ها از داکر ایمیج python:3-slim استفاده می‌کنم. سبک و سریعه و بدون مشکل روی رانر گیت‌هاب میاد بالا. مشکل از این قراره که تا ۲-۳ هفته پیش، این ایمیج پایتون ۳.۱۲ رو نصب می‌کرد و بدون مشکل dependencyها نصب می‌شدن. بعد از استیبل شدن پایتون ۳.۱۳ یهو این ایمیج تصمیم می‌گیره که سوییچ کنه روی این نسخه و روی رانر، پایتون ۳.۱۳ رو نصب کنه. خب تا اینجاشم اوکیه. (چون پایتون ۴ نیس. 😁)

این تغییر به ظاهر اوکیه ولی یک سری از requirementهایی که داریم یکم low-levelتر هستن و بخش‌هاییشون ممکنه با راست نوشته شده باشه، کامپایل کد سی باشه حتی که باعث میشه اون نسخه خاص از پکیج صرفا با پایتون ۳.۱۲ هم‌خوانی داشته باشه و نه چیز دیگه‌ای واسه همین موقع نصب، به مشکل می‌خورد و کل ورکفلو Fail میشد.

نتیجه:
سعی کنید دپندنسی‌هاتون رو اینجوری ننویسید:
foo
baz
bar

اینطوری بنویسید:
foo == 1.2.3
bar >= 1.2
baz ~= 1.2.1

یا مثلا توی مورد من، بهتر بود که داکرفایلم اینطوری شروع میشد:
FROM python:3.12-slim

نه اینجوری:
FROM python:3-slim

Sadra Codes

13 Oct, 09:53


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

Sadra Codes

12 Oct, 13:09


امروز خیلی خوشحالم که بالاخره Naked SQLAlchemy رو معرفی میکنم، یه thin wrapper روی SQLAlchemy Core که کار با دیتابیس‌ها تو پایتون رو ساده‌تر می‌کنه. بعد از اینکه با pitfallهای ORM مواجه شدم—مثل اینکه داده‌های توی حافظه با وضعیت واقعی دیتابیس یکی نبود به خاطر پیچیدگی‌هایی مثل identity mapping و dirty tracking—فهمیدم این ویژگی‌هایی که قرار بوده کار رو راحت کنن، در واقع باعث پیچیدگی و سخت‌تر شدن یادگیری می‌شن. Naked SQLAlchemy با ترویج استفاده صریح از SQL و map مستقیم نتایج کوئری به dataclassهای پایتون، این لایه‌های غیرضروری رو کنار می‌زنه.

علاوه بر بهبود سرعت قابل توجه (تقریباً دو برابر سریع‌تر از ORM)، یادگیری Naked SQLAlchemy آسونه چون بر پایه دانشی هست که احتمالاً از قبل داری. امکاناتی مثل مپ کردن dataclass، مدیریت session بدون داشتن state، و امکان تعریف SQL View رو لایه ORM. با تمرکز روی ویژگی‌های اساسی و دوری از abstractionهای پیچیده، به شما این امکان رو می‌ده که کدهای واضح و ‍explicit و قابل نگهداری بنویسن، بدون دردسرهای معمول ORM.

فلسفه من اینه که کمتر، بیشتره. با کنار گذاشتن لایه‌های غیرضروری، Naked SQLAlchemy یه راهکار قابل اعتماد، کارآمد و ساده برای دسترسی به دیتابیس تو پایتون ارائه می‌ده. اگه دنبال ابزاری هستی که از pitfallهای معمول ORM دوری کنه و از تخصص SQLی که از قبل داری استفاده کنه، دعوتت می‌کنم Naked SQLAlchemy رو امتحان کنی.

لینک ریپازیتوری
لینک مستندات

اگه این پست یا این کتابخونه برات مفید بوده، خیلی ممنون می‌شم اگه بهش یه ستاره بدی یا این پست رو بازنشر کنی. حمایت شما به من انگیزه می‌ده که به توسعه و بهبود فریمورک‌های متن‌باز ادامه بدم. مرسی 🙂🙏

@PyBackendHub

Sadra Codes

09 Oct, 10:06


پیشرفت صنعت توسعه گیم وحشتناکه! وحشتنااکک.

https://www.youtube.com/watch?v=hTzs5nmRnQU

Sadra Codes

08 Oct, 18:39


+ I'm a nerd. I use C++.
- Show me how.
+Ok.
for (int c=0; c<10; c++){}

Sadra Codes

08 Oct, 07:45


وقتی اندپوینت OpenAI استتوس کد 200 میده:

Sadra Codes

07 Oct, 20:28


عامو تازه داشتم خوشحال میشدما.. هعی..

Sadra Codes

07 Oct, 20:11


🥸

Sadra Codes

04 Oct, 05:11


چه خوبه خودت فعال‌ترین یوزر پروداکت خودت باشی.. 🫡

Sadra Codes

04 Oct, 05:06


اگه پکیج پایتون می‌نویسید و علاقه دارین که نمودار دانلود اخیر پکیجتون رو داشته باشین و در README نمایشش بدین، یه اکشن نوشتم که به راحتی می‌تونید اینکار رو باهاش انجام بدید!

می‌تونید سایز و رنگ نمودار رو هم خودتون ست کنید.

آدرس اکشن (شیوه استفاده در لینک): https://github.com/marketplace/actions/pypi-chart-badge

Made with PyAction

Sadra Codes

03 Oct, 02:25


توی ورژن بعدی پای‌اکشن، می‌تونید توی ورکفلو، انوتیشن بفرستید! (شبیه به لاگ‌ زدن می‌مونه ولی یه سطح بالاتر)

پی‌نوشت: مثلا توی این تصویر، سه بار annotation مختلف زدم. توی ورکفلو این annotation ها موقع اجرای ورکفلو اون بالا نشون داده میشن.

Sadra Codes

02 Oct, 13:32


سادگی همیشه خبر از پیچیدگی میده!

خیلی وقت‌ها ما از کتابخونه و فریم‌ورک‌ها استفاده میکنیم به خاطر اینکه یک کار رو ساده میشه باهاشون انجام داد، از جنگو استفاده میکنیم چون کار باهاش راحته، داخل جنگو از DRF و simple jwt استفاده میکنیم چون ساخت api و لاگین رو برامون خیلی راحت میکنن. اما اینجا یک چیزی گاهی فراموش میشه.

سادگی همیشه خبر از پیچیدگی میده که شما نمیبینیدش.
یا به عبارت دیگه
کدی که شما الان نمیزنید رو قبلا یکی دیگه زده.

و شاید بگید خوب این خوبه دیگه یارو کد برای ما زده و استفاده می‌کنیم و لذتشو میبریم. تو خیلی از مواقع این درسته، ولی امان از اون روزی که بخوایید یکچیزی رو تغییر بدید که فریم‌ورک/کتابخونه براتون انجام داده :) اونجاست که این سادگی که ازش لذت میبردید تبدیل کابوس میشه :D

این رو نگفتم که بگم از جنگو استفاده نکنید یا فلان کتابخونه بده و ...

این گفتم که بدونید همیشه هر سادگی خوب نیست، گاهی بهتره تن به کار بدید و اون کد خودتون بزنید تا با نیاز شما هماهنگ باشه نه اینکه یک کتابخونه هزارخطی نصب کنید تا از ۱۰۰ خطش استفاده کنید.

@TorhamDevCH

Sadra Codes

02 Oct, 13:06


من یه زمان، خیلی رندوم با یه نفر توی چت توییج آشنا شدم بعد فهمیدم اسرائیلیه. پسر خوبی بود. رفتیم دیسکورد بعدش. چند ماهی ازش خبری نداشتم تا اینکه امروز صبح دیدم دیسکورد پیام داده: سالمی؟ حالت خوبه؟ 😂💀

Sadra Codes

01 Oct, 16:39


همین الان یه موشک از رو سرمون رد شد.