بلاگ پارسی سلمان م.

گنو، تریسکل، نرم‌افزار آزاد، ای‌مکس، اوبونتو، مهندسی عمران، برنامه‌نویسی، گنو/لینوکس، ...

بلاگ پارسی سلمان م.

گنو، تریسکل، نرم‌افزار آزاد، ای‌مکس، اوبونتو، مهندسی عمران، برنامه‌نویسی، گنو/لینوکس، ...

آخرین نظرات
  • ۲۱ ارديبهشت ۰۱، ۱۸:۵۰ - فاطمه
    مرسی

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

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

تریسکل = آزادی با طعم اوبونتو !


https://trisquel.info/en/download

  • سلمان محمدی


توزیع‌ تریسکل که توزیعی صد در صد آزاد هست، پیش از این، اوبونتو رو از شر نرم‌افزارهای غیرآزاد رهایی می‌داد و هسته‌ی لینوکس موجود در اوبونتو رو با هسته‌ی لینوکس- لیبره جایگزین می‌کرد و این‌جوری توزیع تریسکل رو بر پایه‌ی اوبونتو منتشر می‌کرد. حال بدلیل کمبود منابع انسانی و مالی از این به بعد توزیع‌ تریسکل تنها بر پایه‌ی انتشارهای با حمایت طولانی‌مدت (LTS) اوبونتو منتشر می‌شه یعنی نسخه‌ی تریسکل ۶ که بر پایه‌ی ۱۲٫۰۴ تولید شده و قایل دانلود هست به کنار، نسخه‌ی بعدی آن بر پایه‌ی اوبونتو ۱۴٫۰۴ منتشر خواهد شد. و به عبارتی دیگر، توزیع تریسکل هر دو سال یکبار نسخه‌ی جدیدش منتشر می‌شه و می‌تونیم از پایداری بیشتری لذت ببریم. البته زمزمه‌هایی برای تغییر از اوبونتو به دبیان نیز شنیده می‌شه که هنوز زیاد طرفدار نداره.


برای اطلاعات بیشتر:

https://trisquel.info/en/forum/after-version-6-trisquel-moving-lts-only-releases

https://trisquel.info/en/wiki/2013-03-05-meeting

https://trisquel.info/files/trisquel-dev.2013-03-05-17.00.log_.txt

  • سلمان محمدی
