Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from Ninja Learn | نینجا لرن (Denver)
سیستم مدیریت وابستگی در FastAPI
یکی از بهترین ویژگی های FastAPI، سیستم مدیریت وابستگی(Dependnecy Injection) اون هست، این سیستم باعث میشه کد ما تمیز تر، تست پذیر تر و قابل توسعه تر بشه.
بهتره برای درک بهتر این پست درمورد Dependency Injectionرو مطالعه کنید تا با پایه و اساس این مبحث آشنا بشین.

‏Depends چیه؟
این کلاس توی FastAPI، برای مدیریت وابستگی ها استفاده میشه. به زبان ساده Depends یه راهه که بتونیم بک تابع یا آبجکت رو به صورت خودکار به فانکشن های دیگه تزریق کنیم بدون اینکه دستی اونارو صدا بزنیم یا بخونیم.
با یه مثال ساده شروع میکنیم:
from fastapi import FastAPI, Depends

app = FastAPI()

def get_db():
db = "Database Connection"
try:
yield db
finally:
print("Closing DB connection")

@app.get("/items/")
def read_items(db = Depends(get_db)):
return {"db_connection": db}

اینجا read_items خودش مستقیم سشن دیتابیس رو نمیسازه، فقط میگه: من به یه سشن دیتابیس نیاز دارم.
‏FastAPI به صورت خودکار get_db رو صدا میزنه و نتیجه رو به db میده.

چرا این سیستم خوبه؟
وابستگی ها مدیریت شده و قابل کنترل میشن
کد تست پذیر تر میشه
ساختار پروژه ماژولار میشه
لاجیک لایه های مختلف جدا میشه و تغییرات ساده تر میشن

اگه ازش استفاده نکنیم چی؟
خب با استفاده نکردن از این ویژگی یه کمک بزرگ رو از دست میدین. به طور مثال اگه وابستگی ها تو در تو باشن شما میتونید فقط با همین ویژگی کلی به تمیزی کدتون کمک کنید.
from fastapi import Header, HTTPException, APIRouter, Depends


router = APIRouter()

def get_token(token: str = Header(...)):
return token

def get_current_user(token: str = Depends(get_token)):
user = {"username": "abolfazl", "role": "admin"}
return user

def require_admin(user: dict = Depends(get_current_user)):
if user["role"] != "admin":
raise HTTPException(status_code=403, detail="Not authorized")
return user

def list_users_service():
return [{"username": "a"}, {"username": "b"}]

@router.get("/users")
def list_users(admin_user: dict = Depends(require_admin)):
users = list_users_service()
return users

توی مثال بالا میتونید چندین لایه از وابستگی رو ببینید که به خوبی با Depends مدیریت شدن. حالا اگه این سیستم وجود نداشت چی؟
def list_users():
token = get_token()
user = get_current_user(token)
admin_user = require_admin(user)
...

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

پشت صحنه چه اتفاقی میوفته؟

‏FastAPI از بالا شروع کرد به نگاه کردن:
دید require_admin به get_current_user نیاز داره، بعد دید get_current_user هم به get_token نیاز داره، پس اول get_token اجرا شد، بعد get_current_user بعد هم require_admin. هربار خروجی یه فانکشن، ورودی فانکشن بعدی شد. درنهایت اگه مشکلی نباشه میرسیم به endpoint.

از کجا فهمید چی رو به کجا بفرسته؟

خب باید بگم که FastAPI به شدت به تایپ هینت ها وابسته است و خیلی ازشون استفاده میکنه. همین Depends هم با استفاده از تایپ هینت ها جای مقادیر رو درک میکنه. یه فانکشن توی پایین ترین لایه یه آرگومان با تایپ Header داره؟ خب Depends اون آرگومان رو توی درخواست دریافت میکنه به اون فانکشن میرسونه.

کجا ازش استفاده کنیم؟
هر وابستگی ای که نیاز داره یه پارامتری رو مستقیما از درخواست بگیره و روش پردازش انجام بده، و به نحوی قبل از فانکشن endpoint اجرا بشه و نتیجه ی آماده داشته باشه(درست همونطور که گفتم، قبل از بدنه ی اصلی فانکشن) باید با Depends استفاده بشه. مثلا گرفتن توکن از هدر یا چک کردن دسترسی ها، اتصال به دیتابیس

اما اگه فانکشنی که میخواید استفاده کنید ارتباط مستقیم با بدنه و اطلاعات ورودی از درخواست نداره و فقط برای انجام کاری یا پردازش داخلی باشه نیازی به Depends نداره. مثل ثبت نام کاربر که ممکنه دیتای خام و پردازش نشده ای از درخواست نیاز نداشته باشه و صرفا اطلاعات رو توی دیتابیس ذخیره میکنه

سعی کردم هر سوالی که برای خودم توی فرآیند این سیستم پیش اومد رو به بهترین شکل پوشش بدم. اگه مشکلی توی درک داشتین یا سوالی براتون مونده بود توی کامنت ها بپرسین.

#️⃣ #fastapi #python #backend


🥷🏻 CHANNEL | GROUP
Forwarded from Linuxor ?
یه سری سایتا مد شده که قدرت پسوردتون و زمان هک شدنش رو بهتون نشون می‌ده

البته چیزی که بهتون نشون می‌ده تا قبل از وارد کردن پسوردتون توی input اعتبار داره !


@Linuxor
Forwarded from Meitix
https://meitix.hashnode.dev

آدرس بلاگم برای مقالات فنی
من خیلی گیم نمیزنم فقط شطرنج اونم گاهی .. ولی این بازی رو الان یروزه بکوب دارم بازی میکنم! بازی یه چیزی تو سبک Colossal Cave Adventure ولی با دستورات لینوکسی!
https://github.com/phyver/GameShell

@DevTwitter | <Nik/>
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
💎 #golden_sentence


Make it work, make it right, make it fast.

اول کدی بزن که درست کار کنه، بعد کدی بزن که خوب کار کنه، بعد کدی بزن که سریع کار کنه.


Kent Beck

𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣
🚨‏ Serverless کلاه‌برداریه؟

برخلاف اسمش، "Serverless" (بی‌سرور) به این معنی نیست که سروری در کار نیست. یعنی:

لازم نیست نگران مدیریت سرور باشید. همه‌ی اون کارها (مقیاس‌پذیری، پچ کردن، مانیتورینگ و غیره) رو سرویس‌دهنده‌ی ابری انجام می‌ده 😎

چطوری کار می‌کنه؟
تو فقط کدی که باید اجرا بشه رو می‌نویسی (مثلاً یه تابع یا API کوچیک).
اونو می‌ذاری روی یه پلتفرم Serverless (مثل GCF ، AF, AL و ...)
وقتی یه درخواست بیاد، اون تابع اجرا می‌شه. وقتی نیاز نباشه، هیچی اجرا نمی‌شه → یعنی مصرف صفر🤩.

🚨بهت گفتن Serverless یعنی بدون دردسر!
«تو فقط کدت رو بنویس؟»🤣
🧠واقعیت اینه:
اجرای توابع محدود به زمانه
کدت به یه پلتفرم خاص قفل می‌شه
دیباگ کردنش روانیتون میکنه (مدیونید فکر کنید الان خودم را میگم 😁)
همون کانتینر ساده‌تره، شفاف‌تره، قابل کنترل‌تره.😅🐳

به نظر من ایده‌ی Serverless صرف نظر محدودیت‌های زمانی اجرای توابع و cold start و Stateless بودن و هزینه‌های پیش‌بینی‌نشده بیشتر یه ترفند بازاریابیه تا یه راه‌حل واقعی بی‌دردسر.
سرور حذف نشده فقط قایمش کردن»

@MehrdadLinuxchannel
Forwarded from ASafaeirad
‏توی صفحه پرداخت بانک پاسارگاد، اگر developer tools باز باشه و دکمه دریافت رمز پویا رو بزنید، می‌ره حالت debugger! فکر می‌کردم حداقل بانک‌ها روی سرور دیباگ نمی‌کنند :)) . حالا Code Review نمی‌کنید حداقل قبل کامیت یک دور بخونیدش.

https://pep.shaparak.ir/ThemeFiles/ServerFiles_637495792930000000/PaymentPageScript.js :1501

@DevTwitter | <Amir Ali Akbari/>
Forwarded from Go Casts 🚀
سرویس شما چه لودی رو میتونه تحمل کنه؟

یکی از دوستان در یکی از جلسات تیمسازی GoCasts سوالی پرسید در مورد اینکه یه grpc server آیا لود میلیون درخواست بر ثانیه (یا دقیقه) رو میتونه handle کنه؟
تلاش میکنم جوابی که به ایشون دادم رو به شکل دیگه ای اینجا بیان کنم

احتمالا تا حالا با مقالاتی از این دست روبرو شدید
How to Easily Handle 200k RPS with Golang
https://medium.com/@nikitaburov/how-to-easily-handle-200k-rps-with-golang-8b62967a01dd

پیشنهاد میکنم قبل از اینکه بخواید به این فکر کنید که http frameworkی که انتخاب می کنید آیا توانایی پاسخ به تعداد خیلی درخواست رو داره یا نه، به این فکر کنید که اپلیکیشن شما چه کاری رو داره انجام میده و کاری که انجام میشه با چه نوعی از مقیاس پذیری مواجه میشه. آیا قراره تعداد درخواست ورودی تصاعدی زیاد بشه، یا قراره حجم داده ذخیره شده تصاعدی زیاد بشه و یا مصرف منابع شما خیلی زیاد بشه؟
اصلا endpointی که شما توسعه دادید چه flowی داره و در این flow با چه سرویس های خارجی ای صحبت میکنه؟


از نظر من به شخصه سرویسی که ۵ تا ۱۰ هزار درخواست بر ثانیه رو به درستی در مدت زمان قابل قبول (بسته به نوع درخواست ممکنه ۱۰ میلی ثانیه معقول باشه یا ۱ ثانیه…) پاسخ بده، سرویس مقیاس پذیری هست. چرا؟ چون معمولا در چنین لودی ماژول های دیگه سیستم شما از جمله دیتابیس و سرویس های خارجی دیگه با چالش های جدی مواجه میشن که لازمه اول بهینه سازی های مختلفی رو به کمک الگوهای مختلف بهبود مقیاس پذیری به کار بگیرید.

در واقع چالش های واقعی مقیاس پذیری، خیلی زودتر از چیزی که فکرش رو بکنید سراغ شما و اپلیکیشن شما و سرویس های وابسته ش میاد، لازم نیست یه روزی بیاد که http server شما بتونه ۱ میلیون درخواست رو پاسخ بده که شما بخواید بقیه قسمت های سیستم رو مقیاس پذیر کنید، بلکه روند کاملا معکوس هست، احتمالا در خیلی از شرایط http server شما آخرین ماژولی از سیستم شما میشه که مشکلات مقیاس پذیری سراغش میاد.

مثلا در مقاله ای که ارسال کردم، همه چیز رو حذف کرده، صرفا یه مپ درون اپلیکیشن در نظر گرفته و سعی کرده همون رو serve کنه، قطعا موافقم که استفاده از لایه های مختلف کش از جمله کش درون برنامه خیلی به بهبود زمان پاسخگویی کمک میکنه، اما اینطور ساده سازی کردن چالش های مختلف به یک حالت ساده، واقع بینانه نیست.

نکته ای که میخوام بگم اینه که به دنبال اعداد و ارقام فضایی نباشید، و فکر نکنید که باید اون اعداد و ارقام فضایی رخ بده که شما با چالش های مقیاس پذیری روبرو بشید. اینطوری واقع بینانه تر به دنبال راه حل های جدی تری برای مقیاس پذیری سرویس تون خواهید بود تا اینکه بخواید صرفا http server یا ماژول دیگه ای از سرویس تون رو تغییر بدید.

خوشحال میشم بشنوم سرویسی که شما توسعه دادید بیشترین لودی که تحمل کرده چقدره؟



دوره +‌ تیمسازی بکند و گولنگ Go Casts
تخفیف ویژه بهار
۵۰ درصد + ۱ میلیون و ۱۰۰ هزار تومان تخفیف
کد بهار
BAHAR

خرید از سایت
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://t.iss.one/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://t.iss.one/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4


@gocasts
Forwarded from Gopher Academy
🔵 عنوان مقاله
Fuzzing Go Binaries with LibAFL

🟢 خلاصه مقاله:

سGoLibAFL یک ابزار جدید است که با استفاده از کتابخانه فازینگ LibAFL ساخته شده‌ با زبان برنامه‌نویسی Rust، تکنیک‌های پیشرفته فازینگ را در اختیار توسعه‌دهندگان زبان Go قرار می‌دهد. این مقاله GoLibAFL را با راه‌حل‌های موجود مقایسه کرده، نمونه‌هایی از کاربرد آن را نشان می‌دهد و به تفصیل در مورد چگونگی سفارشی‌سازی LibAFL برای موارد استفاده در Go بحث می‌کند. GoLibAFL امنیت و روند توسعه برنامه‌های نوشته شده به زبان Go را بهبود می‌بخشد.

🟣لینک مقاله:
https://golangweekly.com/link/168161/web


👑 @gopher_academy
یک پلاگین Expo ساختم که کمک می‌کنه مثلا رنگ‌های DatePicker اندروید رو تغییر بدین
درواقع بدون نیاز به eject کردن میتونین فایل styles.xml اندروید رو از طریق کانفیگ اکسپو تغییر بدین
برای نیاز خودم زدمش اما اگه تغییری به نظرتون میرسید بگین یا انجام بدین، مرسی
https://github.com/siavashh/expo-config-plugin-android-styles

@DevTwitter | <Siavash/>
یک نمونه از توانمندی های nextJs و VueJs
توسعه اپ دسکتاپ بورد مدیریت پروژه بر اساس روش Kanban - کاملا آفلاین و بدون نیاز به حساب کاربری!

https://github.com/kanriapp/kanri

@DevTwitter | <MJ/>
قابلیت فوق‌ العاده برای توسعه‌ دهندگان PHP و Laravel

اگه با Laravel کار می‌ کنی، احتمالا از این افزونه جدید خوشت میاد: Laravel DevTools
یه ابزار برای مرورگر Chrome که خیلی راحت و بدون دردسر اطلاعات کامل هر درخواست (request) رو نشون میده: از جمله کوئری‌ ها، ولیدیشن‌ ها، session، route، و کلی چیز دیگه
زمان اجرای درخواست‌ ها رو هم با جزئیات نشون میده
بدون نیاز به نصب debug bar یا دستکاری پروژه — فقط یه افزونه سبک و کاربردی!
اینم لینک معرفی کاملش تو Laravel News:
https://laravel-news.com/php-devtools-console

@DevTwitter | <Amirreza Jafari/>
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰درایور گرافیکی NVIDIA 575 به صورت بتا منتشر شد با قابلیت NVIDIA Smooth Motion

🔹ویژگی‌های کلیدی:
🔸 اصلاح NVIDIA Smooth Motion: برای حرکت نرم‌تر تصاویر
🔸 پشتیبانی از GLX front buffer rendering روی Xwayland
🔸 پشتیبانی از متغیر محیطی __NV_DISABLE_EXPLICIT_SYNC برای برنامه‌های GLX و Vulkan
🔸 پارامتر جدید conceal_vrr_caps برای ماژول کرنل nvidia-modeset که امکان استفاده از فناوری‌هایی مانند ULMB (Ultra Low Motion Blur)
را روی برخی نمایشگرها فراهم می‌کند.

🔹بهبودها و تعمیرات:
🔸 بهبود nvidia-powerd: پشتیبانی از Dynamic Boost حتی در حالت باتری برای لپ‌تاپ‌ها

🔹 رفع باگ‌های مهم:
🔸 مشکل کرش بازی Marvel Rivals هنگام راه‌اندازی یا لودینگ سطح
🔸 هنگ کردن برنامه‌های استفاده‌کننده از VK_KHR_present_wait روی Wayland
🔸 کرش بازی Minecraft روی Xwayland
🔸 مشکل عملکرد نادرست PRIME Render Offload هنگام استفاده از کارت‌های انویدیا هم به عنوان منبع و هم مقصد
🔸 مشکل عدم کارکردن VRR (نرخ نوسازی متغیر) هنگام Override کردن EDID

🔹سایر اصلاحات:
🔸 رفع مشکل نمایش مقادیر Default TGP و Max TGP در nvidia-settings هنگام استفاده از باتری
🔸 رفع فریز صفحه‌نمایش هنگام تغییر حالت Night Mode در GNOME روی Wayland
🔸 رفع کرش برنامه‌های render-offloaded که از KDE Frameworks 6 استفاده می‌کنند

📌نویسنده: حسین سیلانی
📌منبع :  آکادمی کندوی دانش
https://learninghive.ir
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰میز گنومGNOME 48.1 منتشر شد
پروژه GNOME امروز اولین به‌روزرسانی نگهداری سری GNOME 48 با نام "بنگلور" را منتشر کرد که شامل رفع باگ‌ها و بهبود عملکردهای موجود است.

🔹مهم‌ترین تغییرات:
- بهبود پشتیبانی HDR در Mutter:
- افزودن اعلام تغییرات فضای کاری به صفحه‌خوان (Screen Reader)
-غیرفعال کردن HDR هنگام استفاده از درایورهای قدیمی KMS
- بازگشت خودکار به حالت رنگ پیش‌فرض وقتی نمایشگر قابلیت HDR را از دست می‌دهد

🔹 به‌روزرسانی Mutter به نسخه 48.2 با رفع مشکلات:
- اصلاح باگ‌های مربوط به نشانگرهای متحرک
-رفع فریز شدن گاه‌به‌گاه صفحه‌نمایش
- مشکلات اندازه نشانگر در دستگاه‌های تبلت
- بهینه‌سازی عملکرد نشانگر هنگام تغییر تم یا اندازه

🔹 بهبودهای GNOME Shell:
- رفع مشکلات لغزنده‌ها (Sliders)
- تشخیص بهتر حالت تعلیق/بازگشت برای ردیابی زمان
- اصلاح اندازه‌های تصویر در مقیاس‌دهی کسری
- رفع فریزشدن نشانگر در حالت بزرگ‌نمایی

🔹 مدیریت فایل Nautilus
- رفع مشکل سوئیچ بین نمای درختی و شبکه‌ای
- اصلاح باگ‌های مربوط به پوشه‌های ستاره‌دار و انتخاب فایل‌های Google Drive

🔹 ماشین‌حساب GNOME:
- بهبود مدیریت نرخ ارز
- پشتیبانی از تراز متن راست‌به‌چپ برای زبان‌های RTL
- استفاده از نرخ‌های ارز میزبانی‌شده توسط GNOME به جای منابع خارجی

🔹 سایر برنامه‌ها:
- راه‌اندازی برنامه Calls به عنوان بخشی از نشست GNOME
- بهبود حالت تاریک در امتیازدهی امنیتی برنامه‌ها در GNOME Software
- پشتیبانی از ذخیره حالت expanderها در System Monitor

📌نویسنده: حسین سیلانی
📌منبع :  آکادمی کندوی دانش
https://learninghive.ir
انگار gcc 16 داره ساپورت از گنو/هرد رو روی معماری ریسک‌پنج اضافه می‌کنه.


گنو/هرد سال‌های زیادی برای معماری ۶۴ بیتی اینتل تلاش کرد (به قولی توسعه سخت) و الان هنوز پشتیبانی اون کامل نشده رفتن سراغ ریسک پنج!



@SohrabContents
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۳۱۴

در مرگ حیات اهل داد و دین است
وز مرگ روان پاک را تمکین است
آن مرگ لقاست نی جفا و کین است
نامرده همی میرد و مرگش این است

#مولانا | گنجور
📍@iipoem
Forwarded from Kamandlou
🎉 بالاخره موفق شدم مدل رو با دیتاست کارتونی که داشتم فاین‌تیون کنم!

پرامپت:
a king as a cartoonish doll with his queen

📸 تصویر سمت راست مربوط به قبل از فاین‌تیونه
📸 تصویر سمت چپ هم بعد از فاین‌تیون شدن مدله

تفاوت رو می‌تونید به‌وضوح ببینید 😉
Model: flux1-dev-Q4_K_S
GPU: RTX 3050 Ti

قطعا اگه بخوام روش کار کنم میتونی خروجی های خیلی بهتری هم بگیرم.

@MrKamandlou
🔥1
Forwarded from Kamandlou
✔️ داینامیک بودن پایتون - قسمت 3.1.0 دوره پایتون

🔗 https://youtu.be/glA1YTCdAA0 🔗

توی این قسمت بشدت کوتاه سعی کردم که خیلی خلاصه داینامیک بودن پایتون رو توضیح بدم💙



🔗 https://youtu.be/glA1YTCdAA0 🔗

پ.ن: این شوخی با اسم قسمت ها داره به جاهای باریکی کشیده میشه 😂🤦🏻‍♂️


#آموزش_پایتون #Python
#ویدیو
#یوتیوب

💙💙 @PhiloLearn💙💙