<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Ali (Mahdi) Badiee | علی (مهدی) بدیعی</title>
        <link>https://virgool.io/feed/@Bestmahdi2</link>
        <description>I&#039;m Mahdi - Isfahan - Mehr mah - Linux, programming, OS, tech, game, Music, book and ... lover</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:30:33</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/41551/avatar/Pe0w4f.jpg?height=120&amp;width=120</url>
            <title>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</title>
            <link>https://virgool.io/@Bestmahdi2</link>
        </image>

                    <item>
                <title>۱۰۰+ پروژه‌ی رایگان رشته‌ی مهندسی کامپیوتر</title>
                <link>https://virgool.io/@Bestmahdi2/%DB%B1%DB%B0%DB%B0-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%DB%8C-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-%D8%B1%D8%B4%D8%AA%D9%87-%DB%8C-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-kki8dhb7djnf</link>
                <description>مهندسی کامپیوترتوی این مطلب، قراره بیشتر از ۱۰۰ تا پروژه دوران کارشناسی رشته‌ی مهندسی کامپیوتر رو به صورت رایگان براتون قرار بدم. اگه شما دانشجوی این رشته هستید، یا میخواید به کامپیوتر تغییر رشته بدید، یا تازه کنکور دادید و میخواید به این رشته بیاید، این پروژه‌ها میتونه بهتون کمک کنه 😁مقدمهسلام، من مهدی ام و کارشناسی رو تموم کردم. با یه عالمه ایده و پروژه و ... میام سراغتون 😅اول از همه بگم که این لیست خیلی بلند بالایی میتونه باشه، چون توی ۴ سال، بیش تر از ۲۰۰ تا پروژه و تکلیف مربوط به رشته کامپیوتر انجام دادم (چه از خودم چه به صورت فریلنسری از دیگران)، و ۱۰ هزار ساعت میشه گفت روشون وقت گذاشتم و بیشتر از ۴۰۰ هزار خط کد زدم (خیلیاش تکراری عه البته میدونم 😂🖐🏻)شاید خیلیاش اونقدر که براش وقت گذاشتم بهم سود نرسوندن یا هزینه‌اش بیشتر از درآمدش بوده و... ولی خب من از انجام دادنشون، طراحی کردنشون، کد زدن و تست کردنشون لذت بردم. آیا زندگی چیزی فرای لذت بردن عه؟صحبت با تازه کاراخب اگه شما تازه کارید، نمیدونید از کجا شروع کنید، فریلنسری تا حالا کار نکردید، برنامه‌نویسی بلدید ولی نمیدونید از کجا باید پروژه بگیرید و...راه خودمو بهتون نشون میدم. قرار نیست منبع درآمد عالی‌ای باشه ولی تجربه‌اش کردم و برای شروع خوب بود.من ترم ۱ مجازی شروع کردم، هنوز کرونا بود و دسترسی همه به دانشگاه از طریق یه سایت و یه گروه تلگرام بود. دوران سخت و عجیب غریبی بود که به فکرم رسید از فرصت استفاده کنم و یه کانال برای بچه‌های ورودی خودمون بزنم و مطالب دانشگاه رو اونجا قرار بدم. همه مطالب آموزشی و فایل‌های اساتید و پروژه‌ها و تکالیف و یادآوری‌شون و... و تقریبا هر کاری میکردم که کانال رو بین بچه‌ها جا بندازم.اولین پروژه‌ای که استاد بهمون داد، بلد بودم، خودم اول پروژه خودم رو زدم، و از بین وقت باقی‌مونده، یه سری فیلم آموزشی ضبط کردم و داخل کانال گذاشتم که اون پروژه رو تا حدود ۴۰ درصدش رو انجام میدادم. بقیشو میسپردم به خود اون کسی که داره فیلم رو میبینه. بعد از گذشت یه هفته با یه موج عظیمی مواجه شدم که ۳۵ نفر بهم پیام دادن بابتش و سوال داشتن راجبش. همه رو سعی میکردم جواب بدم که اولین پیشنهاد کار اومد:میشه پروژه رو برام بزنی؟ پولشو بهت میدم هر چقدر شد...خیلی ذوق داشت، اولین پروژه برنامه‌نویسیم بود که پول میگرفتم براش. بعد هی این درخواست ها بیشتر شد و برای اون درس ۱۱ بار اون پروژه رو انجام دادم 😂🤷🏻‍♂️ و خب با حوصله‌ای که خرج کرده بودم تونستم اعتبار بخرم. حداقل کسایی که منو میشناختن میدونستن من برنامه‌نویسی بلدم و احتمالا بقیه درسا رو هم بلدم و برای هر درسشون میومدن سراغ من و میخواستن که پروژه‌ها رو یاد کمکشون کنم یا براشون بزنم. یجورایی یه منبع درآمد کوچیک شد برام. همونا هم منو به بقیه معرفی میکردن و اینطوری شد که یه عالمه پروژه فریلنسری خودش خود به خود برام میومد. البته یه تایمی هم توی گروه‌ها و کانال‌ها فعال بودم و اونجا هم پروژه میگرفتم.خلاصه اش رو بهتون گفتم، اگه تازه میرید دانشگاه دیگه خودتون تقریبا دستتون اومده که باید چیکار کنید. اگه تازه کارید، نترسید از اینکه پروژه‌ای رو بلد نیستید بزنید، پروژه رو بگیرید با یکم وقت گذاشتن تقریبا بیشترشون رو میشه زد. حتی اگه میشه روش وقت بذارید و خوب یادش بگیرید که دفعه بعدی بازم بتونید یه پروژه توی همون موضوع بگیرید. طبق تجربه، اگه مشتری راضی باشه، بازم میاد سراغ خودتون.حالا اگه دانشگاه نمیرید چی؟ کاری نداره، یه عالمه کانال و گروه و حتی سایت فریلنسری هست که آدما آگهی‌هاشون رو اونجا میذارن، میتونید اونجا‌ها فعالیت کنید و کم کم که بشناسنتون، پروژه خودش براتون میاد تا اینکه بخواید خودتون برید دنبال پروژه.نکات پروژه‌ها اگه نمیدونید گیت و گیت‌هاب چیه یه سرچ بزنید و یادشون بگیرید (Git - GitHub)یه سری نکته راجب این ریپوزیتوری هست که باید بهتون بگم:بعضی از پروژه‌های دوران کارشناسی به همین آسونی و یا به همین سختی‌ای هستن که توی لیست پروژه‌ها میبینید. بستگی زیادی به استادتون داره وگرنه پروژه‌های آسونی از دانشگاه‌های سخت‌گیر و پروژه‌های سختی از دانشگاه‌های تقریبا آسون‌گیر برام میومد. ولی خب از این دانشگاه‌ها من پروژه زدم و اوکی بودن: صنعتی شریف، تهران، علم و صنعت، صنعتی اصفهان، اصفهان، یزد، کاشان، شهرکرد، چند تا دانشگاه آزاد و یه پیام نورهمه‌ی پروژه‌ها بر اساس ترم دسته‌بندی شدن. ممکنه چارت دانشگاه‌ها با هم یکم فرق داشته باشن ولی تقریبا شبیه بهم هستن. میتونید چارت دانشگاه‌های مختلف رو توی اینترنت سرچ کنید و ببینید.با اینکه تقریبا همه‌ی درس‌های مهندسی کامپیوتر پروژه محور هستن و باید غیر از تکالیفی که دارن حداقل یه پروژه هم آخر دست تحویل بدید، خیلیا از درسا رو اینجا نیوردم چون پروژه‌های دلچسب یا خوبی برای ارائه شدن نداشتن یا خودم خیلی راضی نبودم از پروژه‌هاشون یا ...بعضی از پروژه‌های &quot;خارج از دانشگاه&quot; ممکنه که هنوز تکمیل نشده باشند، یا من اجازه انتشارش رو نداشته باشم هنوز، یا به دلایلی هنوز حالت نمایش Private مونده باشن. پس اگه روی لینکی کلیک کردید و ارور 404 بهتون داد، شاید هنوز موقع انتشارش نشده باشه.پروژه‌ها از مجموع ۲۰ تا درسی که خودم توی دانشگاه داشتم (حدود ۶۰ واحد) و ۲۹ تا درسی (حدود ۹۰ واحد) که فریلنسری براشون پروژه گرفتم تشکیل میشن.بعضی پروژه‌ها ممکنه چند تا کد داشته باشن، چون یه پروژه یکسان برای چند نفر انجام شده و خب کدها، رو‌ش‌ها و طراحی‌ها باهم فرق میکنه ولی در کل کار یکسانی میکنن.اگه دوست داشته باشید من خیلی خوشحال میشم که بهم کمک کنید که پروژه‌ها رو معرفی کنم، ارتقا بدم، آپدیت کنم و... ❤️پروژه‌هاهمه پروژه‌های دانشگاهی داخل یه ریپوزیتوری لیست شده‌ان و هر کدوم که دوست داشتید میتونید از قسمت &quot;لینک‌ها&quot; به لینک وب‌سایت یا ریپوزیتوری گیت‌هاب‌اش دسترسی داشته باشید (روی آیکون‌اش کلیک کنید - عکس یه گربه‌ست)بازم دارم میگم، هر پروژه داخل ریپوزیتوری خودش عه، این لینکی که میذارم صرفا لیست پروژه‌هاست. برای دیدن هر کدومش باید برید داخل ریپوزیتوری خودش.برای دسترسی به پروژه‌ها روی این لینک یا کارد پایین کلیک کنید: https://github.com/bestmahdi2/Uni__Bachelors_SKU_Path  https://github.com/bestmahdi2 خب همین دیگه. اگه دوست داشتید بقیه ریپوزیتوری‌ها رو استار بدید، این پست رو لایک کنید و به اشتراک بگذارید 😌</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Sun, 21 Jul 2024 20:12:38 +0330</pubDate>
            </item>
                    <item>
                <title>20 پلاگین مفید IntelliJ IDEA و PyCharm در 2024</title>
                <link>https://virgool.io/@Bestmahdi2/20-best-jetbrains-plugins-kurvywpjsmd4</link>
                <description>سلام سلام،بعد از یه غیبت خیلییییییییی طولانی برگشتم با چند تا پلاگین باحال برای نرم افزارهای شرکت JetBrains (IntelliJ IDEA، PyCharm، WebStorm، PhpStorm، ReSharper و Rider) که در پایین هر کدوم رو نوشتم و توضیحات و لینکش رو هم دادم. یکم دسته بندی کردم که راحت تر باشید.دسته‌ی &quot;صرفا&quot; زیباسازی:Darcula Darker ThemeDarcula Darker Theme [link]یک تم دارک هست که کمک می‌کنه به چشم‌های شما فشار کمتری وارد بشه. اگه مثل من طرفدار تم دارک هستید، خب پس این پلاگین برای شماست.Extra Icons [link]این پلاگین آیکون‌های اضافی به برنامه اضافه میکنه که خب باید حتما تستش کنید.Extra ToolWindow Colorful Icons [link]این پلاگین آیکون‌های رنگی اضافی برای پنجره‌ها ارائه می‌ده. تا تستش نکنید و ظاهر کل ابزار عوض نشه، متوجه باحال بودنش نمیشید 🥲😂Indent Rainbow [link]با این پلاگین، اینتندهای کدهاتون با رنگ‌های مختلف نمایش داده میشه. برای زبان پایتون که عالیهههه، ولی خب برای بقیه زبان‌ها هم میتونید استفاده کنید و واقعا از خسته‌شدن چشم‌ها جلوگیری میکنه.Material Theme UI [link]این پلاگین شاید خیلی نیاز به تعریف نداشته باشه، اینقدر تم‌های زیبا در تقریبا همه‌ی سلیقه‌ها داره که تنهاتون میذارم خودتون باهاش آشنا بشید.Rainbow Brackets [link]با این پلاگین، پرانتزهای کدتون با رنگ‌های رنگین‌کمان نمایش داده می‌شن، که خب وقتی تعداد پرانتزها زیاد میشه خیلی کاربردیه و کاملا مشخص میشه که کدوم پرانتز باز و کدوم بسته شده.دسته‌ی کاربرد عمومی:PDF ViewerCamelCase [link]با این پلاگین، به راحتی بین kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case و space case میتونید سوییچ کنید. برای تغییر نام‌گذاری ها عالیه.Code Screenshots [link]با این پلاگین میتونید خیلی راحت از کدهاتون اسکرین‌شات بگیرید، البته یه چیزایی اضافه‌تر هم داره که خودتون کشفش کنید 😌PDF Viewer [link]میتونید خیلی راحت فایل‌های PDF رو بدون اینکه از نرم‌افزار بیرون برید ببینید. توی مواردی که نیاز دارید با یک فایل PDF کار کنید یا پروژه‌هاتون رو از روی PDF بخونید، خیلی کاربردیه.Regex Tool [link]این پلاگین ابزارهای مورد نیاز برای Regex رو در اختیارتون میذاره.ScreenCodePro [link]با این پلاگین هم میتونید خیلی راحت از کدهاتون اسکرین شات بگیرید، و خب همون داخل برنامه یه سری تغییرات روش بدید و عکس خروجی رو هم ببینید.String Manipulation [link]این پلاگین به شما قابلیت این رو میده که تقریبا هر کاری رو با رشته‌ها انجام بدید. مورد‌ها رو جابجا کنید، مرتب کنید، فیلتر کنید، متن رو افزایش بدید، تراز کنید، encode کنید و ...WakaTime [link]این پلاگین زمانی که برنامه نویسی می‌کنید رو ردیابی میکنه و داخل داشبورد سایت خودش، میتونید زمان‌هاتون رو ببینید. برای تقریبا همه‌ی برنامه‌های ویندوزی پلاگین داره و حتی روی مرورگر هم میتونید ازش استفاده کنید.دسته‌ی کاربرد خاص‌تر:CSV Editor .env files support [link]این پلاگین به شما کمک می‌کنه تا فایل‌های .env رو در پروژه‌هاتون استفاده کنید..ignore [link]این پلاگین قابلیت این رو بهتون میده که فایل‌های .ignore رو داخل پروژه‌هایی که از Git استفاده‌شده، ایجاد و مدیریت کنید.C/C++ Single File Execution [link]با این پلاگین میتونید یک فایل C/C++ رو کامپایل و اجرا کنید بدون اینکه نیاز به اضافه کردن به CMake یا ایجاد یه پروژه‌ی جدید باشه.CSV Editor [link]این پلاگین امکان ویرایش فایل‌های CSV رو می‌ده که برای پروژه‌های داده‌کاوی خیلیییی خوبه.Json Formatter [link]این پلاگین به شما کمک می‌کنه تا فایل‌های JSON خودتون رو به‌راحتی فرمت‌بندی کنین. حتما تستش کنید.Rainbow CSV [link]این پلاگین بهتون این امکان رو می‌ده تا فایل‌های CSV خودتون را با رنگ‌های مختلف نمایش بدید. ستون‌ها و ردیف‌ها رو رنگی میکنه و درک بهتری بهتون میده.TeXiFy IDEA [link]این پلاگین به شما امکان می‌دهه تا با LaTeX در نرم‌افزارهای JetBrains کار کنید. واقعا من ازش راضی بودم نسبت به بقیه ی پلاگین ها و اینکه یه ترجمه کتاب هم باهاش نوشتم که لینکشو براتون میذارم اگه دوست داشتید همکاری کنید :) https://github.com/bestmahdi2/IntroductionTo3DGameProgrammingWithDirectX12 همه ی پلاگین ها با لینک روبروشون نوشته شدند که بتونید راحت بهشون دسترسی داشته باشید.برای نصبدر نسخه های جدید، طبق شکل پایین در صفحه ی اصلی میتونید از قسمت Plugins بهش دسترسی داشته باشید:پلاگین ها در صفحه اصلییا اینکه میتونید از منوی File گزینه ی Settings رو انتخاب کنید. از پنجره ی سمت چپ، Plugins رو انتخاب کنید و هر کدوم که دوست داشتید رو از قسمت Marketplace سرچ کنید و نصب کنید:پلاگین ها در صفحه تنظیماتاگه پست رو دوست داشتید لایک کنید 😍😌پربازدید ترین پست من: https://virgool.io/@Bestmahdi2/%D9%86%D8%B5%D8%A8-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%B1%D9%88%DB%8C-%DA%AF%D9%88%D8%B4%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%D8%AA%D9%88%D9%86-%D8%A8%D8%A7-%D8%B1%D9%88%D8%AA-%D8%A8%D8%AF%D9%88%D9%86-%D8%AA%D8%B1%D9%85%D9%88%DA%A9%D8%B3-oyglehw8nbrn </description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Tue, 06 Feb 2024 21:36:27 +0330</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی: دزدیدن اطلاعات فلش USB با پایتون 3 ,2021 (+ آموزش pyinstaller)</title>
                <link>https://virgool.io/coderlife/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B2%D8%AF%DB%8C%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%81%D9%84%D8%B4-usb-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-3-2020-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-pyinstaller-d5abnmoufvce</link>
                <description>File Stealer USB to PCاین مقاله صرفا به منظور آموزش و اطلاع رسانی نوشته شده و مسئولیت استفاده از آن به عهده ی خود شخص است.مقدمه ی کوتاه:برای کپی کردن اطلاعات یک USB متصل به کامپیوتر روش های زیادی وجود داره. از ساده ترین روش ها پرت کردن حواس صاحب USB و کپی کردن دستی فایل ها و فولدر هاست ولی خب اگه به روش های هکرگونه و خودکار علاقه دارید دو تا رَوِش وجود داره:اول) استفاده از نرم افزار های آماده برای این کار: مثل &quot;FileStealer F2h&quot; [لینک دانلود (+)]اگه حال و حوصله و ذوق یادگیری برنامه نویسی ندارید دیگه این مقاله رو ادامه ندید و از لینک بالا برنامه رو دانلود و استفاده کنید.دوم) برنامه نویسی برای ساختن برنامه ای که بتونه اینکار رو انجام بده.خب اگه روش دوم رو انتخاب کردید حالا میرسیم به بحث اینکه کدوم زبان برنامه نویسی رو انتخاب کنیم برای آموزش ؛ پس بین پایتون و سی شارپ باید انتخاب میکردم. چون انتخاب نسبتا سختی بود گفتم که چه بهتره هر دو رو بنویسم ولی فقط پایتون رو آموزش بدم چون راحت تره.ولی شما میتونید سورس کد هر دو رو توی گیت هاب ببینید (لینک های پایین)خب اگه بازم حوصله ی آموزش پایتون و الگوریتم و خوندن اضافی جات ندارید و مستقیم خود کد رو میخواهید ، این لینک ها رو قرار میدم:سورس کد پایتون: [لینک دانلود (+)]سورس کد سی شارپ: [لینک دانلود (+)]فایل اجرایی (exe) پایتون برای ویندوز: [لینک دانلود (+)]فایل اجرایی (exe و dll) سی شارپ برای ویندوز: [لینک دانلود (+)] https://github.com/bestmahdi2/FileStealerUSB2PC آموزش سه بخش میشه:اول) طراحی الگوریتم برنامه و فهمیدن روش کار کردن برنامه و پایتوندوم) نوشتن برنامه با پایتونسوم) خروجی گرفتن از برنامهالبته در نظر داشته باشید که این آموزش فقط برای ایده دادن و نشون دادنش به پایتونی ها و برنامه نویس ها و حتی تازه کار هاست و روش های خیلی بهتری و قوی تری برای اینکار هم وجود داره.بخش اولالگوریتم:خب یه برنامه میخوایم که بتونه اول از همه USB های متصل به کامپیوتر رو پیدا کنه ، اگه چیزی پیدا نکرد بگه که چیزی نبود. اگه پیدا کرد ، به ترتیب بره توی هر کدوم و فایل ها و فولدرهای اون رو کپی کنه و توی یه مسیر مشخص بریزه و یه progressbar هم نشون بده ، آخر از همه هم پیغام بده که تموم شد.آموزش مبتدی پایتون:قبل هر چیز اگه اصلا تجربه ی برنامه نویسی و یا برنامه نویسی پایتون ندارید ، اول مقاله زیر رو یه بار مطالعه کنید و یاد بگیرید چون توی اون مقاله خیلی خیلی توضیحات سطحی و اضافی دادم که دیگه اینجا اونا رو تکرار نمیکنم و چیز های تازه تری رو میگم: https://vrgl.ir/j0zX1 یک) __init__: یکی از متدهای سازنده یا constructor زبان پایتون هست. این تابع هر بار دقیقا بعد از نسبت دادن یک کلاس به شی ، اجرا میشه.دو) abstractmethod@: اگه با بعضی زبان های برنامه نویسی مثل جاوا و سی شارپ و ... آشنایی داشته باشید ، میدونید که وقتی یه متد به صورت abstract تعریف میشه ، توی کلاس های فرزند حتما باید تعریف بشه.پس وقتی abstractmethod@ قبل یه تابع نوشته بشه ، اون تابع به صورت abstract میشه.سه) staticmethod@: باز هم اگه آشنایی با زبان های دیگه داشته باشید ، میدونید که وقتی یه متد با static تعریف بشه میتونه بدون اینکه وابستگی به اون کلاس داشته باشه (بدون ساختن شی از کلاس) فراخوانی بشه.این تابع نیازی به نوشتن self ندارد.چهار) ()super: کاربرد های متفاوتی ممکنه داشته باشه. اینجا برای فراخوانی متد __init__ کلاس والد استفاده میشه.آموزش کتابخانه های پایتون:کتابخانه abc:اینجا از دو کلاس ABC و abstracmethod استفاده میکنیم ، دلیل و روش استفاده رو بالا توضیح دادم.کتابخانه platform:از کلاس system برای فهمیدن سیستم عامل حال حاضر ، استفاده میکنیم. روش استفاده : با فراخوانی ، یه رشته بر میگردونه.کتابخانه time:کاربرد های خیلی گسترده ای میتونه داشته باشه. اینجا از کلاس sleep برای تاخیر انداختن در بسته شدن برنامه استفاده میکنیم ، روش استفاده:sleep(number_in_seconds)کتابخانه os:این کتابخانه بیشتر برای تعامل با سیستم عامل هست (فرقی بین نوع سیستم عامل نیست) ، از این کتابخانه کلاس های زیر استفاده میکنیم:chdir(Location):  برای عوض کردن دایرکتوری/فولدر که برنامه در آن فعالیت میکنهlistdir(Location):  برای لیست کردن همه ی فولدر ها و فایل های داخل یه دایرکتوری/فولدرmkdir(Folder_name):  برای ساختن یه پوشه با اسم داخل پرانتز در فولدری که در آن برنامه فعالیت دارهpath:  کاربرد های زیادی برای فایل ها و فولدر های توی یه مسیر دارهsep:  علامت جدا کردن (اسلش یا بک اسلش) فایل ها و فولدر ها از هم که برای هر سیستم عامل متفاوت استlinux sepwindows sepمثالها:فهمیدن فایل بودن یه آیتم:               (path.isfile&#40;file_nameفهمیدن فولدر بودن یه آیتم:          (path.isdir(folder_nameکتابخانه shutil:برای استفاده از فایل ها و فولدر ها هست ، ما از کلاس های copytree و copyfile برای کپی کردن فولدر ها و فایل ها استفاده میکنیم:copyfile&#40;source, destination&#41; و copytree(source, destination&#41;کتابخانه progressbar:همونطور که از اسمش پیداست ، برای استفاده از نوار پیشرونده در برنامه است که ما از کلاس های زیر استفاده میکنیم:اول) (widget : ProgressBar(widget, maxval مشخصاتی هست که میخوایم بهش بدیم و maxval هم حداکثر مقداری هست که میتونه پیشروی کنه  و برای آپدیت کردن مقدار اون ، اول یه متغییر bar تعریف میکنیم و (ProgressBar(widget, maxval رو بهش مقدار میدیم و با (bar.update(number اون رو آپدیت میکنیم. بقیه ی کلاس ها رو هم خودتون امتحان کنید ، جالبن ?بخش دومخب بریم سراغ برنامه نویسی و از اول شروع کنیم به نوشتن برنامه مون.قبل از اون ، اگه کتابخانه ای رو نصب ندارید با دستور زیر اون رو نصب کنید.pip install library_nameبرای لینوکس pip3 استفاده کنید.به جای library_name ، اسم کتابخانه ی مورد نظر رو بنویسید.تذکر : برای سادگی کار و به هم نریختن فونت و چیزای دیگه توی سایت ویرگول از عکس کد ها استفاده کردم و اگه دوست دارید خود کد ها رو داشته باشید ، از مقدمه لینک ها رو پیدا کنید.شروع:libsاول از همه کتابخانه های برنامه مشترک برای ویندوز و لینوکس رو وارد میکنیم.classesبعد از اون سه تا کلاس جدید میسازیم ، یکی والد و اون دو تا فرزند تا مجبور نباشیم هر بار برای نوشتن کد های سیستم عامل های مختلف ، یه سری کد ها رو تکرار کنیم. در آخر هم یه شرط میگذاریم. این شرط به معنی اینکه ، اگه برنامه به صورت مستقیم باز شد این کارها رو انجام بده و زیرشرط ها هم برای فراخوانی کلاس های هر کدوم از سیستم عامل ها هستند.class Mainبرای کلاس Main یه تابع سازنده تعریف میکنیم و دو تا ورودی ، یکی به عنوان محل ساختن پوشه برای کپی کردن فایل ها و یکی هم محل کپی کردن فایل ها در نظر میگیریم.این دو تا متغییر گرفته شده رو با self تعریف میکنیم تا جاهای دیگه ای هم از کلاس یا زیر کلاس ها هم قابل استفاده باشه.یک متغییر برای نگه داشتن تعداد USB های استفاده شده هم تعریف میکنیم و مقدار پیش فرض را صفر میدیم.یک لیست هم تعریف میکنیم تا محل USB ها رو در اون نگه داریم.بعد با یه شرط مطمئن میشیم که فولدر USB Files در محل خودش وجود داره یا نه ، اگه وجود داشت که هیچی ، اگه نداشت یکی برامون بسازه و بره داخلش.من    home رو \\:C   و   dest رو C:\\USB Files    در نظر گرفتم. از اینجا به بعد به dest ، فولدر مقصد میگیم.یه دستور پرینت هم با یه سری متن بهش میدیم که مثلا برنامه ی ما آنتی ویروس هست ، و اگه کسی دید که ما برنامه مون رو باز کردیم بتونیم بهش بگیم که داره دنبال ویروس میگرده (البته این روش خوبی برای اینکار نیست ولی برای افراد خیلی غیرتکنولوژی مثل شوهر عمه ها میشه استفاده کرد ، البته شاید)usb number - listوقتی چند تا USB به کامپیوتر وصل باشه ، چطوری قراره که فایل ها و فولدر هاشون رو کپی کنیم و با هم قاطی نشن ؟ خب یه راهش میتونه این باشه که به USB ها شماره بدیم یا از اسم خودشون استفاده کنیم (از اسم خودشون استفاده کردن رو توی پایتون نتونستم کد مربوط بهش رو پیدا کنم ولی توی سی شارپ نوشتم ، میتونید ببینید)پس اول یه تابع تعریف میکنیم تا توی فولدر مقصد بگرده و همه ی اعدادی که اسم پوشه ها هستند رو پیدا کنه ، مقایسه کنه و بیشترین شون رو پیدا کنه و بزاره توی self.usbNum که همون اول تعریف کرده بودیم ، تا اگه خواستیم بازم پوشه بسازیم ، بدونیم چه عددی رو باید استفاده کنیم.قسمت دوم رو هم توضیح دادم قبلا. این تابع رو هم با pass مینویسیم که کاری به محتویات داخلش نداشته باشه تا بعدا در زیرکلاس ها تعریفش کنیم.usb found or notاین تابع رو هم برای این تعریف میکنیم تا اگه تعداد USB های پیدا شده ، صفر بود (اصلا چیزی پیدا نشد) ، یه پیغام رو چند ثانیه نشون بده و بعدش از برنامه خارج بشه. میتونیم این تابع رو از نوع استتیک تعریف کنیم و یه ورودی هم به عنوان لیست USB ها بگیره. شاید بگید که خب چرا از self.usb_drive_list استفاده نمیکنیم و یه ورودی میگیریم ؟ خب چون قرار نیست این متغییر توی خود تابع Main مقدار بگیره و خب قاعدتا نباید مقداری هم داشته باشه وقتی مستقیما از خود کلاس Main استفاده میکنیم (متوجه نشدید ، یه بار استتیک رو پاک کنید و سعی کنید با روش خودتون انجامش بدید)copyخب حالا دو تا تابع تعریف میکنیم ، اولی برای اینکه یکی یکی داخل USB ها بره و دومی برای اینکه فایل و فولدر های داخل اون USB ای که درش هست رو به فولدر مقصد (+ شماره USB) کپی کنه. توضیح تابع دوم در عکس زیر ...copy_tryاول از همه یه متغییر به اسم pwd تعریف میکنیم که بهش لیست فایل ها و فولدر های داخل پوشه ای که الان برنامه در اون داره فعالیت میکنه (&quot;.&quot;) رو میدیم و با استفاده از pwd میتونیم فایل ها و فولدر ها رو از هم مشخص کنیم ، برای اینکار دو تا لیست تعریف میکنیم.اگه متوجه نشدید که دو تا لیست چطوری مقدار دهی شدن ، توی گوگل سرچ کنید: python list comprehensionsخطوط بعدش رو قبلا توضیح دادم ، ولی برای محکم کاری ، widget ویژگی های progressbar شما رو تعیین میکنه ، که خیلی راحت میتونید جاهاشون رو عوض کنید یا حذف شون کنید ببینید که چه اتفاقی میفته. متغییر bar هم خود progressbar رو برامون نگه میداره. متغییر x یه نگه دارنده ی مقدار bar هست که میتونید حتی اسم های دیگه ای هم بهش بدیدپس اول از همه به bar دستور شروع میدیم یعنی: ()bar.startبعد دو تا حلقه ی for تعریف میکنیم ، که اولی برای کپی کردن فولدر های توی USB هست با استفاده از copytree هست و با هر بار کپی شدن یک فولدر ، یک واحد هم به bar اضافه میکنه و هم به x.هر دو Try و except هم برای هندل کردن ارور هایی هست که موقع اجرای این کد ممکنه پیش بیاد. به صورت که اول سعی میکنه کد توی try رو اجرا کنه ، اگه نشد کد توی except رو اجرا میکنه.البته این مدل نوشتن except استاندارد نیست ولی برای آموزش بد نیست.حلقه ی دوم for هم مثل قبلی عمل میکنه ولی اینبار برای کپی کردن فایل ها با استفاده از copyfileمدل نوشتنی که توی پرانتز copytree و copyfile استفاده شده به این صورته:اول از همه منبع (همون که قراره کپی بشه) . بعد از اون        :   فولدر مقصد + شماره USB + جداکننده + اسم فولدر/فایلمثال در ویندوز :  (&quot;Copyfile&#40;“I:\\new.txt”, “C:\\USB Files” + “1” + “\\” + “new.txtمقادیر رشته با علامت +  به هم دیگه میچسبنددر آخر هم bar رو با (&#41;bar.finish تموم میکنیم.finalو تابع آخر در کلاس Main که وقتی برنامه تموم میشه یه پیام رو نشون میده و منتظر میمونه تا با زدن اینتر از برنامه خارج بشه.خب حالا نوبت اینه که کلاس های فرزند رو تعریف کنیم ، از ویندوز شروع میکنیم.قسمت MainWindow:MainWindowsاول از همه متد سازنده رو تعریف میکنیم و از ()super استفاده میکنیم تا کد های داخل __init__ کلاس Main در این کلاس هم قابل استفاده بشن. اگه یادتون باشه دو تا ورودی هم بهش میدادیم که توی Main استفاده میشد.بعد از اینکار باید بریم سراغ اینکه یکی یکی توابع رو صدا بزنیم تا کارشون رو برای ما انجام بدن.اول از همه ()self.USB_Number که تعداد های از قبل استفاده شده در فولدر مقصد رو پیدا کنهبعد یه لیست به اسم self.usb_drive_list میسازیم و مقدارش رو ، مقدار برگردونده شده از تابع USB_Drive_List قرار میدیم ، شاید بپرسید که ما هنوز کاملش نکردیم (با pass ازش رد شدیم) پس چطوری استفاده کنیم ، خب مشکلی نیست بعدا این تابع رو تعریف میکنیم.این لیست همه ی USB های متصل به کامپیوتر هست.اگه توجه کرده باشید که یه لیست به اسم self.usb_drive_list و یه تابع به اسم self.USB_Drive_List داریم و هر دو اسمشون دقیقا شبیه هم دیگست پس چرا قاطی پاتی نمیشن ؟ خب پایتون زبان حساس به بزرگ و کوچکی حروف هست و مشکلی براش پیش نمیاد با این حالت نام گذاری ، پس نگران نباشید.خب لیست ایجاد شده رو به تابع self.USB_Found_Or_Not میدیم تا ببینیم آیا خالی هست یا نه و باید بعدش چیکار کنه.بعد از گذر از این مرحله میریم سراغ دو تا تابع self.Copy و self.Copy_Try که قبلا توضیح دادم چیکار میکنن و در آخر هم که self.Final باید اجرا بشه.usb drive listخب حالا دیگه نوبت اینه که USB_Drive_List رو تعریف کنیماگه بازم متوجه نشدید که چرا همونجا توی Main کاملش نکردیم ، بعد از کامل شدن برنامه این تابع رو در کلاس MainWindow و MainLinuxمقایسه کنید تا متوجه بشید چقدر با هم فرق دارن و اصلا ربطی به همدیگه ندارن .اول از همه کتابخانه های مورد نیازش رو وارد میکنیم و یه لیست خالی به اسم drive_list تعریف میکنیم تا USB ها رو در اون بریزیم.بقیه ی کد ها رو اصلا قرار نیست کامل متوجه بشید که چی هستن و چطوری کار میکنن ، من هم توضیح نمیدم (من هم این تیکه کد رو از اینترنت گرفتم و بهش مسلط نیستم ) ولی بدونید که روش پیدا کردن USB ها اینه.در آخرش هم که همون لیست drive_list رو برمیگردونیم (قبلا گفتیم کجا استفاده میشه ، قسمت MianWindow رو دوباره بخونید)قسمت MainLinux:خب این کلاس یه تفاوت هایی با MainWindow داره که توضیح میدم.MainLinuxاول از همه کتابخانه های مرتبط با لینوکس رو وارد میکنیم.بعد از اون باید username فردی که روی سیستم هست رو پیدا کنیم چون بدون اون USB ها و دایرکتوری home و media رو نمیتونیم پیدا کنیم.برای مثال:یوزرنیم من master هست پسمتغییر home باید به این شکل باشه:                                                             Home = “/home/master/”و dest به این شکل:                                                                      Dest = “/home/master/USB Files/”بعد از این کد های داخل __init__ کاملا با کد های داخل کلاس MainWindow یکسانه و دیگه توضیح نمیدم.usb_drive_listاینبار پیدا کردن USB ها کار سختی نیست و فقط باید این مسیر رو ببینیم: /media/username/پس اول از همه با chdir به اون پوشه میریم. همه ی پوشه های داخلش رو توی لیست drive_list میریزیم و در آخر هم لیست رو برمیگردونیم.بخش سومبرای خروجی گرفتن از برنامه ، از pyinstaller استفاده میکنیم ، برای نصب در Terminal و CMD یا PowerShell:pip install pyinstallerبرای لینوکس باید یه 3 به pip اضافه کنید.بعد به فولدری که فایل برنامه را در آن ذخیره کرده بودیم میریم و دستور:pyinstaller .\FileStealerUSB2PC.py --name FileStealerUSB2PC.Win 64 --onefile --icon=.\usb.icopyinstallerبعد توی همون پوشه ، پوشه ای به اسم dist ساخته شده و برنامه ی شما آماده ی استفاده استدقت کنید: اگه سیستم شما 64 بیتی هست ، نسخه ای که با pyinstaller ساخته میشه هم 64 بیتی هست و نمیتونید اون رو روی سیستم های 32 بیتی اجرا کنید ولی برعکسش ممکنه . به جای اینکار ، میتونید یه سیستم عامل مجازی 32 بیتی نصب کنید و روی اون pyinstaller رو اجرا کنید که دیگه براتون مشکل نباشه.خب امیدوارم خوشتون اومده باشه. اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید. اگه دوست داشتین و به دردتون خورد حتما لایک کنید.مقاله های من:پر بازدید ترین: https://virgool.io/@Bestmahdi2/%D9%86%D8%B5%D8%A8-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%B1%D9%88%DB%8C-%DA%AF%D9%88%D8%B4%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%D8%AA%D9%88%D9%86-%D8%A8%D8%A7-%D8%B1%D9%88%D8%AA-%D8%A8%D8%AF%D9%88%D9%86-%D8%AA%D8%B1%D9%85%D9%88%DA%A9%D8%B3-oyglehw8nbrn بقیه مقاله ها: https://virgool.io/@Bestmahdi2 Telegram: @bestmahdi2Instagram: https://www.instagram.com/bestmahdi2/ </description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Sun, 25 Oct 2020 10:00:14 +0330</pubDate>
            </item>
                    <item>
                <title>اجتماعی: 13دلیل برای تنفر از اینستاگرام در 2021</title>
                <link>https://virgool.io/fboard/%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%DB%8C-13%D8%AF%D9%84%DB%8C%D9%84-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D9%86%D9%81%D8%B1-%D8%A7%D8%B2-%D8%A7%DB%8C%D9%86%D8%B3%D8%AA%D8%A7%DA%AF%D8%B1%D8%A7%D9%85-%D8%AF%D8%B1-2020-vjkin1lt6gzp</link>
                <description>اینستاگرامسلام خدمت همه ی خواننده ها ، نویسنده ها و کاربران ویرگولیه سری از دلایل و چیز های دوست نداشتنی از فضای اینستاگرام باعث میشه که افراد از جمله خودم از اینستاگرام استفاده نکنیم یا کمتر استفاده کنیم. دوست دارم توی این مقاله 13 تا از اون ها بهتون بگم. این مقاله به سه بخش کلیشه ها ، توجیه ها و راه حل ها تقسیم میشه.نکته: از کسانی که عکس ، فیلم ، متن ، ایدولوژی ، روش زندگی و ... اون ها توی این مقاله برای ارائه ی مثال استفاده میشه ، صمیمانه عذرخواهی میکنم و امیدوارم که از دست من ناراحت نشن ، این مقاله فقط برای نشون دادن دیدگاه هست نه استهزای اشخاص.نکته2: برای اختصار و راحتی بجای اینستاگرام از اینستا استفاده میکنیم https://vrgl.ir/DSpJJ  https://vrgl.ir/j0zX1 کلیشه ها: همه ی ما در واقع در این موضوع حداقل اشتراک نظر داریم که بخش زیادی از فضای اینستاگرام (فارسی بیشتر) تکرار کلیشه هاست و قرار هم نیست که عوض بشه ، بزارید با یک مثال غیر اینستایی شروع کنیم. فرض کنید توی یک گروه خانوادگی هستید و حدودای صبح وقتی تلگرام ، واتس اپ یا هر برنامه ای که گروه روی اون هست رو باز میکنید با یه پست مسخره و عهد بوقی روبرو میشید:صبح زیبایتان بخیر (همراه عکس طبیعت + چایی + صبحانه)این گل تقدیم به اعضای عزیز (همراه عکس گل)که این پست معمولا توسط اعضایی مثل شوهر عمه ، خاله و ... قرار گرفته.یا حتی وقت هایی که به یه نفر پیام میدی ، و برای جواب استیکر ، گیف یا عکس گل میفرسته ، در حالی که حتی یکبار هم برای تو گل نخریده ، یعنی چی واقعا ؟؟؟! دیگه تمومش کنید خواهشا ...بریم سراغ اینستا ، در واقع کلیشه ها به شدت زیادن ولی بزرگ ترین ها و رو مخ ترین ها رو جدا کردم (به نظر خودم البته).مصداق کلیشه ها:1. عکس + متن بی ربط: یکی از بدترین و رو مخ ترین قسمت ها آپلود کردن عکس با متن غیر هماهنگ و ربطه و در نود درصد موقع هم عکس خود اون فرد با یک جمله ی انگیزشی ، بیت شعر بی ربط ، یا سوال های مسخره ست.مثلا: خانمی با یه عکس که معلومه برای جذب مخاطب به خاطر قسمتی از بدنش گرفته ، در حالی که اون قسمت رو با اغراق به نمایش گذاشته میپرسه «لاک ناخنم قشنگه ؟»یا وقتی فردی با همسر/دوست/جاست فرند/دوست دختر/دوست پسرش کنار همدیگه عکس گرفتن ، عکس خوبه ، هدف خوبه ، کار زیبایی هم هست ولی متن «هشدار که آرامش ما را نخراشی!» یا «نشود فاش کسی آنچه میان من و توست!» و چیز های مشابه.2. خاک + آب + باد + آتش: باورتان بشود یا نشود ما همه ی این ها رو دیدیم ولی کسایی هستند که هنوز هم دوست دارن اینارو به اشتراک بزارن ، مثلا: در حالی که لیوان چایی توی دستش هست ، کنار آتیش ، لب دریا ، لب رودخونه ، بالای کوه و ارتفاع ، و مکان های گردشگری عکس میگیره ، یا یه جوری که یه قسمتی از بدنش (از جمله دست و پا و ...) توی عکس باشه که امضا شده باشه.این در اصل کلیشه نیست خیلی هم کار خوبیه ، ولی وقتی که از حد نگذره برای مثال: من توی اصفهان زندگی میکنم و وقتی که بعد از یه مدت طولانی زاینده رود باز میشه ، مردم میان کنار رودخونه و شروع میکنن به خوشگذرونی (که باعث خوشحالیه) ولی باور کنید تقریبا هر اصفهانی یه عکس با خانواده/دوستان/هم کلاسی ها یا حتی به تنهایی روی پل ها (سی و سه پل ، خواجو و ...) داره و واقعا نیازی نیست که ده تا پست یا استوری خرج نشون دادن تمام جزییات پل بشه (اون هم برای خود اصفهانی ها) ،در حالی که پیج هایی وجود دارن که کارشون این هست.بدترین حالت برای من دیدن چایی توی عکسه چون از چایی بدم میاد..3تبلیغات بد: اینستا جای خیلی خوبی برای تبلیغ و معرفی محصولات و ... هست تا وقتی که این باعث بد شدن وضع نشه. مثال: شما با هدف اینکه یه فرد معروف و محبوب رو دوست دارید ، پیج اون فرد رو فالو میکنید ، بعد هر شب تبلیغات اجناس به درد نخور که حتی یه بار هم توسط خود اون فرد مصرف نشده ، رو میبینید که حتی بعضی از تبلیغات حتی آبروی فرد رو هم مسخره میگیرن چون به شدت بی ربط هستن (اشاره به تبلیغ تیرآهن خانم بازیگر).4. فیلم و عکس های در_گردش: هر سال نزدیک مناسبت های خاص یه سری فیلم و عکس و متن به صورت خیلی خیلی گسترده دست به دست میشن که بعضی هاشون ارزش نگاه کردن رو ندارن و حتی قدیمی شدن و به اصطلاح «خز» شدن.مثال اول: نزدیک سال تحویل که میشه همه شروع میکنن به تبریک سال نو با عبارت های خیلی شبیه به هم ، عکس های تکراری ، فیلم های تکراری تر ... که حتما بار ها رو بار ها دیدید .مثال دوم: عبارات «یادی کنیم از این کلیپ تاریخی» ، «اگه اینو یادته داری پیر میشی» و «از این شرایط من فقط ؟؟؟؟ دارم» رو همه دیدیم و میدونیم که وقتی یه جدیدش میاد تقریبا هر جا بری میتونی اینو ببینی ، و یه سری پیج هستند که این ها رو به اشتراک بزارن و نیاز نیست که آدم حتما سوار موج به اشتراک گذاری بشه و همه رو به اشتراک بگذاره (یا حداقل خیلی جذاب ها رو استوری بذارید نه پست)5. پست و استوری یکسان: یکی از اعصاب خورد کن ترین ها وقتی هست که آدم یه بار پست طرف رو میبینه بعد اسکرین شات همون پست رو بدون تغییر و کاملا خوانا توی استوری خودش ، دوستش ، همکارش ، با جناقش و ... میبینه.چرا دوست دارید یه استوری رو صد بار ریپلای کنید ، هشتک الکی بسازید ، پشت سر هم همدیگه رو منشن کنید ، تمام جواب های یه سوال (ask me a question) رو بدون خوندن حتی متنش به اشتراک بذارید. این کار همیشه عقلانی نیست.6. یه روز خوب در فلان جا: یکی از دروغ های تکرار شدنی ، گذاشتن عکس + متن «یه روز خوب در فلان جا» هست در حالی که میدونیم خیلی از کسایی که اینو پست میکنن در واقع دارن پارت خوب ماجرا رو به اشتراک میزارن در حالی که حالشون اصلا چیزی نیست که میگن ، توضیحات بیشتر قسمت 7.7. دروغ: سیاه نمایی ، بزرگ کردن های الکی ، حرف بی ارزش و دروغ اجزای جدا نشدنی شبکه های اجتماعی هستن.برای درک بهتر مثال بالا ، چیزی که برای بیشتر مردم (از نظر من در جامعه ی ما بیشتر برای دختر ها) توی پست و استوری گذاشتن هست اینه که واقعیت رو نشون نمیدن ، مثال سفر:فرض کنید رفتید سفر و توی راه دوست دارید از طبیعت و جاهای جذاب سفرتون عکس پست کنید ، عکس میگیرید که توی اولین فرصتی که رسیدید خونه اونا رو آپلود کنید. در راه برگشت به صورت اتفاقی دعوایی بین دو نفر همراه شما اتفاق میفته (معمولا پدر و مادر) و وقتی میرسید محل اقامتتون حال و حوصله ی هیچ کاری رو ندارید و سفر براتون زهر شده و دوست دارید هرچه زودتر تموم بشه ، یه ساعت بعد عکس با لبخند و خوشحال پست میکنید و میگید یه روز خوب در فلان جا ، در حالی که روز خوب روزیه که با خوشی تموم بشه نه با ناراحتی .مثال اغراق: بعضی از مردم در مورد ظاهرشون ، رفتارشون ، کارشون اغراق میکنن. دیدیدم که فردی ادعای ثروت کرده و عکس های لوکس پست کرده در حالی که حتی اجناس ماله خودش نبوده. شاید بگید خوب این که اشکالی نداره ، درسته برای خودش شاید اشکالی نداشته باشه ولی وقتی این کار یعنی ثروت و زیبایی رو به رخ کشیدن زیاد بشه ، ادم ها باور میکنن که انگار همه اینقدر وضعشون خوبه ، همه زیبا هستن غیر از اونا ، پس بقیه هم به فکر ادا در آوردن و فیک_لاکچری بودن میفتند در حالی که هیچ سودی برای هیچ کس نداره.8. آه + ناله + درد: همه ی ما باز هم سراغ داریم کسایی که صبح تا شب مشغول فحش دادن ، نفرین کردن ، تقصیر گردن همه انداختن و در کل گفتن اینکه وضعشون چقدر بده (برعکس مثال بالا) هستن ، وقتی این افراد پاشون به اینستا باز شد یه عالمه فاز منفی به مدت خیلی طولانی تا الان حتی توی وضعیت اینستا فارسی وجود داره . کسایی که صبح تا شب در مورد گرانی ، دزدی ، مسئولین ، خوردن حقشون و ... حرف میزنن. البته حق دارن در موردش حرف بزنن ولی وقتی زیاده روی میشه که در مورد هر چیزی نظر میدن ، در حالی که حتی یه ذره هم نسبت بهش علم ندارن یا حتی شرایطش رو هم ندارن . یادم هست زمانی که برای FATF همه سر و دست میشکوندن که اون رو قبول یا رد کنن ، به یچند تا از این افرادی که در موردش حرف زده بودن پیام دادم و گفتم که تو متن قرارداد رو کامل خوندی ، همه گفتن نه و حتی نمیدونستن دقیقا در مورد چی هست ولی باز هم حرف خودشون رو میزدن .9. عکس و فیلم بد:واقعا خسته شدیم از بس که استوری در حال رانندگی و جاده دیدیم یا «عکس مثلا حواسش نیست» دیدیم. در حالی که عکاسی و فیلم برداری جز علوم هستن و اونا هم سختی دارن ، درس دارن ، تجربه نیاز دارن و ... ولی میبینیم که کسایی که اصلا ذوق و استعداد این کار رو ندارن دارن این کار رو انجام میدن . درسته ، همه نمیتونن حرفه ای باشن ، هر کسی در رشته ای حرفه ای هست و بقیه رو لازم نیست باشه ، ولی وقتی توی بیو مینویسه «عکاس/photographer» ، باید حتما و حتما عکس خوب بزاره وگرنه باز میشه همون مسئله ی دروغ . یه سوال دیگه اینه که چرا عکس بی کیفیت میزارید وقتی که میدونید که با یه سرچ ساده میتونید یه عکس با کیفیت تر پیدا کنید ؟ واقعا زمان بزارید برای مطالبی که به اشتراک میذارید.یکی دیگه از استوری های بد (معمولا) استوری کردن هر لحظه ی زندگی از هرجایی هست. ما چرا باید از تک تک جزئیات زندگی شما خبر داشته باشیم ، یا چطور باید بفهمیم که منظور شما از این استوری یا پست چیه وقتی دقیقا برای یه شخص این کار رو میکنین در حالی که همه میبینن ؟ پس یکم واقعا احترام برای مخاطب قائل باشید و چشم و هم چشمی ها و مسائل مشابه رو پست نکنید .یکی دیگه اینکه خدایی بس کنید ، واقعا اگه ذوق هنری ندارین ، خلاقیت ندارین کار هایی نکنید که نیاز به خلاقیت دارن. یادم هست که یه کلیپی که خارجی هم بود چند وقتی خیلی دیده شد . چند روز بعد نسخه ی ایرانی اومد اون باز هم خوب بود ، چند روز بعد دوباره یه نسخه ی دیگه اومد . واقعا بسه . آدم ها مگه چند بار میخندن ؟ دقیقا همه چیز یکسان بود.یا حتی وقتی که کلیپ «من باختم بدم باختم ...» رو برای هر چیزی به کار بردن واقعا دیگه روی مخ بود . حتی هستن کسایی که هنوز هم از این استفاده میکنن.10. چهره کسانی رو خراب کردن: برای این کار حتما نیابد که شما از فرد خاصی اسم ببرید ، کافیه بگید «همه مردا/زنای ایرانی اینطوری ان» و همین باعث میشه که شما به یه گروه از مردم توهین و ظلم کنید. وقتی میگین «همه» باعث میشه که استثنا ها رو در نظر نگیرید. به عنوان مثال: وقتی میگین که زن ها رانندگی بلد نیستن دارید دروغ میگید چون زن هایی هستن که راننده های حرفه ای هستن که از خیلی مرد ها هم بهتر هستن ولی چون شما فقط زن هایی که راننده ی خوبی نبودن رو دیدین ، فکر میکنید که این برای همه زن ها صدق میکنه (عکس قبلی)11. نخوندن متن: این بیشتر برای بیننده ها یا خواننده ها هست ، اینکه کامل یک متن رو نمیخونن. اگه متن بیشتر از 3 یا 4 خط بشه دیگه کسی اونا رو نمیخونه یا تعداد خیلی کمی اونا رو میخونن . این قضیه بیشتر برای استوری های اینستا هست چون مردم دوست دارن فقط ورق بزنن و رد بشن و خیلی مهم نیست که چیزی نوشته شده یا نه ، یا خیلی دوست دارن که سطحی باشه ، کم باشه یا حداقل خیلی جذاب باشه .ولی در کل حوصله ی افراد مخصوصا کسایی که برای رودربایستی و ... شما رو فالو کردن ، برای موضوعات مورد علاقه ی شما خیلی کمه ؛ در حالی که حاضرن ساعت ها توی اینستا سرگرم باشن و بچرخن (وقتکشی) ولی پست و استوری های شما رو نبینن.12. امیدفروشی: پیج هایی هستند که کارشون انرژی بخشیدن ، آینده نگری کردن ، موفقیت درس دادن ، و سخن بزرگان نشر دادن و به قول دوستان امید فروشی هست. با اینکه هر کسی در یه مقطع زمانی شاید به این کار نیاز داشته باشه و بهتر باشه که از این راه خودش رو بهتر کنه و روحیش رو بالا ببره ولی صرفا باعث نمیشه که هر کسی از این پست ها بزاره . حتما جمله ی «آینده ای خواهم ساخت که گذشته جلویش زانو بزند» رو دیدین . خب شاید بهتر باشه این کار رو به بعضی پبج ها که ماهیتشون این هست بسپارید نه اینکه از هر ده تا پست 8 تاش این موضوع باشه .13. جنگ با دشمن خیالی: احتمالا باز هم دیدید کسایی که معلوم نیست با کی و برای چی دعوا/بحث/جدل و ... کردن که پست های غالبا دپ ، شاخ ، در آرزوی مرگ و ... میزارن . خب وقتی ناراحت هستید و نمیگید چی شده یا با کی چی شده ، خب اصلا چرا پست و استوری میزارید ؟ اگه قرار ما هم در جریان باشیم که خب بگید اگه هم نه ، اون شخص رو توی کلوز فرندز (Close Friends) اضافه کنید و اون موقع فقط برای اون بزارید یا حتی توی دایرکت هم میتونید اونو بفرستید .توجیه ها :1. اگه نمیخوای فالو نکن: بیشترین استفاده از این عبارت میشه در حالی که کسی نیست بگه من برای چیز دیگه ای تو رو فالو کردم ، برای وقت دیگه ای ، در حالی که تو عوض شدی . در این چند سال دیدیدم کسایی که سلبریتی هستن چطور تغییر کردن . برای مثال : اگه قرار نیست که نظر مردم رو بدونی چرا کامنتت رو باز میزاری ؟ چرا نظر مردم رو میپرسی ؟ چرا از هر گوشه ی زندگیت فیلم و عکس میزاری ولی بعد میگه که من فضول و کنجکاو و ... نمیخوام ؟ خب خودت اینکار رو کردی پس چرا الان عوض شد رفتارت ؟2. ما تولید محتوا میکنیم: یکی از بدترین توهین ها به کسایی که به صورت واقعی تولید محتوا میکنن دقیقا این جمله ست در حالی که توسط یه فرد به ظاهر اینکاره گفته میشه . خیلی ها هستن که تولید محتوا میکنن که بیشترشون خوب و زیبا و به درد بخورن ولی کسی که فقط کپی میکنه ، از خودش ابیات مسخره میسازه (خانوم بازیگر) ، علوم غیر منطقی و غالبا بدون علم و آگاهی رو تبلیغ میکنه یا خودش رو خیلی دانا میدونه ، میگه که من تولید محتوا میکنم در حالی که بازم هم بر میگردیم به مسئله ی دروغ .3. آب و نون: کسایی هم هستن که میگن ما از این راه درآمد داریم و اصلا برامون مهم نیست که چیکار میکنیم . شاید شبیه انتشارات و موسسه های کنکور باشه قضیه . این ها به خاطر درآمد بیشتر تقریبا دست به هر کاری میزنن ، از عوض کردن اهداف آموزشی تا وارد کردن استرس و ترس به دانش آموز و دانشجو فقط و فقط برای درآمد خودشون .ما میبینیم که کسایی که هیچ استعدادی در یه زمینه ای ندارن ، در حال استفاده از اون هستند ، در حالی که به نظر صاحبان نظر در حال ضربه به حرفه هستن مثل: آقای بازیگر خواننده. اینستا هم به همین شکله ، کسایی هستن که در حال عوض کردن سطح سواد ، شعور و خیلی چیزای دیگه ی مردم هستن در حالی که براشون مهم نیست.4.مخاطب دارم : حتما دیدید که کسایی با فالور های خیلی بالا وجود دارن که فقط به خاطر این که فالور یا لایک پست هاشون زیاده میگن که مخاطب دارن . ما میدونیم که دارن دروغ میگن . فالور و لایک و کامنت خریدنی هست و همه میتونن تعداد زیادی داشته باشن در حالی که مخاطب داشتن به اینه چقدر پیش دل مردم ارزش داری و چقدر دوستت دارن نه اینکه چند نفر دنبالت میکنن.راه حل ها :قرار نیست که ما جلوی این پست ها رو بگیریم یا عوضشون کنیم یا اینکه از امروز به همه توهین کنیم ، هدف صرفا گفتن یه سری حقایق بود برای اینکه بدونیم داریم تکراری میشیم ، داریم کلیشه هایی رو انجام میدیم که ارزشی ندارن ،  خوب نیستن (شاید بودن ولی دیگه نیستن) و سعی کنیم بهتر بشیم .1.خلاقیت و نوگرایی : یکی از آرزو های من اینه که همه از زوایای مختلف به موضوعات به پردازن ، خلاقیت خودشون رو نشون بدن ، همش تکرار و کپی نباشه و اینکه همه از همدیگه الگو بگیرن نه شباهت . این با یکم جدید تر کردن میشه خیلی بهتر کرد . خریدن یه دوربین جدید ، استفاده از یه افکت جدید ، یه روش عکاسی جدید ، یه موضوع یا جای جدید یا هر چیزی که باعث خلاقیت بشه .2.خود واقعی بودن : بیاین خودمون باشیم ، با هر زشتی با هر تیپ و قیافه (البته نه چیزی که حماقت باشه) ، نه زیر یه عالمه لایه و افکت و آرایش و ... پنهان بشیم . البته این کار فقط وقتی نتیجه میده که همه اینطور باشن نه اینکه فقط یه سری ، چون وقتی این فرهنگ مسخره هنوز توی مردم ما باشه که همدیگه رو به عنوان های مختلف مسخره کنن ، این درست بشو نیست .3.محتوای با ارزش : چرا کسی از سفری که رفته یه خلاصه ، یه سفرنامه یه گزارش گونه نمینویسه ؟ چرا عکس های واقعا زیبا که با خانواده گرفتین رو به اشتراک نمیزارید ؟ فیلم و موزیک خوب معرفی کنید . کتاب معرفی کنید . قسمتی که دوست داشتید رو به اشتراک بزارید و بزارید که همه لذت ببرن ، از دیدن مطالب با ارزش .4.محتوای آموزشی : اگه واقعا توی یه رشته حرفه ای هستیم چرا تجربه مون رو به اشتراک نزاریم ؟ چرا چیزایی که بلدیم رو یاد بقیه ندیم ؟ یکی از زیبا ترین کارهایی که میشه کرد آموزشه . به نظر یکی از دلایل برتری یوتیوب نسبت یه اینستا همین آموزش هست که اینستا تقریبا فقیره . میتونید محتوایی که برای مردم به درد بخور هست ، خودتون دوست دارید و موضوعات جذابی هستن رو به اشتراک بزارید .5. همه جا یکسان بودن : احتمالا دیدین که وقتی ایرانی ها به خارج از کشور سفر میکنن یه روی دیگه ای رو از خودشون نشون میدن ، یا حتی وقتی مهمون میاد .باور کنید در کل آدم های چندرویی هستیم و هر زمان و هر مکان 180 درجه چرخش میکنیم ، درسته که هر نکته و حرف مکان و زمان خودش رو داره ولی این همه تفاوت واقعا آزار دهنده ست .اگه اهل شبکه های اجتماعی باشید ، حتما شاهد این بودید که رفتار کلی ایرانی ها در پلتفرم های متفاوت خیلی متفاوته ، مثال های معمولی :اینستاگرام : زیبا ، همیشه خوش و خندون یا دقیقا برعکس ، دارای بدخواه ، مود خاص ...توییتر : مبتذل ، برنداز (بدون قصد توهین) ، واقعی ، هشتک هشتک و ...تلگرام : بی ادب ، فیلم و عکس و موسیقی باز ، کتاب خوان ، مفکر و مدافع حقوق زنان و ...یوتیوب : با ادب ، مبتکر ، یوتوبر معروف و محبوب با تجهیزات عالی ، گیمر و ...ویرگول : ؟؟؟در کل شاید خیلی از مقاله برای شما صدق نکنه ، خب خداروشکر ؛ ولی برای اون قسمتی که صدق میکنه ، چه بسا بهتره که بیاید همگی با هم به فکر درست شدنش باشیم. به امید روزی که عقل و انسانیت برای همه نمایان بشه .اگه نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید . اگه دوست داشتین و به دردتون خورد حتما لایک کنید .مقاله های من :پر بازدید ترین: https://vrgl.ir/7QhRq بقیه مقاله ها: https://virgool.io/@Bestmahdi2 telegram: @bestmadi2instagram: @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Sun, 20 Sep 2020 10:33:01 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی: پیداکردن جواب های بازی آمیرزا با پایتون3 (و PyQt5)</title>
                <link>https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq</link>
                <description>Amirza hacker هکر آمیرزاUpdate:1 ==&gt; 27/12/98سلام خدمت دوستان تازه واردِ برنامه نویسی ، تازه واردِ پایتون ، سنیور های برنامه نویسی و ... توی این آموزش میخوام که بهتون روش ساختن یه برنامه برای پیدا کردن جواب های بازی آمیرزا و بازی های مشابه رو بهتون یاد بدم . کار سختی نیست واقعا و با یک ماه تجربه ی برنامه نویسی پایتون هم میشه (یکماه من البته ==&gt; روزی 5 - 6 ساعت تمرین) .تذکرات :  اول : متاسفانه این مقاله رو فقط بر اساس سیستم عامل ویندوز مینویسم چون اگه بخوام لینوکس یا مک رو هم اضافه کنم خیلی خیلی زیاد میشه و هم خودم و هم شما سر در گم میشیم، پس بهتره کسایی که سیستم عامل های دیگه ای دارن ، معادل هر نرم افزار یا دستور در powershell و cmd رو خودشون پیدا کنن ، البته خیلی سخت نیست و با یه سرچ خیلی ساده توی گوگل پیدا میکنین .   دوم : بعضی از قسمت ها رو مجبورم لینک های آموزشی رو قرار بدم چون برای یادگیری حرفه ای و کاملشون نیاز به یه مقاله ی جدا و خیلی زیاده . البته سعی کردم بهترین ها رو براتون پیدا کنم که مجبور به سرچ کردن نباشین و بعضی رو هم یه مختصر براتون نوشتم.   سوم : اگه کاربر حرفه ای در برنامه نویسی و پایتون هستین یا اینکه حال و حوصله خوندن این همه ندارین و یهو میخواین برین سراغ کد ها ، برین به این لینک یا اینکه کل نصبیجات و آموزشی ها رو رد کنین و برین به قسمت اصلی .چهارم : همه فایل هایی که توی مقاله استفاده میشن توی لینک بالا هستن . https://github.com/bestmahdi2/AmirzaHacker  https://vrgl.ir/DSpJJ نصبیجات:خب یه عالمه چیز میز هست که باید قبل از شروع به کار نصبشون کنین ، اگه جایگزین بعضی برنامه ها رو دارین ، اشکالی نداره و خیلی مهم نیست(اگه از قبل نصبشون کردین مستقیم برین به قسمت اول)نصب پایتون :از این لینک آخرین یا هر نسخه ای از پایتون(البته نسخه تون حتما با 3 شوع بشه) که دوست دارین رو دانلود کنین .بعد از دانلود وقتی فایل رو باز میکنین تیک add to path رو بزنین .add to pathاین گزینه یعنی add to path باعث میشه که از هرجایی از هارد کامپیوترمون که بودیم بتونیم پایتون رو فقط با python صداش کنیم .نصب pycharm :یکی از بهترین IDE ها برای پایتون محسوب میشه و یه عالمه ابزار خوب بهتون میده البته میتونین نسخه ی رایگان(community) رو از سایت سازنده یا نسخه کامل رو از این سایت دانلود و نصب کنین .نصب notepad++ :اگه نمیتونین نرم افزار بالا رو نصب کنین (جا ندارین ، کامپیوترتون نمیکشه یا هر دلیل دیگه) این هم میتونه یه نرم افزار خوب باشه ، از این لینک دانلود کنین .نصب pyinataller :با pyinstaller میتونیم کد های پایتونمون رو که با پسوند py ذخیره شدن به پسوند exe تبدیل کنیم تا توی بقیه ی کامپیوتر هایی که حتی پایتون رو هم نصب ندارن اجرا بشه .برای نصب cmd یا powershell رو در حالت administator باز کنین و بنویسین :pip install PyInstallerنصب PyQt5 , pyqttools :در واقع Qt به ما کمک میکنه که یک GUI یا رابط کاربری گرافیکی برای برنامه هامون بسازیم و pyqt مخصوصا برای پایتون نوشته شده . در همون cmd یا powershell بنویسین :Pip install PyQt5
Pip install pytq5-toolsاگه تازه وارد برنامه نویسی شدین یا اینکه با زبان پایتون هنوز آشنایی کامل ندارین ، این قسمت رو بخونین ولاغیر از قسمت پایین رد بشین.آموزشی برای خیلی مبتدی :انواع داده یا شی در پایتون : قسمت یک - قسمت دو دستورات شرطی : با if ، else و elif (معادل else if در بقیه زبان ها) نوشته میشن و برای کد هامون انواع و اقسام شروط رو میزارن برای آشنایی کامل به این لینک مراجعه کنین .تابع: به بلاکی از دستورات گفته میشه که برای اجرا شدنشون باید اونا رو فراخوانی کرد البته میشه بیشتر از یک بار هم اینکار رو انجام داد. تابع می‌تونه هنگام فراخوانی مقادیری دریافت کنه و اگه نیاز باشه مقدار یا مقادیری رو هم به عنوان نتیجه برگردونه . آموزش هم اینجاست.کلاس : یکی از مفهومی ترین قسمت یادگیری زبان های برنامه نویسی هست و همین باعث میشه که فقط یه مثال براتون بزنم : یه کارخونه ی بزرگ خودروسازی رو یک کلاس در نظر بگیرین ، که هر قسمت این کارخونه برای یه کاری هست ، یه قسمت برای سیستم چرخ ها ، سیستم سوخت و ... (البته هر کلاس میتونه کلاس های کوچکتری هم داخل خودش داشته باشه) . هر کلاسی از اشیایی که داخل قرار داره به موجودیت پیدا میکنه ، پس با ایجاد کردن هر نمونه از کلاس کارخونه ، یک شی یا موجودیت جدید ایجاد میهش که مثل کارخونه اصلی ، تمام ویژگی ها و اشیای داخلش رو داره . شی یا اشیا رو خودرو ها در نظر بگیرید . ==&gt; برای بهتر فهمیدن این غول بهتره به این لینک مراجعه کنین .ارث بری : از ویژگی های شی گراییه و باعث میشه که یک کلاس از یک کلاس دیگه بتونه استفاده بکنه بدون اینکه مجبور باشیم همه ی کد ها رو بهش اضافه کنیم . (لینک بالا این رو هم نوشته)کتابخونه : مجموعه کدهایی که برای انجام کاری مشخص، از قبل نوشته شدن و در یک جایی ذخیره شدن. برای استفاده از اون ها، فقط باید اون ها رو در درون کدهای خود فراخوانی کنیم.دیزاینر PyQt5 : در واقع این یه نرم افزار گرافیکی برای استفاده از pyqt بدون اینکه مجبور باشیم یه عالمه کد بزنیم هست . آدرس محلی که پایتون رو نصب کردین رو باز کنین و به این پوشه وارد بشین و designer.exe رو باز کنین:&amp;quotwhere you installed python&amp;quot    ==&gt;     \Lib\site-packages\pyqt5_tools\Qt\bin https://vrgl.ir/CWo9g روش کار برنامه:قراره برنامه مون چند حرف گرفته و تمامی حالت های ممکن رو باهاشون کلمه بسازه و بره و توی دیتابیس دیشکنری کلمات فارسی که بهش میدیم بگرده و معنی دار ها رو جدا کنه و در آخر بهمون نشونشون بده .خیلی خب دیگه مقدمه بسه و بریم سراغ کد ها.باید معذرت خواهی کنم که چرا کد ها رو به صورت عکس قرار میدم ، خب چون وقتی میخوام کد ها رو توی ویرگول کپی کنم به شدت بد میشن و مجبور برای اینکه فاصله ها و تب ها مشخص باشه ، عکس بگیرم ولی شما میتونین از لینکی که اول گفتم کد ها رو دانلود کنین و استفاده کنین .قسمت اول ، کد های پایتون :الف)ایمپورت کردن کتابخانه ها و تعریف کلاس و تابع amirzafunc :first stepاول از همه پروژه ای توی IDE خودتون بسازین ، زبان پایتون رو انتخاب کنین ، فایلی به نام Amirza.py بسازین و شروع کنین به برنامه نویسی در اون فایل .خط 1 تا 11 : اول از همه باید کتابخونه هایی که توی برنامه قراره ازشون استفاده کنیم رو ایمپورت کنیم ، پس طبق خط یک و دو واردشون میکنیم (بعدا توضیح میدم اینا چی ان)توی خط 5 کلاس برنامه مون رو تعریف میکنیم ، بعد هم تابع اصلی برنامه مون . این تابع قراره اول از همه یک text بگیره ، خط فاصله رو تبدیل به کاراکتر فاصله ، دوفاصله رو تبدیل به یک فاصله کنه و بعد بعد اون رو تبدیل به لیست کنه (با split بر اساس کاراکتر فاصله اون رو به لیست تبدیل کنه) ، البته شما میتونین قسمت تبدیل خط فاصله به کاراکتر فاصله رو ننویسین و بجاش ، و با split رشته رو با کاراکتر - از هم جدا کنین .شاید جای سوال باشه که اون char و i ماله چیه ؟ خب باید بگم که char مقدار اولیه برای تعداد حروفی که میخوایم در برنامه استفاده باشه ، معمولا در بازی آمیرزا حداقل از 3 حرف در کلمه استفاده میشه . اون i هم شمارنده ست که بعدا میگم ماله چیه .لیستی که در خط 11 به نام lister دارین میبین قراره تمام حالت های ممکن رو برامون ذخیره کنه ، حتما میگین حالت های ممکن برای چی ؟ ببینین مثلا برای ساخت کلمه با حروف (گ خ ل ا م ن) ، میتونیم صداها جور حروف رو بقل هم بچینیم و باهاشون کلمه بسازیم ، از سه حرفی گرفته تا شش حرفی ==&gt; پس این لیست میاد و تمام حالت های سه حرفی رو در اولین عضو ذخیره میکنه ، تمامی حالت های چهار حرفی رو در عضو دوم و همینطور تا آخر ، اوکی ؟ پس به طور پیش فرض عضو هاش رو میزاریم default چون نمیدونیم که چند حرف کاربر به برنامه میده (البته روش های خلاقه و بهتری هم برای اینکار وجود داره ، خوبه که فکر کنین و خودتون کشفشون کنین)خط 13 تا 16 : اولا از همه باید در مورد permutations توضیح بدم ، این تابع درونی ، یک لیست و یک عدد میتونه بگیره و بر اساس اون عدد ، تمام حالت هایی ممکن رو با اعضای لیست بسازه ، مثلا :میخوایم با حروف a b c d تمامی حالت هایی که میتونن کنار همدیگه قرار بگیرن رو بسازیم . پس :permutationsباید بدونین که باید permutations رو به لیست تبدیل کنین که قابل پرینت باشه.خروجی که بهمون میده خیلی زیاده ، این یه بخشی ازش :listحالا اگه بهش یه عدد هم اضافه کنیم چی میشه ؟ add a numberlistمتوجه شدین؟ دفعه قبل با هر چهارتاشون حالت های ممکن رو میساخت ، الان با دو تا میسازه .بریم سراغ کد خودمون ، خط 13 تا 16 میگه ، تا وقتی که char کوچکتر مساوی تعداد کاراکتر ها توی textlist هست ، بیا و تمامی حالت های ممکن رو با textlist بساز و بزارشون توی یک عضو از lister ، یکبار چک کنیم :مثال : حروف &quot;ا ب ت خ ن و&quot; رو توی لیست بهش میدیم ، اون میاد و اول از همه که char برابر 3 هست ، تمامی حالت های سه حرفی ها رو میسازه و توی عضو اول(ایندکس لیست ها از صفر شروع میشن پس [0]lister) قرار میده . بعد یکی به char و یکی به i اضافه میکنه تا دفعه ی بعد چهار حرفی ها (char=4) رو توی عضو دوم (i=1) قرار بده و ...الان اگه lister رو پرینت کنین ، میبینین که که چندین لیست توی یک لیست قاتی پاتی شدن و هیچی ازش سر در نمیارین :)))) خب اشکالی نداره ، بعدا درست میشه .ادامه :30 - 18توی این قسمت از کدهامون ، یک لیست جدید تعریف میکنیم و یک دستور for تا مقادیر default رو از lister قدیمی حذف کنه و بقیه رو بریزه توی lister_new (از خط 18 تا 22)حالا یک متغییر تعریف میکنیم تا مقدار نهایی رو برامون ذخیره کنه ، اینکه چرا از self اولش استفاده میکنیم ، دلیلش اینه که شاید بعدا بخوایم این مقدار رو توی فایل(کلاس و ...) دیگه استفاده کنیم .خط 26 تا 28 : این قسمت ماله اینه که بگیم هر کدوم از قسمت ها(i) رو از lister جدا کن (مثلا : سه حرفی ها ، چهار حرفی ها و ...) ، بعد بیا و هر مقدار(k)  رو از قسمت ها جدا کن و حروفش رو به هم دیگه بچسبون و در آخر بریزشون توی self.ultimList تابع join برای تبدیل لیست یا تاپل به رشته استفاده میشه ، اول کاراکتری رو میگیره که باید بین عضو های لیست یا تاپل باشه ، بعد خود لیست رو ؛ البته میشه کاراکتر رو وارد نکرد که به هم دیگه بچسبن.حالا ممکنه که حروف تکراری در اول برنامه وارد کرده باشیم و برای همین کلمه های تکراری هم ساخته شده باشن (میگین نه ؟ حروف رو بدین &quot;ب ا ب ا&quot; تا ببینین که چهار تا &quot;بابا&quot; براتون میاره :/) ولی اگه خط 30 رو اضافه کنیم ، دیگه این مشکل پیش نمیاد .ب) ساختن کانکشن دیتابیس و ذخیره کردن کردن داده ها در diclist :44 - 32تابع اول و دوم مربوط به بخش sqlite هست(همون که اول از همه ایمپورت کردیم) و دقیقا از داکیومنت sqlite کپی کردم ، شما هم میتونین این کارو انجام بدین فقط باید یه توضیح در مورد خط 39 بدم :اینکه با هر نرم افزاری که دوست دارین مثلا navicad فایل Moin.db رو باز کنین:navicadمیبینین که mdx اسم جدول و entry اسم ستونه ، پس اگه از دیتابیس دیگه ای استفاده میکنین باید اونا رو وارد کنین .خط 42 تا 44 : این قسمت میاد و یک متغییر self.diclist میسازه و برای هر ردیف مقدار بدون پرانتز و ویرگول رو واردش میکنه (اگه متوجه نشدین یه بار بدون [row[0 وارد کنین و diclist رو پرینت کنین تا ببینین چه شکلی میشه .پ) اجرا :60 - 49خط 49 و 50 که مشخصه ، یه ابجکت از کلاس میسازیم و مقدار دهی هم میکنیم ، خط 52 و 53 هم مربوط به دیتابیس مون هست ، فقط حواستون باشه اگه دیتابیس دیگه ای دارین اسم اون رو وارد کنین.خط 55 تا آخر : یک لیست جدید میسازیم که جواب رو بهمون نشون بده ، یعنی جواب بدون تکرار ، از دیتابیس گذشته ، سر و سامون گرفته و ... ، پس میگیم که بیا و به ازای هر مقدار ultimList_undup که توی diclist هم بوده ، به لیست answers اضافه کن .در آخر هم که answers رو پرینت میکنیم.البته میتونین به جای اینکه حروف رو مستقیما بهش بدین ، حروف رو با ()input از کاربر بگیرین .قسمت دوم و سوم فقط برای تبدیل ظاهر ترمینال به یه ظاهر گرافیکی هست و اگه ظاهر گرافیکی نمیخواین میتونین از این دو قسمت عبور کنین.قسمت دوم ، فقط PyQt5 :خب Qt designer رو باز کنین(توی آموزشی گفتم کجاست):Qt designerیک فایل جدید باز کنین . اندازه و رنگ و صد جور چیز دیگه توی قسمت سمت راستتون میتونین ببنین و تنظیمشون کنین . از قسمت چپ هم میتونین انواع ویجت ها رو وارد برنامه تون کنین .این مرحله رو به خودتون میسپارم که هم دستتون راه بیفته ، هم دیگه خیلی آسونه همه چی واضحه دیگه .فقط چند تا چیز رو رعایت کنین که برای برنامه تون حتما سه تا checkbox ، دو pushbutton ، یک textbrowser ، یک lineEdit و حداقل یک label برای نشون دادن ارور در نظر بگیرید . اگه دوست دارین یک progressbar هم اضافه کنین تا بفهمیم برنامه کجای کاره. (میتونین اضافه نکنین و توی قسمت بعدی هم کد هاش رو ننویسین)اگه توی این مرحله موفق بشین باید یه همچین چیزی داشته باشین :amirza_ui.uiالان یک پوشه(دایرکتوری) جدید به اسم ProgramFile توی پوشه ای که برنامه ی اصلیتون(پروژتون) وجود داره بسازین و فایلتون رو اونجا save کنین .الان میخوایم این فایل با پسوند ui رو به کد های پایتون تبدیل کنیم .روش تبدیل ui به py :خیلی  ساده با powershell به دایرکتوری ProgramFile برین و بزنید :Pyuic5 -x -o Amirza_ui.py Amirza_ui.ui
یا 
python -m PyQt5.uic.pyuic -x Amirza_ui.ui -o Amirza_ui.pyاول اسم فایلی رو که میخواین بهش تبدیل بشه و دوم هم اسم فایل اصلی با پسوند ui رو وارد کنین . الان یدونه Amirza_ui.py برای ما ساخته شد که بتونیم ازش استفاده کنیم .تمام ، الان فقط کافیه بریم سراغ قسمت بعدی تا برنامه ها رو سر هم کنیم .قسمت سوم ، سرهم کردن برنامه :این قسمت با قسمت اول یکم فرق میکنه چون اولا باید یه بخشی از کد ها قبل رو تغییر بدیم (که بهتون میگم) دوما اینکه کارکرد برنامه به یه شکل دیگه ست و باید یه جور دیگه برنامه مون رو تنظیم کنیم .روش کار :خب روش کار اینه که کاربر توی lineEdit چند حرف رو با کاراکتر فاصله یا - وارد میکنه ، با انتخاب یک یا چند تا از checkbox ها میگه که کلمات چند حرفی میخواد ،با زدن go این حروف وارد برنامه ای که توی قسمت اول نوشتیم میشن و جوابشون دوباره برمیگرده ،بعدش تعداد جواب ها وارد progresbar میشن و بعد هر بار که کلمه توی database چک میشن ، progresbar پیشرفت میکنه . اگه کاربر وسط کار برنامه cancel رو فشار بده برنامه قطع بشه ، چند تا شورتکات اضافه میشه و چند تا شرایط خاص هم مد نظر هست که ارور خودشون رو برگردونن .بریم سراغ کد ها :اول از همه باید فایل py قبلی رو به پوشه ProgramFile که ساختیم انتقال بدیم ، و در پوشه ی اصلی یک فایل compiler.py بسازیم ، داخل دایرکتوری اصلی :Main directoryداخل ProgramFile :ProgramFile directoryاون فایل آیکون چیز خاصی نیست ، بعدا که خروجی exe خواستیم بگیریم ازش استفاده میکنیم .تغییرات قسمت اول :خب یه بخش زیادی رو باید تغییر بدیم ، اگه برین توی سایت گیت ، فایل amirza.py فایلی هست که باید استفاده کنیم و فایل amirza_virgool.py فقط برای قسمت اوله .تغییراتی که باید بدیم اینجا ها باید باشه :newمتغییر جدید number برای دریافت عدد checkbox هست .گفتیم سه تا checkbox میزاریم ، اولی برای سه حرفی ها (عددش رو هم سه میزاریم) ، دومی برای چهار حرفی ها (عدد 4) و آخری هم برای 5 و بیشتر (عدد 5) .حالا اگه دو تا یا سه تا از checkbox ها انتخاب شده بودن باید چیکار کنیم ؟  یه راه اینه که عددشون رو با هم جمع کنیم و یه حالت جدید بنویسیم .مثلا checkbox3 و checkbox4 با همدیگه انتخاب شدن ، پس جمعشون میشه 7 و number عدد هفت رو بهمون میده .البته باید بهتون بگم که این گرفتن شماره checkbox و جمع کردن و ... توی فایل compiler قرار میدیم نه اینجا.مثلا این یه نمونه از کد ، که میگه اگه number عدد 12 باشه ، یعنی همه ی checkbox ها انتخاب شدن و :if clausesبقیه رو هم میسپارم به خودتون ، یکم خلاقیت به کار ببندین و انواع کد ها رو امتحان کنین ولی یه تقلب کوچولو :if clauseبریم سراغ اصل کار .فایل compiler.py :8 - 1اول از همه کتابخونه هایی که pyqt نیاز داره رو ایمپورت میکنیم بعد هم که Amirza و Amirza_ui رو .خط 6 و 8 فقط برای اینه که مانیتورهای (high dpi (4k برنامه مون رو ساپورت کنن و کوچیک نشه ، مثل این:ببینین چی شد اصلا :|تو قسمت بعدی ، کلاس اصلی برنامه رو تعریف میکنیم و از کلاس Ui_MainWindows که داخل Amirza_ui بود سابکلاس میگیریم .خط 12به معنی اینه که هر چی در تابع اصلی بوده رو اینجا هم استفاده کن . خط 13 برای کلید cancel هست که اگه false باشه یعنی روش کلیک نشده و true یعنی روش کلیک شده .خط 14 برای نگه داشتن همون number قسمت قبل هست .MainClassخط 18 و 19 که برای اضافه کردن شورتکات برای کلید go هست ، یعنی وقتی Enter روی صفحه کلید فشرده شد ، همون کار انجام بده .تابع number_adder_func برای اضافه کردن مقدار به number هست که بعدا ازش استفاده میکنیم checkbox_checker_funcتابع checkbox_checker_func برای اینه که اول از همه انتخاب شدن هر کدوم از checkbox ها رو بررسی میکنه و بعد هر کدومش که انتخاب شده بود رو یه عدد میفرسته به تابع number_adder_func تا به عدد num اضافه کنه .خط 38 : اگه هیچ کدوم از اون ها انتخاب نشده بودن ، قراره رنگ متن در ErrorLable رو قرمز کنه و پیام خطا نشون بده (که یعنی یکی از اون ها رو انتخاب کن ، همینجوری که نمیشه ...)خط 42 : اگه حداقل یکی از اونها انتخاب شده بود ، برو به تابع بعدی .empty_entrance_funcاین تابع قراره چک کنه که متنی که وارد شده خالی نباشه ، اگه خالی بود ، متن ارور رو نشون بده ولاغیر بره به تابع بعدی .قبل از اینکه بریم سراغ تابع اصلی برنامه ، یه تابع دیگه هم اضافه میکنیم که چک کنه ببینه حتما ما داریم حروف فارسی وارد برنامه میکنیم یا یه زبان دیگه :language_checker_funcخط 64 : اگه اشتباه وارد کنیم ، کلید go رو غیرفعال میکنه .مهم ؛ خط 65 و 70 : این یکی کد مهم در برنامه مونه ، اگه این تیکه نباشه ، در حین اینکه داره این حلقه انجام میشه ، هیچکار دیگه ای نمیشه با برنامه انجام داد و هنگ میکنه ولی این باعث میشه که بازم بشه با برنامه کار کرد(مثلا cancel رو زد یا یه حرف دیگه وارد کرد)ادامه:pushB_clickedوقتی go فشرده میشه ، خط 74 تا 87 که به شدت واضحن ، اجرا میشن ، ادامه :108-89خط 90، مقدار ماکزیمم (آخرین درجه) برای progressbar رو بر اساس تعداد جوابی که Amirza  میده ، تنظیم میکنه .تابع cancel که واضحه ، خط 96 هم که میگه وقتی cancel فشرده شد برو به تابع cancel .خط 99: به ازای هر مقدار در ultimList_undup ، یکی به اندازه ی progressbar اضافه کن ، اگه اون مقدار در دیتابیس بود بیا و در answers اضافه کن .خط 103 هم چک میکنه اگه cancel زده شده باشه ، دیگه حلقه رو ادامه نده و بزنه بیرون ازش .116-105خط 105: امتحان کن که خط 106 باز هم چک میکنه که کلمه ی تکراری توی لیستمون نباشه .خط 107 : تابع join یک یا چند کرکتر رو با یک لیست اقدام میکنه و بین هر عضو لیست ، اون کاراکتر ها رو قرار میده .خط 110 : اگه خطوط 106 تا 108 ناموفق بود ، ارور رو نشون بده و wrong رو هم بزار true (یعنی یه مشکل توی برنامه پیدا شد)خط 114 : اگه مشکلی توی برنامه وجود نداشت (wrong == False) قسمت آخر یعنی finish رو نشون بده .قسمت آخر و لذت بخش کدمون :131-119از 120 تا 122 و 130 تا 131 ماله خود Qt هست و بزارین سر جاش بمونه ، خط 123 و 124 : هم واضحهخط 126 : هر دفعه که lineEdit ادیت میشه (یه چیزی توش وارد میشه یا پاک میشه) ، کانکت میشه به اون تابع .خط 127 : هر موقع هم که کلید go فشرده شد ، وصل شو به اون تابع .تمام . اگه یکم گیج شدین اشکالی نداره ، دوباره بخونین ، حتما میفهمین .خب اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید . اگه دوست داشتین و به دردتون خورد حتما لایک کنید .مقاله های من :پر بازدید ترین :  https://virgool.io/@Bestmahdi2/%D9%86%D8%B5%D8%A8-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%B1%D9%88%DB%8C-%DA%AF%D9%88%D8%B4%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%D8%AA%D9%88%D9%86-%D8%A8%D8%A7-%D8%B1%D9%88%D8%AA-%D8%A8%D8%AF%D9%88%D9%86-%D8%AA%D8%B1%D9%85%D9%88%DA%A9%D8%B3-oyglehw8nbrn بقیه مقاله ها : https://virgool.io/@Bestmahdi2 telegram : @bestmadi2instagram : @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Mon, 16 Mar 2020 10:38:39 +0330</pubDate>
            </item>
                    <item>
                <title>لینوکس: ریز بودن اپ های wine و gimp در صفحه نمایش HiDPI displays) 4k)</title>
                <link>https://virgool.io/@Bestmahdi2/%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%B1%DB%8C%D8%B2-%D8%A8%D9%88%D8%AF%D9%86-%D8%A7%D9%BE-%D9%87%D8%A7%DB%8C-wine-%D9%88-gimp-%D8%AF%D8%B1-%D8%B5%D9%81%D8%AD%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-hidpi-displays-4k-vhetqcrgnmyw</link>
                <description>4k monitorسلام دوستان. صد در صد این مشکل که اپ هایی مثل wine و gimp و ... صفحه های با رزولوشن بالا رو روی لینوکس ساپورت نمیکنن روی اعصابتون رفته , خب من امروز سه روش پیدا کردم که گفتم بیام و اینجا بهتون بگم البته روش های دیگه ای هم شاید باشه نمیدونم .روش اول(فقط برای wine):wineاگه wine رو از قبل نصب کردین , توی ترمینال بزنین :winecfg صفحه ای مثل این براتون باز میشه :میبینین که این صفحه چقدر کوچیکه , خب باید برین توی سربرگ Graphics و نوار screen resolution رو تا 210 بالا ببرین (البته بستگی داره به چیزای دیگه هم داره ها حالا امتحان کنین ببینین چی میشه) و ok رو بزنین . واینحالا برای امتحان کردن میتونین دستور زیر رو وارد کنین یا همون پنجره ی قبلی رو باز کنین . من explorer رو باز میکنم :wine explorerwineمیبینین که اندازه ش بزرگتر شد و حالا میشه باهاش راحت تر کار کرد .روش دوم run_scaled (برای بیشتر نرم افزار ها):run_scaledتوی این روش ما از یه اسکریپت و چند تا اپ دیگه استفاده میکنیم .الف)دانلود و نصب پیش نیاز ها و run_scaled :اول از همه باید اینا رو نصب کنین , پس توی ترمینال بزنین :sudo apt update
sudo apt install xvfb
sudo apt install x11-xserver-utils
sudo apt install xpraبعد از اینکه نصبشون کردین میتونین از یکی از این دو روش برای دانلود run_scaled استفاده کنین :1. با git این آدرس رو توی دایرکتوری که میخواین clone کنین :نصب git :sudo apt install gitبرین توی دایرکتوری که میخواین و :git clone https://github.com/kaueraal/run_scaled.gitrun scaledخب حالا run_scaled توی این دایرکتوری هست .2.اگه نمیدونین git چیه و حوصله ی نصب و استفاده ندارین میتونین برین توی سایت گیت هاب توی این آدرس و از مستطیل سبز clone or download قسمت download zip رو بزنین :githubخب حالا که دانلودش کردین باید از حالت فشرده خارج(extract) کنین .از الان به بعد run_scaled توی این دایرکتوری که هست که فایل رو extract کردین .ب) استفاده از run_scaled : الان باید آدرس run_scaled رو وارد کنین و روبروش اسم نرم افزاری که میخواین مثل زیر :/home/master/run_scaled/run_scaled  gimpاگه به مشکلی برخوردین( احتمالا بر میخورین) بجاش اینو بزنین :/home/master/run_scaled/run_scaled  --scale=2 --sleep=5 gimpعدد 2=scale-- رو بسته به نیازتون میتونین تغییر بدین .روش سوم (بعضی اپ ها ) :این روش فقط برای نرم افزار هایی کاربرد داره که از Qt استفاده میکنن .اگه نمیدونین Qt چیه یا چه نرم افزار هایی از Qt استفاده میکنن یا اصلا Widget toolkit چیه روی این لینک یا این لینک بزنین.برای این کار اسم نرم افزار رو رو به روی دستور QT_SCREEN_SCALE_FACTORS وارد کنین مثل :QT_SCREEN_SCALE_FACTORS=2 vlc باز هم میتونین بسته به نیازتون عدد رو عوض کنین.خب اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید . اگه دوست داشتین و به دردتون خورد حتما لایک کنید . https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq بقیه ی مقاله ها رو هم بخونین :نصب لینوکس روی گوشی اندرویدتون 2019 (با روت - بدون ترموکس)اوبونتو : اکستنشن های گنوملینوکس : محیط میزکار یا Desktop Environment چیست ؟نصب درایور nvidia روی اوبونتو و توزیع های مشابهtelegram : @bestmadi2instagram : @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Sat, 12 Oct 2019 10:58:04 +0330</pubDate>
            </item>
                    <item>
                <title>نصب لینوکس روی گوشی اندرویدتون 2021 (با روت - بدون ترموکس)</title>
                <link>https://virgool.io/@Bestmahdi2/%D9%86%D8%B5%D8%A8-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D8%B1%D9%88%DB%8C-%DA%AF%D9%88%D8%B4%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF%D8%AA%D9%88%D9%86-%D8%A8%D8%A7-%D8%B1%D9%88%D8%AA-%D8%A8%D8%AF%D9%88%D9%86-%D8%AA%D8%B1%D9%85%D9%88%DA%A9%D8%B3-oyglehw8nbrn</link>
                <description>linux in androidچه کاری میتونه با حال تر از پز دادن به دوستاتون وقتی یه سیستم عامل دیگه روی گوشیتون نصب کردین ,  باشه ؟حالا از پز دادن که بگذریم بعضی وقتا واقعا نیازه که یه لینوکس همراه داشته باشیم یا نمیخوایم که روی کامیپوترمون نصب کنیم یا هر دلیل با حال دیگه ... . فرقی نمیکنه اگه دوست دارین این کارو بکنین اینم روشش :روتی‌جات :دستگاهتون روت هست ؟ برین قسمت نصبی‌جات .اگه روت نیست :نمیدونم دلیل روت نکردن گوشیتون(یا تبلت یا هر دیوایس اندرویدی که استفاده میکنین) چی میتونه باشه ولی اول از همه اینکه گوشیتون یا تبلت تون باید روت باشه البته روش های بدون روت هم هست ولی اصلا به مشکلاتش نمیارزه .اگه نمیدونین چطوری باید گوشیتون رو روت کنین ، مدل دقیق گوشیتون رو توی گوگل سرچ کنین حتما پیدا میشه و دلیلی که چرا اینجا روت کردن رو توضیح نمیدم اینه که مثل سبزیجات که انواع و اقسام داره این هم انواع و اقسام داره.  هر برند و هر مدل و هر گوشی روش خاص خودش رو داره و اصلن یکسان نیست. https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq  https://vrgl.ir/DSpJJ نصبی‌جات:به هر حال بعد اینکه مطمئن شدید گوشیتون روت هست ، این برنامه ها رو باید نصب کنین:1.VNC viewerدلیل اینکه از vnc viewer استفاده میکنیم اینه که تقریبا از همش ساده تره و درد سر کمتری با محیط گرافیکی بهتری داره .2.Linux deploy این اپ برای نصب سیستم عامل لینوکسه . مشابه زیاد داره بازم برای این انتخابش کردم که اکه به مشکل برخوردین راحت تر مشکل رو پیدا کنین.3.Terminal Emulatorاین اپ شبیه ساز ترمینال لینوکسه و یه محیط کنسول بهتون میده .هر جور راحتین , از مایکت های ایرانی مثل : بازار , مایکت , ایران اپس و... یا از خارجی ها مثل google play store یا سایت ها دانلود کنین . دسترسی‌جات :از برنامه ای که برای دسترسی روت دادن به برنامه ها استفاده میکنین , مثلا من از supersu استفاده میکنم , دسترسی روت رو به linux deploy بدین . همون جایی که خوندین چطور گوشیتون رو روت کنین حتما برای چطوری دسترسی دادن به برنامه ها هم نوشتهمثال برای supersu :supersuاگه مثل من Default access روی [prompt] باشه وقتی میخواین وارد برنامه ی linux deploy بشین پیام زیر براتون میاد :linux deploy root accessروی Grant بزنین که دسترسی رو بهش بده ولی اگه میخواین راحت باشین و نخواین هر دفعه دسترسی بهش بدین توی برنامه supersu همون قسمت default access بجای [prompt] روی [Grant] بزنین .نصب توزیع دلخواه لینوکس :بعد که Linux Deploy نصب کردین و دسترسی روت دادین و اینا ، بازش کنین و بزنین روی آیکون سه خط گوشه پایین سمت راست تا منوی زیر براتون باز بشه :menu از قسمت Distrobution کالی لینوکس یا هر توزیع لینوکس دیگه که دوست دارین رو انتخاب کنین (اینجا arch رو انتخاب کردم) ، بعد توی قسمت installation type ، از گزینه ها file رو انتخاب کنین .menuاز قسمت File system حتما ext2 رو بزنین (باور کنین با بقیه ش امتحان کردم اصلن جواب نداد) بعد از قسمت Username و password یه اسم و رمز بهش بدین (البته خیلی مهم نیست)guiاول در قسمت GUI تیک enable رو بزنین تا فعال بشه و از قسمت Graphic subsystem که در عکس هم هست VNC رو انتخاب کنین.از قسمت Desktop environment هم هرکدومو که دوست دارین انتخاب کنین . اگه نمیدونین Desktop environment یا محیط میزکار چیه بزنین روی این لینک اینترنت رو روشن کنین و مطمین بشین که حجم بسته ی اینترنت و فضای خالی حافظه گوشیتون به اندازه ی کافی هست چون هر لینوکس حجم مخصوص خودشو داره .برگردید به منو اصلی و آیکون سه نقطه بالا رو بزنین ، و install رو بزنین .installاگه مشکلی پیش اومد توی نصب ، باید VPN , proxy یا firewall اگه دارین رو خاموش کنین و از اول install رو بزنین (من خودم چهار بار دانلود و نصب کردم تا بلاخره درست اومد)وقتی تموم شد باید باید بنویسه : deploy&gt;&gt;&gt;الان اصلا روی start نزنین .استفاده از لینوکس :حالا برین توی Terminal Emulator و تایپ کنین:su/data/data/ru.meefik.linuxdeploy/linux/bin/linuxdeploy shellبعدش ترمینال وصل میشین به لینوکسی که نصب کردین . و تمام .اختیاری : Desktop Environment برای ظاهر گرافیکیاگه می‌خواین ظاهر گرافیکی داشته باشین توی همون ترمینال xfce4 یا هر کدوم از دسکتاپ انوایرمنت هایی رو که دوست دارین نصب کنین (البته اگه از قبل نصب نکرده باشین)sudo apt install xfce4 xfce4-goodiesبعدش :sudo apt-get install tightvncserverبعدش بزنین :tightvncserverبعد یه پسورد براش بزارین (پسورد دومی رو  اگه خواست لازم نیست بزارین) و صبر کنین این پیام بیاد :New &#x27;X&amp;&#x27; desktop is your_hostname:1بعدش بزنین :tightvncserver -kill :1تا این پیام بیاد :Killing Xtightvnc process ID zxcvb نگران نباشین zxcvb یه عددهاگه شد با دستور cd برین توی این دایرکتوری :&lt;br&gt;cd /home/your username/.vnc/اسم اکانت خودتون که قبلن انتخاب کرده بودین که به جای your username بنویسین.بعدش بزنین :sudo nano ./xstartupتوی ویرایشگر متن باز شده , این خط ها رو بهش اضافه کنین و سیو کنین( ctrl + s و ctrl + x ) :#!/bin/bashxrdb $HOME/.Xresourcesstartxfce4 &amp;بعدش :sudo chmod +x ~/.vnc/xstartupو :tightvncserverاگه این پیام اومد :New &#x27;X&#x27; desktop is your_hostname:1دیگه کارمون اینجا تمومه .وصل شدن با VNC :حالا VNC Viewer رو باز کنین و روی گزینه ی + بزنین و به جای Addess بزنین localhost:5901 و اسمش رو هم دلخواه بدین و creat رو بزنین .vnc viewer بعد connect رو بزنین .alibad979بعدش وارد لینوکستون میشه .یه نمونه ازش (مال خودم نیست)تمام.خب اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید. اگه دوست داشتین و به دردتون خورد حتما لایک کنید.تازه ترین: https://vrgl.ir/CWo9g بقیه ی مقاله ها رو هم بخونین: https://virgool.io/@Bestmahdi2/ tel : @bestmadi2insta : @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Sat, 24 Aug 2019 09:58:51 +0430</pubDate>
            </item>
                    <item>
                <title>اوبونتو :‌ اکستنشن های گنوم</title>
                <link>https://virgool.io/wptips/%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D8%A7%DA%A9%D8%B3%D8%AA%D9%86%D8%B4%D9%86-%D9%87%D8%A7%DB%8C-%DA%AF%D9%86%D9%88%D9%85-v2mllpr8st9p</link>
                <description>gnomeگنوم شل اکستنشن یا Gnome Shell Extension در واقع کدهایی هستن که قابلیت های محیط میزکار گنوم رو افزایش میدن . مثل یک افزونه برای مرورگر فرضش کنین که شما میتونین نصبشون کنین یا حذف و غیرفعالشون کنین . این اکسنشن ها مثل افزونه ها به طور پیش فرض روی سیستم/مرورگر شما نصب نیستن . این اکستنشن ها برای این ساخته میشن که یه سری کار های خاص مثل نمایش سرعت اینترنت , تاریخ ایرانی , روشن نگه داشتن صفحه نمایش و ... انجام بدن که بیشتر روی قسمت بالا ی صفحه (top bar) قرار دارن .قبل از اینکه از گنوم شل اکستنشن استفاده کنیم اول باید GNOME Tweak Tool رو نصب کنیم . توی software center های نسخه های مختلف باید باشه . به هر حال با ترمینال هم میتونین این دستورات رو وارد کنین :sudo apt install gnome-tweak-toolsبعد از اون ببینید که از چه ورژنی از گنوم شل استفاده میکنین . این باعث میشه که بفهمین اکستنشنی که میخواین نصب کنین به سیستمتون میخوره یا نه :gnome-shell --versionاستفاده از پکیج gnome-shell-extensions package :ابونتو (و بقیه ی توزیع ها مثل فدورا) یه پکیج از حداقل های GNOME extensions دارن . برا ی نصب این پکیج :sudo apt install gnome-shell-extensionsخب حالا سیسمتون رو ریبوت کنین  .وقتی لاگین کردید GNOME Tweaks رو باز کنین (توی لیست applications هست) Tweakتوی قسمت Extensions , بالای صفحه تیک رو فعال کنین .اینجا میتونین اکستنشن هایی که نصب شدن رو ببینین .نصب GNOME Shell extensions از روی مرورگر : پروژه ی گنوم یه سایت برای اکستنشن هاش داره .توی این سایت میتونین اکستنشن های رو پیدا کنین , نصب کنین و کلا مدیریت کنین . توی این سایت حتی به GNOME Tweaks tool نیاز ندارین (البته برای افلاین کار کردن حتما نیاز هست)خب برای اینکار ابتدا :وقتی برای بار اول میرین به سایت گنوم شل اکستنشن این پیام رو بالای صفحه میبینین :“To control GNOME Shell extensions using this site you must install GNOME Shell integration that consists of two parts: browser extension and native host messaging application.”شما میتونین خیلی راحت روی لینک هایی که بهتون نسون داده بزنین و افزونه ها رو اضافه کنین یا از این لینک ها استفاده کنین :For Google Chrome, Chromium, and Vivaldi: Chrome web store.For Firefox: Mozilla Addons.For Opera: Opera Addonsخب قدم قوم باید native connector رو نصب کنین , میتونین ببینین که همچین اروری به شما میده :“Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector”برای اینکه نصبش کنیم :sudo apt install chrome-gnome-shellنگران اسم chrome نباشین ربطی به مرورگرتون نداره و برای اپرا و فایرفاکس هم کار میکنه .اگه همه ی مراحل درست انجام شده باشه الان میتونین برین توی سایت و اروری رو نبینین .توی صفحه ی اصلی میتونین چیزی که دنبالش هستین رو سرچ کنین . یا صفحه های بعدی رو ببینین . به عنوان یه مثال :روش اول :میخوایم اکستنشن Caffeine رو نصب کنیم (از اینکه صفحه نمایش خاموش بشه جلوگیری میکنه) . خب وقتی سرچ کردیم و رفتیم داخل صفحه ش میتونین این قسمت ها رو ببینین :caffeineخیلی ساده میتونین با روشن کردن تیک بالای صفحه اینو نصب کنین . وقتی بزنین روش این گزینه ی نصب میاد که روی install میزنین :نصب میشه و میره بالای صفحه قرار میگیره .روش دوم :حالا اگه سیسمتون اینترنت نداره یا به هر دلیلی بخواین که دانلودش کنین میتونین از قسمت :ورژن شل خودتون رو انتخاب کنین و بعد ورژن اکستنشن رو . بعد از این خودش دانلود میشه .بعد از نصب , باید اکسترکتش کنین توی local/share/gnome-shell/extensions./‍‍‍‍‍‍~ .این هم یه لیست از اکستنشن های باحال که میتونین ببینین :Audio Output SwitcherAuto Move WindowsCaffeineClipboard IndicatorCPU FreqDisconnect WifiDrop Down Terminal XDynamic Panel TransparencyForce Quit 2019GSConnectMusic IntegrationNative Window PlacementNetSpeedOpenWeatherPersian CalendarPlaces Status IndicatorPublic IPRefresh Wifi ConnectionsRemovable Drive MenuScale SwitcherScreenshot ToolScreenshot Window SizerTransparent Top Barو ...برای بعضی از اکستنشن ها باید گنوم شل رو ریست کنین . برای اینکار Alt و F2 رو بزنین و توی قسمت باز شده بنویسن r :restart gnome shellالبته اگه از نسخه های خیلی قدیمی یا نسخه های خیلی جدید شل استفاده میکنین شاید اکستنشنی که میخواین نصب کنین براتون کار نکنه . برای اینکه بفهمین از چه نسخه ای استفاده میکنین توی ترمینال بزنین :gnome-shell --versionاین ویدیو رو هم میتونین نگاه کنین : لینک .خب اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید . اگه دوست داشتین و به دردتون خورد حتما لایک کنید . https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq بقیه ی مقاله ها رو هم بخونین :لینوکس: مدیریت صفحه نمایش (Display Manager)چیست ؟مونت اتوماتیک NTFS یا پارتیشن های ویندوز روی اوبونتو و توزیع های مشابهنصب درایور nvidia روی اوبونتو و توزیع های مشابهtel : @bestmadi2insta : @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Thu, 01 Aug 2019 10:59:22 +0430</pubDate>
            </item>
                    <item>
                <title>لینوکس : محیط میزکار  یا (Desktop Environment (DE چیست ؟</title>
                <link>https://virgool.io/@Bestmahdi2/%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D9%85%D8%AD%DB%8C%D8%B7-%D9%85%DB%8C%D8%B2%DA%A9%D8%A7%D8%B1-%DB%8C%D8%A7-desktop-environment-de-%DA%86%DB%8C%D8%B3%D8%AA-fvdtcbqodwet</link>
                <description>Desktop Environmentدستکاپ اینوایرمنت یا محیط میزکار یه رابط کاربری گرافیکی (GUI) هست که با استفاده از اون کاربر میتونه به مهمترین و بپراستفاده ترین ویژگی ها و سرویس های یه سیستم عامل OS دسترسی داشته باشه و اونا رو کنترل کنه .یه محیط میزکار به صورت پیش فرض روی همه ی سیستم عامل های مدرن مثل لینوکس - ویندوز - مک و ... هست .این محیط طراحی شده که جایگزین محیط خط فرمان (command-line interface) بشه محیطی که در سیستم عامل های قدیمی مثل DOS و Unix استفاده میشده . خب البته برای بعضی دستورات و کارهایی که سطح دسترسی بالایی میخوان یا با محیط دسکتاپ نمیشه انجامشون داد رو یوزر یا همون کاربر مجبوره که از همون خط فرمان استفاده کنه.خب از اون جایی که کاربرها بسیار مشتاق حفظ کردن و استفاده از کلمات بدون تنبلی هستن :)) به جای دسکتاپ اینوایرمنت از دسکتاپ استفاده میشه .خب حالا چرا باید عوضشون کنیم؟شما هم مثل من هر روز حوصلتون از محیط گرافیکیتون سر میره و دوست دارین چیزای جدیدی رو تجربه کنین.سیستم شما دیگه از مد افتاده و نیاز دارین که یه دسکتاپ جدید سبک روش نصب کنین که خیلی از منابع سیستم استفاده نکنه .به زیبایی سیستم خودتون اهمیت میدین و یا دوست دارین که ...به هر حال اگه از ظاهر یکسان میزکارتون خسته شدین این مقاله شاید بتونه کمکتون کنه .قبل از ادامه حتما این مقاله رو بخونین تا بدونید دیپلی منیجر چیه و چطور باید عوضش کنین .جدول کدوم دسکتاپ با کدوم دیپلی منیجر کار میکنه :tableانواع محیط میزکار (DE) :کی دی ای KDE :KDE Plasmaبه غیر از اینکه KDE یه دسکتاپ خیلی توپ هست یه کالکشن از یه عالمه اپلیکیشن هست(البته اپلیکیشن هاش رو میشه رو دسکتاپ های دیگه هم نصب کرد) . آخرین نسخه ی KDE به اسم Plasma شناخته میشه که نسخه های Plasma Desktop و Plasma Netbook رو داره (بازم هست&gt;&gt;&gt;لینک) . KDE یکی از تغییرپذیر ترین (most customizable) و قابل انعطاف ترین میزکار هایی هست که وجود داره .بیشتر دسکتاپ ها نرم افزار های جانبی میخوان که بشه اونا رو تغییر داد ولی KDE همه رو توی تنظیمات خودش داره . شما میتونین بدون اینکه مرورگرتون رو باز کنین , انواع ویجت و والپیپر رو براش دانلود کنین .این دسکتاپ ظاهری تقریبا شبیه ویندوز داره و اگه تازه به سمت لینوکس اومدین میتونه یه انتخاب خوب باشه . این دستکاپ به صورت پیش فرض روی توزیع های OpenSuSe و Kubuntu قرار داره .نصب :ubuntu: sudo apt install tasksel
sudo tasksel install kubuntu-desktop
sudo apt install sddm (اگه ندارینش)
sudo dpkg-reconfigure sddm
SDDM رو بزنینfedora : sudo dnf groupremove -y &amp;quotKDE&amp;quotبعد از ریبوت کردن وقتی به صفحه ی لاگین رسیدین از گزینه ها انتخاب کنین .(آخرین عکس)گنوم GNOME :Gnome 3 (It&#039;s actually mine)اول از همه بگم که توی بیشتر فیلم هایی که توی یوتیوب برای گنوم دیدم و خب همه انگلیسی بود این رو گنوم تلفظ نمیکنه و میگفتن «نوم» بدون «گ» . البته اشتباه نیست چون در اصل مخفف GNU Network Object Model Environment هست و بعضی ها راحت ترن بگن نوم تا گُ-نوم .به هر حال :گنوم یکی از معروف ترین دسکتاپ های لینوکسه .بیشتر توزیع های معروف لینوکس از این دسکتاپ استفاده میکنن . این دسکتاپ بعضی زیرشاخه هایی مثل Cinnamon, Unity و غیره داره . گنوم طراحی شده که برای استفاده و تغییر راحت باشه . داشبورد - سیستم سرچ گسترده - تم - اکستنشن و ... از ویژگی های باحال گنوم هستن . البته برای تغییرات بیشتر (به غیر از تغییر دادن فایل های متنی) بهتره از gnome-tweak-tool استفاده کنین .گنوم مقدار زیادی از رم رو بخاطر ظاهر گرافیکی سنگینش میگیره پس اگه خیلی رم بالایی ندارین بهتره ازش استفاده نکنین .توزیع هایی که به طور پیش فرض از گنوم استفاده میکنن رو میشه Debian, Fedora, OpenSUSE و Ubuntu GNOME نام برد .نصب :ubuntu :sudo add-apt-repository ppa:gnome3-team/gnome3 sudo apt-get update &amp;&amp; sudo apt-get install gnome-shell ubuntu-gnome-desktopfedora :sudo dnf groupinstall gnome
sudo dnf install gnome-tweak-tool
sudo systemctl stop sddm.service &amp;&amp; systemctl disable sddm.service
sudo systemctl start gdm.service &amp;&amp; systemctl enable gdm.serviceبعد از ریبوت کردن وقتی به صفحه ی لاگین رسیدین از گزینه ها انتخاب کنین .(آخرین عکس) قسمت خیلی عالی که شخصا خیلی دوستش دارم قسمت اکستنشن های گنوم هست که تا دلتون بخواد زیاده و کارتون رو خیلی زیاد راه میندازه حالا اگه فرصت شد یه پست جدا براش مینویسم .یه چیز جالب در مورد گنوم اینکه گنوم یعنی کوتوله و اگه سرچ کنین از اینا میبینین :gnomeسینامن Cinnamon :Cinnamonاین دسکتاپ یعنی Cinnamon یکی از زیرشاخه های گنوم هست که ساخته شده تا به صورت پیش فرض روی Linux Mint استفاده بشه . خب از این جهت برای تازه کار های لینوکسی خیلی راحت به نظر میاد چون که خیلی شکل ویندوزه . Cinnamon از تم - اکستنشن - پنل و اپلت بهره میبره . پنل در لبه پایین صفحه نمایش، با یک منوی اصلی، لانچر برنامه، فهرست پنجره های باز و سیستم تری (system tray) مجهز شده . Cinnamon با اپلیکیشن های مختلفی عرضه میشه که بیشترشون از گنوم ۳ مشتق میشن .ubuntu :sudo add-apt-repository universe
sudo apt install cinnamon-desktop-environment lightdmfedora :sudo dnf groupinstall -y &amp;quotCinnamon Desktop&amp;quotبعد از ریبوت کردن وقتی به صفحه ی لاگین رسیدین از گزینه ها انتخاب کنین .(آخرین عکس)ماته MATE :MATEماته از الگوبرداری شده های گنوم ۲ هست . ماته بیشتر برای این طراحی شد که کاربر هایی که از آخرین نسخه ی گنوم (گنوم ۳) خسته و ناامید شده بودن بتونن از طراحی قدیمی استفاده کنن . البته به این معنی نیست که از تکنولوژی های از مد افتاده درش استفاده شده بلکه با ظاهر قدیمی ساختاری مدرن داره .ماته , سیستم پنل و منو و اپلت و کلیدها و ... رو ساپورت میکنه و میشه گفت به طور متوسط از رم استفاده میکنه نه خیلی زیاد نه خیلی کم .نصب :ubuntu :sudo add-apt-repository ppa:jonathonf/mate-1.22
sudo apt update
sudo apt install mate-desktop-environmentfedora :sudo dnf groupinstall -y &amp;quotMATE Desktop&amp;quotبعد از ریبوت کردن وقتی به صفحه ی لاگین رسیدین از گزینه ها انتخاب کنین .(آخرین عکس)ال ایکس دی ای LXDE :LXDEسرعت دسکتاپ LXDE خیلی بالاست و همین از طراحی سبک و کاربر-دوستانه ش به وجود اومده . خب واضحه که وقتی سبک باشه از منابع سیستم هم انچنان استفاده ای نداره .این دسکتاپ با یه سری اکسسوری و تنظیمات اضافه منتظر میشه . توزیع Lubuntu اونو به طور پیشفرض داره . نصب :ubuntu :sudo apt install -y lubuntu-desktopfedora :sudo dnf groupinstall -y &amp;quotLXDE Desktop&amp;quotبعد از ریبوت کردن وقتی به صفحه ی لاگین رسیدین از گزینه ها انتخاب کنین .(آخرین عکس)ایکس اف سی ای XFCE :این دسکتاپ سبک ترین دسکتاپی هست که برای لینوکس و سیستم عامل های شبه یونیکس عرضه شده . درسته که خیلی سبکه ولی بازم دلیل نمیشه که مدرن بودنش رو دنبال نکنه . قابلیت های خوبی داره (نه به اندازه ی بقیه) و یه سری اپلیکیشن هم به صورت پیش فرض داره (نه به اندازه KDE) روی توزیع های Manjaro Linux و Xubuntu به صورت پیش فرض وجود داره .نصب :ubuntu :sudo apt-get install xubuntu-desktopfedora :sudo dnf groupinstall -y &amp;quotXfce Desktop&amp;quotبعد از ریبوت کردن وقتی به صفحه ی لاگین رسیدین از گزینه ها انتخاب کنین .* مثل عکس زیر که یکی رو باید انتخاب کنین .*اما یه چیزی رو بهتون بگم که اصلا نگران نباشید اگه دسکتاپ رو دانلود و نصب کردید ولی مثل عکس ها نبود چون شما تقریبا میتونین رنگ و ایکون و میزان ترنسپرنتی و هر چیز دیگه ای رو عوض کنین فقط تنها کاری که باید انجام بدین اینه که سرچ کنین .***اگه توی نصب به مشکل ریپوزیتوری برخوردین سرچ کنین حتما جوابی هست .***خب اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید . اگه دوست داشتین و به دردتون خورد حتما لایک کنید .بقیه ی مقاله ها رو هم بخونین : https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq لینوکس: مدیریت صفحه نمایش (Display Manager)چیست ؟مونت اتوماتیک NTFS یا پارتیشن های ویندوز روی اوبونتو و توزیع های مشابهنصب درایور nvidia روی اوبونتو و توزیع های مشابهtel : @bestmadi2insta : @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Fri, 26 Jul 2019 10:27:39 +0430</pubDate>
            </item>
                    <item>
                <title>لینوکس: مدیریت صفحه نمایش یا (Display Manager (DM چیست ؟</title>
                <link>https://virgool.io/@Bestmahdi2/%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%B5%D9%81%D8%AD%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-display-manager%DA%86%DB%8C%D8%B3%D8%AA-zcqbtilnjlpm</link>
                <description>Display Managerمدیریت صفحه نمایش (display manager) چیست؟مدیریت صفحه نمایش که همان مدیریت لاگین (Login manager) می باشد، در واقع همان صفحه ورودی است که شما با وارد کردن نام کاربری و رمز عبور وارد میزکار لینوکس می شوید. این صفحه نشست های کاربر و تایید هویت او را کنترل می کند. تنها المانی که در صفحه ابتدایی دیده می شود، پنجره لاگین است که greeter نام دارد.انواع Display Manager :به طور کلی به دو نوع تقسیم میشه : کنسول (بدون گرافیک خاصی) گرافیکیکنسول :اولا باید بدونید اگه سیستم خیلی قدیمی و محدود دارید یا کلا دوست دارید بدون گرافیک (مثلا هکرید شما!) کار کنید بهتره از این نوع استفاده کنید . چند تا از این نوع دیسپلی منیجر رو هم براتون آوردم البته همشون تقریبا یکی هستن ولی خب ظاهرشون فرق میکنه ولی اگه توضیحات خیلی زیاد میخواین باید سرچ کنین :سی دی ام CDM :CDMتی دی ام Console TDM :Console TDMلای LY:LYتی بی اس ام TBSM :TBSMگرافیکی :خب قسمت مورد علاقه ی همه . این چند نوع معروف رو آوردم براتون با یکم توضیح در مورد هر کدوم :جی دی ام GDM :GDMاین دیسپلی منیجر فقط برای گنوم GNOME استفاده میشه ولی با بقیه ی دستکاپ انوایرمنت هایی که زیر شاخه های گنوم محسوب میشن  هم میشه استفاده کرد . GDM برای سوییچ کردن دسکتاپ انوایرمنت ها آسونه و فقط باید بدونید کدوم فایل ها رو ویرایش کنین تا بتونین تغییرات زیادی در اون به وجود بیارین .لایت دی ام LightDM :LightDM  قطعا LightDM میتونه یکی از بهترین انتخاب ها باشه چون اولا روی بعضی توزیع ها که مثلا از یونیتی استفاده میکنن قشنگرینه  دومیش هم میشه به سبک بودنش نسبت به GDM گفت و خب همین باعث شده که مردم از اون بیشتر استفاده کنن . اگه از wayland استفاده میکنین باید یه خبر بد بهتون بدم که LightDM اونو ساپورت نمیکنه .اس دی دی ام SDDM :SDDMتم های SDDM شامل عکس و گیف و ویدیو و حتی تصاویر پیش زمینه با موزیک میشه . یکی دیگه از خوبی های SDDM میشه به کار کردن با X11 و wayland اشاره کرد . ولی خب یکی از بدی هاش میتونه این باشه که برای تغییرات باید QML رو به صورت متوسط بدونید . خوبه که بدونید SDDM را میشه با ویرایش فایل ها که توی /etc/sddm.conf هستن ، پیکربندی کرد.اسلیم SLIM :slimاز متن باز بودن و داکیومنت ها مرتب این دیسپلی منیجر که بگذریم همه ضروریات دیگه مثل لاگین خودکار، تغییر وضعیت قفل اعداد، پیام خوش آمدگویی و پشتیبانی از تم ها رو داره. البته لاگین راه دور (remote login) رو پشتیبانی نمیکنه .کی دی ام KDM :KDMKDE Plasmaمخفف Kde Display Manager هست که یعنی برای دستکاپ انوایرمنت KDE استفاده میشه .KDM ویژگی های خاص بسیار و گزینه های شخصی سازی زیادی داره. تم KDM و گریترهای مختلف را می تونین در مدیریت لاگین تغییر بدین  و در نتیجه بک گراند، پیام خوش آمد و فونت رو سفارشی سازی کنین. این دیسپلی منیجر، میتونه که تغییر سریع کاربران، نمایش لیست کاربر، لاگین بدون نیاز به رمزعبور و لاگین اتوماتیک رو انجام بده. KDM از دو سرور نمایش wayland و X.Org پشتیبانی می کند ولی در KDE پلاسمای 5، KDM با SDDM جایگزین شده است (توی عکس میتونین ببینین).برای اینکه بدونین دارین از کدوم دیسپلی منیجر استفاده میکنین میتونین توی ویرایشگر مورد علاقه تون (مثلا nano) ببینین که دارین از کدوم استفاده میکنین :Ubuntu/Debian:nano /etc/X11/default-display-manager RedHat/Fedora:nano /etc/sysconfig/desktopOpenSuSe :nano etc/sysconfig/displaymanagerحالا چرا مدیریت نمایش (Display Manager) رو تغییر بدیم؟شما میخواین تا یک کامپیوتر قدیمی را احیا کنین و نیاز به مدیریت نمایش سبکتری دارین.مدیریت نمایش شما بعد از بروزرسانی توزیع، خراب شده و بهتره به جای مهاجرت به توزیع دیگر، مدیریت لاگین رو تغییر بدین.تمایل دارین تا تم های زیباتری رو توی مدیریت لاگین داشته باشین، ولی مدیریت لاگین پیشفرض شما، محدودیت هایی رو برای شما به وجود آورده.چطور نصب کنیم :هر توزیعی برای خودش یه روش نصب داره و هر کدوم از دیپلی منیجر ها هم به روش خودشون نصب میشن ولی سعی کردم معروف ترین ها رو اینجا بیارم که کار ۹۰ درصد مردم راه بیفته :نصب  KDM\KDE : Ubuntu : sudo apt-get install kde-full
sudo apt-get install kdm

Fedora : sudo dnf groupinstall -y &amp;quotKDE Plasma Workspaces&amp;quot
sudo dnf install kdm

OpenSuSe : zypper install -t pattern kde kde_plasma
sudo zypper in kdmبه جای نصب کامل (kde-full) میتونین از kde-standard یا kde-plasma-desktop استفاده کنین .نصب SLIM :Ubuntu : sudo apt-get install slimدو نسخه ی دیگه رو باید دانلود کنین :Fedora : download it here OpenSuSe : download it hereنصب SDDM :Ubuntu : sudo apt-get install sddmFedora : sudo dnf install sddmOpenSuSe : sudo zypper in sddmنصب GDM:Ubuntu : sudo apt-get install gdmFedora : sudo dnf install gdmOpenSuSe : sudo zypper in gdmنصب LightDM:Ubuntu : sudo apt-get install lightdmFedora : sudo dnf install lightdmOpenSuSe : sudo zypper in lightdm***اگه توی نصب به مشکل ریپوزیتوری برخوردین سرچ کنین حتما جوابی هست .تغییر Display Manager پیش فرض :Ubuntu/Debian : sudo dpkg-reconfigure lightdmبعدش انتخاب کنین .Fedora : dnf install system-switch-displaymanager system-switch-displaymanager-gnome system-switch-displaymanagerیا از این راه :  systemctl disable [old display manager]
  systemctl enable [new display manager]OpenSuSe : اول از همه YaST رو اجرا کنین بعد etc/sysconfig Editor/ رو انتخاب کنین (توی کتگوری سیستم) . روی Desktop بزنین و بعدش Display Manager . بعد از اون مقدار DEFAULT_DM رو با اسم دسیپلی منیجر انتخابی البته با حروف کوچیک عوض کنین . مثلا : GDM &gt;&gt; DEFAULT_DM : gdmاگه نمیتونین از YaST استفاده کنین باید etc/sysconfig/ رو ویرایش کنین :sudo nano /etc/sysconfig/displaymanagerاین خط رو پیدا کنین و مقدارش رو عوض کنین :DISPLAYMANAGER=&quot;gdm&quot;&gt;&gt;&gt;THE ENDبه طور کلی بخوایم در نظر بگیریم به این شکل میرسیم :tableخب اگه سوالی داشتین یا نظری در مورد اینکه جایی از مقاله ناقص هست یا اشتباهه حتما کامنت کنید . اگه دوست داشتین و به دردتون خورد حتما لایک کنید .بقیه ی مقاله ها رو هم بخونین : https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq لینوکس : محیط میزکار یا (Desktop Environment (DE چیست ؟مونت اتوماتیک NTFS یا پارتیشن های ویندوز روی اوبونتو و توزیع های مشابهنصب درایور nvidia روی اوبونتو و توزیع های مشابهtel : @bestmadi2insta : @bestmahdi2</description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Tue, 23 Jul 2019 10:14:42 +0430</pubDate>
            </item>
                    <item>
                <title>مونت اتوماتیک NTFS یا پارتیشن های ویندوز روی اوبونتو و توزیع های مشابه</title>
                <link>https://virgool.io/@Bestmahdi2/%D9%85%D9%88%D9%86%D8%AA-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9-ntfs-%DB%8C%D8%A7-%D9%BE%D8%A7%D8%B1%D8%AA%DB%8C%D8%B4%D9%86-%D9%87%D8%A7%DB%8C-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D8%B1%D9%88%DB%8C-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D9%88-%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D9%87%D8%A7%DB%8C-%D9%85%D8%B4%D8%A7%D8%A8%D9%87-vdiwd1xynd68</link>
                <description>داستان کوتاه : یه نفر تازه میخواد یادگرفتن و استفاده از لینوکس رو شروع کنه و بعد از هزار بار زیر رو کردن انواع و اقسام سایت ها به این نتیجه میرسه که نه انگار به غیر از ویندوز هم سیستم عامل های دیگه ای هم هستن. پس تشویق میشه که یه توزیع از هزاران توزیع رو نصب کنه ولی از ترس از دست دادن اطلاعاتش مجبوره که کنار ویندوز :| اونو نصب کنه . خب اگه شما مثل اون فرد هستین یا یه نفر هستین که مجبوره به خاطر بعضی نرم افزار ها از ویندوز کنار لینوکس استفاده کنه خب حتما براتون پیش میاد که هی باید بزنین روی درایور های ویندوز که مونت(mount) بشن و بتونین ازشون اسفاده کنین یا مثلا وقتی دایرکتوری برنامه ی دانلودر رو عوض میکنین با یه ریستارت (همون ریبوت لینوکسی ها) دیگه نمیتونین از اون استفاده کنین .پس برای اینکه این مشکل یا مشکل های مشابه پیش نیاد بهتره که پارتیشن های ویندوز همون توی بوت لود بشن :روش خیلی ساده :برنامه ی disks رو باز کنین :بعدش پارتیشن هایی که میخواین رو انتخاب کنین و روی علامت چرخ دنده یا همون ستینگ بزنین و از گزینه ها  Edit Mount Options رو بزنین :بعد تیک  Automatic mount option یا توی نسخه های جدید User Session Default رو خاموش کنین و تیک Mount at system startup رو بزنین :بعد توی قسمت Identify As میتونین آدرسی رو که میخواین پارتیشن اونجا باشه رو انتخاب کنین :و تمام . https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq </description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Tue, 09 Jul 2019 10:35:14 +0430</pubDate>
            </item>
                    <item>
                <title>نصب درایور nvidia روی اوبونتو و توزیع های مشابه</title>
                <link>https://virgool.io/@Bestmahdi2/%D9%86%D8%B5%D8%A8-%D8%AF%D8%B1%D8%A7%DB%8C%D9%88%D8%B1-nvidia-%D8%B1%D9%88%DB%8C-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D9%88-%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D9%87%D8%A7%DB%8C-%D9%85%D8%B4%D8%A7%D8%A8%D9%87-frjtwxnfndxi</link>
                <description>روش آنلاین :برنامه ی Software &amp; Updates رو باز کنین.توی قسمت Additional Drivers جدیدترین درایور nvidia رو میتونید انتخاب کنین .*اگه به هر دلیلی نتونستین از روش آنلاین استفاده کنین میتونین از روش آفلاین استفاده کنین ولی انلاین پیشنهاد میشه .روش آفلاین :قبل از همه چیز از روی گوشیتون یا یه دیوایس دیگه (اگه اوبونتو بالا نمیاد) برین توی سایت nvidia و فایل driver رو که یه فایل run هست رو با سرچ کردن دانلود کنین و بریزین روی فلش یا هر طریق دیگه ای که بتونین بهش دسترسی داشته باشین.ترمینال رو باز کنین یا اگه کلا نمیتونین لاگین بشین و تو صفحه ی سیاه گیر افتادین ، Ctrl + Alt + F2 یا F3 رو بزنین ، بعد اسم یوزر خودتون رو وارد کنین و رمزتون رو .وقتی لاگین شدید :1.اول از همه درایور قبلی رو پاک کنین :sudo apt-get purge nvidia*وقتی نوشتین nvidia بعدش کلید tab رو بزنین تا خودش کاملش کنه .2. بعد nouveau رو یه ادیتور باز کنین حالا من اینجا از nano استفاده کردم :sudo nano /etc/modprobe.d/disable-nouveau.confو اضافه کنین :blacklist nouveauoptions nouveau modeset=0(هر کدوم توی یه خط جدا هستن)و سیو کنین (ctrl + x).3.برین توی ترمینال بنویسین:sudo apt update (باید اینترنت داشته باشین)sudo apt install build-essential (باید اینترنت داشته باشین)sudo update-initramfs -uری استارت کنین .4. وقتی اومد بزنین :sudo service gdm (lightdm) stopاگه نمیدونین gdm یا lightdm چیه ، برین به این لینک ولی در پیش فرض اوبونتو های جدید gnome نصب شده که باید gdm رو بزنین .5. با دستور cd برین توی‌ دایرکتوری ای که فایل Nvidia توش هست و بزنین :chmod +x ./filename.runبعدش:sudo sh ./filename.runاگه یه موقع خواستین پاکش کنین بزنین :sudo sh ./filename.run --uninstall https://virgool.io/@Bestmahdi2/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%DB%8C%D8%B1%D8%B2%D8%A7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%863-%D9%88-pyqt5-z8wdfrvibawq </description>
                <category>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</category>
                <author>Ali (Mahdi) Badiee | علی (مهدی) بدیعی</author>
                <pubDate>Tue, 09 Jul 2019 09:27:47 +0430</pubDate>
            </item>
            </channel>
</rss>