بعد از نصب اوبونتو

این متن قرار نیست خیلی توضیحات مفصلی بده یا یه کانفیگ همه منظوره باشه. این متن خیلی ساده فقط کارا و برنامه‌هایی رو نشون می‌ده که من بهشون احتیاج داشتم به همراه یه توضیح مختصر. شاید به درد کسی خورد.

تنظیمات خود اوبونتو

  • نصب کیبرد فارسی از منوی تنظیمات.
  • فعال کردن ورک اسپیس‌ها و اتوهاید کردن پنل کناری.
  • آپدیت.
  • ویرایش ‪.ssh/config‬
  • ژنریت کردن کلید ssh و ارسال به سرورهایی که باهاشون کار می‌کنم.

نصب از ریپوزیتوری‌های خود اوبونتو

  • openssh-server امکان اتصال به کامپیوتر از راه دور
  • vim-gnome ادیتور عزیز
  • zsh یه شل بهتر
  • guake ترمینال همیشه همراه
  • texlive-base texlive-xetex texlive-lang-arabic ابزار حروف‌چینی
  • paraview نمایشگر داده
  • indicator-multiload نمایشگر وضعیت کامپیوتر
  • ubuntu-restricted-extras مجموعه کدک غیر مجاز
  • pinta ویرایشگر عکس دم دستی
  • nethogs یه ابزاری مثل top برای دیدن این که چه برنامه‌ای داره از شبکه استفاده می‌کنه.
  • git دقیقا چرا گیت از اول رو اوبونتو نصب نیست؟
  • geary برنامه کلاینت ایمیل
  • vlc پخش همه منظوره صوت و تصویر
  • variety عوض کننده اتوماتیک عکس بکگراند
  • unity-tweak-tool برای تنظیم بیشتر یونیتی
  • gnumeric یک صفحه گسترده سبک

نصب مستقیم

  • google-chrome گوگل کروم
  • telegram برای این که موبایل حواسم رو پرت نکنه و البته سریع‌تر هم تایپ کنم

نصب از ریپوزیتوری‌های متفرقه

  • نصب numix-icon-theme-circle و numix-gtk-theme از مخزن ppa:numix/ppa.
  • نصب antigen برای zsh (کلون).
  • نصب vundle برای vim (کلون).
  • نصب دات فایل‌های خودم (کلون).

تنظیمات نهایی

  • تغییر تم و آیکون به نومیکس.
  • تغییر پوسته پیش‌فرض به zsh.

مشکل به روزرسانی راسپبین

یه مشکل داشتم با راسپبینم: وقتی که دستور

رو وارد می‌کردم این خطا رو می‌داد:

راه حل این مشکل رو بعد از کمی گشتن از اینجا پیدا کردم. البته من اون راه حل رو کمی خلاصه کردم. کافیه این دستورا رو تو ترمینال وارد کنیم:

و تمام.

ملاقات مجدد با Vim

ادیتور همیشه یه ابزار مهم برای کساییه که با فایل‌های متنی کار می‌کنن. داشتن یه ادیتور خوب کلی از فرایند کارکردن با فایل‌های متنی (مثل نوشتن برنامه) رو راحت می‌کنه. تو ویندوز ویژوال استودیو هست که هم ادیتورش خیلی خوبه و هم به عنوان یه IDE واقعا حرف نداره. این رو به عنوان کسی می‌گم که از Turbo Pascal 5.5 داره با IDE های مختلف کار می‌کنه.
تو لینوکس اما قضیه کمی فرق می‌کنه. اولین روزایی که با لینوکس شروع کردم (شاید حدود سال ۸۴) خوندم که ادیتور vi خیلی عالیه. یکی دو روز هم سعی کردم باهاش کار کنم، اما دیدم اصلن نمی‌شه باهاش کار کرد. بعد اون شروع کردم با IDE های مختلف کار کردن. مدت زیادی با Code Blocks کار کردم. شاید تا حدود سال ۸۸. Code Blocks خوب بود. ولی مشکلی که داشت این بود که برای ‪C++‬ خیلی خوب پیش‌نهاد Code Completion نمی‌داد. بعد از اون یه مدت کوتاه با Net Beans کار کردم. خوش‌دست بود؛ ولی وقتی پروژه کمی بزرگ می‌شد بسیار کند کار می‌کرد. بعد اون شروع کردم با Eclipse کار کردم تا ۲ ۳ سال پیش. Eclipse اگر چه سریعتر از Net Beans بود، ولی باز هم به نظرم کند میومد. به علاوه تنظیماتش خیلی پیچیده بود و ظاهرش هم چنگی به دل نمی‌زد.

