بایگانیِ open source

راهنمای جامع کامپایل برنامه‌های C و C++

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

برای کامپایل برنامه‌های C++ نیاز به یک کامپایلر می‌باشد. لیست بزرگی از کامپایلر‌های موجود برای C++ و دیگر زبان‌ها را می‌توانید در این مقاله از ویکی‌پدیا ببینید. خیلی از اساتید دانشگاهی برای شروع درس برنامه سازی پیشرفته در همان روزهای اول بدون توضیح در مورد کامپایلرها و تنوع آنها به دانشجویان کامپایلر‌های Turbo C++ یا Borland C++ و در نهایت Visual Studio را پیشنهاد می‌کنند.

کمی دست نگه دارید تا بیشتر در مورد کامپایلر‌ها آشنا شویم، سپس انتخاب با خودتان. دوباره به لیست همگردان‌های C++ در ویکی‌پدیا نگاهی بیاندازید.

قبل از هر چیز در مورد دو واژه‌ی مهم توضیح بسیار مختصری بدهم:

  • Compiler: كامپایلر برنامه یا مجموعه‌ای از برنامه‌های كامپیوتری است كه متنی از زبان برنامه نویسی سطح بالا (زبان مبدا) را به زبانی سطح پایین (زبان مقصد)، مثل اسمبلی یا زبان سطح ماشین، تبدیل می‌كند. خروجی این برنامه ممكن است برای پردازش شدن توسط برنامه دیگری مثل پیونددهنده مناسب باشد یا فایل متنی باشد كه انسان نیز بتواند آنرا بخواند.
  • IDE: مخفف عبارت انگلیسی Integrated Development Environment است و عبارت است از محیطی عمدتاً گرافیکی که تمام یا شماری از ابزارهای لازم برای توسعهٔ نرم‌افزار (بخش‌هایی یا تمام زنجیره ابزار توسعه) را خود دارد. در IDE دسترسی به ابزارها و اعمال آن‌ها در پروژهٔ جاری تسهیل شده‌است.

۱-تفاوت بین IDE و Compiler در چیست؟

کامپایلرها بر دو نوع اند. کامپایلر‌های خط فرمان و کامپایلر‌های همراه با IDE. کامپایلر‌های خط فرمان هیچ گونه محیط کاربری (GUI) ندارند و تمامی مراحل کامپایل از طریق خط فرمان سیستم عامل انجام می‌شود. اما در کامپایلرهای همراه با IDE اکثرا کار کامپایل و Link و Builld را ساده کرده‌اند و تمامی مراحل را به طور خودکار برای کاربر انجام می‌دهند. برای مثال کاربر کافیست پس از نوشتن برنامه در ویرایشگر کامپایلر، کلید F6 را فشار دهد.

البته یک IDE (محیط توسعه‌ی مجتمع) در اصل یک نرم‌افزار گرافیکی می‌باشد که با ابزارهای برنامه نویسی از جمله پیوند دهنده‌ها (Linker)، همگردان‌ها و نرم‌افزارهای کنترل نسخه (Version Control Software) و … ارتباط برقرار می‌کند و یک محیط بسیار راحت را برای برنامه‌نویسان ایجاد می‌کند.

یک محیط توسعه‌ی مجتمع معمولا امکانات زیر را در اختیار برنامه‌نویسان قرار می‌دهد:

اما به نظر من استفاده از IDE برای تازه‌واردان برای توسعه‌ی نرم‌افزار و برنامه‌نویسی بسیار اشتباه است. بهتر است ابتدا سعی کنید با مفاهیم کامپایلر آشنایی پیدا کنید. خطاها و پارامترهای آن را به خوبی بشناسید و چند هفته (چند ماهی) از IDE دوری کنید و سعی کنید تمام مراحل کامپایل یک برنامه را به روش های گوناگون به خوبی یاد بگیرید. برای مثال ابتدا سعی کنید از برنامتان یک فایل Object درست کنید سپس با Linker آن را با دیگر کتابخانه‌های سیستمی پیوند دهید و فایل اجرایی را تولید کنید.

سعی کنید با ساختار فایل‌های Makefile و هنچنین کتابخانه‌های دینامیک و استاتیک آشنا شوید و همه‌ی این مراحل را بدون استفاده از IDE با یک ویرایشگر ساده و خط فرمان اجرا کنید. پس از یادگیری این مفاهیم به سراغ SCM و همچنین VCS یا همان سیستم کنترل نسخه (Version Control System) بروید. پس از اینکه با تمامی این مفاهیم آشنا شدید می‌توانید به سراغ یک IDE مناسب بروید و طراحی نرم‌افزار را با آن تجربه کنید.

در ضمن برای مقایسه و بررسی لیستی از IDEهای مختلف می‌توانید از این پیوند استفاده کنید.

۲- برنامه نویسی C++ با مجموعه کامپایلر گنو

من بدون هیچ گونه تعصب و غرض ورزی شخصی انتخاب کامپایلر مناسب را به عده‌ی خودتان می‌گذارم اما بنابر تجربه قصد دارم از این قسمت به بعد به معرفی کامپایلر مجموعه‌ی GNU (بخوانید گنو) بپردازم.

GCC از ابتدا مخفف Gnu C Compiler بود ولی از زمانی که توانست زبانهای دیگری غیر از C از قبیل C++,Ada,Java,Objective C و Fortran را کامپایل کند به Gnu Compiler Collection تغییر نام داد. پدید آورنده اصلی GCC ریچارد استالمن است کسی که بنیانگذار پروژه Gnu محسوب می شود. نخستین نسخه GCC در سال 1987 انتشار یافت که یک پیشرفت مهم محسوب می شد زیرا محصول جدید اولین کامپایلر بهینه سازی شده قابل حمل ANSI C به عنوان یک نرم افزار آزاد محسوب می شد. در سال 1992 نسخه 2.0 کامپایلر GCC عرضه شد. نسخه جدید قابلیت کامپایل کدهای ++C را نیز داشت. در سال 1997 یک انشعاب آزمایشی در GCC به نام EGCC به منظور بهینه سازی کامپیایلر و پشتیبانی کامل تر از ++C ایجاد شد. در ادامه EGCC به عنوان نسل بعدی کامپایلر GCC پذیرفته شد و تکامل آن باعث انتشار نسخه سوم GCC در سال 2004 گردید. چهارمین نسخه از کامپایلر GCC در سال 2005 عرضه شد.

۲.۱ -کامپایل برنامه‌های C و C++ در سیستم‌عامل Linux

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

برای اطمینان از نصب کامپایلر GNU C++ فرمان زیر را در خط فرمان وارد کنید:

$ g++ –version

g++ (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)

Copyright (C) 2007 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

پیغام بالا به منزله نصب بودن g++ بر روی سیستم‌عامل می‌باشد. در صورتی که g++ بر روی Linux شما نصب نمی‌باشد فرمان زیر را اجرا کنید:

$ sudo apt-get install g++ build-essential

حال توسط یک ویرایشگر متنی در Linux برنامه‌ی زیر را بنویسید. بهتر است برای نوشتن برنامه‌ها استفاده از ویرایشگر Vim را یاد بگیرید. برای اطلاعات بیشتر به این مقاله مراجعه کنید.

۱. کامپایل برنامه‌های C

#include <stdio.h>

int main(){

printf(“Hello World!\n”);

return 0;

}

برنامه‌ی بالا را با نام hello.c ذخیره کرده و با فرمان زیر کامپایل کنید:

$ gcc hello.c -o hello

اگر هیچ خطایی از فرمان بالا صادر نشد و هیچ پیغامی صادر نشد فرمان زیر را اجرا کنید تا برنامه ی hello اجرا شود:

$ ./hello

پیغام Hello World! در پایانه چاپ می‌شود.

۲. همگردانی برنامه‌های ++C

برنامه‌ی زیر نوشته و با نام hello.cpp ذخیره کنید:

#include <iostream>

int main(){

std::cout << “Hello World!” << std::endl;

return 0;

}

برنامه‌ی بالا را با فرمان زیر کامپایل کنید:

$ g++ hello.cpp -o hellocpp

حال با فرمان زیر می‌توانید برنامه‌ی کامپایل شده را اجرا کنید:

$ ./hellocpp

توضیحات:

۱. کامپایلر زبان C، برنامه‌ی gcc می‌باشد.

2. کامپایلر زبان C++ برنامه‌ی g++ می‌باشد.

۳. واضح است که بیان hello.c در فرمان gcc یا g++ به معنای کامپایل hello.c می‌باشد. در صورتی که همراه با این پرونده نیاز به کامپایل پرونده‌های دیگری از جمله کلاس‌ها و توابع دیگر می‌باشید. نام آنها را به صورت پارامتر لیست کنید.

فرض کنید برنامه‌ی شما از فایل‌های main.cpp math.h math.cpp تشکلیل شده باشد برای کامپایل این برنامه باید از خط فرمان زیر استفاده کنید:

$ g++ main.cpp math.cpp -o main

۴. در فرمان‌ بالا کامپایلر ابتدا برنامه‌ی شما را به پرونده‌ی Object تبدیل می‌کند و سپس آن را توسط پیوند دهنده (Linker) به پرونده‌ی اجرایی تبدیل می‌کند. که در حقیقت کامپایلر مرحله‌ی میانی را به صورت خودکار برای شما انجام می‌دهد. برای تبدیل یک برنامه به پرونده‌ی Object فرمان زیر را اجرا کنید:

$ g++ -c main.cpp

۶- Wall: این option به معنی all warnings است و تمامی اخطار ها را به شما نشان می دهد. توجه کنیدکه اخطار با خطا فرق داره! مثلا اگر شما به جای استفاده از == از = استفاده کرده باشید یا متغیری از نوع لوکال رو مقدار دهی اولیه(initiaze)نکرده باشید یا موارد مشابه اون رو به شما گزارش می دهد. توصیه می شود که همیشه از این option استفاده کنید. چون واقعا سرعت شما را در debug کردن افزایش می دهد.

$ g++ -Wall main.cpp

۷- با فرمان زیر می‌توانید برنامتان را به کد Assembly تبدیل کنید.

$ g++ -S main.cpp

۲.۲- کامپایل برنامه‌های C و C++ در Microsoft Windows

مجموعه‌ی کامپایلر‌های gnu در ابتدا برای سیستم‌عامل GNU/Linux نوشته شد اما پس مدتی پروژه‌ی Cygwin شروع به port کردن کامپایلر gnu به سیستم‌عامل Windows نمود. هدف پروژه‌ی Cygwin از همان ابتدا پیاده‌سازی تمامی System Callهای Unix در Windows، بر اساس استاندارد Posix بود و تا به حال نرم‌افزارهای بسیاری در Linux با استفاده از Cygwin به نسخه‌ی Windowsی تبدیل شده اند. برای مثال نرم‌افزارهای OpenOffice.org و Mozilla Firefox و sshd و TeX و Apache و … با استفاده از Cygwin از نسخه‌ی linuxی به نسخه‌ی windowsی تبدیل شده اند.

MinGW از نسخه‌ی1.3.3 نرم‌افزار Cygwing جدا (fork) شد و به دلیل اینکه MinGW از Win32-API استفاده می‌کند، نمی‌تواند تمام استاندارد‌های Posix را پیاده‌سازی کند. وقتی MinGW را با MySYS ترکیب کنیم یک محیط بسیار راحت شبیه محیط های Unix برای کار با خط فرمان ایجاد می‌شود و به دلیل داشتن این ویژگی کار با MinGW راحتتر از Cygwign می‌باشد.

