تبليغاتX
ویندوز

شرح مختصری بر کامپایلر


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

  • ورودی, به یک زبان برنامه سازی است و در نتیجه دارای ساختاری است که در مراجع آن زبان مشخص شده است .
  • معنای ورودی بر اساس این ساختار توصیف می‌شود ,و به آن ساختار مربوط است.

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


اجزاي كامپايلر:

هر كامپايلر از قسمت هاي اصلي زير تشكيل شده است:

  • فازتحليلگر لغوي
  • فازتحليلگر نحوي
  • فازتحليلگر معنايي
  • فازتوليد كننده كد مياني
  • فازبهينه ساز كد
  • فازتوليد كننده كد

و نيز دو بخش كمكي:

  1. اداره كننده خطا
  2. مدير جدول نماد ها

 


تاریخچه کامپایلر

 

در تاریخچه کامپایلر سه دوره می‌توان در نظر گرفت:

  • از 1945تا1960:تولید کد

در این دوره ,زبانها به تدریج به وجود آمدند و ماشینها چندان متعارف نبودند . مسئله این بود که چگونه باید کدی را برای یک ماشین تولید کرد . با توجه به اینکه برنامه نویسی به زبان اسمبلی رواج داشت , این مسئله وخیمتر شد. استفاده از کامپایلر , برنامه نویسی خودکار نامیده شد . طرفداران زبانهای سطح بالا می‌ترسیدند که کد تولید شده نسبت به زبان اسمبلی کارایی چندان نداشته باشد. اولین کامپایلر فرترن(شریدان 1959) به خوبی بهینه سازی شد

  • از 1960تا1975 :تجزیه کردن

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

  • از 1975 تاکنون :تولید کد و بهینه سازی کد

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

 

 

+ نوشته شده توسط یاشار در دوشنبه نوزدهم فروردین 1387 و ساعت 7:35 |

چگونه از ويندوز سريعتر خارج شويم


چگونه از ويندوز سريعتر خارج شويم

اگر ميخواهيد از ويندوز سريعتر خارج شويد ، مراحل زير را طي کنيد.اين کار فقط روي سيستم عامل هايXP,2000 قابل اجرا ميباشد.

Regedit-1 را باز کنيد.

2-آدرس زير را از سمت چپ پنجره بيابيد.

HKEY_CURRENT_USER\Control Panel\Desktop

3- در سمت راست پنحره راست کليک کرده از منوي New گزينه String Value را انتخاب کنيد و نام آنرا WaitToKillAppTimeout بگزاريد.

4- روي گزينه ايجاد شده دوبار کليک کرده و زمان مورد نظر بر حسب ميلي ثانيه وارد کنيد.(زمان پيش فرض ويندوز، 20000 ميلي ثانيه مي باشد.)

-Ok- 5 کرده و پنجره Regedit را ببنديد و کامپيوترتان را Restart کنيد

+ نوشته شده توسط یاشار در دوشنبه نوزدهم فروردین 1387 و ساعت 7:27 |

انواع فايل سيستم : Fat , Fat32 , NTFS


 

File System در يك سيستم عامل به ساختار كلي نامگذاري ، ذخيره سازي و سازماندهي فايل ها گفته مي شود . سيستم فايل ها ، داده ها را به واحدهايي به نام Cluster تقسيم بندي مي كنند . هر كلاستر مي تواند فقط بخشي از يك فايل را نگه دارد . يك فايل ممكن است چندين كلاستر را به خود اختصاص دهد ،و مقداري فضاي خالي در آخرين كلاستر بلا استفاده باقي بماند . كلاستر هاي كوچك مي توانند داده هاي بيشتري در يك ديسك جاي بدهند ( چون فضاي بلا استفاده كمتري به وجود مي آورند ) اما كلاستر هاي بزرگ ، كارايي را بالا مي برند ( در كلاسترهاي بزرگتر ، داده هاي بيشتري مي تواند در هر كلاستر نگهداري شود . بدين معني كه براي بازيابي آن ، سيستم كار كمتري انجام مي دهد و در نتيجه به طور كارآمدتر و سريعتر آن را بازيابي مي كند ) اندازه كلاستر در اندازه ديسك سختي كه كامپيوتر مي تواند پشتيباني كند نيز نقش دارد .

Fat مخفف File Allocatin Table ، جدول تخصيص فضا به فايل . اين جدول كه در نزديكيهاي ابتداي ديسك سخت ذخيره مي شود ، توسط سيستم عامل نگهداري مي شود تا فضاي مورد استفاده براي ذخيره سازي فايل ها را مديريت كند . اين جدول وظيفه نگهداري فضاهاي موجود در ديسك را بر عهده دارد تا سگمنت هاي خراب غير قابل استفاده ، علامت گذاري شوند و قسمت هاي مختلف يك فايل با يكديگر مرتبط شوند . در واقع هنگام ذخيره داده ها روي ديسك سخت ، سيستم جهت دستيابي به كلاسترهاي خالي با Fat مشورت كرده و هم در هنگام اجرا فايل ، Fat را جستجو مي كند تا كلاسترهاي مرتبط با آن را يافته و اطلاعات ذخيره شده در آن كلاسترها را بخواند . دو نوع Fat اصلي وجود دارد : Fat 16 , Fat32

Fat 16 : اين سيستم فايل ، يك سيستم فايل 16 بيتي است ، زيرا كلاستر هايي را تشخيص مي دهد كه 16 بيت طول ( يا رقم ) دارند . اندازه كلاسترهاي Fat بسته به مقدار فضا درايوي است و از آنجا كه Fat16 نمي تواند به اندازه Fat32 كلاستر داشته باشد ، براي پوشش دادن به مقدار يكساني از فضا به كلاسترهاي بزرگتري نياز دارد . Windows XP كلاسترهاي 64 كيلو بايتي را براي Fat16 پشنيباني مي كند. چون Fat16 فقط 65,536 كلاستر را پشتيباني مي كند ، با اين سيستم فايل ، حداكثر يك پارتيشن 4 گيگابايتي را مي توان تقسيم بندي كرد .

Fat32 : يك سيستم فايل 32 بيتي است ، مي تواند كلاسترهاي بيشتري را نسبت به Fat16 آدرس دهي كند . در نتيجه Fat32 مي تواند از كلاسترهاي كوچكتري براي كارآمدتر كردن سيستم ذخيره سازي ، بهره بگيرد . همچنين بدين مفهوم است كه Fat32 مي تواند پارتيشنهاي بزرگتري را پشتيباني كند . Fat32 با كلاسترهاي 32 بيتي مي تواند پارتيشنهايي تا 8 ترا بايت را پشتيباني كند .

NTFS مخفف NT File System مي باشد . در سيستم فايل fat ، جدول تخصيص فضا ( File Allocation Table ) داشتيم و در اينجا جدول فايل اصلي ( MFT: Master File Table ) داريم . البته MFT بسيار پيچيده تر است . MFT صفات فايل را براي هر فايل ذخيره شده در پارتيشن NTFS ذخيره مي كند . ( صفات فايل هر چيزي را كه لازم است درباره يك فايل دانست ، توصيف مي كند . در NTFS حتي داده هاي موجود در يك فايل نيز صفت فايل محسوب مي شود . اسم ، مكان ، و اطلاعات امنيتي نيز ، از ديگر صفات فايل محسوب مي شود )
NTFS در صورت امكان همه صفات فايل را ، شامل داده هاي فايل ، در MFT ذخيره مي كند . ( هر چند در اكثر موارد ، جاي كافي براي ذخيره همه صفات در MFT وجود ندارد . در اين زمان صفت داده اي به خارج MFT انتقال مي يابد . )

MFT بعنوان يك فايل Metadata مشهور است . ( Metadata اساسا داده هايي درباره خود Data است . بعنوان مثال عنوان ، موضوع ، مولف و اندازه يك فايل ، Metadata آن فايل را تشكيل مي دهند ) NTFS از فايلهاي Metadata براي مديريت داده هاي روي پارتيشن بهره مي گيرد . بعضي از مهمترين فايلهاي Metadata بشرح زير است :

MFT Mirror : يك نسخه پشتيبان از MFT است . MFT در ابتداي سطح ديسك ذخيره مي شود ، در حاليكه MFT Mirror در وسط ديسك قرار مي گيرد . و در صورت خراب شدن MFT اصلي مي تواند مساله را حل كند . و اطلاعات لازم را براي بازيابي داده ها روي سيستم فراهم كند .

Log File : كه Log Journal نيز ناميده مي شود ، تغييرات روي سيستم فايل را ثبت مي كند . Log File فقط عملياتي را كه انجام مي گيرد ثبت مي كند ، نه داده هايي كه اصلاح مي شوند .

Cluster Allocation Bitmap : نقشه اي از پارتيشن را در خود دارد . سيستم مي تواند اين اطلاعات را براي يافتن كلاسترهاي موحود به كار گيرد .

Bad Cluster File : بخشهايي از ديسك را كه معيوب شده اند ، علامت گذاري مي كند . بدين ترتيب NTFS از كلاسترهاي معيوب كه در اين فايل علامت گذاري شده اند براي ذخيره داده هاي جديد استفاده نخواهد كرد .

Quota Table : جدول سهميه ها ، يك خصوصيت جديد در windows 2000/xp با استفاده از اين خصوصيت مي توانيد بعنوان مدير سيستم ، دايركتوري ها و زير دايركتوري ها را در ديسك سخت كنترل كنيد . و ميزان مصرف فضاي ديسك سخت كاربران مختلف يك كامپيوتر را كنترل كنيد .

NFTS مي تواند تعداد كلاسترهاي بيشتري را نسبت به Fat32 پشتيباني كند . در نتيجه ، كلاسترهاي NTFS عموما كوچك و براي حفظ فضاي ديسك سخت ، كارآمد هستند . يكي ديگر از مزاياي NTFS پشتيباني آن براي مجوزهاي فايل و دايركتوري است . اين خصوصيت امنيتي ، اطمينان مي دهد كه فقط كاربران خاصي به فايلها و دايركتوري ها ي ويژه دسترسي دارند .

در ميان آنچه ذكر شد ، سيستم فايل كارآمد
NTFS است . چون مي تواند براي پارتيشنهاي 2 گيگابايت و بيشتر ، كلاسترهاي 4 كيلو بايتي ايجاد كند ، كه بهترين تعادل بين سرعت عمل ديسك سخت و صرفه جويي در فضاي ديسك را فراهم مي سازد . و در واقع بهترين كارآيي را به سيستم مي دهد .

 

+ نوشته شده توسط یاشار در دوشنبه نوزدهم فروردین 1387 و ساعت 7:19 |

 

ترفندهای رجیستری


 

منوی start  را سریع تر کنید

 در منوی start  زیر منوها پس از 400 میلی ثانیه ظاهر میشود که برای کاربرن حرفه ای ممکن است چند ثانیه طول بکشد شما میتوانید این زیر منوها را به سرعت برق ظاهر کنید آن هم با رفتن به سراغ کلید زیر ( البته قبلا از این کار یادم رفت بهتون بگم که باید از منوی start  گزینه run  را انتخاب کرده و سپس کلمه regedit   را در آن وارد و  ok  را بزنید  و حالا شما در رچیستری ویندوز هستید ) کلید زیر را در رجیستری پیدا کنید :

HKEY_CURRENT_USER\CONTROL PANEL\DESKTOP

در این جا فقره ی MENU SHOW DELAY  را پیدا کنید مقدار این متغیر طول تاخیر منو را بر حسب میلی ثانیه از 0 تا 999 نشان میدهد که میتوانید با دادن مقدار 1 به آن سرعت آن را بسیار بسیار سریع کنید تا در نیم سوت زیر منوها ظاهر شوند

 


برنامه ها را از منوی START بردارید  


منوی START در ویندوز اکس پی این امکان را به شما میدهد که به 4 یا 5 برنامه اخیر اجرا شده دسترسی سریع داشته باشید اما اگر بخواهید این برنامه ها منوی START را شلوغ نکنند یا شاید نخواهید کاربر بعدی بداند شما از کدام برنامه ها استفاده کردید چه باید کرد ؟
خوب این کار مشکلی نیست شما میتوانید به ویندوز بگویید بعضی برنامه ها را که شما میخواهید در منوی
START نشان ندهد . ابتدا به کلید زیر بروید :
HKEY_CLASSES_ROOT\APPLICATION
اکنون یک کلید جدید بسازید و نام برنامه ای که میخواهید در منوی
START ظاهر روی آن بگذارید به آن کلید یک مقدار حروفی به نام NoStartPage بدهید به این ترتیب برنامه ای که شما اسم آن را آورده اید دیگر در فهرست برنامه های اخیر اجرا شده ظاهر نخواهد گردید

 


مخفي کردن نام برنامه در ليست Add/Remove

 

اگر مي خواهيد يکي از برنامه هاي نصب شده روي ويندوز را از ليست Add/Remove Programs در Control Panel حذف کنيدرجيستري را اجرا و به مسير زير برويد .

HKEY-LOCAL-MACHINE/software/Microsoft/Windows/CurrentVersion/Uninstall

در قسمت سمت چپ برنامه مورد نظر خود را پيدا کنيد و روي ان کليک کنيد . در قسمت سمت راست Display Name را بيابيد روي ان کليک راست کرده و Rename را انتخاب کنيد. به اول آن Quiet را اضافه کنيد . به اين ترتيب اين برنامه از ليست خارج شده است .

 


پاک کردن برنامه هایی که پاک نمیشوند

 

ممکن است این مشکل برای شما نیز پیش آمده باشد که قصد پاک کردن و Uninstall کردن برنامه ای را دارید و هر چه میکنید برنامه پاک نمیشود. حتی ابزار Add/Remove Programs موجود در کنترل پنل نیز به کمک شما نمیاید. با استفاده از این ترفند میتوانید تمامی برنامه های نصب شده بر روی سیستم خود را به وسیله رجیستری ویندوز پاک کنید.

بدین منظور:
از منوی
Start وارد Run شده و در آن عبارت regedit را تایپ کنید و Enter بزنید تا ویرایشگر رجیستری باز شود.
سپس به آدرس زیر بروید:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall
حالا در لیست باز شده نام تمامی برنامه های نصب شده را میبینید. کافی است روی برنامه مورد نظر کلیک کرده و دکمه
Delete را بزنید.
تنها دقت کنید برای
Uninstall کردن برنامه ها از روش معمول استفاده کنید و تنها در مواری که برنامه پاک نمیشود از این روش استفاده نمایید.


 

افزایش کارایی  ویندوز

 

اگر RAM کامپیوتر شما از ۵۱۲  مگا بایت بیشتر است برای افزایش کارائی میتوانید هسته ویندوز را در حافظه بارگذاری کنید.

برای این کار عملیات زیر را انجام دهید.

۱-برنامه regedit را باز کنید و مسیر زیر را دنبال کنید.

HKEY_LOCAL_MACHINE--SYSTEM--CurrentControlSet--Control--SessionManager--Memory Management

۳-در این مسیر مقداری به نام DisablePagingExecutive از نوع DWORD وجود دارد.روی آن دوبار کلیک کنیدومقدارش را به یک تغیر دهید.

۴-برای اعمل تغییرات ویندوز خود را دوباره راه اندازی کنید.

 


حذف منو Send To از راست کلیک ها و یا اضافه کردن گزینه ای به آن

در راست کلیک ها منو هایی به نام Send To وجود دارد که میتوان با کمک گزینه های داخل این منو فایلها ، برنامه ها و پوشه ها را به درایو A و MyComputer و غیره منتقل کرد که در واقع همان عملیات کپی کردن را انجام میدهد .
بدین منظور جهت حذف این منو وارد مسیر اول شده بر روی دستور Default دو بار کلیک کنید . با ظاهر شدن پنجره مربوطه، یک خط تیره به ابتدای کد کلاس Send To اضافه کنید و دکمه تایید را فشار دهید . با تایید این مقدار، منو Send To از کلیه راست کلیک ها حذف خواهد شد .

سیستم عامل : XP
مسير : HKEY_Classes_Root\AllFileSystemObjects\Shellex\Contextmenuhandlers\send to
دستور : Default

*
توجه :
1-
برای اینکه بتوان یک گزینه جدید به این منو اضافه کرد ( به عنوان مثال پارتیشن D ) وارد پوشه SendTo در پوشه ای که ویندوز در آن نصب شده رفته و Shortcut مربوط به پارتیشن D را در این قسمت قرار دهید .

 

 


غیرفعال کردن پنجره Task Manager و یا سه کلید CTL + ALT + DEL

 

 با بکار بردن دستور زیر با مقدار 1 ، سه کلید CTL + ALT + DEL غیرفعال شده و منوی Task Manager نیز از راست کلیک بر روی Taskbar غیرفعال خواهد شد .

سیستم عامل : XP
مسير : HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Policies\System
نوع : DWORD Value
دستور : DisableTaskMgr
مقدار : 1

*
توجه :
جهت برگشت به حالت اوليه دستور را از مسير گفته شده حذف كنيد


نمايش دادن پيغام هنگام بالا آمدن ويندوز ( هرپيغامي ) :

به زير كليد زير برويد :
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\Cu rrent Version\Winlogon
كليد
legalnoticecaption را با هر اسم ديگري كه مي خواهيد روي پنجره تان باشد عوض كنيد كليد Legalnoticetext را با هر پيغامي كه مي خواهيد در دل پنجره نمايش داده شود تغيير دهيد كامپيوتر را بوت كنيد

 


برداشتن my computer از روي دسك تاب :
به زير كليد زير برويد :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr ent Version \ Policies\Nonennum
يك متغير
DWORD بسازيد و نام آنرا به صورت {20D04FE0-3AEA-1069-A2D8-08002B30309D} بنويسيد
حال اگر مقدار اين را 0 بدهيد محو و اگر 1 بدهيد دوباره ظاهر مي گردد سپس كامپيوتر را بوت كنيد

 


ازكار انداختن راست كليك در دسك تاپ :
به زير كليد زير برويد :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr ent version\Policies\Explorer
يك متغيير از نوع
dword بسازيد و نام آنرا NoViewContextMenu با دادن مقدار 0 از كار مي افتد و با دادن مقدار 1 دوباره كا مي كند .

 


مخفي كردن كليه آيكونها از دسك تاپ :
به زير كليد زير برويد :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Policies\Explorer
يك متغيير از نوع
dword بسازيد و نام آنرا NoDesktop بدهيد اگر مقدار آنرا 1 دهيد همگي حذف و اگر 0 دهيد بجاي خود باز مي گردد . دستگاه را بوت كنيد

 

+ نوشته شده توسط یاشار در دوشنبه نوزدهم فروردین 1387 و ساعت 7:9 |

فشرده سازی فايل ها

 اکثر فايل های موجود بر روی اينترنت با استفاده از نرم افزارهائی نظير WinZip فشرده و بر روی سرويس دهندگان FTP مستقر تا کاربران بتوانند با سرعت مناسب اقدام به دريافت آنها نمايند. فايل های فشرده ZIP يکی از متداولترين و سهل الوصول ترين نوع فايل های فشرده می باشند. با فشرده نمودن فايل ها امکان ارسال سريعتر آنها بر روی اينترنت خصوصا" در موارديکه سرعت خط ارتباطی کاربران بالا نباشد ، فراهم می گردد. پس از دريافت فايل های فشرده با استفاده از نرم افزارهای مربوطه نظير WinZip می بايست آنها را به حالت اوليه تبديل ( از حالت فشرده خارج گردند ) کرد.
