<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی رشیدی</title>
        <link>https://virgool.io/feed/@Codenegaar</link>
        <description>توسعه‌دهنده، مدیر پروژه، دانشجوی مهندسی کامپیوتر. از کرمان، گذران در یزد.</description>
        <language>fa</language>
        <pubDate>2026-04-14 22:20:00</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/56833/avatar/EAsP5S.png?height=120&amp;width=120</url>
            <title>علی رشیدی</title>
            <link>https://virgool.io/@Codenegaar</link>
        </image>

                    <item>
                <title>رفع مشکلات اتصال Magic Remote تلویزیون‌های LG</title>
                <link>https://virgool.io/@Codenegaar/%D8%B1%D9%81%D8%B9-%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-magic-remote-%D8%AA%D9%84%D9%88%DB%8C%D8%B2%DB%8C%D9%88%D9%86-%D9%87%D8%A7%DB%8C-lg-fhz2ye09msfv</link>
                <description>شاید نوشتن این متن زیاد به زمینه کاری من مربوط نباشه، اما مشکلی بود که چند روز برای تلویزیون ما پیش اومد و با کلی جست‌وجو به راه حلش رسیدم! عدم اتصال ریموت کنترل مخصوص تلویزیون‌های هوشمند LG یا همون Magic Remote. می‌خوام توی این متن در مورد راه‌حل‌هایی که می‌تونین به ترتیب امتحان کنین تا نتیجه بگیرین توضیح بدم.این کنترل چطوری کار می‌کنه؟مجیک ریموت به دو صورت به تلویزیون متصل می‌شه و فرمان می‌ده، یکی از طریق مادون قرمز یا IR که مثل ریموت‌های عادی هست اما مشخصا تمام قابلیت‌های ریموت (مثل میکروفون و ماوس) رو به شما ارائه نمیده، و یکی هم از طریق بلوتوث که سریع‌تر هست و قابلیت‌های اضافی ریموت با اتصال بلوتوث فراهم می‌شن.مرحله اول: باتری؟شاید به نظر بیاد نیاز به گفتنش نیست ولی اتصال بلوتوث این ریموت‌ها شدیدا وابسته به باتری هست و اگر ضعیف بشه، توی اتصالش مشکلاتی پیش میاد. وقتی اتصال بلوتوث قطع می‌شه شما صرفا یک ریموت با اتصال مادون قرمز دارین و نمیتونین از ماوس یا میکروفون دیگه استفاده کنین. پس در اولین مرحله از پر بودن باتری مطمئن شین و یادتون نره که باتری باکیفیت روی ریموت بذارین، اقتصادی‌تره :)مرحله دوم: رجیستر کردن مجدد ریموتاگر باتری مشکلی نداره، احتمالا توی اتصال ریموت به تلویزیون مشکلی وجود داره. سعی کنین که از اول ریموت رو با تلویزیون رجیستر کنین. برای این کار، کلید Home (یا همون Recents) و Back روی ریموت رو همزمان به مدت ده ثانیه نگه‌دارین. دکمه خاموش/روشن کردن روی ریموت شروع به چشمک‌زدن می‌کنه و بعد با فشار دادن کلید OK برای چند بار، ریموت مجددا با تلویزیون رجیستر میشه.مرحله سوم: اطمینان از نبود مزاحممعمولا مشکلات ریموت با رجیستر کردن حل میشد اما این بار برای من این اتفاق نیفتاد و همیشه خطای Bluetooth Service needs to be initialized رو دریافت می‌کردم. یک راه حل که پیشنهاد شده بود و البته برای من جواب نداد، اطمینان از روشن نبودن سایر دستگاه‌های بلوتوث بود که ممکنه برای اتصال ریموت به تلویزیون مزاحمت ایجاد کنن.مرحله چهارم: خاموش کردن Quick Startگاهی اوقات ویژگی Quick Start ممکنه که باعث این مسئله بشه. از طریق Settings -&gt; General -&gt; Quick Start (+)اون رو غیر فعال کنین، تلویزیون رو خاموش و روشن کنین و مجددا اقدام به رجیستر کردن ریموت کنین.مرحله پنجم: ریست سنگین‌تراگر مراحل قبلی جوابگو نبودن، این روش رو امتحان کنین که یه بار برای من کار کرد:تلویزیون رو خاموش کنینباتری‌های ریموت رو بردارینیک دقیقه صبر کنینتلویزیون رو با کلید روی خود تلویزیون روشن کنینباتری‌های ریموت رو سرجاشون بذارین و با زدن دکمه OK ببینین که رجیستر می‌شه یا خیرمرحله ششم: ریست ماژول سخت‌افزاریاین یکی از کم‌یاب‌ترین ترفندها بود که من بعد از کلی جست‌وجو پیدا کردم. دفعه آخر ضمن متصل نشدن ریموت، متوجه شدم که وای‌فای تلویزیون هم کار نمی‌کنه و توی تنظیمات پیامی مربوط به خاموش بودن وای‌فای نمایش داده میشه، در حالی که اصلا گزینه‌ای برای روشن یا خاموش کردنش نیست! این مشکلی هست که توی تلویزیون‌های هوشمند LG پیش میاد و برای حل اون، باید این ماژول‌ها رو ریست کنین.برای این کار، مراحل زیر رو دنبال کنین:تلویزیون رو خاموش کنینباتری‌های ریموت رو جدا کنینتمام سیم‌های متصل به تلویزیون رو جدا کنین (نمی‌دونم واقعا الزامی باشه یا نه)تلویزیون رو از برق جدا کنیندکمه خاموش/روشن تلویزیون (زیر پنل تلویزیون) رو ۱۵ ثانیه نگه‌دارین (بله، میدونم تلویزیون تو برق نیست. مدار تلویزیون یه باتری داره)بعد مجددا تلویزیون رو به برق وصل کنین، باتری‌های ریموت رو سر جاشون قرار بدین و تلویزیون رو با ریموت روشن کنینمی‌تونم بگم که اگر تمام راه‌حل‌های بالا جواب نداد، احتمالا باید به گارانتی مراجعه کنین :)</description>
                <category>علی رشیدی</category>
                <author>علی رشیدی</author>
                <pubDate>Wed, 14 Jul 2021 14:57:36 +0430</pubDate>
            </item>
                    <item>
                <title>یادداشت کوتاه: عملیات تکرارشونده در Postgres</title>
                <link>https://virgool.io/@Codenegaar/%DB%8C%D8%A7%D8%AF%D8%AF%D8%A7%D8%B4%D8%AA-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%D8%B4%D9%88%D9%86%D8%AF%D9%87-%D8%AF%D8%B1-postgres-sbeyyddetyfj</link>
                <description>مدتی بود که به یه چالش برخورده بودیم، می‌خواستیم در پایان هر روز، یک عملیات آپدیت روی دیتابیس انجام بدیم. طبق بررسی‌ای که کردم، در سیستم‌های دیتابیس دیگه مثل MySQL این کار به سادگی امکان‌پذیر هست، چون می‌تونیم triggerهایی بنویسیم که در بازه‌های زمانی ثابتی اجرا بشن، اما متاسفانه در Postgres این طور نیست.راه حل؟ از cron کمک بگیریم.یک دیتابیس نمونهبیاین یه دیتابیس نمونه ایجاد کنیم تا چیزی که تو ذهنمه رو روی اون انجام بدیم. با تغییر کاربر جاری به postgres دسترسی کامل به دیتابیس‌ها پیدا می‌کنم تا بتونم دیتابیس و کاربر جدید بسازم:sudo -iu postgresحالا یه کاربر جدید می‌سازم، بعد یه دیتابیس، و دسترسی کامل اون دیتابیس رو به اون کاربر میدم. می‌خوام یکم به چالش بکشیم خودمون رو! اول با اتصال به دیتابیس و فراخوانی شلِ postgres شروع می‌کنیم و بعد کوئری می‌زنیم:psqlCREATE USER example WITH PASSWORD &#039;examplePass&#039;;CREATE DATABASE example_db;GRANT ALL PRIVILEGES ON DATABASE example_db TO example;حالا بیاین یه جدول ایجاد کنیم. کاری به ارتباطات و کلیدهای خارجی ندارم. فقط شِمای جدول برام مهمه. البته قبلش بیاین به عنوان کاربری که ایجاد کردیم به دیتابیس وصل شیم. دو بار ctrl + d رو بزنین تا به شل خودتون، به عنوان کاربر عادی برگردین، و:psql -U example example_dbحالا جدول رو بسازین:CREATE TABLE membership ( 
    user_id BIGINT, 
    channel_id BIGINT, 
    expiration_date TIMESTAMPTZ, 
    active BOOL, 
    PRIMARY KEY (user_id, channel_id) 
);سناریوفرض کنین دیتای زیر رو داریم. ما تاریخ انقضای عضویت هر کاربر رو ساعت ۲۳:۵۹ شب آخرین روز اشتراک ذخیره می‌کنیم:user_id | channel_id |      expiration_date      | active  
---------+------------+---------------------------+-------- 
       1 |          1 | 2021-04-16 23:59:00+04:30 | t 
       2 |          1 | 2021-04-17 23:59:00+04:30 | tکاری که می‌خوایم بکنیم اینه که، هر بامداد ساعت ۰۰:۰۵ چک کنیم و افرادی که عضویتشون منقضی شده رو از حالت active در بیاریم.راه حلاول بیاین ببینیم کوئری که باید برای انجام این تغییر بزنیم چیه. من کوئری رو بر اساس تاریخ جاری می‌زنم، یعنی کاربرانی که تاریخ عضویتشون تا قبل از تاریخ جاری بوده رو حذف می‌کنم. UPDATE membership        
SET active=false 
WHERE expiration_date &lt; NOW();چون الان که دستور رو اجرا کردم ۱۷ آوریل هست، ردیف دوم (عضویت کاربر با شناسه ۱) از حالت active خارج شد. حالا که کوئری تست شده، دوباره عضویتش رو فعال می‌کنم تا بتونم بازم تست کنم. پس فرض کنین اتفاقی نیفتاده :)خب به نظر میاد ما باید این کوئری رو هر بامداد ساعت ۰۰:۰۵ اجرا کنیم، اما چطوری؟ این‌جا ما از ابزار cron استفاده می‌کنیم. cron به صورت یک سرویس اجرا میشه و یک‌سری کارهای تکراری رو به صورت خودکار انجام میده. قبل از اینکه این فعالیت تکراری رو برای انجام ثبت‌کنیم، بیاید ایجادش کنیم. ما هر شب ساعت ۰۰:۰۵ باید چه کاری انجام بدیم؟اول اسکریپت آپدیت دیتابیس رو توی یک فایل ذخیره می‌کنیم، توی یه مسیر مناسب. مثلا remove-expired-memberships.sql/~ . می‌تونین همین الان هم این اسکریپت رو تست کنین:psql -f ~/remove-expired-memberships.sql -U example example_dbممکنه روی سیستم لوکال به خاطر سطوح دسترسی و گروهی که کاربر جاری عضوش هست، از شما رمزی پرسیده نشه، اما در محیط پروداکشن، شما باید رمز وارد کنین. ساعت دوازده شب چطور برم پای سیستم رمز وارد کنم؟ تازه وقتی cron این تسک رو اجرا می‌کنه شما اصلا امکان وارد کردن رمز رو ندارین. Postgres از یه فایل به اسم pgpass. استفاده می‌کنه که توی این فایل ما می‌تونیم این اطلاعات رو وارد کنیم. در صورتی که مثل دستور بالا، رمزی ارائه نشده باشه، رمز از این فایل خونده میشه.پس فایل زیر رو ایجاد کنین:touch ~/.pgpassو داخلش این خط رو وارد کنین:localhost:5432:example_db:example:examplePassدر نهایت، دسترسی به فایل رو تغییر بدین که هر کسی نتونه بخونه:chmod 0600 ~/.pgpassحالا می‌تونیم یک cron job جدید ایجاد کنیم. دستور زیر رو وارد کنین تا شروع به ویرایش فایل cron مربوط به یوزر خودتون کنین. اگر قبلا این کار رو انجام نداده باشین، از شما می‌پرسه که می‌خواین از چه ادیتوری استفاده کنین:crontab -eخط زیر رو در انتهای فایل وارد کنین:05 00 * * * psql -f ~/remove-expired-memberships.sql -U example example_dbمی‌بینین که قبل از دستوری که می‌خوایم اجرا کنیم، ۵ تا فیلد وارد شده. این فیلدها از چپ به راست نشون‌دهنده دقیقه، ساعت، روز ماه، ماه، و روز هفته هستن. چون حفظ‌کردنش سخته، می‌تونین از crontab.guru استفاده کنین تا حالت‌های مختلف رو خیلی راحت ایجاد کنین.کار ما تمومه! چند تا سطر وارد کنین و فردا تست کنین که غیر فعال شده باشن، یا خیلی ساده، ساعت و دقیقه‌ای که تسک اجرا میشه رو به پنج دقیقه آینده تغییر بدین که همین الان از درستیش مطمئن بشین :)</description>
                <category>علی رشیدی</category>
                <author>علی رشیدی</author>
                <pubDate>Sun, 18 Apr 2021 09:58:02 +0430</pubDate>
            </item>
                    <item>
                <title>تجربه من از Sequelize - قسمت اول: ORM چیست</title>
                <link>https://virgool.io/@Codenegaar/sequelize-experience-gf0bjkquutse</link>
                <description> ما برنامه‌نویس‌ها همیشه به دنبال سادگی و پیداکردن اصولی در کد هستیم که باعث می‌شن حس بهتری نسبت به کدمون داشته باشیم. بوهای بد توی کد رو پیدا می‌کنیم و اگه نتونیم رفعشون کنیم، هر بار که به کد نگاه می‌کنیم حس می‌کنیم یکی داره با چکش خیلی آروم اما مداوم می‌کوبه توی سرمون. یکی از چیزایی که ما رو اذیت می‌کرد کار با دیتابیس در نرم‌افزارها بود.بیایید به عنوان یه سری برنامه‌نویس قبول کنیم که زبان دیتابیس‌ها با زبان ما فرق داره. یعنی آره، اون هم یه زبان برنامه‌نویسی به حساب میاد، اما بیخیال، اون که نمیتونه از یه مرزی پاشو فراتر بذاره. و می‌دونین وقتی یک زبان با زبان ما کمی فرق داره چی ما رو اذیت می‌کنه؟ قاطی کردنشون. ما برای کار با دیتابیس باید وسط کدمون یک رشته می‌ساختیم و توی اون شروع می‌کردیم عبارات SQL نوشتن. بعدا تکنیکی یاد گرفتیم به اسم DAO (Data Access Object) و گفتیم این شکلی تمام کد SQL که نیاز داریم رو توی یک کلاس می‌نویسیم و استفاده مجدد می‌کنیم، اما این واقعا تمام کد SQLی هست که نیاز داریم؟استفاده از DAOها در جاواپاسخ واضح بود، نه. اما این روش با این حال کارراه‌انداز بود. حالا یک مشکل جدید پیش می‌اومد، اگر توی SQL اشتباه کنم چی؟ اگر بخوام یه کار خاص انجام بدم و بخوام تغییری توی query بدم چی؟ اصلا این DAOها که دارن یه کار ثابت انجام میدن، چرا یکی نمیره این‌ها رو بنویسه تا من برای هر data class که تعریف می‌کنم مجبور نباشم یه عالمه کد تکراری بنویسم؟ همه این سوالات منجر شد به ظهور ORMها.تمام این مشکلاتی که به ذهن ما رسید (و حتی بعضی‌ها که اینجا به ذهنمون نرسید) با ORMها حل شد. یک ORM (Object-relational mapping) به ما کمک می‌کنه که (تقریبا) بدون درگیرشدن با SQL بتونیم با دیتابیس کار کنیم. به طور خلاصه، این ابزارها نگاشتی هستن بین طرز فکر شیء‌گرای ما (آبجکت‌ها) و چیزی که دیتابیس می‌شناسه (رابطه‌ها). استفاده از DAO در جاوااسکریپت. خیلی ساده علی‌ها رو پیدا می‌کنیم، رشیدی‌ها رو جدا می‌کنیم و توسعه‌دهنده‌شون می‌کنیم!همون طور که توی کد بالا می‌بینین، این ابزارها خیلی راحت با کد ما جور میشن. اگر با MongoDB کار کرده باشین، یک احساس آشنایی به شما دست میده. یک ORM به ما اجازه میده تا مدل‌هایی رو تعریف کنیم، که این مدل‌ها در واقع قالب داده‌ای هستن که ما قصد داریم در یک جدول ذخیره کنیم. پس هر مدل معادل یک جدول در دیتابیس هست. کار دیگری که ORM انجام میده، ارائه متدها و کلاس‌هایی هست که روی این مدل‌ها کار می‌کنن و می‌تونن اون‌ها رو ایجاد کنن، از دیتابیس پرس‌و‌جو کنن، ویرایش کنن یا حذف کنن (عملیات CRUD). و در نهایت، به ما این امکان رو میدن که روابط بین مدل‌ها رو تعریف کنیم و بتونیم توی کد از اون‌ها استفاده کنیم. مثلا بگیم که یک Person، می‌تونه چند Project داشته باشه و در کد با استفاده از یک متد getProjects تمامی پروژه‌های یک فرد رو بگیریم، زیبا نیست؟از اونجایی که من برای توسعه MVP محصول و سرور اون از Node.JS استفاده می‌کردم، به سراغ Sequelize رفتم. یادگیری این کتابخونه آسون بود اما خیلی سریع سوالات و مشکلاتی برام پیش اومد که واقعا نیازمند جست‌و‌جو و تحقیق زیادی بود. در نهایت، روال و نحوه کار با این کتابخونه رو فهمیدم و تصمیم گرفتم تا بیام و برای شما هم توضیحش بدم.در قسمت‌های بعدی، یاد می‌گیریم که چطور به بهترین شکل از Sequelize استفاده کنیم و توی چاله و چوله‌های اون گرفتار نشیم.</description>
                <category>علی رشیدی</category>
                <author>علی رشیدی</author>
                <pubDate>Thu, 15 Oct 2020 21:52:15 +0330</pubDate>
            </item>
                    <item>
                <title>راه‌اندازی سریع لاتک و زی‌پرشین در Arch Linux</title>
                <link>https://virgool.io/@Codenegaar/%D8%B1%D8%A7%D9%87%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B1%DB%8C%D8%B9-%D9%84%D8%A7%D8%AA%DA%A9-%D9%88-%D8%B2%DB%8C%D9%BE%D8%B1%D8%B4%DB%8C%D9%86-%D8%AF%D8%B1-arch-linux-pfcuikadkejn</link>
                <description>بدون مقدمه‌چینی زیاد، بیاید ببینیم که چطور باید لاتک و زی‌پرشین رو توی Arch Linux نصب کرد؟نصب پکیج‌هاپشتیبانی از لاتک در اکثر توزیع‌های لینوکس به وسیله توزیعی به نام TeX Live صورت می‌گیرد. این یک توزیع آزاد و رایگان است که پشتیبانی از TeX را به سیستم‌های ما می‌آورد. برای نصب آن در آرچ، ابتدا گروه texlive-most را نصب کنید. این گروه شامل اکثر پکیج‌هایی است که نیاز دارید. در حال حاضر، حجمی حدود ۷۰۰ مگابایت باید دانلود کنید.$ sudo pacman -S texlive-mostسپس برای اضافه کردن پشتیبانی از فارسی، پکیج texlive-langextra را نصب کنید:$ sudo pacman -S texlive-langextraو می‌دانیم که خوب است یک ابزار گرافیکی برای ویرایش و ساخت فایل‌های تک داشته باشیم. پیشنهاد من نصب TeXMaker است:$ sudo pacman -S texmakerنصب فونت‌هاشما می‌توانید فونت‌های فارسی مورد نیازتان را نصب کنید و در سند خود استفاده کنید. برای نصب فونت‌ها، با فرض اینکه به لایسنس و آزاد بودن آن‌ها توجه دارید، چند راه پیش روی شما هست:نصب دستی: فونت‌های مورد نظر خود را دانلود کنید، و با ابزار گرافیکی که محیط دسکتاپ شما در اختیارتان قرار می‌دهد نصب کنید. یا اینکه آن‌ها را در مسیر usr/share/fonts/ کپی کنید. می‌توانید این جا را بخوانیدنصب پکیج: پکیج‌هایی در AUR هستند که فونت‌های مورد نیاز شما را ارائه می‌دهند. این پکیج‌ها را می‌توانید از لیست dependency های پکیج persian-fonts ببینید. فونت‌های سری X، برنا، و همینطور فونت‌های آزادی مانند وزیر و گندم را در این لیست می‌بینید. پیدا کردن نام فونت‌هادر حین ویرایش سند تک، باید نام فونتی که می‌خواهید استفاده کنید را بلد باشید. می‌توانید از ابزار fc-list استفاده کنید. مثلا دستور زیر، لیست تمام فونت‌های نصب‌شده را می‌دهد:$ fc-listو دستور زیر لیست تمام فونت‌های فارسی را به شما می‌دهد:$ fc-list :lang=fa
...
/home/codenegaar/.fonts/v/Vazir.ttf: Vazir:style=Regular
...
می‌بینید که در هر خط، مسیر فونت و خانواده فونت چاپ شده است که می‌توانید از آن‌ها استفاده کنید.پیکربندی TeX Maker و ایجاد اولین سندپیکربندی خاصی نیاز نیست به جز اینکه باید موتور XeLaTeX را به عنوان گزینه پیش‌فرض انتخاب کنید. برای این کار TeX Maker را اجرا کنید، از منوی Options گزینه Configure را انتخاب کنید و در تب Quick Build، گزینه‌ی XeLaTeX + PDF را انتخاب کنید تا هنگام ساختِ سریع، از این موتور استفاده شود و خروجی PDF به شما نمایش داده شود.حالا سند جدیدی ایجاد کنید (File -&gt; New) و محتوای زیر را وارد کنید:\documentclass[12pt, a4paper, oneside]{article}

\usepackage{hyperref}
\usepackage{xepersian}

\settextfont{Vazir}
\setlatintextfont{Nimbus Sans}

\begin{document}
این یک متن آزمایشی است که 
\lr{English text}
در خود دارد
\end{document}با کلیک روی دکمه کنار Quick Build، باید این خروجی را مشاهده کنید:البته به شرطی که فونت‌های استفاده شده را نصب کرده باشید.دیدید چه ساده بود؟ امیدوارم از ویرایش متن لذت ببرید. در ضمن جا دارد تشکر کنم از مطلب مفید آقای محمدحسین سالاری که نحوه نصب در اوبونتو را آموزش داده بودند و من با بهره‌گیری از آن این مطلب را نوشتم.</description>
                <category>علی رشیدی</category>
                <author>علی رشیدی</author>
                <pubDate>Tue, 18 Aug 2020 12:07:07 +0430</pubDate>
            </item>
                    <item>
                <title>راه‌اندازی محیط دسکتاپ KDE Plasma: قسمت اول</title>
                <link>https://virgool.io/@Codenegaar/kde-setup-part1-rn3hil8tc4ez</link>
                <description>مقدمهوقتی بحث به مقایسه محیط‌های دسکتاپ لینوکس می‌رسه، در خصوص KDE Plasma به ذهن اکثر ما یه سری موارد مشترک می‌رسه، مواردی مثل:داشتن ظاهری شبیه به ویندوزپیچیدگیبه شدت قابل شخصی‌سازیاینجا می‌خوام یکمی در خصوص مورد سوم با هم بحث کنیم، جایی که شاید از دید خیلی از افراد یه نقطه قوت به حساب بیاد، اما افرادی که KDE رو تجربه کردن، یا از این ویژگی حسابی لذت بردن یا ازش فرار کردن. این قابلیت شخصی‌سازی بالا، بعضی وقتا کار ما رو به جای ساده‌تر کردن سخت‌تر می‌کنه.به همین دلیل می‌خوام توی این مجموعه مطالب، در خصوص راه‌های شخصی‌سازی KDE Plasma برای نفع کاربر بگم. از جایی شروع می‌کنم که معمولا توی شخصی‌سازی ازش شروع نمی‌کنیم: مدیریت وظایف.دورنمایی از اجزای مورد بحثدورنمااگر تا قبل از این فکر می‌کردین راه‌اندازی Plasma یک سر و کله زدن با تم‌ها هست، ظاهرا به قدرت واقعی Plasma پی‌نبردین. ما در Plasma می‌تونیم از یک پنجره شروع کنیم و دست به شخصی‌سازی اون بزنیم و تا سطح Activityها و تنظیمات عمومی پیش بریم.در ادامه از Activity شروع می‌کنیم و ضمن معرفی کاربرد اون، به ایجاد Activityهای مختلف و تنظیمات مربوط به اون‌ها می‌پردازیم. البته برای اینکه از بحث اصلی دور نشیم زیاد به تنظیمات ظاهری نمی‌پردازیم.بالاترین سطح: Activityهایک Activity، همون‌طور که از اسمش پیدا هست، یک (دسته) فعالیت رو مشخص می‌کنه. شما از Activityها می‌تونین برای نظم دادن به کارای روزمره خودتون استفاده کنین. مثلا یه Activity (بیاین بهش بگیم فعالیت) برای کارهای روزمره، یکی برای کارهای دانشگاه، یکی برای کار روی پروژه و برنامه‌نویسی و ... .کاربرد انجام این کار چیه؟ من مواردی که خودم تجربه کردم رو میگم: تمرکز: هر برنامه (یا دقیق‌تر، پنجره) متعلق به یه فعالیت هست. با این کار، وقتی توی یه فعالیت هستم حواسم به پنجره‌هایی که روی فعالیت‌های دیگه هستن پرت نمیشه. مثلا تلگرام و مدیاپلیر رو روی فعالیت مربوط به کارهای روزمره باز می‌کنم و وقتی به کارهای دانشگاه می‌رسم، به این راحتیا نمی‌تونم سمتشون برم.نظم: خیلی تنظیمات هستن که مربوط به فعالیت هستن، و این باعث نظم دادن میشه. یکیشون میتونه نرم‌افزارهای Favorite منحصر به فرد برای هر فعالیت باشه. همینطور بخش فایل‌ها و نرم‌افزارهای اخیر که بسته به فعالیت نمایش داده میشه.برای ایجاد فعالیت‌ها، خیلی راحت به تنظیمات Plasma برید و در بخش Workspace Behavior به دسته‌ی Activities وارد شین. اینجا می‌تونین فعالیت جدید بسازین. موقع ساخت یک فعالیت، براش یه اسم و آیکون می‌تونین وارد کنین، و یه shortcut خاص برای اینکه سریع به این فعالیت برید. همچنین در قسمت Privacy می‌تونین تیک Do not track... رو بذارین که با این کار، فعالیت‌هاتون (فایل‌ها و اپ‌هایی که باز می‌کنین) ردیابی نمیشه و به خاطر سپرده نمیشه.در تب Switching هم می‌تونین کلید مربوط به جابه‌جایی بین فعالیت‌ها رو تعیین کنین. مثل Alt + Tab که برای پنجره‌ها هست، این برای فعالیت‌ها عمل می‌کنه. پیش‌فرض Meta + Tab هست که من به شخصه ازش راضیم.یکی از تنظیماتی که به فعالیت اعمال میشه (و نه به صورت عمومی)، تصویر زمینه هست که اگر تعویض کنید برای فعالیت جاری عوض میشه. من از این کار برای اعمال حس و حال اون فعالیت و همینطور تشخیص اینکه توی کدومشون هستم استفاده می‌کنم.سطح بعدی: دسکتاپ‌های مجازی (Virtual Desktops)احتمال زیاد با دسکتاپ‌های مجازی کار کردین. به طور پیش‌فرض توی اکثر محیط‌های دسکتاپ لینوکس (مثل همین پلاسما) دو تا دسکتاپ مجازی دارین و میشه بیشترش هم کرد. قابلیتی که سال‌هاست توی لینوکس و مک وجود داره و اخیرا به ویندوز هم اضافه شده. مطمئنم حالا که با فعالیت‌ها آشنا شدین می‌تونین حدس بزنین قراره از اینا چه استفاده‌ای بکنیم.ما از دسکتاپ‌های مجازی برای منظم‌کردن پنجره‌ها استفاده می‌کنیم. بعضی وقتا اونقدر استفاده ازشون راحته که ترجیح میدیم روی هر دسکتاپ حداکثر دو تا پنجره باز کنیم و پنجره‌ها رو بین دسکتاپ‌ها تقسیم کنیم. و به جای سوییچ کردن بین پنجره‌ها (که سخته، مثلا بین ۸ تا پنجره) بین ۴ تا دسکتاپ سوییچ کنیم. مثلا خودم، روی هر دسکتاپ دو تا پنجره باز می‌کنم و یکیشو روی مانیتورِ لپ‌تاپ و یکیشو روی مانیتور دوم میندازم. به علت اینکه میدونم هر دسکتاپ مربوط به چه کاری هست، به جای اینکه بین چندین پنجره با Alt + Tab بگردم، راحت به دسکتاپ مورد نظرم سوییچ می‌کنم.یه نکته که نمیدونم مثبته یا منفی در خصوص دسکتاپ‌های پلاسما اینه که، تعداد دسکتاپ‌ها ثابته و نمیشه برای هر فعالیت تعداد مشخصی در نظر گرفت. اگر این تعداد رو ۴ بذارین، روی تمام فعالیت‌ها ۴ تا هستن (و اسم و ترتیبشون هم یکیه).حالا با در نظر گرفتن این نکات، برای ایجاد دسکتاپ‌های مجازیتون روی هر فعالیتی که دوست داشتین وارد تنظیمات، Workspace behavior شین و Virtual Desktops رو انتخاب کنین. پلاسما برای دسکتاپ‌ها یه ساختار جدولی در نظر می‌گیره، که تعدادی ردیف و در هر ردیف تعدادی دسکتاپ داره. نکته جالب اینه که این جدول کامل نیست (مستطیلی نیست) و ردیف‌های مختلف می‌تونن تعداد دسکتاپ‌های متفاوتی داشته باشن.فکر کنم تنظیمات این بخش به اندازه کافی ساده هست و نیازی به توضیح نداره. شما میتونین به هر دسکتاپ هم اسم بدین (البته این اسم بین فعالیت‌ها مشترکه). فراموش نکنین انیمیشن رو تست کنین (من Slide رو خیلی می‌پسندم) و اینکه میانبر جابه‌جایی بین دسکتاپ‌ها، Ctrl + Fx هست. مثلا برای رفتن به دسکتاپ اول Ctrl + F1.سطح تقریبا آخر: پنجره‌هاپنجره‌ها آشناترین قطعات این محیط هستن. هر برنامه‌ای که اجرا می‌کنین ممکنه باعث تولد یه پنجره (یا بیشتر) بشه. این پنجره‌ها تنظیماتی دارن که بعضیا ظاهری اما بعضیا رفتاری هستن. از تنظیمات ظاهری (که توی قسمت‌های بعد بهشون می‌پردازیم) می‌گذریم.اما تنظیمات رفتاری خیلی ساده هستن. شما با راست‌کلیک روی نوار عنوان (Title Bar) اولین گزینه‌ای که دارید Move to desktop هست، که مشخص می‌کنه این پنجره روی کدوم دسکتاپ نمایش داده شه. گزینه دیگه‌ای که دارین Move to screen هست که اگر چند تا صفحه نمایش داشته باشین به کارتون میاد. در ضمن، اگر پنجره‌ای هست که خیلی باهاش سر و کار دارین و میخواین روی همه دسکتاپ‌ها باشه، در Move to desktop گزینه‌ی All Desktops رو هم دارین که به اصطلاح این پنجره رو Pin می‌کنه. بسته به تنظیمات ظاهری، توی نوار عنوان ممکنه دکمه‌ای براش در نظر گرفته باشن.و اما یکی دیگه از تنظیمات رفتاریِ کاربردی، Show in Activities هست، که مشخص می‌کنه این پنجره توی کدوم فعالیت‌ها نشون داده بشه. این جا میشه مثلا تعیین کرد که تلگرام فقط روی فعالیت روزمره باشه، یا مدیاپلیر روی همه باشه تا بتونین آهنگ (یا پلی‌لیستی که برای یه فعالیت ساختین) رو عوض کنین.تنظیمات جانبیاون گوشه و کنارها، مواردی هستن که به این دسته‌بندی ربط دارن. مثلا توی Application Launcher (منوی استارت!) اگر برنامه‌ای رو به Favoriteها اضافه کنین، می‌بینین که میشه مشخص کرد توی لیست برنامه‌های مورد علاقه کدوم فعالیت‌ها نشون داده بشه.برنامه‌های موردعلاقه مختلف در دسکتاپ‌های مختلفحتما در Application Launcher قسمت History رو دیدین، که فایل‌ها و نرم‌افزارهای اخیر رو نشون میده. اگر کمی با سیستم کار کنین می‌بینین که این فایل‌ها و برنامه‌ها روی هر فعالیت فرق دارن!برای سوییچ کردن بین دسکتاپ‌ها، به جز میانبری که گفتم، میشه روی دسکتاپ Scroll کرد. همینطور می‌تونین مثل عکس قبل از ویجتِ Virtual Desktops استفاده کنین. برای سوییچ کردن بین پنجره‌ها هم میشه روی Task Manager (ویجتی روی پنل که پنجره‌های باز رو نشون میده) Scroll کنین. و برای ترفند آخر، می‌تونین از گوشه‌های صفحه هم استفاده کنین. مثلا یک گوشه رو برای نشون دادن پنجره‌های باز (Present Windows)، یه گوشه برای دسکتاپ‌ها (Desktop grid) و یه گوشه رو برای فعالیت‌ها (Activity Manager) استفاده کنین. این تنظیمات در مسیر زیر پیدا میشن:System settings -&gt; Workspace Behavior -&gt; Screen Edgesجلسات (Sessions)جلسات در واقع چینش پنجره‌ها در دسکتاپ‌ها و فعالیت‌ها هستن. شما می‌تونین Session رو ذخیره کنین تا دفعه بعدی که کامپیوتر رو روشن می‌کنین/لاگین می‌کنین، برگردونده بشن. برای این کار:به System settings بریدوارد بخش Startup &amp; Shutdown شیدوارد دسته‌ی Desktop Sessions شینو یکی از گزینه‌های Restore previous session یا Restore manually saved session رو انتخاب کنین.اگر Restore manually saved session رو انتخاب کنین، از Application launcher قسمت Leave می‌تونین گزینه Save session رو انتخاب کنین.سخن آخردر یک کلام، لپ‌تاپ/کامپیوتر شما شاید یه وسیله ثابت باشه، اما جاهای مختلف و برای کارای مختلف ازش استفاده می‌کنین. مطمئنم الان شما هم موافقین که داشتن این دسته‌بندی خیلی بهتر از داشتن بیست تا پنجره باز و زدن Alt + Tab بین اون‌هاست! البته این کمترین فایده این روش دسته‌بندی هست و اگر بهش عادت کنین با بقیه مزایای اون هم آشنا میشین.اگه می‌خواین ستاپ خودم رو بدونین، من سه تا فعالیت دارم:Regular, everyday, normal guyDeveloper lifeUniversity Tasksو ۴ تا دسکتاپ، که روی یکی معمولا فایل‌ها رو مدیریت می‌کنم و ترمینالم بازه، روی یکی به مرور وب می‌پردازم، و اون دو تا بسته به کاری که دارم پر میشن.در قسمت‌های بعدی سعی می‌کنم که روی تنظیمات گرافیکی مانور بدم و از پس اون غول هم بر بیایم.</description>
                <category>علی رشیدی</category>
                <author>علی رشیدی</author>
                <pubDate>Mon, 29 Jun 2020 16:46:43 +0430</pubDate>
            </item>
            </channel>
</rss>