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

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

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

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

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

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

مهاجرت

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

blog.mfadavi.irدرحال حاضر وبلاگ شخصی من در آدرس fadavi.net قابل دسترسیه.

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

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. ولی منظورم بدون هیچ نرم‌افزار اضافیه. اونم بدون هیچ سرور واسطی و بصورت نقطه به نقطه...

نبریمش از یاد...

حسین (ع) بیشتر از آب تشنه لبیک بود، افسوس که به جای افکارش زخمهای تنش را نشانمان دادند و بزرگترین دردش را بی آبی نامیدند.

« دکتر شریعتی »


Imam Hossein

قدرت sudo!

قدرت sudo در یک نگاه!

Sudo

گنو/لینوکس امن است؟


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


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

حتی این نسبیت امنیت (!) تا جایی پیش می‌ره که می‌شه گفت هیچ سیستمی در عمل غیرقابل‌نفوذ نیست. تنها چیزی که امنیت نسبیش رو ممکنه برقرار نگه داره یا اونو در هم بشکنه ارزش اطلاعاته. این بعنی در اولین گام و مؤثرترین گام امنیتی اطلاعات مهم خودتون رو از دسترس خارج کنید و در حیاط خلوت خونتون قایم کنید! دیوارهای امنیتی فقط کار هکر رو سخت و پرهزینه‌تر می‌کنه ولی جلوش رو نمی‌بنده. سیستمتون رو اونقدر امن کنید که هزینه‌ی نفوذ به سیستم شما بیشتر از ارزش اطلاعاتش باشه.

از بحث فلسفی که بگذریم به یه قرارداد می‌رسیم! امنیت سایبری فقط موقعی تعریف می‌شه که دسترسی فیزیکی وجود نداشته باشه. در مقابل دسترسی فیزیکی فقط امنیت فیزیکی (مثل قفل و زنجیر کذایی) به درد می‌خورن.


حالا با این اطلاعات می‌تونیم به بررسی سیستم‌عامل‌های گنو/لینوکسی بپردازیم. چه چیز باعث می‌شه گنو/لینوکس امن‌تر از ویندوز معرفی بشه؟

  1. سیستم چندکاربره‌ی مؤثر: سیستم‌عامل‌های لینوکسی همگی چندکاربره هستن. این چیزیه که شاید حتی برای کاربر تازه‌وارد عجیب و غیرضروری باشه. اما کاربر از دید لینوکس پدیده‌ای فراتر از فردیه که پشت میز میشینه! هر پروسس و هر فایل ممکنه برای خودش یه کاربر هدف و با دسترسی محدود داشته باشه. حتی ممکنه خیلی از نرم‌افزارها رو تحت یه کاربر خیلی محدود اجرا کنیم تا مطمئن باشیم راه نفوذ از این پروسس بسته‌ست. برای مثال انجام اینکار در مورد نرم‌افزارهای اینترنتی خیلی پیشنهاد شده‌ست.
    اما مگه ویندوز چندکاربره نیست؟! چرا اما ویندوز به همون فردی که میشینه پشت میز میگه کاربر! تنظیمات ریز - و مهم - دسترسی هر کاربر، بررسی کردنش و حتی میزان تولید فایل‌های لاگ در ویندوز امکان پذیر نیست. این چیزیه که باعث شده در ویندوز نرم‌افزارهای ضدویروس محیطی رو به وجود بیارن به اسم محیط قرنطینه. چیزی که بطور پیشفرض در لینوکس وجود داره!

  2. سد ریشه‌ای: بسیاری از نقاط ضعف بالقوه در ویندوز بطور کامل در لینوکس از ابتدا منزوی و حذف شده. بحث در این مورد خیلی مفسله ولی با ارائه چند مثال شاید روشن‌تر بشه.
    مثلا در لینوکس هیچ چیزی خود به خود اجرا نمیشه! چیزی به اسم Autorun بطور کامل و یکجا در لینوکس وجود نداره. خب بله این کاربر عام رو اذیت میکنه در اول! اما همین کاربر بعد از کلی زحمت بطور ناقص میاد و Autorunها رو می‌بنده اونم با کلی نقطه ضعف جدید! بهتر نبود اگه از اول چنین چیزی در ویندوز در نظر گرفته نمی‌شد؟!
    یا مثلا در لینوکس بطور پیشفرض کاربر فعلی حداقل دسترسی‌ها رو داره. اگه دسترسی بیشتر بخواد یا باید این اجازه رو کسب کنه یا باید بره کنار تا کاربرویژه (superuser) بیاد و اینکار رو انجام بده. این در حالیه که در ویندوز بسیاری از دسترسی‌های غیرضروری رو داره.

  3. جامعه‌ی کاربری: ویندوز رو معمولا متخصصان مایکروسافت و لینوکس رو معمولا مردم گسترش می‌دن. نمیخوام بگم متخصصان مایکروسافت توان علمی لازم رو ندارن، اما واقعیت اینه که خیلی از هکرهای دنیا در زمره‌ی گسترش دهندگان لینوکس قرار دارن! لینوکس در این زمینه کار رو به کاردان سپرده و این برتری رو هم مدیون صداقت و آزاد بودن خودشه.

  4. یکپارچگی مخزن: هرچند مایکروسافت هم داره از مرکز نرم‌افزاریش رو نمایی می‌کنه اما این خصوصیت مدت‌هاست که در لینوکس وجود داره. pacman از توزیع‌های مبتنی بر آرچ، apt-get در توزیع‌های دبیانی، yum در ردهتی ها... همه‌ی اینا باعث می‌شن کاربر لینوکس عمده‌ی نیاز خودش رو از طریق این مخازن تأمین کنه. این خودش یه امنیت نسبی رو نوید می‌ده که البته ممکنه هم مورد سوء استفاده قرار بگیره. ولی از دانلود کردن نرم‌افزار از سایت‌های نامربوط خیلی بهتره!

  5. امنیت اخلاقی: این نام طنز رو برای این بکار بردم که کاربرای لینوکسی معمولا وسواس بیشتری در مورد نصب نرم‌افزار خصوصا از وبسایت‌های مستقل نشون میدن. به خاطر دیدگاهشون اکثرا سراغ نرم‌افزارهای کرکی نمی‌رن و این یعنی جلوگیری از سیلی از ترفندهای نفوذ! نمیخوام بگم کرک در لینوکس وجود نداره ولی حتی اگر کاربری هم دست به این کار بزنه معمولا این کرک توسط Keygenها یا مشابه‌شون انجام میشه و نه فایل‌های اجرایی کرک!
