بایگانیِ Programming

راهنمای جامع کامپایل برنامه‌های 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) دیدگاه

رابط برنامه نویسی Google Reader به طور غیر رسمی منتشر شد

من همیشه از این گلایه می‌کردم که چرا Google رابط برنامه نویسی Google Readerش را منتشر نمی کنه (منظورم همون API هست). یه مدت بود که با این
Google Reader سر جنگ داشتم. سعی می‌کردم تا اونجایی که میتونم ازش دوری کنم و معتادش نشم. یه مدت از Bloglines استفاده می‌کردم و به دلیل سیاست بسیار خوبی که در زمینه‌ی API داشت از استفاده‌ی اون لذت می‌بردم.
به راحتی میتونستم با استفاده از نرم‌افزارهای third-party موجود به خوراک‌هام به صورت Offline دسترسی داشته باشم. اما از وقتی که به لینوک مهاجرت کردم با یک مشکل اساسی مواجه شدم و آن نبود نرم‌افزار مناسبی برای برای چک کردن خوراک‌هام بود. راستی یادم رفت بگم، تا زمانی که توی Windows بودم از GreateNews استفاده می‌کردم که امکانات بسیار خوبی برای Synchronize کردن خوراک‌ها با Bloglines داشت.

خلاصه از وقتی اومدم به دنیای زیبای GNU/Linux مجبور شدم از همون Google Reader قدرتمندی با امکانات قدرمتند اون در به اشتراک گذاری خوراک‌ها استفاده کنم. البته یک مدتی هم به سرم زده بود بشینم یک خوراک‌خوان اختصاصی برای Bloglines بنویسم.

یک مدت گذشت و ما هم با همین وضع کنار آمدیم تا اینکه چند روز پیش این خبر به گوشم خورد:

Niall Kennedy اخیرا جزيیات رابط برنامه‌نویسی Google Reader را به صورت غیر رسمی منتشر کرد. البته این API رسمی نمی‌باشد و توسط Google پشتیبانی نمی‌شود. نکته‌ی قابل توجه اینجاست که Kennedy اعلام کرده که او تصدیق‌نامه‌ای از Google به خاطر گزارش این API به صورت دقیق دریافت کرده.
همچنین Kennedy اعلام کرده که Jason Shellan، مدیر پروژه‌ی تیم Google Reader گفته که به زودی Google رابط برنامه‌نویسی Google Reader را به طور رسمی اعلام خواهد کرد.
واقعا جای تاسف هست که Google باید بعد از اینکه APIش توسط دیگران فاش بشه قبلا اون را به صورت رسمی منتشر نکرده. شاید این واقعه برای من به یک کابوس تبدیل شده بود. همیشه از اینکه google reader رابط برنامه‌نویسیش را اعلام نمی‌کرد در عذاب بودم.

از این پس باید شاهد تحول بسیار بزرگی در زمینه‌ی خوراک خوان های تحت و روی میزی در سال جدید باشیم. مطمئنا third-party های قدرتمندی در این زمینه به فعالیت می‌پردازند. از مزایای استفاده ازاین API در ساخت Feed Aggregatorها این هست که:

  1. گوگل و تیم مهندسی آن و همچنین serverهای قدرتمند آن دارای توانایی بالایی در عملیات واکشی feed ها (parse) و همچنین دریافت فرم‌های متفاوت feed از جمله XML و RSS 1.0 , RSS 2.0 , Atom 0.3 , Atom 10 و … می‌باشد. عملیاتی چون validation خوراک ها نیز از معضلات موجود در سر راه برنامه نویسان می‌باشد که همگی این فرایند ها در google reader انجام می شود. و برنامه نویسان نیازی به تمرکز بر روی واکشی خوراک ها با فرمت های مختلف را ندارند زیرا این API تنها یک خروجی دارد.
  2. کاهش هزینه‌ها در پهنای باند مصرفی: در استفاده از این API دیگر نیازی به بررسی کردن آدرس خوراک های مختلف را نداریم. علی الخصوص اینکه با هر بار بررسی آدرس خوراک‌ها تنها تعداد معدودی از خوراک ها به روز شده‌اند و در نتیجه مصرف پهنای باند کاربر به شدت پایین خواهد آمد.
  3. استفاده از امکانات Web 2.0: همان طور که می‌دانید یکی از دلایل محبوبیت خوراک خوان Google Reader، امکانات اشتراکی آن می‌باشد. که باز هم می‌توان از طریق این API می‌توان به اقلام اشتراکی نیز دسترسی داشت.
  4. بازدهی بیشتر در کامپیوتر‌های قدیمی: به علت استفاده‌ی شدید از JavaScript و تکنولوژی Ajax در این خوراک خوان. باعث سنگین شدن بیش از حد آن شده به طوری که عملا با استفاده‌ی منابع زیادی از سیستم باعث کند شدن فعالیت سیستم عامل می‌شود. اما در صورت استفاده از نرم‌افزارهای third-pary در کامپیوتر های قدیمی می‌توان از استفاده‌ی بیش از حد منابع سیستمی جلوگیری کرد.
  5. طراحی خوراک‌خوان برای تلفن همراه: از این بعد می‌توان شاهد سیل عظیمی از نرم‌افزارهای خوراک خوان برای تلفن‌های همراه بود.

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

