uz
Feedback
Anophel | آنوفل

Anophel | آنوفل

Kanalga Telegram’da o‘tish

آنوفل | Anophel: دنیای بی ‌پایان امکانات برای برنامه‌ نویسان https://anophel.com پشتیبانی : @anophel_support

Ko'proq ko'rsatish
Mamlakat belgilanmaganToif belgilanmagan
276
Obunachilar
+424 soatlar
+487 kunlar
+4830 kunlar
Postlar soni

Ma'lumot yuklanmoqda...

Reaktsiyalar
Izohlar
Telegram Yulduzlari
Eng yaxshi postlar bo'yicha

Ma'lumot yuklanmoqda...

Nashrni tahlil qilish
Postlar
Ko'rish dinamikasi
🧠 یه اشتباه رایج تو طراحی سیستم‌های نوتیفیکیشن اینه که Event Ingestion و Notification Dispatch رو یکی در نظر می‌گیریم. یعنی هر Event که وارد سیستم میشه، همون لحظه تبدیل به یک Notification میشه. در نگاه اول ساده و منطقیه، ولی وقتی سیستم بزرگ‌تر میشه، مشکل خودش رو نشون میده. فرض کنید یک Webhook دارید. یک سرویس مشکل پیدا کرده و Provider شروع به Retry کردن درخواست‌ها می‌کنه. در چند دقیقه ممکنه ۳۰ تا Event مشابه دریافت کنید. اگر معماری اینطوری باشه: Event → Notification کاربر در نهایت ۳۰ تا Notification مشابه دریافت می‌کنه. اما نکته مهم اینه که: Event با Notification یکی نیست. Event یعنی: «یک اتفاق در سیستم رخ داده.» Notification یعنی: «یک چیزی وجود دارد که کاربر باید از آن مطلع شود.» این دو تا lifecycle متفاوت دارند. راه بهتر اینه که بین این دو یک لایه میانی قرار بدیم. ابتدا Eventها ingest میشن. بعد یک مرحله Aggregation یا Coalescing داریم که Eventهای مشابه رو کنار هم جمع می‌کنه. مثلاً برای هر Event یک idempotency key تعریف می‌کنیم: resource_id + event_type بعد Eventهای مشابه رو در یک window زمانی نگه می‌داریم. مثلاً ۵ دقیقه. در این بازه هر Retry جدید فقط باعث افزایش count میشه، نه ساخت یک Notification جدید. بعد از پایان window به جای ۳۰ پیام: Service X در ۵ دقیقه گذشته ۳۰ بار retry شد. یک Notification خلاصه و معنی‌دار ساخته میشه. ⭐️مزیتش: 🫶کاهش noise برای کاربر 🫶کاهش فشار روی سیستم Notification 🫶جلوگیری از ارسال پیام‌های تکراری 🫶تجربه کاربری بهتر این الگو فقط برای Webhook نیست. در سیستم‌های Alerting، Monitoring، Billing و تقریباً هر معماری Event-driven با حجم بالا کاربرد داره. خیلی وقت‌ها مشکل سیستم Notification با اضافه کردن Queue یا Retry حل نمیشه؛ مشکل از جایی شروع شده که از اول Event و Notification را دو مفهوم جدا طراحی نکردیم. #Anophel#BackendDevelopment #Microservices #NotificationSystem #Webhooks #Observability #Engineering
8003Loading...
Matn yo'q...
1000Loading...
😃یکی اومده کل استک یه دستیار هوش مصنوعی رو از صفر با Zig نوشته؛ اسمش هم NullClaw! اعدادش واقعاً عجیبن: 🔻 فقط ۶۷۸ کیلوبایت حجم باینری 🧠حدود ۱ مگابایت RAM مصرف می‌کنه ✔️ کمتر از ۲ میلی‌ثانیه استارت می‌خوره بدون Runtime، بدون Virtual Machine، بدون Framework و حتی بدون Garbage Collector؛ فقط Zig خالص. حالا مقایسه کنید: • OpenClaw برای اجرا به بیش از ۱ گیگابایت RAM نیاز داره. • NanoBot با Python اجرا میشه و بالای ۱۰۰ مگابایت RAM مصرف می‌کنه. • PicoClaw هم حدود ۱۰ مگابایت RAM و Go می‌خواد. اما NullClaw روی یه برد ۵ دلاری با فقط ۱ مگابایت RAM اجرا میشه! داخل همین باینری ۶۷۸ کیلوبایتی هم امکانات کمی نداره: ⭐️پشتیبانی از +۲۲ ارائه‌دهنده AI (OpenAI، Anthropic، Ollama، Groq، DeepSeek و…) ⭐️ اتصال به ۱۳ پیام‌رسان و پلتفرم (تلگرام، دیسکورد، اسلک، واتساپ، iMessage، IRC و…) ⭐️ بیش از ۱۸ ابزار داخلی ⭐️ حافظه هیبریدی (Vector + Keyword Search) ⭐️ سندباکس چندلایه (Landlock، Firejail و Docker) ⭐️ پشتیبانی از Arduino، Raspberry Pi و STM32 ⭐️ MCP، Subagents، Streaming و قابلیت‌های صوتی از نظر معماری هم همه‌چیز ماژولاره؛ ارائه‌دهنده، حافظه، ابزارها و کانال‌ها فقط با تغییر فایل Config قابل تعویض هستن و نیازی به تغییر کد نیست. از نظر امنیت هم کلیدهای API به‌صورت پیش‌فرض با ChaCha20-Poly1305 رمزنگاری میشن. در مجموع: 🫶حدود ۴۵ هزار خط کد Zig 🫶۲,۷۳۸ تست 🫶 فقط وابسته به libc 🫶 کاملاً متن‌باز و رایگان اگه این اعداد دقیق باشن، یکی از جالب‌ترین نمونه‌های استفاده از Zig برای ساخت نرم‌افزارهای AI محسوب میشه. ⭐️ ویدیو: https://x.com/simplifyinAI/status/2081060260593467595/video/1?s=46
22206Loading...
🍷برای اینکه مطمئن بشی VPN درست کار(نشتی ip نداره) می‌کنه، می‌تونی از سایت BrowserLeaks استفاده کنید. این سایت IP فعلی، موقعیت تقریبی، اطلاعات شبکه و همچنین تست DNS Leak و WebRTC Leak رو نشون میده تا مطمئن بشی #اطلاعات واقعی اینترنتت لو نمیره. اگر بعد از اتصال به VPN، آی‌پی و DNS نمایش‌داده‌شده مربوط به سرور VPN باشه و نه اینترنت خودت، یعنی اتصال به‌درستی برقرار شده و نشتی وجود نداره. این سایت ها #امنیت سرور و نشت در اپ ها رو نشون میده: https://browserleaks.com/ip https://myip.theazizi.ir/ @xsfilterrnet 👑 @xszapass 🤩
29105Loading...
🐝 Hive v0.1.0 منتشر شد! 🚀 اولین نسخه عمومی Hive منتشر شد. این نسخه یک MVP است؛ یعنی شروع مسیر، نه نسخه نهایی. می‌دونیم هنوز
🐝 Hive v0.1.0 منتشر شد! 🚀 اولین نسخه عمومی Hive منتشر شد. این نسخه یک MVP است؛ یعنی شروع مسیر، نه نسخه نهایی. می‌دونیم هنوز: 🐛 باگ‌هایی وجود داره 🔨 نیاز به Refactor و تمیزکاری کد داریم 📚 مستندات کامل آماده نیست فعلاً توان خرید دامنه‌ی .dev و راه‌اندازی سایت مستندات رو نداریم :( پس فعلاً با GitHub و کانال کنار هم پیش می‌ریم. برای رشد Hive خوشحال می‌شیم کمک کنید: 💛 تست کنید 💛 باگ گزارش بدید 💛 در بهبود کد و Refactor کمک کنید 💛 و اگر دوست داشتید حمایت کنید ❤️ ما هم ادامه می‌دیم و نسخه‌های بعدی خیلی بهتر و خفن‌تر خواهند شد. 🚀 این تازه شروع Hive است 🐝 GitHub: https://github.com/HiveSofts/hive-app آموزش‌ها و مستندات ویدیویی: Instagram: @arshiamohammadei Telegram: @aasshiaa @TheRaymondDev
39007Loading...
RCE PoC for Redis 6.2.22, 7.4.9, 8.6.4, 8.8.0 اکسپلویتش تازه از تنور در اومده توی ورژن 8.8.2 فیکس شده که همش ۲ساعته ریلیز شده
RCE PoC for Redis 6.2.22, 7.4.9, 8.6.4, 8.8.0 اکسپلویتش تازه از تنور در اومده توی ورژن 8.8.2 فیکس شده که همش ۲ساعته ریلیز شده :) https://github.com/berabuddies/redis-poc @TheRaymondDev
42106Loading...
✅یکی از کمبودهای قدیمی HTTP بالاخره برطرف شد. 😃متد QUERY که تا همین اواخر در حد Draft بود، از ژوئن ۲۰۲۶ رسماً با RFC 10008 استاندارد شد. اگر با CQRS کار می‌کنید یا سرچ‌های پیچیده (مثل Elasticsearch) دارید، احتمالاً از این خبر خوشتان می‌آید. ⸻ تا امروز برای سرچ‌های پیچیده معمولاً یکی از این دو راه را داشتیم: GET /search?q=golang&page=1 یا POST /search Content-Type: application/json { "query": { ... } } هر کدام یک مشکل اساسی داشتند. ⭐️ GET از نظر HTTP کاملاً مناسب عملیات Read است: Safe Idempotent Cacheable اما همه پارامترها باید داخل URL قرار بگیرند. برای Queryهای پیچیده، مخصوصاً در Elasticsearch، این روش خیلی زود به بن‌بست می‌رسد. ⸻ ⭐️ POST امکان ارسال Body را می‌دهد و تقریباً همه ما سال‌هاست برای Search از آن استفاده می‌کنیم. اما از دید پروتکل، POST یک عملیات عمومی است که ممکن است State سرور را تغییر دهد. در نتیجه: Cacheها معمولاً آن را Cache نمی‌کنند. Retry خودکار همیشه منطقی نیست. از نظر Semantic، برای یک عملیات صرفاً Read انتخاب ایده‌آلی نیست. ⸻ ⭐️حالا QUERY آمده تا دقیقاً این مشکل را حل کند. QUERY /search Content-Type: application/json { "query": { ... } } یعنی: ⭐️ Body دارد. ⭐️ Safe است. ⭐️ Idempotent است. ⭐️ قابلیت Cache شدن دارد. و مهم‌تر از همه، پروتکل از همان ابتدا می‌داند که این درخواست فقط برای خواندن داده است و هیچ تغییری در State ایجاد نمی‌کند. ⸻ برای طرفداران CQRS این اتفاق واقعاً جذاب است. قبلاً مجبور بودیم بنویسیم: POST /orders/search در حالی که اسم Endpoint می‌گفت Query است، اما Method می‌گفت POST! حالا می‌توانیم بنویسیم: QUERY /orders/search که از نظر Semantic هم کاملاً با معماری CQRS هماهنگ است. ⸻ ⭐️البته یک نکته مهم وجود دارد. هرچند QUERY حالا یک استاندارد رسمی است، اما هنوز بسیاری از Frameworkها، API Gatewayها، Reverse Proxyها، CDNها و ابزارهای مختلف از آن پشتیبانی کامل ندارند. پس فعلاً احتمالاً همچنان POST /search را زیاد خواهید دید؛ اما به مرور زمان انتظار می‌رود QUERY جایگاه واقعی خودش را پیدا کند. به نظر من، این یکی از بهترین تغییراتی است که طی سال‌های اخیر به HTTP اضافه شده؛ چون بالاخره برای «عملیات Read با Body» یک راه‌حل استاندارد داریم. #آنوفل #anophel #http #query #query
6331207Loading...