بایگانی دسته بندی ها: نرم‌افزار

سمت کلاینت Client-Side

سمت کلاینت یا Client-Side چیست؟

سمت کلاینت (Client-Side) اصطلاحی در مورد اعمالی است که در یک ارتباط کلاینتسرور توسط کلاینت انجام می‌شود.

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

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

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

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

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

پرکردن خودکار Autofill

پرکردن خودکار یا Autofill چیست؟

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

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

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

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

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

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

ردیاب فعالیت Activity Tracker

ردیاب فعالیت یا Activity Tracker چیست؟

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

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

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

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

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

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

ردیاب فعالیت Activity Tracker
ردیاب فعالیت Fitbit Charge 2

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

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

ترتیب عمقی Z-order

ترتیب عمقی یا Z-order چیست؟

ترتیب عمقی (Z-order) به ترتیب قرار گرفتن اشیاء روی یکدیگر در یک محیط گرافیکی رایانه ای گفته می‌شود. به عبارت بهتر Z-order در مورد اشیائی که می‌توانند هم پوشانی داشته باشند مشخص می‌کند کدام شئ روی شئ دیگر قرار می‌گیرد.

همانطور که می‌دانید در فضای سه بعدی، سه محور X (چپ و راست)، Y (بالا و پایین) و Z (عقب و جلو) قابل تصور است. اصطلاح Z-order در واقع به نحوه قرارگیری اشیا در راستای محور Z اشاره می‌کند. اگر ترتیب عمقی برای شئ A نسبت به شئ B مقدار بیشتری داشته باشد در صورتی که این دو شئ با یکدیگر هم پوشانی جزئی یا کامل داشته باشند A روی B قرار می‌گیرد و در نمایش دو بعدی، بخشی از شئ B یا تمام آن از دید کاربر پنهان می‌شود.

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

ترتیب قرارگرفتن اشکال روی هم در یک نرم افزار ویرایشگر تصویر مبتنی بر المان های برداری براساس همین مفهوم مشخص می‌شود. در اغلب این ویرایشگرها حین ترسیم اشیا، شئ تازه ترسیم شده روی اشیاء پیشین قرار می‌گیرد و کاربر می‌تواند با روش‌های مشخصی این ترتیب را تغییر دهد. رایج‌ترین این روش‌ها استفاده از دستورات مخصوصی مانند Bring to Front (برای قرار دادن شئ روی مابقی اشیا) و Send to Back (برای قرار دادن شئ پشت اشیاء دیگر) می‌باشد (این دستورات معمولا در منوی زمینه‌ای اشیا از طریق راست کلیک کردن روی آن‌ها نمایان می‌شود). علاوه بر این، تعیین ترتیب عمقی برای اشیاء موجود در اپلیکیشن های طراحی سه بعدی و هم‌چنین المان های موجود در صفحات HTML (با کمک تعیین مقدار z-index در قوانین CSS) امکان‌پذیر است.

ترتیب عمقی Z-order
مقدار Z-order برای شکل شماره یک نسبت به دو شکل دیگر مقدار بزرگتری است و برای شکل شماره دو کوچکترین مقدار را داراست. شیئی که مقدار ترتیب عمقی بزرگتری دارد روی مابقی اشیاء قرار می‌گیرد.
ترتیب عمقی Z-order
دستورات Bring To Front و Send To Back در نرم افزار Microsoft Word 2016 برای تغییر Z-order اشکال

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

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

تکمیل خودکار Autocomplete

تکمیل خودکار یا Autocomplete چیست؟

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

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

کاربردها و مزایای Autocomplete

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

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

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

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

تکمیل خودکار Autocomplete
خاصیت تکمیل خودکار در نوار آدرس مرورگر Mozilla Firefox – کاربر، حروف wiki را در نوار آدرس تایپ کرده است و بخش pedia.org که به صورت انتخاب شده به نوار آدرس افزوده شده است همراه با لیستی از پیشنهادات که در پایین نوار آدرس نمایان است به دلیل وجود همین ویژگی تکمیل خودکار است.

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

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

واسط برنامه نویسی کاربردی Application Programming Interface – API

واسط برنامه نویسی کاربردی یا Application Programming Interface – API چیست؟

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

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

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

نمونه‌هایی از API ها

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

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

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

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

پیام رسانی فوری Instant Messaging – IM

پیام رسانی فوری یا Instant Messaging چیست؟

پیام رسانی فوری (Instant Messaging به اختصار IM) به نوعی گفتگوی برخط (Online) گفته می‌شود که طی آن متون با کمک اینترنت یا سایر شبکه‌های رایانه‌ای به صورت بلادرنگ منتقل می‌شود. در نرم‌افزارهای پیام رسان فوری (Instant Messenger) معمولا کاربر پس از نوشتن متن موردنظر خود با کمک گزینه‌ای به نام ارسال (Send)، پیام خود را برای مخاطب یا مخاطبین ارسال می‌کند.

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

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

ویژگی‌ها و امکانات سیستم‌های پیام رسانی فوری

از نظر فنی، پیام رسانی فوری می‌تواند به شکل همتا به همتا (Peer-to-Peer) یا مبتنی بر مدل کلاینتسرور (Client-Server) پیام کاربران را مبادله نماید. در پیام رسان‌های نوع اول، بدون وجود هیچ واسطه‌ای پیام به صورت مستقیم از فرستنده برای گیرنده ارسال می‌شود. اما در حالت دوم، پیام ابتدا برای یک سرور ارسال می‌شود و سپس سرور آن را برای گیرنده ارسال می‌کند. در این حالت در کنار فوایدی نظیر امکان ارسال پیام برای کاربرانی که هم اکنون آنلاین نیستند و نگه‌داری پیام‌ها در مکانی ایمن، بحث اعتماد کاربران به سرور نیز به موضوعی تأمل‌برانگیز تبدیل می‌شود.

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

مسائل امنیتی در پیام رسانی فوری

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

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

پیام رسان‌های رایج

اسکایپ (Skype)، واتس اپ (Whatsapp)، فیس بوک مسنجر (Facebook Messenger)، Windows Live Messenger، گوگل تاک (Google Talk)، تلگرام (Telegram)، AIM، وی چت (WeChat)، یاهو مسنجر (Yahoo Messenger)، لاین (Line)، وایبر (Viber) و … از جمله مشهورترین پیام‌رسان‌های فوری هستند که دارای قابلیت‌ها و امکانات متنوع و قدرتمندی هستند.

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

پیام رسانی فوری Instant Messeaging
بخش‌های گفتگوی متنی و ویدیویی در پیام رسان فوری اسکایپ

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

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

پایگاه داده رابطه ای 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): حاصل این عملگر دوتایی تنها شامل ویژگی‌هایی از رابطه اول خواهد بود که در رابطه دوم وجود ندارند. تاپل‌های رابطه حاصل نیز شامل مقادیر این ویژگی‌ها در تاپل‌هایی از رابطه اول خواهد بود که ترکیب آن‌ها با تمام تاپل‌های رابطه دوم در رابطه اول وجود داشته باشد.

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

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

ماشین مجازی Virtual Machine

ماشین مجازی یا Virtual Machine چیست؟

ماشین مجازی (Virtual Machine به اختصار VM) یک همسان‌سازی از سیستم‌های رایانه‌ای است. در واقع ماشین‌های مجازی می‌توانند رفتار و عملکرد یک رایانه فیزیکی را تقلید کنند. معمولا این همسان سازی حاصل ترکیبی از نرم‌افزار و سخت‌افزارهای ویژه می‌باشد.

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

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

به نرم‌افزار یا سخت‌افزاری که امکان ایجاد و اجرای یک ماشین مجازی را فراهم می‌کند Hypervisor (هایپروایزر) گفته می‌شود. سیستم فیزیکی که ماشین مجازی روی آن اجرا می‌شود ماشین میزبان (Host Machine) نامیده می‌شود و هر ماشین مجازی را نیز یک ماشین مهمان (Guest Machine) می‌نامند.

انواع ماشین‌های مجازی و کاربردهای آن‌ها

شاید بتوان گفت محرک اصلی برای شکل‌گیری ماشین‌های مجازی، تمایل کاربران به اجرای همزمان چند سیستم عامل بوده است. ماشین‌های مجازی سیستمی (System Virtual Machine) که تحت عنوان ماشین‌های با مجازی‌سازی کامل (Full Virtualization) نیز شناخته می‌شوند با تقلید رفتار یک ماشین واقعی می‌توانند یک سیستم عامل کامل را اجرا کنند. در این مدل با روش‌های مختلف و بهره‌گیری از تکنیک‌های اشتراک زمانی (Time Sharing) امکان ایجاد ماشین‌های مجازی مجزا (مدیریت و اشتراک منابع سخت‌افزاری یک ماشین واقعی مابین VM ها) فراهم می‌شود. این نوع ماشین‌های مجازی را می‌توان توسعه‌ای از حافظه مجازی (Virtual Memory) به شمار آورد و در کنار کاربردهایی همچون امکان اجرای همزمان چند سیستم عامل، اشکال‌زدایی آسانتر و بوت سریعتر هنگام توسعه یک سیستم عامل، به منظور تست نرم‌افزارهای در حال توسعه روی سیستم‌های مختلف و هم‌چنین نصب نرم‌افزارهایی که هنوز در مراحل آزمایشی به سر می‌برند یا عملکردشان به طور کامل شناخته شده نیست نیز استفاده می‌شود. گفتنی است مجازی سازی با کمک سخت افزار (Hardware-assisted Virtualization) رویکردی است که در آن امکان مجازی سازی کامل و کارامد با بهره‌گیری از قابلیت‌های سخت‌افزار میزبان (به خصوص پردازنده) مهیا می‌شود. VMware Workstation و Oracle VM VirtualBox دو نمونه از مشهورترین هایپروایزرهای این دسته به شمار می‌روند.

ماشین مجازی فرایندی (Process Virtual Machine) که به ماشین مجازی اپلیکیشن نیز مشهور است گونه دیگری از VM هاست که مشابه یک اپلیکیشن معمولی در سیستم عامل رایانه میزبان اجرا می‌شود. هدف از طراحی این ماشین‌ها ایجاد محیطی مستقل از پلتفرم است که امکان اجرای یک برنامه روی هر پلتفرمی را فراهم می‌آورد. این VM ها بر اساس یک مفسر ساخته می‌شوند و از مشهورترین آن‌ها می‌توان به ماشین مجازی جاوا (Java Virtual Machine) و Common Language Runtime اشاره نمود که به ترتیب برای اجرای برنامه‌های جاوا و برنامه‌های مبتنی بر .Net Framework طراحی شده‌اند.

ماشین مجازی Virtual Machine
نمایی از یک ماشین مجازی در حال اجرای Windows 7 و نرم افزار Mozilla Firefox – همانطور که مشاهده می‌کنید این ماشین مجازی روی Windows 10 در حال اجراست.

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

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

رها افزار Abandonware

رها افزار یا Abandonware چیست؟

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

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

دلایل رایج برای تبدیل شدن یک محصول به رها افزار

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

مشکلات ناشی از رها شدن یک نرم افزار

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

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

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

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