نوشتن دیدگاه

چگونه 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) دیدگاه

معرفی کتاب Java (مبحث ورودی و خروجی I/O)

کتابخانه ی زبان برنامه نویسی Java بسیار گسترده می باشد به طوری که همه ی این کتابخانه را نمی توان در یک کتاب حجیم هزار صفحه ای آموزش داد. پس برای یادگیری زبان Java سعی نکنید یک کتاب را بگزارید جلوتون و از اول تا آخر اونو بخونید چون اکثر کتاب های برنامه نویسی زبان Java نمی توانند تمام کتابخانه را تشریح کنند به همین علت نمی توانند مثال های گسترده ای در این زمینه ارائه کنند.
پس سعی کنید ابتدا با خواندن یک کتاب آمورشی مفاهیم اولیه و اساسی Java مثل انواع داده ها، متغیر ها، آرایه ها، عملگر ها، عبارات کنترلی، Classها، Methodها، وراثت، packageها، رابط ها و مدیریت استثناء ها را به خوبی یاد بگیرید و سپس شروع به خواندن انتخابی از هر قسمت دیگر این زبان برنامه نویسی کنید.

این همه گفتم اصل موضوع یادم رفت. چند روزه دارم مفاهیم I/O در Java را می خوانم. همان طوری که گفتم  اکثر کتاب های جامع Java یک نگاه کلی به این مباحث می کنند و وارد جزئیات نمی شوند. برای همین کتاب O’Reilly Java I/O را برای یادگیری java.io.* پیشنهاد می کنم.

فصل اول این کتاب در مورد ساختار File در سیستم عامل صحبت می کنه و سپس انواع داده ها و انواع Character set ها و سپس به تفصیل با مثال های متنوع این مبحث را آموزش می دهد. مباحث این کتاب عبارت اند از:

  1. Introducing I/O
  2. Output Streams
  3. Input Streams
  4. File Streams
  5. Network Streams
  6. Filter Streams
  7. Data Streams
  8. Streams in Memory
  9. Compressing Streams
  10. Cryptographic Streams
  11. Object Serialization
  12. Working with Files
  13. File Dialogs and Choosers
  14. Multilingual Character Sets and Unicode
  15. Readers and Writers
  16. Formatted I/O with java.text
  17. The Java Communications API

مشخصات کتاب:

           Java I/O
Elliotte Rusty Harold
Publisher: O’Reilly
First Edition March 1999
ISBN: 1-56592-485-1, 596 pages

Powered by ScribeFire.

۱ دیدگاه

راهنمای نصب ماژول برای Apache

ماژول های Apache را تا اونجایی که من اطلاع دارم به دو روش میشه نصب کرد. یکی نصب از طریق source code و کامپابل کردن اون و دیگری استفاده از فایل های binary هست که این روش به سادگی خوردن یک لیوان آب می باشد.
پس همون راه دوم را انتخاب می کنیم:

نصب ماژول دخواه

در مخازن Ubuntu ماژول های اون وجود دارند که با libapache2 شروع می شوند برای مثال می خواهیم ماژول libapache2-mod-python را نصب کنیم.

sudo apt-get install libapache2-mod-python

فعال کردن ماژول

یک را اینه که به صورت دستی ماژول را به /etc/apache2/mods-enabled. اضافه کنیم اما راه حل آسانتر استفاده از فرمان a2enmod هست.

sudo a2enmod mod_python

با فرمان a2dismod هم می تونیم اونو غیر فعال کنیم.

ریست کردن Apache

sudo /etc/init.d/apache2 restart

Powered by ScribeFire.

نوشتن دیدگاه

مقدمات برنامه نویسی با جاوا

چند وقت پیش شروع کردم به یادگیری زبان جاوا. یادمه نصب جاوا و کامپایل کردن اولین برنامه ی جاوا برام خیلی مشکل بود و اصولا در برنامه نویسی برای ورود به هر زبانی یکی از ساده ترین برنامه ها نوشتن برنامه ی Hello, Wold هست. پس تا آخره مقاله با من همراه باشید.

نصب کامپایلر جاوا

جاوا در سه نسخه ی J2SE و J2ME و J2EE ارائه می شود. که برای یادگیری جاوا باید ابتدا اصول آن را یاد بگیرید.  در اینجا نسخه ی استاندارد جاوا که همون J2SE هست مد نظر ماست که مخفف Java 2 Standard Edition  هست.  پس ابتدا  به صفحه ی  java.sun.com/j2se. مراجعه کنید که sun دو نسخه ی JDK یا JRE را به شما پیشنهاد می کنه. من پیشنهاد می کنم JDK را دانلود کنید که حجمش هم نسبتا بالا هست. با توجه به سیستم عاملی که دارید نسخه ی مورد نظر خودتون انتخاب و نصب کنید.
اما دوستانی که از لینوکس به ویژه کسانی که از توزیع های مبتنی بر دبیان استفاده می کنند می توانند با فرمان apt-get install sun-java6-jdk اونو دانلود و نصب کنند و هیچ نگرانی نسبت به Dependencyها نداشته باشند.

مقدمات کار با جاوا

جاوا به دلیل اینکه Cross-Platform می باشد برای هر سیستمی اعم از لینوکس و ویندوز و سولاریس و … یک ماشین مجازی به نام JVM ارائه می دهد وظیفه ی این ماشین مجازی ترجمه ی Byte Code های کامپایل شده توسط کامپایلر جاوا می باشد. اما Byte Code چیست؟
در زبان های برنامه نویسی مانند C و Pascal و … کامپایلر برنامه مستقیما برنامه را به کدی اجرایی و قابل فهم برای کامپیوتر تبدیل می کند. اما کامپایلر جاوا اینگونه نسیت. بلکه کامپایلر جاوا ابتدا برنامه را به Byte Code تبدیل کرده که قابل حمل روی تمامی سیستم عامل ها می باشد سپس توسط برنامه ای به نام ماشین مجازی که برای هر سیستم عاملی ارايه می دهد آن برنامه را برای سیستم ترجمه می کند. بدین وسیله برنامه های نوشته شده توسط جاوا قابل حمل می شوند.

برنامه ی Hello, World

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

class HelloWorld {
    public static void main(String args[]) {
       System.out.println(“Hello, World”);
   }
}//End of HelloWorld

حال در خط فرمان (در ویندوز توی run بنویسید cmd) بنویسید javac HelloWorld.java پس از اون کامپایلر فایلی به نام HelloWorld.class در دابرکتوری جاری ایجاد می کنه. حالا در خط فرمان تایپ کنید: java HelloWorld که پس از اجرای این فرمان پیغام Hello, World در صفحه ی نمایش چاپ می شود.

افرادی که قبلا با C یا C++ کار کرده باشند به راحتی می توانند جاوا را بیاموزند اما اگر مثل من مبتدی هستید باید زحمت بیشتری بکشید

Powered by ScribeFire.

(7) دیدگاه

vi ویرایشگر قدرتمند برای حرفه ای ها

چند روزی هست که ما(من!) هم به جمع مهندسان نرم افزار(ترم اولم!) پیوستم. اون اوایل از ویرایشگر gedit استفاده می کردم و به طور خلاصه می تونم بگم که ویرایشگر بسیار خوب و قابل گسترش هست (به خاطر pluginهاش) و اینکه ویرایشگر پیشفرض Gnome هم هست.
اما جدیدا یه ویرایشکر خیلی توپ پیدا کردم که خیلی قدرتمنده من که دارم دیوونه میشم. از بس امکاناتش زیاده آدم قاطی می کنه چجوری دستوراتش را یاد بگیره فعلا 7-8 تا از دستورات مهم اش را بلد نیستم. اما در صدد یاد گیری فرمان های اون هستم
آخ یادم رفت اسمش را بگم اسم این ویرایشگر vi هست. خیلی خیلی کار باش جالبه برای مثال با سه دستور 10 خط پایینی را پاک می کنم با دو ضربه ی محکم و کاری اونو save می کنم و با سه ضربه ی جانانه اونو compile می کنم: این امکانش خیلی عالیه یعنی با یه دستورک می تونم توی خود ویرایشگر دستورات خط فرمان را اجرا و اونو compile کنم.
در ضمن دوستان تازه وارد(خودم را میگم) سعی نکنند همه ی دستوراتش را یه شبه هضم کنند چون راحت الحلقوم نیست. در ضمن این دو تا لینک را برای شروع داشته باشید. فقط دستورات اولیه ی اون را یاد داده.راهنمای استفاده از ویرایشگر متن VI و Mastering the VI editor
پ.ن: دوستان همون جوری که مزیدی می گه برای اینکه از اقتدار ایران و ایرانی دفاع کنید زیاد از بمب googleی و روش های بیهوده استفاده نکنید راههای بهتری برای این کار وجود داره مثلا مهرداد روش جالبی ارائه داده حتما ببینید: ساخت تم برای GDM
پ.ن: دعا کنید این DVD Writerم درست بشه. دو ماه نیست خریدمش. شدیا محتاج نصب ubuntu 7.10 هستم.

پ.ن: دیشب چند تا عکس از میدان امام و پل خواجو گرفتم خیلی وفت بود بیرون نرفته بودم روحیم عوض شد.uploadشون کردم توی flickrم. راستی از پل خواجو گفتم بزار یه چیز جالب در مورد پل خواجو بگم. دیشب که رفته بودم عکاسی یه پیرمردی برام توضیح داد که این پل شمع و بلند گو داره. منو برد یه جایی از پل و بهم شمع هاش را نشون داد یه روز که دم غروب آفتاب میرم براتون از شمع هاش عکش می گیرم آخه باید از زاویه ی خاص و زمان خاصی عکس بگیرم. بلندگو هاش هم جالب بودند وقتی دم یکی از ستون های پل خواجو آروم حرف بزنی صدا به ستون مقابل میرسه و نفر بعدی می تونه صداش را بشنوه. در ضمن برای همین هست که همه ی آوازه خوان ها (به جز حامد چارشنبه!) صداشون اونجا قشنگ در میاد.

نوشتن دیدگاه

چگونه برای خط فرمان لینوکس برنامه بنویسیم؟

دیروز داشتم توی فایل های سیستمی Linux گشت میزدم تا اینکه به پوشه ی usr/bin رسیدم. محتویات پوشه برام آشنا بودند. اسم تمام برنامه ها و فرمان هایی که از طریق Terminal وارد می کردم را اینجا بود. سعی کردم محتویات file های داخل این directory را ببینم ولی اکثرا Execute بودند. در یک لحظه یک فکر عجولانه ای به دهنم رسید. من که تا حالا تا حدودی با زبان برنامه نویسی pascal آشنا بودم به سرعت یه برنامه کوچیک نوشتم و اونو compile کردم و به سرعت file اجرایی را به پوشه ی /usr/bin/ منتقل کردم.
عجب چیز جالب بود. حالا توی خط فرمان وقتی اسم file اجرایی را که ساخته بودم را وارد می کردم اون برنامه اجرا میشد.
بلاخره زندگیمون از درجا زدن در اومد. هروز داریم چیز جدیدی توی ubuntu یاد میگیریم

(3) دیدگاه

compiler زبان pascal برای linux

بلاخره ما هم دانشجوی رشته ی نرم افزار شدیم. این خبر را باید زود تر از اینا میدادم ولی خیلی درگیر یادگیری کار با Linux و Ubuntu بودم. ترم اول زبان Pascal را باید یاد بگیریم. با جست و جو در انجمن های Technotux بلاخره یک کامپابلر براش پیدا کردم. اگه از Linux استفاده می کنید و نیاز به Compiler برای زبان Pascal دارید می تونید از Free Pascal استفاده کنید. در مورد Editor هم Lazarus را می توانید از همون جا دانلود کنید. بعد از نصب Compiler برای compile کردن برنامه ها از کد زیر استفاده کنید:
ی

fpc filename.pas

(4) دیدگاه