امروز وقت شد یه دستی به سایت بکشم و چند تا مورد رو درست کنم:

  • تعداد برچسب‌هایی که توی صفحه برچسب‌ها نشون داده می‌شه رو محدود کردم.
  • برچسب‌هایی که کمکی به بهبود جستجو نمی‌کنند (برچسب‌هایی که بین همه موارد پیدا شده مشترک هستند) دیگه تو لیست برچسب‌های مرتبط نشون داده نمی‌شن.
  • یک تگ با نام LTR برای نمایش صحیح متون انگلیسی در ویکی‌ها اضافه کردم.
  • مشکل انتخاب بعضی کشورها در قسمت پروفایل رو برطرف کردم.
  • یه راهنمای کوچک نوشتم برای کسانی که دوست دارن تعداد رای لینک‌هاشون به طور خودکار زیر مطالب وبلاگ/سایتشون نشون داده بشه: چگونه می‌توانم دکمه رای را به صورت خودکار در وبلاگ/سایت خودم قرار دهم؟
دستور دادن که یک ویکی برای MSBuild بساز، ما هم اطاعت کردیم. حالا نویت شماست که در مورد یک موضوع که درباره‌اش اطلاعاتی دارین، یک ویکی بسازین. لازم نیست از اول کامل و جامع باشه، شما شروع کنین، بقیه کامل می‌کنن.
اتوماسیون در پروسه تولید نرم افزار یکی از چیزایی که اعتقاد خیلی زیادی بهش دارم و تا جایی که امکانش باشه، هر کار تکراری رو اتوماتیک می‌کنم. برای همین، چند روز پیش نشستم و یک Build Script برای سایت با MSBuild نوشتم. البته تو نسخه قبلی سایت هم این کار رو کرده بودم؛ ولی اون موقع به کاملی الان نبود و از NAnt هم استفاده شده بود.

این اسکریپت به طور کلی کارهای زیر رو انجام می‌ده:
  1. قبل از هر کاری، دایرکتوری‌های لازم برای انجام پروسه Build آماده می‌شن.
  2. آخرین نسخه فایل‌ها که آمادگی انتشار رو دارن (و با Label خاصی مشخص شده‌اند) از SourceSafe گرفته می‌شه.
  3. پروژه‌ها به ترتیب کامپایل می‌شن.
  4. تمام فایل‌هایی که برای اجرای سایت لازم هستند به یک مسیر موقت کپی می‌شن. در واقع تو این مرحله فایل‌هایی که به وجودشون روی سرور نیازی نیست (مثل فایل‌های cs.) حذف می‌شن.
  5. فایل web.config برای کار روی سرور آماده می‌شه. از جمله این که Custom Errors و Health Monitoring فعال می‌شن و system.web/compilation/debug غیر فعال.
  6. فایل‌هایی که نسبت به نسخه موجود روی سایت تغییر کردن به یک دایرکتوری مشخص کپی می‌شن تا نیازی به کپی مجدد همه فایل‌ها به روی سرور نباشه. برای این کار مجبور شدم یک Task بنویسم که این دایرکتوری رو با یک دایرکتوری دیگه (که شامل یک کپی کامل از همه فایل‌های روی سرور هستش) مقایسه کنه و فایل‌های جدید و یا تغییر کرده رو پیدا کنه.
مرحله بعدی انتقال فایل‌ها به روی سروره که فعلا به طور دستی انجام می‌شه. هنوز وقت نکردم Task لازم برای این کار رو کامل بنویسم و تست کنم.

بعد از این که فایل‌ها کپی شدن و مشکلی نبود، مرحله دوم اسکریپت اجرا می‌شه:
  1. دایرکتوری که تو مرحله پنجم بهش اشاره شد به روز می‌شه تا برای بار بعد که اسکریپت اجرا می‌شه آماده باشه.
  2. یک فایل ZIP از تمام فایل‌های کپی شده ساخته می‌شه.
برای ویکی‌ها تصمیم بر این شد که امکان ویرایش برچسب‌ها به همه کاربرها داده بشه؛ وقتی عنوان و متن ویکی رو هر کسی می‌تونه ویرایش کنه، برچسب‌ها دیگه فکر نکنم خیلی مساله‌ساز باشه. اما برای لینک‌ها فعلا قرار شد که تنها به بعضی کاربرها دسترسی ویرایش داده بشه. امکان auto complete برای برچسب‌ها رو هم تو لیست کارها نوشتم که اضافه کنم.

در ضمن، مشکل ارسال لینک‌هایی که توی آدرسشون کاراکترهای خاص (مثل ~ و ,) داشتن رو هم برطرف کردم.
62 لینک ارسال شده، 19 لینک پرطرفدار، 192 رای، 4 ویکی، 25 کاربر جدید، 17 کاربر فعال، 149 برچسب و 18 نظر حاصل کار سایت در هفته اول بود. بخش لینک‌ها به خوبی داره پیش می‌ره و لینک‌های خیلی مفیدی ارسال شده اما بخش ویکی‌ها هنوز فعالیت خاصی نداشته و کاربرها تمایلی برای ساخت و یا ویرایش ویکی نشون ندادن.

از نظر کیفیت مطالب ارسال شده، شخصا خیلی راضیم و به جرات می‌تونم بگم که کاملا بالاتر از حد انتظارم بوده؛ اما از نظر کمیت انتظار بیشتری داشتم. با این که چند نفر از دوستان آشنا و غیر آشنا لطف کردن و تو وبلاگشون خبر راه اندازی مجدد سایت رو نوشتن، اما هنوز تعداد خیلی کمی از مردم از سایت جدید خبر دارن! در همین راستا برای تمام 3060 کاربر قدیمی سایت یک ایمیل فرستادیم و خبر راه اندازی سایت جدید رو اعلام کردیم و در ضمن این امکان رو براشون فراهم کردیم که حتی اگه کلمه عبورشون یادشون رفته، بازهم بتونن با همون نام کاربری قدیمی که داشتن وارد سایت بشن. تقریبا نصف این ایمیل‌ها برگشت خورد، اما تا الان 53 کاربر قدیمی سایت از همین طریق دوباره عضو شدن.

از نظر فنی هم به جز چند مورد جزئی که برطرف کردم، مشکلی نبوده و سایت خیلی خوب کار کرده. از چند روز دیگه کم کم می‌رم سراغ اضافه کردن یک سری امکانات جدید؛ از جمله یک ادیتور درست حسابی برای ویکی‌ها.

تنها مسئله نسبتا مهمی که تو این چند روزه پیش اومده مربوط به برچسب‌هاست. مدلی که از اول برای برچسب‌ها در نظر گرفته بودیم این بود که کاربری که یک لینک جدید ارسال می‌کنه و یا یک ویکی جدید می‌سازه برچسب‌هایی رو که خودش مناسب می‌دونه مشخص کنه و بقیه کاربرها هم بتونن در صورت تمایل برچسب‌های جدیدی رو اضافه کنن و موقع نمایش هم کل این برچسب‌ها نشون داده بشه. اما تا الان چندین مورد پیش اومده که برچسب‌های زده شده اشتباه و یا زیادی هستن و به طبقه بندی درست مطالب سایت کمکی نمی‌کنن. برای همین داریم روی این قضیه فکر می‌کنیم که به تمام کاربرها امکان ویرایش برچسب‌ها رو بدیم تا همه بتونن برچسب‌های اشتباه رو اصلاح کنن. نظر شما چیه؟ کار خوبیه؟
امروز (سه شنبه، 5 آذر) از ساعت 10:30 تا 11:30 صبح، ممکنه سایت به دلیل Server Maintenance در دسترس نباشه.
چرا سایت جدید؟
سایت‌های آموزشی فارسی رو می‌شه به دو گروه تقسیم‌بندی کرد. یک- سایت‌هایی که مقاله-محور هستند و دو- سایت‌هایی که با هدف پرسش و پاسخ و در قالب یک انجمن فعالیت می‌کنند. iDevCenter از روز اولی که شروع به کار کرد جزو گروه اول بود. به این شکل که کاربرها مقالاتی رو در زمینه‌های مختلف ارسال می‌کردند و این مقالات بعد از تایید و ویرایش شدن روی سایت قرار داده می‌شد. در واقع، بخش مقاله‌ها هسته اصلی و تشکیل دهنده تمام محتوای سایت بود. اما این مدل خیلی سریع جذابیت و کارائی خودش رو از دست داد. حجم مقالاتی که برای سایت ارسال می‌شد نسبت به حجم اطلاعات تولید شده در زمینه‌های مختلف بسیار کمتر بود و کیفیت آنها نیز نسبت مطالبی که به زبان انگلیسی در سایت‌های خارجی می‌شد پیدا کرد، بسیار پایین‌تر بود. از طرف دیگه با فراگیر شدن وبلاگ‌ها مردم ترجیح می‌دادن مطالبی که می‌نوشتند در وبلاگ خودشون منتشر بشه. به همین دلیل، در نسخه دوم سایت در کنار بخش مقاله‌ها، بخش دیگری به نام "فهرست مقالات فارسی" اضافه شد با هدف ایجاد یک فهرست کامل از مطالب خوبی که در وبلاگ‌ها و سایت‌های فارسی نوشته می‌شد. اما یک مشکل دیگه همچنان باقی موند و اون هم این بود که من به تنهایی مسئول نگهداری و وارد کردن محتوای سایت بودم. یک آدم هر چقدر هم که علاقه و وقت و انرژی داشته باشه، نمی‌تونه یک‌تنه برای طولانی مدت یک سایت رو به تنهایی اداره کنه. این شد که سایت قبلی روز به روز فعالیتش کم‌تر شد و حدود دو سال و سه ماه پیش به طور کامل کرکره‌اش پایین کشیده شد.

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

چرا بخش لینک‌ها؟
این بخش در واقع نسخه تکامل یافته همون "فهرست مقالات فارسی" در سایت قبلیه. همه ما هر روز در اینترنت به مطالب مفید زیادی برمی‌خوریم که ترجمه و انتشارشون در قالب مقاله برای سایت همونطور که گفتم، نه امکان‌پذیره و نه دیگه جذابیتی داره. هدف این بخش به اشتراک گذاشتن لینک این مطالب مفید با بقیه کاربران سایته. هر کاربری می‌تونه لینک مطالب خوبی رو که پیدا می‌کنه و یا خودش تو سایت/وبلاگش می‌نویسه ارسال کنه و بقیه کاربران هم با رای دادن به این لینک‌ها، تعیین می‌کنند که آیا این لینک‌ها واقع مفید هستن و ارزش نمایش در صفحه اصلی بخش لینک‌ها رو دارن یا نه.

چرا بخش ویکی‌ها؟
قبول کنید که خیلی بده ما ایرانی‌ها با این همه ادعا، یک مرجع فارسی درباره برنامه نویسی و طراحی وب نداشته باشیم. یک مرجع که درباره هر موضوعی یک معرفی کوتاه بکنه، تاریخچه اون رو به اختصار شرح بده و چندین منبع فارسی و انگلیسی برای اطلاع بیشتر معرفی بکنه. هدف این بخش دقیقا همینه. یه جورایی همون ویکی‌پدیا ولی به فارسی و فقط در زمینه برنامه‌نویسی و طراحی وب. امیدوارم این بخش طوری بشه که مثلا اگر کسی از شما سوال کرد که "jQuery چیه؟" شما بتونین بهش بگین "برو تو بخش ویکی‌های سایت iDevCenter درباره‌اش بخون".
تو این مدت دو سال و خورده‌ای بعد از بسته شدن سایت قبلی، بعضی مواقع به سرم می‌زد که سایت رو دوباره راه بندازم. ولی نمی‌خواستم مدل قبلی (که دیگه جواب نمی‌داد) تکرار بشه. می‌خواستم اگر قراره سایت دوباره راه بیافته، به یک شکل جدید، متفاوت و خیلی مفیدتر باشه. حدودا یک سال پیش بود که ایده اولیه سایت جدید شکل گرفت و با حسین تصمیم به پیاده سازیش گرفتیم. تو پست‌های بعدی راجع به فلسفه کلی سایت و بخش‌های مختلفش توضیح می‌دهم.

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

یه نکته رو بگم فقط که اگر عضو قدیمی سایت بودین لازم نیست دوباره عضو بشین و می‌تونین با همون نام کاربری و کلمه عبور قبلی‌تون وارد سایت بشین.