Forwarded from Ninja Learn | نینجا لرن (Denver)
خب خب خب، مدیریت تنظیمات با Pydantic⚙️
احتمالا اسم Pydantic به گوشتون خورده یا توی پروژه هاتون ازش استفاده کردین. ولی برای مدیریت تنظیمات پروژه از چی استفاده کردین؟ Pydantic یه کلاس به اسم BaseSettings ارائه میده که برای مدیریت تنظیمات برنامه از جمله متغیر های محیطی و پیش فرض ها استفاده میشه.
چرا از BaseSettings استفاده کنیم؟🧐
1️⃣ خواندن خودکار متغیر های محیطی:
با استفاده از BaseSettigns بدون نیاز به کتابخونه های اضافی مثل python-dotenv میتونیم به متغیر های محیطی دسترسی داشته باشیم.
2️⃣ اعتبارسنجی امن و خودکار متغیر ها:
Pydantic به صورت خودکار تایپ هارو چک میکنه و دیگه نیازی به type cast دستی نیست.
3️⃣ پشتیبانی ساده از چند محیط:
با یکم خلاقیت میتونیم چندین کلاس تنظیمات برای محیطهای مختلف مثل Dev, Prod و Test بسازیم.
4️⃣ مناسب برای پروژههای بزرگ:
میشه همهی تنظیمات پروژه مثل دیتابیس، کلیدهای API، حالت دیباگ و... رو توی یک کلاس متمرکز نگهداری کرد و راحت تو کل پروژه استفادهشون کرد.
ساختار پایه ی کلاس تنظیمات🔧
قبل از هر کاری مطمئن بشید که
و بعد میتونید با تعریف کلاس و تنظیماتی که نیاز دارین اونارو مدیریت کنین.
این یعنی:
مقدار debug به طور پیش فرض True هست و بقیه مقادیر باید توی فایل env. یا محیط سیستم تعریف بشن، در غیر این صورت ارور میگیریم. نکته جالب اینه که Pydantic از type cast خودکار پشتیبانی میکنه، مثلا اینجا مقدار "True" توی محیط رو به bool تبدیل میکنه.
و فایل env. باید به این شکل باشه:
نحوه ی استفاده از تنظیمات🛠
میتونیم یه نمونه از کلاس تنظیمات بسازیم و بعد با استفاده از اتریبیوت ها به تنظیمات دسترسی پیدا کنیم:
جمع بندی✍️
کلاس
توی پروژههای بزرگ یا اپلیکیشنهایی که چند محیط (مثل dev، test و prod) دارن، استفاده از این ساختار کمک میکنه کد تمیزتر و حرفهایتری داشته باشین.
➖➖➖➖➖➖➖➖➖➖
احتمالا اسم Pydantic به گوشتون خورده یا توی پروژه هاتون ازش استفاده کردین. ولی برای مدیریت تنظیمات پروژه از چی استفاده کردین؟ Pydantic یه کلاس به اسم BaseSettings ارائه میده که برای مدیریت تنظیمات برنامه از جمله متغیر های محیطی و پیش فرض ها استفاده میشه.
چرا از BaseSettings استفاده کنیم؟🧐
1️⃣ خواندن خودکار متغیر های محیطی:
با استفاده از BaseSettigns بدون نیاز به کتابخونه های اضافی مثل python-dotenv میتونیم به متغیر های محیطی دسترسی داشته باشیم.
2️⃣ اعتبارسنجی امن و خودکار متغیر ها:
Pydantic به صورت خودکار تایپ هارو چک میکنه و دیگه نیازی به type cast دستی نیست.
3️⃣ پشتیبانی ساده از چند محیط:
با یکم خلاقیت میتونیم چندین کلاس تنظیمات برای محیطهای مختلف مثل Dev, Prod و Test بسازیم.
4️⃣ مناسب برای پروژههای بزرگ:
میشه همهی تنظیمات پروژه مثل دیتابیس، کلیدهای API، حالت دیباگ و... رو توی یک کلاس متمرکز نگهداری کرد و راحت تو کل پروژه استفادهشون کرد.
ساختار پایه ی کلاس تنظیمات🔧
قبل از هر کاری مطمئن بشید که
pydantic و پکیج pydantic-settings نصب باشن:pip install pydantic pydantic-settings
و بعد میتونید با تعریف کلاس و تنظیماتی که نیاز دارین اونارو مدیریت کنین.
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file='.env', # env file location
)
debug: bool = True
database_url: str
secret_key: str
این یعنی:
مقدار debug به طور پیش فرض True هست و بقیه مقادیر باید توی فایل env. یا محیط سیستم تعریف بشن، در غیر این صورت ارور میگیریم. نکته جالب اینه که Pydantic از type cast خودکار پشتیبانی میکنه، مثلا اینجا مقدار "True" توی محیط رو به bool تبدیل میکنه.
و فایل env. باید به این شکل باشه:
DATABASE_URL=postgresql://user:pass@localhost/dbname
SECRET_KEY=s3cr3t-k3y
نحوه ی استفاده از تنظیمات🛠
میتونیم یه نمونه از کلاس تنظیمات بسازیم و بعد با استفاده از اتریبیوت ها به تنظیمات دسترسی پیدا کنیم:
settings = Settings()
print(settings.database_url)
print(settings.debug)
جمع بندی✍️
کلاس
BaseSettings یکی از ابزارهای بسیار مهم و کاربردی در Pydantic هست که به شما اجازه میده تنظیمات پروژه رو به شکل متمرکز، امن، قابل تست و قابل توسعه مدیریت کنین.توی پروژههای بزرگ یا اپلیکیشنهایی که چند محیط (مثل dev، test و prod) دارن، استفاده از این ساختار کمک میکنه کد تمیزتر و حرفهایتری داشته باشین.
#️⃣ #programming #python
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
Forwarded from DevTwitter | توییت برنامه نویسی
یکی از تمرینهایی که تو مسیر یادگیری برنامهنویسی Python انجام دادم، ساخت یک Password Generator ساده و کاربردی بود
در این پروژه:
- کاربر تعداد حروف، اعداد و سمبلها رو وارد میکنه
- رمز به صورت تصادفی تولید و سپس shuffle میشه
- با مفاهیم
هدفم تمرین و تقویت منطق برنامهنویسی و استفاده از ساختارهای پایهای پایتون بود.
سورسکد پروژه در گیتهاب:
https://github.com/Ali-golzadeh/Python-Password-Generator
@DevTwitter | <Ali Golzadeh/>
در این پروژه:
- کاربر تعداد حروف، اعداد و سمبلها رو وارد میکنه
- رمز به صورت تصادفی تولید و سپس shuffle میشه
- با مفاهیم
list, random, input, و for آشنا شدم هدفم تمرین و تقویت منطق برنامهنویسی و استفاده از ساختارهای پایهای پایتون بود.
سورسکد پروژه در گیتهاب:
https://github.com/Ali-golzadeh/Python-Password-Generator
@DevTwitter | <Ali Golzadeh/>
Forwarded from Linuxor ?
میدونستی میتونی کاری کنی که کد زدنت سریعتر بشه و دیگه لازم نباشه دستی کدتو مرتب کنی؟ Prettier دقیقاً همین کار رو میکنه. یکبار تنظیمش میکنی (مثلاً موقع ذخیره فایل، خودکار فرمت کنه) و تمام! از جاوااسکریپت و تایپاسکریپت گرفته تا CSS، HTML، JSON و حتی Markdown، کلی زبان رو پشتیبانی میکنه. یعنی یه ابزار برای همه نیازهای فرمت کردنت. مخصوصاً به درد برنامهنویسهایی میخوره که با چند تا زبان مختلف سر و کار دارن و نمیخوان برای هر کدوم یه قانون جدا تعریف کنن.
prettier.io
@Linuxor
prettier.io
@Linuxor
Forwarded from Gopher Academy
🔵 عنوان مقاله
chafa-go: Render Images in the Terminal with Chafa
🟢 خلاصه مقاله:
این مقاله به بررسی بایندینگهای زبان برنامهنویسی Go برای کتابخانهی Chafa میپردازد که از ترکیبات هوشمندانهی نمادهای یونیکد برای نمایش گرافیک در محیطهای ترمینال استفاده میکند. این کتابخانه توانایی نمایش تصاویر در محیطهایی که تنها خروجی متنی دارند را فراهم میآورد و برای استفاده در برنامههای سمت سرور یا سناریوهای اسکریپتنویسی خودکار مفید است. بایندینگهای Go با استفاده از purego ساخته شدهاند که نیاز به CGO را از بین میبرد اما نیازمند نسخهی ۱.۲۴ زبان Go میباشد. این ابزار جدید امکان ترکیب قابلیتهای مبتنی بر متن و گرافیکی را به توسعهدهندگان Go میدهد و دامنهی کاربردهای ممکن در رابطهای ترمینال را گسترش میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/169710/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
chafa-go: Render Images in the Terminal with Chafa
🟢 خلاصه مقاله:
این مقاله به بررسی بایندینگهای زبان برنامهنویسی Go برای کتابخانهی Chafa میپردازد که از ترکیبات هوشمندانهی نمادهای یونیکد برای نمایش گرافیک در محیطهای ترمینال استفاده میکند. این کتابخانه توانایی نمایش تصاویر در محیطهایی که تنها خروجی متنی دارند را فراهم میآورد و برای استفاده در برنامههای سمت سرور یا سناریوهای اسکریپتنویسی خودکار مفید است. بایندینگهای Go با استفاده از purego ساخته شدهاند که نیاز به CGO را از بین میبرد اما نیازمند نسخهی ۱.۲۴ زبان Go میباشد. این ابزار جدید امکان ترکیب قابلیتهای مبتنی بر متن و گرافیکی را به توسعهدهندگان Go میدهد و دامنهی کاربردهای ممکن در رابطهای ترمینال را گسترش میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/169710/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - ploMP4/chafa-go: Go bindings for the Chafa terminal graphics library. Render high quality images on the terminal without…
Go bindings for the Chafa terminal graphics library. Render high quality images on the terminal without CGO or external dependencies. - ploMP4/chafa-go
Forwarded from DevTwitter | توییت برنامه نویسی
آموزش میکروسرویس توی لاراول
آقای Gary Clarke نکات خیلی خوبی رو میگه داخل این دوره که دیدنش خالی از لطف نیست.
به نظرم برای هر PHP دولوپری دیدنش ضروریه
این پلیلیست رو ذخیره کنید که به دردتون میخوره
https://www.youtube.com/playlist?list=PLQH1-k79HB3_8oAmVySV3PBp869IWGpLN
@DevTwitter | <MiladNiroee/>
آقای Gary Clarke نکات خیلی خوبی رو میگه داخل این دوره که دیدنش خالی از لطف نیست.
به نظرم برای هر PHP دولوپری دیدنش ضروریه
این پلیلیست رو ذخیره کنید که به دردتون میخوره
https://www.youtube.com/playlist?list=PLQH1-k79HB3_8oAmVySV3PBp869IWGpLN
@DevTwitter | <MiladNiroee/>
Forwarded from Laravel News
Test Job Failures Precisely with Laravel's assertFailedWith Method https://laravel-news.com/assertfailedwith
Laravel News
Test Job Failures Precisely with Laravel's assertFailedWith Method - Laravel News
Laravel's assertFailedWith method enables precise testing of job failures by verifying specific exception types, messages, and error codes. This enhancement makes job testing more reliable by confirming exactly how jobs fail rather than just detecting failure…
Forwarded from Linuxor ?
گوگل یه ابزار داره به اسم zx که باهاش میشه با سینتکس جاوااسکریپت و یه wrapper بش اسکریپت بنویسید خیلی برای اسکیپت های بیلد و دیپلوی حتی استفاده روزمره خیلی خوبه
google.github.io/zx/
@Linuxor
google.github.io/zx/
@Linuxor
Forwarded from متخصص وردپرس | پوینا
افزایش چند برابری امنیت سایت
این کد برابری میکنه با نصب تمام افزونه های امنیتی
وارد wp-content وردرپرس میشید یه پوشه میسازید به اسم mu-plugins
سپس این فایل پایین رو درونش قرار میدید و جای ادرس site.com آدرس سایت خودتون میزارید
باعث میشه اگر هکر به سایت نفوذ کرد هیچ دستکاری توی کدای سایت نتونه بکنه و نتونه قالب و افزونه نصب کنه و نتونه ادرس سایت رو به هیچ عنوان تغییر بده و پرمیژن های اصلی سایت رو عوض کنه ( و دسترسی به این فایلم نداره که پاکش کنه چون از طریق mu-plugins نصب شده )
@poinair پوینا
این کد برابری میکنه با نصب تمام افزونه های امنیتی
وارد wp-content وردرپرس میشید یه پوشه میسازید به اسم mu-plugins
سپس این فایل پایین رو درونش قرار میدید و جای ادرس site.com آدرس سایت خودتون میزارید
باعث میشه اگر هکر به سایت نفوذ کرد هیچ دستکاری توی کدای سایت نتونه بکنه و نتونه قالب و افزونه نصب کنه و نتونه ادرس سایت رو به هیچ عنوان تغییر بده و پرمیژن های اصلی سایت رو عوض کنه ( و دسترسی به این فایلم نداره که پاکش کنه چون از طریق mu-plugins نصب شده )
@poinair پوینا
Forwarded from Laravel News
Efficiently remove expired cache data with Laravel Cache Evict https://laravel-news.com/laravel-cache-evict
Laravel News
Efficiently remove expired cache data with Laravel Cache Evict - Laravel News
Efficiently remove expired cache data with Laravel Cache Evict.
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from DevTwitter | توییت برنامه نویسی
یه پروژه باحال و کاربردی که با پایتون نوشتم تا به راحتی بتونی اطلاعات محصولات، قیمتها و نظرات آمازون رو خودکار جمعآوری کنی. با کمک Selenium و BeautifulSoup این کار رو سریع و دقیق انجام میده و بهت این امکان رو میده که کلی زمان توی جستجو و بررسی محصولات صرفهجویی کنی. اگه دنبال یه راه ساده و هوشمند برای اسکرپ کردن آمازون هستی، حتما یه نگاهی بنداز!
https://github.com/mehdi-jahani/amazon-scrapper
@DevTwitter | <mehdi-jahani/>
https://github.com/mehdi-jahani/amazon-scrapper
@DevTwitter | <mehdi-jahani/>
Forwarded from Linuxor ?
- آموزش لینوکس 🐧
- آموزش سی از مبتدی تا نیمه خفن ©️
- آموزش بش اسکریپت 💣
هر هفته ویدیو داریم و چیزای خوب دیگه.
دوره های لینوکس و سی استارت خوردن.
🌋 کوئیز گرفتن بعد از ویدیوها انجام میشه.
امیدوارم تایم خوبی رو با هم بگذرونیم 🚀🌋
@TCafeLinux
- آموزش سی از مبتدی تا نیمه خفن ©️
- آموزش بش اسکریپت 💣
هر هفته ویدیو داریم و چیزای خوب دیگه.
دوره های لینوکس و سی استارت خوردن.
🌋 کوئیز گرفتن بعد از ویدیوها انجام میشه.
امیدوارم تایم خوبی رو با هم بگذرونیم 🚀🌋
@TCafeLinux
Forwarded from IAAA.AI
👾 جامعترین دوره هوش مصنوعی ایران (فرصت امریه و استخدام)
📌 اگه علاقمندید هوشمصنوعی رو تخصصی یاد بگیرید و در همین حوزه مشغول به کار بشید، الان بهترین فرصته!
با شرکت در سومین دوره جایزه سالانه هوشمصنوعی ایران (iAAA) :
آموزش میبینید،
زیر نظر اساتید برجسته پروژه های واقعی رو انجام میدید و برای جایزه 50 هزار دلاری رقابت میکنید💸
🔻ویژگیهای دوره:
🔸 240 ساعت آموزش پروژه محور
🔹 ارائه مدرک از دانشگاه شریف
🔸 اساتید بینالمللی
🔸 فرصت استخدام و کارآموزی و امریه
کد تخفیف 50 درصدی: tech50
«مهلت استفاده: ۱۸ خرداد»
همین الان ثبت نام کنید:
🔗 جایزه سالانه هوش مصنوعی ایران
راههای ارتباطی:
📞 02191096992
📩 @iaaa_event
کانال اطلاع رسانی:
🆔 @iaaa_ai
📌 اگه علاقمندید هوشمصنوعی رو تخصصی یاد بگیرید و در همین حوزه مشغول به کار بشید، الان بهترین فرصته!
با شرکت در سومین دوره جایزه سالانه هوشمصنوعی ایران (iAAA) :
آموزش میبینید،
زیر نظر اساتید برجسته پروژه های واقعی رو انجام میدید و برای جایزه 50 هزار دلاری رقابت میکنید💸
🔻ویژگیهای دوره:
🔸 240 ساعت آموزش پروژه محور
🔹 ارائه مدرک از دانشگاه شریف
🔸 اساتید بینالمللی
🔸 فرصت استخدام و کارآموزی و امریه
کد تخفیف 50 درصدی: tech50
«مهلت استفاده: ۱۸ خرداد»
همین الان ثبت نام کنید:
🔗 جایزه سالانه هوش مصنوعی ایران
راههای ارتباطی:
📞 02191096992
📩 @iaaa_event
کانال اطلاع رسانی:
🆔 @iaaa_ai
Forwarded from محتوای آزاد سهراب
تلگرام یک آپدیت برگریزون دیگه داد :)))
الان دیگه مستقیماً میشه توی کانال به ادمین پیام خصوصی فرستاد، اینطوری واقعاً مزاحمت افرادی که یهویی توی پیوی ظاهر میشن و سوالات عجیب و غریب میپرسن کم میشه :))
https://telegram.org/blog/direct-to-channel-trim-voice-and-more
@SohrabContents
الان دیگه مستقیماً میشه توی کانال به ادمین پیام خصوصی فرستاد، اینطوری واقعاً مزاحمت افرادی که یهویی توی پیوی ظاهر میشن و سوالات عجیب و غریب میپرسن کم میشه :))
https://telegram.org/blog/direct-to-channel-trim-voice-and-more
@SohrabContents
Telegram
Direct Messages for Channels, Voice Trimming, Topic Tabs and HD Photos
In today's update, we add new ways for users to start conversations with their favorite channels, navigate topics more efficiently, trim voice messages before sending, send photos in higher quality -- and more.
Forwarded from Linuxor ?
با Segment Anything میتونید اشیاء رو از توی عکس ها تشخیص بدید جالبترین بخشش به نظرم قابلیت Zero-shot اونه. یعنی مدل بدون اینکه از قبل نمونههای اون شیء خاص رو دیده باشه، میتونه اونو تو تصویر تشخیص بده و جدا کنه. این فرق بزرگی با مدلهای قدیمیه که باید برای هر کلاس جدیدی از اشیاء، کلی داده و آموزش جدید بهشون میدادی. این انعطافپذیری برای کاربردهای خلاقانه یا تحلیل دادههای تصویری خیلی متنوع، فوقالعاده است.
github.com/facebookresearch/segment-anything
@Linuxor
github.com/facebookresearch/segment-anything
@Linuxor
Forwarded from IRCF | اینترنت آزاد برای همه
اگر از #warpPlus، #oblivion یا #oblivionDesktop استفاده میکنین و چندروزی هست که برای اتصال روی بعضیاز سرویسدهندهها به مشکل برخوردین، منتظر بروزرسانی جدید بمونین.
نیازی نیست دلیل بروز مشکل رو تشریح کنم و حدس زدنش کار سختی نیست! ولی وارپپلاس رو دارن آپدیت میکنن و هرموقع بروزرسانی اومد، ابلیویون و ابلیویون دسکتاپ هم آپدیت میشن.
🔍 ircf.space
@ircfspace
نیازی نیست دلیل بروز مشکل رو تشریح کنم و حدس زدنش کار سختی نیست! ولی وارپپلاس رو دارن آپدیت میکنن و هرموقع بروزرسانی اومد، ابلیویون و ابلیویون دسکتاپ هم آپدیت میشن.
🔍 ircf.space
@ircfspace
Forwarded from DevTwitter | توییت برنامه نویسی
بررسی سورس کد صرافی ViaBTC
تو این قسمت سورس کد انجین معاملاتی یک صرافی کریپتو یا همون هسته اصلی معاملات اسپات رو با هم بررسی میکنیم. راجب معماری این سیستم و دیزاین پترن ها و دیتا استراکچر هایی که استفاده کردن حرف میزنیم. پرفورمنس کلیدی ترین مشخصه یه سیستم معاملاتی دیجیتاله و میخوایم ببینیم تو این سورس کد چجوری به این پرفورمنس دست پیدا کردن.
لینک یوتیوب
https://www.youtube.com/watch?v=9F9M_1YGxHA
@DevTwitter | <ًRouzbeh/>
تو این قسمت سورس کد انجین معاملاتی یک صرافی کریپتو یا همون هسته اصلی معاملات اسپات رو با هم بررسی میکنیم. راجب معماری این سیستم و دیزاین پترن ها و دیتا استراکچر هایی که استفاده کردن حرف میزنیم. پرفورمنس کلیدی ترین مشخصه یه سیستم معاملاتی دیجیتاله و میخوایم ببینیم تو این سورس کد چجوری به این پرفورمنس دست پیدا کردن.
لینک یوتیوب
https://www.youtube.com/watch?v=9F9M_1YGxHA
@DevTwitter | <ًRouzbeh/>
Forwarded from Geek Alerts
تلگرام در بروزرسانی جدیدش، قابلیتی به اسم Direct Message رو به چنلها اضافه کرده تا ادمینها بتونن از طرف دنبالکنندههای کانال پیام دریافت کنن. اینطور که با فعالسازی این قابلیت(میشه براش پرداخت ستاره هم به عنوان هزینه فعال کرد)، یک گروه جدا برای ادمینها ساخته میشه، ادمینها میتونن به طور ناشناس به پیامهای کاربران جواب بدن.
🤓 hadi @geekalerts
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevDrug
بررسی سورس کد صرافی ViaBTC
تو این قسمت سورس کد انجین معاملاتی یک صرافی کریپتو یا همون هسته اصلی معاملات اسپات رو با هم بررسی میکنیم. راجب معماری این سیستم و دیزاین پترن ها و دیتا استراکچر هایی که استفاده کردن حرف میزنیم. پرفورمنس کلیدی ترین مشخصه یه سیستم معاملاتی دیجیتاله و میخوایم ببینیم تو این سورس کد چجوری به این پرفورمنس دست پیدا کردن.
لینک یوتیوب 👇
https://www.youtube.com/watch?v=9F9M_1YGxHA
تو این قسمت سورس کد انجین معاملاتی یک صرافی کریپتو یا همون هسته اصلی معاملات اسپات رو با هم بررسی میکنیم. راجب معماری این سیستم و دیزاین پترن ها و دیتا استراکچر هایی که استفاده کردن حرف میزنیم. پرفورمنس کلیدی ترین مشخصه یه سیستم معاملاتی دیجیتاله و میخوایم ببینیم تو این سورس کد چجوری به این پرفورمنس دست پیدا کردن.
لینک یوتیوب 👇
https://www.youtube.com/watch?v=9F9M_1YGxHA
YouTube
Code Review | بررسی سورس کد صرافی ViaBTC
تو این قسمت سورس کد انجین معاملاتی یک صرافی کریپتو یا همون هسته اصلی معاملات اسپات رو با هم بررسی میکنیم. راجب معماری این سیستم و دیزاین پترن ها و دیتا استراکچر هایی که استفاده کردن حرف میزنیم. پرفورمنس کلیدی ترین مشخصه یه سیستم معاملاتی دیجیتاله و میخوایم…