Hacker News

Я выправіў уласную распрацоўку Windows

Я выправіў уласную распрацоўку Windows Гэты ўсёабдымны аналіз фіксаванага прапануе дэталёвае вывучэнне яго асноўных кампанентаў і больш шырокіх наступстваў. Ключавыя вобласці ўвагі У цэнтры абмеркавання: Асноўныя механізмы і працэсы ...

1 min read Via marler8997.github.io

Mewayz Team

Editorial Team

Hacker News

Я выправіў уласную распрацоўку Windows: поўная разборка таго, што насамрэч працуе

Унутраная распрацоўка Windows на працягу многіх гадоў пакутавала ад фрагментацыі ланцужка інструментаў, пекла залежнасцей і неадпаведнасці асяроддзя — але пасля некалькіх месяцаў тэсціравання я нарэшце знайшоў працоўны працэс, які ліквідуе хаос. У гэтым кіраўніцтве дакладна распавядаецца пра тое, што зламалася, што я спрабаваў, і пра наладку, якая цяпер забяспечвае мае вытворчыя зборкі без адзінага абыходнага шляху WSL.

Чаму ўласная распрацоўка Windows заўсёды была такім кашмарам?

Шчыры адказ: Windows ніколі не распрацоўвалася з распрацоўшчыкамі ў якасці асноўных грамадзян. Сістэмы на базе Unix з самага пачатку ўключылі ў сваю ДНК кіраванне пакетамі, сцэнарыі абалонкі і ізаляцыю асяроддзя. Windows закруціла гэтыя рэчы на працягу дзесяцігоддзяў, стварыўшы шматслойны беспарадак з PowerShell, CMD, Chocolatey, Winget, канфліктаў падчас выканання MSVC і катастроф зменных PATH, якія маглі выбіць з каляіны старэйшага інжынера на паўдня.

Сімптомы знаёмыя кожнаму, хто працаваў у гэтай прасторы: пакет правільна ўсталёўваецца на адной машыне і бясшумна выходзіць з ладу на іншай, інструменты зборкі спасылаюцца на розныя версіі кампілятара ў залежнасці ад таго, якую рабочую нагрузку Visual Studio вы ўсталявалі апошняй, а праекты Node.js, якія ідэальна працуюць у WSL2, выклікаюць загадкавыя памылкі EPERM у роднай файлавай сістэме. Гэта не гранічныя выпадкі — яны стандартныя для большасці распрацоўшчыкаў Windows.

Якія асноўныя механізмы былі насамрэч зламаныя ў маіх наладах?

Пасля сістэматычнага аўдыту майго асяроддзя я вызначыў тры асноўныя прычыны, адказныя за прыкладна 80% няўдач зборкі і неадпаведнасці асяроддзя:

  • Конфликты між бібліятэкамі выканання: Некалькі версій Microsoft Visual C++ Redistributable суіснавалі без дакладнага парадку вырашэння, што выклікала збоі пошуку DLL ва ўласных модулях.
  • Забруджванне PATH: Сямнаццаць асобных інструментаў з цягам часу дадавалі запісы ў сістэмны PATH, прычым некалькі зацянялі адзін аднаго і паказвалі на састарэлыя каталогі ўстаноўкі.
  • Адсутнасць ізаляцыі асяроддзя на ўзроўні праекта: У адрозненне ад працоўных працэсаў Unix, дзе файлы .env і дырэктывы абалонкі з'яўляюцца грамадзянамі першага класа, у Windows не было паслядоўнага механізму для ахопу зменных асяроддзя ў праекце без інструментаў трэцяга боку.
  • Канфлікты заканчэння радка Git: змешаная апрацоўка CRLF/LF паміж уласнымі інструментамі Windows і міжплатформеннымі бібліятэкамі выклікала збой кантрольных сум у файлах блакіроўкі, парушаючы ўзнаўляльныя ўсталёўкі.
  • Павышаныя патрабаванні да дазволу для сімвалічных спасылак: многія менеджэры пакетаў абапіраюцца на сімвалічныя спасылкі, якія ў Windows патрабуюць рэжыму распрацоўніка або прывілеяў адміністратара — параметр, які большасць карпаратыўных машын адключае паводле палітыкі.
