زبان برنامه نویسی D قسمت اول

D چیست؟

D یک زبان برنامه‌سازی سیستمی و کاربردی همه منظوره است . D یک زبان سطح بالاتر از ++C است اما توانایی نوشتن کدهای قدرتمند و تعامل مستقیم با APIهای سیستم عامل و سخت‌ افزار را حفظ می‌کند.D به خوبی برای نوشتن برنامه‌های متداول و برنامه‌های بزرگ چند میلیون خطی با تیمهای برنامه نویسی مناسب است . D به آسانی قابل آموختن است ، توانائیهای زیادی را برای کمک به برنامه ‌نویس فراهم می‌کندوبه خوبی برای فناوری پرتکاپوی بهینه‌سازی کامپایلر مناسب است.

D یک زبان اسکریپتی(متنی) یا دارای مفسر(interpreter) نیست. همچنین دارای ماشین مجازی ، مذهب خاص یا فلسفه برتری‌جویی نمی باشد. بلکه یک زبان عملی است برای برنامه‌ نویسان حرفه‌ای که به انجام سریع و قابل اعتماد پروژه و کد قابل فهم آسان نیاز دارند و مسئول عملکرد صحیح برنامه هستند.

D اوج چند دهه تجربه به کارگیری کامپایلرهایی از زبانهای گوناگون و تلاش برای بنانهادن پروژه های بزرگ توسط آن زبان‌ها است.

D از زبانهای دیگر مخصوصاً ++C الهام می‌گیرد و آن را با تجربه و کاربرد به معنای واقعی درهم می‌آمیزد.

چرا D ؟

واقعاً چرا؟ چه کسی نیاز به زبان برنامه ‌نویسی جدید دارد؟

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

تلاشهای زیادی برای برطرف ساختن آن ضعفها تاکنون صورت گرفته است اما در پی پا فشاری بر حفظ سازگاری با گذشته خنثی شده است. در ضمن هر دوی C و ++C دستخوش یک رشد پیوسته خصوصیات جدید شده ‌اند.

این خصوصیات جدید باید به دقت و بدون نیاز به بازنویسی کد قدیمی به ساختار موجود خورانده شود. نتیجه نهایی بسیار پیچیده است ؛ C استاندارد تقریباً 500 صفحه است و ++C استاندارد حدود 750 صفحه ! در زمینه کامپایلر های ++C واقعیت این است که تعداد اندکی از کامپایلر های موجود ،استاندارد این زبان را به صورت مؤثر و کامل پیاده سازی می کنند.

برنامه نویسان ++C گرایش می‌ یابند که در جزایر خاصی از زبان برنامه بسازند ، از بعضی خصوصیات ماهرانه بهره می گیرند در حالی که از به کار بردن بسیاری از خصوصیات دیگر اجتناب می کنند. با وجود اینکه کد ++C از یک کامپایلر به کامپایلر دیگر قابل حمل است می‌تواند به سختی از برنامه نویسی به برنامه نویس دیگر منتقل شود.

توانایی بزرگ ++C این است که می‌تواند تعداد زیادی سبک های اصلی برنامه‌نویسی را پشتیبانی کند. اما در کاربرد طولانی مدت ، سبکهای دارای اشتراک یا تناقض یک مانع و در نتیجه وقت گیرند.

ناامید کننده است که زبانی چنین قدرتمند ، اعمال پایه‌ا ای مانند تغییر اندازه آرایه‌ها و الحاق رشته‌ها را انجام نمی‌دهد. البته ++C توانایی برنامه نویسی قدرتمند برای پیاده سازی آرایه های قابل تغییر اندازه و رشته ها را فراهم می‌کنند (مانند نوع بردار در STL ) . اما به هرحال چنین خصوصیات بنیادی ، بایستی جزء قسمتهای زبان باشد. آیا قدرت و قابلیتهای ++C ، قابل گسترش ، طراحی مجدد و پیاده‌سازی به یک زبان ساده وارتگنال (منحصر به فرد و مستقل) و کاربردی می‌ باشد؟ آیا تمامی آنها می‌ تواند داخل بسته‌ ای قرار گیرد که برای کامپایلرنویسان به آسانی قابل پیاده‌سازی صحیح باشد و کامپایلرها را قادر کند که به نحوی کارا ، کدهای بهینه شده و پرتکاپو ایجاد کند؟

