Category Archives: فنی

تازه سازی Refresh

تازه سازی یا ریفرش (Refresh) چیست؟

تازه سازی – رفرش یا ریفرش (Refresh) اصطلاحی عمومی است که به فرایند بروزرسانی یا لود مجدد محتوای در حال نمایش یا ذخیره شده اشاره می‌کند.

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

نماد رفرش - تازه سازی Refresh
نماد مرسوم Refresh در نرم افزارهای مختلف به صورت یک فلش منحنی مشابه با تصویر فوق است.
دکمه رفرش - تازه سازی Refresh
دکمه Refresh در مرورگر کروم

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

نمونه‌هایی از کاربرد تازه سازی در سخت افزار

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

برای نمونه در مورد دستگاه های نمایشگر، عمل بروزرسانی آنچه روی صفحه می‌بینید به صورت متناوب و خودکار صورت می‌گیرد. در چنین حالتی، اصطلاحی موسوم به نرخ تازه سازی (Refresh Rate) نیز مطرح می‌شود که در این مورد خاص به تعداد دفعات بروزرسانی بافر نمایشگر در واحد ثانیه اشاره می‌کند. به عنوان مثال محتوای نمایشگری با نرخ تازه سازی 60 Hz در هر ثانیه 60 مرتبه بروزرسانی می‌شود. هرچه این میزان بالاتر باشد کاربر تصویری روان‌تر و بدون سو سو زدن را (به خصوص هنگام اجرای بازی های ویدئویی با کیفیت) تجربه می‌کند.

برای مموری های با دسترسی تصادفی از نوع پویا (DRAM)، اصطلاح Refresh به فرایند خواندن اطلاعات و نوشتن مجدد آن‌ها در محل پیشین مموری گفته می‌شود که با هدف حفظ و نگه داری اطلاعات روی این نوع حافظه ها حین استفاده از آن‌ها صورت می‌گیرد. این در حالیست که در SRAM ها از ریفرش های پی در پی خبری نیست.

Refresh خودکار صفحات وب

در زبان HTML برای تازه سازی خودکار صفحه پس از مدت زمانی مشخص کافیست در یک المان از نوع meta، پارامتر یا ویژگی http-equiv را به “refresh” مقداردهی کنید و مدت زمان موردنظرتان را نیز برحسب ثانیه مشابه با کد زیر توسط پارامتر content تعیین نمایید:

<meta http-equiv="refresh" content="5">

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

جی سان JSON

جی سان یا JSON چیست؟

جی سان (JSON) نوعی فرمت داده متنی است که در آن از متون قابل خواندن توسط انسان برای نگه داری و انتقال داده ها استفاده می‌شود. واژه JSON خلاصه شده عبارت JavaScript Object Notation به معنای نشانه گذاری اشیاء جاوا اسکریپت می‌باشد.

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

پیدایش JSON همان‌طور که از نامش انتظار می‌رود به زبان جاوا اسکریپت و اوایل دهه 2000 میلادی بازمی‌گردد. با اینحال به دلیل کارایی بالای این فرمت، اغلب زبان‌های امروزی دارای کدهای لازم برای ایجاد و تجزیه داده ها در قالب JSON هستند. محبوبیت این فرمت نیز مدیون فعالیت‌های داگلاس کراکفورد (Douglas Crockford) می‌باشد.

گفتنی است نوع رسانه (Media Type یا MIME Type) مختص به JSON به صورت application/json می‌باشد و پسوند استاندارد فایل هایی که به منظور نگه داری داده ها در این قالب استفاده می‌شود نیز به شکل .json است.

لوگوی جی سان JSON
لوگوی JSON

داده ها در JSON

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

  • اعداد
  • رشته ها (String): دنباله ای از کاراکترها که در میان “” قرار می‌گیرند.
  • بولین (Boolean): با مقادیر true یا false
  • null: به معنای بدون مقدار
  • آرایه (Array): لیستی مرتب از مقادیر که در میان [] قرار می‌گیرند و با کاما از هم جدا می‌شوند.
  • آبجکت یا شئ (Object): مجموعه‌ای نامرتب از جفت‌های نام (name) و مقدار (value) که در میان {} قرار می‌گیرد و در آن نام ها که به ویژگی (attribute) نیز موسوم هستند به صورت رشته ظاهر می‌شوند. هر نام با نماد : (یا کلن) از مقدار منتسب به خود جدا می‌شود و هر جفت نام و مقدار نیز توسط کاما از یکدیگر جدا می‌شوند.

یک مثال ساده

در تصویر زیر می‌توانید نمونه‌ای از نمایش اطلاعات شخصی یک فرد در قالب JSON را مشاهده کنید:

جی سان JSON
مثالی از نمایش اطلاعات یک شخص در قالب JSON

همان‌طور که در این مثال می‌بینید مجموعه‌ای از جفت‌های نام (یا ویژگی) و مقدار، فرد موردنظر را براساس ویژگی‌هایی مثل اسم کوچک و فامیل، شماره ملی، جنسیت و … توصیف می‌کند. نام ها مثل “firstname” و “lastname” و “nationalID” به شکل رشته آمده‌اند و مقادیر موجود در مثال هم به اشکال مختلفی نظیر رشته (مانند “John” برای “firstname” و “Smith” برای “lastname”)، عدد (مانند 123456789 برای “nationalID” و 27 برای “age”)، مقدار بولین (مانند true برای “married”) و null (برای “job”) ظاهر شده‌اند. مقدار منتسب به phone نیز به صورت یک آرایه شامل تعدادی شماره تماس و نوع آن (مربوط به منزل، موبایل و …) می‌باشد که هرکدام از آن‌ها یک شئ با دو ویژگی type و number همراه مقدار منتسب به آن‌هاست.

کاربردهای جی سان

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

JSON و JavaScript

از آنجایی که جی سان یک فرمت متنی است گزینه مناسبی برای انتقال داده ها بر بستر یک شبکه می‌باشد. زمانی که داده ها در این فرمت به صورت یک عبارت متنی توسط کلاینت دریافت می‌شود به منظور استفاده ابتدا لازم است تجزیه شود. در اغلب زبان ها علاوه بر قابلیت تبدیل داده ها به این فرمت، امکان تجزیه آن نیز فراهم شده است. برای مثال در زبان جاوا اسکریپت برای تجزیه رشته ای با فرمت جی سان و تبدیل آن به یک آبجکت جاوا اسکریپت از متد JSON.parse() به شکل زیر استفاده می‌شود:

var obj = JSON.parse(json_str);

که در آن json_str رشته ای با فرمت جی سان است. در صورتی که این رشته حاوی همان متن موجود در مثال فوق باشد برای دسترسی به داده های آن می‌توانید از شیوه مرسوم کار با اشیا در زبان جاوا اسکریپت (برای مثال obj.nationalID جهت دسترسی به مقدار شماره ملی) کمک بگیرید.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

وبسایت json.org

یک بار بنویس، همه جا اجرا کن Write once, run anywhere

یک بار بنویس، همه جا اجرا کن یا Write once, run anywhere چیست؟

یک بار بنویس، همه جا اجرا کن (Write once, run anywhere یا به اختصار WORA) مفهومی است که توسط شرکت Sun Microsystems برای تأکید روی قابلیت چند پلتفرمی بودن زبان برنامه نویسی جاوا معرفی شد و در واقع به برنامه‌هایی اشاره می‌کند که صرفا یک بار نوشته می‌شوند اما روی پلتفرم های مختلف قابل اجرا هستند. عبارت Write once, run everywhere (به اختصار WORE) نیز معادل با همین اصطلاح است.

در حالت ایده آل، برنامه های نوشته شده به زبان جاوا پس از کامپایل شدن به فرم بایت کد (Bytecode) تبدیل می‌شوند که بدون نیاز به دستکاری قادر به اجرا شدن روی دستگاه های مختلف خواهند بود؛ مشروط بر اینکه دستگاه موردنظر مجهز به ماشین مجازی جاوا (Java Virtual Machine – JVM) باشد. به عبارت بهتر بایت کد تولید شده توسط کامپایلر، قابل حمل (پرتابل) بوده و بسته به سیستم عامل و سخت افزارهای گوناگون توسط JVM اختصاصی آن پلتفرم قابل اجرا خواهد بود. از اینرو سیاست یک بار نوشتن و اجرا روی پلتفرم های مختلف در مورد برنامه های جاوا صدق می‌کند.

بک بار بنویس، همه جا اجرا کن Write Once, Run Anywhere
روند اجرایی شدن یک برنامه جاوا از کامپایل تا اجرا توسط یک ماشین مجازی جاوا

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

یک بار بنویس، همه جا کامپایل کن

یکی دیگر از مفاهیم مشابه با WORA در توسعه نرم افزار که روی وجوه چند پلتفرمی بودن نرم افزار تأکید می‌کند اصطلاح یک بار بنویس، همه جا کامپایل کن (Write once, compile anywhere – WOCA) نام دارد. در این سیاست برخلاف WORA، برنامه به عنوان نسخه ای واحد برای اجرا روی پلتفرم های مختلف عرضه نمی‌شود؛ بلکه سورس کد برنامه با کمک کامپایلرهای مختلف به نسخه های قابل اجرا روی پلتفرم های متعدد کامپایل شده و سپس همگی در اختیار کاربران پلتفرم های مختلف قرار می‌گیرد. زبان C++ از جمله زبان های برنامه نویسی پرکاربردی است که از این رویکرد بهره می‌برد و دارای کامپایلرهای ویژه برای پلتفرم های مختلف می‌باشد.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

فوکوس Focus

فوکوس یا Focus چیست؟

فوکوس (Focus) در رایانه مفهومی است که مشخص می‌کند کدام جز یا المان در یک واسط کاربری گرافیکی آماده دریافت ورودی و تعامل با کاربر می‌باشد. این المان می‌تواند شامل پنجره ها و اجزای داخلی آن‌ها (نظیر جعبه های متنی، دکمه ها و …) باشد.

به عنوان مثالی ساده اگر یک جعبه متنی قابل ویرایش، Focus را در اختیار داشته باشد کاربر می‌تواند با فشردن کلیدهای مربوط به کاراکترها در صفحه کلید، متنی را در این جعبه وارد کند. این درحالیست که اگر یک دکمه دارای Focus باشد معمولا فشردن کلید Enter معادل با کلیک کردن روی این دکمه خواهد بود.

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

فوکوس Focus
در این پنجره، دکمه Save دارای Focus است. فشردن کلید Enter معادل با کلیک کردن روی این دکمه است؛ البته کاربر می‌تواند با کلید Tab یا کلیدهای چپ و راست روی سایر دکمه ها Focus کند.

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

روش های تغییر فوکوس

کلیک یا لمس کردن

برای تغییر فوکوس، ساده‌ترین راه کلیک کردن یا لمس کردن مستقیم المان موردنظر است. این سیاست که با نام Click to Focus شناخته می‌شود رایج‌ترین روش برای فوکوس کردن روی یک المان به شمار می‌رود. به عنوان مثال در سیستم عامل ویندوز با کلیک کردن روی یک پنجره، پنجره Focus را در دست می‌گیرد. همین‌طور با کلیک کردن روی یکی از المان های داخلی این پنجره، المان موردنظر Focus را در اختیار می‌گیرد و آماده دریافت ورودی می‌شود.

فوکوس Focus
فرم اینترنتی ثبت نام در یک سایت – در این تصویر، جعبه متنی اول دارای Focus است و کاربر با کمک صفحه کلید می‌تواند آن را تکمیل کرده و سپس با فشردن کلید Tab به سراغ جعبه دوم برود.

در سیاست دیگری موسوم به Focus Follows Mouse Pointer بدون نیاز به کلیک کردن، فوکوس به پنجره ای منتقل می‌شود که نشانگر ماوس روی آن قرار گرفته است. این پنجره ممکن است به طور خودکار (احتمالا پس از کمی تأخیر) روی مابقی پنجره ها قرار بگیرد (AutoRaise) و یا با وجود اینکه آماده دریافت ورودی است به همان حالت (بخشی از آن) زیر پنجره های دیگر باقی بماند.

استفاده از صفحه کلید

روش دیگری که معمولا در رایانه ها برای تغییر فوکوس به کار می‌رود استفاده از صفحه کلید است. در این روش که یک روش نسبی (Relative) به شمار می‌رود با فشردن کلید Tab می‌توانید به سراغ المان بعدی قابل فوکوس بروید و با ترکیب Tab + Shift به المان قبلی فوکوس کنید. ترتیب المان ها برای این منظور که با اصطلاح Tab Order (ترتیب Tab) نیز شناخته می‌شود معمولا براساس موقعیت فیزیکی المان ها یا توسط توسعه دهنده با اختصاص شماره‌ای تحت عنوان Tab Index مشخص می‌شود. در برخی موارد نیز امکان انتقال فوکوس به المان های اطراف المان کنونی با کمک کلیدهای پیکانی وجود دارد.

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

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

تغییر فوکوس خودکار

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

فوکوس و تجربه کاربری

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

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

در پشتی Backdoor

در پشتی یا Backdoor چیست؟

در پشتی یا بَک دُر (Backdoor) روشی است که برای عبور کردن از مکانیزم های معمولی تصدیق هویت (Authentication) یا رمزنگاری داده ها در یک سیستم یا محصول رایانه ای استفاده می‌شود.

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

درک مفهوم در پشتی با یک مثال ساده

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

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

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

در پشتی Backdoor
Backdoor ها امکان دور زدن مکانیزم های تصدیق هویت و روش‌های امنیتی متداول را میسر می‌کنند.

ویژگی ها و اهداف درهای پشتی

درهای پشتی معمولا به صورت محرمانه و عمدی توسط سازنده محصول یا اشخاص ثالث طراحی می‌شوند. البته برخی از آن‌ها نیز به صورت گسترده شناخته شده هستند. به علاوه ممکن است یک در پشتی به صورت غیرعمدی (برای مثال در اثر یک باگ یا خطای برنامه نویسی) در محصول به وجود آمده باشد.

درهای پشتی با اهداف مختلفی در محصولات یا سیستم های نرم افزاری و سخت افزاری ایجاد می‌شوند و مشابه با مثالی که در دنیای واقعی به آن اشاره شد الزاما مقاصد منفی را دنبال نمی‌کنند. برخی از توسعه دهندگان برای انجام امور مدیریتی به صورت از راه دور (نظیر عیب یابی و نگه داری سیستم) از بک درها در محصولات خود استفاده می‌کنند. در عین حال ممکن است بدافزارها (تروجان های دسترسی از راه دور یا Remote Access Trojan – RAT) نیز با ایجاد یک Backdoor امکان دسترسی هکرهای متجاوز را به یک سیستم رایانه ای فراهم کنند.

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

راهکارهای مقابله

هرچند شناسایی در پشتی در یک محصول اختصاصی معمولا کار چندان ساده‌ای نیست اما استفاده از دیوارهای آتش با پیکربندی های مناسب و نظارت روی ترافیک شبکه می‌تواند تا حدودی شناسایی و مقابله با درهای پشتی را امکان‌پذیر نماید. همچنین نرم افزارهای منبع باز اغلب می‌توانند به کاربر این حس اطمینان را منتقل کنند که در آن‌ها خبری از بَک دُر نیست چرا که پنهان کردن آن‌ها در مورد نرم افزارهایی که سورس کدشان به صورت عمومی منتشر شده است امری به مراتب دشوارتر خواهد بود.

در عین حال استفاده از ابزارهای امنیتی مناسب برای جلوگیری از آلوده شدن به بدافزارها می‌تواند شما را تا حدودی از حملات وابسته به درهای پشتی در امان نگاه دارد.

نمونه هایی از Backdoor های مشهور

از جمله معروف‌ترین درهای پشتی شناخته شده می‌توان به Back Orifice اشاره کرد که در سال 1998 با هدف مشروع مدیریت سیستم های ویندوزی از راه دور توسط گروهی از هکرها موسوم به Cult of the Dead Cow طراحی شده بود.

یکی دیگر از درهای پشتی مشهور متعلق به الگوریتم منسوخ شده Dual_EC_DRBG است که کاربرد آن در حوزه رمزنگاری بوده و به آژانس امنیت ملی آمریکا (NSA) اجازه می‌داده است داده های رمزنگاری شده با این الگوریتم را رمزگشایی کنند.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

سندباکس یا جعبه شنی Sandbox

سندباکس یا Sandbox چیست؟

سندباکس (Sandbox) به محیطی گفته می‌شود که معمولا به منظور تست بخش‌های جدید یک نرم افزار یا اجرای ایمن نرم افزارها بدون اینکه محیط اصلی تحت تأثیر آن قرار بگیرد به کار می‌رود. این واژه در زبان فارسی به معنای جعبه شنی است.

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

سندباکس و توسعه نرم افزار

در حوزه توسعه نرم افزار، سندباکس محیطی مجزا از محیط در حال عملیات است که از آن برای بررسی، تست و مانیتور کردن کدها یا بخش‌های جدید در حال توسعه استفاده می‌شود. اجرا در جعبه شنی، محیط اصلی (نظیر سرورهایی که در حال ارائه خدمات هستند) و داده های مرتبط با آن را از تغییراتی که ممکن است به درستی کار نکند یا خطرآفرین باشد محافظت می‌کند.

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

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

سندباکس و امنیت

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

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

سندباکس Sandbox
اجرای نرم افزارها در سندباکس، سیستم میزبان را از آسیب های احتمالی ناشی از نرم افزار در امان نگه می‌دارد.

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

سایر کاربردها

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

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

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

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

زباله روبی Garbage Collection – GC

زباله روبی یا جمع آوری زباله (Garbage Collection) چیست؟

زباله روبی (Garbage Collection یا به اختصار GC) اصطلاحی در حوزه مدیریت و بازیابی خودکار حافظه (مموری) است و به فرایندی اشاره می‌کند که طی آن فضای اشغال شده توسط اشیائی که مورد نیاز برنامه نیستند به صورت خودکار آزاد می‌شود.

وظیفه انجام این کار بر عهده عاملی موسوم به زباله روب یا جمع آوری کننده زباله (Garbage Collector) است. این عامل تلاش می‌کند فضایی از حافظه که حین ایجاد و استفاده از یک شئ به آن اختصاص داده (Allocate) شده است و دیگر برنامه به آن نیازی ندارد را برای استفاده مجدد آزاد کند (از این رخداد با عنوان Deallocate کردن یا نابود کردن (Destroy) شئ نیز یاد می‌شود). اشیاء مذکور اصطلاحا با نام زباله (Garbage) یا اشیاء مرده (Dead Objects) شناخته می‌شوند.

جالب است بدانید Garbage Collection اولین بار توسط جان مک کارتی (John McCarthy) در سال 1959 برای زبان Lisp طراحی شد.

زباله روبی در نقطه مقابل مدیریت دستی حافظه (Manual Memory Management) قرار می‌گیرد که در آن شخص برنامه نویس وظیفه دارد اشیائی که دیگر به آن‌ها نیازی نیست را مشخص و حافظه منتسب به آن‌ها را آزاد کند.

در اغلب زبان های برنامه نویسی سطح بالا از قابلیت Garbage Collection به صورت پیشفرض یا درونی ساز (built-in) پشتیبانی می‌شود. البته برخی از زبان های امروزی علاوه بر زباله روبی خودکار از قابلیت‌هایی برای مدیریت دستی حافظه نیز برخوردار هستند. در مورد تعدادی از زبان های سطح پایین‌تر نظیر C و C++ که در آن‌ها اساسا برنامه نویس مسئول جمع آوری کردن زباله هاست امکان استفاده از پیاده سازی های Garbage Collection وجود دارد.

در بسیاری از زبان های برنامه نویسی متدی موسوم به Destructor (مخرب یا نابودساز) یا Finalizer (نهایی ساز) در کلاس ها قابل تعریف است که هنگام نابودی شئ فراخوانی می‌شود. این تابع برخلاف تابع سازنده نمی‌تواند هیچ پارامتری داشته باشد.

مزایا و معایب زباله روبی

زباله روبی علاوه بر تسهیل برنامه نویسی به جلوگیری از بروز مشکلات و باگ های مربوط به مدیریت دستی حافظه نیز کمک می‌کند. برای مثال فراموش کردن یا نادیده گرفتن آزادسازی فضای متعلق به زباله ها توسط برنامه نویس یکی از مشکلات مدیریت دستی حافظه به شمار می‌رود که می‌تواند به کمبود حافظه بیانجامد. آزادسازی مضاعف (Double free) حافظه‌ای که قبلا آزاد شده است نیز یکی دیگر از باگ هایی است که حین انجام این کار توسط برنامه نویس ممکن است رخ دهد.

در عین حال این نکته را نیز در نظر داشته باشید که جمع آوری زباله می‌تواند معایبی همچون کاهش سرعت اجرای برنامه و مصرف منابع بیشتر را نیز به همراه داشته باشد. همچنین معمولا زمان دقیق Garbage Collection غیرقابل پیش بینی و تقریبا غیر قابل کنترل است.

روش های جمع آوری زباله

موضوعی که در Garbage Collection از اهمیت بالایی برخوردار است شناسایی اشیاء بلااستفاده یا به عبارت بهتر اشیائی است که شایسته زباله روبی هستند.

زباله روبی با کمک ردیابی (Tracing garbage collection)، رایج‌ترین و اصلی‌ترین روش برای شناسایی و جمع آوری زباله ها به شمار می‌رود. در این روش پس از ردیابی اشیاء قابل دسترسی (Reachable) در زنجیره‌ای از ارجاعات، سایر اشیاء به عنوان گزینه‌هایی که می‌بایست حافظه تخصیصی به آن‌ها آزاد شود شناسایی می‌شوند.

در روشی دیگر موسوم به شمارش ارجاعات (Reference Counting garbage collection) تعداد ارجاعات به هر شئ نگه داری می‌شود و در صورتی که برای یک شئ، این عدد برابر با صفر باشد به عنوان زباله تشخیص داده می‌شود و حافظه تخصیصی به آن آزاد خواهد شد.

در تصویر زیر می‌توانید نمایی مفهومی از مراحل انجام یک Garbage Collection فرضی را مشاهده کنید. همان‌طور که در این تصویر می‌بینید زباله روب مورد مثال پس از شناسایی و آزادسازی فضای اشغال شده توسط زباله ها، فضای مربوط به اشیاء قابل دسترس (یا زنده) را در کنار یکدیگر مرتب (اصطلاحا کامپکت Compact) می‌کند تا سرعت اجرای برنامه افزایش یابد.

زباله روبی Garbage Collection
نمایی مفهومی از یک فرایند متداول Garbage Collection

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

تگ یا برچسب Tag

تگ یا Tag چیست؟

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

1 . تگ در زبان های نشانه گذاری

همان‌طور که گفته شد در زبان های نشانه گذاری نظیر HTML و XML، از Tag ها برای مشخص کردن المان ها و اجزای مختلف سند استفاده می‌شود. به این ترتیب که محتوای المان ها (در صورت وجود) در میان تگ های آغازین و پایانی محصور می‌شود و خصوصیات هر المان نیز با کمک ویژگی (Property) هایی مشخص می‌شود که در تگ آغازین بیان می‌شود.

به عنوان مثال، در قطعه کد HTML زیر از تگ آغازین <p> و تگ پایانی </p> برای تعریف یک المان پاراگراف استفاده شده است. همان‌طور که در این مثال مشاهده می‌کنید تگ پایانی با افزودن یک نماد / به ابتدای نام تگ آغازین به دست آمده است و از ویژگی style برای تراز کردن پاراگراف با کمک قوانین CSS استفاده شده است.

<p style="text-align: justify;">This is a Paragraph.</p>

البته فراموش نکنید برخی از تگ ها (نظیر <img> در HTML) الزاما نیازی به تگ پایانی ندارند.

2 . تگ (یا برچسب) به عنوان فراداده

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

هرچند برچسب گذاری دارای تاریخچه‌ای بسیار قدیمی‌تر از دنیای رایانه هاست اما فراگیری آن در این حوزه با ظهور وب 2.0 و به ویژه با رشد شبکه های اجتماعی، سامانه های اشتراک تصویر و ویدئو، وبلاگ ها و … رقم خورد. برای مثال در وبلاگ ها و سیستم های مدیریت محتوا، نویسنده می‌تواند به هر نوشته (یا پست)، برچسب‌هایی حاوی واژه‌های مرتبط با موضوع آن نوشته اختصاص بدهد. به عنوان نمونه در یک وبسایت خبری برای نوشته‌ای که مربوط به تغییر مربی یک تیم فوتبال است برچسب هایی نظیر ورزش، فوتبال و مربی مناسب به نظر می‌رسد. این Tag ها معمولا جایی در صفحه مربوط به پست در قالب یک لینک نمایش داده می‌شوند و کاربر با کلیک روی آن‌ها به صفحه‌ای دیگر هدایت می‌شود که حاوی فهرستی از تمام نوشته‌های دارای آن تگ می‌باشد.

برچسب - تگ Tag
سه برچسب در انتهای یک پست

در مورد فایل ها به خصوص فایل های چند رسانه ای، برچسب گذاری به توصیف محتوای فایل با اطلاعاتی نظیر نام خواننده، ژانر موسیقی، سال انتشار، کپی رایت و … کمک می‌کند. ویرایشگرهای برچسب (Tag Editor) نرم افزارهای ویژه‌ای هستند که امکان ویرایش تخصصی این فراداده ها را میسر می‌کنند.

ابر برچسب

مفهوم مرتبط دیگری به نام ابر برچسب (Tag Cloud) در برخی از وبسایت ها وجود دارد که برای نمایش مجموعه‌ای از مهم‌ترین تگ های سایت کنار یکدیگر به کار می‌رود. در ابر برچسب که معمولا در نوار کناری یا فوتر سایت نمایش داده می‌شود متناسب با اهمیت و فراوانی استفاده از برچسب ها، واژه مربوط به آن‌ها با اندازه‌های مختلف یا رنگ‌های متمایز نمایش داده می‌شود و به این ترتیب ظاهری مشابه با یک ابر را برای کاربر تداعی می‌کند.

ابر برچسب - ابر تگ Tag Cloud
نمونه ای از یک ابر برچسب

هشتگ

هشتگ (Hashtag) ها گونه رایجی از تگ ها هستند که با نماد # آغاز می‌شوند. این شیوه معمولا برای ایجاد برچسب در شبکه های اجتماعی نظیر اینستاگرام و فیس بوک و سایر رسانه های اجتماعی استفاده می‌شود.

چالش ها

در کنار مزایایی که استفاده از تگ ها به همراه دارند این حوزه هم از نفوذ اسپم ها (در قالب تگ هایی بدون ارتباط به محتوا که برای جذب بازدیدکنندگان درج می‌شود) در امان نمانده است. یکی دیگر از چالش های رایج برچسب گذاری به تگ های یکسانی مربوط می‌شود که دارای معانی مختلفی هستند (برای مثال واژه “نوقا” نه تنها نام نسخه ای از سیستم عامل اندروید است بلکه نام یک شیرینی خوشمزه هم هست؛ درنتیجه کاربری که به دنبال شیرینی نوقا می‌گردد احتمالا با نتایج مربوط به یک سیستم عامل غیر قابل خوردن هم روبرو می‌شود!)

3 . سایر مفاهیم

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

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

مبهم سازی Obfuscation

مبهم سازی یا Obfuscation چیست؟

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

مبهم سازی ممکن است به صورت دستی یا با کمک ابزارهای مخصوصی موسوم به مبهم ساز (Obfuscator) انجام شود. این ابزارها بسته به زبان های مورد پشتیبانی قادر هستند روی فایل کامپایل شده یا سورس کد با روش های مختلف به ایجاد ابهام بپردازند. فراموش نکنید در هر حال با اِعمال مبهم سازی نباید عملکرد برنامه تغییر پیدا کند. علاوه بر این، تکنیک ها و ابزارهایی نیز وجود دارد که تلاش می‌کنند معکوس عمل مبهم سازی (Deobfuscation) را انجام دهند و از روی فایل اجرایی مبهم شده یا سورس کد مبهم شده به سورس اصلی و قابل درک دست پیدا کنند.

مبهم سازی کد Obfuscation
ایجاد ابهام در سورس کد، درک آن را دشوارتر می‌کند.

جالب است بدانید مسابقات برنامه نویسی معتبری (نظیر International Obfuscated C Code Contest) وجود دارد که در آن‌ها به بهترین کدهای مبهم شده و خلاقانه‌ترین روش‌ها جوایزی داده می‌شود.

در نظر داشته باشید حتی اگر سورس برنامه را منتشر نمی‌کنید در بسیاری از موارد (نظیر برنامه های نوشته شده به زبان های دات نت و اپلیکیشن های اندروید) به راحتی می‌توان با کمک دیکامپایلرها به سورس کد برنامه دست پیدا کرد. از همین رو پیش از انتشار یک نرم افزار اختصاصی، توصیه می‌شود از ابزارهای محافظت از کد استفاده کنید.

تکنیک ها و اهداف مبهم سازی

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

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

مبهم سازی Obfuscation
نمونه‌ای از یک قطعه کد ساده قبل و پس از انجام مبهم سازی توسط نرم افزار Dotfuscator

افزون بر جنبه های سرگرمی، چالش های ذهنی، محافظت در برابر مهندسی معکوس (تبدیل فایل کامپایل شده به سورس کد) و جلوگیری از ایجاد تغییرات در سورس کد به منظور استفاده در پروژه‌های نرم افزاری دیگر، مبهم سازی سورس کد در حوزه امنیت نیز مزایایی به همراه دارد. پنهان سازی بخش‌های مهم امنیتی و دشوارسازی کشف آسیب پذیری ها یا راه‌های نفوذ از جمله این مزایا به شمار می‌روند.

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

در سایر حوزه ها

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

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

پچ یا وصله Patch

وصله یا Patch چیست؟

پچ (Patch) یا وصله به مجموعه‌ای از تغییرات گفته می‌شود که به منظور بروزرسانی، تعمیر یا بهبود یک نرم افزار رایانه ای به کار می‌رود. این تغییرات ممکن است برای رفع آسیب پذیری های امنیتی و باگ های مختلف نرم افزار، بهبود نحوه استفاده یا کارایی و افزودن ویژگی های جدید به نرم افزار ایجاد شوند.

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

محتویات پچ ها بسته به میزان تغییرات در ابعاد مختلف (از چند کیلوبایت گرفته تا چند صد مگابایت) عرضه می‌شوند. در برخی موارد از اصطلاح سرویس پک (Service Pack) برای پچ های بزرگ‌تر استفاده می‌شود. جالب است بدانید علاوه بر سیستم عامل ها، معمولا وصله هایی که برای بروزرسانی و اعمال تغییرات در بازی های رایانه ای عرضه می‌شوند نیز به دلیل داشتن فایل های گرافیکی دارای حجم بالایی هستند.

وصله های امنیتی (Security Patches) از جمله مهم ترین انواع وصله هایی هستند که برای رفع آسیب پذیری های امنیتی (به خصوص در مورد سیستم عامل ها) منتشر می‌شود.

پچ - وصله - بروزرسانی Patch - Update
پچ ها برای بروزرسانی، تعمیر یا بهبود نرم افزارهای رایانه ای منتشر می‌شوند.

بروزرسانی و اعمال پچ ها

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

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

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

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

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا