گیک فارسی

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

از کجا بفهمیم یک سایت از چه سیستم عامل ،‌ سرویس دهنده وب و زبان برنامه نویسی استفاده میکنه ؟

نویسنده:
6 آگوست 15

یکی از مباحثی که در انجمن‌ها و جوامع برنامه نویسان وب مطرح هست این موضوعه که چه وب سایت‌های موفقی از زبان برنامه نویسی مورد علاقه من استفاده میکنند !؟ گذشته از اینکه این سؤال به نظر من اصلاً مهم نیست چون من دوستان برنامه نویس موفقی دارم که از Scala برای توسعه وب استفاده میکنند در حالی که پروژه خیلی موفق و دهن پر کنی هم در موردش وجود نداره در عوض میشه این موضوع را بهانه قرار داد تا یاد بگیریم چطور میشه خیلی ساده تشخیص داد یک سایت از چه سیستم عامل ، سرویس دهنده وب و زبان برنامه نویسی استفاده میکنه.

مدیر سیستم ،‌تحلیل شبکه

شاید اولین اشتباه در نگاه اول به یک سایت این باشه که از روی پسوند فایل‌ها استنباط کنیم که از چه زبان برنامه نویسی و سیستم عامل و … داره استفاده میشه که البته خیلی قابل اطمینان نیست چون واقعاً براحتی از طریق یک فایل htaccess. روی سیستم عامل لینوکسی میشه فایل‌ها با پسوند aspx را دوباره نویسی (URL Rewriting) کرد یا حتی از سرویس دهنده وب بخوایم پسوند aspx را به عنوان یک پسوند معتبر برای PHP فرض کنه.

من نمیخوام وارد بحث‌های کارآگاهی و تخصصی شبکه و بررسی پورت های سرویس دهنده و موارد پیچیده بشم. موردی هم که میخوایم از طریقش بررسی را انجام بدیم توسط یک مدیر سرور قابل دستکاریه که یک نمونه هم معرفی میکنم اما عموما این اتفاق نمیفته و از طریق Header هایی که سرویس دهنده میفرسته میشه فهمید اون پشت چه خبره !

دستوری که میخوایم ازش استفاده کنیم خیلی سادست ، مثلاً بیاین سایت digikala.com را بررسی کنیم :

curl -s -I digikala.com

که این خروجی را بر میگردونه :

HTTP/1.1 301 Moved Permanently
Content-Length: 147
Content-Type: text/html; charset=UTF-8
Location: http://www.digikala.com/
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Wed, 05 Aug 2015 22:53:37 GMT

که ازش متوجه میشیم داره از سیتم عامل ویندوز ، IIS7.5 به عنوان سرویس دهنده و زبان ASP .NET استفاده میکنه.

اما همیشه هم نمیشه ۱۰۰ درصد در مورد یک یا چند مورد از سوالاتمون اطمینان حاصل کنیم ، مثلاً خروجی سایت Ponisha.ir :

HTTP/1.0 200 OK
Date: Wed, 05 Aug 2015 22:59:54 GMT
Server: Apache/2
X-Powered-By: PHP/5.5.27
Set-Cookie: PonishaSession=kbt88b72ms7p9nk2l9bpnqiiu7; path=/; domain=.ponisha.ir
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: User-Agent
Content-Type: text/html
Connection: close

مشخصه که سرویس دهنده Apache هست و زبان برنامه نویسی PHP 5.5 اما با اطمینان نمیتونیم بگیم داره از سرویس دهنده لینوکسی استفاده میکنه چون روی ویندوز هم قابل استفاده هست اما در حالت نرمال و حرفه‌ای ۹۵ درصد میشه اطمینان داشت سیستم عامل از خانواده لینوکس یا یونیکس هستش.

همونطور که گفتم مدیر سیستم میتونه این اطلاعات را دستکاری کنه ، مثلاً خروجی mihanblog.com را اگه ببینید :

HTTP/1.0 200 OK
Date: Wed, 05 Aug 2015 23:04:46 GMT
Content-Type: text/html
Set-Cookie: mib_lb_id=m0; path=/; domain=.mihanblog.com
Cache-Control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Vary: Accept-Encoding
Server: Toofun/1.0.1
Connection: close

هموطنر که میبینید تنها موردی که برمیگردونه سرویس دهنده هست که اون را Toofun معرفی میکنه اما من که چنین سرویس دهنده ای را نمیشناسم اما گویا سایت‌های cloob.com و aparat.com هم چنین خروجیی را بر میگردونه (به نظر میاد مالک همشون یک گروه باشه) اما با کمی مطالعه دقیقتر و مراجعه به آرشیو های سایت‌های موجود و دیدن ردپای nginx میشه حدس زد شاید Forky ی از اون باشه اما نمیشه صد در صد گفت.

