<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سینا بختیاری</title>
        <link>https://virgool.io/feed/@sinabakh</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 22:28:52</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/560929/avatar/HhJBQs.jpeg?height=120&amp;width=120</url>
            <title>سینا بختیاری</title>
            <link>https://virgool.io/@sinabakh</link>
        </image>

                    <item>
                <title>هم راستا کردن افراد سازمان با خود</title>
                <link>https://virgool.io/7Learn/%D9%87%D9%85-%D8%B1%D8%A7%D8%B3%D8%AA%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D9%81%D8%B1%D8%A7%D8%AF-%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86-%D8%A8%D8%A7-%D8%AE%D9%88%D8%AF-mfmdwjuwdibr</link>
                <description>مطمئنا شما هم تا کنون در شرایطی قرار گرفته‌اید که در زندگی حرفه‌ای و یا شخصیتان نیاز به هم‌راستا کردن افراد مختلف با نظرتان را داشته باشید. افرادی که الزاما دیدگاه شبیه به شما را ندارند ولی شما به هر‌حال نیاز به تایید آن‌ها دارید.برای من در محیط کاری بار‌ها پیش آمده که وظیفه بررسی و تصمیم سازی در مورد یک موضوع فنی بر عهده‌ی من گذاشته شده است. برای اجرای تصمیمات و ایده‌ها نیاز به تایید و گاها هم‌راستا کردن افراد مختلفی در سازمان بوده است. برای مثال در برهه ای از زمان نیاز به جذب نیروی فنی داشتم که می‌بایستی واحد مالی و مدیرعامل مجموعه تایید می‌کرد؛ یا از منظر فنی نیاز به تغییراتی در کمپین های مارکتینگی داشتیم که منجر به تغییر استراتژی بازاریابی می‌شد، حال در هر یک از حالات مجبور بودم تا رضایت افرادی را در سازمان جلب کنم!اوایل، من با همه‌ی افراد مثل اعضای فنی تیمم صحبت می‌کردم و انتظار داشتم که متوجه مطالب من و اهمیت اجرای این موارد باشند. نیاز به توضیح نیست که این اتفاق نمی‌افتاد و اکثر مواقع با درب بسته مواجه می‌شدم. پس از مدتی متوجه شدم که یک حلقه اتصال میان من و آن اشخاص مورد نیاز وجود دارد و آن هم ایجاد زبان و دغدغه مشترک بین ما بود.به عنوان مثال تیم بازاریابی برایشان اهمیت ندارد که مثلا معماری فنی سیستم های من به چه صورت باشد یا من چگونه آن برنامه را توسعه بدهم؛ تنها برایشان این مسئله مهم است که سایت و اپلیکیشن زیر بار فشار ترافیک بالا کاربران در کمپین های تبلیغاتی تاب بیاورد یا همچنین برای منابع انسانی هزینه های جذب نیرو و مواردی از این قبیل مهم است نه مثلا افزایش نرخ کلیک بر روی یک دکمه در سایت؛ بنابرین اینجاست که باید به زبان مشترک روی می آوردم و با آنان با زبان خودشان صحبت می‌کردم تا به نتیجه درست می‌رسیدم.یکی از مهم ترین اصول در هر مذاکره‌ای از نگاه من این است که فراموش نکنیم که همه همانطوری که ما به موضوعات نگاه می‌کنیم نگاه نمی‌کنند و نیاز است که بتوانیم دغدغه‌های آن‌ها را هم رفع کنیم.در ویدیوی زیر که با همکاری مجموعه سون لرن تهیه شده است بطور مفصل از تجربیاتم در این مورد صحبت کردم. خوشحال می‌شوم که شما هم ببینید و نظراتتون را با من به اشتراک بگذارید. https://www.aparat.com/v/9Jj5b </description>
                <category>سینا بختیاری</category>
                <author>سینا بختیاری</author>
                <pubDate>Tue, 21 Nov 2023 12:17:55 +0330</pubDate>
            </item>
                    <item>
                <title>سد - داستان کوتاه</title>
                <link>https://virgool.io/dastanke/%D8%B3%D8%AF-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%DA%A9%D9%88%D8%AA%D8%A7%D9%87-sdtl6icgqueu</link>
                <description>صدای بوق نیسان آبی هاشم رو که داشت پوک آخر رو به سیگارش میزد از جا پروند. سهیل کسی بود که با وانتش خیلی از سکنه روستا رو به شهر و روستا‌های اطراف برده بود. &quot;عمو هاشم بدو سوار وانت شو که تو این سرما الاناست که بچایی&quot;. هاشم ۵۵ ساله انگشتای پینه بستش که به سختی خم میشدن رو مشت کرد و تلاش کرد که حواسش رو جمع صحبتای سهیل بکنه. یاد ماه‌نسا افتاد که فریاد میزد &quot;چرا من و بچه‌ی تو شکمم رو کشتی؟&quot;. سیگارش رو پرت کرد و برای آخرین بار از بالای تپه نگاهی به روستای متروکه و خونش انداخت و زیرلب غرولند کنان سوار وانت شد.-‌ سهیل: خوش اومدی عمو هاشم. هم محلیا خیلی نگرانت شدن و حتم دارم وقتی ببینت گل از گلشون میشکفه. راستی بذار بخاری رو زیاد کنم که حسابی یخ زدی.-‌ هاشم: ممنون سهیل. پوستم انقدر کلفت شده که دیگه سرما و گرما رو حس نمیکنم. مردم روستا همیشه بهم لطف داشتن و منم همیشه دعا گوشون میمونم.-‌ سهیل:‌ اختیار داری عمو. شما همیشه بهترین چوپان این منطقه بودید. گله‌ت امن ترین گله بوده توی همه‌ی این چهل سال. مردم باس از خداشونم باشه که تو صحیح و سالمی.وانت با سرعت درحال حرکت توی جاده کوهستانی بود و بعد از هر پیچ هاشم یاد خاطره‌هایی که روی هر کدوم از تپه‌ها و دشت‌های این منطقه داشت میوفتاد. یاد آقاش که وقتی بچه بود هر صبح با خودش به چرا میبرد و چم و خم چوپانی رو یادش میداد. یاد ظهر‌های گرمی که زیر سایه درخت دراز می‌کشید و به ابر ها نگاه می‌کرد. هیچ دوستی نداشت و تنها تفریحش این بود که به کمک تخیلش با ابر‌ها شکل درست بکنه. روزای نو جوونیش هر روز دعا میکرد که بابای ماه‌نسا با وصلتشون موافقت کنه.-‌ سهیل: عمو هاشم حواست با منه؟-‌ هاشم: چیزی گفتی؟-‌ سهیل: گفتم که این نامردا با ساختن این سد و آب گیریش تموم خاطره‌های مارو می‌برن زیر آب. باورت میشه کل این منطقه و ده و خونه هاش تا چند روز دیگه زیر آبن؟ من که هیچ جوره تو کتم نمیره.- هاشم: چی بگم والا. ما که گردنمون از مو باریک‌تره. یروز یسری کت‌شلواری اومدن و با کدخدا صحبت کردن و گفتن هرچی زمین دارید رو پولش رو میدیم بهتون و میخریم چون قراره پایین دست رودخونه سد بزنن.-‌ سهیل: توکل بر خدا. چاره ای نیست عمو جان. میبرمت شهر پیش کدخدا. اون یه راهی پیش پات میذاره.هاشم چیزی نگفت. شیشه رو داد پایین و یه نخ سیگار دیگه روشن کرد.-‌ سهیل: میگم که شما چرا انقدر تو ده موندید؟ همه یک ماه پیش رفتن از ده و فقط شما موندی. گله ای هم نبود دیگه که بخوای مراقبش باشی. راستیتش از من نشنیده بگیر ولی مردم میگفتن هاشم عقلش رو از دست داده.-‌ هاشم: بیرون روستا زندگی برام چیز جدیدی نداره. تموم عمرم توی همین کوه‌ها و دشت‌ها گذشت. برم جای دیگه که چی کنم؟-‌ سهیل: پس واسه همینه هیچی با خودت نیاوردی؟ یادمه وسیله کم نداشتی. ولی حتی یه دست لباس اضافه هم با خودت نیاوردی. یه بقچه هم حتی همراهت نیست.-‌ هاشم: چیز خاصی برای آوردن نداشتم.هاشم با گفتن این جمله دود سیگار رو از ریه‌هاش بیرون داد. دست‌هاش هنوز مثل چند ساعت پیش می‌لرزید. سعی کرد با صحبت با سهیل حواس خودش رو پرت کنه.-‌ هاشم: تو خیلی جوون بودی که از ده رفتی. چند سالت بود؟ ۱۶؟همین موقع وانت بعد از آخرین پیچ وارد یک مسیر صاف و طولانی وسط یک دشت شد که دو طرفش تا چشم کار میکرد مزرعه و علف‌زار بود. مزرعه‌ها ماه‌ها بود که رها شده بودن و سطحشون پر از چمن و گیاه‌های خودرو بود.-‌ سهیل: آره خیلی جوون بودم که رفتم شهر ولی یه چیزایی یادم میاد. اون زمین رو میبینی که توش یه مترسکه که کت نارنجی تنشه؟ اون زمین واسه آقام بود. از بچگی از این مترسکه میترسیدم البته اون موقع‌ها سرپا‌تر بود. هرچقدر آقام شکسته‌تر و پیر‌تر شد این مترسکم انگار جونش به جون اون بسته هی کج و معوج تر شد. اون تپه هم که معروفه به تپه گنج. میگن زیرش یه قبرستون قدیمیه که شاه این منطقه اونجا دفنه. خیلیا اونجا چاه میزدن شبونه دنبال زیرخاکی. درسته عمو؟ شما چیزی شنیدی؟-‌ هاشم: والا ماهم جوونیمون بهش باور داشتیم. من خیلی با گله میومدم سمت تپه گنج. هر روز یه چاه جدید میدیدم توی این منطقه. یبار یکی از بز‌ها هم افتاد توش و با مصیبت درش آوردیم. ولی نشنیدم کسی چیزی پیدا بکنه ازش. اینم مثل داستانای دیگه‌ی ده دروغ بود.-‌ سهیل:‌ گویا واسه سد که مسیر رودخونه رو عوض کردن آب افتاده اینجا و یه تیکه از تپه رو شسته برده.-‌ هاشم: ها! درسته! اون روز صبح من اولین کسی بودم که رسیدم اینجا آب خیلی چیزا رو شسته بود برده بود و پر از سنگ و آشغال شده بود پشت تپه. اما جز سنگ و کلوخ چیزی ندیدم.هاشم اما ادامه اتفاقات اون روز رو به زبون نیاورد. یک سال پیش بود که هاشم صبح زود گله رو برای چرا به کنار تپه آورد. تو تغییر مسیر رودخونه اشتباهی شده بود و آب افتاده بود پشت تپه گنج. بعد چند ساعت که مهندسا مسیر رو تغییر دادن آب فروکش کرد. آب خاک تپه رو شسته و با خودش برده بود و شکل تپه تغییر کرده بود. هاشم گله رو همون جا رها کرد و خودش زیر درختی نشست که سال های زیادی زیرش استراحت کرده بود. چشماش دیگه مثل قدیم تیز نبود و حوصلش هم حال و روز خوبی نداشت. سال ها بود که دیگه به ابرها نگاه نمیکرد. بعد از چپ کردن ماشین و رفتن ماه‌نسا باهاشون قهر بود. به یاد روزی افتاد که فهمید ماه‌نسا بار داره و هاشم از این به بعد قراره بابا بشه. به یاد صحبتا و خنده‌های دوتاییشون بود که پلکش نم‌نم گرم شد و شروع به چرت زدن کرد. چند دقیقه نگذشته بود که با صدای گریه‌ی نوزاد از خواب پرید. صدا انگار از پشت تپه میومد. هاشم یقین داشت که خیالاتی شده ولی دلش طاقت نیاورد و به سمت تپه رفت. وقتی به پشت تپه رسید جز سنگ و گل چیزی ندید. تپه شکل عجیبی به خودش گرفته بود. مثل مادری که بغل خودش رو باز کرده تا بچه ای که مدت ها ازش دور بوده رو در آغوش بگیره. هوا داشت تاریک میشد و هاشم باید گله رو بر می‌گردوند. پس به سمت گله چرخ زد و شروع به قدم زدن کرد که ناگهان زیر پاش چیزی حس کرد. پایین رو که نگاه کرد یک بسته بندی کاغذی دید. اون رو برداشت تا دقیق‌تر نگاه کنه. کاغذ بنظر خیلی قدیمی می‌رسید و شکل های عجیب و غریبی روش نقاشی شده بود. هاشم در حال نگاه به نوشته‌های روی بسته بود که واق واق سگ گله حواسش رو به گله پرت کرد.یاد همون شب افتاد که از ترس این که میراث بیاد و خونه رو بگرده که یوقت از تپه چیزی پیدا نکرده باشه بسته بندی رو باز کرده بود و چیزی که توش دیده بود رو هرگز باور نمیکرد. داخل بسته بندی کاغذی یک بندناف نوزاد بود! بند ناف رو توی حباب های لوستر داخل اتاق مخفی کرده بود. سال ها بعد همچنان هاشم به جواب این سوال که چرا بندناف رو دور انداخت نرسید. انگار بندناف مثل بچه‌ای بود که هرگز ندید و باید ازش مراقبت میکرد.سهیل: آقا هاشم امروز کلا به حرف ما گوش نمیدیا. معلوم نیست حواست کجاهاست.هاشم: شرمنده سهیل. خیالاتی شدم. فکر کنم پاک عقلم رو دارم از دست میدم.سهیل: آقا هاشم حالا این که چرا موندی ده با اینکه همه رفته بودن به کنار. چیشد که یهو عدل امروز صبح ساعت هشت به من زنگ زدی و گفتی سریعتر بیام دنبالت؟هاشم: گفتم بالاخره که چی! اینجا چند روز دیگه آب میوفته و نمیتونم تا ابد اینجا بمونم. گفتم زنگ بزنم بهت که زودتر بیای دنبالم و منو ببری پیش کدخدا تو شهر بلکم بتونه کاری برام جور کنه که این چند‌سالی هم که زنده هستم یطوری بگذره. یهو صبح دلم خواست بزنم بیرون از این روستا و بخاطر همین بهت زنگ زدم.هاشم دستش رو داخل جیب کتش کرد و با انگشتاش دنبال پاکت سیگار نیمه خالی می‌گشت که ناگهان تیزی چاقویی که تو جیبش بود انگشت اشاره‌ش رو برید. یاد شب قبل افتاد که خسته و بعد از یک پیاده روی بدون هدف به خونه برگشته بود. یک ماهی از کوچ آخرین ساکنین روستا می‌گذشت. دیگه گله ای برای چرا نمونده بود اما هاشم مثل همیشه هر روز صبح به دشت میرفت و زیر درختا استراحت میکرد و تا غروب به خونه برنمی‌گشت. وقتی وارد خونه شد به سمت سماور رفت تا با خوردن چایی خستگی ساعت‌ها پیاده روی بی‌هدف رو از تنش به‌در کنه. وقتی قوری رو برداشت ناگهان قوری شروع به تپیدن کرد. در عرض چند ثانیه قوری تبدیل به یک زائده گوشتی شده بود که تو دستای هاشم در حال تپیدن بود. هاشم چیزی رو که میدید باور نمیکرد. قوری رو به زمین انداخت و به سمت در خروج فرار کرد. تمام دیوار ها و تمام اجزای خونه در حال تپیدن بودند انگار که خونه دارای روح و زندگی شده بود. دیوار ها پوست و استخون خونه و وسایل هم اجزای داخلی این کالبد بودند. هاشم در حال کلنجار با دستیگره در بود که صدای آشنایی از سمت اتاق خواب شنید. اتفاقات بعدش رو هیچ وقت به خوبی به یاد نیاورد و فقط صحنه‌هایی کوتاه از اتفاقات در ذهنش ثبت شد. تصویر کابوس واری از جایی که قبلا لوستر قدیمی بود و الان نیم‌تنه‌ی ماه‌نسا از سقف آویزون بود. یاد چهره ی اون نیم‌تنه که فریاد میزد &quot;چرا من و بچه ی توی شکمم رو کشتی؟ اون بهمون میگه تو مارو کشتی هاشم. همه‌ی مرده‌های ده اینجان و هیچ کس به آرامش نرسیده. بابا و مامان تو و منم اینجان. همه اینجان هاشم!&quot; یاد التماس های ماه‌نسا برای نجاتشون. &quot;هاشم فقط تو میتونی مارو نجات بدی. اون میگه که باید تا قبل از ظهر فردا براش خون بریزی هاشم. خون یه جوون رو. هاشم به داد هممون برس!&quot; و بعد تاریکی مطلق!هاشم صبح امروز با سردردی فرای حد انتظار وسط اتاق به هوش اومد. خونه مثل همیشه ساکت و آروم بود. چیز هایی که دیده بود رو باور نمی‌کرد. توی چند هفته‌ی اخیر بار‌ها خیالاتی شده بود و تنهایی و نبود هم‌صحبت آزارش میداد. تو فکر رویای دیشب بود که به یاد بندنافی که تو حباب لوستر مخفی کرده بود افتاد. سریع چهارپایه رو زیر لوستر گذاشت و داخل حباب هاش رو چک کرد. بندناف دیگه اونجا نبود! هاشم دیگه نمیدونست که چی واقعی و چی زاییده خیالشه. فقط فریاد های ماه‌نسا بود که توی ذهنش می‌پیچید.با افتادن چرخ وانت توی یک چاله زنجیره افکار هاشم پاره شد. دستش توی جیب و همچنان دور چاقو بود. سردرد و صدای فریاد‌ها نمیذاشت که درست فکر بکنه. همه چیز براش گنگ و نامفهوم بود. به ساعت روی داشبود ماشین نگاه کرد. ده دقیقه تا ظهر بیشتر نمونده بود. ضربان قلبش تندتر و تندتر میشد. منظور ماه‌نسا از &quot;اون&quot; چی کسی بود؟ چرا فکر می‌کرد هاشم اون‌ها رو کشته در حالی که ماه‌نسا تو تصادف کشته شده بود؟ این چه بلایی بود که داشت سرش میومد؟ اگه همه‌ی این‌ها خیالات بود چی به سر اون بند ناف اومده بود؟ همه‌ی این سوالات بارها و بارها توی ذهن هاشم تکرار می‌شد و بدون هیچ جوابی رها میشد. هاشم چاقو رو محکمتر فشار داد تا سرمای دسته رو بیشتر حس کنه.هاشم: سهیل جان. کنار چاه آب بزن کنار میخوام قبل از رفتن یچیزی رو اونجا نشونت بدم.</description>
                <category>سینا بختیاری</category>
                <author>سینا بختیاری</author>
                <pubDate>Wed, 08 Mar 2023 12:40:43 +0330</pubDate>
            </item>
                    <item>
                <title>ترافیک شهری در اسنپ - بخش صفر</title>
                <link>https://virgool.io/snapp-eng/%D8%AA%D8%B1%D8%A7%D9%81%DB%8C%DA%A9-%D8%B4%D9%87%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%A7%D8%B3%D9%86%D9%BE-%D8%A8%D8%AE%D8%B4-%D8%B5%D9%81%D8%B1-x6u0qxmf2qec</link>
                <description>مقدمهیکی از مهم‌ترین نیازمندی‌های سرویس اسنپ اطلاع از وضعیت ترافیکی فعلی خیابون‌ها و معابر سطح شهر و همینطور پیش‌بینی وضعیت آن‌ها در دقایق و ساعت‌های آینده و استفاده از این داده‌ها برای ارائه سرویس‌های مختلف نقشه است. توی این پست میخواییم در مورد کاربرد‌‌‌ها، چالش‌ها و چگونگی انجام این کار تو تیم نقشه اسنپ توضیحات کوتاهی بدیم تا دریچه‌ای برای پست‌های آینده باشه.KeplerGL©تصویر ۱ - اتصال مبدا و مقصد سفر‌های اسنپ در یک بازه چند دقیقه ای    وضعیت ترافیکی چیست و چه استفاده‌هایی داره؟منظور ما از وضعیت ترافیکی معابر این است که اگر شما با یک خودرو وارد یک خیابان بشید با چه سرعتی میتونید در اون حرکت کنید. برای مثال یک بخش از اتوبان همت رو در نظر بگیرید. در ساعت‌های مختلف از روز ما شاهد سرعت‌های مختلفی هستیم که از ۸۰ کیلومتر بر ساعت شروع شده و در ساعت‌های اوج ترافیک به زیر ۱۰ کیلومتر در ساعت هم میرسه.ما با دونستن وضعیت لحظه‌ای خیابون‌ها میتوانیم اون رو به کاربران راننده و مسافر نشون بدیم و همینطور با پیش‌بینی وضعیت ترافیکی میتونیم تخمین خودمون از طول سفر و زمان رسیدن به مقصد رو بهبود بدیم که باعث میشه نه تنها قیمت‌گذاری دقیق‌تری رو داشته باشیم بلکه کاربران مسافر و راننده هم خواهند توانست زمان خودشون رو دقیق‌تر برنامه‌ریزی کنن. این‌ها بخش کوچکی از استفاده‌هایی هستن که میشه از این داده‌ها کرد.تصویر ۲ - ترافیک نقشه اسنپ در ساعت‌های مختلفما برای محاسبه وضعیت ترافیکی خیابون‌ها مثل سایر سرویس‌های مطرح از داده‌های GPS راننده‌ها استفاده می‌کنیم. راننده‌های اسنپ در زمان در دسترس بودن و همینطور در طول سفر در بازه‌های چند ثانیه ای اطلاعات مکانی خودشون رو به سرور‌های اسنپ ارسال می‌کنند. با جمع آوری و تحلیل این داده‌های مکانی ما می‌توانیم یک تخمین از وضعیت ترافیکی معابری که راننده‌های اسنپ در اون‌ها حضور دارن داشته باشیم.سرویس‌های متنوعی از این داده استفاده میکنند تا بتوانند نتایج دقیقی رو تولید بکنند که چند تا از اونها شامل موارد زیر می باشد:محاسبه زمان رسیدن به مقصد (ETA): این سرویس زمان رسیدن از یک نقطه به نقطه‌ی دیگری رو محاسبه میکنه. خروجی این سرویس یکی از مهم‌ترین ورودی‌های سرویس قیمت‌گذاری هستش.محاسبه مسیر بهینه (Routing): این سرویس مسیر بهینه برای رسیدن از یک نقطه به نقطه ی دیگری رو محاسبه می‌کنه. راننده با استفاده از این سرویس میتونن در کوتاه‌ترین زمان به مبدا و مقصد سفر برسند.پیدا کردن بهینه‌ترین راننده: این سرویس از بین راننده‌های موجود در یک منطقه راننده‌ای رو که در سریع‌ترین زمان ممکن می‌تونه به یک نقطه مشخص برسه رو پیدا می کنه.استفاده از این داده‌ها به این سادگی‌ها هم نیست، چالش‌های مختلفی وجود داره که در ادامه این پست بیشتر بهشون می‌پردازیم.چالش‌های موجود در محاسبه وضعیت ترافیکی و استفاده از آنهمانطور که قبل‌تر هم اشاره شد محاسبه وضعیت ترافیکی دارای چالش‌های علمی و فنی متعددی هست که حل کردن هر کدوم از اون‌ها نیاز به صرف زمان و انرژی قابل توجهی داره (طاده در اینجا به‌شکل مفصل در مورد یکی از این چالش‌ها نوشته). توی این بخش به چند تا از بزرگ‌ترین چالش‌ها اشاره می‌کنیم و به‌صورت خلاصه به راهکار‌هایی که براشون داریم اشاره می‌کنیم.چالش اول: مدل کردن داده‌های نقشهاولین نیازمندی برای کار با داده‌های نقشه مدل کردن این داده‌ها به ساختاری است که توسط کامپیوتر پردازش بشه. روش‌های مختلفی برای این کار وجود داره که مورد استفاده ترینشون تبدیل نقشه به یک گراف جهت داره. استاندارد‌های مختلفی در سطح جهان وجود داره که همه بتونن داده‌های نقشه رو با هم به اشتراک بگذارن. معروف‌ترین و محبوب‌ترین استاندارد هم داده‌های Openstreet Map یا همون OSM هستش. متاسفانه این استاندارد همه نیازمندی‌های موجود ما رو برطرف نمی‌کنه. برای مثال روش تقسیم‌بندی خیابون‌هاش مناسب تحلیل‌های ترافیکی نیستش. علاوه بر اون روشی که این استاندارد داده‌ها رو ذخیره می‌کنه دست ما رو تو استفاده از داده‌های دیگه در کنار هم می‌بنده.برای حل این مشکل ما از یک استاندارد گرافی دیگه که برای حل این مشکلات ساخته شده استفاده می‌کنیم که بر روی استاندارد داده‌های OSM سوار میشه. توی این روش هر خیابونی یک مشخصه (id) منحصر به فرد داره که در طول زمان تغییری نمی‌کنه. علاوه بر اون، توانایی شناسایی داده‌های مشترک در بین چند داده و استاندارد مختلف رو داره که به ما اجازه میده علاوه بر داده‌های OSM از داده‌های دیگه هم استفاده بکنیم. در پست‌های آتی بیشتر در مورد این ابزار صحبت خواهیم کرد.تصویر ۳ - تصویر فرضی از یک تقاطع و گراف مدل سازی شده آنچالش دوم: خطای داده‌های GPSهمونطور که می‌دونید، گوشی‌های ما با استفاده از امواج فرستاده شده از ماهواره‌های GPS موقعیت مکانی خودش رو تخمین می‌زنه. متاسفانه به دلایل مختلف ممکنه این تخمین با خطاهایی همراه باشه که از دلایل اون می‌شه به وجود ساختمون‌های بلند، بازتاب محیطی امواج، و همینطور نویز‌های موجود اشاره کرد. زمانی که این اتفاق میوفته ما از مکان دقیق راننده اطلاع نداریم و در نتیجه نمی‌تونیم با قطعیت بفهمیم که راننده در چه خیابونی در حال حرکت هستش.تصویر ۴ - نقاط دارای خطای ثبت شده توسط GPS راننده (نقاط قرمز) و مسیر واقعی که راننده طی کرده (خط سبز)به تکنیکی که بتونه این مشکل رو حل کنه Map Matching میگن. راه‌ حل‌های مختلفی برای حل این چالش وجود داره که هرکدوم خاصیت‌های خودشون رو دارن. بعضی‌هاشون خیلی سریع هستن ولی دقت کمی دارن و بعضی‌های دیگه دقیق‌تر اما با محاسبات سنگین‌تری هستن. ساده‌ترین راه حل موجود اینه که نقطه‌ی ثبت شده رو به نزدیک‌ترین خیابون متصل کنیم و فرض بگیریم که مکان واقعی راننده توی اون خیابون هستش. متاسفانه این روش از دقت خوبی برخوردار نیست و خیلی جاها مارو دچار مشکل میکنه. در بین راهکار‌های موجود ما به سراغ استفاده از مدل‌های پنهان مارکوف (Hidden Markov Models) رفتیم. توضیح در مورد این که این روش دقیقا چطوری کار میکنه از حوصله این پست خارجه و میذاریمش برای پست‌های بعدی و در زیر یک توضیح خیلی سریع در موردش میدیم.توی این روش که به اختصار به اسم HMM Map Matching شناخته میشه ما فقط به نقطه فعلی نگاه نمیکنیم بلکه میاییم به موقعیت‌های مکانی قبلی کاربر که مربوط به ثانیه‌ها و دقایق قبل هستش نگاه میکنیم. اینطوری وقتی بین چند گزینه احتمالی شک داریم بهتر میتونیم از انتخاب نهایی موقعیت مکانی کاربر مطمئن بشیم.تصویر ۵ - نقاط ثبت شده توسط دستگاه GPS (طوسی) به همراه نقاط واقعی راننده (آبی) و نقاط محاسبه شده توسط الگوریتم HMM (سبز) چالش سوم: حجم زیاد داده‌هایکی دیگه از چالش‌هایی که ما در این مسیر بهش برخوردیم حجم زیاد داده‌های GPS بود که به سمت ما میومد. شکل زیر (تصویر ۶) تصویری از نقاط GPS ای هستش که فقط در طول چند دقیقه و فقط در شهر شیراز به سمت ما ارسال شده. میتونید حدس بزنید که تحلیل این داده‌ها که به ۲.۴ میلیون نقطه در دقیقه میرسن میتونه کار چالش برانگیزی باشه.تصویر ۶ - نقاط GPS راننده‌های شیراز در بازه ی زمانی چند دقیقه ©KeplerGL  تصویر ۷ یک نمودار خیلی کلی از مسیر داده‌های ترافیکی ما (Traffic Pipeline) هستش. تمام این مراحل باید بتونن اونقدر سریع انجام بشن که داده‌های خروجیشون قابل استفاده به‌صورت زنده باشن. ما در بازه‌های کوتاه ۱۵‌دقیقه ای داده‌های GPS رو جمع میکنیم و این پردازش‌هارو روش انجام میدیم. از اونجایی که سیستم ما به‌صورت واقعی زنده نیست و در بازه‌های کوتاه کارش رو انجام میده بهش پردازش Micro Batch هم گفته میشه.تصویر ۷ - شمای کلی از پایپلاین داده‌های ترافیکهمونطور که میدونید راه‌های زیادی برای سریع کردن پردازش‌ها وجود داره. یکی از راه‌ها اسکیل (Scale) کردن سرویس‌ها به‌صورت عمودی (Vertically) هستش. در مورد ما هزینه سروری که اونقدری سخت افزار قوی‌ای داشته باشه که بتونه نیاز‌های مارو جواب بده زیاده و روش منطقی‌ای برای ما نیست. پس ما به سمت اسکیل کردن افقی (Horizontally) رفتیم. برای این که بتونیم این کار رو انجام بدیم لازم بود که بتونیم تمام معماریمون رو طوری طراحی کنیم که توانایی پردازش موازی و همزمان داشته باشن. فریمورک‌ها و ابزار‌های مختلفی برای رسیدن به این نتیجه وجود دارن که ما از بین اون‌ها Apache Spark رو انتخاب کردیم و معماری Pipeline مون رو با اون طراحی و پیاده سازی کردیم.تصویر ۸ - بخشی از stage های پایپلاین ترافیک در اسنپچالش چهارم: ابزار مسیریابی (Routing Engine)سرویس‌های مختلف نقشه مثل مسیریابی راننده‌ها و تخمین زمان رسیدن به مقصد (ETA) علاوه بر داده‌های ترافیکی نیاز به ابزاری سریع و دقیق جهت مسیریابی دارن. به سرویسی که این وظیفه رو انجام میده Routing Engine گفته میشه. ابزار‌های متن باز مختلفی در این زمینه موجود هستند که هرکدوم از نقاط قوت و ضعف مختلفی دارن. ما تو اسنپ به ابزاری نیاز داریم که بتونه داده‌های ترافیکی زنده رو پردازش بکنه، توانایی اعمال محدودیت‌های ترافیکی مختلف مثل طرح ترافیک رو داشته باشه و در کنار همه ی این‌ها سریع باشه. متاسفانه هیچ‌کدوم از ابزار‌هایی که ما میشناسیم همه‌ی نیازمندی‌های مارو برطرف نمیکنن در نتیجه ما توی اسنپ به سمت استفاده و گسترش این ابزار‌های متن‌باز رفتیم تا با نیازمندی‌های ما منطبق بشه. توی پست‌های بعدی به‌شکل تخصصی‌تر به بررسی این ابزار می‌پردازیم.تصویر ۹ - مسیر بهینه محاسبه شده بین دو نقطه توسط Routing Engineپایانتوی این پست با محاسبه وضعیت ترافیکی خیابون‌ها در اسنپ و استفاده از این سرویس به همراه چالش‌هایی که داره به‌شکل کلی آشنا شدید. استفاده از این داده‌ها به موضوعاتی که به اونها اشاره شد محدود نیست و همینطور چالش‌هایی که در مسیر موجود هستند هم بیشتر از اون‌هایی هستند که تا اینجا دیدید. توی این پست تلاش شد که به‌شکل خلاصه با معماری و ادبیات موضوع آشنا بشید تا در پست‌های آینده بتونیم عمیق‌تر و مفصل‌تر به هر کدوم از بخش‌های این سیستم بپردازیم.در انتها از همتون ممنونم که تا اینجا با ما همراه بودید. امیدوارم که مطالبی که خوندید براتون جذاب بوده باشه. خوشحال می‌شم اگه سوالی دارید یا دوست دارید بیشتر صحبت کنیم کامنت بذارید یا به من پیام بدید.در ضمن، اگه حس می‌کنین از پروژه‌هایی شبیه به این خوشتون میاد و در نتیجه علاقه دارید به تیم ما ملحق بشید، خوشحال می‌شیم که رزومه‌هاتون رو از طریق آدرس engineering@snapp.cab برای ما ارسال کنید.</description>
                <category>سینا بختیاری</category>
                <author>سینا بختیاری</author>
                <pubDate>Tue, 05 Jul 2022 16:06:15 +0430</pubDate>
            </item>
            </channel>
</rss>