filosofi om unik udvikling

Jeff Foster
Jeff Foster

Følg

Jul 31, 2019 * 5 min læst

det er et fascinerende operativsystem. Oprindeligt udtænkt af på Bell Labs i slutningen af 1960 ‘ erne, blev det båret ud af frustration med OS kendt som “Multics” (multiplekset information og computing service). Jens er nu over 50 år gammel (!) og implementeringen af Linuks styrker enorme dele af internettet.

Hvorfor er det så populært?

i mit sind kommer units succes fra den filosofiske tilgang til udvikling. Den unikke filosofi er dokumenteret af Doug McIlroy i Bell System Technical Journal i 1978:

1. Få hvert program til at gøre en ting godt. For at udføre et nyt job skal du bygge på ny i stedet for at komplicere gamle programmer ved at tilføje nye “funktioner”.

2. Forvent, at output fra hvert program bliver input til et andet, endnu ukendt, program. Rør ikke output med fremmede oplysninger. Undgå stringent columnar eller binære input formater. Insister ikke på interaktiv input.

3. Design og byg programmel, selv operativsystemer, der skal afprøves tidligt, ideelt inden for uger. Tøv ikke med at smide de klodsede dele og genopbygge dem.

4. Brug værktøjer frem for ufaglært hjælp til at lette en programmeringsopgave, selvom du skal omveje for at opbygge værktøjerne og forvente at smide nogle af dem ud, når du er færdig med at bruge dem.

dette var over 40 år siden, og indfanger SOLID (enkelt ansvar princip, åben/lukket), microservices, funktionelle rørledninger, agile og ånden i DevOps!

Læs denne bog (frit tilgængelig her, men køb en kopi til støtte for forfatteren!).

lad os se på nogle eksempler på den unikke filosofi i aktion.

få hvert program til at gøre en ting godt. For at udføre et nyt job skal du bygge på ny i stedet for at komplicere gamle programmer ved at tilføje nye “funktioner”.

cat gør præcis en ting. Det sammenkæder filer og viser dem på standard output. Det er alt det gør. Det gør ikke pagination. Det tilbyder ikke søgefunktionalitet. Det gør bare præcis, hvad der står på tin og ikke mere.

tr er ens. Det gør “tekstudskiftning” ved at læse fra input, foretage oversættelser og skrive til output.

tr -d aeiouAEIOU < file # Display file without vowels
tr eao 340 < file # Partially leet speak file

true og false er måske de bedste eksempler på at gøre en ting godt. true gør intet, med succes! false gør intet.

false && echo Hi # does nothing
true && echi Hi # Prints Hi

sammensætning

“forvent, at output fra hvert program bliver input til et andet”

de fleste operationer har evnen til at læse og skrive til standard output i et godt forstået tekstformat. Med et par kommandoer, såsom | , > og < kan vi fodre output fra et program til et andet. Lad os se på nogle eksempler:

i dette eksempel bruger vi cat til at udsende indholdet af en fil og føje output til wc hvem kan tælle antallet af linjer i en fil.

cat foo.txt | wc -l

i dette eksempel bruger vi history til at finde vores mest anvendte kommandoer ved at kombinere den med cut, sort, uniq og head.

history | cut -f5 -d" " | sort -rn | uniq -c | sort -rn | head

xargs giver dig mulighed for at opbygge kommandoer fra standard output. Lad os bruge det til at slette alle “.TMP ” filer i den aktuelle mappe efter brug find for at finde dem.

find -type f *.tmp | xargs rm

alt er en fil

i unik er alt en fil (eller mere præcist er alt en strøm af bytes). Dette betyder, at de samme API ‘ er/kommandoer kan bruges til at læse et CD-ROM-drev, skrive et netværksstik eller finde ud af CPU-info.

for eksempel er hele /proc filsystemet ikke rigtig filer — det er en dynamisk visning af oplysninger, der er eksponeret som en flok filbeskrivere.

nogle eksempler:

cat /proc/cpuinfo # Displays your CPU info exposed as a filefoo > /dev/null # Redirect output into a file called
# null (which discards everything)od -vAn -N1 -td1 < /dev/urandom # Display a random 1 byte number
# (via https://unix.stackexchange.com/a/268960

automatisering

længe før “Automatiser-alle-ting”, var der, fejle, Automatiser alle ting

obligatorisk automatisere alle de ting billede

cron (mere her) har automatiseret alle tingene i de sidste 40+ år. Cron job er planlagte scripts, der kan køre på faste tidspunkter eller faste intervaller.

hver bruger på et enkelt system har et sæt planlagte opgaver, der er synlige ved hjælp af kommandoen crontab. Filen er i et meget simpelt format, der giver dato og klokkeslæt for det script, der kører.

kommandoen at er et venligere alternativ, her er et eksempel på at skyde en kommando på 1145 den 31.Januar (herfra).

echo "cc -o foo foo.c" | at 1145 jan 31

marionet, kok, CFEngine, Ansible — alle disse DevOps værktøjer og født og opdrættet på unikke baserede systemer.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

Previous post hvordan man dyrker forskellige sorter af begonier
Next post Vitamin B-100 kompleks oral