<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های AYUB</title>
        <link>https://virgool.io/feed/@Ayub</link>
        <description>Backend developer , Geek</description>
        <language>fa</language>
        <pubDate>2026-06-10 15:10:19</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>AYUB</title>
            <link>https://virgool.io/@Ayub</link>
        </image>

                    <item>
                <title>بریم سمت معماری مایکروسرویس یا نه؟!</title>
                <link>https://virgool.io/7Learn/%D8%A8%D8%B1%DB%8C%D9%85-%D8%B3%D9%85%D8%AA-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D9%85%D8%A7%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%DB%8C%D8%A7-%D9%86%D9%87-g5r82pbhwxrp</link>
                <description>تو دنیای امروز خیلی ترند شده که معمولا هرکسی یه محصول تکنولوژی توسعه میده و کمی از عمرش میگذره یا حتی از همون اولش، میخواد بره سمت معماری مایکروسرویس و سیستمی که توسعه دادن رو به یک سیستم توزیع شده تبدیل کنن! افرادی که دانش مهندسی نرم افزار دارن یا توی این رشته تحصیل کردن در جریان هستن که این مفهوم درباره ی چه چیزی صحبت میکنه و احتمالا باهاش روبرو هم شدن. اما در کل ما چند روش برای توسعه و راه اندازی سیستم های نرم افزاری داریم که دوتا از معروف ترین هاش معماری مونولیتیک (Monolithic architecture) و معماری مایکروسرویس (Microservice) هستن. قبل از اینکه ادامه مطلب رو بخونید پیشنهاد میدم ویدیو زیر که با همکاری مجموعه سون لرن تهیه شده رو ببینید بعد ادامه مطلب رو مطالعه کنید: https://www.aparat.com/v/tz21x از اوایل تاریخ توسعه ی نرم افزار معمولا نرم افزارها رو به صورت مونولیتیک یا مجتمع توسعه میدادن و کل قسمت ها و ماژول ها روی یک پروژه ی مشترک پیاده سازی و اجرا میشد. در نتیجه معمولا هم همه چیز روی یک سرور اجرا میشد و پاسخ درخواست های دریافتی رو میداد. بعد از مدتی که تعداد کاربران فعال روی اینترنت بیشتر شد و محصولات نرم افزاری هم مشتری های بیشتری برای پاسخ دادن پیدا کردن، شرکت هایی که الان دیگه بزرگ تر شده بودن دیدن که انگار نمیشه مثل قبل صرفا با افزایش منابع سرور ها، قدرت و توانایی عملکرد نرم افزار هارو بهتر کرد که بتونن درخواست های بیشتری رو پاسخ بدن. مثلا نمیشه مدام رم یا پردازنده یا بقیه ی منابع سرور رو اضافه کنیم و اصطلاحا Vertical Scaling یا افزایش مقیاس عمودی منطقی نبود.  اصولا ما دو نوع مقیاس بندی داریم: عمودی و افقی یا همون Horizontal and vertical scaling. در کل وقتی که نیاز داریم نرم افزارمون منابع بیشتری داشته باشه و به کاربران بیشتری پاسخ بده، مجبوریم که به نوعی منابع اون محصولمون رو افزایش بدیم. در حالت عمودی یا ورتیکال به سادگی میشه با افزایش منابع فیزیکی سرور یا به اصطلاح سرور بزرگ تر گرفتن این مشکل رو تا حدودی رفع کرد که البته کاملا منطقی هست. اما از جایی به بعد نرم افزار ما انقدر ممکنه بزرگ بشه که دیگه نشه روی یک سرور مدام این منابع رو ببریم بالا و اینجوری ما یک سرور خیلی بزرگ داریم که ممکنه مشکلات بزرگی برای ما به وجود بیاره و ریسک هایی رو برای کسب و کارها ممکنه به دنبال داشته باشه مثل خطر از بین رفتن اطلاعات یا ایجاد گلوگاه (Bottleneck) که میتونه عملکرد و سرعت نرم افزار مارو تحت تاثیر قرار بده.با پیشرفت دنیای نرم افزار و بزرگ تر شدن کسب و کارها، اومدن و دنبال راه حل هایی برای این مشکلات گشتن و دیدن که میشه به جای یک سرویس بزرگ که روی یک سرور داره کار میکنه، همون سرویس رو شکست به بخش های کوچک تر و هر ماژول یا سرویس کوچیک رو میشه روی سرور های جداگانه اجرا کرد و اینطوری وظایف هر بخش رو جداگانه به خود همون سرویس بسپاریم و این سرویس ها در عوض با همدیگه در ارتباط باشن و اطلاعاتی که لازم دارن رو رد و بدل کنن (Inter service communication). با این روش میشه فشاری که به کل سیستم میاد رو تا حدودی بین سرویس های کوچیک تری که داریم تقسیم کرد که سیستممون بتونه در تئوری به درخواست های بیشتری پاسخ بده و تحمل فشار بالاتری داشته باشه. چرا گفتم تئوری؟ چون همیشه هم اینطور نیست و ممکنه خود مایکروسرویس مشکلات دیگه ای رو هم ایجاد کنه که ممکنه در معماری متمرکز وجود نداشته باشه!مزیت دیگه ی مایکروسرویس اینه که وقتی تیم های شرکت ها خیلی بزرگ میشن و تعداد توسعه دهنده ها و در کل افرادی که روی سرویس کار میکنن خیلی زیاد میشه، اگر معماریمون مونولیت یا متمرکز باشه ممکنه توی کار این تیم ها به مشکلاتی بخورن مثلا وابستگی بین تیم ها زیاد بشه و زمان تلف شده برای توسعه ی سرویس ها خیلی بالا بره چون ممکنه هر تیم نتونه به صورت مستقل روی بخش مربوط به خودش کار کنه و یا مجبور باشه مدام منتظر کار بقیه بمونه یا اصطلاحا به تداخل (Conflict) برخورد کنن. اما اگر معماری مایکروسرویس باشه(البته اگر درست و اصولی پیاده بشه!) هر تیم به صورت تقریبا مستقل میتونه روی سرویس های خودش کار کنه و حتی به صورت مستقل ریلیز انجام بده و تغییرات خودش رو زودتر و مستقل از بقیه وارد مدار کنه که کاربران بتونن استفاده کنن. در حالی که توی معماری متمرکز ممکنه مثلا برنامه ی ریلیز شرکت دو هفته یکبار باشه و این باعث میشه که حتی اگر یک تیم کارش رو هم انجام داده باشه نتونه تا زمان ریلیز مشترک شرکت، تغییراتش رو بفرسته بالا و اصطلاحا روی محیط پروداکشن بره! از خوبی ها گفتیم از چالش های مایکروسرویس هم بگیم! یکی از چالش هایی که ممکنه تیم هایی که مایکروسرویس کار میکنن بهش برخورد کنن مدیریت منابع مخصوصا منابع انسانیه! چون سرویس هایی که جدا میکنیم بخاطر مستقل بودنشون میتونن هر کدوم با یک زبان برنامه نویسی جدگانه یا حتی با دیتابیس ها و در کل با ابزار های متفاوتی توسعه داده بشن و توی مایکروسرویس این انعطاف وجود داره. اما برای مثال وقتی برای یک سرویس یک زبان یا ابزار خاصی رو انتخاب میکنیم ممکنه بعدا برای پیدا کردن نیروی کار متخصص و جایگزین کردن نیروی انسانی به چالش بخوریم. مثلا ما در حال حاضر برای این سرویس جدید ممکنه نیروی متخصص داشته باشیم اما اگر نیروی مورد نظر ما به هر دلیلی قصد قطع همکاری با شرکت رو داشته باشه نیازمند جایگزینیش خواهیم بود و اینجاست که مخصوصا توی جایی مثل ایران ممکنه برای این کار به دردسر دچار بشیم و نیرویی که میخوایم رو نتونیم در زمان مناسب پیدا کنیم. دومین چالش مهم اینه که بدونیم چطوری و با چه حساب و کتابی هر سرویس رو جداسازی کنیم! بهتره که اول از نظر کسب و کار به سرویس ها و ماژول هامون نگاه کنیم و با همفکری و تحلیل های دقیق اقدام به جداکردن محدوده ی سرویس های مختلف کنیم. اگر حساب شده سرویس هارو جدا نکنیم بعدا ممکنه متوجه بشیم که برای مثال دو سرویسی که جدا کردیم منطقا نباید جدا میبودن و جدا کردنشون بر خلاف تصور باعث تضعیف عملکرد یا باعث افزایش وابستگی بین تیم ها شده! پس باید خیلی روی نحوه ی جدا کردن سرویس ها تحقیق کنیم و بی گدار به آب نزنیم. همین مساله برای خود من پیش اومده و توی دنیای واقعی در یکی از شرکت هایی که کار میکردم این مورد پیش اومد و وقتی که در پروسه ی تفکیک سرویس ها بودیم بعد از جلسه های فراوان متوجه شدیم که جداکردن یک سرویس که قصد تفکیکش رو داشتیم کار درستی نبود و بعد از شنیدن نظرات مختلف و با ارائه ی دلیل و تحلیل، تصمیم گرفتیم که این کار رو نکنیم!چالش دیگه ای که در معماری مایکروسرویس وجود داره و ممکنه کار مارو کمی سخت تر بکنه بحث Tracing هست که ما توی معماری مونولیت راحت تر میتونیم این کار رو انجام بدیم. وقتی کل سرویس های ما روی یک پروژه هستن و ما هر تکه از پروژه رو جداگانه اجرا نکردیم و کل پروژه با یک ابزار متمرکز توسعه داده شده، ردیابی خطاهایی که داره در سیستم رخ میده راحت تره و همه چیز دم دست ما داره اتفاق می افته و لاگ میشه. اما وقتی ما معماری مایکروسرویس داریم، درخواست هایی که داخل سیستم ما میان از مسیر های مختلفی داخل سیستم ما عبور میکنن و هر سرویس به صورت جداگانه پردازش های مخصوص خودش رو روی اون درخواست انجام میده و ردیابی خطاها در محیط مایکروسرویس به سادگی مونولیت اتفاق نمی افته و به ابزارهای مخصوصی مثل open tracing نیاز داریم که بتونه امکان ردیابی توزیع شده یا همون Distributed Tracing رو به ما بده. به همین خاطر ممکنه تشخیص و برطرف کردن خطاها و مشکلات سیستم سخت تر و زمان بر تر بشه چون پیچیدگی سیستم ما بسیار بالاتر رفته!زیرساخت مایکروسرویس نیاز به ابزارهایی داره که در حالت عادی معمولا مورد نیاز نیستن مثل service mesh   یا انواع ابزار های message queue و ... که تمام این ابزارها نیاز به صرف هزینه ی نگهداری دارن و ما به طور خاص ممکنه تیمی رو برای نگهداری همین ابزار ها نیاز داشته باشیم. به همین دلیل بهتره قبل از رفتن به سمت مایکروسرویس منابع این کار رو داشته باشیم. در اکثر مواقع توسعه ی ورتیکال و همون افزایش منابع زیرساخت و همون مونولیت نگه داشتن سرویس کار منطقی تر و عقلانی تری هست!در آخر هم اینکه، در دام ترند ها گرفتار نشین و صرفا بخاطر ترند شدن خودتون و تیمتون رو گرفتار کلی هزینه و چالش نکنین. با تحلیل و تحقیق پیش برین و فقط در صورتی به مهاجرت به مایکروسرویس فکر کنین که توجیه خوبی براش پیدا کرده باشین :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Mon, 18 Dec 2023 17:50:26 +0330</pubDate>
            </item>
                    <item>
                <title>مهاجرت کاری و مصاحبه - قسمت سوم: شرکت رو خوب بشناس!</title>
                <link>https://virgool.io/@Ayub/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%DA%A9%D8%A7%D8%B1%DB%8C-%D9%88-%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-%D8%B4%D8%B1%DA%A9%D8%AA-%D8%B1%D9%88-%D8%AE%D9%88%D8%A8-%D8%A8%D8%B4%D9%86%D8%A7%D8%B3-v1t3n6fm1qdr</link>
                <description>قسمت قبلی(قسمت دوم) باهم مواردی رو مرور کردیم که به شما توی نوشتن رزومه و کاور لتر مناسب و خوب کمک کنه. این قسمت خیلی مهمه و در مورد موضوعاتی حرف میزنم که بعد از دعوت به مصاحبه نیازه بهشون توجه کنین. پس پیشنهاد میکنم خیلی دقیق مطالب این پست رو بخونین.  امیدوارم مفید باشه براتون :)شرکت ها چه کسانی رو جذب میکنن؟چرا یک شرکت خارجی باید شمارو از ایران(یا هرجای دیگه) استخدام کنه و بیاره کشور خودش؟ شرکتی که از خارج نیرو جذب میکنه احتمالا باید چیز متفاوتی توی شما ببینه که زحمت ویزا اسپانسرشیپ و هزینه های انتقال شمارو تقبل کنه. پس شما باید ارزش افزوده ی بیشتری نسبت به بقیه ی افراد داخل همون کشور داشته باشین که شمارو از خارج بیارن به کشور خودشون. در کل مواردی که مهمه:مهارت فنی مهارت غیر فنی (سافت اسکیل) مثل روحیه ی کار تیمی، مهارت ارتباطی قوی، مهارت حل مسئله و مشارکتتجربه ی کاری در زمینه ی خاص یا در شرکت و حوزه ی کاری خاص که توی کشور خودشون کمتر پیدا بشهما بحث مهارت فنی رو نمیکنیم چون اکثر دوستان تجربه و سابقه ی فنی خوبی داخل همین ایران دارن که قابل توجه هست. اما به طور خلاصه، شرکت کسی رو میخواد که با هدف و انگیزه ی قبلی براش اپلای کرده باشه و برای کاری که میکنه دلیل و هدف داشته باشه نه اینکه همینطوری فله ای اپلای کرده باشه و در مورد اون شرکت مقصد یا کشوری که براش اپلای کرده، هیچ اطلاعاتی نداشته باشه!نکته خیلی مهم: توی تمام مراحل تحقیق و جمع آوری اطلاعات، یادتون نره که حتما یادداشت برداری کنین که چیزی از ذهنتون نره!آگهی شغلی، سر نخ اصلی!درصد زیادی از اطلاعات اولیه مورد نیاز، همونطور که گفته شد داخل همون آگهی پیدا میشه. بعد از خوندن دقیق آگهی و درک نیازمندی های شرکت، سایت شرکت رو پیدا کنین و باز کنین.وبسایت شرکتداخل سایت حتما قسمت About us رو پیدا کنین و دقیق مطالعه کنین. معمولا اینجا هدف تاسیس شرکت ذکر میشه. مثلا نوشته «در سال 2009 آقای x و آقای y وقتی به یک سفر رفته بودن، برای پیدا کردن هتل و اقامتگاه مناسب دچار مشکل شدن. پس تصمیم گرفتن که محصولی بسازن که به افراد کمک کنه که بتونن در مورد اقامتگاه ها اطلاعات کاملی قبل از سفر کسب کنن...». توی همین چند خط معمولا میشه اطلاعات خیلی با ارزشی پیدا کرد. میشه از تک تک این کلمات و جملات به نفع خودتون استفاده کنین! میگین چطوری؟ مثالی که گفتم رو در نظر بگیرین. نوشته دو موسس این شرکت به دلیل مشکلی که براشون پیش اومده بود به فکر راه حل افتادن. حالا فرض کنین تو مصاحبه، مصاحبه کننده ازتون میپرسه که چرا شرکت مارو انتخاب کردی؟ یکی از چیزهایی که میشه گفت اینه که «شرکتی که محصولش حاصل مشکل و مسئله ای بوده که خود موسسین باهاش درگیر بودن، به احتمال زیاد ارزش بیشتری برای محصول و کیفیتش قائل هست و در نتیجه شرکت با هدف ارزشمند تری به جلو حرکت میکنه و این در دراز مدت باعث پیشرفت اون شرکت و محصول خواهد شد». از همون جملات تونستیم این تفسیر رو ارائه بدیم و همین حرف ها خیلی چیزهارو به اون ریکروتر میفهمونه. نشون میده شما آدم تحلیل گر و ژرف اندیشی هستین و توی مفاهیم عمیق میشین پس میشه به شما تکیه کرد. فردا روز توی تیمی که کار میکنین میشه به کارتون اعتماد داشت چون ابعاد مختلف مشکلات و مسائل رو میبینین و بهشون توجه میکنین! در واقع شما باید سعی کنین قدرت درک، تفسیر، دید عمیق و نگرش متفاوت رو در خودتون پرورش بدین.شعارها و ارزش های شرکتشعارهای شرکت یکی دیگه از مهم ترین ها هستن. هر شرکتی معمولا یک سری شعار و ادعا برای خودش داره که ممکنه توی وبسایتشون بتونین اونها رو پیدا کنین. از شعارها و ارزش هایی که مدعی اونها هستن هم میشه استفاده کرد. مثلا من با شرکتی مصاحبه میکردم که یکی از ارزش هاشون این بود که کاربر/مشتری در درجه ی اول اهمیت قرار داره. این شرکت 4 ارزش اصلی داشت که داخل همون صفحه ی درباره ی ما ذکر کرده بودن. خب من از همین مورد استفاده کردم و بازهم به مصاحبه کننده در جواب «چرا شرکت مارو انتخاب کردی؟» گفتم: «هدف اصلی هر شرکتی ارائه ی بهترین خدمات به مشتریان و جلب رضایت اونها هست. شرکتی که ارزش اصلیش اولویت دادن به کاربران هست، هرکاری میکنه که بهترین تجربه رو برای مشتری هاش که ذی نفعان اصلی محصول هستن ایجاد کنه و این در نهایت به افزایش فروش، پیشرفت و رضایت همه جانبه منجر خواهد شد. در نهایت کارکنان شرکت هم بخاطر تاثیر مثبتی که میذارن هم حس بهتری دارن هم از نظر درآمدی و شغلی پیشرفت میکنن. پس میتونم بگم همچین شرکتی جای خوبی برای کارکردن خواهد بود.». اینجاست که به احتمال خیلی زیاد مصاحبه کننده گل از گلش میشکفه و با خودش میگه به به عجب نیروی دقیق و متفکری دارم جذب میکنم!نکته ی دیگه ای که داخل سایت شرکت نیازه بهش توجه کنین، محصولات هستن. لازمه که به طور دقیق بدونین شرکت چیکار میکنه و محصول یا خدمتش چی هست. اگر توی این مورد اطلاعات کاملی نداشته باشین ممکنه توی اثبات اینکه با آگاهی اپلای کردین به مشکل بخورین و به عبارتی گیر کنین توش وقتی ازتون سوال بپرسن. لازمه اگه در مورد محصولاتشون اطلاعات کامل ندارین، از اینترنت کمک بگیرین و در مورد حوزه ی کاریشون اگر براتون ناآشنا هست بخونین و یاد بگیرین. هرچند معمولا در این حد رو داخل همون وبسایت خودشون توضیح میدن. به طور خلاصه هرچه اشراف شما روی اطلاعات شرکت بیشتر، شانستون هم بیشتر!مورد بعدی بخش career داخل سایت شرکت هست. معمولا شرکت ها داخل سایت خودشون هم بخشی برای استخدام و آگهی های شغلی دارن که میتونین اونجا هم اطلاعات اضافی مفیدی رو پیدا کنین که با ترکیبشون با بقیه ی اطلاعات، میشه ازشون استفاده های زیادی کرد. مثلا داخل این صفحه معمولا عکس ها یا ویدیو هایی از دفتر شرکت، امکاناتی که دارن، کارمندان فعلی و ... منتشر میشه. از اینها میشه کجا استفاده کرد؟ مثلا برای شروع صحبت. فرض کنید جلسه ی مصاحبه cultural fit هست و با ریکروتر یا با مدیران شرکت قراره حرف بزنین. میتونین بگین که من فلان ویدیو یا عکس هاتون رو روی وبسایت دیدم و از دفترتون و وایبش(vibe) خیلی خوشم اومد. حتما دلم میخواد یه سر بهتون بزنم! همین حرف های به ظاهر ساده بیشتر از اونجه که فکرش رو میکنین روی ناخوداگاه اون افراد(مصاحبه کننده ها و مدیران) تاثیر مثبت میذاره. همه ی اینها گویای انگیزه، ریز بینی، روحیه ی جستجوگری، انرژی و passionate بودن شما هست. حقیقت اینه که این موارد برای اکثر شرکت ها مهمتر از مهارت های فنی هستن چون شرکت ها جدیدا طبق استراتژی &quot;Hire for attitude, train for skill&quot; اقدام به جذب نیرو میکنن. یعنی شخصیت، انگیزه، انرژی، روحیه ی کار تیمی و گروهی براشون اهمیت خیلی بالاتری از مهارت فنی داره. چرا که مهارت فنی رو میشه در مدت کوتاهی یاد داد اما شخصیتی که سازگار با ارزش های سازمان باشه رو نمیشه به راحتی تربیت کرد و پرورش داد. چون اگر شخص از لحاظ فرهنگی و شخصیتی با سازمان مچ(match) نباشه، ممکنه بعدا داخل تیم با بقیه ی افراد به مشکلات رفتاری بخوره و هرچقدر هم که آدم متخصصی از نظر فنی باشه، فضا رو سمی و کار رو برای بقیه ی افراد تیم مشکل میکنه.بلاگ شرکتدر ادامه ی بحث وبسایت، سعی کنین اگه بلاگ دارن بخونین. مطالبی رو که منتشر کردن به خاطر بسپارین و توی مصاحبه هاتون زیر پوستی اشاره کنین به اونها. در کل هر چیزی که میتونین رو توی ذهنتون داشته باشین و ازشون برای ارائه ی خودتون در مصاحبه ها استفاده کنین. همه ی اینها به معنی دقیق بودن شما هست و چه کسی بهتر از یک آدم دقیق!حساب های شرکت در شبکه های اجتماعیحتما آدرس اکانت های شرکت رو داخل شبکه های مختلف پیدا کنین و همه ی اونها رو خیلی دقیق بررسی کنین. یکی از مهم ترین ها اکانت لینکدین هست که معمولا جزئیات خیلی مهمی داخلش هست. پست های لینکدینشون رو بخونین. لیست کارمندانشون رو چک کنین. به این دقت کنین که میانگین حضور افراد در سازمان چند سال بوده. اگه این عدد مثلا از 3 یا 4 سال بالاتره، میتونین باز هم ازش برای نشون دادن انگیزه تون استفاده کنین. مثلا میتونین تو مصاحبه بگین که «من لینکدینتون رو چک کردم دیدم افراد به طور میانگین مدت زیادی داخل شرکت موندن و جای دیگه نرفتن. این میتونه نشونه ی این باشه که شرکت انقدر فضای خوبی برای کارمندان داره که افراد راضی به ترک شرکت نبودن. پس من هم خوشحال میشم چنین تجربه ای رو داشته باشم». ذکر کردن این موارد مثل جادو عمل میکنه و تاثیر مثبتش رو خواهید دید!لینکدین، اینستاگرام، توییتر و یوتیوب افراد مصاحبه کننده و مدیران شرکت(مخصوصا اگه قراره باهاشون مصاحبه داشته باشین) رو چک کنین و فعالیت ها و علایقشون رو با دقت ببینین. حتی اگه کاملا بی ربط به کار باشن! میتونین از این علایق برای نزدیک شدن به مصاحبه گر استفاده کنین و باهاشون ارتباط گرم تری برقرار کنین. مثلا حتی اگه مصاحبه فنی هست، برین اینستاگرام شخص رو چک کنین و ببینین که مثلا طرف گیتار میزنه. بعد در جلسه ی مصاحبه ارتباط رو صمیمی تر کنین و از در علایق مشترک وارد بشین. همین باعث میشه دید شخص نسبت به شما کاملا متفاوت بشه و ناخوداگاه روی تصمیم گیریشون تاثیر گذار باشه.اگر شرکت در حوزه ی برنامه نویسی کار میکنه یا شغل مورد نظر شما در این زمینه هست، حتما اکانت گیت هاب شرکت و مصاحبه کننده ها رو پیدا کنین و به پروژه ها و نحوه ی کد نویسیشون توجه کنین و نگاه بندازین. مثلا اگر شرکت پروژه ی اوپن سورسی داخل گیت هاب داره میتونین بحثش رو در جلسه مصاحبه ی فنی(یا حتی در بعضی موارد غیر فنی) پیش بکشین و در مورد اون پروژه ها صحبت کنین یا حتی ازشون سوال کنین. روحیه ی پرسشگر و یادگیرنده داشته باشینحتما لازم نیست نشون بدین همه چیز رو بلدین. حتی ممکنه در بعضی موارد این به ضررتون تموم بشه. پس بهتره بعضی مواقع طرح سوال هم کنین و روحیه ی یادگیرنده تون رو هم بهشون ارائه بدین که این روی شما رو هم ببینن و متوجه بشن که شما در صورت لزوم سوال کردن و یاد گرفتن از بقیه رو هم بلدین و گاردی نسبت به سوال کردن ندارین. یادگرفتن و یاد دادن دو مورد خیلی مهم هستن که شما باید سعی کنین حس هر دو رو بهشون القا کنین. منظور از یاد دادن هم این هست که باید متوجه بشن که شما روحیه ی انتقال دانش دارین و اگر کسی در تیم نیاز به کمک شما داشت، بدون چشم داشت، دانشتون رو حاضرین منتقل کنین و بقیه رو راهنمایی کنین.یوتیوب شرکتیوتیوب شرکت رو چک کنین. ممکنه شرکت ویدیوهای مختلفی چه در مورد محصول چه در مورد محیط کارشون منتشر کرده باشن که ارزش دیدن داشته باشن. معمولا شرکت ها روی برندینگ خودشون کار میکنن و برای همین کار هم ویدیو یا محتوی متنی و ... تولید و منتشر میکنن.گوگل یار و یاور همیشگیحتما سعی کنین علاوه بر شبکه های اجتماعی، اسم شرکت رو به طور کلی در گوگل(یا هر موتور جستجوی دیگه ای) جستجو کنین و اطلاعات مهم رو در بیارین. موارد مهمی که به نظرم حتما لازمه پیدا کنین:اطلاعات ثبت شرکت در سایت سازمان های ثبتی هر کشور برای اعتبار سنجی شرکتاطلاعات مربوط به جذب سرمایه ی شرکت در راند های مختلف و مبلغ هر راند سرمایه گذاری که روی شرکت انجام شده. مثلا میتونین در مصاحبه بگین که رفتین جذب سرمایه شرکت رو دیدین و متوجه شدین که مثلا جدیدا شرکت 20 میلیون دلار/یورو سرمایه گرفته و این به معنی پتانسیل رشد بیشتر برای شرکت هست و همچنین نشونه ی اعتبار شرکت و محصولش هست.مصاحبه های خبرگزاری های مختلف با مدیران و موسسین شرکت رو بخونین و ببینین(چه متنی چه ویدیویی). از این مصاحبه ها میتونین هم برای نشون دادن انگیزه و هم برای نزدیک شدن به مدیران در جلسه ی مصاحبه ی مدیران استفاده کنین. مثلا اگه با آقای ایکس مصاحبه دارین و میدونین که ایشون با یک خبرگزاری مصاحبه داشته، مصاحبه رو بخونین و توی جلسه ی مصاحبه ی خودتون به اون گزارش اشاره کنین و ارتباطتون رو از اون طریق گرم تر کنین.تجربیات بقیه ی کارمندانسایت هایی مثل glassdoor.com امکان ثبت نظر به صورت مخفی رو به کارمندان هر شرکت میدن. کارمندان میان و نظر معمولا صادقانه ی خودشون رو در مورد کار در اون شرکت مینویسن. حتما تجربیات بقیه رو در مورد شرکت مقصد بخونین و به خاطر بسپارین. این تجربیات هم میتونه به شما در انتخاب شرکت درست و مناسب کمک کنه، هم میتونه بازهم در ابراز انگیزه به شما کمک کنه. به این شکل که مثلا میتونین بگین «من تجربیات بقیه ی کارمندانتون رو در glassdoor خوندم و متوجه شدم اکثر افراد تجربه و حس خوبی از کار کردن در اینجا دارن و برام جذابه که من هم بتونم چنین حسی رو با شما تجربه کنم».تجربه ی عملی استفاده از محصول شرکتبرای شرکت ها معمولا خیلی ارزش داره که شما با آگاهی کامل اقدام به جذب در اونجا کرده باشین. این رو خیلی تکرار کردم چون نکته ی پایه ای و خیلی مهمیه که تقریبا تمام چیزهایی که ذکر شد و میشه در راستای همین مورده. بهتره محصول یا محصولات شرکت رو خودتون یکبار حداقل استفاده کنین. اگر اپلیکیشن هست نصب و استفاده کنین و اگر وبسایت هست که به همون شکل استفاده کنین. اگر میتونین با دقت محصول رو بررسی کنین و حتی اگر تونستین و به پستتون خورد ازش باگ هم کشف کنین، هرچند ساده مثلا در حد یک باگ از رابط کاربری! تجربه و حس خودتون از محصول رو دقیق به خاطر بسپارین یا حتی یادداشت کنین اگر نکته ی مهمی رو دیدین. در مصاحبه ی فنی و غیر فنی میتونین به اینکه محصول رو نصب و استفاده کردین اشاره کنین و بگین که مثلا به نظرتون فلان جا مشکل داره یا میتونه بهبود داده بشه. این ناخوداگاه روحیه ی انتقادی، ریز بینی و مسئولیت پذیری شمارو به اونها القا میکنه و کم کم حس اعتماد رو درونشون ایجاد میکنه و باعث میشه برداشت اولیه ای که از شما پیدا میکنن بهترین حالت شما باشه. شما با این کارها مجموعه ای از صفات خوب و مناسب رو دارین نشون میدین که یک آدم برای کار کردن در یک تیم باید دارا باشه. یک نکته ی مهم هم اینه که نباید سعی کنین به صورت مستقیم نکاتی رو که اشاره شد به مصاحبه کننده ها منتقل کنین چون وجهه خوبی احتمالا نخواهد داشت و ممکنه نتیجه ی عکس بده. اینکه زیرپوستی و ناخوداگاه این اتفاق بی‌افته و اونها خودشون این حس هارو از حرف ها و رفتار شما بگیرن کلید اصلی موفقیتتون هست.مهارت ارتباطی و زبانیبه عنوان چند نکته ی آخر هم میخوام اولا به اهمیت بحث زبان اشاره کنم که البته مطمئنم همه به این موضوع واقف هستن. مهارت ارتباطی قبل از تمام نکاتی که در این مطلب ذکر شد قرار میگیره و تا وقتی شما توانایی ارتباط موثر نداشته باشین، احتمالا به مرحله ای نمیرسین که نکات گفته شده در این پست رو به کار بگیرین. شرکت های حوزه ی تکنولوژی معمولا شرکت های اینترنشنال هستن و زبان اصلیشون انگلیسی هست. البته بسته به کشور این مسئله خیلی متفاوت هست اما مثلا در هلند برای کارهای حوزه ی برنامه نویسی و نرم افزار تقریبا به بلد بودن هلندی نیازی نیست و با انگلیسی کار شما به راحتی پیش میره. حتی در جایی مثل آلمان هم شرکت های مشابه، با انگلیسی ارتباطاتشون رو انجام میدن. هرچند احتمالا در هر صورت مجبور به یادگیر آلمانی برای گذران زندگی خواهید بود. اما اینجا بحث کار هست و به طور خاص حوزه ی نرم افزار. پس اگر روی دانش و مهارت زبان انگلیسیتون به خوبی کار کنین احتمالا نگرانی و دغدغه خاصی نخواهید داشت.تجربیات مصاحبه افراد مختلف با شرکتنکته ی آخر هم اینکه در همون glassdoor میتونین تجربه ی مصاحبه ی افراد دیگه رو بخونین و اطلاعات خیلی مفیدی در مورد روند مصاحبه هاشون و حتی سوال هایی که پرسیده شده کسب کنین و خیلی میتونه به شما در راحت تر شدن کارتون کمک کنه. مثلا خود من از یکی از همین تجربه ها که یک شخص نوشته بود فهمیدم که توی روند مصاحبه در مورد اینکه «آیا اپلیکیشن مارو نصب کردین؟» پرسیده شده و براشون اهمیت داشته که شخص محصول رو دیده باشه! همین باعث شد توی جلسه ی مصاحبه من انتظار چنین سوالی رو داشته باشم و براش از قبل آمادگی داشته باشم. وقتی هم پاسخ رو «بله» دادم و بعد در مورد نکاتی که از محصولشون دیدم صحبت کردم، با برق چشم مصاحبه کننده مواجه شدم و به وضوح دیدم که چقدر جا خورده و براشون جالب بوده. همین مورد رو بعد از مصاحبه در فیدبکی(بازخورد) که دادن هم دیدم که بسیار از نظرشون امتیاز مثبتی داشته این مورد. ضمن اینکه یادتون باشه همیشه محترمانه از مصاحبه کننده ها درخواست فیدبک بکنید و این رو هم اشاره کنید که شما به مصاحبه به چشم یک کلاس درس نگاه میکنید و هدفتون صرفا قبولی نیست و سعی میکنید در هر شرایطی یاد بگیرید. روحیه ی یاد گیرنده داشتن بسیار اهمیت زیادی داره.نمونه ی تجربه ی مصاحبه ی یک شخص با شرکت اوبر برای موقعیت شغلی مهندس نرم افزارهمونطور که در تصویر میبینین این شخص حتی سوالاتی که در مصاحبه ازش پرسیده شده رو هم ذکر کرده و این خیلی کمک کننده هست. حتی اگر سوالات در هر مصاحبه هم تغییر داده بشن باز هم کمک میکنه که بتونین نوع کلی سوالات پرسیده شده در اون شرکت رو درک کنین و برین در اون حوزه مطالعه کنین اگه بلد نیستین یا به پستتون نخورده از این دست چالش ها.در نهایت، لازمه چند نکته ی مهم رو بگم که باعث بشه مطالبی که میخونین رو درست درک کنین و در نهایت به تصمیم گیری درست تری منجر بشه و در مسیر اشتباه قدم نذارین. چون هر تجربه ای در یک مسیر خاص جوابگو هست و ممکنه برای مسیر دیگه قابل استناد نباشه.این مطلب به طور خاص در مورد مهاجرت کاری و اصطلاحا «جاب آفر» هست و ما اینجا در مورد انواع دیگه ی مهاجرت صحبت خاصی نمیکنیم.تمامی مطالبی که گفته میشه، تجربه ها و برداشت شخصی من هست اما ممکنه برای درصد زیادی از کارجو ها و شرکت هایی که براشون اقدام میکنن جواب بده.برای مهاجرت، مخصوصا مهاجرت کاری و مصاحبه هاش، فرمول ثابتی که باعث بشه همه جا جواب بگیرین وجود نداره. پس فکر نکنین همین چیزهایی که میخونین براتون کافی هست. خودتون هم دنبال یادگیری چیزهای دیگه حتما باشین.تخصص من حوزه ی نرم افزار و برنامه نویسی هست و مواردی که گفته میشه احتمالا برای این دسته از دوستان مناسب و قابل استناد تر هست تا دوستان فعال در حوزه های کاری دیگه.بحث های زیادی پیرامون مهاجرت کاری وجود داره که هر کدوم کلی جای صحبت دارن. من اینجا به طور خاص در مورد ویژگی های شخصیتی و مهارت های نرم(سافت اسکیل) حرف زدم چون مشکل خیلی از دوستان بوده و هست.امیدوارم این مطلب و تجربیاتم براتون مفید باشه و بتونه در این راه به شما کمک هرچند کوچکی کرده باشه. از اینکه وقت گذاشتین و مطالعه کردین تشکر میکنم و اگر سوالی هم داشتین لطفا در بخش کامنت ذکر کنین. در حد توان پاسخگو هستم. موفق و خوشحال باشین :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Mon, 16 Aug 2021 21:20:16 +0430</pubDate>
            </item>
                    <item>
                <title>مهاجرت کاری و مصاحبه - قسمت دوم: رزومه و کاور لِتِر</title>
                <link>https://virgool.io/@Ayub/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%DA%A9%D8%A7%D8%B1%DB%8C-%D9%88-%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-%D8%B1%D8%B2%D9%88%D9%85%D9%87-%D9%88-%DA%A9%D8%A7%D9%88%D8%B1-%D9%84%D9%90%D8%AA%D9%90%D8%B1-jgdreayzm8yz</link>
                <description>در قسمت قبلی(قسمت اول)، در مورد مراحل مصاحبه ی کاری در شرکت ها صحبت شد. این قسمت در مورد رزومه و کاور لتر هست. رزومه و کاور لتر نقطه ی شروع پروسه اپلای کاری و جذب و استخدام هست. هم برای شما هم برای شرکت ها. ویترین شما و چیزی که شانس ورود شمارو به مراحل مصاحبه افزایش(یا کاهش) میده همین دوتا مورد هستن! اینجا سعی میکنم از مراحل اول شروع کنم و بگم که توی هر مرحله چیکار بهتره انجام بدین که نتیجه بهتر حاصل بشه. از اونجا که برای رزومه منابع کاملی وجود داره، من تمرکز اصلی رو میذارم روی کاور لتر که کمتر کسی بهش توجه میکنه و اهمیت اون رو در نظر میگیره!رزومهسعی کنین قالب رزومه ی تر و تمیز و بدون اطلاعات اضافی استفاده کنین. همیشه و مداوم رزومه ی خودتون رو به روز کنین و خیلی دقت کنین که داخل رزومه غلط املایی یا گرامری وجود نداشته باشه. برای این کار از ابزارهای اتوماتیک مثل «گرامرلی» میشه استفاده کرد. در مورد اینکه چطور رزومه بنویسیم مطالب خیلی زیادی روی اینترنت وجود داره که میتونین خودتون سرچ کنین و پیدا کنین اما من لینک دورهمی آنلاین کامیونیتی(جامعه) Twitter Immigrants رو میذارم که جیمی عزیز زحمت کشیده بود در مورد رزومه توضیحات کاملی رو داده بود که خیلی دیدنش رو پیشنهاد میکنم:قسمت اول: https://youtu.be/Gt2AQG-u8xMقسمت دوم: https://youtu.be/HfEvIuUvF2Qکاور لِتِرنوشتن و ارسال کاور لتر بخش مهمی از اپلای هست. کاور لتر تا حد زیادی این حس رو به شرکت القا میکنه که شما برای انتخاب اون شرکت وقت و انرژی گذاشتین و همینجوری روی هوا اپلای نکردین. در واقع در مرحله ی اول این رو میرسونه که شما با آگاهی در مورد اون شرکت و علاقه به خودشون و حوزه کارشون اپلای کردین و صرفا قرار نیست بهشون به چشم سکوی پرش نگاه کنین! توی تمام مراحل القا کردن این حس به شرکت ها خیلی مهمه و توی پست های بعدی هم مفصل در مورد این نکته صحبت میکنم. شما باید سعی کنین جوری خودتون رو ارائه بدین که هدف دار به نظر بیاین. هرچند بهتره به طور جدی با هدف و آگاهی و علاقه اپلای کنین اما خب شرایط کشور و چیزهای دیگه طوری هست که متاسفانه هدف خیلی هامون فقط پیدا کردن راه خروج و یا همون سکوی پرش هست! این مورد به شخص بستگی داره اما حداقل لازمه که خودتون رو خوب و با انگیزه «نشون» بدین. در مورد کاور لتر هم توی ویدیو های بالا توضیحاتی داده شده و روی اینترنت هم اطلاعات کاملی هست اما در کل داخلش خیلی خوبه که علاقه خودتون رو به اون شرکت نشون بدین در چند خط بتونین چیزهایی که اون شرکت براش مهمه رو بنویسین که مسئول استخدام به راحتی ظرف چند ثانیه بتونه بفهمه شما چه چیزهایی دارین و تصمیم بگیره که رزومه ی شمارو قبول یا رد کنه. در واقع این تصمیم گیری مهم کلا ظرف 10 تا 20 ثانیه انجام میشه و شما چه در رزومه چه در کاور لتر باید جوری خودتون رو ارائه بدین که همون اول قلاب ریکروتر به شما گیر کنه(یا برعکس) و بچسبه بهتون!  وبسایت شرکت رو چک کنین و توی کاور لتر هم این رو برسونین که رفتین وبسایت شرکت رو دیدین و چک کردین (حتی اگه آگهی رو مثلا روی سایت های کاریابی دیدین) و مثلا داخلش دیدین که چه محصولاتی دارن و یا بلاگشون رو خوندین و خوشتون اومده. در کل نشون بدین که آدم پیگیر و دقیقی هستین و رفتین دنبال اینکه بفهمین شرکت چیه و چیکار میکنه و توش چی میگذره (با توجه به منابعی که روی اینترنت وجود داره). نمونه ی بخشی از یک کاور لتر رو اینجا میذارم که این حس رو تا حدودی به اون مسئول استخدام القا میکنه(به هایلایت های تصویر توجه کنین):قسمتی از کاور لتر نمونه دقت کنین که این کاور لتر کامل نیست و قسمتی از اون هست. این قالب لزوما کامل و ایده آل نیست و مسلما مشکلات خودش رو داره. در تصویر بالا، به جای [company name] اسم شرکت مقصد رو بذارین. به جای [my current company name] هم من اسم شرکت فعلی خودم رو قرار دادم که مثلا با شرکت مقصد محصول مشترک در حوزه ی کاری مشابه رو داره و این امتیاز محسوب میشه برای شرکت مقصد. دقت کنید که این نمونه، لزوما نباید برای شما هم استفاده بشه و شما باید بر اساس شرکت مقصد و انتظاراتشون و محصولشون، کاور لتر خاص اون شرکت رو بنویسین. برای هر شرکتی بهتره کاور لتر اختصاصی نوشته بشه که قسمتی از اون رو میتونید از قالب کلی خودتون استفاده کنین اما نه همه رو!چجوری نشون بدیم به درد شرکت میخوریم؟یک نکته ی خیلی مهم اینه که شما آگهی اون موقعیت شغلی رو خیلی با دقت بخونین. شرکت ها برای خودشون و برای موقعیت هایی که باز میکنن، یک سری ارزش و انتظارات دارن که معمولا قسمتی از اونها رو داخل آگهی ها میتونید پیدا کنید. توی تصویر بالا، مواردی که با « - » مشخص شده، چیزهایی بوده که مستقیم یا غیر مستقیم داخل آگهی یا داخل وبسایت اون شرکت ذکر شدن. مثلا یک شرکت برای یک موقعیت شغلی داخل آگهی اشاره کرده که تیم فنی بزرگی دارن. خب شما میتونین داخل کاور لتر به این اشاره کنین که داخل تیم های بزرگ کار کردین. چرا؟ چون اون شرکت احتمالا ترجیح میده کسانی رو بگیره که تجربه ی کار در سازمان های بزرگ رو داشته باشن. یا ممکنه نوشته باشن که تجربه ی کار با مایکروسرویس براشون امتیاز مثبت محسوب میشه. همونطور که میبینین من داخل کاور لترم این موارد رو ذکر کردم که در همون نگاه اول ریکروتر کلید واژه هارو ببینه و بفهمه که من میتونم گزینه ی مناسبی برای استخدام باشم. یادتون نره که ریکروتر ها که رزومه و کاور لتر هارو بررسی میکنن، اکثرا آدم های فنی نیستن و صرفا یک سری کلیدواژه براشون مهمه که توی رزومه ی شما ببینن. این کلید واژه ها از طرف تیم فنی معمولا به ریکروتر ها داده میشه که اون هارو داخل رزومه ها جستجو کنن و اگر مشاهده کردن رزومه هارو از فیلتر اولیه رد کنن. پس سعی کنین به چیزهایی که داخل آگهی شغلی ذکر شده خیلی دقت کنین چون همون میتونه باعث بشه به مصاحبه دعوت بشین. همین دقت های شما به جزئیات باعث میشه ناخوداگاه در چشم اون شرکت آدم دقیق و نکته سنجی به نظر بیاین و این نکته ی خیلی مهم و تاثیر گذاریه! حتما سعی کنین واقعا هم آدم نکته سنج و ریز بینی باشین چون خیلی کمکتون خواهد کرد.سایت شرکت رو دست کم نگیرین! خیلی از شرکت ها همه چیز رو توی آگهی شغلی ذکر نمیکنن. همونطور که گفتم نکته سنج و پیگیر بودن امتیاز خیلی مثبتی داره در اکثر موارد. شرکت ها معمولا یک سری اطلاعات خیلی مهم رو روی سایتشون یا اکانت های شبکه های اجتماعی خودشون ارائه دادن که شما با چک کردن اونها میتونین امتیاز مثبتی رو برای خودتون کسب کنین. این بحث رو بازتر مطرح میکنم در پست بعدی.ضمنا هم رزومه هم کاور لتر بهتره خیلی طولانی نباشن و در حد 10 تا 20 ثانیه بشه نکات مهمش رو با چشم اسکن کرد. بعد از مرحله ی کاور لتر و اپلای، منتظر میمونیم که با ما تماس گرفته بشه. اما شما همینطوری منتظر نمونین! توی این بازه ی زمانی کار اصلی شما شروع میشه که در قسمت سوم در موردشون حرف میزنم.در قسمت بعدی، کارهایی که باید و نباید بکنین رو میگم که رعایت همین موارد در نهایت باعث میشه خودتون رو بهتر ارائه بدین توی مصاحبه ها، مخصوصا توی مراحلی که مهارت های نرم و شخصیت شما سنجیده میشه.مرسی که تا اینجا هم همراه بودین. در مورد این پست اگه سوالی دارین حتما توی کامنت بپرسین. امیدوارم بتونم راهنمایی کنم :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Mon, 16 Aug 2021 21:18:43 +0430</pubDate>
            </item>
                    <item>
                <title>مهاجرت کاری و مصاحبه - قسمت اول: مصاحبه ها چطوری ان؟</title>
                <link>https://virgool.io/@Ayub/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%DA%A9%D8%A7%D8%B1%DB%8C-%D9%88-%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D9%87%D8%A7-%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D8%A7%D9%86-wnsxuexy6cyo</link>
                <description>سلام! من ایوبم. مهندس نرم افزار، توسعه دهنده ی سمت سرور(بک اند) و عاشق تکنولوژی. مثل خیلی های دیگه از چند وقت پیش افتادم دنبال پیدا کردن راهی برای مهاجرت. چه چیزی بهتر از مهاجرت کاری برای یه آدم فنی و متخصص که اتفاقا خیلی هم تخصصش خواهان داره؟ پس تصمیم گرفتم شانس خودم رو امتحان کنم و برای کار در کشور های اروپای غربی شروع کنم به اپلای کردن. برای شرکت های مختلف در هلند و آلمان و ... اپلای کردم. مصاحبه های زیادی رو گرفتم، در مصاحبه شرکت های مختلفی رد(ریجکت) شدم در نهایت چند ماه پیش، از یک شرکت هلندی آفر کاری خوبی رو دریافت کردم. اینجا تجربه های خودم در مورد راهی که رفتم رو نوشتم که شما هم در صورت نیاز استفاده کنین و کمکتون کنه که مصاحبه های بهتر و راحت تری داشته باشین و هرچه زودتر به نتیجه دلخواهتون برسین :)این سری از پست ها از 3 قسمت و موضوع اصلی تشکیل میشه که تمرکز اصلیشون روی مهارت های غیرفنی و اصطلاحا مهارت های نرم(سافت اسکیل) هست. برای راحتی مطالعه، در 3 پست جداگانه منتشر میشه:مهاجرت کاری و مصاحبه - قسمت اول: مصاحبه ها چطوری ان؟مهاجرت کاری و مصاحبه - قسمت دوم: رزومه و کاور لِتِرمهاجرت کاری و مصاحبه - قسمت سوم: شرکت رو خوب بشناس!شروع ماجراهمه ی ما برای مهاجرت، دلایل خودمون رو داریم. یکی دنبال تجربه های جدید، یکی دنبال فرار از شرایط خاصی که در جای فعلی داره و دلایل مختلف دیگه. در نهایت هر کسی با توجه به شرایطی که داره، یک روش مهاجرت رو برای خودش انتخاب و سعی میکنه زندگی خودش رو تغییر بده. من هم مثل خیلی از دوستان دیگه، با توجه به تخصصی که دارم و حوزه ای که توش فعالم، دنبال آفر(پیشنهاد) کاری از شرکت های حوزه ی نرم افزار و تکنولوژی رفتم. توی این پروسه، برای شرکت های زیادی در کشور های مختلف اپلای کردم و مصاحبه های مختلفی رو انجام دادم. هدف اصلی من کشور هلند بود اما برای آلمان، انگلیس، سوئد، نروژ، دانمارک و فنلاند هم اپلای میکردم. مصاحبه های کاری مراحل مختلفی دارن که هر کدوم برای خودش مهارت های خاصی رو می‌طلبه و جای خودش بسیار مهمه. من قصد دارم در مورد مهارت های نرم (یکی از مهم ترین مهارت هایی که در مصاحبه ها لازم میشه) صحبت کنم که اتفاقا یکی از مشکلات اکثریت دوستانی هست که وارد روند مصاحبه با شرکت های خارجی(و حتی داخلی) میشن. پس میشه گفت مطالب این پست برای مصاحبه های داخلی هم میتونه مفید باشه. جالبه بدونین اکثر بچه هایی که اپلای و مصاحبه میکنن، توی بحث فنی مشکل ندارن و خیلی هم خوب ظاهر میشن و این مهارت های نرم هست که اونها رو به دام میندازه و شکست میده! البته یادتون باشه شکست و رد شدن توی این پروسه یک چیز کاملا طبیعی و حتی مفیده چون تجربه ی شمارو افزایش میده. حالا من سعی میکنم تا جای ممکن زیاده گویی نکنم(هرچند تو این مورد یکم مشکل دارم :)) ) و برم سر اصل مطلب.مراحل مصاحبهاولین نکته اینکه، هر شرکتی با توجه به فرهنگ سازمانی خودش، ممکنه استراتژی متفاوتی برای جذب و استخدام نیرو داشته باشه. این استراتژی ممکنه برای جذب نیروهای خارجی متفاوت تر هم باشه. یعنی مراحلی که گفته میشه ممکنه توی یک شرکت اصلا وجود نداشته باشن یا روش کاملا متفاوتی برای اجراشون وجود داشته باشه. اما با توجه به تجربه ی شخصی و تجارب بقیه ی دوستانی که حرف هاشون رو شنیدم، مصاحبه ها چند مرحله اصلی دارن:جلسه ی HR screening که معمولا یک تماس کوتاه با ریکروتر(مسئول جذب و استخدام) هست که با شما گپ دوستانه ای بزنه و یک فیلتر اولیه و کلی رو انجام بده. توی این جلسه معمولا به صورت کوتاه در مورد شرکتشون توضیح میدن و انگیزه ی شما رو هم جویا میشن که بدونن رو هوا اپلای نکردین! در واقع این مرحله اولین جایی هست که مهارت های نرم خودش رو نشون میده. اما معمولا همه این مرحله رو قبول میشن و مشکل خاصی نداره. خود شرکت ها هم توی این مرحله معمولا خیلی سخت نمیگیرن که نیروهارو زود از دست ندن. توی مراحل بعدی به طور دقیق تری انگیزه و هدف شما از اپلای سنجیده میشه توسط شرکت.مرحله ی بعدی معمولا یک مصاحبه فنی هست که بسته به نوع موقعیت شغلی، توسط یک یا چند نفر از تیم فنی از شما سوالات فنی پرسیده میشه تا دانش فنی شما رو اعتبار سنجی کنن. این نکته رو یادتون باشه که در کل مراحل، مهارت های نرم هم مهمه اما اندازه ی حساسیتش فرق میکنه!مرحله ی بعدی ممکنه یک تست فنی باشه. به شما یک پروژه میدن انجام بدین که بازهم کامل تر مهارت های ادعا شده ی شما رو بهتر و عملی تر بسنجن. مرحله ی بعدی معمولا دوباره یک جلسه ی فنی دیگه هست که توی اون پروژه و تست فنی ای که انجام دادین رو بررسی میکنن با حضور خود شما و ممکنه ازتون سوال هایی بکنن در مورد راه حل هایی که انتخاب کردین برای حل اون چالش.مرحله ی بعدی که خیلی مهمه معمولا یک جلسه ی cultural fit هست. توی این مرحله شما معمولا با مدیر تیمی که قراره داخلش برین، مدیر منابع انسانی و در نهایت مدیر عامل یا مدیر فنی قراره صحبت کنین. توی این جلسه اهمیت مهارت های نرم بیش از پیش مشخص میشه. اینجا از شما سوالات شخصی در مورد انگیزه ی شما برای همکار شدن با شرکت، تطابق فرهنگی و شخصیتی با ارزش های شرکت و احتمالا کشور مقصد پرسیده میشه و در کل اینجا اکثرا همون جایی هست که بچه ها به مشکل میخورن. چرا؟ به دلایلی که تو ادامه میگم.قسمت بعدی در مورد رزومه و کاور لتر هست. این مرحله اهمیت زیادی داره از اونجایی که فیلتر اولیه و مهمی هست که میتونه به شما یک مصاحبه رو بده یا نده! ممنون از اینکه تا اینجا همراه بودین. در مورد این پست اگه سوالی دارین حتما توی کامنت بپرسین. امیدوارم بتونم راهنمایی کنم :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Mon, 16 Aug 2021 21:16:56 +0430</pubDate>
            </item>
                    <item>
                <title>یک ایده ی بامزه ی اینترنت اشیا(iot) با رزبری پای، پایتون و چاشنی گوگل! (قسمت دوم)</title>
                <link>https://virgool.io/@Ayub/%DB%8C%DA%A9-%D8%A7%DB%8C%D8%AF%D9%87-%DB%8C-%D8%A8%D8%A7%D9%85%D8%B2%D9%87-%DB%8C-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D8%B4%DB%8C%D8%A7iot-%D8%A8%D8%A7-%D8%B1%D8%B2%D8%A8%D8%B1%DB%8C-%D9%BE%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%88-%DA%86%D8%A7%D8%B4%D9%86%DB%8C-%DA%AF%D9%88%DA%AF%D9%84-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-zgeggrpfub3m</link>
                <description>سلام :)تو قسمت قبل کاری کردیم که بشه با مرورگر و با پروتوکل HTTP با یک ریکوست(درخواست) یک چراغ کوچیک رو روشن یا خاموش کرد! تو این نوشته ادامه میدیم و کم کم میریم که کنترل صوتی توسط دستیار صوتی گوگل(google assistant) رو به سیستممون اضافه کنیم و توسعه ش بدیم!اولین چیزی که لازمه بدونین اینه که شما روی رزبری پای یک وب سرور راه اندازی کردین اما این وب سرور فقط به صورت لوکال یا محلی در دسترسه و نمیشه روی اینترنت به اون درخواست ارسال کرد!برای اینکه روی اینترنت بتونین به سرور لوکالتون دسترسی داشته باشین اصولا دوتا راه دارین:یک IP اختصاصی(استاتیک) از ISP تون بگیرید و روی روترتون ست کنین و بعدا تنظیمات NAT رو انجام بدین که ترافیک فوروارد بشه روی رزبری پای و بشه روی اینترنت مثل یه سرور واقعی بهش دسترسی داشت.از داینامیک دی ان اس(DDNS) استفاده کنین که راحت تره اما سرعتش کمی پایین تره! ولی فعلا منطقی تره. خب من راه دوم رو فعلا ترجیح میدم چون رایگانه و کانفیگ های خاص هم نیاز نداره :)ابزار و سرویس های مختلفی هستن که بصورت رایگان دی ان اس به شما اختصاص میدن و با همین IP داینامیکتون هم میتونین کامپیوترتون رو تقریبا به یک سرور با ادرس مشخص تبدیل کنین :)من از ngrok استفاده کردم که میتونین به وب سایتشون برین و داکیومنتشون رو هم مطالعه کنین که خیلی کامله!قطعا قدم اول اینه که توی ngrok ثبت نام کنین و اکانت داشته باشین که راحته مثل هر ثبت نام دیگه ای!قدم دوم اینه که از داخل مرورگری که در رزبری به صورت پیشفرض وجود داره، به آدرس مربوط به دانلود کلاینت ngrok(آدرس صفحه ی دانلود) برید و کلاینت (Linux(ARM رو دانلود کنین روی رزبری پای!توی صفحه ی دانلود و کنار باتن دانلود، راهنمای نصب وجود داره که اگه با لینوکس خیلی میونه ی خوبی نداشته باشین میتونین ازش کمک بگیرین و از طریق ترمینال به راحتی فایل executable رو از فایل فشرده استخراج کنین :)خب وقتی فایل رو دانلود کردین یه ترمینال جدید باز کنین(اگه با VNC به رزبری متصل شدین) یا از SSH استفاده کنین و این کامند هارو به ترتیب اجرا کنین:$ cd home/pi/Downloads$ unzip ngrok.zip$ ./ngrok authtoken &lt;YOUR_AUTH_TOKEN&gt;حالا حتما براتون سوال شد که &lt;YOUR_AUTH_TOKEN&gt; چیه؟! سوال خوبیه!سرویس ngrok برای کانفیگ کردن کلاینتی که دانلود میکنین و اتصال اون به اکانتتون که در وب سایت ساختین از یک توکن یا شناسه ی اختصاصیِ خود شما برای اعتبار سنجی استفاده میکنه که اون رو میتونین داخل پنلتون در ngrok پیدا کنین! بعد از پیدا کردن توکن، اون رو کپی کنین و به جای &lt;YOUR_AUTH_TOKEN&gt; در سومین کامندی که نوشتم قرار بدین و بعد اون کامند رو اجرا کنین!تبریک میگم الان کل کارایی که لازم بود برای دسترسی عمومی به رزبری پای روی بستر اینترنت انجام بدین، انجام شده! یادتون باشه که وب سرور فلسک شما باید در حال اجرا باشه. یعنی همون فایل پایتون که نوشتیم رو باید در حال اجرا داشته باشین که روی پورت 80 بشه اطلاعات رد و بدل کرد!حالا که همه چیز بر وفق مراده، باید کلاینت ngrok رو اجرا کنین که بتونه یک آدرس پابلیک به شما اختصاص بده که با باز کردن اون آدرس در هر جایی از اینترنت، همون لوکال هوست خودتون با هر کدی که نوشتین براتون اجرا بشه! برای این کار، تو همون دایرکتوری ای که فایل executable رو استخراج کردین(دایرکتوری دانلود ها) اون رو با کامند پایین اجرا کنین:$ ./ngrok http 80عبارت HTTP در کامند، پروتوکل و عدد 80 پورت رو مشخص میکنه. دقت کنید که پروتوکل حتما HTTP باشه و پورت هم حتما همون پورتی که در فلسک برای اجرا انتخاب کردین. این پورت لزوما نباید 80 باشه و میتونید به دلخواه اون رو تغییر بدین! خب حالا کامند رو اجرا کنین :)الان ngrok براتون یک اتصال میسازه و لینکی رو با فرمت http://xxxxxx.ngrok.io در ترمینال براتون نمایش میده که به جای عبارت xxxxxx یک رشته ی نامفهوم و رندوم قرار میگیره! اون لینک رو کپی کنید و مثلا با مرورگر گوشیتون یا هر کامپیوتری که به اینترنت عمومی متصله بازش کنین. میبینین که در ترمینالی که ngrok رو استارت کرده بودین در پایین لیستی از درخواست هایی که به رزبری پای اومده وجود داره با کد وضعیت اون درخواستها(status code). حالا لینکی که در نوشته ی قبلی برای روشن یا خاموش کردن چراغ استفاده میکردیم رو تغییر میدیم که بشه روی اینترنت عمومی اینکار رو انجام داد. کافیه که به اخر لینکی که ngrok بهتون داده بود همون / و on یا off رو اضافه کنین:http://localhost:80/on ==&gt; http://xxxxxx.ngrok.io/onhttp://localhost:80/off ==&gt; http://xxxxxx.ngrok.io/offبا باز کردن این آدرس ها میبینین که دقیقا مثل حالت لوکال، چراغتون روشن و خاموش میشه!الان شما چراغتون رو به اینترنت متصل کردین :)خب میریم سراغ قدم بعدی یعنی کنترل چراغ(وسیله ی الکترونیکیتون!) با دستیار صوتی هوشمند گوگل!اول از همه اپلیکیشن google assistant رو روی گوشی اندرویدتون که ترجیحا ورژن اندروید بالاتر از 5 داره نصب کنین. ایمیلی که روی گوشیتون ست شده و با اون sync شده رو هم لازم دارین!حالا به IFTTT.com برین(اینجا میتونید در مورد IFTTT بیشتر بخونین!). میتونین اکانت جدید بسازین یا با اکانت گوگل و ... لاگین کنین به راحتی! خب وقتی لاگین کردین حالا مسئله جالب تر میشه :)بالا سمت چپ یه گزینه وجود داره به اسم My Applets! اون رو باز کنین و روی New Applet کلیک کنین. یه صفحه به شکل پایین براتون باز میشه:روی this که آبی رنگه کلیک کنین. تو صفحه ای که باز میشه google assistant رو توی سرچ باکس وارد کنین و بعد روی آیکون گوگل اسیستنت کلیک کنین. احتمالا ازتون میخواد که اکانت گوگلی که میخواین به این اپلِت وصل باشه و ازش دستورات صوتی رو دریافت کنه انتخاب کنین که باید اینکارو از صفحه ای که باز میشه انجام بدین! بعدش یه صفحه به این شکل باز میشه:اینجا یکی از گزینه هارو انتخاب کنیناز چهار حالت بالا بسته به نیاز میتونین یکی رو برای اپلِت خودتون انتخاب کنین. من اینجا چون یدونه چراغ بیشتر ندارم و فعلا نیازی هم بهش ندارم حالت دوم از سمت راست رو انتخاب میکنم. صفحه ی پایین باز میشه(البته ادامه داره و باید اسکرول کنین به پایین تر!):اینجا در باکس What do you want to say اون جمله ای که میخواین گوگل برای کنترل شیء تشخیص بده رو وارد کنین! مثلا من جمله ی turn on the light رو وارد کردم. وقتی مراحل کامل بشه و اپلِت من ساخته بشه، روی گوشی اندرویدم که به اکانت گوگلم متصله با گفتن این جمله به گوگل اسیستنت، کاری که من در قدم بعدی تعیین میکنم به صورت اتوماتیک انجام میشه! اما یه کار دیگه مونده و اون اینه که ما فقط turn on the light رو نداریم که! turn off the light رو هم داریم!! اینجا از متغییر میتونیم استفاده کنیم که به جای کلمه ی on، بشه متن متغیر گذاشت و مثلا برای هر دو حالت on و off یه اپلِت کافی باشه! برای اینکار به جای کلمه ی on در داخل باکس، علامت دلار یا همون $ رو باید بذارید به این صورت:turn $ the lightاین notation از پیش تعریف شده برای IFTTT هست که خودش تشخیص میده به جای اون علامت دلار قراره یه متن گفته بشه! بعدا از همین متغیر برای روشن و خاموش کردن استفاده میکنیم :)اگه همین صفحه رو یکم پایین تر بیاین یه فیلد با عنوان  What do you want the Assistant to say in response میبینین. اینجا باید اون چیزی که میخواین گوگل اسیستنت در پاسخ به جمله تون بده رو بنویسین. مثلا من مینویسم: ok, the light is $اینجا هم از علامت دلار استفاده کردم چون میخوام وقتی دستور on رو دادم به من بگه ok, the light is on و وقتی دستور off رو دادم بگه ok, the light is off!خب همین فعلا کافیه. در آخر صفحه روی Create trigger کلیک کنید که تریگر ساخته بشه! بعدش شمارو به این صفحه میبره:مرحله ی دوم کانفیگ اپلِتاینجا هم باید روی that که آبی شده کلیک کنین. اینبار تو صفحه ی باز شده تو سرچ باکس کلمه ی webhooks رو بنویسین و آیکونی که براتون پیدا میکنه رو کلیک کنین! تو صفحه ی بعدی یه گزینه بیشتر نیست اونم  Make a web request که همینو انتخاب کنین. صفحه  ای باز میشه اینجوریه:خب اینجا هم تقریبا مشخصه که چیکار باید بکنین :) اولا اون یو آر اِلی که ngrok براتون تولید کرده رو باید وارد کنین(اون xxxxx رو خودتون با رشته ای که بهتون داده جایگزین کنین!). چون ما ساختار یو آر اِلمون جوریه که دستور on یا off که میتونه متغییر باشه آخرش وجود داره، پس باید اینجا یه جور متغییر مشخص کنیم که خودش با مقدار دستوری ما جایگزین بشه! چون کلمه ای که ما میخوایم بگیم عددی نیست و لغته، پس باید دکمه ی Add ingredient رو بزنیم و بعد گزینه ی TextField رو از باکسی که باز میشه انتخاب کنیم که بعد از / قرار بگیره. این یعنی خودش بعدا اون چیزی که ما میگیمو اونجا قرار میده و درخواست رو به وب سرور ما میفرسته. خب الان کار ما تمومه :) به پایین اسکرول کنین و Create action رو بزنین! در نهایت هم برای تایید دکمه ی Finish رو بزنین و تموم :) خب همه ی کارا به قشنگی انجام شد :) الان  گوشیتونو باز کنین و برین توی گوگل اسیستنت یا کافیه بگین OK google که اسیستنت فعال بشه! حالا اون جمله ای که تعیین کرده بودین(turn on/off the light) رو با صدای زیباتون بگین که چراغتون روشن یا خاموش بشه :) به همین سادگی!البته یادتون باشه که ngrok با هر بار اجرا و استارت شدن در یک ترمینال، لینک جدیدی رو بهتون میده و نمیتونین لینک ثابت داشته باشین! پس اگه احتمالا رزبری پای رو خاموش کردین و دفعه ی بعدی باز خواستین  سیستمتون کار کنه، باید دوباره ngrok رو استارت کنین و لینک جدیدی که میده رو در IFTTT و در تنظیمات اپلِتی که ساخته بودین وارد کنین که مشکلی نداشته باشه و اجرا بشه!امیدوارم چراغ زندگیتون همیشه روشن باشه :)کامنت بذارین، کامنتاتون قشنگه :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Thu, 20 Dec 2018 02:46:24 +0330</pubDate>
            </item>
                    <item>
                <title>یک ایده ی بامزه ی اینترنت اشیا(iot) با رزبری پای، پایتون و چاشنی گوگل! (قسمت اول)</title>
                <link>https://virgool.io/@Ayub/%DB%8C%DA%A9-%D8%A7%DB%8C%D8%AF%D9%87-%DB%8C-%D8%A8%D8%A7%D9%85%D8%B2%D9%87-%DB%8C-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D8%B4%DB%8C%D8%A7iot-%D8%A8%D8%A7-%D8%B1%D8%B2%D8%A8%D8%B1%DB%8C-%D9%BE%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%88-%DA%86%D8%A7%D8%B4%D9%86%DB%8C-%DA%AF%D9%88%DA%AF%D9%84-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-dzrjhzytq5d0</link>
                <description>بازم سلام!همین اول بگم که در این قسمت شما قراره یه وسیله رو با ارسال یک درخواست تو مرورگر کنترل کنین :دی.من کلا به خیلی چیزا علاقه دارم و دنبال میکنم. حداقل برای ارضای حس کنجکاوی خودمم که شده باید حتما هر چند وقت یبار حداقل تفریحی یه کار جدید و از نظر خودم جذاب انجام بدم!یکم قبل مثل خیلی ها به اینترنت چیزها،اشیا یا همون IoT علاقه ی بیشتری پیدا کردم و این باعث شد یکم پول خرج کنم! گشتم و گشتم یه رزبری پای پیدا کردم که خداروشکر قیمتش بهتر از بازار برام دراومد(تحریم ها که اصلا اثری نداره :دی ). رزبری پای که دستم رسید کارای مختلفی باهاش کردم و یجورایی توش سَرَک کشیدم. یه کارای ساده و عادی باهاش کردم که یکم حالمو خوب کرد. کم کم دیدم میشه کارای باحال تریم کرد!!من که اصولا آدم خسته ایم، خیلی دوست دارم یکم راحت تر بشه کارهارو انجام داد. خب طبیعتا رفتم سراغ چیزی که اکثر افراد با اون هدف میان سمت  اینترنت چیزها(حداقل مبتدی ها)!قدم اول این بود که یه چراغ رو بتونم خاموش روشن کنم که طبیعتا با چند خط پایتون حل میشه و کار خاصی نداره. البته در کل کاری که امروز میخوام در موردش تقریبا توتوریال وار بنویسم هم در کل سخت نیست ولی یجورایی جالبه!خب بریم سر اصل مطلب:اولا که شما باید یسری اصول الکترونیک(نگران نباشین ساده ان!) رو بلد باشید که ماشالله گوگل در خدمت بشریته! اما خب تو شرایط من که با رزبری پای 3 مدل بی کار میکنم، باید حداقل کار با پین های GPIO رو بلد باشم! راستی یادتون باشه رزبری پای رو اول باید راه اندازی کنین(با نصب توزیع لینوکس مخصوصش یعنی Raspbian ) اصولا پایتون و پکیج های مربوط به کنترل GPIO از قبل روی رزبیَن نصب شده و لازم نیست کاری بکنین. فقط کافیه یکم از پایتون سر در بیارین که البته اگه سرم در نمیارین مهم نیست چون کداشو میذارم :دی ولی بهتره برای کنترل اعصابتون موقع کار بلد باشین دیگه :دی .رزبری پای 3 مدل بی 40 پین داره که اینجا یه عکس از شماتیکش رو گذاشتم:ترتیب و کاربرد پین های GPIO در رزبری پای 3 مدل بیاگه مدار منطقی خونده باشین اصولا باید میدونین که GND چیه یا سریال پورت چیه و یا ورودی دیجیتال و آنالوگ! یکم در موردش مرور کنین بد نیست.در کل بگم که میتونین از کل پین هایی که به رنگ نارنجی هستن برای ارسال یا دریافت اطلاعات دیجیتال(0 و 1) استفاده کنین! خب کاربردش چیه؟؟ مسلما وقتی میخوایم یک چراغ(یا رله یا هر چیزی) رو کنترل کنیم باید بتونیم اطلاعات رو بهش ارسال یا ازش دریافت کنیم(بستگی به اون وسیله و کاربردش داره). در مثال ما که یک چراغ ساده هست، فقط کافیه اطلاعات 0 یا 1 رو برای کنترل روشن یا خاموش بودن ارسال کنیم.خب من اینجا یک دیود نورانی ساده که با vcc یا  همون 5 ولت کار میکنه(البته به پایه کوتاه ترِش یا همون پایه ی منفی بهتره یه مقاومت 1 کیلو اهمی وصل کنید که نسوزه بدبخت!) رو استفاده کردم. پایه ی منفی رو به یکی از پین هایی که با GND مشخص شده وصل میکنم. پایه ی مثبت رو هم به هرکدوم از پین های نارنجی رنگ که دلم میخواد وصل میکنم :دی (من اینجا پایه ی منفی رو به پین شماره 6 و پایه ی مثبت رو به پین شماره ی 12(GPIO18) وصل کردم)!خب اتصالاتم درسته. الان من میخوام کاری کنم که با استفاده از مرورگر خود رزبری پای یا بقیه ی کامپیوتر هایی که با رزبری شبکه شدن(همه به یک اکسس پوینت وصل شدن) بتونم با ارسال یک درخواست HTTP به وب سروری که قراره روی رزبری پای راه بندازم، اون چراغ رو خاموش یا روشن کنم!خب همونطور که گفتم ما اول نیاز داریم که یک وب سرور راه بندازیم. باید بگم شما میتونید از هر تکنولوژی و زبانی که دلتون میخواد(البته اگه بتونه با GPIO ارتباط برقرار کنه) کار کنید اما من اینجا چون راحت تره ترجیح میدم از پایتون عزیز استفاده کنم و البته از فریمورک محبوبش یعنی Flask!فلَسک رو میتونید به راحتی روی رزبری نصب کنید. با pip(پکیج منیجر پایتون) کارتون راحت تر هم میشه. در مورد نصب فلَسک مطلب زیاده. میتونید از این لینک استفاده کنید :)خب قدم بعدیمون میشه راه اندازی وب سرور و نوشتن کدهامون:ما در این پروژه نیازی به یو آی نداریم پس ویو ای رو نخواهیم داشت! یک فایل پایتون بسازین و داخلش این کدهارو بنویسین:from flask import Flask
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM) #set numbering mode of GPIO pins 
GPIO.setwarnings(False) #don&#039;t show warnings! 
GPIO.setup(18, GPIO.OUT) #set GPIO 18(pin number 12) as output pin

app  =  Flask(__name__)
@app.route(&quot;/&lt;status&gt;&quot;) #status is a wildcard here! it can be any string
def index(status): #status is a variable same as the wildcard
    if status == &quot;on&quot;:
        GPIO.output(18, GPIO.HIGH) #giving 5 volts to GPIO18 pin. it will turn the LED on!
        return &quot;on&quot; #prints &quot;on&quot; on the browser!
    elif status == &quot;off&quot;:
        GPIO.output(18, GPIO.LOW) #giving 0 volts to GPIO18 pin. it will turn the LED off! 
        return &quot;off&quot; #prints &quot;off&quot; on the browser!
    else:
        return &quot;error!&quot; #prints &quot;error&quot; on the browser!
if __name__ ==  &quot;__main__&quot;:
    app.run(host=&#039;0.0.0.0&#039;, port=80, debug=True) #it will run the web server on localhost:80!کامنت هارو حتما نگاه کنین تا متوجه کاربرد هر خط بشین. همونطور که میبینین روند کار خیلی ساده هست.بعد از نوشتن کد ها، فایل رو ذخیره کنید و یک ترمینال جدید باز کنین و برین به مسیری که فایلتون رو اونجا ساختین! حالا باید وب سرور رو اجرا کنین:$ sudo python myfile.pyوقتی وب سرور اجرا شد یه تب جدید تو مرورگر باز کنین و به این ادرس یک درخواست بفرستین:http://localhost:80/onاگه همیه چیز درست سِت شده باشه باید چراغ روشن بشه و اگه بعد از / کلمه ی on رو به off تغییر بدین و دوباره درخواست رو بفرستین چراغ خاموش میشه :دی. خب تبریک میگم الان شما دقیقا یک پروژه ی خیلی ساده ی مبتنی بر اینترنت چیزهارو  انجام دادین :دی.قدم بعدی که تو بلاگ پست بعدی دنبال میکنیم کمی خفن تر کردن همین پروژه با دستیار صوتی گوگل و روی اینترنت به صورت عمومیه D:نظراتتون مایه ی شادکامیه قطعا :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Sun, 16 Dec 2018 03:26:42 +0330</pubDate>
            </item>
                    <item>
                <title>چطور فاصله ی دو نقطه با طول و عرض جغرافیایی رو توی کد حساب کنیم؟؟</title>
                <link>https://virgool.io/@Ayub/%DA%86%D8%B7%D9%88%D8%B1-%D9%81%D8%A7%D8%B5%D9%84%D9%87-%DB%8C-%D8%AF%D9%88-%D9%86%D9%82%D8%B7%D9%87-%D8%A8%D8%A7-%D8%B7%D9%88%D9%84-%D9%88-%D8%B9%D8%B1%D8%B6-%D8%AC%D8%BA%D8%B1%D8%A7%D9%81%DB%8C%D8%A7%DB%8C%DB%8C-%D8%B1%D9%88-%D8%AA%D9%88%DB%8C-%DA%A9%D8%AF-%D8%AD%D8%B3%D8%A7%D8%A8-%DA%A9%D9%86%DB%8C%D9%85-ik9scncppgvu</link>
                <description>اول سلام :)این اولین نوشته ی من تو ویرگوله و اگه بدرد کسی هم خورد بیشتر خوشحال میشم :)اگه برنامه نویس باشین، احتمالا خیلی وقتا و تو خیلی پروژه ها و یا قسمتی از یه پروژه لازم شده روی داده های جغرافیایی محاسباتی انجام بدین. مثلا ازتون خواسته باشن که یه وب اپلیکیشن توسعه بدین که داخلش کاربر بتونه نزدیکترین شعبه ی فلان فروشگاه رو روی نقشه ببینه و بدونه که چقدر فاصلشه. جالبه نه؟؟ چون اکثر اپلیکیشن ها و استارت آپ های این روزا دارن خدمات مبتنی بر موقعیت مکانی ارائه میدن و خیلی هم رو بورسه!خب بریم سراغ یسری کانسپت ها :)اولش باید بگم که داده ی موقعیت مکانی چیه! اگه از ریاضیات چیزی خونده باشین که فکر میکنم اکثرا خوندین، احتمالا میدونین که روی صفحه ی مختصات، هر نقطه دوتا مولفه یا مشخصه داره. اونجوری که ما خوندیم و یاد گرفتیم این دوتا مولفه رو معمولا با دو متغیر X , Y مشخص میکنیم که تقاطع خطی که هر کدوم از این متغیر هارو قطع میکنه میشه موقعیت نقطه ی مورد نظر ما روی صفحه:صفحه ی مختصاتخب تو تصویر بالا میبینین که دوتا محور X , Y داریم. هر نقطه هم موقعیتش همونطور که قبلا گفتم با دو مولفه مشخص شده. مثلا نقطه ی (5 ، 4) یعنی 4 واحد روی محور X و 5 واحد روی محور Y حرکت کنیم که به این نقطه برسیم. این از مفهوم مختصات که البته خیلیاتون بلد بودین ولی خب گفتم بنویسم بهتره :)حالا وقتی بخوایم فاصله ی بین دو نقطه رو روی محور پیدا کنیم چطوری باید اینکارو بکنیم؟؟خب این کار به راحتی با فرمول زیر قابل انجامه (sqrt همون رادیکاله و علامت ^ همون توان) :  Distance =sqrt((x2−x1)^2+(y2−y1)^2)خب این فاصله دو نقطه در صفحه ی مختصات عادی رو میده بهمون!حالا مختصات هر نقطه روی کره ی زمین هم همینطوره و یک طول و عرض جغرافیایی(Longitude &amp; Latitude) داره. شاید الان فکر کردین که با همین فرمول میشه فاصله ی دو نقطه روی کره ی زمین رو هم حساب کرد اما باید بگم نه...دلیل اینکه نمیشه اینکارو کرد کروی بودن و غیر صاف بودن زمینه. یعنی وقتی زمین قوس داره امکان اینکه فاصله رو انقدر راحت بدست بیارین نیست(البته میفهمین که راحته ولی نه انقدر دیگه :دی ).فاصله ی دو نقطه روی سطح کره(بدون در نظر گرفتن پستی بلندی ها و فقط سطح صاف) از فرمول زیر محاسبه میشه :یکی از فرمول های محاسبه ی فاصله ی نقاط جغرافیاییمشخصه که هر متغیر معادل چه مقداریه. البته دلتا میشه اختلاف طول های جغرافیایی دو نقطه! R هم که میشه شعاع کره ی قشنگمون زمین :)البته این رو هم بدونین که این فقط یکی از چند فرمول محاسبه هست و فرمول های دیگه با پرفورمنس های دیگه هم وجود داره که میتونین اینجا در موردشون بیشتر بخونین!من در این نوشته از PHP استفاده میکنم و یک فانکشن(تابع ، متد) برای محاسبه ی فاصله ی دو نقطه مینویسم:function getDistance($lat1, $lon1, $lat2, $lon2) {
$rad = M_PI / 180;
$radius = 6371; //earth radius in kilometers
return acos(sin($lat2 * $rad) * sin($lat1 * $rad) + cos($lat2 * $rad) * cos($lat1 * $rad) * cos($lon2 * $rad - $lon1 * $rad)) * $radius; //result in Kilometers
}این فانکشن دقیقا فاصله ی بین دو نقطه رو به شما میده که میتونین با توجه به توابع مثلثاتی که استفاده شده در هر زبان برنامه نویسی دیگه ای هم اون رو پیاده سازی و استفاده کنین.برای اینکه با محاسبات روی داده های جغرافیایی در MySQL هم بهتر و کاربردی تر آشنا بشین این لینک رو مطالعه کنین که حتما بدردتون میخوره :)فکر کنم تا اینجا فعلا کافی باشه و بقیشو میسپارم به خودتون :)با نظرتون من رو خوشحال تر کنین :)</description>
                <category>AYUB</category>
                <author>AYUB</author>
                <pubDate>Wed, 31 Oct 2018 02:39:36 +0330</pubDate>
            </item>
            </channel>
</rss>