بایگانی برچسب‌ها : مزایا

لیست پیوندی Linked List

لیست پیوندی یا Linked List چیست؟

لیست پیوندی (Linked List) مجموعه‌ای از عناصر داده‌ای است که در آن هر عنصر به عنصر بعدی خود اشاره می‌کند. این عناصر که در کنار یکدیگر تشکیل یک دنباله می‌دهند گره (Node) نامیده می‌شوند و در ساده‌ترین فرم (لیست یک طرفه)، هرکدام شامل یک فیلد داده و یک فیلد اشاره‌گر (ارجاع یا لینک) به گره بعدی خود می‌باشند. این اشاره‌گر با عناوینی چون Next Pointer یا Next Link نیز شناخته می‌شود.

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

لیست پیوندی یک طرفه singly linked list
نمونه‌ای از یک لیست پیوندی یک طرفه با سه گره (نود) – در این لیست پیوندی هر گره دارای دو فیلد (یک فیلد برای نگه‌داری داده و دیگری اشاره‌گر به گره بعدی) می‌باشد.

اعمال رایج لیست‌های پیوندی

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

برای نمونه فرض کنید می‌خواهیم در لیست پیوندی یک طرفه شکل زیر، گره جدیدی با داده B پس از گره اول درج کنیم.

لیست پیوندی
در این لیست پیوندی می‌خواهیم گره جدیدی را پس از گره اول درج کنیم.

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

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

شبه کد زیر نحوه انجام این کار را به زبان ساده بیان می‌کند. nodeA گرهی است که می‌خواهیم nodeB را پس از آن درج کنیم و next متغیر اشاره‌گر گره است:

function insertAfter(Node nodeA, Node nodeB)
     nodeB.next := nodeA.next
     nodeA.next := nodeB

انواع لیست‌های پیوندی

برای افزایش کارایی لیست‌های پیوندی یک طرفه (Singly Linked List)، گونه‌های مختلفی بر اساس همین ساختار شکل گرفته‌اند که از رایج‌ترین آن‌ها می‌توان به لیست پیوندی دو طرفه (Doubly Linked List) و لیست پیوندی دایره‌ای یا حلقوی (Circular Linked List) اشاره نمود.

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

لیست پیوندی دو طرفه doubly linked list
نمونه‌ای از یک لیست پیوندی دو طرفه با سه گره – در این شکل هر گره دارای سه فیلد (یک فیلد برای نگه‌داری داده، یک فیلد برای اشاره‌گر به گره بعدی و یک فیلد برای اشاره‌گر به گره قبلی) می‌باشد.

مزایا و معایب لیست‌های پیوندی

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

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

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

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

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

دانگل Dongle

دانگل یا Dongle چیست؟

دانگل (Dongle) یک قطعه کوچک سخت افزاری است که با اتصال به یک ابزار دیگر (نظیر رایانه، تلویزیون و …) قابلیتی را به آن اضافه می‌کند.

کاربردهای رایج دانگل‌ها

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

علاوه بر این‌ها برخی از دانگل‌ها برای محافظت از نسخه‌برداری غیرمجاز یک نرم‌افزار تجاری ساخته می‌شوند. به این ترتیب که نرم‌افزار همراه با یک دانگل سخت‌افزاری عرضه می‌شود و تا زمانی که این دانگل به دستگاه متصل نشده باشد نرم افزار کار نخواهد کرد. از نمونه‌های دیگر دانگل‌ها می‌توان به کارت‌خوان‌های اس دی (SD Card Reader)، آداپتورهای OTG و فلش درایوهای USB اشاره نمود.

مزایای دانگل‌ها

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

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

دانگل Dongle
رایانه شخصی کوچک Intel Compute Stick – دانگلی که با اتصال به پورت HDMI یک تلویزیون یا نمایشگر، آن را به یک رایانه کامل تبدیل می‌کند!
دانگل dongle
نمونه‌ای از یک دانگل Wi-Fi

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

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

وب اپلیکیشن Web Application

وب اپلیکیشن یا Web Application چیست؟

وب اپلیکیشن یا نرم افزار کاربردی وب (Web Application به اختصار Web App) برنامه‌ای رایانه‌ای بر پایه مدل کلاینت – سرور می‌باشد که در مرورگرهای وب اجرا می‌شود. از جمله نرم‌افزارهای کاربردی وب می‌توان به فروشگاه‌های آنلاین، وب میل، سایت‌های ویکی، نرم‌افزارهای مدیریت پروژه و مدیریت تیم آنلاین، ابزارهای ویرایش آنلاین اسناد (نظیر واژه پردازها، ابزارهای پرزنتیشین و صفحات گسترده آنلاین)، ویرایشگرهای آنلاین تصویر و … اشاره نمود.

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

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

برخی از مزایای Web Application ها

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

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

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

بسیاری از Web Application ها به صورت رایگان عرضه می‌شوند. با اینحال سازندگان چنین اپلیکیشن‌هایی می‌توانند با درنظر گرفتن پلن‌های ماهیانه و سالیانه متناسب با ویژگی‌های مورد نیاز و مدت استفاده کاربر هزینه‌ای را از او دریافت نمایند. معمولا حفظ امنیت وب اپلیکیشن و داده‌هایی که توسط هر کاربر ذخیره می‌شود دارای اهمیت خاصی است که بخشی از آن بر عهده ارائه‌کننده سرویس آنلاین نرم افزاری خواهد بود.

نرم افزار کاربردی وب - وب اپلیکیشن Web Application
نمایی از وب اپلیکیشن Word Online از مجموعه Office Online در مرورگر فایرفاکس – بسیاری از قابلیت‌های Microsoft Office Word در نسخه تحت وب به صورت رایگان قابل استفاده است.

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

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

مدیر کلمه عبور Password Manager

مدیر کلمه عبور یا Password Manager چیست؟

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

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

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

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

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

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

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

در گونه‌ی سوم از یک سخت افزار مانند حافظه‌های فلش USB برای مدیریت کلمه‌های عبور استفاده می‌شود. جهت دسترسی به کلمات عبور و اطلاعات ذخیره شده در این حافظه‌ها، استفاده از عامل دیگری مانند پین کد (تأیید اعتبار دو مرحله‌ای) می‌تواند در حفظ امنیت اطلاعات ذخیره شده کاربر مفید واقع شود.

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

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

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

نکات و آسیب‌های استفاده از مدیر کلمه عبور

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

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

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

رایانه شخصی مجتمع All in One PC

رایانه شخصی مجتمع یا All in One PC چیست؟

رایانه شخصی مجتمع (All in One PC به اختصار AIO) نوعی رایانه شخصی رومیزی (Desktop PC) است که در آن جعبه‌ی نگهدارنده‌ی قطعات داخلی سیستم با نمایشگر رایانه ادغام شده است. به عبارت بهتر در رایانه‌های مجتمع، از کیس رایانه (Computer Case) به عنوان جعبه‌ای مجزا برای نگه‌داری قطعات سخت‌افزاری خبری نیست.

اولین رایانه‌های All in One در دهه‌ی 1980 میلادی تولید شدند. هرچند در نمونه‌های ابتدایی این نوع رایانه‌ها (همانند Kaypro II) از نمایشگرهای CRT (لامپ پرتوی کاتدی) استفاده می‌شد که به فضای قابل توجهی نیاز داشتند اما با رشد فناوری‌های سخت‌افزاری و ظهور نمایشگرهای Flat از فضای موردنیاز این رایانه‌ها کاسته شد. به علاوه برخی از مدل‌های امروزی آن‌ها مجهز به صفحه نمایش‌های لمسی هستند که امکان تجربه‌ی کاری مشابه گوشی‌های هوشمند و تبلت‌ها را برای کاربر فراهم می‌آورد.

مزایا و معایب رایانه‌های All in One

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

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

رایانه رومیزی All in One
نمونه‌ای از رایانه‌های رومیزی All in One

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

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

رایانه رومیزی Desktop Computer

رایانه رومیزی یا Desktop Computer چیست؟

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

کیس‌های رایانه‌ای معمولا به صورت افقی یا عمودی در زیر یا کنار نمایشگر یا میز رایانه قرار می‌گیرند. در نوع دیگری از رایانه‌های رومیزی که به رایانه‌های شخصی مجتمع (یا All in One PC به اختصار AIO) موسوم هستند خبری از یک جعبه مجزا نیست و در واقع اجزای داخلی کیس با نمایشگر رایانه ترکیب شده است. این نوع از رایانه‌های رومیزی که در برخی نمونه‌های امروزی مجهز به صفحه نمایش‌های لمسی نیز می‌باشد فضای کمتری نسبت به مدل معمولی اشغال کرده و به علاوه در آن‌ها از شلوغی کابل‌های متعدد نیز خبری نیست.

اولین رایانه رومیزی (ماشین حساب قابل برنامه ریزی) که به صورت تجاری در اواسط دهه 1960 وارد بازار شد Programma 101 نام داشت. در دهه 1980 با ظهور رایانه‌های IBM PC و پس از آن Apple Macintosh استفاده از رایانه‌های رومیزی رواج بیشتری پیدا کرد و به گونه‌ی غالب رایانه‌های شخصی تبدیل شد. اما به مرور زمان در اواسط دهه 2000 میلادی، رایانه‌های رومیزی با کاهش اقبال مردم جایگاه خود را به لپ‌تاپ‌های قابل حمل دادند.

تفاوت رایانه‌های رومیزی و لپ تاپ‌ها

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

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

یک رایانه رومیزی Desktop Computer
نمای گرافیکی از یک رایانه رومیزی (Desktop Computer) معمولی
رایانه رومیزی All in One
نمونه‌ای از رایانه‌های رومیزی All in One

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

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

دستور GOTO

دستور GOTO چیست؟

GOTO (به معنای “برو به …”) عنوان دستوری است که در بسیاری از زبان‌های برنامه‌نویسی به منظور انتقال کنترل به خط دیگری از کد مورد استفاده قرار می‌گیرد. مکان‌هایی که با استفاده از این دستور به آن‌ها پرش می‌شود معمولا توسط برچسب (Label) ها مشخص می‌شود و یا از شماره خطوط برای این جهش کمک گرفته می‌شود. بسته به زبان‌های برنامه‌نویسی مختلف، این دستور به اشکال گوناگونی از جمله GoTo، goto و … مشاهده می‌شود.

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

ساختار کلی این دستور به شکل goto identifier می‌باشد که در آن منظور از identifier برچسب یا شماره خطی است که به آن نقطه قرار است پرش صورت بگیرد. (یک برچسب در واقع دنباله‌ای از کاراکترهاست که در بسیاری از زبان‌ها با علامت : به پایان می‌رسد و یک نقطه معین در سورس کد را مشخص می‌کند). در قطعه کد زیر که به زبان C++ نوشته شده است نحوه استفاده از این دستور نمایش داده شده است:

...
goto label;
...
label:
...

مزایا و معایب استفاده از دستور GOTO

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

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

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

کاغذ الکترونیک Electronic paper

کاغذ الکترونیک یا Electronic paper چیست؟

کاغذ الکترونیک (Electronic paper) یا E-paper نوعی دستگاه نمایشگر است که به لحاظ تشابه ظاهری، محتوای تصویری در آن به گونه‌ای نمایش داده می‌شود که گویا با جوهر معمولی روی صفحه کاغذ نوشته یا ترسیم شده است.

ویژگی‌ها، مزایا و معایب کاغذهای الکترونیک

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

در اغلب فناوری‌های مورد استفاده در کاغذهای الکترونیک، نمایش محتوای ثابت نیازی به الکتریسیته ندارد بلکه تنها تغییر محتوای صفحه است که نیازمند مصرف انرژی است. همین ویژگی کافیست تا دستگاه‌هایی که در آن‌ها از کاغذهای الکترونیک استفاده شده است از نظر صفحه نمایش مصرف الکتریسیته‌ی بسیار پایینی داشته و گاها تا هفته‌ها بدون نیاز به شارژ باتری به فعالیت خود ادامه دهند. به علاوه e-paper ها دارای زاویه دید بسیار گسترده‌ای هستند و برخی از انواع آن‌ها همانند یک کاغذ معمولی انعطاف‌پذیر می‌باشند.

در کنار این ویژگی‌های شگفت‌انگیز، کاغذهای الکترونیک با معایبی هم دست و پنجه نرم می‌کنند. این صفحه‌نمایش‌ها دارای نرخ تازه‌سازی (Refresh rate) بسیار پایین‌تری در مقایسه با صفحه‌نمایش‌های معمولی هستند. بنابراین کاربر نمی‌تواند انتظار داشته باشد در تعاملات سریع با e-paper ها، همان تجربه‌ای را به دست آورد که حین کار با صفحه نمایش یک گوشی هوشمند معمولی داشته است. به علاوه در برخی از این صفحه‌نمایش‌ها هنگام تازه‌سازی صفحه، ممکن است بخش‌های شبح‌مانندی از محتوای قبلی نیز مشاهده شود. این معایب باعث می‌شود کاربرد کاغذهای الکترونیک اغلب به موارد خاصی محدود شود که در آن‌ها نیازی به واکنش‌دهی سریع صفحه نمایش وجود ندارد.

کاربردهای کاغذ الکترونیک

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

کاغذ الکترونیک e-paper
نمونه‌ای از کاغذهای الکترونیک انعطاف‌پذیر

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

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

واسط کاربری گرافیکی Graphical User Interface – GUI

واسط کاربری گرافیکی یا Graphical User Interface – GUI چیست؟

واسط کاربری گرافیکی (Graphical User Interface) یا به اختصار GUI (بخوانید گوئی)، نوعی واسط کاربری است که به کاربران اجازه می‌دهد از طریق نمادهای گرافیکی و نشانگرهای بصری با دستگاه‌های الکترونیک به تعامل و برقراری ارتباط بپردازند.

امروزه قلمرو استفاده از  GUI ها نه تنها در رایانه‌های معمولی، بلکه به گوشی‌های هوشمند، تبلت‌ها، پخش‌کننده‌های موسیقی، کتابخوان‌های الکترونیک و … نیز گسترش پیدا کرده است. کاربر در واسط‌های کاربری گرافیکی برای تعامل با دستگاه معمولا اجزای گرافیکی مربوطه را دستکاری می‌کند. رایج‌ترین اجزایی که در GUI ها وجود دارند عبارتست از: پنجره‌ها (Window)، آیکن‌ها (Icon)، منوها (Menu) و نشانگر (پوینتر یا Pointer). این چهار المان به اختصار با عنوان WIMP شناخته می‌شوند. در چنین قالبی از یک ابزار اشاره‌گر مانند ماوس به عنوان دستگاه ورودی استفاده می‌شود. با گسترش مفهوم واسط کاربری گرافیکی به دستگاه‌های لمسی گونه‌ی دیگری از GUI ها با قالبی موسوم به Post-WIMP شکل گرفتند که امکان تعامل چندانگشتی با صفحه نمایش و انجام حرکاتی نظیر نیشگون گرفتن (Pinch)، چرخش (Rotate) و … با کمک آن میسر شد (نمونه‌ی رایج این واسط‌های کاربری را در دستگاه‌های لمسی مجهز به سیستم عامل Android و iOS مشاهده می‌کنید).

شاید تعجب کنید اگر بدانید واسط‌های کاربری گرافیکی امروزی مدیون تلاش‌های شرکت زیراکس (Xerox) در دهه‌ی 1970 میلادی هستند. رایانه‌ی Apple Lisa که در سال 1983 توسط شرکت اپل روانه بازار شد به عنوان یکی از نخستین رایانه‌های شخصی مجهز به GUI شناخته می‌شود.

GUI در برابر CLI

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

شیوه‌نامه‌ آبشاری Cascading Style Sheet – CSS

شیوه‌نامه‌ آبشاری یا Cascading Style Sheet – CSS چیست؟

شیوه‌نامه‌ آبشاری یا Cascading Style Sheet (به اختصار CSS)، یک زبان طراحی استایل است که به منظور تعیین و توصیف ظاهر و نحوه‌ی نمایش یک سندِ نوشته شده با زبان‌های نشانه‌گذاری به کار می‌رود.

معمولا از CSS برای تعیین ظاهر و جلوه‌ی صفحات وب (فونت متون، رنگ و میزان حاشیه‌ی المان‌ها و …) استفاده می‌شود. با اینحال می‌توان از این زبان برای هر نوع سند XML (از جمله SVG و XUL) نیز استفاده نمود. CSS در کنار HTML و JavaScript از جمله زبان‌های اصلی در دنیای امروزی وب به شمار می‌رود که در اکثر وبسایت‌ها برای ایجاد صفحات جذاب و زیبا به کار می‌رود. علاوه بر این در طراحی واسط کاربری اپلیکیشن‌های وب و حتی بسیاری از اپلیکیشن‌های موبایلی، CSS یک راه حل مناسب به شمار می‌رود.

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

ساختار CSS

هر شیوه‌نامه (یا استایل شیت) شامل مجموعه‌ای از قوانین (Rule ها) می‌باشد. هر قانون نیز دارای یک یا چند گزینشگر (Selector) است که مشخص می‌کند می‌خواهید چه المان یا المان‌هایی را استایل‌بندی کنید. در هر قانون بخش دیگری به نام Declaration نیز وجود دارد که در میان آکولاد قرار گرفته و برای تعیین ویژگی‌های استایل، مورد استفاده قرار می‌گیرد. این بخش شامل جفت‌هایی به صورت “مقدار:نام ویژگی” می‌باشد که با استفاده از سمی کلن (یا ;) از یکدیگر جدا می‌شوند.

به عنوان مثال در نمونه‌ی زیر که برای استایل‌بندی یک صفحه وب نوشته شده است، تمامی المان‌های p با اندازه فونت 12 پیکسل و رنگ آبی به نمایش در می‌آیند:

p {
     color: blue;
     font-size: 12px;
 }

به سه روش متفاوت می‌توان با استفاده از سی اس اس نحوه فرمت بندی المان‌های HTML را تعیین نمود:

  • اینلاین یا درجا (Inline): در این شیوه با کمک خصوصیتی به نام Style، می‌توانیم به یک المان معین HTML، استایل منحصربفردی را اختصاص دهیم. در این حالت مطابق نمونه زیر تنها کافی است جفت “مقدار:نام ویژگی” ذکر شود:
<h1 style="color: green;"> My Heading Title </h1>
  • داخلی (Internal): در این روش، می‌توان با استفاده از تگ Style در بخش head، المان‌های مختلف موجود در یک صفحه‌ی HTML را استایل بندی نمود.
  • خارجی (External): در این روش، محتوای سند HTML از نحوه‌ی نمایش آن مجزا می‌شود. به عبارت بهتر با قرار دادن استایل در یک فایل جداگانه با پسوند css و سپس متصل کردن آن به صفحات HTML، می‌توان ظاهر چندین صفحه را همسان‌سازی و کنترل نمود.

مزایای CSS

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

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

سطوح مختلف CSS

اولین مستندات رسمی سی اس اس با عنوان CSS level 1 (به اختصار CSS 1)، در سال 1996 توسط کنسرسیوم وب جهان گستر (W3C) منتشر شد که از قابلیت‌هایی چون تعیین خواص فونت، رنگ متن، پس‌زمینه، خصوصیات متون نظیر فاصله‌ی بین خطوط و اندازه‌ی متن، تراز متن و تصویر، حاشیه، قاب و … پشتیبانی می‌کرد. CSS 2 و CSS 3 نیز با افزودن قابلیت‌هایی نظیر سایه‌دهی متن، z-order، تعیین موقعیت ثابت، نسبی و مطلق، قابلیت متحرک سازی و … به تکمیل سطح اول پرداختند.

نمونه ای از قوانین CSS برای تعیین ظاهر یک صفحه وب
نمونه ای از قوانین سی اس اس برای تعیین ظاهر یک صفحه وب