<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Armin</title>
        <link>https://virgool.io/feed/@0xArmin</link>
        <description>آرمین ام، یه برنامه نویس که عاشق علمه و اگه پیش بیاد زندگی رو هم دوست داره.</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:27:28</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1122377/avatar/XywQuf.png?height=120&amp;width=120</url>
            <title>Armin</title>
            <link>https://virgool.io/@0xArmin</link>
        </image>

                    <item>
                <title>برنامه نویسی و چالش ها - قسمت دوم</title>
                <link>https://virgool.io/fboard/p0-hfoblvvzsjhw</link>
                <description>خب امروز تصمیم گرفتم قسمت دوم این پست رو بنویسم که شاید قسمت اخر باشه و شایدم ادامه داشته باشه. توی قسمت قبل بیشتر بحث حول تازه کارها بود و کسانی که میخوان تازه برنامه نویسی رو شروع کنن (اگه نخونید می تونید از اینجا بخونیدش?). توی این قسمت میخوام راجع به ادامه موضوع هایی که گفتم صحبت کنم و مباحث بیشتر برای کسانی هست که برنامه نویسن یا مدتی میشه که شروع کردن.خب اول از همه میخوام برای کسانی که مدتی میشه برنامه نویسی رو شروع کردن صحبت کنم و بگم چه چالش هایی دارید و چه کارایی رو بهتره انجام بدید و چه کارایی رو نه. اول از همه هم میرسم به مهم ترین، قشنگ ترین و شاید سخت ترین قسمت کار برای بعضی ها که قسمت درآمد هستش. شما هرچقدرم که به برنامه نویسی علاقه داشته باشید و با عشق کارتون رو شروع کنید، باید به فکر کسب درآمد ازش باشید، چون من  خودم به شخصه معتقدم اصولا اگه از کاری نشه پول درآورد، انجام دادنش برای مدت طولانی وقت طلف کردنه اگه منبع درآمد دیگه ای ندارید. و بجز نظر شخصیمم فکر نمی کنم برنامه نویسی حاضر باشه صبحا پاشه و برای هیچی پروژه یکی دیگه رو انجام بده و در آخرم سودی ازش نبره. پس حالا میدونیم که این موضوع مهمی هست و شما دیر یا زود باید بهش فکر کنید. من خودم تا سال 5 امی که کار میکردم برام چندان مهم نبود که فکر می کنم از کم تجربگی بود یا شاید میخواستم بیشتر یادبگیرم که درآمد بیشتری داشته باشم.موردی بعدی که حول همین هم هست و میخوام راجع بهش صحبت کنم، روش های کسب درآمد از این کار هست. به صورت کلی 2 راه برای کسب درآمد به عنوان یک برنامه نویس وجود داره. کار به صورت ریموت یا فریلَنسِری (freelancer) و یا کار به صورت حضوری که خودش به قسمت های مختلفی تقسیم میشه. روش اول که از اسمش معلوم هست چیه. شما به عنوان برنامه نویس توی خونه هستید و پروژه دیگران رو ریموت انجام میدید. توی این نوع شما از روش های مختلفی برای کاریابی استفاده می کنید. کسی میتونه شمارو به دیگران معرفی کنه یا بدین براتون تبلیغات انجام بدن. اما راه های ساده تری هم هست مثل سایت های کاریابی که من اسمی ازشون نمی برم ولی با سرچ &quot;سایت های فریلنسری ایرانی&quot; (بعدا میگم چرا فقط نوشتم ایرانی) می تونید توی اون سایت ها ثبت نام کنید، برای خودتون رزومه بنویسید و بین کار هایی که کارفرما ها منتشر کردن بنا به مهارتتون به یکی پیشنهاد بدید (راجع به همین پیشنهاد هم صحبت می کنم). روش بعدی که برای کار کردن و کسب درآمد گفتم، کار به صورت حضوری بود. اینجا دیگه قضیه تا حد زیادی با فریلنسری فرق داره و شاید بشه گفت تنها شباهتشون، رزومست. با تفاوت که اونجا رزومه اهمیت بیشتری داره و اینجا علاوه بر رزومه، شما باید واقعا توی کار عملی مهارت داشته باشید. اما قبل از اینکه به مبحث رزومه برسم، میخوام راجع به روش های کار حضوری  و غیر حضوری صحبت کنم. این روش ها معمولا به صورت تمام وقت، پاره وقت، پروژه ای و استخدامی هستن که الان هرکدومو جدا توضیح میدم:تمام وقت: شما توی این حالت به صورت تقریبا 44 ساعت در هفته که توی قراردادتون ذکر میشه، کار می کنید.پارت وقت: این نوع کار کردن هم شبیه به تمام وقت هست و اصلی ترین تفاوتش اینه که ساعت کار بین شما و کارفرما توافق میشه و هر ساعتی ذکر بشه توی قرارداد، همونقدر موظفید کار کنید.پروژه ای: توی این روش ساعت کار شما به صورت روزانه یا هفتگی ملاک نیست. نه اینکه مهم نباشه ولی اینجوری مثل تمام وقت یا پاره وقت نیست. شما توی این روش در واقع موظفید پروژه ای که با کارفرما طی کردید رو طی زمان مشخص تحویل بدید. مثلا فرض کنید کارفرما از شما یک سایت رو طی 1 ماه میخواد. می تونید 24 ساعته کد بزنید و چند روزه تحویل بدید، یا اینکه مثلا روزی 5 ساعت کد بزنید و سر 1 ماه تحویل بدید. درواقع کارفرما اهمیتی نمیده که چقدر روزی کار میکنید، اون فقط طی زمان توافق شده پروژه رو آماده می خواد.استخدامی: توی این روش که مطمئن ترین روش کاری هست، شما استخدام یک شرکت میشید و هر ماه ازشون حقوق می گیرید. بیمه دارید و از مزایاش هم بهره مند میشید.حالا که روش های کار رو فهمیدیم، اگه یادتون باشه گفتم توی کار حضوری علاوه بر رزومه، مهارت تخصصی شما هم ملاکه. یعنی مثلا اگه برای استخدامی رفتین یک شرکت، برنامه نویس سینیور (در مورد جونیور و سینیور دولپر توی پست های بعدی توضیح میدم) میاد و از شما چیز های مرتبط رو می پرسه و اصطلاحا شمارو برانداز می کنه. اما توی فریلنسری اینطور نیست و شما اگه لیست مهارت هاتون باشه PHP, JS, Ruby و اگه پایتون رو 10 درصد هم بلدید، پایتون رو هم جزو مهارت ها می نویسید و اگه کارفرما مثلا پروژش php باشه، فقط اون رو می بینه و تاثیری هم براش نداره، اما رزومه شما پر تره (اما همیشه سعی کنید چیزایی که واقعا مسلط اید رو بنویسید). به صورت کلی بخوام بگم، چه توی فریلنسری چه حضوری، بهتره همیشه نمونه کار داشته باشید، اینطوری اعتماد خیلی بیشتره.مورد بعدی گفتم که سایت های فریلنسری ایرانی رو سرچ کنید اگر میخوایید غیر حضوری کار کنید. دلیلش واضحه، ما از بس با دنیا خوبیم و همه دوسمون دارن که از همه جا تحریمیم، با این حساب کار کردن به صورت ریموت ابتدای کار برای شما خیلی سخت میشه و نقد کردن اون درآمد سخت تر از کار کردن اون پروژه می تونه باشه ( بجز روش هایی مثل استفاده از رمز ارز به جای پول ). پس اول کار برای اینکه حتی با نحوه کار کردن هم آشنا بشید، سعی کنید پروژه های داخلی رو بزنید.مورد بعدی میرسه به رزومه. توی سایت های کاریابی که میرین، میبینین نوشتن سابقه باید بیشتر از 3 سال باشه و شاید کلافه شید و بگید خب من اگه جایی کار نکنم، چطوری می تونم 3 سال سابقه کار داشته باشم؟ که باید بگم اینجا چون ایرانه سابقه کار دو جور معنی میشه. یک نوع که رایج تر هم هستش اینه که کارفرما منظورش اینه که شما مثلا باید 3 سال با پایتون کار کرده باشید، حالا یا شخصی برای خودتون یا برای جایی و کسی. اما مورد دوم که بعضا دیدم انجامش میدن، منظورشون اینه که شما 3 سال حتما برای دیگران کار کرده باشین. ولی خب اگه جایی دیدین نا امید نشید و معنی اول رو ملاک قرار بدید. برای سابقه کار راهی نیست جز اینکه واقعا کار کنید تا اون سابقه جمع شه. سعی کنید از کوچکترین پروژه ها تا بزرگترین رو تمیز کد بزنید، نگهشون دارید و با گیتهابم آشتی کنید، یه جا به کارتون میاد?.در مورد مطالعه هم بگم که برنامه نویس بودن حرفه ایه که شما باید تخصص داشته باشید و همیشه بروز باشید، سعی کنید هر روز دو یا چند مطلب جدید یاد بگیرید و دست از مطالعه برندارید. مطالعه نکردن برای برنامه نویس مثل سم می مونه. تو این مارکتی که روزانه زبان ها و فریمورک های زیادی منتشر میشن، یه روز نخوندن آدمو از رقباش عقب میندازه.مورد آخری هم که میخوام راجع بهش صحبت کنم، اینه که چرا جدیدا استقبال از برنامه نویسی زیاد شده؟ که خب طبیعیه. توی سایت های کاریابی حقوق بعضی پوزیشن های شغلی برنامه نویسی رو 10 و 20 و 30 میلیون به بالا زده که همین باعث میشه خیلیا دنبال این شغل و حرفه بیان، اما خب نمیدونن کسی که اون شغل رو می تونه بره و استخدام شه چندیین سال متوالی داره کد میزنه و از خیلی چیزاش گذشته. امیدوارم از این پست لذت برده باشید و کارآمد باشه، اگه چیزی رو فراموش کردم بگم، توی کامنت ها مطرحش کنید تا توضیح بدم و اگرم نظری دارید، خوشحال میشم مطرح کنید، سعی می کنم تا جایی که بشه جواب بدم. محتوای پست بعد از اونجایی که درگیر امتحاناتم فعلا معلوم نیست. اما باز تا پست بعد: شاد باشید ??</description>
                <category>Armin</category>
                <author>Armin</author>
                <pubDate>Thu, 23 Dec 2021 02:48:05 +0330</pubDate>
            </item>
                    <item>
                <title>کلید ها دست منه، Session در PHP</title>
                <link>https://virgool.io/@0xArmin/p0-ybtcj91kqxzf</link>
                <description>امروز تصمیم گرفتم توی این پست، یک وقفه ای میون سری پست قبلی بندازم و یه مطلب تخصصی رو منتشر کنم و تصمیم گرفتم در مورد session (سِشِن) توی php صحبت کنم و بگم چی هست و کاربردش چیه و بقیه موارد. سری پست برنامه نویسی و چالش ها رو هم بعد از این و یسری مطالب تخصصی دیگه ادامه میدم. به صورت کلی توی برنامه نویسی وب و در زمینه ذخیره سازی اطلاعات کاربران به صورت موقت و همچنین مباحث احراز هویت که به همین مبحث ذخیره سازی اطلاعات ربط داره، همیشه بحث و گفتگو هست و وب دولوپرا میان بررسی میکنن که چه نوع روشی از ذخیره سازی دیتا برای چه منظوری مناسب تره. اما منظورم از ذخیره سازی موقت دیتا چیه و چرا این موضوع اینقدر اهمیت داره؟ بذارید با یه مثال براتون توضیح بدم:فرض کنید شما وارد یک وب سایت فروشگاهی میشید و قصد دارید با وارد کردن username و password خودتون به حساب کاربریتون در اون سایت وارد شید یا اصطلاحا لاگین (login) کنید. توی این قسمت های لاگین معمولا اکثر سایت ها گزینه ای رو تعبیه میکنن به عنوان &quot;مرا به خاطر بسپار&quot; یا &quot;remember me&quot; که به صورت چک باکس هست و می تونید بنا به خواست خودتون چکش کنید.یک چک باکس مرا به خاطر بسپاراما این چک باکس چیه و چه کاربردی داره؟ در صورتی که شما این چک باکس رو چک کنید یا به اصطلاح تیک بزنید، اون وب سایت میاد و مشخصات لاگین شمارو سیو می کنه و شما دیگه نیازی نیست برای دفعات بعد یا هر دفعه ای که میخوایید وارد سایت بشید مجددا یوزنیم و پسورد رو بزنید. درواقع به اون وب سایت میفهمونید که من رو به خاطر داشته باش و دفعه بعد از من مشخصات ورود رو نخواه و یا به اصطلاح من رو authenticate نکن.خب طبیعتا تا اینجا حدس زدید می خوام راجع به چی صحبت کنم. درواقع اینجا و جاهایی مثل این، این بحث مطرح میشه که دیتا کاربر رو ما به چه صورتی ذخیره کنیم تا بعدا بهش دسترسی داشته باشیم. درواقع به دنبال راهی هستیم تا بهترین جارو برای ذخیره دیتا انتخاب کنیم. اما قبل از هر چیزی باید بررسی کنیم کلا چه جاهایی میشه دیتا رو ذخیره کرد.به صورت کلی دیتا رو میشه در دو سمت سرور و کاربر یا Server side و Client side ذخیره کرد و بهش دسترسی داشت. اما اینا چه فرقی با هم دارن و هرکدوم چه ویژگی هایی دارن؟توی روش دوم که روش سمت کاربر یا Client side هستش، ما دیتا رو بر روی سیستم کاربر ذخیره می کنیم و هر زمان نیاز داشتیم، مجددا بازیابیش می کنیم. توی سمت کاربر قسمت های زیر برای ذخیره دیتا استفاده میشن:متغیر های جاوا اسکریپت که یک زبان سمت کاربر هستذخیره در DOM Nodeدرون Web Storage ها که به دو قسمت local storage و session storage تقسیم میشنکش (cache)کوکی های (cookies) و ...اما توی روش اول که روش سمت سرور یا Server side هست، ما دیتا رو روی سرور ذخیره می کنیم و چیزی رو سمت کاربر ذخیره نمی کنیم (مگر session id یا session token که بعدا دربارش صحبت می کنم. توی این روش به صورت کلی امنیت بیشتر هست، چون همونطور که می دونید زمانی که دیتا سمت کاربر ذخیره میشه، کاربر به دیتا دسترسی داره و میتونه اونو تغییر بده که خب اصلااا چیز جالبی نیست. حالا چرا میگم چیز جالبی نیست؟ به این مثال توجه کنید.مدرسه من از یک سایت برای مشاهده نمرات، مشاهده وضعیت انضباطی مثل غیبت ها، مشاهده وضعیت شهریه و مشاهده پرونده دانش آموزی استفاده می کنه. توی این سیستم تمامی دانش آموزان یک یوزرنیم و یک پسورد دارن که با استفاده از اون می تونن به حساب خودشون لاگین کنن. یوزنیم کد ملی هر دانش آموز هست و پسورد یک کد تولید شده تصادفی یا random generated code در سمت سرور.صفحه ورود سایت مدرسهخب اینجا شاید با خودتون بگید این سیستم که مشکلی نداره و ایمن هست. تا زمانی که من کد ملی کسیو نداشته باشم نمی تونم به حسابش وارد شم و حتی اگر کد ملیشو هم داشته باشم، اون کده که ترکیب عدد و حروف هست رو ندارم و پس کلا دسترسی ندارم به حسابش و سایت ایمنه.اما مشکل دقیقا همین جاست. وقتی لاگین من موفق باشه، من رو به صفحه داشبورد میبره که چیزی شبیه به اینه:داشبورد سایتکه می بینید بالای صفحه نام و نام خانوادگی نوشته شده و امکانات و دسترسی ای هم که هرکس به حساب کاربریش داره رو نشون دادم با فلش های قرمز و داستان زمانی جالب میشه شما متوجه می شید دیتا شما سمت کاربر و در کوکی ذخیره میشه که با راست کلیک کردن و زدن دکمه inspect تو مرورگر و رفتن به زبانه Applications، از قسمت cookies میشه دیدش.کوکی لاگین من توی کرورگرحالا اینجارو داشته باش! من میام و از فیلد info مقدار studentID رو که یک عدد هست رو تغییر میدم و مرورگر رو رفرش میکنم. نتیجه اینه?:تادااا، وارد حساب یه بنده خدایی از یه مدرسه دیگه شدم ??پرونده اش رو هم کامل میشه دید ??پس دیدیم که ذخیره دیتا سمت کاربر می تونه چه مشکلایی رو به وجود بیاره که یکی از اون ها مشکلات امنیتی هست. (البته اینم بگم ذخیره دیتا سمت کاربر همیشه بد نیست و برای قسمت هایی مثل کانفیگ و تنظیمات حساب کاربری مثل اینکه داشبوردش چه رنگی باشه و ... مشکلی نداره و با تغییرشم خطری سیستم رو تحدید نمیکنه). اگر میخوایین بیشتر در مورد این نوع آسیب پذیری بدونید، در مورد cookie injection بخونید.حالا راه حل چیه؟ اینجاست که زبان ها و پلتفرم های مختلف سمت سرور امکانی رو در اختیار ما میذارن به اسم سشن. یعنی ما میاییم و دیتارو سمت سرور ذخیره می کنیم و هروقت خواستیم بهش دسترسی داریم، و کاربر تنهای دسترسی که به اون دیتا داره id اون سشن هست که یک کد رندوم جنریت هست. مثلا برای php چیزی شبیه به اینه:سشن آیدی که توی کوکی ها ذخیره میشهبه صورت کلی توی زبان php وقتی شما یک سایتی که با php نوشته شده رو باز می کنید، اتومات از سرور یک سشن آیدی دریافت می کنید و سرور با اون آیدی شمارو میشناسه. حالا میخوام مثال یک سیستم لاگین که با php کار میکنه رو نشونتون بدم. ابتدا ما یک فایل php داریم که نقش API رو داره و درخواست ها رو مدیریت میکنه و کاربر میتونه ازش برای لاگین استفاده کنه. کد این فایل به شکل زیر هستش:&lt;?php
const USERNAME = &#039;admin&#039;;
const PASSWORD = &#039;ThisIsMyPassword&#039;;
if (isset($_POST[&amp;quotusername&amp;quot]) &amp;&amp; isset($_POST[&amp;quotpassword&amp;quot])) {
if ($_POST[&amp;quotusername&amp;quot] === USERNAME &amp;&amp; $_POST[&amp;quotpassword&amp;quot] === PASSWORD) {
echo &#039;{&amp;quotstatus&amp;quot: &amp;quotsuccess&amp;quot, &amp;quotmessage&amp;quot: &amp;quotLogin successful&amp;quot}&#039;;
} else {
echo &#039;{&amp;quotstatus&amp;quot: &amp;quoterror&amp;quot, &amp;quotmessage&amp;quot: &amp;quotLogin failed&amp;quot}&#039;;
}
} else {
echo &#039;{&amp;quotstatus&amp;quot: &amp;quoterror&amp;quot, &amp;quotmessage&amp;quot: &amp;quotMissing username or password&amp;quot}&#039;;
}
?&gt;توی این کد، ما یوزنیم رو برابر با &#x27;admin&#x27; و پسورد رو برابر با &#x27;ThisIsMyPassword&#x27; قرار دادیم و گفتیم اگر کاربر این مشخصات (credential) رو برای احرازهویت (authentication) وارد کرد، بهش بگو درسته و در غیر این صورت نذاره لاگین کنه. همونطور که میبینید اگه بهش مشخصات اشتباهی بفرستیم، اینو میگه:میبینید که توی پاسخ بهمون میگه لاگین نادرستهو اگه مشخصات درست بفرستیم:لاگین موفقیت آمیز بودهمن یک فایل به اسم index.php طراحی میکنم که چک کنه اگر کاربر وارد شده، بهش خوش آمد بگه و اگر وارد نشده، بهش صفحه لاگین رو نشون بده:فرم لاگین برای ورودمی بینید که لاگین چطور کار می کنه:ورود به وب سایتاینجا می بینید که لاگین درست کار می کنه، اما یک مشکل داره، وقتی صفحه reload یا refresh میشه مجددا باید لاگین کرد. برای این کار میریم سراغ استفاده از سشن. ابتدا توی هر دو صفحه بالای بالا بعد از باز گردن تگ php دستور زیر رو می نویسیم:session_start();و برای ذخیره کاربر اونجایی که لاگین موفق بود میگیم:$_SESSION[&amp;quotusername&amp;quot] = $_POST[&amp;quotusername&amp;quot];و برای چک کردن از این کد استفاده می کنیم:&lt;?php
if (isset($_SESSION[&amp;quotusername&amp;quot])) {
echo &#039;
$(&amp;quot#form&amp;quot).hide();
(&amp;quot&lt;h1&gt;Hello &#039; . $_SESSION[&amp;quotusername&amp;quot] . &#039;&lt;/h1&gt;&amp;quot);
&#039;;
}
else{
echo &#039;
$(&amp;quot#form&amp;quot).show();
alert&#40;&amp;quotPlease login&amp;quot&#41;;
&#039;;
}
?&gt;و خروجی این شکلیه:صفحه لاگینهمونطور که می بینید، کاربر وارد سایت شده و با استفاده از سشن دیگه نیازی به لاگین مجدد نیست و تنها کاری که میتونه بکنه، پاک کردن سشن هست که در نتیجش چیز خاصی نمیشه و لاگ اوت اتفاق می افته. (البته این رو بگم که استفاده از سشن به معنی ایمن بود وب سایت نیست و حتی حمله ای هم با نام Session Injection وجود داره که اگر شما وارد سایتی شده باشید و هکر بتونه سشن شمارو سرقت کنه و جای سشن خودش بزنه، می تونه وارد حساب شما بشه که اگر خواستید می تونید راجع بهش بخونید.)پس فهمیدیم اگر اول کد تابع session_start رو صدا بزنیم، میتونیم دیتا هارو درون متغیر $_SESSION ذخیره کنیم و ازشون استفاده کنیم.امیدوارم از این پست لذت برده باشید و کارآمد باشه. اگه سورس کدهاش رو میخوایید تا بهتر متوجه بشید از رپو گیتاهبم می تونید دریافتش کنید. اگه نظری دارید مطرحش کنید خوشحالم میشم و سعی میکنم تا جایی که بشه جواب بدم. توی قسمت بعدم معلوم نیست یه مطلب تخصصی دیگه باشه یا ادامه سری قبلی ?. بعدا تصمیم می گیرم. پس تا پست بعد: شاد باشید ??</description>
                <category>Armin</category>
                <author>Armin</author>
                <pubDate>Wed, 22 Dec 2021 01:21:15 +0330</pubDate>
            </item>
                    <item>
                <title>برنامه نویسی و چالش ها - قسمت اول</title>
                <link>https://virgool.io/fboard/p0-y3ljknuucmbd</link>
                <description>توی پست قبل گفتم که می خوام توی پست بعد که این پست باشه بیشتر در مورد برنامه نویسی و چالش هاش صحبت کنم، یه نگاه کلی بهش داشته باشم و بعدش یکسری موارد رو برای کسانی که تازه می خوان برنامه نویسی رو شروع کنن بگم و بعدش هم بگم چرا ورود به برنامه نویسی توی چند سال اخیر اینقدر زیاد شده. اول از همه بگم که من 6 ساله برنامه نویس ام و مطالبی که می نویسم و تجربیاتی که میگم برای یک برنامه نویس 6 ساله است و ممکنه بعضا از دید اساتید این حوزه اشتباه باشه که اگر ببینم چنین موردی رو پست رو آپدیت می کنم. مورد بعد هم اینکه توی این پست مباحث مربوط به تازه وارد هارو بررسی می کنم و توی پست بعد بقیه مطالب رو بررسی میکنم.خب اول کار می خوام از اولین قدم ها شروع کنم و برای کسانی که تازه می خوان وارد این حوزه بشن صحبت کنم. همین ابتدای کار بهتون خوش آمد میگم و امیدوارم مسیر جذابی رو داشته باشید و خوشحالم که این جامعه اینقدر بزرگ و بزرگ تر میشه. به صورت کلی توی این قسمت یکسری سوال مطرح می کنم و بهشون جواب میدم. اگر سوال دیگه ای مد نظرتون هست که من ننوشتم یا بهش اشاره ای نکردم، توی کامنت ها مطرحش کنید.سوال اول: چه کسانی می تونن برنامه نویس بشن؟ به صورت کلی هر کسی که توانایی حل مسعله رو داره و می تونه از روش هایی که بلده به صورت مستقیم یا ترکیبی برای حل مساعل مختلف استفاده کنه و همچنین ابزار و وسایل پایه برنامه نویسی رو داره می تونه برنامه نویسی رو شروع کنه. سوال دوم: چه ابزار و وسایلی برای برنامه نویسی لازمه؟شما برای شروع یادگیری برنامه نویسی به ابزار خاصی نیاز ندارید. یک لپتاپ و یا PC (personal computer - رایانه شخصی یا همون کامپیوتر مرسوم خودمون) نیاز دارید تا بتونید برنامه نویسی رو شروع کنید. نیاز هم نیست برای شروع یک سیستم خیلی خفن و حرفه ای تهیه کنید. میتونم بگم حداقلش چیزی شبیه به اینه:یک سیستم با حداقل رم 4 و سی پی یو Celeron یا Pentium و هارد 256.سیستم عاملی که میشه روش نصب کرد ویندوزهای  10 و قبلش هست. اما جلوتر یکسری نکته درباره سیستم عامل بهتون میگم. از نظر قیمت هم توی بازار بین 5-10 تومن هست و حتی ممکنه دست دومش کمتر از 5 تومن هم باشه. بازم تاکید میکنم، برای شروع نیاز نیست سیستم خیییلی حرفه ای داشته باشید. چون شما عملا کار خاص و سنگینی انجام نمی دید. همونطور که تو لیست من اصلا حرفی از کارت گرافیک نزدم و حتی کارت گرافیک آنبوردم جواب کار شمارو میده.سوال سوم: پیش نیازهای یادگیری چیه؟به عنوان پیش نیاز شما باید درک خیلی مبتدیانه ای از کامپیوتر داشته باشید و اطلاعاتی از مفاهیمی مثل اینکه سیستم عامل چیه، رم چیه، CPU چیه و چيکار میکنه و ... داشته باشید. در واقع یک دید کلی نیازمند شروع هست. همچنین باید بتونید در سطح یک کاربر خیلی ساده با یکی از سیستم عامل های مرسوم (ویندوز یا لینوکس یا مک و ...) کار کنید.سوال چهارم: برای شروع برنامه نویسی، از چه زبانی شروع کنم؟می تونم بگم این یکی از مهم ترین سوالای کسانی هست که میخوان برنامه نویسی رو شروع کنن و همیشه وقتی این رو سرچ میکنن گوگل یه لیستی از زبان هارو پرت می کنه سمتشون و خب طبیعتا میون اینهمه خوشگل کیو انتخاب کنم سخته و بیخیال میشن?. برای انتخاب زبانی که میخواین باهاش برنامه نویسی رو شروع کنین باید به چند تا نکته دقت کنید و حواستون باشه بهشون. درغیر این صورت ممکنه طی مدت کوتاهی کلا برنامه نویسی رو ببوسین بذارین کنار:1 - اول راجع به انواع زبان های برنامه نویسی (که دو نوع کامپایلری و مفسری دارن) تحقیق کنید.2 - سینتکس (نوع نگارش کد) زبان رو بررسی کنید. برای شروع سمت زبانی نرید که پردازش و فهمش برای انسان سخت باشه یا از قواعد خیلی خاصی پیروی کنه.3 - جامعه آماری زیادی داشته باشه. یعنی افراد زیادی در سرتاسر دنیا با اون زبان کد بزنن. اینطوری اگر یک زمانی مشکلی پیدا کردید، با یه سرچ ساده مشکلتون برطرف میشه. ولی اگه جامعه آماری زبان کم باشه، طبیعتا راه حل های  کمتری برای مشکلات شما توی اون زبان وجود داره.برای مواردی که گفتم بخوام مثال بزنم، زبان های مثل پایتون، جاوا اسکریپت، پی اچ پی، روبی و... هستن که تقریبا ویژگی های بالارو پوشش میدن و ابزار ها و برنامه های خفن زیادی با هرکدوم نوشته شده.سوال پنجم: چه نکته هایی برای پیشرفت سریع تر وجود داره؟برنامه نویسی راز خاصی نداره که بگم این کارو کنید اون کارو کنید برنامه نویس خفن تری هستید. تو فیلما نشون میدن که برنامه نویسا ها شبا بیدارن و خواب ندارن، 24 ساعت روزو قهوه میخورن، با کسی حرف نمی زنن و ... که خب گفتم، اینا تو فیلماست( البته اکثر برنامه نویس ها کلا قهوه میخورن، ولی نه به اون مقیاس). به صورت کلی برای پیشرفت سریع تر من خودم از این نکته ها استفاده می کنم و تا الانم راضی بودم:1 - کد بزنید، مشکل پیدا کنید، سرچ کنید: توی پست قبل گفتم که پدرم همیشه وقتی به مشکل میخوردم و ازش میخواستم مشکلمو حل کنه میگفت خودت سرچ کن پیدا کن، من بگم به دردت نمیخوره. این یکی از اصلی ترین نکته ها برای پیشرفت سریع تره. شما باید به عنوان یک برنامه نویس بتونید راجع به هر موضوعی سرچ کنید. از گوگل گرفته تا ویدیو یوتیوب دیدن و کتاب خوندن و ... . فرقی نمی کنه. شما باید بتونید سرچ کنید و به اصطلاح دست به سرچتون خوب باشه. برنامه نویسی که نتونه تحقیق کنه عملا به درد نمیخوره.2 - صبر داشته باشید: به عنوان یک برنامه نویس که تازه این کار رو شروع می کنه، طبیعیه که اوایل اشتباه زیاد داشته باشید و یا بعضی مفاهیم رو متوجه نشید. اگر یک پکیج ویدیو آموزشی تهیه کردید و 50 قسمت آموزش میده و شما تو قسمت اول به مشکل خوردید، سریعا یادگیری رو متوقف نکنید و سرچ کنید. صبور بودن مهمترین سلاح یک برنامه نویسه و اگه اینجا بهش عادت کنید، تو خیلی جاهای دیگه زندگی واقعیتون به کارتون میاد.3 - برای شروع حساس نباشید: گفتم صبر داشته باشید، ولی این مورد رو نه. می تونم بگم یکی دیگه از مهمترین نکاتی که خیلیا برنامه نویسی رو شروع نمی کنن اینه که خیلی حساس میشن. مثلا مورد داشتیم طرف میخواسته پایتون رو استارت بزنه و در حد مقدماتی یادش بگیره، 1 سال براش دنبال پکیج و منبع آموزشی به اصطلاح خوب گشته. درحالی که پایتون مقدماتی رو نهایتا 3 ماهه میشه مسلط شد. نمیگم بی گدار به آب بزنید و برید یه پکیج چرت و پرت بخرید. ولی اونقدر هم نیاز به وقت تلف کردن نیست. وقتی گوگل می کنید پکیج آموزش برنامه نویسی فلان زبان، معمولا سایت هایی که گوگل توی صفحه اول بهتون نشون میده، همگی در سطح خوبی زبان رو به شما یاد میدن. نسبت به قیمت هم حساس نباشید. یک پکیج رایگان می تونه از پکیج پولی بهتر باشه. ولی خب اینم به این معنی نیست که همیشه از دوره های رایگان استفاده کنید. برای یادگیری باید هزینه کنید.امیدوارم این پست مفید بوده باشه و ازش لذت برده باشید. اگر نظری دارید یا سوالی دارید که من فراموش کردم مطرحش کنم، خوشحال میشم مطرحش کنید و منم تا جایی که بتونم جواب میدم. توی قسمت بعد هم که گفتم موارد دیگه این سری پست رو بررسی میکنم. پس تا پست بعد: شاد باشید ??</description>
                <category>Armin</category>
                <author>Armin</author>
                <pubDate>Mon, 20 Dec 2021 13:47:11 +0330</pubDate>
            </item>
                    <item>
                <title>سلام، من آرمینم</title>
                <link>https://virgool.io/@0xArmin/p0-ktjzlygxje3n</link>
                <description>تاجایی که یادم میاد، حدودا چند سالی هستش که ویرگول رو می شناسم و مطالبش رو می خونم. اوایل از گوگل باهاش آشنا شدم و برای مباحث تخصصی که دنبال می کردم میومدم اینجا. همون اوایل حوصله گشتن تو سایتو نداشتم و بیشتر فکر میکردم حالت فروم طوری داره و مباحث مربوط به رشته کامپیوترن ( اگه براتون سواله که چرا یک نفر وقت گشتن تو یه سایت رو نداره، بعدا بیشتر توضیحش میدم ). تا اینکه یه روز مطلب جالبی رو دیدم و تصمیم گرفتم کلا سایت رو یه چک بکنم و فهمیدم نه! خیلی با چیزی که فکر می کردم فرق داره. برای همین و طبق علاقه همیشگیم به خلق کردن که یکی از روش هاش نوشتنه، تصمیم گرفتم منم به نویسنده هاش اضافه شم و بنویسم. اما قبلش میخوام خودمو معرفی کنم.ویرگولمن آرمینم. یه پسر 17 ساله که در حال حاضر دانش آموز رشته شبکه و نرم افزارم. سال بعدم کنکور دارم. حدودا 6 سالی هست که برنامه نویسی می کنم، یعنی حدودا از 12 سالگی. شاید براتون سوال باشه که چجوری اینقدر زود وارد این حوزه شدم که خب دلیل اصلیش اینه که کار پدرمم همین هست. اما مثل خیلیای دیگه شروع کار من با کامپیوتر از بازی بوده. کانتر و GTA دروازه های ورود من به این دنیای تموم نشدنی بودن. خیلی دنیای عجیبی بود و هست. تعامل با یه چیزی که جاندار نیست و حتی وجود فیزیکی نداره ولی منو سرگرم می کرد خیلی برام جالب بود. اینکه می تونستم ساعت های با ماوس و کیبورد [ ماوس و کیبورد قدیمی، مانیتور های CRT و ویندوز XP که خود زندگی بود برام ] خودمو سرگرم کنم برام جالب بود و همیشه یه گوشه ذهنم راجع به نحوه کارشون برام سوالای زیادی به وجود می اومد. اون طرفِ قضیه سوالایی بود که تو ذهن هر پسر بچه 12 ساله ای ممکنه باشه. من کی ام؟ چطوری به این دنیا اومدم؟ خدا چیه؟ خلقت چیه و هزاران سوال این مدلی. بگذریم. کم کم بزرگ تر شدم و یکی از روزها که پدرم داشت کد VB6 (Visual basic 6) می نوشت تا فردا برای هنر آموزاش تدریس کنه، کنارش ایستادم و خیره شدم به مانیتور. می تونم بگم عجیب ترین صحنه ای بود که می دیدم. خودش یه صفحه طراحی می کرد، بعد یسری کد می نوشت و با کلیک روی یه دکمه، رنگ صفحه عوض میشد. منم که سوالای زیادی تو ذهنم بود و در به در دنبال این بودم که بفهمم کامپیوتر چطور کار میکنه، ازش خواستم برام توضیح بده که چطور این کارا رو میکنه. اول راجع به برنامه نویسی برام صحبت کرد و یه صحبتای کلی ای راجع به سیستم عامل. بعد یک سری توضیحات راجع به متغیر ها داد و یه دستور چاپ پیام خیلی ساده رو برام نوشت. خیییلی خوشم اومد و ازش خواستم کلا بهم یادش بده. خودش وقت نداشت. یا نمی دونم شایدم وقت داشت و نمی خواست معلم برنامه نویسیم باشه.  همیشه انگار از دور حواسش بهم بود ولی نمیخواست مستقیم کاری رو انجام بده. هروقت هم بعدا توی برنامه نویسی به مشکلی میخوردم و ازش کمک می خواستم، جمله طلاییش رو بهم می گفت: خودت سرچ کن جوابشو پیدا کن. من بهت بگم به دردت نمیخوره ( بعدا میگم چرا بهش میگم جمله طلایی ). ولی خب علاقه من رو دید و تصمیم گرفت برام یه پکیج سه فصله مقدماتی، متوسط و پیشرفته آموزش VB بگیره و من شروع کردم به دیدن اونها. روز به روز دیدمشون و علاقم روز به روز به کامپیوتر و موضوع های حول اون بیشتر از قبل شد.برنامه نویسی VB6چند ماهی گذشت و من تونستم با اون پکیج آموزشی کدهای دست و پا شکسته ای بنویسم که شاید خییلی مبتدیانه و ساده بودن، ولی برای من حس غرور عجیبی داشت. همه دوستام فقط با کامپیوتر کار می کردن یا درستش اینه که بگم کامپیوتر با دوستام کار میکرد. ولی من حالا می تونستم به معنی واقعی کلمه با کامپیوتر کار کنم. می تونستم بهش بگم دقیقا می خوام چکار کنم و اونم بی چون و چرا برام انجامش میداد. هیچوقت نفهمیدم علاقم به بازی باعث شد وارد این حوزه بشم یا اون سوالای تو سرم درمورد آفرینش و خلقت ( یا شاید ربط بینشون )، ولی می دونستم حالم خوبه از انجام دادنش. چون برنامه نویسی یک سایدش نوشتن برنامه های کامپیوتری بود، ولی ساید دیگش برای من مهارت حل مسعله عجیبی بود که بهم داد و ذهن منطقی ( یا منطقی تری ) که توی تمام زندگیم کاربرد داشته و داره.... .بالا گفتم که حوصله گشتن تو سایت رو نداشتم که دلیلش هم همینه. من به عنوان برنامه نویس وارد سایت می شدم و بنابر این بعد از پیدا کردن یا نکردن جوابم، عملا کار دیگه ای نداشتم. تا اون مقاله که منو جذب کرد که بعدا راجع بهش توضیح میدم.همین شد که زندگی من از اون موقع به بعد با برنامه نویسی گذشت و میگذره. از اون روزی که یک زبان رو کد می زدم، تقریبا 6 سال گذشته و من حالا بیش از 10 زبان رو کد میزنم. موضوع های مختلف مثل خود بازی سازی، گرافیک، امنیت و ... رو هم سراغشون رفتم و اگر شد تو پست های بعد بیشتر راجع بهشون توضیح میدم. راضی ام از مسیرم و تا جایی که بشه سعی می کنم ادامش بدم. امیدوارم اولین پستم براتون جالب بوده باشه و اگر غلط املایی یا نگارشی توش دیدید، به بزرگی خودتون ندید بگیریدش. توی قسمت بعد می خوام یکسری چالش هایی که تو این راه از همون موقع تا الان داشتم رو بگم و یک سری نکته برای کسایی که تازه می خوان این مسیر رو شروع کنن و به قولی برنامه نویس بشن، پس تا پست بعد: شاد باشید ??</description>
                <category>Armin</category>
                <author>Armin</author>
                <pubDate>Sun, 19 Dec 2021 01:57:56 +0330</pubDate>
            </item>
            </channel>
</rss>