وبلاگ شخصی محمد فدوی

آزادی رو از رایانه‌ شخصیت شروع کن

آزادی رو از رایانه‌ شخصیت شروع کن

وبلاگ شخصی محمد فدوی

محمد فدوی هستم. علاقه زیادی به کامپیوتر و مباحث مربوط بهش دارم؛ البته تحصیلاتم هیچ ارتباطی با کامپیوتر نداره و به همین دلیل هیچوقت خودم رو کارشناس در این زمینه نمیدونم. در این وبلاگ یه سری مطالب جالب (از نظر خودم) رو قرار میدم تا بعدا گمشون نکنم. امیدوارم علاوه بر خودم برای دیگران هم مفید باشه.

طبقه بندی موضوعی
آخرین مطالب

۴ مطلب در بهمن ۱۳۹۳ ثبت شده است

انسانیت عادی!

ensaniat

Nodejs چیست؟

بدون شک مدت زیادیه اقبال برنامه‌نویسان وب به سمت فریمورک‌هایی مثل PHP و ASP.net خیلی بیشتر از فریمورک‌های دیگه‌ست. اما آیا واقعا هیچ رقیبی برای این فریمورک‌ها وجود نداره؟ بدون شک این‌طور نیست. امروز میخوام یه فریمورک نسبتا جوان ولی انقلابی رو بتون معرفی کنم.


رایان دال چندسال پیش موتور جاوااسکریپت کروم یاهمون V8 رو ویرایش کرد و طوری تغییرش داد که حالا تبدیل به یه فریمورک وب خیلی جدید شده: Nodejs! (بخونید نُدجِی‌اِس)

خب، قبول. ولی حالا این فریمورک چه چیزایی رو به همراه آورده که ما رو به خودش ترقیب کنه؟ اینجا می‌خوایم همین رو بررسی کنیم.

  1. استقلال از سکو: ندجی‌اس توانایی اجرا شدن روی همه‌ی سیستم‌عامل‌های موجود مثل Windows، Linux و Mac OSX رو داره.
  2. زبان آشنا: تقریبا همه‌ی برنامه‌نویسای وب مدت‌ها با جاوااسکریپت برنامه‌نویسی کردن و از این نظر نیاز به آموزش چندانی ندارن.
  3. مدیر بسته‌ی اختصاصی (NPM): کنار ندجی‌اس یه مدیر بسته‌ی خیلی جمع و جور نصب می‌شه که به آسانی می‌شه باهاش بسته‌های مورد نیاز توی برنامه‌نویسی رو با یه دستور نصب کرد. همچنین می‌شه به آسونی بسته‌های نوشته شده توسط خودمون رو هم با دیگران به اشتراک بذاریم تا ازشون  استفاده کنن.
  4. محیط‌های توسعه: روز به روز به محیط‌های توسعه‌ی ندجی‌اس داره افزوده می‌شه. برای برنامه‌نویسی ند میشه از ادیتورهایی مثل Emacs، Vim، SublimeText، jEdit، Adobe Brackets و Atom استفاده کرد. علاوه بر این IDEهایی مثل IntelliJIDEA، KomodoIDE، WebMatrix، Nodeclipse، Nide ابزارهایی رو برای برنامه‌نویسی ند فراهم کردن! ولی این همه‌ش نیست. می‌شه توی محیط‌هایی مثل Cloud9 بصورت آنلاین برنامه‌نویسی ند کرد!
  5. خداحافظ وب سرور: توی ند دیگه هیچ نیازی به یه وب‌سرور جدا مثل آپاچی نیست. ند خودش همه‌ی زحمات رو تقبل می‌کنه.
  6. دیدگاه جدید: توی فریمورک‌های مشهوری مثل PHP، به ازای ورود هر کلاینت جدید یه ریسمان (Thread) ساخته می‌شه. ند این رسم رو کنار گذاشته و ادعا کرده که با میزان منابع خیلی کمتر و بدون ایجاد ساختار چندریسمانی می‌تونه کاربران خیلی بیشتری رو مدیریت کنه! یا حتی سیستم‌های توزیع شده‌ی خیلی بزرگتری رو ایجاد کنه! در ادامه به این مطلب بیشتر می‌پردازم. بیشتر بخونید: Non-blocking Algorithm
  7. برنامه‌نویسی فانکشنال: این رویکرد به نسبت جدید دقیقا حلقه‌ی گم‌شده‌ی موجود توی برنامه‌نویسی شیءگرای کلاسیک رو پوشونده. البته یادمون نره که جاوااسکریپت همزمان یه زبان برنامه‌نویسی شی‌ءگرا هم هست. بیشتر بخونید: Functional Programming
  8. توسعه‌ی آزاد: این فریمورک با لایسنس MIT منتشر می‌شه که یعنی متن بازه و آزاده!

خب تا اینجا خیلی از خوبیای ند رو مطرح کردم. اما در ادامه دوتاشون رو بیشتر توضیح خواهم داد.

اول اینکه «چطور ند بدون سیستم چندریسمانی درخواست‌ها رو مدیریت و پاسخ‌دهی می‌کنه؟» پاسخ توی یه تکنیک برنامه‌نویسی به نسبت نوین به نام برنامه‌نویسی Non-blocking نهفته‌ست. این یعنی هیچ خطی از ند باعث نمی‌شه اجرای برنامه با تاخیر مواجه شه. اینجوری به نوبت و بدون تاخیر به درخواست‌ها پاسخ داده میشه!
«یعنی چی؟ مگه می‌شه شما یه فایل رو برای خوندن باز کنی یا به پایگاه داده متصل شی و برنامه متوقف نشه؟»

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


«چرا وب‌سرور در ند نیاز نیست؟»

چون ند یه رویکرد جدید دیگه هم داره! شما در زمان برنامه‌نویسی PHP یا ASP.net و... یه وب‌سرور مثل آپاچی رو اجرا می‌کردید و ازش میخواستید در زمان مناسب برنامه‌ی شما رو برای پاسخگویی اجرا کنه. حالا توی ند شما یه برنامه می‌نویسید که وب‌سرور رو اجرا می‌کنه.


برای اطلاعات بیشتر می‌تونید به وبسایت ندجی‌اس و وبسایت فارسی ندجی‌اس مراجعه کنید.


یه جایگزین برای وایبر

تقریبا همه‌ی ما مشتری شبکه‌های اجتماعی مثل وایبر و واتساپ و لاین هستیم. امروز می‌خوام  یه جایگزین جدید و متن‌باز براشون معرفی کنم.
تلگرام یه شبکه اجتماعی تازه کاره که برروی همه‌ی سکوها از جمله Windows، Mac OSX، Linux، Android و غیره قابل اجراست. علاوه بر این کلاینت تحت وب خودش رو هم داره.

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

تا اونجایی که من امروز اطلاعات کسب کردم (باتشکر از دوستانی که این اطلاعات رو بهم دادن) سازندگان تلگرام که قبلا هم یه شبکه اجتماعی دیگه رو به اسم VK تاسیس کرده بودن  روس تبارن، و سرورهاشون - که متن‌بسته هم هستن - رو در آلمان قرار دارن. هرچند تلگرام بصورت متن‌بسته منتشر شده ولی APIهای اون عمومی هستن و برای مشاهده‌ی اونا می‌تونید اینجا رو ببینید.
واسه همینه که برای این سرور نوپا کلاینت‌های مختلفی نوشته شده که لیست اونا رو هم اینجا مشاهده می‌کنید.

به‌هرحال متن‌باز بودن کلاینت‌های تلگرام و همینطور Open API بودن خودش این نوید رو به ما می‌ده که دیگه این کلاینت‌ها از سیستم شخصیمون یا تلفن همراهمون  جاسوسی نمی‌کنن، هرچند هنوزم در مورد اینکه آیا از اطلاعات ما توی سرورهاش سو‌ء استفاده می‌شه یا نه نمی‌شه مطمئن بود.

و البته این‌هم  به این معنی نیست که دیگه هیچ راهی وجود نداره. تلگرام یک نوع چت امن به خصوص داره که امنیت چت شما رو تضمین می‌کنه. البته فعلا چت امن که از پروتکل نقطه-به-نقطه استفاده می‌کنه فقط روی کلاینت‌های موبایل تلگرام موجوده.

Telegram

چت در ترمینال

سلام

تا حالا شده بخواید توی ترمینال لینوکس چت کنید؟! درسته. نرم‌افزارایی مثل Telegram رابط خط فرمان (CLI) هم دارن و همینطور بعضی از کلاینت‌های IRC. ولی منظورم بدون هیچ نرم‌افزار اضافیه. اونم بدون هیچ سرور واسطی و بصورت نقطه به نقطه...