تبليغاتX
آموزش C/C++/C#.NET

آموزش C/C++/C#.NET

آموزش C/C++/C#.NET ، معرفی کتب ریاضی و مقدمه ای بر ترجمه متون تخصصی کامپیوتر

سلامی دوباره خدمت تمامی عزیزان امروز هم می خواهم یک کتاب معرفی کنم برای کسانی که علاقه مند به یادگیری J2ME هستند اين كتاب از سري McGrawHill هست و نام اون J2ME the cpmplete reference كه كتاب بسيار خوبس است و مي تونين از Flazx.com دانلود كنين.
+ نوشته شده در  پنجشنبه بیست و نهم شهریور 1386ساعت 10:25  توسط غلامرضا صابری تبریزی  | 

سلامی دوباره می خواستم از این همه نظراتتون تشکر کنمو بگم بابا با این همه نظر ما رو شرمنده نکنین
+ نوشته شده در  سه شنبه بیست و هفتم شهریور 1386ساعت 10:26  توسط غلامرضا صابری تبریزی  | 

اين مقاله زير كه خيلي به درد بخور هم هست بخشي از اسناد Kbuild است ابزاري كه براي كامپايل كردن ماژول هاي كرنل درلينوكس به كار مي رود و جزو امكاناتي به شمار مي رود كه در كرنل هاي جديد اضافه شده است البته اگر سورس كد  كرنل هاي جديد را داشته باشيد مي توانيد در بخش Documention آن را پيدا كنيد اما اگر نداشتيد مقاله زير مطلب خوبي هست البته كامل نيست ولي متن ساده اي دارد و مقدمات رو گفته اميدوارم به دردتون بخوره.

kbuild: Documentation - how to build external modules
From:   Sam Ravnborg <sam@ravnborg.org>
To:   linux-kernel@vger.kernel.org
Subject:   [RFC] kbuild: Documentation - how to build external modules
Date:   Tue, 20 Apr 2004 23:51:31 +0200


This is just first wrap-up of some text about building external modules.
There are a few unfinished chapters - but's too late today.

Please let me know what you expect to see in here - which is not covered
eiter direct or via an empty heading.

 Sam

Building external modules
=========================
kbuild offers functionality to build external modules, with the
prerequisite that there is a pre-built kernel avialable with full source.
A subset of the targets available when building the kernel is available
when building an external module.


Building the module
-------------------
The command looks like his:

 make -C <path to kernel src> M=$PWD

For the above command to succeed the kernel must have been built with
modules enabled.

To install the modules just being built:

 make -C <path to kernel src> M=$PWD modules_install

More complex examples later, the above should get you going in most cases.


Available targets:
- - - - - - - - -
make -C $KDIR M=$PWD
 Same as if 'modules' was specified. See description of
 modules target below.

make -C $KDIR M=$PWD modules
 Will build the module(s) located in current directory. All output
 files will be located in the same directory as the module source.
 No attemps are made to update the kernel source, and it is
 expected that a successfully make has been executed
 for the kernel.

make -C $KDIR M=$PWD modules_install
 Install the external module(s)

make -C $KDIR M=$PWD clean
 Remove all generated files in current directory

Available options:
- - - - - - - - -
make -C $KDIR
 Used to specify where to find the kernel source.
 '$KDIR' represent the directory where the kernel source is.
 Make will actually change directory to the specified directory
 when executed.

make -C $KDIR M=$PWD
 M= is used to tell kbuild that an external module is being built.
 The option given to M= is the directory where the external
 module is located.
 When an external module is being built only a subset of the
 usual targets are avialable.

make -C $KDIR SUBDIRS=$PWD
 Same as M=. The SUBDIRS= syntax is kept for backwards compatibility.

make -C $KDIR M=$PWD help
 help will list the available target when building external
 modules.


A more advanced example
- - - - - - - - - - - -
This example shows a setup where a distribution has wisely decided
to separate kernel source and output files:

Kernel src:
/usr/src/linux-<kernel-version>/

Output from a kernel compile, including .config:
/lib/modules/linux-<kernel-version>/build/

External module to be compiled:
/home/user/module/src/

To compile the module located in the directory above use the
following command:

 cd /home/user/module/src
 make -C /usr/src/linux-<kernel-version> \
 O=/lib/modules/linux-<kernel-version>/build \
 M=$PWD

