<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های bshadmehr76</title>
        <link>https://virgool.io/feed/@bshadmehr76</link>
        <description>بهمن هستم. میتونید مرد مرده صدام کنید. یه برنامه نویس سادم که عاشق کسب و کارهاشه.</description>
        <language>fa</language>
        <pubDate>2026-06-18 05:04:58</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/81980/avatar/1f2J1N.png?height=120&amp;width=120</url>
            <title>bshadmehr76</title>
            <link>https://virgool.io/@bshadmehr76</link>
        </image>

                    <item>
                <title>دیزاین پترن ها در پایتون - پیش نیازها - قسمت 1</title>
                <link>https://virgool.io/zalcademy/%D8%AF%DB%8C%D8%B2%D8%A7%DB%8C%D9%86-%D9%BE%D8%AA%D8%B1%D9%86-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%BE%DB%8C%D8%B4-%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-1-uoffhqumsqgu</link>
                <description>توی حالت کلی،‌ interface ها به ما این قابلیت رو میدن که ما خودمون رو از شر وابستگی به یک کلاس خاص رها کنیم و صرفا وابستگی رو به متدهاشون و پراپرتی هاشون نگه داریم. حالا منظور من چیه؟فرض کنید که شما لپ تاپ خریداری کردید. بعد از مدتی باتری لپ تاپ شما میسوزه. با کارخانه تماس میگیرید و کارخانه به شما میگه متاسفانه لپ تاپی که خریداری کردید فقط با همون یک باتری کار میکنه و هیچ باتری دیگه ای رو نمیشه براش جا گذاری کرد. معنیش چیه؟ معنیش اینه که لپ تاپ شما به اون باتری وابستگی شدید داشته. ولی توی دنیای واقعی این شکلی نیست درسته؟توی دنیای واقعی وابستگی لپ تاپ شما به نحوه ی ورود شارژ از باتری به لپ تاپ و میزان ورود شارژ و شکل باتری هستش. پس تا وقتی که شما بتونید باتری مناسب دیگه ای پیدا کنید که این سه مورد رو به شکلی که شما میخواهید داشته باشه،‌ هیچ مشکلی براتون ایجاد نمیشه.دقیقا به همین علت هستش که توی برنامه نویسی ما لازم داریم از interface ها استفاده کنیم. با استفاده از این کار عملا ما مشخص میکنیم که این کد من برای کار کردن به این مقادیر و این متد ها احتیاج داره. حالا ممکنه از روی اون اینترفیس شما چندین کلاس ایجاد کنید.خب. پیاده سازی اینترفیس توی زبان هایی مثل جاوا خیلی راحته. چون دقیقا مفهومی به اسم اینترفیس وجود داره ولی توی پایتون چجوری میشه اون رو پیاده سازی کرد؟برای ساخت اینترفیس ها در پایتون، ما باید یه سری کلاس ابسترکت ایجاد کنیم. برای اینکار میتونیم از کلاس ABC یا همون abstract base class استفاده کنیم. این کلاس ها به کلاس هایی گفته میشه که کلاس های والدی که از اون ها ارث بری کردن حتما باید متدهاشون رو پیاده سازی کنن.به عنوان نمونه فرض کنید ما اپلیکیشینی داریم که قراره دیتا رو از منابع مختلفی دریافت کنه و اون رو در قالب فرمت خاصی در بیاره و به ما بر گردونه. ولی هر کدوم از منابع گفته شده دیتا رو توی فرمت خاصی به ما میدن. برای مثال اولین منبع دیتا رو به این شکل بر میگردونه:و دیتای دوم هم به شکل زیر:حالا تمام اطلاعاتی که ما از کاربر نیاز داریم اسم کاملش و سنش هست. خب این رو چجوری میشه پیاده سازی کرد؟اول از همه بیاید کلاس interface اون رو ایجاد کنیم:خب پس این میشه کلاس اینترفیس ما. حالا لازم داریم که از روی این کلاسمون دو کلاسی که قراره اطلاعات ما رو دریافت کنه رو پیاده سازی کنیم.خب تا اینجای کار، کاری که انجام دادیم به نظر ساده میاد. نمیتونستیم همین رو بدون استفاده از ابسترکت کلاس ایجاد کنیم؟ بیاید با هم یه کلاس سوم بسازیم و این بار متد fetchData رو داخلش ایجاد نکنیم.بعد یه ابجکت از روش بسازیم ببینیم چه اتفاقی میوفته:وقتی این کار رو بکنیم ارور زیر بهمون نمایش داده میشه. اینجاست که میتونیم بفهمیم مزیت استفاده از این کلاس چیه.TypeError: Can&#x27;t instantiate abstract class SourceThreeDataFetcher with abstract methods fetchDataکد نهایی:</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Fri, 02 Apr 2021 12:08:26 +0430</pubDate>
            </item>
                    <item>
                <title>برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت دوم)</title>
                <link>https://virgool.io/zalcademy/%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86-%DA%A9%D9%87-%D8%A8%D8%AA%D9%88%D9%86%DB%8C%D9%85-%D8%A8%D9%87-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86-%D8%A8%DA%AF%DB%8C%D9%85-senior-python-developer-%DA%86%D9%87-%DA%86%DB%8C%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%84%D8%AF-%D8%A8%D8%A7%D8%B4%DB%8C%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-mjm1qiuxlbl8</link>
                <description>خب، تا اینجای کار ما با موارد زیادی آشنا شدیم. ولی ممکنه از خودتون بپرسید که پس چجوری دانشی که تا اینجا یاد گرفتیم میتونه به ما برای نوشتن کدهای مربوط به بک اند یه اپلیکیشن کمک کنه. واقعیت اینه که چیزهایی که تا اینجا یاد گرفتیم یه جورایی حکم مقدمه رو داشتن. از اینجا ما قراره با نوشتن کدهای بک اندی آشنا بشیم.مسیر تبدیل شدن به برنامه نویس ارشد پایتونقبل از این که وارد فریمورک‌های پایتون که کارشون دولوپ کردن وب هست بشیم، بهتره که یه سری مفاهیم رو یاد بگیریم. این مفاهیم رو پایین براتون آوردیم:پروتوکول HTTP: پروتوکل http راهیه برای برقراری ارتباط بین کلاینت و سرور. هر بار که شما سایتی رو باز می‌کنید دارید از این پروتوکل استفاده می‌کنید. در این پروتوکل سیستم شما میشه کلاینت و سروری که کد های سایت مقصد روش قرار داره میشه سرور.معماری REST: این معماری به ما کمک میکنه که API های مناسب و اصولی تری رو ایجاد کنیم. در حقیقت با استفاده از این معماری میتونیم در مواقع مورد نیاز API هایی بنویسیم که آدرس های یکسان ولی فعل های مختلفی دارن. برای مثال آدرس API ما ممکنه zalcademy.ir/api/v1/courses باشه که در اون ما میتونیم فعل های GET - PUT - POST - DELETE رو صدا بزنیم.مفاهیم STATELESS و STATEFULL در بک اند: سرور STATELESS به سروری گفته میشه که در اون ما هیچ چیزی رو توی سرور ذخیره نمی‌کنیم. در اینجا منظورمون از چیز اطلاعات مرتبط با کاربر هستش. سرور STATEFULL به سروری گفته میشه که بعضی از اطلاعات کاربر رو ذخیره میکنه و هر بار که کاربر ریکوئستی رو صدا میزنه قبلش اطلاعات از قبل ذخیره شده مخصوص اون کاربر رو هم فراخوانی و پردازش می‌کنه.خب تا اینجای کار ما تقریبا مفاهیم اولیه و مورد نیاز رو یاد گرفتیم. حالا وقت اون رسیده که سراغ فریمورک های طراحی وب بریم. این فریمورک ها رو توی حالت کلی میشه به سه دسته تقسیم کرد:Full-Stack FrameworkMicroframeworkAsynchronous Frameworkتوی دسته ی اول ما فریمورک های Full-Stack رو داریم. این دسته از فریمورک ها تقریبا هر چیزی که ما نیاز داشته باشیم رو توی خودشون جا میدن. به همین خاطر برای استفاده ازشون نیازی نیست سراغ فریمورک‌های جانبی برید و تمام کارتون (یا حداقل بخش زیادی از اون) توسط خود این فریمورک‌ها راه میوفتن.بعد از اون Microframework ها قرار می‌گیرن. این فریمورک‌ها مقداری سبک تر از فریمورک های دسته ی قبل هستن و گاها برای استفاده از بعضی از امکانات باید از ابزارهای دیگه ای در کنارشون استفاده کرد. برای مثال میشه گفت Django به عنوان یه Full-Stack فریمورک درون خودش یه ORM جا داده ولی نمیشه چنین چیزی رو توی Microframework ها دید.در نهایت هم میرسیم به دسته بندی فریمورک های Asynchronous. مزیت این دسته از فریمورک ها اینه که به شما امکان قرار دادن ریکوئست های HTTP ای رو میدن که باعث بلاک شدن سرور شما نمیشه. معنی این چیه؟ فرض کنید که شما یه اپلیکیشن دارید که تعداد کاربران فعال بالایی داره. انقدر بالا که این امکان وجود داره که در یک لحضه و به صورت همزمان به سرور شما 1000 ریکوئست جدید زده بشه. اگه شما از یه فریمورک Asynchronous استفاده کرده باشید، برای این مورد به هیچ مشکلی نمیخورید.در ادامه با هم از هر دسته بندی یه فریمورک رو بررسی میکنیم:استفاده از فریمورک Django: این فریمورک در دسته بندی Full-Stack Framework قرار میگیره. علتش اینه که تقریبا هر چیزی که یه برنامه نویس ممکنه نیاز داشته باشه رو در خودش قرار داده. هدف این فریمورک اینه که برنامه نویس‌ها بتونن در کوتاه ترین زمان ممکن، بهترین اپ ها رو بسازن. امروزه حدود 12000 وبسایت از Django استفاده می‌کنن و این باعث شده Django یکی از معروفترین فریمورک‌های پایتون بشه.استفاده از فریمورک Flask: این فریمورک در دسته بندی Microframework قرار می‌گیره. شاید نتونه امکاناتی مثل امکانات جنگو رو به شما بده اما قطعا خیلی از نیازهای شما رو رفع می‌کنه.یه نکته‌ای که بد نیست ازش مطلع باشید اینه که شما توی بعضی از این فریمورک‌ها با چیزی به اسم Template Engine آشنا می‌شید. بهتره این مفهوم رو نسبتا خوب کار کنید چون این مفهوم توی زبان‌های دیگه هم استفاده می‌شه و در نهایت کار ما رو راحت تر می‌کنه.بعد از این که با این فریمورک‌ها آشنا شدید باید بدونید که به عنوان یه دولوپر فول استک نیاز دارید تا از تکنولوژی‌های کدنویسی سمت کاربر هم آشنا باشید. توی شروع باید بتونید کدهای ظاهر سایتتون رو بنویسید و در نهایت می‌تونید سراغ موارد پیشرفته تر برید. اینحا قصد داریم تا با هم تکولوژی‌هایی که نیاز دارید رو یاد بگیرید.دانش‌های مورد نیاز برای Web Design:HTMLCSSJavascriptjQueryResponsive DesignMinificationاز مواردی که بالا به شما گفتیم، میشه گفت که HTML و CSS برای طراحی صفحات وب استفاده میشن. Javascript و jQuery برای این استفاده میشن که بتونیم یه مقدار کد زنی و لاجیک به صفحاتمون اضافه کنیم. بعد از اون Responsive Design هست که دانشیه که برای طراحی صفحات مناسب برای هر صفحه‌ی نمایشی با هر اندازه‌ای استفاده میشه و minification روشی هست که برای کم کردن حجم کدهای ما و به طبع اون بهبود سرعت بارگذاری صفحات ما استفاده میشه.هر چند که یادگیری موارد بالا برای تبدیل شدن به یه Ful Stack لازمه اما کافی نیست. ما باید بتونیم با استفاده از فریمورک‌های UI ظاهرهای خیلی بهتری رو به وجود بیاریم. برای این کار، ما باید سراغ فریمورک‌هایی بریم که به بعضی هاشون پایین اشاره میکنیم:BootstrapFoundationقدم بعدی‌ما اینه که بتونیم از فریمورک‌های javascript هم استفاده کنیم. این کار می‌تونه به ما کمک کنه تا بعد از ساخت API هایی که با اون‌ها توی بخش‌های فریمورک‌های وب پایتون باید آشنا شده باشیم، بتونیم یه داشبورد، یه پنل کاربری و یا در حالت کلی سایتی با ظاهر و امکانات مناسب تری برای کاربرانمون بسازیم.بعضی از این فریمورک‌ها و توضیحات مختصری درباره‌ی اون‌ها رو در پایین برای شما آوردیم:کتابخانه‌ی React: کتابخانه ی react به شما کمک میکنه که با استفاده از المنت‌های تعبیه شده در JSX که شبیه به HTML هستش، UI مناسبی رو طراحی کنید. هرچند که لایبرری‌های مناسبی هم وجود داره که در صورت نیاز می‌تونید از اون‌ها استفاده کنید. این فریمورک به شکلی نوشته شده که موارد مورد نیاز شما رو در خودش جا نداده اما از اون سمت این قضیه باعث میشه که ما بتونیم برای هر کاری از ماژول مختلفی استفاده کنیم و اون رو به react خودمون اضافه کنیم. در حالت کلی react به شکلی نوشته شده که میتونید به راحتی هر چیزی که بهش نیاز دارید رو بهش اضافه کنید.کتابخونه‌ی Angular: این کتابخونه بر خلاف react هر چیزی که ما ممکنه بهش نیاز داشته باشیم رو در خودش جا داده. مزیتی که به ما میده اینه که میتونیم به ساده ترین شکل ممکن و سریعترین حالت ممکن در صورتی که قالب HTML و CSS ما آماده باشه داشبورد مورد نظرمون رو بالا بیاریم.هر چند که لایبرری‌های خیلی زیادی وجود داره اما ما دو تا از معتبر ترین‌هاش رو بالا به شما نشون دادیم.خب تا اینجای کار پیشرفت خوبی داشتید، فرض کنید ما با دانشی که تا اینجای کار یاد گرفتیم تصمیم گرفتیم یه فروشگاه اینترنتی رو راه اندازی کنیم. فروشگاهمون رو نوشتیم و تصمیم گرفتیم تا هر هفته یه ایمیل حاوی کد تخفیف به خریداران برترمون بفرستیم. برای حل کردن این مشکل چه راهی رو پیشنهاد می‌کنید؟شاید یه روشی که به ذهنتون بخوره اینه که بتونید یه داشبورد رو بسازید که آخر هر هفته صاحب فروشگاه بیاد و توی یه فیلد یه عدد انتخاب کنه به عنوان درصد تخفیف و در نهایت هم یه دکمه رو فشار بده که باعث شه یه کد تخفیف توی دیتابیس ذخیره شه و اون کد تخفیف برای همه ایمیل شه.بیاید یه مشکل دیگه رو هم در نظر بگیریم. فرض کنید بعد از این که خرید انجام شد قصد دارید یه کاتالوگ با فرمت PDF از کالاهای مشابه برای کاربرتون ارسال کنید و روش یه کد تخفیف بزنید. خب این یه مقدار پیچیده تر میشه درست می‌گم؟مبحث بعدی ای که دارید اینه که باید با ابزاری آشنا بشید که بهتون کمک میکنه این مشکل‌ها رو حل کنید. به ابزاری که برای این کارها ساخته شده، Task Queue گفته میشه. Task Queue ها ابزاری هستن که به ما کمک میکنن کارهایی که زمان بر هستن رو به ترتیب اجرا کنیم. به جز این، به ما یه مزیت دیگه هم میدن و اون اینه که کمک می‌کنن تا ما بتونیم توی زمان‌های خاصی، و یا با تکرار خاصی کاری رو انجام بدیم. با استفاده از ابزاری که پایین قراره ازشون اسم ببریم، می‌تونید مشکل‌هایی که بالا گفته شد رو حل کنید. علاوه بر مواردی که بالا بهشون اشاره شد، دلیل اصلی استفاده از این ابزارها این هستش که شما می‌خواید توی سریعترین زمان به کاربر سایتتون یه پاسخ بدید و بعضی از کارها رو بعد از این که پاسخی به کاربرتون ارسال کردید انجام بدید.برای مثال ممکنه بخواید به کاربرتون اس ام اس ارسال کنید و بگید که سفارشش با موفقیت ثبت شده. شما می‌تونید قبل از این که پاسخ رو به کاربرتون نمایش بدید، به Task Queue استفاده شده اعلام کنید که توی اولین فرصت برای کاربرتون یه اس ام اس ارسال کنه. بلافاصله هم میتونید پاسخی که قراره به کاربرتون نمایش بدید رو، به سمت کاربر ارسال کنید. تا اینجای کار ما چیزهای زیادی یاد گرفتیم که وجود بخش زیادیشون برای پروژه‌ی ما گاهی حتی حیاطی هستن. ولی طبیعتا این لیست ما هنوز تموم نشده.برای این که بتونید به ادامه ی قسمت‌ها دسترسی داشته باشید کافیه که مارو فالو کنید.</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Wed, 16 Dec 2020 00:00:46 +0330</pubDate>
            </item>
                    <item>
                <title>برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت اول)</title>
                <link>https://virgool.io/zalcademy/%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86-%DA%A9%D9%87-%D8%A8%D8%AA%D9%88%D9%86%DB%8C%D9%85-%D8%A8%D9%87-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86-%D8%A8%DA%AF%DB%8C%D9%85-senior-python-developer-%DA%86%D9%87-%DA%86%DB%8C%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%84%D8%AF-%D8%A8%D8%A7%D8%B4%DB%8C%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-hmzjzk71d4in</link>
                <description>حرفه ای شدن توی هر کاری نیاز  به زمان زیادی داره. طبق گفته ی کتاب از ما بهتران، نوشته ی مالکوم گلدون،  برای این که ما بتونیم توی چیزی حرفه ای بشیم نیازه تا حدود 10000 ساعت وقت  بذاریم. این مقدار وقت و انرژی تقریبا معادل چهار سال و نیم کار تمام وقت  میشه. ولی اگه الان به دور و بر خودتون نگاه کنید افرادی رو میبینید که توی  زمانی خیلی کمتر از 10000 ساعت تونستن توی مسیری تبدیل به یه شخص حرفه ای  بشن. انجام این کار اونقدرها هم سخت نیست. فقط کافیه که مسیر درست رو طی  کنید.توی این مقاله قصد  داریم با هم بررسی کنیم چه چیزهایی رو بازمه یاد بگیریم که بتونیم به  خودمون بگیم Senior Python Developer. تمرکز این مقاله قراره توی زمینه ی  بک اند باشه.Full Stack Python Pathقبل از هر چیز، شما نیاز دارید تا مفاهیم اولیه ی پایتون رو یاد بگیرید. این موارد شامل دسته بندی های زیر میشن:DataTypesSyntaxError HandlingIO OperationsOOPMultithreadingاینا  موارد ساده ای هستن که با یادگیریشون میتونین بخش های دیگه رو شروع کنین.  البته موارد پیشرفته تری هم وجود داره. از اون موارد میشه به Generator ها و  یا برای مثال Decorator ها اشاره کرد. ولی نیازی نیست حتما توی شروع با  این موارد آشنا باشید. قطعا اگه روش مناسبی برای یادگیری پیش ببرید و روی  پروژه های زیادی کار کنید، با این موارد آشنا خواهید شد.مورد  بعدی ای که میتونه توی یادگیری شما خیلی موثر باشه، ابزاری به اسم Git  هستش. گیت به شما این امکان رو میده تا کدهاتون رو توی پرژن های مختلف  داشته باشید، توی تیم چند نفره به صورت همزمان بتونید روی پروژه ها کار  کنید و خیلی امکانات زیاد دیگه ای.بعد  از یادگیری مباحث مقدماتی، شما میتونید کار با دیتا ها رو شروع کنید.  منظور ما از دیتا یادگیری ذخیره ی اطلاعات، خواندن اطلاعات از منابع مختلف  هستش. اول از همه باید یه منبع اطلاعات رو پیدا کنید. پیشنهاد ما اینجا دو  چیز هستش:فایل ها CSVفراخوانی API های مختلف و کار کردن با Jsonبعد  از این که تونستید با این منابع اطلاعاتی کار کنید میتونید برید سراغ  ذخیره سازی اون ها. برای ذخیره سازی اطلاعات هم باید از دیتابیس استفاده  کرد. در ادامه ما برای شما لیست انواع دیتابیس رو آماده کردیم. میتونید با  استفاده از این لیست به تفاوت انواع دیتابیس ها و دلیل استفادشون پی ببرید.اول  از همه ما به شما دیتابیس های Relational رو معرفی میکنیم. این نوع از  دیتابیس ها اطلاعات رو به صورت یه سری جدول ذخیره میکنن. ما میتونیم عنصر  های هر جدول رو به هم وصل کنیم. برای مثال فض کنید شما قراره یه دیتابیس  برای یه اپلیکیشن موبایل داشته باشید. توی این اپلیکیشن کاربران شما قراره  که بعد از ثبت نام، پست هایی رو به اشتراک بذارن. خب بیاید با هم یه طراحی  ساده برای دیتابیس این ادلیکیشن رو داشته باشیم:ما قراره چه نوع اطلاعاتی رو توی دیتابیسمون ذخیره کنیم؟کاربرانپست هاشونهر کدوم از این اطلاعات چه چیزهایی رو داخل خودشون باید جا بدن؟کاربر:شماره ی همراهنامنام خانوادگیتاریخ و زمان ثبت نامپست:عنوانمتنکاربرخب  همونطور که تا اینجا دیدیم، ما قراره که این دو دسته اطلاعات رو ذخیره  کنیم. این دسته از اطلاعات هم به هم مرتبط هستن. هر چند که این ارتباط  میتونه به شکل پیچیده تری باشه (ما در اینجا قصدمون آموزش طراحی دیتابیس  نیست). خب، تا اینجای کار ما مشخص کردیم که هر کدوم از جدول های ما قراره  چه اطلاعاتی رو ذخیره کنن. توی دیتابیس های Relational وقتی اطلاعات به  صورت جدول ذخیره میشن، هر ردیف میشه دیتای مد نظر ما و هر ستون میشه  اطلاعات اون ردیف ها. بذارید با هم یه جدول ساده ازشون رسم کنیم:جدول ذخیره سازی اطلاعات در دیتابیس کاربرجدول ذخیره سازی اطلاعات در دیتابیس پست هاخب همونطور که میتونید ببینید  ما در ابتدا اومدیم و جدول هامون رو ساختیم. بعد از اون هم به هر کدوم از  جدول ها یه سری دیتا اضافه کردیم. البته توجه کنید که این موارد تنها  کارهایی نیستن که شما توی یه دیتابیس میتونید انجام بدید. کارهایی مثل  Indexing، داشتن چند دیتابیس فعال به صورت همزمان روی سرور های مختلف و کلی  موارد پیشرفته تر هم هستن که میتونید توی دیتابیس ها یاد بگیرید. برای  یادگیری دیتابیس های Relational شما میتونید از دیتابیس های زیر استفاده  کنید که در پست های بعدی هر کدوم رو با جزییات بیشتری توضیح خواهیم داد.لیست دیتابیس های Relational که میتونید با اون ها شروع به کار کنید:SQLiteMySQLPostgreSQLوقتی  تونستید توی دیتابیس های Relational دانش کافی رو به دست بیارید،‌ میتونید  سراغ ابزاری به اسم ORM (Object Realtional Mappers) برید. ORM ها به شما  کمک میکنن تا برقراری ارتباط با دیتابیس رو راحت تر انجام بدید. از ORM های  معروف Peewee هستش.بعد از  اون میتونید به سراغ دیتابیس ها NoSQL برید. دیتابیس های NoSQL به دیتابیس  هایی گفته میشه که اطلاعات رو به شیوه ای غیر از دیتابیس های SQL ای ذخیره  میکنن. در حالت کلی میشه دیتابیس های NoSQL رو به چهار دسته بندی تقسیم  کرد. ما توی این مقاله قصد داریم شما رو با دو تا از اون ها آشنا کنیم و  دلایل استفاده از اون ها رو به شما بگیم.دسته بندی های دیتابیس های NoSQL:Key-Value PairDocument-OrientedColumn-Family TableGraphدیتابیس های Key-Value pair:این  نوع از دیتابیس ها اطلاعات رو به صورت یه کلید و مقدار اون کلید ذخیره  میکنن. فرض کنید شما یه دیتابیس دارید که داخلش به x مقدار 5 رو میدید.  البته انواع مختلفی از داده ها رو میشه به عنوان value به این دیتابیس ها  داد. یکی از دیتابیس های معروف Key-Value دیتابیسی به اسم Redis هستش.  استفاده از این دیتابیس وقتی اهمیت پیدا میکنه که ما می خوایم سرعت  اپلیکیشمون رو افزایش بدیم. و یا ممکنه بخوایم بعضی از اطلاعات رو برای مدت  موقتی ذخیره کنیم. اطلاعات این دیتابیس به جای این که توی حافظه ی دائمی  سیستم ما ذخیره بشن، توی ram ذخیره میشن و به همین دلیل سرعت بسیار بیشتری  نسبت به دیتابیس های SQL ای دارن. میشه گفت یادگیری این دیتابیس یکی از  لازمه های تبدیل شدن به یه برنامه نویس ارشد هستش.دیتابیس های Document-Oriented:همونطور  که میدونید امروزه دیتاهایی که توی اینترنت وجود داره قابلیت این رو نداره  که یه ساختار مشخص براشون در نظر گرفته بشه. فرض کنید شما تصمیم گرفتید  اطلاعات تمام کاربران همه ی سایت ها رو ذخیره کنید. یکی از سایت ها ممکنه  بیاد و 5 تا دیتا از کاربرانش بگیره. یکی دیگه از سایت ها ممکنه 10 تا  بگیره و این 10 تا کاملا با اطلاعات سایت اول متفاوت هستن. حالا این رو در  مقیاس خیلی بزرگتری در نظر بگیرید. برای مثال شما نیاز دارید تا اطلاعات  100 سایت مختلف رو داشته باشید.مزیت  اصلی دیتابیس های Document-Oriented اینه شما نیازی ندارید برای دیتاهاتون  ساختار مشخصی داشته باشید. نیازی به تعریف جدول نیستش. البته معمولا  میتونید بهشون ساختار بدید ولی این یه نیاز نیست.توی  این دسته بندی ما به شما دیتابیس MongoDB رو معرفی میکنیم. MongoDB  دیتابیسی هستش که میتونه اطلاعات رو توی حالتی شبیه Json ذخیره کنه، میتونه  همزمان روی چند سیستم اجرا بشه، با این مزیت در صورتی که یکی از سرورها به  مشکلی بخورن ما دیتامون رو از دست نمیدیم. هرچند که گاهی آپدیت هایی که  انجام میدیم و یا اطلاعاتی که توی دیتابیس اضافه میکنیم همیشه روی همه ی  دیتابیس ها ذخیره نمیشن (راهکارهایی برای پیشگیری وجود داره).دیتابیس های NoSQL زیادی وجود دارن که هر کدوم برای ما مزیت های خودشون رو دارن.در  انتها این ما هستیم که تصمیم میگیریم کدوم یکی از دیتابیس ها برای ما  مناسب هستش. ما باید بر اساس نیازی که داریم دیتابیس مناسب رو برای پروژه ی  خودمون انتخاب کنبم.</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Tue, 15 Dec 2020 23:05:31 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش زبان گو - قسمت اول - نصب</title>
                <link>https://virgool.io/@bshadmehr76/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-%DA%AF%D9%88-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-%D9%86%D8%B5%D8%A8-cbvewjinmt2t</link>
                <description>نصب یه زبونی مثل گولنگ میشه گفت که تقریبا کار راحتی هستش. البته همونطور که توی مقاله ی قبلی گفته بودم من یکی از مشکل هاش رو workspace اون میدونم و یکی دیگه از مشکلاتش رو هم package manager اون. ولی خب امروز با هم سعی میکنیم که این زبون شیرین رو نصب کنیم و با هم یه پروژه ی Hello World اجرا کنیم. فقط نکته ای که هست اینه که من این آمووزش رو برای لینوکس مینویسم.قدم اول:برای نصب گو، قدم اول دانلودشه. هر چند که میتونید از طریق پکیج منیجر ها هم نصبش رو انجام بدید ولی من دوست دارم دست هام رو خاکی کنم برای کار هایی مثل این.فایل گو رو میتونید از آدرس https://golang.org/dl/ دانلود کنید. بعد از دانلود از طریق ترمینال به جایی که دانلود کردید فایل رو برید و این دستور رو برای اکسترکت کردن فایل دانلودیتون بزنین:tar -C /usr/local -xzf go1.14.6.linux-amd64.tar.gzدقت کنید که اسم فایل ممکنه برای شما متفاوت باشه. این دستور میاد و محتویات گو رو برای شما جایی میریزه که بتونید بعد از اون بهش دسترسی داشته باشید.قسمت بعدی کار اینجاست که شما باید آدرس پوشه ی bin در گو رو به path خودتون اضافه کنید. اگه بخوام به صورت خلاصه معنی این کار رو بگم، میتونم بگم که با این کار شما میتونید بدون این که حتما برای استفاده از گو توی پوشه ی گو باشید، دستورش رو بزنید. برای این کار باید از دستور زیر استفاده کرد:export PATH=$PATH:/usr/local/go/binاگه با دستور export آشنا باشید میدونید که در صورتی که ترمینالتون رو ببندید یا یه تب جدید اضافه کنید دیگه اون مقداری که قبل از اون قرار دادید وجود نداره. برای حل این مشکل شما باید فایل ~/.profile رو باید کنید و دستور بالا رو به آخرش اضافه کنید. در صورتی که نخواید این کار رو بکنید میتونید به راحتی دستورات پایین رو کپی کنید:echo &amp;quotexport PATH=$PATH:/usr/local/go/bin&amp;quot &gt;&gt; ~/.profileخب. تا ابنجای کار ما گو رو نصب کردیم و میتونیم ازش  استفاده کنیم. همونطور که گفته بودم workspace ها اجباری نیستن ولی بهتره که داشته باشیمشون. برای این کار هر جایی که دوست داشتید یه پوشه بسازید که توش پروژه های گو خودتون رو بنویسید. برای مثال من این ادرس رو برای خودم همیشه استفاده میکنم:‍‍~/Projects/GoProjectsبعد از ساخت این پوشه ما نیاز داریم که داخلش سه تا پوشه ی دیگه بسازیم. این پوشه ها src، pkg و lib هستن. پوشه ای که ما قراره توش کدهامون رو بزنیم پوشه ی src هستش.خب. تا اینجای کار ما ورک اسپیسمون رو ساختیم ولی باید به سیستم بفهمونیم که این آدرس برای ورک اسپیس ما هستش. برای این کار کافیه دوباره از دستور زیر استفاده کنیم:echo &amp;quotexport GOPATH=~/Projects/GoProjects&amp;quot &gt;&gt; ~/.profileاین کار متغیری به اسم GOPATH اضافه میکنه که از طریق اون ما میتونیم کارمون رو پیش ببریم.تا اینجای کار ما تقریبا تمام کار های نصب و راه اندازی رو انجام دادیم. حالا کافیه پروژه ی خودمون رو تست کنیم. کدهای گو توی فایل هایی با فرمت go ساخته میشن. برای همین هم ما داخل src خودمون در ابتدا یه پوشه میسازیم به اسم helloworld و بعد داخلش فایلی به اسم helloworld.go ایجاد میکنیم.توی فایلی که الان ساختیم کافیه این کد ها رو بنویسیم. توی این مرحله نیازی نیست که بدونیم این کد ها چی هستن. فقط این کد ها رو کپی کنید و بدونید که بعد از اجرا برای ما باید عبارت Hello World! رو بنویسه.package main

import &amp;quotfmt&amp;quot

func main() {
    fmt.Println(&amp;quotHello world!&amp;quot)}خب. حالا زمان جادو رسیده. از طریق ترمینال توی پوشه ی helloworld برید و این دستور رو بزنید:go run helloworld.goخروجی ای که دریافت میکنید باید عبارت Hello world! باشه.از همینجا بهتون تبریک میگم و میگم که به دنیای go خوش اومدید.برای مطلع شدن از قسمت های بعدی من رو دنبال کنید.</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Fri, 31 Jul 2020 17:54:22 +0430</pubDate>
            </item>
                    <item>
                <title>چرا golang?</title>
                <link>https://virgool.io/@bshadmehr76/%DA%86%D8%B1%D8%A7-golang-dofteq38izpl</link>
                <description>توی تجربه ی شخصی ای که با یه عده از برنامه نویس ها داشتم، تعصب خیلی زیادی توی بعضی هاشون دیدم. برای مثال دوستی داشتم که اصرار به برتری C++ به پایتون داشت. به خاطر تفاوت سرعتی که دارن. اون موقع تحت تاثیری که از اون شخص گرفته بودم تصمیم گرفتم یه مقدار در مورد تفاوت هاشون سرچ کنم. توی هر زبونی یه سری فیچر خاص میدیدم.مثلا با استفاده از پایتون و به خاطر ماژول های زیادش با سرعت زیادی میشد پروژه ای رو که می خوایم رو بنویسیم. یا مثلا C که سرعت بالاتری داشت. C++ که میشد برای embedded systems ازش استفاده کرد، C# که علاوه بر سرعت بالا امکانات بیشتری هم میداد به ما. خود منم توی اون بازه تعصب بالایی روی پایتون داشتم. حتی پیش میومد دعوا کنم به خاطرش. ولی خب همه ی ماها یه دورانی داشتیم که بهش افتخار نمیکنیم :)بعد از این که یه مقدار فیلد کاریم رو گسترش دادم و با زبون های بیشتری کار کردم، فهمیدم که قضیه از چیزی که به نظر میرسه پیچیده تره. هر زبونی کاربرد خاصی داره شاید بشه با یه زبون خیلی کارها کرد ولی خب همونطور که میشه با پایتون اپ اندرویدی نوشت ولی تا الان ندیدم کسی به دنبالش بره قطعا توی هر زبونی هم یه سری امکانات پر رنگ تر هستند که ممکنه متناسب با پروژه، ما تصمیم بگیریم از زبون خاصی استفاده کنیم.همه ی این ها گذشت و بعد از یک سال فکر کردن به یادگیری Golang بالاخره رفتم سراغش. اولش برام یه ذره عجیب بود. به خاطر تغییراتی که داده بودن. به خاطر سختگیری هاش و.... ولی در نهایت فهمیدم که بالاخره یه زبونی پیدا کردم که باز میتونم روش تعصب داشته باشم. هر چند من هنوزم تفاوت زبون ها و این که برای هر پروژه ای ممکنه یه زبونی کاربرد داشته باشه رو انکار نمیکنم مثلا الان هم شما نمیتونید با go یه اپ اندرویدی بنویسید ولی خب بازم حس میکنم ارزش این که آدم روش تعصب داشته باشه رو داره.زبان go یه زبان کامپایل شده است که سخت گیری های خاص خودش رو داره. اجبارش توی گذاشتن کامنت برای جاهای خاصی از کد، سرعتش، سادگیش و موارد دیگه ای که توی خودش جا داده باعث تفاوتش بین زبون ها شده. تفاوت هایی که go داره رو اینجا با هم بررسی میکنیم و در واقع به این سوال جواب میدیم که چرا go:سادگی در یادگیری: البته درسته که این زبون یه مقدار ساختار شکنی کرده، ولی باز هم میشه گفت برای یادگیری ساده است. البته نمیگم به سادگی زبانی مثل پایتون ولی خب به هر حال میشه گفت زبان ساده ای هست.سرعت: توی بعضی از پروژه ها، سرعت اجرا اهمیت داره و توی بعضی ها سرعت development. اگه دنبال زبانی هستید که بتونه هر دوی این ها رو داشته باشه go میتونه انتخاب خوبی براتون باشه.همزمانی ساده: یکی از مواردی که گاهی ممکنه توی کد نویسی چالش ایجاد کنه بحث همزمانی هستش. معمولا برای نوشتن کدهایی که قراره به صورت همزمان اجرا بشن، باید یه سری کد اضافه نوشت و یه سری موارد رو رعایت کرد. نمیگم توی go این مشکلات وجود نداره ولی این زبون سعی کرده با امکاناتی که گذاشته این مورد رو خیلی راحت کنه.نوشتن راحت سرویس ها: اگه با معماری مایکرو سرویسز آشنا باشین، میدونین که گاهی ممکنه مشکلات عجیبی براتون پیش بیاد. مثلا ارتباط بین بعضی سرویس ها توی یه شرایطی کار نکنه. یکی از خوبی های go اینه که سعی کرده با گذاشتن امکاناتی این مورد رو به راحتی هندل کنه.نوشتن و اجرای راحت در سیستم عامل های مختلف: خیلی راحت میتونین کدهای گو رو بنویسین و به راحتی اجراشون کنین.مشکلات golang:پکیج منیجر در گو: یکی از مواردی که از دید من جای کار داره توی گو، نحوه ی هندل کردن پکیج ها در گو هستش. ولی خب تمام نیاز های شما رو حل میکنهورک اسپیس: هر چند که ساخت یه workspace اجباری نیست ولی خب بهتره که داشته باشین. یه مقدار ممکنه توی شروع این قضیه شما رو اذیت کنه ولی به مرور زمان این مورد براتون عادی میشه.سادگی: شاید این به نظرتون عجیب بیاد. اما میشه گفت گو اونقدر ساده ایت که این سادگی گاهی شما رو اذیت میکنه. این ممکنه یه مقدار سلیقه ای باشه البتهشی گرایی: برنامه نویس های go برای این مورد نظر های مختلفی دارن. بعضی ها میگن این زبون شی گراست و بعضی ها میگن نیست. من به شخصه دوست دارم بگم هست چون با استفاده از استراکت ها به ما این امکان رو میده که یه سری بلوپرینت تعریف کنیم و در نهایت هم به اون استراکت ها یه سری از توابعمون رو اختصاص بدیم ولی اگه به دنبال این هستین که مثل java بتونین توی go شی گرایی کار کنین، باید بگم متاسفانه امکانش نیستبه این لیست ها میشه خیلی موارد دیگه رو اضافه کرد اما من وقتی از دیدگاه خودم نگاه میکنم این موارد رو جزو اصلی ترین ها میبینم.امیدوارم براتون مفید بوده باشه</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Wed, 29 Jul 2020 06:08:45 +0430</pubDate>
            </item>
                    <item>
                <title>افکار اتوماتیک منفی و نحوه ی حل کردن این مشکل اساسی</title>
                <link>https://virgool.io/@bshadmehr76/%D8%A7%D9%81%DA%A9%D8%A7%D8%B1-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9-%D9%85%D9%86%D9%81%DB%8C-%D9%88-%D9%86%D8%AD%D9%88%D9%87-%DB%8C-%D8%AD%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%DB%8C%D9%86-%D9%85%D8%B4%DA%A9%D9%84-%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C-ljhje6fpw4nn</link>
                <description>اگه ازتون بخوام از عدد یک تا 60000 بشمارید اولین چیزی که توی سرتون میاد چیه؟ اصلا انجامش میدید یا نه؟ میدونستید در طول روز توی سر ما بین 60000 تا 80000 فکر عبور میکنن؟ یه مقدار عدد بزرگیه مگه نه؟ جالب تر از این نکته اینجاست که ما حتی متوجه این افکار نمیشیم و این افکار فقط توی سر ما رد میشن و با رد شدنشون باعث میشن ما یه حال خوب یا بد داشته باشیم. در واقع خود واقعی ما رو شکل میدن.خب همونطور که تا الان فهمیدیم تعداد افکاری که روزانه از سر ما میگذرن اونقدر زیاده که ما حتی برامون سخته بخوایم تا اون عدد بشماریم. یه مسئله ای این وسط وجود داره اونم اینه که این افکار خود واقعی ما رو نشون میدن. نه اون کسی که ما سر کار به همکارامون نشون میدیم، نه اونی که ما سر کلاس گیتار یا نقاشیمون نشون میدیم و قطعا نه اون کسی که وقتی مقابل آینه ایستادیم و داریم خودمون رو سوپرمن زندگیمون و یا حتی یه آدم به شدت شکست خورده تصور میکنیم نشون میدیم.ولی خودتون یه دو دو تا چهارتا بکنید. 60000 تا فکر از سرمون رد میشه و ما هیچ کنتری روی اون افکار نداریم. آیا از نظر شما همه‌ی اون 60000 تا فکر درست هستن؟ معلومه که نه. خیلی از این افکار یه سری افکار اشتباه و غلط هستن که دیدگاه ما به زندگی خودمون و اطرافمون رو شکل میدن. به نظر شما باید با این افکار چی کار کرد؟ رهاشون کرد؟ تفییرشون داد؟ باهاشون زندگی کرد و قبول کنیم که ما این شخصی هستیم که فکر میکنیم؟خبر خوبی که براتون دارم اینه که میشه این افکار رو شناسایی کرد، به چالش کشید و در نهایت با یه فکر مناسب تر جایگزینشون کرد. فرض کنید که هر روز صبح از سر ما یه قطار قراره حرکت کنه. این قطار همون افکار ما هستش. حالا اگه افکار اتوماتیک منفی ما تعدادشون زیاد باشه مثل این میمونه که این قطار هر روز روی یه ریل اشتباه حرکت میکنه. خبر خوبی که میتونم بهتون بدم اینه که شما میتونید این قطار رو بلند کنید، جا به جا کنید و روی ریل درست بذاریدش. برای بعضی ها ممکنه واقعا طول بکشه تا وقتی که سیم کشی های مغزمون به شکلی جا به جا بشن که اون قطار همیشه روی ریل درست خودش حرکت کنه ولی خب بالاخره این اتفاق میوفته.برای انجام این کار و تغییر یه بخشی از سیم کشی های مغزی سه مرحله‌ وجود داره:شناسایی افکار منفیبررسی شواهد تایید کننده و رد کنندهجایگزینی فکر منفی با یک فکر واقع گرایانهبیاید با هم یه مثال رو بررسی کنیم:علی یه پسریه که از یچگی علاقه‌ی زیادی به تئاتر داشته. بعد از مدت ها تمرین کردن و تلاش شبانه روزی بالاخره فرصت یه اجرای خوب رو پیدا میکنه. وسط اجرا یهو یکی از تماشاچی ها شروع میکنه به خندیدن. علی تمام تمرکزش رو از دست میده و یهو این فکر میاد توی سرش که نکنه اجرای من اونقدر مسخره است که این بیننده تونسته خندش رو کنترل کنه؟همونطور که دیدید این فکر بصورت کاملا ناخوادآگاه و به واسطه ی یه تریگر توی ذهن شخص شکل گرفته. حالا ما با کمک هم قراره بیایم و هر سه تا مرحله رو طی کنیم.شناسایی افکار:افکار منفی ما معمولا به واسطه ی یه تریگر توی ذهن ما شکل میگیرن. برای مثال توی مورد علی اگه دقت کنید خندیدن یه تماشاچی باعث این فکر منفی شده.بعد از این که یه فکر از سر ما رد میشه درون ما یه حس به وحود میاره. اون حس میتونه خشم، خوشحالی،‌ غم و هر حس دیگه ای باشه. میزان شدتش هم میتونه بین 1 تا 10 متغیر باشه.بعد از این که درون ما یه حس به وجود میاد چه اتفاقی میوفته؟ خب اکثر ما واکنش نشون میدیم. اون واکنش برای هر کسی میتونه متفاوت باشه. از داد زدن و فریاد کشیدن گرفته تا کز کردن یه گوشه ی خونه و خودخوری کردن به وسیله ی افکار آگاهانه.پس تا اینجا ما فهمیدیم که هر فکر منفی سه چهار خصوصیت مختلف دارن. تریگر، فکر،‌ احساس و در نهایت واکنش.خب توی مورد علی اگه بخوایم دقت کنیم میبینیم که تریگر به وجود اومدن اون فکر اینه که علی متوجه خندیدن یکی از تماشاچی ها وسط اجراش شد. فکری که علی توی سرش میاد اینه که نکنه اجرای من خنده دار باشه؟ احساساتی که درش شکل میگیره میتونه غم با شدت 5 و عصبانیت با شدت 7 باشه. و به عنوان واکنش هم ممکنه دیالوگ بعدی خودش رو فراموش کنه.توصیه میکنم ثبل از این که سراغ مرحله ی بعد برید به مدت یک هفته فقط افارتون رو شناسایی کنید.بررسی شواهد تایید کننده و رد کننده:بعد از این که ما تونستیم افکار منفی خودمون رو شناسایی کنیم،‌ نوبت به اون میرسه که ما بتونیم اون ها رو بررسی کنیم. برای این کار کافیه بالای یه صفحه فکرمون رو بنویسیم و یه خط عمودی وسط صفحه رسم کنیم. بعد از اون کار میتونیم یه سمت شواهد تایید کننده و سمت دیگه شواهد رد کننده رو بنویسیم.بیاید توی مثال علی این مورد رو پیاده سازی کنیم:شواهد تایید کننده:اون شخص وقتی علی داشت اجراشو انجام میداد خندیدشواهد رد کننده:اگه اجرای علی خنده دار بود چرا فقط همون یه نفر خندید؟اجرای علی قبل از این که روی سن بره توسط چند تا از اساتید این حیطه بررسی شده و توسط اون افراد تایید شدهعلی برای رسیدن به این مرحله بیش از یک سال تمرینات حرفه ای بی وقفه داشته و خب طبیعتا نکات حرفه ای اجرا رو بلدهخود علی فکر میکنه اجراش خنده دار نیستهمونطور که میبینید ما تونستیم اینجا یه تعداد شواهد برای خودمون بنویسیم که هم برای اثبات و هم برای رد کردن خنده دار بودن اجرای علی استفاده میشن. ولی اگه دقت کنید بعضی از شواهد ما غیر قابل تایید هستن. برای مثال ما گفتیم که اون شخص وقتی علی در حال اجرا بود خندید. به نظرتون آیا این میتونه دلیل کافی ای برای خنده دار بودن اجرای علی باشه؟‌ طبیعتا نه. چون هزارتا دلیل دیگه میشه براش آورد. مثلا یه چیز خنده دار توی سرش اومده، یاد یه خاطره افتاده، مشکل روانی داره و یا هر چیز دیگه ای. و حتی توی شواهد رد کننده ما یه مورد مشکوک داریم. گفته شده که خود علی فکر میکنه اجراش خنده دار نیست. آیا به نظر شما این یه دلیل منطقیه؟‌ از نظر من که هر کدوم از ماها ممکنه در مورد خودمون هزاران فکر داشته باشیم ولی توی واقعیت و توی عمل هیچ کدومشون درست نباشه.بعد از حذف کردن شواهد غیر قابل استناد به این نتیجه میرسیم که تعداد شواهد رد کننده خیلی از تعداد شواهد تایید کننده بیشتر هستن. بنابراین ما به صورت منطقی تایید کردیم که این فکرمون اشتباهه. البته همونطور که میدونید گاهی ممکنه افکار منفی ما درست باشن.جایگزینی فکر منفی با یک فکر واقع گرایانه:زمانی که ما شناسایی کردیم که یه فکر منفی درسته و یا خیر،‌ وقت اون میشه که اون فکر رو تغییر بدیم. این کار واقعا کار سختی نیست فقط کافیه براش یه جایگزین پیدا کنیم. برای مثال در مورد علی میتونیم این فکر رو توی سرش بذاریم که خندیدن یه نفر وسط اجرا باعث خنده دار بودن اجرای من نمیشه وقتی صد نفر هستن که حسی که من میخواستم به واسطه ی اجرام بهشون منتقل بشه، در درونشون شکل گرفته و همشون با دقت در حال دیدن اجرای من هستن. البته گاهی هم ممکنه یه فکر منفی درست باشه،‌ اون وقت هم نیازه که ما با جایگزین کردن اون فکر با یه فکر دیگه دیدگاه اشتباه رو عوض کنیم. برای مثال فرض کنید ما پشت تلفن به دوستمون توهین کردیم و خب حالا به خاطر یه تریگر این مورد توی سرمون اومده که من دوست خوبی نبودم. وقتی بررسی کردیم به این نتیجه رسیدیم که من واقعا دوست بدی بودم. اون وقته که باید بتونیم با جایگیزینی اون فکر با یه فکر مثبت تر دیدگاهمون رو تغییر بدیم.علت این قضیه اینه که وقتی ما یه صفت کلی به خودمون اختصاص میدیم در واقع داریم کل زندگیمون رو تحت تاثیر قرار میدیم. مثلا وقتی میگیم که من دوست خوبی نبودم این فقط به اون اتفاق اشاره نمیکنه بلکه میاد و تمام دوستی ما و اون شخص مقابل ر وهدف قرار میده. به جای اون فکر میتونیم به راحتی بگیم که این که من پشت تلفن به دوست خودم توهین کردم کار اشتباهی بوده و باید ازش عذر خواهی کنم.مقوله‌ی تغییر یه مقوله‌ی بسیار گسترده و بزرگه. ولی چیزی که باید بدونیم اینه که میشه با برداشتن قدم‌های کوچک و مداوم به این کار بزرگ رسید و انجامش داد.</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Tue, 29 Oct 2019 17:33:27 +0330</pubDate>
            </item>
                    <item>
                <title>بهمن کیه؟</title>
                <link>https://virgool.io/@bshadmehr76/%D8%A8%D9%87%D9%85%D9%86-%DA%A9%DB%8C%D9%87-x0dlkakwdjoy</link>
                <description>سلام. اسم من بهمنه. یه برنامه نویس ساده که عاشق پایتونه و دوست داره روی توانایی هایی انسان شناسیش کار کنه. شاید اینجا بتونه فضای مناسبی برای روزمره نویسی من باشه شایدم نباشه. فقط میدونم نیازه که بتونم یه جایی حرف هام رو بزنم. زندگی ای که دارم نسبتا ساده و معمولیه ولی میدونم که خودم یه آدم معمولی نیستم. البته شاید هم هستم ولی فقط نمی خوام این رو قبول کنم. توی این پست میخوام از خودم بگم. این که کی هستم و از کجا اومدم و الان کجام. از تجربه هام، از تلاش هام، شکست هام و موفقیت هام.خب همونطور که گفتم من یه برنامه نویس ساده ام که سال 95 وارد دانشگاه بوعلی همدان رشته ی مهندسی کامپیوتر شدم. اولین کدم رو توی 13 سالگی زدم و تونستم یه hello world ساده با استفاده از زبان qbasic بنویسم. بعد از اون بود که زندگی من به عنوان برنامه نویس شوع شد. اوایل کدهای ساده رو توی همو کیو بیسک مینوشتم و بعدش آروم آروم رفتم سراغ اکشن اسکریپت. یه مقدار که با اون بازی کردم به پیشنهاد یکی از دوستان یه دوره ی افتر افکتز رو گذروندم. تایم خیلی زیادی از اون نگذشت که رفتم سراغ برنامه نویسی وب. تقریبا میشه گفت که هر کاری فکرش رو بکنید بعد از اون انجام دادم از کار کردن با visual basic گرفته تا برنامه نویسی برای ماژول های آردوینو. کلا آدمی بودم که تجربه کردن رو دوست داشتم و دوست داشتم بتونم تجربه های جدیدی داشته باشم. خب طبیعیه که وقتی یکی هر چیزی رو سعی میکنه تجربه کنه کلی هم اشتباه مرتکب میشه دیگه :). از اشتباه کردن نمیترسیدم و همیشه با یه دید مثبت بهش نگاه میکردم. چند باری استارتاپ های مختلف زدم که شکست خوردن و چند باری هم چند تا تیم تشکیل دادم که اون ها هم شکست های خودشون رو داشتن. اواسط دانشگاه بود که با یکی از اساتید دانشگاه شریف آشنا شدم. قرار شد به عنوان کارآموز مشغول به کار بشم و توی همون همدان کار کنم. بعد از یه مدت قرار شد آخر هفته ها برم تهران و یه چند ماه بعدش که اگه بخوام دقیق تر بگم میشه فروردین سال پیش، تصمیم گرفتم از دانشگاه بزنم بیرون و کلا به تهران نقل مکان کنم. اوضاع بدی نبود اولش ولی خب باید یه سری شرایط رو پشت سر میذاشتم. از نبود مکان برای خواب بگیر تا یادگیری بیشتر توی حیطه ی کاریم. خب یه تایم سختی بود که با وجود سختیش تونستم پشت سر بذارمش. ولی از تک تک روزهاش لذت میبردم. حتی اشتباه هایی که کردم. آدم های اشتباهی که بهشون زیادی بها دادم و یا مسیرهای اشتباهی که انتخاب کردم. الان حس میکنم تونستم به یه وضع نسبتا مناسبی برسم. یه وضعی که میتونم دوباره شروع کنم به یادگیری و رشد. به تلاش برای بهتر شدن. به بهبود و قوی شدن. مگه توی زندگی ما جز این چی می خوایم؟ بهتر شدن شرایط زندگیمون. رشد کردن و پیشرفت کردن. عشق ورزیدن و عشق گرفتن. سالم بودن و سالم موندن و...می خوام سعی کنم رشد کنم. رشد کردن ساده نیست. تلاش می خواد. باید بتونید مداوم پیش برید و تداوم بزرگترین مشکل زندگی منه.بعد از خوندن همه ی اون موارد بالا، اگه همچنان دارید میخونید، می خوام یه رازی رو باهاتون به اشتراک بذارم. اونم اینه که من یه آدم معتادم. اعتیاد من به شیشه یا مورفین یا هر چیز دیگه ای نیستش. اعتیاد من به ثابت موندنه. اگه بخوایم درست بهش نگاه کنیم،‌ شاید بتونیم بگیم که هممون یه جورایی معتادیم. من توی  یه سال گذشته این اعتیادم خیلی شدت گرفته. و حالا قراره که تلاش بیشتری که قراره به کار بگیرم این اعتیاد رو بشکونم. و شما هم قراره توی این مسیر با من همراه باشین. فکر میکنم بتونم بهتون اعتماد کنم و شمارو یه بخشی از خودم بدونم. شاید حتی نه یه بخشی از خودم،‌ فقط یه دوست. یه دوست که قراره ناظر و دانای کل توی داستان نوشته شده ی زندگی من باشه.</description>
                <category>bshadmehr76</category>
                <author>bshadmehr76</author>
                <pubDate>Tue, 22 Oct 2019 12:10:17 +0330</pubDate>
            </item>
            </channel>
</rss>