November 2008

دانت نت فریم ورک چیست؟ (1)

یکی از پرسشهایی که خیلی از تازه واردان به دنیای برنامه‏نویسی دارند این است که dot NET Framework یا NET Framework. چی هست و چه کار می کند و به چه درد می خورد و اصلا برنامه‏نویسی با دات نت چه فرقی با برنامه‏نویسی در محیطهای غیر دات نت می‏کند؟ یا این که Visual Basic .NET چه فرقی با Visual Basic عادی می‏کند؟ یا این که #Visual C (سی شارپ) چی هست و چه تفاوتی با ++C می‏کند. خلاصه این که معمولا سردرگمی زیادی درباره NET. هست. من می‏خواهم توی چند تا نوشته به سادگی توضیح بدهم که NET. دقیقا چی هست و چه تکنولوژی‏هایی را شامل می‏شود. روش من در این مقالات، تا حد زیادی تحلیلی و با بیان تاریخ این تکنولوژی‏ها است. به باور من اگر نوآموزان با تاریخ این تکنولوژی‏ها آشنا بشوند، موضوع برایشان راحت‏تر جا می‏افتد و جالب‏تر هم خواهد بود.

برای این که بتوانید دات نت فریم ورک را خوب بشناسید، لازم است تا به سال 1995 برگردیم و به رخداد مهمی که در آن سال در دنیای کامپیوتر رخ داد، بپردازیم. این اتفاق ارتباط مستقیم با دانت نت فریم ورک ندارد ولی دانستن آن می‏تواند دید گسترده‏تری به شما بدهد.

پیدایش Java؛ بیایید قهوه بنوشیم

در سال 1991 رخداد مهمی در حال شکل‏گیری در دنیای رایانه بود. در این سال شرکت Sun Microsystems که در کار تولید بخشی از لوازم الکترونیکی مثل رسیور، تلویزیون، کنترل از راه دور و اجاقهای مایکروویو بود، به فکر ایجاد زبان جدیدی افتاد که بتواند در سیستم‏های عامل و سخت‏افزارهای متفاوت (بخوانید Platformهای گوناگون) بدون نیز به کامپایل مجدد، اجرا بشود.


مسئله خیلی ساده است: این روزها تمام کامپیوترها بر اساس معماری IBM طراحی می‏شوند و به همین خاطر به همه کامپیوترها ما IBM-Compatible یا هماهنگ با معماری IBM گفته می‏شود؛ ولی در آن دوره شرکتهای مختلف پردازنده‏های خاصی برای نیازهای خودشان طراحی می‏کردند و هنوز طراحی IBM استاندارد نشده بود. این پردازنده‏ها از لحاظ معماری داخلی و دستورالعمل‏هایی که پشتیبانی می‏کنند (مانند ADD، SUB، MOV، JMP، JE) و همچنین اندازه و تعداد ثبات‏ها یا Registerها با هم تفاوت می‏کنند. برای نمونه شرکت Apple برای خودش پردازنده‏های خاصی را با نام PowerPC طراحی کرده بود تا در کامپیوترهای خودش استفاده بشود. IBM برای کامپیوترهای شخصی پردازنده خاص خودش را طراحی کرده بود؛ یا شرکت دیگری به نام DEC که در کار طراحی کامیپوترهای صنعتی بود پردازندهی به نام VAX تولید کرده بود.
همین طور می‏شود به پردازنده‏های شرکت Arari و Commodore که پردازنده‏های خانگی بودند هم اشاره کرد. گستردگی این پردازنده‏ها و تنوع دستورات و اندازه ثبات‏ها و درگاههای آنها بسیار زیاد بود. دستورالعملی که در یک پردازنده وجود داشت در پردازنده دیگری ممکن بود به طور کامل وجود نداشته باشد یا به شکل دیگری کار کند. عملکرد این دستورالعمل‏ها و چگونگی رفتار آنها در شرایط خاص ممکن بود که تفاوت‏هایی داشته باشند. همین طور تفاوت در اندازه ثبات‏های این پردازندهها لازم بود تا درباره شیوه نوشتن اعداد بزرگتر از اندازه ثبات، راهکارهای متفاوتی پیش گرفته بشود. خلاصه این که همه این مسائل سبب می‏شد که برنامه‏ای که مثلا در پردازنده IBM نوشته شده، نتواند در پردازنده PowerPC اجرا بشود و اگر مشتری شما از پردازنده دیگری استفاده می‏کرد شما می‏بایست کل کدتان را به پردازنده جدید منتقل (=Port) کنید؛ کاری که بسیار دشوار و گاهی به علت حجم زیاد کدها ناممکن بود. جالب این جاست که این مسئله فقط هم از تفاوت پردازنده‏ها ناشی نمی‏شود. حتی اگر ما دو پردازنده یکسان داشتیم، باز ممکن بود در این دو پردازنده دو سیستم عامل متفاوت اجرا بشود و باز کد شما تنها بر روی سیستم عاملی اجرا می‏شد که شما آن را تولید کرده‏اید؛ چون که هر سیستم عاملی توابع داخلی و ساختار فایل اجرایی خاص خودش را دارد و توانایی پردازش فایلهای اجرایی سایر سیستم عامل‏ها را ندارد؛ برای نمونه سیستم عامل DOS و Unix هر دو بر روی پردازنده‏های IBM کار می‏کردند ولی برنامه نوشته شده در DOS در Unix کار نمی‏کند و همین طور برعکس.


در چنین شرایطی شرکت Sun به این فکر افتاد تا تکنولوژی را طراحی کند که بتوان با کمک آن کدی را نوشت که بدون نیاز به منتقل کردن کد به پردازنده جدید و دوباره Compile کردن کد در آن پردازنده، در همه جا اجرا بشود. این ایده بعدها به صورت Write once, Run anywhere (یک بار بنویسید، همه جا اجرا کنید) شعار شرکت Sun برای معرفی Java به عنوان یک تکنولوژی مستقل از Platform شد.

معجزه جاوا چیست؟

اما جاوا چه طور این مشکل پیچیده یعنی ناهماهنگی بین Platformهای مختلف (تفاوت در پردازنده‏ها و سیستم‏های عامل) را حل می‏کند؟ راه حل به کار رفته در جاوا برای حل این مساله به شدت ساده و در عین حال بسیار جذاب است.
فرض کنید شما در حال برنامه‏نویسی با جاوا در پردازنده IBM و در سیستم عامل ویندوز هستید. در صورتی که برنامه‏تان را با جاوا کامپایل کنید، جاوا آن را به زبان ماشین و فرمت اجرایی مناسب با سیستم عامل ویندوز تبدیل نمی‏کند؛ بلکه کد شما به چیزی که Bytecode جاوا نام دارد تبدیل می‏شود. Bytecode جاوا زبانی شبیه به زبان ماشین و در حقیقت زبانِ ماشینِ مشترکِ جاوا برای تمامی پردازنده‏ها است. طبیعتا این زبان توسط پردازنده IBM و سیستم عامل ویندوز یا توسط پردازنده IBM و سیستم عامل یونیکس تا توسط پردازنده PowerPC و سیستم عامل MAC OS اجرا نمی‏شود. برای اجرای این Bytecode بر روی پردازنده IBM و سیستم عامل ویندوز از برنامه‏ای کمک گرفته می‏شود که JVM یا Java Virtual Machine نام دارد. برای هر کدام از این محیط‏ها یک Java Virtual Machine انحصاری نوشته می‏شود که کارش اجرای


نخستین نوشته روزنوشت

این نخستین نوشته من است. بریم ببینیم چی میشه...

شکستن رمز اصلی ویندوز در سه سوت!

اگر خواهر یا برادر بزرگترتون یا شاید پدر و مادرتون که یک کم از کامپیوتر سر در می‏آورند، برای کاربر Administrator ویندوز رمز گذاشته باشند و شما هم از آن بچه‏هایی باشین که از در و دیوار بالا می‏روند، هر جور که بتونین تلاشتون را می‏کنید تا وارد ویندوز بشین؛ ولی خوب نمی‏تونین! (: این نوشته احتمالا به درد شما می‏خورد. از طرف دیگر اگر شما آن خواهر یا برادر بزرگتر یا آن پدر و مادر باشید و برای کاربر اصلی ویندوز رمز گذاشتین و حالا فراموشش کردین، به خواندن ادامه بدین، چون احتمالا به درد شما هم می‏خورد.

اول از همه سعی می‏کنم خیلی ساده بگم که چه طور باید این کار را بکنید و پس از آن برای کسانی که جزئیات فنی بیشتری می‏خواهند، یک کم بیشتر توضیح می‏دهم و چند تا لینک معرفی می‏کنم.

برنامه‏های زیادی هستند که می‏توانند رمز کاربر اصلی ویندوز را برای شما برگردانند یا امکان تغیر این رمز را به شما بدهند؛ ولی باید توجه داشته باشید که این کار به هیچ وجه از داخل ویندوز امکان پذیر نیست. یعنی اگر شما یک کاربر Guest (آن گونه که در ویندوز XP نامگذاری شده) یا یک کاربر Standard (آن گونه که در ویندوز Vista نامگذاری شده) داشته باشید، نمی‏توانید رمز کاربر Administrator را در بیاورید. دلیلش این است که ویندوز برای افزایش امنیت بخشی که در آن رمزها نوشته می‏شود و Security Account Manager یا به طور خلاصه SAM نام دارد را بر روی هارد، رمزگشایی کرده و امکان دسترسی به این بخش هارد وجود ندارد و تا موقعی که ویندوز در حال اجرا است این رمزگشایی هم اعمال می‏شود. پس باید کار شکستن رمز ویندوز را وقتی انجام داد که ویندوز در حال اجرا نیست. برنامه‏های زیادی برای این کار نوشته شده که معمولا به صورت یک Bootable و به شکل یک فایل Image کامپیوتری ارائه می‏شوند تا بتوانید آنها را بر روی CD رایت کنید و کامپیوتر را با آن Boot کنید.

یکی از بهترین برنامه‏های نوشته شده برای این کار که Open Source (=متن باز) است و رایگان هم هست برنامه Ophcrack است. Ophcrack می‏تواند هم رمز ویندوز XP و هم رمز ویندوز Vista را استخراج بکند. در سایت این برنامه، فایل LiveCD را که به صورت ISO هست، بارگزاری کنید و با کمک یک برنامه رایت CD آن را روی CD رایت کنید. برنامه‏های مثل Nero، Alcohol یا مثلا UltraISO همگی توانایی رایت ISO (فرمت استاندارد Imageهای CD) را دارند.
البته حجم این برنامه نزدیک به 500 مگابایت است و باید یک اینترنت پرسرعت برای داونلودش داشته باشید.
این برنامه را روی سی‏دی رایت کنید

برنامه Radmin، جلوگیری از بازیگوشی بچه‏ها و کمک به اهداف آموزشی

ما توی آموزشگاه کامپیوترهای زیادی داریم که برای آموزش استفاده می‏شود. گاهی لازم است که روی این کامپیوترها برنامه‏ای نصب بشود یا تغییراتی در تنظیمات آن داده بشود یا خراب کاری بچه‏ها درست بشود (: رفتن سراغ دونه دونه این کامپیوترها کار زمان‏بر و خسته‏کننده‏ای است. ویندوز تو خودش برنامه‏ای به نام Remote Desktop دارد که به درد وصل شدن از راه دور به کامپیوتر دیگه‏ای می‏خورد.

البته کامپیوتری که می‏خواهید بهش وصل بشید، باید قبلا این اجازه را به شما داده باشد. (از Control Panel به بخش System بروید و در آنجا در صفحه Remote امکان وصل شدن Remote را فعال کنید.)

Remote Desktop یک اشکال نسبتا بزرگ برای من دارد؛ در صورتی که بخواهید به کامپیوتر دیگری وصل بشید، کاربر آن کامپیوتر باید Log Out کند. ولی من می‏خواهم تا مونیتور دانشجوها را بدون آن که خودشان متوجه بشوند نگاه کنم تا ببینم دارند چه کار می‏کنند و یک وقت مشغول بازیگوشی نشده باشند (: البته گاهی هم لازم است تا از راه دور در انجام دادن یک کاری کمکشون کنم یا بهشون نشان بدهم که چه طور باید یک کار خاص را انجام بدهند.

به خاطر همین من از برنامه دیگری به نام Radmin کمک می‏گیرم که علاوه بر نداشتن این اشکال کلی ویژگی دیگر هم دارد.

از برتری‏های دیگر این برنامه نسبت به Remote Desktop این است که شما می‏توانید به یک کامپیوتر دیگر در اینترنت هم از راه دور وصل بشوید. البته در Remote Desktop هم می‏شود این کار را کرد ولی حتما می‏بایست IP ثابت یا Static داشته باشید. ویژگی جالب دیگر این برنامه امکان چت صوتی و نوشتاری است. این ویژگی Radmin واقعا محشر است و کار من را برای راهنمایی بچه‏ها از راه دور خیلی خیلی راحت می‏کند. یک برتری دیگر Radmin امکان Drag و Drop کردن فایل بین کامپیوتر خودتان و کامپیوتری است که بهش از راه دور وصل شده‏اید.

دردسرهای ساعتهای پایانی یک روز خسته کننده کاری

آخرین ساعتهای کاری است. شب شده و آموزشگاه هم تعطیل شده است. ویندوز یکی از کامپیوترها مشکل پیدا کرده. فایلهای ویندوز خراب شده‏اند و ویندوز حتی Safe Mode هم بالا نمی‏آید. کامپیوتر را از روی CD ویندزو Boot میکنم تا Repairش کنم ولی Repair هم کار نمی‏کند. پس از یک روز خسته‏کننده به شدت کلافه‏ام و خوابم می‏آید. فایل پروژه یکی از بچه‏ها روی درایو C است و فردا صبح هم می‏خواهد بیاید کارش رو روش ادامه بده و من هیچ راهی برای Backup گرفتن از شاخه پروژه‏اش ندارم تا بتوانم C را فرمت کنم و ویندوز را دوباره نصب کنم.

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

اینجا بود که من تمام فسفرهای مغزم را سوزاندم و رفتم پای اینترنت تا یک راه حل همیشگی برای این جور وقتها پیدا کنم و با یک خانم خیلی مهربان به اسم BartPE آشنا شدم. (من ترجیح می‏دهم که BartPE خانم باشد! مشکلی هست؟)

BartPE یک برنامه خیلی خوب برای ساختن LiveCD از ویندوز است. LiveCD سیستم عاملی است که بدون نیاز به نصب کامپیوتر را Boot می‏کند و اجرا می‏شود. نمونه‏ای از این LiveCDها در دنیای لینوکس فراوان است و تقریبا اکثر توزیع‏های لینوکس LiveCD رسمی یا غیررسمی هم دارند. اما برای ویندوز همچین چیزی حداقل به صورت رسمی وجود ندارد. این خانم BartPE مهربان کارش این است که از ویندوز شما برایتان یک LiveCD بسازد.
من سه سوته ویندوز Live خودم را این طوری ساختم:

  • برنامه را داونلود و نصبش کردم
  • در بخش Source آدرس CD ویندوز و در بخش Media Output گزینه Create ISO را انتخاب کردم
  • آخر سر هم فایل ISO درست شده را با Nero رایت کردم (اگر چه خود برنامه می‏توانست فایل را مستقیم رایت کند، ولی من خوشم آمد که خودم این کار را با Nero بکنم)

جالب این جاست که این خانم BartPE کلی هم Plugin دارد که به قابلیتهای ویندوز Live ساخته شده را افزایش می‏دهد.

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

پانوشت: Microsoft هم برنامه‏ای مشابه برای ساخت LiveCD به نام Windows PE 2.0 for Windows Vista دارد. این برنامه پیش از این برای ویندوز XP هم کار می‏کرده ولی ظاهرا الان فقط برای ویندوز ویستا کار می‏کند.
پانوشت2:غیر از برنامه BartPE، برنامه دیگری هم به اسم WinBuilder هست که همین کار را می‏کند. بر اساس همین WinBuilder برنامه دیگری هم به اسم VistaPE نوشته شده که مشابه همین کار را برای ویندوز Vista انجام می‏دهد. ولی من فعلا با همین خانم BartPE خودم، خوشم. (:

12آموزش برای ساختن قالب در فوتوشاپ

فوتوشاپ ابزار خیلی خوبی برای طراحی قالب یا Layout سایت‏ها است. اصولا بهتر است همیشه قبل از این که برای طراحی سایتتان مستقیم دست به HTML و CSS ببرید تا طرح سایت‏تون را کدنویسی کنید، ابتدا آن را به طور کامل در فوتوشاپ طراحی کنید. این طوری به راحتی می‏توانید از ترکیب‏بندی، رنگ‏بندی و شکل کلی طرح نهایی آگاه بشید و به راحتی و بدون دردسر تغییرات لازم را درش بدهید و هر وقت کارتان نهایی شد، آن را به HTML و CSS تبدیل کنید.

من در گشت و گذارهایم در اینترنت 12 تا آموزش را در این باره گردآوری کرده‏ام:

آموزش سی شارپ برای بچه‏های تیز و آموزشی وی بی برای بچه‏های تمیز

بیل گیتز، که خودش خیلی خوره کامپیوتر بود، کامپیوتر را از دوران دبیرستان آغاز کرد. توی آن زمان، این بیلی ما یک برنامه کوچولو برای چاپ کارنامه‏ها نوشته بود و خلاصه با پل آلن، از این خفن‏بازی‏ها زیاد انجام می‏دادند (: فکر می‏کنم به همین خاطر است که بیل گیتز به بچه‏های دبیرستانی توجه زیادی نشان می‏دهد و حتی برخی از خدمات و برنامه‏های مایکروسافت برای دبیرستانهای آمریکا رایگان ارائه می‏شود. یکی از کارهای مایکروسافت راه‏اندازی بخشی به نام Kid's Corner یا بخش بچه‏ها است.

در این بخش، نوشته‏های خوبی برای بچه‏ها قرار داده شده که می‏خواهند توانایی خودشان را در کاربری عمومی با کامپیوتر افزایش بدهند یا در سطوح بالاتر، دانش خودشان را در زمینه برنامه‏نویسی بیشتر بکنند. دو تا E-book هم در این بخش هست که مایکروسافت برای آموزش برنامه‏نویسی به بچه‏ها نوشته است. نخست کتابی به نام «سی شارپ برای بچه‏های تیز» است و دیگری کتاب «VB برای بچه‏های خیلی زرنگ» است که من به خاطر ضرورتهای شعری(!) اسمش را کمی در عنوان این نوشته تغییر دادم.

من هر دو کتاب را سرسری و کلی خواندم. هر دو کتاب با انگلیسی خیلی ساده و روشن نوشته شده است. در کتاب، کارتون و کاریکاتورهای زیادی برای جذابیت بخشیدن به نوشته به کار رفته است؛ برای نمونه کارتونی که برای درک مفهوم Private، Protected و Public کشیده شده، به نظرم خیلی جالب آمد. اگر چه گاهی هم متن کتاب زیادی ساده‏لوحانه می‏شود و انگار که بچه‏ها دست کم گرفته شده‏اند. در هر صورت کتاب مفاهیم Object Oriented یا برنامه‏نویسی شی‏گرایی را خیلی خوب توضیح داده است و تلاش کرده تا بچه‏ها را با مفاهیم نسبتا پیچیده شی‏گرایی آشنا کند. کار جالبی که در این کتاب انجام شده، آشنایی بچه‏ها به طور کامل با مفاهیم شی‏گرایی در همان آغاز راه است؛ در حالی که ما در سیستم آموزشی خودمان گاهی اصلا شی‏گرایی را آموزش نمی‏دهیم و یا پس از یاد دادن Syntax خیلی خلاصه و کلی این مسائل آموزش داده می‏شود. این مساله اهمیت فراوان شی‏گرایی را در برنامه‏نویسی کنونی و همین طور کاربرد زیاد شی‏گرایی را در فریم‏ورک دات نت نشان می‏دهد.


هر دو کتاب فهرست و چارچوب یکسانی دارند. هر دو در فصل نخست به مقدمات اولیه پرداخته‏اند و سپس در فصل دوم، Objectها بررسی شده است. در فصل سوم کتاب ویژگی‏های زبانی (سی شارپ یا وی بی) یا Syntax زبان بررسی شده است. در فصل آخر هم به بررسی کلاسهای پایه‏ای دات نت Systen.Console، System.Windows.Forms، System.Drawing، System.Data، System.Xml پرداخته شده است.

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

خوش‏آمدگویی به تم‏های جدید جی میل

دیروز تم‏های زیادی به جی‏میل افزوده شد و اکنون شما می‏توانید شکل جی‏میل را بر اساس 31 تمی که در تنظیمات وجود دارد، تغییر دهید. تمی که من انتخاب کردم و فعلا دارم ازش استفاده می‏کنم این است:

یکی از تم‏های جالب جی‏میل هم Terminal است که آدم را یاد کامپیوترهای دهه 80 میلادی یا کامپیوترهایی می‏اندازد که تا همین چند وقت پیش هم در برخی بیمارستان‏ها و شاید در حال حاضر هم در برخی از نیروگاهها استفاده می‏شود. برای پیدا کردن یک حس کلاسیک و قدیمی به کامپیوتر یا برای یادآوری خاطرات نوستالژیک برای قدیمی‏ترها Terminal، تم خاطره‏انگیزی است.

در وبلاگ رسمی جی‏میل نوشته شده است که این تم جدید پس از شرط‏بندی بین دو تا از مهندسین جی‏میل درست شده است و گفته شده که استفاده از این تم خیلی عملی نیست ولی برای تست کردن میزان خفن‏بودن شما در کامپیوتر کاربرد دارد (: یک تم نینجای هم وجود دارد که به نظرم نسبتا قشنگ است. در هر حال به این تم‏های جدید جی‏میل، خوش‏آمد می‏گویم. (:

طراحی سه بعدی با فوتوشاپ

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

آموزش گام به گام ساخت این فنجان سه‏بعدی چوبی را می‏توانید در اینجا ببینید و بخوانید.


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

اگر شما هم در تمرین‏هاتون، یک طراحی سه‏بعدی در فوتوشاپ انجام دادین، هر چه قدر هم که ساده بود، حتما برای من به i [at] jamejamins.ir بفرستید. من حتما برای این کارتون نمره در نظر می‏گیرم (;

FireShot و CamStudio: یک جایگزین مناسب و رایگان برای SnagIt

یکی از درس‏های که در رشته کامپیوتر و در هنرستانهای ما آموزش داده می‏شود SSP است که ترکیبی از SoundForge، SnagIT و Adobe Premier است. این سه نرم‏افزار در کنار هم برای ساخت محتوای آموزشی خیلی کاربرد دارد. کار برنامه SnagIt، گرفتن عکس و فیلم از صفحه نمایش است. SnagIt رایگان نیست (بگذریم که ماها مثل بقیه نرم‏افزارهایی که روی کامپیوترمان هست، SnagIt را نمی‏خریم و از نسخه‏های Crack شده استفاده می‏کنیم) ولی برنامه دیگری هست به نام FireShot که در حقیقت Add-Inی برای Firefox و Internet Explorer است و کار عکس گرفتن از صفحه نمایش را خیلی ساده می‏کند.


یکی از ویژگی‏های این برنامه این است که Add-Inی برای Firefox است و کار را خیلی ساده می‏کند. البته این برنامه کار فیلم‏برداری از صفحه نمایش را انجام نمی‏دهد ولی برنامه دیگری به نام CamStudio هست که کار تصویربرداری از صفحه نمایش را انجام می‏دهد. این برنامه هم به صورت متن باز یا OpenSource است و رایگان هم هست. گاهی برنامه‏های رایگان نه تنها به خوبی برنامه‏های پولی و گاهی بهتر از آنها هم کار می‏کنند. در این صورت دیگر نیازی به استفاده از برنامه‏های Crack شده هم وجود ندارد.

این برنامه‏ها برای ساختن محتوای آموزشی هم خیلی به درد می‏خورند. من، خودم تا به حال با SnagIt کار می‏کردم و برای نمونه تصاویری که برای ساختن آموزش Word 2003 گرفتم و در بخش فایلهای آموزشی قرار داده شده است با همین جناب SnagIt گرفته شده است ولی حالا با پیدا کردن این FireShot دوست دارم حداقل برای تصاویری که از صفحات وب می‏خواهم، این افزونه خوب Firefox را به گار بگیرم.