Som programmerer, hvis du ikke har hørt om Stackoverflow, bør du tenke på det. En av programmeringsbøkene programmerere trenger å lese mest (faktisk er det nok til å overlate denne til programmeringsbøker!). ):
(Hjemmesiden Jun sterkt la til, bildet over er en parodi, noen nettbrukere forsto ikke dette før, spesielt ikke for å si det) For de programmererne som ikke har lest boken ennå, er det på tide å kjøpe en. Hvis du fortsatt er usikker, ta en titt på denne artikkelen for å finne ut hvorfor du ikke klarer deg uten StackOverflow. Visdommen i å stille spørsmål Når du stiller et teknisk spørsmål, avhenger det ofte av hvordan du spør og følger opp om du får et nyttig svar. —— Eric S. Raymond Noen ganger er en tydelig beskrivelse av et problem, spesielt en teknisk en, ikke så enkel som den ser ut. Å stille spørsmål har alltid vært en vitenskap, men dessverre er det mange som ikke innser det eller ikke gir det nok oppmerksomhet. Eller, noen spørre ber ikke om hjelp i det hele tatt. Så vi vil finne alle slags spørsmål som folk ikke kan svare på eller ikke ønsker å svare på: Java regex-problem? Hva er responstid for SLA? Hva er forskjellen mellom ATL-klasser og generell klassearv? For å unngå at problemet ovenfor blir lukket eller endret, legg ut et bilde her for å oppleve dette drittproblemet:
Du kan finne mange av disse spørsmålene i de ubesvarte spørsmålene på SegmentFault, så mange har åpenbart ikke visdommen eller holdningen til å stille spørsmål. Raymond og Rick Moen skrev et klassisk essay om hvordan man stiller spørsmål, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), som er oversatt til flere språk, er mye utbredt og kan finnes i kinesisk utgave her. Stackoverflow og Segmentfalut har også forslag til å stille spørsmål: Hjelpesenter > spør Hvordan spørre Hvordan stiller jeg et godt spørsmål? Hvilke typer spørsmål er velkomne Det er for mange klassiske spørsmål på Stackoverflow, og vi kan lære oss å stille spørsmål og kommunisere med svarerne. Når du blir vant til å lese spørsmål på stackoverflow, vil du ubevisst etterligne dem når du stiller spørsmål, og dermed unngå å stille tankeløse spørsmål. Her er noen av de viktigste spørsmålene å være oppmerksom på når du stiller spørsmål: Still et spørsmål som søkemotoren ikke har et tilfredsstillende svar på (Google er minst fire sider gammelt). Still spørsmål du ikke klarer å løse på egenhånd, og som du har prøvd mye Prøv å beskrive problemet så tydelig som mulig: god typografi, kode, feilmeldinger, bilder, osv Gjør spørsmålene dine nyttige for andre Det bør finnes et klart svar på spørsmålet, og det skal ikke være for mye subjektivitet Ulike ordninger Mange ganger håper vi å finne en løsning, men på Stackoverflow er det ofte uventede gevinster. Du kan se ulike løsninger på et problem, inkludert til og med sammenligninger av disse løsningene. La oss nå si at du vil vite hvordan du kaller en ekstern kommando i Python, som ls -l, for å skrive ut en artikkel under en katalog. Google python call system-kommandoen, og den første er et relatert spørsmål om stackoverflow: Å kalle en ekstern kommando i Python. (http://stackoverflow.com/questio ... l-command-in-python) (Google tekniske problemer, altså stackoverflow-relaterte problemer, vil bli vist). Så, under dette spørsmålet, oppsummerer noen flere måter å påkalle eksterne kommandoer på: os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() Og hver metode introduseres også, du kan velge den metoden som passer ditt bruksscenario. Et annet eksempel er spørsmålet: Hvordan sjekker man om en fil eksisterer med Python? (http://stackoverflow.com/questio ... exists-useding-python), som beskriver ulike metoder i Python for å sjekke om en fil er til stede. Bruk av verktøy Det finnes mange kraftige verktøy som kan hjelpe oss å studere problemer bedre, du kjenner kanskje til gdb-feilsøkingsverktøyet, du kjenner kanskje timeit-overvåkingsmodulen i python, men du kjenner ikke verktøyene du ikke kan. Mange ganger, når vi først kjenner et verktøy, får vi følelsen av å møtes for sent. Men verktøyene du liker er alltid så vanskelige å få tak i. På Stackoverflow kan det være noen gode verktøy i hvert spørsmål eller kommentar, og du vil alltid ha en sjanse til å finne de beste som ligger bak linjene. Her er en liste over noen av de flotte verktøyene jeg fant: Truss/Strace: Sporer systemkall og mottatte signaler når en prosess kjøres, Strace kan spore systemkall generert av en prosess, inkludert parametere, returverdier og kjøretid. (Fra spørsmål: Hvorfor er det mye tregere å lese linjer fra STDIN i C++ enn i Python?) vprof: Et visuelt verktøy som analyserer egenskapene til Python-programmer, som kjøretid, minnebruk osv. (Fra spørsmålet: Hvordan kan du profilere en Python?) Regex 101: En nettbasert assistent for regulære uttrykk som kan hjelpe deg å forstå betydningen av regulære uttrykk, feilsøke regulære uttrykk og gjøre enkle eksperimenter. (Fra utgave: Å lære regulære uttrykk) Her er et enkelt eksempel på Regex 101:
Tankeprosessen Mange ganger, når vi støter på et problem, har vi ingen måte å starte på og vet ikke hvilken retning vi skal tenke. Men med stackoverflow kan vi enkelt finne den spesifikke løsningen, og noen ganger til og med vite hva andre tenker når de står overfor dette problemet. La oss si at du vil bruke en dekoratør for å utføre en oppgave ved å legge til før og etter strengen som returneres av say-funksjonen nedenfor, og du tenker på å definere say slik. @makebold @makeitalic Definitivt si(): return"Hallo" Hver samtale for å si gir Hello tilbake. Men hvordan man implementerer makebold og makeitalic er et problem. På Stackoverflow finnes det store folk som gir deg svaret direkte og sender deg en lenke til dokumentasjonen til dekoratørene. Men det finnes også Daniels som vil fortelle deg i detalj om sin tankegang og forståelse av dekoratører, slik at du kan forstå dekoratørmekanismen dypt. Som svar på spørsmålet ovenfor finnes det et svar som har fått mer enn 3 000 likes, og som forteller deg hvordan du løser problemet steg for steg. Først og fremst, fortell oss hvilke egenskaper funksjonene i Python har: Funksjoner er objekter En funksjon kan tilordnes en variabel En funksjon kan defineres i en annen funksjon En funksjon kan returnere en annen funksjon Du kan sende funksjoner som parametere Begynn deretter å forklare hva en decorator er: det er faktisk en innkapsling, som lar oss kjøre annen kode før og etter utførelse av den opprinnelige funksjonen uten å endre den. En enkel dekoratørprototype implementeres for hånd, etterfulgt av introduksjon av dekorasjonssyntaks i Python. Til slutt er noen avanserte bruksområder for dekoratører listet opp, inkludert å overføre parametere til dekoratører. Les hele svaret, du vil definitivt få en dypere forståelse av dekoratøren og forstå tankegangen bak å forstå dekoratøren. På denne måten, ved å følge denne tankegangen, kan du selv finne ut hvordan du bruker dekoratørene. Mulige blinde soner Når du ikke har noen spørsmål å stille, kan du også besøke stackoverflow fra tid til annen, bla gjennom noen spørsmål med flere stemmer, og se hva andre har svart. I denne enorme kunnskapsbasen vil du mest sannsynlig finne noen av dine kognitive blindsoner og oppdage innhold du aldri har fulgt med på. Jeg fant noen interessante spørsmål, som: Skrive ut i terminal med farger ved hjelp av Python? Hva er en metaklasse i Python? Hva er din mest produktive snarvei med Vim? Jeg har satt sammen en liste over høykvalitets Python-spørsmål her for hyppig referanse. Jeg angrer på at vi møttes for sent Så hvordan finne StackOverflow, to forslag: Beskriv problemet nøyaktig på engelsk Google det Så lenge du ikke er den første som støter på et teknisk problem, vil du sannsynligvis finne det samme eller lignende problemet på StackOverflow. Møt snart, forelsk deg i Stackoverflow tidlig, og du vil oppdage at livet er så behagelig.
|