<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مهدی خوشنودی</title>
        <link>https://virgool.io/feed/@mehdy</link>
        <description>علاقه‌مند به لیدرشیپ، استارتاپ‌ها و معماری نرم‌افزار ~ SRE در دیوار / mehdy.me</description>
        <language>fa</language>
        <pubDate>2026-06-17 00:20:24</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2404/avatar/i6n4Mi.png?height=120&amp;width=120</url>
            <title>مهدی خوشنودی</title>
            <link>https://virgool.io/@mehdy</link>
        </image>

                    <item>
                <title>‏Career Coaching چیه و چرا بهش نیاز داریم؟</title>
                <link>https://virgool.io/@mehdy/career-coaching-%DA%86%DB%8C%D9%87-%D9%88-%DA%86%D8%B1%D8%A7-%D8%A8%D9%87%D8%B4-%D9%86%DB%8C%D8%A7%D8%B2-%D8%AF%D8%A7%D8%B1%DB%8C%D9%85-lejodo4qgyok</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2020/01/career-coaching-%DA%86%DB%8C%D9%87-%D9%88-%DA%86%D8%B1%D8%A7-%D8%A8%D9%87%D8%B4-%D9%86%DB%8C%D8%A7%D8%B2-%D8%AF%D8%A7%D8%B1%DB%8C%D9%85/ چند وقتی میشه که خودم رو شدیدا درگیر مفهومی به اسم Career Coaching کرده‌ام و خیلی تجربه‌های جذابی تو این مسیر به دست آورده‌ام و دوست دارم که بخشی از این تجربیات رو با شما هم به اشتراک بذارم. برای همین دوست دارم اول تو این نوشته راجع به چیستی و چگونگی قضیه بنویسم و در ادامه بیشتر داستان‌ها و تجربه‌ها بنویسم.معمولا برای اینکه Career Coaching رو بخوام توضیح بدم میرم سراغ دو واژه‌ی تشکیل دهنده‌اش و به صورت مستقل در موردشون حرف می‌زنم.‏Career چیه؟زبان فقط یک وسیله‌ی انتقال پیام نیست؛ زبان بخشی از فرهنگ و تفکر آدم‌هاست.تو انگلیسی دو واژه با معنی و مفهوم متفاوت وجود داره که ما تو فارسی تقریبا یک معنی بیشتر براش نداریم. ما Career و Job رو کار، پیشه و حرفه ترجمه می‌کنیم و هر سه واژه تقریبا برامون یادآور یک مفهومه. هر چند اگر بخوایم خیلی زبانشناسانه و فنی با قضیه برخورد کنیم ممکنه مدعی بشیم که تو فارسی هم کار و پیشه مفهومشون متفاوته. ولی همونجوری که گفتم زبون فقط یک وسیله‌ی انتقال پیام نیست! ما تو فرهنگمون اکثرا تفاوتی برای این دو واژه قائل نیستیم و مفهومی که جابه‌جا می‌کنن تقریبا یک چیزه. به هرحال از این بحث بگذریم و بریم سراغ اصل قضیه.طبق تعریف ویکی‌پدیا، Career مسیریه که یک آدم از طریق یادگیری، کار و جنبه‌های دیگر زندگی طی می‌کنه. از طرف دیگه Job همون معنی کار که ما بیشتر باهاش آشنا هستیم رو میده و به فعالیتی فیزیکی یا ذهنی گفته میشه که برای رسیدن به یک هدف یا نتیجه مشخص انجام میشه و گاهی در ازاش پول دریافت می‌کنیم.مسیر حرفه‌ای یا همون Career می‌تونه چندین کار یا همون Job رو در خودش داشته باشه و علاوه بر اون اتفاقات و مسائل دیگه‌ای رو هم شامل بشه. هر کدوم از ما ممکنه در لحظه مشغولی کاری باشیم یا نباشیم ولی همه‌مون همیشه و همواره تو یک مسیر حرفه‌ای قرار داریم؛ یا به عبارتی یک Career داریم.برای مثال کسی که دوست داره یک فیلم‌ساز خفن بشه، توی مسیرش ممکنه کارها و شغل‌های مختلفی داشته باشه. از تحصیلش تو دانشکده‌ی هنر گرفته تا کار کردنش تو یک رستوران برای در آوردن خرجی روزانه‌اش، بازیگری تئاتر، درست کردن یک بلاگ تخصصی در مورد تئاتر و سینما، نوسیندگی و کارگردانی و خیلی کارها و فعالیت‌های دیگه که اگر از منظر بالاتری به قضیه نگاه کنیم همگی در یک راستا و برای یک سری هدف مشخص دارن انجام میشن.در نهایت مفهوم پیچیده‌ای نیست که بخوام بیشتر از این راجع بهش بنویسم. فقط از این جهت که احتمالا تو زندگی روزمره‌امون ممکنه خیلی پیش نیومده باشه که با این مفهوم روبه‌رو شده باشیم به نظرم جا داشت تا نگاه دقیق‌تری بهش بکنیم.حالا Coaching چیه؟به نظرم Coaching یا همون مربی‌گری رو لازم نیست که از نظر معنی و مفهوم واژه‌اش بررسی کنیم و همه‌مون تقریبا به خوبی باهاش آشنا هستیم (به لطف فوتبال!). ولی چیزی که لازمه اینجا بهش دقت کنیم، ابعاد و گستره‌ی مربی‌گری هستش بیشتر.تا حالا به این فکر کردید که چرا ما (انسان‌ها) فقط برای ورزش از مربی و مربی‌گری استفاده می‌کنیم؟ و چرا تو کارهای دیگه از این الگو استفاده نمی‌کنیم؟البته من هم جواب این سوال رو نمی‌دونم ولی به نظر نمیاد دلیل خوبی برای این کار داشته باشیم. پیشنهاد می‌کنم حتما این ارائه‌ی تد رو ببنید تا کمی بیشتر در مورد مربی‌گری در جاهایی غیر ورزش هم ذهنیت بگیرید. https://www.ted.com/talks/atul_gawande_want_to_get_great_at_something_get_a_coach?language=en البته به نظرم لازمه که در مورد خورد مربی‌گری هم کمی حرف بزنم و فرض رو بر شناختمون از مربی‌گری ورزشی نذارم. من شخصا با این دو تعریف از مربی و مربی‌گری بیشتر ارتباط برقرار می‌کنم و همین دو رو هم اینجا می‌نویسم.وقتی یک آموزگار یا معلم موضوعی رو به شما آموزش میده، در بهترین حالت می‌تونه صد در صد دانشی که در مورد اون وضوع داره رو درست به شما برسونه و شما هم در بهترین حالت می‌تونید صد در صد مطلب رو درست بفهمید و در نهایت شما به اندازه‌ی آموزگارتون دانش و توانایی کسب کنید. ولی یک مربی به جای صرفا آموزش یک مطلب به شما کمک می‌کنه تا خودتون نسبت به مسئله آگاه بشید، راهی برای یاد گرفتنش پیدا کنید، مشکلات مسیر رو شناسایی کنید و براشون راه حل مناسب پیدا کنید. یک مربی خوب لازم نیست که قهرمان جهان شده باشه تا بتونه یک تیم یا یک شخص رو قهرمان جهان بکنه؛ به عبارت دیگه آموزگار شخص رو تا سطح خودش می‌تونه بکشه بالا؛ در صورتی که یک مربی علاوه بر این می‌تونه شخص رو از سطح خودش هم بالاتر هل بده.مفهوم دیگه‌ای که من برای مربی‌گری دوست دارم، اینه فرض کنید که تو ذهن ما یک عالمه چراغ خاموش وجود داره و یک مربی خوب می‌تونه کمک کنه مقدار زیادی از این چراغ‌ها رو روشن کنیم.نکته‌ای که اینجا می‌خوام روش تاکید کنم اینه که همه‌ی ما در هر سطحی می‌تونیم از هدایت و کمک یک مربی استفاده کنیم و اگر حرف من رو قبول ندارید بازم پیشنهاد می‌کنم تا اون ارائه‌ی تد رو ببینید.با این اوصاف Career Coaching چیه؟خوب از اونجایی که این دو واژه رو به تفکیک بررسی کردیم چیز زیادی برای گفتن نمی‌مونه و کافیه تا این دو تا مفهوم رو باهم قاطی کنیم.تو بحث Career گفتیم که همه‌مون همیشه یک Career داریم و ممکنه تا حالا بهش دقت نکرده باشیم الان تازه یک چراغ جدید بیشتر تو ذهنمون روشن شده باشه. یک مربی خوب می‌تونه بهمون کمک کنه تا ما نسبت به مسیری که الان داریم میریم آگاه بشیم، با هدف‌ها و آمال و آرزوهامون تطبیقش بدیم و اگر متوجه شدیم که مسیرمون ایراداتی داره، می‌تونه کمک کنه تا مشکلاتش رو برطرف کنیم و Careerمون بشه نتیجه‌ی انتخاب‌های خودمون تا اینکه به صورت اتفاقی شکل گرفته باشه.اگر فکر می‌کنید من می‌تونم به عنوان Career Coach بهتون کمک کنم تا مسیر حرفه‌ایتون رو بهتر بسازید به صفحهٔ خدمات در وبسایت شخصی‌ام سر بزنید و به من پیام بدید تا راجع بهش گپ بزنیم.از تجربیات و نظراتون هم در مورد مسیر حرفه‌ای و مربی و چیزهایی که صحبت کردیم تو کامنت‌ها بنویسید.</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Thu, 09 Jan 2020 03:02:21 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش گام به گام پایتون - قسمت چهارم</title>
                <link>https://virgool.io/python/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%DA%86%D9%87%D8%A7%D8%B1%D9%85-uxwvpudnshqw</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2019/05/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%DA%86%D9%87%D8%A7%D8%B1%D9%85/ در قسمت قبل در مورد داده‌ساختارها یاد گرفتیم. تو این قسمت می‌خوایم یاد بگیریم چجوری قسمتی از منطق برنامه رو به صورت مستقل قابل استفاده کنیم. این کار رو به کمک توابع انجام می‌دیم.تابعهموجوری که از اسمش پیداست تابع چیزیه که بر اساس ورودی‌هایی که می‌گیره یک سری عملیات رو انجام میده و ممکنه یه سری خروجی هم داشته باشه یا اثرات جانبی داشته باشه (مثلا توی یه فایل چیزی بنویسه). فرض کنید ما یه برنامه می‌خوایم بنویسم که یه سری عدد بهش بدیم و اونایی که عدد اول بودن رو برامون چاپ کنه.input_text = input(&amp;quotenter numbers: &amp;quot)
for i in input_text.split(&#039; &#039;):
    number = int(i)
    is_prime = True
    for j in range(2, number):
        if number % j == 0:
            is_prime = False
            break
    if is_prime:
        print(number)این کد همون کاری رو می‌کنه که می‌خوایم. حالا فرض کنید تو برنامه‌ چندیدن جا می‌خوایم چک کنیم که یک عدد اول هست یا نه؟ باید بیایم از وسط این کد اون قسمتی رو که چک می‌کنه عدد اول هست یا نه رو کپی کنیم ببریم اونجا هم استفاده کنیم. مشکلاتی که این کار داره اینه که حجم کد رو الکی زیاد می‌کنه و ممکنه بخوایم الگوریتممون رو عوض کنیم باید بریم همه جا این کار رو بکنیم. پس اگر بیایم اون قسمت از کد رو به صورت یه تابع بنویسیم این مشکلاتمون حل میشه.def is_prime(number):
    for i in range(2, number):
        if number % i == 2:
            return False
    return True

input_text = input(&amp;quotenter numbers: &amp;quot)
for i in input_text.split(&#039; &#039;):
    number = int(i)
    if is_prime(number):
        print(number)نه تنها مشکلاتی که داشت رو حل کردیم بلکه کد رو هم تمیزتر کردیم. یعنی خوندن کد راحت‌تر شده.تو پایتون توابع می‌تونن چندین ورودی و چندین خروجی داشته باشن. برای مثال def add(a, b):
    return a + b

def min_avg_max(list_of_numbers):
    sum = 0
    min = max = list_of_numbers[0]
    for i in list_of_numbers:
        if i &lt; min:
            min = i
        if i &gt; max:
            max = i
        sum += i
    return min, sum/len(list_of_numbers), maxهمچنین میشه برای ورودی‌ها مقدار اولیه تعیین کرد و اگر موقع صدا زدن مقدار اون ورودی داده نشه، مقدار پیش‌فرض استفاده بشهdef greet_user(name, lang=&#039;en&#039;):
    if lang == &#039;en&#039;:
        print(f&amp;quothello, {name}&amp;quot)
    elif lang == &#039;fa&#039;:
        print(f&amp;quotسلام، {name}&amp;quot)
    else:
        print(&amp;quotlanguage is not specified&amp;quot)

greet_user(&amp;quotAli&amp;quot) # hello, Ali
greet_user(&amp;quotAli&amp;quot, &#039;en&#039;) # hello, Ali
greet_user(&amp;quotAli&amp;quot, &#039;fa&#039;) # سلام، Aliدر حالت عادی موقع صدا زدن توابع باید مقادیر ورودی رو به همون ترتیبی که تو تعریف تابع اومده به تابع داد. هرچند پایتون این امکان رو میده که مقادیر رو صریحا برای هر ورودی مشخص کنیم بدون توجه به ترتیبشون. برای مثال تابع قبلی رو در نظر بگیرید
 greet_user(name=&amp;quotAli&amp;quot) # hello, Ali 
greet_user(name=&amp;quotAli&amp;quot, lang=&#039;en&#039;) # hello, Ali 
 greet_user(&amp;quotAli&amp;quot, name=&#039;fa&#039;) # سلام، Ali
 greet_user(lang=&#039;en&#039;, name=&amp;quotAli&amp;quot) # hello, Ali تا قسمت بعد!</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Tue, 07 May 2019 00:04:37 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش گام به گام پایتون - قسمت سوم</title>
                <link>https://virgool.io/python/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-jofyh8opxrlf</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2019/01/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85/ در قسمت قبل در مورد شرط و حلقه یاد گرفتیم. حالا وقتشه که با چند تا از مهم‌ترین داده ساختارهای پایتون آشنا بشیم. یک داده ساختار مجموعه‌ای از مقادیر و روابط بینشونه که اعمال خاصی روشون قابل انجامه. داده‌ ساختارهایی که در این قسمت باهاشون آشنا می‌شیم لیست، تاپل، دیکشنری و سِت هستند.لیست (list)لیست همونجوری که از اسمش پیداست مجموعه‌ای از چیزهاست که میشه اعمالی مثل اضافه کردن یا حذف کردن روشون انجام داد.list_of_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list_of_numbers.append(10) # اضافه کرد ۱۰ به انتهای لیست
list_of_numbers.remove(2) # حذف کردن عدد ۲
list_of_numbers.pop(-2) # حذف کردن دومین عضو از انتها
list_of_numbers.pop(1) # حذف کردن دومین عضو از ابتدا (از صفر شروع میشه)
list_of_numbers.index(5) # گرفتن اندیس عدد ۵
list_of_numbers.reverse() # برعکس کردن لیست
list_of_numbers.sort() # مرتب کردن لیست
list_of_numbers.count() # گرفتن تعداد اعضا

for i in list_of_numbers:
    print(i)لیست رو بهتره برای مجموعه‌ای از چیزهایی که هم‌نوعن استفاده بشه، برای مثال لیستی از افراد.تاپل (tuple)تاپل هم شبیه لیسته با این تفاوت که نه میشه چیزی بهش اضافه کرد نه کم کرد. تاپل رو برای در کنار هم قرار دادن مقادیری از نوع‌های مختلف بهتره استفاده کنیم. برای مثال طول و عرض جغرافیایی.p = (1, 2)
p.index(1) # گرفتن اندیس عدد ۱
p.count() # گرفتن تعداد اعضا

x, y = p # x=1, y=2

for i in p:
    print(i)دیکشنری (dict)دیکشنری داده‌ساختاریه که در اون هر مقدار به یک کلید نسبت داده میشه و با استفاده از اون کلید میشه بهش دسترسی داشت. میشه یک کلید رو اضافه یا حذف کرد.num_text = {1: &amp;quotone&amp;quot, 2: &amp;quottwo&amp;quot, 3: &amp;quotthree&amp;quot, 4: &amp;quotfour&amp;quot, 5: &amp;quotfive&amp;quot, 6: &amp;quotsix&amp;quot, 7: &amp;quotseven&amp;quot, 8: &amp;quoteight&amp;quot, 9: &amp;quotnine&amp;quot}
num_text[10] = &amp;quotten&amp;quot # اضافه کردن یک عضو جدید
num_text.get(4) # گرفتن مقدار کلید ۴
num_text.items() # تبدیل دیکشنری به لیستی از تاپل‌ها
num_text.keys() # لیستی از کلیدهای دیکشنری
num_text.values() # لیستی از مقادیر دیکشنری
num_text.update({11: &amp;quoteleven&amp;quot, 12: &amp;quottwelve&amp;quot}) # آپدیت کردن دیکشنری با استفاده از یک دیکشنری دیگه

for key in num_text:
    print(key, num_text[key])

for key, value in num_text.items():
    print(key, value)ست (set)ست شبیه لیسته؛ با این تفاوت که عضو تکراری نداره. در واقع ست یک دیکشنری هستش که همه‌ی مقادیرش None هستن. ست رو هم با {} نشون میدن(!)num_set = {1, 1, 2, 3, 2, 3, 4, 5, 6, 8, 6, 4} # {1, 2, 3, 4, 5, 6, 8}من همه‌ی متدها و کاربرد‌های این داده‌ساختارها رو ننوشتم طبیعتا چون خیلی طولانی می‌شد و سعی کردم بیشتر اون‌هایی که مهم‌تر و کاربردی‌تر هستن رو بنویسم. ولی اگه خودتون دوست دارید بیشتر در موردشون بدونید. هم می‌تونید با کمک توابع dir و help  یا سرچ کردن بیشتر در موردشون اطلاعات بدست بیارید.در قسمت بعد در مورد توابع بخونید.لازمه که توضیح کوتاهی در مورد روند نامنظم این پست‌ها بدم. متاسفانه از اون جایی که خیلی برنامه‌ی مشخصی برای نوشتن این پست‌ها ندارم، این روش پیش رفتن هم برای من خوب نیست و هم برای دوستانی که مدت نامشخصی رو منتظر پست بعدی می‌مونم و من شرمنده‌شون میشم. برای همین تصمیم گرفتم که به جای اینکه تعداد پست‌های زیادی با جزییات بیشتر بنویسم (چیزی که اولش تو ذهنم بود)، سعی می‌کنم تو دو سه تا پست دیگه کلیت مطلب رو جمع کنم. این سری بشه یه مقدمه‌ی خیلی ساده برای یادگیری پایتون.ولی از اونجایی که میدونم این چند قسمت برای یادگیری استفاده از پایتون کافی نیست. دوستانی که مایل باشند تا پایتون رو کامل‌تر و کاربردی‌تر یاد بگیرند رو من می‌تونم به صورت خصوصی و با برنامه‌ی مشخص و دقیق در خدمتشون باشم. اگر صلاح دونستید می‌تونید با بنده تماس بگیرید.موفق باشید.</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Tue, 01 Jan 2019 17:17:49 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت دواپس (DevOps) و اس‌آر‌ای (SRE)</title>
                <link>https://virgool.io/@mehdy/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%AF%D9%88%D8%A7%D9%BE%D8%B3-devops-%D9%88-%D8%A7%D8%B3%D8%A2%D8%B1%D8%A7%DB%8C-sre-lpvwphdkjmub</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2018/06/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%AF%D9%88%D8%A7%D9%BE%D8%B3devops-%D9%88-%D8%A7%D8%B3%D8%A2%D8%B1%D8%A7%DB%8C-sre/ چند وقت پیش ویدیویی در مورد تفاوت دواپس و اس‌آر‌ای از گوگل دیدم که به نظرم به صورت ساده و مختصر همه چیز رو به خوبی توضیح داده بود. من هم سعی می‌کنم چیزهایی که ازش یاد گرفتم رو اینجا بنویسم و به اشتراک بذارم.چون خود ویدیو به صورت مکالمه‌ی بین دو نفره و من مستقلا در مورد خود موضوع می‌خوام بنویسم کمی متفاوت میشه این متن از ویدیو. ولی تلاش می‌کنم دخل و تصرفی تو خود بحث نداشته باشم و صرفا بعضی جاها توضیحات بیشتری بدم.دواپس چیه؟قدیما (نه لزوما از لحاظ زمانی) توسعه‌دهنده‌ها بدون در نظر گرفتن مسائل مربوط به اجرای کد و نگهداری از کدهای در حال اجرا و زیرساخت‌های مربوط بهش، سعی داشتند تا فقط روی توسعه‌ی محصول تمرکز کنن و با سرعت بیشتری قابلیت‌های جدید به محصول اضافه کنن.تیم‌های عملیاتی (Operation teams) هم تمرکزشون روی قابل اطمینان بودن خدمات و بالا نگه داشتن کدهای در حال اجرا بود.توی این شرایط توسعه‌دهنده‌ها تیم‌های عملیاتی رو تحت فشار میذاشتن که تند تند کدهاشون رو وارد مدار کنن و از طرف دیگه عملیاتی‌ها برای حفاظت از شرایط باثبات فعلی در مقابل این درخواست‌ها تا جای ممکن مقاومت می‌کردن و یک دیوار فرضی بین این دو گروه به وجود می‌اومد. این تقابل گاهی تنش‌های زیاد و دشمنی‌های ضمنی به وجود می‌آورد.https://youtu.be/uTEL8Ff1Zvk?t=38sدواپس که از ترکیب دو کلمه‌ی Development و Operations به وجود اومده، یک فرهنگه که شامل یک سری راه و روشه تا اون دیوار فرضی بین توسعه‌دهند‌ه‌ها و عملیاتی‌ها و حتی سایر تیم‌ها رو از بین ببره. دواپس رو میشه به پنج قسمت کلیدی شکوند.کاهش مرزبندی‌های سازمانی؛ با از بین بردن دیوارهای فرضی بوجود اومده بین تیم‌ها می‌تونیم همکاری و بازدهی رو افزایش بدیم.پذیرفتن خراب شدن به عنوان یه اتفاق عادی؛ کامپیوترها ذاتن قابل اطمینان نیستن و در نتیجه نمیشه ازشون انتظار بی‌نقص بودن داشت. و وقتی انسان‌ها رو هم وارد سیستم می‌کنیم بی‌نقص نبودن حتا جدی‌تر میشه.پیاده‌سازی تغییر دادن به صورت آهسته و پیوسته؛ نه تنها تغییرات کوچیک و افزایشی برای مرور و بررسی ساده‌تر هستن، بلکه باعث میشه که اگر یک تغییر این مدلی، باعث ایجاد مشکل در محیط پروداکشن بشه، زمانی که برای درست کردنش لازمه، کمتر بشه. چون به سادگی میشه برش گردوند به حالت قبل.استفاده‌ی حداکثری از ابزارها و اتوماسیون.اندازه‌گیری همه چیز؛ اندازه‌گیری نکته‌ی حیاتیه برای موفقیت! و برای تشخیص اینکه چهار ستون اول (قاعده‌های قبل) موفقیت‌آمیز بوده یا نه، هیچ راهی جز اندازه‌گیری وجود نداره.https://youtu.be/uTEL8Ff1Zvk?t=2m15sاس‌آر‌ای چیه؟اگر دواپس رو به چشم یک تفکر (فلسفه) ببینیم، اس‌آر‌ای دستورالعمل اجرا کردن اون تفکره. یا به زبون خودمون برنامه‌نویس‌ها میشه گفت که اگر دواپس یک اینترفیس بود، اس‌آر‌ای یک کلاسه که به صورت کامل دواپس رو پیاده‌سازی میکنه.https://youtu.be/uTEL8Ff1Zvk?t=2m45sپس با این وجود اس‌آر‌ای باید پنج نکته‌ای که دواپس میگه رو اجرا کنه. از اونجایی که اس‌آر‌ای راه حل گوگله بیاید جزئی‌تر ببینیم چجوری این کار رو انجام می‌ده.کاری که اس‌آر‌ای برای از بین بردن مرزبندی‌های سازمانی انجام میده، به اشراک‌گذاری مالکیت و مسئولیت پروداکشن بین تیم‌های اس‌آر‌ای و توسعه‌دهنده‌هاست. همچنین از ابزارهای یکسانی استفاده میشه تا دید و راه و روش همه در برخورد با پروداکشن یکسان باشه.در مورد پذیرش خراب شدن، اس‌آر‌ای بدون سرزنش افراد، از کالبدشکافی‌ (postmortem) اتفاق استفاده می‌کنه تا مطمئن بشه خرابی که تو سیستم به وجود اومده دقیقا به همون شکل دوباره تکرار نشه. همچنین با استفاده از یک مفهوم به اسم بودجه‌ی خطا تعیین می‌کنه که یک سیستم تا چه حد می‌تونه دچار خرابی و مشکل بشه؛ که این باعث میشه تا خراب شدن به عنوان یک اتفاق عادی دیده بشه.برای اجرای تغییرات آهسته و پیوسته از تکنیک انتشار قناری استفاده میشه که قبل از اینکه یه تغییر رو به صورت کلی و برای همه‌ی کاربرها منتشر بشه، فقط برای درصدی از اونا منتشر بشه و در صورتی که دچار مشکل شد بدون اینکه همه تحت تاثیر قرار بگیرن سریع برگرده به حالت قبل.و تا جای ممکن سعی میشه تا کارهای دستی کم بشه. برای همین کارهای سخت و تکراری رو باید اندازه‌گیری کرد و در انتها  سعی بشه تا اون کارها خودکار بشن.و در نهایت اندازه‌گیری کارهای سخت و تکراری، اندازه‌گیری سلامت و قابل اطمینان بودن سیستم‌ها مثال‌هایی برای اندازه‌گیری کردن همه چیزه.همونجوری که تو فضای برنامه‌نویسی یک کلاس وقتی یه اینترفیس رو پیاده‌سازی می‌کنه می‌تونه متدهای دیگه‌ای که ربطی به اینترفیس ندارن رو داشته باشه. در واقعیت هم اس‌آر‌ای (کلاس) می‌تونه تکنیک‌ها و قواعدی داشته باشه که لزوما ربطی به دواپس (اینترفیس) نداره. یا حتی ممکنه اون کلاس چند اینترفیس مختلف رو پیاده‌سازی کنه. این به معنیه که راه و روشی که اس‌آر‌ای پیش می‌گیره و تکنیک‌هایی که استفاده می‌کنه لزوما همونی نیست که افراد دیگه‌ای که دواپس رو پیاده‌سازی می‌کنن انجام میدن.پس بذارید تا در قسمت بعد که در مورد چیستی و تفاوت SLO، SLI و SLA و تاثیرشون تو موفق شدن اس‌آرای هست بیشتر به این مسئله بپردازیم.در نتیجه، دواپس و اس‌آرای دو چیز مقابل هم نیستند که یکی بهتر از اون یکی باشه. برعکس دوتا دوست صمیمی هستند که کمک می‌کنن تا موانع سازمانی رو از بین ببریم و  با سرعت بیشتری نرم‌افزار‌های بهتر بسازیم.</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Sat, 16 Jun 2018 13:21:38 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش گام به گام پایتون - قسمت دوم</title>
                <link>https://virgool.io/python/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-sjpbzan47qke</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2018/04/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85/ در قسمت قبل یاد گرفتیم که متغیرهایی از نوع‌های مختلف تعریف کنیم و ازشون استفاده کنیم(در حد عملگرها). تو این قسمت می‌خوام که در مورد کنترل جریان برنامه بنویسم. تا الان یه سری متغیر داریم که می‌تونیم یه سری عملیات محدود روشون انجام بدیم، حالا نیازه که بتونیم با همین متغیرها مسیر برنامه رو هدایت کنیم به سمتی که می‌خوایم. برای این کار از شرط و حلقه استفاده می‌کنیم.شرطبرای تغییر مسیر برنامه شرط حیاتیه! اگر فلان درست بود این مسیر رو ادامه بده، اگر نه این یکی مسیر رو ادامه بده. بریم یه سری کد ببینیم.a = True
b = False

if a and b:
    print(&amp;quota and b is true&amp;quot)

if a or b:
    print(&amp;quota or b is true&amp;quot)

if b:
    print(&amp;quotb is true&amp;quot)
else: # زمانی که شرط درست نباشه این قسمت از کد اجرا میشه
    print(&amp;quotb is not true&amp;quot)
    
if not a: # اگر
    print(&amp;quota is false&amp;quot)
elif b: # یا اگر
    print(&amp;quota is true and b is true&amp;quot)
else: # در غیر این صورت
    print(&amp;quota is true and b is false&amp;quot)شرط نقش اساسی‌ای تو برنامه‌نویسی داره. در واقع شرط نقش اساسی‌ای تو زندگی داره! با شرط دوراهی/چندراهی به وجود میاد، انتخاب به وجود میاد و الی آخر!حلقهتکرار! دنیای برنامه‌نویسی پر از تکراره. خیلی وقت‌ها تغییر مسیر برنامه تکرار همون مسیریه که تا الان اومده. تو پایتون دو نوع حلقه داریم. حلقه‌ی شرطی(while) و حلقه‌ی شمارشی(for i in x).a = 0
while a &lt; 10: # تکرار کن تا زمانی که شرط درست باشه
    print(a)
    a += 1

for i in range(0, 10, 1): # از ۰ تا ۱۰ بشمار
    print(i)دو حلقه‌ی بالا دقیقا یک کار رو انجام می‌دن. ولی یکی با استفاده از شرط و دیگری با شمارش. تابع range کارش اینکه از یک عدد تا عدد دیگه‌ای با قدم‌های ثابتی بشماره و یک لیست ازشون درست کنه. تو این مثال یک لیست از ۰ تا ۱۰  با گام‌های یک واحد یک واحد میسازه و بعد حلقه‌ی ما به ازای هر کدوم از اعضای اون لیست تیکه کدش رو اجرا می‌کنه و هر بار عددی که بهش رسیده رو میذاره داخل متغیر i.تو قسمت بعد که با لیست و دیکشنری آشنا می‌شیم استفاده‌ی for i in x رو خیلی بیشتر می‌بینیم.پ.ن: از این به بعد سعی می‌کنم تا پست‌های کوچیک‌تری بنویسم و در عوض زود به زود بنویسم که هم نوشتن رو برای من راحت می‌کنه و هم شما سریع‌تر به پست بعدی می‌رسید. ممنون میشم اگر نظرتون رو بهم بگید.تا قسمت بعد!</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Sat, 07 Apr 2018 02:27:30 +0430</pubDate>
            </item>
                    <item>
                <title>تلنگر ۱۳!</title>
                <link>https://virgool.io/@mehdy/%D8%AA%D9%84%D9%86%DA%AF%D8%B1-%DB%B1%DB%B3-yg7bsjzkj6mp</link>
                <description>همه چیز از دوران بلوغ شروع شد. فکر کردن به خودم، اطرافم، زندگی، فلسفه و همه‌ی چیزهایی که همه تو یه دوره‌ای درگیرش میشن. مسیر مشخصه و همه می‌شناسیمش. بعد از چند سال دست و پنجه نرم کردن با این مسائل، حدود اواخر دبیرستان، کم کم شروع کردم به کنار اومدن با خودم و به قولی از آب و گل در اومدم.عاشق فیزیک و ریاضی بودم. هدفم این بود که فیزک کوانتم بخونم و دانشمند نظری بشم. به یادگیری زبون علاقه داشتم. برنامه‌نویسی و سرکله زدن با کامپیوتر هم همیشه بود. عاشق ویولن و موسیقی کلاسیک. همینقدر ساده!در طول کلنجار رفتن با خودم سعی کرده بودم خیلی از کلیشه‌ها، سنت‌ها، «همیشه اینجوری بوده و اینجوری میمونه‌»ها رو دوباره بهشون فکر کنم و یا با منطق انتخابشون کنم و یا حذفشون کنم. همه‌ی این‌ها باعث میشد کلی کله شق باشم. عاشق علم و مطالعه ولی متنفر از مدرسه. در نتیجه نمره هیچوقت برام مهم نبود.  از همه‌ی خونواده و فک و فامیل نصیحت که فیزیک کوانتم تو ایران به جایی نمیرسه و کار و پول و بقیه‌ی خزعبلات! از من بیخیالی! عاشق فیزیک بودم و دلیل لازم و کافی برای تصمیمم بود.بعد از کنکور مهاجرت کردم به تهران. کار پیدا کردم. خونه گرفتم. یه دانشگاهی هم ثبت نام کردم. یه زندگیه جدید. با مسائل جدی‌تری روبه‌رو میشدم و بر خلاف قبل که سعی می‌کردم خیلی عاقلانه‌تر بگیرم و کله شق نباشم! از قضا همین کار رو هم کردم!به صورت ناخودآگاه شروع کردم به گرفتن تصمیماتی که قبلا حتی بهشون فکر نمی‌کردم. تصمیمات درست! احتمالا به خاطر اینکه قبلا خیلی احساس مسئولیت در قبال تصمیماتم نداشتم و بعدش قضیه برام جدی‌تر شده بود. کلاس فرانسه که قبل از کنکور فرصت نشد برم رو نرفتم چون باید وقتم رو برای کارهای مهم‌تر(!) میذاشتم. کلاس ویولن رو ادامه ندادم به همون دلیل! بلاگ‌نویسی و ساختن کانال یوتیوب که تازگی خیلی بهشون علاقه‌مند شده بودم رو براشون وقت نمیذاشتم به همون دلیل! و تقریبا خودم رو از هر لذتی محروم می‌کردم تا وقتم رو برای کارهای مفیدتر بذارم!دو هفته قبل یه پست اینستاگرام در مورد چالش ۱۳ دیدم. یه جور بازی(؟). ثبت نام کردم. داستان بازی رو اینجا می‌تونید بخونید. اتفاقی که برای من افتاد این بود که مثل بقیه اول سعی در کشف معمایی که وجود نداشت داشتم. بعد از مدتی دیدم چیزی بولدتر از رنگ کردن تابلوها نیست. شروع به رنگ کردن کردم. به محض شروع، خاطراتی از نقاشی کشیدن‌هام و رنگ کردن کتاب رنگ آمیزی بزرگسالانم که پر از لذت و آرامش بودن فکرم رو به خودش مشغول کرد و بعد از چند دقیقه‌ای به خودم آمدم که غرق در رنگ آمیزی شدم و بازی رو فراموش کردم. برای همین بیخیال شدم و سعی کردم به معماهای اصلی(!!) بپردازم. بازی تموم شد. توضیح دادن که ماجرا از چه قراره. این آخرین و واضح‌ترین تلنگر برای من بود. تلنگر ۱۳!دقیقا از بعد از کنکور شروع کردم به حس افسوس! که قبلا بهتر بودم. از خودم راضی‌تر بودم. نمی‌دونستم چرا؟! بعد از این داستان‌ها تصمیم گرفتم تا بیشتر به علایقم به پردازم و تعادلی بین کله شق بودن قبل از کنکورم و محتاط بودن بعدش برقرار کنم.</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Sun, 25 Mar 2018 05:13:17 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش گام به گام پایتون - قسمت اول</title>
                <link>https://virgool.io/python/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-jyy4spboaua7</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2018/01/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84/ در قسمت قبل توضیحاتی کلی در مورد پایتون دادم و خیلی سریع و کوتاه به کد «سلام، دنیا!» اشاره کردم. در این قسمت می‌خوام در مورد مقدمات پایتون بنویسم و کم کم بریم سراغ کد نوشتن.نوشتن و اجرای کددر قسمت قبل، کد «سلام، دنیا!» رو نوشتم ولی توضیحی در مورد اجراش ندادم.کدهای پایتون رو باید در فایل‌هایی با پسوند py نوشت و بعد به وسیله‌ی مفسر پایتون کد رو اجرا کرد. برای مثال اگر کد «سلام، دنیا!» رو در فایلی به اسم helloworld.py بنویسیم و ذخیره کنیم، با اجرای این دستور در شِل (ترمینال لینوکس و مک یا پاورشِل ویندوز) می‌تونیم کد رو اجرا کنیم.$ python3 helloworld.pyیا می‌تونید دستور python رو اجرا کنید و در شِل پایتون کد رو خط به خط بنویسد و خط به خط اجرا کنید. این قابلیت برای آزمایش کدهای کوچک و دنبال کردن روند اجرای کد خیلی می‌تونه مفید باشه.خوب تا اینجا یاد گرفتیم چجوری یه کد ساده پایتون رو بنویسیم و اجرا کنیم.متغیرها و تایپ‌هاتعریف متغیر تو پایتون به سادگی کدهای زیره.some_var = 42تو پایتون نوع متغیرها نوشته نمیشه و خود مفسر موظفه تا نوعش رو تشخیص بده. تایپ‌های زیادی تو پایتون داریم که فعلا چند تایپ ساده و پرکاربرد رو معرفی می‌کنم و بعدا در ادامه با تایپ‌های بیشتری آشنا خواهیم شد.دو نوع int و float برای اعداد صحیح و اعشار هستند. int_var = 314 # int
float_var = 3.141592 # floatنوع ‌bool هم برای نگهداری درست و غلط.true_val = True
false_val = Falseبرای کاراکترها پایتون تایپ str رو داره که از یونیکد هم پشتیبانی می‌کنه. تو پایتون با سه روش میشه متغیر از نوع رشته تعریف کرد.single_quote_str = &#039;good for strings containing double quote(&amp;quot)&#039;
double_quote_str = &amp;quotgood for strings containing single quote(&#039;)&amp;quot
triple_quote_str = &amp;quot&amp;quot&amp;quotgood for long string containing both single quote(&#039;)
                                and double quote(&amp;quot) and multi-line text like this one&amp;quot&amp;quot&amp;quotاگر جایی خواستید با نوع یه متغیر رو بدونید می‌تونید از تابع type استفاده کنید.unknown_var = 42
print(type(unknown_var)) # prints &lt;class &#039;int&#039;&gt;

other_unknown_var = &amp;quotsome text&amp;quot
print(type(unknown)) # prints &lt;class &#039;str&#039;&gt;عملگرهاالان که یاد گرفتیم چجوری متغیر تعریف کنیم، می‌تونیم بریم سراغ اینکه چجوری از این متغیرها استفاده کنیم.عملگرهای محاسباتیa = 5
b = 4

print(a + b) # 9
print(a - b) # 1
print(a * b) # 20
print(a / b) # 1.25
print(a // b) # 1 تقسیم صحیح
print(a % b) # 1 باقیمانده
print(a ** b) # 625 توانهمچنین با یک سری از این عملیات‌ها رو میشه برای رشته هم انجام داد.a = &amp;quotfirst&amp;quot
b = &amp;quotsecond&amp;quot

print(a + b) # firstsecond
print(a * 2) # firstfirst تکرار رشتهو از اونجایی که True و False در واقع ۱ و ۰ هستند در عملگرهای محاسبه‌ای به عنوان ۱ و ۰ عمل می‌کنن.print(True + True) # 2
print(False * True) # 0عملگرهای مقایسه‌ایa = 5
b = 4

print(a &gt; b) # True بزرگ‌تر
print(a &lt; b) # False کوچک‌تر
print(a &gt;= b) # True بزرگ‌تر مساوی
print(a &lt;= b) # False کوچک‌تر مساوی
print(a == b) # False تساوی
print(a != b) # True نامساویعملگرهای منطقیa = True
b = False

print(a and b) # False
print(a or b) # True
print(not a) # False
print(not b) # Trueتا قسمت بعد!</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Thu, 25 Jan 2018 19:43:33 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش گام به گام پایتون - قسمت صفر</title>
                <link>https://virgool.io/python/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%B5%D9%81%D8%B1-z3gvqwf6zsxl</link>
                <description>اصل این پست در بلاگ شخصی‌ام منتشر شده https://mehdy.me/fa/posts/2018/01/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%D8%B5%D9%81%D8%B1%D9%85/ من تصمیم گرفته‌ام که یه سری پست آموزشی در مورد پایتون بنویسم و از صفر شروع کنم و تا هرجایی که تونستم ادامه بدم. تو این قسمت می‌خوام در مورد خود پایتون بنویسم (از تاریخچه تا وضعیت حال حاضر و نوشتن اولین برنامه با پایتون).خلاصه‌ای از پایتونپایتون یه زبون برنامه‌نویسیه که سال ۱۹۹۱ توسط گویدو ون روسوم ساخته شد و در حال حاضر جزو ترندهای دنیاست و به صورت گسترده ازش استفاده می‌شه. پایتون مفسری هست و برای اجرا شدن نیازه که مفسر پایتون نصب شده باشه. زبون مالتی-پارادایم هست و میشه باهاش دستوری، فانکشنال و شی‌گرا کد نوشت. پایتون در اسکریپت‌نویسی (معمولا برای استفاده در سرورها)، ساخت برنامه‌های تحت وب و کارهای دیتایی و هوش مصنوعی خیلی زیاد استفاده میشه و تو این زمینه‌ها ابزارهای متنوع و خفنی باهاش ساخته شده که میشه ازشون استفاده کرد.پایتون ۲ یا ۳ (!)محاله که سراغ پایتون بخواید برید و به این مسئله نخورید!۲ نسخه از پایتون داریم که باهم سازگار نیستند تقریبا و کدهای هرکدوم به سادگی با نسخه‌ی دیگه اجرا نمیشه یا ممکنه اجرا بشه و همون نتیجه رو نده!!!پایتون ۳ جدیدتره و تقریبا همه در حال مهاجرت بهش هستند و اگر الان می‌خواید شروع کنید به کد زدن حتما از پایتون ۳ استفاده کنید مگر در شرایط خاص (وابستگی به کدی که فقط با پایتون ۲ کار می‌کنه). در این سری آموزش‌ها هم پایتون ۳ استفاده میشه.پایتون، سایتون، جایتون، آیرون‌پایتون، آناکوندا، پای‌پای و ...نسخه‌های مختلفی از پایتون وجود داره که میشه استفاده‌های مختلفی ازشون کرد ولی تا پیشنهاد می‌کنم تا زمانی که نیازی ندارید با هرکدوم از این نسخه‌ها کار کنید به همون پایتون اصلی (CPython) (سی‌پایتون همون پایتون هست) کار کنید. من هم در طول این مسیر از همون پایتون اصلی استفاده می‌کنم.پایتون کنده یا سریعه؟ بازار کار داره؟ کجاها ازش استفاده کردن؟اگر بخوام مهم‌ترین ویژگی پایتون رو نام ببرم قطعا «سادگی و آسانی» رو انتخاب می‌کنم. پایتون رو میشه خیلی سریع یاد گرفت (نه مسلط شد!!!) و میشه خیلی سریع باهاش کد زد و به نتیجه رسید.سرعت (اجرا) یه ویژگی نسبیه و نمی‌شه گفت پایتون زبون سریعیه یا نه! در درجه‌ی اول باید دید که با چه زبونی مقایسه میشه. کلی زبون از پایتون سریع‌ترن و پایتون هم از کلی زبون سریع‌تره. در درجه‌ی دوم پارامترهای مختلفی تو سرعت تاثیر دارن. مثل اینکه پایتون ۲ هست یا ۳ (۲ سریع‌تره معمولا). خود سی‌پایتون اجرا می‌کنه یا نسخه‌های دیگه (مثلا پای‌پای می‌تونه تا زیادی سریع‌تر باشه) و اینکه کدی که داریم می‌سنجیم بهینه است؟ و اصلا پایتون زبون مناسبی برای پیاده‌سازی این کد هست یا نه؟اگر سرعت اجرا براتون خیلی مهمه و می‌دونید چرا (با آمار و اطلاعات) احتمالا خودتون بهتر می‌تونید تشخیص بدید پایتون مناسب شما هست یا نه. یا اینکه چجوری از پایتون استفاده کنید تا به اون انتظاراتتون برسید. اما اگه فقط دوست دارید چیزی که استفاده می‌کنید سریع‌تر باشه یا فکر می‌کنید(!) به سرعت‌های خیلی بالا نیاز دارید باید بگم که به احتمال خیلی زیاد پایتون بیش از حد نیاز شما توان داره. در استفاده‌های معمولی مثل برنامه‌های تحت وب پایتون به اندازه‌ی کافی سریع هست که بشه تو مقیاس‌های خیلی بزرگ استفاده کرد. برای نمونه پینترست، اینستاگرام و کافه بازار هم از پایتون دارن استفاده می‌کنن. اساسا هیچ زبون نمی‌تونه سرعتش در حد این مقیاس‌ها باشه و برای رسیدن به این اندازه‌ها راه و روش‌های دیگه‌ای وجود داره که خیلی در این بحث نمی‌گنجه.در مورد بازار کار دو نکته بیشتر ندارم که بگم. اول اینکه پایتون هم در ایران هم در دنیا بازار کار داره و بازا کار داغی هم داره! دوم و آخر اینکه شما در هر چیزی تخصص داشته باشید، اگر بازار کار هم نداشته باشه براش ایجاد میشه!نصب پایتون و ویرایشگر برای پایتونپایتون کراس-پلتفرم و تقریبا یعنی روی همه‌ی سیستم عامل‌ها قابل اجرا و استفاده است.برای نصب پایتون اگر از لینوکس یا مک استفاده می‌کنید که به صورت پیشفرض نصبه و اگر از ویندوز استفاده می‌کنید به سایت خودش برید و پایتون ۳ رو دانلود و نصب کنید :)برای ویرایشگر یا IDE اگر از ویم یا ایمکس استفاده می‌کنید که به استفاده از همون ادامه بدید. اگر از محصولات جت‌برینز استفاده می‌کنید که پایچارم گزینه‌ی شماست و اگر از چیزهای دیگه(اتم، سابلایم، وی‌اس‌کد و ...) استفاده می‌کنید که فقط دنبال پلاگین پایتون براش بگردید. و اگر از هیچ کدوم تا حالا استفاده نکردید یا در کل برای پایتون دنبال ابزار جدیدی هستید من به شما پایچارم رو پیشنهاد می‌کنم.سلام، دنیا!print(&amp;quotسلام، دنیا!&amp;quot)به همین سادگی اول برنامه پایتون رو نوشیم :))امیدوارم تا اینجا براتون مفید بوده باشه و اگر هم تا اینجاش رو خودتون بلد بودید عجله نکنید و منتظر پست‌های بعدی باشید.بروزرسانی: پست بعد رو اینجا می‌تونید ببینید</description>
                <category>مهدی خوشنودی</category>
                <author>مهدی خوشنودی</author>
                <pubDate>Mon, 22 Jan 2018 01:55:06 +0330</pubDate>
            </item>
            </channel>
</rss>