Syntax | سینتکس
رفتن به کانال در Telegram
Focus: Web Lan: Python & Go Website: https://syntaxfa.ir Quick connect: https://quick-connect.syntaxfa.ir Github: https://github.com/syntaxfa Group: https://t.me/Syntax_fa_group
نمایش بیشتر3 189
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-27 روز
+1230 روز
آرشیو پست ها
3 189
فقط من یجاش فرق داره
اگه اطلاعات یوزر اپدیت شد.
اون اکسس توکن رو با کلید «استرینگ اکسس توکن» و تایم اوت هم مقداری که یه اکسس توکن میتونه معتبر باشه ذخیره میکنم.
بعد تو هر درخواست میدلور چک میکنه اگه اکسس توکنه توی کش بود نامعتبر هستش و باید رفرش کنه
3 189
خیلی ممنون
فقط یه نکته ای میخواستم بگم
اینکه تو هر ریکوئست چک بشه آپدیت بودن توکن کاربر به نظرم بازم مفهوم و علت بوجود اومدن jwt رو زیر سوال میبره
این فرق خاصی از نظر پرفورمنس و فشار سیستم با حالت چک کردن سشن کاربر تو هر درخواست و دراوردن اطلاعات کاربر نداره
بالاخره کوئری زدی هر چقدرم سبک
حالا فرقیم نداره با ردیس چک میکنی یا مستقیم از دیتابیس میخونی
تو هر دوتا کیس داری کوئری میزنی
بنظرم jwt باید برای سیستم هایی استفاده شه عمدتا که امنیت و سطح دسترسی کاربر لازم نباشه در لحظه اعمال و چک شه
اگه استفاده شه هم همه جای سیستم کوئری نزنی دیتابیس
مثلا یجا یکی میخواد یه رکورد از جدولای کاربر رو پاک کنه
خب اوکی تو موقع پیدا کردن اون رکورد علاوه بر id اون چک میکنی userId هم داخل توکن کاربر باشه
حالا اگه این تیکه از اپ برات خیلی مهمه
کل دیتا یوزرم میگیریو چک میکنی که آیا واقعا الان میتونه ای ریسورس رو دستکاری کنه یا نه
3 189
چه محتوایی، چه سوالاتی 😁
ظاهرا خیلی هاتون منطق و رویکرد های jwt هارو درست نمیدانین ( یا درست ننوشتن و منتقل نکردن بهتون)
توکن اومد که راه حل های چند منظوره همه جانبه و سبک باشه
3 189
تو مصاحبه بک اند ممکنه بپرسن که آیا برای مایکروسرویس ها از API Gateway استفاده می کنید؟
مزیت ها و کاربرد های مختلف API
Gateway:
1. Routing کلاینت فقط به یک endpoint درخواست میزنه و Gateway درخواست رو به مایکروسرویس مربوطه میده که دیزاین کلی سیستم ساده میشه
2. Rate limiting and throttling می تونیم با اعمال Rate limiting جلوی حمله DDoS رو بگیریم و این موضوع در Gateway انجام بشه نه در هر مایکروسرویس
3. Caching می تونیم پاسخ های هر مایکروسرویس رو Cache کنیم و اگر درخواست مشابه بود همون رو برگردونیم که بار کلی سیستم کم میشه
4. Authentication and Authorization می تونیم دسترسی دادن رو یکجا انجام بدیم تا اینکه هر مایکروسرویس جداگانه اینکار رو بکنه
5. Load Balancing اگر از یک سرویس چند instance داشته باشیم می تونیم بینشون load balance کنیم
6. Monitoring می تونیم یه سری metric جمع آوری کنیم و ببینیم کدوم مایکروسرویس ها ضعیف تر عمل میکنند و reliability سیستم رو بالا ببریم
7. Transformation اگر مثلا یه سرویس SOAP قدیمی داشته باشیم که XML برمیگردونه می تونیم تبدیلش به JSON کنیم حتی میتونم داده های سرویس های مختلف رو ترکیب کنیم
8. Request and response validation اگر Schema از request و response مایکروسرویس ها داشته باشیم جایی که یک مایکروسرویس خطا خورده میتونیم متوجه بشیم و خطای مناسب برگردونیم
9. Circuit Breaker با استفاده از این الگو اگر یک مایکروسرویس مشکلی داشت می تونیم از یک مایکروسرویس جایگزین استفاده کنیم
10. Service Discovery کلاینت ها نیاز ندارن که بدونن هر مایکروسروس کجاست و با این الگو می تونیم راحت سرویس اضافه و کم کنیم
11. API Versioning Gateway می تونه از وجود چند نسخه از یک API خبر داشته باشه و دولوپر ها راحت می تونن نسخه های جدید رو توسعه بدن
12. Error Handling می تونیم خطا با فرمت یکسان تولید کنیم حتی اگر یک مایکروسرویس از دسترس خارج شده باشه
13. Service Aggregation تو این الگو به جای اینکه یک کلاینت به چند مایکروسرویس درخواست بده، Gateway پاسخ چند مایکروسرویس رو تو یک response ترکیب می کنه که بار کلی سیستم کم میشه
14. Web Application Firewall (WAF) می تونیم یک Firewall اضافه کنیم و جلوی حملاتی مثل XSS و DDoS و SQL Injection رو بگیریم
15. API Documentation می تونیم تو Gateway با یک فرمت استادندارد مثل OpenAPI یا Swagger مستندات کلی سیستم رو تولید کنیم.
این مطالب همه تئوری هستند اما با استفاده از nginx می تونید اینها رو پیاده سازی کنید
#api_gateway
@Syntax_fa
3 189
ورژن برنامه نویسی این پست:
ببین رفیق
چند ساله دیگه کسی ازت نمیپرسه چند تا زبون برنامه نویسی بلد بودی. با کدوماشون پروژه پروداکشن زدی، رو کدوماشون تعصب داشتی!
چند سال دیگه ازت میپرسن
تخصصت چیه؟ درآمدت چقدره؟ بوگاتیت چه رنگیه؟
میدونم تلخه ولی باید باهاش کنار بیای. اصلا مهم نیست پی اچ پی کد میزنی یا راست
مهم اینه کدومش تو رو به پول میرسونه
راست خوبه
گولنگ خوبه
سی شارپ بد نیست
ولی تعصب به اندازش
هدفتو دنبال کن نوب🫶
#fun
@Syntax_fa
3 189
اگه دنبال یه بات تلگرام میگردین که با استفاده از ChatGPT به سوالای اعضا جواب بده و امکان RateLimit کردن تعداد سوالای کاربرا رو هم داشته باشه، همچنین به زبان Go نوشته شده باشه کد زیر به دردتون میخوره.
https://github.com/m-ariany/telegram-gpt-bot
@Syntax_fa | @Syntax_fa_group
3 189
اصول و قواعدی که برنامه نویس ها باید بدونن
معمولا پیش میاد توی پیاده سازی پروژه های مختلف و یا حتی توسعه یک نرم افزار ساده خیلی چیز هایی که ساده هستن رو ممکنه بی دلیل بزرگ و بزرگترش کنیم و یا بیشتر کار هایی که بایستی در اسرع وقت آماده بشن رو سعی کنیم کمال گرایانه توسعه بدیم و باعث بشیم که به موقع آماده نشه.
توی کتاب مهندسی نرم افزار یه عکس شاخصی هستش که یک فردی درخواست ساخت یک تاب برای بازی می کنه ولی در عوض طرفی که قراره بسازه ممکنه چندین مدل تفکر دربارش داشته باشه که تاب چیه شهر بازی تحویلش میدیم بره حال کنه! ولی واقعیت چیز دیگه ای هستش که بایستی تا زمانی که احساس نیازی نباشه چیزی توسعه ندیم که ویژگی هایی بیش از خواسته کاربر رو برآورده کنه.
این اصول بسیار ساده هستن و گاهی توی سوالات مصاحبه هم پرسیده میشن برای همینم میشه گفت اهمیت خاصی دارن.
اصول و قواعد کلی
- YAGNI
- DRY
- KISS (Keep It Simple, Stupid)
- SoC (Separation of Concerns)
- POLA
- DIP (Dependency Inversion Principle)
- LoD (Law Of Demeter)
- TDD (Test-Driven Development)
- SOLID Principles
- CI/CD
link
@Syntax_fa