فناوری پیشرفته کامپایلر به نقطه‌ای رسیده است که خصوصیاتی از زبان که به منظور جبران کردن ناتوانی فناوری ابتدایی کامپایلر وجود دارند ، می‌توانند حذف شوند. (مثالی ازاین نمونه می‌تواند واژه کلیدی 'register' در C باشد ، مثالی ظریفتر ماکروی پیش‌پردازنده در C است) . ما می‌توانیم به فناوری پیشرفته‌ی بهینه سازی کامپایلر اعتماد کنیم تا دیگر به خصوصیاتی از زبان که برای دست یافتن به کیفیت کد قابل‌قبول (جدای از کامپایلرهای ابتدائی) لازم است نیاز نداشته باشیم.

D درنظر دارد که هزینه‌های گسترش نرم‌افزار را حداقل %10 کاهش دهد توسط افزودن خصوصیات بهینه‌سازی بالابرنده میزان سودمندی و تولید ، همچنین با تعدیل کردن خصوصیات زبان ، به طوری که اشکالات وقت‌گیر متداول از ابتدا حذف می‌شوند.

منظره کلی D شبیه C و ++C است . این موضوع آموختن D و انتقال کد به آن را آسانتر می‌کند. گذر از C/++C به سوی D باید طبیعی حس شود و برنامه نویس مجبور نخواهد بود که یک راه کاملاً جدید انجام کارها را فراگیرد. استفاده از D به این معنا نیست که برنامه نویس به یک ماشین مجازی خاص زمان اجرا محدود شود مانند ماشین مجازی جاوا یا Smalltalk . هیچ ماشین مجازی D وجود ندارد .D یک کامپایلر سرراست است که Objectfile های قابل پیوند (Link) تولید می‌کند. D دقیقاً مانند C به سیستم عامل متصل می‌شود . ابزارهای آشنای متداول مانند make مستقیماً در برنامه‌نویسی D گنجانده شده است.

منظره عمومی و احساس موجود در C/++C ابقا خواهد شد . همان املای جبری به کار خواهد رفت و اغلب عبارات و فرمهای دستورات و طرح‌بندی عمومی. برنامه‌های D هم به سبک C (توابع و داده‌ها) و هم در سبک ++C (شیءگرا) یاترکیبی از هردو قابل نوشتن است .



D برای چه کسانی مناسب است؟

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

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

۳. مدیران برنامه‌نویسی که مجبورند به راهنماییهای سبک برنامه‌نویسی برای اجتناب از اشکالات معمول C اعتماد کنند.

۴. افرادی که براین باورند که وعده‌های سبک شییءگرای ++C به خاطر پیچید‌گی هایش برآورده نمی‌شود.

۵. برنامه‌نویسانی که از قدرت زبانزد ++C لذت می‌برند اما به خاطر نیاز به صرف تلاش زیاد برای اداره حافظه و یافتن اشکالات اشاره‌گرها ، ناامید شده‌اند.

۶. پروژه‌هایی که نیاز به تست همراه و تصدیق و تأیید دارند.

۷. برنامه‌نویسانی که فکر می کنند زبان باید دارای خصوصیات کافی باشد . برای رفع نیاز دائمی اداره دستی و مستقیم اشاره‌گرها.

۸. برنامه‌نویسان محاسبات عددی . D دارای خصوصیات زیادی برای پشتیبانی مستقیم اعمال مورد نیاز برنامه نویسان محاسبات می‌باشد ، مانند پشتیبانی مستقیم از نوع داده مرکب و اعمال تعریف شده برای بی‌نهایت و NAN’S (این خصوصیات در استاندارد C99 اضافه شد ولی در ++C نه)

بخش تجزیه لغوی و تجزیه نحوی D از یکدیگر در نهایت مجزا هستند و همچنین از تجزیه‌گر معنایی.

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

· آشنایی با User Mode Linux

تعدادی نرم‌افزار و امکانات اضافی برای هسته لینوکس ارائه شده است. یکی از این امکانات برای توسعه دهندگان نرم‌افزار، آزمایش کنندگان بتا، نویسندگان و بررسی کنندگان محصولات، سرویس‌های فضای اینترنتی و... بسیار ارزشمند است. این امکان User Mode Linux یا اختصارا UML نامیده می‌شود. UML همانند Vmware، این امکان را فراهم می‌کند تا ماشینی را در یک ماشین دیگر اجرا نماییم. یعنی در آن واحد چندین نسخه مجزا و ایزوله شده لینوکس در حال اجرا روی یک سیستم واحد باشند.

نام این امکان چندان تشریح کننده عملکردش نیست. به این دلیل User Mode Linux نامیده شده است که در فضای کاربر یا User Space اجرا می‌شود. به کمک UML شما قادر خواهید بود تا یک سیستم مینیاتوری لینوکس را که دارای هسته و فایل سیستم خودش است را اجرا نمایید، بدون اینکه نیازی به داشتن مجوز ریشه روی تمام سیستم باشید. UML شما دنیای کوچک خودتان است و شما می‌توانید هسته آنرا تنظیم کنید، شبکه بندی آنرا ایجاد نمایید و تمامی کارهای دیگر را می‌توانید با این ماشین مجازی‌تان انجام دهید!

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

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

موارد استفاده متعدد
چندین مورد استفاده برای امکانی مانند UML وجود دارد. مثلا برای آزمایش کنندگان بتا که دائما باید با نرم‌افزارهای مختلف سرو کله بزنند، UML یک امکان ایده‌آل به شمار می‌رود. آنها مجبور نیستند نرم‌افزارها را بر روی ماشین خودشان و یا سیستم دیگری که ممکن است دورتر از دسترس‌شان باشد آزمایش کنند. نرم‌افزارهای آزمایشی را می‌توان در یک نشست UML اجرا نمود بدون اینکه به سیستم اصلی آسیبی برساند و همه چیز (سیستم اصلی و سیستم مجازی) بصورت یکجا و همزمان قابل استفاده است.

UML برای هنگامی که شما به یک سرویس خاص اطمینان کافی ندارید بسیار مناسب است. آیا می‌ترسید کسی به FTP Server شما نفوذ کند؟ کافی است آنرا در یک فضای UML اجرا نمایید. حتی اگر چنین اتفاقی رخ دهد، سیستم اصلی‌تان محفوظ است. آیا از هشدارهای امنیتی BIND نگران هستید؟ آنرا هم در یک UML قرار دهید.

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

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

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

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

# apt-get install user-mode-linux

البته شما می‌توانید به سادگی بسته‌های UML را از سایت http://packages.debian.org دریافت و نصب نمایید. در صورتی که از یک توزیع مبتنی بر RPM استفاده می‌کنید، کافی است به سایت پروژه UML مراجعه کرده و آنرا دانلود و نصب نمایید:

# rpm -ivh user_mode_linux

که بجای user_mode_linux باید نام کامل بسته را وارد نمایید. پس از نصب هسته UML همانطوری که گفته شد باید سیستم فایل UML را در سیستم خود اضافه نمایید. این فایل سیستم بسته به نوع توزیعی که مایلید از آن استفاده نمایید متفاوت خواهد بود. این فایل سیستم‌ها نیز در صفحه دانلود صفحه پروژه UML موجود می‌باشند. این فایل سیستم‌ها بصورت فایل‌های bz2 ارائه شده‌اند که باید با استفاده از دستور bzip2 آنها را از حالت فشرده خارج نمایید.

بطور پیش‌گزیده، UML فرض می‌کند که شما در حال اجرای X هستید و از داخل X می‌خواهید آنرا اجرا نمایید. بنابراین در صورتی که بخواهید بدون X آنرا اجرا نمایید با پیغام خطایی مواجه خواهید شد. البته امکان اجرای UML ها در محیط متنی خالص و بدون GUI نیز وجود دارد ولی برای انجام آن به تنظیمات جداگانه‌ای نیاز می‌باشد.

هنگامی که تمامی اقلام مورد نیاز را نصب کردید، آسان‌ترین راه برای اجرای UML از درون X تایپ دستوری مشابه زیر است:

$ linux ubd0=/path/to/unpacked/filesystem

هنگامی که UML شما شروع به کار کرد، پنجره کنسول مخصوص به خودش را باز می‌کند که نمونه‌ای از آن را در تصویر زیر مشاهده می‌کنید. به صورت پیش‌گزیده دو حساب مختلف در UML فعال می‌باشد. حساب root با نام کاربری root و حساب user با کلمه عبور user که باید آنها را تعویض نمایید.

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

در صورتی که نمی‌خواهید به خودتان دردسر نصب UML را بدهید، راه‌حل ساده‌تری نیز برای آزمایش آن وجود دارد. دیسک زنده‌ای به نام Adios. یکی از قابلیت‌هایی که این دیسک زنده استثنایی ارائه می‌کند، User Mode Linux است. همه چیز آماده است! کافی است که سیستم خود را با استفاده از آن بوت کنید و سپس در منوی KDE روی آیکون User Mode Linux کلیک کنید. با هر کلیک، یک سیستم UML بوت و اجرا خواهد شد که قادر خواهید بود از آن استفاده نمایید. در صورتی که به UML علاقه مند شده‌اید، توصیه می‌کنم که حتما نگاهی به آن بیاندازید.




منبع:http://technotux.com

اجرای برنامه‌های ویندوز بر روی لینوکس بوسیلهWine .

نویسنده: Scott Lowe

مقدمه:

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


واژه Wine به اختصار مخفف 5 کلمه انگلیسی است که مفهوم نهایی آن را میتوان اینچنین تعریف کرد: "Wine Is Not an Emulator." (واین یک تقلید کننده نیست) . در واقع این عبارت یک کلمه ترکیبی زیرکانه برای برنامه Wine است که به شما کمک می‌کند تا برنامه‌های ویندوز را در محیط لینوکس اجرا کنید. Wine در حقیقت یکی از ابزارهای API ویندوز است که به برنامه مورد نظر شما اجازه میدهد تا با استفاده از API در محیط سیستم عامل دیگری اجرا گردد البته با این نکته که اساسا از آن برنامه پشتیبانی نمی‌کند. شایان ذکر است که Wine از سیستم‌های مبتنی بر x86 بصورت کامل پیروی نمی‌کند. اما زمینه را برای اجرای نرم افزارهای API جهت بکار گیری برنامه‌های ویندوز فراهم می‌سازد. همچنین به علت خاصیت غیر تقلیدیWine برنامه‌ها با سرعت مناسبی اجرا می‌شود. در حالی که فرایند تقلیدسازی معمولا باعث کندی اجرای برنامه‌ها می‌شود. حال با نصب Wine در محیط سیستم عامل لینوکس می‌خواهیم چگونگی اجرای برنامه‌های کاربردی معمول در ویندوز را بیشتر بررسی کنیم:


بارگذاری و نصب برنامه:

در این مثال برای بیان مقصود خود از سیستم Red Hat Linux 9 استفاده می‌کنیم. آخرین نسخه Wine را از سایت www.winehq.com دریافت کرده و بسته RPM آن را در محیط لینوکس اجرا می‌کنم. به نسخه ای از Wine نیاز داریم که glibc 2.3 را پشتیبانی نماید. در هنگام نوشتن این مقاله نسخه موجود در سایت Wine تنها قابلیت پشتیبانی از glibc 2.2 را دارا بود. به هرحال نسخه مورد نیاز در سایت Wine با لینک به یک سایت دیگر می‌توانید بیابید. برای نصب نسخه RPM که از اینترنت دریافت کردیم و با توجه به اینکه پردازشگر کامپیوتر مورد اشاره Athlon است دستور زیر را در خط فرمان تایپ کنید.

$ rpm –i wine-2003011-1rh9winehq.athlon.rpm

اگر شما از نسخه دیگری از Red Hat استفاده می‌کنید و یا پردازشگر شما از انواع دیگری است؛ باید فایل مناسب را دریافت نمایید. در سیستم ذکر شده؛ مرحله نصب بصورت کامل صورت گرفت.


چه کارهایی صورت گرفت؟

پس از مرحله نصب RPM ، ابزار Wine پیکره بندی و در مسیر /usr/share win-c آماده اجرای برنامه‌های Windows می‌شود. در حقیقت Wine چندین برنامه کاربردی مشترک مانند Notepad و بازی (مهم!) Minesweeper را نیز نصب می‌کند.

چنانچه شما تصمیم به کامپایل Wine به جای نصب RPM داشته باشید ، ممکن است آدرس این مسیر متفاوت باشد. شکل شماره ۱ اجزای آشنای این مسیر را نشان می‌دهد. همانگونه که مشاهده می‌شود؛ زیرشاخه‌های مشترک ویندوز ساخته شده است و Wine از این زیرشاخه‌ها برای نصب برنامه‌ها ی مورد نظر استفاده می‌کند.


شکل شماره ۱

چنانچه اشاره شد؛ حال برنامه Notepad نصب شده است. برای اجرای آن در قسمتRun Program… ، نام برنامه Notepad را تایپ کنید. از آنجایی که Notepad توسط Wine آماده شده؛ می‌توانید آن را به صورت مستقیم فراخوانی کنید. البته این موضوع در مورد سایر برنامه‌ها صادق نیست. شکل شماره ۳ برنامه Notepad بر روی لینوکس را نمایش می‌دهد. به هر حال کندی سرعت ماوس در زمان اجرای برنامه امری بدیهی است و زمانی که شما فایلی را برای اولین بار باز می‌کنید اشاره گر به کندی حرکت می‌کند.


شکل شماره ۲

و اما اجرای سایر برنامه‌های کاربردی:

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

نصب برنامه‌ها با استفاده از ابزار Wine مسلما زمان و تلاش فراوانی را می‌طلبد. بعضی اوقات تنها قراردادن CD در درایو و اجرای برنامه نصب کافی نیست. به هر حال باید بسیار تلاش کنید و در صورتی که به اندازه کافی خوش شانس باشید می‌توانید شاهد اجرای برنامه‌های مورد نظرتان در محیط لینوکس باشد. این همان هزینه ای است که برای نصب برنامه در محیط سیستم عاملی که اساسا برای آن برنامه طراحی نشده است خواهید پرداخت. به عنوان مثال، در اینجا تصمیم به نصب یک نسخه غیر نهایی از برنامه JASC's Paint Shop Pro 8 گرفته می‌شود.


Paint Shop Pro 8

ابتدا، از سایت JASC این نسخه را دریافت می‌کنیم. سپس با استفاده از دستور زیر آن را اجرا کنید:


$ /usr/bin/wine psp801ev.exe

در این دستور psp801ev.exe نام فایل مورد نظر می‌باشد. در شکل ۳ پنجره نصب ویزارد را می‌بینید.


شکل شماره ۳

در هنگام نصبPaint Shop Pro 8 در پنجره ویزارد، مسیر "C: drive" نمایش دهنده مکانی است که Wine قرار دارد. متاسفانه این زمانی است که بدون تشریفات کاربر را به خط فرمان Wine بر می‌گرداند. در این شرایط، با تایپ دستور quit از پنجره دستورات خطی خارج شده و نصب برنامه متوقف می‌شود. در این هنگام که با تعداد بسیار زیادی از پیام‌های خطا یا "errors " که در پنجره دستورات وجود دارد بر خورد می‌کنیم . این پیام‌ها موقع نصب Wine/PSP8 ایجاد شده اند.


فکر می‌کنیم شاید عدم نصب کامل برنامه Paint Shop Pro 8 به علت جدید بودن آن نرم افزار یا به خاطر قابلیتهای جدید آن بوده که Wine نمی‌توانسته است از آن قابلیت‌ها پشتیبانی کند. بنابراین نسخه 7 آنرا را از روی CD نصب کنید اما مجددا مانند نمونه قبل بی نتیجه خواهد بود.

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

زمانی که سعی دارید این مشکل را حل کنید و هر بار با مشکل به هم ریزی Regedit رو به رو می‌شوید؛ مجددا registry keys را که PSP7 لازم داشت فراهم کنید.


نرم افزار که بتواند کار را به خوبی انجام دهد:

در سایت Wine شما لیستی از نرم افزارهای کوچک و غیر اساسی را مشاهده می‌کنید. این برنامه‌ها شامل PuTTY WS-FTP LE، mIRC، Acrobat Reader 5.05 ، WinZip، WinAmp، و SnagIt. گر چه با همه احترامی‌که به این کاری که انجام می‌شود قائل هستم اما به اهمیت که این برنامه‌های ویندوز در لینوکس مطمئن نیستم مخصوصا زمانی که برنامه‌های مشابه به این برنامه‌ها در لینوکس است و همه این کارها را به خوبی در لینوکس انجام می‌دهند. با این وجود من شخصا ترجیح می‌دهم که از Microsoft Office به جای OpenOffice استفاده کنم مخصوصا وقتی که توابع و کارهای متفاوتی بین این دو نرم افزار باعث سردرگمی‌کاربران می‌شود. همچنین من ترجیح می‌دهم از برنامه‌های موجود در خود سیستم عامل استفاده کنم حال آن که بیشتر کاربران در صدد هستند تا از Wine برای اجرای برنامه‌های کابردی ویندوز استفاده کنند مخصوصا وقتی که مشابه آن برنامه‌ها در لینوکس وجود ندارد.


نتیجه:

سوال این است که می‌توان Wine را به عنوان یک محیط تولید مناسب برنامه‌های کابردی تلقی کرد؟ متاسفانه پاسخ منفی است. با وجود همه احترامی‌که من به تلاش برنامه نویسان این پروژه قائل هستم اما این محیطی است پر دردسر برای کاربران که سرانجام به خروجیهای ناقص به جای اجرای برنامه‌های کاربردی ختم می‌شود. یک خانه کاغذی که به تنهایی باعث تولید برنامه‌هایی اکثرا نا کارآمد که معظلاتی برای تیم‌های متخصص پشتیبانی کامپیوتر و همچنین باعث مشکلاتی برای کاربران می‌شود. مطمئنا شما نیز هم عقیده هستید که اجرای یک برنامه مستلزم یکسری فرآیند منطقی است اما رفع مشکلات یک نرم افزار بسیار پیچیده تر از اجرای آن و مستلزم عیب یابی همه عوامل مرتبط با آن نرم افزار می‌باشد. در ضمن برای اجرای یک برنامه کاربردی شما بایدDLL‌های مربوط به آن را نیز بر روی دایرکتوری مناسب آن برنامه در محیط Wine کپی نمایید.

من شخصا کار با برنامه CrossOver Office 2 محصول CodeWeaversرا ترجیح می‌دهم ( www.codeweavers.com/products/office).

با این برنامه شما تعدادی از برنامه‌های مفید ویندوز مانند Microsoft Office 2000 را به خوبی می‌توانید اجرا کنید. همچنین برنامه Paint Shop Pro 8 نیز به خوبی بوسیله CrossOver Office 2 قابل اجراست. همچنین از برنامه‌های غیر سودمند مانند mIRC و WS-FTP LE که Wine به خوبی پشیبانی می‌کنند اما برای کارهای تجاری و تخصصی ضروری نیستند نیز خبری نیست.

شاید Wine به عنوان یک نقطه شروع برای کاربرانی که در حال تجربه کردن اجرای برنامه‌های ویندوز بر روی لینوکس هستند مناسب باشد اما برای شرکت‌ها و موسسات تجاری که به طور جدی تصمیم به اجرای برنامه‌های ویندوز بر روی لینوکس دارند بهترین و مطمئن ترین انتخاب نصب CrossOver Office بر روی لینوکس آن شرکت‌ها و موسسات است.

منبع:http://technotux.com

مجوز GFDL چیست؟

  نسخه چاپی

هدف از این مجوز، ایجاد یک راهنما، کتاب متنی، یا هر مستند مفید و کاربردی دیگر می‌باشد، به طوری‌که به شکل آزاد در اختیار سایرین قرار گیرد و هرفردی بتواند از این آزادی برای نسخه‌برداری و توزیع آن، با تغییر یا بدون تغییر و یا کاربردهای تجاری یا غیرتجاری استفاده کند. ثانیاً، این مجوز راه را جهت کسب اعتبار برای کارهای نویسنده و ناشر هموار می‌سازد و این دو، هیچ مسؤولیتی در قبال تغییرات اعمالی از جانب دیگران نخواهند داشت. این مجوز، یک نوع از "کپی‌لفت" می‌باشد؛ به این معنی که مستندات کارهای مشتق‌شده از کار اول نیز باید به همان شیوه، به طور آزاد، در دسترس قرار گیرند. این مجوز، مکمل مجوز عمومی GPL- یک مجوز copyleft، طراحی شده برای نرم‌افزارهای آزاد- می‌باشد.

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

این مجوز برای هرگونه راهنما یا هر کاری، در هر رسانه‌ای- که شامل یک توضیح، مبنی بر اینکه کار می‌تواند تحت شرایط این مجوز توزیع شود- قابل اعمال است. "مستند" زیر، به هر نوع کار یا راهنمایی می‌تواند انتساب یابد. هر فرد معمولی، خود یک مجوزدهنده محسوب می‌شود. به عنوان مثال، شما اگر کاری را طبق قانون کپی‌رایت با رعایت دسترسی‌های موجود، نسخه‌برداری کنید، تغییر دهید و یا توزیع نمایید، در واقع مجوز را می‌پذیرید. یک "نگارش تغییریافته" شامل آن کار به همراه کلیه‌ی مستندات و یا بخشی از آن می‌باشد. یک مجوز GFDL شامل بخشهایی می‌باشد:

  • Secondary Section
  • Invariant Section
  • Cover Texts
  • Transparent
  • Title Page
  • Entitled XYZ

نسخه‌برداری لفظ به‌لفظ

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


نسخه‌برداری از نظر تعداد

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

منابع:
http://www.gnu.org/copyleft/fdl.html

نام مقاله: ایجاد سی‌دی بوت گراب

نویسنده: Erkan
مترجم: نوید
منبع: www.linux-sevenler.org


0.مقدمه

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

1.شرایط کار

برای استفاده از این راهنما باید سه شرط زیر را داشته باشید.
۱.از بوت لودر GRUB برای بوت کردن سیستم خود استفاده کنید.
۲.یک درایو نویسنده‌ی سی‌دی یا CD witer داشته باشید.
۳. آشنایی ابتدایی با گراب داشته باشید.

2.قدم به قدم

۱.ابتدا به دایرکتوری ریشه می‌رویم و آنچه را برای کار لازم داریم می‌سازیم:

#cd /
#mdir -p iso/boot/grub

۲.فایل ”stage2_eltorito“ را به دایرکتوری grub که خودمان ایجاد کردیم اضافه می‌کنیم:

 # cp /lib/grub/i386-pc/stage2_eltorito /iso/boot/grub
 

۳.فایل‌های Kernel image را نیز کپی می‌کنیم و البته در صورت وجود و استفاده فایل‌های Initrd را نیز حتما کپی کنید. اگر از فایل‌های initrd استفاده نمی‌کنید نیازی به کپی گرفتن نیست و تنها کپی کردن imageهای هسته یا Kernel images کافیست. این مراحل مانند زیر خواهند بود:

# cp /boot/initrd.img-VERSION_NO /iso/boot
# cp /boot/vmlinuz-VERSION_NO /iso/boot 

توجه داشته باشید که VERSION_NO همان نسخه‌ی هسته یا کرنل سیستم شماست که با توجه به شماره‌ی نسخه ی آن که در محل مورد نظر موجود است می‌تواند متفاوت باشد. (اگر از چند کرنل یا initrd استفاده می‌کنید می‌توانید با استفاده از کاراکتر * تمام آن‌ها را انتخاب کنید-مترجم)

۴.حالا به مرحله ی دشوار کار می‌رسیم قرار است فایل ”menu.list“ را آماده کنیم. برای این کار می‌توانید از هر ویرایشگر متنی استفاده کنید ، برای نمونه EMACS .این کار مانند تنظیم کردن grub.conf است.در حقیقت پارتیشن‌هایی که قرار است بوت شوند را معرفی می‌کنیم. این فایل مانند زیر خواهد بود :

 # ------------menu.lst------------
timeout 100
color cyan/blue white/blue

# 2.6.5 kernel 

title 2.6.5

root (hd0,2)

kernel (hd0,0)/kernel-2.6.5 ro root=/dev/hda3

# 2.6.7  kernel.

title 2.6.7

root (hd0,2)

kernel (hd0,0)/kernel-2.6.7 ro root=/dev/hda3

initrd (hd0,0)/initrd-2.6.7

# END tested kernel.

title my-2.6.10

root (hd0,2)

kernel (hd0,0)/my-2.6.10 ro root=/dev/hda3

initrd (hd0,0)/my-initrd-2.6.10

# Other systems (e.g.: MS Windows FreeBSD)

title Window XP Professional

root (hd0,0)

makeactive

chainloader +1

# -------menu.lst------------- 

این فایل را در مسیر ”iso/boot/grub/ “کپی می‌کنیم.

 # cp menu.lst /iso/boot/grub
 

۵. در نهایت تنها کاری که باید انجام بدهیم ایجادسی‌دی Bootable است تا در صورت ایجاد هر مشکلی از این دیسک استفاده کنیم.برای این کار ابتدا به دایرکتوری ”/“ می‌رویم.و با ابزار mkisofs یک فایل ISO ایجاد می‌کنیم.

 # cd /
# mkisofs -R -b boot/grub/stage2_eltorito  
-no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso 

۶.حالا باید فایل iso. ایجاد شده ر این قسمت را با ابزاری مانند K3B یا Natilus برروی یک سی دی رایت کنید.(اگر مطابق نمونه ی آمده عمل کرده باشید فایل iso در شاخه‌ی ریشه یا / خواهد بود.) کارهای ما چیزی شبیه به شکل زیر است:

شکل شماره‌ی ۱

تمام کار همین بود ، حالا CD را در یک جای مناسب بگذارید و هر گاه سیستمتان دچار مشکل شد از این دیسک استفاده کنید.