Telegram Web Link
اگه پکیج پایتون قراره دیپلوی کنید توی داکر، از هیچکدوم از بیس ایمیج های آلپاین استفاده نکنید. منظورم:
python:*-apline
هست. بجاش از slim استفاده کنید. بزرگترین Advantageی که آلپاین داره، معماری سبک و کم حجم بودنشه که همین موضوع باعث میشه خیلی از پکیج های پایتون که بیسشون C هست نتونن اونجا کامپایل بشن.

بعنوان مثال، اصلا نمیتونید پکیج نامپای رو روی آلپاین نسخه ۳ به بالا نصب کنید!
👍25👎1
تا حالا شده بخوایین یک پیج pypi نصب کنید اما از امنیتش مطمعن نباشید؟ داخل این وبسایت میتونید بررسی کنید این پکیج امن هست یا نه!. این وبسایت پکیج هارو اسکن میکنه و یکسری اطلاعات مثل امنیت، ایا پکیج هنوز توسعه داده میشه یا نه. چقدر دانلود داره و ..

و نه تنها برای pypi بلکه برای npm و docker و .... هم کارم میکنه :)


https://snyk.io/advisor/
👍131
دارم یه tool توسعه میدم واسه دواپس‌کارهایی که پلتفورم توسعه‌شون گیت‌هابه و بیشتر با پایتون آشنا هستن. 🐍

به‌زودی رلیزش می‌کنم عشق کنید. 🕺
👍15🐳4
Forwarded from Python BackendHub
تو لینکدین دیدم جالب بود
@ManifoldsPython
👍163
منتظرم پاول دورف یه آپدیت بده لوگوی تلگرام رو تبدیل به Y کنه. ای حال میده. 😁
🤣39😁21👌1🐳1🏆1
سلام بچه‌ها من دنبال یک کار جدید میگردم 😄❤️. من ۱۹ سالمه و ۲ سال سابقه کار به عنوان توسعه دهنده پایتون و بک‌اند دارم. اگه داخل شرکتتون نیرو میخوایید خوشحال میشم خبرم کنید :). کار میتونه تهران یا دورکار باشه :)

اگه آگهی هم دیدید خوشحال میشم برام بفرستید.

آیدی تلگرام من : @torham
ایمیل من : [email protected]

:)❤️
25🤬2🕊2
Sadra Codes
I joined GitHub!
Welcome pack delivered 🎉🚩

- > github.com/lnxpy
🎉40❤‍🔥1🔥1
یوتیوبرهای پایتون‌کاری که باید فالو کنید:

1: anthonywritescode: https://www.youtube.com/@anthonywritescode

2: Corey Schafer: https://www.youtube.com/@coreyms

3: Arjan Codes: https://www.youtube.com/@ArjanCodes

4: Tech With Tim: https://www.youtube.com/@TechWithTim

5: NeuralNine: https://www.youtube.com/@NeuralNine

6: Pretty Printed: https://www.youtube.com/@prettyprinted

7: mCoding: https://www.youtube.com/@mCoding

رامین سلجوقی‌نژاد بیشتر راجع به الگوریتم و مباحث AI ویدئو میذاره و اکثر پیاده‌سازی‌هاش با پایتونه که خیلی در دوران کارشناسی بدردم خورد:

Ramin Saljoughinejad: https://www.youtube.com/@Ramin-S
👍152🤡1🐳1
Forwarded from shahriaarrr
رفقا سلام✌️
ویدیو جدید همین الان آپلود شد🎉

مشاهده ویدیو

توی این ویدیو قراره باهم یاد بگیریم هشنود چیه و چجوری میتونید پست های وبلاگ هشنودی خودتون رو توی بصورت اتوماتیک روی پروفایل گیت هابتون بذارید❤️

تشکر از صدرا عزیز که اجازه داد از مقالش این ویدیو درست بشه🙏❤️🔥


((دوستان انتقادات و پیشنهاداتون باعث میشه تا نقاط ضعف کار مشخص بشه و برای اصلاحش گام برداریم.پس حتما نظراتتون رو زیر ویدیو کامنت کنین🙏 ))
_

چنل یوتیوبمون رو حتما سابسکرایب کنین و در ضمن لایک و کامنت یادتون نره😉


@shahriaarrr12
@lnxpylnxpy
11🕊2👍1🏆1
گیت‌هاب اکشن چیست؟ چطور اکشن بنویسیم؟!

گیت‌هاب، چند سالی هست که از سیستم اتومات CI/CD خودش رونمایی کرده. حالا از اکشن میشه چه استفاده‌هایی کرد؟ چند تا مثال می‌زنم باهاش بیشتر آشنا شید. مثلا فرض کنید یه ریپازیتوری دارید که عده خیلی زیادی دارن روش کار می‌کنن و pull request میزنن و شما بعنوان مینتینر اصلی، مجبوری هر سری بیای و تغییرات افراد رو خودت بصورت دستی روی لوکال چک کنی، تست کنی و اگه اوکی بود، مرج کنی.

اکشن بهتون این اجازه رو میده که هروقت اتفاقی روی پروژه افتاد (مثلا کسی pr زد)، خودش یه محیط ایزوله (یه کانتینر داکر مثلا) ایجاد کنه و تغییرات طرف رو در جاب‌های متنوع بررسی کنه. مثلا یه جاب، تست‌هاشو ران کنه. یه جاب بررسی کنه ببینه کدی که زده کلین هست یا فرمت شده یا... نهایتا یه ریپورت بنویسه توی همون conversationی که مربوطه به pr هست. به این محیط که شما استپ‌ها و ایونت رو تنظیم میکنی، میگن workflow. شما میتونی هر تعداد workflow که دوست داری داشته باشی.

چند تا کلمه کلیدی، معنیشون مهمه:

- ایونت (Event): منظور همون اتفاقه یا رویداده هست. مثلا کسی pr میزنه، prی مرج میشه، کسی پوش میکنه روی برنچی، کسی ایشو باز میکنه، رلیزی انجام میشه، تگی ساخته میشه یا...

جاب (Job): جاب، یه مجموعه از استپ ها هست که توی ورکفلو، روی رانر اجرا میشه. مثلا یه جاب میتونه استپ‌هاش: نصب کردن اوبونتو روی رانر - نصب پایتون - آپدیت پیپ - نصب دیپندنسی‌ها باشه. هر کدوم از این ایتم‌هایی که گفتم، میشن استپ‌های این جاب.

رانر (Runner): خیلی شبیه به کانتینرهای داکر هستن. ینی گیت‌هاب یه انجین مثل Docker Daemon داره و یه ساختاری شبیه به Container که بهتون اجازه میده جاب‌هاتون رو داخلش ران کنید. اگه اشتباه نکنم، با سی‌شارپ ساختنش و اوپن سورس هم هست.

Action runner official repo: https://github.com/actions/runner

اکشن (Action): همونطور که گفتیم، توی جاب، یه سری استپ‌ها داریم. شما توی استپ‌ها میتونی هرکاری که دوست داری انجام بدی. کامند ران کنی یا از سری کامندها یا اکشن ها استفاده کنی! اکشن درواقع یه پکیجه که شما توی استپی که داری میتونی کالش کنی، یه سری مقادیر بهش پاس بدی و اون اجرا میشه. یه مثلا بخوام بزنم. مثلا فرض کنید یه اکشن داریم به اسم setup-python. دیگه احتیاج نیست خودتونو درگیر ران کردن انواع و اقسام کامند ها به منظور نصب پایتون نصب کنید. مستقیم از این اکشن استفاده میکنید، صرفا بهش ورژن پایتون دلخواهتون رو میدید و واستون پایتون و پیپ رو نصب میکنه.

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

ما سه مدل اکشن داریم:

- داکر: اکشن در محیطی (شبیه) به داکر ران میشه. رانرهای گیت‌هاب، داکر رو ساپورت میکنن پس اگه شما بهشون Dockerfile بدید، راحت اکشنتون رو ران میکنن و قابل استفاده میشه.

- کامپوزیت (Composite): صرفا بهش Entrypoint میدید و اون فایل رو ران میکنه. مثلا یه شل‌اسکریپت دارید توی اکشن که یه hello world رو echo میکنه. توی کانفیگ اکشن مینویسید:

runs:
using: composite
steps:
- name: 'Run hello-world.sh'
run: ./hello-world.sh

- جاوا اسکریپت: رانرهای گیت‌هاب، از نود هم ساپورت میکنن. شما اگه js کارید، میتونید از این مدل رانر استفاده کنید و به زبان js، اکشن بنویسید. (اکثر اکشن ها به زبان js و نود هستن)

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

