<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های امیرحسین محمدی</title>
        <link>https://virgool.io/feed/@GNU_Amir</link>
        <description>توسعه دهنده نرم افزار. amirhossein.info</description>
        <language>fa</language>
        <pubDate>2026-06-18 12:24:29</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/356194/avatar/6S5KoD.jpeg?height=120&amp;width=120</url>
            <title>امیرحسین محمدی</title>
            <link>https://virgool.io/@GNU_Amir</link>
        </image>

                    <item>
                <title>$ git diff amirhossein</title>
                <link>https://virgool.io/@GNU_Amir/git-diff-amirhossein-om12lhhunmjy</link>
                <description>تغییر یا همون همیشگیآدمی که اهل نوشتن باشه روزانه خاطرات مینویسه، مطلب های جالبی رو منتشر میکنه و صد در صد فن بیان خوبی در صحبت و نوشتن داره. موردی که اینجا هست اینه که من نه آدم نوشتن ام و نه مطالب ام جالبه و نه فن بیان خوبی دارم.( برای تایتل واقعا جمله خاصی به ذهنم نرسید و don&#x27;t care about it ? )تغییراتی که تو زندگیم بوده چیزایی بودن که الان من رو تشکیل دادند. اشتباهاتی که داشتم و حتی کارای مثبتی که انجام دادم. همه و همه مواردی هستند که اگه نبودند شاید یه بخشی از زندگی من تغییر میکرد و الان اینجا نبودم. من آدمی بودم که جز دوستان راهنمایی با کسی آشنا نبودم، نه علاقه ای به سوشال مدیا داشتم و نه میخواستم که برم داخلش. آره خب یه اینستاگرام بود که اونم فقط در حد دیدن استوری های دوستان بود. تصمیم گرفته بودم تو توییتر فعالیت کنم. یه اکانت جوین ۲۰۱۴ بود و به اسم پدرم. تغییراتی دادم و ازش برای خودم استفاده کردم. شاید به اسم GNU_Amir یا ژوپیتر آشنا باشید تو اینجا. اتفاقاتی که اینجا افتاد مواردی بود که خیلی زندگی من رو تغییر داد. خیلی خیلی خیلی.عجیب ترین موردش این هست که من تونستم با بقیه حرف بزنم! تونستم باهاشون برم کافه، برم تولد، برم مسابقه و کلی خوش بگذره. چیزی که فکر میکردم عمرا امیرحسین بهش برسه. فکر میکردم فقط با علی و حسین و محمد قراره تا آخر عمرم برم بگردم. ولی دیدم خیلیا هستند میتونم باهاشون دوست بشم و خوش بگذره.تبدیل شدم به یکی که بیشتر فکر میکنه تا حرف بزنه. از حالت کودکی یکم اومدم بیرون. نه که بگم الان خیلی بزرگ شدم. الان هم خیلی وقتا با چیزایی شوخی میکنم که نباید کنم. از افرادی که باهاشون میگردم یاد میگیرم که چطوری رفتار کنم و حرف بزنم و با چیا شوخی نکنم. من ناراحت نمیشم اگه یکی ازم ایراد بگیره یا بگه رفتارت بده. خوشحال میشم و بهش گوش میکنم. و این موارد چیزایی بودن که تونستم یکم بیشتر یاد بگیرم.مهم ترین موردی که هیچ وقت بهش فکر نمیکردم این بود که یه روز یکی رو دوست داشته باشم. به زبان ساده شاید بهش بشه گفت عاشق کسی شدن و یا علاقه مند شدن. و خب مرحله سختش اینه چطوری بگی بهش. یا اینکه چطوری از دست ندیش. من متاسفانه آدمی ام که شاید نتونم حرفام رو با صحبت بگم و خیلی وقتا شاید کارایی که میکنم بقیه رو آزار بده. برای همین واقعا نمیدونم چی بگم. اینکه میرم مینویسم براش و به خودم میگم اگه اون نخواد چی و بعد پاکش میکنم پیام رو، یکی از رو مخ ترین چیزا هست.سعی میکنم کمتر با خودم حرف بزنم و اینجا بیشتر صحبت کنم. ولی خب کسی عموما براش مهم نیست من چی میگم یا شخص دیگه ای چی میگه. شاید من اشتباه از ویرگول استفاده میکنم.اینبار هم مثل همیشه مطلب خیلی عمیقی همراهم نبود. فقط یکم وقتتون رو گرفتم.با یه پادکست آشنا شدم با اسم &lt; جافکری &gt; و خب جالبه و پیشنهاد میکنم فصل ۱۲ قسمت آخر یعنی &lt; پختگی &gt; رو حتما گوش کنید. لینک ها رو براتون قرار میدم.Official siteApple podcasts</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Sat, 06 Aug 2022 20:46:37 +0430</pubDate>
            </item>
                    <item>
                <title>بات TelegrafJs تحت NodeJs همراه با GitHub API با استفاده از Axios روی Heroku</title>
                <link>https://virgool.io/@GNU_Amir/github-bot-jmcjtdi0xnj1</link>
                <description>عکس کاورخب، از تایتل معلومه هدف چیه. اگه گفتید هدف چیه!؟قراره یه بات تلگرام بنویسم با TelegrafJs که تحت NodeJs روی Heroku با استفاده از Axios برای گرفتن دیتا از GitHub API اجرا میشه ?. خیلی عجیب بود، نه؟بی شوخی بریم توضیح بدیم. این بلاگ یه پروژه آموزشی هست که قراره اینا رو یاد بگیریم:یاد بگیریم چطوری با TelegrafJs یه بات بنویسیم.یاد بگیریم چطوری با Axios از API ها استفاده کنیم.یاد بگیریم چطوری از API گیتهاب برای گرفتن یوزر و ریپوزیتوری ها استفاده کنیم.یاد بگیریم چطوری یه پروژه نود رو روی Heroku اجرا کنیم.قراره کلی خسته بشیما! پس همراه باشید که قراره کلی کیف کنیم و چیز میز یاد بگیریم. اول بریم سراغ راه اندازی محیط و شروع به کار.۱. ستاپ های اولیهاول از همه ساخت یه پوشه و اینیت کردن گیت هست.ساخت پوشه و اینت گیتحالا نوبت اینیت کردن npm هست. بله. پس خیلی راحت اونم انجام میدیم.اینیت npmبا دستور npm init شروع میکنیم به ساخت اون فایل package.json و وارد کردن اطلاعات. خب، این انجام شد، مرحله بعدی اینه که بیایم بگیم که بدون اینکه هر دفعه پروژه رو اجرا کنیم، یه کاری کنیم که هر دفعه بعد هر سیو، خودش watch کنه و خودش رو Restart کنه. برای استفاده از این مورد، میایم از nodemon استفاده میکنیم. برای نصب nodemon:نصب nodemonحالا هم نصب شد. بریم فایل اپلیکیشن رو بسازیم. قبلش بیایم یه کاری کنیم. بیایم ترمینال رو نصف کنیم، بالا کامیت ها و پایین اجرا. خب، با دستور tmux وارد تیماکس بشید، بزنید کنترل B و شیفت &quot; رو بزنید تا صفحه نصب بشه. بالا با دستور code [dot] وارد vs code بشیم و پایین فایل اپلیکیشن رو بسازیم.تقسیم صفحه، باز کردن vs code و ساخت فایل برنامهحالا، وارد package.json بشید و داخل scripts دستور تست رو وارد کنید به این صورت:&amp;quotscripts&amp;quot: {    &amp;quottest&amp;quot: &amp;quotnodemon app.js&amp;quot},حالا وارد پایین ترمینال بشید و با دستور npm test برنامه رو اجرا کنید. میدونم برنامه خالیه. اما ولی خب میخوایم اجراش کنیم دیگه. فقط، چون تلگرام نیازمند vpn هست و درخواست های بات قراره وارد دستگاه ما بشه و جواب برگرده، من با استفاده از torsocks برنامه رو اجرا میکنم.اجرا توسط تورخب، حالا اجرا شد، ترمینال بالایی میشه قسمتی برای نصب، کامیت و غیره، پایین رو اصلا کاری نداریم. بزارید اجرا بمونه همینطوری. بریم بالا dotenv رو نصب کنیم، فایل env و env.example رو بسازیم و یه بات در BotFather بسازیم.نصب دات انو و ساخت فایل هاشخب، وقتی نصب کردیم، خودش خودکار ریست شد برنامه با اینکه ما چیزی کد نزدیم. برنامه با هر تغییری، ریست میشه. یادتون نره. این خوبه، بد نیست. بریم وارد تلگرام بشیم، یه بات بسازیم.مراحل ساخت باتبات ما ساخته شد. یه توکن هم بهمون داده. حالا ما چرا اومدیم dotenv  رو نصب کردیم و اینا. ما یه چیزی داریم به اسم environment variables یا به فارسی میشه مقادیر محیطی. اینا مقادیری هست که ما میدیم و میخوام پنهان باشه. مثلا یوزرنیم و رمز دیتابیس، توکن تلگرام و اینا رو میایم اونجا میزاریم. با استفاده از dotenv هم اونا رو میخونیم. dotenv توسط gitignore اگنور میشه. یعنی نادیده گرفته میشه. اینطوری ما با خیال راحت میایم هر چی بخوایم مینویسیم و فقط داخل اون محیط هست. با فایل env.example چیکار داریم؟ اونجا میایم نام مقادیر رو میزاریم ولی بهشون مقدار نمیدیم. چرا؟ چون مثلا الان من داخل لینوکس ام دارم این اپ رو توسعه میدم، میخوام وقتی رفتم سر مک، ادامه توسعه رو انجام بدم. میام اون فایل که اگزمپل هست و ایگنور نمیشه رو پسوندش رو حذف میکنم میشه env و اون موقع مقدار رو بهش میدم.خب، مقادیر رو بزاریم.گذاشتن مقادیر در فایل هافقط مونده یه فایل gitignore رو هم بزاریم که پوشه ماژول ها و .env رو ایگنور کنه تا تو گیت اد نشه. خب من این رو دارم از قبل، پس از یه جا کپی میکنم اونجا. ولی قبلش بیایم یه git status بگیریم ببینیم یه چیزی رو.بدون فایل ایگنوروقتی اینجا وضعیت رو میبینیم، اون فایل .env و node_modules رو میبینیم. خب میخوایم نباشن اینا. پس فایل ایگنور رو کپی کنیم.اضافه کردن ایگنور فایلاینم از این، حالا من اینا رو کامیت میکنم و میریم مرحله  آموزش بات.۲. آموزش باتگفتیم قراره بات رو با TelegrafJs بنویسیم. پس نیازه اونو اول از همه نصب کنم.نصب بات و کامیت کردننصب شد و تغییرات پکیج رو کامیت کردیم. یه سری دستور هست که در zsh اینا الیاس شدند. یعنی مثلا شما جای git add میزنید ga. بریم اینا هم مرور کنیم مهم هاش رو:git add x =&gt; ga xgit add -A =&gt; gaagit commit -m &quot;message&quot; =&gt; gcmsg &quot;message&quot;git status =&gt; gstgit remote =&gt; grgit checkout =&gt; gcogit push =&gt; gpgit pull =&gt; glاینم از این مورد. وارد کد بشیم دیگه. بریم کتابخونه رو ایمپورت کنیم، مقادیر محیطی رو بخونیم، بات رو برای استارت آماده کنیم.شروع باتاول از همه که اومدیم کتابخونه رو اوردیم بالا، بعد کانفیگ dotenv و بعدش اومدیم گفت که همه مقادیر رو بریز تو متغیر env. بعد که بات رو اومدیم شروع کنیم، میگیم یه نیو کن تلگراف رو که بهش داریم توکن بات رو میدیم. بعدش در انتها لانچ میکنیم بات رو.بات الان اجرا شده. ولی هیچ دستوری نداره. شما هر کاری کنی کاری انجام نمیده. حالا بیایم درخواست های کاربر رو هندل کنیم.هندل کردن دستورات کاربر به چند دسته تقسیم میشه. بگیم که اگه دستور بود، بگیم که اگه دقیقا فلان چیز رو شنیدی و یا بر روی فلان چیز اکت نشون بده. مثلا چی؟انواع درخواست هااولی گفتیم اگه دستور استارت رو وارد کرد. دومی گفتیم اگه دقیقا گفت hi و سومی گفتیم اگه فقط روی استیکر بود. اون آخر فقط استیکر نیست. میتونیم کلی چیز بگیم. مثلا:انواع اکشن هاخب، میبینیم که ما همیشه داریم ctx رو به عنوان دومین چیز در متد میدیم. اون چیه؟داخل ctx اطلاعاتی از چت، پیام، کاربر و غیره هست. ما حتی با استفاده از ctx میایم ریپلی میکنیم. بریم روی اینا یه چیزی ریپلی کنیم:نوشتن ریپلی هابا متد replay ما الان میتونیم یه چیزی رو ریپلی کنیم. انواع ریپلی ها هم هستا. ریپلی عکس، متن، html و غیره. حالا تست کنیم.تست باتخب، به زیبایی داره بات ما کار میکنه. این یه آموزش خیلی سریع بود برای اینکه یه بات ساده بسازیم. ببینید این یه جورایی کرش کورس هست. عمیق نمیشیم تو بات تلگرام مثلا. میگیم و میریم و سعی میکنیم کامل اون موضوع رو توضیح بدیم تا حدی.ما فعلا فقط میخوایم یه پیام بگیره، اون رو به عنوان یوزرنیم حساب کنه. پس میگیم متد on و بهش message رو میدیم. داخل ctx، آیتم message و آیتم text میشه متی که ما ارسال میکنیم. بیایم یه کاری کنیم پیام ما رو بخونه و همونو برگردونه:خواندن متن و برگرداندن آنحالا که متن رو داخل یه متغیر میریزه میخوایم که تست کنیم.خواندن و نشون دادن بله. سر بلند بیرون اومد برنامه و میتونیم بریم مرحله بعد.مرحله بعد آشنایی با API گیتهاب هست! مرحله شیرین API ها.۳. آشنایی با API گیتهاببرای استفاده از API گیتهاب وارد این لینک باید بشید. به قول خارجیا، magic happens here!https://api.github.com/بریم اندپورنت های مهم رو ببینیم.User data =&gt; https://api.github.com/users/{users}
Repos data =&gt; https://api.github.com/users/{BlackIQ}/repos
Repo data =&gt; https://api.github.com/repos/{username}/{repo name}
Followers of a user =&gt; https://api.github.com/users/{username}/followers
Followings of a user =&gt; https://api.github.com/users/{username}/followingما فقط قراره از اولی استفاده کنیم. مهم نیست زیاد بقیه. بریم کاربر گل، امیرحسین با ایدی BlackIQ رو ببینیم داستانش چطوریه.اطلاعات حسابحالا اطلاعات منو مثلا میتونید ببینید و لینک و اینا هم هست. لینک فالوور ها، فالووینگ ها، ریپو ها و غیره.این یه نیمچه آشنایی بود با API گیتهاب. مرحله بعدی استفاده از Axios هست برای گرفتن اطلاعات.۴. خب، Axiosبریم نصب کنیم این لایبرری رو!نصب Axios و کامیتخب، حالا که نصب شد. بریم ایمپورت کنیم.اینطوری ایمپورت میکنیمحالا که ایمپورت کردیم بریم یکم درباره Axios صحبت کنیم. توسط این لایبرری میتونیم درخواست های Get، Post و غیره رو انجام بدیم. ما فعلا نیاز داریم فقط و فقط دیتا از گیتهاب بگیریم. پس از Get استفاده میکنیم.حالا یه متد گت اجرا شد، اجرا میشه، درخواست میده، و ما میگیم که اگه درست انجام دادی، یه data بده اما ولی اگه ارور بود، ارور رو بده. داخل دیتایی که ما میگیریم چیه؟ این دیتا شامل مواردی میشه که مهم ترین اونا data هست. دیتایی که خودمون گرفتیم نه، داخل این دیتا که ما گرفتیم یه دیتا دیگه وجود داره. برای اینکه گمراه نشید بزارید اونی که میگیریم رو بزاریم response. حالا بیایم دیتایی که میگیریم رو به بات بفرستیم. یعنی ریپلی ما، دیتا باشه.برای اینکه ریپلی به صورت Json باشه، باید اون data که از API گرفتیم رو بدیم به JSON.stringify و اون رو ریپلی کنیم. حواستون باشه متغیر input رو به username تغییر دادم که یکم خوانا تر باشه.تغییر نام متغیر، اجرا و ریختن دیتا در دیتاحالا دیتا که گرفته شده به صورت Json به ما برمیگرده. خیلی واضح هست ولی بازم تست کنیم.تست برگشت آبجکت دیتااینم از این. ما الان دیتا رو میگیریم. خب، حالا کافیه بیایم یه حرکتی بزنیم. بیایم تعریف کنیم قراره چیه رو برگردونیم به کاربر بات. قبل از اینکه چیزی رو برگردونیم، یه بار دیگه به دیتایی که از API میاد یه نگاه بندازیم. برای فرمت کردن Json از jsonformatter استفاده میکنیم. حالا دیتا رو گذاشتم داخل ورودی، اومدم از خروجی اونایی که لازم داریم رو نگه داشتم و اونایی که نیاز نمیشن رو حذف.خب، لاگین یعنی همون یوزرنیم ما، آواتار و لینک پروفایل هم به سادگی مفهوم هستند. لینک بلاگ/سایت و توییتر هم هستند. اطلاعات Bio موقعیت مکانی و شرکت هم نگه داشتیم. در آخر تعداد فالوور و فالووین ها، همینطوری ریپوزیتوری ها و گیست ها و در آخر آخر، جوین گیتهاب.این اطلاعات رو نگه میداریم تا به صورت یک متن ساده به کاربر نمایش بدیم. متن رو به صورت Markdown مینویسیم و با متد replyWithMarkdown اون رو ریپلی میکنیم. خب، اگه که MD کار کرده باشید با سینتکس آشنا هستید. اما اگه نه، اینجا یه خلاصه میریم. همینطوری دقت کنید که توی تلگرام یکم تفاوت داره. خیلی ریز.آشنایی با MarkdownBold a text:Markdown: **Text** | Telegram Markdown: *Text*Italic a text:Markdown: *Text* | Telegram Markdown: _Text_Link:Markdown &amp; Telegram Markdown: [Text](Link)ادامه کارخلاصه، اینطوری ما میتونیم بولد کنیم، ایتالیک کنیم و لینک بزاریم. متنی که ما درست کردیم به این صورت هست:متن برای خروجیحالا، این متن که درست شده، لازم هست که تستش کنیم. یه مرور کنید کد رو، تا بریم تست.کد های نهاییحالا وقتشه که برنامه رو تست کنیم.اجرا و درست کار کردناینم تست. برنامه خیلی خوب دیتا رو میگیره، دیتا رو میده. مرحله بعدی چی بود؟ اجرا برنامه روی هروکو. اما ولی قبلش بیایم کامیت کنیم یادمون نره.کامیت کردن تغییراتاجرا برنامه روی هروکوبرای اجرا روی هروکو ابتدا نیاز هست که هروکو روی سیستم شما نصب باشه. از طریق Snap خیلی راحت میتونید نصب کنید با این دستور:sudo snap install heroku --classicحالا، داخل ترمینال وارد کنید دستور لاگین رو:دستور لاگیناینجا باید مرورگر که باز میشه رو لاگین کنید داخل حسابتون:با شدن مرورگرحالا که لاگین بشه همچین صفحه ای رو مشاهده میکنید و داخل ترمینال شما لاگین میشید:با موفقیت لاگین شدیمحالا، باید یه فایل بسازیم به اسم Procfile و بهش بگیم که شما باید چی رو اجرا کنی. دستوری که قراره اجرا بشه، دستور node app.js هست. پس بیایم این دستور رو توی package.json به عنوان start بنویسیم. یعنی در قسمت scripts این رو اضافه کنیم به این صورت:حالا وقت این هست که Procfile رو بسازیم و بهش بگیم که بیا برای ما استارت رو اجرا کن:از اینجا به بعد دیگه با هیچ فایلی کار نخواهیم داشت. فقط کافیه که اپ رو بسازیم و بگیم روی هروکو پوش کنه. در آخر هم توکن بات رو به عنوان متغیر های محیطی یا همون env variables بدیم. حالا فعلا تغییرات رو کامیت کنیم:دیپلویبرای دیپلوی کافیه یه اول بگیم که برامون برنامه رو بساز. با دستور heroku create x:ساخت ریپوزیتورییه ریپو برامون ساخته شد. الان بیایم متغیر هامون رو اضافه کنیم. برای تنظیم متغیر ها کافیه بگیم که heroku config:set و بعد بهش مقدار رو با نام بدیم. مثال:تنظیم مقادیراینم از این. حالا مقدار توکن بات هم قرار دادیم. نوبت به پوش کردن میرسه که با دستور git push heroku master این کار رو انجام میدیم:حالا برنامه ما پوش شد. اما ولی ارور پایین برای چی هست؟اجرا و ارور دو تا بودن برنامه هاارور میگه که یه برنامه دیگه با این توکن داره اجرا میشه. پس این نشون میده برنامه ما درست هست. حالا برنامه لوکال رو متوقف میکنیم چون روی هروکو در حال اجرا هست.این برنامه نه کرش کورس بود، نه دوره بود و نه موضوع خاصی رو اختصاصی گسترش دادیم. همینطوری گفتیم یه چیز ساده بنویسیم تازه روش هم کار نکردیم زیاد. فقط خواستم یه خلاصه از این مباحث نشون بدم.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Sat, 02 Jul 2022 19:26:25 +0430</pubDate>
            </item>
                    <item>
                <title>آزمون ۲۲۰ سوالی، به اسم کنکور</title>
                <link>https://virgool.io/@GNU_Amir/%DA%A9%D9%86%DA%A9%D9%88%D8%B1-%D8%B3%D8%B1%D8%A7%D8%B3%D8%B1%DB%8C-ovxj4jghjppu</link>
                <description>امروز پنج‌شنبه ۹ تیر هست، صبح امروز تجربه یه آزمون 220 سوالی رو داشتم به اسم کنکور. چیزی که همه ازش میترسن. همه ازش یه ترس بدی دارن و فکر میکنن خیلی چیز سختیه. خب البته که سخته. چرا سخت نباشه؟ خبر مرگش ۲۲۰ تا سواله!بریم از تجربه خودم بگم. خب من یه دوستی دارم که یه سال ازم بزرگتره و راهنمایی و دبیرستان رو تیزهوشان بود و از وقتی من دهم رفتم ( اون یازدهم رفته بود ) بهم میگفت امیر برای کنکور بخون. من خب آدم درس خونی نیستم زیاد. تنهای مطالبی که میخونم و خوشم میاد از خوندن، مقاله و نمیدونم داکیومنت و مواردی مثل ریاضی هست. مثلا من سال هشتم بودم که ماتریکس ها رو یاد گرفته بودم یا نهم بودم سینوس و اینا رو بلد بودم اما ولی درس مدرسه رو اصلا نمیفهمم. خلاصه که من نخوندم. گفتم از یازدهم میخونم، یازدهم تموم شد گفتم از دوازدهم میخونم، رفتیم عید و گفتم از عید میخونم و خب نخوندم دیگه. تا امروز صبح.دوشنبه داشتم با دوستم صحبت میکردم که گفت برو بگیر کارت ورود به جلسه رو من حتی نمیدونستم از کجا باید بگیرم! رفت برام گرفت و من اون موقع تازه پرسیدم چه درسایی هست :) هیچی، یه چیزایی بود که من بلد نبودم. چون رشته من فنی و حرفه ای بود و داشتم برای ریاضی کنکور میدادم :)خلاصه که امروز شیش صبح بود که طبق روال عادی بیدار شدم و یکم چرخ و دور خونه و دم پنجره و اینا رسیدم به هفت صبح و راه افتادم به سمت حوزه. هفت و نیم رسیدم. از مدرسه ما کسی ثبت نام نکرده بود. چون همه میگن ما فنی کنکور میدیم سراسری نمیخوایم. همین، ما رفتیم کلی از دوستای دبستان و راهنمایی رو دیدیم و همه استرسی و همه داشتند دعا میکردن و براشون عجیب بود چقدر بیخیال بودم.میگفت از شماره فلان تا فلان وارد بشید و کلی ما رو گشتن و این چیزا. بالاخره رفتیم صندلی رو پیدا کردیم و نشستیم. یه نفر یه سوره خوند و یکم حرف زدن و نفری یه کیک دو قلو و آب معدنی دادن. یکم نشستیم تا بشه هشت و اومدن توضیح دادن. ما سه تا دفترچه داشتیم. پسر سه تا بود!دفترچه اول، سوالات عمومی. ادبیات، دینی، عربی و زبان انگلیسی. هر کدوم ۲۵ تا. یعنی دفترچه اول ۱۰۰ تا سوال بود! خب، ادبیات به شدت سخت بود و همه شعر بود و قوائد، این که هیچی، چیزی حل نکردم. از ترس اینکه یه وقت منفی میزنم. دینی، همه آیه و این چیزا و من نگاه نکرده رد کردم رفتم عربی. عربی هم که ماشالله جیزز کرایست اصلا نمیشد چیزی حل کنم. رفتم انگیسی و خدا که همکاری کنه زبان ۱۰۰ زدم :)دفترچه دوم رو اوردن، ریاضیات! من چون نمیدونستم اینا رو و درس های نظری رو نخونده بودم هیچی هم نتونستم حل کنم، یکم نگاه کردم و تونستم یه سوال حل کنم. یه سوال هم مراقبه رسوند و ریاضی از ۵۰ تا سوال تونستم ۲ تا حل کنم.دفترچه سوم، فیزیک و شیمی بود. یادم نیست چند تا سوال بود ولی فکر کنم ۷۰ تا سوال بود یا چند تا بود یادم نمیاد. خلاصه که از شیمی که یه سوال حل کردم. از فیزیک هم یه مدار و یه معادله. خیلی سخت بود. ولی خب یه سوال درباره ساختار کافئین بود و چیز باحالی بود. انقدر قشنگ بود که اومدم رو یه برگه نوشتم بیام خونه روش کار کنم :)خلاصه که هر دفترچه ۷۰ یا ۸۰ دیقه وقت داشت و من همون ۵ دیقه اول که تموم میکردم بقیه رو میگرفتم میخوابیدم. صندلیم دقیقا گوشه بود. گوشه گوشه سالن. ته سالن سمت راست. قشنگ سرم رو میزاشتم تا دفترچه بعدی استراحت میکردم. از بس که فسفر میسزوندم.تجربه ای بود که اگه به گذشته برمیگشتم بازم نمیخوندم چون در برابر افرادی که دیدم واقعا من شانسی نداشتم. همه از تیزهوشان و نمونه دولتی بودن و من از فنی و حرفه ای. همه یه استرس خاصی داشتن. همه یه مشما پر از خوراکی و بطری آب و من فقط یه ویفر کاکائویی برده بودم. من سعی کردم اشتباه نزدم. اصلا نمیدونم چرا واقعا مهم نبود برام.این هم یه تجربه بود. یه حرکتی که فکر نمیکردم اینطوری تموم بشه. بگذریم. من یه کنکور دیگه دارم برای رشته فنی که شهریور برگذار میشه. تیر ماه برای ثبت نام هست. این هم یکم میخونم مثل سراسری نشه. همین. همین و همین.اگه سال دیگه کنکور دارید حتما بخونید براش. واقعا میگم بخونید. تجربه من رو خوندید. پس درس بخونید.برای همتون آرزو موفقیت میکنم.امیرحسین.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Thu, 30 Jun 2022 12:48:35 +0430</pubDate>
            </item>
                    <item>
                <title>من از اونایی نیستم که درد و دل کنم</title>
                <link>https://virgool.io/@GNU_Amir/%D9%85%D9%86-%D8%A7%D8%B2-%D8%A7%D9%88%D9%86%D8%A7%DB%8C%DB%8C-%D9%86%DB%8C%D8%B3%D8%AA%D9%85-%DA%A9%D9%87-%D8%AF%D8%B1%D8%AF-%D9%88-%D8%AF%D9%84-%DA%A9%D9%86%D9%85-jwuurgamsj90</link>
                <description>تو ذهنم کلی مطلب میگرده، کلی چیز یادم میاد ولی انقدر که بهم ریخته هست، نمیدونم چی بگم، کدوم رو بگم. بیام از این بگم که چرا تو کشور خودم نمیتونم به جایی برسم یا بیام بگم تو کشور دیگه هم اجازه ورود بهم نمیدن.بیام ببینم هر کسی که باهاش دوستم از یه خانواده لاکچری هست و همه به پول باباشون مینازن و من باید کلی تلش کنم چون خانواده ام اونقدر هزینه نداره بهم بده. میبینم گوشیم یه گوشی سال ۲۰۱۵ هست که دیگه آپدیت براش نمیاد ولی دوستم شنبه که گوشیش رو دزدیدن، فردا از باباش ۴۶ تومن پول گرفتیم رفتیم iPhone 13 Pro خرید. تازه بلد هم نبود باهاش کار کنه همش میگفت الان این چیه اینجا و اون چیه.میبینم دوستم زنگ زده میگه میخوام برنامه نویسی یاد بگیرم به بابام گفتم مک بخر برام و بابام گفته فقط بهم مدل بگو تا سفارش بدم.من اینطوری زندگی نکردم. در توانم بوده خودم خریدم. نتونسته باشم نخریدم. نرفتم به بابام بگم چون وقتی بگم این رو میخوام و اونم نتونه برام فراهم کنه چرا بهش عذاب وجدان بدم؟سه سالی هست که کار میکنم مثلا. این شرکت، اون شرکت، اون گفت بچه ای، اون گفت کوچیکی، اون گفت راه خونه ات دوره، اون گفت جو ما همه بالای ۳۰ سال هستن شما بچه ای. چرا وقعا؟ چرا مثلا فکر میکنید اون که ۳۰ سالشه از یه ۲۵ ساله بیشتر میفهمه.چرا من نمیتونم تا همین ترکیه رو برم که کنارمون هست و تازه ویزا نمیخواد؟ چرا زندگی ها اینطوری شده؟ چرا واقعا من باید شبا ساعت ۳ شب بخوابم و صبح ساعت ۷ بیدار بشم برای ادامه کار؟ چرا باید کار رو به درس ترجیح بدم؟از کشور اروپایی نداشتم دعوت به همکاری ولی گرجستان و ترکیه کشور هایی بودن که چند تایی داشتم. واقعا هم اوکی بودن. ترکیه کنسل شد به خاطر زبان ترکی بلد نبودن. گرجستان شد برای اینکه اونجا باید یه جایی میگرفتم برای زندگی و نداشتم هزینه اون رو.بحث من فقط مالی نیست. بحث یه بحث کلی هست. من حتی عاطفی ام واقعا زندگی خوبی ندارم. من یه آدمی ام واقعا اگه به کسی محبتی کنم یا کاری براش انجام بدم هیچ چشم داشتی، هیچ انتظاری ازش ندارم. یعنی نمیگم اگه من امروز ناهار مهمونت کردم فردا تو باید مهمونم کنی. اصن یهو دیدی فردا هم باز گفتم مهمون من تو حساب نکن. ولی انتظار دارم ببینن. یادشون باشه.من با یکی نزدیک به ۶ ساله دوستم. این همه محبت، این همه کار، این همه فیلم و سریال، تعمیر و نصب و اینا، بعد بهش میگم داری از این خیابون رد میشی یه ترمز بزن منو سوار کن تا خیابون بعدی بهم میگه چقدر توقع داری!پیش دوستام بهم میگن مشاور :) یعنی واقعا مشکلی دارن میان میگن امیر ما فلانیم نمیدونم با فلان دختر دوست شدیم کات کردیم. من برای اینکه اون دوستم آروم بشه، خودم رو بیدار نگه میدارم باهاش چت میکنم ولی تهش بهم میگه: تو که عاشقی نمیفهمی!آره. شاید تو میفهمی که فقط با طرف سه روز دوست بودی. من از رابطه ام نمیگم. به کسی هم نگفتم. من با یکی سه سال دوست بودم. سه سال عدد کمی نیست واقعا. تهش شد یه جمله: امیرحسین تو پسر خوبی هستی ولی من میخوام فقط با هم دوست باشیم :)و من نپرسیدم چرا. فقط متعجب مونده بودم خیره به چت، خیره به پیام. خیره به پیام های قبلیش. من عاشق نبودم؟ تو که با دختره سه روز دوست بودی عاشقی؟یکی از دوستام دیروز پنج صبح بهم پیام داده بیداری. خب خواب بودم ندیدم. صبح پا شدم زنگ زدم چی شده بود کار داشتی. میگه: همون موقع که پیام دادم باید بیدار میشدی جواب میدادی.ببخشید من یادم نبودم از شما حقوق میگیرم که اسندبای باشم برای پیام های شما. واقعا خسته کننده شده یه چیزایی. واقعا خودت رو برای خودت نمیخوان. میخوام یه ابزار باشی که هر وقت بهت نیاز داشتند ازت استفاده کنند. یه روز براشون از پست بسته تحویل بگیری، یه روز بهش یاد بدی iOS چطوریه. یه شب تا صبح به حرفاشون گوش بدی و غیره . . .ولی وقتی بهشون نیاز داری میرن تو ۱۰۰ تا سوراخ موش قایم میشن که بگن کار داریم بعدا. من متاسفانه بلد نبودم بگم نه. بلد نبودم بگم بعدا. فکر کردم اگه کمک کنم پس فردا نیاز بهشون داشته باشم میان میگن آره داداش ما کمکت میکنیم.افرادی که تا دیروز نمیدونستن x چیه و وقتی بهش رسیدن جوری رفتار میکنن که انگار اونا بهتر میشناسنش و جوری نظر میدن که میخوام آدم رو قانع کنن که اونا درست میگن. درباره موضوعی اطلاعات ندارید لطفا نظر ندید. به خدا اگه سکوت کنید خیلی سنگین تر هستید تا اینکه یه چیزی بگید و انتظار داشته باشید درسته.تازه روش پا فشاری هم کنید که دارید درست میگید.اصلا نمیدونم. نمیدونم چرا اینا رو گفتم. ربط موضوعات رو نفهمیدم، هر چیزی اومد رو گفتم.شاید یه مقدار از چیزای تو ذهنم بود که نیاز بود خالی بشه. نیاز بود تخلیه بشه. شاید بتونم بهتر فکر کنم. شاید الان آزاد تر باشم.حرفی سخنی چیزی ندارم. اگرم تایپو دیدید، اینجا تاریکه و کیبورد بکلایت نداره.امیرحسین.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Wed, 29 Jun 2022 01:54:56 +0430</pubDate>
            </item>
                    <item>
                <title>امروز، ۶ اردیبهشت ۱۴۰۱ بود</title>
                <link>https://virgool.io/@GNU_Amir/m2-d6-xvu91ekjf35p</link>
                <description>مقدمهقبل از اینکه بخواید اینا رو بخونید باید بدونید اینا هیچ مطلب علمی نیست، هیچ مطلب سیاسی و اقتصادی نیست، هیچ مطلب هنرمندانه ای نیست. اینا حرفای منه که به صورت پابلیک ثبت میکنم، نه توی گوگل داکس و توی برگه که فقط خودم بخونم.من زندگی خیلی ساده ای دارم، شاید برای خیلیا بورینگ باشه و بگن اگه ما اینطوری زندگی میکردیم حتما افسردگی میگرفتیم. خب، وقت نداشتم از اول سال شروع کنم، پس از امروز شروع میکنم. بریم ببینیم اتفاق های ۱۴۰۱ تا الان چی بوده به صورت خلاصه.از ۱ فروردین ۱۴۰۱ تا ۵ اردیبهشت ۱۴۰۱سال ۱۴۰۱ شروعی بدی نداشت. خوب شروع شد، عادی بود، فروردین خیلی خوب بود چون بیشتر با هواش حال کردم، رفتیم مسابقات پازل دی روز ۱۲ فروردین، کلی خوش گذروندیم و مدرسه ها باز شد و رفتیم باز مدرسه. حالا با بخش مدرسه زیاد حال نکردم ولی خب اتفاق مهم بود دیگه.بریم یکم جزئی تر درباره فروردین صحبت کنیمخب، عید که هیچی. نه جایی رفتم، نه مهمون داشتیم. عید هم مثل بقیه روزای عادی گذشت.سالن هم‌آوا.روز ۱۲ فروردین، رفتم مسابقات پازی‌دی. یه مسابقه که از طرف هاروارد برگذار میشه. خیلیا اومدن، خیلی خوش گذشت. عالی بود. من تایم کامل واینستادم و اومدم. از مترو بیمه، چند ایستگاه قبلش، تئاتر‌شهر پیاده شدم اومدم کافه پگاه. یکم نشستم و بقیه اومدن. اون شب خیلی شب خوبی بود. اما چرا؟اون شب من دو تا بازی قشنگ یاد گرفتم. اولی بازی Spy بود. یعنی برنامه رندم یه افرادی رو اسپای میکرد و به بقیه لغت رو نشون میداد. حالا باید دور هم بیاید و اسپای رو پیدا کنید. خیلی بازی قشنگی بود. سوالا باید اینطوری باشه که مثلا اگه لغت دانشگاه هست شما بیای بگی خودکار یا کفگیر؟ اینطوری داری یه سوالی میپرسی و خب خودکار به دانشگاه ربط داره، نه کفگیر.بازی دوم اگه اشتباه نکنم، استوشیت بود اگه اشتباه نکنم. معرکه بود. داستان خیلی طولانی هست که بازی چیه و خب بعدا بهش جدا میپردازیم. بازی با کلی شعر و خنده و این چیزا گذشت. وقتی اومدم خونه واقعا انقدر خوشحال بودم که خانواده واقعا شک کرده بودن که من مشکلی ندارم یا یه مشکلی دارم!روز ۱۴ فروردین بود، اول ماه مبارک رمضان. منم بدون دقت به اینکه ماه رمضون کافه و رستوران ها بسته هستند پا شده بودم رفته بودم که بگردم. از همون ولیعصر شروع کردم، رفتم انقلاب، سعدی، لاله‌زار، تجریش، باز ولیعصر و خب این داستان تا ساعت دو ادامه داشت. بعد از ساعت دو دیدم خیلی اذیت شدم خیلی راه رفته بودم. اومدم شرکت زم‌زم، نشسته بودم اونجا تا نزدیکای باز شدن پگاه بشه و برم اونجا.بگذریم، رفتم پگاه، خوش گذشت دیگه. همیشه خوش میگذره من اگه گفتم رفتم پگاه شما خودتون جمله خوش گذشت رو بهش Append کنید. برگشتنه اومدم یه دوست قدیمی رو دیدم، نه که بگم دوست، یعنی یه آشنای قدیمی، دختر یکی از اقوام مدیر شرکت بود قبلا هم دیگه رو دیده بودیم و خب وقتی ایشون رو دوباره دیدم و بهم گفت بیا قبل از اینکه بریم خونه یکم بگردیم، حس کردم اگه متوجه بشه ایشون خب من ممکنه کارم رو از دست بدم و این که مهم تر از اون، آخه ۱۱ شب کجا بریم نیم ساعت بشینیم میشه ساعت ۱۲ خب.بعد زنگ زد به پدرش که سلام من امیرحسین رو دیدم اگه اشکالی نداره بریم جایی و غیره و خب خیلی عجیب بود که پدرش گفت باشه برو. مهم نیست، رفتیم و خب خیلی خوش گذشت بازم. برگشته هم خیلی حرف زد، واقعا خیلی حرف زد یعنی واقعا وقتی گفت خب من پیاده میشم با لبی خندان و لحن ناراحت گفتم ئه چه زود رسیدیم!بقیه فروردین هم بیخیال، اردیبهشت. اردیبهشت دو سه تا تولد هست که هنوز بهشون نرسیدیم و خب میرسیم و امیدوارم اجازه بدن دربارش بنویسم. روز ۲۶ فروردین قرار بود یه جلسه کتابخونی ارائه داشته باشم که خب، به خاطر یه مشکلاتی نرسیدم برسم، افتاد برای ۲ اردیبهشت. منم خیلی آماده و این صحبتا وقتی شروع شد، دیدم یهو ۲۰ تفر، سی نفر اومدن توی میتینگ من زبونم بند اومد کلمه های ساده هم اشتباه میخوندم. یعنی حتی چیزی که شما چند بار خوندی رو فکر کن اشتباه بگی، اشتباه ترجمه کنی. در کل خیلی بد بود.برای سه شنبه یعنی ۶ اردیبهشت هم برنامه داشتیم که ۸ صبح برم امتحان آیین‌نامه. از الان به بعد، میشه  ۶ اردیبهشت!خب، امروز، ۶ اردیبهشت ۱۴۰۱ بودآیین‌نامهساعت هفت و خورده ای رفتم به سمت جلسه که قرار بود هشت شروع بشه و داشتم سوالا رو میخوندم و میدونستم امکان نداره غلط داشته باشم. ده دیقه به هشت رسیدم و تا هشت و ۵۰ دیقه هنوز سرهنگ نیمده بود. بالاخره اومد. شروع کردن همه رو گشتن که چیزی نبریم تو و منم کیفم همراه بود و گوشی و با کلی ترس گوشی رو گذاشتم توی کیفم و کیف بیرون توی حیاط بود کنار بقیه کیف و این چیزا و همش میترسیدم یکی بیاد ببره.شروع کردن و کاردکس یا حالا سوالاتی که بهم افتاده بود، شماره ۱۹ بود. دقیقا همونی که قبل از اینکه بیام تو داشتم باز مطالعه میکردم. پاسخ نامه رو اول جای این که کامل پر کنم، اول یه علامت میزارم و آخر کار اونو پر رنگ میکنم. سوال های اول همه تابلو بود، همه رو جواب دادم و کلا همه رو جواب دادم. پاسخ نامه رو تحویل گرفت و اومدم بیرون از pdf دیدم آره دو تا غلط دارم. ۴ تا غلط عم قبولید. بهم اون برگه فرم رو داد و نوشته بود ۶ تا غلط. گفتم یعنی چی!؟ یعنی چی من الان خودم دیدم ۲ تا غلط دارم. رفتم گفتم و گفت صحیح میکنم اگه اشتباه صحیح کرده باشم قبولی، اگه نه، یه سال نمیتونی دیگه امتحان بدی.خب من مطمئن بودم درست حل کردم. یعنی اطمینان کامل داشتم و همش میگفتم ایول الان سرهنگه ضایع میشه. اومد گفت بزار اول ازت سوالا رو بپرسیم. وقتی پرسید دید بلدم گفت خب پس بزار ببینم پاسخنامه رو. اون دو تا غلط که هیچی خودم قبول داشتم، اما ولی من خودم ۴ تا جواب رو جا به جا زده بودم. یعنی چی!؟ یعنی مثلا انگار گفتم جواب ۱ هست ولی ۴ رو رنگ کردم. خودم باورم نمیشد انقدر گیج بازی در اورده باشم. خیلی بد بود چون یه سال نمیتونم امتحان بدم مثل اینکه.مدرسهرفتم مدرسه و زنگ دوم رسیدم، آخراش بود و رفتیم زنگ تفریح، اومدیم درس دفاعی. طرف اومد درس زندگی بده یه سوال پرسیدم بهش برخوردم گفت برو بیرون. همون سه چهار دیقه اول. سوالم خیلی سوال ساده ای بود!گفت ما زندگیمون به دو بخش تقسیم میشه. بخش اول زندگی کوتاه مدت و بخش دوم زندگی بلند مدت. زندگی کوتاه مدت میشه تا ۲۵ سالگی، بقیه میشه بلند مدت. منم گفتم آقا خب یکی توی ۲۷ سالگی بمیره، چطوری ۲ سال میشه بلند مدت ولی ۲۵ میشه کوتاه مدت؟رفتیم بیرون توی حیاط، هیچ کسی نبود. اومدم بالای پله ها نشستم تماشا میکردم. یه حیاط بزرگ که آفتاب کامل اونو پوشونده بود. هوا سرد بود نه خیلی ولی خب، سرد بود دیگه! آفتاب میخواست برتری خودش رو نسبت به هوا سرد نشون بده، هوا سرد تر میشد. روی پله ها خوابم برد و زنگ خورده بود و چند نفر اومدن صدام کردن. خیلی خوب بود چون هوا خوب بود و در کل خوب بود دیگه.زنگ آخر ورزش بود، من هیچ وقت ورزش نمیکنم. کلا به خاطر مشکلی که دارم نمیتونم بدو ام یا بپرم. به همین دلیل نمیتونم بازی کنم با بقیه. چه فوتبال و والیبال و اینا. داشتم با معلم ورزشه صحبت میکردم گفت بریم والیبال بازی کنیم بهت یاد میدم تمرین کن. خیلی خوش گذشت چون واقعا یاد گرفتیم مثلا توپ رو بگیرم و کلا یکم بازی کردم. نه حرفه ای. در حد همون یه ساعت. ورزش حال میده. تنها ورزشی که میکردم دوچرخه سواری بود، از وقتی ازم دزدیدنش، دیگه خیلی وقته سوار نشدم.عصر بارونیشب ۶ اردیبهشتنون تموم شده بود قرار بود برم نون بگیرم. همون ساعت ۶ بود که چایی رو دم کردم از پنجره دیدم آفتاب هست هنوز و خیلی گرم بود مثل اینکه. خب یه لباس مناسب پوشیدم رفتم اول نون سنگک بگیرم شلوغ بود و نزدیکای ۶ و ۴۰ دیقه بود نوبتم شد، از یه ربع بیست دقیقه قبل هوا معلوم بود داره بهم میریزه. نون رو گرفتم که بیام بارون گرفت. بارون به شدت شدید. لحظاتی نگذشته بود که کل زمین خیس شد. منم لباسم مناسب نبود، سردم بود. رسیدم خونه و لذت بخش ترین قسمت، قسمت افطارش بود که هیچی واقعا نون و پنیر نمیشه!طبق معمول، نید فور اسپیدخب نید فور اسپید یه بازی خیلی محبوبه توی دسته ماشین سواری. به بازیش خیلی علاقه دارم ولی خب بازی نمیکنم که! یه دوستی دارم به اسم علی که ایشون مهارت های رانندگیش بسیار بالاست. بسیار بالا!ما خب شب ها همیشه میریم بیرون. از همون نه میریم تا دوازده و اون موقع ها. دیشب رفتیم بارون هم باز داشت می اومد هوای سرد، و لیز خوردن ماشین، آخ آخ آخ. یه بار یه ماشینه پیچید ما گرفتیم اونور اون بنده خدا خودش هول کرد ما نقهمیدیم چی شد ولی فکر کنم اون چند تا فحشی داد!پایان شبتموم شد و نه دیگه کاری داشتم نه فیلم دیدم و نه چیزی، فقط شروع کردم ۶ اردیبهشت رو توی برگه نوشتم که امروز یعنی ۷ اردیبهشت پست کنمش. دلم برای Taylor Swift تنگ شده بود و به یاد یه دوست قدیمی پلی لیست خود رو گوش کردم. خیلی یاد گذشته افتادم و خب عالی بود.تموم شد، ۶ اردیبهشت به پایان رسید. برای شما حوصله سر بر بود. میدونم. اما ولی من که بهم خوش گذشت. مخصوصا وقتی رو پله ها خوابیدم. یه مهارت خاصی توی نشسته خوابیدن دارم خیلی جالبه.خیلی خوشحالم که اگه دوست کمی دارم حداقل دوستای خوبی دارم. یه دوست سالم بهتر از ده تا دوست خلاف هست!بیشتر از این ادامه نمیدم، ۷ اردیبهشت میبینمتون.امیرحسین.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Wed, 27 Apr 2022 16:23:08 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش دارت جلسه 006 | تبدیل دیتا تایپ ها</title>
                <link>https://virgool.io/Dartians/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D8%A7%D8%B1%D8%AA-%D8%AC%D9%84%D8%B3%D9%87-006-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%AA%D8%A7%DB%8C%D9%BE-%D9%87%D8%A7-xxwecmsemulj</link>
                <description>در جلسه قبلی یه آموزش نسبتا متوسط داشتیم درباره رشته ها، کارکتر های خاص و حتی چند متد جدید. در این جلسه قراره با هم یاد بگیریم که چطوری یه int رو تبدیل به رشته کنیم، فلوت رو تبدیل به رشته کنیم ( منظور از فلوت همون دابل ها اعشار هست ) و از همه مهم تر این که چطوری رشته رو تبدیل به اعشار یا رشته رو تبدیل به int کنیم.این جلسه، جلسه کوتاهی خواهد بود چون تبدیل ها خیلی ساده هستند و کار خاصی ندارند. همانطور که گفته شد، قرار هست موضوعات زیر رو کاور کنیم.تبدیل عدد صحیح به عدد اعشار یا رشتهتبدیل عدد اعشار به عدد صحیح یا رشتهتبدیل رشته به عدد صحیح یا عدد اعشاربریم شروع کنیم.تبدیل int به String و Doubleاینت ها یا اعداد صحیح دارای متد هایی مثل toString و toDouble هستند. پس برای تبدیل خیلی ساده از آن متد ها میتوانیم استفاده کنیم.int a = 50;اول یه متغیر تعریف کنیم. نوبت تبدیل دیتا تایپ متغیر به رشته هست.String a_string = a.toString();با استفاده از متد toString خیلی راحت دیگه میشه دیتا رو تبدیل به رشته کرد. الان برای مثال یه متغیر دیگه تعریف کردیم که مقدارش مساوی هست با استرینگ شده متغیر اول. یعنی، دیتای اول با دیتای جدید کاملا فرق داره. اما ولی چطوری اینت رو تبدیل به عدد اعشاری کنیم؟double a_double = a.toDouble();همچنین خیلی راحت برای تبدیل واحد به اعشار میتوانید از متد toDouble استفاده کنید. این متد به سادگی میاد و دیتا تایپ رو تبدیل میکنه. اینبار هم باز یه متغیر جدید تعریف شده که اعشاری شده متغیر a رو داخل خودش داره.این بود تبدیل های اعداد صحیح.تبدیل Double به String و intبرای شروع، یه متغیر اعشاری نیاز داریم.double b = 3.14;تبدیل به عدد صحیح به چه صورت هست؟ همانطور که int ها متد هایی مثل toString و toDouble دارند، دابل ها هم متد هایی دارند. مهم ترین آنها که در این آموزش به آنها میپردازیم، toInt و toString میباشد. تبدیل ها خیلی ساده انجام میشوند.تبدیل دابل به عدد صحیح.int b_int = b.toInt();با توجه به مثال بالا، در مثال های قبلی نیست شاهد این موضوع بودیم. یک متغیر اینت تعریف میکنیم که مقداری که دارد، اینت شده ی متغیر دابل هست. تبدیل به رشته هم واقعا مثل همین هست و دیگه توضیحات خاصی رو شامل نمیشه.String b_string = b.toString();اما ولی از الان به بعد یکم کار سخت میشه. برای تبدیل رشته به int یا double، یکم موضوغ فرق میکنه.تبدیل String به int و doubleدر مثال های قبلی، خیلی راحت از to فلان استفاده میشد برای تبدیل اینت و دابل ها اما ولی برای تبدیل رشته به اینت یا دابل، یکم شاید سخت باشه اولش.برای تبدیل رشته با اینت ما باز از خود متد های int استفاده میکنیم. همچنین هم برای دابل ها. اما ولی چه متدی؟ متد parse متدی هست که یه رشته از شما میگیرد  آن ها تبدیل میکند. برای تبدیل به دابل باید از double.parse و برای عدد صحیح، از int.parse استفاده شود. بریم مثال بزنیم.String c = &amp;quot10&quot;اول از همه یه رشته در نظر میگیریم. بریم برای تبدیل به int.int c_int = int.parse(c);همانطور که گفته شد، از int.parse استفاده میشود تا بهش رشته رو بدیم و اون برامون تبدیل کنه. توی این مثال هم ما یه متغیر تعریف کردیم که اینت هست و مقدارش اینت شده ی رشته c میباشد.برای تبدیل به دابل هم فقط کافیه جای int ها رو با double عوض کنیم.double c_double = double.parse(c);همانطور مثل مثال int، اینبار دابل رو مثال زدیم.به صورت خلاصه ما در این جلسه تبدیل های زیر رو یاد رفتیم:Int -&gt; Double = toDouble()Int -&gt; String = toString()Double -&gt; Int = toInt()Double -&gt; String = toString()String -&gt; Int = int.parse()String -&gt; Double = double.parse()این بود جلسه 006 از آموزش های کوتاه دارت. چیت شیت این جلسه رو میتونید داخل گیتهاب دارتیانز مشاهده کنید.امیدوارم خوشتون اومده باشه و بتونید استفاده کنید. خوشحال میشیم اگه ما رو به دوستانتون هم معرفی کنید.همچنین میتوانید به کانال و گروه تلگرام ما بپیوندید.Channel: @DartiansGroup: @Dartians_Chatتا جلسه بعد تمرین کنید. موفق باشید :)</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Mon, 25 Oct 2021 16:40:34 +0330</pubDate>
            </item>
                    <item>
                <title>رشته ها - 2 و 3 | آموزش دارت جلسات 004 و 005</title>
                <link>https://virgool.io/Dartians/%D8%B1%D8%B4%D8%AA%D9%87-%D9%87%D8%A7-2-%D9%88-3-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D8%A7%D8%B1%D8%AA-%D8%AC%D9%84%D8%B3%D8%A7%D8%AA-004-%D9%88-005-vunjws1zm09c</link>
                <description>در جلسه پیش ما درباره استرینگ ها صحبت کردیم. گفتیم چطوری یه کارکتر خاص بسازیم، یه عملی رو روی متغیر انجام بدیم و چطوری به متغیر یه چیزی رو بچسبونیم. در این جلسات قراره چون حجم 004 و 005 کم هست، دو تا رو تو یکی درس بدیم. به طور خلاصه قراره به چهار تا تابع اشاره کنیم و رشته های مختلف رو هم بزرگ کنیم، هم کوچیک کنیم، یه چیزی رو توش سرچ کنیم و هر چیزی که داخل یکی هست رو با یکی عوض کنیم.جلسه 004برای بزرگ کردن یه رشته، کافیه از تابعی toUpperCase استفاده کنیم. این تابع به راحتی استرینگ آپرکیس شده رو بهتون بر میگردونه. درباره تابع های برگشتی حتما صحبت خواهیم کرد.بزارید یه مثال بزنیم:String text = &amp;quotWe all love Dart&amp;quotString Utext = text.toUpperCase();print(Utext);خروجی کد بالا به این شکل میباشد:WE ALL LOVE DARTاما ولی تابع بعدی، استرینگ رو لورکیس میکنه. یعنی همه حروف ها به کیس کوچیک تغییر داده میشوند. این تابع toLowerCase نام دارد.مثال برای toLowerCase:String love = &amp;quotDartians helps you&amp;quotString Ltext = love.toLowerCase();print(Ltext);همون طور که حدس میزنید، این رشته کوچیک میشه و خروجی چیزی هست که در زیر میبینید:dartians help youاین بود جلسه 004. خیلی کوتاه و ساده. پس تا الان دو تا تابع جدید یاد گرفتیم برای کار با رشته ها. اما ولی برای مثال، تابع لورکیس به چه درد ما میخورد؟یه مثال ساده میزنیم. برنامه برای انجام عملیات ها ممکنه از کاربر داده ای که میگیره حرف اولش بزرگ باشه، یا یه قسمتی بزرگ باشه و برنامه طوری تعریف نشده که بدونه اونا بزرگ شدن. پس اول کار اون متغیر رو کوچیک میکنه تا فرایند عملیات ها روش بدون مشکل اتفاق بیافته.یه مثال دیگه. برای مثال برنامه از شما یه Y میخواد و یه N. خب برنامه طوری تعریف شده که اگه ورودی y بود مثلا ادامه بده و اگه n بود استوپ کنه. اما ولی شما وقتی Y میدید، برنامه متوجه نمیشه. پس اول کار میاد ورودی رو لورکیس میکنه.چیت شیت این درس داخل گیتهاب.جلسه 005در جلسه پیش همین بالا دو تا تابع معرفی کردیم. بخوام توضیح بدم طول میکشه خسته میشید. بهتره برید یه نگاه به بالا بندازید. در این جلسه قراره دو تا تابع دیگه رو معرفی کنیم و با استفاده از تابع اول، یه استرینگ رو داخل یه استرینگ سرج کنیم و ببینیم وجود داره یا نه. با تابع دوم میگیم هر چی مثلا اسمبلی هست رو داخل استرینگ با دارت عوض کن.خب، اولین تابعی که قراره استفاده کنیم، بهمون بولین برمیگردونه. یعنی true یا false. چون با شرط ها آشنا نیستید، فعلا درباره شرط ها حرفی نمیزنیم. این تابع contains نام دارد.بریم یه مثال بزنیم:String friends = &amp;quotRachel, Phoebe, Monica, Joey, Ross, Chandler&amp;quotbool is_rachel = friends.contains(&amp;quotRachel&amp;quot);bool is_amir = friends.contains(&amp;quotamir&amp;quot);print(is_rachel);print(is_amir);خروجی به چه شکل میباشد؟truefasleپس، وقتی شما داخل یه استرینگ میخوادید ببینید که یه چیزی وجود داره از contains استفاده میکنید. اینطوری شما خیلی راحت میتونید یه مقدار true یا false بدست بیارید.تابع دوم یعنی replaceAll تابعی برای جایگذینی استرینگ ها میباشد. برای مثال میخوایم هر چی امیر داخل استرینگ هست به مهران تغییر کنه.بریم مثال بزنیم:String loves = &amp;quotI love Js. We love Interstellar. The love fun&amp;quotprint(loves);String hates = loves.replaceAll(&amp;quotlove&amp;quot, &amp;quothate&amp;quot);print(hates);خروجی کد بالا اینطوری هست که اول بعد از تعریف متغیر، ما اونو چاپ میکنیم تا رشته رو ببینیم. حالا وقتی کلمات رو تغییر میدیم باز اونو چاپ میکنیم تا با رشته اول اونو مقایسه کنیم.I love Js. We love Interstellar. The love funI hate Js. We hate Interstellar. The hate funدیدیم که تابع replaceAll دو تا پارامتر میگیره که اولی رشته فعلی هست و دومی رشته ای که قراره جاش بیاد.لینک چیت شیت این جلسه در گیتهاب.برای بهتر شدن و روون تر شدن در متد های رشته ها، حتما حتما زیاد تمرین کنید. میتونید با همه این 4 تا تابع یه برنامه تمرینی بنویسید.سوال داشتید حتما داخل گروه بپرسید. همچنین به کانال تلگرام ما هم بپیوندید چون مسابقات،‌ چالش ها و غیره همه داخل کانال و گروه اطلاع رسانی میشه.Channel: @DartiansGroup: @Dartians_Chatتا جلسه بعدی خدانگهدار.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Sat, 23 Oct 2021 12:00:41 +0330</pubDate>
            </item>
                    <item>
                <title>رشته ها - 1 | آموزش دارت - جلسه 003</title>
                <link>https://virgool.io/Dartians/%D8%B1%D8%B4%D8%AA%D9%87-%D9%87%D8%A7-1-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D8%A7%D8%B1%D8%AA-%D8%AC%D9%84%D8%B3%D9%87-003-cys43oxcuidl</link>
                <description>در جلسه اول، تابع پرینت رو فرا گرفتیم و یاد گرفتیم چطوری ازش استفاده کنیم. در جلسه دوم 4 تا دیتا تایپ یاد گرفتیم و همچنین انواع الحاق ها رو هم توضیح دادیم. در جلسه دوم همچنین یاد گرفتیم چطوری در الحاق، از عملگر ها هم استفاده کنیم. برای مثال میخواستیم که موقع چاپ سن، یه عدد به اون سن اضافه بشه.int age = 18;
print(&amp;quotOne plus the $age is ${age + 1}&amp;quot);اما ولی قراره این جلسه بیشتر در رابطه با رشته ها یاد بگیریم. اول از همه بریم به سوالی که جلسه قبل پرسیدیم جواب بدیم.حل سوال جلسه 002اگه بخوایم خروجی مانند زیر بخوایم بگیریم،‌چطوری باید همچین کدی رو بنویسیم؟Temp is 25C.شاید اول همه خیلی راحت این جواب به ذهنتون برسه:print(&amp;quotTemp is $tempC&amp;quot);نه. این جواب درست نیست. چرا؟ شما دارید حرف C رو میچسبونید به اسم متغیر. یعنی اینطوری دارت فکر میکنه یه متغیر به اسم tmepC وجود داره و نمیتونه پیدا کنه. راه درست چیه؟ شما میتونید متغیر رو باز داخل {} ها قرار بدید. اینطوری وقتی شما C رو میچسبونید به متغیر،‌ دیگه مشکلی بوجود نمیاد.print(&amp;quotTemp is ${$temp}C&amp;quot);این بود جواب سوال جلسه قبل. بریم سر موضوعات این جلسه.تا حالا شده توی یه رشته بخواید چند دفعه از &#x27; یا &quot; استفاده کنید. معمولا این مسئله بین هر زبانی یه طور هست. یعنی شما ممکنه رشته رو با &#x27; شروع کرده باید و وسطش بخواید یکی دیگه استفاده کنید. برای مثال:Now I&#x27;m feeling good.دقت کرده باشید، بین i و m از &#x27; استفاده شده. فرض میگیریم که رشته رو با &#x27; شروع کردیم. یعنی:print(&#039;Now I&#039;m feeling good!&#039;);اینجا برنامه وقتی به اولین &#x27; که وسط هست میرسه، اون رشته رو میبنده. چون فکر میکنه تموم شده. اما ولی راه درست کردن این موضوع، دو تا روش هست. روش اول استفاده از \ و روش دوم استفاده از &quot;.روش اول یعنی شما قبل از اون سینگل کوتیشن، یه \ بزارید. وقتی گذاشتید میتونید بعدش &#x27; رو بزارید و برنامه بدون مشکل کار کنه.print(&#039;Now I\&#039;m feeling good!&#039;);اما ولی روش دوم ساده تره. روش دوم میاد میگه که رشته رو با دابل کوتیشن شروع کنید و وسطش خیلی راحت سینگل رو بزارید.print(&amp;quotNow I&#039;m feeling good!&amp;quot);قسمت دوم جلسه سه، کارکتر های خاص هستن. تا الان، با $ و \ آشنا شدیم. اما ولی یه سوال. شما وقتی بخواید آدرس یه فایل رو چاپ کنید، وقتی از \ استفاده کنید، آیا بهتون همون خروجی رو میده؟print(&amp;quotDir is: \home\user\Downloads&amp;quot);نه، این روش روش درستی نیست چرا که برنامه همچین اروری رو تقدیم میکنه:Error: An escape sequence starting with &#039;\u&#039; must be followed by 4 hexadecimal digits or from 1 to 6 digits between &#039;{&#039; and &#039;}&#039;.  print(&amp;quotDir is: \home\user\Downloads&amp;quot);Error: Compilation failed.پس اگه بخوایم \ رو چاپ کنیم، چی باید بنویسیم؟ از همون دو تا بزارید. یعنی:print(&amp;quotDir is: \\home\\user\\Downloads&amp;quot);پس تا الان یه کارکتر خاص یادگرفتیم. یعنی \\ در واقع یعنی یک \ که در cli چاپ میشود.کارکتر بعدی $ میباشد. شما خالی خالی نمیتونید اینو چاپ کنید. یعنی مثلا کد زیر اشتباه میباشد:print(&amp;quotYou have 10 $&amp;quot);چرا اشتباهه؟ چون دارت میخواد بعد از $ یه متغیر بگیره. ولی ما متغیری نداریم. یعنی اون خالی میمونه و ارور میده. روش درست کردنش به این شکل هست که به جای $ از $\ استفاده کنیم. اینطوری، فقط $ چاپ میشه.print(&amp;quotWe have 20 \$&amp;quot);آخرین قسمت این جلسه درباره این هست که بدون استفاده از \ راحت کارکتر هایی مثل \ و $ رو چاپ کنیم.برای این کار نیاز هست شما قبل شروع شدن کوتیشن،‌ حرف r رو قرار بدید.print(r&amp;quotFile is in /home/amir/Downloads and They have 50 $&amp;quot);وقتی شما r رو قرار میدید، دیگه نیازی نیست که برای $ از $\ استفاده کنید و برای \ از دو تا \.این بود جلسه سوم، آشنایی بیشتر با رشته ها و استفاده از اون ها. رشته ها خیلی طولانی نیستند.چیت شیت این جلسه داخل گیتهاب دارتیانز موجود هست میتونید از طریق این لینک مشاهده کنید.به کانال تلگرام ما هم بپیوندید چون مسابقات،‌ چالش ها و غیره همه داخل کانال و گروه اطلاع رسانی میشه.Channel: @DartiansGroup: @Dartians_Chatاگه سوالی داشتید حتما بپرسید. جلسه های 001 و 002 داخل تلگرام بودند اگه اونا رو از دست دادید حتما ببینید. تا جلسه بعدی خدانگهدار.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Fri, 22 Oct 2021 12:15:31 +0330</pubDate>
            </item>
                    <item>
                <title>اسپانسرشیپ گیتهاب</title>
                <link>https://virgool.io/@GNU_Amir/%D8%A7%D8%B3%D9%BE%D8%A7%D9%86%D8%B3%D8%B1%D8%B4%DB%8C%D9%BE-%DA%AF%DB%8C%D8%AA%D9%87%D8%A7%D8%A8-rdlufbg5wm8s</link>
                <description>خب، تا حالا شده وارد گیتهاب یه شخصی بشید و دکمه اسپانسر براش فعال باشه. حالا شده وارد یه ریپوزیتوری بشید و ببینید که باز دکمه اسپانسر بالای صفحه هست و سمت راست هم نوشته Sponsor this project.خب،‌ روش اول یه روش قانونی است. وارد صفحه اسپانسرشیپ گیتهاب میشید و مثل یک انسان که خارج از ایران زندگی میکنه، راحت درخواست میدید. ما چون توی ایران هستیم (نمیدونم شمایی که داری اینو میخونی ایران هستی یا نه ولی اگه خارج از ایرانی دست منم بگیر مشتی) باید از یه روش جالب استفاده کنیم. اونم اینه که باید خودمون برای خودمون اسپانسرشیپ راه بندازیم. اما ولی چطوری؟وارد گیتهاب بشید و یه ریپوزیتوری به اسم .github بسازید.چون من قبلا ساختم، نمیتونم باز بسازم. پس به همین شکل شما یه یه ریپوزیتوری میسازید. وقتی وارد شد شما به یه فایل نیاز دارید. فایلی به اسم FUNDING.yml. داخل این فایل شما باید لینک های دونیشن خودتون رو قرار بدید. اگه لینک دونیشن دارید که خب عالیه. اما اگه ندارید، میتونید برید با IDPay یا PayPal یا کلا هر جای دیگه یه لینک دونیشن بگیرید. وارد فایل ساخته شده برید و به این شکل لینک ها رو قرار بدید.custom: [
&amp;quotlink1&amp;quot,
&amp;quotlink2&amp;quot,
&amp;quotlink3&amp;quot
]وقتی لینک ها رو قرار دادید، اونو کامیت کنید و وارد یه ریپوزیتوری دیگه بشید. وقتی که وارد شدید، در بالای صفحه، دکمه Sponsor نشون داده میشه و در کنار صفحه، سمت راست، لینک های اسپانسرشیپ که شما قرار دادید هم نشون داده میشه. اینطوری هر چند تا لینک که بخواید رو میتونید قرار بدید. اما ولی اگه در خارج از ایران زندگی میکنید خب خیلی سریع تر و قانونی تر میتونید این کار رو انجام بدید. ببینید وقتی داخل گیتهاب شما اسپانسر میگیرید، اون اسپانسر میگه که مثلا من 10 دلار ماهیانه به این شخص پول میدم. پول وارد اکانت شما میشه و پی اوت Payout میشه روی حساب بانکی شما. قبول شدنش خیلی سخته اگه تو ایران هستید. اما ولی اگر خارج هستید، از روش قانونی اقدام کنید.وارد این لینک بشید و طبق دستورات عمل کنید.اول از همه، روی دکمه Get Sponsored بزنید تا وارد صفحه بعدی بشید.وقتی که وارد شدید اگه اکانتی رو ثبت کرده باشید براتون نمایش میده. الان اکانت اول برای اسپانسرشیپ گیتهاب قبول شده و فقط حساب بانکی مونده که کانکت بشه. اما ولی اکانت دوم یعنی ارگان هنوز حتی دیده هم نشده. یه اکانت دیگه برای مثال شروع میکنیم.یکم بیاید پایین و یه اکانت یا یه ارگان رو انتخاب کنید. اگه اکانت خودتون باشه که خب اوکی اونو بزنید، اما اگه ارگان هست باز میتونید اونم بزنید. برای مثال یه ارگان رو در نظر میگیریم و میریم برای اسپانسرشیپ.وقتی یه ارگان رو انتخاب کنید، وارد صفحه بعد میشید و اون موقع باید اطلاعات رو وارد کنید. ایمیل که خب ایمیل ارگان هست اما ولی برای اون قسمت بانکی، اولی رو انتخاب میکنیم.بعد که زدید کشور که توش حساب بانکی هست رو انتخاب میکنید. حالا دکمه سبزه رو بزنید و بریم مرحله بعدی.حالا، مینویسه که رفتید توی لیست انتظار. باید صبر کنید تا گیتهاب اپلای شما رو ببینه و وقتی اپلای رو دید بهتون خبر میده که برید اطلاعات رو تکمیل کنید.اگر برای مثال برای شما ایمیل اومد که تایید شدید، باید وارد داشبورد اسپانسری بشید و اطلاعات رو همونطور که گفته شده وارد کنید. (هنوز حساب Stripe رو اضافه نکردم به همین دلیل فعال نشده هنوز دکمه اکانت.)این بود مطلب آموزش گرفتن اسپانسر و یا استفاده از اسپانسر به روش های خلاقانه ایرانی :)چون هنوز اسپانسرشیپ کامل نشده هنوز از روش ایرانی استفاده میکنم. اینو آدرس ریپو هست میتونید دقیق تر نگاه کنید.Repository: https://github.com/BlackIQ/.githubحمایت.اگه از مطلب خوشتون اومد میتونید منو نه به صورت پولی بلکه به صورت گیتهابی از طریق استار دادن و فالو کردن حمایت کنید. اگر که علاقه داشتید باز مطلبی در زمینه گیتهاب، اسپانسر، اپلای ها و دگر چیز ها بدونید بهم حتما خبر بدید و اگه بتونم براتون اونو آماده میکنم.Github: https://github.com/BlackIQروی بنده حساب کنید.سوالی چیزی هم داشتید هم میتونید ایمیل بزنید و هم میتونید توی تلگرام پیام بدید. هیچ فرقی نمیکنه. خوشحال میشم کمکتون کنم اگه سوالی داشتید.Telegram: https://t.me/BlackIQEmail: me@blackiq.irمعرفی.همچنین چند وقت پیشی با یه تیم برای ترجمه یه کتاب به اسم Django for professionals آشنا شدم و باهاشون همکاری میکنم. اگه در زمینه ترجمه کمک کنید، به گروه تلگرامی بپیوندید. قراره بعد از این کتاب، کتاب های بعدی رو شروع کنیم. پس حتما نیازه که کمکمون کنید! تمام اهدا های مالی، به خیریه محک برای حمایت از این موسسه میباشد. خوشحال میشیم که توی این کار خیر هم شما کمک کنید.Repository: https://github.com/mthri/dfp-persianTelegram: https://t.me/dfp_farsiآموزش های مرتبط.هر کسی بلده از HTML توی فایل های README استفاده کنه. اما ولی هر کسی بلد نیست داخل فایل های MD خودش Markdown بنویسه. پس اگه علاقه دارید به این که این زبان رو یاد بگیرید، میتونید از لینک های زیر استفاده کنید. همچنین حمایت هم کنید!Main Repository: https://github.com/BlackIQ/markdownGithub | Persian: https://github.com/BlackIQ/markdown/blob/main/learn/persian.mdGithub | English: https://github.com/BlackIQ/markdown/blob/main/learn/english.mdWeb | Persian: https://md.blackiq.ir/faWeb | English: https://md.blackiq.ir/enاین بود اولین مطلب ماه مهر، اولین مطلب پاییز، اولین مطلب نیمه دوم سال :)امیدوارم لذت برده باشید. اگر این آموزش استفاده کردید بهم خبر بدید یا همینجا کامنت کنید. همونطور که گفته شد، سوال داشتید بپرسید. این مطلب رو شر کنید و دوستانتون هم بتونند استفاده کنند.ممنون.امیرحسین.</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Wed, 29 Sep 2021 11:37:47 +0330</pubDate>
            </item>
                    <item>
                <title>آرایه و سی</title>
                <link>https://virgool.io/@GNU_Amir/c-len-jrctewoadccd</link>
                <description>توی پایتون ما همه چیز داریم. یه لیست درست میکنیم و خیلی راحت با تابع len تعداد آیتم هاش رو درمیاریم. اما اینجا حرف سی هست! تابع len کجا بود آخه!میخوایم یه چیز جالب رو بهتون نشون بدیم اونم اینه که چطوری تعداد آیتم های یک آرایه رو در سی پیدا کنیم و اونا رو تک تک نشون بدیم. چیز خیلی ساده ای هست که همه میدونید احتمالا اما ولی شاید کسایی باشند که تازه شروع کردن و سردرگم هستند.اول نمونه پایتون رو میریم.خب اینو میریم اجرا کنیم.اجرای کد پایتونتوی پایتون خیلی راحت یه لیست ساختیم و طول اون رو پیدا کردیم. هر کدوم هم همراه با شماره جایگاهش نمایش دادیم. حالا میریم سراغ کار اصلی یعنی انجام این کار توی C.توی سی هر عدد صحیح ( منظورم int هست ) با سایز 4 همراه است. یعنی شما اگه یه عدد تعریف کنید سایز اون عدد 4 در نظر گرفته میشود. پس یعنی اگه در یک آرایه 10 تا عدد صحیح باشد سایز آرایه میشود 40. یعنی آیتم ها ضربدر 4 میشود. خب بریم یه آرایه تعریف کنیم:int array[] = {10, 12, 14, 16, 18};آرایه رو تعریف کردیم. اما حالا چطوری تعداد رو پیدا کنیم؟ بله درسته! سایز آرایه رو تقسیم به 4 میکنیم.int len = sizeof(array) / 4;حالا len مقدار 5 رو داره. پس خیلی راحت میتونیم مثل کد پایتون با یه حلقه for بریم و هر آیتم رو نمایش بدیم.for (int i = 0; i &lt; len; i++) {        printf(&amp;quotPlace %d is %d\n&amp;quot, i, array[i]);}کد کامل به شکل زیر هستش:کد نوشته شده با Cخب بریم واسه اجرا.اجرااین دفعه آموزش خاصی نداشتیم فقط یه چیز ساده رو توضیح دادیم شاید افراد مبتدی بتونن استفاده کنند.لینک گیتهاب : https://github.com/BlackIQ/learn/tree/main/C/3-Len</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Sat, 05 Jun 2021 19:25:19 +0430</pubDate>
            </item>
                    <item>
                <title>Battery Percentage</title>
                <link>https://virgool.io/@GNU_Amir/battery-percentage-paedt4ngepvx</link>
                <description>خب سلام و مستقیم میریم سمت یه آموزش دیگه و باحال.همون طور گه گفتیم یه ریپو زدیم به اسم learn که توش از این اموزش های باحال قرار میدیم. دومین آموزش برای باطری و داستانای باطری هستش!خب چطوری میشه یه اسکریپت بنویسیم که بهمون مقدار شارژ باطری لپ تاپمون رو بده؟یا این که اگه زیر 30 درصد اومد بهمون نوتیفیکیشن بده؟خب خیلی ساده هستش! استفاده از ماژول psutil. این ماژول خیلی قوی هستش و فقط باطری یه تیکه کوچیکی از استفاده ای این ماژول هستش. خب پس میایم و بخش های مختلف این ماژول رو در طی روز های آینده بررسی میکنیم.نصب این ماژول هم خب مثل بقیه راحته و با pip نصب میشه.pip3 install psutilخب حالا نصب کردیم و میریم برای شروع اولین اسکریپت با psutil. گفتیم تو این بخش میخوایم درصد باطری ببینیم. دو تا چیز هم اضافه تر میگیم برای این که برنامه بهمون بگه آیا لپ تاپ در حال شارژ کردن هست که خیر. و این که بگه تا چه مدت زمانی لپ تاپ ما شارژ داره.قدم اول مثل همیشه ایمپورت کردن ماژول هست.import psutilخب فانکشن های زیادی درون psutil هستند که تعدادی از اون ها برای سنسور های استفاده میشند یا بعضی ها برای مموری و هارد و این چیزا. باطری تو دسته سنسور هاست.ما از تابع sensors_battery استفاده میکنیم. اگه این تابع رو خشک و خالی فقط صدا بزنید به شما همچین چیزی رو برمیگردونه:percent=93, secsleft=16628, power_plugged=Falseیعنی سه تا متغیر داخل این تابع قرار دارند. اولی درصد باطری، دومی زمان باقیمانه به ثانیه و اخری هم این که آیا لپ تاپ به برق وصله یا نه.خب پس مثل نوتیفیکیشن میایم و به یه متغیر تابع sensors_battery رو میدیم. یعنی:battery = psutil.sensors_battery()و حالا برای پرینت کردن هم خیلی راحت میشه عمل کرد:print(f&amp;quotYour battery percentage is {battery.percent}&amp;quot)print(f&amp;quotIs your battery plugged in ? {battery.power_plugged}&amp;quot)اما ولی چطوری ثانیه رو تبدیل کنیم به ساعت؟برای این کار میشه یه تابع نوشت که ثانیه ها رو بگیره و روشون عملیات مورد نظر رو انجام بده. در ضمن این تابع رو خودم ننوشتم و یه دوستی توی GeeksForGeeks این رو نوشته بود.def convert(seconds):    minutes, seconds = divmod(seconds, 60)    hours, minutes = divmod(minutes, 60)    return &amp;quot%d:%02d:%02d&amp;quot % (hours, minutes, seconds)و برای تبدیل هم میگیم:print(f&amp;quotTimes left is {convert(battery.secsleft)}&amp;quot)و حالا وقت اجرای برنامه هستش!خب برنامه خیلی عالی داره کار میکنه! دیگه بقیه کاراش میمونه خلاقیت خودتون.میتونید یه کنترل پنل بسازید با کیوت که توش از ماژول psutil استفاده کنید که اطلاعات cpu رو مثلا بده یا دما رو بده و این چیزای دیگه.این قسمت اول ماژول psutil بود. تو قسمت های بعدی درباره cpu و مموری و هارد قراره صحبت کنیم.کار خاصی نکردیم اما ولی کدش رو میزاریم گیت هاب.https://github.com/BlackIQ/learn/tree/main/Python/2-Batteryپس فعلا خداحافظ!</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Thu, 29 Apr 2021 10:23:11 +0430</pubDate>
            </item>
                    <item>
                <title>Python Notifier</title>
                <link>https://virgool.io/@GNU_Amir/python-notifier-jpd4h9ow9c4o</link>
                <description>خب بعد مدت ها گفتم که چطوره که بیام و چیزایی که میدونم رو با دیگران به اشتراک بزارم به نحوی که بشه از اون ها توی پروژه ها استفاده کرد.اومدم که ریپو ساختم به اسم learn که داخل اون چیزایی که یاد میدم رو برای شما دوستان قرار میدم.خب اولین چیزی که قراره به شما عزیزان یاد بدم چیزی نیست جز، ارسال نوتیفیکیشن با پایتون!اصلا چیز سختی نیست گیج نشید خیلی هم ساده هستش :)خب قدم اول استفاده از کتابخونه مورد نیاز هستش. ما میخوایم از ماژول notify-py اسفاده میکنیم. نحوه نصب:pip3 install notify-pyحالا میری سراغ نوشتن اولین نوتیفیکیشن.خب قدم اول توی نوشتن میشه ایمپورت کردن اون ماژول که به صورت زیر صورت میگیرد:from notifypy import Notifyحالا میایم یه متغیر رو در نظر میگیریم که مقدار اون متغیر میشه Notify که از notifypy ایمپورت کردیم. یعنی به این صورت :notification = Notify()حالا وقتشه که بریم تو کار نوشتن نوتیفیکیشن !قدم اول برای نوشتن نیتیفیکیشن این هستش که تایتل و متن نوتیفیکیشن رو شما بگید.notification.title = &amp;quotNotification Title&amp;quotnotification.message = &amp;quotNotification Message&amp;quotاخرین قدم هم میشه ارسال این نوتیفیکیشن.notification.send()و وقتی که برنامه رو ران میکنیم میبینیم که نوتیفیکیشن ارسال میشه برامون.این میشه یه نوتیفیکیشن خیلی ساده. اما ولی بریم تا چیزای بیشترش رو هم یاد بگیریم . . .خب نوتیفیکیشن دیفالت آیکون پایتون داره. اما ولی میخوایم یه آیکون دیگه استفاده کنیم. پس استفاده از Icon:notification.icon = &amp;quotpath/to/icon.png&amp;quotچطوری از صدا استفاده کنیم؟ استفاده از صدا موقع ارسال نوتیفیکیشن:notification.audio = &amp;quotpath/to/audio/file.wav&amp;quotالان خیلی راحت میتونید از این ماژول توی پروژه هاتون استفاده کنید.یه پروژه خیلی ساده که بشه اینو توش استفاده کرد میتونه پروژه ی قیمت دلار مثلا باشه. اسکرپ کنه و ببینه نسبت به قبلی چقدر افزارش پیدا کرده و الان چقدر شده. یا بگه که چقدر پایین اومده.در کل استفاده از نوتیفیکیشن ایده قشنگی هستش.امیدوارم خوشتون اومده باشه.سورس این آموزش تو این لینک موجود هستش میتونید ببینید.فعلا بای . . .</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Wed, 28 Apr 2021 20:23:23 +0430</pubDate>
            </item>
                    <item>
                <title>Python + PDF !?  ( Part 1 )</title>
                <link>https://virgool.io/CodeLovers/pypdf-p1-id1y5krrzz16</link>
                <description>خب بازم سلام !امیرحسینم و یه مطلب جالب و کاربردی آماده کردم که امیدوارم خوشتون بیاد . مطلب درباره ساخت فایل PDF با پایتون هستش که شما میتونین مثلا یه فایل اکسل رو باز کنید و دیتا رو داخل اون رایت کنید . حالا ما نمیخوایم درباره خوندن و نوشتن تو فایل اکسل صحبت کنیم ولی ایده جالبی هستش و سعی میکنم توی پست بعدی بهش بپردازم .بریم سر اصل مطلب :)میخوام اول بگم که قراره از چه ماژولی استفاده کنیم برای این کار . ماژول fpdf یه ماژول خیلی ساده و کاربردی هستش . نحوه نصب هم به این روش هستش :$ pip3 install fpdfحالا ماژول رو نصب کردیم . یه فایل پایتون بسازید و fpdf رو ایمپورت کنید .from fpdf import FPDFpdf = FPDF()حالا که ماژول رو ایپورت کردیم ، کلاس FPDF رو با یه مقدار به اسم pdf قرار میدهیم .حالا یه پیج میسازیم .pdf.add_page()یه پیج ساختیم و لازمه که یه استایل رو بنویسیم . منظورم اینه که فونت و سایز فونت رو وارد کنید .pdf.set_font(&amp;quotUbuntu&amp;quot, size = 15)بعد از این باید یه سلول بسازیم و متن و الاین رو بهش میدیم .pdf.cell(200, 10, txt = &amp;quotAmirhossein&amp;quot, ln = 1, align = &#039;C&#039;)خب حالا اومدیم و یه متن همراه با یه الاین رو گفتیم .این پست بخش اول Python + PDF هستش پس زیاد تخصصی نمیگم و توی پست بعدی دقیق تر توضیح میدم .خب ، الان ما لازم داریم یه خروجی بگیریم از این کاری که کردیم . اما ولی ، چطوری !؟کافیه از تابع output استفاده کنید و بهش بگین که قراره اسمش چی باشه .pdf.output(&amp;quottst.pdf&amp;quot)الان ما یه فایل pdf با پایتون ساختیم !میتونید یه تمپلیت درست کنید . مثلا کارنامه هر دانش آموز . بعد یه فایل اکسل باشه یا حتی از دیتابیس بخونه و داخل این فایل pdf براتون بزاره . کاربرد هاش زیاده دیگه در کل !به پایان رسید این کفتر Python + PDF هنوز باقیست . . .پایان بخش اول .</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Tue, 26 Jan 2021 15:29:37 +0330</pubDate>
            </item>
                    <item>
                <title>آردوینو چیست !؟ ( بخش اول )</title>
                <link>https://virgool.io/CodeLovers/arduino-p1-xjpbrzptsnki</link>
                <description>تا حالا با برنامه نویسی یه لامپ رو خاموش یا روشن کردید !؟خب اگه نه و علاقه دارید باید بهتون بگم این مطلب چند بخشی ، مطلبی هستش که هر کسی رو میتونه جذب کنه و یه تجربه خیلی شیرین براش به یادگار بذاره !وقتی میگیم تا حالا یه لامپ رو روشن کردید منظورم اینه که آیا برای سخت افزار ها Firmware ها برنامه نوشتید یا نه .خب این چیز سختی نیست و خیلی راحت میشه این کار رو کرد .چیزی که میخوام معرفی کنم آردوینو هستش . خب اول از همه باید بگم که آردوینو چی هست .آردوینو یک پلتفرم سخت‌افزاری و نرم‌افزاری متن‌باز است . پلتفرم آردوینو شامل یک میکروکنترلر تک‌بردی متن‌باز است که قسمت سخت‌افزار آردوینو را تشکیل می‌دهد . علاوه بر این ، پلتفرم آردوینو یک نرم‌افزار آردوینو IDE که به منظور برنامه‌نویسی برای بردهای آردوینو طراحی شده‌است و یک بوت لودر نرم‌افزاری که بر روی میکروکنترلر بارگذاری می‌شود را در بر می‌گیرد . پلتفرم آردوینو به منظور تولید سریع و ساده پروژه‌های سخت‌افزاری تعاملی و ساخت وسایلی که با محیط تعامل داشته باشند طراحی شده‌است ، البته بردهای آردوینو اهداف آموزشی را نیز دنبال می‌کنند . همچنین آردوینو ها مدل های مختلفی دارند . محبوب ترین مدل UNO R3 هستش که در تصویر زیر میبینید .چون یونو آر 3 محبوب ترین مدل هستش درباره این مدل صحبت میکنیم . آردوینو یونو آر 3 دارای رابط یواس‌بی جهت بارگذاری برنامه و ارتباط با کامپیوتر ، ۶ پین ورودی آنالوگ و همچنین ۱۴ پین ورودی/خروجی دیجیتال است که شما را قادر می‌سازند تا برد آردوینو را به قطعات ، سنسورها ، بردها و ماژول‌های دیگری متصل کنید . تعداد ورودی خروجی‌های آنالوگ و دیجیتال در مدل‌های مختلف بردهای آردوینو با توجه به میکروکنترلر اصلی استفاده شده بر روی برد متفاوت است . برای متوجه شدن این که پین ها کجا قرار دارند باید بگم همون سیاها هستن و در عکس زیر دقیق تر متوجه میشید !پین هایی که توضیح داده نشدن هم درواقع چیز خاصی نیستن و الان توضیح میدم .توی آردوینو یونو آر 3 ، سه تا پین خروجی GND وجود داره . یکی بالای پین دیجیتال 13 هستش . در اون قسمت که علامت نداره و توضیح داده نشده دو عدد پین ورودی برق هستش ( یعنی برق رو میدن بیرون ) که شما هیچ تسلطی روی اون ها ندارید . اینا برای سنسور ها و ماژول ها استفاده میشن . یکی از اینا 3.3 ولت هست که در کنارش یه GND هم وجود داره . در کنار 3.3 ولت ، 5 ولت وجود داره که معمولا سنسور ها یا ماژول ها به این وصل میشن و برق مورد نیاز رو تامین میکنن .حالا که با آردوینو و پین هاش آشنا شدید باید بریم سراغ قسمت زبان و استفاده از پایتون توی آردوینو و ادامه ی مطلب .بعد مدت ها عضویت توی ویرگول این اولین پست منه و امیدوارم خوشتون بیاد .این مطلب برای انشار توی کانال تلگرامی Distro TV درواقع نوشته شده بود اما ولی گفتم اینجا هم بزارم تا همه بتونن ببینن و نظرشون رو بگن !به پایان رسید این کفتر آردوینو هنوز باقیست . . .پایان بخش اول .</description>
                <category>امیرحسین محمدی</category>
                <author>امیرحسین محمدی</author>
                <pubDate>Mon, 25 Jan 2021 15:44:26 +0330</pubDate>
            </item>
            </channel>
</rss>