GyaanSetu WebDev

Frontend, backend and devops for the modern web.

230 articlesDeep, practical knowledge

خطاهای ۴۰۴ نرم در 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

چرا یک پاسخ با اطمینان می‌تواند بدتر از نبودِ پاسخ باشد؟

چرا یک پاسخ با اطمینان می‌تواند بدتر از نبودِ پاسخ باشد؟ ساخت چت‌بات داخلی را به پایان می‌رسانید. تمام سیاست‌های منابع انسانی، مشخصات مهندسی و اسناد فرآیند آشنایی با سازمان که شرکتتان در اختیار دارد را به آن می‌دهید. یک...

WebDev · 4 min read

وقتی برای ساخت اولین وب‌سایتم نشستم، هیجان واقعی بود. تصور می‌کردم بخش سخت کار، یادگیری کدنویسی باشد—من...

وقتی برای ساخت اولین وب‌سایتم نشستم، هیجان واقعی بود. تصور می‌کردم بخش سخت کار، یادگیری کدنویسی باشد—حفظ کردن تگ‌ها، درک توابع، یادگیری نحو دستورات...

WebDev · 4 min read

کاربر روی دکمه‌ای کلیک می‌کند. درخواست متوقف می‌شود. ده ثانیه سکوت. کاربر دکمه جایگزین را فشار می‌دهد. حالا دو عملیات در حال اجرا هستند.

کاربر روی دکمه‌ای کلیک می‌کند. درخواست متوقف می‌شود. ده ثانیه سکوت. کاربر دکمه جایگزین را فشار می‌دهد. حالا دو عملیات برای یک هدف واحد در حال اجرا هستند. در نهایت با موارد تکراری روبرو می‌شوید...

WebDev · 6 min read

بیماری دکمه‌ای با عنوان «قطع اتصال داده‌های من» را کلیک می‌کند. اپلیکیشن وب یک علامت تیک سبز و یک پیام تأیید خوشایند را نمایش می‌دهد.

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

WebDev · 6 min read

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

ماه‌ها وقت صرف ساختن جداول مقایسه‌ای کردم، تا اینکه بالاخره فهمیدم پایگاه داده‌ام دارد به من دروغ می‌گوید. رابط کاربری خوب به نظر می‌رسید. ردیف‌های مرتب، تیک‌های منظم، علامت‌های ضربدر قرمز در جاهایی که یک ابزار فـ...

WebDev · 3 min read

بیشتر افرادی که اولین آموزش پایتون خود را باز می‌کنند، می‌خواهند مستقیماً به سراغ متغیرها، حلقه‌ها و ساختن چیزی ملموس بروند

بیشتر افرادی که اولین آموزش پایتون خود را باز می‌کنند، می‌خواهند مستقیماً به سراغ متغیرها، حلقه‌ها و ساختن چیزی ملموس بروند. این میل قابل درک است، اما اگر کمی مکث کنید تا بفهمید...

WebDev · 6 min read

ChatGPT، GitHub Copilot، Cursor و ابزارهای مشابهشان حالا می‌توانند حتی قبل از اینکه تایپ کردن پرامپت را تمام کنید، یک کامپوننت React بسازند

ChatGPT، GitHub Copilot، Cursor و ابزارهای مشابهشان حالا می‌توانند قبل از اینکه تایپ کردن پرامپت را تمام کنید، یک کامپوننت React تولید کنند. اتصال یک مسیر Next.js به Supabase؟ در عرض چند ثانیه انجام می‌شود. ...

WebDev · 4 min read

توسعه‌دهندگان، فریلنسرها و تیم‌های کوچک هر روز با فایل‌های PDF حساس سر و کار دارند. فاکتورها، گزارش‌های مشتری و قراردادها همگی نیا...

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

WebDev · 5 min read

اکثر توسعه‌دهندگان ویژگی‌ای را عرضه کرده‌اند که در مرورگر بی‌نقص به نظر می‌رسد و تصور کرده‌اند که کار سخت تمام شده است. من

اکثر توسعه‌دهندگان ویژگی‌ای را عرضه کرده‌اند که در مرورگر بی‌نقص به نظر می‌رسد و تصور کرده‌اند که کار سخت تمام شده است. من دقیقاً همین اشتباه را هنگام ساخت وبلاگ غذایی جنگوی خود مرتکب شدم. ...

WebDev · 5 min read