ادامه..
👍16🔥7👌1
Sadra Codes
گیت‌هاب اکشن چیست؟ چطور اکشن بنویسیم؟! گیت‌هاب، چند سالی هست که از سیستم اتومات CI/CD خودش رونمایی کرده. حالا از اکشن میشه چه استفاده‌هایی کرد؟ چند تا مثال می‌زنم باهاش بیشتر آشنا شید. مثلا فرض کنید یه ریپازیتوری دارید که عده خیلی زیادی دارن روش کار می‌کنن…
این ساختار رو تحت یه تمپلیت cookiecutter درآوردم. هنوز رلیزش نکردم البته ولی از روش، یه اکشن به پایتون نوشتم و اونو رلیز کردم. این اولین اکشن stand-aloneی هست که می‌نویسم.

حالا این اکشن چیکار می‌کنه؟! این اکشن از سرویس کاوه‌نگار استفاده می‌کنه تا به شماره تماستون sms بزنه.

مثلا می‌تونید باهاش یه سناریو پیاده کنید که هروقت کسی روی ریپازیتوریتون issue باز کرد، تایتل و نام کسی که ایشو رو باز کرده رو تحت یه مسیج به موبایلتون sms کنه!

Kavenegar Action: https://github.com/marketplace/actions/kavenegar-action

اگه اکانت کاوه‌نگار دارید، می‌تونید تستش کنید. (دقیقا همین مثالی که زدم رو توی readme اکشن هم نوشتم). کافیه api token رو از داشبوردتون بردارید، یه ریپازیتوری بسازید و توی فایل .github/workflows/main.yml، کد رو کپی کنید. یادتون نره که وریبل های secret رو هم توی ستینگ ریپازیتوریتون ست کنید.
🔥13👍6
هرکی این صحنه رو بشناسه، یه لجند تشریف داره. :)

#نوستالژی #فان
❤‍🔥10😁5🗿2👎1
بررسی جوانب پایتون ۳.۱۲

از این به بعد می‌تونید fstring های تودرتو بنویسید. مثلا:
phrase = f"Hello {f"{name}"}"
# Hello Sadra

بنظرم آنچنان کاربردی نیست و فهمیدنش در نگاه اول یکم سخته. شاید هایلایترها درکش رو راحت‌تر کنن در آینده ولی یه فیچر جدید که اضافه شده و خوشم اومد، multiline fstring هست که بهتون اجازه می‌ده، اف استرینگ رو در چند خط بنویسید و حسابی expandش کنید. تازه می‌تونید در بدنه‌اش، کامنت هم بنویسید:

phrase = f"Hello {
name # User.name
}"
# Hello Sadra

بهینه‌سازی سیستم Tokenization. پایتون یه ماژول tokenizer داره که ازش واسه آنالیز و پارس کردن کلمات و حروف ولید پایتون استفاده می‌کنه. به هر چانک حروف از استرینگ ورودی توکن میگن. اکثر تول‌های linting و formatting از این ماژول واسه فرمت و لینت کردن کد پایتون استفاده می‌کنن. تا نسخه ۳.۱۱، این ماژول به زبان پایتون بود. بدلیل اضافه شدن nested fstring و مولتی لاین fstring، مجبور شدن این ماژول رو بازنویسی کنن و با C نوشتنشن و از لحاظ زمان runtime، سرعتش به شدت رفته بالا. این باعث میشه تمام tool هایی که از tokenizer استفاده می‌کنن، سریع‌تر اون ماکروهاشون ران شن.

لایبرری distutils دیپریکت شده و دیگه توی standard library قرار نداره. از این لایبرری واسه نوشتن و توزیع کردن پکیج پایتون استفاده میشد که به دلیل سرعت پایین و محدودیت‌هایی که نسبت به پکیج setuptools داشت، ملت همیشه میرفتن سمت setuptools. حتی خود pip هم به setuptools وابسته هست. اگه venv بسازین، میبینید که بصورت دیفالت، setuptools نصبه. یه نکته که هست، setuptools جزو standard library نیست و درواقع از هسته distutils پایتون استفاده می‌کنه. از اونجا که distutilsی دیگه در کار نیست و pip نسخه‌های ۲۲.۱ به بالا دیگه وابستگی به setuptools نداره، عملا هیچ ابزار رسمی‌ای واسه توزیع پکیج پایتون هم نخواهیم داشت. این هم خوبه، هم بد.

