سلام.
سال نو مبارک.
امیدوارم سال 1388 برای همه همراه با سلامتی و موفقیت باشد.
یک. رایگیری برای انتخاب و معرفی برترینهای وب فارسی در دومین جشنواره آنلاین وب ایران چند روزیه که شروع شده. اگر مایل هستید، میتونید به سایت iDevCenter در این جشنواره رای بدهید.
دو. فردا قصد معرفی یک بخش جدید در سایت رو دارم. از اونجایی که این بخش عمدتا بر اساس سیستم ویکی کار میکنه، ادیتور این بخش رو یکم بهبود دادم و چندتا امکان جدید بهش اضافه کردم تا کار کردن باهاش کمی راحتتر بشه.
سه. چند وقتیه که یک حرکتی در وب سایتهای خارجی شروع شده برای تشویق مردم به کنار گذاشتن IE6 و استفاده از مرورگرهای جدیدتر و با پشتیبانی بهتر از استانداردهای وب. سایت iDevCenter هم در این راستا، از این به بعد به کسانی که با این مرورگر بینظیر(!) وارد سایت بشوند، خیلی محترنامه پیغام میده که مرورگرشون رو بهروز کنند.
به روز کردن یک سایت وب (از نظر نرم افزاری) کار نسبتا سادهای هستش. کپی کردن فایلهای تغییر یافته به روی سرور و اجرای چند تا اسکریپت SQL برای اعمال تغییرات به دیتابیس معمولا حداکثر کاری است که باید انجام داده بشه. اما از اونجایی که انسان (مخصوصا اگر از نوع برنامه نویس باشه) جایزالخطاست، در حین همین پروسه ساده ممکنه کلی مشکل پیش بیاد. مثلا ممکنه بعد از این که فایلها رو کپی کردید رو سرور، یادتون بیافته که یک مورد مهم رو فراموش کردید، یا وسط آپلود یکهو لنگر یک کشتی بیافته رو فیبر نوری و اینترنت قطع بشه! برای همین بهتره که هنگام به روز رسانی، سایت موقتا بسته (Down) بشه و وقتی همه کارها با موفقیت انجام شد، سایت برای عموم باز بشه.
در ASP.NET برای این کار یک روشی نه چندان جالبی وجود داره که توی این مطلب معرفی شده و به مشکلاتش هم اشاره شده. برای iDevCenter من از روش زیر بر اساس URL Rewriting استفاده میکنم. از اونجایی که برای پیاده سازی URL Rewriting در سایت من از نرمافزار ISAPI_Rewrite استفاده کردهام، این روش رو بر اساس فایل htaccess. توضیح میدهم ولی اصل مطلب به نرمافزار خاصی وابستگی نداره و به راحتی میشه برای محیطهای دیگه هم ازش استفاده کرد.
در این روش کافیه این دو خط رو به اول فایل htaccess. اضافه کنیم. این کار باعث میشه تا تمام درخواستها موقتا به آدرس /updating/ فرستاده بشن. توی این مسیر هم یک فایل ساده HTML وجود داره که به کاربرها خبر میده که سایت در حال به روز رسانی شدن هستش.
RewriteRule ^updating.*$ $0 [NC,U,QSA,L]
RewriteRule .* /updating/ [NC,U,QSA,R=307,L]
اما همیشه بهتره قبل از این که سایت به روی عموم باز بشه، خودمون یکبار تمام تغییرات اعمال شده رو تست بکنیم و بعد از اطمینان از درست بودن همه موارد، سایت رو باز کنیم. برای این کار نیاز داریم که به یک شکلی خودمون رو از بقیه کاربران متمایز بکنیم. یکی از سادهترین راهها برای انجام این کار، درج یک عبارت مشخص در User Agent هست. در فایرفاکس کافیه در بخش about:config یک Key با نام general.useragent.extra.XYZ و با مقدار مورد نظر، مانند ABC، ایجاد بشه. اما برای IE باید دست به دامن Registry شد. حالا کافیه برای قانون دومی که تعریف کردهایم یک شرط اضافه کنیم:
RewriteRule ^updating.*$ $0 [NC,U,QSA,L]
RewriteCond %{HTTP:User-Agent} !ABC [NC]
RewriteRule .* /updating/ [NC,U,QSA,R=307,L]
این شرط باعث میشه کاربرانی که عبارت ABC در User Agentشون وجود داره (یعنی مدیران سایت) از Redirect شدن معاف بشن و بتونن به طور عادی با سایت کار کنند.