GyaanSetu WebDev

Frontend, backend and devops for the modern web.

244 articlesDeep, practical knowledge

چرا اپلیکیشن شما در مرز ۲ هزار کاربر هنگ می‌کند: نبرد CPU و RAM برای هر درخواست

وقتی چند هزار کاربر هم‌زمان وارد می‌شوند، هر درخواست سهم خود را از چرخه‌های CPU و RAM می‌طلبد و با ایجاد صف، زمان پاسخ‌گویی را افزایش می‌دهد. این کندی ناشی از نقص در کد نیست، بلکه نتیجه‌ی رقابت منابع محدود برای تصاحب فضا است.

WebDev · 4 min read

مهاجرت از گوگل به مایکروسافت در صورت نادیده گرفتن این تله‌های پنهان می‌تواند میلیون‌ها دلار هزینه داشته باشد

یک مهاجرت موفق از Google Workspace به Microsoft 365 نیازمند فهرست‌برداری کامل از تمامی حجم‌های کاری، حساب‌های سرویس OAuth با محدوده دسترسی صحیح، ابزارهایی برای مدیریت برچسب‌های Gmail بدون ایجاد پیام‌های تکراری، مدیریت خودکار محدودیت نرخ (throttling) در Graph API و یک انتقال مرحله‌ای (bulk-plus-delta) برای کاهش زمان توقف است.

WebDev · 3 min read

تهدیدات فیشینگ مبتنی بر هوش مصنوعی، همه را به یادگیری اصول اولیه امنیت سایبری وادار می‌کند

این مقاله توضیح می‌دهد که چگونه مدل‌های هوش مصنوعی مولد با نوشتن ایمیل‌های فیشینگ بی‌نقص، یک نگرانی امنیتی محدود را به تهدیدی روزمره تبدیل کرده‌اند و کاربران را ترغیب می‌کنند تا به‌جای صرفاً یادگیری کار با ابزارها، قدرت قضاوت و تشخیص خود را نیز تقویت کنند.

WebDev · 4 min read

گوگل تبلیغات شاپیفای را در صورت هدایت محصولات با موجودی صفر به صفحه اصلی، متوقف می‌کند

وقتی موجودی کالا به صفر می‌رسد، بسیاری از اپلیکیشن‌های شاپیفای به‌طور خودکار یک تغییر مسیر (redirect) را فعال می‌کنند که آدرس محصول را به صفحه اصلی فروشگاه هدایت می‌کند. گوگل این وضعیت را به عنوان «عدم تطابق صفحه فرود» (landing-page-mismatch) شناسایی کرده، تبلیغ را متوقف می‌کند و تا زمانی که این تغییر مسیر اصلاح نشود، ترافیک جستجوی پولی را از بین می‌برد.

WebDev · 3 min read

کلودفلر از اول جولای، هر بار خواندن صفحات توسط هوش مصنوعی را به یک لایسنس پولی تبدیل می‌کند

طرح جدید «پرداخت به ازای استفاده»، جایگزین مدل قدیمی «خزش با هزینه ثابت» کلودفلر می‌شود و به ناشران اجازه می‌دهد هر بار که یک سرویس هوش مصنوعی محتوای آن‌ها را می‌خواند، مبلغی دریافت کنند؛ در حالی که این شرکت تعیین می‌کند کدام ربات‌ها مجاز باشند و کدام‌یک در صفحات دارای تبلیغات مسدود شوند.

WebDev · 5 min read

برای اولین بار در سال ۲۰۲۶، حجم کاری Wasm بیشتر در سرورها اجرا می‌شود تا در مرورگرها

در سال ۲۰۲۶، ۶۷ درصد از سازمان‌ها استفاده از WebAssembly در محیط عملیاتی را گزارش کرده‌اند که نسبت به ۴۷ درصد در دو سال گذشته افزایش یافته است؛ این موضوع آن را به محیط اجرای (runtime) غالب برای توابع بدون سرور (serverless) و محاسبات لبه (edge compute) تبدیل کرده است، در حالی که همچنان برای وظایف سنگین در کنار کانتینرها به کار می‌رود.

WebDev · 3 min read

افزایش ۳۵۱ درصدی کلیک‌های ماشین حساب حقوق Next.js همزمان با افزایش حداقل حقوق در رومانی

بررسی‌ها تایید کرد که صفحه تمام HTML را در سمت سرور رندر می‌کند، تعداد ترکیب‌های URL قابل ایندکس محدود است و تست‌های بازگشتی خودکار سئو نیز اضافه شده است. با تایید سلامت فنی، توسعه‌دهنده اکنون قصد دارد با افزایش بک‌لینک‌ها، این ابزار را به رتبه‌های برتر برساند.

WebDev · 3 min read

هزینه ارتقا بیشتر از مزایای آن است: وای-فای ۷ نیازمند روتر جدید و تجهیزات 2.5 GbE است

جایگزین کردن ماژول MediaTek Wi-Fi 6E در Strix G16 با تراشه Wi-Fi 7 کوالکام، سرعت انتقال داده را تا ۵۰٪ افزایش می‌دهد، اما برای حس کردن این تفاوت، همچنان به یک روتر Wi-Fi 7 و یک NAS یا داک با قابلیت 2.5 GbE نیاز خواهید داشت.

WebDev · 2 min read

اسکریپت تولید شده توسط هوش مصنوعی تمام مشتریان استرایپ را لغو کرد؛ چرا مقصر مدل نیست؟

تنها یک خط کد نوشته شده توسط هوش مصنوعی، یک صف حذف خالی را به اشتباه به عنوان دستوری برای لغو همه چیز تفسیر کرد. این کد با استفاده از یک کلید اصلی فعال استرایپ و بدون هیچ‌گونه نظارت در زمان اجرا، درآمد ماهانه تکرار شونده استارتاپ را به تنها ۳۸ دلار کاهش داد.

WebDev · 3 min read

افزونه‌های CLI و VS Code به عامل‌های Claude اجازه آپلود فایل می‌دهند، اما اپلیکیشن دسکتاپ خیر

کلاینت دسکتاپ نمای سیستم فایلِ عامل را ایزوله کرده و آپلودها را رد می‌کند، مگر اینکه فایل‌ها با یک معیار پنهانِ «اشتراکی» مطابقت داشته باشند. اجرای عامل از طریق CLI یا افزونه VS Code این مشکل را دور می‌زند؛ در حالی که تنها راه حل موقتِ فعلی — یعنی چسباندن از کلیپ‌بورد — کلیپ‌بورد کاربر را پاک کرده و فقط در ویندوز کار می‌کند.

WebDev · 3 min read

با Server Actions در Next.js، دیگر نیازی به مسیرهای API برای فرم‌های ساده نیست

با علامت‌گذاری یک تابع با عبارت "use server" و متصل کردن آن به ویژگی action در یک فرم، توسعه‌دهندگان می‌توانند داده‌ها را بدون نیاز به فراخوانی fetch، مستقیماً به سمت سرور ارسال کنند. این کار باعث حذف فایل‌های جداگانه برای مسیرهای API و کاهش حجم کدهای سمت کلاینت می‌شود.

WebDev · 3 min read

خطاهای ۴۰۴ نرم در Next.js باعث هدر رفتن بودجه خزش و جریمه‌های سئو می‌شوند

گوگل سرچ کنسول صفحاتی را که بدون محتوا کد وضعیت 200 OK برمی‌گردانند، به عنوان خطای ۴۰۴ نرم شناسایی می‌کند. در Next.js، مسیریابی پویا بدون بررسی صحیح داده‌ها باعث رایج شدن این مشکل می‌شود که منجر به هدر رفتن بودجه خزش، آسیب به رتبه‌بندی و افزایش نرخ پرش می‌گردد.

WebDev · 3 min read

تکرار تصادفی تابع در حین مهاجرت PostgreSQL و از کار افتادن API محیط عملیاتی

یک توسعه‌دهنده با استفاده از دستور CREATE OR REPLACE FUNCTION یک آرگومان اختیاری اضافه کرد، اما PostgreSQL به جای بازنویسی تابع، یک overload جدید ایجاد کرد. این تعریف تکراری باعث بروز خطای «function is not unique» شد که در قالب پاسخ ۴۰۰ در API محیط عملیاتی ظاهر شد.

WebDev · 3 min read

تقویت سئو: Next.js 14 با ارائه HTML کاملاً رندر شده، تأخیرهای خزیدن را به شدت کاهش می‌دهد

در یک تست سریع روی یک وبلاگ شخصی، انتقال فرآیند دریافت داده‌ها به یک Server Component، حجم باندل جاوااسکریپت را حدود ۶۰٪ کاهش داد و زمان اولین رنگ‌آمیزی (first-paint) صفحه را به زیر ۲۰۰ میلی‌ثانیه رساند تا HTML را به صورت آنی به کاربران و خزنده‌ها تحویل دهد.

WebDev · 3 min read

تسک‌های asyncio در محیط عملیاتی در صورت عدم ذخیره‌سازی ناپدید می‌شوند – رفع مشکل با استفاده از یک Set

در محیط عملیاتی، تسک‌های «اجرا و فراموش» (fire-and-forget) که با asyncio.create_task ایجاد شده‌اند، اگر ارجاعی از آن‌ها نگه ندارید، ممکن است توسط Garbage Collector پایتون بازیافت شوند؛ این امر باعث بروز شکست‌های بی‌صدا می‌شود که خود را به صورت خطای "!Task was destroyed but it is pending" نشان می‌دهند.

WebDev · 2 min read

API قفل‌های وب مانع از هجوم پنج تب به سرور احراز هویت با درخواست‌های Refresh می‌شود

با قرار دادن اینترسپتور ۴۰۱ اکسیس (Axios) در قالب یک درخواست navigator.locks، تنها یک تب عملیات بازنشانی شبکه را انجام می‌دهد، در حالی که سایر تب‌ها توکن JWT جدید را از localStorage می‌خوانند. این روش از وقوع زنجیره‌ای از حملات بازپخش (replay-attack) که منجر به خروج ناخواسته کاربران می‌شود، جلوگیری می‌کند.

WebDev · 4 min read