قبل از این که ادامه بدم باید بزرگترین اشتباهم رو تو این دوره ذکر کنم. بزرگترین اشتباهم این بود که می‌خواستم تو دنیای لینوکس همون چیزی که تو ویندوز داشتم رو تقلید کنم. یعنی مثلا انتظار داشتم مثل Visual Studio یه IDE غول و بی‌نقص داشته باشم که همه کارا رو برام هندل کنه. در صورتی که لینوکس مبتنی بر نگرش دیگه‌ایه. لینوکس می‌گه من یه عالمه ابزار کوچیک کوچیک ساده در اختیارت می‌ذارم که کارات رو بتونی خودت بکنی. مثلا مورد برنامه نویسی ابزار make رو داره. یه بار که makefile بنویسی، دیگه دقیق می‌دونی داری چی کار می‌کنی و کنترل کاملی هم رو ابزارت داری.
این بود تا با Sublime Text آشنا شدم. سریع، زیبا و چالاک. و البته دیگه خودم کارای برپاکردن پروژه‌هام رو انجام می‌دادم. اما از طرفی Sublime آزاد نبود و Code Completion خوبی هم نداشت. به همین خاطر بعد شاید یه سال دوباره برگشتم سر خونه اول: Vim. اما این دفعه خودم یه فرق بزرگ کرده بودم: به خاطر عمل دیسک گردنم مجبور شده بودم تایپ ده انگشتی یاد بگیرم و برام مهم بود که موقع کار کردن با ادیتورم واقعا دستم رو از روی کیبرد بر ندارم. راستش تو این همه سال یواش یواش کمی Vim یاد گرفته بودم. حرکت تو فایل و کمی ادیت کردن با Vim رو بلد بودم. واسه همین رفتن سراغ Vim برام به این معنی بود که چند تا دستور بیشتر یاد بگیرم و هم این که بتونم تنظیمات Vim خودم رو انجام بدم. بعد این مراحل آروم آروم مقدار کار کردنم با Vim رو بیشتر کردم تا این که الان بیشتر از یه ساله که همه کارهام رو با Vim انجام می‌دم.
با این سابقه می‌خوام به کسایی که می‌خوان Vim رو شروع کنن چند تا توصیه مهم بکنم:

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

۲- لازم نیست برای شروع Vim همه چیز رو بلد باشین. با ۱۰ ۱۵ تا دستور اصلی شروع کنین و به تدریج دانشتون رو بالا ببرین. اون دستورایی که مهمه رو اتوماتیک بیشتر استفاده خواهید کرد و حفظ خواهید شد.

۳- Vim رو خودتون کانفیگ کنین. خیلی مهمه که کانفیگ یکی دیگه رو کپی نکنین و یا لااقل آگاهانه این کار رو بکنین. منابع خیلی خوبی برای کانفیگ Vim وجود داره. احتمالا تو یه پست مجزا ریز کانفیگ خودم رو توضیح می‌دم.

۴- مطالعه کنین. همون کتاب Practical Vim عالیه. شبی چند صفحه و بعد یه مدت دانشتون حسابی غنی شده.

Vim خیلی عالیه. مثل اینه که دارید با کامپیوتر حرف می‌زنید که براتون متن رو ویرایش کنه. مکالمه خوبی داشته باشین. 🙂

معرفی: پوسته zsh

zsh یه پوسته ترمیناله مثل bash. مزیت zsh به bash‌ اینه که پلاگینای مختلفی می‌خوره و خیلی خوش‌دسته. بدیش اینه که برای این که از حد اکثر امکاناتش بشه استفاده کرد باید یه کم با تنظیماتش ور رفت.

oh-my-zsh‌ یه فریمورکه که خیلی از تنظیما‌ی zsh‌ رو راحت می‌کنه. oh-my-zsh‌ همچنین تعداد زیادی پلاگین و تم از پیش نصب شده داره که دسترسی بهشون خیلی راحته. ولی نصب پلاگین‌ها و تم‌هایی که خودش نداره خیلی هم راحت نیست.

antigen یه برنامه سادست که علاوه بر این که مدیریت oh-my-zsh رو راحت می‌کنه، نصب تم‌ها و پلاگین‌های متفرقه رو هم راحت می‌کنه. تمام تنظیمات antigen‌ به راحتی از توی فایل zshrc انجام می‌شه.

خوب برای داشتن همه این‌ها از این روش استفاده می‌کنیم:

خط اول zsh‌ رو نصب می‌کنه و می‌تونه توی توزیع‌های مختلف فرق کنه. خط دوم antigen رو نصب می‌کنه و با خط آخر هم پوستمون رو عوض می‌کنیم. خط آخر ازمون سوال می‌پرسه که آدرس پوسته جدید کجاست که می‌شه: ‪/usr/bin/zsh‬

تنها قدم باقی‌مونده تنظیم فایل zshrc‌ ه. بخش مرتبط با antigen از فایل ‪.zshrc‬ من این شکلیه:

خط سوم antigen رو لود می‌کنه. تو خط پنجم می‌گم که می‌خوام از فریمورک oh-my-zsh استفاده کنم. تو خطای بعد هم این پلاگین‌ها رو نصب می‌کنم:
command-not-found اگه دستوری که دادیم پیدا نشه، بهمون پیش‌نهاد می‌ده چطور می‌شه اون دستور رو نصب کرد.
vi-mod با زدن اسکیپ می‌ره تو مود vi.
extract یه دستور x بهمون می‌ده که باهاش راحت می‌شه هر فایلی رو از حالت فشرده خارج کرد.
zsh-256color حالت رنگی ترمینال رو در صورت امکان به ۲۵۶ رنگ ارتقا می‌ده.
zsh-syntax-highlighting حین تایپ دستورات بر اساس سینتکس رنگی می‌شن.
zsh-autosuggestions حین تایپ دستورات بهمون برای کامل کردنشون پیش‌نهاد می‌ده.
z کمی که با فایل سیستم کار کنیم دایرکتوری‌ها رو یاد می‌گیره و دیگه مثلا به جای cd foo/bar کافیه تایپ کنیم z bar
تو خط بعد تم رو تنظیم کردم و در نهایت می‌گم تو پلاگین zsh-autosuggestion با کنترل+اسپیس یه کلمه رو تکمیل کن.

فایل بالا رو به اسم ‪.zshrc ‬ ذخیره می‌کنیم و از پوسته خارج می‌شیم. دفعه بعدی که به پوسته وارد شیم همه پلاگین‌ها اتوماتیک نصب می‌شن و شروع به کار می‌کنن.
امیدوارم مثل من از کار با zsh لذت ببرید.

معرفی کوتاه: به دست آوردن تشابه بین کد منبع دو برنامه

موردی پیش اومد که باید چک می‌کردم که آیا پروژه‌ای که یکی از دوستان کار کرده بود از یه پروژه منبع باز مشهور کپی شده یا نه؟ با یه جستجوی کوتاه به MOSS رسیدم. MOSS مخفف Measure of Software Similarity (سنجه تشابه نرم‌افزار) در واقع یه وب سرویسه که تو دانش‌گاه استنفورد توسعه داده شده تا بتونه به اساتید اونجا کمک کنه تا بفهمن آیا دانشجوها برنامه‌هاشون رو از رو دست هم کپ زدن یا نه.

برای استفاده از MOSS اول باید ثبت نام کرد. برای این کار باید یه ایمیل به moss@moss.stanford.edu فرستاد که دقیقا این متن توش درج شده باشه:

registeruser
mail username@domain

جای username@domain.com ایمیل خودمون رو جایگزین کنیم. در جواب یه ایمیل دریافت می‌کنیم که یه اسکریپت پرل برای کار با MOSS توشه. البته می‌شه از اون اسکریپت استفاده نکرد. خود سایت اسکریپت‌های دیگه‌ای هم داره. برای کار با اسکریپت‌های دیگه کافیه کد کاربری که داخل اسکریپت فرستاده شده همراه با ایمیل هست رو استفاده کرد. البته به نظر من که اسکریپت اصلی به اندازه کافی خوبه.

بعد از ذخیره اسکریپت تو یه فایل مثلا به اسم moss و دادن مجوز اجرایی به اون فایل، مثلا برای مقایسه سورس کدی به زبان ‪C++‬ بین دو تا فولدر aaa و bbb می‌شه از دستور زیر استفاده کرد:

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

پی‌نوشت: در مورد دوستم خوش‌بختانه کم‌تر از نیم درصد بین دو تا پروژه شباهت داشت. تا سیه‌روی شود کسی که وقتی نمی‌تونه برنامه‌ای رو بنویسه، تهمت می‌زنه.