وب‌گاه گیت‌هاب (https://github.com) یکی از وب‌گاه‌هایی است که این روزها زیاد اسمش شنیده می‌شه.این وب‌گاه محلی برای ذخیره‌ی کدها با استفاده از سیستم کنترل نسخه‌ی گیت هست. ولی این وب‌گاه مورد تایید بنیاد نرم‌افزار آزاد نیست.
بنابراین توصیه می‌شه به جای اون از وب‌گاه‌های نظیر  گیتوریس (https://gitorious.org) که مورد تایید بنیاد نرم‌افزار آزاد هست، استفاده بشه.
برای اطلاعات بیشتر در رابطه‌های با وب‌گاه‌هایی از این دست که مورد تایید بنیاد نرم‌افزار آزاد هست، به پیوند زیر مراجعه فرمایید:
https://savannah.gnu.org/maintenance/WhyChooseSavannah
  • سلمان محمدی

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


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


علاقه‌مند شدم، میشه با یه مثال عملی توضیح بدی؟. چشم. سیستم کنترل نسخه‌ که انگلیسی‌زبان‌ها بهش می‌گن (version-control system) یا به اختصار vcs ، (و همچین اسپرانتو دان‌ها یهش می‌گن versitena sistemo) وسیله‌ای هست که ما از اون برای رسیدن به یعضی از مقاصد استفاده می‌کنیم! فرض کنید که سه نفر می‌خوان با کمک همدیگه نرم‌افزاری رو بنویسن (مریم، جمشید، پژمان). پس کدهای این نرم‌افزار (بدنه‌ی درخت = trunk ) باید در جایی قرار داشته باشه که هر سه نفر بهش دسترسی داشته باشن مثلا روی شبکه‌ی اینترنت. اون سه نفر بعد از فکرکردن در رابطه با نرم‌افزارهای آزاد، تصمیم می‌گیرن که کدهاشون رو روی اینترنت بذارن. حالا اون‌ها انتخاب‌های زیادی دارن که روی چه وب‌گاه‌هایی بذارن. بعد از دیدن وب‌گاه‌های متفاوت بین سه تا وب‌گاه مردد می‌مونن. وب‌گاه‌های لانچ‌پد،  گیتوریس و گیت‌هاب. می‌رن مطالعه بیشتر می‌کنن می‌بینن که وب‌گاه گیت‌هاب مورد تایید بنیاد نرم‌افزار آزاد نیست، پس همون اول بیخیالش می‌شن. لانچ‌پد از سیستم‌کنترل نسخه‌ی «گنو بازار» استفاده می‌کنه و گیتوریس از« گیت». بعد از مشورت با چند نفر به این نتیجه می‌رسن که هم گیتوریس خوب هست و هم لانچ‌پد ولی چون نیاز به مباحث مدیریت پروژه‌ای دارن از لانچ‌پد استفاده کنن بهتره. بعد یه پروژه روی لانچ‌پد می‌سازن و به خودشون (هر سه‌تاشون) دسترسی هم دیدن کدها و هم تغییر کدها می‌دن. (دسترسی خواندن نوشتن = read-write access). خب. جمشید کدهایی که از قبل نوشته بود رو می‌ذاره روی لانچ‌پد (commit می‌کنه.) و این کدها میشن نسخه‌ی ۱ (revision 1) بعد از اون مریم می‌ره کدهایی که جمشید روی لانچ‌پد گذاشته (نسخه‌ی ۱) رو می‌گیره (check out می‌کنه) و بعد تغییراتی روش اعمال می‌کنه و دوباره می‌فرسته روی لانچ‌پد (commit می‌کنه) و این میشه نسخه‌ی ۲ (revision 2). حالا جمشید می‌خواد ببینه که مریم چیکار کرده، پس میره کدها رو از لانچ‌پد میگیره (check out می‌کنه) و بعد با کدهایی که از اول داشت قاطیش می‌کنه (merge می‌کنه) و بعد تغییراتش رو commit می‌کنه و این قضیه همین‌جور ادامه پیدا می‌کنه. و بعد از مدت زیادی پژمان سر و کله‌اش پیدا میش‌شه، کدها رو می‌گیره و تغییرات چرت و پرتی می‌ده و می‌ذاره روی لانچ‌پد،  بعد مریم checkout می‌کنه و بعدش لیست تغییرها (change list) رو نگاه می‌کنه و متوجه میشه که بله آقا تشریف آوردن! تصمیم می‌گیره که تغییراتی که پژمان داده رو به حالت قبل بازگردونه (revert کنه). اون کار رو انجام می‌ده و با همفکری جمشید دیگه به پژمان فقط دسترسی دیدن کدها رو می‌دن (دسترسی فقط خواندن = read-only access) و از اون موقع به بعد هر موقع که پژمان بخواد کدها رو تغییر بده نمی‌تونه! و باید اول یک مخزن برای خودش بسازه و بعد یک کپی از کدهای روی‌لانچ‌پد رو بذاره روی مخزن خودش (منشعب کنه یا شاخه‌بندی کنه = fork کنه یا branch کنه) و بعد تقاضا بده که کدهاش با کدهای مسیر اصلی (baseline) که کدهای پروژه‌ی مریم و جمشید هست! قاطی بشه (merge request بده) و اگه اون‌ها صلاح دیدن کدها رو وارد کنن (merge کنن).


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


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



منبع عکس: +

چه نرم‌افزارهای آزادی این کار رو می‌کنند؟
  • گنو بازار (GNU Bazzar) (مورد استفاده برای توسعه‌ی اوبونتو و دیگر متعلقات وابسته به شرکت کنونیکال!  و بسیاری دیگر)
  • گیت (Git) (مورد استفاده برای توسعه‌ی هسته‌ی لینوکس، سیستم‌عامل تریسکل و بسیاری دیگر از نرم‌افزارها)
  • مرکیوریال (Mercurial)
  • سی‌وی‌اس (CVS)
  • ساب‌ورژن (Subversion) (SVN)
  • گنو آرک (GNU Arch)  (گنو بازار یک فورک از گنو آرک است)
  • ...

چه وب‌گاه‌هایی هستند که هم آزاد باشند و هم از کنترل نسخه‌های آزاد استفاده کنند؟

  • لانچ‌پد (https://launchpad.net) (تنها میشه از گنو بازار روی آن استفاده کرد) (مورد استفاده برای توسعه‌ی اوبونتو و دیگر متعلقات وابسته به شرکت کنونیکال! و بسیاری دیگر )
  • گیتوریس (https://gitorious.org) (تنها میشه از گیت روی آن استفاده کرد)
  • سورس‌فورج (http://sourceforge.net) (گیت، بازار، سی‌وی‌اس، ساب‌ورژن و ... )
  • ...
ــــــــــــــــــــــــــــــــــــــــــــــــ
پست بعدی در رابطه با کنترل نسخه:

  • سلمان محمدی

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

ابتدا دستور رو می‌گم و زیرش توضیح رو.

۱. اجرای ای‌مکس:

$ emacs
اگر طبق روال نصب در دو پست قبلی رفته باشید، با زدن این دستور ای‌مکس به صورت گرافیکی اجرا می‌شه. (البته اگه کسی خواست میشه کاری کرد که با زدن این دستور ای‌مکس تحت پوسته (شل) اجرا بشه) یا
$ emacs -nw
با زدن این دستور، ای‌مکس تحت پوسته (شل)  اجرا میشه و کل فضای پایانه (ترمینال) رو اشغال می‌کنه. برای یادگیری بیشتر توصیه میشه که حتما ای‌مکس رو تحت پایانه اجرا کنید تا مجبور بشید که یاد بگیرید. (-nw یعنی no window)

۲. تعیین اسم و محل ذخیره شدن فایل
خب حالا که ای‌مکس رو بازکردید، طبق چیزی که تو پست قبل گفتم، با C-x C-f اسم فایل و محل ذخیره شدن رو مشخص می‌کنیم. (این بار اسم فایل را test بگذارید و پسوندی برای آن مشخص نکنید)
 ۳. تعیین mode
چون در مرحله‌ی دو پسوندی برای فایلمون مشخص نکردیم، ای‌مکس نمی‌تونه تشخیص بده که ما به چه زبانی می‌خوایم کد نویسی کنیم، مشخص بودن زبان برنامه‌نویسی برای ای‌مکس فایده‌های زیادی برای ما داره، مثلا رنگی کردن کد، ایجاد فاصله به خودکار برای خواندن راحت‌تر کد (identation) و امکانات کامپایل کردن و غیره. خب اگه فایل ما پسوند داشت ای‌مکس fبه صورت خودکار mode رو تشخیص می‌داد، حالا ما باید به صورت دستی بهش بگیم که کد ما مثلا سی هست. برای این‌کار باید دستور زیر رو بزنیم.
M-x c-mode
یعنی ابتدا M-x رو بزنیم و سپس بنویسیم c-mode و سپس Enter را فشار دهیم.

برای بقیه‌ی زبان‌ها هم روال یکسان است، مثلا:
M-x c++-mode
M-x java-mode
۴. الآن که mode مشخص شد طبق پست قبل کدمون رو می‌نویسیم و کامپایل می‌کنیم.
  • سلمان محمدی
امروز این جمله‌ی جالب از طریق رایانامه بدستم رسید. دیدم بد نیست که بقیه هم بخوننش!

« مغز آدم خیلی چیز عجیبیه. یادش می‌مونه که یه چیزی یادش رفته اما یادش نمی‌یاد که چه چیزی یادش رفته! امیدوارم خدا در ورژن‌های بعدی این باگ رو رفع کنه! »

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


توضیح عکس: میز مطالعه‌ی من ساعت تقریبن ۳:۳۰ صبح
  • سلمان محمدی
مترجمان عزیز، نویسندگان عزیز، استادهای دانشگاه ، دوستان، هر کلمه‌ای با الفبای لاتین انگلیسی نیست! یکی از مسخره‌ترین چیزایی که شنیدم «دیجکسترا» هست! خداوکیلی این کلمه رو اصلا میشه تلفظ کرد؟ اگه بلد نیستید از کسی که بلده بپرسید.
Dijkstra یک دانشمند هلندی بوده و تلفظ اسم اون این‌جوری هست: دَیکْسْترا (daykstra)
به قول هلندی‌ها:
Een rotte appel in de mand, maakt al het gave fruit te schand
««یک سیب خراب در سبد، بقیه میوه‌های هم‌جوار خود را هم خراب می‌کند.»


  • سلمان محمدی

امروز می‌خوام یه رفیق و دوست خیلی خوب رو بهتون معرفی کنم. کسی که همیشه کنارتون هست ولی هیچ‌وقت نمی‌بینیدش. کسی که فقط تو روزای بدبختی یادتون بهش می‌افته و اون هم بی هیچ چشم‌داشتی کمک می‌کنه. معرفی می‌کنم آقای «آر فورس دیپندز» :

$ sudo dpkg -r --force-depends <package-name>
قضیه از چه قراره؟ من یه عادت خیلی زشت دارم، اون هم اینه که اگه سیستم‌عاملم درست کار کنه حس می‌کنم زندگیم یکنواخت شده و دچار پوچی شدم! حتمن باید یه انگولکیش بکنم تا به غلط کردم بی‌افتم ;)

خب بیشتر برامون توضیح بده.
امروز زد به سرم که گنوم ۳٫۶ رو با استفاده از بسته‌های اوبونتو ۱۲٫۱۰ به صورت دستی رو روی تریسکل ۶ (همون اوبونتو ۱۲٫۰۴)  نصب کنم. بعد از کلی بدبختی و بیچارگی تونستم یک سری از بسته‌ها رو به صورت دستی نصب کنم تا اینکه یک هو به ذهنم، رسید که مخازن تریسکل رو با اوبونتو عوض کنم تا عین بچه‌ی آدم خودش نصب کنه. بعد از عوض کردن مخازن، دیدم که وووی باید ۹۰ مگابایت دانلود کنم، منم پشیمون شدم و مخزن رو دوباره کردم همون تریسکل ۶.

اینا رو ول کن. اصل ماجرا رو بگو.
خلاصه دیدم که ناوتیلوس (Nautilus) مدیر فایل گنوم از کار افتاده. بعد از کلی سرو و کله زدم فهمیدم که مشکل از بسته‌ی libglib2.0-cil است و باید  پاکش کنم و اگه بخوام اون رو پاک کنم کل یونیتی و lightdm و غیره رو به فنا می‌ده و چون اون‌ها وابسته به libglib2.0-cil هستند، بعد از پاک کردنش همه‌چی رو پاک می‌کنه. این موقع بود که یادم به دوست جدیدم که خیلی وقت نیست باهاش آشنا شدم افتاد آقای «آر فورس دیپندز».

اعصاب من رو خورد نکن، بگو دیگه. ایشون هر وقت که می‌خواد بسته‌ای رو پاک کنه، تنها و تنها اون بسته رو پاک می‌کنه و کاری نداره که چه بسته‌هایی زندگیشون به اون بسته وابسته هست و  چی از کار می‌افته و چی نمی‌افته. برای بسته‌ی بالا دستور زیر کارساز هست:
$ sudo dpkg -r --force-depends libglib2.0-cli

نکته‌ی اخلاقی: به جای استفاده از دستور بالا و پیچوندن لقمه دور سرمون! میشه بسته‌های خراب رو downgrade کرد !
  • سلمان محمدی

تفاوت gcc و gfortran در این است که gfortran کتابخونه‌ها رو به صورت خودکار لینک می‌کنه به برنامه‌ی شما.

  • The difference with gcc is that gfortran will automatically link the correct libraries to your program.

منبع:

http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gfortran/About-GNU-Fortran.html#About-GNU-Fortran

  • سلمان محمدی