در پایان بازم تأکید می‌کنم این اصلا به معنی این نیست که کاربران لینوکس می‌تونن مطمئن باشن از امنیت سیستمشون. شاید بشه گفت کاربران لینوکسی می‌تونن یکم با خیال راحت‌تر در مورد امنیت فکر کنن. مثلا میتونن یه فلش مموری رو بدون اسکن کردن به سیستمشون وصل کنن و امثالهم...
اما این نکته همیشه باید یادمون باشه که اگه یه هکر بخواد به سیستم ما که پر از اطلاعات باارزشه نفوذ کنه بالاخره اینکار رو می‌کنه! اطلاعات سیستمتون رو کم ارزش نگه دارید!

َUbuntu 14.10 منتشر شد


بالاخره Ubuntu 14.10 با نام مستعار Utopic Unicorn منتشر شد. اینجور که معلومه تغییرات ظاهری چندانی اسب شاخدار آرمان‌گرا نسبت به پدرانش نداره.

یکسری از پکیج‌ها به روز شدن و ثبات (Stability) سیستم‌عامل به صورت چشم‌گیری افزایش پیدا کرده. البته این مربوط به نسخه‌ی رسمی Ubuntu با میزکار Unity هستش و من هنوز خبری از Xubuntu، Kubuntu، Lubuntu و Edubuntu ندارم... (هرچند هنوز همشون به صورت Stabe عرضه نشدن)


با همه‌ی این حرفا من زیاد میلی به نصب کردن 14.10 ندارم. به دو دلیل. اولاً من اصلا Ubuntu ندارم!!! مدتیه به Manjaro مهاجرت کردم و ثانیاً به دلیل اینکه نسخه‌های اکتبر Ubuntu (همونایی که اعشارشون ۱۰ هستش) پشتیبانی بلند مدت (LTS) ندارن.


همونطور که میدونید Ubuntu هرسال یه نسخه در ماه آوریل منتشر میکنه (با اعشار 04) این نسخه اصطلاحا بصورت Long Time Support یا LTS هست و تا ۵سال پشتیبانی داره. نسخه‌ی بعدی سالانه‌ی اوبونتو در ماه اکتبر منتشر می‌شه و این نسخه تا ۲سال پشتیبانی داره. البته این مسائل شاید برای کاربر خونگی زیاد اهمیت نداشته باشه. این پشتیبانی خصوصاً برای نسخه‌های سروری اوبونتو اهمیت داره.

نکته‌ی بعدی که شاید برای بعضیا جدید باشه اینه که هر عرضه از اوبونتو با یک نام مستعار میاد. به اینصورت که نام یک حیوان (یا موجود افسانه‌ای) به همراه یه صفت همیشه نام مستعار اوبونتو بوده. نکته‌ی جالب‌تر اینه که سیاست نامگذاری اوبونتو همیشه به اینصورت بوده که حرف اول این موجود و این صفت همیشه یکی بوده! مثل Gutsy Gibbon یا Lucid Lynx ...

در نهایت باید بگم این نظم یکی از مهمترین علل موفقیت اوبونتو بوده تا الان. هرچند که برای من به شخصه آپدیت‌های سروقت که معمولاً توی توزیع‌های Rolling Release مشاهده می‌شه مهمتره.

شمارش بیل‌گیتسی

شمارش به سبک مایکروسافت!


Bill Gates

منبع: www.jadi.net

مدیر دانلود: XDMan

XDman
xdman یه دانلود منیجر سبک، رایگان و مستقل از پلتفرمه که مدت زیادیه من مشتریشم!
به همه‌ی خوبیاش باید تحت Java بودنش رو هم اضافه کرد که دیگه محشره. علاوه بر دانلود‌های معمول می‌تونم باهاش فایل‌های فلش رو هم دریافت کنم. به سادگی با انواع مرورگرها هماهنگ میشه و غیره...
تنها ایرادی که ازش مطرح شده مثلا اینجا، اینه که توی به هم چسبوندن تیکه‌‌های دانلودهای عظیم مشکل داره که تابحال برای من پیش نیومده.

برای دریافتش بصورت رایگان میتونید به صفحه‌ی همین مدیردانلود در Sourceforge برید: