<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد امین خشخاشی‌مقدم</title>
        <link>https://virgool.io/feed/@m30m</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 17:39:34</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/4280/avatar/SpLtdP.png?height=120&amp;width=120</url>
            <title>محمد امین خشخاشی‌مقدم</title>
            <link>https://virgool.io/@m30m</link>
        </image>

                    <item>
                <title>اندرباب شغل و ادامه تحصیل</title>
                <link>https://virgool.io/@m30m/%D8%A7%D9%86%D8%AF%D8%B1%D8%A8%D8%A7%D8%A8-%D8%B4%D8%BA%D9%84-%D9%88-%D8%A7%D8%AF%D8%A7%D9%85%D9%87-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84-egebbf4lipkd</link>
                <description>توی یک سال گذشته، یکی از اصلی‌ترین دغدغه‌هام این بود که بعد از خوندن ارشد قراره چیکار بکنم؟ دکترا بخونم یا برم کار کنم؟ استارتاپ بزنم یا نه؟ برم سمت کارهای یادگیری ماشین یا مهندسی نرم‌افزار؟ توی چه مدل شرکتی کار بکنم؟ و کلی سوال بزرگ و کوچیک دیگه… در همین راستا شروع کردم به مطالعه و توی این پست دوست دارم مطالبی که یاد گرفتم و به نظرم مفید بود رو براتون خلاصه کنم.من بیل گیتس نخواهم شدهر کدوم از ما از بچگی کلی آرزو داشتیم که وقتی بزرگ شدیم می‌خوایم چیکاره بشیم و احتمالاً هنوز هم داریمشون. شاید الان که بزرگ‌تر شدیم فضانورد و آتش‌نشان شدن جزو گزینه‌هامون نیست، علایقمون دقیق‌تر شده و واقع‌گرایانه‌تر فکر می‌کنیم. کلی آدم موفق توی رشته‌مون می‌شناسیم، موفقیت‌هاشون رو خوندیم و بیشتر دوست داریم شبیه اونها بشیم. من هم وضعیت ذهنی مشابهی داشتم اما کتاب Outliers بهم دید خیلی واضح‌تری از وضعیت داد. موضوع اصلی کتاب اینه که آدم‌های خیلی موفق چطوری به این موفقیت رسیدند و چه عواملی توی مسیر موفقیتشون تاثیر گذار بوده. نویسنده کتاب یکی از مهم‌ترین عوامل موفقیت رو شانس می‌دونه، این آدم‌ها در زمان و مکان خیلی مناسبی برای کسب چنین موفقیت‌هایی بودند. مثلاً بیل‌گیتس، استیو بالمر، استیو جابز، و اریک اشمیت همشون بین سال ۱۹۵۴ تا ۱۹۵۶ متولد شده بودند، در دوران جوونیشون زبان‌های برنامه‌نویسی گسترش پیدا کرده بودند و این افراد فرصت این رو داشتند که شرکت خودشون رو بزنن و موفق بشن. اگر دیرتر متولد شده بودند، توی این زمان ایده‌آل هنوز توی دبیرستان بودند و اگر هم زودتر متولد شده بودند، توی اون دوره احتمالاً داشتند برای یه شرکت بزرگی مثل IBM کار می‌کردند و دیگه فرصت شروع یه کار جدید رو نداشتند. کتاب پر از مثال‌های این مدلی هستش و خوندنش خالی از لطف نیست. البته کلی پارامتر دیگه هم برای موفقیت نیاز هستش که اونها شانسی نیست و به پشتکار و استعداد فرد هم وابسته هستش اما فقط وقتی تمام این پارامترها در حالت ایده‌آلشون قرار می‌گیرن چنین افرادی در جامعه ظهور پیدا می‌کنن. حالا وضعیت این افراد رو با خودمون مقایسه کنید، وضعیت تحریم‌ها، فرصت‌هایی که به خاطر ایرانی بودن از دست می‌دیم، کرونا و رکود اقتصادی و … شاید همه‌ی این شرایط باعث بشه در ادامه فرصت‌های خیلی خوبی برامون ایجاد بشه اما فعلاً که وضعیت چندان جالب نیست. قسمت دوم پادکست جدید بیل‌گیتس هم به همین موضوع نابرابری می‌پردازه و از عبارت «لاتاری جنینی» برای توصیفش استفاده می‌کنه. یعنی یه تعداد کمی از افراد شانس اوردن و در خانواده‌ای متولد شدن که باعث شده نسبت به بقیه مردم بیشتر پیشرفت کنن.حالا چرا مهم هستش که از این پارامترهای تصادفی و تفاوت‌هایی که داریم آگاه باشیم؟ چون باعث می‌شه خیلی تلاش نکنیم تا مسیر همون افراد رو طی کنیم و به جاش مسیرهای منطقی‌تری رو در نظر بگیریم. مثلاً نمی‌ریم از دانشگاه انصراف بدیم و شروع کنیم استارتاپ خودمون رو بزنیم. یه مزیت دیگه‌ش هم اینه که مقایسه‌های منطقی‌تری بین خودمون و دیگران انجام می‌دیم و خودمون رو بهتر ارزیابی می‌کنیم. مثلاً کمتر ناراحت می‌شیم از این که چرا نتونستیم فلان دانشگاه قبول بشیم، چون می‌دونیم که کلی پارامتر غیر قابل کنترل هم توی این تصمیم‌گیری‌ها دخیل بوده. به طور خلاصه پذیرفتن اینجور مسائل باعث می‌شه ذهنمون آروم‌تر بشه و شفاف‌تر و عملیاتی‌تر به خودمون و آینده‌مون فکر کنیم.دعای آرامش (Serenity Prayer) می‌تونه خلاصه‌ی خیلی خوبی برای همه‌ی این حرف‌ها باشه:خدایا به من عطا کن آرامش قبول کردن چیزهایی که نمی‌تونم تغییر بدم، شجاعت تغییر دادن چیزهایی که می‌تونم تغییر بدم، و خردی که باهاش بتونم این دو دسته رو تشخیص بدم.تجربه‌های کوتاهاگر بین چند گزینه‌ی مختلف شک دارید، می‌تونید به مدت کوتاهی تجربه‌شون کنید و ببینید آیا واقعاً از اون کار خوشتون میاد یا نه. مثلاً من تجربه‌ی خیلی خوبی در کارکردن توی استارتاپ و شرکت‌های نرم‌افزاری کسب کرده بودم، اما هیچ‌وقت تجربه‌ی استارتاپ زدن رو نداشتم و فکر می‌کردم شاید بتونم بعد ارشدم برم سمت استارتاپ زدن. به طور اتفاقی دانشگاهمون یه درسی ارائه می‌داد به نام Lean Startup که در طی ترم باید با بقیه دانشجوها گروه می‌شدیم، بهمون بودجه می‌دادن و باید روی ایده یک استارتاپ کار می‌کردیم و در نهایت اون رو ارائه می‌دادیم. این درس وقت زیادی ازم نگرفت ولی یه تجربه‌ی کوچیک و واقعی از مراحل مختلف استارتاپ بود و بعدش به این نتیجه رسیدم که این کار فعلاً برام مناسب نیست. مشابه این اتفاق با برداشتن کورس‌های پژوهش‌محور برام اتفاق افتاد و فهمیدم PhD گرفتن هم برام خیلی جالب نیست!این که آدم چقدر می‌تونه به اون تجربه کوتاه برای تصمیم‌گیری استناد کنه بستگی به مدت زمان و خود اون کار داره، مثلاً توی تجربه‌ی کار صنعتی، عموماً چند ماه اول خیلی خوبه و خوش می‌گذره (دوران ماه عسل) و تصمیم‌گیری بر اساس اون کار غلطیه اما شاید با چند هفته تجربه‌ی راننده تاکسی بودن دستمون بیاد که چقدر از این کار خوشمون میاد. چیزی که از مدت زمان مهم‌تر هستش اینه که چقدر تجربه‌مون به محیط واقعی نزدیک هستش، مثلاً شرکت‌ها سعی می‌کنند برای کارآموزهاشون محیط خیلی خوبی رو آماده کنند و مسائل قشنگ و شسته‌رفته بهشون بدن تا جذب بشن اما جنس کارهای کارمند عادی اون شرکت لزوماً اینطوری نیستش. یا کارهایی که به عنوان یه دانشجوی ارشد توی یه گروه پژوهشی انجام خواهید داد خیلی فرق می‌کنه با کارهایی که به عنوان یه دانشجوی دکترا انجام می‌دید و توانایی‌ها و مسئولیت‌های متفاوتی خواهید داشت.این تجربه‌های کوتاه ممکنه خیلی شبیه از این شاخه به اون شاخه پریدن باشه که در نگاه اول کار جالبی نیست ولی اگر هوشمندانه انجام بشه می‌تونه خیلی سودمند باشه. منظور از هوشمندانه اینه که ریسک و سودش رو بررسی کنیم و احساسی تصمیم نگیریم. سودمندی اصلی این تجربه‌ها افزایش دامنه دانش هستش؛ شاید بگید این روزها دیگه دانش سطحی خیلی به درد نمی‌خوره و همه دنبال متخصص می‌گردن اما من خیلی موافقشم نیستم، هم به دلیل تجربیات شخصی خودم و هم استدلال‌هایی که توی کتاب Range می‌تونید درموردشون بیشتر بخونید.علاقه‌تون رو دنبال نکنید!کتاب So Good They Can’t Ignore you یکی از کلیدی‌ترین کتاب‌هایی بود که در این دوران خوندم و حرف اصلیش همین بود که «علاقه‌تون رو دنبال کنید» به عنوان یک قطب‌نما برای انتخاب شغل خیلی پیشنهاد بد و غیرکاربردی هستش. در قسمت اول کتاب در مورد این صحبت می‌شه که چرا این توصیه خوبی نیست و در قسمت دوم نویسنده سعی می‌کنه چارچوب فکری بهتری برای تصمیم‌گیری در مورد مسیر شغلی ارائه بکنه. شعار «علاقه‌تون رو دنبال کنید» باعث می‌شه همش به این فکر کنیم که آیا من به کار فعلیم علاقه‌مند هستم یا نه، اما به این فکر نمی‌کنیم که چقدر تو کار فعلیمون توانمند هستیم، چقدر جای پیشرفت داریم، اصلاً چقدر علایقمون رو می‌تونیم در یک مسیر شغلی دنبال کنیم! یکی از نکاتی که کتاب بهش اشاره می‌شه اینه که لزومی نداره از همون اول به شغلتون علاقه‌مند باشید و هر چقدر توی شغلتون خبره‌تر باشید، رضایتتون از شغلتون هم بیشتر می‌شه حتی برای شغل‌هایی مثل منشی دفتر که لزوماً شغل رویایی افراد نیست. نویسنده پیشنهاد می‌کنه که سعی کنیم به جای مرتب عوض کردن شغلمون (در جستجوی شغل ایده‌آل) سرمایه شغلی‌مون (Career Capital) رو گسترش بدیم تا بتونیم انتخاب‌های بهتر و بیشتری در ادامه مسیر شغلیمون داشته باشیم. دقت کنید که این پیشنهاد بر خلاف پیشنهاد قبلی (تجربه‌های کوتاه) نیست و باعث می‌شه تجربه‌های کوتاهمون رو هم هدفمندتر انتخاب کنیم. سعی می‌کنم با یک داستان نیمه واقعی این رو بهتر نشون بدم:داوود یک برنامه‌نویس backend با  ۳ سال سابقه کار هستش که به علوم داده علاقه‌مند هست. داوود در کنار کار اصلیش وقت گذاشته و چند کورس آنلاین مرتبط با علوم داده پاس کرده و الان دوست داره که یه شغل مرتبط با علوم داده داشته باشه.سناریو اول:داوود مستقیم برای شغلی با عنوان دانشمند داده در شرکت محبوب «داده گستران داده محور» اپلای می‌کنه. این شرکت رزومه‌های زیادی دریافت کرده و اکثر این افراد هم کورس‌های مربوطه رو پاس کردند اما از رزومه داوود خوشش میاد و به اون پیشنهاد کار به عنوان دانشمند داده تازه‌کار (جونیور) می‌ده که حقوقش از حقوق فعلیش کمتره. داوود چون دوست داره علاقه‌ش رو دنبال کنه قبول می‌کنه و مشغول به کار می‌شه. اما بعد یک سال می‌بینه که کارهاش تکراری شده و شغلش اون مدلی که فکر می‌کرد و دوست داشت نیست. داوود کمی سرخورده شده و مجبور می‌شه که دوباره اپلای کنه، یا باید یه شانس دیگه به علوم داده توی یه شرکت دیگه بده و بپذیره که حقوقش تا یک سال آینده هم افزایش خاصی نخواهد داشت یا برگرده به backend که در این صورت تجربیات و زحمات یک سال اخیرش بی‌ثمر می‌مونه.سناریو دوم:داوود برای شغلی با عنوان مهندس داده در شرکت محبوب «داده گستران داده محور» اپلای می‌کنه. این شرکت از رزومه داوود خوشش میاد چون هم تجربه‌ی backend داشته و هم مفاهیم علوم داده رو بلده و بهش پیشنهاد کار با حقوقی معادل حقوق فعلیش می‌ده. داوود قبول می‌کنه و مشغول به کار می‌شه. داوود تو محل کارش با دانشمندان داده از تیم‌های مختلفی در ارتباط هستش و می‌بینه که چه مدل کارهایی انجام می‌دن. بعد از یک سال تعامل با اونها، می‌بینه که کار این افراد اونقدرا هم براش جذاب نیست، کار فعلیش رو بیشتر دوست داره و تصمیم می‌گیره که همین مسیر شغلی رو ادامه بده.حالا فرق‌های اصلی این دو تا سناریو چیه؟ تو سناریو اول داوود از تجربیات backendش برای شغل بعدیش هیچ استفاده‌ای نمی‌کنه، اما این تجربیات تو سناریو دوم به کمکش میاد و باعث می‌شه حقوق بیشتری بگیره. علاوه بر این تو سناریو دوم داوود آهسته‌تر حوزه کاریش رو عوض می‌کنه تا هم درک کامل‌تری نسبت به علایقش داشته باشه و هم ریسک کمتری تو آینده شغلیش بکنه.یکی دیگه از اشتباهات رایجی که ممکنه تو تصمیم‌گیری‌های شغلیمون داشته باشیم، ارزیابی شغل بر اساس خروجیش هستش. مثلاً شما ترجیح می‌دید که به عنوان یک دانشمند داده توی یک فروشگاه اینترنتی مشغول به کار بشید تا توی یک شرکت تولید تن ماهی. چون به نظرتون محصول نهایی شرکت اول (فروشگاه اینترنتی)  جالب‌تر از شرکت دوم (تن ماهی) باشه. اما در نهایت کار شما تحلیل داده‌های فروش هستش و حتی ممکنه در شرکت تن ماهی، داده‌های متنوع‌تر و جذاب‌تری برای پردازش داشته باشید (مثلاً بفهمید کدوم محله‌های تهران کمتر تن‌ماهی می‌خورن!). این اتفاق خیلی تو AI و ML می‌افته؛ همه خروجی‌های deep mind و GPT-3 و ... رو می‌بینن و فکر می‌کنن که کار روزمره‌شون هم به اندازه اون خروجی‌ها جذاب خواهد بود در صورتی که اون دمو های جذاب حاصل کار چندین تیم و چندین سال پژوهش و مهندسی هستش.حرف آخردر طی این مسیر کلی تصمیم بزرگ و کوچیک خواهید گرفت، بعضی‌هاشون مثل انتخاب کشور مقصد برای ادامه تحصیل تاثیر بلندمدت بیشتری خواهند داشت، اما خیلی‌هاشون هم تاثیر اونقدر جدی نخواهند داشت. این پست تشبیه خیلی جالبی انجام می‌ده و می‌گه شغل‌های نسل‌های قبلی مثل تونل بودند؛ ملت توی جوونی وارد تونل می‌شدند و دیگه خیلی گزینه‌ای نداشتند به جز ادامه دادن مسیر تونل. ۳۰ سال بعد هم بازنشسته می‌شدن و از سمت دیگر تونل بیرون میومدن. اما الان دیگه اینطوری نیست، شما راحت‌تر می‌تونید شغلتون رو عوض بکنید، یه مهارت جدید یاد بگیرید و توی مسیر شغلیتون تغییر جهت بدید یا سرمایه‌ی خیلی کمتری نیاز دارید تا استارتاپ خودتون رو بزنید. برای همین نباید بیش از حد نگران اشتباه تصمیم گرفتن باشید چون اکثر اوقات فرصت اصلاح اون تصمیم رو خواهید داشت.این لیست کتاب‌ها و مقالاتی بود که توی متن مستقیم یا غیر مستقیم بهشون اشاره کردم:کتاب Outliers (خلاصه صوتی فارسی): در مورد این که آدم‌های فوق‌العاده موفق چگونه موفق شدند.کتاب So Good They Can&amp;#x27;t Ignore You: در مورد این که چرا «علاقه‌تون رو دنبال کنید» توصیه‌ی خوبی نیست و به جاش چیکار می‌شه کرد.کتاب Range (خلاصه صوتی فارسی): در مورد این که چرا گستره دانش در خیلی مواقع مهم‌تر از تخصص خواهد بود.کتاب A Job to Love: مجموعه‌ای از توصیه‌ها، موانع محتمل، و سوگیری‌های ذهنی در رابطه با انتخاب شغلمقاله «چگونه مسیر شغلی انتخاب کنیم»: مقاله‌ی بامزه و خیلی بلندی که سعی می‌کنه فرایند انتخاب شغل رو مدل کنه و پارامترهای مختلفی رو برای تصمیم‌گیری ارائه می‌کنه.مقاله Managing Oneself: قدیمی‌ترین مقاله در این لیست و یکی از بهترین‌ها! در مورد این که چطوری خودمون رو بشناسیم و عملکردمون رو بهبود بدیم.وبسایت 80,000 ساعت: افراد به طور میانگین در طول زندگیشون حدود ۸۰هزار ساعت کار می‌کنند. این سایت سعی کرده تا شغل‌هایی رو معرفی کنه که می‌تونن به طور مستقیم یا غیر مستقیم روی مسائل مهم دنیا در آینده تاثیر بذارند و اطلاعات جالبی در مورد شغل‌های مختلف ارائه می‌کنه.امیدوارم که مطالب این پست براتون مفید بوده باشه. اگر داستان جالبی از چنین تصمیم‌گیری‌هایی دارید می‌تونید این زیر به اشتراک بذارید.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Wed, 05 May 2021 00:39:31 +0430</pubDate>
            </item>
                    <item>
                <title>ویروس کرونا: چرا باید از همین الان دست به کار بشید - قسمت آخر</title>
                <link>https://virgool.io/@m30m/%D9%88%DB%8C%D8%B1%D9%88%D8%B3-%DA%A9%D8%B1%D9%88%D9%86%D8%A7-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D9%87%D9%85%DB%8C%D9%86-%D8%A7%D9%84%D8%A7%D9%86-%D8%AF%D8%B3%D8%AA-%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%B4%DB%8C%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D8%A2%D8%AE%D8%B1-c3sfplrwffti</link>
                <description>این مقاله قسمت آخر (قسمت اول، قسمت دوم) ترجمه انگلیسی این مقاله در medium هست. مقاله بسیار کاملی بود و حس کردم ترجمه و خوندنش برای ما ایرانیان هم می‌تونه مفید باشه. ترجمه‌ی نمودارها زمان‌بر هستش، برای همین سعی می‌کنم زیرش خلاصه‌ای از نمودار رو بیشتر توضیح بدم. سعی کردم جاهایی که مهمه تاریخ‌ها رو تبدیل کنم و اگر چیزی از خودم اضافه کردم به صورت ایتالیک هستش.مخاطب اصلی مقاله افراد تصمیم‌گیر و مسئول هستند اما من خوندنش رو به همه توصیه می‌کنم.سیاستمداران چگونه می‌توانند به رعایت فاصله بین افراد کمک کنند؟سوالی که سیاستمداران این روزها از خود می‌پرسند این نیست که آیا نیاز است کاری انجام بشود یا خیر، بلکه این است که عکس‌العمل مناسب چه خواهد بود.در کنترل یک اپیدمی مراحل مختلفی وجود دارد که با پیش‌بینی شروع می‌شود و با ریشه‌کن کردن ویروس تمام می‌شود. اما دیگر برای اکثر گزینه‌ها دیر شده است. با این سطح از ابتلا، سیاستمداران تنها دو گزینه پیش روی خود دارند: محدود کردن ویروس و کاهش گسترش ویروس.محدود کردن ویروسمحدود کردن یعنی مطمئن بشویم تمامی مبتلایان شناسایی، کنترل و ایزوله شده‌اند. این کاری است که سنگاپور، هنگ‌کنگ، ژاپن و تایوان به خوبی انجام داده‌اند: آن‌ها به سرعت افرادی که وارد کشور می‌شدند را محدود کردند، افراد مریض را شناسایی کردند، بلافاصله آن‌ها را ایزوله کردند، از تجهیزات ایمنی قوی برای محافظت از کارمندان سیستم خدمات درمانی استفاده کردند، تمامی تماس‌های آن‌ها را ردیابی کردند، آن‌ها را قرنطینه کردند و ... این روش وقتی که خود را آماده کرده اید و آن را از ابتدا اجرایی می‌کنید به بهترین شکل جواب خواهد داد و دیگری نیازی نیست که اقتصاد خود را متوقف کنید تا بتوانید آن را اجرا کنید.قبلاً در این مقاله رویکرد تایوان را تحسین کرده بودم؛ رویکرد چین هم خوب است. کارهایی که آن‌ها انجام داده‌اند تا بتوانند ویروس را محدود نگه‌دارند اعجاب‌انگیز است. برای مثال، آن‌ها ۱۸۰۰ تیم ۵ نفره تشکیل دادند که هر کدام هر یک از افراد آلوده‌شده، هر فردی که با این افراد تعامل داشته است، و هر فردی که با افراد دسته‌ی قبل تعامل داشته‌است را ردیابی و ایزوله می‌کردند.کشورهای غربی چنین کارهایی را انجام نداده‌اند و دیگر دیر شده است. اقدام اخیر آمریکا برای ممنوعیت اکثر سفرهایی که از اروپا می‌آمدند یکی از این اقدامات محدود کننده است که تا به امروز، ۳ برابر پرونده‌های هوبی  در زمان تعطیل شدن را داشته است و به صورت نمایی هم رشد می‌کند. چطور می‌توانیم بفهمیم که آیا این اقدامات کافی است؟ برای این کار می‌توانیم به ممنوعیت سفر در ووهان نگاهی بیندازیم.لینک منبع. تاخیر در پخش شدن ویروس کرونا در چین به تفکیک ممنوعیت سفرها. ۳ ردیف از بالا به پایین به ترتیب: حالتی که مسافرت‌ها کاهش پیدا نکرده، ۴۰ درصد کاهش پیدا کرده، و ۹۰ درصد کاهش پیدا کرده است.این نمودار تاثیر ممنوعیت سفر در ووهان را بر روی تاخیر در پخش شدن ویروس نشان می‌دهد. اندازه دایره‌ها نشان‌دهنده تعداد مبتلایان به صورت روزانه است. این مدل توسط اپیدمیولوژیست‌ها ساخته شده است زیرا نمی‌توانیم از این اعداد مطمئن باشیم.اگر تفاوت زیادی نمی‌بینید بین حالات مختلف نمی‌بینید، به چشمان خود شک نکنید. خیلی سخت می‌توان تغییری در نحوه گسترش اپیدمی دید.با این حال، محققان تخمین می‌زنند که ممنوعیت سفر در ووهان باعث شده است تا پخش این ویروس در چین بین ۳ تا ۵ روز عقب بیفتد.حال می‌بینیم که محققان در مورد تاثیرات کاهش نرخ انتقال ویروس چه نظری داشته‌اند:تاخیر در پخش شدن ویروس کرونا، بر اساس ممنوعیت سفر و کاهش نرخ انتقال ویروسبلوک اول نمودار (سه ردیف اول) همان نمودار قبلی است. دو بلوک دیگر حالتی که نرخ انتقال ویروس کاهش پیدا کرده است را نشان می‌دهند. اگر نرخ انتقال ویروس ۲۵ درصد کاهش پیدا کند (از طریق رعایت فاصله میان افراد)، منحنی صاف می‌شود و نقطه‌ی اوج نمودار ۱۴ هفته دیرتر رخ خواهد داد. اگر نرخ انتقال ویروس ۵۰ درصد کاهش پیدا کند، شما حتی نمی‌توانید شروع اپیدمی را در ۳ماهه‌ی ابتدایی ببینید.ممنوعیتی که آمریکا برای سفرهای اروپایی وضع کرده است خوب است: این ممنوعیت برای ما چند ساعت یا یکی دو روز زمان خریده است. اما بیشتر نه و این کافی نیست. این یعنی محدود کردن وقتی که راه حل مورد نیاز کاهش گسترش است.وقتی که صدها یا هزاران فرد مبتلا در جمعیت وجود دارند، جلوگیری از ابتلا شدن بقیه، ردیابی مبتلایان فعلی و ایزوله کردن افرادی که با آن‌ها در تماس بوده‌اند دیگر کافی نیست. مرحله‌ی بعدی کاهش گسترش است.کاهش گسترش ویروسکاهش گسترش ویروس نیازمند فاصله گرفتن زیاد افراد از یکدیگر است. مردم دیگر نباید دورهم جمع بشوند تا نرخ انتقال (R) از مقدار اولیه ۲ الی ۳ که بدون رعایت نکات ایمنی است به زیر یک برسد تا در نهایت ویروس از بین برود.این تمهیدات نیازمند تعطیل کردن شرکت‌ها، مغازه‌ها، سیستم‌های حمل و نقل، مدارس، مجبور کردن به تعطیلی و ... است. هر چقدر وضعیت بدتر باشد، رعایت فاصله هم باید بیشتر باشد. هر چقدر زودتر این قوانین اجرایی بشوند، مدت زمان کمتری نیاز است تا آن‌ها را رعایت کنیم، مبتلایانی که در حال گسترش ویروس هستند زودتر شناسایی می‌شوند و افراد کمتری به ویروس آلوده می‌شوند.این کاری بود که ووهان باید انجام می‌داد. این کاری بود که ایتالیا مجبور به انجام شدنش شد زیرا وقتی که ویروس شیوع پیدا کرده است، تنها کاری که می‌توان انجام داد قرنطینه کردن تمام مناطق آلوده شده برای جلوگیری از پخش شدن بیشتر ویروس است.با هزاران مورد ابتلای رسمی، و ده‌ها هزار مبتلای واقعی، این کاری است که ایران، فرانسه، اسپانیا، آلمان، سوییس و آمریکا باید انجام بدهند.اما آن‌ها این کار را انجام نمی‌دهند.بعضی از کسب و کارها در حال انجام دورکاری هستند که عالی است.بعضی از رویدادهای بزرگ در حال متوقف شدن هستند.بعضی از مناطق آلوده شده خودشان خود را قرنطینه کرده‌اند.تمامی این‌ها باعث آهسته‌تر شدن ویروس می‌شود و نرخ انتقال را از ۲.۵ به ۲.۲ یا ۲ پایین می‌آورد. اما برای کاهش نرخ انتقال به زیر یک در یک دوره زمانی پایدار که منجر به توقف اپیدمی بشود کافی نیستند. و اگر نمی‌توانیم این کار را انجام بدهیم باید تا جای ممکن و تا حداکثر مدت ممکن نرخ انتقال را به یک نزدیک کنیم تا منحنی را صاف کنیم.حالا سوال اصلی این می‌شود که چه کارهایی می‌توانیم انجام دهیم تا نرخ انتقال را کاهش دهیم. لیست زیر گزینه‌هایی است که ایتالیا جلوی همه‌ی ما قرار داده است:هیچکسی نمی‌تواند از مناطق قرنطینه شده خارج شود یا به آن وارد شود، مگر این که اثبات کنند که دلایل خانوادگی یا کاری دارند.از حرکت در داخل مناطق اجتناب شود، مگر این که دلیل اضطراری شخصی یا کاری وجود داشته باشد و نتوان آن را به تعویق انداخت.افرادی که نشانه‌های بیماری (عفونت تنفسی یا تب) دارند شدیداً توصیه می‌شود که در خانه بمانند.زمان مرخصی عادی برای کارمندان سیستم خدمات درمانی متوقف شود.تعطیلی تمام موسسات آموزشی (مدارس، دانشگاه‌ها و ...)، باشگاه‌های ورزشی، موزه‌ها، پیست اسکی، مراکز فرهنگی اجتماعی، استخرها، و تئاترها.کافی‌شاپ‌ها و رستوران‌ها تنها از ۶ صبح تا ۶ عصر باز هستند و بین هر دو نفر حداقل یک متر (۳ فوت) فاصله وجود دارد.تمامی مشروب‌خانه‌ها و کلوب‌ها باید بسته شوند.در تمامی فعالیت‌های تجاری باید فاصله یک متر بین مشتریان وجود داشته باشد. آن‌هایی که نمی‌توانند این فاصله را تضمین کنند، باید بسته شوند. معابد می‌توانند به شرط رعایت این فاصله باز بمانند.زمان ملاقات خانواده و دوستان با بیماران بیمارستان محدود شود.جلسات کاری باید به تعویق بیفتد و کار از خانه تشویق شود.تمامی رویدادها و رقابت‌های ورزشی، چه عمومی و چه خصوصی، لغو شوند. رویدادهای مهم می‌تواند پشت درهای بسته برگزار شوند.دو روز بعد، آن‌ها اضافه کردند: تمامی کسب‌وکارهایی که ضروری نیستند باید بسته شوند. بنابراین تمامی فعالیت‌های تجاری، دفاتر، کافه‌ها و مغازه‌ها باید بسته شوند. تنها سیستم حمل و نقل، داروخانه‌ها و فروشگاه‌های مواد غذایی باز خواهد ماند.یک رویکرد این است که به مرور زمان، مقررات بیشتری را اضافه کنیم. متاسفانه، این رویکرد باعث می‌شود که ویروس زمان بیشتری برای شیوع پیدا کند. اگر می‌خواهید که ایمن بمانید، این کار را مانند ووهان انجام بدهید. ممکن است مردم الان اعتراض کنند، اما بعداً از شما تشکر می‌کنند.مدیران کسب‌وکارها چگونه می‌توانند به رعایت فاصله بین افراد کمک کنند؟اگر شما مدیر یک کسب‌وکار هستید و می‌خواهید بدانید چه باید بکنید، بهترین منبع برای شما کلوپ خانه‌نشین‌ها است. این یک لیست از قوانینی است که شرکت‌های مبتنی بر تکنولوژی در آمریکا برای کارمندان خود وضع کرده‌اند و تا کنون ۳۲۸ شرکت در این لیست وجود دارد.در این لیست قوانین مختلفی از «اجازه دارند در خانه کار کنند» تا «حتماً باید در خانه کار کنند» و «محدود شدن رفتن به محل کسب‌وکار، مسافرت و رویدادها» وجود دارد.موارد بیشتری است که هر شرکت باید بررسی کند، مثلاً با کارمندانی که قرارداد ساعتی دارند چه کار کنند؟ آیا دفاتر را باز بگذارند یا نه؟ چگونه مصاحبه کنند و سلف غذاخوری را چه کنند؟ اگر می‌خواهید بدانید شرکت من، Course Hero، چطوری بعضی از این موارد را برطرف کرده است و چگونه این موارد را به کارمندان خود اعلام کرده است می‌توانید اینجا را مطالعه کنید. (نسخه view only)۴- چه زمانی؟احتمالاً تا اینجای کار با اکثر مواردی که گفتم موافق بوده‌اید و تنها به این فکر می‌کردید که چه زمانی باید هر یک از این تصمیم‌ها را بگیرید. در واقع باید منتظر رخ دادن چه اتفاقاتی باشیم تا این تصمیمات را بگیریم؟مدل مبتنی بر ریسک برای تصمیم‌گیریبرای حل این مشکل، من این مدل را ساختم.این مدل به شما کمک می‌کند تا تعداد مبتلایان در منطقه خود را تخمین بزنید، احتمال این که کارمندان شما در حال حاظر مبتلا شده باشند و میزان این احتمال در طی زمان را تخمین بزنید و به کمک آن تصمیم بگیرید که کسب و کار خود را باز نگه‌دارید یا نه.این مدل مواردی مثل اینها را به ما می‌گوید:اگر شرکت شما ۱۰۰ کارمند در ایالت واشنگتن دارد که در هشتم مارچ ۱۱ کشته داشته است، ۲۵ درصد احتمال دارد که حداقل یکی از کارمندان شرکت شما آلوده شده باشد و شما باید بلافاصله تعطیل کنید.اگر شرکت شما ۲۵۰ کارمند دارد که اکثرشان در خلیج جنوبی ( بخش‌های سن ماتئو و سانتا کلارا که روی هم ۲۲ مورد ابتلای رسمی در هشتم مارچ داشته‌اند و تعداد مبتلایان واقعی حداقل ۵۴ نفر است) تا نهم مارچ ۲ درصد احتمال دارد که حداقل یکی از کارمندان شما آلوده شده باشد و شما هم باید دفاتر خود را ببندید.(بروزرسانی شده در دوازده مارچ) اگر شرکت شما در پاریس (Intramuros) است و ۲۵۰ کارمند دارد، امروز به احتمال ۹۵ درصد حداقل یکی از کارمندان شما به ویروس کرونا آلوده شده است و شما باید تا فردا دفتر خود را تعطیل کنید.این مدل از کلمات «شرکت» و «کارمند» استفاده می‌کند اما می‌توان از آن برای نهادهای دیگر مثل مدرسه استفاده کرد. حال اگر شما تنها ۵۰ کارمند در پاریس دارید، اما همه‌ی آن‌ها از قطار برای رفت و آمد به محل کار استفاده می‌کنند، کارمندان شما با هزاران نفر دیگر در تماس هستند و احتمال این که حداقل یکی از آن‌ها آلوده شده باشد به شدت افزایش پیدا می‌کند و باید بلافاصله دفتر خود را ببندید.اگر هنوز حس می‌کنید که زود است چون هیچ کس علائم بیماری از خود نشان نمی‌دهد، به خاطر داشته باشید که ۲۶ درصد از موارد انتقال بیماری قبل از ظاهر شدن علائم بیماری اتفاق می‌افتد.آیا شما عضو گروهی از مدیران هستید؟مدل ریاضی که بررسی شد خودخواهانه بود. این مدل ریسک هر شرکت را به صورت جداگانه بررسی می‌کند و می‌توانیم هر چقدر که می‌خواهیم ریسک را تحمل کنیم تا زمانی که به ناچار مجبور شویم دفاترمان را ببندیم.اما اگر شما عضو گروهی از مدیران کسب‌وکار یا سیاستمداران هستید، محاسبات شما تنها برای یک شرکت نیست، بلکه برای تمامی آن‌ها است. مدل اینگونه می‌شود: چقدر احتمال دارد تا هر یک از شرکت‌های ما آلوده بشود؟ اگر شما گروهی از ۵۰ شرکت ۲۵۰ نفره در منطقه خلیجی سان فرانسیسکو هستید، به احتمال ۳۵ درصد حداقل یکی از شرکت‌های شما یک کارمند آلوده شده دارد و ۹۷ درصد احتمال دارد که هفته‌ی بعد این اتفاق بیفتد. من یک قسمت به مدل اضافه کردم تا بتوانید آن را تغییر دهید.نتیجه‌گیری: هزینه صبر کردنممکن است ترسناک باشد که همین امروز تصمیم بگیرید، اما نباید اینگونه به موضوع نگاه کنید.مدل تعداد مبتلایان جدید در هر روزاین مدل فرضی گروه‌های مختلفی را نشان می‌دهد. یکی از آن‌ها فاصله بین افراد را رعایت نمی‌کند (خط سیاه)، دیگری در روز n ام شیوع این کار را انجام می‌دهد (خط سبز)، و دیگری یک روز بعد از آن (خط قرمز). تمامی این اعداد فرضی هستند (من طوری آن‌ها را انتخاب کردم که مشابه اتفاقات هوبی باشد و حدود ۶هزار مبتلای جدید روزانه در بدترین حالت داشته باشد). این نمودارها تنهای برای این هستند که نشان بدهند یک روز چقدر می‌تواند در یک رشد نمایی موثر باشد. در نمودار می‌توانید ببینید که با یک روز تاخیر اوج اپیدمی دیرتر و بیشتر است، اما در نهایت هر دو به صفر میل می‌کنند.اما اگر حالت تجمعی نمودار را در نظر بگیریم چه می‌شود؟مدل تعداد مبتلایان جدید در هر روز به صورت تجمعیدر این مدل فرضی که تا حدی مشابه هوبی است، یک روز تاخیر باعث افزایش ۴۰ درصدی تعداد مبتلایان می‌شود. در نتیجه اگر مسئولین هوبی قرنطینه را به جای ۲۳ ژانویه در ۲۲ ژانویه اعلام می‌کردند، ممکن بود بتوانند تعداد مبتلایان را ۲۰هزار نفر کاهش بدهند.به خاطر داشته باشید، این‌ها تنها تعداد مبتلایان است. نرخ مرگ و میر از این خیلی بیشتر خواهد بود، زیرا نه تنها به صورت مستقیم ۴۰ درصد به تعداد مرگ‌ها اضافه می‌شود بلکه فشار وارده به سیستم خدمات درمانی هم بیشتر می‌شود و می‌تواند نرخ مرگ و میر را همانطور که قبلاً دیدیم تا ۱۰ برابر افزایش بدهد. بنابراین یک روز تفاوت در رعایت فاصله بین افراد می‌تواند باعث شود که تعداد مرگ و میر در جامعه شما با چند برابر شدن افراد مبتلا و افزایش نرخ مرگ‌ومیر به شدت افزایش پیدا کند.این یک تهدید نمایی است. هر یک روز مهم است. وقتی شما یک روز تصمیمتان را به تاخیر می‌اندازید، شما فقط باعث ایجاد چند مورد ابتلای بیشتر نمی‌شوید. احتمالاً در حال حاضر صدها یا هزاران مبتلا در جامعه شما وجود دارد و هر روز رعایت نکردن فاصله بین افراد باعث می‌شود که تعداد افراد مبتلا به صورت نمایی افزایش پیدا کند.به اشتراک بگذاریداحتمالاً در دهه‌ی گذشته این تنها زمانی است که با به اشتراک گذاشتن این مقاله می‌توانید جان افراد را نجات دهید. آن‌ها باید این موضوع را بفهمند تا جلوی یک فاجعه را بگیرند. زمان دست به کار شدن همین الان است.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Fri, 13 Mar 2020 21:27:02 +0330</pubDate>
            </item>
                    <item>
                <title>ویروس کرونا: چرا باید از همین الان دست به کار بشید - قسمت ۲</title>
                <link>https://virgool.io/@m30m/%D9%88%DB%8C%D8%B1%D9%88%D8%B3-%DA%A9%D8%B1%D9%88%D9%86%D8%A7-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D9%87%D9%85%DB%8C%D9%86-%D8%A7%D9%84%D8%A7%D9%86-%D8%AF%D8%B3%D8%AA-%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%B4%DB%8C%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-a910fcr8tnfi</link>
                <description>بروزرسانی: قسمت آخر هم ترجمه شد.این مقاله قسمت دوم ترجمه انگلیسی این مقاله در medium هست. قسمت اول رو اینجا می‌تونید مطالعه کنید. مقاله بسیار کاملی بود و حس کردم ترجمه و خوندنش برای ما ایرانیان هم می‌تونه مفید باشه. ترجمه‌ی نمودارها زمان‌بر هستش، برای همین سعی می‌کنم زیرش خلاصه‌ای از نمودار رو بیشتر توضیح بدم. سعی کردم جاهایی که مهمه تاریخ‌ها رو تبدیل کنم و اگر چیزی از خودم اضافه کردم به صورت ایتالیک هستش.مخاطب اصلی مقاله افراد تصمیم‌گیر و مسئول هستند اما من خوندنش رو به همه توصیه می‌کنم.۲- وقتی که موارد مبتلا به ویروس کرونا آشکار شدند چه اتفاقی می‌افتد؟تا اینجای کار دیدیم که انتشار ویروس کرونا شروع شده، مخفی هستش و به صورت نمایی رشد می‌کنه.وقتی کرونا به کشور ما برسه چی اتفاقاتی می‌افته؟ جواب این سوال راحته چون همین الان چندین کشور هستند که این اتفاق براشون افتاده. بهترین مثال‌ها هوبی و ایتالیا هستند.نرخ مرگ و میرسازمان بهداشت جهانی (WHO) نرخ مرگ و میر رو ۳.۴ درصد اعلام کرده (افرادی که مبتلا به ویروس می‌شوند و می‌میرند). این عدد یک عدد خیلی کلی هستش پس بذارید بیشتر توضیح بدم.نرخ مرگ و میر در کشورهای مختلف: تعداد مرگ‌ها تقسیم بر تعداد موارد مبتلااین عدد به شدت وابسته به کشور است و در حال حاضر بین ۰.۶ درصد در کره جنوبی و ۴.۴ درصد در ایران هستش. پس عدد درست چیه؟ می‌تونیم از روش زیر برای محاسبه‌ش استفاده کنیم.از دو روش می‌تونیم نرخ مرگ و میر رو محاسبه کنیم: یکی تعداد مرگ‌ها تقسیم بر تعداد پرونده‌ها (مبتلایان) و دیگری تعداد مرگ‌ها تقسیم بر تعداد افرادی که پرونده‌شون بسته شده (یا خوب شدند یا مردند). اولی یک تخمین دست پایین هستش چون تعداد زیادی از افراد مبتلا ممکنه در آینده بمیرند. دومین تخمین هم دست بالا هستش چون پرونده افرادی که می‌میرند زودتر از افرادی که درمان می‌شوند بسته می‌شود.چیزی که من بررسی کردم این بود که هر دو تخمین به مرور زمان چه تغییراتی می‌کنند. هر دو تخمین بعد از بسته شدن تمام پرونده‌ها به یک عدد همگرا می‌شوند. حالا اگر روند گذشته رو در آینده ادامه بدیم می‌تونیم حدس بزنیم که نرخ مرگ و میر نهایی چقدر خواهد بود.این چیزی هستش که از طریق داده هم می‌تونیم ببینیم. نرخ مرگ و میر چین در حال حاضر بین ۳.۶ درصد و ۶.۱ درصد هست. اگر این روند برای آینده ادامه بدیم به نظر می‌رسه که به عددی بین ۳.۸ درصد تا ۴ درصد همگرا می‌شه. این عدد دوبرابر تخمین فعلی و ۳۰ برابر بدتر از آنفولانزا هست.البته این نمودار تجمیع اعداد دو دنیای مختلف هستش: هوبی و بقیه چیننرخ مرگ و میر در منطقه هوبی چین: خط نارنجی تعداد مرگ‌ها تقسیم بر پروند‌ه‌های بسته شده و خط قرمز تعداد مرگ‌ها تقسیم بر تعداد پرونده‌ها است.نرخ مرگ و میر هوبی احتمالاً به عدد ۴.۸ درصد همگرا خواهد شد. در همین حین، برای بقیه چین احتمالاً این عدد به ۰.۹ درصد همگرا می‌شود.نرخ مرگ و میر در چین به غیر از هوبی: خط کمرنگ تعداد مرگ‌ها تقسیم بر پرونده‌های بسته شده و خط قرمز تعداد مرگ‌ها تقسیم بر تعداد پرونده‌ها است.من این نمودار رو برای کشورهای ایران، ایتالیا و کره جنوبی هم رسم کردم. این‌ها تنها کشورهایی بودند که آمار مرگ و میرشون به اندازه‌ی کافی بود تا این نمودارها معنا پیدا کنند.پیش‌بینی نرخ مرگ و میر در ایرانپیش بینی نرخ مرگ و میر در ایتالیاپیش بینی نرخ مرگ و میر در کره جنوبینسبت تعداد مرگ‌ها به تعداد کل مبتلایان در ایران و ایتالیا در حال همگرا شدن به عددی بین ۳ تا ۴ درصد هست. حدس من اینه که نرخ مرگ و میر نهایی در این کشورها در همون بازه خواهد بود.تعداد تخت به ازای هر ۱۰۰۰ نفر در کشورهای مختلفکره جنوبی جالب‌ترین نمونه هستش چون این دو تخمین در این کشور کاملاً از هم فاصله دارند: نسبت مرگ‌ها به کل پرونده‌ها تنها ۰.۶ درصد هست، اما نسبت مرگ‌ها به پرونده‌های بسته شده ۴۸ درصد هست که عدد خیلی بزرگیه. برداشت من از این موضوع اینه که چند اتفاق منحصر به فرد در کره جنوبی در حال رخ دادنه. اول این که اون‌ها دارند همه‌ی افراد رو تست می‌کنند (چون تعداد زیادی پرونده باز دارند، نرخ مرگ و میر کم است) و همچنین پرونده‌ها رو به مدت بیشتر باز نگه می‌دارند (بنابراین تنها وقتی بیمار می‌میره پرونده سریع بسته می‌شه). دوم این که اونها تعداد زیادی تخت بیمارستانی دارند (نمودار بالا). ممکنه دلایل دیگری هم وجود داشته باشه که ما نمی‌دونیم. چیزی که مهمه اینه که نسبت مرگ‌ها به پرونده‌ها از همون ابتدا حدود ۰.۵ درصد بوده و به نظر در همین حدود هم خواهد ماند که احتمالاً به خاطر سیستم خدمات درمانی و مدیریت بحران کره جنوبی بوده.آخرین مثال مرتبط کشتی دایموند پرینسس ( Diamond Princess) هست: با ۷۰۶ مورد مبتلا، ۶ مرگ و ۱۰۰ مورد بهبود یافته. نرخ مرگ و میر بین ۱ تا ۶.۵ درصد خواهد بود.توجه داشته باشید که توزیع سنی در هر کشور روی نرخ مرگ و میر تاثیر خواهد گذاشت. چون نرخ مرگ و میر ویروس کرونا برای افراد مسن بیشتر هست، کشورهایی مثل ژاپن که جمعیت مسن‌تری دارند نسبت به کشورهای جوان‌تری مثل نیجریه شرایط سخت‌تری در برابر ویروس خواهند داشت. پارامترهای آب و هوایی مثل رطوبت و دما هم تاثیر خواهند گذاشت اما هنوز معلوم نیست که تاثیرشون در انتقال ویروس و نرخ مرگ و میر چقدر هست.مواردی که می‌تونیم نتیجه بگیریم:به غیر از جاهایی که بررسی شد، کشورهایی که برای ویروس آماده شدند نرخ مرگ و میر بین ۰.۵ (کره جنوبی) تا ۰.۹ درصد (بقیه چین) خواهند داشت.نرخ مرگ و میر در کشورهایی که نتونستن به خوبی ویروس رو کنترل کنند حدوداً بین ۳ تا ۵ درصد خواهد بود.به عبارت دیگر کشورهایی که عکس العمل سریعی داشته باشند می‌تونن تعداد مرگ‌ها را تا ۱۰ برابر کاهش بدهند. این فقط نرخ مرگ و میر بود. عکس العمل سریع همچنین باعث می‌شه که تعداد مبتلایان به شدت کاهش پیدا کنه و ضرورت این کار رو بیش از پیش بدیهی می‌کنه.کشورهایی که عکس العمل سریع نشان می‌دهند تعداد مرگ‌ها را حداقل ۱۰ برابر کاهش می‌دهند.حال یک کشور نیاز دارد چه کارهایی انجام دهد تا آماده باشد؟چه فشاری به سیستم وارد خواهد شدحدود ۲۰ درصد از مبتلایان نیاز به بستری شدن دارند، ۵ درصد از مبتلایان نیاز به ICU دارند و حدود ۲.۵ درصد نیاز به کمک بسیار زیادی دارند به همراه دستگاه‌هایی مثل تهویه یا ECMOمیزان جدی بودن علائم ویروس: اکثر موارد ابتلا خفیف هستنداسلاید از وبینار انجمن بیمارستان‌های آمریکا که بهترین حدس‌هایشان در مورد اثرات ویروس کرونا روی سیستم خدمات درمانی آمریکا در ۲۰۲۰ استمشکل اینجاست که دستگاه‌هایی مثل تهویه یا ECMO را نمی‌توان به راحتی تولید کرد یا خرید. به عنوان مثال، چند سال پیش آمریکا کلاً ۲۵۰ دستگاه ECMO داشته است.حالا اگر به صورت ناگهانی صدهزار نفر مبتلا بشوند، خیلی از آن‌ها می‌خواهند که تست بشوند. حدود ۲۰هزار نفر نیاز به بستری شدن دارند، ۵هزار نفر نیاز به ICU دارند و هزار نفر نیاز به ماشین‌هایی دارند که به اندازه کافی از اونها نداریم، و این تنها فقط برای ۱۰۰هزار نفر مبتلا هستش.تازه این بدون در نظر گرفتن مشکلاتی مثل ماسک هست. کشوری مثل آمریکا تنها یک درصد از ماسک‌هایی که برای کارمندان سیستم خدمات درمانی نیاز هستش رو داره (۱۲ میلیون ماسک N95 و سی میلیون ماسک جراحی در برابر ۳.۵ میلیارد ماسک مورد نیاز). اگر تعداد زیادی از افراد به یکباره مبتلا بشوند، تنها برای ۲ هفته ماسک خواهد بود.کشورهایی مثل ژاپن، کره‌جنوبی، هنگ‌کنگ، سنگاپور و همچنین مناطقی از چین که خارج از هوبی بودند خود را آماده کرده بودند و خدمات لازم را به بیماران رسانده‌اند.اما بقیه‌ی کشورهای غربی در حال طی کردن مسیر هوبی و ایتالیا هستند. در این کشورها دارد چه اتفاقی می‌افتد؟یک سیستم خدمات درمانی از پادرآمده (overwhelmed) چگونه است؟داستان‌هایی که در هوبی و ایتالیا اتفاق افتاده است به شدت مشابه هستند. هوبی در عرض ۱۰ روز دو بیمارستان ساخت و با این حال باز هم کاملاً اشباع شده بود. لینک به اخبار توییترهر دو اعتراض کردند که بیماران بیمارستان‌ها را پر کردند. با این حال باید به وضعیت آن‌ها رسیدگی می‌شد، در راهروها و در اتاق‌های انتظار...پیشنهاد می‌کنم این رشته توییت کوتاه را بخوانید. وضعیت بحرانی ایتالیا را به خوبی وصف می‌کند. (ترجمه رشته توییت در انتهای مقاله)کارمندان سیستم خدمات درمانی ساعت‌ها از تجهیزات ایمنی (مثل ماسک و لباس) یکسانی استفاده می‌کنند زیرا به اندازه کافی وجود ندارد. در نتیجه نمی‌توانند مناطق آلوده شده را به مدت ساعت‌ها ترک کنند و وقتی هم که از آن محیط خارج می‌شوند از خستگی و کم‌آبی در هم می‌شکنند. شیفت بیمارستان دیگر معنایی ندارد. حتی کارمندان بازنشسته شده را دارند به کار برمی‌گردانند تا نیازهایشان را پوشش دهند. افرادی که هیچ ایده‌ای در مورد پرستاری ندارند را یک‌شبه آموزش می‌دهند تا بتوانند نقش‌های حیاتی را ایفا کنند. همگی در وضعیت آماده‌باش هستند، به طور مداوم.عکس Francesca Mangiatordi یک پرستار ایتالیایی که در حین جنگ با ویروس کرونا در هم شکسته است.و این تا زمانی ادامه دارد که مریض بشوند که زیاد هم اتفاق می‌افتد زیرا آن‌ها در تماس مداوم با ویروس هستند و تجهیزات ایمنی لازم را ندارند. وقتی که مریض می‌شوند نیاز دارند که تا ۱۴ روز در قرنطینه باشند و در این مدت نمی‌توانند کمک کنند. در بهترین حالت تنها ۲ هفته زمان از دست می‌رود و در بدترین حالت آن‌ها می‌میرند.بدترین قسمت برای ICU است، وقتی بیماران نیاز به استفاده اشتراکی از یک دستگاه تهویه یا ECMO هستند. عملاً نمی‌توان این دستگاه‌ها را به اشتراک گذاشت، بنابراین کارمندان سیستم خدمات درمانی باید تصمیم بگیرند که کدام مریض از آن استفاده کند. این یعنی آن‌ها تصمیم می‌گیرند چه کسی زنده بماند و چه کسی جان خود را از دست می‌دهد.لینک خبرتمام اینها باعث می‌شود که یک سیستم به جای ۰.۵ درصد نرخ مرگ و میر ۴ درصد را تجربه کند. اگر می‌خواهید شهر یا کشورتان بخشی از آن ۴ درصد باشد، امروز هیچکاری انجام ندهید.۳- باید چیکار کنیم؟منحنی را صاف کنیدویروس کرونا در حال حاضر در سطح جهان فراگیر شده. نمی‌توانیم آن را نابود کنیم اما می‌توانیم اثرات آن را کاهش بدهیم.بعضی کشورها در این امر به خوبی عمل کرده‌اند. بهترین آن‌ها تایوان است زیرا با وجود این که به شدت به چین متصل است اما تا امروز کمتر از ۵۰ مورد مبتلا داشته است. این مقاله که اخیراً منتشر شده است تمام اقداماتی که از همان ابتدا انجام داده‌اند و با تمرکز بر محدود کردن ویروس بوده را شرح داده است.آن‌ها توانستند ویروس را محدود کنند اما اکثر کشورها این مهارت را نداشتند و این کار را انجام ندادند. حالا آن‌ها وارد بازی دیگری شده‌اند: کاهش تاثیرات. آن‌ها باید تا می‌توانند جلوی حملات ویروس را بگیرند.اگر ما بتوانیم تعداد مبتلایان را تا جای ممکن کاهش دهیم، سیستم خدمات درمانی می‌تواند مبتلایان را بهتر تحت درمان قرار دهد و نرخ مرگ و میر کاهش پیدا می‌کند؛ و اگر بتوانیم این فرایند را در طی زمان پخش کنیم، به نقطه‌ای خواهیم رسید که بقیه جامعه می‌تواند واکسینه بشود و ریسک را به کلی از بین ببرد. بنابراین هدف ما از بین‌بردن سرایت ویروس نیست. بلکه عقب انداختن آن است.چرا مهم است که در مقابل ویروس کرونا «زود» اقدام کنیم. محور افقی زمان و محور عمودی تعداد افرادی هستند که نیاز به مراقبت پزشکی دارند. ناحیه بنفش: بیمارانی که به خوبی تحت مراقبت قرار نمی‌گیرند و نرخ مرگ و میر بالایی دارند ناحیه سبز: بیمارانی که به خوبی تحت مراقبت قرار می‌گیرند و نرخ مرگ و میر پایینی دارند خط نقطه چین سیاه: تعداد مبتلایان اگر هیچکاری نکنیم خط ممتد سیاه: تعداد مبتلایان اگر سعی کنیم آن‌ را به تعویق بیندازیم خط نقطه‌چین نارنجی: ظرفیت درمانی اگر هیچکاری نکنیم خط ممتد نارنجی: ظرفیت درمانی اگر سعی کنیم آن را به تعویق بیندازیم هر چقدر بیشتر بتوانیم آن را عقب بیندازیم، سیستم خدمات درمانی بهتر می‌تواند عمل کند، نرخ مرگ و میر کاهش پیدا می‌کند و سهم بیشتری از جمعیت قبل از این که مبتلا بشوند واکسینه شده اند.چطوری باید منحنی رو صاف کنیم؟فاصله بین افرادما می‌توانیم یک کار خیلی ساده و موثر انجام بدهیم: از دیگران فاصله بگیریم.اگر به نمودار ووهان (قسمت اول مقاله) نگاه کنیم می‌بینیم که به محض تعطیل شدن ووهان، تعداد مبتلایان در روز کاهش پیدا کرده است. زیرا مردم دیگر با هم تعامل نداشته‌اند و ویروس پخش نشده است.فعلاً از نظر علمی به این توافق رسیده‌ایم که اگر کسی سرفه کند می‌تواند ویروس را تا ۲ متر (۶ فوت)  پخش کند. در غیر اینصورت قطرات آن روی زمین می‌ریزد و شما را آلوده نمی‌کند.بعد از آن، بدترین آلودگی‌ها از طریق سطوح بوده است: ویروس می‌تواند تا ۹ روز روی سطوح مختلف مثل آهن، سرامیک و پلاستیک زنده بماند. اجسامی مثل دستگیره در، میزها یا دکمه‌های آسانسور می‌توانند حامل ویروس باشند.تنها راه کاهش این موضوع فاصله بین افراد است: تا جای ممکن و تا هر زمان که می‌توانیم افراد را در خانه نگه داریم تا وضعیت بهبود یابد.این مسئله در آنفولانزای فراگیر شده سال ۱۹۱۸ نیز اثبات شده است.نرخ مرگ و میر در شهرهای مختلف در آنفولانزای سال ۱۹۱۸در این نمودار فیلادلفیا را می‌بینیم (خط ممتد) که به سرعت عکس‌العمل نشان نداده است و یک پیک بسیار بزرگ در نرخ مرگ و میر دارد. حال آن را با سنت لوییس (خط‌چین) مقایسه کنید که عکس‌العمل نشان داده است.حال به دنور نگاه کنید که در ابتدا قوانین لازم را اجرایی کرده است و سپس آن‌ها را آسان‌تر کرده. نمودار آن‌ها دو قله‌ای شده است و قله دوم بزرگتر از اولی است.نمودار نرخ مرگ و میر در دنور در آنفولانزای سال ۱۹۱۸: چهار بازه زمانی که در زیر نمودار مشخص شده‌اند از بالا به پایین: ۱- تعطیلی مدارس ۲- ممنوعیت تجمعات عمومی (که بعد از مدتی لغو شده است) ۳- قرنطینه و ایزوله کردن ۴- سایر اقداماتحال اگر این را تعمیم بدهیم به این نتیجه می‌رسیم:این نمودار نشان می‌دهد که در آنفولانزای ۱۹۱۸ در آمریکا به ازای هر شهر چند مرگ بیشتر ثبت شده است نسبت به این که هر شهر چقدر سریع اقدامات لازم را انجام داده است. برای مثال، شهری مانند سنت لوییس ۶ روز قبل از پیتسبورگ اقدامات لازم را انجام داده است و تعداد مرگ و میر آن کمتر از نصف پیتسبورگ است. به طور میانگین اگر ۲۰ روز زودتر اقدامات صورت می‌گرفتند نرخ مرگ و میر نصف می‌شد.ایتالیا بالاخره به این نکته پی برده است، آن‌ها در ابتدا منطقه Lombardy را در یکشنبه قرنطینه کردند و سپس فردای آن روز به اشتباه خود پی بردند و کل کشور را در دوشنبه قرنطینه کردند.امیدواریم در روزهای آینده نتایج این کار را ببینیم. با این حال، بین یک تا دو هفته طول می‌کشد تا نتایج این قرنطینه مشخص بشود. اگر نمودار ووهان را به یاد بیاورید بین تاریخی که قرنطینه اعلام شد و تعداد مبتلایان رسمی شروع به کاهش کرد ۱۲ روز فاصله وجود داشت.رشته توییتی که در مقاله ذکر شد هم به نظرم جالب بود، برای همین اون رو هم ترجمه کردم و اینجا می‌ذارم. یه مقدار ترجمه نادقیق هستش چون پر بود از اصطلاحات پزشکی که من بلد نیستم.از طرف یکی از دوستان محترمم که که مشاور موارد سانحه و اورژانس است و هم‌اکنون در ایتالیای شمالی است:حس می‌کنم خوبه که یک آپدیت شخصی و سریع از وضعیت ایتالیا بهت بدم و همچنین چند تا نصیحت از این که چیکارا باید بکنی.اول این که Lumbardy توسعه‌یافته‌ترین منطقه ایتالیا هستش و یک سیستم خدمات درمانی فوق‌العاده خوب داره. من تو ایتالیا و انگلستان و اتریش کار کردم و فکر نمی‌کنم اتفاقاتی که الان داره می‌افته توی یه کشور جهان سوم هستش.وضعیت فعلی غیر قابل تصور هستش و اعداد هیچ چیزی رو توضیح نمی‌دن. بیمارستان‌هامون پر شده از مبتلایان ویروس کرونا و الان دارن روی ۲۰۰ درصد ظرفیت کار می‌کنن.همه‌ی کارهای روتین متوقف شده، اتاق‌های جراحی تبدیل به بخش مراقبت‌های ویژه شده و الان دارن موارد اورژانسی دیگه مثل خفگی رو ارجاع می‌دن یا درمان نمی‌کنن. صدها بیمار با مشکلات تنفسی خیلی شدید وجود دارند و خیلی ‌هاشون به جز یک ماسک به هیچ چی دسترسی ندارند.بیماران بالای ۶۵ سال یا جوون‌ترهایی که چند بیماری دارند حتی توسط بخش مراقبت‌های ویژه بررسی نمی‌شن. منظورم این نیست که بهشون تیوب نمی‌دیم، کلاً بررسی نمی‌شن. افراد تا جایی که می‌تونن کار می‌کنن ولی دارن کم کم مریض می‌شن و از نظر روانی هم در هم شکستن.دوستانم در حال اشک ریختن بهم زنگ می‌زنن چون دارن می‌بینن ملت جلوشون می‌میرن و اینها هم فقط می‌تونن بهشون اکسیژن بدن. به اورتولوژیست و پاتولوژیست ها یه بروشور دادن و فرستادنشون پیش بیمارانی که به دستگاه NIV وصل هستند.این الگو رو تو قسمت‌های مختلف هم در عرض چند هفته دیدیم و هیچ دلیلی وجود نداره که چند هفته دیگه همین وضعیت رو همه‌جا ببینیم و الگو اینطوریه:۱- اول چند تا کیس مثبت، بعدش یه سری اقدامات اولیه، به مردم می‌گن نیاین قسمت اورژانس ولی هنوز در گروه‌های مختلف اجتماعی جمع می‌شن، همه می‌گن نترسید و پنیک نکنید.۲- چند تا کیس متوسط از کارافتادگی سیستم تنفس و چند تا کیس وخیم که به تیوب نیاز دارند ولی چون دسترسی عادی به اورژانس به شدت کمتر شده همه چیز خوب به نظر می‌رسه.۳- کلی بیمار با از کارافتادگی متوسط سیستم تنفسی، که به مرور زمان همه‌ی بخش‌های بیمارستان رو به ترتیب پر می‌کنن.۴- کارمندان مریض می‌شون و سخت می‌شه شیفت ها رو پر کرد، نرخ مرگ و میر به شدت زیاد می‌شه چون بقیه موارد رو هم نمی‌تونیم خوب رسیدگی کنیم.همه چیز در مورد درمان اونها آنلاین وجود داره ولی تنها چیزهایی که تفاوت ایجاد می‌کنه اینه که: از این که یه سری اقدامات سفت و سخت برای حفاظت از مردم بذارید نترسید، اگر دولت این کار رو نمی‌کنه حداقل خانواده خودتون رو سالم نگه دارید. عزیزان شما اگر سابقه سرطان، دیابت یا هر پیوند عضوی دارند بهشون تیوب داده نمی‌شه حتی اگر جوون باشن. منظور از سالم نگه داشتن خانواده یعنی تو (چون خود فرد هم پزشک بوده) اون‌ها رو نبینی و تو تصمیم بگیری که چه کسی اونها رو ببینه و تو بهشون آموزش بدی.یک روحیه خیلی غالب هم اینه که ملت همچین چیزهایی رو می‌خونن و می‌شنون و می‌گن «چقدر بده اوضاع» بعدش پا می‌شن می‌رن بیرون شام چون فکر می‌کنن در امان هستند.ما همه‌ی اینها رو دیدیم پس لطفاً وضعیت رو جدی بگیرید. امیدوارم که اونجا به این وخامت نباشه وضعیت ولی آماده باشید.مرسی از همراهیتون. امیدوارم امروز قسمت آخر رو هم ترجمه کنم. سعی کنید تا جای ممکن این مطالب رو نشر بدید تا آگاهی مردم از وضعیت افزایش پیدا کنه.بروزرسانی: قسمت آخر هم ترجمه شد.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Fri, 13 Mar 2020 16:27:59 +0330</pubDate>
            </item>
                    <item>
                <title>ویروس کرونا: چرا باید از همین الان دست به کار بشید</title>
                <link>https://virgool.io/@m30m/%D9%88%DB%8C%D8%B1%D9%88%D8%B3-%DA%A9%D8%B1%D9%88%D9%86%D8%A7-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A7%D8%B2-%D9%87%D9%85%DB%8C%D9%86-%D8%A7%D9%84%D8%A7%D9%86-%D8%AF%D8%B3%D8%AA-%D8%A8%D9%87-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%B4%DB%8C%D8%AF-wjx9og44qmel</link>
                <description>بروزرسانی: مرسی از نظراتتون قسمت دوم و آخر هم منتشر شد.بروزرسانی ۲: مقاله‌ی بعدی این نویسنده هم ترجمه شده و می‌تونید اون رو هم بخونید.این مقاله ترجمه انگلیسی این مقاله در medium هست. مقاله بسیار کاملی بود و حس کردم ترجمه و خوندنش برای ما ایرانیان هم می‌تونه مفید باشه. ترجمه‌ی نمودارها زمان‌بر هستش، برای همین سعی می‌کنم زیرش خلاصه‌ای از نمودار رو بیشتر توضیح بدم. سعی کردم جاهایی که مهمه تاریخ‌ها رو تبدیل کنم و اگر چیزی از خودم اضافه کردم به صورت ایتالیک هستش.مخاطب اصلی مقاله افراد تصمیم‌گیر و مسئول هستند اما من خوندنش رو به همه توصیه می‌کنم.با تمام اتفاقاتی که این روزها در مورد کرونا داره رخ می‌ده شاید خیلی سخت باشه که تصمیم بگیریم امروز باید چیکار کنیم. باید منتظر اطلاعات بیشتر باشیم؟ همین امروز یه کاری بکنیم؟ یا چی؟توی این مقاله می‌خوام در مورد موضوعات زیر صحبت کنم؛ به همراه تعداد زیادی نمودار، داده و مدل و تعداد زیادی منبع اطلاعاتی.چند مورد مبتلا به کرونا در منطقه‌ی شما وجود خواهد داشت؟چه اتفاقی می‌افته وقتی این موارد آشکار می‌شن؟شما باید چیکار کنید؟چه زمانی؟چیزهایی که در حین خوندن این مقاله دستگیرتون خواهد شد:ویروس کرونا داره به شما نزدیک می‌شه.سرعت نزدیک شدن ویروس نمایی هستش: در ابتدا آهسته و سپس به سرعت.این اتفاق در طی چند روز آینده خواهد افتاد. شاید یک یا دو هفته.وقتی این اتفاق رخ می‌ده، سیستم خدمات درمانی شما از پای در میاد.شهروندان شما توی راهروها درمان خواهند شد.پرستاران و دکترانی که توی سیستم خدمات درمانی خسته شدند از پا در میان. بعضی از اونها می‌میرند.اونها مجبور هستند تصمیم بگیرن که به کدوم بیمار اکسیژن وصل بشه و کدوم بمیره.تنها راه جلوگیری از این اتفاقات رعایت فاصله اجتماعی از همین امروز هستش. فردا نه، همین امروز.این یعنی از همین الان مردم رو تا جای ممکن توی خونه نگه داریم.به عنوان یک سیاستمدار، رهبر یک اجتماع یا کسب‌وکار، شما قدرت و وظیفه‌ی این رو دارید که از این اتفاقات جلوگیری کنید.ممکنه که امروز نگرانی‌هایی داشته باشید: اگر بیش از حد عکس‌العمل نشون بدم چی؟ مردم به من می‌خندن؟ از دستم عصبانی می‌شن؟ احمق به نظر می‌رسم؟ بهتر نیست یه خورده صبر کنم تا بقیه اول یه کاری بکنن؟ آیا خیلی به اقتصاد ضربه می‌زنم؟ولی بین ۲ تا ۴ هفته، وقتی تمام دنیا در وضعیت قفل‌شده (lockdown) قرار گرفته، وقتی که شما باعث خواهید شد تا رعایت فاصله اجتماعی محقق بشه و جون افرادی رو نجات خواهید داد، مردم دیگه از شما انتقاد نخواهند. اونها برای تصمیمات درستتون از شما تشکر خواهند کرد.خب، شروع می‌کنیم.۱- چند مورد مبتلا به کرونا در منطقه‌ی شما وجود خواهد داشت؟رشد در کشورهای مختلفتعداد موارد مبتلا به ویروس کرونا در جهان از ۲ بهمن تا ۲۰ اسفندتعداد موارد مبتلا به ویروس به صورت نمایی رشد پیدا کرد تا زمانی که چین تونست اون رو محدود نگه داره. اما بعد از اون، ویروس به بیرون از چین راه پیدا کرد و الان کرونا یک ویروس فراگیر در سطح جهان هستش که هیچ‌کس نمی‌تونه اون رو متوقف کنه.تعداد موارد مبتلا به ویروس کرونا در خارج از چین از ۲ بهمن تا ۲۰ اسفندتا به امروز، این موارد اکثراً به خاطر کشورهای ایتالیا، ایران و کره جنوبی بودند.تعداد موارد مبتلا به ویروس کرونا به تفکیک کشور، به غیر از چینتعداد موارد مبتلا در کره جنوبی، ایتالیا و چین به قدری زیاد هستش که سخت می‌شه بقیه کشورها رو توی نمودار دید اما بیاید روی گوشه‌ی پایین سمت راست نمودار زوم کنیم.تعداد موارد مبتلا به ویروس کرونا به تفکیک کشور، به غیر از چین، کره‌جنوبی، ایتالیا و ایرانتعداد زیادی کشور دیگر هستند که تعداد موارد مبتلا در اونها رشد نمایی داره. تا به امروز، اکثر اونها کشورهای غربی هستند.نرخ رشد روزانه موارد مبتلا در کشورهای مختلف بین ۱۳ و ۱۴ اسفند. تعداد موارد مبتلا به ویروس کرونا در کشورهایی که نرخشان از خط قرمز بیشتر است در هر دو روز، دو برابر می‌‌شود.اگر بخواهیم این نرخ رشد را فقط برای یک هفته داشته باشیم، به همچین نتایجی می‌رسیم:پیش‌بینی تعداد مبتلایان به تفکیک کشور، به غیر از چین، کره‌جنوبی، ایتالیا و ایراناگر می‌خواهید بفهمید چه اتفاقی خواهد افتاد، یا چطوری از اون جلوگیری کنید، باید به مواردی که تا حالا تجربه‌ی چنین موقعیتی رو داشتند نگاه کنیم: چین، کشورهای شرقی که تجربه‌ی ویروس سارس رو داشتند، و ایتالیا.چینجدول زمانی رخدادهای هوبی: سه فلش قرمز از چپ به راست به ترتیب ۱- موارد مبتلا شروع به رشد نمایی کردند ۲- قرنطینه صورت گرفت ۳- تعداد موارد واقعی شروع به کاهش کرداین یکی از مهم‌ترین نمودارهای این مقاله هست.میله‌های نارنجی تعداد موارد مبتلا به ویروس رو که به صورت روزانه و رسمی در استان هوبی اعلام می‌شدند را نشان می‌دهد: تعداد افرادی که در آن روز مبتلا به این بیماری تشخیص داده می‌شدند.میله‌های خاکستری تعداد موارد واقعی مبتلا به ویروس را نشان می‌دهد. مرکز کنترل و پیشگیری از بیماری‌های چین این اطلاعات را با سوال پرسیدن از بیماران در مورد این که چه زمانی علائم بیماری در آن‌ها شروع شده است، به دست آوردند.تعداد موارد واقعی در همان زمان مشخص نبودند. ما فقط می‌توانیم این آمار را در روزهای گذشته داشته باشیم. در واقع مسئولین نمی‌توانند بفهمند که همین الان علائم ویروس در یک فرد آشکار شده. آنها تنها زمانی که فرد به دکتر مراجعه می‌کند این اطلاعات را به دست می‌آورند.این نمودار به این معناست که میله‌های نارنجی چیزی که مسئولین می‌دانستند را نشان می‌دهد و میله‌های خاکستری چیزی که در حال رخ‌دادن بوده است.در ۲۱ ژانویه (۱ بهمن)، تعداد موارد جدید مبتلا به ویروس در حال رشد شدید است و حدود ۱۰۰ مورد جدید وجود دارد. در واقعیت، ۱۵۰۰ مورد جدید در همان روز وجود داشته است و در حال رشد نمایی بوده است. اما مسئولین آن را نمی‌دانستند. چیزی که آن‌ها می‌دانستند این بود که به صورت ناگهانی ۱۰۰ مورد مبتلای جدید به این ویروس جدید تشخیص داده شده است.دو روز بعد، مسئولین ووهان را تعطیل کردند. در آن زمان، روزانه حدود ۴۰۰ مورد مبتلای جدید تشخیص داده می‌شد. این عدد را به خاطر داشته باشید: آن‌ها تصمیم گرفتند که شهر را در زمانی که ۴۰۰ مورد جدید در روز داشتند تعطیل کنند. در واقعیت، آن‌ها ۲۵۰۰ مورد جدید در آن روز داشتند اما این را نمی‌دانستند.روز بعد از آن، ۱۵ شهر دیگر در استان هوبی تعطیل شدند.تا ۲۳ ژانویه (۳بهمن)، که زمان تعطیل شدن ووهان بود، به نمودار خاکستری نگاه کنید: موارد واقعی مبتلا به صورت نمایی رشد می‌کنند. به محض تعطیل شدن ووهان، سرعت رشد کاهش پیدا می‌کند. در ۲۴ ژانویه، زمانی که ۱۵ شهر دیگه تعطیل می‌شوند، رشد تعداد مبتلایان واقعی جدید (رنگ خاکستری) متوقف می‌شود. دو روز بعد، به حداکثر مقدار تعداد مبتلایان واقعی جدید در روز می‌رسیم و بعد از آن، تا به امروز این موارد در حال کاهش بوده‌اند.دقت کنید که تعداد مبتلایان رسمی (رنگ نارنجی) هنوز در حال رشد نمایی بودند: تا ۱۲ روز بعد، هنوز به نظر می‌رسید که تعداد مبتلایان به شدت در حال رشد است. اما اینگونه نبود. دلیل این اتفاق این بود که مبتلایان نشانه‌های قوی‌تری در خود می‌دیدند و بیشتر به دکتر مراجعه می‌کردند و سیستم تشخیص این بیماران قوی‌تر شده بود.مفهوم موارد مبتلای رسمی و واقعی مفهوم مهمی است. آن را برای ادامه مقاله به خاطر داشته باشید.بقیه مناطق چین به خوبی توسط دولت مرکزی چین هماهنگ شده بودند، بنابراین به سرعت اقدامات شدید و جدی رو انجام دادند. نتایج اینگونه بود:موارد مبتلا به ویروس کرونا، مناطق چین خارج از هوبی و کشورهای ایتالیا، ایران و کره جنوبیهر کدام از خط‌های صاف یکی از مناطق چین که در آن ویروس کرونا وجود داشته است را نشان می‌دهد. هر کدام از آن‌ها پتانسیل این را داشتند که به صورت نمایی رشد کنند، اما به کمک تمهیدات لازم در انتهای ژانویه، تمام آن‌ها توانستند ویروس را قبل از انتشارش متوقف کنند.در همین حال، کره‌جنوبی، ایتالیا و ایران یک ماه کامل وقت داشتند تا یاد بگیرند، ولی نگرفتند. آن‌ها همان رشد نمایی هوبی را شروع کردند و پیش از اتمام ماه فوریه، از تمامی مناطق چین جلو زدند.کشورهای شرقیموارد مبتلا در کره جنوبی گسترده شدند، اما آیا به این فکر کردید که چرا ژاپن، تایوان، سنگاپور، تایلند و هنگ‌کنگ اینگونه نشدند؟موارد مبتلا به ویروس کرونا در خارج از چین، کشورهایی که بیش از ۵۰ مورد داشتند. تایوان کمتر از ۵۰ مورد داشته است و در این نمودار نیست.تمام این کشورها در سال ۲۰۰۳ تجربه‌ی ویروس سارس را داشته‌اند و از آن درس گرفته‌اند. آن‌ها یاد گرفتند که این ویروس‌ها می‌توانند چقدر فراگیر و کشنده باشند و آن را جدی گرفته‌اند. به همین دلیل نمودار تمام این کشورها با وجود این که خیلی زودتر شروع به رشد کردند هنوز به شکل نمایی نشده است.تا اینجا، داستان‌هایی داشتیم از گسترده شدن ویروس کرونا، دولت‌هایی که متوجه این تهدید شدند و آن را محدود کردند. با این حال، داستان برای بقیه‌ی کشورها کاملاً متفاوت است.قبل از این که در مورد آن‌ها صحبت کنیم، یک یادداشت در مورد کره جنوبی: این کشور احتمالاً یک حالت خاص باشد. ویروس کرونا در ۳۰ مورد اول مبتلا محدود شده بود. بیمار شماره ۳۱ یک ابر-پخش‌کننده (super-spreader) بوده است که این بیماری را به هزاران نفر دیگر انتقال داده. چون که ویروس قبل از نشان دادن علائم در افراد می‌تواند پخش بشود، قبل از این که مسئولین متوجه این مشکل بشوند ویروس پخش شده بوده است. آن‌ها در حال حاضر دارند هزینه عواقب آن یک مورد را می‌پردازند. با این حال نتیجه‌ی تلاش‌های آن‌ها برای محدود کردن ویروس ملموس است: تعداد موارد مبتلا در ایتالیا از کره جنوبی بیشتر شده است و ایران نیز فردا (۲۰ اسفند) آن را رد می‌کند.ایالت واشنگتونتا اینجای کار رشد ویروس را در کشورهای غربی و وخامت وضعیت را با تنها یک هفته پیش‌بینی دیدیم. حال تصور کنید که کنترل ویروس مثل ووهان یا کشورهای شرقی اتفاق نیفتد، در این صورت شما یک اپیدمی غول‌آسا خواهید داشت.بذارید چند مورد مثل ایالت واشنگتن، منطقه خلیجی سان فرانسیسکو، پاریس و مادرید را بررسی کنیم.تعداد مبتلایان و نرخ مرگ در ایالت واشنگتونایالت واشنگتون معادل ووهان برای آمریکا است. تعداد مبتلایان در آنجا در حال رشد نمایی است. در حال حاضر این تعداد ۱۴۰ نفر است.اما در همان اوایل یک اتفاق جالب افتاد. نرخ مرگ به شدت بالا بود. در بعضی از زمان‌ها، به ازای هر ۳ نفر مبتلا یک نفر جان خود را از دست می‌داد.ما از جاهای دیگر می‌دانستیم که نرخ مرگ ویروس کرونا چیزی بین نیم تا ۵ درصد است (در ادامه بیشتر در مورد آن صحبت می‌کنیم). چگونه ممکن است نرخ مرگ ۳۳ درصد باشد؟معلوم شد که ویروس هفته‌ها در حال انتشار بوده است بدون این که شناسایی بشود. اینگونه نبود که فقط ۳ نفر مبتلا باشند، بلکه مسئولین تنها در مورد ابتلای ۳ نفر می‌دانستند و یکی از آن‌ها مرده بود زیرا هر چقدر علائم بیمار شدید‌تر باشد، احتمال این که از آن تست کرونا بگیرند بیشتر است.این وضعیت مشابه نمودار نارنجی و خاکستری چین است. در اینجا، آن‌ها فقط در مورد میله‌های نارنجی (مبتلایان رسمی) می‌دانستند و وضعیت خوب بود: تنها ۳ نفر. اما در واقعیت، صدها و حتی شاید هزاران مبتلای واقعی وجود داشتند.این یک مسئله است: شما تنها تعداد مبتلایان رسمی را می‌دانید اما نیاز دارید تا تعداد مبتلایان واقعی را بدانید. چگونه می‌توان تعداد مبتلایان واقعی را تخمین زد؟ برای این کار چندین روش وجود دارد و من یک مدل برای هر دو مورد دارم. شما هم می‌توانید اعداد را بالا پایین کنید و نتایج مختلف را بررسی کنید (لینک مستقیم برای کپی کردن مدل)اول، از طریق تعداد مرگ و میر. اگر شما در منطقه‌ی خود مرگ‌و‌میر داشتید، می‌توانید از آن برای تخمین تعداد مبتلایان واقعی استفاده کنید. ما حدوداً می‌دانیم که از زمانی که یک فرد به ویروس مبتلا می‌شود تا زمانی که می‌میرد حدوداً چقدر طول می‌کشد (۱۷.۳ روز). این بدین معناست که فردی که در تاریخ ۲۹ فوریه در ایالت واشنگتن مرده است احتمالاً در تاریخ ۱۲ فوریه مبتلا شده بوده است.حال از نرخ مرگی که می‌دانیم استفاده می‌کنیم. برای این سناریو، فرض می‌کنیم ۱ درصد از مبتلایان می‌میرند (در ادامه بیشتر وارد جزییات می‌شویم). این یعنی در تاریخ ۱۲ فوریه حدود ۱۰۰ نفر مبتلا به ویروس وجود داشته است (که تنها یکی از آن‌ها ۱۷.۳ روز بعد مرده است).سپس، از میانگین زمان دوبرابر شدن ویروس استفاده می‌کنیم (متوسط زمانی که طول می‌کشد تا تعداد مبتلایان دوبرابر بشوند). این عدد ۶.۲ است. یعنی در این ۱۷ روزی که زمان برده‌است تا این فرد بمیرد، تعداد مبتلایان ۸ برابر شده است (دو به توان (هفده تقسیم بر ۶)). یعنی اگر همه‌ی موارد تشخیص داده نمی‌شوند، یک مرگ در امروز معادل ۸۰۰ مبتلای واقعی در امروز است.ایالت واشنگتون امروز ۲۲ مرگ گزارش کرده است. با یک محاسبه به این می‌رسیم که حدود ۱۶هزار مورد مبتلای واقعی وجود دارد. به اندازه مجموع تعداد مبتلایان گزارش شده در ایران و ایتالیا.اگر بیشتر به جزییات دقت کنیم، می‌بینیم که ۱۹ نفر از این تعداد مرگ و میر از یک گروه خاص از افراد بوده‌اند که نمی‌توانند ویروس را آنقدر پخش کرده باشند. حال اگر تمام این ۱۹ نفر را یک نفر تلقی کنیم، تعداد مرگ و میر ۴ نفر می‌شود و اگر مدل را با این عدد محاسبه کنیم باز هم به حدود ۳۰۰۰ مبتلای واقعی در امروز می‌رسیم.این رویکرد از Trevor Bedford خود ویروس‌ها و جهش‌های آن‌ها را بررسی می‌کند تا تعداد افراد مبتلا را محاسبه کند. نتیجه‌ی این روش این است که حدود ۱۱۰۰ مبتلای واقعی در ایالت واشنگتون در حال حاضر وجود دارد.هیچ کدام از این روش‌ها ایده‌آل نیستند اما همه‌ی آن‌ها یک پیغام یکسان دارند: ما تعداد مبتلایان واقعی را نمی‌دانیم و این مقدار به شدت بیشتر از مبتلایان رسمی گزارش شده است. این تعداد در محدوده چند صدنفر نیست، در محدوده چندهزار نفر و شاید بیشتر است.منطقه خلیجی سان فرانسیسکوتا هشتم مارچ، این منطقه هیچ مرگ و میری نداشت. به همین دلیل سخت می‌شد که بتوانیم تعداد مبتلایان واقعی را بفهمیم. به صورت رسمی، ۸۶ مورد گزارش شده بود. اما آمریکا از افراد بسیار زیادی تست کرونا نمی‌گیرد زیرا کیت‌های کافی برای این کار را ندارد. آمریکا تصمیم گرفت تا خودش این کیت‌های تست را بسازد اما به نظر این کیت‌ها کار نمی‌کنند.این‌ها آمار تست‌هایی است که در کشورهای مختلف تا سوم مارچ انجام شده بود:ستون‌ها از چپ به راست: نام کشور، تست‌های انجام شده، تست به ازای هر یک میلیون شهروند، نرخ تست‌های مثبت. منابع این اعداد اینجاستترکیه، که هیچ مبتلایی به ویروس کرونا نداشته است، ۱۰ برابر بیشتر از آمریکا تست به ازای هر شهروند انجام داده است. امروز وضعیت چندان بهتر نشده است، با حدود ۸۰۰۰ تست انجام داده شده در آمریکا تنها حدود ۴۰۰۰ نفر تست شده اند. (هر نفر به بیش از یک تست نیاز دارد)تست‌های انجام شده به ازای هر یک میلیون نفر از جمعیت کشور در کشورهای مختلفبرای سان‌فرانسیسکو می‌توانیم از نسبت مبتلایان رسمی به مبتلایان واقعی یک منقطه‌ی دیگر استفاده کنیم. اما چطور تصمیم بگیریم که از کدام منطقه استفاده کنیم. برای این منطقه، همه‌ی افرادی که در حال مسافرت بوده‌اند یا با یک مسافر در تماس بوده‌اند تست شده اند، یعنی اکثر مبتلایان مرتبط با سفر شناسایی شده اند اما هیچ کدام از مبتلایانی که از طریق مردم عادی مبتلا شده‌اند شناسایی نشده‌اند. اگر بتوانیم نسبت شیوع از طریق مسافرت و شیوع از طریق مردم عادی را تخمین بزنیم می‌توانیم تعداد مبتلایان واقعی را پیدا کنیم.من این نسبت را در کره جنوبی که داده‌های خیلی زیادی دارد بررسی کردم. تا زمانی که آن‌ها ۸۶ مورد ابتلا داشتند، حدود ۸۶ درصد از افراد به دلیل شیوع از طریق مردم عادی مبتلا به ویروس شده بودند. (این که هر دو عدد ۸۶ شده است تصادفی است).با این نسبت می‌توانیم تعداد مبتلایان واقعی را تخمین بزنیم. اگر سان‌فرانسیسکو امروز ۸۶ مبتلای رسمی دارد، محتمل است که تعداد مبتلایان واقعی حدود ۶۰۰ نفر باشند.فرانسه و پاریسفرانسه ادعا دارد که تا به امروز ۱۴۰۰ مورد ابتلا و ۳۰ مورد مرگ داشته است. اگر از طریق دو روشی که در بالاتر توضیح داده شد بخواهیم تعداد مبتلایان واقعی را تخمین بزنیم نتیجه عددی بین ۲۴هزار و ۱۴۰هزار است.تعداد مبتلایان واقعی در فرانسه امروز (۲۰ اسفند) بین ۲۴هزار تا ۱۴۰ هزار نفر است.بذارید دوباره تکرار کنم: تعداد مبتلایان واقعی در فرانسه بین ده تا صد برابر میزان مبتلایان رسمی گزارش شده است.باورتان نمی‌شود؟ بذارید دوباره به نمودار ووهان نگاه کنیم:اگر تمام میله‌های نارنجی را تا ۲۲ ژانویه جمع بزنیم ۴۴۴ مورد مبتلا داریم. حالا اگر تمام میله‌های خاکستری تا آن روز را جمع بزنیم ۱۲۰۰۰ مبتلا داریم. یعنی وقتی ووهان فکر می‌کرده که ۴۴۴ مبتلا داشته، در واقع ۲۷ برابر بیشتر داشته است. حال اگر فرانسه فکر می‌کند ۱۴۰۰ مبتلا دارد، می‌توانید چند ده هزار نفر داشته باشد.با همین روابط می‌توانیم مبتلایان واقعی پاریس را هم تخمین بزنیم. با حدود ۳۰ مبتلا در شهر، تعداد مبتلایان واقعی احتمالاً چندصد نفر و شاید هزاران نفر باشد. با ۳۰۰ مورد ابتلا در منطقه Ile-de-France، تعداد مبتلایان واقعی می‌تواند بیش از ۱۰هزار نفر باشد.اسپانیا و مادریداسپانیا نیز اعدادی بسیار مشابه به فرانسه دارد (۱۲۰۰ مورد مبتلا در برابر ۱۴۰۰ مورد و هر دو ۳۰ مورد مرگ). این بدین معناست که همان قواعد اینجا هم درست است: اسپانیا حدود ۲۰هزار مورد مبتلای واقعی دارد.در ناحیه Comunidad de Madrid که ۶۰۰ مورد ابتلای رسمی و ۱۷ مرگ ثبت شده است، تعداد مبتلایان واقعی چیزی بین ۱۰هزار تا ۶۰هزار است.اگر این اعداد را می‌خوانید و با خودتان می‌گویید: «امکان نداره، این حقیقت نداره» فقط به این فکر کنید: با این تعداد مبتلای رسمی ووهان در حالت تعطیلی کامل بوده است.ووهان قبل از این که تعداد مبتلایان به میزان مبتلایان کشورهایی مثل آمریکا، اسپانیا، فرانسه، ایران، آلمان، ژاپن، سوییس رسیده باشد کاملاً تعطیل شده بود.و اگر با خودتان می‌گویید: «استان هوبی فقط یک منطقه است» بذارید به شما یادآوری کنم که جمعیت آن حدود ۶۰ میلیون نفر است، بزرگتر از اسپانیا و هم‌اندازه فرانسه.مقاله بسیار کامل و بلند است و ترجمه هم کاری سخت و زمان‌گیر. اگر حس کنم که این ترجمه مفید بوده، ادامه‌ی اون رو هم ترجمه می‌کنم. امیدوارم که مفید بوده باشه.بروزرسانی: مرسی از نظراتتون قسمت دومش هم منتشر شد.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Thu, 12 Mar 2020 16:11:30 +0330</pubDate>
            </item>
                    <item>
                <title>چند شب با NeurIPS 2019</title>
                <link>https://virgool.io/@m30m/%DA%86%D9%86%D8%AF-%D8%B4%D8%A8-%D8%A8%D8%A7-neurips-2019-i8hsfx78aax0</link>
                <description>کنفرانس NeurIPS معتبرترین کنفرانس یادگیری ماشین هستش که چند سال اخیر به شدت رشد کرده و فرصتی هستش تا محققان و دانشجویان و مهندسان و دوستداران یادگیری ماشین همگی دور هم جمع بشن و از آخرین پیشرفت‌های این زمینه مطلع بشن. امسال NeurIPS توی ونکوور برگزار شد و اکثر ارائه‌ها هم ضبط شدند و از اینجا قابل دسترسی هستند.ما هم تصمیم گرفتیم که بشینیم و بعضی شب‌ها ارائه‌هایی که به نظرمون جذاب اومدند رو ببینیم. توی این پست خلاصه‌ای از چند تا ارائه رو می‌نویسیم و تجربه‌مون از این کار.حدود ۱۳هزار نفر در کنفرانس امسال شرکت کرده بودند!!Computation + Systems vs Climate Change by Jeff Deanلینک ارائهاین ارائه اولین ارائه در ورکشاپ Tackling Climate Change With ML هستش که موضوعش کمک کردن به بهبود فرایند گرمایش زمین از طریق یادگیری ماشین هست. Jeff Dean، مدیر بخش هوش مصنوعی گوگل هستش و یکی از کلیدی‌ترین افراد گوگل در زمینه هوش مصنوعی و یادگیری ماشین هست. توی معرفیش اینطوری ازش یاد می‌کنن که اگر کارهایی که انجام نداده رو توی رزومه‌ش بنویسه رزومه‌ش کوتاه‌تر می‌شه! قبل از دیدن ارائه اولین چیزی که تو ذهنم بود این بود که خود این سرورهایی که روش فرایند یادگیری و جمع آوری و دیتا و ... انجام می‌شه به شدت مصرف برقشون بالاست و کلی انرژی صرف دیتاسنترها می‌شه و شاید اولین مرحله این باشه که یه فکری به حال اون بکنیم! اولین چیزی که Jeff بهش اشاره می‌کنه هم همین موضوع هستش. این که گوگل از سال ۲۰۱۷ تمام برقش رو از انرژی‌های تجدیدپذیر می‌گیره و از سوخت‌های فسیلی برای تامین برقش استفاده نمی‌کنه و نباید نگران اون مسئله باشیم.مصرف انرژی گوگل از سال ۲۰۱۷ به صورت کامل از انرژی‌های تجدیدپذیر بوده بعدش چند تا case مطرح می‌کنه که چطوری Bayesian Inference و شبکه‌های عصبی تونستند تو جلو بردن تحقیقات در زمینه Fusion و شبیه‌سازی مدل‌های آب‌وهوا کمک بکنن. یه مقداری هم در مورد این صحبت می‌کنه که از چه طریقی می‌شه این موضوع رو اطلاع‌رسانی کرد و باید به کیا کمک کنیم (دولت‌ها یا شرکت‌ها یا مردم عادی). یه مثال جالبی که درباره اطلاع رسانی می‌زنه ابزاری هستش که به کمک داده‌های Google Maps و تصاویر ماهواره‌ای ایجاد کردند. این ابزار می‌تونه تخمین بزنه که نصب پنل خورشیدی روی سقف خونه‌های هر شهر چقدر می‌تونه انرژی تولید کنه و برای یه شهروند چقدر هزینه داره.نکات اصلی ارائه برای من این بود که حس منفی‌ام نسبت به مصرف انرژی بالای دیتاسنترها بهتر شد. همچنین فهمیدم چقدر استفاده‌ی شبکه‌های عصبی تو شبیه‌سازی‌های پدیده‌های مختلف زیاد شده و بعضی از متدهای رایج قدیمی مثل حل معادلات دیفرانسیل دارن جاشون رو به شبکه‌های عصبی می‌دن.Agency + Automation by Jeffrey Heerلینک ارائهاین ارائه یکی از Keynote های امسال بود. Jeff Heer از بزرگان فیلد تصویرسازی و تعامل انسان و کامپیوتر (HCI) هستش و ابزارها و کتابخونه‌های خیلی مطرحی مثل D3 توسط گروه ایشون توسعه داده شده. توی این ارائه در مورد اتوماتیک کردن بعضی از کارهای افراد در زمینه‌های مختلف و تاثیر یه Ui تعاملی رو توضیح می‌ده. شروع ارائه با بحث در مورد این که ماشین‌ها جای انسان‌ها رو خواهند گرفت هستش که این روزها بحث خیلی داغی هست. Jeff می‌گه که این مسئله‌ی جدیدی نیستش و کل فیلد کاری ما در مورد همین مسئله هستش و به مقاله‌ای از ۱۹۶۰ در این مورد اشاره می‌کنه. بعدش توضیح می‌ده که نباید صفر و یکی به قضیه نگاه کنیم و از نظر میزان اتوماتیک شدن فرایند احتمالاً یه جایی اون وسط هستش که هم انسان راضی باشه و هم سازندگان ماشین، اما پیدا کردن اون نقطه بهینه کار آسونی نیست.توی بخش اصلی ارائه چند تا مثال از کارهای اخیرشون می‌زنه که چطوری سیستم‌هایی طراحی کردند که به کاربران کمک می‌کنه تا کارشون رو آسون‌تر، سریعتر و با کیفیت بیشتر انجام بدن. مثال اولش DataWrangler هستش که به افرادی که با داده سر و کار دارند کمک می‌کنه که سریعتر داده رو تمیز بکنن. مثلاً وسط فایل اکسلتون یه سری Header تکرار شده، کافیه شما یه دونه‌ش رو حذف کنید و بعدش برنامه به شما پیشنهاد می‌ده که بقیه‌ی ردیف‌های مشابه این رو هم حذف بکنه. مثال بعدیش از یه ابزار Data Exploration هستش که می‌شه توش دیتاست مورد نظر رو وارد کرد و نمودارهای مختلفی از ستون‌های مختلف کشید. هوشمندی ابزار توی اینه که خودش بهتون پیشنهاد می‌ده چه نمودارهایی رو بررسی کنید و توی چه نمودارهایی احتمالاً بتونید ویژگی‌های جالبی پیدا بکنید. مثال آخرش هم در مورد یه ابزار برای کمک به مترجمان از طریق ترجمه ماشینی هستش که به مترجمان پیشنهاد می‌ده از چه کلمات یا جملاتی استفاده کنند.در مورد ابزار ترجمه یه اسلاید خیلی جالب وجود داشت که می‌گفت اولین بار ایده‌ی همکاری ماشین و انسان برای ترجمه متن حدود ۵۰ سال پیش مطرح شده. چرا این ایده اینقدر کم مورد توجه قرار گرفته؟ خود Jeff و چند نفر دیگه سال ۲۰۱۵ یه مقاله دادند که نشون می‌دن یکی از دلایل اصلیش bias بیش از حد به اتوماتیک کردن کامل فرایند بوده. در واقع افراد بیشتر دوست داشتند که ترجمه «تمام اتوماتیک» داشته باشند تا این که چند نفر رو هم استخدام کنن تا بخشی از فرایند رو براشون انجام بدن.یه پروپوزال خیلی قدیمی برای این که چطوری یه سیستم ترجمه نیمه خودکار داشته باشیمچند مورد توی هر ۳ ابزار معرفی شده به چشم می‌خورد که برام خیلی جالب بود. یکی این که نمی‌خواستند این ابزارها کاربر رو محدود بکنند و کاربر مجبور بشه که همیشه از همین ابزار استفاده کنه. مثلاً توی Data Wrangler می‌تونن از ابزار خروجی کد هم بگیرن که از این به بعد مستقیم اون کد رو توی هر pipeline دیگه‌ای که دارند اجرا بکنن. نکته‌ی بعدی ظرافت‌هایی بود که توی UX ابزارهاشون داشتند و این که کجا، چقدر و چطوری پیشنهادات سیستم رو به کاربر نشون بدن. مثلاً توی ابزار ترجمه پیشنهادات ترجمه به صورت کمرنگ در ادامه متن تایپ شده وجود داشت و همچنین ابزار به کاربر نشون می‌داد که در لحظه در حال ترجمه کدوم جمله از متن اصلی هستش. نکته‌ی آخر فیدبک‌هایی بود که از کاربراشون گرفته بودند که نشون می‌داد چنین طراحی‌هایی چقدر کار دشواری هستش. بعضی از کاربران این حس رو داشتند که خیلی از هوشمندی که قبلاً خودشون به خرج می‌دادند رو الان نیازی نیست که داشته باشند و همون پیشنهاداتی که کامپیوتر می‌ده اکثر مواقع پیشنهادات خیلی خوبی هستش و کار رو جلو می‌بره و از این ناراضی بودند چون حس می‌کردند که دارن یه کار روتین انجام می‌دن و دیگه چالش خاصی نداره.در پایان ارائه کمی به چالش‌های فعلی که بین یادگیری ماشین و فیلد HCI وجود داره اشاره می‌کنه از قبیل این که چطوری می‌شه به کمک یادگیری ماشین یه سیستم تعاملی رو بهبود داد و اون نقطه بهینه برای میزان اتوماتیک‌کردن یک فرایند رو چطوری باید پیدا کرد.پی‌نوشت‌: اگر به موضوع جایگزین کردن افراد در برابر تقویت (augment) کردنشون علاقه مند هستید خوندن این مقاله هم خالی از لطف نیست.Uniform convergence may be unable to explain generalization in deep learningلینک ارائهاین مقاله جایزه Outstanding New Directions امسال NeurIPS رو برده بود و دوست داشتم که ببینم موضوعش چیه. یکی از مسائلی که از چند سال پیش توی Deep Learning مطرح شده و هنوز هم حل نشده در مورد اینه که چرا یک مدل شبکه عصبی که تعداد پارامترهاش بیش از حد زیاد هستش همچنان می‌تونه به خوبی چیزی که یاد گرفته رو تعمیم بده (Generalization). قبل از Deep Learning اکثر الگوریتم‌های یادگیری ماشین باندهای شسته رفته‌ای داشتند و مثلاً می‌شد گفت مدل X با قدرت تفکیک‌پذیری Y اگر با دیتاستی train بشه که اندازه‌ش D هستش به احتمال خیلی بالایی خطای خیلی کمی داره! توضیح دقیق‌ترش رو با کلیدواژه‌ی PAC Learning می‌تونید پیدا بکنید. باندهایی که وجود داشتند اما برای Deep Learning اصلاً دقیق (tight) نبودند. تو این چند سال هم کلی مقاله منتشر شده در مورد این که چطوری می‌شه این باندها رو دقیق کرد و بهبود داد . کار جالبی که این مقاله کرده بود اینه که نشون داده اگر در مدل‌سازی‌مون از مسئله فرض Uniform Convergence داشته باشیم، نمی‌شه باند خوبی به دست بیاریم. این فرض Uniform Convergence توی اکثر کارهایی که قبلاً انجام شده وجود داشته و کار این مقاله از این نظر مهم بوده که نشون داده اون مسیر نمی‌تونه ما رو به جواب خوبی برسونه.به طور کلی تئوری پشت یادگیری عمیق ضعیفه و هنوز کسی نمی‌دونه که چرا بعضی از تکنیک‌ها جواب می‌دن و بعضی‌ها نمی‌دن و خیلی حالت مهندسی داره. این مقاله برای منی که کلاً از کارهای تئوری خوشم نمیاد از این نظر جالب بود که یه مقدار بروز شدم از وضعیت تئوری پشت یادگیری عمیق و این که چه پیشرفت‌هایی داره حاصل می‌شه.تجربه‌ی مادرسته که خیلی از کنفرانس‌های مطرح در این زمینه‌ها برای ما ایرانی‌ها به دلیل مشکلات هزینه‌ای و ویزا و ... قابل دسترسی نیستند اما اکثرشون رو می‌شه به صورت آنلاین هم مشاهده کرد و از این نظر آپدیت موندن خیلی راحت‌تر شده. این اولین بار بود که ما این کارو کردیم و الان می‌دونیم برای دنبال نکردن چنین کنفرانس‌هایی بهونه‌ای نداریم. دیدن ارائه‌ها و به خصوص keynote ها دید خیلی خوبی به موضوعات مختلف می‌ده و همچنین باعث می‌شه که آدم بهتر علایق خودش رو بشناسه. مثلاً من دوباره یادم اومدم که چقدر خود HCI در کنار ML برام جذاب هستش و چقدر همچنان کارهای تئوری برام غیر جذاب هستش. خلاصه نویسی و منتشر کردن این خلاصه‌ها هم باعث می‌شه که آدم خیلی بیشتر به ارائه فکر کنه و نکات مهمش یادش بمونه.امیدوارم که خوشتون اومده باشه و برید خود ارائه‌ها رو هم تماشا کنید :)</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Wed, 01 Jan 2020 21:18:34 +0330</pubDate>
            </item>
                    <item>
                <title>اندرباب یک دانشجوی درجه سه در دانشگاه ETH</title>
                <link>https://virgool.io/@m30m/%D8%A7%D9%86%D8%AF%D8%B1%D8%A8%D8%A7%D8%A8-%DB%8C%DA%A9-%D8%AF%D8%A7%D9%86%D8%B4%D8%AC%D9%88%DB%8C-%D8%AF%D8%B1%D8%AC%D9%87-%D8%B3%D9%87-%D8%AF%D8%B1-%D8%AF%D8%A7%D9%86%D8%B4%DA%AF%D8%A7%D9%87-eth-voqhxq4fwuof</link>
                <description>من سال پیش اپلای کردم و به تازگی دوره فوق لیسانس علوم کامپیوتر رو در دانشگاه ETH در سوییس شروع کردم. توی این پست می‌خوام کمی از تجربیاتم و تفاوت‌هایی که به خاطر ایرانی بودنم ایجاد شد صحبت کنم. این پست ترجمه‌ی پست انگلیسی‌م هستش، البته با کمی تغییرات برای مخاطبان ایرانی.بعد از اپلای و رفتن به یک کشور دیگه، هممون می‌دونیم که یه سری کارها برای ایرانی‌ها سخت‌تره؛ اما شاید تا وقتی که خودمون تجربه‌ش نکرده باشیم حس کاملی از سختیش نداریم. اولین باری که این اتفاق برای من افتاد، موقع باز کردن حساب بانکی بود. از دوستانم تو سوییس شنیده بودم که بانک‌های معروف سوییس مثل UBS دیگه برای ایرانی‌ها حساب باز نمی‌کنن اما به خاطر امتیازهای بیشتری که این بانک‌ها به دانشجوها می‌دادن، دوست داشتم شانسمو امتحان کنم. احتمال بالایی می‌دادم که برام حساب باز نکنن و بعدش برم سراغ یه بانک محلی‌تر مثل ZKB. همین اتفاق هم افتاد و هر کدوم از بانک‌ها بعد از دیدن پاسپورتم، ابراز شرمندگی کردند و من دست‌خالی اومدم بیرون. برخورد متصدیان بانک خیلی خوب بود و خوشحال بودم که حداقل ابراز همدردی می‌کنن باهام. بعدش با اطمینان کامل رفتم سراغ بانک ZKB و اونجا هم برام حساب باز نکردند!! اونجا بود که من ناراحت شدم، تفاوت زیادی هستش وقتی که آدم انتظار یه واکنش رو داره و وقتی که سورپرایز می‌شه. اونجا بود که برای اولین بار لمس کردم که من یه شهروند عادی در سوییس نیستم. پس احتمالاً یه شهروند درجه دو محسوب می‌شم، مثل بقیه ۲۶ درصد جمعیت سوییس که اتباع خارجی هستند. متاسفانه اینطور نبود.من برای دوره ارشدم فاند نداشتم و باید به عنوان TA یا RA شروع به کار می‌کردم تا بتونم مخارجم رو تامین کنم. به عنوان یه دانشجوی غیراروپایی برای شروع کار باید مجوز می‌گرفتم و طبق قوانین دانشگاه حق نداشتم توی ۶ ماه اول خارج از دانشگاه کار کنم. خود همین محدودیت خیلی از گزینه‌های کاری من رو حذف کرد اما بالاخره تونستم یه موقعیت برای خودم پیدا کنم و شروع به کار کردم. بعدش نوبت به اپلای برای کارآموزی‌های تابستون 2020 رسید. کارآموزی موقعیت خیلی خوبی هستش برای کار کردن در شرکت‌های بزرگ که حقوق خوبی به کارآموزهاشون می‌دن و می‌شه ازش برای بقیه سال هم استفاده کرد. طبق قوانین دانشگاه و کشور سوییس عملاً برای من غیرممکن بود که بتونم تابستون توی خود سوییس مشغول به کار بشم. آمریکا هم که با شرایط فعلی ویزا و اتفاقاتی که برای دوستام افتاده بود خیلی ریسکی محسوب می‌شد. انگلستان هم که توی منطقه شنگن نیست و جداگانه ویزا می‌خواد و یه بار هم که می‌خواستم یه کنفرانس اونجا شرکت کنم ویزام ریجکت شد. بنابراین فقط بقیه‌ی کشورهای اروپایی توی گزینه‌هام موندند و خیلی از موقعیت‌های خوب حذف شدند. اعصاب خوردکن ترین بخش این قضیه وقتی بود که با بقیه‌ی دانشجوهای اینجا صحبت می‌کردم. وقتی که اونها می‌فهمیدن من مدال المپیاد کامپیوتر دارم بهم می‌گفتن «پس حتماً راحت هر شرکتی که بخوای می‌تونی استخدام بشی» و بعدش من بهشون توضیح می‌دادم که به خاطر تحریم‌های کشور ایران نمی‌تونم. اون موقع است که متوجه می‌شید این سیستم هر چیزی هستش جز شایسته‌سالاری. وقتی که می‌بینی بقیه فرصت‌هایی دارند که تو نداری، نه به خاطر استعدادها و توانایی‌هات، بلکه به خاطر پاسپورتت. اون موقع است که متوجه می‌شید دارید توی دنیای متفاوتی زندگی می‌کنید. دنیایی متفاوت، با دشواری متفاوت، با دغدغه‌های متفاوت. وقتی که اونها دغدغه‌ی این رو دارند که تو کدوم شعبه‌ی گوگل پروژه‌های باحال‌تری برای کارآموزی ارائه می‌شه شما باید لیست شرکت‌هایی که حاضر هستند برای ویزاتون اقدام کنن و شرکت‌هایی که کلاً ایرانی نمی‌گیرن رو در بیارید. اون موقع بود که متوجه شدم من یک دانشجوی درجه سه هستم. دانشجوهای درجه یک می‌شن خود اروپایی ها. درجه دو می‌شن بقیه کشورهای غیر اروپایی و ما می‌شیم درجه سه. چون در یکی از معدود کشورهایی متولد شدیم که در لیست تحریم‌های آمریکا قرار داره.جدیداً خوندن کتاب &quot;Born a Crime&quot; رو تموم کردم که خاطرات بچگی Trevor Noah مجری Daily Show در آفریقای جنوبی هستش. نویسنده توی کتاب در مورد آپارتاید توضیح می‌ده، سیستمی که افراد رو بر اساس رنگ پوست و نژادشون تفکیک می‌کرده. افراد سیاه‌پوست حق نداشتند با سفیدپوست‌ها زندگی کنند یا باهاشون ازدواج کنند و ... این سیستم منجر شده بود که هر گروه و نژادی از بقیه بدش بیاد چون فکر می‌کنه اون حقشو خورده. افراد دو رگه از سیاه‌پوست‌ها بدشون میومده چون فکر می‌کردن اون رگ سیاهشون باعث شده که الان سفیدپوست نباشن و شهروند درجه یک محسوب نشن. افراد سیاه‌پوست از سفیدپوست‌ها بدشون میومده چون کلی حق و حقوق اضافه داشتند و ... در نهایت این چنددستگی مردم باعث شده بوده که حکومت بتونه مردم رو کنترل و سرکوب کنه. تابلویی در زمان آپارتاید که ورود افراد غیر سفیدپوست رو به بعضی از محله‌ها منع می‌کنهوضعیت ما ایرانی‌ها هم تا حدی مشابه همینه. قوانینی وجود دارند که باعث می‌شه ما مثل بقیه نباشیم و این حس که تو مثل اونها نیستی، این حس که اونها فرصت‌های بیشتری دارند می‌تونه درست یا غلط به این حس که اونها دارند حق ما رو می‌خورند تبدیل بشه، حس خشم آدم برافروخته بشه و آدم سخت‌تر بتونه باهاشون ارتباط برقرار کنه. قسمت دردناک قضیه اینه که الان همه می‌دونن نژادپرستی چیز خوبی نیست و دارن برای بهبودش تلاش می‌کنن اما تحریم‌ها اینطوری نیست و ممکنه وضعیتمون بدتر هم بشه!نکته‌ی مهمی که به نظرم خوبه شفافش بکنم اینه که تحریم‌ها کار رو سخت‌تر می‌کنه و نه خود ایرانی بودن. ایران هم بعضاً قوانین سفت و سخت خودش رو داره ولی بقیه‌ی کشورها هم چنین قوانینی دارند. این خیلی رایجه بین افراد که می‌گن ایران همه چیزش بدترین هستش و بدبخت هستیم. توی این چند ماه با افراد مختلف و کشورهاشون آشنا شدم و دیدم که بقیه کشورها هم قوانینی مشابه ما دارند. کره‌ی جنوبی مثل ما سربازی سفت و سخت و اجباری داره. چینی ها دسترسی به گوگل ندارند و موتور جستجوی خودشون رو دارند که بعضی از نتایج رو نمیاره. موردی که برای خودم از همه جالب‌تر بودش، این بود که سیستم آموزشی بعضی از کشورهای اروپایی متفاوته و افراد از سن ۲۰ سالگی وارد دانشگاه می‌شن و نه ۱۸ و ما یجورایی ۲ سال ازشون جلو هستیم! من نمی‌گم این قوانین خوب هستند یا بد اما این ذهنیت که فقط ما یه سری قوانین احمقانه رو داریم غلطه.قوانینی که بر اساس ملیت افراد نوشته می‌شن ذاتاً باعث چنین گسستی بین افراد جامعه هم می‌شن مستقل از این که اون قانون چی می‌گه. این مسئله در همه‌ی کشورها وجود داره و برای ما ایرانی‌ها که عموماً این قوانین به ضررمون هستش مسئله‌ی پررنگ‌تری شده. متاسفانه راه حلی هم وجود نداره و شما تا زمانی که شهروند کشور دیگری نباشید با این مشکلات روبرو هستید. با این حال من از تصمیمم برای اپلای پشیمون نیستم و فکر می‌کنم در حال حاضر فرصت‌های بیشتری دارم. صرفاً دوست داشتم که حس شخصیم و تجربیاتم رو باهاتون به اشتراک بذارم چون فکر می‌کنم خوبه که آدم با دید کاملی در مورد اپلای و مهاجرت تصمیم بگیره.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Mon, 16 Dec 2019 17:37:33 +0330</pubDate>
            </item>
                    <item>
                <title>خداحافظ کافه‌بازار</title>
                <link>https://virgool.io/@m30m/goodbye-cafebazaar-pgeothophd2e</link>
                <description> این پست خلاصه‌ای خیلی مختصر هست از خاطرات و احساساتی که داشتم در این مدت، برای این که یادم نره، و برای این که این خدافظی رو کمتر غم‌انگیز بکنه. من آشناییم با شرکت از سمت معلم روبوکاپم در دبیرستان، پوریا بودش. پوریا بهم پیشنهاد داد که بیام شرکت چون فضای خوبی داره و خوش می‌گذره و من هم قبول کردم. به همین سادگی.داستان از اینجا شروع شد شروع به کار من در شرکت با تیم فنی عدد بود. وقتی که من عضو شدم، اندازه شرکت حدود ۳۰ نفر بود و شرکت تازه چند ماه بود که به برج نگار تو میدون ونک نقل مکان کرده بود. تیم فنی دیوار و عدد داخل یک اتاق بود، انتهای اتاق ۵-۶ تا میز برای عدد و در ابتدای اتاق ۵-۶ میز برای دیوار بود. هنوز اونقدری کوچیک بودیم که وقتی نیروی جدیدی اضافه می‌شد می‌بردیمش و به تمام نیروهای فعلی دونه‌به‌دونه معرفیش می‌کردیم. اون موقع برای تولد هر کس توی همون روز تولد می‌گرفتیم و خیلی حس جالبی بود برام که چند روز بعد از شروع به کارم آدم‌هایی که بعضاً نمی‌شناختمشون برای من و چند نفر دیگه تولد گرفتند و عکس گرفتیم و خوشحال بودیم. اولین عکس دسته‌جمعی که توش بودم. تقریباً همه‌ی افراد اون زمان شرکت تو همین عکس هستند.  شرکت کم‌کم داشت بزرگ می‌شد… کم‌کم یه سری دورهمی هر دو هفته یه بار داشتیم که بعد شد یه ماه یه بار و بعدش شد چهارشنبگان. کم‌کم دیدیم Phabricator جواب کارمونو نمی‌ده و سوییچ کردیم رو Gitlab. کم‌کم دیدیم docker تکنولوژی جالبی هستش و شروع کردیم باهاش کار کنیم. کم‌کم دیدیم Google Groups و گروه‌های facebook برای اطلاع‌رسانی مناسب نیستند و رفتیم سراغ slack. من هم کم‌کم داشتم یاد می‌گرفتم و با محیط شرکت بیشتر مانوس می‌شدم. تنها چیزی که در این مدت تغییر نکرد دمپایی‌های پوریا بود!اون اوایل تعاملاتمون از طریق گروه فیس‌بوک بود!جلوتر رفتیم و عدد رشد کرد و تعداد درخواست‌هاش توی حدود یک سال ۲۰ برابر شد… کلی به چالش scalability خوردیم، سرور خریدیم، باتلنک‌ها رو پیدا کردیم، شب زنده‌داری کردیم و تجربیات ما هم بیشتر شد. یه جاهایی چون توی تیممون توسعه‌دهنده اندروید نداشتیم، خیلی دست و پا شکسته خودمون کد اندروید رو هم جلو می‌بردیم و فرانت‌اند هم که به صورت پیش‌فرض با خودمون بود. با رشد عدد، چالش کلاه‌برداری و کلیک تقلبی هم جدی شد و من کمی تمرکزم رو از سمت فنی به سمت تحلیل داده بردم تا اون سمت کمک کنم و کارها جلو بره. به کمک دوستان کلی تقلب خلاقانه کشف کردیم و جلوی کاربران متقلب رو می‌گرفتیم. کمی جلوتر در خرداد ۹۵ با توجه به وضعیت بیزینس عدد تصمیم گرفتیم که توسعه‌ی محصول رو متوقف کنیم. یادم نمیره با مهرداد نشسته بودیم و یاد خاطراتمون با عدد می‌کردیم و هعی می‌کشیدیم. یادمه که یکی از بچه‌ها موقع اون جلسه مهم نبود و من باید خبر توقف عدد رو بهش می‌گفتم و چقدر گند زدم موقع گفتنش. اون موقع شرکت تازه داشت بحث 1on1 رو راه می‌نداخت و کلاً درگیر کارهای فنی بودیم تا انسانی و من هم مهارت خاصی تو این زمینه نداشتم. خیلی نمی‌تونستم ارتباط موثری با بقیه ایجاد کنم و اصولاً موقع صحبت‌های چالش‌برانگیز عملکرد خوبی نداشتم. بعد از پایان عدد، تیم فنی پروژه‌ی چت دیوار رو شروع کرد؛ من و تیم تحلیل داده‌ی عدد هم تحلیل داده‌ی دیوار رو شروع کردیم.تابستون ۹۵ تمام تیم تحلیل داده‌ی عدد اپلایی بودند و از اون تیم اولیه ۴ نفره فقط من می‌موندم. با این که من با اکثر این افراد کمتر از یه سال آشنا شده بودم، اما خدافظی باهاشون خیلی سخت بود و من برای اولین بار طعم بدرقه در فرودگاه و سختی اپلای رو چشیدم. از همون تابستون شروع کردیم به جذب نیرو و تیم تحلیل داده‌ی دیوار بزرگ شد، پخش شدیم توی تیم‌های محصولی و کم‌کم کارهای جدی‌تری رو دستمون گرفتیم. تو اون مدت کلی با تکنولوژی‌های بیگ‌دیتا آشنا شدم و دکتر شیرازی، که اون زمان لید دیتای شرکت بود، بهمون کلی ایده می‌داد که چیا رو تحلیل کنیم و سراغ چه چیزهایی بریم. تابستون سال بعدش برای یه دوره کارآموزی رفتم خارج و بعد از برگشت وارد فضای دیگری شدم. تیم‌لیدر یکی از تیم‌هایی شدم که چالش انسانی توش زیاد بود و سعی کردم که کلی مطلب در اون رابطه یاد بگیرم. کتاب و مقالات مختلفی در مورد سلامت تیم و سازمان خوندم و برام جذاب بود که مسئله‌هایی که در کتاب مطرح می‌شد، به مسائل داخل شرکت نزدیک بود و می‌تونستم از اون راه حل‌ها استفاده کنم. تا وسطای زمستون درگیر این مسائل بودم و بعدش دوباره سمت دیتا فعال‌تر شدم. اون موقع داشتیم اولین مدل‌های یادگیری ماشینمون رو دیپلوی می‌کردیم و زیرساخت‌های دیتامون هم بزرگتر و بالغ‌تر شده بود. تابستون سال ۹۷ ۵-۶ نفر دیگه از دوستای داخل شرکت که اکثرشون هم دیتایی بودند اپلای کردند و رفتند. این بار، هم از نظر بحران کمبود نیرو و هم از نظر خدافظی با صمیمی‌ترین دوستانم، اندوه خیلی بزرگتری داشتم.پاییز و زمستون ۹۷ برای من پرفشار ترین دورانم بود چون هم کارهای شرکت زیاد بود، هم اپلای و دانشگاه و ازدواج و … اما اون هم خوشبختانه تموم شد و بعدش کمی سرم خلوت شد تا مطالعه کنم، فکر کنم به وضعیت شرکت و حسی که بهش دارم.کافه‌بازار توی این مدت به من فرصت داد تا رشد کنم؛ کم نبودند اشتباهات فنی یا انسانی من که منجر به کاهش درآمد یا اعتبارمون بشن اما در نهایت باعث رشد خود من شد. توی مقاطع زمانی مختلف چندین بار کاری که داشتم تو شرکت می‌کردم رو عوض کردم و شرکت هم مخالفتی نداشت و دستم رو تا حدی باز می‌ذاشت. با کلی آدم مختلف تو شرکت آشنا شدم و از تک تکشون نکات ارزشمندی یاد گرفتم. کافه‌بازار تو این ۵ سال شخصیت من، مهارت‌های فنیم، مهارت‌های انسانیم و آینده‌ی من رو شکل داد و خوشحالم که وقت زیادی رو در این مدت براش گذاشتم. کافه‌بازار باعث شد که من بفهمم ایران هم جایی برای موندن هستش، می‌شه تو ایران خوشحال زندگی کرد، می‌شه توی یه سازمانی که فرهنگ سالمی داره کار کرد، می‌شه دوستایی پیدا کرد که چند سال دیگه تو فرودگاه باهاشون خدافظی نمی‌کنی، می‌شه رشد کرد و بقیه رو هم رشد داد. می‌شه توی یه حبابی زندگی کرد که توش زندگی قشنگ‌تره؛ هنوز بیرون حباب پر از اتفاقات بده اما می‌شه اون حباب رو بزرگ و بزرگتر کرد و امیدوار بود که به این زودیا نترکه. پرسنل شرکت تو مدتی که من بودم از ۳۰ نفر به ۴۰۰ نفر رسید و جدا از اون کافه‌بازار برای چندصد نفر دیگه هم با کارهای عملیاتی اشتغال‌زایی کرد و برای من لذت‌بخش بود وقتی می‌دیدم آدم‌ها ذوق اومدن به شرکت رو دارند و از کارشون راضی‌ان.کافه‌بازار به هیچ عنوان ایده‌آل نبود، تو این ۵ سال کلی اشتباه کوچیک و بزرگ و استراتژیک کردیم و بعضی‌هاشون هزینه‌ی خیلی زیادی برامون داشتند. بعضی جاها مشکلات فنی داشتیم، بعضی جاها مشکلات انسانی، بعضی جاها مدیریتی و خیلی جاها همش رو با هم! اما هیچوقت حس نکردم که این مشکلات ذاتی هستند و از بین نمی‌رن، هیچوقت حس نکردم که نمی‌شه بهبودش داد چون یه سیاست ثابتی داریم یا چون فلانی اینطوری می‌گه. همین باعث می‌شد که از شرکت دلسرد نشم، چون شرکت رو مال خودم می‌دونستم و اگر جاییش مشکل داشت وظیفه‌ی خودم می‌دونستم که اصلاحش کنم.و اما الان. الان هم نوبت اپلای خود من شده و من باید با همه‌ی دوستانم در شرکت خدافظی بکنم. علاوه بر اون، من باید از خود شرکت هم خدافظی بکنم. شرکت توی این ۵ سال دانشگاه دوم من بود و مطمئن هستم اگر می‌خواستم بمونم ایران حتماً کارم رو توش ادامه می‌دادم. اپلای من دلایل مختلفی داشتش که فکر نمی‌کنم گفتنش اونقدر سودمند باشه چون اپلای پیچیده‌تر از این حرفاست که ترکیب دلایل یک فرد به درد یکی دیگه بخوره. اما امیدوارم که شرکت بتونه جامعه‌ی بیشتری رو از اپلای منصرف بکنه؛ چه به خاطر ثبات شرایط مالیش و محیط کار خوبش و چه به خاطر پیشرفت‌هاش در زمینه‌های تحقیقاتی و ایجاد فرصت برای کارهای آکادمیک.آخرین عکس دسته جمعی با بخش کوچکی از بچه‌های شرکتهنوز هم هر چند وقت یکبار می‌رم و عکس‌های قدیمی و نتایج اولین ارزیابی عملکردم رو تو شرکت می‌بینم و یاد خاطرات می‌کنم. دلم برای کافه‌بازار با همه‌ی خوبی‌ها و بدی‌هاش تنگ می‌شه و امیدوارم که روزی دوباره به این مجموعه برگردم.خداحافظ کافه‌بازار</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Mon, 12 Aug 2019 12:32:24 +0430</pubDate>
            </item>
                    <item>
                <title>کار در کنار تحصیل - قسمت ۳ - توصیه‌هایی برای شروع</title>
                <link>https://virgool.io/@m30m/uniwork-part3-ndtkoiuxfxkp</link>
                <description>تو این پست می‌خوام در مورد نکاتی که خوبه موقع انتخاب محل کار و شروع به کار حواستون بهش باشه صحبت کنم. در مورد این که چرا کار خوبه؟ و چرا تحصیل کنارش هم ضروریه توی دو تا پست قبلی صحبت کردم. صحبت‌هایی که می‌کنم در مورد کار در یک شرکت نرم‌افزاری هستش و لزوماً در حوزه‌های دیگر صادق نیست.چند ساعت می‌خواید کار کنید؟اولین چیزی که باید بهش فکر کنید اینه که چقدر می‌خواید روی کارتون وقت بذارید. منظور از ساعت‌هایی که در ادامه ذکر شده ساعت مفید هستش که شامل مواردی مثل جلسه، صحبت با افراد مختلف در مورد مسائل کاری و کد زدن می‌شه و شامل مواردی مثل ناهار و نماز و استراحت نمی‌شه.کمتر از ۵۰ ساعت در ماه: کمتر شرکتی حاضره که کمتر از این مقدار رو بپذیره و این مقدار برای خودتون هم مفید نیست. در این حالت حدوداً دو روز در هفته کار می‌کنید و این مقدار برای مطلع موندن از اتفاقات شرکت، تعاملاتتون با همکاران، و انجام دادن یک بخش جدی از کار کافی نیست. پس عملاً این گزینه نشدنی هست.بین ۷۰ تا ۹۰ ساعت در ماه: این مقدار برای درگیر شدن به صورت جدی در یک پروژه نرم‌افزاری کافی هستش و اکثر شرکت‌هایی که افراد رو به صورت پاره‌وقت می‌پذیرن، همین حدود رو به عنوان حداقل میزان کارکرد تعیین می‌کنن. اگر سعی کنید تعادل زمان رو بین دانشگاه و کارتون برقرار کنید احتمالاً خیلی بیشتر قدر وقتتون رو می‌دونید و زمانتون رو بهتر مدیریت می‌کنید.بیشتر از ۹۰ ساعت در ماه: در این حالت سرعت پیشرفتتون در شرکت نسبت به حالت قبل بیشتر خواهد شد و شرکت هم رضایت بیشتری خواهد داشت. اما احتمالاً نمی‌تونید درس‌های دانشگاه رو هم با کیفیت خوبی بگذرونید.افراد زیادی هستند که بعد از شروع به کار، کم‌کم از فضای دانشگاه فاصله می‌گیرند و درسشون به شدت افت پیدا می‌کنه و کامل غرق در کار شرکت می‌شن. این حالت بسیار خطرناک هستش، چون ممکنه از نظر دانش فنی رشد پیدا نکنند و اگر به هر دلیلی از شرکت جدا بشن، به پوچی برسند و هیچ سرمایه‌ی مادی یا معنوی برای ادامه نداشته باشند.انتخاب محل کاراولین محل کار و اولین تیمی که توش قرار خواهید گرفت یکی از مهم‌ترین عوامل در مسیر رشدتون خواهد بود. شما برای اولین بار تعاملات کاری و فرایندهای مهندسی نرم‌افزار رو در این تیم تجربه خواهید کرد. کیفیت کدتون در بهترین حالت برابر با کیفیت کد تیمتون می‌شه و تصویر شما از یک تیم نرم‌افزاری ایده‌آل در همون تیم شکل می‌گیره. اگر تیمتون فیکس کردن باگ روی سرور رو یک فرایند عادی و روتین ببینه، این ذهنیت برای شما هم ایجاد می‌شه و اگر تیمتون هیچ مستندسازی انجام نده، شما هم مستندسازی رو کاری بیهوده تلقی می‌کنید. برای همین خیلی مهمه که انتخاب هوشمندانه و درستی داشته باشید. پارامترهایی که خوبه بهشون توجه کنید:چقدر اعضای اون شرکت، کار کردن در اونجا رو به شما پیشنهاد می‌کنند: سعی کنید این سوال رو از نیروهای قدیمی‌تر شرکت بپرسید. افرادی که جدیدتر اومدند هنوز در ماه‌عسل به سر می‌برند و درک کاملی ندارند.چقدر به رشد شما در اون شرکت بها داده می‌شه: چه کسی شما رو ارزیابی می‌کنه و بهتون فیدبک می‌ده؟ آیا منتور دارید؟ چقدر در صورت تمایل به یادگرفتن موضوعات جدید از طرف شرکت پشتیبانی می‌شوید؟چقدر کارها گروهی یا فردی انجام می‌شن: آیا شما فقط در کنار چند برنامه‌نویس دیگه قرار خواهید گرفت و یک پروژه رو به تنهایی انجام خواهید داد یا یک تیم هستید که روی یک محصول به صورت گروهی کار می‌کنید.شما چه تعهداتی نسبت به شرکت دارید و بالعکس: ممکنه که قراردادهای منصفانه‌ای از سمت شرکت برای شما تنظیم نشه و خوبه که با دقت قراردادها رو قبل از امضا مطالعه بکنید. چیزهایی از قبیل کارکردن در محصولات رقیب به مدت چند سال در این قراردادها رایج هستش اما ممکنه موضوعات دیگری هم در قرارداد ذکر شده باشه که ادامه‌ی کار شما رو سخت بکنه.استارتاپ یا شرکت بزرگ؟دوراهی که ممکنه برای خیلی از افراد پیش بیاد اینه که به یک تیم کوچیک که تازه شروع شده ملحق بشن یا به یک شرکت بزرگ که موفقتیش رو اثبات کرده و پایدارتر هستش و یا حتی شرکت خودشون رو تاسیس کنن! من با قاطعیت می‌گم که شروع به کار در یک شرکت بزرگ مفیدتر از یک استارتاپ نوپا هستش. بذارید فضای  یک استارتاپ رو براتون ترسیم کنم:شما عضو یک شرکت ۱۰ نفره‌ی نرم‌افزاری شدید که در حال توسعه وبسایت beststartup.com هستند. تیم فنی ۶ نفر هستش و ۴ نفر دیگه درگیر بازاریابی و فروش محصول و تبلیغات و پشتیبانی هستند. با توجه به این که محصول هنوز پایدار نشده و مشتری خوبی نداره، اهمیت زیادی به کیفیت کد داده نمی‌شه و اولویت اول رسوندن feature های بیشتر به مشتریان و جذب مشتری هست. محصول بعد از یک ماه تغییر استراتژی می‌ده و باید feature هایی که نصفه زده شده رو رها کرد و بریم سراغ توسعه یه سری feature دیگه. چون تیم توسعه کوچیک هستش و نیازهای مشتریان زیاد، اکثر افراد تمام وقتشون رو روی توسعه‌ی وبسایت می‌ذارن و به ندرت پیش میاد که روی فرایندها و نحوه‌ی بهبود روند توسعه بحث بشه. چون هنوز مشتریان خیلی کمی دارید،‌ شما دغدغه‌ی مقیاس‌پذیر بودن کدتون رو نخواهید داشت و اولین راه‌حلی که به ذهنتون می‌رسه راه حل مناسبی خواهد بود. چون که کلاینت کارتون از تیم خدافظی کرده شما مجبور می‌شید نصفه و نیمه اندروید یاد بگیرید و یه سری امکانات رو به اپلیکیشن اندرویدتون اضافه کنید. یه خورده جلوتر برای بهبود وضعیت SEO وبسایتتون کمی هم SEO یاد می‌گیرید تا رتبه‌ی سایتتون در موتورهای جستجو بهتر بشه. بعد از ۶ ماه یک نفر میاد پیشتون و می‌گه که دمت گرم بابت این مدت و زحماتی که کشیدی و حقوقت ۱۰ درصد افزایش پیدا کرده اما شما نمی‌فهمید چه کاری رو خوب انجام دادید و کجا جای بهبود دارید.تبریک! شما در این مدت موضوعات متنوع و زیادی رو با کیفیت پایینی یاد گرفتید، چیزهایی که اکثرشون از جنس تکنولوژی بودند و نه فرایند و شاید بدون مشغول به کار شدن در شرکت و به صورت خودآموز هم می‌تونستید یادشون بگیرید. شما در این مدت یاد گرفتید که چطوری باید در یک استارتاپ ۱۰ نفره کار کرد. کیفیت کد شما متناسب با یک شرکت چند صد نفره نیست و خیلی از چیزهایی که یاد گرفتید در یک شرکت بزرگتر به کار نخواهند اومد. و اما فضای یک شرکت بزرگتر:شما عضو یک شرکت چندصد نفره شدید و در یک تیم ۱۰ نفره‌ی نرم‌افزاری که در حال توسعه موتور جستجوی وبسایت beststartup.com هستند مشغول به کار شدید. تیم back-end شش نفر هستش و ۴ نفر دیگه درگیر UI/UX، کلاینت و front-end هستند. در ابتدا شما wiki های پروژه رو می‌خونید و با پروژه و تکنولوژی‌ها آشنا می‌شید. چون که تمرکز این تیم روی موتور جستجو هستش شما باید کامل روی تکنولوژی‌هایی که این تیم استفاده می‌کنه عمیق بشید و با تک تک جزییاتش آشنا بشید. این تیم ۶ ماهی هستش که تشکیل شده و فرایند‌های نسبتاً پخته‌ای داره که شما طبق همون جلو می‌رید. فرایندهایی مثل code-review و deployment توی تیم جاافتاده هستش و شما به کمک اونها کدتون رو توسعه می‌دید. لیدر اون تیم در ابتدا منتور شما هستش و بعدش با شما جلسات منظم ست می‌کنه و بهتون در مورد عملکردتون بازخورد می‌ده. چون که beststartup.com در حال حاضر ۵ میلیون مشتری داره، شما باید حتماً مقایس‌پذیری، امنیت و کیفیت کد رو از همون ابتدا مد نظر قرار بدید. بعد از ۶ ماه فرایند ارزیابی افراد در کل شرکت اتفاق می‌افته و شما از همکارانتون فیدبک‌های مثبت و منفی می‌گیرید و در نهایت این فیدبک‌ها جمع‌بندی می‌شه و حقوقتون ۱۰ درصد زیاد می‌شه و نتیجه‌ی زحماتتون رو می‌بینید.تبریک! شما در این مدت، به خوبی با بعضی از فرایندهای مهندسی نرم‌افزار آشنا شدید، یک یا چند تکنولوژی رو به صورت عمیق و کاربردی یاد گرفتید و تجربیاتی کسب کردید که تنها در همچین محیطی می‌تونستید داشته باشید. شما در این مدت یاد گرفتید که چطوری باید در یک شرکت چند صدنفره کار کرد. چیزهایی که یاد گرفتید رو می‌تونید در صورت نیاز و اقتضای وقت در یک استارتاپ کوچیکتر استفاده کنید و احتمالاً در سایر شرکت‌های با مقیاس مشابه به دردتون می‌خوره.البته شما با این تجربیات فنی نمی‌تونید یک استارتاپ جدید بزنید و رشدش بدید. scale کردن یک شرکت در هر مرحله مهارت‌های به شدت متفاوتی نیاز داره که لزوماً یک فرد ثابت انجامش نخواهد داد. اگر شما تجربه‌ی scale کردن یک شرکت از ۱۰۰ به ۱۰۰۰ نفر رو داشتید... شما می‌تونید یک شرکت دیگر رو هم از ۱۰۰ به ۱۰۰۰ نفر بزرگ بکنید اما نمی‌تونید یک شرکت ۱۰ نفره رو ۱۰۰ نفره کنید و یا یک شرکت ۱۰۰۰ نفره رو ۱۰هزار نفره بکنید.آقای Reid Hoffman که یکی از co-founder های LinkedIn هستند و حرف‌های زیادی برای Scale کردن استارتاپ در پادکست و کتابشون می‌زنن تشبیه جالبی در این مورد دارند: وقتی که در یک استارتاپ کار می‌کنید شما شبیه دزدان دریایی کار می‌کنید؛ قانون‌ها رو راحت زیر پا می‌ذارید، خیلی سریع تغییر مسیر می‌دید و حاضرید ریسک بالایی رو بپذیرید تا بتونید از رقبا کاربر بدزدید و رشد کنید اما وقتی در یک شرکت بزرگتر مشغول به کار هستید مثل یک ناوگان عمل می‌کنید؛ از قوانین پیروی می‌کنید، در راستای استراتژی‌های بلندمدت شرکت کار می‌کنید و سعی می‌کنید کاربرهایی که جذب کردید رو حفظ کنید. حالا شما باید انتخاب کنید که در ابتدا یک دزد دریایی باشید یا سرباز ناوگان. به نظر من تبدیل شدن از یک سرباز ناوگان به دزد دریایی راحت‌تر از برعکسش هست و برای شروع می‌تونه موقعیت مناسب‌تری باشه.حرف آخرچند تا توصیه‌ی کلی که خوبه تو ذهنتون باشه:سعی کنید احساس تعلّق به پروژه و کارتون داشته باشید. فکر نکنید که من دارم برای یکی دیگه کد می‌زنم تا اون پول دربیاره و من یه کارمند ساده‌ام. پروژه‌تون هر چقدر هم مزخرف باشه و کار گل داشته باشه، باز هم تجربه‌ی ارزشمندی براتون خواهد بود.سعی کنید مسئولیت‌های جدید قبول کنید و ایده‌های مختلف رو تو کارتون تست کنید تا بتونید تجربه‌های مختلفی کسب کنید.منتظر نباشید تا کسی به شما راه و چاه رو نشون بده، اگر خودتون به صورت فعالانه دنبال پیشرفت نباشید خیلی آهسته پیشرفت خواهید کرد.به فکر پیشرفت خودتون باشید و نه پیشرفتتون توی شرکت. به جای فکر کردن به ارتقاء و افزایش حقوق به فکر بهبود مهارت‌های مهندسی و تاثیرگذاریتون باشید. با فرض این که مدیران محل کارتون از شعور کافی برخوردار هستند، پیشرفت خودتون همواره با پیشرفتتون در شرکت همراه خواهد شد و شما مطمئن هستید که در شرکت‌های دیگر هم می‌تونید کار خوبی پیدا کنید.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Fri, 28 Jun 2019 19:20:27 +0430</pubDate>
            </item>
                    <item>
                <title>اندرباب رابطه: مسیر دو برنامه‌نویس</title>
                <link>https://virgool.io/@m30m/%D8%A7%D9%86%D8%AF%D8%B1%D8%A8%D8%A7%D8%A8-%D8%B1%D8%A7%D8%A8%D8%B7%D9%87-yh5ie1t3rkr7</link>
                <description>خیلی وقت بود بلاگ ننوشته بودم که دلیل اصلیش اپلای و ازدواج و ... بود. امیدوارم در ادامه در مورد همش بتونم بنویسم و تجربیات خودم رو به دیگران منتقل کنم. اینجا هم تشکر می‌کنم از ویرگول که زحمت کشید و پست‌های منو ایمپورت کرد اینجا چون دیگه حال نگهداری از وبلاگ خودم رو نداشتم و هم این که دوست داشتم من هم کمکی به ویرگول و خواندن در ایران بکنم.من به تازگی ازدواج کردم، آدم مذهبی نیستم و ازدواج سنتی نداشتم، و دوست دارم که تجربیاتم رو با شما به اشتراک بذارم. این پست در مورد این که چرا باید ازدواج کرد/نکرد نیست و حتی خیلی در مورد خود ازدواج هم نیست. این پست در مورد مطالبی هستش که متاسفانه نه بزرگترا بهمون گفتن، نه دبیرامون تو مدرسه بهمون گفتن، و نه استادامون توی دانشگاه. چیزهایی که شاید بتونه زندگی‌هامون رو شیرین‌تر بکنه.سرآغازشروع رابطه تو دانشگاه خیلی چیز عجیب غریبی نیست. تو تلگرام گفتگو شروع می‌شه، از علایق هم می‌پرسید... چند تا تولد با هم میرید و صمیمی‌تر می‌شید... از یک نقطه‌ای دوست دختر/پسر می‌شید و یه خورده جلوتر یه مقدار رسمی‌تر می‌کنید قضیه رو و در دانشگاه نیز با هم دیده می‌شید. ذوق دارید وقتی همدیگه رو می‌بینید... ناراحت می‌شید وقتی خدافظی می‌کنید... و به طور خلاصه پر از عشق هستید. اما بعدش چی می‌شه؟ چقدر این رابطه ادامه پیدا می‌کنه؟ چی می‌شه که از همدیگه جدا می‌شید؟ من خودم تجربه‌ای در جدا شدن ندارم اما در حین رابطه زمان‌هایی بوده که به فکر جدا شدن بودم. فکر می‌کنیم که به درد همدیگه نمی‌خوریم، همدیگه رو درک نمی‌کنیم، یا شاید کلاً به دنبال هدف جدی نبودیم و فقط می‌خواستیم امتحان کنیم.دوستی‌ها عموماً در چنین موقعیت‌هایی بین دانشجویان جدیدالورود شکل می‌گیرهجدی شدن رابطهاز یه جایی به بعد رابطه عادی‌تر می‌شه، اون ذوق اولیه کمرنگ می‌شه و بیشتر با خلق و خوی همدیگه آشنا می‌شید. به عادت‌های آزاردهنده همدیگه پی می‌برید و نمی‌تونید دلخوری‌هاتون از همدیگه رو نادیده بگیرید. برای من و همسرم (اون موقع دوست دخترم) هم چنین دورانی به وجود اومد؛ توی این فاز یه سری الگو شناسایی کرده بودیم، مثلاً وقتی رویداد C اتفاق می‌افته، رفتار D از من سر می‌زنه و رفتار E از اون سر می‌زنه که منجر به F می‌شه و ناراحت می‌شیم جفتمون. در این حالت یا به سمت بهبود مشکل می‌ریم (که خودش اصلاً کار آسونی نیست) و یا می‌گیم به درد هم نمی‌خوریم. تفاوت دقیقاً در همین قسمت هستش... این که چرا تصمیم دوم رو می‌گیریم و چیکار کنیم که به این راحتی تصمیم دوم رو نگیریم.نمودار کیفیت رابطه بر حسب زمانمهارت‌های رابطهما برنامه‌نویس‌ها برای حل مشکلات کامپیوتری خیلی از گوگل و stackoverflow استفاده می‌کنیم اما به طور عجیبی این کار رو برای حل تمام مشکلاتمون انجام نمی‌دیم. شروع به جستجو و مطالعه در مورد رابطه‌های دوستی نقطه‌ی عطفی بود برای ما در بهبود رابطه‌مون. این مطالعه اول در حد چند مقاله و اون هم تنها وقتی که مشکل جدی ایجاد می‌شد وجود داشت. اما بعدش شروع کردیم به خوندن اولین کتاب: The 5 Languages of Love. دلیل این که این کتاب رو انتخاب کردیم این بود که جزو پرفروش‌ترین کتاب‌ها در این رابطه بود و امتحانش رو پس داده بود. این کتاب باعث شد که درک بهتری پیدا کنیم از همدیگه، این که دوست داریم چطوری بهمون محبت بشه و چطوری باید به همدیگه محبت کنیم.این کتاب به طور خلاصه افراد رو در ۵ دسته قرار می‌ده و می‌گه که هر کدوم تمایل دارند یه مدل بهشون محبت بشه و یه کارهایی رو ترجیح می‌دن، مثلاً یکی بیشتر دوست داره بغل بکنه و بغل بشه، یکی بیشتر دوست داره کادو بده و کادو بگیره و ... . توی سایت کتاب هم یه سری تست داره برای این که بیشتر با خودتون آشنا بشید.در ادامه چندین کتاب دیگه رو هم خوندیم و مدل ذهنی‌مون کامل و کامل‌تر شد. حالا وقتی رویداد C اتفاق می‌افته، رفتار D از من سر می‌زنه اما جفتمون می‌دونیم که دلیلش B بوده و به همین خاطر رفتار A رو نشون می‌دیم و دیگه ناراحت نمی‌شیم. بزرگترین تغییری که در این مدت اتفاق افتاده اینه که می‌دونیم چرا چنین رفتارهایی داریم، عکس‌العمل‌های بهتری نشون می‌دیم و همدیگرو بیشتر درک می‌کنیم.مدل ذهنی به مرور کامل می‌شهکتاب‌هایی که من در طی این مدت کمابیش خوندم و توصیه می‌کنم به ترتیب اولویت:The 5 Languages of LoveThe Seven Principles for Making Marriage WorkOnly for Men + Only for WomenWhat About Me?: Stop Selfishness from Ruining Your RelationshipMindful Relationship HabitsIf You&#x27;re in My Office, It&#x27;s Already Too Late: A Divorce Lawyer&#x27;s Guide to Staying Togetherبعضی از این کتاب‌ها یه مقدار فاز مذهبی هم دارند، اما اگر اعتقادی ندارید آزاردهنده نیستند. مراقب مدلی که سرچ می‌کنید و مطالبی که در وبلاگ‌ها و حتی در کتاب‌ها می‌خونید باشید، بعضی از این مطالب، مطابق فرهنگ ایران نیست و بعضی‌هاشون هم به کل می‌تونه چرند باشه مثلاً در این مقاله که ۲۰ نشانه برای پایان رابطه رو ذکر کرده، اضافه وزن و ریزش مو هم ذکر شده! تو تجربیات شخصی خودم، کتاب‌ها خیلی بهتر از بلاگ‌ها بودند و توضیحات علمی‌تر، مفیدتر و دقیق‌تری داشتند.رابطه دوستی در ایرانداشتن رابطه‌ی دوستی در ایران به سبک غرب، بسته به نوع خانواده ممکنه چیزی بین «غیرممکن» تا «ok» باشه و خود این قضیه چالش‌های خیلی بیشتری برای افراد ایجاد می‌کنه. از این که خانواده چیزی نفهمه تا محدودیت‌های زود خونه برگشتن تا محدودیت‌هایی که در فضای عمومی وجود داره تا تفاوت‌های مذهبی خانواده‌ها تا ... . بعضی وقت‌ها این چالش‌ها اونقدر اذیت‌کننده می‌شن که آدم شک می‌کنه که شاید ازدواج سنتی راه حل مناسب‌تری هستش. متاسفانه ما هم برای خیلی از این چالش‌ها راه حلی پیدا نکردیم و صرفاً سعی کردیم باهاشون کنار بیایم اما یکی از مهم‌ترین چیزهایی که یاد گرفتیم تفاوت پیش هم بودن و چت کردن تو تلگرام بود. وقتی که پیش هم هستید، خیلی راحت‌تر می‌تونید احساسات همدیگه رو بفهمید و حستون رو منتقل کنید اما تو تلگرام احتمال این که سوء تفاهم پیش بیاد و نتونید حس واقعی همدیگرو بفهمید به مراتب بیشتره. سعی کنید در مکالماتتون در فضای مجازی بیشتر خودتون رو توصیف کنید و انتظار نداشته باشید فرد مقابل به صورت جادویی حس شما رو بفهمه. استفاده از اموجی و استیکر در این مورد خیلی می‌تونه مفید باشه. مشاوره ازدواجدر این مدت پیش دو مشاور ازدواج هم رفتیم اما هیچکدومشون تجربه‌ی چندان خوبی نبود و سود خاصی نداشت. به نظرم کتاب خوندن خیلی بهتر از مشاوره هستش، چون بالاخره اون کتاب‌ها رو مشاوران خیلی خبره‌تری نوشتند و تجربه‌ی چندین و چند ساله‌شون رو گفتند، بعضی‌هاشون یک پایه‌ی علمی نسبتاً محکم هم دارند و در کل قابل‌اعتماد ترند. یکی از خوبی‌هایی که مشاور می‌تونه داشته باشه نسبت به کتاب، تجربیاتی هستش که در مورد زوج‌های ایرانی داره و مسائل فرهنگی - اجتماعی رو لحاظ می‌کنه اما از طرف دیگه ممکنه مذهبی بودن/نبودن مشاور با طرز تفکر شما تطابق نداشته باشه و پذیرش حرف‌های مشاور براتون سخت بشه. عوض کردن مشاور کار هزینه‌بری هستش اما عوض کردن کتاب یا نخوندن بعضی از قسمت‌هاش هزینه‌ی چندانی نداره.تفاوت اصلی که بین کتاب خوندن و مشاوره رفتن وجود داره، reactive بودن و proactive بودن هستش. وقتی پیش مشاور می‌رید، به احتمال خیلی زیاد، یه مشکلی به وجود اومده که دوست دارید به کمک مشاورتون حلش کنید و در واقع دارید به مشکلتون واکنش نشون می‌دید. اما وقتی کتاب می‌خونید ممکنه مطالبی رو یاد بگیرید که هیچوقت فکر نمی‌کردید بتونه کمکتون بکنه و یا حتی توش ضعف داشته باشید. لزومی نداره مشکلی به وجود بیاد که شما کتاب بخونید و با این حال شما کلی مطالب جدید در مورد رابطه‌تون یاد خواهید گرفت که ممکنه به قشنگ‌تر شدنش کمک بکنه.حرف آخردر نهایت، موضوعی که خیلی مهمه اینه که برای رابطه‌تون هوشمندانه وقت بذارید. نه این که با هم برید بیرون یا چت بکنید، فکر بکنید به وضعیت فعلی رابطه‌تون و به این که داره چطوری پیش میره. به این ویژگی اصطلاحاً mindfulness هم می‌گن که پیشنهاد می‌کنم در موردش بیشتر مطالعه کنید. این وقت گذاشتن تا ابد نیز ادامه خواهد داشت و فقط به دوران قبل از ازدواج مربوط نیست. اما این وقت گذاشتن به تنهایی هم کافی نیست، همونطور که اگر ساعت‌ها بشینید پای یه مسئله ریاضی اما تکنیک حلش رو ندونید، نمی‌تونید حلش بکنید. باید دانش کافی در مورد رابطه رو هم داشته باشید و مدل ذهنی نسبتاً کاملی داشته باشید تا بتونید رابطه‌تون رو پایدار نگه دارید. یه ضرب المثل معروف هست که می‌گه:Practice does not make perfect. Only perfect practice makes perfect.رابطه‌تون پایدار(عکس‌های این سری رو همسرم کشیده برای همین خوشگل‌تر شده)</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Sun, 21 Apr 2019 16:20:23 +0430</pubDate>
            </item>
                    <item>
                <title>اندرباب انتخاب رشته: مهندسی کامپیوتر</title>
                <link>https://virgool.io/enline/%D8%A7%D9%86%D8%AF%D8%B1%D8%A8%D8%A7%D8%A8-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%B1%D8%B4%D8%AA%D9%87-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-ois246p7zqng</link>
                <description>رتبه‌های کنکور اومده و ملت درگیر انتخاب رشته هستند. احتمالاً اگر رتبه‌ی خیلی خوبی دارید یا المپیادی بودید و خلاصه می‌تونید بیاید سمت مهندسی کامپیوتر، خیلی جدی دارید این گزینه رو بررسی می‌کنید. توی این پست می‌خوام یه خورده در مورد کلیت این رشته و از تجربیات خودم براتون بگم، این که چه توقعاتی باید داشته باشید و چه توقعاتی نباید داشته باشید.چی یاد می‌گیریم/نمی‌گیریم؟توی دوره لیسانس مهندسی کامپیوتر شما تمامی دانش‌های بنیادی لازم برای درک کردن کامل این که یک کامپیوتر چطوری کار می‌کنه رو یاد می‌گیرید. از سطح سخت‌افزار و خیلی پایین تا سیستم عامل و برنامه‌نویسی و چیزهای خیلی پیچیده‌تر و پیشرفته‌تر. چیزی که الان مهم‌تر هستش اینه که بدونید چیا رو قرار نیست توی این رشته یاد بگیرید. تصور غلطی که من حس می‌کنم در یه بخش زیادی از جامعه وجود داره اینه که مهندس کامپیوتر یاد می‌گیره چطوری اپلیکیشن بنویسه و وبسایت بسازه. در حالی که حدود ۱۲ واحد از ۱۴۰ واحدی (دانشگاه شریف) که قراره توی دانشگاه پاس بکنید به این موضوع مرتبط هستش. مهندسی کامپیوتر خیلی وسیع‌تر و عمیق‌تر از کد زدن برنامه‌های روزمره هستش و هدف سیلابس دانشگاه، تربیت کردن برنامه‌نویس نیست. ساخت وبسایت و برنامه‌نویسی وب توی شریف یه درس اختیاری هستش و در هر صورت بیشتر از ۳ واحد قرار نیست توی دانشگاه یادش بگیرید. درسی با مبنای ساخت اپلیکیشن اندروید در حال حاضر توی شریف ارائه نمی‌شه. هیچ درسی مرتبط با استارتاپ زدن در دانشکده کامپیوتر ارائه نمی‌شه. متاسفانه دانشگاه یه سری مهارت کلیدی رو هم قرار نیست بهتون یاد بده که اینجا بیشتر نوشتم در موردشون.شما یک شبه پولدار نخواهید شد!اگر حس می‌کنید ایده‌های خیلی زیادی دارید، کافیه که یه خورده برنامه‌نویسی بلد باشید تا بتونید پیاده‌سازیش بکنید، بذاریدش توی بازار و پول در بیارید سخت در اشتباه هستید. حداقل یکی دو سال طول می‌کشه تا برنامه‌نویسی رو خوب یاد بگیرید و بتونید یک محصول با کیفیت درست کنید. شما یا تیم شما باید خیلی بیشتر از مهندسی کامپیوتر بلد باشید تا بتونید یک محصول درآمدزا رو مدیریت بکنید. شما باید business plan داشته باشید، سرمایه و وقت داشته باشید، کمی مدیریت و رهبری بلد باشید تا با احتمال ناچیزی موفق بشید. طبق آمار جهانی ۷۵ درصد استارتاپ‌ها شکست می‌خورند. توی این ۴ سالی که من در دانشگاه بودم و چند سال بالایی‌ها و پایینی‌هام رو دیدم، فقط چند مورد که تونستند پول در بیارن:آفتابه: فکر کنم ۴-۵ سال از عمرش می‌گذره و اون موقع بیش از ۱۰۰ میلیون تومن پول در اورد. بچه‌های اون تیم بعدش شروع کردند به ساخت محصولات دیگه و هنوز هم به شدت درگیر هستند اما دیگه محصولی مثل اون تولید نکردند و درآمدشون پایدار نبود.سالار: من یه مدتی با سازنده این اپلیکیشن همکار بودم. خیلی آدم باحالی بود و یه مقدار خوبی از درآمدش رو صرف سفر به اروپا کرده بود و حسابی خوش گذشته بود بهش. فکر نکنم از درآمدش از این بازی پول زیادی مونده باشه و خب ایشون هم سخت مشغول پروژه‌های بعدی هستند.گروه گندم هم چند تا اپ زده بود و یادمه درآمدشون بد نبود. از این افراد خیلی وقته خبر ندارم و نمی‌دونم به کجا رسیدند.نکته مشترک تو اعضای این تیم‌ها این بود که سرشون شلوغ بود و خیلی کمتر دانشگاه میومدند و خب وضعیت تحصیلی خوبی نداشتند. البته این وضعیت فقط برای کسایی که استارتاپ زدند نیستش و افراد زیادی توی شرکت خود ما هم هستند که به این مشکل دچار شدند. دقت کاستارتاپ زدن بدون هیچ تجربه‌ی کاری یک مسیر به شدت ریسکی هستش و ممکنه چیزهای زیادی رو از دست بدید و من اصلاً این مسیر رو بهتون پیشنهاد نمی‌کنم.پیشنهاد می‌کنم این مصاحبه از ایلیا وکیلی که مدت خوبی مدیر فنی اسنپ بوده رو تماشا کنید.اگر تنها به ریاضی و الگوریتم علاقه دارید، مراقب باشیداگر تا حالا خیلی با کامپیوتر سر و کله نزنید و علاقه‌ای هم نداشتید که بیشتر با جزییاتش آشنا بشید باید مراقب باشید. اگر المپیاد کامپیوتری بودید و بیشتر حل کردن تئوری سوالات براتون جذاب بوده تا کدش و بیشتر به اثبات کردن علاقه داشتید تا ساختن باید خیلی مراقب باشید. اگر المپیاد ریاضی‌ای هستید خیلی خیلی مراقبت باشید!خیلی از دوستان من در دانشگاه هستند که ویژگی‌های بالا رو دارند و تعداد زیادی از درس‌های دانشگاه رو به سختی و بدون علاقه پاس کردند. ریاضی و الگوریتم خیلی قشنگه و حقیقتاً مبنای تمام چیزهایی هستند که در کامپیوتر می‌خونیم اما این مفاهیم خیلی انتزاعی هستند و شما در یه تعداد زیادی از دروس دانشکده باید اون دید کلی‌نگری رو دور بندازید و جزییات و پیچیدگی‌ها رو به خوبی یاد بگیرید. باید کار گل انجام بدید و ریز و درشت‌هایی که شاید احمقانه به نظرتون بیاد رو پیاده‌سازی کنید. توی یکی دو سال اول درس‌های تئوری مثل الگوریتم و ساختمان داده بیشتر هستند و برای این افراد راحت‌تره اما هر چقدر که به سال‌های آخر نزدیک می‌شیم مباحث این مدلی کمتر می‌شه، پروژه‌های درس‌ها بزرگتر می‌شه، پیاده‌سازی‌ها حجیم‌تر می‌شه و این افراد بیشتر اذیت می‌شن.منظور من از این حرف‌ها این نیستش که برید رشته‌ی مرتبط‌تری مثل علوم کامپیوتر رو انتخاب کنید. چون احتمالاً همونطور که چند سال پیش همه می‌رفتن برق، الان هم خیلی‌ها با توجه نرم جامعه و کلی پارامتر عجیب غریب دیگه میان سمت مهندسی کامپیوتر. صرفاً خواستم بهتون هشدار بدم که اگر با همین فضای ذهنی جلو برید و به پیاده‌سازی‌ها به چشم کارهای کم‌اهمیت‌تر نگاه کنید سال‌های سختی در انتظارتون خواهد بود.اگر سوالی داشتید در قسمت نظرات ازم بپرسید. خوشحال می‌شم کمکتون کنم :)</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Sat, 04 Aug 2018 18:03:16 +0430</pubDate>
            </item>
                    <item>
                <title>اندرباب امنیت سیکرت چت تلگرام</title>
                <link>https://virgool.io/@m30m/%D8%A7%D9%86%D8%AF%D8%B1%D8%A8%D8%A7%D8%A8-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D8%B3%DB%8C%DA%A9%D8%B1%D8%AA-%DA%86%D8%AA-%D8%AA%D9%84%DA%AF%D8%B1%D8%A7%D9%85-nlqnnohagguk</link>
                <description>احتمالاً تا حالا ویژگی سیکرت چت توی تلگرام رو دیدید. این پیغام‌ها به گفته‌ی خود تلگرام سمت سرور ذخیره نمی‌شه و فقط گیرنده و فرستنده بهش دسترسی دارند. همچنین یه ویژگی self-destruct پیاده‌سازی شده که پیغام ها رو بعد از مدتی که مشخص می‌کنیم از بین می‌بره:The message will then disappear from both your and your friend&#x27;s devices.اما برام جالب شد که ببینم واقعاً این پیغام‌ها پاک می‌شه؟یه خورده جستجو کردم در مورد این که کش تلگرام توی mac OS کجا هستش و بعدش متوجه شدم که فایل‌های سیکرت هم کش می‌شوند! .اون هم توی همچین آدرسی:/Users/$USERNAME/Library/GroupContainers/XXXXXXXXXX.ru.keepcoder.Telegram/account-17584394946701046242/postbox/mediaو این کش به نظر ابدی هستش. یعنی تونستم تمام فایل‌هایی که در سکرت‌چت‌های خیلی قبل هم برام فرستاده شده بود رو پیدا بکنم. احتمالاً نتونید این فولدر رو به راحتی باز کنید چون توش چند هزار فایل موجوده. ولی می‌تونید با shell برید توی این دایرکتوری و دستور ls secret*  رو بزنید تا تمامی فایل‌های سیکرت رو پیدا بکنید.ممکنه خیلی‌هامون روی چنین ویژگی‌ای حساب کرده باشیم. فایل‌های مهممون رو این تو به همدیگه فرستاده باشیم و فرض کرده باشیم که دیگه نیست و نابود شده. ولی گویا اینطوری نیست. در واقع اگر کسی به لپ‌تاپ من دسترسی می‌داشت، می‌تونست تمامی این فایل‌ها رو پیدا بکنه و محتویاتش رو ببینه. پیشنهاد می‌کنم اگر چنین فرضی داشتید خودتون دستی این فایل‌ها رو پاک کنید و از این به بعد با احتیاط بیشتری از این ویژگی تلگرام استفاده کنید.این ویدیو مثالی هستش که خودم درست کردم برای این که دقیق‌تر متوجه بشید اوضاع از چه قراره.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Fri, 20 Jul 2018 18:06:21 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه مسائل کامپیوتری‌مان را در گوگل جستجو می‌کنیم؟</title>
                <link>https://virgool.io/@m30m/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%D8%B3%D8%A7%D8%A6%D9%84-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1%DB%8C%D9%85%D8%A7%D9%86-%D8%B1%D8%A7-%D8%AF%D8%B1-%DA%AF%D9%88%DA%AF%D9%84-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D9%85%DB%8C%DA%A9%D9%86%DB%8C%D9%85-dyakcwosf88n</link>
                <description>جدیداً خیلی به این مسئله پی بردم که مدل جستجو کردن افراد مختلف برای حل مشکلات کامپیوتری و برنامه‌نویسی متفاوته. در ادامه‌ی این پست اول سعی می‌کنیم با جستجو در گوگل یک مسئله‌ی فرضی رو حل بکنیم و بعدش مشکلات روشمون رو بررسی بکنیم.به عنوان مثال فرض کنید که می‌خواید یک برنامه به زبان پایتون بنویسید که تعداد فولدرهای داخل یک آدرس خاص از سیستم عامل رو مانیتور بکنه. برای ساده‌تر شدن مسئله فرض کنید هر ۵ ثانیه یه بار این تعداد رو برامون چاب بکنه.خب، شروع می‌کنیم به حل مسئله: اگر کمی لینوکس بلد باشید می‌دونید که دستور ls تا حدی این کار رو انجام می‌ده. با این تفاوت که فقط فولدرها رو نشون نمی‌ده و تمامی فایل‌ها رو هم نشون می‌ده. پس فقط کافیه که یه خورده پارامترهای ورودی دستور ls رو عوض بکنیم و بعدش هم سعی کنیم که این دستور رو از توی پایتون اجرا بکنیم و خروجیش رو پردازش کنیم. بقیه‌ی کار هم به کمک sleep و print انجام می‌شه.اول تو گوگل جستجو می‌کنیم &quot;ls only show directories&quot; یا یه همچین چیزی. نتیجه‌ی اول جستجو از stackoverflow هستش و بسته به این که چقدر مطمئن هستیم توی اولین لینک جوابمون پیدا بشه دو سه تا لینک اول رو باز می‌کنیم و می‌ریم توی قسمت جواب‌ها (بدون دیدن سوال). چشممون به کامند /* ls -d می‌خوره که به نظر چیز معقولی میاد. امتحانش می‌کنیم و می‌بینیم که کار می‌کنه. قسمت اول مسئله حل شد. حالا باید این کامند رو توی محیط پایتون اجرا کنیم.اینبار توی گوگل سرچ می‌کنیم &quot;run shell commands in python&quot; و دوباره مثل مرحله‌ی قبل چند جواب رو بررسی می‌کنیم. یک تکه کد مشابه کد پایین مشاهده می‌کنیم که به نظر منطقی و ساده میاد:import os  
os.system&#40;&#039;ls&#039;&#41;  
12یه shell پایتون باز می‌کنیم و امتحانش می‌کنیم. مشکلی که بهش برمی‌خوریم اینه که خروجی این تابع 0هستش و نمی‌تونیم خروجیش رو توی یه متغیری بریزیم. حالا کمی بیشتر جستجو می‌کنیم و کمی عبارت جستجو رو عوض می‌کنیم: &quot;run shell and get output python&quot; اینبار هم خوشبختانه خیلی زود به جواب درست می‌رسیم و توی stackoverflow یه همچین کدی رو می‌بینیمimport subprocess  
p = subprocess.Popen(&quot;echo a b | rev&quot;, stdout=subprocess.PIPE, shell=True)  
print(p.communicate())  
123توی خروجی کامند می‌بینیم که فولدرها با n\ جدا شدن. برای همین این قسمت از کار هم راحت می‌شه و بعد از کمی استرینگ بازی کدمون در نهایت این مدلی می‌شه:import subprocess  
import time

while True:  
    out = subprocess.Popen(&#039;ls -d */&#039;, shell=True, stdout=subprocess.PIPE).communicate()
    out = out[0].decode()
    folders = out.split(&#039;\n&#039;)
    folders.pop() # last chracter is \n, so the last split is empty
    print(len(folders))
    time.sleep(5)
12345678910مسئله حل شد! اما چقدر تونستیم مسئله رو خوب حل بکنیم؟ چقدر راه‌حلمون تمیز و ایده‌آل بود؟ بیایم فرض کنیم در مرحله اول جستجو می‌کردیم: &quot;list directories python&quot;اون موقع در اولین مرحله می‌تونستیم به یه نتیجه کامل برسیم و کدمون در نهایت این شکلی بشه:from os import listdir  
from os.path import isfile, join  
import time

while True:  
    folders = [f for f in listdir(&#039;.&#039;) if not isfile&#40;f&#41;]
    print(len(folders))
    time.sleep(5)
12345678این کد نسبت به کد قبلی خواناتر، ساده‌تر، و جامع‌تر هستش.توی مغز ما چه اتفاقی می‌افته که سراغ راه حل اول می‌ریم و نه دوم؟ چرا به طور نسبتاً ناخودآگاه یه مرحله مسئله رو تو ذهنمون شکوندیم و حل کردیم و بعدش به جستجو در گوگل پرداختیم؟ در ادامه چند تا نکته اصلی که خیلی وقتا توی این فرایند جستجو یادمون می‌ره و حس می‌کنم به بهینه‌تر حل کردن مسئله، چه از نظر زمانی و چه از نظر کیفیت خروجی، کمکمون می‌کنه رو بررسی می‌کنیم.جستجوی غلطبه نظرم یه اتفاق خیلی رایج در روند مسئله حل کردنمون این هستش که سعی می‌کنیم از ابزارهای و چیزهایی که بلد هستیم استفاده بکنیم و یه جوری اینها رو به هم بچسبونیم. یک ضرب‌المثل خیلی معروف هستش که می‌گهif all you have is a hammer, everything looks like a nailتوی این مثال ما اول نمی‌دونستیم که پایتون خودش ابزارها و کتابخونه‌های خیلی کاملی داره که می‌تونه کارهایی مشابه ls رو برامون انجام بده، برای همین از چکش ls استفاده کردیم. در واقع مسئله رو به دو قسمت استفاده از ls و اجرای ls در پایتون شکوندیم اما شاید اگر نمی‌دونستیم ls چی هستش مستقیماً به راه‌حل بهترs می‌رسیدیم.یه دوستی می‌گفت این رفتار خیلی در افراد المپیادی شایع‌تر هستش. چون که چندین سال در تلاش بودند که با دانش خودشون و بدون دسترسی به اینترنت مسائل برنامه‌نویسی رو حل بکنند و ممکنه توی حل مسائل صنعتی هم با همون رویکرد جلو برن.خیلی وقتا ما مسئله رو درست برای خودمون نمی‌شکونیم و به دنبال راه حل‌های بهینه‌ای نمی‌ریم. حتی شاید راه حل دوم هم اونقدر برای مسئله‌ی اصلیمون ایده آل نباشه چون ممکنه کسی که به ما این تسک رو داده مسئله‌ی اصلی رو درست نشکونده. خیلی مهم هستش که به دنبال حل مسئله‌ی درستی باشیم و این اهمیت وقتی مسئله بزرگتر و پیچیده‌تر می‌شه چندین برابر می‌شه چون تغییر راه حل هزینه‌ی خیلی بالایی داره. مثلاً دیتابیس PostgreSQL ویژگی‌های خیلی زیاد و متنوعی داره و حتی عکس رو هم می‌تونه تو خودش ذخیره بکنه. اما آیا این کار درستی هستش که هر نیاز ذخیره‌سازی اطلاعات رو با PostgreSQL برآورده بکنیم؟ بهتر نیست به جای how to store images in postgresql جستجو بکنیمwhere to store uploaded images ؟ یا مثلاً جانگو یه فریم‌ورک بسیار کامل و بالغ برای طراحی اپلیکیشن تحت وب هستش ولی آیا به درد طراحی یه وبسایت کاملاً استاتیک و ساده هم می‌خوره؟جستجوی بازگشتیقطعاً برای هممون پیش اومده که سعی کردیم یه مشکلی در کدمون رو حل بکنیم و بعد چند ساعت می‌بینیم ۱۰-۲۰ تا تب تو مرورگر بازه که چند تاش جستجوی گوگل و بیشترش stackoverflow هستش. خیلی از مسئله‌ی اصلی‌ای که می‌خواستیم حل بکنیم فاصله گرفتیم و از چاله افتادیم تو چاه. نیرویی که باعث می‌شه این فرایند برامون خسته‌کننده و آزاردهنده نباشه حس پیشرفت داشتنه. مثلاً اول نصف مسئله حل می‌شه و توی نصفه دوم به مشکل می‌خوریم. بعدش نصف قسمت دوم حل می‌شه و تو ۱/۴ اش به مشکل می‌خوریم؛ همینطور می‌ریم جلوتر و مسائل کوچیک‌تر و بی‌اهمیت‌تری رو حل می‌کنیم اما چون حلشون می‌کنیم، حس پیشرفت داریم و ادامه می‌دیم. چیزی که اینجور وقتا کمتر بهش توجه می‌کنیم سوالات مهم‌تری هستش که باید از خودمون بپرسیم: این که الان داریم چه مسئله‌ای رو حل می‌کنم؟ آیا منطقی هستش که همین راه حل رو دیباگ بکنم؟بهتر نیست برم اول یه بار دیگه کد رو بخونم و مطمئن بشم مشکل از همین جاست؟بهتر نیست اون یکی راه حلی رو که نوشته بودند تست بکنم؟اصلاً چقدر مهمه که این مشکل حل بشه؟این حس خوش‌بینی که «الان دیگه درست می‌شه» و «فقط ۵ دقیقه کار داره» تو برنامه‌نویس‌ها خیلی زیاده و به نظرم باید سعی بکنیم کمی واقع‌گرایانه نگاه بکنیم. با خودمون بگیم «این تسک تخمینش ۳ ساعت بوده امّا من دو ساعت هستش که درگیر یه قسمت خیلی احمقانه شدم. بهتره که ولش کنم و برم سمت قسمت‌های مهم‌تر و بعداً برگردم سراغش». فهمیدن زمانی که باید به خودمون بگیم «رها کن» خیلی مهارت ارزشمندی هستش و می‌تونه نمودهای مختلف و مفیدی برامون داشته باشه.جستجوی سریعوقتی که یه صفحه stackoverflow رو باز می‌کنیم به چه قسمت‌هاییش دقت می‌کنیم؟ در حد چند ثانیه صورت سوال رو می‌بینیم. بعدش اسکرول می‌کنیم تا به جواب برسیم. تعداد امتیازهای جواب و تیک Best Answer رو می‌بینیم و توی جواب به قسمتی که کد نوشته شده دقت می‌کنیم. اگر حس کردیم که جواب منطقی هستش کمی با دقت بیشتری می‌خونیمش و امتحانش می‌کنیم. یا مثلاً اگر جوابمون وسط یه tutorial پیدا شده باشه، وقتی صفحه باز شد فقط همون قسمتش رو می‌خونیم. مشکل اصلی این جستجوها دقت نکردن به جزییات و context مطلب هستش. جزییاتی که در ظاهر بی‌اهمیت هستش ولی می‌تونه خیلی سریعتر ما رو به جواب برسونه. همین که مطمئن باشیم سوالی که توی stackoverflow پرسیده شده همون سوال ماست یا نه؛ خوندن کامنت‌هایی که روی سوال و جواب گذاشتند و کامل خوندن و فهمیدن راه‌حل‌ها همشون می‌تونن در نهایت باعث سریعتر حل شدن مسئله بشن.توی کامنت اولین جوابی که انتخاب کردیم نوشته شده بود که این جواب کاری که ما می‌خواستیم رو نمی‌کنه، ولی ما وقت نداشتیم که کامنت‌ها رو بخونیم. حتی توی قسمت دوم جواب هم راه‌حل بعدیمون نوشته شده بود ولی بعد این که به مشکل خوردیم دیگه سراغ این جواب نیومدیم.مثال دیگری که وجود داره خوندن API References ها هستش. عموماً توی این صفحات فقط توضیحات APIای که می‌خوایم ازش استفاده بکنیم رو می‌خونیم. اما شاید اگر بقیه APIهای موجود رو هم یه مروری بکنیم، بتونیم از اونهایی که بهینه‌تر هستند استفاده بکنیم یا بفهمیم که برای حل یه قسمت دیگه از مسئله هم چنین راه‌حلی وجود داره. برای همین هستش که مستندات خوب یه قسمت See Also داره که بهمون کمک می‌کنه توابع مرتبط با تابعی که داریم مطالعه می‌کنیم رو راحت‌تر پیدا کنیم. به عبارتی context مرتبطی رو در اختیار ما قرار می‌دن.چیزهایی که الان در دنیای توسعه دهندگان خیلی بهش اهمیت داده می‌شه تکنولوژی و زیرساخت و .... هستش اما به نظرم practice های یک توسعه‌دهنده می‌تونه خیلی بیشتر از اینها در پیشرفتش نقش داشته باشه. حتی practice های ساده‌ای مثل چگونه جستجو کردن.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Sat, 30 Jun 2018 18:08:50 +0430</pubDate>
            </item>
                    <item>
                <title>سرگذشت تیم داده‌ی دیوار</title>
                <link>https://virgool.io/@m30m/%D8%B3%D8%B1%DA%AF%D8%B0%D8%B4%D8%AA-%D8%AA%DB%8C%D9%85-%D8%AF%D8%A7%D8%AF%D9%87%DB%8C-%D8%AF%DB%8C%D9%88%D8%A7%D8%B1-lv5zff69l2pf</link>
                <description>تیم داده دیوار، از اوایل تابستان ۹۵ با افرادی با تخصص‌ها و مهارت‌های مختلف تشکیل شد و فعالیت خودش را آغاز کرد. در این یادداشت، نگاهی می‌اندازیم به تجربیاتی که در این مدت کسب کردیم- چه از نظر تکنولوژی و چه ساختاری.چرا به چنین تیمی نیاز داشتیم؟در محصول دیوار، به صورت جسته و گریخته، کارهای مختلفی روی داده‌های موجود انجام شده بود. آمارهای مختلفی اندازه گیری می‌شد و چند داشبورد اولیه برای نمایش وضعیت فعلی دیوار وجود داشت. نمودارهایی مثل تعداد آگهی و تعداد بازدید از آگهی‌ها معیارهای اصلی ما برای نظارت بر روند پیشرفت محصول بود. با این حال می‌دانستیم که نیاز به یکپارچه‌سازی این آمارها و اندازه‌گیری دقیق‌تر آن‌ها وجود دارد. همچنین داده‌های دیوار، پتانسیل بسیار زیادی برای بهبود کیفیت محصول داشتند. مثلاً بهبود کیفیت جستجوی آگهی یا سرعت و دقت بررسی آگهی‌های ثبت شده. از این رو، کارهایمان به دو قسمت اصلی تصمیم‌گیری داده محور (data-driven decision making) و محصولات داده‌ای (data products) تقسیم شد. در تصمیم‌گیری داده محور هدف اصلی کسب دانش بیشتر در مورد محصول و کاربران آن برای تعیین ادامه مسیر محصول بود. در محصولات داده‌ای نیز هدفمان ارائه‌ی ابزارها و مدل‌هایی بود که بتوان به کمک آن‌ها کیفیت محصول را افزایش داد که در ادامه‌ی یادداشت بیشتر توضیح داده می‌شود.سرآغازبا این که از قبل تجربیاتی در محصول کافه‌بازار در این زمینه داشتیم، این کار همچنان برای ما جدید بود. بنابراین تا مدتی به بررسی تجارب شرکت‌های مشابه پرداختیم. علی‌رغم اینکه محتوای زیادی درباره‌ی علوم داده و مهارت‌های حول آن وجود دارد، اما پیدا کردن محتوایی با کیفیت مطلوب که به ساختن و پیش بردن یک تیم داده پرداخته باشد نیاز به جستجو و بررسی بیشتری داشت. مقالات و ویدیو‌های سایت O&#x27;Reilly مانند این ویدئو، در این زمینه بسیار مفید بودند.در ابتدای کار نمی‌خواستیم زمان زیادی را صرف زیرساخت داده کنیم، زیرا نمی‌دانستیم داده‌ها چه شمایی (schema) دارند، پردازش‌هایی که می‌خواستیم روی آن انجام دهیم چقدر منابع نیاز دارند و به چه ابزارهای دیگری نیازمندیم. معمولاً تصمیم گیری بدون اطلاعات کافی نتیجه‌ی خوبی در بر ندارد و علاوه بر هزینه‌، در ادامه‌ی راه، محدودیت‌های پیش‌بینی نشده‌ای به وجود می‌آورد. بنابراین سعی کردیم برای کسب این دانش اولیه در کوتاه‌ترین زمان، ابزارهای پایه‌ای مورد نیازمان را راه اندازی کنیم. هدف از این تصمیم رسیدن به سرعت لازم برای ارزش‌رسانی به محصول بود و می‌دانستیم از طرفی دیگر بدهی‌های فنی رشد خواهند کرد که باید آن‌ها را کنترل می‌کردیم. منظور از بدهی فنی، مشکلاتی است که می‌دانیم وجود دارند، برطرف کردن آن‌ها مستقیماً ارزشی به محصول نمی‌رسانند و تجمع آن‌ها به مرور زمان، باعث اختلال و کند شدن توسعه می‌شود. به عنوان مثال، مزیت اصلی اسپارک (Spark) به عنوان یک ابزار پردازش داده، ایجاد یک کلاستر و استفاده از چندین سرور معمولی برای تقسیم کردن پردازش‌های سنگین است. اما به جای استفاده از چندین سرور و راه اندازی یک کلاستر، مدتی نسبتاً طولانی‌ از یک سرور قدرتمند که توان پردازشی آن معادل چند سرور عادی بود استفاده کردیم تا نیازی به تنظیمات کلاسترینگ و راه‌اندازی یک فایل سیستم توزیع شده نداشته باشیم. در واقع به جای تغییر مقیاس افقی (scale out)، از تغییر مقیاس عمودی (scale up) استفاده کردیم. این کار باعث شد تا بتوانیم در چند ماه اول، تمرکز اصلی‌مان را به جای مقیاس‌پذیری، روی تمیزسازی و تحلیل داده بگذاریم.ساختار تیم‌، ساختار چپترساختار تیم‌های فنی در شرکت الهام گرفته از ساختار Spotify در آن زمان بود که طبق آن، تیم‌ها بر اساس محصول شکسته می‌شوند؛ مثلاً تیم جستجوی آگهی، تیم ثبت آگهی و … . در هر تیم افرادی با مهارت‌های مختلف وجود دارند تا بتوانند نیازمندی‌های محصول را برآورده کنند. در اکثر تیم‌ها برنامه‌نویس موبایل، توسعه دهنده‌ی سمت کاربر و توسعه دهنده‌ی سمت سرور وجود دارند. پس از گذشت زمان و بزرگتر شدن تیم داده، تصمیم گرفتیم تا مطابق این ساختار رفتار کنیم و در تیم‌های مختلف دیوار قرار گرفتیم. بنابراین دیگر، تیم داده وجود نداشت ولی با جلسات منظم هفتگی توانستیم اشتراک دانش و تجربیاتمان را در «چپتر داده» حفظ کنیم. در این جلسات، افراد مسائل داخل تیمشان را با یکدیگر به اشتراک می‌گذارند تا بقیه نیز در مورد آن همفکری کنند و همچنین مسائل مشترک بین تیمی، مانند زیرساخت و ابزارهای مشترک داده در آن مطرح می‌شود. با این کار توانستیم نیازهای هر تیم را بهتر درک کنیم و ارتباطات مفیدتری با هر تیم داشته باشیم. یکی از مهم‌ترین نکات در این فرایند شروع به عنوان یک «تیم» و سپس تبدیل شدن به یک «چپتر» بود. در چند ماه اول، اولویت‌های اصلی راه‌اندازی ابزارها، فهم کامل داده‌های موجود در دیوار و یکسان‌سازی فرایند‌های جمع‌آوری و تحلیل داده بود که نیاز به ارتباطات بیشتری بین دانشمندان و مهندسان داده داشت. اما پس از انجام مراحل ابتدایی، تبدیل شدن به یک چپتر در ادامه‌ی مسیر باعث شد تا بتوانیم در دیوار موثرتر باشیم. زیرا افراد روی مسائل یک تیم به مدت چندین ماه تمرکز داشتند و در عین حال بستری برای هماهنگی کارهای مشترک بین تیمی وجود داشت.تفاوت بین تیم و چپتر: اعضای چپتر داده در تیم‌های مختلف مشغول به کار هستند.تفاوت بین تیم و چپتر: اعضای چپتر داده در تیم‌های مختلف مشغول به کار هستند 
ذخیره‌سازی انبوهتا نزدیکی اسفند ۹۵ اکثر تحلیل‌ها بر اساس اطلاعات آگهی‌های ثبت شده یا به عبارتی کاربران فروشنده در دیوار انجام می‌شد؛ مثلاً چه آگهی‌هایی بیشتر نمایش داده می‌شوند و چه کاربرانی بیشتر آگهی ثبت می‌کنند. این اطلاعات از پایگاه‌های داده اصلی دیوار استخراج می‌شد و در سرورهای داده ذخیره می‌شد. با این حال کاربران خریدار نیز از اهمیت بسزایی برخوردار بودند و نیاز داشتیم تا اطلاعات بیشتری از نحوه‌ی کار آن‌ها با دیوار داشته باشیم. برای مثال این که کاربران بیشتر چه چیزهایی را جستجو می‌کنند، روی چه آگهی‌هایی بیشتر کلیک می‌کنند و با چه آگهی‌هایی بیشتر تماس می‌گیرند. این اطلاعات به ما کمک می‌کند تا آگهی‌های مرتبط‌‌تر و با کیفیت بیشتری را به کاربران نشان دهیم و تجربه‌ی کاربری بهتری برایشان ایجاد کنیم. برای همین، زیرساختی فراهم کردیم تا چنین اطلاعاتی از سمت کاربر برای سرورهای ما ارسال شود. حال مسئله‌ی اصلی نحوه‌ی ذخیره‌سازی و پردازش این اطلاعات بود. در ابتدا کسندرا (Cassandra) را به عنوان راه حل ذخیره‌سازی در نظر گرفته بودیم؛ اما با کمی تحقیق و بررسی فهمیدیم که نحوه‌ی دسترسی به اطلاعات ذخیره شده در کسندرا با حالتی که ما برای استفاده در نظر داشتیم تفاوت دارد. به عبارت دیگر نمی‌توانستیم Data Modeling ای ارائه دهیم که هم برای ذخیره‌سازی در کسندرا بهینه باشد و هم برای خواندن از آن به صورت انبوه. جزییات این مسئله پیچیده است و در این یادداشت  قابل بحث نیست اما شاید در آینده در مورد این موضوع به صورت تخصصی‌تر بنویسیم. این مقاله به خوبی بعضی از مشکلات تکنولوژی‌هایی مانند کسندرا را که ما نیز به آن برخورد کردیم مطرح می‌کند. از این رو به یک راه‌حل سطح پایین‌تر اما بالغ‌تر روی آوردیم: با این که HDFS تنها یک فایل سیستم توزیع شده است، اما می‌تواند به خوبی نیازهای ذخیره‌سازی و پردازشی ما را پوشش بدهد. داده در ابتدا به صورت متنی و کاملاً خام در HDFS ذخیره می‌شود و پس از کامل شدن داده‌های یک روز، به صورت ساختاریافته و به فرمت پارکت (Parquet)  تبدیل می‌شود. بر خلاف اکثر پایگاه‌های داده سنتی که داده‌های هر ردیف از جدول را کنار هم ذخیره می‌کنند، پارکت یک فرمت ستونی است و برای دسترسی سریع به صورت ستونی بهینه شده است. بنابراین برای پردازش‌های مختلف می‌توانیم تنها ستون‌های مورد نیاز را از دیسک بخوانیم و نیاز به خواندن تمام داده‌های ذخیره شده نیست.در حال حاضر، هر روز حدود ۴۰۰ گیگابایت در زیرساخت HDFS ما ذخیره می‌شود و در عین حال یک پرسمان روی داده‌های یک روز تنها در عرض چند دقیقه انجام می‌شود. ساختارمند کردن تمام داده‌های موجود که امکان اجرای اکثر پرسمان‌های SQL را روی آن ممکن می‌کند باعث شد تا فرایندهای تحلیل داده سرعت بیشتری داشته باشند و دغدغه‌های کمتری حول بهینه‌سازی پرسمان داشته باشیم.نمایی از تسک‌های انجام شده بر روی داده‌های خام: فلش‌ها ترتیب انجام تسک‌ها را مشخص می‌کنند استفاده از مدل‌ها در محیط Productionبا بالغ‌تر شدن چپتر داده در دیوار، نیازهای بنیادین تا حدی برطرف شد و توانستیم بیشتر به سمت محصولات داده‌ای حرکت کنیم. منظور از محصولات داده‌ای ارائه کردن یک سرویس یا کتابخانه است که بتوان از آن در محیط Production استفاده کرد؛ مثلاً سرویسی که با استفاده از شبکه عصبی، دسته‌بندی یک آگهی را به صورت خودکار تشخیص بدهد تا فرایند ثبت آگهی تسریع شود. منظور از محیط Production تمامی کدها و پایگاه‌های داده‌ای است که مستقیم برای سرویس‌دهی به کاربران استفاده می‌شوند. از همان ابتدا می‌دانستیم که راه‌اندازی چنین سرویس‌هایی را نمی‌توانیم بر عهده دانشمندان داده بگذاریم، زیرا تخصص این افراد متفاوت است و لزوماً دانش زیادی در مورد چالش‌های فنی چنین سرویس‌هایی مثل مانیتورینگ، لود بالانسینگ و … ندارند. این مقاله از گوگل به خوبی چالش‌هایی را که در راه‌اندازی چنین سرویس‌هایی وجود دارد، شرح می‌دهد. بنابراین نیاز به یک نقش جدید برای انجام چنین کارهایی را حس کردیم و نقش مهندس یادگیری ماشین (ML Engineer) را در دیوار تعریف کردیم. بنابراین سه نقش متفاوت در چپتر داده به وجود آمد که هر کدام وظایف خود را داشتند:دانشمند داده: تحلیل داده‌های موجود و ارائه‌ی مدل‌های یادگیری ماشینمهندس داده: فراهم کردن زیرساخت ذخیره‌سازی و پردازش داده (مانند اسپارک و HDFS)مهندس یادگیری ماشین: آماده‌سازی مدل‌های ساخته‌شده برای استفاده در Productionاین مقاله تا حدی به توصیف ما از این نقش‌ها نزدیک است با این تفاوت که در تعریف ما یک مهندس یادگیری ماشین، فردی است که بین دانشمندان داده، مهندسین داده و توسعه دهنده‌های سمت سرور قرار می‌گیرد. در حال حاضر مرزهای شفافی بین این نقش‌ها نیست و هر فرد بخشی از مهارت‌های هر کدام از این نقش‌ها را دارد. این دیدگاه که هر کدام از این نقش‌ها به نقش دیگر سرویس می‌دهد یا از آن سرویس می‌گیرد، همواره خطرناک بوده و هیچ گاه دوست نداریم که چنین مرزبندی‌های قاطعی بین نقش افراد وجود داشته باشد. وجود چنین مرزهایی مشابه مرزهای تیم Operations و Development در ساختارهای سنتی بود که باعث غیربهینه بودن فرایند توسعه می‌شد و برای حل آن DevOps به وجود آمد. ما هم در چپتر داده تلاش کردیم تا فرهنگ مشابهی را به وجود بیاوریم.تکنولوژی‌های زیرساخت دادهدر ابتدای کار نیاز داشتیم تا محیطی برای پردازش داده‌های دیوار فراهم کنیم بدون این که بار اضافه‌ای روی پایگاه‌های داده و سرورهای اصلی بیاوریم و تغییری در کدهای موجود ایجاد کنیم. پایگاه‌های داده اصلی برای بازیابی پست‌ها و نمایش آن‌ها به صورت تک تک (OLTP) بهینه بودند اما در اکثر پردازش‌های ما نیاز بود تا تمام پایگاه داده را از دیسک بخوانیم (OLAP) و این کار باعث کند شدن درخواست‌های اصلی به پایگاه داده دیوار می‌شد.بنابراین نیاز به ایجاد یک زیرساخت کاملاً مستقل، برای وابسته نبودن به زیرساخت سمت سرور و جلوگیری از ایجاد اختلال در کیفیت سرویس‌هایمان احساس می‌شد. در ادامه ابزارها و تکنولوژی‌هایی که هم اکنون در زیرساخت داده از آن‌ها استفاده می‌شوند به صورت مختصر معرفی شده‌اند.برای زمان‌بندی کارهای روزانه، مثل استخراج داده از پایگاه‌های داده اصلی، فرایند‌های ETL و محاسبه‌ی متریک‌های روزانه از Apache Airflow استفاده می‌کنیم.زیرساخت اصلی پردازش داده Apache Spark است که برای جابجایی داده‌ها، اعمال تغییرات روی آن‌ها و محاسبه آمار استفاده می‌شود.دانشمندان داده به کمک Apache Zeppelin تحلیل‌های اکتشافی و بررسی مدل‌های مختلف را انجام می‌دهند.برای تصویرسازی (Visualization) متریک‌ها، گزارش‌گیری و استفاده توسط سایر افراد، مانند مدیران محصول از Metabase استفاده می‌کنیم.تجمیع لاگ‌های ایجاد شده توسط کاربران و ذخیره‌سازی آن‌ها در HDFS توسط Fluentd انجام می‌شود.در دیوار دو پایگاه داده اصلی Live و Archive وجود دارد که در آن‌ها به ترتیب پست‌های فعال و پست‌های قدیمی و آرشیو شده وجود دارند. همانطور که در شکل مشخص شده است، داده‌ها به کمک Airflow و replication از این پایگاه‌های داده جمع آوری شده، در HDFS ذخیره می‌شوند. لاگ‌های مختلف نیز از وب سرورها به سرویس Fluentd ارسال شده تا در HDFS ذخیره شوند. سپس پردازش‌های گوناگونی روی این داده‌ها به کمک Airflow و اسپارک انجام می‌شود که نتایج آن‌ها داخل پایگاه داده‌ی Metrics ذخیره می‌شود. از طریق Metabase می‌توان به این پایگاه داده و نسخه‌ی replicate شده از پایگاه داده‌ی Live دسترسی داشت تا این اطلاعات تصویرسازی شوند. از طریق Zeppelin نیز می‌توان مستقیماً به داده‌های HDFS و پایگاه‌های داده دسترسی پیدا کرد و تحلیل‌های پیچیده‌تری روی آنها انجام داد. در نهایت از طریق Zeppelin و Metabase گزارش‌ها و تصویرسازی‌های مختلفی انجام می‌شود تا در دسترس افراد مربوط قرار می‌گیرند.خوشبختانه پس از دو سال از انتخاب این ابزارها، هنوز از تمامی آن‌ها استفاده می‌شود و این ابزارها نیز بهبودهای قابل توجهی داشته‌اند.ساختار فعلی زیرساخت داده: فلش‌ها نشان‌دهنده‌ی نحوه‌ی انتقال داده‌ها هستند نتیجه‌گیریدر طی این چند سال تجربیات بسیار زیادی به ما اضافه شد و تصمیم های درست و غلط فراوانی گرفتیم. شاید مهم‌ترین نکاتی که در طی این فرایند به ما کمک کرد اینها بود:وجود مهندسان داده از ابتدای کار و ایجاد یک زیرساخت کمینه باعث شد تا سرعت خوبی درتحلیل‌های اولیه داشته باشیم. حال این که اگر این وظیفه به افراد دیگری محول می‌شد که در حوزه‌ی تخصصی‌ آن‌ها نبود، باعث می‌شد تا این فرایند بیشتر طول بکشد و با این کیفیت انجام نشود.مطالعه‌ی کافی و دنبال کردن تجربیات شرکت‌های مطرح در این زمینه باعث شد تا بسیاری از اشتباه های دیگران را تکرار نکنیم، تکنولوژی‌های بهتری را انتخاب کنیم و مسیر هموارتری را پیش بگیریم.اهمیت دادن به ساختارهای انسانی چپتر و تیم، وظایف افراد مختلف و نحوه‌ی تعامل آن‌ها با یکدیگر باعث شد تا افراد رضایت نسبتاً معقولی از کارشان داشته باشند و انگیزه‌ی کافی در آن‌ها حفظ شود.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Tue, 22 May 2018 16:19:58 +0430</pubDate>
            </item>
                    <item>
                <title>تجرید سوراخ!</title>
                <link>https://virgool.io/@m30m/%D8%AA%D8%AC%D8%B1%DB%8C%D8%AF-%D8%B3%D9%88%D8%B1%D8%A7%D8%AE-tgcach8dmax9</link>
                <description>به تازگی خوندن کتاب Joel On Software از از Joel Spolsky رو تموم کردم که مقاله‌های خیلی خوبی داشت. یک قسمت از متنش که خیلی برام جالب بود و دوست دارم در موردش بنویسم در مورد Leaky Abstraction بود که ترجمه‌اش می‌کنم تجرید سوراخ! اگر کلمه تجرید براتون خیلی غریب هستش، هر جا که تو متن دیدینش به جاش بخونید abstraction.تجرید سوراخ یعنی چی؟ یعنی هر نوع تجریدی که باعث بشه شما همچنان نیاز داشته باشید تا جزییاتی از چیزی که روش تجرید انجام دادید رو بدونید. بذارید چند تا مثالی که خود Joel زده (با کمی تغییر) رو بگم که براتون واضح‌تر بشه:زبان SQL برای این طراحی شده که نیاز نداشته باشیم تا مرحله به مرحله به دیتابیس بگیم که چه کارهایی انجام بده تا اطلاعات مورد نظر ما رو بهمون برگردونه. مثلاً کافیه بگیم select * from products where id&lt;10 and price&gt;100 تا از جدول محصولات، محصولاتی که شماره‌شون کمتر از ۱۰ هستش و قیمتشون بیشتر از ۱۰۰ هستش رو پیدا بکنیم. حالا فرض کنید الگوریتم اجرای کویری اینطوری پیاده‌سازی شده که اول تمام ردیف‌هایی که شرط اول رو دارند رو پیدا می‌کنه و بعد شرط دوم رو چک می‌کنه. حالا اگر کویری select * from products where price&gt;100 and id&lt;10 رو اجرا کنیم، ممکنه خیلی بیشتر طول بکشه چون احتمالاً محصولات زیادی هستند که قیمتشون بیشتر از ۱۰۰ هستش و باید توی همه‌ی اون‌ها دنبال اون‌هایی که شماره‌شون کمتر از ۱۰ هستش بگردیم. SQL به ما قول داده بود که نیازی نداشته باشیم تا بدونیم چجوری یه کویری رو اجرا می‌کنه و چجوری باید اطلاعات رو از دیتابیس بخونیم، ولی چون سیستممون کند شده باید چنین کلک‌هایی رو یاد بگیریم تا دوباره سرعتش رو بهبود بدیم.وقتی توی زبان‌های سطح پایین، یه آرایه دو بعدی تعریف می‌کنیم. خیلی فرق داره که این آرایه دوبعدی رو ستونی پیمایش کنیم یا ردیفی و ممکنه سرعت برنامه‌مون رو تحت تاثیر قرار بده. قبلاً بهمون گفته بودند که RAM یعنی Random Access Memory! یعنی به هر جای RAM با سرعت یکسانی می‌شه دسترسی پیدا کرد. ولی خب در واقعیت اینجوری نیست، کلی مکانیزم cache و pagefault و ... وجود داره تا دسترسی‌های خطی سریعتر بشن. این نشون می‌ده که این تجرید هم سوراخه و ما برای بهبود سرعت برنامه‌مون باید دقیق بدونیم که مکانیزم دسترسی به RAM چطوری هستش.پروتکل شبکه TCP به ما یک ارتباط قابل اطمینان رو ارائه می‌ده. یعنی مطمئن هستش که دیتا خراب نشده، به ترتیب رسیده و ... . این در حالی هستش که این پروتکل روی پروتکل IP پیاده‌سازی شده که خودش یک پروتکل غیرقابل اطمینان هستش و صرفاً تمام تلاشش رو می‌کنه تا پکت‌ها رو به مقصد برسونه. بنابراین اگر در لایه IP مشکلی به وجود بیاد TCP قطعاً نمی‌تونه قول‌هایی که بهمون داده بود رو اجرا بکنه و دچار مشکل می‌شه.مثال‌های دیگری که خودم به ذهنم رسید و شاید براتون جالب باشه:فریم‌ورک وب جانگو خودش یک ORM ارائه می‌ده، تا دیگه به فکر ساختن جداول SQL و اینها نباشیم. خودش برامون جداول و ستون‌های مختلف رو می‌سازه، حواسش به تایپ‌های مختلف فیلدها هستش و چیزهایی از این قبیل. در واقع سعی می‌کنه که ما فقط نیاز داشته باشیم تا با یه سری object کار بکنیم و خودش این object ها رو به جداول دیتابیس مرتبط بکنه. اما بعضی وقت‌ها این تجرید سوراخ می‌شه و توابعی مثل select_related رو به وجود میاره تا ما بتونیم بهش راهنمایی بکنیم که کدوم جداول رو باید با جدول object فعلی join کنه تا سرعت بهتری در ادامه کار داشته باشیم. ولی اگر ندونیم SQL چیه و join چیه نمی‌تونیم سرعت کارمون رو بهبود بدیم.داکر، یک نوع تجرید برای اجرای هر برنامه‌ای بدون این که نیاز باشه نیازمندی‌هاش رو نصب کنیم و بدونیم که چجوری تنظیمش بکنیم هستش. در واقع همه‌ی اپلیکیشن‌ها رو به صورت یک سری container می‌بینه و می‌گه شما مستقل از این که بدونید توی container چه اتفاقی می‌افته می‌تونید اجراش بکنید و از امکاناتش استفاده بکنید. مثلاً من خود این وبلاگ رو با اجرای یک دستور تو داکر بالا اوردم. مشکل این تجرید هم اینجاست که ممکنه برای container شما یک مشکلی به وجود بیاد، و شما باید برید داخل container تا بفهمید دقیقاً مشکل کجاست و چجوری می‌شه حلش کرد. یه جورایی باید بدونید ساز و کار اپلیکیشنی که داخل container هستش چیه تا بتونید درستش بکنید.اعتراضاتی که به این استدلال‌ها وجود داره اینه که اکثرشون برای بهبود سرعت و کارایی هستش، اما خب ما هم در جهانی زندگی می‌کنیم که هزینه، سرعت و کارایی برامون مهم هستش و همیشه نمی‌تونیم به جای بهینه‌سازی منابعمون رو افزایش بدیم.مثال‌هایی که زدم لزوماً نمونه‌ای از تجرید سوراخ نبود ولی یه شباهت‌هایی بهش داشت. حرف اصلی‌ای که می‌خواستم بزنم اما چیز دیگری بود. افراد زیادی هستند که با استدلال این که لایه‌های تجرید بالاتری به وجود اومده، حس می‌کنند دونستن لایه‌های پایین بی‌ارزش هستش: چون جانگو خودش ORM داره دیگه لازم نیست SQL بلد باشم یا چون خود nginx می‌تونه به جانگو وصل بشه و از اون طرف می‌تونه جواب مرورگر رو هم بده لازم نیست بدونم http چیه. این استدلال‌ها در ظاهر درست هستند اما ممکنه در ادامه شما رو دچار مشکلات زیادی بکنند. ندونستن لایه زیرین ابزاری که باهاش کار می‌کنید ممکنه باعث بشه دیباگ کردنتون چندین برابر بیشتر طول بکشه و به جای چند دقیقه چند ساعت درگیر حلش باشید.برای یک برنامه‌نویس، بی‌اهمیت دونستن این که سیستم عامل و اینترنت چجوری کار می‌کنه چون که الان لینوکس و گوگل کروم وجود داره، همونقدر احمقانه هستش که بگیم چون ماشین حساب وجود داره دیگه لازم نیست جمع و ضرب یاد بگیریم.پس یه بار دیگه تاکید می‌کنم که این درس‌ها رو توی دانشگاه جدی بگیرید و فکر نکنید چون بلدید وبسایت بزنید، دیگه نیازی به دونستنشون ندارید.مقاله اصلی Joel در مورد تجرید سوراخ یه لینک خوب دیگه در مورد همین موضوع</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Sat, 10 Feb 2018 17:10:48 +0330</pubDate>
            </item>
                    <item>
                <title>کار در کنار تحصیل - قسمت ۲ - چرا باید درس بخونیم؟</title>
                <link>https://virgool.io/@m30m/%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%DA%A9%D9%86%D8%A7%D8%B1-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-%DA%86%D8%B1%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%AF%D8%B1%D8%B3-%D8%A8%D8%AE%D9%88%D9%86%DB%8C%D9%85-hozoy3rs9axc</link>
                <description>توی قسمت قبلی در مورد این که دانشگاه چه مشکلاتی داشتش نوشتم. این بار می‌خوام یه خورده هم از خوبی‌های دانشگاه بگم و این که درس‌هایی که پاس می‌کنیم چقدر می‌تونن مفید باشن. در اکثر مقاطع تحصیلی بهمون می‌گفتند که درستون رو بخونید، وگرنه حمّال می‌شید! به نظرم دوره کارشناسی هم از این قضیه مستثنی نیست و اگر به بعضی از درس‌ها مسلط نباشید باز هم حمّال خواهید شد: یک توسعه‌گر معمولی که مسیر پیشرفتش سقف خیلی کوتاهی داره.توی این پست می‌خوام فقط با مثال زدن اهمیت و کاربرد بعضی از این درس‌ها رو نشون بدم. برای این که مثال‌هام قابل لمس‌تر باشه، سعی می‌کنم که اکثرشون رو از محصولی که توی شرکت فعلی روش کار می‌کنیم بزنم. من در حال حاضر روی پلتفرم خرید و فروش دیوار کار می‌کنم که افراد می‌تونن داخل اون اجناس خودشون رو به فروش بذارن و یا کالاهای افراد دیگر رو بخرند یا معاوضه کنند. اکثر مثال‌ها رو در قالب مسئله و جواب مطرح می‌کنم؛ پیشنهاد می‌کنم قبل از خوندن جواب مسئله خودتون هم کمی بهش فکر کنید. جواب‌هایی که مطرح شده، جواب‌هایی بوده که حداقل در یک دوره‌ای از زمان پیاده‌سازی شده بوده و جواب واقعی خودمون به مسئله بوده.ساختمان داده و طراحی الگوریتممسئله: می‌خوایم برای سرچ دیوار Query Prediction داشته باشیم، یعنی مثلاً اگر کاربر دو حرف «مو» رو وارد کرد بهش دو کلمه «موبایل» و «موتور» رو پیشنهاد بدیم. جواب: می‌تونیم از یک Trie استفاده بکنیم. کافیه به ازای هر گره درختمون بدونیم که پراستفاده ترین گره توی زیردرختش چیه و اونها رو پیشنهاد بدیم.آمار و احتمال مهندسیمسئله: می‌خوایم بر اساس یه کلمه‌ای که کاربر وارد می‌کنه بهش یه دسته بندی رو پیشنهاد بدهیم. مثلاً کلمه خانه رو که می‌نویسه بهش پیشنهاد بدیم که بره تو دسته‌بندی املاک. جواب: کافی هستش که احتمال وجود اون کلمه داخل یک آگهی دیوار به شرط این که داخل اون دسته بندی‌باشه رو حساب بکنیم و ببینیم که این احتمال زیاد هستش یا نه. برای این کار از قانون بیز می‌شه استفاده کرد.بازیابی پیشرفته اطلاعاتمسئله: می‌خوایم جستجوی آگهی‌هامون رو بهبود بدیم. اصلاً بهبود دادنش یعنی چی؟ از کجا بفهمیم داریم آگهی‌های خوبی رو به کاربر نمایش می‌دیم؟ از کجا بدونیم داریم تمام آگهی‌های مرتبط رو نمایش می‌دیم؟جواب: کافیه از تکنیک‌های رایجی مثل Normalization و Lemmatization برای بهبود جستجو استفاده کنیم. معیارهای Precission و Recall معیارهایی برای اندازه‌گیری کیفیت جستجو هستند که شما توی این درس باهاش آشنا می‌شید.پایگاه دادهمسئله: آگهی‌های دیوار توی دسته‌بندی‌های مختلف، فیلد‌های مختلفی دارند. مثلاً آگهی‌های املاک متراژ دارند، آگهی‌های خودرو میزان کارکرد دارند و گوشی‌های موبایل برند دارند. حالا اگر بخوایم این‌ها رو توی دیتابیس ذخیره کنیم چیکار کنیم؟ یه ستون بگیریم که گاهی‌اوقات ممکنه مقدارش خالی باشه یا آگهی‌ها رو توی جداول مختلف ذخیره کنیم؟ جواب: همه‌ی این تکنیک‌ها توی درس پایگاه داده بررسی می‌شه و این که آیا Normalize کردن جدول به سربارش می‌ارزه یا نه، چقدر باید data redundancy داشته باشیم تا سرعت پاسخمون قابل قبول باشه و این که اصلاً چه مدل پایگاه‌داده‌ای به دردمون می‌خوره رو توی این درس یاد می‌گیرید.سیستم عاملمسئله: هر پراسس جانگو که میاد بالا چندصد مگابایت حجم می‌گیره. حالا اگر بخوایم به درخواست‌ها موازی جواب بدیم چجوری می‌تونیم صدها پراسس جانگو بیاریم بالا؟ برای این که دیتاهای مهم کاربران نپره بهتره که از چه RAID ای استفاده بکنم؟ چرا فلان قسمت سیستم کند شده، آیا مشکل از هارد دیسکه، یا CPU Usage مون زیاده، یا مشکلات شبکه‌ای داریم؟ جواب: فرق پراسس و ریسه (thread) و این که از کدوم کجا می‌شه استفاده کرد، در مورد file systemها و تمامی این مفاهیم پایه‌ رو در در درس سیستم عامل یاد خواهید گرفت.شبکهمسئله: تعداد کاربران خیلی زیاد شدند و بعضی‌هاشون نمی‌تونن به سرور وصل بشن. چه کنیم؟! جواب: می‌تونید با تنظیمات شبکه سیستم عامل بازی کنید، نذارید کسی زیاد کانکشن باز نگه داره به سیستم. می‌تونید در لایه DNS بار رو روی چندین سرور توزیع کنید. می‌تونید caching ایجاد کنید تا به درخواست‌ها سریعتر پاسخ داده بشه و کلی تکنیک دیگه که تو درس شبکه یاد خواهید گرفت.برنامه‌نویسی پیشرفتهمسئله: می‌خوایم تمیز کد بزنیم! جواب: خوبه که با تکنیک‌های refactoring و تمیز کد زدن آشنا باشیم و یه شهودی از شیءگرایی هم داشته باشیم.لزوماً تمامی درس‌ها اینقدر نمود مستقیمی در کار صنعتی ندارند اما به نظرم اکثرشون به آدم ایده می‌دن. مثلاً اولین بار تو درس معماری کامپیوتر در مورد LRU Cache صحبت می‌شه و دقیقاً همون مفاهیم caching رو در سمت نرم‌افزار هم داریم. از معدود درس‌هایی که خیلی کم استفاده شدند به نظرم می‌شه محاسبات عددی و مبانی مدارهای الکتریکی و الکترونیکی رو نام برد!شاید اساتید درس‌ها رو خوب ارائه نکنند، شاید درس تمارین خوبی نداشته باشه اما خود مفاهیم درس قطعاً ارزشمند هستند. سیلابس اکثر دانشگاه‌ها همینه و اگر به دانشگاه خودتون اعتماد ندارید به سیلابس‌ ACMاعتماد کنید! یکی از بهترین فواید دانشگاه این هستش که شما رو مجبور می‌کنه تمامی این دروس رو بخونید، پس لطفاً سعی نکنید که تنها کاری که باید در دانشگاه انجام بدید رو هم بپیچونید!</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Fri, 27 Oct 2017 17:12:41 +0330</pubDate>
            </item>
                    <item>
                <title>کارآموزی در خارج - قسمت ۲: جستجو و پذیرش</title>
                <link>https://virgool.io/@m30m/%DA%A9%D8%A7%D8%B1%D8%A2%D9%85%D9%88%D8%B2%DB%8C-%D8%AF%D8%B1-%D8%AE%D8%A7%D8%B1%D8%AC-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D9%88-%D9%BE%D8%B0%DB%8C%D8%B1%D8%B4-ciied407ujwd</link>
                <description>کارآموزی در خارج از ایران به تازگی بین دانشجوها بسیار رایج شده. توی یک سری پست می‌خوام در مورد تجاربی که در این مورد داشتم توضیح بدم.اگر تصمیم گرفتید که می‌خواید کارآموزی در خارج رو تجربه کنید، در اولین مرحله باید دنبال موقعیت‌های مناسب باشید و براشون اپلای کنید. من سعی کردم اکثر مواردی رو که می‌شناختم، اینجا بنویسم.فرصت‌های آکادمیک۱- دانشگاه‌های آسیا: دانشگاه‌های هنگ‌کنگ، سنگاپور و چین، مثل CUHK و NUS، روابط بسیار حسنه‌ای با ایران دارند و خیلی مشتاقند که دانشجوی ایرانی بگیرند. هر ساله حداقل ۱۰-۱۵ نفر از دانشجوهای لیسانس شریف هم می‌رن. خوبیش اینه که به هیچ عنوان حس غربت نخواهید کرد و کلی ایرانی هستش. ۲- دانشگاه‌های سوییس: سوییس دو تا دانشگاه خیلی خوب داره به نام‌های EPFL و ETHZ که هر جفتشون برای کارآموزی در تابستون پرتال دارند و از طریق اون می‌تونید اقدام کنید. برای این دو دانشگاه معدل خیلی معیار مهمی هستش و اگر معدل خوبی ندارید ممکنه موفق نشید. ۳- مراکز تحقیقاتی آلمان: مکس‌پلانک و چندین مرکز تحقیقاتی دیگر در آلمان هستند که بعضی از دوستان تونستند ازشون کارآموزی بگیرند. ۴- جستجوی مکاشفانه: ۳ مورد قبل، موردهای نسبتاً روتینی بودند و کار عجیب غریبی لازم نبود انجام بدید. از اینجا به بعد دیگه خودتون باید شروع کنید و تو صفحات شخصی اساتید، دنبال استادی بگردید که به موضوع کاریش علاقه‌مندید و باهاشون مکاتبه کنید. من خودم تمام روش‌های بالا رو امتحان کردم و جواب نگرفتم. در نهایت تو این پرتال از یه پروژه‌ای خوشم اومد و برای اون اپلای کردم. نکاتی که خوبه در نوشتن ایمیل یادتون باشه:مطمئن شید که تو صفحه شخصی استاد جایی ذکر نشده که برای کارآموزی میل نزنید!یه پاراگراف از خفونت‌ها و ویژگی‌های برجسته‌ای که در این زمینه دارید بگید.اگر واقعاً به کار اون استاد علاقه‌مندید و پایه‌اید، یه پاراگراف از کارهای اون استاد بگید. این که از چه چیزهاییش خوشتون اومده و چیا براتون جذاب بوده.فرصت‌های کاریبرای کارآموزی در شرکت‌های خارجی، پروسه خیلی راحت‌تر هستش و لازم نیست با کسی مکاتبه بکنید. اکثرشون یه فرم دارند که باید پر کنید و بعدش منتظر بشینید. من خودم تا حالا موفق نشدم کارآموزی کاری بگیرم، بنابراین می‌تونید خیلی به نصایحم گوش نکنید. سعی کنید که رزومه‌تون رو تو حداکثر دو صفحه جا بکنید. زود اپلای بکنید، اینجوری نیست که آخر ددلاین بررسی کنند و هر چقدر زودتر اپلای کنید احتمال این که به خاطر پر شدن ظرفیت به مشکل بخورید کمتر می‌شه. برای شرکت‌هایی مثل Google اگر بتونید یه Referrer جور کنید که معرفی بکنه شما رو، خیلی تاثیر مثبت داره. به طور کلّی هر شرکت بزرگی چنین فرصتی رو داره و بسته به علاقه‌تون می‌تونید اپلای بکنید. یه قانون نانوشته‌ای هم هستش که شرکت باید از یه مقدار بزرگ‌تر باشه که حالشو داشته باشه کارهای قانونی شما مثل ویزا و ... رو درست بکنه. با این حال یه سری به این سایت هم بزنید که توش می‌تونید یه سری استارتاپ برای کارآموزی پیدا کنید.فرایندهای اداریبعد از این که از یه جایی برای کارآموزی پذیرش گرفتید باید بسته به این که مشمول سربازی هستید یا نه یه مقداری نامه‌نگاری کنید و تو دانشگاه بچرخید تا کارتون کامل راه بیفته. از اونجایی که فرایند بسیار پیچیده بود، با رسم شکل براتون توضیحش می‌دم! دقت کنید که این فرایند برای دانشگاه شریف بوده و معلوم نیست تو دانشگاه‌های دیگه این فرایند به چه شکل باشه.۱- از استاد راهنماتون یه نامه خطاب به امور پژوهشی دانشگاه می‌گیرید با این محتوا که با کارآموزی‌تون موافقت شده. ۲- یک فرم خروج از کشور رو پر می‌کنید و به معاون آموزشی دانشکده می‌دید تا امضا بشه. دقت کنید که هدف سفر رو می‌تونید علمی بزنید تا هزینه وثیقه کمتر بشه. ۳- از جایی که پذیرش گرفتید یه نامه بگیرید که تایید کنه شما پذیرش گرفتید. ۴- نامه‌های ۱ و ۳ رو به معاونت امور پژوهشی بدید و منتظر بمونید تا یک نامه خطاب به امور نظام وظیفه بهتون بدن. ۵- نامه‌های ۲ و ۴ رو به امور نظام وظیفه ببرید و منتظر بمونید تا نامه مرحله بعد رو بهتون بدن! ۶- نامه ۵ رو به سازمان امور دانشجویان وزارت علوم، که نزدیک میدون فردوسی هستش، ببرید. اونجا یه آقا/خانوم نشسته که فقط نامه شما رو امضا می‌کنه! ۷- نامه امضا شده در مرحله قبل رو به سازمان نظام وظیفه در میدون سپاه می‌برید، مبلغ وثیقه رو واریز می‌کنید و کار شما برای خروج از کشور تموم می‌شه! ۸- اگر که سفارت کشوری که می‌خواید برید یا خود جایی که ازش پذیرش گرفتید، نامه‌ای مبتنی بر این که شما دارید تو دانشگاه تحصیل می‌کنید نیاز داره، درخواست چنین نامه‌ای رو از سایت امور بین‌الملل بدید و بعد از چند روز نامه‌تون رو از اونجا بگیرید.نتیجه گیریمهم‌ترین نکته در جستجو برای کارآموزی اینه که وقت بذارید. سعی کنید از فصل پاییز میل زدن به اساتید رو شروع کنید، رزومه‌تون رو آپدیت و تر و تمیز کنید، و توی وبسایت‌های مختلف دنبال موقعیت‌های مناسب بگردید :) این دو تا لینک هم توش نکات خوبی رو اشاره کرده که پیشنهاد می‌کنم نگاه کنید.با تشکر از مهرداد خانی، محمد مطیعی و سایر دوستانی که تجربیاتشون رو در اختیار من گذاشتند.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Fri, 22 Sep 2017 17:15:17 +0330</pubDate>
            </item>
                    <item>
                <title>کارآموزی در خارج - قسمت ۱: شروع</title>
                <link>https://virgool.io/@m30m/%DA%A9%D8%A7%D8%B1%D8%A2%D9%85%D9%88%D8%B2%DB%8C-%D8%AF%D8%B1-%D8%AE%D8%A7%D8%B1%D8%AC-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-%D8%B4%D8%B1%D9%88%D8%B9-vajgkubumzo6</link>
                <description>کارآموزی در خارج از ایران به تازگی بین دانشجوها بسیار رایج شده. توی یک سری پست می‌خوام در مورد تجاربی که در این مورد داشتم توضیح بدم.خب در اولین مرحله باید تصمیم بگیرید که آیا می‌خواهید چنین کاری رو بکنید یا خیر. توی این پست می‌خوام در مورد خوبی‌ها، بدی‌ها و انتظاراتی که باید از کارآموزیتون داشته باشید صحبت کنم.تعریف پروژهبهتره اول از سمت کسی که پروژه رو تعریف کرده به این موضوع نگاه کنیم. فرد X پروژه‌ای رو تعریف کرده، حاضره (یا حتی حاضر نیست) یک نفر رو به مدت کوتاهی استخدام کنه، بهش حقوق بده و از اون بخواد که اون کار رو انجام بده. اون کار می‌تونه تحقیق یا پیاده‌سازی باشه. بنابراین به صورت کلی شما اونجا هستید تا یه باری رو از روی دوش اون تیم وردارید و یا در حالت خیلی ایده‌آل همون اندازه‌ای که سود می‌رسونید خودتون هم سود کنید. توقع نداشته باشید که یک مربی داشته باشید که ۲۴ ساعته پیشتون باشه. خیلی وقتا اینجوری می‌شه که شما می‌رید اونجا و رها می‌شید به امون خدا. خیلی از چیزها رو خودتون باید کشف کنید و یاد بگیرید و مدت زمان کمی رو پیش مربی‌تون هستید. در مورد پروژه‌های عملی، خیلی محتمل هستش که شما مدت زمان زیادی رو به انجام «کار گل» مشغول باشید. بنابراین به صورت کلّی نباید توقع زیادی از خود پروژه‌تون داشته باشید. همواره حالت‌های خاص وجود داره؛ مثلاً زودتر از موعد پروژه‌تون رو تموم کنید و کارهای مفیدتری بکنید، اما همواره یادتون باشه که اون تعادل بین سود شما و سود طرف مقابل به هم نباید بخوره. توصیه‌نامه (ریکام)در اکثر موقعیت‌ها شما گزینه این رو دارید که از مربی یا استادتون در خواست توصیه‌نامه بکنید. بسته به این که چقدر تو مدت کارآموزیتون قوی ظاهر شدید و چقدر جایی که کارآموزی رفتید معتبر و مشهور بوده می‌تونید توصیه‌نامه خوبی بگیرید. یه روایتی هست که ریکام خیلی خوب، بهتر از ریکام عادی از استاد خیلی خوب هستش. بنابراین سعی کنید که قوی ظاهر بشید.آشنا شدن با محیطاین مورد یه مقدار بستگی داره به جایی که پذیرش می‌گیرید. اما در حالت کلی شما در محیطی قرار می‌گیرید که اگر بعداً بخواید برای کار دائم هم اونجا باشید خیلی تفاوتی نخواهد کرد؛ چه محیط کاری و چه محیط آکادمیک. در حالت ایده‌آل شما هم در جلسات تیمتون شرکت خواهید کرد، با مشکلات و جنس مسائلی که باهاشون سروکله می‌زنن آشنا خواهید شد و یه حسی پیدا می‌کنید که آیا به چنین کاری علاقه دارید یا خیر. احتمالاً با دانشجوهای ایرانی دیگه هم که اونجا درس می‌خونن آشنا بشید و بتونید از تجارب اون‌ها هم استفاده کنید.خوش گذرونیاکثر آخر هفته‌ها شما وقت دارید تا کشورتون رو بگردید، اگر در حوزه شینگن باشید که کشورهای همسایه هم هستند! بنابراین احتمالاً چند ماه مفرحی خواهید داشت.تجربه زندگی مستقل و غربتاگر در دوران دانشجویی خوابگاهی نبودید، احتمالاً این اولین تجربه زندگی کاملاً مستقلتون هستش و محک خوبی هستش که ببینید چقدر راحت می‌تونید از خانواده جدا باشید، توی کشوری زندگی کنید که دوستان زیادی ندارید و کمی فضای غربت رو تجربه کنید.سود یا ضرر مالیبسته به این که کارآموزی در دانشگاه هست یا شرکت و با فاند هست و یا بدون فاند می‌تونید سود یا ضرر مالی بکنید. تو مکاتباتتون یادتون نره که در مورد این هم بپرسید و مذاکره کنید. پیشنهاد می‌کنم کارآموزی‌های بدون فاند رو هم در نظر بگیرید، دقت کنید که این فرصت قبل از اپلای برای ادامه تحصیل خیلی براتون پیش نمیاد اما می‌تونه خیلی مفید باشه.کارآموزی در خارج تجربه بسیار جالبی هستش و به من خیلی کمک کرد تا در مورد اپلای کردن یا نکردن تصمیم بگیرم. توی پست بعدی قراره در مورد این که چه موقعیت‌هایی وجود داره برای کارآموزی بنویسم. تا قسمتی دیگر، بدرود!!</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Sun, 17 Sep 2017 18:16:19 +0430</pubDate>
            </item>
                    <item>
                <title>سری‌های زمانی و بیت‌کوین</title>
                <link>https://virgool.io/@m30m/%D8%B3%D8%B1%DB%8C%D9%87%D8%A7%DB%8C-%D8%B2%D9%85%D8%A7%D9%86%DB%8C-%D9%88-%D8%A8%DB%8C%D8%AA%DA%A9%D9%88%DB%8C%D9%86-lsw8lhpgmit9</link>
                <description>تا حالا به این فکر کردید که روزی چند ساعت توی تلگرام هستید؟ چند ساعت از روزتون رو دارید درس می‌خونید؟ میزان خوابتون توی ۳ ماه اخیر چقدر کم یا زیاد شده؟ بخش عظیمی از اطلاعات اطرافمون رو می‌شه با سری‌های زمانی مدل کرد. سری‌های زمانی تمام اطلاعاتی هستند که یک بُعد زمان هم دارند. بُعد زمان می‌تونه دقت‌های مختلفی داشته باشه، از میلی‌ثانیه گرفته تا سال و قرن. توی این پست می‌خوام در مورد این که چقدر استخراج سری‌های زمانی از اینترنت راحته صحبت کنم و چند ابزار کاربردی معرفی کنم. بیت‌کوینبیت‌کوین واحد پول الکترونیکی هستش که اخیراً خیلی سر و صدا به پا کرده و از ۳۰۰ دلار در سال ۲۰۱۰، الان تونسته به ۳۰۰۰ دلار برسه و افرادی که اون اوایل روش سرمایه‌گذاری کرده بودند الان میلیاردر شدند. من هم اخیراً یه مقداری بیتکوین خریدم و برام مهم بود که بدونم کی دارم ضرر می‌کنم، کی سود می‌کنم، چه موقعی بخرم بهتره و چه موقعی بفروشم بیشترین سود رو کردم. در ایران نیز چندین سایت هستند که می‌تونید ازشون بیتکوین بخرید، من برای این کار سایت coinex رو انتخاب کردم. این سایت مثل اکثر سایت‌های دیگه فقط قیمت لحظه‌ای خرید و فروش رو نشون می‌داد و نمی‌گفت که مثلاً نسبت به ۳ ساعت پیش بیشتر شده یا کمتر. با دیدن یک عدد نمی‌شد فهمید که آیا الان موقع خوبی برای خرید و فروش هستش یا نه، نمودارهای سایت‌های خارجی هم به دلار بود و دیگه نرخ تبدیل رو در نظر نمی‌گرفتند. بنابراین مجبور شدم دست به کار بشم و خودم نمودارشو بکشم.جمع‌آوریجمع‌آوری داده کار سختی نبود، کافی بود به کمک یک اسکریپت پایتون، هر دقیقه یک بار صفحه اول سایت رو بگیرم و اطلاعاتی که می‌خوام رو از توش دربیارم. تنها نکته‌ای که همیشه باید تو نوشتن چنین کدهایی حواستون بهش باشه اینه که شما دارید با اینترنت کار می‌کنید! به هر دلیلی اینترنتتون یا سایت موردنظرتون به مشکل بخوره و دقیقه بعدی درست بشه، اما برنامه شما نباید متوقف بشه، بنابراین مجبورید که کل کدتون رو دور یه try/except گنده بذارید یا اگر حوصله دارید دونه دونه حالات خطا رو در نظر بگیرید:import requests  
import time  
import re  
from datetime import datetime

while True:  
    try:
        txt=requests.get(&#039;https://coinex.ir&#039;).text
        bit_sell = int(re.findall(u&#039;&lt;h2&gt;قیمت فروش هر بیت کوین: (.+) ریال&lt;/h2&gt;&#039;,txt)[0].replace(&#039;,&#039;,&#039;&#039;))
        bit_buy = int(re.findall(u&#039;&lt;h2&gt;قیمت خرید هر بیت کوین: (.+) ریال&lt;/h2&gt;&#039;,txt)[0].replace(&#039;,&#039;,&#039;&#039;))
    except Exception as e:
        print(&#039;Problem %s at %s&#039; % (e, datetime.now()))
        time.sleep(60)
        continue

    # send the data
    time.sleep(60)
1234567891011121314151617ذخیره‌سازیگرافیت یک ابزار برای کارکردن با سری‌های زمانی هستش و یک پایگاه‌داده برای ذخیره‌سازی سری‌های زمانی به صورت بهینه داره. به چنین پایگاه داده‌هایی، پایگاه داده سری‌زمانی یا Time series database می‌گن. ما از این ابزار تو شرکتمون برای مانیتور کردن وضعیت سرورها و اینجور چیزها استفاده می‌کنیم و خیلی هم راحت و خوب داره کارشو می‌کنه. برای راه‌اندازیش این ایمیج داکر رو پیشنهاد می‌کنم. خوبی گرافیت در راحتی استفاده ازش هست. به تکه کد زیر توجه کنید:import graphitesend  
graphitesend.send(&#039;bitcoin.buy&#039;, bit_buy)  
12اینجا توی خط دوم داریم می‌گیم که مقدار متریک bitcoin.buy در زمان فعلی رو برابر با مقدار bit_buy قرار بده و بقیه اش رو دیگه خودش هندل می‌کنه. و اما متریک چیه دیگه؟متریکدر مجموعه اصطلاحات گرافیت به یک سری زمانی می‌گن متریک. هر متریک یک اسم داره که یک ساختار درختی مشابه ساختار فایل‌ها تو سیستم عامل داره. مثلاً من دو تا متریک bitcoin.buy و bitcoin.sell دارم و اگر بخوام جفتشون رو انتخاب کنم می‌تونم بنویسم *.bitcoin یعنی انگار زیر فولدر bitcoin دو تا فایل buy و sell وجود داره که اینجوری جفتشون رو انتخاب می‌کنم. خب حالا توی هر متریک دقیقاً چی ذخیره می‌شه؟ در واقع هر متریک تعداد زیادی جفت مرتب (زمان، مقدار) هستش که داره نشون می‌ده تو هر زمانی مقدار این متریک چقدر بوده. متریک‌ها به مرور زمان تجمیع می‌شن که حجم کمتری بگیرن و کلی کارهای مختلف می‌شه روشون انجام داد.تصویرسازیگرافانا ابزاری برای نمایش دادن سری‌های زمانی هستش که به تعداد زیادی دیتابیس مختلف می‌تونه وصل بشه. استک گرافانا+ statsd (که در موردش توضیح ندادم) + graphite یک استک خیلی قوی و بالغ برای مانیتورینگ هستش که خیلی جاها دارن ازش استفاده می‌کنن. من نیز از همین ابزار برای نمایش نمودارهام استفاده کردم. نتیجه‌گیریراحتی تعامل با داده یکی از مهم‌ترین ویژگی‌های این مجموعه ابزار هستش. گرافیت و گرافانا کار ذخیره‌سازی و نمایش رو خیلی آسون می‌کنن. این که به راحتی بتونید با دیتا سر و کله بزنید و ازش اطلاعات استخراج کنید خیلی فاکتور مهمیه و به نظرم این کار با این ابزارها شدنی هستش. ممکنه راه‌اندازی این ابزارها کمی براتون سخت باشه، در این صورت استفاده از این سایت رو برای تست بهتون پیشنهاد می‌کنم. ما تونستیم با حدود ۱۰ خط کد و راه‌اندازی گرافیت، دیتای قیمت بیت‌کوین رو در طول زمان داشته باشیم و تصمیمات عاقلانه‌تری نسبت به خرید و فروشش بگیریم. با گرافیت می‌تونید کوئری‌های خیلی پیچیده‌ای روی متریک‌ها بزنید. مثلاً دو تا سری زمانی رو تو هم ضرب کنید، سری زمانی که کمترین میانگین رو داره رو پیدا کنید و کلی کارهای هیجان‌انگیز دیگه! کاربرد اصلی این ابزارها برای مانیتورینگ سرورها و دیدن اطلاعات حیاتی مثل تعداد درخواست‌ها بر ثانیه، میزان رم خالی و ... هستش، اما ازشون می‌شه برای کارهای این مدلی هم استفاده کرد. این ابزارها قطعاً قرار نیست جواب تمام سوالاتتون از سری‌های زمانی رو بدن، ازشون توقع آچارفرانسه نداشته باشید. همچنان برای انجام کارهای پیچیده‌تر باید به ابزارهای تخصصی خودشون رجوع کنیم.پی‌نوشت: نسخه‌اول این پست حدود ۳ ماه پیش نوشته شده بود. بیت‌کوین رکورد ۴۰۰۰ دلار رو هم شکوند.پی‌نوشت ۲: گرافانا در نسخه‌های جدیدش قابلیت وصل شدن به دیتابیس MySql رو هم اضافه کرده، اگر کلی داده‌ی زمانی تو همچین دیتابیسی دارید می‌تونید خوشحال باشید!</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Mon, 11 Sep 2017 18:18:29 +0430</pubDate>
            </item>
                    <item>
                <title>کار در کنار تحصیل - قسمت ۱- دانشگاه چه چیزهایی رو به من یاد نداد</title>
                <link>https://virgool.io/rayanesh/%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%DA%A9%D9%86%D8%A7%D8%B1-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-%D8%AF%D8%A7%D9%86%D8%B4%DA%AF%D8%A7%D9%87-%DA%86%D9%87-%DA%86%DB%8C%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-%D8%B1%D9%88-%D8%A8%D9%87-%D9%85%D9%86-%DB%8C%D8%A7%D8%AF-%D9%86%D8%AF%D8%A7%D8%AF-gbhpxenqavin</link>
                <description>توی این سری از پست‌ها می‌خوام در مورد تمام تجربیاتم و نکات مثبت و منفی‌ای که در مورد کار در کنار تحصیل وجود داره صحبت کنم. من خودم حدود ۳ ساله که توی شرکت کافه‌بازار کار می‌کنم و این ۳ سال برام پر از تجربه‌های جورواجور بوده. من کار کردن رو حدود یک ماه قبل از شروع دوران دانشجویی آغاز کردم، بنابراین خیلی نمی‌تونم از دورانی که فقط تحصیل می‌کردم صحبت کنم. این پست تقریباً اولین پست غیر کامپیوتری‌ام هستش و امیدوارم که به دردتون بخوره. توی این پست در مورد تفاوت‌های بنیادین شرکت و دانشگاه صحبت می‌کنم. یه سری از بحث‌هام فقط در مورد یه سری شرکت خاص صادقه و یه سریش هم کلیه. خیلی از موضوعاتی که می‌گم موضوعاتی نیستند که تو چند ماه اول کار متوجه‌اش بشید، ولی به مرور زمان درک می‌کنید و خیلی لذت‌بخش می‌شه براتون.تعاملات انسانیکار کردن تو شرکت برای من باعث شد که از نظر انسانی خیلی رشد کنم. من آدم خجالتی و درون‌گرایی بودم اما الان خیلی فرق کردم.یادمه از اولین نکاتی که بعد از ورودم به شرکت یاد گرفتم، فرق «سلام» و «سلام صبح بخیر!» بود و این که دومی خیلی حس بهتری داره!فرق اصلی شرکت با دانشگاه اینه که کار بدون تعامل جلو نمی‌ره، و مجبور می‌شی که کار گروهی رو یاد بگیری. باید با بقیه اعضای تیم صحبت کنی، ازشون کمک بخوای، بهشون کمک کنی، اگر یه چیزی رو اعصابته بگی، اگر خودت اخلاق بدی داری اصلاح کنی و الخ. این که اعضای تیم از کارشون راضی باشن یه ارزشه اما این که دانشجو از درسی که برداشته راضی باشه عموماً ارزش نیست. بذارید چند تا مثال بزنم که واضح‌تر بشه: توی اکثر تیم‌ها توی شرکت، هر ۲-۳ هفته یکبار، یه سری جلسه retrospective برگزار می‌شه که توش بررسی می‌کنیم چیا تو مدتی که گذشت خوب نبود، با چیا حال کردیم و چیا رو عوض کنیم بهتر می‌شه اوضاع. توی دانشگاه یه فرم ارزشیابی اساتید داریم که سالی دوبار پر می‌شه و تاثیرش خیلی نزدیک به صفر هست. این لختی‌ای که توی پروسه بهبود وجود داره، این که کمتر دانشجویی مستقیماً پیشنهاداتشو به استاد می‌گه، همه و همه نشانه‌های بدی هستش که در دانشگاه وجود داره. در واقع این مدل بهبود مستمر چیزی بود که شرکت بهم یادش داد و نه دانشگاه.پروژه‌های گروهی تو دانشگاه اکثراً این مدلی انجام می‌شن که کارها به چند قسمت شکسته می‌شن و هر کس قسمت خودشو انجام می‌ده، نمره‌دهی نهاییش هم بسته به این که هر فرد چکاری انجام داده هستش. اما تو شرکت اینجوری نیست، اگر کد هر کسی مشکل داشته باشه، کل محصول دچار مشکل می‌شه. این احساس مسئولیت و همکاری رو شرکت به من یاد داد و نه دانشگاه.فیدبک. شرکت به معنای واقعی کلمه به من فیدبک دادن رو یاد داد. یعنی برای بچه‌ها ورکشاپ گذاشت و گفتش که آقا، اگر تو تیمتون با یه فردی مشکل دارید چطوری بهش بگید! این چیزی نبود که تو دانشگاه بتونم یادش بگیرم، شاید خیلی از دعواها و قهرها و کدورت‌ها هم می‌شد به وجود نیان اگر اکثر دانشجوها می‌تونستند درست به همدیگه فیدبک بدن.اعتمادتوی دانشگاه فرض اولیه اینه که اعتماد نکنید مگر این که خلافش ثابت بشه. TA ها به دانشجو اعتماد ندارند و باید چک کنند که تقلب می‌کنن یا نه، دانشجوها به TA ها اعتماد ندارند و فکر می‌کنند که الکی دارن تمرین‌ها رو سخت می‌دن، استاد به TA ها اعتماد نداره و پایان‌ترم رو خودش تصحیح می‌کنه، دانشجو به استاد اعتماد نداره و فکر می‌کنه مریضه که نمودار نمی‌زنه، TA ها به استاد اعتماد ندارند و اکثراً به دنبال recommendation letter هستند. از همه‌ی این‌ها بدتر... دانشجو هم به دانشجو اعتماد نداره! یکی می‌ره زیرآب یکی دیگه رو می‌زنه که تقلب کرده، یکی داره به اون خرخونایی فحش می‌ده که باعث شدند استاد نمودار نزنه و ... این حس اعتماد داشتن خیلی حس خوبیه که من تو شرکت تونستم تجربه‌اش کنم و نه دانشگاه. این که اگر مدیر محصول فلان تصمیم رو گرفته قطعاً دلیل داشته، دلیلش منطقی بوده و اگر ازش بخوام که دلیلش رو بگه می‌تونه تا حد خوبی من رو قانع کنه. این که اگر فلان عضو تیم نتونست یه تسکی رو برسونه، لابد براش مشکلی پیش اومده و تنبلی نکرده قطعاً. این که اگر یه کسی کارش عیب داره لابد یه مشکلی براش پیش اومده و ذاتاً مشکل نداره! این حس اعتماد باعث می‌شه که دغدغه‌های آدم کم بشه و تمرکز کنه روی موضوعات مهم. وقتی که وارد شرکت شدم، ۳۰-۴۰ نفر بودیم، و الان حدود ۲۰۰ نفر شدیم. حفظ کردن یک فرهنگ خوب و بزرگ شدن به شدت کار دشواری هستش و من خودم سختی‌هاش رو چشیدم. این که این فرهنگ تا حد خوبی حفظ شده باعث می‌شه که افراد یه مدل فکری منطقی نسبت به شرکت داشته باشند. در واقع می‌تونی به سازوکارهای شرکت اعتماد کنی و بدونی که منطقی هستند. این که یه نفر ارتقاء پیدا می‌کنه یا باید باهاش خدافظی کنیم وابستگی مستقیم داره به نحوه عملکردش و نه چیز دیگری. تو دانشگاه واقعاً اینطوری نیست، از استادایی بگیر که جنسیت دانشجو براشون مهمه، تا استادایی که نمره‌شون بستگی داره به آب و هوا و تاس و پله و مشکلات زناشویی و شقیقه و ...تمدید و تقلب و نموداراین ۳ تا، موجودات خیلی عجیب غریبی هستند که شاید فقط در دوران تحصیل وجود داره و دانشجو رو از زندگی واقعی دور می‌کنه. این که همیشه امید داریم به تمدید شدن ددلاین. توی شرکت اگر به ددلاین نرسید، اگر کدتون به موقع آماده نشه، نمره ازتون کم نمی‌شه، معدلتون خراب نمی‌شه، فقط کار عقب می‌افته و اعضای تیم ناراحت هستند از این که فلان تسک نرسیده. این که چرا باید براتون مهم باشه که کار عقب افتاده، چرا سایر افراد ناراحت می‌شن از این قضیه و ... همه‌اش به خاطر اون فرهنگ متفاوت شرکت هستش. این که تو شرکت تمدید وجود نداره و البته چندین دلیل دیگه باعث شد که من بهتر بتونم زمان رو مدیریت کنم. تقلب و نمودار هم در فضای بیرون دانشگاه معادلشون می‌شه دزدی و گدایی و کارهای جالبی نیستند!انگیزه برای درس‌های دانشگاهتو درسای دانشگاه کمتر می‌گن این چیزایی که دارید یاد می‌گیرید به چه درد می‌خوره. کار کردن توی شرکت و یه سری از چالش‌هاش باعث شد که انگیزه‌ی بیشتری برای یاد گرفتن دروس دانشگاه داشته باشم. این که می‌بینی استاد داره همون چیزهایی رو درس می‌ده که هفته‌ی پیش تو شرکت باهاشون به مشکل خوردی خیلی حس خوبیه. مثلاً این thread ای که توی درس OS گفت همون چیزیه که هفته پیش باعث شد سرور بترکه. یا مثلاً این تکنیک‌هایی که در مورد normalization گفتن تو درس DB خیلی به درد فلان جدول‌های پروژه می‌خوره! یه جورایی علم و عملتون قوی جوش می‌خوره و این که علمی‌تر، عمیق‌تر و پایه‌ای‌تر با قضایا برخورد می‌کنید. البته همه این دیدگاه من رو ندارند و حس می‌کنند که اگر خودشون بخونن بهتره، در هر صورت این مهمه که حمّال نشید. همونطور که تو دبستان بهمون می‌گفتن درستونو بخونید تا حمّال نشید، تو دانشگاه هم می‌شه گفت. صرفاً مدل حمّالی‌اش فرق داره و اگر درس‌های دانشگاه رو بلد نباشید می‌تونید تا ابد یه برنامه‌نویس دون‌پایه باقی بمونید.یه سری از موضوعاتی که گفتم رو خودم تو این یک سال اخیر به دست آوردم و قبلش خیلی شهود نداشتم. کلاً وقتی آدم تصویر بزرگ شرکت رو ببینه خیلی الگوها و نکات جالبی رو می‌تونه درک کنه و از فکر کردن بهشون لذت ببره.شرکت و پروژه‌های شرکتی موجودات پیچیده‌تری هستند تا درس‌های دانشگاه. توی دانشگاه (به خصوص شریف) جو رقابتی خیلی بیشتره. اما تو شرکت خیلی اینجوری نیست، باید کار تیمی انجام بشه و با همکاری و کار گروهی پروژه پیشرفت بکنه. تو دانشگاه کدتون زیر بار ۱۰۰ میلیون درخواست در روز نمی‌ره و هیچوقت ساعت ۱۲ نصف شب تمرینتون خراب نمی‌شه اما این پیچیدگی‌ها تو توسعه‌ی نرم‌افزار تو شرکت وجود داره و همه‌ی این پیچیدگی‌ها باعث می‌شه که جذابیتش نسبت به دانشگاه به مراتب بیشتر باشه.</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Thu, 22 Jun 2017 18:21:08 +0430</pubDate>
            </item>
                    <item>
                <title>تحلیلی بر آمار فالوئرهای پیج‌های ایرانی در اینستاگرام - قسمت ۲</title>
                <link>https://virgool.io/@m30m/%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C-%D8%A8%D8%B1-%D8%A2%D9%85%D8%A7%D8%B1-%D9%81%D8%A7%D9%84%D9%88%D8%A6%D8%B1%D9%87%D8%A7%DB%8C-%D9%BE%DB%8C%D8%AC%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%AF%D8%B1-%D8%A7%DB%8C%D9%86%D8%B3%D8%AA%D8%A7%DA%AF%D8%B1%D8%A7%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%DB%B2-aqyxj2qhhypx</link>
                <description>پست قبلیم، با استقبال چشم‌گیری روبرو شد و من خیلی انگیزه گرفتم که سنگین وبلاگ رو ادامه بدم! اما این وبلاگ فقط در مورد تحلیل دیتا و اینها نیستش، کلی چیزهای مختلف و جورواجور تو ذهنم هستش که فقط بعضی‌هاش به دیتا ربط داره. از تجربیات انسانی و فرهنگ شرکت تا درس‌های دانشگاه و سفرنامه! و اما دوباره اینستا... به پیشنهاد یکی از کامنت‌های پست قبلی... تصمیم گرفتم که یک decision tree از روی این فیچرها بسازم. حس کردم که این کار نسبتاً سنگین‌تری از کارهای قبلیم هستش و نیاز به کامپیوتر قوی‌تری دارم. رم VPS ام ۴ گیگ بود و سی‌پی‌یوی درست حسابی‌ام هم نداشت. بنابراین روی اوردم به اسپارک. اسپارک یه framework برای تحلیل داده در مقیاس‌های خیلی بزرگتر هستش و یه سری امکانات خیلی خوبی داره. ما تو شرکت خیلی زیاد از اسپارک استفاده می‌کنیم و خیلی راه دستم بود استفاده ازش. موقعی که تو شرکت داشتیم یاد می‌گرفتیمش، یه کورس edX رو داشتم می‌دیدم و یادم بود که شرکت databricks یه سری کلاستر اسپارک کوچولو برای تست به ملت می‌دادش که بتونن باهاش اسپارک کد بزنن و یاد بگیرن. من هم از اون کلاسترهای تستیش برای تحلیل داده‌ها و ساختن یک decision tree استفاده کردم. decision tree یک مدل یادگیری ماشینی هستش که خروجیش یک درخت تصمیم گیری هستش. شاید یه چیزی شبیه به اکیناتور. می‌تونید یه غول جادو فرضش کنید که هی از شما می‌پرسه، آیا فلان صفحه رو فالو می‌کنید، شما می‌گید بله یا خیر، بعد دوباره یه صفحه دیگه رو ازتون می‌پرسه و بعد از چندین سوال و جواب پیش‌بینی می‌کنه که شما یک صفحه‌ی خاص (‌که قبلاً ازتون نپرسیده بوده!) رو فالو می‌کنید یا خیر. اسپارک هم خودش مقوله‌ی سنگینی هستش که توضیحش در یک پست وبلاگ نمی‌گنجه. به طور خلاصه یک سری مفاهیم و ساختمان‌داده‌های خوبی داره و مجبورتون می‌کنه یه جوری کد بزنید که بشه توزیعش کرد روی چند تا کامپیوتر و در نتیجه روی داده‌های خیلی حجیم هم جواب می‌ده. آماده‌سازی دیتا و اجرااول باید یه خورده داده رو صاف و صوف می‌کردم. برای این کار از لیست ID هایی که داشتم یه جدول ساختم که هر ستونش یک پیج اینستا و هر ردیفش یک کاربر اینستا رو نشون می‌داد و هر سلول از جدول نشون می‌داد که آیا کاربر X پیج Y رو فالو می‌کنه یا نه. به زبان یادگیری ماشین ستون‌ها ویژگی‌ها، یا featureهام بودند. feature ها مقادیری هستند که به ازای اون باید tag رو پیش‌بینی بکنیم. tag هم جواب مسئله هستش! مثلاً این که یک کاربر پیج الناز شاکردوست رو فالو می‌کنه یا خیر رو می‌تونیم tag در نظر بگیریم و این که دیگه چه پیج‌هایی رو فالو می‌کنه رو feature در نظر بگیریم.بعد از این که یک الگوریتم ساخت decision tree به نام RandomForest رو روی دیتا اجرا کردم، تونستم به دقت حدود ۸۰ درصد برسم و وقتی میزان اهمیت هر یک از feature ها رو بررسی کردم چیزی مشابه همون heatmap ای که توی پست قبل بود دراومد و اون سلول‌هایی که خیلی کمرنگ یا پررنگ بودند اهمیت زیادی داشتند. منطقی بودش که دقت الگوریتم از این هم بیشتر نشه، چون افراد زیادی وجود دارند که تمامی featureهاشون با یکدیگر یکسان هستش اما tag شون فرق داره و از هیچ الگوریتمی نباید توقع بیش از حد داشت! در واقع دو نفر وجود دارند که همه‌ی پیج‌هایی که فالو می‌کنند مثل هم هستش ولی توی یه پیج خاص فرق دارند. نتایجتنها کار به دردبخوری که این دفعه کردم این بود که تعداد کل کاربران و تعداد کاربران رو بر اساس تعداد پیج‌هایی که فالو می‌کردند در اوردم. تعداد کل کاربران بر اساس این ۱۹ تا صفحه ۱۷,۹۲۸,۱۶۸ بودش. این عدد خیلی به تعداد نصب اینستاگرام توی کافه‌بازار نزدیک بود که نشونه خوبیه! نمودار زیر هم تعداد کاربران بر اساس تعداد پیج‌هایی که فالو می‌کردند بودش. دقت کنید محور عمودی که تعداد رو نشون می‌ده، لگاریتمی هستش.۹ میلیون کاربر بودند که فقط یک پیج از این پیج‌ها رو فالو می‌کردند، پیج‌ها گوناگونی نسبتاً زیادی داشتند و همه چیز رو هم در برنداشتند، اما عدد ۹ میلیون برام خیلی وسوسه برانگیز بود تا این مسیر رو ادامه بدم و برم سراغ crawl کردن خود کاربران اینستا. تخمینی که دارم اینه که حدود یک هفته طول می‌کشه تا دیتاش کاملاً استخراج بشه و بعدش می‌شه روش تحلیل انجام داد. منتظر قسمت سوم باشید.کدها و دیتاستلینک نوت‌بوک اسپارک که توش می‌تونید کدها رو ببینیدفایل‌های زیر توی هر کدوم ID افرادی هستند که صفحه اون فرد رو follow می‌کردند در اینستا. امیدوارم تو قسمت بعدی یه دیتاست کامل و بهتری رو بتونم ارائه بکنم.amirtataloi aroose_ayandeh babakjahanbakhshoriginal bbcpersian elnazshakerdoost hame_chiz_baraye hassan_reyvandi hrouhani khamenei_ir mahnaz_afshar manotoofficial mehrab_ghasemkhani palange_irooni parvizparastouei radiojavan raisi_org soroush.jamshidy varzesh3 zhuaan</description>
                <category>محمد امین خشخاشی‌مقدم</category>
                <author>محمد امین خشخاشی‌مقدم</author>
                <pubDate>Sat, 17 Jun 2017 18:22:42 +0430</pubDate>
            </item>
            </channel>
</rss>