هدف از فشرده نمودن فايل ها کاهش ظرفيت فايل ها  بوده و در زمان استفاده از فايل می بايست مجددا" فايل به حالت اوليه برگردانده شود. در فرآيند فوق بيت هائی از فايل با استفاده از الگوريتم هائی خاص ، از فايل حذف و زمينه کاهش ظرفيت فايل فراهم خواهد شد. در زمان استفاده از فايل با استفاده از الگوريتم فشرده سازی عمليات معکوس انجام و فايل به حالت اوليه خود برگردانده خواهد شد. در ادامه به برخی از روش های فشرده سازی اطلاعات اشاره خواهد شد.

يافتن افزونگی در فايل
اکثرفايل های کامپيوتری ( با محتويات متفاوت ) دارای افزونگی اطلاعات می باشند. اين نوع فايل ها دارای اطلاعات تکراری زيادی می باشند. برنامه های فشرده سازی اطلاعات ، اطلاعات تکراری  موجود در فايل ها را بر اساس الگوريتم های مربوطه حذف می نمايند. پس از تشخيص اطلاعات تکراری ، صرفا" اطلاعات تکراری يک بار در فايل تکرار و و در ساير موارد، از مکانيزمهای خاصی برای عدم تکرار استفاده می گردد.

جمله زير از 17 کلمه ، 61 حرف ، 16 فضای خالی ، يک نقطه و يک dash ، تشکيل شده است :

"Ask not what your country can do for you -- ask what you can do for your country."

اگر هر يک از حروف ، فضای خالی و حروف خاص ، يک واحد از حافظه را اشغال نمايند ، مجموعا" 79 واحد از حافظه توسط عبارت فوق استفاده خواهد گرديد (79 = 1 + 1+ 16 + 61 ) . به منظور کاهش ظرفيت فايل می بايست  افزونگی اطلاعات در فايل را بررسی کرد. با مشاهده و بررسی عبارت فوق ، نتايج زير بدست می آيد :

·       کلمه "ask" ، دو مرتبه تکرار شده است .

·       کلمه "what" ،  دو مرتبه تکرار شده است .

·       کلمه "your" ، دو مرتبه تکرار شده است .

·       کلمه "country" ، دو مرتبه تکرار شده است .

·       کلمه "can" ، دو مرتبه تکرار شده است .

·       کلمه "do" ، دو مرتبه تکرار شده است .

·       کلمه "for" ، دو مرتبه تکرار شده است .

·       کلمه "you" ، دو مرتبه تکرار شده است .

با عدم لحاظ نمودن حروف بزرگ و کوچک درعبارت فوق ، مشاهده می گردد که نيمی از اطلاعات موجود در عبارت فوق ، زائد و تکراری می باشند. با دقت در عبارت فوق و نحوه افزونگی اطلاعات مشاهده می گردد که با دارا بودن نه کلمه ask,not,what,your,country,can ،do ،for  و you می توان پالايشی مناسبی از عبارت فوق را انجام و در صورت لزوم و با استفاده از نه کلمه فوق ، مجددا" عبارت اوليه را ايجاد نمود. در اين راستا و به منظور ايجاد عبارت فوق کافی است به کلمات موجود در بخش اول ( نصف عبارت ) اشاره  و جايگاه و تعداد تکرار هر يک از آنها را در بخش دوم مشخص نمود. در ادامه نحوه فشرده سازی اطلاعات و بازسازی مجدد آنها بررسی می گردد.

فشرده سازی اطلاعات
اکثر برنامه های فشرده سازی از مدل ها ی متفاوت الگوريتم مبتنی بر ديکشنری  ايجاد شده توسط "Lempel و Ziv"  ، به منظور کاهش ظرفيت فايل ها ، استفاده می نمايند. منظور از ديکشنری در الگوريتم فوق ، روش های کاتولوگ نمودن بخش هائی از داده است . سيستم استفاده شده برای سازماندهی  ديکشنری متفاوت و در ساده ترين حالت می تواند شامل يک ليست عددی باشد.  با مراجعه مجدد به عبارت اشاره شده در بخش قبل ، کلمات تکراری را انتخاب و آنها را در ليست مرتب شده ای بصورت زير ايندکس می نمائيم . پس از ايجاد ليست فوق ، می توان در موارديکه از کلمات در عبارت استفاده می شود ، از اعداد نسبت داده شده و متناظر با آنها استفاده کرد. ديکشنری ايجاد شده برای عبارت اشاره شده در بخش قبل بصورت زير است :

  1. ask
  2. what
  3. your
  4. country
  5. can
  6. do
  7. for
  8. you

