یک Container ناهمگن حقیقی در C++

C++ از جمله‌ی زبان‌های Statically-Typed است؛ همین امر مسبب شده است که بر خلاف زبان‌هایی همچون Python امکان ذخیره مقادیری از چندین نوع داده‌ی مختلف در یک Container ممکن نباشد. در این مقاله به بررسی شیوه‌هایی برای دور‌زدن این محدودیت خواهیم پرداخت.

24 بهمن‌ماه 1396
محمد فرهمند

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

آیا می‌توان متغیرهایی با بیش از یک نوع داده را درون std::vector ذخیره کرد؟

جواب تغییر ناپذیر، رسمی و نهایی این سوال خیر است. C++ زبانی Statically-Typed است و Containerهای آن تنها می‌توانند مقادیری از یک نوع داده را ذخیره کنند. اما راه‌هایی برای دورزدن این محدودیت وجود دارد که در این مقاله به بررسی یکی از آن‌ها خواهیم پرداخت.

نگاهی به سیستم‌عامل KaOS

KaOS از جمله توزیع‌های کمتر شناخته‌شده لینوکس است که با تمرکز بر یک دسکتاپ (KDE)، یک معماری (x86-64) و یک مجموعه ابزار (Qt) از صفر و بر پایه Kernel لینوکس طراحی شده است.

25 مرداد‌ماه 1396
محمد فرهمند

سیستم‌عامل KaOS یک سیستم‌عامل کم‌نظیر است که با تمرکز بر دسکتاپ KDE طراحی شده است. بر خلاف عموم سیستم‌عامل‌های لینوکسی کمتر شناخته‌شده که تنها یک YAUD (Yet Another Ubuntu Derivative) هستند KaOS از صفر و بر پایه Kernel لینوکس طراحی و برنامه‌نویسی شده است و تمرکز آن بر دسکتاپ KDE، معماری x86-64 و مجموعه Qt آن را از سایر توزیع‌های موجود لینوکس مجزا می‌سازد. در این مقاله قصد بررسی این سیستم‌عامل و مزایا و معایب آن را داریم.

ایجاد فلش‌مموری Bootable با Rufus

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

9 مرداد‌ماه 1396
محمد فرهمند

USB Drive‌ها مانند فلش‌مموری‌ها در مقابل Optical Mediaها همچون CD‌ها و DVDها، از مزایایی همچون Random Access سریع‌تر برخوردارند. بسیاری از مین‌بورد‌ها از قابلیتی به نام USB Boot برخوردارند. این قابلیت این امکان را فراهم می‌سازد که از فلش‌مموری درست مانند یک دیسک بوتیبل مانند دیسک نصب ویندوز یا دیگر سیستم‌عامل‌ها و یا دیسک‌های پارتیشن‌بندی استفاده کرد. اگرچه ایجاد یک فلش‌مموری بوتیبل به سادگی کپی‌کردن محتویات دیسک به فلش نیست. در این مقاله به بررسی شیوه ایجاد یک USB Bootable Drive خواهیم پرداخت.

استفاده از فریم‌ورک Qt با CMake (در CLion)

IDE قدرت‌مند CLion از روش مستقیمی برای استفاده از فریم‌ورک Qt در آن بهره‌مند نیست زیرا با qmake همخوانی نداشته و از سیستم مدیریت Build متن‌باز CMake استفاده می‌کند. در این مقاله به شیوه افزودن Qt به CMake پروژه در CLion خواهیم پرداخت.

11 تیر‌ماه 1396
محمد فرهمند

فریم‌ورک Qt را می‌توان قدرتمند‌ترین و قدیمی‌ترین فریم‌ورک طراحی GUI با عمری بالغ بر 22 سال در زبان C++ دانست. CLion یکی از محصولات شرکت JetBrains و IDE برای زبان C/C++ بر پایه IntelliJ است که هر روزه بر محبوبیت آن افزوده می‌شود. با این وجود تاکنون هیچ افزونه‌ی رسمی‌ای برای استفاده از فریم‌ورک Qt در CLion وجود ندارد. CLion از سیستم Build موسوم به CMake استفاده می‌کند اما Qt از qmake برای Build پروژه بهره می‌گیرد. با این وجود امکان شبیه‌سازی qmake در CMake وجود دارد.

ترمیم Boot سیستم با Boot Repair

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

7 تیر‌ماه 1396
محمد فرهمند

Boot Repair ابزاری ساده برای رفع مشکلات متداول در بوت سیستم است. این ابزار معمولا با نصب دوباره GRUB دسترسی به تمامی سیستم‌عامل‌های موجود به روی رایانه شما را باز می‌گرداند. این ابزار گزینه‌های دیگری نیز برای پشتیبان‌گیری از Partition Table و BootSector‌ها، پیکربندی GRUB و kernel، حذف کلی GRUB و … نیز دارد که هدف این مقاله نیستند.

نوشتن یک Shell به زبان C

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

30 اردیبهشت‌ماه 1396
محمد فرهمند

محیط دستور نویسی POSIXـی یکی از محبوب‌ترین ابزار‌های سیستم‌عامل‌های خانواده Linux است. اگرچه این برنامه متشکل از ده‌ها هزار خط دستور است، ایده کلی پشت آن نسبتا ساده است. در این مقاله می‌خواهیم یک محیط دستور‌نویسی ساده را با زبان C پیاده کنیم.

الگوریتم جابجایی مقادیر بدون متغیر موقتی

معمولا وقتی نیاز به جابجایی مقدار دو متغیر مانند x و y داریم متغیر سومی با نامی همچون temp ایجاد کرده و از آن استفاده می‌کنیم. آیا راه دیگری برای جابجایی مقادیر متغیرها بدون متغیر سومی وجود دارد؟!

26 آبان‌ماه 1395
محمد فرهمند

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

آموزش نصب Ubuntu در کنار ویندوز 8 یا 10

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

28 مهر‌ماه 1395
محمد فرهمند

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