Then to install the module use the following command:

 make -C /usr/src/linux-<kernel-version> \
  O=/lib/modules/linux-<kernel-version>/build \
  M=$PWD modules_install

The above are rather long commands, and the following chapter
lists a few tricks to make it all easier.

Tricks to make it easy
---------------------
TODO: .... This need to be rewritten......

A make line with several parameters becomes tiresome and errorprone
and what follows here is a little trick to make it possible to build
a module only using a single 'make' command.

Create a makefile named 'Makefile' with the following content:
---> Makefile:

all:
 $(MAKE) -C /home/sam/src/kernel/v2.6 M=$(PWD) \
   $(filter-out all,$(MAKECMDGOALS))

obj-m := module.o
---> End of Makefile

When make is invoked it will see the all: rule, and simply call make again with the right parameters.

If a driver is being developed that is targeted for inclusion in the main kernel, an idea is to seperate out the all: rule to a Makefile nemed makefile (lower capital m) like this:

---> makefile
all:
 $(MAKE) -f Makefile -C /home/sam/src/kernel/v2.6 \
         M=$(PWD) $(MAKECMDGOALS)

---> End of makefile

The kbuild makefile will include only a single statement:
---> Makefile:

obj-m := module.o

---> End of Makefile
When executing make, it looks for a file named makefile, before a
file named Makefile. Therefor make will pick up the file named with lower capital 'm'.


Prepare the kernel for building external modules
------------------------------------------------
When building external modules the kernel is expected to be prepared.
This includes the precense of certain binaries, the kernel configuration
and the symlink to include/asm.
To do this a convinient target is made:

 make modules_prepare

For a typical distribution this would look like the follwoing:

 make modules_prepare O=/lib/modules/linux-<kernel version>/build


TODO: Fill out the following chapters

Module versioning
-----------------

Local include files
-------------------
CLFAGS := include ...

Binary only .o files
--------------------
Use _shipped ...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

+ نوشته شده در  یکشنبه بیست و پنجم شهریور 1386ساعت 12:3  توسط غلامرضا صابری تبریزی  | 

با سلام امروز مي خواهم يك كتاب بريا يادگيري لينوكس بهتون معرفي كنم كه خيلي به درد مبتدي ها مي خوره اسم كتاب هست Linux for Dummies و می تونین اون رو از flazx.com دانلود كنين بهتون پيشنهاد مي كنم حتما بخونيدش. فعلا باي اگر كسي مطلب خاصي خواست مي تونه توي قسمت نظرات وبلاگ بگه در ضمن بهتون پيشنهاد مي كنم مقاله برنامه نويسي با پوسته رو كه چند وقت پيش پست كردم حتما بخونين به دردتون مي خوره.
+ نوشته شده در  یکشنبه بیست و پنجم شهریور 1386ساعت 9:47  توسط غلامرضا صابری تبریزی  | 

یکی از دوستا خواسته بودند یک کتاب برای آموزش ‍سي ++ آپ لود كنم كه كامل باشد كتاب فارسي خوبي در اين زمينه به صورت الكترونيكي وجود نداره اما مي تونين اگر مبتذدي هستين از كتاب والتر ساوييچ استفاده كنيد كه انتشارات دانش نگار اون رو به چاپ رسونده و ترجمه مهندس بابك احترامي هم هست و اگر نيمه حرفه اي هستين مي تونين از مرجع رابرت.و.لي فور استفاده كنين كه آقاي قلزم اون رو ترجمه كرده اميدوارم مورد استفادتون قرار بگيرد.
+ نوشته شده در  چهارشنبه بیست و یکم شهریور 1386ساعت 15:18  توسط غلامرضا صابری تبریزی  | 

کلاسها و اشیا و تفاوت این دو با یکدیگر:

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

نحوه تعریف کلاس ها در C#:

نکته ای که در اینجا لازم می بینم به شما یادآوری کنم این است که برای نوشتن یک کلاس یا هر برنامه دیگری بهتر است ابتدا تمامی جنبه های آنرا در نظر بگیرید و ابتدا آن را روی کاغذ پیاده سازی نمایید و سپس به نشتن آن بپردازید چرا که طراحی قبل از پیاده سازی به شما کمک زیادی در پیش گیری از خطاهای منطقی می کند درست است که ممکن است به نظر بیاید این کار طلف کردن وقت است اما به یاد داشته باشید برای ساخت یک خانه ابتدا باید نقشه آنرا در دست داشته وگرنه هیچ کس نمی داند چه چیزی اتفاق می افتد مثلا ممکن است لوله های آب به جای اینکه از داخل دیوار ها رد شوند از سقف سر در بیاورند!!!

البته طراحی کلاس ها مبحث بسیار گسترده ای است و شامل موارد بسیار زیادی می شود که از حوصله این مقاله خارج است اما به عنوان راهنمایی های کلی می توانم به شما بگویم که ابتدا بهتر است یک نقشه کلی از کلاستان تهیه نمایید در این مرحله احتیاجی نیست به جزئیات بپردازید در واقع شما در این مرحله نیازمندیهای مسئله خود را طرح می کنید و اعمالی را که انتظار دارید کلاستان انجام دهد بر روی کاغذ یا در هر مکان دیگری می آورید پس از این مرحله می توانید کلاس خود را جزء به جزء پیاده سازی نمایید. تنها نکته باقیمانده این است که بهتر است بخشی را نیز به خطاهایی که ممکن است در کلاس شما بیفتد اختصاص دهید و به خطاها هم فکر کنید.

اما می رسیم به نحوه تعریف کلاس ها در C# همان طور که می دانید C# بر خلاف عضو قدرتمند خانواده خود C++ یک زبان کاملا شی گرا است و برنامه نویسی ساختاریافته را پشتیبانی نمی کند و هر چیزی که شما در C# پیاده سازی می نمایید باید به صورت کلاس ها باشد بنابراین برای برنامه نویسی با C# باید کاملا با ریزه کاری های تعریف و پیاده سازی کلاس ها آشنا باشید در غیر این صورت نخواهید توانست از ویژه گی های این زبان به درستی استاده نمایید. برای تعریف یک کلاس در C# می توانید این عمل را در یک فایل کلاس یا انجام دهید این فایل ها دارا پسوند .CS هستندبرای ایجاد چنین فایل هایی می توانید پس از ایجاد پروژه جدید در Visual Studio روی نام پروژه خود راست کلیک کرده و سپس گزینه Add و سپس Class را انتخاب نمایید پس از انجام این عمل کلاس مورد نظر شما ایجاد خواهد شد. شکل کلی تعریف کلاس ها در C# به صورت زیر است:

Access Modifier class ClassName

{

 

//you class body

}

قسمت هایی که به صورت کج(Italic) مشخص شده اند با نام های دلخواه شما جایگزین خواهند شد بخش اول که Access Modifier است مشخص کننده این است که آیا کلاس های شما در خارج از این فایل هم می توانند مورد استفاده قرار بگیریند یا خیر این قسمت می تواند شامل دو گزینه public یا private همان طور که می دانید در C# کلاس ها در بخش هایی به نام فضای نامی (namespace) دسته بندی شده اند تا دو کلاس به یک نام باعث ایجاد اختلال در برنامه نشود تمامی کلاس هایی که شما در یک فایل کلاس تعریف می کنید هم بخشی است از یک فضای نام اگر به بالای فایل کلاس خود نگاهی بیندازید می بینید که در ابتدای کد شما خطی مانند زیر وجود دارد البته به جای name یک نام قرار دارد:

namespace name

{

   Access Modifier class ClassName

{

 

//you class body

}

 

}

حال اگر کلاس شما دارای مشخصه دسترسی public باشد با اضافه کردن فضای نام خود به فایل دیگری (توسط دستور using  که در ادامه توضیح داده شده) می توانید متغیری از نوع کلاس خود تعریف نموده و از آن استفاده کنید اما اگر مشخصه دسترسی کلاس شما private باشد فقط در همان فایل و فضای نام می توانید از کلاس خود استفاده نمایید به یاد داشته باشید اگر توصیف کننده دسترسی را ننویسید به طور پیش فرض private در نظر گرفته خواهد شد. پس از نوشتن نام کلاس خود و توصیف کننده دسترسی می توانید بدنه کلاس خود را بین دو علامت {} بنویسید در این قسمت می توانید متغیر ها و توابع مورد نیاز خود را در درون کلاس تعریف نمایید برای تعریف یک متغیر در کلاس باید به همان صورت عادی عمل نمایید تنها نکته ای که باید به آن توجه نماید این است که یک مشخصه دسترسی هم باید برای متغیر خود در نظر بگیرید که می تواند شامل public / private / protected باشد اگر مشخصه دسترسی متغیر یا تابعی درون کلاس شما private باشد آن متغیر و یا تابع فقط توسط اعضای داخلی کلاس در دسترس خواهد بود و یک شی از بیرون نمی تواند به آن عضو دسترسی داشته باشد مشخصه دسترسی protected  در ادامه برسی می شود. پس از تعریف کلاس خود می توانید البته اگر لازم است و مایل هستید از آن در برنامه خود استفاده نمایید برای اینکه بتوانید از یک کلاس که در یک فایل (البته در همان پروژه) است استفاده نمایید باید با استفاده از دستور using نام فضای نامی خود را در بالای برنامه اضافه نمایید باید این دستور را در کنار بقیه دستورات using در بالای برنامه اضافه نمایید اگر به ابتدای فایل خود مثلا کد فرم برنامه خود نگاهی بیندازید این دستورات را پیدا خواهید کرد به عنوان مثال در بالای یک فرم عادی پس از ایجاد این دستورات using قرار دارند:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

شما هم می توانید دستورات using خود را به این قسمت اضافه نمایید دستورا using به کامپایلر می گوید که از کلاس های موجود در فضای نام ذکر شده در جلوی آن می خواهیم استفاده نماییم. پس از اضافه کردن فضای نامتان به پروژه می توانید متغیری از نوع کلاس مورد نظر تعریف نموده و از آن استفاده نمایید برای انجام این عمل باید به صورت زیر عمل نمایید:

YourClassName InstanceObject=new ClassName();

همان طور که مشاهده می نمایید برای تعریف یک کلاس ابتدا باید نام کلاس خود را ذکر نمایی و سپس نام شی مورد نظر خود از نوع کلاس را ذکر نموده و پ از آن باید بعد از علامت مساوی و با ذکر کلمه کلیدی new نام کلاس خود را به همراه دو پرانتز باز و بسته بیاورید. اما سوالی که در اینجا ممکن است برای شما مطرح شود این است که چرا کلاس ها به این گونه تعریف می شوند و کاربرد کلمه کلیدی new چیست؟ در پاسخ باید بگویم هنگامی که شما یک متغیر از نوع کلاس تعریف می کنید این متغیر یک شی نیست بلکه در واقع یک ارجاع است که می تواند به آن شی اشاره کند و شی واقعی با استفاده از کلمه کلیدی new ایجاد می گردد کاربرد کلمه کلیدی new در این است که ایم کلمه کلیدی در زمان اجرا حافظه مورد نیاز برای ایجاد شی را از سیستم می گیرد و یک ارجاع به آن را باز می گرداند که این ارجاع می تواند در متغیر تعریف شده ذخیره کردد تعریف تمامی اشیا در C# باید به این صورت انجام شود. اما پس از کلمه کلیدی new نام کلاس به همراه دو پرانتز ذکر می شود این به C# می گوید که تابع سازنده کلاس را فراخوانی کن تابع سازنده تابعی است که در ابتدای ایجاد هر شی فراخاونی می شود، این تابع هم نام با نام کلاس بوده و هیچ نوع مقدار بازگشتی هم ندارد اگر شما تابع سازنده ای برای کلاس خود تعریف ننمایید C# سازنده پیش فرض کلاس را اجرا خواهد کرد مانند مثال قبلی.

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

 

public class PersonInfo

{

    private int  _Age;

    private string _Name;

    private string _LastName;

    public void Show()

    {

           Console.Write("Name=" + _Name + "  Last Name=" + _LastName  +   "Age="                       + _Age.ToString());

     }

   

}

همان طور که مشاهده می نمایید این کلاس شامل چند متغیر خصوصی و یک تابع است.

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

+ نوشته شده در  چهارشنبه بیست و یکم شهریور 1386ساعت 15:15  توسط غلامرضا صابری تبریزی  | 

Linux Shell programming

سلامي دوباره خدمت شما دوستان عزيز امروز يك مقاله تقريبا خوب درباره برنامه نويسي با پوسته لينوكس براتون گذاشتم مي تونين از اينجا دانلود كنين اميدوارم مورد استفاده قرار بگيره.

+ نوشته شده در  چهارشنبه بیست و یکم شهریور 1386ساعت 15:14  توسط غلامرضا صابری تبریزی  | 

سلام امروز می خواهم یک راهنمایی در مورد برنامه نویسی برای سیتم هاب موبایل و کلا میکرو سیستم ها بکنم اگر شما مایل هستید به هر نحوی برای این گونه سیستم ها برنامه نویسی کنید به شدت بهتون پیشنهاد می کنم که از C++ استفاده نکنید چراکه برای برنامه نویسی با C++  برای این گونه سیستم ها مجبور خواهید بود کتابخانه منحصر به اون نوع سیستم عامل مثلا سیمبیان رو یاد بگیرید و اگر این سیستم عامل ها ژس از مدتی منسوخ بشوند شما یک کار بیهوده بزرگ رو انجام دادین در عوض می تونید از زبانهای یمثل جاوا که با تمامی این سیتم ها سازگاری داره به راحتی استفاده کنید و به را حتی برنامه شما قابلیت حمل هم خواهد داشت امیدوارم از این نکته استفاده لازم رو برده باشید.
+ نوشته شده در  سه شنبه بیستم شهریور 1386ساعت 11:6  توسط غلامرضا صابری تبریزی  | 

سلام شرمنده که چند وقتی است که آژ لود نمی کنم آخه انتخاب واحد داشتم اما قول می دهم تا چند روز آینده یک مطلب خوب درباره Shell perogramming in linux براتون آژ لود كنم اگه مطلب خاصي خواستين بگين تا براتون بذارم. فعلا باي.

راستي در مورد برنامه نويسي با C# مرجع C# The complete reference كه مي تو نين از Flazx.com دانلود كنين روشديدا بهتون ژيشنهاد مي كنم فعلا باي بايد موفق و مويد باشين

+ نوشته شده در  دوشنبه نوزدهم شهریور 1386ساعت 11:48  توسط غلامرضا صابری تبریزی  | 

سلام امروز می خواهم یک کتاب بهتون معرفی کنم کتابی که امروز بهتون معرفی می کنم درباره برنامه نویسی با C++ هستش به نام Professional C++ که مربوط به انتنشارات Wrox هستش می تونین از کتابخانه Flazx.com می تونین دانلود کنین این کتاب کتاب بسیار خوبی هستش در زمینه برنامه نویسی شی گرا در C++ و همون طوریکه از اسمش پیدا است برای حرفه ای هاست و نه برای آماتورها در کل کتاب بسیار عالی و مثال های بسیار خوبی در مورد برنامه نویسی شی گرا در C++ دارد امیدوارم مورد استفاده شما عزیزان قرار بگیرد.
+ نوشته شده در  چهارشنبه چهاردهم شهریور 1386ساعت 10:25  توسط غلامرضا صابری تبریزی  | 

این مقاله هم بخشی است از کتاب Linux for Dummies که درباره روش های اتصال به اینترنت است و ترجمه خودم می باشد. و می تونین از اینجا دانلود کنین.

+ نوشته شده در  دوشنبه دوازدهم شهریور 1386ساعت 11:1  توسط غلامرضا صابری تبریزی  | 

این هم آموزش Disk Management است که ترجمه خودم است می تونین از اینجا دانلودش کنین.

+ نوشته شده در  دوشنبه دوازدهم شهریور 1386ساعت 10:58  توسط غلامرضا صابری تبریزی  | 

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

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

+ نوشته شده در  شنبه سوم شهریور 1386ساعت 11:44  توسط غلامرضا صابری تبریزی  | 

براتون یک سورس کد Client/Server سی شارپ گذاشتن البته کار خوردم نیست و فقط فایلهای کلاسش هستش و می تونین استفاده کنین و یا سوکت نویسی یاد بگیرین در هر حال یک مقاله سوکت نویسی در سی شارپ به زودی می نویسم می ذارم برای دانلود. برنامه رو می تونین از اینجا بگیرین.

+ نوشته شده در  شنبه سوم شهریور 1386ساعت 11:40  توسط غلامرضا صابری تبریزی  |