با توجه به ديکشنری ايجاد شده ، عبارت مورد نظر بصورت زير خوانده خواهد شد :

"1 not 2 3 4 5 6 7 8 -- 1 2 8 5 6 7 3 4"

برای بازسازی مجدد عبارت فوق ، لازم است الگوی معادل آن را با توجه به ديکشنری استخراج و در محل مربوطه قرار داد. برنامه هائی نظير WinZip از فرآيندهای مشابه برای بازسازی مجدد يک فايل و برگرداندن آن به شکل اوليه استفاده می نمايند.
در فرآيند فشرده سازی عبارت اشاره شده در بخش قبل به شکل جديد آن ( مطابق جدول بالا ) چه ميزان ظرفيت فايل کاهش پيدا کرده است ؟ مطمئنا" عبارت فشرده شده ظرفيت کمتری نسبت به عبارت اوليه خواهد داشت . در اين زمينه لازم است به اين نکته مهم اشاره گردد که ديکشنری ايجاد شده نيز می بايست بهمراه فايل ذخيره گردد. در مثال فوق ، عبارت اوليه برای ذخيره سازی به 79 واحد حافظه نياز داشت . عبارت فشرده شده ( بهمراه فضای خالی ) ، 37 واحد و ديکشنری ( کلمات و اعداد )  ، نيز 37 واحد حافظه را اشغال خواهند کرد. بدين ترتيب ظرفيت فايل فشرده به 74 واحد حافظه خواهد رسيد . با توجه به اطلاعات فوق مشاهده می گردد که عملا" در رابطه با فشرده سازی عبارت فوق به موفقيت های بزرگی نائل نشده ايم . در اين زمينه لازم است به اين نکته اشاره  گردد که در مثال فوق ،  صرفا" يک " جمله "  فشرده شده است .  فرض کنيد جمله فوق بخشی از يک سخنرانی يک ساعته باشد ، بديهی است که در سخنرانی فوق احتمال تکرار کلمات فوق بسيار زياد خواهد بود . با ايجاد سيستم ديکشنری  ، زمينه استفاده از آن در بخش های بعدی سخنرانی نيز وجود داشته و در ادامه قطعا" ميزان فشرده سازی  جملات موجود در متن سخنرانی نتايج مطلوبتری را بدنبال خواهد داشت .

جستجو برای الگوها
در مثال ارائه شده ، تمام کلمات تکراری انتخاب و در ديکشنری قرار گرفتند. در روش فوق ، ساده ترين مدل برای ايجاد ديکشنری استفاده شده است . برنامه های فشرده سازی از مدل های کاملا" متفاوت ديگر در اين زمينه استفاده می نمايند.برنامه های فوق نسبت به کلمات متمايز، از يکديگر شناخت لازم را نداشته و در اين راستا صرفا" بدنبال "الگو" خواهند بود. اين نوع برنامه ها به منظور کاهش ظرفيت فايل ها ، با دقت الگوها را انتخاب و آنها را در ديکشنری مستقر می نمايند.   در صورتی که از ديدگاه فوق فرآيند فشرده سازی دنبال گردد ، در نهايت  با يک ديکشنری کاملا" متفاوت با آن چيزی که قبلا" ايجاد شده بود ، مواجه خواهيم بود.
اگر يک برنامه فشرده سازی عبارت معروف اشاره  شده در بخش قبل را به منظور يافتن افزونگی ، پيمايش نمايد ، پس از دنبال نمودن بخشی از عبارت (
ask not what your) ، الگوئی جديد را تشخيص خواهد داد. الگوی فوق حرف "t" بوده که بدنبال آن يک فضای خالی نيز قرار دارد. ( در کلمات "not" و "what" ) . در صورتی که برنامه فشرده سازی الگوی فوق را در ديکشنری مستقر نمايد ، می بايست يک عدد "1" را در هر زمان که با  حرف "t"  و يک فضای خالی بدنبال آن برخورد می نمايد ، در ديکشنری ثبت نمايد. با ادامه پيمايش عبارت فوق توسط برنامه فشرده سازی ، مشاهده می گردد که الگوی تشخيص داده شده ( حرف t و فضای خالی بدنبال آن ) به ميزان قابل ملاحظه ای در عبارت تکرار نشده و برای ثبت در ديکشنری واجد شرايط مناسب نخواهد بود ، بدين تزتيب الگوی تشخيص داده شده ناديده گرفته شده و عمليات يافتن الگوئی ديگر ، دنبال خواهد گرديد.
در ادامه برنامه فشرده سازی  متوجه الگوی "
ou" می گردد ، الگوی فوق در کلمات "your" و "country" ، تکرار شده است . در صورتی که عبارت مورد نظر يک فايل طولانی بود ، ثبت و نوشتن الگوی فوق در ديکشنری می توانست به ميزان قابل توجه ای از ظرفيت فايل را کاهش دهد. "ou" ، يکی از ترکيبات متداول استفاده شده  در زبان انگليسی است . معيار برنامه فشرده  سازی عبارتی است که در حال پيمايش آن است . در ادامه پيمايش عبارت فوق ، يک الگوی مناسبتر تشخيص داده خواهد شد. الگوهای فوق "your"  و "country" بوده که هر يک بدفعات  تکرار شده اند. تکرار هر يک از کلمات فوق در عبارت معادل ترکيب کلمات "your country" است . در چنين حالتی برنامه قشرده سازی  entry موجود در ديکشنری برای الگوی "ou" را با الگوی "your country" ، جايگزين می نمايد. عبارت ترکيبی "can do for" ، نيز در عبارت اصلی تکرار شده است . ( يک مرتبه پس از "your" و يک مرتبه پس از "you" ) . بدين ترتيب الگوی "can do for you" نيز تکراری خواهد بود. بنابراين می توان در عوض نوشتن 15 حرف ( بهمراه قضای خالی ) ، از يک عدد استفاده کرد. در صورت استفاده از الگوی "your country" ، برای 13 حرف از يک عدد معادل استفاده می گردد ، بديهی است که الگوی فوق ناديده گرفته شده  در عوض  الگوی "r country"  و الگوی جديد  "can do fo you" ، در ديکشنری ثبت می گردند. برنامه فشرده سازی فرآيند فوق را دنبال و پس از يافتن يک الگو ، محاسبات مربوطه  را انجام و الگوی واجدالشرايط را در ديکشنری ثبت خواهد کرد. مهمترين ويژگی "الگوريتم مبتنی بر ديکشنری " ، قابليت تغيير الگوها در زمان فرآيند فشرده سازی است .
با توجه به الگوهائی تشخيص داده شده ، ديکشنری مربوطه بشکل زير خواهد بود . در ديکشنری زير الگوهای تشخيص داده شده ثبت و برای فضای خالی از کاراکتر "__" استفاده شده است .

  1. ask__
  2. what__
  3. you
  4. r__country
  5. __can__do__for__you

با توجه به ديکشنری فوق ، عبارت اشاره شده در بخش قبل بصورت زير فشرده می گردد.

"1not__2345__--__12354"

 عبارت فوق 18 و  ديکشنری 41 ،  واحد حافظه را اشغال خواهند کرد. بدين ترتيب فايل حاوی عبارت اوليه فوق از 79 واحد حافظه به 59 واحد حافظه کاهش پيدا کرده است . روش استفاده شده به منظور فشرده سازی عبارت فوق يکی از امکانات موجود بوده و می توان در اين راستا از روش های ديگر نيز استفاده کرد.

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

 

 

+ نوشته شده توسط یاشار در دوشنبه نوزدهم فروردین 1387 و ساعت 7:2 |


Powered By
BLOGFA.COM



JavaScript Codes