Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 قطعی گسترده اینترنت در روسیه
کاربران اینترنت در سراسر روسیه از اختلالات گسترده ای خبر داده اند که بر شرکت های مخابراتی و پلتفرم های آنلاین تأثیر می گذارد.
به گفته سایت مانیتورینگ Downdetector، این قطعی ها بر شرکت های Beeline، Megafon، MTS، Rostelecom و Tele2 تأثیر گذاشته است.
کاربران همچنین مشکلاتی را در دسترسی به تلگرام، تیک تاک، گوگل، یوتیوب، استیم و توییچ گزارش کرده اند.
علت اصلی قطعی اینترنت روسیه خرابی سیستم توزیع DNS توسط زیرساخت جهانی DNSSEC است.
#خبر
@TheRaymondDev
کاربران اینترنت در سراسر روسیه از اختلالات گسترده ای خبر داده اند که بر شرکت های مخابراتی و پلتفرم های آنلاین تأثیر می گذارد.
به گفته سایت مانیتورینگ Downdetector، این قطعی ها بر شرکت های Beeline، Megafon، MTS، Rostelecom و Tele2 تأثیر گذاشته است.
کاربران همچنین مشکلاتی را در دسترسی به تلگرام، تیک تاک، گوگل، یوتیوب، استیم و توییچ گزارش کرده اند.
علت اصلی قطعی اینترنت روسیه خرابی سیستم توزیع DNS توسط زیرساخت جهانی DNSSEC است.
#خبر
@TheRaymondDev
Детектор Сбоев DETECTOR404
Не работает сайт или приложение? Детектор сбоев | DownDetector
В России не работает сайт или приложение? DownDetector - Детектор сбоев сайтов и сервисов. Мониторинг работоспособности - проверьте работу приложения или сайт!
Forwarded from Ninja Learn | نینجا لرن
💎 پروکسی (proxy) چیه و به چه دردی میخوره 💎
امروز میخوایم راجع به یه موضوع خیلی پرکاربرد و مهم حرف بزنیم: پروکسی (Proxy).
شاید براتون سوال باشه که پروکسی چیه و دقیقاً چه کاری انجام میده؟ 🤔
بیاید باهم بیشتر بررسی کنیم.
پروکسی یعنی چی؟ 🤷♂️
پروکسی یه نوع واسطهست که بین دستگاه شما (مثلاً کامپیوتر یا موبایلتون) و اینترنت قرار میگیره. وقتی از پروکسی استفاده میکنید، درخواستهاتون (مثل وقتی یه سایت رو باز میکنید) اول به سرور پروکسی میره و بعد از اونجا به مقصد اصلی (یعنی همون سایت) فرستاده میشه. به همین خاطر، سایت مقصد هیچوقت نمیفهمه شما دقیقاً از کجا بهش وصل شدید، چون فقط آیپی سرور پروکسی رو میبینه 😎
پروکسی چه کاربردهایی داره؟ 🤓
دور زدن محدودیتها 🚫:
یکی از معروفترین کاربردهای پروکسی اینه که میتونید باهاش فیلترها و محدودیتهای اینترنتی رو دور بزنید. مثلاً اگه سایتی تو کشور ما فیلتر باشه، ( که ماشالله همه چی فیلتره) میتونید با استفاده از یه پروکسی از کشوری دیگه به اون سایت دسترسی پیدا کنید.
مخفی کردن هویت شما 👻:
همونطور که گفتم، وقتی از پروکسی استفاده میکنید، آیپی شما مخفی میشه و سایت مقصد آیپی پروکسی رو میبینه. این یعنی میتونید تو اینترنت ناشناستر بچرخید و حریم خصوصیتون رو حفظ کنید.
افزایش امنیت 🔒:
بعضی پروکسیها با استفاده از پروتکلهای امنیتی مثل HTTPS، اطلاعات شما رو رمزنگاری میکنن تا هکرها و جاسوسها نتونن به راحتی به دادههاتون دسترسی پیدا کنن.
مدیریت پهنای باند 📊:
توی شبکههای بزرگ (مثلاً تو شرکتها)، مدیران شبکه میتونن از پروکسی برای مدیریت پهنای باند استفاده کنن. اینطوری میتونن ترافیک اینترنت رو کنترل کنن و استفاده از منابع رو بهینه کنن.
انواع پروکسی 🌐
HTTP Proxy:
این نوع پروکسی فقط درخواستهای HTTP رو هندل میکنه. یعنی وقتی شما یه سایت رو با مرورگر باز میکنید، درخواست شما از طریق این پروکسی عبور میکنه. اما این نوع پروکسی نمیتونه درخواستهای
غیر HTTP (مثلاً FTP) رو پشتیبانی کنه.
SOCKS Proxy 🧦:
این یکی از همه خفن تره و تقریباً هر نوع ترافیکی رو پشتیبانی میکنه. میتونید ازش برای ارسال ایمیل، دانلود فایل یا حتی بازیهای آنلاین استفاده کنید. اما باید بدونید که SOCKS پروکسی بهخودیخود اطلاعات رو رمزنگاری نمیکنه و فقط ترافیک رو هدایت میکنه.
Transparent Proxy (پروکسی شفاف) 🛠️:
این نوع پروکسی بدون اینکه شما متوجه بشید، درخواستهاتون رو هدایت میکنه. معمولاً مدیران شبکه یا ارائهدهندگان اینترنت از این نوع پروکسی استفاده میکنن تا ترافیک رو مانیتور یا فیلتر کنن.
Reverse Proxy (پروکسی معکوس) 🔄:
این نوع پروکسی برعکس بقیهست. یعنی به جای اینکه درخواستهای شما رو به اینترنت بفرسته، درخواستهای اینترنت رو به سرورهای داخلی هدایت میکنه. معمولاً برای توزیع بار سرور یا افزایش امنیت سرورها از این مدل استفاده میشه.
مزایا و معایب پروکسی 💡❌
مزایا ✅:
مخفی کردن هویت و آیپی شما
دور زدن محدودیتها و فیلترینگ
مدیریت بهتر پهنای باند تو شبکهها
افزایش امنیت و حفظ حریم خصوصی
معایب ⭕:
بعضی از پروکسیها اطلاعات رو رمزنگاری نمیکنن، پس همچنان امکان لو رفتن اطلاعات وجود داره.
پروکسیهای رایگان معمولاً سرعت پایینی دارن و قابل اعتماد نیستن.
اگه درست تنظیم نشن، میتونن باعث کاهش کارایی و سرعت اینترنت بشن.
جمعبندی 🎯
در کل، پروکسی یه ابزار خیلی کاربردیه که میتونه به شما کمک کنه به اینترنت آزادتر دسترسی داشته باشید، هویتتون رو مخفی کنید و امنیتتون رو افزایش بدید. ولی باید همیشه حواستون باشه که از پروکسی مطمئن و ایمن استفاده کنید، مخصوصاً اگه به حریم خصوصی و امنیتتون اهمیت میدید.
امید وارم این پست براتون مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم راجع به یه موضوع خیلی پرکاربرد و مهم حرف بزنیم: پروکسی (Proxy).
شاید براتون سوال باشه که پروکسی چیه و دقیقاً چه کاری انجام میده؟ 🤔
بیاید باهم بیشتر بررسی کنیم.
پروکسی یعنی چی؟ 🤷♂️
پروکسی یه نوع واسطهست که بین دستگاه شما (مثلاً کامپیوتر یا موبایلتون) و اینترنت قرار میگیره. وقتی از پروکسی استفاده میکنید، درخواستهاتون (مثل وقتی یه سایت رو باز میکنید) اول به سرور پروکسی میره و بعد از اونجا به مقصد اصلی (یعنی همون سایت) فرستاده میشه. به همین خاطر، سایت مقصد هیچوقت نمیفهمه شما دقیقاً از کجا بهش وصل شدید، چون فقط آیپی سرور پروکسی رو میبینه 😎
پروکسی چه کاربردهایی داره؟ 🤓
دور زدن محدودیتها 🚫:
یکی از معروفترین کاربردهای پروکسی اینه که میتونید باهاش فیلترها و محدودیتهای اینترنتی رو دور بزنید. مثلاً اگه سایتی تو کشور ما فیلتر باشه، ( که ماشالله همه چی فیلتره) میتونید با استفاده از یه پروکسی از کشوری دیگه به اون سایت دسترسی پیدا کنید.
مخفی کردن هویت شما 👻:
همونطور که گفتم، وقتی از پروکسی استفاده میکنید، آیپی شما مخفی میشه و سایت مقصد آیپی پروکسی رو میبینه. این یعنی میتونید تو اینترنت ناشناستر بچرخید و حریم خصوصیتون رو حفظ کنید.
افزایش امنیت 🔒:
بعضی پروکسیها با استفاده از پروتکلهای امنیتی مثل HTTPS، اطلاعات شما رو رمزنگاری میکنن تا هکرها و جاسوسها نتونن به راحتی به دادههاتون دسترسی پیدا کنن.
مدیریت پهنای باند 📊:
توی شبکههای بزرگ (مثلاً تو شرکتها)، مدیران شبکه میتونن از پروکسی برای مدیریت پهنای باند استفاده کنن. اینطوری میتونن ترافیک اینترنت رو کنترل کنن و استفاده از منابع رو بهینه کنن.
انواع پروکسی 🌐
HTTP Proxy:
این نوع پروکسی فقط درخواستهای HTTP رو هندل میکنه. یعنی وقتی شما یه سایت رو با مرورگر باز میکنید، درخواست شما از طریق این پروکسی عبور میکنه. اما این نوع پروکسی نمیتونه درخواستهای
غیر HTTP (مثلاً FTP) رو پشتیبانی کنه.
SOCKS Proxy 🧦:
این یکی از همه خفن تره و تقریباً هر نوع ترافیکی رو پشتیبانی میکنه. میتونید ازش برای ارسال ایمیل، دانلود فایل یا حتی بازیهای آنلاین استفاده کنید. اما باید بدونید که SOCKS پروکسی بهخودیخود اطلاعات رو رمزنگاری نمیکنه و فقط ترافیک رو هدایت میکنه.
Transparent Proxy (پروکسی شفاف) 🛠️:
این نوع پروکسی بدون اینکه شما متوجه بشید، درخواستهاتون رو هدایت میکنه. معمولاً مدیران شبکه یا ارائهدهندگان اینترنت از این نوع پروکسی استفاده میکنن تا ترافیک رو مانیتور یا فیلتر کنن.
Reverse Proxy (پروکسی معکوس) 🔄:
این نوع پروکسی برعکس بقیهست. یعنی به جای اینکه درخواستهای شما رو به اینترنت بفرسته، درخواستهای اینترنت رو به سرورهای داخلی هدایت میکنه. معمولاً برای توزیع بار سرور یا افزایش امنیت سرورها از این مدل استفاده میشه.
مزایا و معایب پروکسی 💡❌
مزایا ✅:
مخفی کردن هویت و آیپی شما
دور زدن محدودیتها و فیلترینگ
مدیریت بهتر پهنای باند تو شبکهها
افزایش امنیت و حفظ حریم خصوصی
معایب ⭕:
بعضی از پروکسیها اطلاعات رو رمزنگاری نمیکنن، پس همچنان امکان لو رفتن اطلاعات وجود داره.
پروکسیهای رایگان معمولاً سرعت پایینی دارن و قابل اعتماد نیستن.
اگه درست تنظیم نشن، میتونن باعث کاهش کارایی و سرعت اینترنت بشن.
جمعبندی 🎯
در کل، پروکسی یه ابزار خیلی کاربردیه که میتونه به شما کمک کنه به اینترنت آزادتر دسترسی داشته باشید، هویتتون رو مخفی کنید و امنیتتون رو افزایش بدید. ولی باید همیشه حواستون باشه که از پروکسی مطمئن و ایمن استفاده کنید، مخصوصاً اگه به حریم خصوصی و امنیتتون اهمیت میدید.
#Proxy #پروکسی #حریم_خصوصی #امنیت #اینترنت #فیلترشکن #network
Forwarded from Ninja Learn | نینجا لرن
📕 کتاب REST API Design Rulebook
📌 فصل دوم: Identifier Design with URIs
📍پارت: سوم
#book
💎 Document 💎
یک سند مثل یه مفهوم singular هست که شبیه یه instance از یه آبجکت یا رکورد توی دیتابیسه.
معمولاً یه سند شامل چند تا فیلد با مقادیر مشخص و یه سری لینک به منابع دیگهست.
با توجه به اینکه ساختارش بر اساس فیلد و لینکهاست، نوع سند مثل پایه و اساس بقیه منابع حساب میشه. یعنی اون سه نوع منبع دیگه رو میشه نوع خاصی از همین سند دونست.
این URIها هر کدوم یه منبع سند رو نشون میدن:
یه سند ممکنه منابع فرعی داشته باشه که زیرمجموعههای خاصش رو نشون میدن.
چون میتونه چندین نوع منبع مختلف رو زیر یه والد قرار بده، سند گزینه مناسبی برای منبع اصلی یه REST API (که بهش "docroot" هم میگن) محسوب میشه.
اینم یه مثال از URI که docroot رو نشون میده و همون اندپوینت API فوتباله:
💎 Collection 💎
یک مجموعه (Collection) مثل یه دایرکتوریه که سرور اون رو مدیریت میکنه و شامل یه سری منابعه.
کلاینتها میتونن پیشنهاد بدن که منابع جدید به مجموعه اضافه بشن، ولی در نهایت این خود مجموعهست که تصمیم میگیره یه منبع جدید بسازه یا نه. مجموعه خودش انتخاب میکنه چی رو توی خودش نگه داره و همچنین URI (آدرس) هر منبعی که داخلش هست رو هم خودش تعیین میکنه.
هر کدوم از URIهای زیر یه مجموعه (Collection) رو نشون میده:
💎 Store 💎
یک Store منبعیه که توسط کلاینت مدیریت میشه. Store به کلاینت API این امکان رو میده که منابع رو داخلش بذاره، دوباره اونها رو بیرون بیاره، و تصمیم بگیره کی اونها رو حذف کنه. خود Store منابع جدید نمیسازه، بنابراین هیچ وقت URI جدید ایجاد نمیکنه. در عوض، هر منبعی که داخل مخزن گذاشته میشه، URI داره که کلاینت موقع اضافه کردنش انتخاب کرده.
تعامل زیر یه مثال از کاربر (با شناسه 1234) در یه برنامه کلاینت رو نشون میده که از یه API فرضی فوتبال استفاده میکنه تا یه سند به اسم «آلونزو» رو توی مخزن علاقهمندیهای خودش قرار بده:
💎 Controller 💎
کنترلر یه مفهوم رویهای (procedural) رو مدلسازی میکنه. کنترلرها شبیه به توابع اجرایی هستن که ورودی و خروجی دارن و پارامترها و مقادیر برگشتی رو مدیریت میکنن. مثل فرمهای HTML در وب اپلیکیشنهای سنتی، یک REST API هم از منابع کنترلر استفاده میکنه تا کارهایی انجام بده که بهطور منطقی به یکی از متد های استاندارد (Create، Retrieve، Update و Delete، که بهشون CRUD میگن) مربوط نمیشن.
معمولاً اسمهای کنترلر بهعنوان آخرین قسمت تو مسیر URI ظاهر میشن و بعد از اونها هیچ منبع فرعی دیگهای توی سلسلهمراتب نیست. مثال زیر یه کنترلر رو نشون میده که به کلاینت اجازه میده یه هشدار رو دوباره برای کاربر بفرسته:
@ninja_learn_ir
📌 فصل دوم: Identifier Design with URIs
📍پارت: سوم
#book
💎 Document 💎
یک سند مثل یه مفهوم singular هست که شبیه یه instance از یه آبجکت یا رکورد توی دیتابیسه.
معمولاً یه سند شامل چند تا فیلد با مقادیر مشخص و یه سری لینک به منابع دیگهست.
با توجه به اینکه ساختارش بر اساس فیلد و لینکهاست، نوع سند مثل پایه و اساس بقیه منابع حساب میشه. یعنی اون سه نوع منبع دیگه رو میشه نوع خاصی از همین سند دونست.
این URIها هر کدوم یه منبع سند رو نشون میدن:
http://api.soccer.restapi.org/leagues/seattle
http://api.soccer.restapi.org/leagues/seattle/teams/trebuchet
http://api.soccer.restapi.org/leagues/seattle/teams/trebuchet/players/mike
یه سند ممکنه منابع فرعی داشته باشه که زیرمجموعههای خاصش رو نشون میدن.
چون میتونه چندین نوع منبع مختلف رو زیر یه والد قرار بده، سند گزینه مناسبی برای منبع اصلی یه REST API (که بهش "docroot" هم میگن) محسوب میشه.
اینم یه مثال از URI که docroot رو نشون میده و همون اندپوینت API فوتباله:
http://api.soccer.restapi.org
💎 Collection 💎
یک مجموعه (Collection) مثل یه دایرکتوریه که سرور اون رو مدیریت میکنه و شامل یه سری منابعه.
کلاینتها میتونن پیشنهاد بدن که منابع جدید به مجموعه اضافه بشن، ولی در نهایت این خود مجموعهست که تصمیم میگیره یه منبع جدید بسازه یا نه. مجموعه خودش انتخاب میکنه چی رو توی خودش نگه داره و همچنین URI (آدرس) هر منبعی که داخلش هست رو هم خودش تعیین میکنه.
هر کدوم از URIهای زیر یه مجموعه (Collection) رو نشون میده:
http://api.soccer.restapi.org/leagues
http://api.soccer.restapi.org/leagues/seattle/teams
http://api.soccer.restapi.org/leagues/seattle/teams/trebuchet/players
💎 Store 💎
یک Store منبعیه که توسط کلاینت مدیریت میشه. Store به کلاینت API این امکان رو میده که منابع رو داخلش بذاره، دوباره اونها رو بیرون بیاره، و تصمیم بگیره کی اونها رو حذف کنه. خود Store منابع جدید نمیسازه، بنابراین هیچ وقت URI جدید ایجاد نمیکنه. در عوض، هر منبعی که داخل مخزن گذاشته میشه، URI داره که کلاینت موقع اضافه کردنش انتخاب کرده.
تعامل زیر یه مثال از کاربر (با شناسه 1234) در یه برنامه کلاینت رو نشون میده که از یه API فرضی فوتبال استفاده میکنه تا یه سند به اسم «آلونزو» رو توی مخزن علاقهمندیهای خودش قرار بده:
PUT /users/1234/favorites/alonso
💎 Controller 💎
کنترلر یه مفهوم رویهای (procedural) رو مدلسازی میکنه. کنترلرها شبیه به توابع اجرایی هستن که ورودی و خروجی دارن و پارامترها و مقادیر برگشتی رو مدیریت میکنن. مثل فرمهای HTML در وب اپلیکیشنهای سنتی، یک REST API هم از منابع کنترلر استفاده میکنه تا کارهایی انجام بده که بهطور منطقی به یکی از متد های استاندارد (Create، Retrieve، Update و Delete، که بهشون CRUD میگن) مربوط نمیشن.
معمولاً اسمهای کنترلر بهعنوان آخرین قسمت تو مسیر URI ظاهر میشن و بعد از اونها هیچ منبع فرعی دیگهای توی سلسلهمراتب نیست. مثال زیر یه کنترلر رو نشون میده که به کلاینت اجازه میده یه هشدار رو دوباره برای کاربر بفرسته:
POST /alerts/245743/resend
@ninja_learn_ir
Forwarded from Ninja Learn | نینجا لرن
💎 مشکل همزمانی یا همون Concurrency Problem 💎
امروز میخوایم یه موضوع خیلی مهم و جذاب رو با هم موشکافی کنیم:
مشکل همزمانی یا همون Concurrency Problem 🤓 شاید اسمش به گوشتون خورده باشه، ولی اگه دقیقتر بشناسیدش، میفهمید که چرا این موضوع اینقدر تو دنیای برنامهنویسی مهمه.
همزمانی یعنی چی؟ 🤔
اول از همه، بگم که وقتی از همزمانی حرف میزنیم، داریم در مورد اجرای چند تا کار بهصورت همزمان تو یه برنامه صحبت میکنیم. مثلاً فرض کنید یه برنامه دارید که داره همزمان چند تا درخواست کاربر رو مدیریت میکنه، یا داره یه سری عملیاتهای محاسباتی سنگین رو انجام میده. اینجاست که مفهوم همزمانی مطرح میشه. هدف همزمانی اینه که بتونیم از منابع سیستم بهینهتر استفاده کنیم و سرعت اجرای برنامه رو بالا ببریم 🚀
مشکل از کجا شروع میشه؟ 😬
مشکل وقتی پیش میاد که چند تا ترد (Thread) یا پردازش (Process) به یه منبع مشترک دسترسی پیدا میکنن. مثلاً فرض کنید دو تا ترد همزمان دارن یه متغیر رو آپدیت میکنن. اینجاست که ممکنه مقدار نهایی اون متغیر چیزی که انتظار داشتیم نباشه و این یعنی Race Condition 🏁
مثال عملی Race Condition 🛠️
فرض کنید یه اپلیکیشن بانکی دارید که باید موجودی حساب کاربر رو مدیریت کنه. حالا دو تا ترد مختلف میخوان همزمان این موجودی رو آپدیت کنن. مثلاً یه ترد داره پول به حساب اضافه میکنه و ترد دیگه داره از حساب برداشت میکنه. اگه این دو تا ترد همزمان و بدون هماهنگی دقیق اجرا بشن، ممکنه موجودی حساب بهطور نادرست محاسبه بشه 😱 این اتفاق دقیقاً مثالی از Race Condition هست.
راهحلها چی هستن؟ 🔧
خب حالا که مشکل رو فهمیدیم، بیایید ببینیم چجوری میتونیم جلوی این مشکلات رو بگیریم:
1️⃣ Locks (قفلها) 🛡️:
یه راهحل معمول استفاده از قفلهاست. وقتی یه ترد میخواد به یه منبع مشترک دسترسی پیدا کنه، اول اون رو قفل میکنه. اینجوری بقیه تردها باید صبر کنن تا اون ترد کارش رو تموم کنه و قفل رو آزاد کنه. این کار میتونه از بههمریختگی جلوگیری کنه، ولی خودش یه چالش دیگه به نام Deadlock ایجاد میکنه، جایی که دو یا چند ترد منتظر قفلهای همدیگه هستن و هیچکدوم نمیتونن کارشون رو پیش ببرن 😩
2️⃣ Atomic Operations (عملیات اتمی) 💥:
این عملیاتها طوری طراحی شدن که یا کامل انجام میشن یا اصلاً انجام نمیشن. یعنی وسطشون هیچ ترد دیگهای نمیتونه دخالت کنه. مثلاً اضافه کردن یه مقدار به یه متغیر میتونه یه عملیات اتمی باشه.
3️⃣ Synchronization (همگامسازی) ⏰:
با همگامسازی میتونید مطمئن بشید که یه ترد قبل از اینکه ترد دیگه کارش تموم بشه، کاری رو شروع نکنه. این کار معمولاً با استفاده از دستوراتی مثل synchronized در جاوا یا پایتون انجام میشه.
4️⃣ Thread Pools (مجموعه تردها) 🏊:
استفاده از Thread Poolها میتونه به مدیریت بهتر تردها کمک کنه. اینجوری تعداد تردها محدود میشه و از مشکلاتی مثل Overhead جلوگیری میکنید.
مشکلات ناشی از راهحلها 🤯
حالا که از راهحلها گفتیم، یه نکته خیلی مهم رو هم باید اضافه کنم: همه این روشها مشکلات خودشون رو دارن. مثلاً استفاده زیاد از قفلها میتونه کارایی برنامه رو کاهش بده، چون تردها باید منتظر بمونن تا قفل آزاد بشه. از طرف دیگه، اگه قفلها رو درست مدیریت نکنید، ممکنه برنامهتون دچار Deadlock بشه و کلاً قفل بشه 😵
نتیجهگیری 🎯
مشکل همزمانی یه موضوع پیچیده و حساس تو برنامهنویسیه که اگه درست مدیریت نشه، میتونه مشکلات بزرگی رو ایجاد کنه. باید همیشه به این فکر کنید که چطور میتونید از منابع مشترک بهینه استفاده کنید، بدون اینکه برنامهتون دچار مشکلاتی مثل Race Condition یا Deadlock بشه. پس دفعه بعدی که داشتید یه برنامه چندتردی نوشتید، حتماً به این نکات فکر کنید و مطمئن بشید که بهترین راهحل رو انتخاب کردید ✅
مرسی که تا اینجا همراه من بودید، امیدوارم این توضیحات براتون مفید بوده باشه. اگه سوال یا نظری دارید حتماً تو کامنتا بنویسید 😁✌️
@ninja_learn_ir
امروز میخوایم یه موضوع خیلی مهم و جذاب رو با هم موشکافی کنیم:
مشکل همزمانی یا همون Concurrency Problem 🤓 شاید اسمش به گوشتون خورده باشه، ولی اگه دقیقتر بشناسیدش، میفهمید که چرا این موضوع اینقدر تو دنیای برنامهنویسی مهمه.
همزمانی یعنی چی؟ 🤔
اول از همه، بگم که وقتی از همزمانی حرف میزنیم، داریم در مورد اجرای چند تا کار بهصورت همزمان تو یه برنامه صحبت میکنیم. مثلاً فرض کنید یه برنامه دارید که داره همزمان چند تا درخواست کاربر رو مدیریت میکنه، یا داره یه سری عملیاتهای محاسباتی سنگین رو انجام میده. اینجاست که مفهوم همزمانی مطرح میشه. هدف همزمانی اینه که بتونیم از منابع سیستم بهینهتر استفاده کنیم و سرعت اجرای برنامه رو بالا ببریم 🚀
مشکل از کجا شروع میشه؟ 😬
مشکل وقتی پیش میاد که چند تا ترد (Thread) یا پردازش (Process) به یه منبع مشترک دسترسی پیدا میکنن. مثلاً فرض کنید دو تا ترد همزمان دارن یه متغیر رو آپدیت میکنن. اینجاست که ممکنه مقدار نهایی اون متغیر چیزی که انتظار داشتیم نباشه و این یعنی Race Condition 🏁
مثال عملی Race Condition 🛠️
فرض کنید یه اپلیکیشن بانکی دارید که باید موجودی حساب کاربر رو مدیریت کنه. حالا دو تا ترد مختلف میخوان همزمان این موجودی رو آپدیت کنن. مثلاً یه ترد داره پول به حساب اضافه میکنه و ترد دیگه داره از حساب برداشت میکنه. اگه این دو تا ترد همزمان و بدون هماهنگی دقیق اجرا بشن، ممکنه موجودی حساب بهطور نادرست محاسبه بشه 😱 این اتفاق دقیقاً مثالی از Race Condition هست.
راهحلها چی هستن؟ 🔧
خب حالا که مشکل رو فهمیدیم، بیایید ببینیم چجوری میتونیم جلوی این مشکلات رو بگیریم:
1️⃣ Locks (قفلها) 🛡️:
یه راهحل معمول استفاده از قفلهاست. وقتی یه ترد میخواد به یه منبع مشترک دسترسی پیدا کنه، اول اون رو قفل میکنه. اینجوری بقیه تردها باید صبر کنن تا اون ترد کارش رو تموم کنه و قفل رو آزاد کنه. این کار میتونه از بههمریختگی جلوگیری کنه، ولی خودش یه چالش دیگه به نام Deadlock ایجاد میکنه، جایی که دو یا چند ترد منتظر قفلهای همدیگه هستن و هیچکدوم نمیتونن کارشون رو پیش ببرن 😩
2️⃣ Atomic Operations (عملیات اتمی) 💥:
این عملیاتها طوری طراحی شدن که یا کامل انجام میشن یا اصلاً انجام نمیشن. یعنی وسطشون هیچ ترد دیگهای نمیتونه دخالت کنه. مثلاً اضافه کردن یه مقدار به یه متغیر میتونه یه عملیات اتمی باشه.
3️⃣ Synchronization (همگامسازی) ⏰:
با همگامسازی میتونید مطمئن بشید که یه ترد قبل از اینکه ترد دیگه کارش تموم بشه، کاری رو شروع نکنه. این کار معمولاً با استفاده از دستوراتی مثل synchronized در جاوا یا پایتون انجام میشه.
4️⃣ Thread Pools (مجموعه تردها) 🏊:
استفاده از Thread Poolها میتونه به مدیریت بهتر تردها کمک کنه. اینجوری تعداد تردها محدود میشه و از مشکلاتی مثل Overhead جلوگیری میکنید.
مشکلات ناشی از راهحلها 🤯
حالا که از راهحلها گفتیم، یه نکته خیلی مهم رو هم باید اضافه کنم: همه این روشها مشکلات خودشون رو دارن. مثلاً استفاده زیاد از قفلها میتونه کارایی برنامه رو کاهش بده، چون تردها باید منتظر بمونن تا قفل آزاد بشه. از طرف دیگه، اگه قفلها رو درست مدیریت نکنید، ممکنه برنامهتون دچار Deadlock بشه و کلاً قفل بشه 😵
نتیجهگیری 🎯
مشکل همزمانی یه موضوع پیچیده و حساس تو برنامهنویسیه که اگه درست مدیریت نشه، میتونه مشکلات بزرگی رو ایجاد کنه. باید همیشه به این فکر کنید که چطور میتونید از منابع مشترک بهینه استفاده کنید، بدون اینکه برنامهتون دچار مشکلاتی مثل Race Condition یا Deadlock بشه. پس دفعه بعدی که داشتید یه برنامه چندتردی نوشتید، حتماً به این نکات فکر کنید و مطمئن بشید که بهترین راهحل رو انتخاب کردید ✅
#Concurrency #برنامه_نویسی #مشکل_همزمانی #RaceCondition #Deadlock #Synchronization #Threading #programming
YouTube | Instagram | Group
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
امنیت سرویسهای وب با WS-Security در SOAP:
امنیت در دنیای سرویسهای وب یکی از چالشهای اساسی است، بهویژه وقتی صحبت از پیامهای حساس و سیستمهای توزیعشده به میان میآید. در این میان،
WS-Security به عنوان یک استاندارد کلیدی در SOAP Web Services، نقش مهمی در تأمین امنیت پیامها ایفا میکند.
ویژگیهای برجسته WS-Security:
1- احراز هویت: با ارسال اطلاعات هویتی مانند UsernameToken، امنیت هویت کاربر تضمین میشود.
2- تمامیت دادهها: با استفاده از امضای دیجیتال (XML Signature) تضمین میشود که پیام در طول انتقال تغییر نمیکند.
3- محرمانگی: رمزنگاری پیامها (XML Encryption) از افشای اطلاعات جلوگیری میکند.
چرا WS-Security مهم است؟
این پروتکل با ارائه قابلیتهای امنیتی سطح بالا، مناسب برای سیستمهای توزیعشده و انتقال امن پیامها در محیطهای پیچیده است.
@DevTwitter | <Ahmad Esmaili/>
امنیت در دنیای سرویسهای وب یکی از چالشهای اساسی است، بهویژه وقتی صحبت از پیامهای حساس و سیستمهای توزیعشده به میان میآید. در این میان،
WS-Security به عنوان یک استاندارد کلیدی در SOAP Web Services، نقش مهمی در تأمین امنیت پیامها ایفا میکند.
ویژگیهای برجسته WS-Security:
1- احراز هویت: با ارسال اطلاعات هویتی مانند UsernameToken، امنیت هویت کاربر تضمین میشود.
2- تمامیت دادهها: با استفاده از امضای دیجیتال (XML Signature) تضمین میشود که پیام در طول انتقال تغییر نمیکند.
3- محرمانگی: رمزنگاری پیامها (XML Encryption) از افشای اطلاعات جلوگیری میکند.
چرا WS-Security مهم است؟
این پروتکل با ارائه قابلیتهای امنیتی سطح بالا، مناسب برای سیستمهای توزیعشده و انتقال امن پیامها در محیطهای پیچیده است.
@DevTwitter | <Ahmad Esmaili/>
Forwarded from Agora (Alireza Azadi)
امروز خیلی اتفاقی فهمیدم که پادکست دایجست بعد از بیشتر از دوسال دوباره شروع کرده به اپیزود دادن. درواقع ۳ ماهی حدودا میگذره از این شروع مجدد و تا الان هم ۳ اپیزود جدید منتشر کردن.
اگر شما مخاطب دایجست بودین، حتماً این خبر، خبر خوبیه براتون. اگر تا حالا دایجست رو نشنیدین، و بخوام براتون معرفی کنم، خیلی خلاصه ماجراش اینه که فرشاد محمودی در دایجست میاد و یک طیف وسیعی از مطالب رو به زبان ساده و هضم شده (همون طور که اسم پادکست دایجسته) برای شنونده تعریف میکنه. وقتی حرف از متنوع بودن موضوعات میزنم، داریم از طیفی میگیم که یک سمتش جنگه تا سرطان یه سر دیگهش از شرکتهای هرمیه تا برکسیت.
اگر شما هم علاقهمندیهای متنوع دارید، دایجست حتماً براتون جالب خواهد بود. خیلی خوبه که بهش سر بزنید.
دربارهی پادکست.
اگر شما مخاطب دایجست بودین، حتماً این خبر، خبر خوبیه براتون. اگر تا حالا دایجست رو نشنیدین، و بخوام براتون معرفی کنم، خیلی خلاصه ماجراش اینه که فرشاد محمودی در دایجست میاد و یک طیف وسیعی از مطالب رو به زبان ساده و هضم شده (همون طور که اسم پادکست دایجسته) برای شنونده تعریف میکنه. وقتی حرف از متنوع بودن موضوعات میزنم، داریم از طیفی میگیم که یک سمتش جنگه تا سرطان یه سر دیگهش از شرکتهای هرمیه تا برکسیت.
اگر شما هم علاقهمندیهای متنوع دارید، دایجست حتماً براتون جالب خواهد بود. خیلی خوبه که بهش سر بزنید.
دربارهی پادکست.
d.castbox.fm
Best free podcast app for Apple iOS and Android | Let words move you
Millions of podcasts for all topics. Listen to the best free podcast on Android, Apple iOS, Amazon Alexa, Google Home, Carplay, Android Auto, PC. Create...
Forwarded from LearnPOV | لرن پی او وی
به مناسبت روز پدر میتونید ریاکشن ندید! 😂
.
.
.
ولی حتما بخونید چون خیلی کوتاه و خلاصه ORM رو معرفی و بررسی کردیم 😁✅
.
.
.
Forwarded from متخصص وردپرس | پوینا
اگر چنین پیامی دریافت کردید
دقت کنید کلا تمامی otp ها این مشکل رو دارن و باید ورود با ادمین رو با otp غیر فعال کنید
این روزا این پیام رو برای همه سایتا میفرستن و پول میگیرن
@poinair پوینا
دقت کنید کلا تمامی otp ها این مشکل رو دارن و باید ورود با ادمین رو با otp غیر فعال کنید
این روزا این پیام رو برای همه سایتا میفرستن و پول میگیرن
@poinair پوینا
Forwarded from LearnPOV | لرن پی او وی
💎 آشنایی با ORMها، چی هستد و به چه کاری میان 💎
کلمه ORM و یا همون Object-Relational Mapping ابزاریه که به شما این امکان رو میده تا با استفاده از زبان های برنامهنویسی شیگرا، به راحتی با دیتابیس کار بکنید.
✅ مزایای ORMها
➊ کاهش کد نویسی
➋ افزایش خوانایی کد
➌ قابلیتهای جابجایی
➍ مدیریت خودکار ریلیشنها
❌ معایب ORMها
➊ عملکرد کمتر
➋ پیشرفته بودن برای مبتدیان
➌ محدودیتهای عملکردی
💯 بهترین ORM ها برای Node.js
1. Sequelize
2. TypeORM
کلمه ORM و یا همون Object-Relational Mapping ابزاریه که به شما این امکان رو میده تا با استفاده از زبان های برنامهنویسی شیگرا، به راحتی با دیتابیس کار بکنید.
یعنی دیگه نیازی نیست خودتون به صورت دستی به نوشتن کوئریهای پیچیده با sql خام بپردازید و میتونید تمرکز بیشتری رو روی منطق برنامهنویسی داشته باشید 💥
✅ مزایای ORMها
➊ کاهش کد نویسی
با استفاده از ORM، نیاز به نوشتن کد SQL کاهش پیدا میکنه و عملیات دیتابیس به صورت خودکار انجام میشه
➋ افزایش خوانایی کد
کد ORM بیشتر به زبان برنامهنویسی شما نزدیکه و فهم اون سادهتره.
➌ قابلیتهای جابجایی
با ORM میتونید به سادگی از یک دیتابیس به یک دیتابیس دیگه منتقل شد.
➍ مدیریت خودکار ریلیشنها
با ORM ها مدیریت روابط ( ریلیشنها ) بین جداول مختلف خیلی ساده تر میشه
❌ معایب ORMها
➊ عملکرد کمتر
برای برخی از عملیاتهای پیچیده مثل گذارش گیری ها ممکنه کارایی کمتری نسبت به نوشتن کد SQL خالص داشته باشن.
➋ پیشرفته بودن برای مبتدیان
درک کامل عملکرد ORM و چگونگی کارکرد اون میتونه برای برخی از دولوپرهای تازهکار سخت تر باشه.
➌ محدودیتهای عملکردی
برای سناریوهایی با نیازهای خاص و پیچیده، ممکنه ORM همه نیازهای مارو برآورده نکنه.
💯 بهترین ORM ها برای Node.js
1. Sequelize
یک ORM قدرتمند برای Node.js و دیتابیس های SQL با پشتیبانی از تعریف مدل، روابط پیچیده، و Migration.
2. TypeORM
به شخصه typeorm رو برای NestJS توصیه میکنم چون فوقالعاده مناسب برای TypeScript هستش که از database های SQL و NoSQL پشتیبانی میکنه.3. Mongoose
این یکی برای MongoDB بهکار میره و درواقع ODM هستش که با Schemaها، Middleware و قابلیت Validation، مدیریت دیتای NoSQL رو براتون اسون تر میکنه.4. Prisma
یک ORM مدرن و TypeScript-friendly برای دیتابیس های SQL با تمرکز بر سرعت، Type-Safty کوئریها.
#️⃣ #lazyloading #javanoscript
🫶 𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Forwarded from Code Module | کد ماژول (Mahan-Heydari)
Clerk، ابزاری کارآمد و ساده برای احراز هویت 😎
Clerk یک پلتفرم فوقالعادهست که تمام پیچیدگیهای مربوط به احراز هویت و مدیریت کاربران رو براتون هندل میکنه و دیگه نیازی نیست درگیر ساخت فرمهای پیچیده، مدیریت توکنها، احراز هویت دو مرحلهای و... باشید.
⚡️ سادگی و با چند خط کد، یه سیستم احراز هویت امن و مدرن رو به اپلیکیشنتون اضافه کنید.
‼️ چرا Clerk برای برنامهنویسها عالیه؟
✅ سرعت و سهولت یکپارچهسازی: با کتابخانههای آماده برای فریمورکها و زبانهای برنامهنویسی محبوب، خیلی سریع میتونید Clerk رو به پروژتون اضافه کنید.
✅ امنیت بالا: دیگه نگران آسیبپذیریهای امنیتی مربوط به احراز هویت نباشید. با رعایت بهروزترین استانداردهای امنیتی، خیالتون رو راحت میکنه.
✅ رابط کاربری قابل کاستومایز : ظاهر صفحات ورود و ثبتنام رو مطابق با برند و طراحی اپلیکیشنتون شخصیسازی کنید.
✅ پشتیبانی از روشهای مختلف احراز هویت: ورود با ایمیل، شماره تلفن، حسابهای شبکههای اجتماعی و...
✅ مدیریت آسان کاربران: داشبورد کاربری ساده و قدرتمند برای مدیریت کاربران و تنظیمات مربوط به اونها.
✅ صرفهجویی در زمان و هزینه: با استفاده از Clerk دیگه نیازی به صرف زمان و منابع برای توسعه و نگهداری سیستم احراز هویت اختصاصی ندارید.
اگر به دنبال یک راهحل حرفهای و کارآمد برای مدیریت احراز هویت کاربران میگردید، Clerk قطعاً گزینه خوبی هست، برای یادگیری این ابزار میتونید به داکیومنتش مراجعه کنید.
Document🌕
#authentication #clerk
@CodeModule
Clerk یک پلتفرم فوقالعادهست که تمام پیچیدگیهای مربوط به احراز هویت و مدیریت کاربران رو براتون هندل میکنه و دیگه نیازی نیست درگیر ساخت فرمهای پیچیده، مدیریت توکنها، احراز هویت دو مرحلهای و... باشید.
اگر به دنبال یک راهحل حرفهای و کارآمد برای مدیریت احراز هویت کاربران میگردید، Clerk قطعاً گزینه خوبی هست، برای یادگیری این ابزار میتونید به داکیومنتش مراجعه کنید.
Document
#authentication #clerk
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Syntax | سینتکس (𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗)
Django_in_Production_Expert_tips,_strategies,_and_essential_frameworksفارسی.pdf
37.7 MB
درود خدمت رفقای سینتکسی
بنا به درخواست شما دوستان عزیز از منابع برای یادگیری مبتدی تا پیشرفته django و django api , ترجمه فارسی این کتاب :
django in production ...
در چنل قرار گرفت.
# توجه:
کتاب توسط گوگل ترنسلیت به فارسی ترجمه شده و چون برای استفاده شخصی بوده ممکنه از مرتب کردن ترجمه قسمت های ساده و بسیار پایه, شاید در برخی موارد خودداری شده باشه!(فکر نکنم در جایی از اینترنت بصورت pdf بتونین پیدا کنین چون خودم پیدا نکردم)❌🙄
بهتون توصیه میشه درکنار این ترجمه برای قسمت هایی که ترجمه نشدن کتاب اصلی رو هم داشته باشین تا دچار سردگمی نشین..
قسمت های اصلی و مهم کتاب ترجمه شدن!
در صورت رضایتتون دو کتاب دیگه :
django for api's و django for professionals
هم تو چنل قرار میدم.
امیدوارم مفید واقع باشه🙏🏻
#django #book
@Syntax_fa
بنا به درخواست شما دوستان عزیز از منابع برای یادگیری مبتدی تا پیشرفته django و django api , ترجمه فارسی این کتاب :
django in production ...
در چنل قرار گرفت.
# توجه:
کتاب توسط گوگل ترنسلیت به فارسی ترجمه شده و چون برای استفاده شخصی بوده ممکنه از مرتب کردن ترجمه قسمت های ساده و بسیار پایه, شاید در برخی موارد خودداری شده باشه!(فکر نکنم در جایی از اینترنت بصورت pdf بتونین پیدا کنین چون خودم پیدا نکردم)❌🙄
بهتون توصیه میشه درکنار این ترجمه برای قسمت هایی که ترجمه نشدن کتاب اصلی رو هم داشته باشین تا دچار سردگمی نشین..
قسمت های اصلی و مهم کتاب ترجمه شدن!
در صورت رضایتتون دو کتاب دیگه :
django for api's و django for professionals
هم تو چنل قرار میدم.
امیدوارم مفید واقع باشه🙏🏻
#django #book
@Syntax_fa
Forwarded from Syntax | سینتکس (𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗)
دوستان این کتاب دارای مطالبی هست که توی منابع فارسی پیدا نمیشه..
حتی اگر جنگو رو فول هستین بازم نیم نگاهی بهش بندازید🔥
@Syntax_fa
حتی اگر جنگو رو فول هستین بازم نیم نگاهی بهش بندازید🔥
@Syntax_fa
Forwarded from Linuxor ?
یه نفر اومده منابعی که برای ماشین لرنینگ و هوش مصنوعی خونده رو جمع آوری کرده یه مجموعه خوب ساخته :
ml-resources.vercel.app
@Linuxor ~ flyme2_mars
ml-resources.vercel.app
@Linuxor ~ flyme2_mars
Forwarded from Accio
You can play doom on PDF!
https://doompdf.pages.dev/doom.pdf
Quoted from the repo:
The PDF file format supports Javanoscript with its own separate standard library. Modern browsers (Chromium, Firefox) implement this as part of their PDF engines ... C code can be compiled to run within a PDF using and old version of Emnoscripten that targets asm.js
https://doompdf.pages.dev/doom.pdf
Quoted from the repo:
The PDF file format supports Javanoscript with its own separate standard library. Modern browsers (Chromium, Firefox) implement this as part of their PDF engines ... C code can be compiled to run within a PDF using and old version of Emnoscripten that targets asm.js
Forwarded from Golden Code (@lix)
پیشنهاد میکنم یه گوشه کنار داشته باشیدش که لازمتون میشه
(برگ تقلب SQL - JOIN)
#SQL
@GoldenCodeir
https://x.com/denicmarko/status/1876955314009858322?t=xSdqa7O7oRbJeF0AlfSuSA&s=35
(برگ تقلب SQL - JOIN)
#SQL
@GoldenCodeir
https://x.com/denicmarko/status/1876955314009858322?t=xSdqa7O7oRbJeF0AlfSuSA&s=35
❤2
Forwarded from a pessimistic researcher (Kc)
"Beware of bugs in the above code; I have only proved it correct, not tried it."
به نظرم همین طعنهی آقای Donald Knuth میتونه لازم و کافی باشه جهت ساپورت کردن این نکته که روشهای Formal Verification که Statefull هستند (به قولی semantics-driven) و یا مبتنی بر Static Analysis هستند (به قولی Syntax-driven) اصلا مناسب برنامههایی که با یک real programming language نوشته میشن نیستن. بهترین راه، اجرا کردن برنامه است و روشهای مبتنی بر اون مثل Stateless Model Checking چرا که اگر باگی در برنامه وجود داشته باشه قطعا در runtime بهش میرسیم. این جمله آخر رو دوبار بخون چون من راجع به testing و fuzzing صحبت نمیکنم.
به نظرم همین طعنهی آقای Donald Knuth میتونه لازم و کافی باشه جهت ساپورت کردن این نکته که روشهای Formal Verification که Statefull هستند (به قولی semantics-driven) و یا مبتنی بر Static Analysis هستند (به قولی Syntax-driven) اصلا مناسب برنامههایی که با یک real programming language نوشته میشن نیستن. بهترین راه، اجرا کردن برنامه است و روشهای مبتنی بر اون مثل Stateless Model Checking چرا که اگر باگی در برنامه وجود داشته باشه قطعا در runtime بهش میرسیم. این جمله آخر رو دوبار بخون چون من راجع به testing و fuzzing صحبت نمیکنم.
Forwarded from a pessimistic researcher (Kc)
از اصحاب کسی پرسید که Stateless Model Checking چیست؟ و ما برایتان پستهایی نوشتیم مثل:
"از زاربروکن تا کایزرسلاترن : Stateless Model Checking"
"Software Verification is Our Quest"
"Fuzzing for free! Except you, concurrency!"
و حتی این، تا برایتان پندی باشد. باشد که مطالب کانال را دنبال کنید :)
"از زاربروکن تا کایزرسلاترن : Stateless Model Checking"
"Software Verification is Our Quest"
"Fuzzing for free! Except you, concurrency!"
و حتی این، تا برایتان پندی باشد. باشد که مطالب کانال را دنبال کنید :)
Forwarded from a pessimistic researcher (Kc)
از اصحاب کسی پرسید که Stateless Model Checking چیست؟ و ما برایتان پستهایی نوشتیم مثل:
"از زاربروکن تا کایزرسلاترن : Stateless Model Checking"
"Software Verification is Our Quest"
"Software Verification is Our Business"
"Fuzzing for free! Except you, concurrency!"
و حتی این، تا برایتان پندی باشد. باشد که مطالب کانال را دنبال کنید :)
"از زاربروکن تا کایزرسلاترن : Stateless Model Checking"
"Software Verification is Our Quest"
"Software Verification is Our Business"
"Fuzzing for free! Except you, concurrency!"
و حتی این، تا برایتان پندی باشد. باشد که مطالب کانال را دنبال کنید :)
Forwarded from Geek Alerts
قرار هست یه تب جداگانه AI به واتساپ اضافه بشه در کنار ویجت AI تا دسترسی به Meta AI آسونتر بشه.
اینا توی یه نسخه آزمایشی اندروید یعنی ۲.۲۵.۱.۲۷ دیده شده و فعلا معلوم نیست کی به نسخه اصلی اضافه میشه.
نتیجه احتمالا اینه که Meta AI میتونه تو بازه زمانی کمی تعداد کاربران خودش رو به این روش میلیاردی کنه.
wabetainfo
@geekalerts
اینا توی یه نسخه آزمایشی اندروید یعنی ۲.۲۵.۱.۲۷ دیده شده و فعلا معلوم نیست کی به نسخه اصلی اضافه میشه.
نتیجه احتمالا اینه که Meta AI میتونه تو بازه زمانی کمی تعداد کاربران خودش رو به این روش میلیاردی کنه.
wabetainfo
@geekalerts