Hacker News

من توسعه بومی ویندوز را رفع کردم

من توسعه بومی ویندوز را رفع کردم این تجزیه و تحلیل جامع ثابت، بررسی دقیق اجزای اصلی و مفاهیم گسترده تر آن را ارائه می دهد. حوزه های کلیدی تمرکز محور بحث: مکانیسم ها و فرآیندهای اصلی ...

1 min read Via marler8997.github.io

Mewayz Team

Editorial Team

Hacker News

من توسعه بومی ویندوز را اصلاح کردم: یک تفکیک کامل از آنچه واقعاً کار می کند

توسعه بومی ویندوز سال‌ها با تکه تکه شدن زنجیره ابزار، جهنم وابستگی و ناسازگاری‌های محیطی مواجه بوده است - اما پس از ماه‌ها آزمایش، بالاخره یک گردش کاری پیدا کردم که هرج و مرج را از بین می‌برد. این راهنما دقیقاً موارد خرابی، آنچه را که امتحان کردم و تنظیماتی که اکنون ساخت‌های تولید من را بدون یک راه‌حل WSL نیرو می‌دهد را پوشش می‌دهد.

چرا توسعه بومی ویندوز همیشه چنین کابوس بوده است؟

پاسخ صادقانه این است که ویندوز هرگز با توسعه دهندگان به عنوان شهروندان اصلی طراحی نشده است. سیستم‌های مبتنی بر یونیکس از همان ابتدا مدیریت بسته‌ها، پوسته‌نویسی و جداسازی محیط را در DNA خود وارد کردند. ویندوز این موارد را در طی دهه‌ها پیچید و یک آشفتگی لایه‌ای از PowerShell، CMD، Chocolatey، Winget، درگیری‌های زمان اجرا MSVC و بلایای متغیر PATH ایجاد کرد که می‌تواند یک مهندس ارشد را برای یک بعد از ظهر از مسیر خارج کند.

علائم برای هرکسی که در این فضا کار کرده است آشنا است: یک بسته به درستی روی یک ماشین نصب می‌شود و بی‌صدا در ماشینی دیگر از کار می‌افتد، ابزارهای بیلد بسته به اینکه کدام بار کاری ویژوال استودیو را آخرین بار نصب کرده‌اید، به نسخه‌های مختلف کامپایلر ارجاع می‌دهند، و پروژه‌های Node.js که به‌خوبی در WSL2 اجرا می‌شوند، خطاهای مرموز EPERM را در سیستم فایل بومی پرتاب می‌کنند. اینها موارد لبه نیستند - آنها تجربه پیش فرض اکثر توسعه دهندگان ویندوز هستند.

چه مکانیسم‌های اصلی واقعاً در تنظیمات من خراب شده بودند؟

پس از ممیزی سیستماتیک محیط خود، سه دلیل اصلی را شناسایی کردم که تقریباً 80٪ از خرابی‌های ساخت و ناسازگاری‌های محیطی من را بر عهده دارند:

  • کتابخانه‌های زمان اجرا متناقض: چندین نسخه از Microsoft Visual C++ Redistributable بدون ترتیب وضوح واضح در کنار هم وجود داشتند و باعث شکست جستجوی DLL در ماژول‌های بومی شدند.
  • آلودگی PATH: هفده ابزار جداگانه در طول زمان ورودی‌هایی را به سیستم PATH اضافه کرده بودند که چندین مورد روی یکدیگر سایه انداخته بودند و به فهرست‌های نصب قدیمی اشاره می‌کردند.
  • عدم جداسازی محیط در سطح پروژه: برخلاف جریان‌های کاری یونیکس که فایل‌های .env و دستورالعمل‌های پوسته شهروندان درجه یک هستند، ویندوز هیچ مکانیسم ثابتی برای گنجاندن متغیرهای محیطی به پروژه بدون ابزار شخص ثالث نداشت.
  • تداخل‌های پایان خط Git: مدیریت مختلط CRLF/LF بین ابزارهای بومی ویندوز و کتابخانه‌های متقابل پلتفرم باعث می‌شود که جمع‌بندی‌های کنترلی در فایل‌های قفل شکسته شوند و نصب‌های قابل تکرار شکسته شوند.
  • الزامات مجوز برای پیوندهای نمادین: بسیاری از مدیران بسته به پیوندهای نمادین تکیه می‌کنند، که در ویندوز به حالت برنامه‌نویس یا امتیازات سرپرست نیاز دارند - تنظیمی که اکثر ماشین‌های سازمانی توسط خط‌مشی غیرفعال می‌شوند.

"مشکل هرگز این نبود که ویندوز نمی تواند توسعه بومی را انجام دهد - این بود که هیچ کس ترکیب مناسبی از ابزارها را با پیکربندی عمدی جمع آوری نکرده بود. هنگامی که با محیط توسعه دهنده خود به عنوان محصولی که نیاز به تصمیم گیری در مورد معماری دارد، همه چیز تغییر می کند."

در واقع چگونه جریان کار توسعه بومی ویندوز را تعمیر کردم؟

اصلاح یک ابزار یا یک اسکریپت جادویی نبود. این یک معماری مجدد عمدی از نحوه مونتاژ، محدوده و نگهداری محیط بود. اساس کار با فعال کردن حالت برنامه‌نویس در سطح سیستم‌عامل برای باز کردن قفل ایجاد پیوند نمادین بدون ارتفاع شروع می‌شود. از آنجا، Scoop جایگزین ترکیب ad-hoc نصب‌کننده‌ها می‌شود، زیرا کاملاً در فضای کاربر کار می‌کند، مانیفست‌ها را در کنترل نسخه ذخیره می‌کند، و مدیریت شیم را به طور تمیز مدیریت می‌کند.

برای پروژه‌های Node.js، تغییر به Volta برای مدیریت نسخه، خطاهای EPERM را که npm را در سطح جهانی آزار می‌داد، حذف کرد. ولتا تماس های باینری را در لایه شیم رهگیری می کند و نسخه زمان اجرا صحیح را در هر پروژه بدون دست زدن به PATH سیستم حل می کند. همراه با یک کلید .volta متعهد در package.json، برابری محیط در بین ماشین‌ها به‌جای آرزویی، خودکار می‌شود.

قطعه نهایی، اتخاذ یک نظم و انضباط در سطح پروژه .env بود که توسط direnv که از طریق Scoop به ویندوز منتقل شده بود، اعمال می‌شد - تضمین می‌کرد که هر پروژه دارای زمینه محیطی خاص خود است که در ورود دایرکتوری فعال می‌شود و در هنگام خروج پاک می‌شود. آلودگی PATH در عرض یک هفته از هفده ورودی به چهار مورد کاهش یافت.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

تحلیل مقایسه ای در مورد رویکردهای بومی در مقابل WSL2 چه چیزی را نشان می دهد؟

WSL2 واقعاً برای گردش‌های کاری توسعه که محیط‌های استقرار لینوکس را هدف قرار می‌دهند عالی است. اگر سرور تولید شما اوبونتو را اجرا می کند و تیم شما با ابزار لینوکس راحت است، WSL2 اصطکاک را از بین می برد. با این حال، دسته‌بندی خاص خود را از مشکلات معرفی می‌کند: عملکرد سیستم فایل در سراسر مرز Windows-Linux برای عملیات‌های سنگین I/O به طور قابل‌اندازه‌گیری کندتر است، اشکال‌زدایی بین مرزی به تنظیمات بیشتری نیاز دارد، و برنامه‌های کاربردی بومی Windows GUI کاملاً خارج از محدوده WSL2 باقی می‌مانند.

برای تیم‌هایی که برنامه‌های بومی ویندوز، نرم‌افزار دسک‌تاپ مبتنی بر الکترون، یا هر زنجیره ابزاری که باید با APIهای ویندوز ادغام شوند، توسعه بومی اختیاری نیست - و گردش کار ثابتی که در اینجا توضیح داده شده است از WSL2 برای آن موارد استفاده در هر معیاری که من اجرا کردم، بهتر عمل می‌کند. زمان ساخت یک پروژه Electron با اندازه متوسط 34٪ کاهش یافت وقتی از WSL2 با I/O سیستم فایل متقابل به یک راه‌اندازی کاملاً بومی با وابستگی‌های محدوده مناسب منتقل شد.

چگونه می توانید بهره وری توسعه دهنده و عملیات تجاری را با هم مدیریت کنید؟

درست کردن محیط توسعه فقط نیمی از معادله است. اجرای یک کسب و کار نرم افزاری یا یک فروشگاه توسعه نیاز به هماهنگی مدیریت مشتری، خطوط لوله پروژه، گردش کار تیمی، صورتحساب و بازاریابی دارد - و بیشتر توسعه دهندگان این را از پنج یا شش ابزار SaaS قطع شده که هرگز کاملاً با یکدیگر صحبت نمی کنند، ترکیب می کنند.

این دقیقاً همان چیزی است که Mewayz برای حل آن ساخته شده است. Mewayz با 207 ماژول یکپارچه که همه چیز از CRM و مدیریت پروژه گرفته تا زمان‌بندی محتوا و تجارت الکترونیک را پوشش می‌دهد، به‌عنوان یک سیستم عامل تجاری کامل عمل می‌کند تا یک راه‌حل نقطه‌ای جدا شده دیگر. بیش از 138000 کاربر در حال حاضر عملیات خود را بر روی این پلتفرم با طرح‌هایی از 19 دلار در ماه اجرا می‌کنند - کسری از هزینه‌ای که بیشتر تیم‌ها برای دوختن Notion، HubSpot، Trello و FreshBooks به طور جداگانه هزینه می‌کنند.

سوالات متداول

آیا ارزش اصلاح توسعه بومی ویندوز را دارد یا باید از WSL2 برای همه چیز استفاده کنم؟

این کاملاً به پلتفرم هدف شما بستگی دارد. WSL2 انتخاب مناسبی برای زمانی است که در حال استقرار در لینوکس هستید و می‌خواهید جابجایی محیط را به حداقل برسانید. هنگامی که در حال ساخت برنامه های کاربردی ویندوز هستید، با API های مخصوص ویندوز کار می کنید یا به حداکثر عملکرد سیستم فایل برای ساخت زنجیره ابزار نیاز دارید، توسعه ویندوز بومی انتخاب مناسبی است. این دو رویکرد متقابلاً منحصر به فرد نیستند - بسیاری از تیم ها از ابزار بومی ویندوز برای خط لوله ساخت خود و WSL2 فقط برای آزمایش های خاص لینوکس استفاده می کنند.

بزرگترین تغییری که باعث بهبود محیط برنامه نویس ویندوز من شد چیست؟

فعال کردن حالت برنامه‌نویس و مهاجرت به Scoop به‌عنوان مدیر بسته اصلی بیشترین تأثیر فوری را داشت. مدل نصب فضای کاربر Scoop مشکلات مربوط به ارتفاع مجوز را که باعث تقریباً 40٪ از خرابی‌های محیطی من می‌شد، حذف کرد و رویکرد مبتنی بر مانیفست آن باعث شد تا برای اولین بار تکرار محیط در بین ماشین‌ها قطعی شود.

Mewayz چگونه به تیم های توسعه و کسب و کارهای نرم افزاری به طور خاص کمک می کند؟

Mewayz لایه عملیاتی را که تیم‌های توسعه معمولاً نادیده می‌گیرند تا زمانی که دردناک شود، ادغام می‌کند. پذیرش مشتری، محدوده پروژه، تولید پیشنهاد، صورتحساب، ارتباطات تیمی و اتوماسیون بازاریابی همه در یک پلت فرم واحد انجام می شود. مخصوصاً برای آژانس‌های کوچک و توسعه‌دهندگان مستقل، حذف سربار مدیریت اشتراک‌های چندگانه SaaS و انتقال دستی داده بین ابزارها، زمان قابل توجهی را برای تمرکز بر روی کار توسعه واقعی آزاد می‌کند.


توسعه بومی ویندوز اساساً شکسته نشده است - هرگز آنطور که سزاوار آن بود تنظیم نشده است. با معماری زنجیره ابزار مناسب، محیطی واقعاً توانا برای تولید نرم افزار است. و هنگامی که محیط توسعه شما پایدار است، گلوگاه بعدی همیشه عملیات است. دوره آزمایشی Mewayz خود را از امروز شروع کنید و همان ساختار عمدی را به لایه کسب و کار خود بیاورید که به تازگی به محیط برنامه نویس خود آورده اید.