<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های mreza_golestan</title>
        <link>https://virgool.io/feed/@mreza_golestan</link>
        <description>موسس و مدیر فنی پیو / کارشناس ارشد هوش مصنوعی، توسعه دهنده نرم افزار</description>
        <language>fa</language>
        <pubDate>2026-06-16 06:27:45</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/10400/avatar/eOQnoI.jpg?height=120&amp;width=120</url>
            <title>mreza_golestan</title>
            <link>https://virgool.io/@mreza_golestan</link>
        </image>

                    <item>
                <title>GitHub Actions: یه روش ساده و کم هزینه برای راه اندازی CI/CD</title>
                <link>https://virgool.io/@mreza_golestan/github-actions-%DB%8C%D9%87-%D8%B1%D9%88%D8%B4-%D8%B3%D8%A7%D8%AF%D9%87-%D9%88-%DA%A9%D9%85-%D9%87%D8%B2%DB%8C%D9%86%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-cicd-kv99gjud4x1y</link>
                <description>پروژه مون آمادست و میخوایم بفرستیمش روی سرور. چه روشهایی داریم؟ یه سرور بگیریم و نرم افزارا رو نصب و کانفیگ کنیم ( مثلا PHP, Ngnix, MySQL و ....)برای پروژه مون داکر بنویسیم و اونو روی یه سرور عادی یا روی بستر K8 بالا بیاریمجدا از اینکه کدوم روشو در پیش بگیریم ما به یه CI/CD نیاز داریم که وقتی تغییری توی کدمون میدیم و روی git می فرستیم فرایند پول شدن پروژه روی سرور و اجرای دستوراتی که باید خودکار انجام شه.خوب چطوری این automation رو انجام بدیم؟من هر چه دیدم دور و برم بچه های DevOps کار چنین روشی رو رفتن یه سرور گیت لب گرفتن ( حداقل منابع مورد نیاز ۴ کور CPU و  4 گیگ رم و حدود ۵-۷ روز تا آماده پروداکشن بشه - با تمام تنظیمات و امنیت و ... که باید لحاظ بشه این زمانو گفتم)توی سرور مقصد گیت لب رانر نصب و کانفیگ می کنن ( بیش از ۱ گیگ رم و حدود ۱ روز کاری زمان)حالا کانفیگ CI رو برای گیت لب می نویسن تا دستورات دلخواه اجرا شه ( اینم حدود ۱ روز طول میکشه)همینطور که می بینین ما به منابعی با بیش از ۴ کور CPU و ۵ گیگ رم و بیش از ۷ روز کاری زمان نیاز داریم. آیا این برای همه پروژه ها منطقیه؟اگر شما یه دولوپر فول استک هستین و دوست دارین تمام کاراتونو خودتون انجام بدین، از طرفی میخواین پروژه تون هزینه پایینی داشته باشه نیازه برین سراغ ....GitHub Actionsگیت هاب چند سالیه که امکان ساخت ریپو خصوصی رو فراهم کرده، دیگه هم مشکلی با ایرانی بودن نداره. پس اول از همه بهتره بریم سراغ گیت هاب. اینطوری هم پروژه های خصوصیمون و هم عمومی یک جا خواهد بود.از طرفی ابزاری معرفی کرده به نام GitHub Actions که به شما کمک میده بعد از پوش/پول هر برنچ دلخواه عملیاتی که شما میخواین انجام شه.چطوری اکشن برای گیت هاب بنویسیم؟تتوی گیت هاب یه سر برگ به نام Actions هست و اونجا میتونین از روی نمونه ها یا داکیومنت کامل پیش برین. اما اینجا من میخوام در یک زمان کوتاه یه روش ساده برای انجام کارتون رو یاد بگیرین. پس بریم:۱. توی ریپوزیتون یه پوشه به نام .github بسازین و درون اون یه پوشه دیگه به نام workflows می سازین. داخل این پوشه قراره تنظیمات اکشن رو بسازیم۲. اینجا میتونین یک یا چند فایل با پسوند yml بسازین و اکشن ها رو اونجا بنویسین. من دو تا فایل ساختمdevelop.yml: برای اکشن های محیط stagingmain.yml: اکشن های سرور پروداکشن۳. خوب حالا بریم برای نوشتن فایل اکشن ( که بهش workflow گفته میشه )name: Main Deployیه اسم برای ورک فلو تون انتخاب کنین. این اسم رو توی صفحه اکشن ها در آینده می بینین. من باز اسم محیط پروداکشن و تست رو متفاوت قرار دادم.name: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]خوب در ادامه event ای رو که در ازای اتفاق افتادنش میخوایم این ورک فلو اجرا بشه رو مشخص کردیم. همینطور که می بینین مشخص شده که در طی پوش به برنچ main اجرا بشه.name: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]jobs:  api-main:خوب حالا برای این ورک فلو میتونین چندین جاب تعریف کنیم که همزمان اجرا بشن. ما در اینجا یه جاب تعریف می کنیم. در ابتدای امر برای اون جاب اسمی انتخاب می کنیم ( api-main ) اسمیه که من برای جاب گذاشتم.name: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]jobs:  api-main:    runs-on: ubuntu-latestخوب runs-on چی میگه؟ ببینید گیت هاب برای اجرای اکشن ها یه سری رانر خودش داره و اکشنی که شما تعریف می کنین رو توی اون محیط اجرا میکنه. به عنوان مثال من اینجا مشخص کردم که روی رانری که ubuntu نسخه آخر رو داره اجراش کن.name: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]jobs:  api-main:    runs-on: ubuntu-latest    steps:      - name: Connect to Server &amp; Push Updateخوب حالا این جاب api-main یه سری مراحل باید داشته باشه دیگه. ما برای هر مرحله اسمی میتونیم بزاریم که حین اجرای اکشن توی گیت هاب مراحل لاگ انداخته میشه و اگر هر عملی دچار مشکل بشه متوجهش میشین. به عنوان مثال شکل زیر      - name: Go to Project Folder
               run: sudo cd /home/project

        - name: Make new Folder
               run: sudo mkdir testاینجا دو مرحله تعریف شده. ( توجه کنین به تو رفتگی ها indent - این فایل Yaml هست و تو رفتگی ها بسیار مهمه)خوب برگردیم به مثال خودمون:name: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]jobs:  api-main:    runs-on: ubuntu-latest    steps:      - name: Connect to Server &amp; Push Update        uses: appleboy/ssh-action@masterمن اینجا میخوام بصورت SSH به سرور خودم وصل شم و دستورات دلخواهم رو انجام بدم. ما میتونیم یا مثل مثال بالا از عبارت run استفاده کنیم و یه دستوری رو اجرا کنیم یا از عبارت uses استفاده کنیم. اما این uses چی میگه؟شما ممکنه برای اتصال به سرور و نقطه مقصد نیاز به یه سری نرم افزار نصب شده و موارد این چنینی داشته باشین. طبعا اون نرم افزار روی رانر گیت هاب نصب نیست. پس شما اینجا توی uses یک ریپوزیتوری رو مشخص میکنین ( طبعا توی خود گیت هاب باید باشه ) که توی اون ریپوزیتوری فایل docker ای نوشته شده برای ساپورت نیاز شما. مثلا یه ریپوزیتوری برای اتصال به AWS خواهد بود. یکی دیگه برای Azure و ...از طریق مثالهای خود گیت هاب میتونین با موارد مختلف آشنا شین. اما یه ریپوزیتوری ک من میخواستم و توی گیت هاب ندیدمش. اتصال ssh و انجام دستورات. ریپوزیتوری appleboy/ssh-action  برای این نیاز هست. پس ما در اینجا به همین دلیل uses رو با مقدار این ریپو مشخص کردیم.name: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]jobs:  api-main:    runs-on: ubuntu-latest    steps:      - name: Connect to Server &amp; Push Update        uses: appleboy/ssh-action@master        with:          host: ${{ secrets.HOST }}          port: ${{ secrets.PORT }}          username: ${{ secrets.USERNAME }}          key: ${{ secrets.SSH_PRIVATE_KEY }}خوب این ریپو طوری نوشته شده که نیاز داره یه سری مقادیر رو براش مشخص کنین. پس از عبارت with استفاده می کنیم و با تو رفتگی بیشتر داخلش موارد فوق رو مشخص می کنیم، مثلا اینطوری host: 10.25.31.26اما چرا ما اینطوری نوشتیمش:host: ${{ secrets.HOST }}طبعا شما نمیخواین کسی که به ریپوی شما دسترسی داره ( مثلا یکی از برنامه نویسها ) یا حتی ریپو عمومی باشه بتونه این فایل رو بخونه و اطلاعات سرور رو شما رو متوجه بشه. پس از عبارت ${{ secrets.HOST }} استفاده کردیم تا این مقدار رو جای دیگه تعریف کنیم. اما اونجا کجاست؟توی بخش settings همین پروژه توی بخش secrets and variables یه زیر بخش به نام actions هست. همونطور که توی عکس مشخصه من مقادیر رو وارد کردم. ( اگر حتی کسی بیاد و ویرایش رو بزنه مقدار فعلی رو نمیتونه ببینه)خوب حالا اون داکری که ساخته میشه تا ssh بزنه میتونه به سرور ما وصل شه. اما با یک نکته. ما بایستی کلید خصوصی ssh سرور مقصدمون رو اینجا وارد کنیم. خوب چطوری اونو بدست میاریم؟توی سرور خودتون این دستور رو اجرا کنینssh-keygen -t rsa -b 4096 -C &quot;mreza_golestan@live.com&quot;بلافاصله سوالی پرسیده میشه که پیشنهاد میکنم در جوابش مقدار github-actions رو وارد کنین. تا کلیدی که ساخته میشه مجزا باشه و با همین نام. حالا دستور زیر رو اجرا کنین sudo cat ~/.ssh/github-actionsبا این دستور ما مقدار داخل فایل کلید خصوصی github-actions رو که درون پوشه .ssh ساخته شده خواهیم دید. این مقدار رو کپی کنین و داخل مقدار SSH_PRIVATE_KEY گیت هاب بزارینname: Main Deployon:  push:    branches: [ &amp;quotmain&amp;quot ]jobs:  api-main:    runs-on: ubuntu-latest    steps:      - name: Connect to Server &amp; Push Update        uses: appleboy/ssh-action@master        with:          host: ${{ secrets.HOST }}          port: ${{ secrets.PORT }}          username: ${{ secrets.USERNAME }}          key: ${{ secrets.SSH_PRIVATE_KEY }}          script: |            cd /home/testapi            git reset --hard &amp;&amp; git pull origin master            composer dump-autoload            composer update            php artisan storage:link            php artisan migrate            php artisan optimizeحالا در ادامه داخل عبارت script دستورات دلخواهتون رو قرار بدین.نمونه مثالی که من آوردم برای اجرای لاراول هست. یه توضیحی درباره اش میدم شاید کمک کننده باشه: در ابتدا وارد پوشه پروژه شدیمدستور git reset --hard &amp;&amp; git pull origin master رو اجرا کردیم. قسمت اول باعث میشه اگر یه زمانی خدای نکرده. گوش شیطون کر رفتین یه فایل پروژه ( که البته جزو گیت باشه) رو ویرایش کردین دچار مشکل نشیم. چون در این صورت دستور git pull خطا میده. اما git reset --hard باعث میشه اول کدها به حالت آخرین کامیت در بیان و بعد git pull زده بشهدستور composer dump-autoload هم قبل از update زدم. چرا؟ اگر library جدیدی اضافه کرده باشین که نیاز بوده service provider اشو توی config/app.php بزارین. حین دستور update خطا میگیرین مگر dump-autoload کرده باشیندر نهایت هم که دستورات artisan خود لاراول رو زدمطبق تجربه خود من در کمتر از یک دقیقه نسخه جدید کد شما روی سرور با موفقیت قرار میگیره.یه نکته: گیت هاب اکشن تا ۲۰۰۰ دقیقه اجرا در ماه رایگانه. که حدود ۲ هزار پوش میشه. یعنی بیش از ۶۶ تا پوش در روز. ک بعید میدونم این تعداد پوش انجام بدین در روز. اما اگر هم احیانا براتون کم باشه. هر دقیقه ۰.۰۰۸ دلار هزینه داره یعنی اگر ۱۰۰۰ دقیقه اضافه تر هم استفاده کنین فقط ۸ دلار نیازه بپردازین.طبق تجربه من یه تیم ۱۰ نفره هم عموما به این محدودیت ۲۰۰۰ دقیقه نمیرسهامیدوارم این مطلب براتون مفید باشه. خوشحال میشم نظر بدین</description>
                <category>mreza_golestan</category>
                <author>mreza_golestan</author>
                <pubDate>Sun, 07 May 2023 15:23:14 +0330</pubDate>
            </item>
                    <item>
                <title>یک سازمان چه دپارتمانهایی میتونه داشته باشه؟</title>
                <link>https://virgool.io/@mreza_golestan/%DB%8C%DA%A9-%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86-%DA%86%D9%87-%D8%AF%D9%BE%D8%A7%D8%B1%D8%AA%D9%85%D8%A7%D9%86%D9%87%D8%A7%DB%8C%DB%8C-%D9%85%DB%8C%D8%AA%D9%88%D9%86%D9%87-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%D9%87-tkogi5ghetnf</link>
                <description>برای شناخت بهتر سازمان در مراحل سیستم سازی کسب و کار نیاز داریم دپارتمانهای سازمانمونو لیست کنیم.اما یک سازمان میتونه چه دپارتمانهایی داشته باشه؟بخش های پایه ای سازمانها:منابع انسانیمالیاداریانبار اداری ( شامل تمام تجهیزاتی که در بخش های مختلف سازمان به عنوان دارایی خریداری شده از یک ماژیک ساده گرفته تا کامپیوترها و ...)فناوری اطلاعات: این بخش بسته به گستردگی سازمان میتونه از یک Help Desk ساده باشه که شبکه داخلی کامپیوترهای سازمان رو مدیریت کنه، سیستم ها رو خریداری کنه، نصب کنه، نرم افزارها رو نصب و مدیریت کنه و به نوعی کمک افراد سازمان در حوزه شبکه و سخت افزار و نرم افزار باشه.بخش های مارکتینگ:بازاریابی، تحقیق بازار و ...تبلیغاتفروشپشتیبانیخدمات پس از فروشاگر سازمان محصولی رو تولید کنه:تامین قطعهانبار قطعاتدپارتمانهایی به تفکیک مراحل تولید محصولارزیابی کیفی (QC)اگر سازمان محصول رو به فروش برسونه:انبار محصولنصبشبکه نمایندگیاگر سازمان خدمات ارائه بده: کاملا وابسته به فرایندهای اون خدمت دارهنکته: در مورد استارتاپها ماجرا یک مقدار میتونه متفاوت باشه مثلا استارتاپی که یک حسابداری آنلاین رو تولید کرده خود اون نرم افزار یک محصوله و تمامی مراحل محصول رو شامل میشه ولی دیگه اونجا قطعه ای وجود نداره و قطعات اون محصول سرور و موارد غیر ملموس این چنینی هستن. در عین حال وقتی میخواد اون حسابداری رو ماهانه به مشتریش اجاره بده چیزی شبیه به یک سازمان خدمات محور میشه.</description>
                <category>mreza_golestan</category>
                <author>mreza_golestan</author>
                <pubDate>Sun, 08 Jan 2023 17:10:59 +0330</pubDate>
            </item>
                    <item>
                <title>چی میشه اگه برای کسب و کارمون سیستم سازی نکنیم؟</title>
                <link>https://virgool.io/@mreza_golestan/%DA%86%DB%8C-%D9%85%DB%8C%D8%B4%D9%87-%D8%A7%DA%AF%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D8%B3%D8%A8-%D9%88-%DA%A9%D8%A7%D8%B1%D9%85%D9%88%D9%86-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%86%DA%A9%D9%86%DB%8C%D9%85-xsouezrfew8h</link>
                <description>اگه نمیدونین سیستم سازی کسب و کار چیه در این مورد قبل تر توضیح دادمعموم افرادی که یه سازمان رو شکل میدن درباره اداره کلی کسب و کار (مالی، محصول یا خدمت، تبلیغات، بازاریابی، فروش و ...) اطلاعات دارنپس با همون دانش دپارتمانهای لازم رو شکل میدن، افرادی مدیریت هر دپارتمان رو شکل میدن و فرض می کنیم حتی توی دپارتمان خودشون دانش بالایی دارن و به خوبی اون دپارتمان رو شکل میدن. اما مشکل از کجا شروع میشه ارتباط بین دپارتمان ها بدرستی تعریف نمیشه و مشکلات زیادی بوجود میاد (عدم همکاری و اتصال صحیح بین دپارتمان ها و بعضا تعارض منافع ظاهری در اهداف هر دپارتمان و بسیاری مشکلات دیگر)خیلی اوقات در عمل و به خصوص در شروع شکل گیری سازمان، افرادی هستن که کارهای مختلفی انجام میدن و ممکنه اون کارها شامل وظایفی بشه که در قالب چند دپارتمان باشه (اینجا مرزبندی بین دپارتمان ها بهم میریزه و این هم مشکلات عدیده ای رو با خودش داره). ذات این موضوع البته ایرادی نداره و اجتناب ناپذیره اما اگر سیستم سازی انجام نشه side effect ها و مشکلاتی رو با خودش میاره.اما وقتی میخوایم برای کسب و کارمون سیستم سازی کنیم، چند قدم به عقب میریم و از بالا و بطور کلی تری کسب و کار و فرایندهاش رو می بینیم و اینجاست که مشکلات فرایندها، نقاط تعارض بین فرایندها و افراد و ... رو می بینیم و از همه مهمتر حالاست که میتونیم ببینیم چه تغییراتی میتونیم بدیم تا فرایندها سریعتر بشن، هزینه کمتری به مجموع سیستم ایجاد کنن و از همه مهمتر کدوم بخش های فرایند رو میتونیم به یه یک سیستم سخت افزاری یا نرم افزاری بسپریم و به عبارتی خودکار سازی (Automation) کنیم.خوب، حالا مراحل سیستم سازی کسب و کار چیاست؟</description>
                <category>mreza_golestan</category>
                <author>mreza_golestan</author>
                <pubDate>Sun, 08 Jan 2023 16:36:32 +0330</pubDate>
            </item>
                    <item>
                <title>سیستم سازی کسب و کار، به زبان ساده</title>
                <link>https://virgool.io/mrezagolestan/%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B3%D8%A7%D8%B2%DB%8C-%DA%A9%D8%B3%D8%A8-%D9%88-%DA%A9%D8%A7%D8%B1-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-ni9gpgtcyx6v</link>
                <description>چرا شروع کردم به بررسی نحوه سیستم سازی کسب و کار؟ دوست داشتید از اینجا در جریان قرار بگیریدخوب بریم سراغ بحث این مطلبسیستم چیه؟هر مجموعه ای که شبیه خط تولید کار میکنهخط تولید خصوصیتی داره؟هر جزئش وظیفه مشخصی دارهاجزاش به خوبی به هم وصلن ( حالا یا بصورت خودکار با دستگاه و نرم افزار و .... یا ارتباط بین افراد)سیستم سازی توی کسب و کار چه معنی میده؟کاری کنیم اجزاء کسب و کارمون شبیه سیستم بشنیک سازمان شامل مجموعه مراحلی از کار برای پیشبرد کارهاش میشه که به اون فرایندهای کاری اون سازمان میگیمو اجزا یک سازمان (تمام المانهایی که باعث پیشبرد کارها و فرایندهای کاری اون سازمان میشن) شامل:ساز و کارهای سخت افزاری و نرم افزاری (که بواسطه تکنولوژی های روز میتونن جایگزین فرد بشن و باعث بهبود و سرعت دادن به فرایندهای کاری اون سازمان میشن)افراد (چرا که تمامی فرایندهای کاری سازمان نمیتونه خودکار و تکنولوژیک باشه)خوب حالا چی میشه اگه برای کسب و کارمون سیستم سازی نکنیم؟</description>
                <category>mreza_golestan</category>
                <author>mreza_golestan</author>
                <pubDate>Sun, 08 Jan 2023 15:45:30 +0330</pubDate>
            </item>
                    <item>
                <title>داستان سیستم و سازی کسب و کار ما</title>
                <link>https://virgool.io/mrezagolestan/%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86%D9%87%D8%A7-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%87%D8%A7%DB%8C-%D8%AF%D8%B1%D9%88%D9%86-%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86%DB%8C-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%B3%DB%8C%D9%88%D9%86-%D9%88-%DA%86%D8%A7%D9%84%D8%B4%D9%87%D8%A7%DB%8C-%D8%A2%D9%86%D9%87%D8%A7-%D8%A7-sm82chujozks</link>
                <description>آخرین بروز رسانی: ۱۷ دی ۱۴۰۱سلام دوست منخوب حالا که محصولمون (پیود) و تیم از ساید نرم افزار به پختگی لازم رسید من میتونم تیم نرم افزار رو بسپرم به دوستان و هم تیمی هام و بیام سراغ بخش های دیگه بیزینس و سیستم سازی کسب و کار مون.همونطور که شاید بدونین این یه مسیره و یک داستان طولانی. پس دعوت می کنم از شما در این مقاله با من همراه بشید در این مسیر ( طبعا تا حدی این مسیر متناسب با روند نیاز محصول ما (پیود) و شرکت ماست پس یه Case Study اه اما قاعدتا در مورد دغدغه بخش قابل توجهی از کسب و کار ها میتونه باشه، از طرفی این مقاله به مروری که من این مسیرو جلو میرم کامل تر خواهد شد)من تو این مقاله درباره کلیدواژه ها توضیحی نمیدم ولی سعی میکنم در مورد هر کلیدواژه مطلبی بنویسم و درباره اش بطور ساده توضیح بدم تا اگر مبحث رو دقیقا نمیدونین از طریق اون مقاله بیشتر اطلاعات بگیرین. در نظر داشته باشین در همه مقالات من سعی میکنم ساده مطالبو توضیح بدم. طبیعتا اگر به اون موضوع علاقه مند باشین خودتون بیشتر مطالعه میکنین و میدونین تو اینترنت تا دلتون بخواد مطلب وجود داره. فقط سعی میکنم چهارچوب درستی از مسیر بهتون بدم که هر چه سریعتر بدونین باید چطوری پیش برین؟خوب من توی این راه میخوام به چی برسم؟ خلاصه اش چیزی که این روزها در عموم بهش میگن سیستم سازی کسب و کار.سیستم سازی چیه؟ چی میشه اگه برای کسب و کارمون سیستم سازی نکنیم؟مراحل سیستم سازی کسب و کار چیاست؟۱. شناخت کلی سازمان: برای شروع نیازه که سازمان و ابعاد مختلفشو بشناسیم. من و مهدی گلپایگانی عزیز دو موسس این شرکت هستیم و از ابتدای راه با هم پیش اومدیم. پس شناخت کاملی به تمامی ابعاد دارم.اما برای اینکه شما بتونین بدرستی تو این مسیر همراه بشین یه مقدار در این باره توضیح میدم.ما کارمونو به عنوان استارتاپی در حوزه خودرو از آذر ۱۳۹۸ شروع کردیم، از خرداد ۱۳۹۹ تیم رو تشکیل دادیم و روی ایده های مختلفی ایده پردازی و تحقیق بازار انجام دادیم. یکی از ایده ها گجت اپلیکیشنی بود برای ارتباط با خودرو و عیب یابی و ردیابی خودرو و در ادامه هوشمند سازی خودرو. ظرف ۲ ماه اولین نسخه دستگاه طراحی و ساخته شد و مرحله Feasibility Study یا همون Proof of Concept انجام شد و شرکت کل کارش بر روی طراحی نسخه تجاری و رفع موانع و چالشهای این گجت و اپلیکیشن اون متمرکز شد و ایده های دیگه کنار گذاشته شد. در ادامه این ایده رو ثبت اختراع جهانی کردیم و ادامه ماجرا راه طولانی ای تا به امروز که نسخه تجاری محصول در حال عرضه و فروش هست. اطلاعات بیشتر رو درباره محصول میتونین از طریق سایت ما دریافت کنید.همونطور که مشخصه ما یک گجت رو طراحی و تولید کردیم برای ارتباط با خودرو و همینطور سرور و اپلیکیشنی که بتونه ارتباط لازم رو بین گجت و کاربر ایجاد کنه. پس تا به اینجا ما به دپارتمان های زیر نیاز داریم:طراحی سخت افزار: که شامل افرادی در حوزه الکترونیک، برنامه نویسی سخت افزار و مکانیک خودرو میشه.نرم افزار: این تیم هم شامل برنامه نویس های بکند، فرانت اند، برنامه نویسی مبتنی بر لوکیشن (GIS)، برنامه نویسی استریم (Stream Processing)، الگوریتم های هوش مصنوعی، طراحی UX اپلیکیشن میشه.تیم زیرساخت: افرادی در حوزه شبکه و DevOpsتیم تولید: این تیم هم برد اصلی محصول ما رو از طریق رباتهای اسمبل برد آماده میکنه و بعد از اون مراحل پایانی کار رو شامل پروگرم کردن پردازنده سخت افزار و انجام فرایند ارزیابی کیفی (QC) محصول انجام میده.بسته بندی: در این مرحله هم گجت به همراه بقیه متعلقاتش از جمله دفترچه راهنما، کابل اتصال، دستمال و الکل و ... در بسته محصول قرار میگیره و فرایند Shrink انجام میشه و در انبار محصول قرار میگیره.انبار قطعات و محصولاز بعد اداری هم ما به دپارتمان های زیر نیاز داریم:اداری: که در حال حاضر بخشی از اون توسط منشی انجام میشه و بخشی هم خدماتی هست.مجوز ها: شاید در عموم سازمانها مرسوم نباشه اما برای ما بحث مجوزها بسیار گسترده است. ما مجوزهای متعدد بین المللی متعدد و مرسومی رو گرفتیم و همینطور در داخل هم از سازمان و نهادهای رگولاتوری متعددی چه برای بعد سخت افزاری کارمون چه برای بعد نرم افزاری و استارتاپی کارمون مجوز داریم. به خصوص که ما در همکاریمون با خودروساز های داخلی و خارجی بایستی کیفیت و امنیت در سطح عالیش رعایت کنیم.منابع انسانیمالیو اما فروش. ما انواع کانالهای فروش رو داریم.فروش B2B: فروش به سازمانهایی که تعدادی خودرو برای نیازهای خودشون دارن.فروش B2G: فروش به خودروسازها برای فرایند OEMهر دوی این بخش ها طی مذاکرات و توسط تیم چند نفره از جمله مدیر عامل پیگیری میشه.اما فروش B2C (End User) که شامل دپارتمان های زیر میشه.تبلیغات: که در حال حاضر بیشتر از طریق سوشال ها انجام میشه.فروش: که شامل چندین نفر فروشنده هستش.رسانه: که شامل استودیوی تولید فیلم، صوت و تصویر هست و خوراک و نیاز تیم تبلیغات و سوشال رو مهیا میکنهو ما بواسطه جنس محصول و اپلیکیشنمون به دپارتمانهای زیر هم نیاز داریم:نصب: برای برنامه ریزی و پیگیری نصب دستگاه بر روی خودرو توسط متخصصین ماپشتیبانی: برای پاسخگویی به مشتریانگارانتی: برای پیگیری تعویض دستگاههایی که به هر نحو مشکل پیدا کردن۲. مستند سازی فرایندهای فعلی (فرضی) سازمانبزودی ...۳. ترسیم فرایندهای ایده آلی سازمان۴. طراحی مدیریت تغییر</description>
                <category>mreza_golestan</category>
                <author>mreza_golestan</author>
                <pubDate>Sun, 08 Jan 2023 13:22:55 +0330</pubDate>
            </item>
                    <item>
                <title>نمایشگاه مجازی، بسته چند رسانه ای به سبک وب</title>
                <link>https://virgool.io/mrezagolestan/enamayeshgah-web-based-multimedia-y72j3iwhlwfw</link>
                <description>من از سال ۸۳ با تولید و توسعه بسته های چند رسانه ای (Multimedia) سر و کار دارم. اول بزارین براتون بگم بسته های چند رسانه ای چی هستن و بعدش بریم سراغ تجاربی که من در این مسیر کسب کردم.بسته چند رسانه ای (Multimedia) چیه؟به نرم افزار (عموما تحت دسکتاپ و غالبا تحت ویندوز) ای که قابلیت پخش فیلم، صوت، عکس، اسنادی مثل pdf و متون رو داشته باشه میگیم. چنین نرم افزارهایی بیشتر برای تبلیغات، آموزش و گردآوری نرم افزارهای اطلاع رسانی به سبک زیبا درباره یک موضوع خاص استفاده میشن.این بسته ها چطوری تولید میشن؟با اینکه این بسته ها هم یک نرم افزار عادی به نظر میرسن، اما تولید چنین نرم افزارهایی در بسترهای مرسوم برنامه نویسی مثل C#، دلفی و ... زیاد کار جالبی به نظر نمیرسه. درسته که میشه تمامی امکانات مورد نیاز یک مالتی مدیا رو توی C# هم داشت، اما آماده کردن این بستر خیلی طول میکشه. از طرفی بسته های مالتی مدیا قراره روی یک DVD قرار بگیرن و بصورت Autorun اجرا بشن، اونم بدون هیج وابستگی به نرم افزار دیگری. در صورتیکه عموما دسکتاپ اپ هایی که با C# تولید میشن پیش نیاز نصب Dot Net Framework رو با خودشون دارن.و اما پلتفرمهای تولید چنین اپ هایی. تا حدود سال ۸۷ بهترین گزینه نرم افزار Multimedia Builder بود، اما از اونجا که دیگه توسعه داده نشد گزینه بهتری براش پیدا شد و اون Autoplay Media Studio بود. این نرم افزار هم توی سالهای اخیر زیاد بروز رسانی نشده اما هنوزم نیاز رو برطرف می کنه و مشکل خاصی نداره. این نرم افزار به شما امکان استفاده از ابزارهایی مثل قرار دادن دکمه، عکس، متن، صفحه اینترنتی، pdf، نمایش فیلم، نمایش صوت و ... رو میده. از طرفی بوسیله زبان Lua میشه داخلش کد نویسی کرد و همچنین میشه از پلاگین های اضافی که با همین زبان براش نوشته شده استفاده کرد. اما این بستر نرم افزاری یه مشکل داره و اونم اینکه امکاناتی که به شما برای طراحی ظاهر اپ اتون میده محدود به عکس و ... است و در عمل می بینیم که خروجی کار میتونه یه اپلیکیشن تقریبا بدون هیچ انیمیشنی باشه.پس از همون سالها یک بستر دیگه هم با وجود تمام مشکلاتی که در توسعه مالتی مدیا داشت مورد استفاده قرار می گرفت و اون Flash MX خدا بیامرز یا همون Adobe Flash جوان هست. فلش بستر خوبی برای تولید انیمیشنه و البته داخلش میشه فیلم و صدا پخش کرد، عکس رو در قالب گالری زیبایی که خودتون می سازین نمایش داد و کلی امکانات دیگه. عملا میشه گفت خروجی فلش یک انیمیشن ۲ بعدی با امکان تعامل و قابلیت های چند رسانه ای هست.نمایشگاه مجازی، بسته چند رسانه ای به سبک وب!!!من اوائل، بسته های مالتی مدیامو با multimedia builder و بعدش با Autoplay Media Studio تولید میکردم. تا اینکه سال ۹۱ برای تولید یه بسته ازم خواسته شد روی انیمیشنش بیشتر تمرکز کنم. از Adobe Flash استفاده کردم، قرار بود کلی اطلاعات رو نمایش بدم، بنابراین از دیتابیس SQLite استفاده کردم. راستش مزخرف ترین تجربه برنامه نویسی عمرم شد اون پروژه. فلش با ActionScript 2 , 3 کد زنی میشد. میشه گفت خیلی بی قاعده عمل میکرد، خیلی قلق ای بود. همون کدی که یه جا کار میکرد، توی یه شرایط ۹۰% مشابه و فقط بواسطه یه مقدار تو در تو تر شدن لایه های انیمیشنی دیگه عمل نمیکرد. خلاصه که از نظر من زبان نبود. منطقی عمل نمیکرد و با سختی تونستم رامش کنم و توی موقعیتهایی که میخوام نتیجه لازمو ازش بگیرم.بعد از اون باز تولیداتم بدون انیمیشن بود و از فلش دیگه استفاده نکردم.تا اینکه امسال (سال ۹۳) از طرف وزارت آموزش و پرورش - سازمان پژوهش و برنامه ریزی کشور (رشد) ازم خواسته شد بسته هایی رو  با عنوان بسته بر فراز آسمان و برای آموزش معلمین برای تدریس کتابهای درسی جدید کار کنیم.داستان فنی کار ما از چند وقت قبلش شروع شده بود و توی این پروژه به اوج خودش رسید!!!بسترهای تولید مالتی مدیایی که ازشون صحبت کردم یه مشکل جدی داشتن و اون اینکه بیشتر برای بسته های با تعداد کمی عناصر (فیلم، صوت، عکس و ...) طراحی شده بودن، و وقتی مثلا یک بسته شامل ۴۰۰ دقیقه ویدیو می شد و هر ویدیو حدود ۵ دقیقه بود، به عبارتی ۸۰ ویدیو در این بسته قرار داشت، روند اجرای بسته بسیار کند میشد.حوب من توسعه دهنده وب بودم، پس علاقه داشتم هر چیزی رو با بستر وب توسعه بدم. پس سوالی در ذهن من شکل گرفت.آیا میشه بوسیله تکنولوژی های وب (HTML + CSS + JS) بسته مالتی مدیا تولید کرد؟!جواب این سوال مثبت بود، البته که گرفتن یک نتیجه با کیفیت با این روش و ایده برای من به این سادگیا نبود. برای پیاده سازی این روش من مجبور شدم چند هزار صفحه اینترنتی رو در طی ۳ ماه مطالعه و تست کنم.سرگذشت تولید بسته چند رسانه ای (Multimedia) با استفاده از تکنولوژی های وب و چالشهایی که داشت!قدم اول: پلاگین Web در Autoplay Media Studioما توی بستر مالتی مدیا می تونستیم یک صفحه اینترنتی رو نشون بدیم. من بجای یک صفحه اینترنتی یک webpage داخلی رو نشون دادم. مالتی مدیای من فقط رسالتش این شد که صفحه اصلی وب رو اجرا کنه و از این جا به بعد تمام ظاهرها و منوها و کارکردها به عهده صفحه اینترنتی من بود. ساده اس نه؟!اما در عمل قضیه پیچیده شد. پنجره وبی که Autoplay Media Studio به من میداد اینترنت اکسپلورر ۶ بود. این یعنی فاجعه. مشکلاتش:گیرهای شدیدی که توی طراحی وبسایت برای اینترنت اکسپلورر ۶ هممون تجربه کردیمنبود CSS 3  و محدودیت های فوق شدید برای پیاده سازی انیمیشنمشکلاتی در اجرای جاوا اسکریپتبا وجود همه این مشکلات من یه بسته رو برای تبلیغات یک مهد کودک به همین شیوه تولید کردم. واسه شروع خوب بود. عملا با وجود چند صد عکس و چند صد دقیقه فیلم و ... بسته تقریبا سبکی شد.قدم دوم: تولید مرورگر بدون Frameخوب من دنبال این بودم پنجره وبی که صفحه اینترنتی منو نشون میده گوگل کروم باشه. میدونستم گوگل کروم یه هسته داره به نام Chromium که وظیفه رندر html + css + js به عهده اونه. سروس chromium توی اینترنت بود. با کلی آزمون و خطا من تونستم اون رو اجرا کنم. اما نتونستم مجبورش کنم یه صفحه خاص رو اجرا کنه و خیلی مشکلات دیگه باهاش داشتم. مثل اینکه نمیتونستم بهش بفمونم کاربر من دکمه خروجو زده، بسته شو عزیز من!تا به این نقطه رسیدم ۱ ماهی طول کشید، خروجی کار کاربردی نبود و نمیتونستم باهاش بسته ای تولید کنم. اما برای رسیدن به همین نقطه بیش از ۲۰۰۰ صفحه اینترنتی رو خوندم.قدم سوم: استفاده از Node Webkit (بروز رسانی: نام جدید پروژه NW.js)در حین سرچ هام به یه پروژه ای برخوردم که به تازگی لانچ شده بود. Node Webkit یک اپلیکیشن بود شامل هسته chromium + Node.js . کنار هم قرار گرفتن این دو تا باعث میشد با HTML +CSS + JS بتونی ظاهر و عملکرد اپ ات رو بسازی و با Node.js بتونی با خود اپلیکیشنت ارتباط بگیری و کارهای سیستمی رو مثل خروج، Minimize و کارهای دیگه رو ازش بخوای.از طرفی میتونستی با استفاده از dll و ماژولهای Node.js قابلیت های جدیدی به نرم افزارت اضافه کنی.این روش بسیار جذاب و سبک بود. دقیقا همون چیزی که میخواستم.پس دست به کار شدم. در بازه ۱ ماه تونستم یه سری کد پایه ای تولید کنم برای تولید مالتی مدیا. بسته ای که در نهایت با این روش کار کردم مزایایی داشت:چند صد دقیقه فیلم، چند صد دقیقه صوت، چند صد تا عکس و چند هزار صفحه pdf رو در یک بسته نشون بده و کاملا سبک هم باشهبطور ۱۰۰% به نصب هیچ نرم افزار دیگه ای نیاز نداشته باشه (فیلم، صوت، عکس و PDF رو نمایش بده)، بسترهای قبلی حداقل به نصب Adobe Reader نیاز داشتن.نیاز به نصب هیچ فونتی نداشت و فونتها درون نرم افزار بود.از اونجا که بسته ها برای معلمین تولید میشد، حداقل سخت افزاری که باید روی اون اجرا میشد کامپیوتری با ۱ گیگ رم و ویندوز XP بود، که توی این قضیه هم با سرعت قابل قبولی و بدون مشکل سر بلند شد این روش توسعه.بواسطه اینکه بستر توسعه وب بود بسیار سرعت توسعه بالا رفت و دستم باز بود. مثلا از اونجاییکه برای بالا بودن سرعت اجرا میخواستم مدت زمان فایلها و تعداد صفحات PDF ها بصورت استاتیک نمایش داده بشه، نرم افزار دیگه ای نوشتم که برام فایلهای ویدیویی، صوتی یا PDF رو میخوند، ازم عنوان هر فایل رو میگرفت و مدت زمان اشون رو در میاورد و با اسم فایل و بقیه اطلاعات مورد نیازش در قالب کد HTML میکرد و بهم میدادمیتونستم نرم افزارم رو به گونه ای طراحی کنم که علاوه بر ویندوز در لینوکس و مک هم اجرا بشه.نتیجه گیریتوسعه نرم افزاری مبتنی بر وب رو به گسترش هست و بسیار جذاب و کارامد. قاعدتا رفته رفته اکثر بسترهای نرم افزاری با وب قابل توسعه خواهند بود. البته خود من قبول دارم که این بستر الزاما برای هر کاربردی جذاب نیست اما حداقل برای تولید بسته چند رسانه ای و همینطور تولید نرم افزارهایی که با یک وبسایت اینترنتی ارتباط میگیرن بسیار جذاب هست. به خصوص برای تولید اپلیکیشن هایی که با یک سرور اینترنتی کار کنن تولید اپلیکیشن با زبانهایی مثل C# میتونه زمانبر باشه در صورتیکه این بستر بسیار مناسب این کار هست، چرا که وب طراحی شده تا با وب ارتباط بگیره و ارتباط گرفتن Ajax ای با یک سرور اینترنتی بسیار راحت و لذتبخش و سریع خواهد بود.بسته های تولید شده بوسیله این روشبسته های بر فراز آسمان ۲  (بیش از ۱۳ بسته) - ۱۳۹۳ - بسته های آموزش معلمین مقاطع پنجم و هشتم جهت تدریس دروس مختلف از جمله فارسی، علوم، ریاضی، هدیه های آسمان، و ...بر فراز آسمان ۳ (بیش از ۱۸ بسته) - ۱۳۹۴ - بسته های آموزش معلمین مقاطع ششم و نهم جهت تدریس دروس مختلف از جمله فارسی، علوم، ریاضی، هدیه های آسمان، کار و فناوری و ...بر فراز آسمان - کلاس های چند پایه - ۱۳۹۷بروز رسانی (۹۶/۰۵/۰۴)بعد تر علاوه بر Node Webkit که البته اسمش NW.js شده، روشهای دیگه ای هم مثل پروژه Electron معرفی شد. پس اگر میخواید از این روشها استفاده کنین، میتونین سرچی روی روشهای تولید دسکتاپ اپلیکیشن ها بصورت Cross Platform داشته باشین.</description>
                <category>mreza_golestan</category>
                <author>mreza_golestan</author>
                <pubDate>Mon, 30 Sep 2019 13:35:28 +0330</pubDate>
            </item>
            </channel>
</rss>