Forwarded from کدنویس یکروزه (پدرام رحیمی)
لینک های آموزشی وردپرس
همین که بدونیم ۳۰ درصد از سایت های وب با این نرم افزار ساخته شدن کافیه که برنامه ای برای یادگیری اون داشته باشیم. بنابراین با جستجوی کلمه ی wordpress در کانال "کدنویس یکروزه" مطالب مختلف دیگه و کتاب های لازم رو و همچنین جزوه ی PHP رو دریافت کنید.
نصب وردپرس در آندروید
ساخت قالب و افزونه وردپرس
افزایش امنیت در وردپرس
ویدیوی آموزش کامل وردپرس
ساخت سریع فروشگاه در وردپرس
نصب سریع وردپرس آفلاین
#wordpress #وردپرس
همین که بدونیم ۳۰ درصد از سایت های وب با این نرم افزار ساخته شدن کافیه که برنامه ای برای یادگیری اون داشته باشیم. بنابراین با جستجوی کلمه ی wordpress در کانال "کدنویس یکروزه" مطالب مختلف دیگه و کتاب های لازم رو و همچنین جزوه ی PHP رو دریافت کنید.
نصب وردپرس در آندروید
ساخت قالب و افزونه وردپرس
افزایش امنیت در وردپرس
ویدیوی آموزش کامل وردپرس
ساخت سریع فروشگاه در وردپرس
نصب سریع وردپرس آفلاین
#wordpress #وردپرس
Forwarded from کدنویس یکروزه
گروه L L M - O P S برپانمای هوش مصنوعی
جامع ترین مرجع محتوای این علم به فارسی
👇 .:: کلیک کن ::. 👇
به نشانی : https://t.iss.one/LLM_OPS
هم آوردی خودمانی و پر نشاط از علاقمندان به
جدیدترین دستاورد فن آورانهی بشر
عضویت آزاد برای علاقمندان
و مرجعی بی نظیر از
ابـزار ها و اخبــار و آمـوزش ها
...
جامع ترین مرجع محتوای این علم به فارسی
👇 .:: کلیک کن ::. 👇
به نشانی : https://t.iss.one/LLM_OPS
هم آوردی خودمانی و پر نشاط از علاقمندان به
جدیدترین دستاورد فن آورانهی بشر
عضویت آزاد برای علاقمندان
و مرجعی بی نظیر از
ابـزار ها و اخبــار و آمـوزش ها
...
Forwarded from یه شعر (Poem Bot)
حافظ | غزلیات | غزل شمارهٔ ۱۸۹
طایر دولت اگر باز گذاری بکند
یار بازآید و با وصل قراری بکند
دیده را دستگه در و گهر گر چه نماند
بخورد خونی و تدبیر نثاری بکند
دوش گفتم بکند لعل لبش چاره من
هاتف غیب ندا داد که آری بکند
کس نیارد بر او دم زند از قصه ما
مگرش باد صبا گوش گذاری بکند
داده ام باز نظر را به تذروی پرواز
بازخواند مگرش نقش و شکاری بکند
شهر خالی ست ز عشاق بود کز طرفی
مردی از خویش برون آید و کاری بکند
کو کریمی که ز بزم طربش غم زده ای
جرعه ای درکشد و دفع خماری بکند
یا وفا یا خبر وصل تو یا مرگ رقیب
بود آیا که فلک زین دو سه کاری بکند
حافظا گر نروی از در او هم روزی
گذری بر سرت از گوشه کناری بکند
#حافظ | گنجور
📍@iipoem
طایر دولت اگر باز گذاری بکند
یار بازآید و با وصل قراری بکند
دیده را دستگه در و گهر گر چه نماند
بخورد خونی و تدبیر نثاری بکند
دوش گفتم بکند لعل لبش چاره من
هاتف غیب ندا داد که آری بکند
کس نیارد بر او دم زند از قصه ما
مگرش باد صبا گوش گذاری بکند
داده ام باز نظر را به تذروی پرواز
بازخواند مگرش نقش و شکاری بکند
شهر خالی ست ز عشاق بود کز طرفی
مردی از خویش برون آید و کاری بکند
کو کریمی که ز بزم طربش غم زده ای
جرعه ای درکشد و دفع خماری بکند
یا وفا یا خبر وصل تو یا مرگ رقیب
بود آیا که فلک زین دو سه کاری بکند
حافظا گر نروی از در او هم روزی
گذری بر سرت از گوشه کناری بکند
#حافظ | گنجور
📍@iipoem
Forwarded from Gopher Academy
🔵 عنوان مقاله
Mockery v3: Create Mock Implementations of Interfaces
🟢 خلاصه مقاله:
در این مقاله، ادعا شده است که Mockery v3 توانایی کنار زدن تمام فریمورکهای مبتنی بر رابط برنامهنویسی در محیط برنامهنویسی گو را دارد. نویسنده با بررسی ویژگیهای Mockery v3 و مقایسه آن با سایر فریمورکهای موجود، تلاش میکند تا این ادعای بزرگ را ثابت کند. همچنین، خوانندگان تشویق میشوند که برای بررسی دقیقتر و استفاده از این ابزار به صفحه اصلی آن مراجعه کنند، جایی که میتوانند اطلاعات کامل، نظرات کاربران، و دستورالعملهای دانلود را پیدا کنند.
🟣لینک مقاله:
https://golangweekly.com/link/168167/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Mockery v3: Create Mock Implementations of Interfaces
🟢 خلاصه مقاله:
در این مقاله، ادعا شده است که Mockery v3 توانایی کنار زدن تمام فریمورکهای مبتنی بر رابط برنامهنویسی در محیط برنامهنویسی گو را دارد. نویسنده با بررسی ویژگیهای Mockery v3 و مقایسه آن با سایر فریمورکهای موجود، تلاش میکند تا این ادعای بزرگ را ثابت کند. همچنین، خوانندگان تشویق میشوند که برای بررسی دقیقتر و استفاده از این ابزار به صفحه اصلی آن مراجعه کنند، جایی که میتوانند اطلاعات کامل، نظرات کاربران، و دستورالعملهای دانلود را پیدا کنند.
🟣لینک مقاله:
https://golangweekly.com/link/168167/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
topofmind.dev
Announcing Mockery v3 - Top of Mind
The last Go code generation framework you'll ever need.
Forwarded from DevTwitter | توییت برنامه نویسی
واقعاً از گشتن تو چتهای بلند با AI خسته شده بودم، امروز نشستم یه اکستنشن کروم ساختم
روی هر پیام شماره میزنه، با دو تا دکمه هم میتونی راحت بالا پایین بری
فعلاً از ChatGPT، Claude و Grok پشتیبانی میکنه
اسمش: AI Chat Scroller
https://github.com/H120/AI-Chat-Scroller
@DevTwitter | <Hossein/>
روی هر پیام شماره میزنه، با دو تا دکمه هم میتونی راحت بالا پایین بری
فعلاً از ChatGPT، Claude و Grok پشتیبانی میکنه
اسمش: AI Chat Scroller
https://github.com/H120/AI-Chat-Scroller
@DevTwitter | <Hossein/>
Forwarded from Md Daily (Mahan)
قسمت اول
داشتم رایتاپ I Thought It Was a Safe Deploy… Until Checkout Disappeared رو میخوندم نکات جالبی توش داشت. طرف مسئول بخش payments بوده. شروع میکنه به استقرار نسخه ی جدید. تست ها گرفته شده بوده و روی محیط Dev همه چی اوکی به نظر میرسید. همه چیز آروم بوده تا اینکه Slack اشون پر شده بود از پیام های: «صفحه چکاوت لود نمیشه.»، «صفحه سفیده هیچی نمیاد.» ، «اپل پِی (Apple Pay) کار نمیکنه.».
این یعنی قطعی کل فرایند پرداخت. نویسنده میگفت با اینکه قبلا راجب outage یا همون از کار افتادن ها خونده بوده ولی این اولین تجربش بوده و از همه بدتر توی محیط پروداکشن اتفاق افتاده بوده. اون لحظه هایی که آدرنالین زده بالا، سعی میکنی خودت رو آروم نشون بدی ولی مغزت داره از فکر و خیال و استرس میترکه.
دقیقا چیشده بود؟
بخش payments از اون جاهاست که وقتی همه چی مرتب و درست کار میکنه، خیلی ساکت و آروم اون پشتصحنه به کارش ادامه میده... اما وای به روزی که یه جای کارش بلنگه و یه چیزی خراب بشه؛ اونوقته که تبدیل به یه هرج و مرج میشه.
چند وقت پیش SDK مربوط به Apple Pay رو آپدیت کرده بودند چون نسخهای که داشتن استفاده میکردن، دیگه توسط خود تیم اپل پشتیبانی نمیشد و منسوخ شده بود. نسخهی جدید هم یه سری تغییرات توی API contract داشت—که بیشترش مربوط به این بود که موقع شروع کار و مقداردهی اولیه ورودیها چطوری باید بهش داده بشن. اینا هم تغییرات لازم رو انجام داده بودن، همه چی رو روی محیط توسعه تست شده بود و به نظر میرسید همه چی ردیفه. یه مدت میگذره و میبینن هشدار های تعداد خطاهای مربوط به Apple Pay یهو خیلی بالا رفته. فهمیدن که اون SDK آپدیتشده، به یه تابع خاص وابسته بود که توی بعضی از مرورگرهای قدیمیتر پشتیبانی نمیشد. نتیجهاش این بود که همون اولِ فرآیند پرداخت، یه خطای زمان اجرا اتفاق میافتاد؛ یعنی انقدر زود این خطا رخ میداد که کلاً کل تجربهی چکاوت رو از کار مینداخت. نه دیگه خبری از Apple Pay بود. نه هیچ روش پرداخت دیگهای کار میکرد. فقط یه صفحهی سفیدِ خالی جلو چشم کاربر بود.
⚠️ اول از همه: با دیباگ کردن شروع نکنید!
قبل از اینکه وارد جزئیات بشیم، یه درس خیلی مهم هست:
چون وقتی پای کد شما وسطه، مغزتون اتوماتیک میره تو این فاز که:
«خب، باگ کجاست؟ چی خراب شده؟ باید زود پیداش کنم و درستش کنم.»
ولی نکته اینجاست: دیباگ کردن زمانبره.
و در تمام مدتی که شما دارین لاگها رو زیر و رو میکنین و فرضیههای مختلف رو تست میکنین، کاربرهای واقعی اون بیرون گیر افتادن و نمیتونن کارشون رو انجام بدن.
درآمد شرکت داره کم میشه و از همه مهمتر، کاربرها دارن یه تجربهی خیلی بد رو از سر میگذرونن.
مگه اینکه دقیقاً بدونین مشکل چیه و صددرصد مطمئن باشین که راه حلش امنه و میشه خیلی سریع دیپلویاش کرد، وگرنه بهترین و عاقلانهترین کار اینه:
کامیتی که باعث مشکل شده رو برگردونین عقب (Revert). کد قبلی رو دوباره دیپلوی کنین (Redeploy). اوضاع رو پایدار کنین.
شاید این کار خیلی قهرمانانه به نظر نرسه، ولی این مسئولانهترین و درستترین کاریه که در اون لحظه میتونین انجام بدین.هدف اصلی تو اون شرایط این نیست که زیر فشار و استرس دیباگ کنین. هدف اینه که جلوی ضرر بیشتر رو بگیرین بعدش، وقتی بحران تموم شد، اون موقع با خیال راحت وقت دارین که برین و دقیق بفهمین که واقعاً چی خراب شده بود.
این ها هم دقیقا همین کارو کردن اون کامیت مشکلساز رو رولبک کردن و اون صفحهی سفید خالی غیبش زد. بخش چکاوت دوباره برگشت سر جاش. کاربرا دوباره میتونستن پرداختهاشون رو انجام بدن. حالا وقشته که کشف کرد دلیلش چی بود. شروع کردن به بررسی لاگها، تست کردن مرورگرها، و تلاش برای بازتولید مشکل تو یه محیط کنترلشده...
—-
⬅️ ادامه در قسمت بعدی
💡 تا قسمت بعدی مثل همیشه کنجکاو بمونید :)
🆔 @MdDaily
داشتم رایتاپ I Thought It Was a Safe Deploy… Until Checkout Disappeared رو میخوندم نکات جالبی توش داشت. طرف مسئول بخش payments بوده. شروع میکنه به استقرار نسخه ی جدید. تست ها گرفته شده بوده و روی محیط Dev همه چی اوکی به نظر میرسید. همه چیز آروم بوده تا اینکه Slack اشون پر شده بود از پیام های: «صفحه چکاوت لود نمیشه.»، «صفحه سفیده هیچی نمیاد.» ، «اپل پِی (Apple Pay) کار نمیکنه.».
این یعنی قطعی کل فرایند پرداخت. نویسنده میگفت با اینکه قبلا راجب outage یا همون از کار افتادن ها خونده بوده ولی این اولین تجربش بوده و از همه بدتر توی محیط پروداکشن اتفاق افتاده بوده. اون لحظه هایی که آدرنالین زده بالا، سعی میکنی خودت رو آروم نشون بدی ولی مغزت داره از فکر و خیال و استرس میترکه.
دقیقا چیشده بود؟
بخش payments از اون جاهاست که وقتی همه چی مرتب و درست کار میکنه، خیلی ساکت و آروم اون پشتصحنه به کارش ادامه میده... اما وای به روزی که یه جای کارش بلنگه و یه چیزی خراب بشه؛ اونوقته که تبدیل به یه هرج و مرج میشه.
چند وقت پیش SDK مربوط به Apple Pay رو آپدیت کرده بودند چون نسخهای که داشتن استفاده میکردن، دیگه توسط خود تیم اپل پشتیبانی نمیشد و منسوخ شده بود. نسخهی جدید هم یه سری تغییرات توی API contract داشت—که بیشترش مربوط به این بود که موقع شروع کار و مقداردهی اولیه ورودیها چطوری باید بهش داده بشن. اینا هم تغییرات لازم رو انجام داده بودن، همه چی رو روی محیط توسعه تست شده بود و به نظر میرسید همه چی ردیفه. یه مدت میگذره و میبینن هشدار های تعداد خطاهای مربوط به Apple Pay یهو خیلی بالا رفته. فهمیدن که اون SDK آپدیتشده، به یه تابع خاص وابسته بود که توی بعضی از مرورگرهای قدیمیتر پشتیبانی نمیشد. نتیجهاش این بود که همون اولِ فرآیند پرداخت، یه خطای زمان اجرا اتفاق میافتاد؛ یعنی انقدر زود این خطا رخ میداد که کلاً کل تجربهی چکاوت رو از کار مینداخت. نه دیگه خبری از Apple Pay بود. نه هیچ روش پرداخت دیگهای کار میکرد. فقط یه صفحهی سفیدِ خالی جلو چشم کاربر بود.
⚠️ اول از همه: با دیباگ کردن شروع نکنید!
قبل از اینکه وارد جزئیات بشیم، یه درس خیلی مهم هست:
وقتی با یه مشکل جدی و قطعی (outage) تو محیط پروداکشن روبرو میشین، اولین غریزهتون نباید این باشه که بپرین سراغ دیباگ کردن.
چون وقتی پای کد شما وسطه، مغزتون اتوماتیک میره تو این فاز که:
«خب، باگ کجاست؟ چی خراب شده؟ باید زود پیداش کنم و درستش کنم.»
ولی نکته اینجاست: دیباگ کردن زمانبره.
و در تمام مدتی که شما دارین لاگها رو زیر و رو میکنین و فرضیههای مختلف رو تست میکنین، کاربرهای واقعی اون بیرون گیر افتادن و نمیتونن کارشون رو انجام بدن.
درآمد شرکت داره کم میشه و از همه مهمتر، کاربرها دارن یه تجربهی خیلی بد رو از سر میگذرونن.
مگه اینکه دقیقاً بدونین مشکل چیه و صددرصد مطمئن باشین که راه حلش امنه و میشه خیلی سریع دیپلویاش کرد، وگرنه بهترین و عاقلانهترین کار اینه:
کامیتی که باعث مشکل شده رو برگردونین عقب (Revert). کد قبلی رو دوباره دیپلوی کنین (Redeploy). اوضاع رو پایدار کنین.
شاید این کار خیلی قهرمانانه به نظر نرسه، ولی این مسئولانهترین و درستترین کاریه که در اون لحظه میتونین انجام بدین.هدف اصلی تو اون شرایط این نیست که زیر فشار و استرس دیباگ کنین. هدف اینه که جلوی ضرر بیشتر رو بگیرین بعدش، وقتی بحران تموم شد، اون موقع با خیال راحت وقت دارین که برین و دقیق بفهمین که واقعاً چی خراب شده بود.
این ها هم دقیقا همین کارو کردن اون کامیت مشکلساز رو رولبک کردن و اون صفحهی سفید خالی غیبش زد. بخش چکاوت دوباره برگشت سر جاش. کاربرا دوباره میتونستن پرداختهاشون رو انجام بدن. حالا وقشته که کشف کرد دلیلش چی بود. شروع کردن به بررسی لاگها، تست کردن مرورگرها، و تلاش برای بازتولید مشکل تو یه محیط کنترلشده...
—-
🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from جامعهٔ فارسی زبان کیدیای (Sohrab)
در جدید ترین نگارش این هفته در کیدیای، تغییراتی روی میزکار و برنامههای اون صورت گرفته.
پایشگر سامانه کیدیای در نگارش ۶.۴.۰ در زبانه برنامه، برنامههایی که در پس زمینه درحال اجرا هستند رو به شما در یک گروه نشون میده بدون اینکه نیاز به تغییر زبانه داشته باشید.
@kde_fa
پایشگر سامانه کیدیای در نگارش ۶.۴.۰ در زبانه برنامه، برنامههایی که در پس زمینه درحال اجرا هستند رو به شما در یک گروه نشون میده بدون اینکه نیاز به تغییر زبانه داشته باشید.
@kde_fa
Forwarded from جامعهٔ فارسی زبان کیدیای (Sohrab)
ماژول بلوتوث در نسخه ۶.۴.۰ کیدیای این امکان رو داره تا نشون بده به چند دستگاه همزمان متصل هستید.
@kde_fa
@kde_fa
Forwarded from محتوای آزاد سهراب
جز اینکه اولین کاری که بعد از نصب اوبونتو باید کرد، نصب دبیان یا یک توزیع دیگس، ولی جدی هدف از نوشتن این دست مقالات مضحک چیه؟😂
بازش کنی کارهای ابتدایی که هرکس بعد از نصب هرچیزی میکنه، اپدیت، تنظیم داک و......
@SohrabContents
بازش کنی کارهای ابتدایی که هرکس بعد از نصب هرچیزی میکنه، اپدیت، تنظیم داک و......
@SohrabContents
Forwarded from Linuxor ?
دنبال انیمیشن Html Css برای Loading میگشتم اینو پیدا کردم توش کلی Loading های حوصله سر نبر داره از ساده بگیر تا آونگ و ماشین لباس شویی ...
cssloaders.github.io
@Linuxor
cssloaders.github.io
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
تو مراحل توسعه ایجنت، رسیدم به مرحلهای که باید با مدل کاری میکردم که بتونه کوئری بزنه و تو دیتابیس برگرده و دیتا استخراج کنه
برا همین یه دیتابیس بزرگ ساختم تا روش این کارو بکنم
تو این ریپازیتوری میتونید دیتابیس و اطلاعات کاملش رو ببینید
https://github.com/AbbasRafatpanah/ecommerce-database
@DevTwitter | <عباس رفعتپناه/>
برا همین یه دیتابیس بزرگ ساختم تا روش این کارو بکنم
تو این ریپازیتوری میتونید دیتابیس و اطلاعات کاملش رو ببینید
https://github.com/AbbasRafatpanah/ecommerce-database
@DevTwitter | <عباس رفعتپناه/>
Forwarded from Ninja Learn | نینجا لرن (Denver)
سیستم مدیریت وابستگی در FastAPI
یکی از بهترین ویژگی های FastAPI، سیستم مدیریت وابستگی(Dependnecy Injection) اون هست، این سیستم باعث میشه کد ما تمیز تر، تست پذیر تر و قابل توسعه تر بشه.
بهتره برای درک بهتر این پست درمورد Dependency Injectionرو مطالعه کنید تا با پایه و اساس این مبحث آشنا بشین.
Depends چیه؟
این کلاس توی FastAPI، برای مدیریت وابستگی ها استفاده میشه. به زبان ساده Depends یه راهه که بتونیم بک تابع یا آبجکت رو به صورت خودکار به فانکشن های دیگه تزریق کنیم بدون اینکه دستی اونارو صدا بزنیم یا بخونیم.
با یه مثال ساده شروع میکنیم:
اینجا
FastAPI به صورت خودکار
چرا این سیستم خوبه؟
وابستگی ها مدیریت شده و قابل کنترل میشن
کد تست پذیر تر میشه
ساختار پروژه ماژولار میشه
لاجیک لایه های مختلف جدا میشه و تغییرات ساده تر میشن
اگه ازش استفاده نکنیم چی؟
خب با استفاده نکردن از این ویژگی یه کمک بزرگ رو از دست میدین. به طور مثال اگه وابستگی ها تو در تو باشن شما میتونید فقط با همین ویژگی کلی به تمیزی کدتون کمک کنید.
توی مثال بالا میتونید چندین لایه از وابستگی رو ببینید که به خوبی با Depends مدیریت شدن. حالا اگه این سیستم وجود نداشت چی؟
اگه اون سیستم وجود نداشت باید قبل از هرکاری دونه دونه سرویس ها و لایه های پایین تر رو صدا میزدین و نتیجه اونهارو به همدیگه پاس میدادین. درواقع 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، سیستم مدیریت وابستگی(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 DevTwitter | توییت برنامه نویسی
من خیلی گیم نمیزنم فقط شطرنج اونم گاهی .. ولی این بازی رو الان یروزه بکوب دارم بازی میکنم! بازی یه چیزی تو سبک Colossal Cave Adventure ولی با دستورات لینوکسی!
https://github.com/phyver/GameShell
@DevTwitter | <Nik/>
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
𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Forwarded from کانال مهرداد لینوکس
🚨 Serverless کلاهبرداریه؟
✅ برخلاف اسمش، "Serverless" (بیسرور) به این معنی نیست که سروری در کار نیست. یعنی:
لازم نیست نگران مدیریت سرور باشید. همهی اون کارها (مقیاسپذیری، پچ کردن، مانیتورینگ و غیره) رو سرویسدهندهی ابری انجام میده 😎
✅چطوری کار میکنه؟
تو فقط کدی که باید اجرا بشه رو مینویسی (مثلاً یه تابع یا API کوچیک).
اونو میذاری روی یه پلتفرم Serverless (مثل GCF ، AF, AL و ...)
وقتی یه درخواست بیاد، اون تابع اجرا میشه. وقتی نیاز نباشه، هیچی اجرا نمیشه → یعنی مصرف صفر🤩.
🚨بهت گفتن Serverless یعنی بدون دردسر!
«تو فقط کدت رو بنویس؟»🤣
🧠واقعیت اینه:
اجرای توابع محدود به زمانه
کدت به یه پلتفرم خاص قفل میشه
دیباگ کردنش روانیتون میکنه (مدیونید فکر کنید الان خودم را میگم 😁)
همون کانتینر سادهتره، شفافتره، قابل کنترلتره.😅🐳
@MehrdadLinuxchannel
✅ برخلاف اسمش، "Serverless" (بیسرور) به این معنی نیست که سروری در کار نیست. یعنی:
لازم نیست نگران مدیریت سرور باشید. همهی اون کارها (مقیاسپذیری، پچ کردن، مانیتورینگ و غیره) رو سرویسدهندهی ابری انجام میده 😎
✅چطوری کار میکنه؟
تو فقط کدی که باید اجرا بشه رو مینویسی (مثلاً یه تابع یا API کوچیک).
اونو میذاری روی یه پلتفرم Serverless (مثل GCF ، AF, AL و ...)
وقتی یه درخواست بیاد، اون تابع اجرا میشه. وقتی نیاز نباشه، هیچی اجرا نمیشه → یعنی مصرف صفر🤩.
🚨بهت گفتن Serverless یعنی بدون دردسر!
«تو فقط کدت رو بنویس؟»🤣
🧠واقعیت اینه:
اجرای توابع محدود به زمانه
کدت به یه پلتفرم خاص قفل میشه
دیباگ کردنش روانیتون میکنه (مدیونید فکر کنید الان خودم را میگم 😁)
همون کانتینر سادهتره، شفافتره، قابل کنترلتره.😅🐳
به نظر من ایدهی Serverless صرف نظر محدودیتهای زمانی اجرای توابع و cold start و Stateless بودن و هزینههای پیشبینینشده بیشتر یه ترفند بازاریابیه تا یه راهحل واقعی بیدردسر.
سرور حذف نشده فقط قایمش کردن»
@MehrdadLinuxchannel
Forwarded from ASafaeirad
FINALLY!!!!
Firefox implemented the CookieStore API.
https://github.com/mdn/browser-compat-data/issues/26374
#STOP_BECOMING_THE_NEW_IE
#news
Firefox implemented the CookieStore API.
https://github.com/mdn/browser-compat-data/issues/26374
#STOP_BECOMING_THE_NEW_IE
#news
Forwarded from DevTwitter | توییت برنامه نویسی
توی صفحه پرداخت بانک پاسارگاد، اگر developer tools باز باشه و دکمه دریافت رمز پویا رو بزنید، میره حالت debugger! فکر میکردم حداقل بانکها روی سرور دیباگ نمیکنند :)) . حالا Code Review نمیکنید حداقل قبل کامیت یک دور بخونیدش.
https://pep.shaparak.ir/ThemeFiles/ServerFiles_637495792930000000/PaymentPageScript.js :1501
@DevTwitter | <Amir Ali Akbari/>
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
یکی از دوستان در یکی از جلسات تیمسازی 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
Telegram
Go Casts 🚀
جزییات دوره + تیمسازی بکند و گولنگ Go Casts
دوره و تیمسازی gocasts برای اینه که هم آموزش ببینید، هم خودتون دست به کد بشید و تجربه کسب کنید و ترس تون از کار کردن و کد زدن و مصاحبه کردن بریزه.
لینک خرید دوره + تیمسازی و جزییات سرفصل ها
https://gocasts.ir…
دوره و تیمسازی gocasts برای اینه که هم آموزش ببینید، هم خودتون دست به کد بشید و تجربه کسب کنید و ترس تون از کار کردن و کد زدن و مصاحبه کردن بریزه.
لینک خرید دوره + تیمسازی و جزییات سرفصل ها
https://gocasts.ir…