یادتونه گفتم به پسوند فایل‌ها اعتماد نکنید ؟ خوب اگه خروجی سایت بانک ملت را ببینیم :

HTTP/1.0 301 Moved Permanently
Cache-Control: private
Content-Length: 150
Content-Type: text/html; charset=utf-8
Location: http://bankmellat.ir/default.aspx
Server: Apache/2.2.3 (Linux/SUSE)
Date: Wed, 05 Aug 2015 23:11:28 GMT
Connection: close

داره میگه سرویس دهده Apache روی لینوکس SUSE اما پسوند فایل Header مربوط به Location که داره Redirect میکنه aspx هست. استنباط اینکه داره برای گمراهی پسوند را عوض میکنه خیلی قوی‌تر از این هست که فکر کنیم IIS داره خروجی گمراه‌کننده برای جا زدن خودش به عنوان Apache تولید میکنه.

رقابت Nginx و Apache در چند سال اخیر و اقبال بیشتر Nginx

نویسنده:
19 فوریه 15

اگر تا به حال مدیریت یک سایت را بر روی یک Server اختصاصی حالا چه Dedicated یا VPS تجربه کرده باشین میدونین که انتخاب یک سرویس دهنده و تنظیمات درستش یکی از مهمترین چالش های مدیریت Server هست.

مقایسه سرویس دهنده ها ۱

اولین نامی که در ذهن برای سرویس دهنده وب متبادر میشه قطعاً Apache هستش. آپاچی از سال ۱۹۹۵ تا کنون مقام اول در سرویس دهی به میلیون‌ها وب سایت را بر عهده داشته ، کاربران بسیاری داره ، ماژول های زیادی در راستای بهبود و توسعه امکاناتش براش نوشته شده و در جامعه سورس باز هم جایگاه تعریف شده و مهمی داره. اما چه دلیلی باعث میشه که با این تفاسیر بخواهیم به سرویس دهنده های دیگه فکر کنیم ؟

آپاچی وقتی با ترافیک بالا روبرو میشه کند میشه و این موضوع دلیلی نداره جز افزایش Process ها که قاتل Memory هستند و علاوه بر اون این Process ها با ایجاد Thread ها بر جنگ دسترسی به منابع Memory و CPU دامن میزنن. حتی با وجود MPM هایی مثل worker و event علاوه بر pre_fork باز هم Apache با مشکلات Process ها و Thread هاش دست به گریبان هست و زمانی که ترافیک افزایش پیدا میکنه با کندی مواجه میشه و گاهی اوقات با توجه به تنظیماتش کلاً مانع از دسترسی کاربران به سایت میشه.

در مقابل Apache انتخاب های دیگه ای هم وجود داره که Nginx در بینشون اقبال بیشتری داشته اما چرا ؟ بر خلاف Apache که با ایجاد Process ها و Thread های جدید درخواست های کاربر را پاسخ میده ، Nginx به صورت Event Driven و Asynchronous با توجه به تنظیمات مدیر سیستم که تعداد Worker Process ها را تعین میکنه و هر Process فقط یک Thread داره و میتونه هزاران کاربر را پاسخگو باشه کار میکنه.این تفاوت عملکرد تأثیر خیلی زیادی داره و Nginx را Stable تر و سریعتر میکنه. همین افزایش سرعت باعث میشه بسیاری از مدیران سیستم به سمت Nginx تمایل پیدا کنند و محبوب بشه.

مقایسه سرویس دهنده ها ۲

یکی از ایراد هایی که به Nginx گرفته میشه این هست که برای کار با محتوای دینامیک بر خلاف Apache که با ماژول هایی نظیر mod_php و mod_python و mod_rails و mod_rack میتونه مانع از اجرای هر بار Interpreter اون زبان بشه عمل میکنه و در این زمینه کند خواهد بود.

اخیراً دو تا پروژه وب سایت روی Server اختصاصی VPS را شروع کردم و با توجه به مطالبی که در مورد Nginx خونده بودم میخواستم امتحانش کنم و ببینم چقدر از Apache بهتر عمل میکنه. البته من با استفاده از php-fpm روی Nginx اصلاً مشکل سرعت برای php که در پاراگراف بالا اشاره کردم را احساس نکردم و در کل به نظرم خیلی بهتر از Apache جواب میده.مشکل بزرگی که داشتم عدم پشتیبانی از htaccess. برای همون بحث سرعت بود که تونستم به روش Nginx مشکلاتش را حل کنم.

شما هم میتونین روی سیستم Local خودتون Nginx را امتحان کنید و از سرعت بالاش در پروژه های بعدی بهره ببرید.

تبریک سال نو میلادی و مروری بر مهمترین خبرهای دنیای سورس باز و لینوکس

نویسنده:
1 ژانویه 15

امروز یکم ژانویه ۲۰۱۵ میلادی هست و من سال نو میلادی را به همه هموطنان مسیحی کشورم تبریک میگم و امیدوارم سال بسیار خوبی را در پیش داشته باشند و فراموش نکنند که ایران با همه قومیت ها ، مذاهب و فرهنگ هاش زیبا و دوست داشتنیه.

سال میلادی ۲۰۱۵

اما در ادامه قصد دارم به برخی از مهم‌ترین خبر های دنیای سورس باز و لینوکس در سال میلادی که گذشت اشاره کنم :

۱. شاید یکی از شک آور ترین اتفاقات دنیای سورس باز مشکل امنیتی OpenSSL به نام Heartbleed بود که سایت‌های بسیاری را درگیر خودش کرد از جمله سایت خیلی از بانک های کشور خودمون و نشون داد فقط چون یک محصول سورس باز هست معنیش این نیست که امنه و حتماً باید توسط افراد متخصص بیشتری مورد بررسی قرار بگیره.

۲. همونطور که میدونیم GPL یا مجوز استفاده عمومی که کپی نرم‌افزار های رایگان را در چارچوب یکسری قوانین آزاد کرده یکی از شناخته ترین و پر استفاده ترین مجوز های حقوق کپی رایت هست. در سال ۲۰۱۳ شاهد بودیم که بیش از ۷۷ درصد از پروژه های GitHub بدون هیچ مجوزی به صورت رایگان منتشر شده‌اند و این روند در سال ۲۰۱۴ هم ادامه پیدا کرد که نتیجه‌ای جز بروز شکایات حقوق در بر نخواهد داشت.

۳. در سال ۲۰۱۴ همه منتظر حضور گوشی های هوشمند با سیستم عامل اوبونتو و کنسول بازی قدرت گرفته از موتور بازی Steam بودند که محقق نشد. گوشی های هوشمند اوبونتو در فوریه ۲۰۱۵ به بازر عرضه می‌شوند ولی گویا نباید انتظار عرضه کنسول های بازی Steam را در سال ۲۰۱۵ داشته باشیم.

۴. ساخت و انتشار نرم‌افزار های آزاد در سال ۲۰۱۴ رشد بسیار خوبی داشته. از پروژه های ابری مثل Docker و OpenStack گرفته تا نسخه سورس باز MySQL که توسط Facebook عرضه شده ، کد های متن باز پروژه های ناسا ، ویرایشگر Atom تحت مجوز MIT توسط GitHub ، ابزار Encrypt کردن ایمیل و موتور PDF مرورگر Chrome توسط گوگل و از همه شُک آور تر مربوط به سورس باز شدن Net. توسط مایکروسافت بود.

۵. در سالی که گذشت شاهد اولین قدم کشور انگلستان برای مهاجرت از MS Office به نرم‌افزار های سورس باز با اعلام کردن ODF به عنوان فرمت استاندارد اسناد بودیم. فرانسه هم به Open Government Partnership پیوست و شهر های ژنو ، تولوز و لس آنجلس گام های خوبی را در مهاجرت به سیستم‌ عامل ها و نرم‌افزار های سورس باز برداشتند.

۶. سخت‌افزار های باز هم از دو سال پیش با تولد Raspberry PI که تا الان ۲٫۵ میلیون قطعه در قالب Credit-Card Sized Computer ازش فروخته شده و امسال هم مدل +B عرضه شده و فعالیت‌های گسترده Kano و Arduino و غیره مژده آینده خوبی را برای Open Hardware میده.

۷. در آخر هم به سالگرد های مهم میپردازیم. امسال چهار سالگرد ده سالگی برای پروژه OpenStreetMap ، سرویس دهنده وب NGINX ، سیستم عامل محبوب Ubuntu و مرورگر خوب Firefox داشتیم که امیدوارم با قدرت بیشتر به کارشون ادامه بدهند. Creative Commons دوازده سالگیش را جشن گرفت و بنیاد نرم‌افزار آپاچی هم ۱۵ سال رهبری و نو آوری در جامعه سورس باز را گذراند.