دو راه برای نصب MinGW وجود دارد.

۱. می‌توانید آن را از پایگاه رسمی‌اش دریافت کرده و نصب کنید.

۲. MinGW به همراه بسته‌ی نرم‌افزاری CodeBlock نصب می‌شود.CodeBlock یک IDE قدزتمند برای C++ می‌باشد و به دلیل آنکه در آینده به این IDE نیاز پیدا می‌کنیم بهتر است از روش دوم استفاده کنیم.

نسخه‌ی CodeBlcok به همراه MinGW را از اینجا دریافت و نصب کرده و سپس MySYS را از این پیوند دریافت و نصب کنید. پس از اینکه نصب MySYS تمام می‌شود یک پنجره‌ی cmd باز می‌شود چندین سوال می‌پرسد.

ابتدا از شما می‌پرسد که آیا به ادامه‌ی نصب نرم‌افزار راضی هستید؟ کلید y را فشار داده و سپس Enter را بزنید.

سوال بعد می‌پرسد که آیا شما MinGW را نصب کرده‌اید؟ کلید y را فشار داده و سپس Enter را بزنید.

محل نصب بسته‌ی نرم‌افزاری MinGW را می‌پرسد. جواب این سوال آدرسی است به صورت زیر:

C:\Program Files\CodeBlocks\MinGW

پس از طی مراحل بالا یک Shortcut روی Desktop شما به نام MYSYS ایجاد می‌شود. با اجرای MYSYS شما وارد یک محیط خط فرمان شبیه خط فرمان‌ Linux می‌شوید و می‌توانید همانند قسمت ۲.۱ همین راهنما برنامه‌های C و C++ خود را کامپایل و اجرا کنید.

حال پس از مدتی که با فرمان‌ها و هشدارهای کامپایلرهای GCC و g++ آشنا شدید می‌توانید یک IDE مناسب به سلیقتان نصب کرده و برنامه‌هایتان را در آن نوشته و کامپایل کنید. هم اکنون محیط توسعه مجتمع CodeBlock روس سیستم شما نصب می‌باشد. می‌توانید با اجرای این IDE و کار با آن از برنامه‌نویسی لذت ببرید.

در برای مقایسه‌ی IDEهای موجود در دنیای برنامه‌نویسی می‌توانید به این آدرس در ویکی‌پدیا مراجعه کنید.

در آخر عرض کنم که یکی از اهداف من در این مقاله آشنا کردن دانشجویان با ویکی‌پدیا بود (دانشنامه‌ای آزاد که هر کسی می‌تواند آن را ویرایش کند).

سعی کنید از ویکی‌پدیا که یک دانشنامه‌ی آزاد می‌باشد استفاده و حتی به گسترش آن نیز کمک کنید.

(5) دیدگاه

KDE Bug 4.2 Release Party

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

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

راستی گذشته از اینها واقعا با دیدن KDE 4.2 بسیار خوشحال شدم که تیم توسعه‌ی KDE اینقدر با سرعت به جلو پیش می‌روند.

مسعود علینقیان هم که بعد مدتها برگشته بود اصفهان، سمیناری با نام آموزش زبان و لینوکس ارائه داد.

برای یک بار دیگه هم که شده از به دلایلی از روزبه جان تشکر می‌شود. روزبه برای انتشار بعدی منتظریم :دی

پ.ن. جان من به تیتر این پست گیر ندید. چیز دیگه‌ای به ذهنم نرسید

(9) دیدگاه

تغییر اندازه‌ی عکس‌ها با یک اشاره

چند روز پیش یک جشن برزگی تو اصفهان داشتیم، روز آزادی نرم‌افزار. عکسای زیادی گرفتم و وقتی میخواستم اونها را برای گزارش روی وب نوشتم upload کنم با یک مشکل اساسی برخورد کردم و اون هم حجم بالای عکس ها بود. حوصله‌ی تغییر اندازه‌ی تک تک اونها را با Gimp نداشتم (خوب حق بدید دقیقا یک فاجعه هست).
اما یک مطلب را همیشه درنظر دارم و اون اینه که تو GNU/Linux برای هر کاری حداقل n راه و حداکثر n^n راه وجود داره!) پست دست به کار شدیم و توی google به جست‌وجوی روش های دیگه. اما نتیجه:

1- Nautilus Image Convertor
یک برنامه ی 24 کیلو بایتی! باورتون میشه! برای دوستان GNU/Linuxی که جز بدیهیات هست. بله با همین برنامه ی کم حجم به راحتی عکسهام را select کردم و کلیک سمت راست و resize و انتخاب اندازه ی عکس و تمام!
برای نصب روی توزیع‌های مبتنی بر Debian:

sudo apt-get install nautilus-image-converter

2- Nautilus Image Script

اما برای دوست داران Kde:

-3 kim

باز هم در نتایج google جا داشت که به جست و جو بپردازم اما به همون اولی کارم را راه انداخت.

(4) دیدگاه

گزارش جشن روز آزادی نرم‌افزار-اصفهان 2008

بلاخره انتظارها به پایان رسید و دیروز ساعت 4 بعد از ظهر جشن آزادی‌ نرم‌افزار در سالن اهل البیت اصفهان واقع در خیابان فرشادی برگزار شد. یک گزارش کوتاه! ببینید:
ساعت 2 بعد از ظهر:
از پیش از ظهر تا ساعت 2 دنبال یکی از کارهای جشن بودم. خسته و کوفته وارد سالن اهل البیت شدم. بهراد و روزبه و امیر و میثم خضرلو و … داشتند یکی یکی روی CDهای جشن برچسب جشن آزادی نرم‌افزار روی CDها می چسباندند. قضیه‌ی این CDها چیه؟ OpenCD. چی هست؟ یک سری نرم‌افزار آزاد برای سکوی Windows مثل 7zip و OpenOffice و gimp و… به چه دردی می‌خورند؟ خوب این نرم‌افزارها به بچه ها کمک می کنه که تفاوت کیفیت نرم‌افزارهای آزاد و انحصاری را از نزدیک اون هم بدون درد و سر با نصب روی Microsoft Windows درک کنند. مطمئنا خودشون تفاوت را درک خواهند کرد. خوب بگذریم. چی داشتم می گفتم؟! آهان ما هم بیکار ننشستیم. شروع کردیم به کمک و زدن برچسب ها روی CDها. جا داره همین جا از سجاد بارودکو بابت تمام طراحی های جشن تشکر کنم. از پوسترها و بنرهای تبلیغاتی گرفته تا همین برچسب‌ها و stickerها و غیره.
از شانس بد ما دوربین همرام نبود. حیف شد. چند صحنه‌ی زیبا و قشنگ از همکاری بچه ها را از دست دادم. حدود ساعت 2:45 دقیقه بود که دست از کار کشیدم و رفتم دوربینم را بیارم. تا اومدم برم و آماده بشم و برگردم یه یک ساعتی طول کشید.

ساعت 4 بعد از ظهر:
هنوز از شرکت کنندگان در جشن خبری نیست. انگار ما ایرانی‌ها یاد گرفتیم که همیشه دیرتر از موعد در مراسم حضور پیدا کنیم. شاید اینجوری می‌خواهیم هوش و ذکاوت و زیرکی خودمان را نشان دهیم.
قبل از شروع مراسم جشن چند تا عکس از نمای بیرونی ساختمان اهل‌البت گرفلتم.

داخل ساختمان، ستاد استقبال:
سمت چپ وردی ستاد استقبال پذیرای مهمانان عزیر هستند. یکی نفر مسئول کسانی که ثبت نام نکرده اند و دیگری (روزبه را میگم) مسئول افرادی که ثبت نام کرده اند. روزبه در حال برسی و تطبیق نام ثبت نام کنندگان با laptop می‌باشد.

