بنیاد پایتون کاران فارسی
Відкрити в Telegram
🔰 مقالات و اخبار مرتبط با پایتون فارسی 🎗 گروه رسمی بنیاد نرم افزار پایتون فارسی: @PyFarsi 🎗 گروه برنامه نویسی و امنیت شبکه: @Gozarit | @Gozaritch 🎗 گروه آفتاپیک: @PyFarsi_offtopic | @GozarITOfftopic 🎗 تبلیغات: @GozaritADS
Показати більше1 900
Підписники
-424 години
-97 днів
-2830 днів
Архів дописів
#خارج_از_بحث
چرا چیزهایی که یاد میگیریم را به اشتراک بگذاریم؟
یکی از عادتهایی که میتواند تأثیر زیادی روی رشد یک برنامهنویس داشته باشد، این است که چیزهایی را که یاد میگیریم با دیگران به اشتراک بگذاریم.
اما نه صرفاً برای اینکه بگوییم:
«من اینو بلدم»اتفاقاً بخش مهم ماجرا چیز دیگری است. 🔹 ۱. وقتی توضیح میدهی، واقعاً یاد میگیری ممکن است یک مفهوم را هنگام خواندن کاملاً متوجه شده باشی؛ اما وقتی بخواهی همان مفهوم را برای شخص دیگری توضیح بدهی، ناگهان متوجه میشوی که بعضی قسمتهایش را فقط «حس کردهای» و عمیقاً درکش نکردهای. توضیح دادن، نقاط ضعف فهم ما را آشکار میکند. به همین دلیل است که نوشتن دربارهی یک موضوع میتواند خودش یک مرحله از یادگیری باشد. 🔹 ۲. مجبور میشوی دقیقتر فکر کنی وقتی قرار است چیزی را منتشر کنی، دیگر نمیتوانی به یک جملهی مبهم مثل:
«Asyncio کلاً باعث میشه برنامه سریعتر بشه.»اکتفا کنی. باید از خودت بپرسی: «دقیقاً چرا؟» «در چه شرایطی؟» «چه زمانی این اتفاق نمیافتد؟» و همین سؤالها باعث میشوند از حفظ کردن یک مفهوم، به سمت درک کردن آن بروی. 🔹 ۳. بازخورد گرفتن، یادگیری را سریعتر میکند وقتی چیزی را منتشر میکنی، ممکن است کسی بیاید و بگوید:
«این قسمت دقیق نیست.»یا حتی:
«این روش در فلان شرایط مشکل دارد.»اگر درست برخورد کنیم، این اتفاق یک فرصت فوقالعاده است. چون ممکن است یک اشتباه کوچک، باعث شود چیزی را یاد بگیری که شاید بدون آن بازخورد هفتهها بعد متوجهش میشدی. 🔹 ۴. دانش ما تبدیل به یک آرشیو قابل جستجو میشود فرض کن امروز دربارهی
asyncio.gather مطالعه کردی و یک ماه بعد دوباره به همان موضوع نیاز پیدا کردی.
اگر فقط خوانده باشی، احتمالاً باید دوباره جستجو کنی.
اما اگر دربارهاش نوشته باشی، یک یادداشت شخصی داری که دقیقاً با زبان و مثالهای خودت نوشته شده.
در واقع:
Content = External Memory 🧠
🔹 ۵. به دیگران کمک میکنی
شاید موضوعی که برای تو ساده شده، برای شخص دیگری دقیقاً همان چیزی باشد که ساعتها دنبالش میگشته.
یک مثال ساده، یک توضیح فارسی یا حتی یک تجربهی شخصی میتواند مسیر یادگیری شخص دیگری را کوتاهتر کند.
و این یکی از زیباترین بخشهای یادگیری در جامعهی برنامهنویسی است:
ما از دانش دیگران یاد میگیریم و با به اشتراک گذاشتن دانش خودمان، به نفر بعدی کمک میکنیم.
🔹 ۶. لازم نیست متخصص باشی
یکی از بزرگترین اشتباهات این است که فکر کنیم:
«وقتی حرفهای شدم شروع به تولید محتوا میکنم.»نه. لازم نیست دربارهی چیزی که تازه یاد گرفتهای مثل یک متخصص صحبت کنی. میتوانی خیلی ساده بگویی:
«امروز
asyncio.create_task
را یاد گرفتم و این چیزی بود که فهمیدم...»این حتی میتواند ارزشمندتر باشد، چون شخصی که یک قدم عقبتر از توست، احتمالاً دقیقاً به همان توضیح نیاز دارد. فقط یک اصل مهم وجود دارد: چیزی را که مطمئن نیستی، با قطعیت آموزش نده. اگر هنوز در حال یادگیری هستی، همان را شفاف بگو. در نهایت، به اشتراک گذاشتن چیزی که یاد گرفتهای فقط کمک به دیگران نیست. باعث میشود: 📌 بهتر بفهمی 📌 دقیقتر فکر کنی 📌 اشتباهاتت را پیدا کنی 📌 بازخورد بگیری 📌 یک آرشیو شخصی بسازی 📌 و بخشی از دانش جامعهی برنامهنویسی باشی پس لازم نیست منتظر باشیم تا «خیلی حرفهای» شویم.
Repost from ابر ویراک
☁️ 24 ساعت تست رایگان سرور ابری ویراک، حالا با اعتبار هدیه بیشتر!
اگر قصد راهاندازی یا تمدید سرویسهای ابری خود را دارید، الان بهترین زمان است.
✨ تا پایان مردادماه:
🎁 15% شارژ بیشتر هدیه روی اولین واریزی
🎁 10% شارژ بیشتر هدیه روی تمام واریزیهای بعدی
🎁 24 ساعت تست رایگان
فرقی نمیکند اولین بار است که ویراک را انتخاب میکنید یا از قبل همراه ما بودهاید؛ با هر شارژ، اعتبار بیشتری دریافت میکنید و همان زیرساخت قدرتمند را با هزینه کمتر در اختیار خواهید داشت.
برای دریافت کد تست رایگان کلمه *«تست»* رو به آیدی زیر ارسال کنید.
https://t.me/cloud_virak
👇 پس از دریافت کد تست رایگان وارد پنل VirakCloud شوید ، کد تخفیف خود را وارد نمایید و ابرک خود را بسازید:
🔗 https://B2n.ir/qy4432
☎️ 02191555530
Repost from آموزش برنامه نویسی و دوره های امنیتی
ایرانسرور داره توی تلگرامش چنتا اکانت جیپیتی و جمنای مجانی میده.
الان ادمینشون گفت قراره تا سه شنبه چنتا کد تخفیف ۱۰۰ درصدی جدید بزارن.
تو این گرونی حتی یه اکانت جیپیتی میشه 7 تومن. دوس دارم سابسکرایبرای من این هدیه رو ببرن💙
@iranservercom
Repost from آموزش برنامه نویسی و دوره های امنیتی
👨💻 گپ برنامهنویسها و وردپرسکارها
یه جمع از آدمایی که با کد، وب، وردپرس و هوش مصنوعی سر و کار دارن. 🌐
❓ سوالی داری؟ بپرس
🧩 به یه مشکل برخوردی؟ مطرحش کن
💡 ایدهای داری؟ با بقیه به اشتراک بذار
🤝 از تجربهی بقیه استفاده کن
💬 دربارهی برنامهنویسی، طراحی سایت و وردپرس گفتگو کن
💼 دنبال کار یا پروژهای؟ اعلام کن
⚡️ AI | هوش مصنوعی
🐍 Python | Django
⚛️ JavaScript | React
🌐 Web Development
🧩 WordPress | WooCommerce
🔥 اگه برنامهنویس یا وردپرسکاری، جات اینجاست!
👇 همین الان به گپ اضافه شو 👇
🔗 https://t.me/programminandweb
🔗 https://t.me/programminandweb
🔗 https://t.me/programminandweb
Repost from یکتانت | Yektanet
🧩 رمزالمثل؛ مسابقه آنلاین روز برنامهنویس یکتانت
💻 اگر با کد سروکار دارید و حل معما برایتان جذاب است، این مسابقه با مجموع جایزه ۱۰۰۰ دلار برای شماست.
از مرحلهی ورود با معماها دستوپنجه نرم میکنید و با رسیدن به ضربالمثل هر مرحله، کلید رمزگشایی مرحلهی بعد را پیدا میکنید. 🔑
🚀 برای ثبتنام و رسیدن به جایزه، اینجا کلیک کنید.
⏰ شروع مسابقه: یکشنبه، ۲۲ شهریور، ساعت ۱۲
@yektanet
خب پس از همکاری و بحث و گفتگوی فوق العاده ای که درباره این سوال شد بریم سراغ جوابش
همونطور که آقا سروش اشاره کرد، اینجا یک اشتباه سهوی به وجود اومده.
این قسمت:
category_id: int | None = Noneنمیگه:
اگر category_id مقدار 0 داشت، اون را به None تبدیل کن.بلکه میگه:
category_id
میتونه یک
int
یا
None
باشه و اگر فیلد اصلا ارسال نشد، مقدار پیشفرض
None
خواهد بود.بنابراین: اگه category_id اصلا ارسال نشه، مقدار پیشفرض که None هست به category_id اختصاص داده میشه و اگه :
{
"category_id": null
}
ارسال بشه بازم None میشه.
اما اگه بنویسیم :
{
"category_id": 0
}
و ارسالش کنیم، category_id = 0 میشه. تا اینجا همه چی ساده و مشخص بود. اما پس مشکل اصلی کجاست؟
مشکل اصلی در Router صورت میگیره!
اینجا ما گفتیم:
if data.category_id:که یعنی اگه ما 0 ارسال کنیم مثل این میمونه که ما این شرط رو چک کردیم:
if 0:و در پایتون مقدار 0 برابر با Falsy value هست. پس وقتی:
data.category_id == 0باشه، این شرط:
if data.category_id:اجرا نمیشه. در نتیجه، اصلاً این Query هم اجرا نمیشه:
select(Category).where(Category.id == data.category_id)
و Router مستقیم میره سراغ ساخت Post:
post = Post(
...
category_id=0,
)
بعد:
await db.commit()
و SQLAlchemy درخواست INSERT را به دیتابیس (در اینجا PostgreSQL) میفرسته.
PostgreSQL هم هنگام INSERT بررسی میکنه:
آیا در جدول
categories
رکوردی با
id = 0
وجود دارد؟چون مقدار
category_id=0 به رکوردی در جدول categories اشاره نمیکنه، Foreign Key Constraint نقض میشه و IntegrityError میگیریم.
راه حل چیه؟
در این مثال، category_id اختیاریه و میتونه None باشه. پس ما میتونیم None بودن یا نبودنش رو چک کنیم و به صراحتا بگیم :
if data.category_id is not None:
result = await db.execute(
select(Category).where(Category.id == data.category_id)
)
category = result.scalar_one_or_none()
if category is None:
raise CategoryNotFound(data.category_id)
حالا اگر:
"category_id": 0
باشه، شرط اجرا میشه و وجود Category با ID صفر بررسی میشه.
اگر وجود نداشته باشه، قبل از رسیدن به Database خطای مناسب رو raise میکنیم.
که اینجا میرسیم به یکی از اصول Zen of Python :
Explicit is better than implicit
⚠️ نکته : اگر از نظر Business Logic پروژه تون، مقدار category_id باید عددی بزرگتر از صفر باشه، بهتره که این محدودیت رو در Schema تعریف کنیم:
from pydantic import BaseModel, Field
class PostBase(BaseModel):
title: str
content: str
category_id: int | None = Field(default=None, gt=0)
حالا:
{
"category_id": 0
}
اصلاً وارد منطق Router نمیشه و Pydantic خطای Validation Error بر میگردونه.
اما:
{
"category_id": null
}
و :
{
"category_id": 5
}
مشکلی نداره.Repost from آموزش برنامه نویسی و دوره های امنیتی
💻 از هر پروژه، سود بیشتری برای خودت نگه دار!
وقتی هزینه زیرساخت کمتر باشه، سهم بیشتری از درآمد پروژه برای خودت میمونه. با تخفیفهای آوابرید، پروژههای مشتریهات رو بهصرفهتر میزبانی کن:
🔥 ۵۰٪ تخفیف سرور مجازی
🎟 کد تخفیف:
AVABARIDVPS
🔥 ۵۰٪ تخفیف ترافیک
🎟 کد تخفیف: AVABARIDTRAFFIC
🖥 سرور اختصاصی از ماهانه ۴٬۸۵۰٬۰۰۰ تومان 🛟 پشتیبانی شبانهروزی 🏢 بیش از ۲۰ سال تجربه در خدمات دیتاسنترهزینه کمتر، سود بیشتر از هر پروژه 👇 https://avabarid.com/Gozaritch
فرض کنید ما این Schema رو داریم:
class PostBase(BaseModel):
title: str
content: str
category_id: int | None = None
class PostCreate(PostBase):
pass
class PostResponse(PostBase):
id: int
slug: str
author_id: int
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)
و Router ما در FastAPI اینه :
from fastapi import APIRouter
router = APIRouter(prefix="/posts", tags=["Posts"])
@router.post(
"",
status_code=status.HTTP_201_CREATED,
response_model=PostResponse,
)
async def create_post(
data: PostCreate,
current_user: Annotated[User, Depends(get_current_user)],
db: Annotated[AsyncSession, Depends(get_db)],
):
if data.category_id:
result = await db.execute(
select(Category).where(Category.id == data.category_id)
)
if not result.scalar_one():
raise CategoryNotFound(data.category_id)
post = Post(
title=data.title,
slug=data.title.lower().replace(" ", "-"),
content=data.content,
category_id=data.category_id,
author_id=current_user.id,
)
db.add(post)
await db.commit()
await db.refresh(post)
return post
حالا این Request را ارسال میکنیم:
{
"title": "Hello",
"content": "World",
"category_id": 0
}
و PostgreSQL این خطا رو میده:
ForeignKeyViolationError:
insert or update on table "posts"
violates foreign key constraint "posts_category_id_fkey"
DETAIL:
Key (category_id)=(0) is not present in table "categories".
چرا اینجا خطا دریافت کردیم؟ (در کامنت ها پاسخ بدید)
🔰Group: @PyFarsi
🔰Channel: @PSFarsi
#fastapi #backend #pydantic #restapi #pythonRepost from ابر ویراک
☁️ 24 ساعت تست رایگان سرور ابری ویراک، حالا با اعتبار هدیه بیشتر!
اگر قصد راهاندازی یا تمدید سرویسهای ابری خود را دارید، الان بهترین زمان است.
✨ تا پایان مردادماه:
🎁 15% شارژ بیشتر هدیه روی اولین واریزی
🎁 10% شارژ بیشتر هدیه روی تمام واریزیهای بعدی
🎁 24 ساعت تست رایگان
فرقی نمیکند اولین بار است که ویراک را انتخاب میکنید یا از قبل همراه ما بودهاید؛ با هر شارژ، اعتبار بیشتری دریافت میکنید و همان زیرساخت قدرتمند را با هزینه کمتر در اختیار خواهید داشت.
برای دریافت کد تست رایگان کلمه *«تست»* رو به آیدی زیر ارسال کنید.
https://t.me/cloud_virak
👇 پس از دریافت کد تست رایگان وارد پنل VirakCloud شوید ، کد تخفیف خود را وارد نمایید و ابرک خود را بسازید:
🔗 https://B2n.ir/qy4432
☎️ 02191555530
Repost from آموزش برنامه نویسی و دوره های امنیتی
🚗 راننده اسنپ شو، 207 ببر!
فقط کافیه:
1. ثبتنام کنی و به ناوگان اسنپ بپیوندی
2. حداقل 3 سفر در شهریور لازمه که انجام بدی
🎁 جوایز قرعهکشی :
🚘 یک دستگاه پژو 207
💰 5 جایزه 100 میلیونتومانی
🔗ثبتنام در ناوگان
Repost from آموزش برنامه نویسی و دوره های امنیتی
اگه به هوش مصنوعی علاقه داری، این کانال رو از دست نده! 🤖
توی @AIToolsFarsi هر روز با جدیدترین ابزارها، ترفندهای کاربردی و مهمترین اخبار دنیای هوش مصنوعی آشنا میشی.
✅ معرفی ابزارهای کاربردی
✅معرفی API های رایگان
✅پرامپت های آماده
✅ ترفندهای ساده و قابل استفاده
✅ اخبار مهم و بهروز AI
✅ آموزشهای کوتاه و مفید
همه محتواها با توضیحات ساده منتشر میشن تا بدون اتلاف وقت، از هوش مصنوعی توی کار، درس و زندگی روزمره استفاده کنی.
👇 همین حالا عضو شو:
@AIToolsFarsi
@AIToolsFarsi
Repost from ابر ویراک
☁️ 24 ساعت تست رایگان سرور ابری ویراک، حالا با اعتبار هدیه بیشتر!
اگر قصد راهاندازی یا تمدید سرویسهای ابری خود را دارید، الان بهترین زمان است.
✨ تا پایان مردادماه:
🎁 15% شارژ بیشتر هدیه روی اولین واریزی
🎁 10% شارژ بیشتر هدیه روی تمام واریزیهای بعدی
🎁 24 ساعت تست رایگان
فرقی نمیکند اولین بار است که ویراک را انتخاب میکنید یا از قبل همراه ما بودهاید؛ با هر شارژ، اعتبار بیشتری دریافت میکنید و همان زیرساخت قدرتمند را با هزینه کمتر در اختیار خواهید داشت.
برای دریافت کد تست رایگان کلمه *«تست»* رو به آیدی زیر ارسال کنید.
https://t.me/cloud_virak
👇 پس از دریافت کد تست رایگان وارد پنل VirakCloud شوید ، کد تخفیف خود را وارد نمایید و ابرک خود را بسازید:
🔗 https://B2n.ir/qy4432
☎️ 02191555530
Repost from آموزش برنامه نویسی و دوره های امنیتی
بدون اینترنت #آسیاتک کار و جلسهات میره رو هوا😱
امکان خرید #اینترنت #LTE در 4 قسط از طریق دیجیپی🤩
📣بدون نیاز به چک و ضامن
🔴مودم E1 + سیمکارت + 900 گیگ اینترنت 6 ماهه
🔴سیمکارت + 1200 گیگ اینترنت 1ساله
✅ارسال فوری به سراسر کشور
✅امکان جابهجایی راحت
👈🏻خرید اقساطی پکیج اینترنت LTE
🌐کانال تلگرام: t.me/asiatechco
☎️تماس با شماره رایگان 0000 9000 (داخلی 99)
Repost from آموزش برنامه نویسی و دوره های امنیتی
+4
✅ اگه سایت وردپرسی داری و چت آنلاین نداره داری مشتریاتو از دست میدی!
📥 rtl-theme.com/hamyarchat-wordpress-plugin/
💬راه حلش چیه؟ همیارچت بهترین افزونه چت و پشتیبانی آنلاین در ایرانه که باهاش میتونید با کاربرای سایتتون گفتگو کنید.
🎁 کد تخفیف 30% برای خرید:
hamyar1405 اگه تخفیف بیشتری میخواید میتونید به سازنده این افزونه در تلگرام پیام بدید.🔥
✅ جهت مشاهده افرونه های بیشتر کانالشو دنبال کنید: @Funny_Learn
Repost from آموزش برنامه نویسی و دوره های امنیتی
✅ اگه سایت وردپرسی داری و چت آنلاین نداره داری مشتریاتو از دست میدی!
📥 rtl-theme.com/hamyarchat-wordpress-plugin/
💬راه حلش چیه؟ همیارچت بهترین افزونه چت و پشتیبانی آنلاین در ایرانه که باهاش میتونید با کاربرای سایتتون گفتگو کنید.
🎁 تخفیف 80% (تقریبا رایگان) انتشار اولیه داره و با یکبار خرید به صورت دائملعمر کار میکنه🔥
✅ کانال برنامه نویسان : @Funny_Learn
Repost from آموزش برنامه نویسی و دوره های امنیتی
قبل از دفاع، حمله رو بشناس! 🔥
تو ایونت نبرد نامرئی | داستان حمله و امنیت Offensive میریم سراغ دنیای Offensive Security و میبینیم یک حمله از کجا شروع میشه، مهاجم چطور هدف رو بررسی میکنه و متخصص تست نفوذ چطور قبل از یک حمله واقعی، آسیبپذیریها رو پیدا میکنه.
تو این ایونت بررسی میکنیم:
🔹پشتصحنه یک حمله سایبری
🔹از Recon تا Exploitation
🔹 تست نفوذ شبکه، وب و زیرساخت
🔹 مسیر Penetration Testing و Red Team
🔹 مهارتهایی که برای ورود به این حوزه نیاز داری!
📅 یکشنبه ۱ شهریور | ساعت ۱۹
🔴 رایگان و آنلاین
🎙 با استاد مستمع
اینبار قرار نیست از حمله دفاع کنیم؛ قراره بفهمیم حمله چطور اتفاق میوفته و چطور میتونیم جلوش رو بگیریم.
جات رو رزرو کن:
https://l.cando.ac/off-ev7
(بدون vpn وارد شو)
🌻 آموزشگاه مهندسی کندو | We CanDo IT
@cando_ac
در جنگو، از
blank=True استفاده کنیم یا null=True ؟
یکی از اشتباهات رایج در طراحی مدلهای Django اینه که برای فیلدهای متنی مثل EmailField یا CharField بدون دلیل از null=True استفاده کنیم.
مثلاً بین این دو:
email = models.EmailField(
max_length=100,
blank=True
)
و:
email = models.EmailField(
max_length=100,
blank=True,
null=True
)
معمولاً گزینهی اول انتخاب بهتریه.
چرا؟
چون blank=True یعنی این فیلد در مرحلهی validation میتونه خالی باشه.
اما null=True یعنی دیتابیس اجازه داشته باشه مقدار NULL ذخیره کنه.
در فیلدهای متنی Django معمولاً توصیه میشه از null=True استفاده نکنیم؛ چون در این حالت برای خالی بودن دو حالت مختلف خواهیم داشت:
email = ""
و :
email = None
یعنی برای یک مفهوم ساده، دو مقدار متفاوت داریم که میتونه در queryها و منطق برنامه دردسر اضافه ایجاد کنه.
پس در اکثر مواقع:
email = models.EmailField(
max_length=100,
blank=True
)
انتخاب تمیزتر و اصولیتریه
📌 پس:
برای CharField و EmailField و سایر فیلد های متنی، معمولاً blank=True کافی است.
🔰Group: @PyFarsi
🔰Channel: @PSFarsi
#Django #Python #Backend #Programmingکدت آمادهست؟ با ابرکلیک Deploy کن؛ زیرساختش با ما.
با ابرکلیک، اپلیکیشنهات رو بدون درگیری با کانفیگ سرور و پیچیدگیهای زیرساخت، Deploy و مدیریت کن.
• زیرساخت مبتنی بر Kubernetes
• استقرار سریع اپلیکیشن
• استقرار مستقیم از Git
• دیتابیسهای مدیریتشده
• دامنه و SSL
• مانیتورینگ و Logs
• ابزار CLI مخصوص توسعهدهندهها
قدرت Kubernetes رو داشته باش، بدون اینکه درگیر مدیریت Kubernetes بشی.
از اولین Deploy تا Scale شدن محصولت، ابرکلیک کنارت هست.
تمرکز روی توسعه؛ زیرساخت با ابرکلیک.
AbrClick — Build. Deploy. Scale.
همین حالا رایگان شروع کن:
@abrclick_paas
Repost from نویسان | هوش مصنوعی فارسی
🤖 مقالهتو با AI نوشتی؟
یه لحظه صبر کن! قبل از انتشار، انسانیش کن ✨
نویسان متنهای خشک و رباتی رو تبدیل میکنه به محتوایی روان، طبیعی و جذاب که مخاطب دوستش داشته باشه و برای سئو هم استانداردتر باشه 📈
⛷ متن بهتر، تجربه بهتر، شانس بیشتر برای دیدهشدن
🔵 nvsnai.ir/tabdil
🚀 @nvsnai
