Som programmør, hvis du ikke har hørt om Stackoverflow, bør du tænke over det. En af de programmeringsbøger, som programmører har mest brug for at læse (faktisk er det nok til at lade denne være til programmeringsbøger!). ):
(Hjemmesiden indsatte Jun kraftigt, billedet ovenfor er et parodibillede, nogle netbrugere forstod det ikke før, især ikke at sige det) For de programmører, der endnu ikke har læst bogen, er det tid til at købe en. Hvis du stadig er i tvivl, så tag et kig på denne artikel for at se, hvorfor du ikke kan undvære StackOverflow. Visdommen i at stille spørgsmål Når du stiller et teknisk spørgsmål, afhænger det ofte af, hvordan du spørger og følger op, om du ender med at få et brugbart svar. —— Eric S. Raymond Nogle gange er en klar beskrivelse af et problem, især en teknisk, ikke så enkel, som det ser ud til. At stille spørgsmål har altid været en videnskab, men desværre er der mange, der ikke er klar over det eller ikke lægger nok mærke til det. Eller nogle spørgere beder slet ikke om hjælp. Så vi vil finde alle mulige spørgsmål, som folk ikke kan besvare eller ikke ønsker at besvare: Java regex-problem? Hvad er responstid på SLA'er? Hvad er forskellen mellem ATL-klasser og generel klassearv? For at undgå, at ovenstående problem bliver lukket eller ændret, sæt et billede her for at opleve dette lorteproblem:
Du kan finde en masse af disse spørgsmål i de ubesvarede spørgsmål på SegmentFault, så mange mennesker har åbenlyst ikke visdommen eller indstillingen til at stille spørgsmål. Raymond og Rick Moen skrev et klassisk essay om, hvordan man stiller spørgsmål, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), som er blevet oversat til forskellige sprog, er bredt udbredt og kan findes i kinesisk udgave her. Stackoverflow og Segmentfalut har også forslag til at stille spørgsmål: Hjælpecenter > spørger Sådan spørger du Hvordan stiller jeg et godt spørgsmål? Hvilke slags spørgsmål er velkomne? Der er for mange klassiske spørgsmål på Stackoverflow, og vi kan lære at stille spørgsmål og kommunikere med svarerne. Når du vænner dig til at læse spørgsmål på StackOverflow, vil du ubevidst efterligne dem, når du stiller spørgsmål, og dermed undgå at stille hjerneløse spørgsmål. Her er nogle af de vigtigste spørgsmål, du bør være opmærksom på, når du stiller spørgsmål: Stil et spørgsmål, som søgemaskinen ikke har et tilfredsstillende svar på (Google er mindst fire sider gammelt). Stil spørgsmål, som du ikke kan løse selv, og som du har prøvet mange gange Prøv at beskrive problemet så klart som muligt: god typografi, kode, fejlmeddelelser, billeder osv Gør dine spørgsmål hjælpsomme for andre Der bør være et klart svar på spørgsmålet, og der bør ikke være for meget subjektivitet Forskellige skemaer Mange gange håber vi at finde en løsning, men på Stackoverflow er der ofte uventede gevinster. Du kan se forskellige løsninger på et problem, inklusive endda sammenligninger af disse løsninger. Antag nu, at du vil vide, hvordan du kalder en ekstern kommando i Python, såsom ls -l, for at udskrive en artikel under en mappe. Google python call system-kommandoen, og den første er et relateret spørgsmål om stackoverflow: Kald en ekstern kommando i Python. (http://stackoverflow.com/questio ... l-command-in-python) (Google tekniske problemer, grundlæggende stackoverflow-relaterede problemer, vil blive vist). Under dette spørgsmål opsummerer nogen flere måder at påkalde eksterne kommandoer: os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() Og hver metode introduceres også, du kan vælge den metode, der passer til din anvendelse. Et andet eksempel er spørgsmålet: Hvordan tjekker man, om en fil eksisterer ved hjælp af Python? (http://stackoverflow.com/questio ... exists-useing-python), som beskriver forskellige metoder i Python til at tjekke for tilstedeværelsen af en fil. Brug af værktøjer Der findes mange kraftfulde værktøjer, der kan hjælpe os med bedre at studere problemer; du kender måske GDB-fejlfindingsværktøjet, du kender måske Timeit overvågningsmodulet i Python, men du kender ikke de værktøjer, du ikke kender. Mange gange, når vi først lærer et værktøj at kende, får vi følelsen af at mødes for sent. Men de værktøjer, du kan lide, er altid så svære at få fat i. På Stackoverflow kan der være nogle gode værktøjer i hvert spørgsmål, svar eller kommentar, og du vil altid have mulighed for at finde de bedste, der bliver efterladt bag linjerne. Her er en liste over nogle af de gode værktøjer, jeg fandt: Truss/Strace: Sporer systemkald og modtagne signaler, når en proces udføres, kan Strace spore systemkald genereret af en proces, inklusive parametre, returværdier og eksekveringstid. (Fra spørgsmål: Hvorfor er det meget langsommere at læse linjer fra STDIN i C++ end i Python?) vprof: Et visuelt værktøj, der analyserer karakteristika ved Python-programmer, såsom runtime, hukommelsesforbrug osv. (Fra spørgsmålet: Hvordan kan man profilere en python?) Regex 101: En online assistent til regulære udtryk, der kan hjælpe dig med at forstå betydningen af regulære udtryk, fejlfinde regulære udtryk og lave simple eksperimenter. (Fra udgave: Læring af regulære udtryk) Her er et simpelt eksempel på Regex 101:
Tankeprocessen Mange gange, når vi støder på et problem, har vi ingen måde at starte på og ved ikke, hvilken retning vi skal tænke. Men med stackoverflow kan vi nemt finde den specifikke løsning og nogle gange endda vide, hvad andre tænker, når de står over for dette problem. Lad os sige, at du vil bruge en dekoratør til at udføre en opgave ved at tilføje før og efter strengen, som returneres af say-funktionen nedenfor, og du overvejer at definere say sådan her. @makebold @makeitalic def say(): returner"Hej" Hver opkald for at sige hej vender tilbage. Men hvordan man implementerer makebold og makeitalic er et problem. På Stackoverflow er der store tyre, som vil fortælle dig svaret direkte og sende dig et link til dekoratørernes dokumentation. Men der er også Daniels, som vil fortælle dig i detaljer om deres tankegang og forståelse af dekoratører, så du kan forstå dekoratørens mekanisme dybt. Som svar på ovenstående spørgsmål er der et svar, der har modtaget mere end 3.000 likes, som fortæller dig, hvordan du løser problemet trin for trin. Først og fremmest, fortæl os, hvad funktionernes karakteristika i Python er: Funktioner er objekter En funktion kan tildeles en variabel En funktion kan defineres i en anden funktion En funktion kan returnere en anden funktion Du kan sende funktioner som parametre Så begynd at forklare, hvad en decorator er: det er faktisk en encapsulator, som gør det muligt for os at køre anden kode før og efter udførelsen af den oprindelige funktion uden at ændre den. En simpel dekoratorprototype implementeres manuelt, efterfulgt af introduktionen af dekoratorsyntaks i Python. Endelig er nogle avancerede anvendelser af dekoratører opført, herunder at give parametre videre til dekoratører. Læs hele svaret, du vil helt sikkert få en dybere forståelse af dekoratøren og kende tankegangen bag at forstå dekoratøren. På denne måde kan du, ved at følge denne tankegang, selv udlede, hvordan du bruger dekoratørerne. Mulige blinde vinkler Når du ikke har nogen spørgsmål at stille, kan du også besøge stackoverflow fra tid til anden, gennemse nogle spørgsmål med flere stemmer og se, hvad andre har svaret på. I denne enorme vidensbase vil du sandsynligvis finde nogle af dine kognitive blinde vinkler og opdage indhold, du aldrig har lagt mærke til. Jeg fandt nogle interessante spørgsmål, såsom: Print i terminal med farver ved hjælp af Python? Hvad er en metaklasse i Python? Hvad er din mest produktive genvej med Vim? Jeg har samlet en liste over Python-spørgsmål af høj kvalitet her til hyppig reference. Jeg fortryder, at vi mødtes for sent Så hvordan finder man StackOverflow, to forslag: Beskriv problemet præcist på engelsk Google det Så længe du ikke er den første, der støder på et teknisk problem, vil du sandsynligvis finde det samme eller lignende problem på StackOverflow. Mød dig snart, forelsk dig tidligt i Stackoverflow, og du vil opdage, at livet er så behageligt.
|