یکسال پیش، همچین موقعهایی، شروع به نوشتن یه سایت کردم که بعدا اسمش رو گذاشتم شایستهترین. البته الان دیگه مدت زمان دامینش تموم شده و عملا این سایت دیگه وجود نداره (از طریق هاست میتونید البته به یه صفحهش دسترسی داشته باشید). توی این مطلب میخوام راجع به شایستهترین صحبت کنم و بگم چی بود و چرا بود و بودنش چه فایدهای داشت. پس کم حرفی میکنم و میرم سر اصل مطلب.
به عنوان یه دوست بهتون توصیه میکنم اگه برنامه نویس هستید، سعی کنید بیکار نمونید و هر از چند گاهی برای تفریح هم که شده یه پروژه کوچیک نرم افزاری رو انجام بدید. شایستهترین بر مبنای همین فکر شکل گرفت. یه روز که نشسته بودم و فیلم سوشال نتورک رو میدیدم، رسید به صحنه ای که زاکربرگ شروع به نوشتن یه سایت کرد به نام فیسمش. فیسمش اینجوری کار میکرد که زاکربرگ یه سری از عکسهای همکلاسیهاش رو با استفاده از هک کردن سرور دانشگاه تونسته بود به دست بیاره، بعد هر کس که وارد سایت فیسمش میشد براش به طور اتفاقی دو تا از این عکسها لود میشد (عکس هم کلاسیهاش) بعد اون فردی که وارد سایت شده ازش سوالی پرسیده میشد که کدوم یکی از این دو نفر عکس جذابتری دارن. و اون فرد بر روی هر عکسی که کلیک میکرد با استفاده از یه الگوریتمی یه امتیاز به اون عکس داده میشد. خلاصه هر عکس بر اساس درجه جذابیت رتبه بندی میشد.
ایده جالبی هست در کل ولی اگه برای افراد آشنا این پیاده بشه یه جورایی ایدهی کثیفی از کار درمیاد. چون شاید یکی دوست نداشته باشه اصلا از عکسش اینجور جاها استفاده بشه و یا کلی دلیل دیگه.
خب من این فیلم رو دیدم و همینجور که با خودم فکر میکردم دیدم خیلی جالب میشه اگه همین کارو با عکسهای فیسبوک بچههای دانشگاه انجام بدم. با اینکه میترسیدم شاید آخر و عاقبت بدی واسم داشته باشه، اما با یکم پررویی شروع کردم به نوشتن این برنامه.
قسمت اول: جمعآوری اطلاعات
خب مهمترین قسمت این بود که بتونم اطلاعات تمام کسایی که توی دانشگاهمون درس میخونن رو جمع کنم. فکرهای زیاد به سرم زد، یکیش این بود که یه پیج فیسبوک بزنم و بقیه رو دعوت کنم توش تا بتونم از اطلاعاتشون استفاده کنم، راه دیگه این بود که خودم یکی یکی برم پیج بچههای دانشگاه و اطلاعات رو جمع کنم. این دوتا ایده زیاد جالب نبود. چون ایده اولی رو هیچکس مطمئنا نمیومد سمتش و ایده دوم هم اضافه کاری خیلی زیادی داشت. راهی که ازش استفاده کردم برای جمعآوری اطلاعات این بود که اگه دقت کرده باشید، فیسبوک یه قسمت داره به نام Find Friends وقتی وارد این قسمت میشید با استفاده از یه سری الگوریتم بهتون افراد رو پیشنهاد میده برای دوستی. اگه باز بیشتر دقت کرده باشید اون سمت چپش یه سری چک باکس هست برای فیلتر کردن دوستها بر اساس اینکه کجا درس میخونن، اهل کجان، یا کجا کار میکنن. اگه یکم اهل هک کردن باشید الان متوجه شدید که من چیکار کردم…
خب فک کنم تابلو بود که چی کار کردم . کاری که کردم تیک زدن بخش دانشگاه خودمون بود، اینجوری فیسبوک فقط کسایی رو بهم پیشنهاد میده که توی دانشگاه خودمون درس میخونن. یعنی دقیقا همونچیزی که دنبالش بودم یه لیست بلند بالا از هم کلاسیام. خب اما اینجا کار تموم نشد. من نیاز داشتم تا اسمها و عکسها رو داشته باشم. خب باز حجم داده ها زیاد بود، پس متوصل شدم به کد نویسی (درس اول برنامه نویسی: اگه قراره یه کاری رو خیلی زیاد انجام بدی، برنامهشو بنویس). یه اکستنشن نوشتم برای کروم، که کار این اکستنشن این بود که برای من آیدی فیسبوک تمام مواردی که توی اون صفحه به من پیشنهاد داده میشد رو جمع میکرد و توی یه صفحهی دیگه برای من آیدی شونو برمیگردوند. اول از همه یه توضیح کوچیک بدم که اکستنشن چیه و چی کار میکنه؟ اکستنشن یا افزونه در واقع یه تکه کد جاوااسکریپت هست که بر روی مرورگر نصب میشه و اجازه میده بعضی از امکانات اضافی به سایتها اضافه بشه، مثلا شما میتونید اکستنشن بزرگ کردن سایز فونت سایتها رو بگیرید و نصب کنید، بعد از این که نصب کردید با توجه به کاری که توی اون اکستنشن انجام میشه، میتونید اندازه فونت سایتها رو کم و زیاد کنید. (این یه مثال بود، مطمئن نیستم که همچین چیزی هست یا نه) خب این اکستنشن هم که من نوشتم در واقع توی کد html سایت جستجو میکرد وبا استفاده از امکاناتی که جاوااسکریپت در اختیارم میزاشت برای من آیدی های فیسبوک بچهها رو برمیگردوند. (اگه یکم جاوااسکریپت کار کرده باشید میدونید گرفتن value از یه تگی که میدونیم اسمش چی هست کار خیلی خیلی خیلی … خیلی راحتی هست).

کدهای html صفحهی جستجوی دوستان در فیسبوک. اگه دقت کنید، میبینید فیسبوک آیدی افراد رو یه جورایی جا داده بین کدهای html
قسمت دوم: اپن گراف (Open Graph) فیسبوک چجوری کار میکنه؟
اگه بخوام تو یه جمله بگم اپن گراف فیسبوک چیه اینجوری باید بگم که اگه فیسبوک رو یه ماشین فرض کنیم، موتورش همین اپن گراف هست. تمام اطلاعات و اتفاقات (از لایکی که میزنید تا عکسی که شیر میکنید) اونجا ذخیره میشه. خب، فیسبوک حتما میدونید که برای کاربراش حریم خصوصی داره، یعنی مثلا اگه من دوست شما نیستم، نمیتونم عکسای شما رو ببینم، تا اینکه شما اجازه بدید، اما خوشبختانه، چند مورد هم از اطلاعات هست که هر کار کنید عمومی هست مثل نام، نام خانوادگی، جنسیت و عکس پروفایلتون. اینا رو روش کنترلی ندارید شما. برای اینکه ببینید چطور میشه به این اطلاعات دسترسی پیدا کرد کافیه آیدی فیسبوکتون یا یوزرنیم فیسبوکتون رو انتهای این آدرس بزارید. یه فایل متنی json واستون برمیگرده که اطلاعات اونجاس.
http://graph.facebook.com/put-your-facebook-id-or-your-username-here
. واسه اینکه از این قسمت اطلاعات بیشتر کسب کنید، میتونید با یه سرچ ساده توی گوگل ببنیند چه امکانات زیادی رو اپن گراف در اختیارتون گذاشته، چجوری میتونید باهاش برنامه نویسی کنید.
خب فاصله نگیریم از بحث. ما یه سری آیدی داشتیم از بچههایی که توی دانشگاه هم کلاسیمون بودن. از طرفی اپن گراف فیسبوک هم با گرفتن آیدی نام و نام خانوادگی و عکس پروفایل پیکچر افراد رو بهمون برمیگردونه. 1+1 = 2 .
پس کل کاری که اینجا انجام دادم این بود که با یه اسکریپت php که آیدی هارو به اپن گراف فیسبوک میفرستاد و در جواب جنسیت افراد رو برمیگردوند، تک تک این آیدی ها از لحاظ جنسیت تفکیک شدن و در دیتابیس ذخیره شدن. (تا اینجا کاری داشت؟)
قسمت سوم: خریدن دامین، راه انداختن سایت، درست کردن html و css و … و انجام دادن یه سری از کارهای روتین
خب دامین رو خریدم (یادش بخیر اونموقع دلار ارزون بود و دامنه .com نه هزار تومن بود، الان شده بیست هزار تومن) یه مقدار کد اچ تی ام ال زدم و سایت آماده بارگزاری شد. اسمش رو گذاشتم شایستهترین. طرز کارش دقیقا شکل فیسمش بود با همون الگوریتم امتیاز دهی، با همون ایده، اما با عکسهای فیس بوک هم کلاسیایی دانشگاهیم. کل این اتفاقات در عرض سه روز افتاد. اینجوری هم کار میکرد که با استفاده از یه کد SQL به طور رندوم دو تا ردیف که کد جنسیتشون یکی بود انتخاب میشد، با درخواستی که به اپن گراف فیسبوک فرستاده میشد عکسها و اسمهاشون برام میومد (کل دیتا بیس سه تا ستون داشت، آیدی، کد جنسیت و امتیاز
) و من اونا رو میزاشتم توی صفحه، و فردی که اومده بود امتیاز بده، بعد از اینکه روی عکس کلیک میکرد آی دی عکس به سرور میومد و الگوریتم امتیاز دهی روش اجرا میشد و نتیجه ذخیره میشد. به همین راحتی، به همین خوشمزگی!
نتیجه گیری
نتیجه گیری رو میسپرم به خودتون، اما همونجور که گفتم، اگه فکر میکنید چیزی باید باشه و نیست این وظیفهی شماست که به وجودش بیارید، شاید این کاری که انجام دادم اصلا ارزشی نداشت، شاید فکر کنید وقت تلف کردن محض بود، اما از همین کار کوچیک و تفریحونه سه روزه، کلی تجربه پیدا کردم، که الان دارم روی یه پروژهی دیگه (که بعدا حتما خبرشو بهتون میگم) از همون تجربهها استفاده میکنم.
پ.ن: یه سری آمار از این سایت تونستم به دست بیارم که بعدا حتما بهتون میگم، خیلی جالب بود واسه خود من به شخصه.
پ.ن: از همه دوستام که شاید اون موقع ناراحت شدهن معذرت میخوام.