pip (>= 22.1) does not require setuptools to be installed in the environment. setuptools-based (and distutils-based) packages can still be used with pip install, since pip will provide setuptools in the build environment it uses for building a package.

حالا یه اتفاق دیگه هم افتاده. اونم اینکه venv دیگه بخشی از پکیج setuptools نیست. تا امروز بود ولی دیگه نیس. حالا چیکار میشه کرد؟ خب distutils مستقل شده و شما می‌تونید خودتون setuptools رو pip install کنید و ازش استفاده کنید و واسه venv هم، virtualenv نصب کنید. دیگه کامند زیر کار نمیکنه:

python -m venv venv

بطور کلی، از این به بعد هر محیط venv که با virtualenv می‌سازید، در isolatedترین شکل ممکن قرار دارن و site-packageتون خالی خالیه. حتی wheel هم ندارید. فقط pip رو دارید. این بنظرم ساید خوبشه.

از این به بعد می‌تونید تایپ هینت kwargs** رو کاستومایز کنید. من خودم همیشه انوتیت می‌کردم به typing.Any ولی از این به بعد می‌تونید TypedDict رو بهش انوتیت کنید:

from typing import TypedDict, Unpack

class Values(TypedDict):
name: str
age: int

def main(**kwargs: Unpack[Values]): ...

یه تایپ هینت جدید اومده که خیلی خوشم اومد، typing.override هست. این موقعی بدرد می‌خوره که می‌خواین تایپ هینت ست کنید واسه متدی که توی subclass قراره اوررایت شه. اگه تغییری توی superclass ایجاد شه و اسم اون متد توی سوپرکلس تغییر کنه، اگه یه سیستم type checking داشته باشین یه چیز مثل mypy، حتما خطا رو می‌گیره و بهتون نشون میده. این درحالیه که اگه کد رو اجرا کنید، ممکنه خطا نگیرید و اون متد هم override نشه.

from typing import override

class A:
def greet(): ...

class B(A):
@override
def greet(): ...

توی این مثال، اگه روزی برسه که اسم متد greet توی سوپرکلس تغییر کنه به greeting، حتما type checker ارور میده ولی اگه annotate نکرده باشید، اروری دریافت نمی‌کنید و صرفا اون logic درست کار نمی‌کنه.

تمام comprehensionهایی که در بدنه فانکشن‌ها هستن، از لحاظ سرعت اجرا بهینه‌تر شدن.

ارور مسیج‌ها هم بهینه و هوشمندتر شدن. اگه که بتونن، در محدوده شرایط وسیع‌تری، سلوشن می‌دن.

دوتا سینتکس جدید هم اضافه شده به پایتون. یکی type هست که واسه Type Alias استفاده میشه و دیگری هم Type Parameter هست که یه مدل جدید واسه تعریف فانکشن‌ها و کلس‌های جنریک پایتونه. شیوه استفاده ازشون به این شکله:

type name = str
type age = int

قبلا باید جنریک فانکشن رو اینجوری تعریف می‌کردیم:

def greet(name: List[str]): ...

ولی الان می‌نویسیم:

type T = List[str]

def greet[T](name: T): ...

این باعث میشه که پرینسیپل DRY آسیب نبینه.
🔥16👏43👍2
جمع‌بندی: این جمع‌بندی صرفا نظر شخصی خودمه. بنظرم توی ورژن جدید، خیلی سینتکس رو پیچیده کردن. بیشترین کامیت های بتا ۰۱ فعلی، اگه اشتباه نکنم روی typing باید خورده باشه. تایپ هینت اونقدرام مهم نیس. 😅
تا امروز که تمام پایپلاین‌های type checkingمون پاس میشد، از امروز به بعدم پاس میشه ولی بهینه‌سازی ها خیلی خوبن. کلی فیچر به typing اضافه شده که بنظرم فقط override کمبودش حس می‌شد اونم فقط OOP کارا شاید بدردشون بخوره. این آپدیت به بزرگی ۳.۸ یا ۳.۶ نیست بنظرم. یه مجیک متد جدید به اسم buffer اضافه شده که توی ABC استفاده می‌شه.

پچ‌نوت کامل این رلیز:
https://docs.python.org/3.12/whatsnew/3.12.html
👍6🐳1
Sadra Codes pinned «بررسی جوانب پایتون ۳.۱۲ از این به بعد می‌تونید fstring های تودرتو بنویسید. مثلا: phrase = f"Hello {f"{name}"}" # Hello Sadra بنظرم آنچنان کاربردی نیست و فهمیدنش در نگاه اول یکم سخته. شاید هایلایترها درکش رو راحت‌تر کنن در آینده ولی یه فیچر جدید که اضافه…»
Forwarded from Python BackendHub
بزرگ ترین تغییر ۳.۱۲ نسبت به ۳.۱۱ که بنظرم صدرا اشاره نکرد بهش PEP 684 بود

A Per-Interpreter GIL
که البته فعلا تو سطح پایتون نیست و python api نداره.


ولی این تغییر تو ۳.۱۳ خودشو خیلی بیشتر نشون میده. جایی که API python اش میاد. طبق PEP 554.
https://peps.python.org/pep-0554/
جایی که ما میتونیم حالا از این تغییراتی که تو ۳.۱۲ انجام شده و API پایتونیش تو ۳.۱۳ هست استفاده کنیم‌:)

اینکه چیه و چیکار میکنه تو این پست نمیگنجه. توصیه میکنم حتما این دو PEP رو وقت بذارین و بخونید که از بقیه جلوتر باشید تا وقتی ۳.۱۳ اومد بدونید چی باید یاد بگیرید 😁 فقط یک مقایسه میکنم بین sub Interpreter و مولتی پروسس

True Parallelism -> Multiprocess: YES | Subinterpreters: Potential
Isolation -> Multiprocess: HIGH | Subinterpreters: MEDIUM
Overhead -> Multiprocess: HIGH | Subinterpreters: LOW

و توی theory حداقل باید Subinterpreters یک مموری ایزوله و هندل CPU Bound task به صورت بهینه تر رو به ما بدن که باعث میشه پایتون با استفاده از این مفهوم جدید برای real-time processing و streaming data بسیار مناسب تر شه. چرا؟‌چون میتونید یک subinterpreter داشته باشید که دیتا رو بگیره و یک subinterpreter داشته باشید که دیتا رو پروسس کنه که این ایزوله سازی باعث استفاده بهتر و بهینه تر از ریسورستون میشه و latency رو هم کاهش میده

@ManiFoldsPython
6👍2❤‍🔥1
Forwarded from Python BackendHub
https://www.sequoiacap.com/article/sebastian-ramirez-spotlight/
مصاحبه (زندگی نامه) سباستین رامیرز رو چند ساعت پیش خوندم و واقعا WOW!

شخصا این نکاتو حداقل برداشت کردم:

۱. برای موفق نشدن دلایل خیلی بیشتری داشت تا موفق شدن، ولی جا نزد!
۲. نشون میده شما مدرک دانشگاه نداشته باشید دنیا به اخر نمیرسه. سباستین حتی دیپلم هم نداره!
۳. به برنامه نویسی به عنوان درامد زایی نگاه نمیکرد بلکه لذت میبرد.
۴. خلاقیت و ترکیب و استفاده از برنامه نویسی برای حل چالش های شخصیش
۵. پافشاری رو اهدافش

حتماا بخونید توصیه میشه
@ManiFoldsPython
10👍1
Python BackendHub
https://www.sequoiacap.com/article/sebastian-ramirez-spotlight/ مصاحبه (زندگی نامه) سباستین رامیرز رو چند ساعت پیش خوندم و واقعا WOW! شخصا این نکاتو حداقل برداشت کردم: ۱. برای موفق نشدن دلایل خیلی بیشتری داشت تا موفق شدن، ولی جا نزد! ۲. نشون میده شما مدرک…
اصلا نمیتونم قبول کنم که سپاستین رامیرز با این استایل، فرانسوی نیست. 😁

زندگینامه خیلی خوب و پندآموزی بود. ما معمولا نتیجه کار رو میبینیم.. ما فقط FastAPI و Typer و.. رو میبینیم.. هیچوقت سختی های پشتشو متوجه نیستیم.. 👌

رامیرز از اون دسته از آدماس که واقعا خوش برخورد و خوش صحبته حتی با کسایی که نمی‌شناستشون. من چند بار افتخار داشتم باهاش ارتباط داشته باشم. همیشه با روی خوش و ادب صحبت میکنه.. تو مایه های جادی خودمون. همیشه، در هر کجا، وقت واسه شما داره. ❤️

همیشه سعی کنیم مثل این افراد باشیم. 👑
19👍7
❤‍🔥18👍1
2025/07/11 22:04:21
Back to Top
HTML Embed Code: