Tag Archives: داده

تگ یا برچسب 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 . سایر مفاهیم

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

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

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

ساختمان داده Data Structure

ساختمان داده یا Data Structure چیست؟

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

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

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

نمونه‌هایی از ساختمان داده های رایج

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

ساختمان داده آرایه Array Data Structure
تجسم تصویری یک Array با 5 عنصر – اعداد 0 تا 4 که بالای سلول ها قرار گرفته‌اند نمایانگر اندیس ها هستند. آرایه یکی از پرکاربردترین ساختمان داده هاست.

پشته (Stack) نیز یکی دیگر از Data Structure های پرکاربرد است. داده ها در این ساختمان داده به شکل پشته‌ای از عناصر روی یکدیگر سوار می‌شوند و جدیدترین عنصری که در آن ذخیره شده است اولین عنصری خواهد بود که پردازش (یا حذف) می‌شود. از دیگر Data Structure های رایج می‌توان به صف (یا Queue)، لیست پیوندی (یا Linked List)، درخت جستجوی دودویی (یا Binary Search Tree)، جدول درهم سازی (یا Hash Table) و هرم (یا Heap) اشاره نمود.

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

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

پایگاه داده رابطه ای Relational Database

پایگاه داده رابطه ای یا Relational Database چیست؟

پایگاه داده رابطه ای (Relational Database) نوعی پایگاه داده براساس مدل رابطه ای (Relational Model) داده‌هاست. در این مدل، داده‌ها در قالب تعدادی جدول (Table) نگه‌داری می‌شوند. به این جداول، رابطه (Relation) نیز گفته می‌شود. هر جدول شامل تعدادی ستون (Column) و ردیف (Row) می‌باشد. به ستون‌ها، ویژگی (Attribute) و به ردیف‌ها رکورد (Record) یا چندتایی (تاپل یا Tuple) نیز گفته می‌شود.

نمونه جدول یک پایگاه داده رابطه ای relational database table
نمونه جدول اطلاعات دانشجویی از یک پایگاه داده رابطه‌ای

مهم‌ترین مفاهیم پایگاه‌داده‌های رابطه‌ای

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

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

کلید خارجی (Foreign Key) فیلدی در یک جدول است که به طور یکتا ردیفی از یک جدول دیگر یا همان جدول را مشخص می‌کند. به عبارت بهتر کلید خارجی به عنوان یک ویژگی در جدولی ثانویه تعریف می‌شود و با کلید اصلی یا کلیدی یکتا (یک ویژگی با مقادیر غیرتکراری) از جدول اولیه منطبق می‌شود و به این ترتیب میان ردیف‌های دو جدول ارتباط ایجاد می‌کند. برای مثال تصور کنید در جدولی به نام People اطلاعات مشتریان یک شرکت با کلید اصلی PID و در جدولی دیگر به نام Order اطلاعات مربوط به کالاهای سفارش داده شده توسط تمام مشتریان با کلید اصلی OID نگه‌داری می‌شود. برای اینکه در جدول Order بتوانیم تشخیص دهیم هر کالا توسط چه فردی سفارش داده شده است کافی است PID فرد سفارش دهنده را نیز به این جدول اضافه کنیم. در این حالت ویژگی PID در جدول دوم یک کلید خارجی است.

رابطه‌هایی که در خود داده‌ها را نگه‌داری می‌کنند در قالب Table پیاده‌سازی می‌شوند و به رابطه‌های اصلی (یا Base Relations) موسوم هستند. در مقابل، رابطه‌هایی نیز وجود دارند که داده‌ای را نگه‌داری نمی‌کنند بلکه آن‌ها را با انجام اعمالی روی رابطه‌های اصلی ایجاد می‌کنند. به این نوع رابطه‌ها، رابطه‌های مشتق شده (یا Derived Relations) گفته می‌شود و در قالب دید (View) ها و پرس و جو (Query) ها پیاده‌سازی می‌شوند. ممکن است رابطه‌های مشتق شده اطلاعات خود را از یک یا چند رابطه دریافت کنند.

عملگرهای رابطه‌ای

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

  • عملگر اجتماع (Union): این عملگر دوتایی (باینری یا دو عملوندی) بوده و شامل تمام تاپل‌های موجود در عملوندهایش خواهد بود. در رابطه حاصل، ردیف‌های تکراری حذف می‌شوند.
  • عملگر اشتراک (Intersection): حاصل این عملگر دوتایی شامل مجموعه تاپل‌هایی خواهد بود که در هر دو رابطه مشترک هستند.
  • عملگر تفاضل (Difference): حاصل این عملگر دوتایی شامل تاپل‌هایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند.
  • عملگر ضرب دکارتی (Cartesian Product): هر تاپل حاصل از این عملگر دوتایی با الحاق یک تاپل از رابطه اول و یک تاپل از رابطه دوم شکل می‌گیرد.
  • عملگر انتخاب (Selection): عملگری یکانی است که تنها تاپل‌هایی از رابطه خود را برمی‌گرداند که شرط یا معیار خاصی را برآورده می‌کنند.
  • عملگر تصویر (Projection): عملگری یکانی است که تنها ویژگی‌های مشخص شده را از تاپل‌های موجود استخراج می‌کند.
  • عملگر پیوند (Join): رایج‌ترین نوع این عملگر به پیوند طبیعی (Natural Join) مشهور است. رابطه حاصل از این عملگر دوتایی شامل تمام ویژگی‌های موجود در رابطه‌های دو عملوندش می‌باشد و با الحاق تاپل‌هایی از دو رابطه که روی ویژگی‌های مشترکشان مقادیر یکسان دارند شکل می‌گیرد.
  • عملگر تقسیم (Division): حاصل این عملگر دوتایی تنها شامل ویژگی‌هایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند. تاپل‌های رابطه حاصل نیز شامل مقادیر این ویژگی‌ها در تاپل‌هایی از رابطه اول خواهد بود که ترکیب آن‌ها با تمام تاپل‌های رابطه دوم در رابطه اول وجود داشته باشد.

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

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

فشرده سازی داده Data Compression

فشرده سازی داده یا Data Compression چیست؟

فشرده سازی داده (Data Compression) به فرایندی گفته می‌شود که طی آن داده‌ها با استفاده از تعداد کمتری بیت کدگذاری می‌شوند.

روش‌های فشرده‌سازی به لحاظ از دست رفتن داده‌ها به دو نوع کلی تقسیم می‌شود: اتلافی (Lossy) و غیراتلافی (Lossless). در فشرده سازی اتلافی با حذف بخشی از داده‌ها (داده‌های با اهمیت کمتر) و تخمین‌های نسبی از محتوای اصلی، نمایی تقریبی از نسخه‌ی اصلی ارائه می‌شود. اما در فشرده سازی غیراتلافی هیچ چیز از دست نمی‌رود و می‌توان داده‌های اصلی را از روی داده‌های فشرده شده به صورت دقیق بازیابی نمود.

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

تصاویر، داده‌های صوتی و ویدیویی دیجیتال از رایج‌ترین انواع داده‌هایی هستند که فرایند فشرده‌سازی روی آن‌ها اعمال می‌شود. فرمت‌های JPEG و PNG و GIF برای فایل‌های تصویری، فرمت MP3 برای فایل‌های صوتی و … از شاخص‌ترین و مشهورترین فرمت‌های فایلی هستند که از فشرده‌سازی پشتیبانی می‌کنند. به جرأت می‌توان گفت یکی از متداول‌ترین موارد استفاده از چنین داده‌هایی (به خصوص تصاویر فشرده شده) در صفحات وب قابل مشاهده است به این ترتیب میزان پهنای باند مصرفی برای انتقال داده‌های فشرده شده از سرور به مرورگر کاربر کاهش پیدا کرده و سرعت بارگیری صفحات (و پخش فایل‌های چندرسانه‌ای موجود در صفحه) نیز افزایش می‌یابد.

در کنار فرمت‌های رایج فایل‌های تصویری، موسیقی و ویدیویی فشرده شده فرمت‌هایی از قبیل ZIP و RAR از جمله فرمت‌های رایج آرشیوی به شمار می‌روند که از فشرده‌سازی داده‌ها پشتیبانی می‌کنند.

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

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

نوع داده شمارشی Enumerated Data Type

نوع داده شمارشی یا Enumerated Data Type چیست؟

نوع داده شمارشی (Enumerated Data Type)، نوع داده‌ای است متشکل از مجموعه‌ای از مقادیر نامگذاری شده (یا شناسه) که به آن‌ها شمارنده (Enumerator) می‌گویند.

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

به عنوان مثال می‌توان نوع داده‌ای به نام shape_t (به عنوان نوع داده‌ای برای اشکال مختلف هندسی) تعریف کرد که دارای شمارنده‌هایی به نام‌های square (مربع)، triangle (مثلث)، line (خط) و circle (دایره) می‌باشد. در قطعه کد زیر که به زبان C++ نوشته شده است نحوه‌ی تعریف این نوع داده، ایجاد متغیری به نام myshape از این نوع داده جدید و سپس انتساب مقدار به آن نمایش داده شده است. توجه داشته باشید مقادیر مجاز برای متغیرهایی که از نوع shape_t تعریف شده است به شمارنده‌های تعیین شده برای این نوع داده محدود می‌باشد:

enum shape_t {square, triangle, line, circle};
...
shape_t myshape;
myshape = line; 

به عنوان نمونه‌ای دیگر نیز می‌توان نوع داده‌ای به نام week_days تعریف نمود که دارای شمارنده‌هایی با عناوین ایام هفته می‌باشد.

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

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

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

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

بازیابی داده Data Recovery

بازیابی داده یا Data Recovery چیست؟

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

این عدم دسترسی معمولی به داده‌ها ممکن است در اثر بروز آسیب‌های فیزیکی در رسانه ذخیره‌سازی و یا آسیب‌های منطقی در سیستم فایل (File System) رخ داده باشد. علاوه بر این‌ها مواردی نظیر حذف تصادفی و ناخواسته‌ی فایل‌ها نیز می‌تواند دلیلی برای انجام عملیات بازیابی باشد. معمولا در فرایند ریکاوری، داده‌ها از یک فضای ذخیره‌سازی نظیر دیسک‌های سخت، لوح‌های نوری، درایوهای فلش USB، درایوهای حالت جامد یا … بازیابی می‌شود.

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

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

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

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

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

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

نوع داده بولی Boolean Data Type

نوع داده بولی یا Boolean Data Type چیست؟

بولی (بولین یا Boolean) در علوم رایانه نوع داده‌ای است که تنها می‌تواند یکی از دو مقدار ممکن را داشته باشد؛ معمولا مقادیر مجاز برای این نوع داده با True (به معنای درست) و False (به معنای نادرست) نمایش داده می‌شود.

این نوع داده برای تعیین ارزش عبارات منطقی و جبر بولی مورد استفاده قرار می‌گیرد. عنوان این نوع داده از روی نام جورج بول (George Boole) ریاضیدان انگلیسی گرفته شده است که اولین قدم‌ها را در زمینه سیستم جبری منطق برداشت.

کاربرد نوع داده Boolean

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

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

در قطعه کد زیر با کمک یک مثال ساده نحوه تعریف و مقداردهی یک متغیر بولی و استفاده از آن در زبان برنامه نویسی جاوا را مشاهده می‌کنید. در این زبان، مقدار پیشفرض برای متغیر تعریف شده از نوع داده boolean برابر با false است. از آنجایی که متغیر به true مقداردهی شده است با توجه به دستور شرطی، عبارت result is true در خروجی نمایش داده می‌شود.

boolean result;
result = true;
if (result == true) {
     System.out.println("result is true");
}
else {
     System.out.println("result is false");
}

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

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

صف Queue

صف یا Queue چیست؟

صف (Queue) عنوان ساختمان داده‌ای است که مجموعه‌ای از المان‌ها (عناصر) را بر اساس اصل FIFO (خروج به ترتیب ورود) در خود نگه‌داری می‌کند.

برای Queue دو عمل اصلی تعریف می‌شود. عمل Enqueue که عنصر جدیدی را به انتهای آن (که rear نامیده می‌شود) اضافه می‌کند و عمل Dequeue که عنصری را از ابتدای آن (که front نامیده می‌شود) حذف می‌کند. به این ترتیب اولین عنصری که به یک Queue افزوده می‌شود اولین عنصری خواهد بود که از آن حذف خواهد شد. از این رو، صف‌ها را نوعی ساختمان داده‌ی FIFO به شمار می‌آورند. در برخی از پیاده‌سازی‌ها، عملی به نام Front یا Peek نیز تعریف می‌شود که مقدار المان اول را بدون حذف آن برمی‌گرداند.

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

پیاده‌سازی صف

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

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

اعمال حذف و اضافه روی یک صف
اعمال حذف و اضافه روی یک Queue

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

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

سیستم مدیریت پایگاه داده Database Management System – DBMS

سیستم مدیریت پایگاه داده یا Database Management System-DBMS چیست؟

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

اکثر سیستم‌های پایگاه داده‌ای از مدل رابطه‌ای (Relational) پشتیبانی می‌کنند. از معروف‌ترین DBMS های موجود می‌توان به موارد زیر اشاره نمود: