Hacker News

Popravil sem izvorni razvoj sistema Windows

Popravil sem izvorni razvoj sistema Windows Ta obsežna analiza fiksnih ponuja podroben pregled njegovih ključnih komponent in širših posledic. Ključna področja fokusa Razprava se osredotoča na: Osnovni mehanizmi in procesi ...

8 min read Via marler8997.github.io

Mewayz Team

Editorial Team

Hacker News

Popravil sem izvorni razvoj sistema Windows: popolna razčlenitev tega, kar dejansko deluje

Izvorni razvoj sistema Windows že leta pestijo razdrobljenost orodne verige, pekel odvisnosti in nedoslednosti okolja – toda po mesecih testiranja sem končno našel potek dela, ki odpravlja kaos. Ta vodnik natančno opisuje, kaj se je pokvarilo, kaj sem poskusil in nastavitev, ki zdaj poganja moje proizvodne gradnje brez ene same rešitve WSL.

Zakaj je bil izvorni razvoj sistema Windows vedno takšna nočna mora?

Iskren odgovor je, da Windows nikoli ni bil zasnovan z razvijalci kot glavnimi državljani. Sistemi, ki temeljijo na Unixu, so že od začetka vključili upravljanje paketov, skriptno lupino in izolacijo okolja v svoj DNK. Windows je v desetletjih vse te stvari pritegnil in ustvaril večplastno zmešnjavo PowerShell, CMD, Chocolatey, Winget, konfliktov izvajalnega okolja MSVC in katastrof spremenljivk PATH, ki bi lahko vodilnega inženirja iztirile za eno popoldne.

Simptomi so znani vsakomur, ki je delal v tem prostoru: paket se pravilno namesti na enem računalniku in tiho odpove na drugem, orodja za gradnjo se sklicujejo na različne različice prevajalnika, odvisno od tega, katero delovno obremenitev Visual Studio ste nazadnje namestili, in projekti Node.js, ki se odlično izvajajo v WSL2, sprožijo kriptične napake EPERM v izvornem datotečnem sistemu. To niso robni primeri – so privzeta izkušnja za večino razvijalcev sistema Windows.

Kateri osnovni mehanizmi so bili dejansko pokvarjeni v moji nastavitvi?

Po sistematični reviziji svojega okolja sem identificiral tri temeljne vzroke, ki so odgovorni za približno 80 % mojih napak gradnje in nedoslednosti v okolju:

  • Knjižnice izvajalnega okolja v sporu: Več različic Microsoft Visual C++ Redistributable je obstajalo brez jasnega vrstnega reda razreševanja, kar je povzročilo napake pri iskanju DLL v izvornih modulih.
  • Onesnaženje PATH: Sedemnajst ločenih orodij je sčasoma dodalo vnose sistemski PATH, pri čemer jih je več zasenčilo in kazalo na zastarele namestitvene imenike.
  • Pomanjkanje izolacije okolja na ravni projekta: Za razliko od delovnih tokov Unix, kjer so datoteke .env in ukazi lupine prvorazredni državljani, Windows ni imel doslednega mehanizma za obseg spremenljivk okolja v projektu brez orodij tretjih oseb.
  • Konflikti končnic vrstic Git: Mešano ravnanje s CRLF/LF med izvornimi orodji Windows in knjižnicami na več platformah je povzročilo napake kontrolnih vsot v datotekah zaklepanja, kar je prekinilo ponovljive namestitve.
  • Zahteve za povišana dovoljenja za simbolne povezave: Številni upravitelji paketov se zanašajo na simbolične povezave, ki v sistemu Windows zahtevajo razvijalski način ali skrbniške pravice – nastavitev, ki jo večina poslovnih strojev onemogoči s pravilnikom.

"Problem nikoli ni bil v tem, da Windows ne bi mogel izvajati izvornega razvoja - bil je v tem, da nihče ni sestavil prave kombinacije orodij z namerno konfiguracijo. Ko svoje razvijalsko okolje obravnavate kot izdelek, ki potrebuje odločitve o arhitekturi, se vse spremeni."

Kako sem dejansko popravil izvorni razvojni potek sistema Windows?

Popravek ni bil eno samo orodje ali čarobni skript. To je bila namerna ponovna arhitektura tega, kako se okolje sestavlja, obsega in vzdržuje. Osnova se začne z omogočanjem načina za razvijalce na ravni operacijskega sistema, da odklenete ustvarjanje simbolne povezave brez povišanja. Od tam Scoop nadomešča ad-hoc mešanico namestitvenih programov, ker v celoti deluje v uporabniškem prostoru, shranjuje manifeste v nadzoru različic in čisto upravlja z upravljanjem vložkov.

Posebno za projekte Node.js je prehod na Volta za upravljanje različic odpravil napake EPERM, ki so pestile npm po vsem svetu. Volta prestreže binarne klice na sloju shim in razreši pravilno različico izvajalnega okolja na projekt, ne da bi se dotaknil sistemske PATH. V kombinaciji s predanim ključem .volta v package.json pariteta okolja med stroji postane avtomatska in ne samodejna.

Zadnji del je bil sprejetje discipline .env na ravni projekta, ki jo uveljavlja direnv, prenesen v sistem Windows prek Scoop – zagotavljanje, da ima vsak projekt lasten kontekst okolja, ki se aktivira ob vstopu v imenik in počisti ob izstopu. Onesnaženost PATH je padla s sedemnajstih vstopov na štiri v enem tednu.

💡 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 →

Kaj razkriva primerjalna analiza o domačih pristopih v primerjavi z WSL2?

WSL2 je resnično odličen za razvojne poteke dela, ki ciljajo na okolja uvajanja Linuxa. Če vaš produkcijski strežnik poganja Ubuntu in vaša ekipa dobro pozna orodja Linux, WSL2 odpravi trenja. Vendar pa uvaja lastno kategorijo težav: delovanje datotečnega sistema prek meje Windows-Linux je merljivo počasnejše za V/I-operacije, čezmejno odpravljanje napak zahteva dodatno nastavitev, izvorne aplikacije Windows GUI pa ostanejo v celoti zunaj obsega WSL2.

Za ekipe, ki gradijo izvorne aplikacije za Windows, namizno programsko opremo, ki temelji na Electronu, ali katero koli verigo orodij, ki se mora integrirati z API-ji Windows, izvorni razvoj ni neobvezen — in tukaj opisani fiksni potek dela prekaša WSL2 za te primere uporabe pri vseh primerjalnih preizkusih, ki sem jih izvajal. Časi gradnje za srednje velik projekt Electron so se zmanjšali za 34 %, ko so prešli iz WSL2 z V/I med datotečnimi sistemi na popolnoma izvorno nastavitev s pravilno določenimi odvisnostmi.

Kako lahko skupaj upravljate produktivnost razvijalca in poslovne operacije?

Ustrezno razvojno okolje je le polovica enačbe. Vodenje podjetja s programsko opremo ali razvojne trgovine zahteva usklajevanje upravljanja strank, projektnih cevovodov, timskih delovnih tokov, izdajanja računov in trženja – in večina razvijalcev to sestavi iz petih ali šestih nepovezanih orodij SaaS, ki med seboj nikoli ne komunicirajo.

To je točno tisto, za kar je bil Mewayz ustvarjen za rešitev. Z 207 integriranimi moduli, ki pokrivajo vse od CRM in vodenja projektov do razporejanja vsebin in e-trgovine, Mewayz deluje kot popoln poslovni operacijski sistem in ne kot še ena izolirana točkovna rešitev. Več kot 138.000 uporabnikov trenutno izvaja svoje operacije na platformi po načrtih, ki se začnejo od 19 USD na mesec – del tega, kar večina ekip porabi za ločeno sestavljanje Notion, HubSpot, Trello in FreshBooks.

Pogosto zastavljena vprašanja

Ali se splača popraviti izvorni razvoj sistema Windows ali naj za vse uporabim WSL2?

To je popolnoma odvisno od vaše ciljne platforme. WSL2 je prava izbira, ko uvajate v Linux in želite čim bolj zmanjšati nihanje okolja. Izvorni razvoj za Windows je prava izbira, ko gradite aplikacije Windows, delate z API-ji, specifičnimi za Windows, ali potrebujete največjo zmogljivost datotečnega sistema za izdelavo verig orodij. Ta dva pristopa se med seboj ne izključujeta – številne ekipe uporabljajo izvorna orodja Windows za svoj cevovod gradnje, WSL2 pa samo za testiranje, specifično za Linux.

Katera je največja sprememba, ki je izboljšala moje razvijalsko okolje Windows?

Omogočanje načina za razvijalce in selitev na Scoop kot primarnega upravitelja paketov sta imela največji takojšnji učinek. Scoopov model namestitve v uporabniškem prostoru je odpravil težave z dvigovanjem dovoljenj, ki so povzročile približno 40 % okvar mojega okolja, njegov pristop, ki temelji na manifestu, pa je prvič naredil podvajanje okolja med stroji deterministično.

Kako Mewayz pomaga razvojnim ekipam in podjetjem s programsko opremo?

Mewayz utrjuje operativno plast, ki jo razvojne ekipe običajno prezrejo, dokler ne postane boleče. Vključevanje strank, obseg projekta, ustvarjanje predlogov, fakturiranje, timska komunikacija in avtomatizacija trženja se upravljajo znotraj ene platforme. Zlasti malim agencijam in neodvisnim razvijalcem odprava režijskih stroškov upravljanja več naročnin SaaS in ročnih prenosov podatkov med orodji sprosti precej časa za osredotočanje na dejansko razvojno delo.


Domorodni razvoj sistema Windows ni bistveno pokvarjen - le nikoli ni bil namerno nastavljen, kot bi si ga zaslužil. S pravo arhitekturo verige orodij je resnično zmogljivo okolje za proizvodno programsko opremo. In ko je vaše razvojno okolje stabilno, so naslednje ozko grlo vedno operacije. Začnite s preizkusno različico Mewayza še danes in v svoj poslovni sloj vnesite enako namerno strukturo, kot ste jo pravkar prinesli v svoje razvijalsko okolje.

.

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