<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد کاظمی راز</title>
        <link>https://virgool.io/feed/@mkazemiraz</link>
        <description>برنامه نویس / معلم | به امید آموزش رایگان، در دسترس و قابل اعتماد برای همه</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:30:15</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>محمد کاظمی راز</title>
            <link>https://virgool.io/@mkazemiraz</link>
        </image>

                    <item>
                <title>کدهای یک خطی و کاربردی در جاوا اسکریپت</title>
                <link>https://virgool.io/@mkazemiraz/%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%AE%D8%B7%DB%8C-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-jziyowa6jg3a</link>
                <description>در ادامه باهم یک لیست از کدهای یک خطی و کاربردی جاوااسکریپت را خواهیم دید. اگر شما هم از این کدهای یک خطی دارید در قسمت نظرات بنویسید تا به این نوشته اضافه شود. من هم به مرور کدهای جدید به نوشته اضافه خواهم کرد.کپی کردن متن در کلیپ بورد (Clipboard)const copyToClipboard = (text) =&gt; navigator.clipboard.writeText(text)دریافت متن انتخاب شده توسط کاربرconst getSelectedText = () =&gt; window.getSelection().toString()بهم ریختن (Shuffle) یک آرایهنکته: این روش واقعا تصادفی نیست!const shuffleArray = array =&gt; array.sort(() =&gt; Math.random() - 0.5)تبدیل کد رنگ rgba به hexadecimalconst rgbaToHex = (r, g, b) =&gt; &amp;quot#&amp;quot + [r, g, b].map(num =&gt; parseInt(num).toString(16).padStart(2, &#039;0&#039;)).join(&#039;&#039;)تبدیل کد رنگ hexadecimal به rgbaنکته: این کد یک خط نیست :)const hexToRgba = hex =&gt; {
 const [r, g, b] = hex.match(/\w\w/g).map(val =&gt; parseInt(val, 16))
 return `rgba(${r}, ${g}, ${b}, 1)`;
}محاسبه میانگین چند عددconst average = (...args) =&gt; args.reduce((a, b) =&gt; a + b, 0) / args.lengthتشخیص زوج یا فرد بودن یک عددconst isOdd = num =&gt; num % 2 !== 0حذف عناصر تکراری از یک آرایهconst uniqueArray = (arr) =&gt; [...new Set(arr)]تشخیص خالی بودن یک شی (Object)const isEmpty = obj =&gt; Reflect.ownKeys(obj).length === 0 &amp;&amp; obj.constructor === Objectمعکوس کردن یک رشتهconst reverseStr = str =&gt; str.split(&#039;&#039;).reverse().join(&#039;&#039;)محاسبه تعداد روزهای بین دو تاریخconst dayDiff = (d1, d2) =&gt; Math.ceil(Math.abs(d1.getTime() - d2.getTime()) / 86400000)تشخیص روز از سال یک تاریخامروز ۱۳ تیرماه است. می‌توانید بگویید امروز چندمین روز از سال است؟ :)const dayInYear = (d) =&gt; Math.floor((d - new Date(d.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24)تبدیل حرف اول یک رشته به حرف بزرگconst capitalize = str =&gt; str.charAt(0).toUpperCase() + str.slice(1)تولید یک رشته تصادفی به طول دلخواهconst generateRandomString = length =&gt; [...Array(length)].map(() =&gt; Math.random().toString(36)[2]).join(&#039;&#039;)تولید یک عدد تصادفی در بازه دلخواهconst random = (min, max) =&gt; Math.floor(Math.random() * (max - min + 1) + min)گرد کردن عدد با تعداد اعشار دلخواهconst round = (n, d) =&gt; Number(Math.round(n + &amp;quote&amp;quot + d) + &amp;quote-&amp;quot + d)پاک کردن تمام کوکی‌ها (Cookies)const clearCookies = .split(&#039;;&#039;).forEach(cookie =&gt;  = cookie.replace(/^ +/, &#039;&#039;).replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`))اسکرول به بالای صفحهconst goToTop = () =&gt; window.scrollTo(0, 0)تولید مقادیر Boolean تصادفیconst randomBoolean = () =&gt; Math.random() &gt;= 0.5تشخیص نوع یک دادهنوع یک آرایه در جاوااسکریپت با استفاده از typeof چیست؟ :)const typeOf = (obj) =&gt; Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()تولید آی‌پی تصادفیconst generateRandomIP = () =&gt; Array.from({length: 4}, () =&gt; Math.floor(Math.random() * 256)).join(&#039;.&#039;)محاسبه درصد یک مقدار نسبت به کلconst calculatePercent = (value, total) =&gt; Math.round((value / total) * 100)انتخاب تصادفی یک عضو از آرایهconst getRandomItem = (array) =&gt;  array[Math.floor(Math.random() * array.length)]مرتب سازی آرایه‌ای از اشیا (Objects) بر اساس یک ویژگی (Propery)const sortBy = (arr, key) =&gt; arr.sort((a, b) =&gt; a[key] &gt; b[key] ? 1 : a[key] &lt; b[key] ? -1 : 0)تشخیص برابر بودن دو آرایه یا شی (Object)const isEqual = (a, b) =&gt; JSON.stringify(a) === JSON.stringify(b)ایجاد وقفه به مدت زمان مشخصconst wait = async (milliseconds) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, milliseconds))افزودن یک مقدار جدید به آرایه در جای مشخصconst insert = (arr, index, newItem) =&gt; [...arr.slice(0, index), newItem, ...arr.slice(index)]تعویض مقدار دو متغییر [foo, bar] = [bar, foo]شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎اگر این نوشته را دوست داشتید می‌توانید من را یک قهوه مهمان کنید :)</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Tue, 04 Jul 2023 11:54:34 +0330</pubDate>
            </item>
                    <item>
                <title>مقایسه Cookies با Local Storage و Session Storage؛ تفاوت در چیست؟</title>
                <link>https://virgool.io/@mkazemiraz/%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-cookies-%D8%A8%D8%A7-local-storage-%D9%88-session-storage-%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%AF%D8%B1-%DA%86%DB%8C%D8%B3%D8%AA-bsoklwtrq0uj</link>
                <description>Cookies vs. Local Storage vs. Session Storageدر این نوشته قصد داریم ۳ روش ذخیره‌سازی را بررسی کنیم:‌ذخیره‌سازی از طریق Cookiesذخیره‌سازی از طریق Local Storageذخیره‌سازی از طریق Session Storageنمونه‌هایی را مورد بررسی قرار می‌دهیم و تفاوت‌های آن‌ها را بررسی خواهیم کرد.کوکی‌ها (Cookies)کوکی‌ها (Cookies) قطعات کوچکی از داده‌ها هستند که در سمت کلاینت (در کامپیوتر کاربر) ذخیره می‌شوند، معمولاً به صورت متن ساده. کوکی (Cookie) معمولاً با هر درخواست به سرور ارسال می‌شود تا سرور بتواند کاربر را شناسایی کرده و محتوای شخصی‌سازی شده را ارائه دهد. کوکی‌ها (Cookies) معمولاً برای احراز هویت و ذخیره تنظیمات کاربری استفاده می‌شوند.ذخیره محلی (Local Storage) مشابه کوکی‌ها (Cookies) است، اما داده‌ها را به صورت ساختارمند، معمولاً به صورت جفت کلید-مقدار (Key-Value) ذخیره می‌کند. این داده‌ها در کامپیوتر سمت کلاینت ذخیره می‌شوند و تا زمانی که به صورت دستی حذف نشوند، در آنجا باقی می‌مانند. ذخیره محلی (Local Storage) عموماً برای ذخیره داده‌هایی استفاده می‌شود که نیاز دارند پس از بسته شدن مرورگر همچنان باقی بمانند.ذخیره جلسه (Session Storage) شبیه به ذخیره محلی است، اما فقط برای جلسه فعلی (Current Session) داده‌ها را ذخیره می‌کند و پس از بسته شدن مرورگر حذف می‌شوند. ذخیره جلسه (Session Storage) برای ذخیره داده‌های موقت استفاده می‌شود که تنها در حالتی که کاربر در وبسایت حضور دارد، نیاز است.یک مثال از Cookieدرباره سیستم ورود به یک سایت فکر کنید. وقتی کاربر برای اولین بار وارد سایت می‌شود، سرور می‌تواند یک کوکی (Cookie) ایجاد کند تا اطلاعات ورود آن کاربر را به خاطر بسپارد. کوکی (Cookie) ممکن است شامل اطلاعاتی مانند نام کاربری و یک شناسه جلسه یکتا (Session ID) باشد.Name: login_cookie
Value: {username: &amp;quotexample_user&amp;quot, session_id: &amp;quotabc123&amp;quot} 
Expires: 30 days from nowوقتی کاربر دوباره به وبسایت سر می‌زند، مرورگر وب آن کوکی (Cookie) را با هر درخواست به سرور ارسال می‌کند. سپس سرور می‌تواند از اطلاعات موجود در کوکی (Cookie) استفاده کند تا کاربر را شناسایی کرده و تجربه‌ی شخصی شده را در سایت برایش ارائه دهد (مانند نمایش صفحه حساب کاربری به جای صفحه ورود).مهم است به‌خاطر داشته باشیم که کوکی‌ها (Cookies) می‌توانند علاوه بر اطلاعات ورود، برای اهداف دیگری نیز استفاده شوند، مانند نمایش تبلیغات شخصی‌سازی شده. با این حال، کوکی‌ها اغلب با مسائل حریم خصوصی مواجه هستند، زیرا می‌توانند بدون رضایت صریح کاربر، اطلاعات کاربر را جمع‌آوری و به اشتراک بگذارند.یک مثال از Local Storageبه‌عنوان یک نمونه، فرض کنید یک وبسایت دارید که به کاربران امکان می‌دهد یادداشتی را ایجاد و ذخیره کنند. وقتی کاربر یک یادداشت را ذخیره می‌کند، شما می‌توانید آن را در فضای ذخیره‌سازی محلی (local storage) ذخیره کنید تا حتی اگر کاربر مرورگر خود را ببندد، یادداشت حفظ شود.// To save a note: 
const note = &amp;quotThis is my note&quot; 
localStorage.setItem(&amp;quotnote1&amp;quot, note);  
// To retrieve the note: 
const retrievedNote = localStorage.getItem(&amp;quotnote1&amp;quot); console.log(retrievedNote); // Outputs: &amp;quotThis is my note&amp;quotدر این مثال، از متد setItem برای ذخیره یک یادداشت با کلید &quot;note1&quot; و مقدار &quot;This is my note&quot; در فضای ذخیره‌ محلی (Local Storage) استفاده می‌شود. از متد getItem برای بازیابی یادداشت با کلید &quot;note1&quot; از فضای ذخیره‌ محلی (Local Storage) و چاپ آن در کنسول استفاده می‌شود.توجه داشته باشید که فضای ذخیره‌ محلی (Local Storage) محدود به ذخیره سازی رشته‌ها است. بنابراین، اگر نیاز دارید انواع داده‌های پیچیده مانند شیء‌ها یا آرایه‌ها را ذخیره کنید، قبل از ذخیره آنها در فضای ذخیره‌ محلی، باید از JSON.stringify استفاده کنید تا آنها را به رشته تبدیل کنید و هنگام بازیابی آنها از فضای ذخیره‌ محلی، از JSON.parse استفاده کنید تا آنها را به شکل اصلی خود بازیابی کنید.یک مثال از Session Storageفرض کنید شما یک وبسایت دارید که به کاربران اجازه می‌دهد محصولات را به سبد خرید خود اضافه و ذخیره کنند. وقتی کاربر یک مورد را به سبد خرید خود اضافه می‌کند، شما می‌توانید آن را در فضای ذخیره‌ سشن (Session Storage) ذخیره کنید تا تنها برای مدت سشن کاربر در وبسایت ماندگار باشد.// To save an item to the cart: 
const item = { name: &amp;quotT-shirt&amp;quot, price: 20 }; sessionStorage.setItem(&amp;quotcartItem1&amp;quot, JSON.stringify(item));  
// To retrieve the item from the cart: 
const retrievedItem = JSON.parse(sessionStorage.getItem(&amp;quotcartItem1&amp;quot)); console.log(retrievedItem); // Outputs: { name: &amp;quotT-shirt&amp;quot, price: 20 }در این مثال، از متد setItem برای ذخیره یک مورد با کلید &quot;cartItem1&quot; و مقدار { name: &quot;T-shirt&quot;, price: 20 } در فضای ذخیره‌ سشن (Session Storage) استفاده می‌شود. از متد getItem برای بازیابی آیتم با کلید &quot;cartItem1&quot; از فضای ذخیره‌ سشن (Session Storage) استفاده می‌شود و از متد JSON.parse برای تبدیل آیتم از یک رشته به شیء استفاده می‌شود.توجه کنید که فضای ذخیره‌ سشن (Session Storage) به طرز مشابهی با فضای ذخیره‌ محلی (Local Storage) عمل می‌کند، اما تفاوت اصلی آن این است که فضای ذخیره‌ سشن (Session Storage) هنگامی که کاربر مرورگر خود را ببندد پاک می‌شود، در حالی که فضای ذخیره‌ محلی (Local Storage) حتی پس از بسته شدن مرورگر همچنان باقی می‌ماند.تفاوت‌های کلیدیکوکی‌ها (Cookies) می‌توانند پس از گذشت زمانی مشخص به صورت خودکار منقضی شوند یا به صورت دستی حذف شوند، در حالی که فضاهای ذخیره‌ محلی و سشن (Local Storage - Session Storage) فقط توسط کاربر یا از طریق اجرای یک اسکریپت پاک شوند.کوکی‌ها (Cookies) با هر درخواست به سرور ارسال می‌شوند، در حالی که فضاهای ذخیره‌ محلی و سشن (Local Storage - Session Storage) به صورت خودکار به سرور ارسال نمی‌شوند.حداکثر اندازه کوکی‌ها (Cookies) ۴ کیلوبایت است، در حالی که فضاهای ذخیره‌ محلی و سشن (Local Storage - Session Storage) حجم بزرگتری دارند (معمولاً حدود ۵ تا ۱۰ مگابایت).فضاهای ذخیره‌ محلی و سشن (Local Storage - Session Storage) فقط در دامنه مشابه قابل دسترسی هستند، در حالی که کوکی‌ها (Cookies) می‌توانند توسط دامنه‌های دیگری که کاربر بازدید می‌کند، قابل دسترسی باشند.بطور کلی، کوکی‌ها (Cookies)، فضای ذخیره‌ محلی و سشن (Local Storage - Session Storage)، همگی فناوری‌های ذخیره‌سازی وب هستند که در توسعه وب سمت کاربر استفاده می‌شوند، اما ویژگی‌ها و استفاده‌های مختلفی دارند. به طور کلی، کوکی‌ها (Cookies) برای ذخیره کمیت‌های کوچکی از داده که نیاز است با هر درخواست ارسال شوند، مناسب‌تر هستند، در حالی که فضای ذخیره‌ محلی و سشن (Local Storage - Session Storage) برای ذخیره کمیت‌های بزرگتری از داده که نیازی به ارسال به سرور ندارند، بهتر عمل می‌کنند.نتیجهبه طور کلی، کوکی‌ها (Cookies)، فضای ذخیره‌ محلی و سشن (Local Storage - Session Storage)، روش‌هایی برای ذخیره داده در سمت کاربر در برنامه‌های وب هستند، اما تفاوت‌های کلیدی بین آن‌ها وجود دارد.کوکی‌ها (Cookies) فایل‌های متنی کوچکی هستند که توسط سرور وب بر روی دستگاه کاربر ذخیره می‌شوند و برای ذخیره کمیت‌های کوچکی از داده که نیاز است با هر درخواست ارسال شوند، مناسب‌تر هستند.فضای ذخیره‌ محلی و سشن (Local Storage - Session Storage) هر دو بخشی از وب API ذخیره‌سازی هستند و به برنامه‌های وب اجازه می‌دهند داده را به صورت محلی در مرورگر کاربر ذخیره کنند. فضای ذخیره محلی ذخیره‌سازی (Local Storage) پایدار است، به این معنی که داده حتی پس از بسته شدن و دوباره باز شدن مرورگر نیز در دسترس خواهد بود، در حالی که فضای ذخیره‌ سشن (Session Storage) ذخیره‌سازی موقتی است، به این معنی که داده تنها در طول سشن کاربر در وبسایت در دسترس است.فضای ذخیره‌ محلی و سشن (Local Storage - Session Storage) برای ذخیره کمیت‌های بزرگتری از داده که نیازی به ارسال به سرور ندارند، مناسب‌تر هستند. به طور کلی، انتخاب بین کوکی‌ها (Cookies)، فضای ذخیره‌ محلی و سشن (Local Storage - Session Storage) بستگی به نیازهای خاص برنامه وب و داده‌هایی که باید ذخیره شوند دارد.شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎اگر این نوشته را دوست داشتید می‌توانید برایم یک قهوه بخرید :)</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Mon, 19 Jun 2023 23:51:21 +0330</pubDate>
            </item>
                    <item>
                <title>شیطانی که می‌شناسی...</title>
                <link>https://virgool.io/@mkazemiraz/%D8%B4%DB%8C%D8%B7%D8%A7%D9%86%DB%8C-%DA%A9%D9%87-%D9%85%DB%8C-%D8%B4%D9%86%D8%A7%D8%B3%DB%8C-hrxrdw9cegbt</link>
                <description>Photo by Javier Allegue Barrosچند سال پیش، وقتی به فکر یک تغییر بزرگ در کارم بودم، خودم را مشغول تامل درباره گزینه‌هایی که در اختیارم بود، می‌یافتم. می‌توانستم نقشم را تغییر دهم. می‌توانستم شغلم را رها کنم و مدتی استراحت کنم و بعد برنامه‌ریزی کنم که چه باید بکنم. می‌توانستم در جستجوی شغل جدید باشم و در عین حال همچنان به شغل فعلیم ادامه دهم. می‌توانستم در حوزه جدیدی آموزش ببینم یا تلاش کنم در یک حوزه کاری جدید شروع به کار کنم. می‌توانستم تمام اموالم را بفروشم و به جایی در جنگل فرار کنم! هرکدام از این گزینه‌ها جذابیت‌ها و ترس‌های خود را داشتند، اما به طور طبیعی بیشتر وقتم را در ترس‌ها گذاشتم. بدون اینکه هیچ تغییری انجام دهم، به طور کامل و در تمام جزئیات با تمام خطرات و تله‌های احتمالی این گزینه‌ها آشنا شده بودم و همچنان هیچ تغییری در عمل ایجاد نکرده بودم.تا اینکه بدنم کاری فوق العاده مفید انجام داد. آسیبی که قبلاً تحت درمان قرار گرفته بود، به شکل نمایانی بازگشت و به زودی در تمام تماس‌های تصویری با یک کیسه آب گرم روی کمرم حضور پیدا کردم و هر سه ساعت و نیم به سمت کمد دارو برای مصرف بیشتر ایبوپروفن می‌دویدم. نمی‌توانستم به دلیل شدت درد بخوابم، نمی‌توانستم به دلیل شدت درد راه بروم و  حتی نمی‌توانستم به دلیل شدت درد فکر کنم. در همان نقطه متوجه شدم که چقدر حماقت کرده‌ام.اینجا / آنجامن چندین ماه وقت خودم را صرف فکر به تله‌ها و خطرات احتمالی گزینه‌های مختلف کرده بودم و به هیچ وجه به مشکلات موقعیت حال حاضر خودم، فکر نمی‌کردم. به خودم گفته بودم که در موقعیت کنونی، شرایط ایده‌آل نیستند اما حداقل ایمن هستند؛ و هر گامی که بردارم، ایمنی کمتری خواهد داشت.یک زمین بازی ایجاد کرده بودم که می‌گفت اینجا چیزها کمی اشتباه هستند اما حداقل با ثبات هستند اما آنجا هیچ کس نمی‌داند چه خواهد شد.تصویری که به ذهنم می‌رسد وقتی به این موضوع فکر می‌کنم، تصویری از ایستادن در یک چمنزار است؛ در مرز جنگل تاریک. نگاهی به سمت درختان و اینکه جنگل چقدر گسترده و خطرناک به نظر می‌رسد، که هیچ مسیر واضحی برای پیمودن وجود ندارد، که چیزی بزرگ و شاید خطرناک در آنجا وجود دارد. اما حداقل در اینجا، آفتاب و گرما و فضای باز وجود دارد، و من یک پناهگاه کوچک ساخته‌ام که وقتی باران می‌بارد می‌توانم زیر آن پناه ببرم، و اگر چیزی خطرناک می‌خواهد به سمت من بیاید، حداقل می‌توانم آن را زمانی که به سمتم می‌آید، ببینم.مشکل این تصویر این است که آن چمنزار در واقع در دشت سیلابی بود و من یک سال تا زانوهام در لجن فرو رفته بودم. من نزدیک به غرق شدن بودم، اما به خودم دروغ می‌گفتم. اما زمانی که درد در بدنم شعله ور شد، اشتباهم را متوجه شدم.شیطانی که می‌شناسیاکنون می‌فهمم که در واقع چندین اشتباه می‌کردم. از جمله بزرگترین آنها این بود که از نظر من هیچ تغییری قابل قبول نبود. من اشتباه می‌کردم، نه فقط به خاطر آنکه شرایط فعلی غیرقابل تحمل بودند، بلکه به خاطر اینکه شرایط فعلی اصلا ثابت نبودند. واقعیت این است که هیچ‌گاه شرایط ثابت نخواهد ماند؛ زیرا همیشه اتفاقاتی در حال رخ دادن هستند. چیزها دور و برم تغییر می‌کردند؛ پرسش این بود که آیا من همراه با آنها تغییر می‌کنم یا نه.خطای دوم این بود که فرض کرده بودم که همه ریسک در حرکت کردن است و با توجه به این تعریف، ماندن در جای خود گزینه‌ی محتاطانه‌تری است. این چیزی است که من مغالعه &quot;شیطانی که می‌شناسی&quot; می‌نامم:شرایط فعلی شما هر چقدر هم که بد باشد، حداقل آشنا هستند، و اگر حرکتی انجام دهید، ممکن است با وضعیت بسیار بدتری مواجه شوید. اما فقط به این خاطر که یک وضعیت آشنا است، به این معنی نیست که بهترین چیزی است که شما می‌توانید انجام دهید.سومین اشتباه من این بود که به بدنم توجه نکرده بودم. اطمینان دارم قبل از آنکه آن آسیب دوباره ظاهر شود، انواع سیگنال‌ها را گرفته بودم که وضعیتم خوب نیست. ذهن با کمترین هزینه می‌تواند بسیاری از چیزها را کند؛ اما بدن - حداقل بدن من - اغلب این هزینه را پرداخت نمی‌کند. عقل سالم در بدن سالم است.همیشه یک درس وجود داردمن از شغلم استعفا دادم و برخی از شیاطین جدید را کشف کردم. مطمئن نیستم آیا آنها شیاطین کوچکتر یا بزرگتری بودند، اما آنچه را یاد گرفتم این بود که تنها زمانی می‌توانی به حرکت ادامه دهی که شروع به حرکت کنی. وقتی یک شغل جدید پیدا کردم که محل مناسبی برای من نبود، درنگ نکردم. یک قدم دیگر برداشتم.با دیدی که در حال حاضر دارم، متوجه می‌شوم که ترک شغل تنها گزینه‌ی ممکن نبود، و فکر می‌کنم که می‌توانستم در آن شغل باقی بمانم و تغییرات زیادی را اعمال کنم و همه چیز به خوبی پیش می‌رفت. اما در مورد زمانی که دوباره باید مثل این بار تصمیم بگیرم، قصد دارم قبل از آنکه بدنم شورش کند تصمیم خودم را بگیرم.اکنون،  با گذشت زمان درک واضح تر از شرایطم، به این نتیجه رسیدم که ترس از تغییر و ریسک برخلاف باور رایج، نشان از هوشیاری و بقا است. ترس یک سیگنال است که نشان می‌دهد محیط ما در حال تغییر است و ما باید عکس‌العملی پیدا کنیم. اکنون، من  از ترس به عنوان یک ابزار برای آگاهی از خطرات، بررسی گزینه‌ها و انتخاب گام‌های مناسب استفاده می‌کنم. تصمیماتی که می‌گیرم، با احتیاط و بررسی دقیق تری اتخاذ می‌شوند. به جای اینکه ترس را نادیده بگیرم و به صورت ناخواسته اشتباهاتم را تکرار کنم، با ترس همراه هستم و از آن به عنوان یک راهنما استفاده می‌کنم.اما بیشتر می‌خواهم به یاد داشته باشم که تغییر همیشه و برای همیشه اتفاق می‌افتد، چه بخواهم چه نخواهم. و شیطانی که می‌شناسی هنوز هم یک شیطان است!شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎اگر این نوشته را دوست داشتید می‌توانید برایم یک قهوه بخرید :)این نوشته ترجمه ای بود از The devil you know.</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Sun, 18 Jun 2023 17:12:01 +0330</pubDate>
            </item>
                    <item>
                <title>معماری تمیز یا Clean Architecture در Frontend - بخش اول</title>
                <link>https://virgool.io/@mkazemiraz/%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-%DB%8C%D8%A7-clean-architecture-%D8%AF%D8%B1-frontend-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-gpsfbwcnncri</link>
                <description>معماری تمیز یا &quot;Clean Architecture&quot; یک الگوی طراحی نرم‌افزاری است که به منظور جداسازی بخش‌های مختلف یک سیستم و افزایش قابلیت تغییرپذیری آن، به کار می‌رود. در این مقاله، نگاهی به پیاده‌سازی Clean Architecture در قسمت Frontend یک نرم‌افزار خواهیم داشت. ما در این نوشته پس از آشنایی با اصول اولیه این معماری، به بررسی مزایا و معایب این رویکرد و نحوه پیاده‌سازی آن در برنامه‌های وب با یک مثال می‌پردازیم.در ابتدادرباره‌ی مفهوم کلی معماری Clean صحبت خواهیم کرد و با مفاهیمی مانند لایه‌های domain، use case و application آشنا می‌شویم. سپس، به بحث در مورد اینکه چگونه این مفاهیم در فرانت‌اند پیاده‌سازی می‌شوند و آیا اصلاً ارزش آن را دارند، بحث خواهیم کرد.بعد، برای یک فروشگاه آنلاین شیرینی فروشی، طراحی Frontend را با رعایت قوانین Clean Architecture شروع خواهیم کرد. در نهایت، یک use case را از ابتدا پیاده‌سازی کرده و مشاهده خواهیم کرد که آیا قابل استفاده است یا خیر.برای پیاده سازی رابط کاربری این فروشگاه از React به عنوان چارچوب رابط کاربری خود استفاده خواهد شد. اگرچه استفاده از React ضروری نیست، شما می‌توانید از هر کتابخانه یا چارچوب دیگری برای رابط کاربری نیز استفاده کنید.در این نوشته کمی از TypeScript در کد استفاده خواهد شد، اما فقط برای نشان دادن اینکه چگونه از نوع‌ها و رابط‌ها برای توصیف شی‌ها استفاده کنیم. هر کدی که در این نوشته بررسی خواهیم کرد، می‌تواند بدون استفاده از TypeScript نوشته شود.و در نهایت، این نوشته بیشتر درباره فهم مفهوم معماری تمیز است. مثال‌های ارائه شده در نوشته، ساده‌سازی شده‌اند، بنابراین این نوشته دستورالعمل صریحی در مورد نحوه نوشتن کد نیست. ایده را درک کرده و به این فکر کنید که چگونه می‌توانید این اصول را در پروژه‌های خود به کار ببندید.حالا، بیایید شروع کنیم!معماری و طراحیمعماری و طراحی در اصل به معنای جداسازی چیزها به نحوی است که بتوان آنها را دوباره به هم وصل کرد. از بین بردن چیزها به بخش‌هایی که می‌توانند به هم پیوند داده شوند، همان چیزی است که معماری را تشکیل می‌دهد.Rich Hickeyمطابق این گفته طراحی سیستم، جداسازی سیستم به گونه‌ای است که بتوان بعداً آن را ترکیب کرد و بیشتر از همه، این ترکیب باید به راحتی و بدون کار زیادی انجام پذیرد.اما فقط این نیست. می‌توانیم یک هدف دیگر برای استفاده از معماری مد نظر داشته باشیم و آن گسترش‌پذیری سیستم است. نیازهای برنامه همیشه در حال تغییر هستند. ما همیشه می‌خواهیم برنامه را به راحتی به روز کنیم و به دنبال نیازهای جدید، آن را تغییر دهیم. معماری تمیز دستیابی به این هدف را ممکن می‌کند.معماری تمیز - Clean Architectureمعماری تمیز یک روش برای جداسازی مسئولیت‌ها و بخش‌های عملکردی بر اساس فاصله آنها از domain برنامه است. منظور از domain قسمتی از جهان واقعی است که با یک برنامه مدلسازی می‌کنیم.معماری Clean به عنوان یک معماری سه لایه‌ای شناخته می‌شود، زیرا عملکرد در آن به لایه‌های مختلفی تقسیم شده است. مقاله مرجع درباره معماری Clean یک نمودار با لایه‌های مشخص شده زیر را ارائه می‌دهد:دیاگرام لایه‌ای: دامنه در مرکز قرار دارد، لایه برنامه در اطراف آن و لایه آداپتور در بیرون از آن است.لایه دامنه (Domain Layer)در مرکز لایه دامنه قرار دارد. این لایه شامل انتیتی‌ها و داده‌هایی است که حوزه موضوعی برنامه را توصیف می‌کنند، همچنین کدهایی برای تغییر این داده‌ها نیز در این لایه قرار دارد. دامنه، هسته‌ای است که یک برنامه را از برنامه دیگر متمایز می‌کند.می‌توانید از دامنه به عنوان چیزی یاد کنید که اگر از React به Angular حرکت کنیم تغییر نخواهد کرد. در واقع این قسمت مستقل از چارچوب مورد استفاده خواهد بو. در صورتی که در مورد domain یک فروشگاه صحبت کنیم، شامل محصولات، سفارشات، کاربران، سبد خرید و توابع برای به روزرسانی داده‌های آنها است.ساختار داده‌های موجود در دامنه و ماهیت تغییرات آن‌ها، مستقل از جهان بیرون است. رویدادهای خارجی تغییر داده‌های دامنه را آغاز می‌کنند، اما نحوه وقوع آن‌ها را تعیین نمی‌کنند.برای مثال تابع اضافه کردن آیتم به سبد خرید، اصلا اهمیتی نمی‌دهد که این آیتم به چه صورتی به سبد خرید اضافه شده است: از طریق لمس دکمه &quot;خرید&quot; توسط خود کاربر یا به صورت خودکار با یک کد تبلیغاتی. در هر دو حالت، آن آیتم را به عنوان یک ورودی قبول می‌کند و یک سبد خرید به روز شده با آیتم اضافه شده را برمی‌گرداند.لایه اپلیکیشن (Application Layer)در اطراف لایه دامنه، لایه اپلیکیشن وجود دارد. این لایه شامل use caseهایی است که به عنوان سناریوهای کاربر مشخص شده‌اند و مسئول آنچه بعد از وقوع یک رویداد اتفاق می‌افتد می‌باشد.به عنوان مثال، سناریو «افزودن به سبد خرید» یک use case است. این سناریو، اقداماتی که باید بعد از کلیک دکمه انجام شود را توصیف می‌کند. این سناریو می‌گوید:درخواستی را به سمت سرور ارسال کن.با استفاده از آیتم جدید تغییرات لازم در داده‌های دامنه را ایجاد کن.حالا با داده‌ی دریافتی از دامنه، رابط کاربری را بروزرسانی کن.در همین لایه، پورت‌ها نیز وجود دارند که توصیف‌کننده‌ی نحوه‌ی ارتباط برنامه‌ی ما با جهان خارجی هستند. معمولاً پورت، یک interface یا به عبارتی قرارداد رفتاری است. پورت‌ها به عنوان یک «buffer zone» بین خواسته‌های برنامه ما و واقعیت عمل می‌کنند. پورت‌های ورودی به ما می‌گویند که برنامه چگونه با جهان خارج باید ارتباط برقرار کند. پورت‌های خروجی هم می‌گویند که برنامه چگونه با جهان خارج برای آماده شدن باید ارتباط برقرار کند.در ادامه در مورد پورت‌ها بیشتر صحبت خواهیم کرد.لایه آداپتورها (Adopters Layer)این لایه از نرم‌افزار مجموعه‌ای از آداپتورهاست که داده‌ها را از فرمتی که بیشترین سازگاری با use caseها و موجودیت‌های سیستم دارند به فرمتی که برای یک سازمان خارجی مانند پایگاه داده یا وب بیشترین سازگاری را دارد تبدیل می‌کنند. به عنوان مثال، این لایه معمولاً کل معماری MVC رابط کاربری گرافیکی را در بر می‌گیرد. مدل‌ها، ویوها و کنترل‌کننده‌ها‌ ‌(‌model-view-controller) همه در این لایه قرار دارند. مدل‌ها احتمالاً فقط ساختار داده‌ای هستند که از کنترل‌کننده‌ها به use caseها منتقل می‌شوند و سپس از use caseها به مدل‌ها و ویوها بازمی‌گردند.قانون وابستگی این ساختار سه لایه دارای یک قانون وابستگی است: فقط لایه های بیرونی می توانند به لایه های درونی وابسته باشند.‌ این بدان معناست که:لایه domain باید مستقل باشد.لایه application می تواند به damin وابسته باشد.لایه بیرونی می توانند به هر چیزی وابسته باشد.تنها لایه‌های بیرونی می‌توانند به لایه‌های داخلی وابسته باشند.گاهی اوقات ممکن است این قانون نقض شود، اما بهتر است از آن سوء استفاده نشود. به عنوان مثال، گاهی اوقات استفاده از کدی شبیه به کتابخانه در دامنه، هرچند این لایه نباید وابستگی‌ داشته باشد، راحت‌تر است. در قسمت‌های بعد، به یک مثال از این موضوع می‌پردازیم.یک جهت کنترل نشده از وابستگی‌ها می‌تواند منجر به کدی پیچیده و گیج‌کننده شود. به عنوان مثال، نقض قانون وابستگی می‌تواند منجر به ایجاد وابستگی‌های چرخه‌ای شود که در آن ماژول A به B، B به C و C به A وابسته است. همچنین، این موضوع می‌تواند منجر به کاهش قابلیت تست، افزایش ارتباطات بین ماژول‌ها و در نتیجه، برهم‌کنش شکننده بین ماژول‌ها شود.ادامه دارد...شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Tue, 21 Mar 2023 03:23:08 +0330</pubDate>
            </item>
                    <item>
                <title>طراحی کامپوننت‌های React مانند یک توسعه دهنده حرفه‌ای</title>
                <link>https://virgool.io/@mkazemiraz/%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-%D9%87%D8%A7%DB%8C-react-%D9%85%D8%A7%D9%86%D9%86%D8%AF-%DB%8C%DA%A9-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D8%AF%D9%87%D9%86%D8%AF%D9%87-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C-jrljmhyr5c1i</link>
                <description>ساخت کامپوننت‌های قابل استفاده مجدد در React می‌تواند به طور قابل توجهی کارآمدی و قابلیت اداره کد شما را افزایش دهد. با ساخت کامپوننت‌هایی که به راحتی در سراسر برنامه شما قابل استفاده مجدد هستند، می‌توانید از تکرار جلوگیری کنید و اطمینان حاصل کنید که تغییرات اعمال شده در یک کامپوننت‌ در یک مکان در تمام نقاطی که استفاده می‌شود، بازتاب داده می‌شود.در ادامه، چند راهنمایی برای ایجاد اجزای قابل استفاده در React آورده شده است.ساده‌سازی کامپوننت‌یک کامپوننت باید فقط مسئولیت یک وظیفه یا قطعه خاصی از عملکرد را داشته باشد. بهتر است از ساخت کامپوننت‌های پیچیده که سعی می‌کنند کارهای زیادی را انجام دهند، خودداری کنید.برای مثال، اگر یک کامپوننت دارید که مسئولیت پردازش لاگین را دارد، منطقی نیست که همین کامپوننت مسئول نمایش مکان‌های فروش برای یک محصول خاص باشد.استفاده از  Props و  Contextبا ارسال داده به یک کامپوننت از طریق Props، می‌توانید آن را بیشتر قابل انعطاف و قابل استفاده مجدد کنید. این کار به شما اجازه می‌دهد تا از همان کامپوننت در شرایط مختلف با داده‌های متفاوت استفاده کنید.اینجا یک مثال از یک کامپوننت قابل استفاده مجدد React است که یک لیست از آیتم‌ها را نمایش می‌دهد:import React from &#039;react&#039;;
const List = (props) =&gt; {
 return (
    &lt;ul&gt;
      {props.items.map((item) =&gt; (
        &lt;li key={item.id}&gt;{item.name}&lt;/li&gt;
      ))}
    &lt;/ul&gt;
  );
};
export default List;این کامپوننت یک Props به نام items را می‌پذیرد، که یک آرایه از اشیاء با دو ویژگی id و name است. سپس بر روی آرایه items حلقه می‌زند و هر مورد را با استفاده از ویژگی name در یک لیست نمایش می‌دهد.برای استفاده از این کامپوننت، شما آن را در یک کامپوننت دیگر وارد کرده و به عنوان پارامتر آرایه items را به آن انتقال می‌دهید، به این شکل:const MyComponent = () =&gt; {

 const items = [
    { id: 1, name: &#039;Item 1&#039; },
    { id: 2, name: &#039;Item 2&#039; },
    { id: 3, name: &#039;Item 3&#039; },
  ];

 return (
      &lt;div&gt;
        &lt;List items={items} /&gt;
      &lt;/div&gt;
    );
  };
}

export default MyComponent;سپس می‌توانید از این کامپوننت در چندین نقطه از برنامه‌ی خود استفاده کنید، با امکان نمایش لیست‌های مختلف فقط با ارسال Prop‌s مختلف که شامل itemهای متفاوت است.تعریف Props با استفاده از TypeScriptاستفاده از پیش‌فرض‌های props در کامپوننت‌های تابعی در React، منسوخ شده است و توصیه می‌شود از این پس از TypeScript برای تعریف نوع props استفاده شود.تایپ‌اسکریپت یک زبان برنامه‌نویسی پرطرفدار است که برای جاوا اسکریپت، تایپ استاتیک اختیاری اضافه می‌کند. این زبان می‌تواند در پروژه‌های React برای بهبود تجربه توسعه با گرفتن خطاها قبل از رسیدن به مرورگر مورد استفاده قرار بگیرد. هنگام ایجاد یک کامپوننت React در TypeScript، شما می‌توانید نوع Props و State را با استفاده از interface تعریف کنید.در ادامه، یک مثال از استفاده از TypeScript برای تعریف نوع props آمده است.import React from &#039;react&#039;;

interface Props {
 name: string;
 age: number;
 : (event: React.MouseEvent&lt;HTMLButtonElement&gt;) =&gt; void;
}

const MyComponent: React.FC&lt;Props&gt; = ({ name, age,  }) =&gt; {
 return (
    &lt;div&gt;
      &lt;p&gt;Name: {name}&lt;/p&gt;
      &lt;p&gt;Age: {age}&lt;/p&gt;
      &lt;button ={}&gt;Click me&lt;/button&gt;
    &lt;/div&gt;
  );
}

export default MyComponent;در این مثال، کامپوننت MyComponent سه Props با نام‌های name، age و  را می‌پذیرد. اینترفیس Props نوع هر Prop را تعریف می‌کند. name یک رشته، age یک عدد و  یک تابع است که یک React.MouseEventرا به عنوان ورودی می‌گیرد و void را برمی‌گرداند. کامپوننت از این Props برای رندر کردن متن و یک دکمه استفاده می‌کند.هنگام استفاده از این کامپوننت، شما باید Props را به گونه‌ای ارسال کنید که با نوع‌های تعریف شده در Interface سازگار باشد.کامپوننت‌های خود را تست کنیدحتما کامپوننت‌های خود را برای اطمینان از کارکرد صحیح آن ها و سهولت در استفاده، تست کنید. من پیشنهاد می کنم از جِست (JEST)، یک فریمورک عالی تست برای ری‌اکت استفاده کنید. تست کردن کامپوننت‌های ری‌اکت با جِست چندین مزیت دارد.۱. بهبود کیفیت کدبا نوشتن و اجرای تست‌ها برای کامپوننت‌های React خود، می‌توانید اشکالات را در مراحل اولیه توسعه پیدا کرده و برطرف کنید که می‌تواند به بهبود کیفیت کد شما کمک کند.۲. افزایش اعتماد به کدبا نوشتن تست‌هایی که شامل حالت‌ها و موارد خاص مختلفی هستند، می‌توانید اطمینان حاصل کنید که کامپوننت‌های React شما در شرایط و حالت‌های مختلف با اطمینان و به درستی کار می‌کنند.۳. اشکال‌زدایی سادهبا نوشتن و اجرای تست‌ها برای کامپوننت‌های React خود، می‌توانید به راحتی مشکلات را پیدا کرده و رفع کنید. این کار می‌تواند باعث ساده شدن فرآیند اشکال‌زدایی و کاهش زمان صرف شده برای آن شود. در واقع تست‌ها به شما کمک می‌کنند تا بدون تلاش بیشتری بتوانید مشکلات و ایرادات موجود در کد خود را پیدا کرده و برطرف کنید.۴. همکاری بهتر با سایر اعضای تیمبا نوشتن تست‌ها، می‌توانید مستندات دقیقی برای استفاده از کامپوننت‌های React خود ایجاد کنید. این مستندات می‌تواند برای اعضای تیمی که در یک پروژه مشترک کار می‌کنند مفید باشد.۵. افزایش سرعت و کارآیی تست‌هاجِست (JEST) ویژگی‌هایی مانند تست snapshot و اجرای تست موازی دارد که می‌تواند به سرعت و کارآیی بیشتر در فرآیند تست کمک کند.در پایانساخت کامپوننت‌های قابل استفاده مجدد در React، نیازمند فهم قوی از این روش‌ها و کسب تجربه است. برای حفظ پایداری و قابلیت مقیاس‌پذیری کامپوننت‌های خود، همیشه در نظر داشته باشید که این کدها احتمالاً در چندین پروژه و شاید توسط سایر توسعه‌دهندگان در تیم شما استفاده خواهند شد. با تمرین و توجه به جزئیات، می‌توانید کامپوننت‌های React با کیفیت بالا ایجاد کنید که دارای ارزش افزوده برای هر پروژه‌ای هستند.شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎این نوشته ترجمه ای بود از Create React Components Like a Senior Developer.</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Sun, 19 Mar 2023 22:36:35 +0330</pubDate>
            </item>
                    <item>
                <title>هر چه کمتر، بهتر: برنامه‌نویس بی‌رحم</title>
                <link>https://virgool.io/fboard/%D9%87%D8%B1-%DA%86%D9%87-%DA%A9%D9%85%D8%AA%D8%B1-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%A8%DB%8C-%D8%B1%D8%AD%D9%85-sxibgtk7aclg</link>
                <description> Nathan Lemon وقتی یک خبر جدید در مورد یک زبان برنامه‌نویسی یا یک تکنولوژی می‌شنوید چه می‌کنید؟ احتمالا مثل بیشتر برنامه‌نویس‌ها کمی در مورد این خبر مطالعه می‌کنید و توجه‌تان جلب خواهد شد. چند وب سایت آموزشی را پیدا می‌کنید و سریعا به لیست در حال یادگیری اضافه می‌شود :)حتی ممکن است مشغول یادگیری هم شوید؛ چند ویدئوی آموزشی ببینید، نگاهی به مستندات بیاندازید و کمی سرگرم شوید. اما معمولا قبل از اینکه ماهر شوید یک تکنولوژی جدید ظهور می‌کند و توجه شما بازهم جلب موضوع جدیدتر خواهد شد.سوال واضح است: با این همه تکنولوژی موجود در دنیای امروز چگونه در می‌توان در همه آن‌ها مهارت پیدا کرد؟ جواب از سوال واضح‌تر است: نمی‌توانید :)ما نه زمان نامحدود داریم و نه توان نامحدود. خوشبختانه یا متاسفانه امکان یادگیری همه چیز برای ما وجود ندارد. در واقع برای برنامه‌نویس شدن باید خیلی کمتر از چیزی که فکر می‌کنید را یاد بگیرید.تنها یک گنج وجود دارد: زمانسال جدید چه برنامه‌ای دارید؟ یادگیری یک زبان برنامه‌نویسی جدید؟ ماهر شدن در یک فریمورک یا کتابخانه؟ تغییر مسیر برنامه‌نویسی؟ قبل از تصمیم‌گیری از خودتان بپرسید چرا؟ احتمالا خواهید گفت چون احساس می‌کنم این زبان یا مسیر را دوست دارم یا می‌خواهم پیشرفت بیشتری در کارم داشته باشم یا چون احتمال می‌دهم در آینده دور این تکنولوژی سهم زیادی از بازار را اشغال می‌کند نمی‌خواهم جایگاهم از دست برود و می‌خواهم در رینگ بمانم :)آیا این‌ها دلایل خوبی هستند؟ الزاما خیر. اگر زمان اضافی کافی نداشته باشید‌ (که احتمالا هیچ‌کس زمان اضافی ندارد!) آیا باز هم حاضرید صرفا به خاطر علاقه یا احتمال موفقیت در آینده زمان خود را به یادگیری یک زبان جدید اختصاص دهید؟ اگر زمان نامحدود ندارید یادگیری از سر تفریح اتلاف وقت است :)تنها یک دلیل قانع کننده و محکم برای یادگیری یک مهارت جدید وجود دارد: استفاده از آن.چرا ساعت‌ها زمان صرف یادگیری چیزی کنیم که در نهایت یا استفاده نخواهد شد یا استفاده بسیار کمی دارد؟ اگر فقط چند ماه از یک زبان برنامه‌نویسی که به تازگی آموخته‌اید استفاده نکنید احتمالا همه چیز فراموش خواهد شد و به نقطه اول برمی‌گردید.اگر شما هم به سرمایه گذاری علاقه‌مندید، زمان با ارزش‌ترین سرمایه شماست. به سادگی از دستش ندهید. یادگیری چیزهای بی فایده به اندازه صرف وقت در اینستاگرام بی فایده است! پس احترام وقت خود را حفظ کنید و با دروغ گفتن به خود فکر نکنید در حال پیشرفت در زندگی و کار هستید.تنها راه حل برای یادگیری بهینه تمرکز بر ضروریات و حذف بخش‌های اضافی است. برای رسیدن به این هدف باید بی‌رحم باشید. فریب هیاهوی رسانه‌ای را نخورید. احتمالا به خیلی چیزهایی که احساس می‌کنید باید سریعا یاد بگیرید نیاز نخواهید داشت و در عرض چند ماه فراموش خواهد شد. چه چیزی لیاقت وقت شما را دارد؟ Chase Clarkقبل از هر چیز باید تشخیص دهیم یادگیری کدام مهارت ارزش صرف زمان را دارد. مهارت‌های مختلف برای افراد مختلف مهم است. پس شما یک نمونه خاص هستید و در ادامه فقط چند راهنمایی برای انتخاب مهارت‌های اساسی ذکر شده است. انتخاب اینکه کدام زبان برنامه نویسی مناسب است با خود شماست :)مهارت‌هایی که استفاده می‌کنیداین مورد بسیار واضح است اما ممکن است نادیده گرفته شود. در هر زمینه‌ای که فعالیت می‌کنید دارای یک دانش فنی هستید. اگر برنامه‌نویس سمت سرور هستید شاید با لاراول آشنایی داشته باشید یا اگر برنامه‌نویس سمت کاربر باشید با ری‌اکت غریبه نیستید. به هرحال اگر می‌خواهید یک مهارت جدید یاد بگیرید اول از خودتان سوال کنید در استفاده از ابزارهایی که در حال استفاده از آن‌ها هستم به مهارت کافی رسیده‌ام؟بسیاری از زبان‌ها یا فریمورک‌های بزرگ دائما در حال به روز رسانی هستند. بسیاری از این به روز رسانی‌ها کار برنامه نویس‌ها را آسان‌تر می‌کنند پس اول سعی کنید به روز باشید و مهارت خود در استفاده از تکنولوژی‌هایی که قبلا یاد گرفتید را بالا ببرید.تسلط بر ابزاری که قبلا استفاده کرده‌اید دو مزیت مهم دارد:۱. سریعا از دانش جدید خود استفاده می‌کنید.۲. برای مهارت جدید خود حقوق می‌گیرید (یا خواهید گرفت).مهارت‌هایی که مرتبط با مهارت‌های کسب شده قبلی هستندوقتی که در یک زمینه ماهر شدید زمان رشد است. بهترین فضا برای رشد زمینه‌ای است که در آن متخصص هستید. تغییر مسیر بین زبان‌های برنامه‌نویسی مختلف جز اتلاف زمان صرف شده فایده‌ای نخواهد داشت. فرض کنیم شما یک برنامه‌نویس سمت کاربر هستید که با کتابخانه React آشنایی دارید و مهارت بالایی در پیاده‌سازی رابط‌های کاربری دارید. اگر قرار باشد یک موضوع جدید در حوزه تخصص خود یاد بگیرید احتمالا Serverless گزینه مناسبی خواهد بود. بعد از یادگیری این مهارت قادر هستید که برنامه‌های خودتان را بدون نیاز به یک برنامه‌نویس سمت سرور پیاده‌سازی کنید. یک گزینه مناسب دیگر احتمالا طراحی رابط کاربری خواهد بود. در این حالت از کمک یک طراح یا گرافیست بی‌نیاز خواهید شد :)مهارت‌هایی که در آینده نزدیک استفاده خواهید کردممکن است شما علاقه‌ای به عمیق شدن در زمینه تخصصی حال حاضر خود نداشته باشید یا زمینه مرتبط جذابی برای تخصص شما وجود نداشته باشد. احتمالا شما هم مثل بقیه چند ایده ناب برای برنامه‌نویسی دارید :)مهارت هایی که لازم دارید تا این ایده‌ها را پیاده‌سازی کنید یاد بگیرید. به این صورت هم مهارت‌هایی که یاد می‌گیرید را سریعا استفاده می‌کنید هم شاید واقعا ایده شما ناب باشد و زندگی‌تان عوض شود.البته این کار بسیار خطرناک است پس لطفا مراقب باشید. بسیاری از برنامه‌نویس ها ایده برنامه‌های مبهم و غیرکاربردی را دارند و با ورود به این فضا تنها چند ماه را برای انتخاب زبان یا پایگاه داده‌ی اشتباهی به هدر می‌دهند. برای جلوگیری از این خطا ابتدا از مهارت‌های خود برای ساخت برنامه‌ها استفاده کنید و تنها در مورد لزوم سراغ یادگیری یک مهارت جدید بروید.پیاده‌سازی یک ایده نباید بهانه‌ای برای جدا شدن از فضای حاضر و یادگیری مجموعه کاملا جدید از مهارت‌ها باشد، بلکه باید شما را کمک کند تا مرحله به مرحله دانش خود را افزایش دهید.مفاهیم اساسی و بنیادیبه هر حال هر زمانی ممکن است نتوانید انتخاب کنید مهارت بعدی برای یادگیری چه چیزی باشد، اینجا یک قانون وجود دارد:هر وقت نمی‌دانستید چه چیزی را باید یاد بگیرید مفاهیم اساسی و بنیادی را انتخاب کنید. این انتخاب قطعا انتخاب اشتباهی نخواهد بود.مهارت در الگوریتم‌ها، ساختارهای داده (Data Structures) و الگوهای طراحی (Design Patterns) همیشه گزینه‌های مناسبی هستند. شاید فکر کنید شما هیچوقت از این مهارت‌ها استفاده نخواهید کرد اما هر زمانی که برنامه‌نویسی می‌کنید در حال استفاده از این مفاهیم بنیادی هستید. اگر با علم و اختیار از این مفاهیم استفاده کنید کدهای شما تفاوت اساسی با گذشته خواهد داشت.به علاوه مفاهیم بنیادی برنامه‌نویسی همه جا کاربرد دارند و شما همیشه در حال استفاده از آن‌ها خواهید بود. به همین دلیل یادگیری این مهارت‌ها مستقل از زبان‌های برنامه‌نویسی به شما کمک خواهند کرد.چه چیزی لیاقت وقت شما را ندارد؟Andy Tحالا که چند توصیه در مورد استفاده درست از زمان را دیدیم، چند هشدار هم برای انتخاب موضوعات جدید ببینیم. باز هم تاکید می‌کنم این‌ها صرفا توصیه‌هایی هستند برای داشتن دیدی شفاف‌تر و انتخابی هوشمندانه.یک زبان برنامه‌نویسی جدید و تازه (فریمورک / کتابخانه)به محض انتشار یک زبان به سراغش نروید. مهم نیست بقیه بگویند این بهترین زبان برنامه‌نویسی از ابتدا تا کنون است. مهم نیست کسانی که شما تحسین‌شان می‌کنید ذوق زده باشند. مهم نیست که مدیر شما دیوانه‌وار از این زبان تعریف می‌کند.دنیای تکنولوژی بی‌رحم است و خیلی از تکنولوژی‌های نوظهور خیلی زود محو می‌شوند. حتی خیلی از غول‌ها هم به سادگی شکست می‌خورند. تنها کسی که در این شرایط ضرر می‌کنند برنامه‌نویسی است که زمان خود را صرف یادگیری این تکنولوژی‌ها کند. اما این توصیه به معنی این است که نباید هیچ چیز جدیدی یاد بگیریم؟ خیر. پس چه معیاری برای انتخاب مناسب است؟اگر به موضوع جدیدی برخورد کردید که شانس موفقیت زیادی دارد و همچنین به حوزه تخصص شما هم مرتبط است احتمالا گزینه خوبی برای یادگیری است. اگر خوش شانس باشید خیلی زود به موفقیت بزرگی دست پیدا می‌کنید ولی امکان تلف شدن زمان زیادی از شما هم وجود دارد. این یک معامله با ریسک بالا خواهد بود، یا وقت شما تلف شده است و یا جزو اولین متخصصان آن حوزه خواهید شد.مهارت‌هایی که احتمالا یک بار استفاده خواهید کردگاهی اوقات باید کاری را انجام دهید اما قرار نیست تکرار شود. در این مواقع نیازی نیست وقت زیادی را صرف یادگیری کنید، فقط سریع‌ترین راه برای انجام این مسئولیت را پیدا کنید. فرض کنید یک برنامه‌نویس سمت کاربر هستید و نیاز دارید چند چارت را پیاده‌سازی کنید. یکی از گزینه‌ها برای ساخت چارت های پیچیده D3.js است. اما واقعیت این است که صرف زمان برای یادگیری این کتابخانه ارزش لازم را ندارد. با یک جستجوی ساده شاید ابزارهای ساده‌تری پیدا کنید. حتی شاید بتوانید از ابزارهای بدون کدنویسی استفاده کنید. حتی شاید سپردن این وظیفه به یک برنامه‌نویس دیگر که با D3.js آشنا باشد هزینه‌ی کمتری از صرف ساعت‌ها یا روزها برای یادگیری مهارتی که احتمالا بعدا به درد شما نمیخورد، داشته باشد.مهارت‌های بی‌ربطیادگیری مهارت‌هایی بی‌ربط به تجربیات حال حاضر در بیشتر مواقع اتلاف وقت خواهد بود. برنامه‌نویس سمت کاربری که تجربه کار با React را دارد و کمی هم با PHP کار کرده است اگر زمان خود را صرف Machine Learning کند تنها وقت خود را هدر داده است.البته خیلی برنامه‌نویس‌ها هم وقت خود را با آموختن هم‌زمان چندین فریمورک و کتابخانه هدر میدهند. فرض کنید شخصی با React کار می‌کند و زمان خالی را صرف یادگیری Vue، Angular و Svelte می‌کند. این شخص اگر همین زمان را روی React Native بگذارد احتمالا نتیجه بهتری خواهد گرفت :)مهارت‌ها را به صورت تصادفی صرفا با گفته‌های دیگران انتخاب نکنید، زمان خود را صرف تکامل خود کنید.اما اگر اصرار به یادگیری یک مهارت خارج از حوزه تخصصی خود دارید لطفا در سریع‌ترین زمان ممکن از این مهارت استفاده کنید.زبان‌های منسوخ شده یا رو به زوالخاطرم هست اولین جایی که مشغول به کار شدم دوستی بود که بقیه افراد گروه را به یادگیری COBOL تشویق می‌کرد :)یادگیری زبان‌های منسوخ‌شده یا در حال نسخ فقط اتلاف وقت خواهد بود. لطفا به تکنولوژی به چشم عزیزان نزدیک خود نگاه نکنید، تکنولوژی روزی عرضه می‌شود و روزی هم از بازار خارج خواهد شد. هر زبانی عمری دارد. تشخیص اینکه یک زبان به انتهای عمرش نزدیک می‌شود قطعا سخت خواهد بود اما به محض فهمیدن این موضوع باید به فکر افتاد. شاید سال‌ها پیش jQuery بهترین گزینه برای انتخاب یک کتابخانه JavaScript بود اما در حال حاضر قطعا این انتخاب React خواهد بود. فریب کاسبان برنامه‌نویسی را نخورید، شما به هیج عنوان به jQuery نیازی ندارید :)در آخرزمانی را به آموختنِ چگونه آموختن اختصاص دهید و می‌بینید در بلند مدت ساعت‌ها از زمان شما را ذخیره خواهد کرد.شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎این نوشته ترجمه ای آزاد بود از Learn Less, Achieve More: How To Optimize Your Learning.</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Wed, 03 Mar 2021 23:33:22 +0330</pubDate>
            </item>
                    <item>
                <title>سریع و آهسته برنامه‌نویس شوید!</title>
                <link>https://virgool.io/CodeLovers/%D8%B3%D8%B1%DB%8C%D8%B9-%D9%88-%D8%A2%D9%87%D8%B3%D8%AA%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D8%B4%D9%88%DB%8C%D8%AF-dfn9a1nbn2jo</link>
                <description>Karl Bewickیادگیری مهمترین و اصلی‌ترین مهارت برای هر فردی است. یادگیری به شخص امکان رشد، تغییر و پیشرفت را می‌دهد. با همین مهارت شما می‌توانید یک برنامه‌نویس موفق باشید!همه ما با این مهارت آشنا هستیم، نه؟ همه ما می‌دانیم چطور آموزش ببینیم. سال‌هاست که این کار را می‌کنیم، شاید از زمان مدرسه. با این وجود ممکن است دریافت و درک ما از یادگیری صحیح نباشد. یا حتی بدتر، شاید عادتی اشتباه برای یادگیری یک موضوع از زمان مدرسه در ما شکل گرفته باشد.پس فهم این موضوع و آشنایی با روش‌های حل اشتباهات رایج در شیوه یادگیری موثر، به عنوان مهمترین مهارت فردی از اهمیت بالایی برخوردار است.در این نوشته سعی داریم با اشباهات رایج در یادگیری  و راهکارهای موجود آشنا شویم. Annie Spratt اشتباه اول: یادگیری با عجله و فشار زیاد در مدت کوتاهچون شاغل یا دانشجوام زمان زیادی ندارم. وقتی از سر کار برمی‌گردم خستم. حتی وقت مطالعه چند صفحه از یک کتاب رو ندارم چه برسه به برنامه نویسی! اما آخر هفته... درسته، آخر هفته وقت کافی دارم و می‌تونم کل آخر هفته رو برای برنامه نویسی وقت بذارم. جایی خوندم که برای یادگیری یه زبان برنامه نویسی لازمه که چند صد ساعت آموزش ببینم تا بتونم باهاش جایی استخدام بشم. خب پس اگه بتونم هر هفته حدود ۱۰ ساعت رو به یادگیری این زبان اختصاص بدم در طول یک سال بیشتر از ۵۰۰ ساعت براش وقت گذاشتم و احتمالا سال دیگه بتونم یه شغل مناسب پیدا کنم. چند هفتست که صادقانه دارم تمام تلاشم رو می‌کنم و هیچ آخر هفته ای رو از دست ندادم ولی هر هفته احساس می‌کنم همه چی رو فراموش کردم و باید از اول برگردم و دوباره همه چی رو مرور کنم.این احساس کاملا درست است. کاری که در حال انجامش هستیم دقیقا مانند مطالعه شب قبل امتحان است. احتمالا با این روش مطالعه می‌توانیم نمره قبولی یا حتی نمره عالی در این درس بگیریم اما دانش کسب شده پایدار نخواهد بود و خیلی زود فراموش خواهد شد. مغز ما مانند یک ماهیچه رفتار می‌کند. انتظار نداریم با یک بار ورزش در هفته و انجام آن برای ساعت‌های طولانی بدن ورزیده ای داشته باشیم. به همین دلیل نباید انتظار داشت با مطالعه و آموزش طولانی، ولی یک بار در هفته پیشرفت قابل توجهی در برنامه نویسی داشته باشیم.راهکارپاسخ ایجاد فواصل کوتاه است. یادگیری برنامه نویسی را بین روزهای مختلف هفته تقسیم کنید. یادگیری روزانه شاید غیر واقع بینانه به نظر برسد، اما سعی کنید تا حد امکان آن را عملی کنید. قرار نیست کسی شما را سرزنش کند فقط کافی است یک برنامه ریزی روزانه برای یادگیری برنامه نویسی داشته باشید و صادقانه تلاش کنید. حتی ۳۰ دقیقه آموزش برنامه نویسی روزانه قطعا نتایج بهتری از صرف ساعت‌ها در آخر هفته خواهد داشت. حتی اگر در یک روز زمان خالی بیشتری دارید باز هم بین یادگیری خود فاصله ایجاد کنید. زمان خود را به بخش‌های ۳۰ تا ۶۰ دقیقه تقسیم کنید. بین این زمان‌ها پیاده روی، گوش دادن به موسیقی و یا حتی خوابیدن بسیار مفید خواهد بود :) Magnet.meاشتباه دوم: یادگیری منفعلحدود چند هفته یا ماهه که دارم برنامه نویسی یاد می‌گیرم. مفاهیم و اصول رو یاد گرفتم و چند تا برنامه کوچیک و ساده هم نوشتم. تازه یه دوره سطح میانی رو شروع کردم و تقریبا همه چیزایی که توی این دوره گفته می‌شه رو درک می‌کنم. همه چیز منطقی به نظر می‌رسه و می‌دونم چطوری باید کد بنویسم. همه چیز داره خوب پیش می‌ره و مشکلی نیست. کار بزرگی رو انجام دادم :)دوره داره تموم می‌شه و من هنوز هیچ کدی ننوشتم. چرا بنویسم؟ همه چیز واضح و قابل فهمه. چرا باید وقتم رو هدر بدم و هرچیزی که طرف می‌نویسه منم بنویسم؟ معلومه که کاری نداره.بزرگترین اشتباه در حال رخ دادن است. تماشا ویدئو یا مطالعه کتاب به صورت منفعلانه هیچ چیز به ما یاد نمی‌دهد. اگر برای یادگیری ذهن را به کار وادار نکنیم مغز ارتباطات جدیدی نخواهد ساخت ( تطبیق پذیری رشته های عصبی و یادگیری برنامه نویسی ) و آموزشی شکل نخواهد گرفت و فقط این توهم را خواهیم داشت که در حال رشد هستیم.نگاه کردن به شخصی که در حال حل یک مسأله است با حل کردن مسأله تفاوت زیادی دارد. ممکن است فکر کنیم می‌دانیم چطور باید این کار را انجام دهیم، اما واقعا می‌دانیم؟ فقط بعد از حل کامل یک مسأله می‌توانیم مطمئن باشیم که در انجام این کار مهارت داریم.راهکارفوتبال بازی کردن بلد هستید؟ چند مسابقه فوتبال را دیده اید؟ در مورد نوشتن چطور؟ ریاضیات؟ برنامه نویسی؟ یادگیری فقط به صورت فعال شکل می‌گیرد.باید در اسرع وقت به فکر انجام پروژه‌های خود باشید. حتی اگر تازه کار باشید یا احتیاج به دیدن دوره‌های آموزشی بیشتری داشته باشید تنها در این صورت می‌توانید حداکثر بهره را از آن‌ها ببرید. یادگیری منفعل خود را به یادگیری فعال تغییر دهید. سعی کنید بین موضوعات مختلف ارتباط برقرار کنید. مفاهیم گفته شده در این جلسه با مفاهیم گذشته چه ارتباطی دارد؟ اگر بخواهید این موضوع را به شخص دیگری توضیح دهید از کجا شروع خواهید کرد و به کجا خواهید رسید؟اگر می‌خواهید یادگیری فعال داشته باشید همراه با مدرس دوره کد ننویسید. به روش انجام کار توجه کنید و هر ۵ یا ۱۵ دقیقه سعی کنید با کمک حافظه خود همان کار را تکرار کنید. تاثیر این نوع یادگیری را زودتر از چیزی که انتظار دارید خواهید دید :) the blowupاشتباه سوم: ترس از شکستچند تا دوره آموزش برنامه نویسی رو گذروندم. قدم بعدی چیه؟ فکر نکنم هنوز بتونم یه پروژه بگیرم یا جایی استخدام شم. فکر کنم بد نباشه چند تا دوره دیگه بگذرونم تا چیزایی که بلدم مرور بشه. بهتره برگردم و از مفاهیم شروع کنم. شاید یه دوره جدید بهم دید بهتری بده. تموم کردن یه دوره چند ساعته حس خوبی بهم می‌ده. یعنی توی تصمیم جدی هستم. خب بالاخره بعد از این همه دوره دارم روی یه برنامه کار می‌کنم. باید قسمت ثبت نام رو به برنامم اضافه کنم ولی نمی‌دونم چه جوری؟ ظاهرشم اونجوری نشده که می‌خواستم البته. قبل اینکه بخش ثبت نام رو اضافه کنم بهتره یه دستی به ظاهرش بکشم. باید یه دوره طراحی رابط کاربری بگذرونم.ترس از شکست مانع پیشرفت و یادگیری خواهد شد. مطمئن نی‌ستیم در مرحله باید چه کاری باید انجام شود و توانایی‌های خود را باور نداریم. ترجیح می‌دهیم کارهای ساده را انجام دهیم و از مشکلات دوری کنیم تا شکست نخوریم و بدین ترتیب از منطقه امن خودمان حفاظت کنیم. راهکارخودتان را به چالش بکشید. در ابتدای مسیر نیاز نیست موفق شوید. حس نیاز به موفقیت را دور بیاندازید و خطر کنید. زمانی رشد می‌کنید که مبارزه کنید. زمانی که ذهن شما برای حل یک موضوع به مشکل برخورد کند خلاقیت شکل می‌گیرد. ترس از شکست و راحت طلبی فقط زمان شما را به هدر می‌دهد. اشتباه و شکست از حقایق برنامه نویسی هستند. هر چه زوتر شکست بخورید زودتر رشد خواهید کرد. چالش‌های سخت را قبول کنید و بهترین کاری که می‌توانید انجام دهید.برای یادگیری برنامه نویسی به چیزی جز چالش نیاز نخواهید داشت :) Halacious اشتباه چهارم: عوامل حواس پرتی زیادطبق برنامه ریزی روزانم الان باید قسمت جدید آموزش رو شروع کنم. خب بریم. بذار قبلش توئیترم رو چک کنم. خبری نیست. عه یه پیام توی تلگرام دارم. شاید مهم باشه. یه جک بود. وقت کد نوشتنه. ۵ دقیقه بعد. یه پیام از واتساپ. بذار ببینم چیه؟ هیچی. بریم بقیش. چند دقیقه بعد. این دیگه کیه زنگ زده؟ بذار جواب بدم زود قطع می‌کنم. باید برم سراغ ایمیلم تا دنبال چیزی بگردم که دوستم خواسته. ای بابا، یک ساعت گذشت و باید برم سراغ کار بعدی توی لیستم.وقتی دائما حواس پرتی داشته باشیم نمی‌توانیم چیزی یاد بگیریم. حتی یک کار کوچک نیز می‌تواند دلیل عدم تمرکز باشد. بدون داشتن تمرکز و دقت کافی مغز نمی‌تواند از تمام ظرفیت خود برای یادگیری استفاده کند.راهکاربر روی یک چیز تمرکز کنید. انجام چند کار باهم هیچ فایده ای نخواهد داشت. گوشی خود را روی حالت سکوت یا در یک اتاق دیگر قرار دهید. در سکوت کامل و با تمرکز حواس کامل کار کنید. استفاده از موسیقی برای افزایش تمرکز بسیار موثر است. سعی کنید تمام عواملی که باعث حواس پرتی در حین یادگیری می‌شوند را از بین ببرید. حتی اگر نیاز به مرورگر دارید سعی کنید از مرورگری استفاده کنید که به صورت معمول از آن استفاده نمی‌کنید. با این کار به سراغ سایت‌های مورد علاقه و محبوبتان نخواهید رفت :)اگر تمرکز کافی برای انجام کاری را ندارید تکنیک‌های افزایش تمرکز مانند پومودورو را امتحان کنید. در ویرایشگر خود از حالت تمام صفحه برای نوشتن کد استفاده کنید. وقتی در حال کدنویسی شخصی مزاحم کار شما می‌شود از او بخواهید زمان دیگری را انتخاب کند. اگر این مشکل زیاد برای شما پیش می‌آید یک راه حل خوب استفاده از هدفون می‌باشد، حتی اگر موسیقی گوش نمی‌کنید. این کار یعنی شما در حال حاضر در حال انجام کار دیگری هستید.در آخربه خاطر داشته باشید یادگیری برنامه نویسی یا هر مهارت دیگری به صورت شهودی و بصری غیر ممکن است. تکنیک‌های یادگیری موثر اغلب با عادت‌های ما در تضاد هستند. تمرین و تکرار تنها راه غلبه بر عادت‌های مضر و مخرب ما برای یادگیری موثر است. زمانی را به آموختنِ چگونه آموختن اختصاص دهید و می‌بینید در بلند مدت ساعت‌ها از زمان شما را ذخیره خواهد کرد.شروع هر کاری سخت است، اما به یاد داشته باشید هر روز کمی آسان‌تر خواهد شد :)بازنشر و نظر شما با ارزش و باعث دلگرمی است ❤︎این نوشته ترجمه ای آزاد بود از Learning Fast and Slow.</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Sat, 23 Jan 2021 04:24:33 +0330</pubDate>
            </item>
                    <item>
                <title>عادت‌ها چگونه شما را برنامه‌نویس می‌کنند؟</title>
                <link>https://virgool.io/fboard/%D8%B9%D8%A7%D8%AF%D8%AA%D9%87%D8%A7-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%B4%D9%85%D8%A7-%D8%B1%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%85%DB%8C%DA%A9%D9%86%D9%86%D8%AF-lxotnxrupizi</link>
                <description>عادت‌های شما مهمترین عامل برای تعیین بهره وری، کارایی و موفقیت شما در رسیدن به اهدافتان می‌باشد. عادات مفید می‌توانند سرعت شما را بالا ببرند و عادات مضر می‌توانند شما را کیلومترها از هدف دور کنند در حالی که تصور می‌کنید به سوی مقصد در حرکت هستید.تغییرات کوچک روزانه و منظم می‌تواند نتایج بزرگ و غیرقابل باوری را به همراه داشته باشند.به چه چیزی عادت می‌گوییم؟عادت‌ها فعالیت‌ها و کنش‌هایی هستند که انسان مداوم و اغلب به صورت منظم انجام می‌دهد. یک پاسخ خودکار به موقعیت‌های خاص. به عنوان مثال ممکن است هر شب قبل از خواب ساعت‌های زیادی را به گشت و گذار در فضای مجازی بپردازیم. این‌فعالیت اگر از روی عادت باشد بدون زحمت اتفاق می‌افتد حتی اگر روز سختی را پشت سر گذاشته باشیم. به طور کلی شخص برای انجام وظایفی که از سر عادت انجام می‌دهد نیاز به آماده سازی روحی یا جسمی ندارد و حتی ممکن است با کمترین میزان تمرکز قادر به انجام آن کار باشد.هر شخص چیزی نیست جز عادت‌هاشاید خیلی از افراد با این موضوع موافق نباشند، اما شما عادت‌های خودتان هستید :)کارهای شما اطلاعات زیادی در مورد شخصیت شما به دیگران خواهد داد. عادت‌های روزانه افراد و رفتار آن‌ها، اندیشه‌ها و افکار آن‌ها را بیان می‌کند.درواقع عادت‌های روزانه شخص نقش بسیار مهمی را در تبدیل شدن او به شخصی که می‌خواهد باشد دارد. اگر عادت به خوردن غذاهای سالم داشته باشیم احتمالا زندگی سلامتی خواهیم داشت، یا برعکس اگر عادت به خرج کردن پول برای کالاهای غیرضروری داشته باشیم احتمالا پس انداز مناسبی نخواهیم داشت.اگر عادت پیدا کنید که هر روز، روزی حداقل ۱ ساعت را به کد نویسی اختصاص دهید، در دراز مدت برنامه نویس بهتری خواهید شد. هویت شما را عادت‌های شما می‌سازند.اکنون می‌دانیم عادت‌ها نقش بسیار کلیدی در شرایط زندگی ما دارند. به بیان درست تر، برای داشتن زندگی بهتر و رسیدن به یک هدف مشخص باید عادت‌های درست و مفیدی را در خود ایجاد کنیم.۴ مرحله برای ایجاد یک عادتبه وجود آمدن یک عادت به طور کلی دارای ۴ مرحله است:شناختتمایلواکنشپاداشدر مرحله نخست شما متوجه یک مشکل یا موضوع می‌شوید. در مرحله بعد اگر تمایلی برای حل مشکل یا فهم موضوع داشته باشید وارد مرحله سوم می‌شوید، در غیر این صورت پیدایش عادت در همین مرحله شکست خواهد خورد. تمایل و احساس نیاز شخص، برای پیدایش یک عادت بسیار مهم است. در مرحله بعد سعی می‌کنید راهی پیدا کنید تا به این نیاز پاسخ دهید و در آخر با انجام یک واکنش صحیح، پاداش و نتیجه واکنش، احساس نیاز و تمایل شما را خشنود می‌کند. به همین سادگی :)با هم یک عادت غلط که ممکن است ساعت‌ها وقت و تمرکز ما را از بین ببرد را بررسی می‌کنیم. فرض کنید با هر صدای گوشی همراه به سراغ آن برویم. در این عادت تمایل داریم هر لحظه به سراغ گوشی همراه خودمان برویم و از اتفاقات احتمالی یا پیام‌های ارسال شده با خبر باشیم. بعد از این مرحله واقعا به سراغ گوشی همراه می‌رویم و مشغول خواندن پیام یا نگاه کردن به یک تصویر می‌شویم. سپس چون به این نیاز مغز پاسخ مثبتی داده شده است احساس رضایت می‌کنیم و شاید حتی از انجام فعالیت قبلی منصرف شویم و ساعتی را به گفتگو با دوستان خود مشغول شویم. در واقع به مغز خود برای انجام این کار پاداش داده اید.کارت را درست انجام داده ای، لطفا دوباره تکرارش کن :)وقتی شما به این احساس نیاز پاسخ مثبت دادید مغز بارها و بارها این فرآیند را تکرار می‌کند، چون احساس می‌کند شما راضی به انجام آن هستید و همین یعنی ساخت یک عادت.فرض کنید می‌خواهیم عادت به ورزش کردن را در خود بسازیم. در مرحله اول متوجه می‌شویم دارای اضافه وزن هستیم یا قدرت بدنی لازم را نداریم. به یک بدن آماده و سرحال تمایل پیدا می‌کنیم. واکنش درست برای رسیدن به این تمایل، ثبت نام در یک باشگاه ورزشی و تمرین روزانه است. در نهایت بعد از رسیدن به بدن ایده آل احساس رضایت پیدا می‌کنیم. همین قدر ساده؟ خیر.چرا به وجود آوردن عادات مفید و خوب سخت تر از ساخت عادات مضر است؟جواب این پرسش در مرحله آخر است: پاداش. در مثال اول مغز شما به سرعت به پاداش ایجاد تمایل و نیاز می‌رسد. اما برای داشتن یک بدن قوی مدت‌ها زمان لازم است. به صورت کلی عادات مضر پاداش‌های کوتاه مدت دارند و شما زودتر درگیر این چرخه ی ۴ مرحله ای خواهید شد. حال آنکه برای بوجود آمدن یک عادت خوب و مفید زمان زیادی لازم است چون نتیجه و پاداش به سختی حاصل خواهد شد. تنها دلیل اینکه ساخت عادت‌های خوب سخت هستند این است که مغز دیرتر به احساس رضایت دست پیدا می‌کند و به همین دلیل آن رویه را دنبال نمی‌کند و حتی شما را از انجام آن منصرف می‌کند.قانون ۲۰ ثانیهحال که می‌دانیم عادت‌ها چطور به وجود می‌آیند باید بدانیم چطور از فرصت‌ها استفاده کنیم. اگر می‌خواهید عادتی را در خود بسازید باید سریعا دست به واکنش بزنید. شما ۲۰ ثانیه فرصت دارید تا تمایل خود را به واکنش تبدیل کنید وگرنه این تمایل از بین خواهد رفت و چیز دیگری جای آن را خواهد گرفت :)نکته بسیار مهم این است که قانون ۲۰ ثانیه یک شمشیر دو لبه است. اگر این قانون را رعایت کنید خیلی راحت می‌تواند شما را درگیر یک عادت بد و مضر کند. راه حل؟به تمایلات خود مسیر بدهیداگر می‌خواهید برنامه نویس خوبی شوید باید به تمایلات خود جهت بدهید. با یک نگاه ساده به کارهای روزانه خود متوجه می‌شوید چه کاری باعث می‌شود از تمرین روزانه برنامه نویسی غافل شوید. تنها راه شما پاکسازی این تمایلات است. بارها بگویید من مایل به انجام این کار نیستم و اجازه دهید ۲۰ ثانیه کارش را انجام دهد :)پاسخ فوری به تمایلاتی که در جهت اهداف شما نیست، بدون اینکه متوجه شوید شما را از مسیر خارج می‌کند.حرف آخراگر می‌خواهید برنامه نویس ماهری باشید باید دست به کار شوید. پس لطفا گوشی همراه خود را کنار بگذارید و چند خطی کد بنویسید :)بازنشر و نظر شما با ارزش است ❤︎با نگاهی به Habits, Why Do They Matter و کتاب عادت‌های اتمی.</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Wed, 09 Dec 2020 17:56:20 +0330</pubDate>
            </item>
                    <item>
                <title>کدها چگونه به اسکناس تبدیل می‌شوند؟</title>
                <link>https://virgool.io/@mkazemiraz/%DA%A9%D8%AF%D9%87%D8%A7-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%A8%D9%87-%D8%A7%D8%B3%DA%A9%D9%86%D8%A7%D8%B3-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D9%85%DB%8C%D8%B4%D9%88%D9%86%D8%AF-mhaaczbmhlmj</link>
                <description>برنامه نویسی شاید یک مهارت لذت بخش باشد، اما زمانی تبدیل به یک مهارت شگفت انگیز و فوق العاده می‌شود که کدهای نوشته شده بتوانند حساب بانکی یا کیف پول ما را پر کنند.کدها به روش های مختلفی به اسکناس تبدیل می‌شوند که البته این روش ها کم هم نیستند. در این نوشته در مورد این روش ها صحبت خواهیم کرد. قابل ذکر است که روش های عنوان شده تنها حالت های موجود نیستند. تدریسآموزش یکی از روش های فوق العاده برای کسب درآمد از طریق برنامه نویسی است که توجه زیادی به آن نمی‌شود. البته همچنان به نظر من آموزش باید برای تمام اقشار جامعه رایگان، در دسترس و قابل اعتماد باشد، اما این موضوع جزو وظایف دولت ها می‌باشد. آموزش برنامه نویسی با اختلاف ساده ترین راه کسب درآمد از این مهارت است. حتی یک برنامه نویس تازه کار که می‌خواهد در ابتدای مسیر خود کسب درآمد داشته باشد نیز می‌تواند از این روش استفاده کند. البته داشتن وجدان آموزشی برای هر معلمی لازم است :)روش های زیادی برای کسب درآمد از طریق آموزش برنامه نویسی وجود دارد. به چند مورد در زیر اشاره شده است:برگزاری کلاس های آموزشیاین روش شاید ساده ترین راه برای کسب درآمد از طریق آموزش برنامه نویسی باشد. اگر شما یک معلم گمنام باشید می‌توانید از طریق همکاری با یک واحد آموزشی بدون اینکه نگران ثبت نام افراد باشید، اجازه دهید نوشتن کد برای شما کسب درآمد کند. از سوی دیگر اگر افراد زیادی شما را به عنوان مدرس می‌شناسند احتمالا نیازی به همکاری با واحدهای آموزشی را نخواهید داشت، مخصوصا در این شرایط برگزاری کلاس های آنلاین در بسترهای موجود راه حل مناسبی خواهد بود. در صورتی که تازه کار هستید و تمایلی به همکاری با واحدهای آموزشی دیگر را ندارید، تنها مشکل شما پیدا کردن اولین دانشجو خواهد بود. ذکر این نکته را لازم می‌دانم که اگر صلاحیت تدریس را در خود نمی‌بینید فقط برای کسب درآمد وارد این فضا نشوید. شاید هیچگاه هیچکدام از دانشجویان شما متوجه این امر نشوند اما انتقال اطلاعات اشتباه مشکلات زیادی را برای جامعه برنامه نویسان ایجاد خواهد کرد.یوتیوبکسب درآمد از این روش اصلا آسان نیست اما در صورتی که اشتیاق و صبوری کافی را داشته باشید می‌تواند حتی به رتبه اول درآمد شما تبدیل شود. آسان نیست به دلیل اینکه برای شروع کسب درآمد از طریق یوتیوب شما باید چند شرط لازم، از جمله داشتن تعداد کافی دنبال کننده و تماشای ویدئو را داشته باشید که شاید در مراحل ابتدایی راحت بدست نیاید. بعد از کسب صلاحیت و شرایط لازم می‌توانید از طریق قرار دادن تبلیغ داخل ویدئوهای خودتان، مشارکت در فروش کسب و کارها و یا گرفتن اسپانسر درآمد داشته باشید. باز هم متذکر می‌شوم که این یک استراتژی بلند مدت برای کسب درآمد است، لطفا واقع بین باشید :)ساخت دوره های آموزشیهیچ چیز شیرین تر از بازنشر دانش نیست. نخستین گام در این روش انتخاب موضوع است، موضوعی که فکر می‌کنید در آن مهارت دارید یا علاقه دارید. البته این نکته را در نظر بگیرید که موضوعی را انتخاب کنید که محبوب باشد تا بتوانید مخاطبان بیشتری برای دوره خود پیدا کنید. البته افزایش مخاطبان دوره به کیفیت و خلاقیت در آموزش هم ارتباط زیادی دارد. سعی کنید دوره شما چیزی اضافه تر از بقیه داشته باشد مانند روشی برای پرسش و پاسخ دانشجویان دوره. اهمیت این روش زمانی مشخص می‌شود که به سیستم آموزشی کشور دقت کنیم. به دلیل قدیمی بودن این سیستم و مقاومت در مقابل انتشار آزاد اطلاعات، افراد برای کسب یک مهارت مفید مجبور هستند از دوره های آموزشی خصوصی استفاده کنند. برای انتشار این دوره ها می‌توانید از سایت های مختلف داخلی (چند روز پیش با چسبون آشنا شدم) و خارجی (Udemy) استفاده کنید. یک روش دیگر هم ساخت وب سایت شخصی برای فروش دوره ها می‌باشد. با دید بلند مدت این روش حتی می‌توانید به عنوان یک استارتاپ هم در نظر گرفته شود. در ضمن حضور شما در شبکه های اجتماعی لازم و مهم خواهد بود. شما در این شبکه ها می‌توانید مخاطبان دوره خود را به راحتی پیدا کنید.این ها فقط مثال هایی برای کسب درآمد از این طریق آموزش برنامه نویسی بود. قطعا روش های دیگری نیز وجود خواهد داشت.وبلاگ نویسیوبلاگ نویسی یکی دیگر از روش های دست کم گرفته شده برای کسب درآمد از برنامه نویسی است. البته برای این روش در ابتدا باید نویسنده خوبی باشید یا حداقل سابقه نوشتن داشته باشید. در صورتی که این مهارت را ندارید نیاز به تمرین و صبوری دارید. مهارتی وجود ندارد که قابل یادگیری نباشد. در ادامه به نحوه کسب درآمد از این روش خواهیم پرداخت.مشارکت در فروشاگر مخاطبانی دارید که شما را دنبال می‌کنند، می‌توانید با معرفی یک دوره آموزشی، یک کتاب و یا هر محصول دیگر در سود فروش آن سهیم باشید. برای این کار باید به دنبال صاحب یا صاحبلن این محصولات باشید تا بتوانید در مورد روش همکاری و سهم شما از فروش با آنها مذاکره کنید. هرگز بدون هماهنگی با این افراد اقدام به فروش محصولات آن ها نکنید. شاید در کشور ما قانونی به اسم حق فروش و یا کپی رایت وجود نداشته باشد، اما این کار قطعا غیراخلاقی خواهد بود.در صورتی که در انتخاب های خود باهوش باشید این روش، بدون دردسر، درآمد بسیار زیادی برای شما خواهد داشت.وبلاگ نویسی سفارشیافرادی هستند که نیاز به یک نوشته برای انتشار دارند، اما به دلیل نداشتن این مهارت قادر به انجام آن نیستند. این نقطه جایی است که شما می‌توانید وارد شوید. البته برای این کار شما باید در این زمینه شناخته شده باشید تا بتوانید اعتماد افراد برای سپردن این وظیفه به شما را جلب کنید.در وبلاگ نویسی سفارشی شما باید اندیشه ها و عقاید خود را کنار بگذارید و همان چیزی را بنویسید که کارفرما می‌خواهد. اگر طرفدار آزادی بیان و اندیشه هستید شاید این روش مناسبی برای شما نباشد :)درآمد دوره اییکی دیگر از روش های کسب درآمد از طریق وبلاگ نویسی دریافت حق اشتراک هفتگی، ماهیانه و یا سالیانه از مخاطبان برای دسترسی به محتوای نوشته ها است. در این روش شما باید نوشته های تخصصی، مستند و معتبر تولید کرده باشید تا مخاطبان تشویق به پرداخت هزینه برای خواندن نوشته های شما باشند. در این روش هم می‌توانید به راه اندازی وبلاگ شخصی فکر کنید، هم می‌توانید از طریق همکاری با سرویس های ایرانی و خارجی به درآمد دست پیدا کنید.در آخر باید اضافه کنم وبلاگ نویسی حوزه بسیار وسیعی است و فقط به برنامه نویسی یا تکنولوژی محدود نخواهد شد. پس اگر ذهن کنجکاو و خلاقی دارید و نمی‌خواهید فقط به برنامه نویسی مشغول باشید این روش مناسبی برای شما خواهد بود تا در مورد هرچیزی که دوست دارید بنویسید و مروج علم باشید. فراموش نکنید صبوری شما را به مقصد خواهد رساند. برنامه نویسی آزاداین روش شاید محبوب ترین نوع کسب درآمد بین برنامه نویسان باشد و البته بسیار سودآور. از ساخت یک وب سایت و اپلیکیشن ساده تا یک وب سایت و اپلیکیشن حرفه ای شما می‌توانید با پیدا کردن نیازها، کسب درآمد کنید. در نظر داشته باشید که اگر این فضا را درست نشناسید و بدون دید شفاف وارد شوید قطعا دچار مشکلات زیادی خواهد شد. با هم نگاهی به مزایای برنامه نویسی آزاد بندازیم:هر زمان و هر جایی که مایل باشید می‌توانید کار کنید.هزینه ها توسط خود شما مدیریت می‌شود.در این روش به صورت خویش فرما کار می‌کنید، رئیس شما هستید.اگر مشتری کافی داشته باشید، می‌توانید پروژه های جدید و یا پروژه هایی که علاقه مند نیستید را رد کنید.محدودیتی برای درآمد شما وجود ندارد. و اما معایب برنامه نویسی آزاد چیست؟احتمالا برای شروع باید به انجام کارهایی راضی شوید که درآمد بالایی ندارد.گرفتن اولین کار بسیار سخت خواهد بود، مخصوصا در صورتی که برنامه نویس تازه کار باشید و تجربه ای نداشته باشید.امنیت شغلی خاصی برای این نوع کار کردن وجود ندارد.پیدا کردن تعادل بین کار و زندگی بسیار سخت خواهد بود. اگر نتوانید بین زندگی شخصی و زندگی کاری خود توازن ایجاد کنید احتمالا خیلی زود خسته خواهید شد. البته اطرافیان و افراد خانواده نیز قطعا به شما شکایت خواهند کرد :)درآمد شما دارای نوسان خواهد بود. ممکن است یک ماه کدها با شما دوست باشند و ماه بعد مجبور باشید از پس انداز خود استفاده کنید.همانطور که می‌بینید مزایای شگفت انگیز و معایب بزرگی برای این نوع کار وجود دارد. اما اگر بتوانید شرایط را مدیریت کنید احتمالا درآمد چشمگیری خواهید داشت. برای شروع بهتر است یک وب سایت شخصی داشته باشید، این یک گام مهم است برای جلب نظر مشتریان. همچنین باز هم حضور در شبکه های اجتماعی و شبکه سازی بسیار مهم است. سعی کنید با افراد دیگر ارتباط برقرار کنید. متاسفانه در چند سال اخیر هر کسی که آموزش دیده تا یک متغییر تعریف کند دوست دارد به صورت آزاد کار کند و ورود این افراد باعث شده است هم فضای این محیط خراب شود و هم اکثر کارفرمایان تمایلی به کار در این حوزه نداشته باشند، اما اگر شرایط کار با خارج از ایران را دارید پیشنهاد می‌کنم به freelancer.com و Upwork یا Fiverr نگاهی بیاندازید.باز هم تاکید می‌کنم قبل از ورود به این مسیر شغلی حتما اطلاعات دقیقی داشته باشید. برای کسب اطلاعات کامل می‌توانید این ویدئو را تماشا کنید.کار تمام وقت یا ثابتمتداول ترین نوع کار کردن به عنوان برنامه نویس همین روش می‌باشد. اگر دنبال ثبات و مزایایی مثل بیمه هستید احتمالا این روش برای شما مناسب است. البته به دلیل شرایط اخیر اقتصادی و اجتماعی این روش مثل قبل کم خطر یا بی خطر نیست و ممکن است خیلی راحت شغل خود را از دست بدهید :)برای اینکه اولین شغل ثابت خود را پیدا کنید احتمالا باید مراحل زیر را طی کنید:یادگیری مهارت های تخصصی برنامه نویسیساخت یک رزومه یا وب سایت شخصی مناسب و حرفه ایارسال روزمه خود به شرکت های مختلف که دنبال تخصص شما هستندسربلند شدن در مصاحبه احتمالی :)مزایای این روش کسب درآمد فقط امنیت شغلی نیست (اگر امنیت شغلی وجود داشته باشد).لازم نیست هر روز به دنبال مشتریان جدید بگردید. شرکت این کار را انجام خواهد داد.شما در یک تیم کار خواهید کرد. برنامه نویسی که عضوی از یک تیم یا شبکه نباشد و با دیگر برنامه نویسان هیچ ارتباطی نداشته باشد خیلی نمی‌تواند در این حوزه عمر کند.حقوق منظم و به موقع رویای خیلی از افراد است.و اما معایب این روش مسیر شغلی را با هم بررسی کنیم.ماجراجویی و خلاقیت خود را فراموش کنید. ماهیت این نوع کسب درآمد روزمرگی است. همچنین وقت کافی برای رویاپردازی نخواهید داشت.شما رئیس نیستید :)به دلیل ریسک کمتر، هرچه برنامه نویس سن بیشتری داشته باشد ناخودآگاه بیشتر به این نوع فعالیت جذب خواهد شد. اگر فکر می‌کنید برای این نوع کار مناسب هستید، به افرادی که می‌گویند کار وجود ندارد توجه نکنید. اگر درگیر این موضوع شوید خواهید فهمید کار وجود دارد، برعکس کسی نیست تا این همه کار را انجام دهد. استارتاپ خود را راه بیندازیداین روزها همه از استارتاپ شخصی حرف می‌زنند، شما چطور؟ :)اگر به دنبال راه اندازی کسب و کار هستید سعی نکنید کارهایی که بقیه انجام داده اند را به امید موفقیت تکرار کنید. اکثر افرادی که ایده ساخت یک کسب و کار را دارند، منظورشان چیزی شبیه دیجیکالا است. دنبال ایده های نو باشید. هنوز راه زیادی باقیمانده که بتوانید طی کنید. وقتی از هنری فورد پرسیدند اگر مدیریت خودرو سازی فورد را از دست بدهی چه کار خواهی کرد؟ پاسخ داد:یک مشکل دیگر از زندگی مردم را پیدا می‌کنم و سعی می‌کنم آن را رفع کنم.راه اندازی کسب و کار ریسک بسیار بالایی دارد. پس اگر انسان ریسک پذیری نیستید احتمالا خیلی زود از قدم زدن در این راه پشیمان خواهید شد. با خودتان صادق باشید و فریب زرق و برق افرادی که می‌خواهند یک شبه شما را ثروتمند کنند نخورید.احتمالا کسب و کار شما فقط در یک حالت موفق خواهد شد، اما ممکن است در هزاران صورت شکست بخورید. هر کاری را با دانش کامل شروع کنید.در این روش هم شما درآمد ثابتی نخواهید داشت. باید بتوانید نوسان های درآمدی را مدیریت کنید.با همه این حرف ها، در ذهن داشته باشید اگر بتوانید موفق شوید این مسیر شغلی، سودآوری بالایی برای شما خواهد داشت.صنعت فناوری و تکنولوژی فرصت ها و ظرفیت های بسیاری برای کار دارد. فکر فروشگاه اینترنتی را از سر خارج کنید تا بتوانید این فرصت ها را ببینید. همانطور که گفتم به دنبال حل مشکلات و نیاز ها باشید. موفقیت شما در گرو تلاش خود شماست. اگر فکر می‌کنید در راه اندازی یک کسب و کار موفق خواهید بود حتما این اتفاق خواهد افتاد.فروش کتاب الکترونیکیبرای نگارش یک کتاب نیاز به درک عمیقی از موضوع است. اگر فقط مسائل سطحی و ابتدایی را می‌دانید نوشتن کتاب را فراموش کنید. کتاب شما باید ارزش خرید را داشته باشد. از ذکر مسائل تکراری و دست دوم خودداری کنید. در این صورت می‌توانید درآمد خوبی از این راه داشته باشید. در نگارش یک کتاب این نکات را به خاطر داشته باشید:کتابی بنویسید که خود شما به عنوان یک خواننده از خواندن آن لذت ببرید.لطفا مطالب دیگران را به نام خود منتشر نکنید. در نوشته خود صداقت داشته باشید.بازاریابی برای فروش کتاب خود را فراموش نکنید.بسترهای زیادی مانند فیدیبو برای فروش کتاب های الکترونیکی وجود دارد که می‌توانید با آنها همکاری کنید.کلام آخراین ها تنها چند روش ابتدایی برای کسب درآمد از طریق برنامه نویسی بودند. روش های جدیدی مانند تولید پادکست و ... نیز وجود دارند که جای پیشرفت زیادی دارند. این شما هستید که باید متناسب با شخصیت و سبک زندگی خود مسیر شغلی مناسب را پیدا کنید. برنامه نویسی مهارتی است که می‌تواند زندگی شما را متحول کند به شرطی که واقع بین باشید.در انتهای کلام ذکر این نکته را لازم می‌دانم که همه چیز پول و کسب درآمد نیست. این نکته ای است که برنامه نویس های کراوات زده رعایت نمی‌کنند :)در مرحله اول سعی کنید به سهم خود دنیا را جای بهتری برای زندگی کنید و تاثیری مثبت، هرچند کوچک داشته باشید. نبود وجدان کاری در هر کدام این روش ها عواقب خطرناکی برای جامعه برنامه نویسان ایرانی خواهد داشت. اگر شما هم روش دیگری را برای کسب درآمد از طریق برنامه نویسی می‌شناسید لطفا در قسمت نظرات یادداشت کنید.این نوشته برداشتی آزاد بود از نوشته ای با عنوان How To Make An Income From Coding.</description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Fri, 04 Dec 2020 19:32:59 +0330</pubDate>
            </item>
                    <item>
                <title>تطبیق پذیری رشته های عصبی و یادگیری برنامه نویسی</title>
                <link>https://virgool.io/coderlife/%D8%AA%D8%B7%D8%A8%DB%8C%D9%82-%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C-%D8%B1%D8%B4%D8%AA%D9%87-%D9%87%D8%A7%DB%8C-%D8%B9%D8%B5%D8%A8%DB%8C-%D9%88-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-v4dq1zf6fz3z</link>
                <description>اگر در حال یادگیری یک زبان برنامه نویسی هستید احتمالا درک مفهومی به نام انعطاف پذیری عصبی و همچنین آشنایی با حافظه بلند مدت، کمک زیادی به شما خواهد کرد.Photo by Chris Riedاحتمالا روش های زیادی را برای یادگیری یک زبان برنامه نویسی امتحان کرده اید. شاید کتاب یا دوره ای به نام ترفندهای برنامه نویسی با زبان پایتون را تهیه کرده باشید تا به کمک آن مهارت خود را بالا ببرید. متاسفانه اگر یک برنامه نویس تازه کار هستید این روش ها زیاد مفید نخواهد بود. در حقیقت هیچ میانبری وجود ندارد. تا زمانی که روش یادگیری و به خاطر سپردن آموخته های خود را بهینه نکنید هر لحظه این امکان وجود دارد که از ادامه مسیر منصرف شوید و مسیر دیگری را انتخاب نمایید.اما چطور قادر به انجام این کار خواهیم بود؟ زمانی که با آخرین یافته های متخصصین مغز و اعصاب در مورد یادگیری، آموزش و حافظه همراه شویم، خواهیم آموخت که این یافته ها چطور به ما کمک می‌کنند تا روش های بهتری را برای یادگیری انتخاب کنیم.در این نوشته با ۲ مفهوم یادگیری و حافظه بیشتر آشنا خواهیم شد و در ادامه می‌آموزیم چطور از این دانش در زندگی روزمره و به طور خاص برای بالا بردن مهارت برنامه نویسی خود استفاده کنیم. پس ادامه نوشته را از دست ندهید.یادگیری چیست؟ چطور یک مهارت را یاد می‌گیریم؟یادگیری تغییر و انطباق مغز با یک چیز جدید است. برای مثال وقتی در حال یادگیری زبان برنامه نویسی پایتون هستید، مغز به صورت فیزیکی در حال تغییر شکل برای جذب اطلاعات جدید است. این پدیده انعطاف پذیری عصبی نامیده می‌شود:توانایی مغز برای ساختن ارتباطات جدید بین رشته های عصبی و سازماندهی مجدد آن ها به دلیل کسب تجربیات و اطلاعات جدید.هر زمانی که شما موضوع جدیدی را یاد می‌گیرید، مغز به جهت تطبیق خود با اطلاعات جدید دریافت شده شروع به ساخت ارتباطات جدیدی بین رشته های عصبی خواهد کرد. هرچه این ارتباط های عصبی بیشتر باشد انجام آن مهارت برای فرد راحت تر خواهد بود.تصویر زیر نشان می‌دهد چطور ارتباط بین رشته های عصبی یک نوزاد با یادگیری موضوعات جدید رشد خواهد کرد. این تصویر علاوه بر مجسم سازی نحوه عملکرد انعطاف پذیری عصبی، نشان می‌دهد به چه دلیل برنامه نویسی در ابتدا بسیار دشوار است ولی با گذر زمان راحت تر خواهد شد!چگونه یادگیری بر مغز تأثیر می‌گذارد: نمونه رشد عصبیهمانطور که مشاهده می‌کنید روند رشد ارتباطات عصبی بسیار کند است. سال ها تمرین برای ماهر شدن در هر مهارتی لازم است. فهم این موضوع به مدیریت سطح انتظارات از خودمان کمک خواهد کرد. حالا می‌دانیم data scientist شدن چندین سال زمان نیاز دارد! رشد رشته های عصبی با مدت زمانی که شما برای هر مهارت تمرین می‌کنید ارتباط مستقیم دارد. هرچه مدت زمان بیشتری برای مهارت برنامه نویسی صرف کنید زودتر و سریع تر می‌توانید آن را تقویت کنید. تکرار نقش اساسی را در یادگیری برنامه نویسی خواهد داشت.به حافظه خود مسلط شویدهمانطور که می‌دانید فقط یک نوع حافظه وجود ندارد. به عنوان مثال حافظه کوتاه مدت و حافظه بلند مدت. هر کدام از این انواع حافظه در مناطق مختلفی از مغز قرار گرفته اند. مهارت هایی که در حافظه کوتاه مدت قرار میگیرند با مهارت هایی که در حافظه بلند مدت قرار دارند در یک مکان ذخیره نمی‌شوند. پس می‌شود نتیجه گرفت تنها یک روش برای یادگیری همه چیز موثر نخواهد بود. چون مهارت برنامه نویسی باید در حافظه بلند مدت ذخیره شود در زیر ۴ راهکار برای افزایش قدرت یادگیری و تقویت حافظه بلند مدت مطرح شده است. به عبارت دیگر توسط این راهکارها شما قادر خواهید بود رشته های عصبی بیشتری در مغز خود بسازید :)تمرین و تکرارتکرار شانس انتقال اطلاعات از حافظه کوتاه مدت به بلند مدت را بیشتر می‌کند. متخصصین مغز و اعصاب می‌گویند هرچه تعداد تمرین و تکرار بیشتر باشد توانایی نگهداری دانش نیز بیشتر می‌شود. اگرچه تکرار تنها چند خط کد ثابت برای یادگیری برنامه نویسی به آن زبان مفید نخواهد بود :)افزایش فواصل زمانی بین یادگیری یک موضوعمحققان می‌گویند افزایش فواصل زمانی بین جلسات مطالعه یک موضوع، توانایی شخص در به یادآوری اطلاعات جدید را بیشتر می‌کند. با تکرار این کار و افزایش فواصل، اطلاعات مدت زمان بیشتری در حافظه شما باقی خواهد ماند. وقتی دانسته های یک بخش تثبیت شد به سراغ موضوعات جدید بروید. به همین دلیل است که مطالعه شب امتحان برای یادگیری یک موضوع مفید نخواهد بود. در ادامه توضیحات بیشتری در مورد این بخش داده خواهد شد.آموزش عمیقهرچه مغز اطلاعات جدید را عمیق تر پردازش کند شانس به خاطر سپردن بیشتر می‌شود. به عنوان مثال فرض کنید در حال یادگیری زبان انگلیسی هستید. فکر کردن به یک کلمه جدید و ساختن تصویر ذهنی مربوط به آن کلمه از تکرار چندباره آن کلمه در ذهن مفیدتر خواهد بود. برای مثل فرض کنید می‌خواهید ترجمه کلمه پایتون را به خاطر بسپارید. فکر کردن به حمله یک مار بزرگ و تهدید آمیز از تکرار ساده کلمه مار در ذهن موثرتر خواهد بود :)پرهیز از تداخل یادگیریبه طور کلی دو مدل تداخل یادگیری وجود دارد: پیشین و پسین. تداخل پیشین یا فعال وقتی اتفاق می‌افتد که چیزی که قبلاً یاد گرفته اید بر آنچه بعداً یاد می‌گیرید تأثیر بگذارد. به عنوان مثال ممکن است مطالعه امروز شما برای قبول شدن در آزمون رانندگی با مطالعه فردای شما برای یادگیری زبان برنامه نویسی پایتون تداخل ایجاد کند. متقابلا، تداخل پسین زمانی اتفاق می‌افتد که یادگیری بعدی روی چیزهایی که قبلاً یاد گرفته اید تأثیر می‌گذارد. اگر شما در حال مطالعه برای آزمون رانندگی خود هستید احتمالا در  به یادآوری اطلاعات دوره آموزشی پایتون که هفته پیش دیده اید به مشکل خواهید خورد. تداخل آموزشی مخصوصا برای یادگیری برنامه نویسی گاهاً از عدم تمرین و تکرار هم مضرتر خواهد بود. چند کار را با هم انجام ندهید. این استراتژی برای یادگیری برنامه نویسی مفید نخواهد بود.وقت استفاده از مطالب مطرح شده رسید :)اکنون که می‌دانید یادگیری و حافظه چطور کار می‌کنند وقت آن رسیده است تا با معرفی چند روش، مهارت برنامه نویسی خودمان را تقویت کنیم.شیرجه عمیقیک زبان برنامه نویسی را انتخاب کنید و با آن زندگی کنید. هیچ زبانی از یک زبان دیگر پولساز تر و بهتر نیست. همزمان دو یا چند زبان را یاد نگیرید. اگر پایتون را انتخاب کرده اید با آن زندگی کنید تا در این زبان ماهر شوید. اخبار و مقالات دنیای پایتون را دنبال کنید. چرا محققین علوم داده پایتون را ترجیح می‌دهند؟ چه کتابخانه هایی از این زبان وجود دارد؟ سعی کنید یک بلاگ در مورد برنامه نویسی پایتون پیدا کنید و مطالب آن را دنبال کنید. در مورد افرادی که با این زبان کار می‌کنند جستجو کنید. حتی اگر برایتان مقدور است با این افراد در تعامل باشید. از ارتباط با انسان های جدید نترسید.فواصل زمانی مطالعه خود را افزایش دهیدیادگیری تکنیک افزایش فواصل زمانی بسیار مفید خواهد بود. این ویدئو بسیار دقیق و عالی در مورد این تکنیک صحبت خواهد کرد. فیلترشکن خود را روشن کنید :)به یاد داشته باشید هرچه بیشتر فراموش کنید مغز شما تلاش بیشتری برای به یادآوردن اطلاعات خواهد کرد. تلاش بیشتر مغز یعنی ساخت بیشتر پل های ارتباطی بین رشته های عصبی. در نتیجه در دفعات بعدی مطالب را راحت تر به خاطر می‌آورید.مدیریت انتظاراتخودتان را دست کم نگیرید اما انتظار نابجا نداشته باشید. این یک تکنیک مربوط به یادگیری و حافظه نیست اما داشتن آگاهی صحیح از سطح فعلی خود و همچنین تصویری روشن از هدف باعث می‌شود واقع بین باشید و پس از گذشت چند هفته دلسرد و ناامید نشوید. ضمنا اشتباهات در طول مسیر برایتان گران تمام نخواهد شد. آگاهی از سطح واقعی باعث می‌شود با افرادی در تماس باشید که همفکر شما هستند و همین موضوع باعث انعطاف پذیری عصبی شما خواهد شد زیرا مغز شما سعی می‌کند با محیط و شرایط جدید سازگار شود.کلام آخردیدیم که می‌توانیم با استفاده از یافته های جدید پزشکی مهارت برنامه نویسی خود را تقویت کنیم. از سویی با اینکه انعطاف پذیری عصبی کلید یادگیری و کسب دانش است اما یک روند بسیار آهسته دارد و به تمرین زیاد و مداوم نیاز دارد. از سوی دیگر تلاش برای یادگیری چند موضوع به صورت همزمان نتیجه مطلوبی نخواهد داشت. وقت را هدر ندهید. با استفاده از تکنیک زیاد کردن فواصل زمانی و کم کردن تداخلات آموزشی به حافظه بلند مدت خود مسلط شوید. از دیدگاه علوم اعصاب پیشرفت های کوچک ولی روزانه و مداوم، کلید اصلی افزایش مهارت در برنامه نویسی است.منابعBear, M., Connors, B., &amp; Paradiso, M. A. (2020). Neuroscience: Exploring the brain. Jones &amp; Bartlett Learning, LLC.https://hopes.stanford.edu/neuroplasticityPirolli, P. L., &amp; Anderson, J. R. (1985). The role of practice in fact retrieval. Journal of experimental psychology: Learning, memory, and cognition, 11(1), 136.Bahrick, H. P. (1979). Maintenance of knowledge: Questions about memory we forgot to ask. Journal of Experimental Psychology: General, 108(3), 296.Craik, F. I., &amp; Tulving, E. (1975). Depth of processing and the retention of words in episodic memory. Journal of experimental Psychology: general, 104(3), 268.MT, E. M. K. (2015). Cognitive Psychology: A Student’s Handbook 7th Edition, London and New York.Underwood, B. J. (1957). Interference and forgetting. Psychological review, 64(1), 49.Baddeley, A. D. (1997). Human memory: Theory and practice. psychology press.این نوشته برداشتی آزاد بود از How to Boost Your Coding Skills نوشته Renato Boemer. </description>
                <category>محمد کاظمی راز</category>
                <author>محمد کاظمی راز</author>
                <pubDate>Mon, 23 Nov 2020 03:00:20 +0330</pubDate>
            </item>
            </channel>
</rss>