میثم خضرلو(سمت راست) هم در حال راهنمایی میهمانان برای ثبت نام و دریافت OpenCd و ورود به سالن همایش:

مرحله‌ی بعدی هم هدیه‌ی OpenCD هست:

خوب این راهرو را طی می کنیم و وارد سالن دیگری می شویم. وسط سالن یک میز مزین به بادکنک‌های SFD مشاهده می شود:

خوبه با هم یک سری به اتاق فرمان بزنیم و ببینم آقای شهبازی با همکارانشون در چه حالی هستند:

ساعت 4:07:
آقای فکار با امید و بهراد در حال تنظیم مراسم جشن. اینم یه عکس از روی لیست تنظیم شده‌ی مراسم امروز:

ساعت 4:27:
از دور همراه تکان دادن دست‌ها. سلام آقای ادیب. نزدیک تر می‌شویم تا با جزئیات کار ایشان آشنا شوی. آهان، دارند persent مربوط به سمینارشون را آماده می کنند. اقای ادیب منو نگاه کنید: اینم از عکس:

ساعت 4:47:
بعد از شروع مراسم و تلاوت قرآن و معرفی موسسه‌ی اهل‌البیت و … نوبت میرسه به سمینار آقای ادیب با محوریت معارفه‌ی گروه کاربران لینوکس اصفهان و تاریخچه و سابقه‌ی آن:

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

مجید سلامت، استاد جلوه های ویژه و میزکار سه بعدی لینوکس در حال معرفی میزکار سه بعدی لینوکس می باشد:

بعد از اون هم آقای ناصر (امید) غانم‌زاده طبق معمول در مورد کسب و کار نرم‌افزار آزاد/متن‌باز صحبت کردند. موضوع داغی که همیشه طرفداران نرم‌افزار های انحصاری در این مبحث متحیرند.


روزبه و امیر هم که آنلاین شدند و روزبه در حال گزارش مراسم جشن به صورت آنلاین در وبلاگش:

سپس در جلسه‌ی پرس‌وپاسخ آقایان غانم‌زاده و ادیب و اسلامی فر به سوالات میهمانان پاسخ می‌دادند.

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

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

عکس یادگاری از تمام افراد شرکت کننده در جشن:

دز آخر سر هم از تمام دوستان به ویژه آقای فکار که این چند روزه فشار زیادی به ایشون وارد شده تشکر و قدردانی می کنم. همچنین از دوست خوبمون سجاد بارودکو که به دلیل مشغله‌ی کار نتونستند در جمع ما حضور پیدا کنند تشکر می‌کنم.

در این باره:
کمی بی ربط به مراسم امروز
جشن روز آزادی نرم‌افزار در اصفهان برگزار شد

(10) دیدگاه

ایجاد partition Swap برای گوشی Motorola A1200

توی GNU/Linux یک روشی وجود دارد که می‌توان یک Partition مجازی داخل یک Partition ایجاد کرد. و حتی این Partition را با ابزارهای mkfs.ext3 و mkfs.msdos و mkswap و … اون Patition را Format کرد.

خوب گوشی Motorola A1200 هم از این قاعده مثتثنی نیست. پس ابتدا سعی می کنیم داخل Memory Card یک Partition مجازی Swap ایجاد کنیم. سپس با استفاده از فرمان swapon اونو فعالش می‌کنیم.

خوب برای شروع باید بگم که نیاز دارید برنامه ی ekonsole را روی گوشیتون نصب کنید تا به خط فرمان Linux دسترسی پیدا کنید.
حال مراحل زیر را اجرا کنید. (مراحل زیر را در یک رایانه‌ی مجهز به Linux انجام دهید زیرا فرمان mkswap در A1200 موجود نمی‌باشد.)

dd if=/dev/zero of=/swp bs=1 count=32M
mkswap swp

فایل swp ایجاد شده را به Memory Card گوشیتان منتقل کنید.
سپس وارد برنامه‌ی ekosole شوید و فرمان زیر را اجرا کنید:

swapon /mmc/mmca1/swp

برای حصول اطمینان از اینکه Patition Swap فعال شده یا نه فرمان زیر را اجرا کنید:

cat /proc/meminfo

دقت کنید پس از اجرای این فرمان جلوی swap total عدد 32768 وجود داشته باشد.
حالا می‌توانید برنامه‌های بیشتری را به طور همزمان باز کنید.

(2) دیدگاه

جشن روز آزادی نرم افزار در اصفهان

همه ساله GNU/Linuxی ها و در کل جامعه ی نرم افزار های متن باز و آزاد سومین شنبه‌ی ماه سپتامبر را به عنوان روز آزادی نرم افزار جشن می گیرند.
پارسال یادمه که روز 15 سپتامبر گروه کاربران لینوکس اصفهان این روز را جشن گرفتند. و دقیقا اولین روزی بود که من با این گروه آشنا شدم. امسال هم مثل پارسال بچه ها همگی در تلاش برای برگزاری این جشن باشکوه هستند.

دوستان اصفهانی و غیر اصفهانی برای حمایت از این همایش می توانند از logo و banner هایی که روزبه آماده کرده استفاده کنند.

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

(4) دیدگاه

چگونه java-doc را با امکان جست و جو نصب کنیم؟

چند وقت پیش بود دنبال این بودم که به راحتی بتونم درون Java-doc جست و جو کنم و به راحتی class و method مورد نیازم را پیدا کنم.

یک راه این بود که یک Java-doc را که به صورت CHM باشه را download کنم اما یک روش پهتر پیدا کردم.

ابتدا java-doc را dowload کنید. (شرمنده هیچ پیوندی برای download ندارم اگه کسی download mirror داره حتما اعلام کنه تا برای بقیه بزارم) پس از اون باید بسته یپیوند sun-java6-doc را نصب کنید:

sudo apt-get install sun-java6-doc

در هنگام نصب این بسته به شما اعلام می کنه که jdk-6-doc.zip را در پوشه ی /tmp بریزید. خوب پس همین کار را انجام بدید تا java-doc نصب بشه.
بعد از نصب java-doc می تونید در آدرس زیر اونو پیدا کنید:

file:///usr/share/doc/sun-java6-doc/html/index.html

تا این قسمت برای کسانی که نیازی به جست و جو در java-doc را ندارند کافیه اما اگه دوست دارید امکان جست و جو در java-doc را داشته باشید با هم همچنان همراه باشید:
netbeans را اجرا کنید (امیدوارم نصبش کرده باشید!) سپس به آدرس زیر بروید:

Tools>Java platform>javadoc

حالا روی Add Zip/Folder ضربه بزنید و ادرس jdk-6-doc.zip را به صورت زیر وارد کنید:

/tmp/jdk-6-doc.zip

حالا shift-F1 را فشار دهید تا بتوانید از java-doc استفاده کنید.

(5) دیدگاه

abbreviation ها در Vim

در ویرایشگر Vim مبحثی داریم به نام abbreviationها. فرض کنید در یک کد جاوا شما بخواهید از چندین بار از System.out.println استفاده کنید مجبور خواهید شد که این عبارت را چندین بار تکرار کنید البته Vim با خصوصیت auto-complete خودش این مشکل را هم حل کرده اما راه ساده تر اینه که ما بیاییم و عبارات طولانی ای که بیشتر مورد استفاده قرار میگیرد را اختصار سازی کنیم. برای مثال توی vim می تونید عبارت زیر را وارد کنید:
:ab sysout System.out.println

این کار باعث میشه که در هنگام تایپ برنامه هر گاه کلمه ی sysout را تایپ کنید به طور خودکار به System.out.println تبدیل بشه:

sysout[space] > System.out.println
sysout( > System.out.println(

اما یک نکته ای که یادم رفت بگم اینه که وقتی از برنامه ی Vim خارج شوید تمام abbreviation ها پاک می شوند پس برای اینکه هر دفعه نخواهیم این آنها را تعریف کنیم همگی را در فایل ~.vimrc ذخیره کنید.

(3) دیدگاه

کتاب The Cathedral and The Bazaar

امروز یه وقتی پیدا کردم تا این کتاب را که مدت ها بود می خواستم بخونم را مطالعه کنم. این کتاب نوشته Eric S. Raymond هست و دو مدل ایجاد نرم افزار را تحلیل می کند:

  • مدل کلیسا: مدلی که بیانگر اکثر پروژه ها کنونی تجاری جهان هست
  • مدل بازار: مدل پروژه های باز متن در دنیای لینوکس

نویسنده خود یک برنامه نویس حرفه ای می باشد و در یکی از پروژه های باز متن خود به نام fetchmail به آزمایش تيوری مدل بازار می پردازد و این کتاب مدل بازار را به شرح می دهد و به اثبات قضیه ی “با وجود چندین نگاه جست و جو گر، تمامی خطاها برطرف می شود.” می پردازد. (می تونید این نرم افزار را در توزیع های Debian base نصب کنید: sudo apt-get install fetchmail)

چقدر کتابی حرف زدم :-) خلاصه امروز نشستم سر این کتاب، عجب کتابی بود خیلی حال کردم. البته خیلی از مطالب کتاب را نمی فهمیدم و اصرار به دوباره خوندن جلمات غیر قابل هضم نداشتم چون خوندن کتاب کسل کننده می شود. (اگه شما هم در خوندنش مشکل دارین از همین روش استفاده کنید)
چیر جالبی که در این کتاب وجود داره جملات کوتاه اما زیبا در مورد پروژهای بازمتن هست که در ادامه چند تاشون را میارم:

  • ‫ شروع هر نرم افزار خوب از مشکلات شخصی برنامه نویسان آن است‬.
  • برنامه نویسان خوب می دانند که چطور برنامه بنویسند. اما برنامه نویسان خبره، می دانند که چطور برنامه ها را بازنویسی کنند (و دوبازه به کار بگیرند)
  • همکار پنداشتن کاربران، راحت ترین روش برای تسریع پیشرفت برنامه نویسی و کاراترین روش برای عیب یابی نرم افزار است.
  • برنامه ایت را زود و به تناوب منتشر کن و به مشتریانت گوش بده
  • قانون لینوکس: با وجود چندین نگاه جست و جو گر، تمامی خطاها برطرف می شوند.
  • اگر شما با تست کننده های نسخه ی بتای برنامه تان، چنان که آنها با ارزش ترین منبع شما هستند، برخورد کنید، آنها به عنوان با ارزش ترین منیع شما به شما پاسخ خواهند داد.
  • روش کارای بعدی برای داشتن ایده های خوب، کسب ایده های خوب از کاربرانتان است.
  • رسیدن به حد کمال (در طراخی) در حالتی که چیز دیگری برای اضافه کردن وجود ندارد، به دست نمی آید، بلکه این مهم زمانی حاصل می شود که نتوان چیزی را از طرح مورد نظر کم کرد.

download ترجمه ی فارسی کتاب: The Cathedral And The Bazaar

نوشتن دیدگاه

افزونه ی Firefox برای مدیریت Download

شاید دوست داشته باشید مدیریت download های خود را به خارج از firefox بفرستید و از نرم افزار های دیگری برای این کار استفاده کنید. افزونه ی FlashGot دقیقا همین کار را انجام می دهد و از بسیاری از نرم افزار های مدیریت download در سیستم عامل های مختلف مانند Linux و Mac Os Xو FreeBSD و windows پشتیبانی می کند.

برای مثال من از نرم افزار مدیریت download بسیار قدرتمند downloader for x استفاده می کنم و تنظیم کرده ام که download ها را با انجام می دهم.

Powered by ScribeFire.

(3) دیدگاه

نوشته‌های قدیمی‌تر »