Kot programer, če še niste slišali za Stackoverflow, je bolje, da razmislite o tem. Ena izmed knjig o programiranju, ki jih morajo programerji najbolj prebrati (pravzaprav je dovolj, da jo pustijo za knjige o programiranju!). ):
(Domača stran je Jun močno vstavljena, zgornja slika je parodija, nekateri uporabniki tega prej niso razumeli, še posebej, da bi to rekli) Za tiste programerje, ki knjige še niso prebrali, je čas, da jo kupite. Če ste še vedno v dvomih, si oglejte ta članek, da vidite, zakaj ne morete brez StackOverflow. Modrost postavljanja vprašanj Ko postaviš tehnično vprašanje, je pogosto odvisno od tega, kako postavljaš in nadaljuješ z odgovorom, ali boš na koncu dobil uporaben odgovor. —— Eric S. Raymond Včasih jasen opis problema, še posebej tehničnega, ni tako preprost, kot se zdi. Postavljanje vprašanj je bilo vedno znanost, a žal mnogi tega ne dojemajo ali mu ne posvečajo dovolj pozornosti. Ali pa nekateri spraševalci sploh ne prosijo za pomoč. Tako bomo našli vsa vprašanja na katera ljudje ne morejo ali pa jih nočejo odgovoriti: Težava z Java regexom? Kaj je odzivni čas na SLA? Kakšna je razlika med ATL razredi in splošnim dedovanjem razredov? Da se izognete zaprtju ali spremembam zgornjega problema, dodajte sliko tukaj, da doživite ta sranje problem:
Veliko teh vprašanj lahko najdete v neodgovorjenih vprašanjih na SegmentFault, zato očitno veliko ljudi nima modrosti ali odnosa, da bi postavljali vprašanja. Raymond in Rick Moen sta napisala klasičen esej o tem, kako postavljati vprašanja, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), ki je bil preveden v različne jezike, široko razširjen in ga lahko najdete v kitajski izdaji tukaj. Stackoverflow in Segmentfalut imata prav tako predloge za postavljanje vprašanj: Center za pomoč > vprašanja Kako vprašati Kako naj postavim dobro vprašanje? Kakšna vprašanja so dobrodošla Na Stackoverflow je preveč klasičnih vprašanj, zato se lahko naučimo, kako postavljati vprašanja in komunicirati z odgovarjači. Ko se navadiš brati vprašanja na stackoverflow, jih boš nezavedno posnemal pri postavljanju vprašanj, s čimer se boš izognil neumnim vprašanjem. Tukaj je nekaj najpomembnejših vprašanj, na katera je treba biti pozoren pri postavljanju vprašanj: Postavite vprašanje, na katerega iskalnik nima zadovoljivega odgovora (Google je star vsaj štiri strani). Postavljaj vprašanja, ki jih sam ne znaš rešiti in si jih že veliko poskusil Poskusite problem opisati čim bolj jasno: dobra tipografija, koda, pozivi za napake, slike itd Naj bodo vaša vprašanja koristna za druge Na vprašanje mora biti jasen odgovor in ne sme biti preveč subjektivnosti Različne sheme Velikokrat upamo, da bomo našli rešitev, a na Stackoverflowu so pogosto nepričakovane koristi. Lahko opazite različne rešitve problema, vključno s primerjavami teh rešitev. Recimo, da zdaj želite vedeti, kako poklicati zunanji ukaz v Pythonu, na primer ls -l, da natisnete članek pod mapo. Poguglajte ukaz Python call system in prvi je sorodno vprašanje na stackoverflow: Klicanje zunanjega ukaza v Pythonu. (http://stackoverflow.com/questio ... l-command-in-python) (Google tehnične težave, v bistvu težave povezane s stackoverflow, bodo prikazane). Nato pod tem vprašanjem nekdo povzame več načinov za klicanje zunanjih ukazov: os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() Vsaka metoda je prav tako predstavljena, lahko izberete tisto, ki ustreza vašemu scenariju uporabe. Drug primer je vprašanje: Kako preveriti, ali datoteka obstaja s Pythonom? (http://stackoverflow.com/questio ... exists-using-python), ki opisuje različne metode v Pythonu za preverjanje prisotnosti datoteke. Uporaba orodij Obstaja veliko zmogljivih orodij, ki nam lahko pomagajo bolje preučevati probleme, morda poznate orodje za razhroščevanje v gdb, morda poznate modul za spremljanje timeit v Pythonu, vendar ne poznate orodij, ki jih ne poznate. Velikokrat, ko prvič spoznamo orodje, imamo občutek, da se srečamo prepozno. Vendar pa so orodja, ki jih imate radi, vedno zelo težko dostopna. Na Stackoverflow je lahko v vsakem vprašanju, odgovoru ali komentarju nekaj dobrih orodij, vedno pa boste imeli priložnost najti najboljša, ki so ostala za vrsticami. Tukaj je seznam nekaterih odličnih orodij, ki sem jih našel: Truss/Strace: Sledi sistemskim klicem in prejetim signalom, ko se proces izvaja, Strace lahko sledi sistemskim klicem, ki jih generira proces, vključno s parametri, vrnjenimi vrednostmi in časom izvajanja. (Iz vprašanja: Zakaj je branje vrstic iz stdin v C++ veliko počasneje kot v Pythonu?) vprof: Vizualno orodje, ki analizira značilnosti Python programov, kot so čas izvajanja, poraba pomnilnika itd. (Iz vprašanja: Kako lahko profiliraš Pythona?) Regex 101: Spletni pomočnik za regularne izraze, ki vam lahko pomaga razumeti pomen regularnih izrazov, odpravljati napake regularnih izrazov in izvajati preproste eksperimente. (Iz številke: Učenje regularnih izrazov) Tukaj je preprost primer Regex 101:
Proces razmišljanja Velikokrat, ko naletimo na težavo, nimamo načina, kako začeti, in ne vemo, v katero smer naj razmišljamo. A s stackoverflow lahko zlahka odkrijemo specifično rešitev in včasih celo vemo, kaj si drugi mislijo, ko se soočijo s tem problemom. Recimo, da želite uporabiti dekoratorja za izvedbo naloge tako, da dodate pred in za nizom, ki ga vrne funkcija Say spodaj, in razmišljate, da ga definirate takole. @makebold @makeitalic def say(): vrni»Pozdravljeni« Vsak klic, da rečem, se vrne Živjo. A kako implementirati makebold in makeitalic je problem. Na Stackoverflow so veliki biki, ki vam bodo neposredno povedali odgovor in vam ponudili povezavo do dokumentacije dekoraterjev. Obstajajo pa tudi Danieli, ki vam podrobno povedo o svojem razmišljanju in razumevanju dekoraterjev, da boste lahko globoko razumeli mehanizem dekoraterja. Kot odgovor na zgornje vprašanje obstaja odgovor, ki je prejel več kot 3.000 všečkov in vam razlaga, kako rešiti problem korak za korakom. Najprej nam povejte, kakšne so značilnosti funkcij v Pythonu: Funkcije so objekti Funkcijo je mogoče dodeliti spremenljivki Funkcijo je mogoče definirati v drugi funkciji Ena funkcija lahko vrne drugo funkcijo Funkcije lahko posredujete kot parametre Nato začnite razlagati, kaj je dekorater: pravzaprav je enkapsulator, ki nam omogoča, da izvajamo drugo kodo pred in po izvajanju izvirne funkcije brez njenega spreminjanja. Preprost prototip dekoratorja je izveden ročno, sledi uvedba sintakse dekoratorjev v Pythonu. Nazadnje so navedene nekatere napredne uporabe dekoraterjev, vključno s posredovanjem parametrov dekoratorjem. Preberi celoten odgovor, zagotovo boš imel globlje razumevanje dekoraterja in spoznal način razmišljanja, kako ga razumeti. Na ta način, ko sledite tej poti razmišljanja, lahko sami ugotovite, kako uporabiti dekoraterje. Možni mrtvi koti Ko nimate vprašanj, lahko občasno obiščete stackoverflow, prebrskate nekaj vprašanj z več glasovi in preverite, na kaj so drugi odgovorili. V tej obsežni bazi znanja boste najverjetneje našli nekatere svoje kognitivne slepe pege in odkrili vsebine, na katere nikoli niste bili pozorni. Našel sem nekaj zanimivih vprašanj, kot so: Tiskati v terminalu z barvami v Pythonu? Kaj je metarazred v Pythonu? Katera je vaša najbolj produktivna bližnjica z Vimom? Tukaj sem pripravil seznam kakovostnih vprašanj o Pythonu za pogosto uporabo. Žal mi je, da sva se srečala prepozno Torej, kako najti StackOverflow, dva predloga: Natančno opišite problem v angleščini Poglej na Googlu Dokler niste prvi, ki je naletel na tehnično težavo, boste verjetno našli enako ali podobno težavo tudi na StackOverflow. Srečajte se kmalu, zgodaj se zaljubite v Stackoverflow in ugotovili boste, da je življenje zelo udobno.
|