<цытата>

"Праблема ніколі не заключалася ў тым, што Windows не магла ажыццявіць унутраную распрацоўку, а ў тым, што ніхто не сабраў правільную камбінацыю інструментаў з прадуманай канфігурацыяй. Калі вы разглядаеце сваё асяроддзе распрацоўшчыка як прадукт, які патрабуе архітэктурных рашэнняў, усё мяняецца."

Як я насамрэч выправіў працоўны працэс уласнай распрацоўкі Windows?

Выпраўленне не было адным інструментам або чароўным сцэнарыем. Гэта было наўмыснае змяненне архітэктуры таго, як асяроддзе збіраецца, вызначаецца і падтрымліваецца. Аснова пачынаецца з уключэння рэжыму распрацоўшчыка на ўзроўні АС, каб разблакіраваць стварэнне сімвалічных спасылак без павышэння. Адтуль Scoop замяняе спецыяльную сумесь усталёўшчыкаў, таму што ён працуе цалкам у карыстальніцкай прасторы, захоўвае маніфесты ў кантролі версій і акуратна апрацоўвае кіраванне акладкамі.

У прыватнасці, для праектаў Node.js пераход на Volta для кіравання версіямі ліквідаваў памылкі EPERM, якія пакутавалі ад npm ва ўсім свеце. Volta перахоплівае двайковыя выклікі на ўзроўні акладкі і вырашае правільную версію часу выканання для кожнага праекта, не дакранаючыся сістэмнага PATH. У спалучэнні з замацаваным ключом .volta у package.json роўнасць асяроддзя паміж машынамі становіцца хутчэй аўтаматычнай, чым жаданай.

Апошняй часткай было прыняцце дысцыпліны .env на ўзроўні праекта, якую выконвае direnv, перанесены ў Windows праз 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 →

Што паказвае параўнальны аналіз пра падыходы Native супраць WSL2?

WSL2 сапраўды выдатна падыходзіць для працоўных працэсаў распрацоўкі, накіраваных на асяроддзе разгортвання Linux. Калі ваш вытворчы сервер працуе пад кіраваннем Ubuntu і ваша каманда добра карыстаецца інструментамі Linux, WSL2 здымае трэнні. Тым не менш, ён уводзіць уласную катэгорыю праблем: прадукцыйнасць файлавай сістэмы на мяжы Windows-Linux значна ніжэйшая для цяжкіх аперацый уводу-вываду, трансгранічная адладка патрабуе дадатковай налады, а ўласныя прыкладанні з графічным інтэрфейсам Windows цалкам застаюцца па-за межамі WSL2.

Для каманд, якія ствараюць уласныя прыкладанні для Windows, праграмнае забеспячэнне для настольных кампутараў на базе Electron або любую ланцужок інструментаў, які павінен інтэгравацца з Windows API, уласная распрацоўка не з'яўляецца абавязковай — і фіксаваны працоўны працэс, апісаны тут, пераўзыходзіць прадукцыйнасць WSL2 для тых варыянтаў выкарыстання ў кожным тэставанні, які я праводзіў. Час зборкі для праекта Electron сярэдняга памеру скараціўся на 34% пры перамяшчэнні з WSL2 з уводам-вывадам паміж файлавымі сістэмамі на цалкам уласную ўстаноўку з належным аб'ёмам залежнасцей.

Як вы можаце кіраваць прадукцыйнасцю распрацоўшчыка і бізнес-аперацыямі разам?

Правільнае асяроддзе распрацоўкі - гэта толькі палова ўраўнення. Кіраванне праграмным бізнесам або цэхам распрацоўкі патрабуе каардынацыі кіравання кліентамі, канвеераў праектаў, працоўных працэсаў каманды, выстаўлення рахункаў і маркетынгу — і большасць распрацоўшчыкаў аб'ядноўвае гэта з пяці-шасці адключаных інструментаў SaaS, якія ніколі не ўзаемадзейнічаюць адзін з адным.

Гэта менавіта тое, што Mewayz быў створаны, каб вырашыць. З 207 інтэграванымі модулямі, якія ахопліваюць усё: ад CRM і кіравання праектамі да планавання змесціва і электроннай камерцыі, Mewayz функцыянуе як цэласная бізнес-аперацыйная сістэма, а не як яшчэ адно ізаляванае рашэнне. У цяперашні час больш за 138 000 карыстальнікаў працуюць на платформе па планах ад 19 долараў у месяц — гэта невялікая доля таго, што большасць каманд траціць на спалучэнне Notion, HubSpot, Trello і FreshBooks асобна.

Часта задаюць пытанні

Ці варта выправіць уласную распрацоўку Windows, ці я павінен выкарыстоўваць WSL2 для ўсяго?

Гэта цалкам залежыць ад вашай мэтавай платформы. WSL2 - гэта правільны выбар, калі вы разгортваеце Linux і жадаеце мінімізаваць дрэйф асяроддзя. Уласная распрацоўка Windows - гэта правільны выбар, калі вы ствараеце прыкладанні Windows, працуеце са спецыфічнымі API Windows або вам патрэбна максімальная прадукцыйнасць файлавай сістэмы для зборкі інструментальных ланцугоў. Гэтыя два падыходы не выключаюць адзін аднаго — многія каманды выкарыстоўваюць уласныя інструменты Windows для канвеера зборкі, а WSL2 — толькі для тэсціравання ў Linux.

Якая самая вялікая змена палепшыла маё асяроддзе распрацоўшчыка Windows?

Уключэнне рэжыму распрацоўніка і пераход на Scoop у якасці асноўнага менеджара пакетаў мелі найбольшы непасрэдны эфект. Мадэль усталявання ў карыстальніцкай прасторы Scoop ліквідавала праблемы з павышэннем дазволаў, якія выклікалі прыкладна 40% збояў у маім асяроддзі, а яе падыход, заснаваны на маніфесце, упершыню зрабіў рэплікацыю асяроддзя на розных машынах дэтэрмінаванай.

Як Mewayz дапамагае групам распрацоўшчыкаў і кампаніям, якія займаюцца праграмным забеспячэннем?

Mewayz кансалідуе аперацыйны ўзровень, які каманды распрацоўшчыкаў звычайна ігнаруюць, пакуль гэта не стане балючым. Адаптацыя кліентаў, ахоп праекта, стварэнне прапаноў, выстаўленне рахункаў, камандная камунікацыя і аўтаматызацыя маркетынгу - усё гэта апрацоўваецца на адной платформе. Асабліва для невялікіх агенцтваў і незалежных распрацоўшчыкаў ліквідацыя накладных выдаткаў на кіраванне некалькімі падпіскамі SaaS і ручную перадачу даных паміж інструментамі вызваляе значную колькасць часу, каб засяродзіцца на рэальнай працы па распрацоўцы.


Уласная распрацоўка Windows прынцыпова не зламаная — яна проста ніколі не была прадумана ўстаноўлена, якой яна заслугоўвала. З правільнай архітэктурай ланцужка інструментаў гэта сапраўды здольнае асяроддзе для вытворчасці праграмнага забеспячэння. І калі ваша асяроддзе распрацоўкі стабільнае, наступным вузкім месцам заўсёды з'яўляюцца аперацыі. Пачніце пробную версію Mewayz сёння і прынясіце тую ж наўмысную структуру ў свой бізнес-узровень, якую вы толькі што ўнеслі ў асяроддзе распрацоўшчыка.

.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime