این پستای شبکه تموم شه میریم یکم پایتون یاد بگیریم.
منبع هم Fluent python هست :)
منبع هم Fluent python هست :)
❤21👍5🔥2
پکیج hey403 منتشر شد 🥳
سلام به همگی
همونطور که شنیدید پکیج hey403 حالا روی PyPI در دسترسه
این پکیج چیکار میکنه؟ 🛠️
بهش یه دامنه (مثلاً
دیگه نیازی نیست کلی وقت بذارید و تک تک DNSها رو تست کنید فقط چند ثانیه کافیه
چطوری استفاده کنیم؟ ⬇️
بعد توی ترمینال اجرا کنید:
ازتون کمک میخوایم 🤝
ایده دارید؟ باگ دیدید؟ میتونید رو پروژه کانتربیوتر بشید و یا به ما گزارش بدید:
گیتهاب پروژه
فیچرهای جدید پیشنهاد بدید یا خودتون کد بزنید
حمایتتون مهمه ❤️
با ستاره دادن به ریپازیتوری و فوروارد کردن این پیام، ما رو حمایت کنید.
این پروژه رو به دولوپرهای دیگه معرفی کنید
ممنون که همراهیمون میکنید🙏
بیاین دنیا رو برای توسعهدهندگان ایرانی راحتتر کنیم 🌍
➖➖➖➖➖➖➖➖➖
سلام به همگی
همونطور که شنیدید پکیج hey403 حالا روی PyPI در دسترسه
این پکیج چیکار میکنه؟ 🛠️
بهش یه دامنه (مثلاً
example.com
) میدید، خودکار با دهها DNS مختلف چک میکنه که آیا از طریق اونها قابل دسترسه یا نهدیگه نیازی نیست کلی وقت بذارید و تک تک DNSها رو تست کنید فقط چند ثانیه کافیه
چطوری استفاده کنیم؟ ⬇️
pip install hey403
بعد توی ترمینال اجرا کنید:
hey403 example.com
ازتون کمک میخوایم 🤝
ایده دارید؟ باگ دیدید؟ میتونید رو پروژه کانتربیوتر بشید و یا به ما گزارش بدید:
گیتهاب پروژه
فیچرهای جدید پیشنهاد بدید یا خودتون کد بزنید
حمایتتون مهمه ❤️
با ستاره دادن به ریپازیتوری و فوروارد کردن این پیام، ما رو حمایت کنید.
این پروژه رو به دولوپرهای دیگه معرفی کنید
ممنون که همراهیمون میکنید🙏
بیاین دنیا رو برای توسعهدهندگان ایرانی راحتتر کنیم 🌍
#⃣ #self_promot
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
GitHub
GitHub - Diramid/hey403: Hey 403 - CLI Edition is a powerful command-line utility designed to diagnose domain accessibility issues…
Hey 403 - CLI Edition is a powerful command-line utility designed to diagnose domain accessibility issues across multiple DNS providers. This tool helps developers, network administrators, and secu...
❤24🔥4👌3👍1
Ninja Learn | نینجا لرن
پکیج hey403 منتشر شد 🥳 سلام به همگی همونطور که شنیدید پکیج hey403 حالا روی PyPI در دسترسه این پکیج چیکار میکنه؟ 🛠️ بهش یه دامنه (مثلاً example.com) میدید، خودکار با دهها DNS مختلف چک میکنه که آیا از طریق اونها قابل دسترسه یا نه دیگه نیازی نیست کلی…
چیز گنده ای نیست ولی امید وارم بتونه مفید باشه :)
❤15👍2
خب خب خب لایه هفتم لایه اپلیکیشن (Application Layer) در مدل OSI 💻✨
خب دوستان، رسیدیم به آخرین و بالاترین لایه مدل OSI، یعنی لایه Application یا به زبون سادهتر، همون جایی که شما بهعنوان کاربر مستقیم با سیستم در ارتباطید. این لایه دقیقاً اون بخشیه که شما توش اپلیکیشنها و سرویسها رو میبینید و استفاده میکنید.
وظایف لایه اپلیکیشن 🌟
1️⃣ رابط مستقیم با کاربر (User Interface):
این لایه یه واسط ایجاد میکنه تا کاربر بتونه از اپلیکیشنها و سرویسها استفاده کنه.
2️⃣ مدیریت دسترسی به منابع (Resource Access):
این لایه مشخص میکنه که چه منابعی (مثل فایلها یا دیتابیسها) قابل دسترسی هستن و چطور باید ازشون استفاده بشه.
3️⃣ مدیریت سرویسها (Service Advertisement):
این لایه وظیفه داره سرویسهایی که سیستم ارائه میده رو به کاربران معرفی کنه.
پروتکلهای معروف در لایه اپلیکیشن 📜
1️⃣ HTTP/HTTPS:
2️⃣ FTP (File Transfer Protocol):
3️⃣ SMTP (Simple Mail Transfer Protocol):
4️⃣ DNS (Domain Name System):
5️⃣ POP3 و IMAP:
ارتباط با بقیه لایهها 🧩
این لایه دادهها رو میگیره و از طریق لایههای پایینتر (مثل Presentation و Session) میفرسته تا به مقصد برسه. بهعبارتدیگه، لایه اپلیکیشن فقط به کاربر نشون میده که چی داره اتفاق میافته، اما اجرای جزئیات بر عهده بقیه لایههاست.
جمع بندی ✍
لایه Application مثل ویترین فروشگاهه؛ همه چیز رو آماده و جذاب نشون میده تا بتونی ازش استفاده کنی. کاربر نهایی (مثل من و تو) مستقیماً با این لایه سر و کار داره و اپلیکیشنها و سرویسها همگی زیر مجموعه این لایه هستن.
➖➖➖➖➖➖➖➖➖
خب دوستان، رسیدیم به آخرین و بالاترین لایه مدل OSI، یعنی لایه Application یا به زبون سادهتر، همون جایی که شما بهعنوان کاربر مستقیم با سیستم در ارتباطید. این لایه دقیقاً اون بخشیه که شما توش اپلیکیشنها و سرویسها رو میبینید و استفاده میکنید.
وظایف لایه اپلیکیشن 🌟
1️⃣ رابط مستقیم با کاربر (User Interface):
این لایه یه واسط ایجاد میکنه تا کاربر بتونه از اپلیکیشنها و سرویسها استفاده کنه.
مثال: مرورگری که باهاش وبگردی میکنی (مثل Chrome یا Firefox) مستقیماً توی این لایه عمل میکنه.
2️⃣ مدیریت دسترسی به منابع (Resource Access):
این لایه مشخص میکنه که چه منابعی (مثل فایلها یا دیتابیسها) قابل دسترسی هستن و چطور باید ازشون استفاده بشه.
مثال: وقتی داری یه فایل رو از گوگل درایو دانلود میکنی، این لایه تعیین میکنه که دسترسی به اون فایل مجازه یا نه.
3️⃣ مدیریت سرویسها (Service Advertisement):
این لایه وظیفه داره سرویسهایی که سیستم ارائه میده رو به کاربران معرفی کنه.
مثال: وقتی توی شبکه یه چاپگر (Printer) رو پیدا میکنی، این لایه نقش مهمی تو شناسایی اون دستگاه داره.
پروتکلهای معروف در لایه اپلیکیشن 📜
1️⃣ HTTP/HTTPS:
پروتکل اصلی وب که برای ارسال و دریافت صفحات وب استفاده میشه.
2️⃣ FTP (File Transfer Protocol):
برای انتقال فایلها بین سرور و کلاینت.
3️⃣ SMTP (Simple Mail Transfer Protocol):
برای ارسال ایمیلها.
4️⃣ DNS (Domain Name System):
برای تبدیل اسم دامنه (مثل google.com) به آدرس IP.
5️⃣ POP3 و IMAP:
برای دریافت ایمیلها.
ارتباط با بقیه لایهها 🧩
این لایه دادهها رو میگیره و از طریق لایههای پایینتر (مثل Presentation و Session) میفرسته تا به مقصد برسه. بهعبارتدیگه، لایه اپلیکیشن فقط به کاربر نشون میده که چی داره اتفاق میافته، اما اجرای جزئیات بر عهده بقیه لایههاست.
جمع بندی ✍
لایه Application مثل ویترین فروشگاهه؛ همه چیز رو آماده و جذاب نشون میده تا بتونی ازش استفاده کنی. کاربر نهایی (مثل من و تو) مستقیماً با این لایه سر و کار داره و اپلیکیشنها و سرویسها همگی زیر مجموعه این لایه هستن.
#⃣ #network
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍15🔥3❤1
Ninja Learn | نینجا لرن
خب خب خب لایه هفتم لایه اپلیکیشن (Application Layer) در مدل OSI 💻✨ خب دوستان، رسیدیم به آخرین و بالاترین لایه مدل OSI، یعنی لایه Application یا به زبون سادهتر، همون جایی که شما بهعنوان کاربر مستقیم با سیستم در ارتباطید. این لایه دقیقاً اون بخشیه که شما…
این سری پست هاهم به پایان خودش رسید
👍14❤2🔥2
Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
⚠️ وقت همگی بخیر. مطلب مهمی رو باید باهاتون به اشتراک بزارم! ‼️
احتمالا شما هم با شرکت های خارجی مواجه میشوید که به شما میگن تحت عنوان هویت یک سیتیزن آمریکا قراره کار بکنید و درامد های ۳ الی ۴ هزار دلاری بهتون میدن. و علاقه زیادی هم به بستن قرار داد دارند.
اما کمتر کسی میدونه که این چقد جرم بزرگیه. و این تنها محدود به ایران نمیشه و اگر بخواید مهاجرت بکنید هم با مشکل جدی مواجه میشید. چرا که جعل هویت حتی با رضایت هر جای دنیا هم که برید یه جرم محسوب میشود. پس این قضیه کلا کنسله...
اگر کسی آینده نگر باشه و به امنیت خودش اهمیت بده سراغ این شرکت ها نمیره. چون ۹۹ درصد فیک هستن و اعتمادی بهشون نیست.
من طی این ۳ ماه امروز دومین شرکتی بود که با این شرایط باهاشون مواجه شدم... خیلی داستان جالبی است :)
شرکت اولی که باهاشون مصاحبه کردم ادعا داشت یه شرکت آمریکایی هست. مصاحبه تکنیکال رو قبول شدم. سر salary هم توافق کردیم. انگلیسی م اوکی بود. همه چی رو به خوبی پیش بردیم. تا اینکه رسیدیم به مرحله قرار داد و نوشتن رزومه! من سوال کردم ازشون که اگر چطور من رو جای به سنیور ۳۰ ساله با بیش از ۱۰ ها سال تجربه جا میزنید؟ من تنها ۱۷ سالمه و نرماله که چهره م سنمو به دقت نشون بده :)
با کمال تعجب گفتن هیچ مشکلی نیست... ما خودمون اوکی میکنیم.
بعدش گفتم مشکلی نیست. صدامو چیکار میکنید؟ گفتن اونم حل میکنیم نیازی به نگرانی نیست...
بعدش گفتم خب... با سرچ کردن چهره من تو گوگل به همه اطلاعات من تو اینترنت دسترسی دارند و خیلی سریع متوجه میشن که من ایرانی هستم!
همچنین لهجه و عدم اسپیکینگ slang و native هم به خوبی این رو نشون میده!
جالبه که بدونید بعدش چه اتفاقی افتاد :)
من که همینطور اینها رو باهاشون در میون میزاشتم اون ها هم به تاکید میگفتند هیچ مشکلی نیست و شما الکی نگرانید.
اما قضیه همینطوری تموم نشد. من با وکیل قانونی صحبت کردم و اطلاعات تخصصی ای رو باهاشون در میان گذاشتم. همچنین consequence هایی که برای من به ارمغان خواهد آورد.
خیلی عجیب و شگفت انگیز شروع به تحقیر و فرار کردن از پاسخگویی کردند. جالب بود برای من که چطور این ها از اسم lawyer اینقد ترس دارند...
به من گفتند با رییس شرکت جلسه ای برگذار میکنیم که کلا قضیه رو برات از نو clarify بکنیم.
رییس شرکت خودش توی تلگرام به من DM فرستاد (اشتباه اول).
خودش پیگیر موضوع شد.(اشتباه دوم).
پروفایلش رو توی گوگل سرچ کردم و به یه مقاله روانشناختی رسیدم که بنرش این اقا بود. هیچ اطلاعاتی راجب شخصی که ادعا داشت رییس اون شرکت هست پیدا نکردم. اسمش فیک بود. (اشتباه سوم).
من حدس میزنم همون شخص دوتا اکانت داشت چون بعد از پرزنت کردن این اطلاعات دیگر به پاسخگویی ادامه نداد. انگار نه انگار که همان آدم سابق باشد.
و تمام.
این هم اضافه میکنم که یک CTO ایرانی داشتند. ادعای سنیوری میکرد :) گیت هاب فیک داشت همچنین. از کامیت ها و محتوای ریپوزیتوری ها به خوبی میشد این رو متوجه شد.
همچنین از اسپیکینگ انگلیسی خوبی برخوردار نبود.
به من میگفتند انگلیسی صحبت کن. ولی این شخص که ایرانی بود ۷۰ درصد اوقات فارسی حرف میزد و معلوم بود که اسپیکینگ خوبی ندارد.
همه این اطلاعات رو ثبت و ضبط کردم. حتی interview هایی که رفتیم رو. اگر خواستید میتونم باهاتون به اشتراک بگزارم. که مبادا گیر این ادم ها بیوفتید... که تموم شدنش دست خداست :]
پ.ن : زیر همین پست اطلاعات حقوقی هم شیر میکنم باهاتون.
با تشکر.
طاها.
احتمالا شما هم با شرکت های خارجی مواجه میشوید که به شما میگن تحت عنوان هویت یک سیتیزن آمریکا قراره کار بکنید و درامد های ۳ الی ۴ هزار دلاری بهتون میدن. و علاقه زیادی هم به بستن قرار داد دارند.
اما کمتر کسی میدونه که این چقد جرم بزرگیه. و این تنها محدود به ایران نمیشه و اگر بخواید مهاجرت بکنید هم با مشکل جدی مواجه میشید. چرا که جعل هویت حتی با رضایت هر جای دنیا هم که برید یه جرم محسوب میشود. پس این قضیه کلا کنسله...
اگر کسی آینده نگر باشه و به امنیت خودش اهمیت بده سراغ این شرکت ها نمیره. چون ۹۹ درصد فیک هستن و اعتمادی بهشون نیست.
من طی این ۳ ماه امروز دومین شرکتی بود که با این شرایط باهاشون مواجه شدم... خیلی داستان جالبی است :)
شرکت اولی که باهاشون مصاحبه کردم ادعا داشت یه شرکت آمریکایی هست. مصاحبه تکنیکال رو قبول شدم. سر salary هم توافق کردیم. انگلیسی م اوکی بود. همه چی رو به خوبی پیش بردیم. تا اینکه رسیدیم به مرحله قرار داد و نوشتن رزومه! من سوال کردم ازشون که اگر چطور من رو جای به سنیور ۳۰ ساله با بیش از ۱۰ ها سال تجربه جا میزنید؟ من تنها ۱۷ سالمه و نرماله که چهره م سنمو به دقت نشون بده :)
با کمال تعجب گفتن هیچ مشکلی نیست... ما خودمون اوکی میکنیم.
بعدش گفتم مشکلی نیست. صدامو چیکار میکنید؟ گفتن اونم حل میکنیم نیازی به نگرانی نیست...
بعدش گفتم خب... با سرچ کردن چهره من تو گوگل به همه اطلاعات من تو اینترنت دسترسی دارند و خیلی سریع متوجه میشن که من ایرانی هستم!
همچنین لهجه و عدم اسپیکینگ slang و native هم به خوبی این رو نشون میده!
جالبه که بدونید بعدش چه اتفاقی افتاد :)
من که همینطور اینها رو باهاشون در میون میزاشتم اون ها هم به تاکید میگفتند هیچ مشکلی نیست و شما الکی نگرانید.
اما قضیه همینطوری تموم نشد. من با وکیل قانونی صحبت کردم و اطلاعات تخصصی ای رو باهاشون در میان گذاشتم. همچنین consequence هایی که برای من به ارمغان خواهد آورد.
خیلی عجیب و شگفت انگیز شروع به تحقیر و فرار کردن از پاسخگویی کردند. جالب بود برای من که چطور این ها از اسم lawyer اینقد ترس دارند...
به من گفتند با رییس شرکت جلسه ای برگذار میکنیم که کلا قضیه رو برات از نو clarify بکنیم.
رییس شرکت خودش توی تلگرام به من DM فرستاد (اشتباه اول).
خودش پیگیر موضوع شد.(اشتباه دوم).
پروفایلش رو توی گوگل سرچ کردم و به یه مقاله روانشناختی رسیدم که بنرش این اقا بود. هیچ اطلاعاتی راجب شخصی که ادعا داشت رییس اون شرکت هست پیدا نکردم. اسمش فیک بود. (اشتباه سوم).
من حدس میزنم همون شخص دوتا اکانت داشت چون بعد از پرزنت کردن این اطلاعات دیگر به پاسخگویی ادامه نداد. انگار نه انگار که همان آدم سابق باشد.
و تمام.
این هم اضافه میکنم که یک CTO ایرانی داشتند. ادعای سنیوری میکرد :) گیت هاب فیک داشت همچنین. از کامیت ها و محتوای ریپوزیتوری ها به خوبی میشد این رو متوجه شد.
همچنین از اسپیکینگ انگلیسی خوبی برخوردار نبود.
به من میگفتند انگلیسی صحبت کن. ولی این شخص که ایرانی بود ۷۰ درصد اوقات فارسی حرف میزد و معلوم بود که اسپیکینگ خوبی ندارد.
همه این اطلاعات رو ثبت و ضبط کردم. حتی interview هایی که رفتیم رو. اگر خواستید میتونم باهاتون به اشتراک بگزارم. که مبادا گیر این ادم ها بیوفتید... که تموم شدنش دست خداست :]
پ.ن : زیر همین پست اطلاعات حقوقی هم شیر میکنم باهاتون.
با تشکر.
طاها.
👍20
👾 Geek Engineers
⚠️ وقت همگی بخیر. مطلب مهمی رو باید باهاتون به اشتراک بزارم! ‼️ احتمالا شما هم با شرکت های خارجی مواجه میشوید که به شما میگن تحت عنوان هویت یک سیتیزن آمریکا قراره کار بکنید و درامد های ۳ الی ۴ هزار دلاری بهتون میدن. و علاقه زیادی هم به بستن قرار داد دارند.…
خلاصه که مراقب باشید که گیر اینجور افراد نیوفتید
❤7
خب خب خب متاکلاسها و متاپروگرامینگ در پایتون 🐍
خب امروز میخوام شما رو وارد یکی از موضوعات پیشرفته و البته خیلی جادویی پایتون کنم: متاکلاسها و متاپروگرامینگ. میدونم که این موضوع ممکنه یکم گیجکننده به نظر برسه، ولی نگران چیزی نباشید؛ با مثال و توضیحات، قدم به قدم جلو میریم تا ببینیم چطوری میتونیم رفتار کلاسها رو در زمان ایجاد تغییر بدیم و کدامون رو به دلخواه تنظیم کنیم. این پست برگرفته از کتاب Fluent Python هست. که خوشبختانه تو کانال گذاشتم.
1⃣ متاکلاسها چیه؟ 🧙♂️
ببینید، تو پایتون همه چیز یه آبجکت هست. حتی خود کلاسها هم آبجکت هستن به عبارت ساده، وقتی شما یه کلاس تعریف میکنید، پایتون در واقع از یه متاکلاس (که به طور پیشفرض type هست) برای ساخت کلاس استفاده میکنه.
مثلاً:
اینجاست که وارد بازی متاکلاسها میشیم: متاکلاسها، در واقع کلاسهایی هستند که کلاسها رو میسازن. یعنی اگه بخواید رفتار کلاسها رو قبل از ساختهشدنشون دستکاری کنید، متاکلاسها ابزار اصلی شما هستن.
2⃣ متاکلاسها چطور کار میکنن؟ 🛠️
وقتی شما مینویسید:
پایتون مراحل زیر رو انجام میده:
جمعآوری اطلاعات:
فراخوانی new متاکلاس:
حالا متاکلاس (مثلاً type یا یه متاکلاس سفارشی) متد new خودش رو صدا میکنه. این متد ورودیهایی مثل:
meta_cls: خود متاکلاس (مثل MyMeta)
cls_name: نام کلاس (مثلاً "MyClass")
bases: تاپل کلاسهای والد (مثلاً (object,))
cls_dict: دیکشنری ویژگیها و متدها
رو دریافت میکنه و قبل از اینکه کلاس نهایی ساخته بشه، شما میتونید این مقادیر رو تغییر بدید یا ویژگیهای جدید اضافه کنید.
مثال ساده:
وقتی کلاس MyClass ساخته میشه،init__init__ متاکلاس اجرا میشه تا تنظیمات نهایی روی کلاس اعمال بشه.
بایند شدن نام کلاس:
در آخر، کلاس ساختهشده به نامش در فضای نام (namespace) متصل میشه.
3⃣ یه مثال جون دار تر: اجباری کردن داشتن متد save 🎯
فرض کنید میخواید هر کلاسی که میسازید، حتماً باید متدی به اسم save داشته باشه. میتونید این کار رو با متاکلاس انجام بدید:
اینجا متاکلاس EnforceSaveMeta قبل از ساخت کلاس، دیکشنری کلاس رو چک میکنه و اگه متد save پیدا نشه، خطای مناسب رو ارسال میکنه.
4⃣ آناتومی متاکلاسها: نقش new و init 🔬
۴.۱ new متاکلاسها
متد new متاکلاس مثل یه «فروشنده» عمل میکنه که قبل از اینکه کلاس ساخته بشه، همه چیز رو آماده میکنه. ورودیهای این متد شامل:
meta_cls: خود متاکلاس
cls_name: نام کلاس جدید
bases: کلاسهای والد
cls_dict: دیکشنری ویژگیها و متدهای کلاس
شما میتونید در این متد تغییراتی اعمال کنید، مثلاً ویژگیهای جدید اضافه کنید یا حتی فرمت دیکشنری رو تغییر بدید.
۴.۲ init متاکلاسها
پس از ساختهشدن کلاس توسط new، متد init متاکلاس اجرا میشه تا تنظیمات نهایی روی کلاس اعمال بشه. در این متد، شما نمیتوانید کلاس رو دوباره بسازید؛ فقط میتونید تنظیمات نهایی رو انجام بدید.
مثال:
پست بعد
خب امروز میخوام شما رو وارد یکی از موضوعات پیشرفته و البته خیلی جادویی پایتون کنم: متاکلاسها و متاپروگرامینگ. میدونم که این موضوع ممکنه یکم گیجکننده به نظر برسه، ولی نگران چیزی نباشید؛ با مثال و توضیحات، قدم به قدم جلو میریم تا ببینیم چطوری میتونیم رفتار کلاسها رو در زمان ایجاد تغییر بدیم و کدامون رو به دلخواه تنظیم کنیم. این پست برگرفته از کتاب Fluent Python هست. که خوشبختانه تو کانال گذاشتم.
1⃣ متاکلاسها چیه؟ 🧙♂️
ببینید، تو پایتون همه چیز یه آبجکت هست. حتی خود کلاسها هم آبجکت هستن به عبارت ساده، وقتی شما یه کلاس تعریف میکنید، پایتون در واقع از یه متاکلاس (که به طور پیشفرض type هست) برای ساخت کلاس استفاده میکنه.
مثلاً:
>>> class MyClass:
... pass
>>> type(MyClass)
<class 'type'>
اینجاست که وارد بازی متاکلاسها میشیم: متاکلاسها، در واقع کلاسهایی هستند که کلاسها رو میسازن. یعنی اگه بخواید رفتار کلاسها رو قبل از ساختهشدنشون دستکاری کنید، متاکلاسها ابزار اصلی شما هستن.
2⃣ متاکلاسها چطور کار میکنن؟ 🛠️
وقتی شما مینویسید:
class MyClass:
x = 42
پایتون مراحل زیر رو انجام میده:
جمعآوری اطلاعات:
پایتون نام کلاس، کلاسهای والد (bases) و یه دیکشنری از ویژگیها و متدهای تعریفشده رو میگیره.
فراخوانی new متاکلاس:
حالا متاکلاس (مثلاً type یا یه متاکلاس سفارشی) متد new خودش رو صدا میکنه. این متد ورودیهایی مثل:
meta_cls: خود متاکلاس (مثل MyMeta)
cls_name: نام کلاس (مثلاً "MyClass")
bases: تاپل کلاسهای والد (مثلاً (object,))
cls_dict: دیکشنری ویژگیها و متدها
رو دریافت میکنه و قبل از اینکه کلاس نهایی ساخته بشه، شما میتونید این مقادیر رو تغییر بدید یا ویژگیهای جدید اضافه کنید.
مثال ساده:
class MyMeta(type):
def __new__(meta_cls, cls_name, bases, cls_dict):
print(f"داریم کلاس {cls_name} رو میسازیم!")
return super().__new__(meta_cls, cls_name, bases, cls_dict)
class MyClass(metaclass=MyMeta):
pass
وقتی کلاس MyClass ساخته میشه،init__init__ متاکلاس اجرا میشه تا تنظیمات نهایی روی کلاس اعمال بشه.
بایند شدن نام کلاس:
در آخر، کلاس ساختهشده به نامش در فضای نام (namespace) متصل میشه.
3⃣ یه مثال جون دار تر: اجباری کردن داشتن متد save 🎯
فرض کنید میخواید هر کلاسی که میسازید، حتماً باید متدی به اسم save داشته باشه. میتونید این کار رو با متاکلاس انجام بدید:
class EnforceSaveMeta(type):
def __new__(meta_cls, cls_name, bases, cls_dict):
if "save" not in cls_dict:
raise TypeError(f"کلاس {cls_name} باید متد 'save' رو داشته باشه!")
return super().__new__(meta_cls, cls_name, bases, cls_dict)
class ValidModel(metaclass=EnforceSaveMeta):
def save(self):
print("مدل ذخیره میشود!")
# استفاده:
vm = ValidModel()
vm.save() # خروجی: مدل ذخیره میشود!
# اگر بخواهیم کلاس بدون متد save بسازیم، خطا میدهد:
class InvalidModel(metaclass=EnforceSaveMeta):
pass # این کلاس خطا میدهد!
اینجا متاکلاس EnforceSaveMeta قبل از ساخت کلاس، دیکشنری کلاس رو چک میکنه و اگه متد save پیدا نشه، خطای مناسب رو ارسال میکنه.
4⃣ آناتومی متاکلاسها: نقش new و init 🔬
۴.۱ new متاکلاسها
متد new متاکلاس مثل یه «فروشنده» عمل میکنه که قبل از اینکه کلاس ساخته بشه، همه چیز رو آماده میکنه. ورودیهای این متد شامل:
meta_cls: خود متاکلاس
cls_name: نام کلاس جدید
bases: کلاسهای والد
cls_dict: دیکشنری ویژگیها و متدهای کلاس
شما میتونید در این متد تغییراتی اعمال کنید، مثلاً ویژگیهای جدید اضافه کنید یا حتی فرمت دیکشنری رو تغییر بدید.
۴.۲ init متاکلاسها
پس از ساختهشدن کلاس توسط new، متد init متاکلاس اجرا میشه تا تنظیمات نهایی روی کلاس اعمال بشه. در این متد، شما نمیتوانید کلاس رو دوباره بسازید؛ فقط میتونید تنظیمات نهایی رو انجام بدید.
مثال:
پست بعد
👍8❤1
class MetaLoggernew
def __new__(meta_cls, cls_name, bases, cls_dict):
print(f"داریم کلاس {cls_name} رو میسازیم!")
new super().__new__(meta_cls, cls_name, bases, clsinit
def __init__(cls, cls_name, bases, cls_dict):
print(f"کلاس {cls_name} ساخته شده و آماده استفاده است!")
initsuper().__init__(cls_name, bases, cls_dict)
class Example(metaclass=MetaLogger):
pass
# خروجی:
# داریم کلاس Example رو میسازیم!
# کلاس Example ساخته شده و آماده استفاده است
5⃣ مزایا و چالشهای متاکلاسها 💡⚠️
مزایا:
کنترل دقیق روی ساختار کلاسها:
میتوانید رفتار و ساختار کلاسها رو به دلخواه تغییر بدید.
کاهش تکرار کد:
الگوها و قوانین مشترک رو در یک نقطه متمرکز میکنید.
ایجاد چارچوبهای پیچیده:
برای ساخت فریمورکهای پیشرفته (مثل Django یا SQLAlchemy) این تکنیک فوقالعاده کاربردیه.
چالشها:
پیچیدگی در درک:
متاکلاسها مفهومی پیشرفته هستند و نیاز به زمان و تجربه برای درک کامل دارند.
اشکالزدایی سختتر:
خطاها در متاکلاسها معمولاً در زمان ایجاد کلاس اتفاق میافتند و پیدا کردشون سخت تر هست.
استفاده بیش از حد:
همیشه باید از متاکلاسها تنها در وقتایی استفاده کنید که واقعاً نیاز دارید؛ بعضی وقتی راهحلهای سادهتر مانند دکوریتورها یا میکسینها کفایت میکنن.
7⃣ جمعبندی نهایی ✍
متاکلاسها به شما این امکان رو میدن که قبل از ساختهشدن کلاس، رفتار و ساختار اون رو تغییر بدید. اگه نیاز به کنترل دقیق روی ساختار کد دارید یا میخواید چارچوبهای پیچیدهای بسازید، متاکلاسها ابزار قدرتمندی هستن. اما همزمان باید به خاطر داشته باشید که این جادوی عمیق نیازمند دانش و دقت بالایی هست.
امید وارم مفید بوده باشه :)
#⃣ #python #programming
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👍10❤2
خب خب خب دکوریتورها (Decorators) در پایتون: تغییر رفتار توابع و کلاسها 🐍
سلام دوستان امروز میخوایم در مورد یکی از ویژگیهای خیلی قوی و در عین حال جذاب پایتون صحبت کنیم:
دکوریتورها. این قابلیت به شما اجازه میده تا بدون دست زدن به کد اصلی توابع یا کلاسها، رفتارشون رو تغییر بدید.
1⃣ دکوریتورها چیستند؟ 🤔
دکوریتورها در پایتون، توابع یا کلاسهایی هستن که مثل یه "بستهبندی" عمل میکنن. یعنی، شما یه تابع یا کلاس رو میگیرید، اون رو به یه دکوریتور میفرستید، دکوریتور رفتارش رو تغییر میده (یا بهبود میبخشه) و نسخه تغییر یافته رو برمیگردونه.
مثال ساده:
اینجا دکوریتور simple_decorator قبل و بعد از اجرای تابع greet پیام چاپ میکنه. یعنی بدون اینکه کد اصلی تابع رو دست بزنیم، رفتارش تغییر پیدا میکنه.
2⃣ نحوهی کارکرد دکوریتورها 🔧
🔻 دکوریتور به عنوان یک تابع
در واقع، دکوریتورها توی پایتون همون توابعی هستن که یه تابع یا کلاس رو به عنوان ورودی میگیرن و یه نسخه تغییر یافته برمیگردونن. وقتی از علامت @ استفاده میکنید، پایتون به طور خودکار این کار رو انجام میده.
🔻 مراحل استفاده از دکوریتور:
تعریف دکوریتور:
دکوریتور یه تابعه که یه تابع ورودی میگیره و نسخه بهبود یافته یا تغییر یافته رو برمیگردونه.
اعمال دکوریتور:
با قرار دادن علامت @ قبل از تعریف تابع یا کلاس، دکوریتور روی اون اعمال میشه.
اجرای تابع دکوریتور:
وقتی تابع دکوریت شده فراخوانی میشه، اول تابع "بستهبندی" (wrapper) اجرا میشه و بعد تابع اصلی.
🔻 مثال دکوریتور بر روی کلاس
دکوریتورها فقط برای توابع نیستن؛ میتونن رفتار کلاسها رو هم تغییر بدن. مثلاً:
اینجا دکوریتور add_str متد str
رو به کلاس Person اضافه میکنه، بدون اینکه کد داخل کلاس رو تغییر بده.
3⃣ مزایای استفاده از دکوریتورها ✨
کنترل دقیق روی ساختار کد:
دکوریتورها به شما این امکان رو میدن تا بدون دست زدن به منطق اصلی تابع یا کلاس، رفتارشون رو تغییر بدید. این موضوع برای توسعه چارچوبهای پیچیده خیلی مفیده.
اجرای الگوهای تکراری (DRY):
میتونید کدهای تکراری مثل ثبت رویدادها، اعتبارسنجی یا مدیریت استثناها رو توی یه مکان متمرکز کنید.
گسترش قابلیتها:
به راحتی میشه قابلیتهای جدیدی به توابع یا کلاسها اضافه کرد بدون اینکه لازم باشه کد اصلی رو تغییر بدید.
4⃣ چالشهای استفاده از دکوریتورها ⚠️
درک اولیه سختتر:
برای کسانی که تازه شروع کردن، مفهوم دکوریتورها ممکنه گیجکننده باشه. برای درک کاملش نیاز به مطالعه و تمرین داره.
اشکالزدایی پیچیده:
وقتی دکوریتورها به شکل گسترده استفاده میشن، پیدا کردن مشکلات در کد ممکنه سختتر بشه، چون تغییرات به طور پنهانی در رفتار توابع اعمال میشه.
ترکیب با سایر مفاهیم:
استفاده همزمان از دکوریتورها با مفاهیم پیشرفته مثل متاکلاسها یا توابع بازگشتی میتونه باعث پیچیدگیهای اضافه بشه.
جمعبندی ✍
دکوریتورها ابزار خیلی قدرتمندی در پایتون هستن که به شما امکان میدن رفتار توابع و کلاسها رو بدون تغییر کد اصلی تغییر بدید. این قابلیت مخصوصاً توی پیادهسازی چارچوبهای پیچیده و کنترل دقیق روی ساختار کد کاربرد زیادی داره. اگرچه درک اولیهش ممکنه کمی سخت باشه، اما با تمرین و استفاده از مثالهای عملی، دکوریتورها میتونن ابزار بسیار موثری برای بهبود و انعطافپذیری کدتون باشن.
➖➖➖➖➖➖➖➖➖
سلام دوستان امروز میخوایم در مورد یکی از ویژگیهای خیلی قوی و در عین حال جذاب پایتون صحبت کنیم:
دکوریتورها. این قابلیت به شما اجازه میده تا بدون دست زدن به کد اصلی توابع یا کلاسها، رفتارشون رو تغییر بدید.
1⃣ دکوریتورها چیستند؟ 🤔
دکوریتورها در پایتون، توابع یا کلاسهایی هستن که مثل یه "بستهبندی" عمل میکنن. یعنی، شما یه تابع یا کلاس رو میگیرید، اون رو به یه دکوریتور میفرستید، دکوریتور رفتارش رو تغییر میده (یا بهبود میبخشه) و نسخه تغییر یافته رو برمیگردونه.
مثال ساده:
def simple_decorator(func):
def wrapper(*args, **kwargs):
print("قبل از اجرای تابع")
result = func(*args, **kwargs)
print("بعد از اجرای تابع")
return result
return wrapper
@simple_decorator
def greet(name):
print(f"سلام، {name}!")
greet("علی")
اینجا دکوریتور simple_decorator قبل و بعد از اجرای تابع greet پیام چاپ میکنه. یعنی بدون اینکه کد اصلی تابع رو دست بزنیم، رفتارش تغییر پیدا میکنه.
2⃣ نحوهی کارکرد دکوریتورها 🔧
🔻 دکوریتور به عنوان یک تابع
در واقع، دکوریتورها توی پایتون همون توابعی هستن که یه تابع یا کلاس رو به عنوان ورودی میگیرن و یه نسخه تغییر یافته برمیگردونن. وقتی از علامت @ استفاده میکنید، پایتون به طور خودکار این کار رو انجام میده.
🔻 مراحل استفاده از دکوریتور:
تعریف دکوریتور:
دکوریتور یه تابعه که یه تابع ورودی میگیره و نسخه بهبود یافته یا تغییر یافته رو برمیگردونه.
اعمال دکوریتور:
با قرار دادن علامت @ قبل از تعریف تابع یا کلاس، دکوریتور روی اون اعمال میشه.
اجرای تابع دکوریتور:
وقتی تابع دکوریت شده فراخوانی میشه، اول تابع "بستهبندی" (wrapper) اجرا میشه و بعد تابع اصلی.
🔻 مثال دکوریتور بر روی کلاس
دکوریتورها فقط برای توابع نیستن؛ میتونن رفتار کلاسها رو هم تغییر بدن. مثلاً:
def add_str(cls):
# افزودن یه متد برای نمایش
def __str__(self):
return f"{cls.__name__} با ویژگیها: {self.__dict__}"
cls.__str__ = __str__
return cls
@add_str
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("سارا", 28)
print(p) # خروجی: Person با ویژگیها: {'name': 'سارا', 'age': 28}
اینجا دکوریتور add_str متد str
رو به کلاس Person اضافه میکنه، بدون اینکه کد داخل کلاس رو تغییر بده.
3⃣ مزایای استفاده از دکوریتورها ✨
کنترل دقیق روی ساختار کد:
دکوریتورها به شما این امکان رو میدن تا بدون دست زدن به منطق اصلی تابع یا کلاس، رفتارشون رو تغییر بدید. این موضوع برای توسعه چارچوبهای پیچیده خیلی مفیده.
اجرای الگوهای تکراری (DRY):
میتونید کدهای تکراری مثل ثبت رویدادها، اعتبارسنجی یا مدیریت استثناها رو توی یه مکان متمرکز کنید.
گسترش قابلیتها:
به راحتی میشه قابلیتهای جدیدی به توابع یا کلاسها اضافه کرد بدون اینکه لازم باشه کد اصلی رو تغییر بدید.
4⃣ چالشهای استفاده از دکوریتورها ⚠️
درک اولیه سختتر:
برای کسانی که تازه شروع کردن، مفهوم دکوریتورها ممکنه گیجکننده باشه. برای درک کاملش نیاز به مطالعه و تمرین داره.
اشکالزدایی پیچیده:
وقتی دکوریتورها به شکل گسترده استفاده میشن، پیدا کردن مشکلات در کد ممکنه سختتر بشه، چون تغییرات به طور پنهانی در رفتار توابع اعمال میشه.
ترکیب با سایر مفاهیم:
استفاده همزمان از دکوریتورها با مفاهیم پیشرفته مثل متاکلاسها یا توابع بازگشتی میتونه باعث پیچیدگیهای اضافه بشه.
جمعبندی ✍
دکوریتورها ابزار خیلی قدرتمندی در پایتون هستن که به شما امکان میدن رفتار توابع و کلاسها رو بدون تغییر کد اصلی تغییر بدید. این قابلیت مخصوصاً توی پیادهسازی چارچوبهای پیچیده و کنترل دقیق روی ساختار کد کاربرد زیادی داره. اگرچه درک اولیهش ممکنه کمی سخت باشه، اما با تمرین و استفاده از مثالهای عملی، دکوریتورها میتونن ابزار بسیار موثری برای بهبود و انعطافپذیری کدتون باشن.
#⃣ #python #programming
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
❤14👍6👌2
خب این پست یه توضیح خلاصه و جمع و جور بود.
تو پست های بعدی وارد عمق این داستان میشیم
تو پست های بعدی وارد عمق این داستان میشیم
🔥10
Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
Cyrus: A high-performance, statically-typed, manually memory-managed and procedural programming language empowered by GCCJIT. Made with Rust 🦀.
برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با دوستاتون شیر کنید خیلی خوشحال میشیم =) ❤️🤌🏿
Community:
@cyrus_lang
GitHub:
https://github.com/cyrus-lang/Cyrus-Lang
برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با دوستاتون شیر کنید خیلی خوشحال میشیم =) ❤️🤌🏿
Community:
@cyrus_lang
GitHub:
https://github.com/cyrus-lang/Cyrus-Lang
❤15👍1
👾 Geek Engineers
Cyrus: A high-performance, statically-typed, manually memory-managed and procedural programming language empowered by GCCJIT. Made with Rust 🦀. برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با…
دوستان طاها واقعا خیلی سر این پروژه زحمت کشید به شخصه شاهدش بودم.
ازش حمایت کنید که خستگیش در بره 😊
ازش حمایت کنید که خستگیش در بره 😊
❤15
دلار ۹۰ هزار تومنی رو کجای دلمون بزاریم :)
هرچند توقعشو داشتم و احتمالا تا قبل عید ۱۰۰ تومنو رد میکنه. (مردم کاری از دستشون برنمیاد)
هرچند توقعشو داشتم و احتمالا تا قبل عید ۱۰۰ تومنو رد میکنه. (مردم کاری از دستشون برنمیاد)
💔28
سلام دوستان 👋
خب، خب، خب... همونطوری که میدونید (یا شاید هنوز نمیدونید 🌚)، همایش فرانت چپتر داره شروع میشه درسته که اسمش پیشوند "فرانت" داره، ولی خبر خوبش اینه که بچههای بکاند هم توش حضور دارن.
شخصاً کلی تعریفش رو شنیدم و به شدت پیشنهاد میکنم که شرکت کنید 🤩 (به فکر پیدا کردن کانکشن باشید بیشتر 🤫)
لینک ثبتنام ایونت 👇:
راستی، یه کد تخفیف ۱۲۳,۰۰۰ تومنی هم براتون گرفتم 😁
کد تخفیف:
Enjoy ❤️
➖➖➖➖➖➖➖➖➖
خب، خب، خب... همونطوری که میدونید (یا شاید هنوز نمیدونید 🌚)، همایش فرانت چپتر داره شروع میشه درسته که اسمش پیشوند "فرانت" داره، ولی خبر خوبش اینه که بچههای بکاند هم توش حضور دارن.
شخصاً کلی تعریفش رو شنیدم و به شدت پیشنهاد میکنم که شرکت کنید 🤩 (به فکر پیدا کردن کانکشن باشید بیشتر 🤫)
لینک ثبتنام ایونت 👇:
🔖 https://frontchapter.ir/event
راستی، یه کد تخفیف ۱۲۳,۰۰۰ تومنی هم براتون گرفتم 😁
کد تخفیف:
ninjalearn
Enjoy ❤️
#⃣ #event
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
👌4❤2👍1👎1
Ninja Learn | نینجا لرن
خب خب خب دکوریتورها (Decorators) در پایتون: تغییر رفتار توابع و کلاسها 🐍 سلام دوستان امروز میخوایم در مورد یکی از ویژگیهای خیلی قوی و در عین حال جذاب پایتون صحبت کنیم: دکوریتورها. این قابلیت به شما اجازه میده تا بدون دست زدن به کد اصلی توابع یا کلاسها،…
میریم اینو کامل تر کنیم و به جزعیات بپردازیم :)
👍9