Ca programator, dacă nu ai auzit de Stackoverflow, mai bine te gândești la asta. Una dintre cărțile de programare pe care programatorii trebuie să le citească cel mai mult (de fapt, este suficient să o las pe aceasta pentru cărțile de programare!). ):
(Pagina principală pe care June-ul a inserat-o puternic, poza de mai sus este o parodie, unii internauți nu au înțeles asta înainte, mai ales să o spună) Pentru acei programatori care nu au citit încă cartea, este timpul să cumpere una. Dacă încă ești indecis, aruncă o privire la acest articol ca să vezi de ce nu poți face fără StackOverflow. Înțelepciunea de a pune întrebări Când pui o întrebare tehnică, dacă ajungi să primești un răspuns util depinde adesea de modul în care întrebi și continui. —— Eric S. Raymond Uneori, o descriere clară a unei probleme, mai ales una tehnică, nu este atât de simplă pe cât pare. A pune întrebări a fost întotdeauna o știință, dar din păcate mulți oameni nu realizează sau nu acordă suficientă atenție. Sau, unii care pun întrebări nu cer deloc ajutor. Așadar, vom găsi tot felul de întrebări la care oamenii nu pot răspunde sau nu vor să răspundă: Problemă cu regexul în Java? Ce este timpul de răspuns SLA? Care este diferența dintre clasele ATL și moștenirea generală a claselor? Pentru a evita ca problema de mai sus să fie închisă sau modificată, pune aici o poză pentru a experimenta această problemă nenorocită:
Poți găsi o mulțime de astfel de întrebări în întrebările fără răspuns de pe SegmentFault, așa că mulți oameni evident nu au înțelepciunea sau atitudinea să pună întrebări. Raymond și Rick Moen au scris un eseu clasic despre cum să pui întrebări, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), care a fost tradus în diverse limbi, este larg răspândit și poate fi găsit în ediția chineză aici. Stackoverflow și Segmentfalut au, de asemenea, sugestii pentru a pune întrebări: Centrul de Ajutor > Întrebări Cum să întrebi Cum să pun o întrebare bună? Ce fel de întrebări sunt binevenite Sunt prea multe întrebări clasice pe Stackoverflow și putem învăța cum să punem întrebări și să comunicăm cu cei care răspund. Când te obișnuiești să citești întrebări pe stackoverflow, le vei imita inconștient când pui întrebări, evitând astfel să pui întrebări fără minte. Iată câteva dintre cele mai importante întrebări la care trebuie să fii atent când pui întrebări: Pune o întrebare la care motorul de căutare nu are un răspuns satisfăcător (Google are cel puțin patru pagini). Pune întrebări pe care nu le poți rezolva singur și pe care le-ai încercat de multe ori Încearcă să descrii problema cât mai clar: tipografie bună, cod, prompturi de eroare, imagini etc Fă-ți întrebările utile altora Ar trebui să existe un răspuns clar la întrebare și să nu existe prea multă subiectivitate Scheme diferite De multe ori sperăm să găsim o soluție, dar pe Stackoverflow apar adesea câștiguri neașteptate. Poți vedea soluții diferite la o problemă, inclusiv chiar comparații ale acelor soluții. Să presupunem că acum vrei să știi cum să chemi o comandă externă în Python, cum ar fi ls -l, pentru a tipări un articol sub un director. Caută pe Google comanda de apel Python system, iar prima este o întrebare conexă despre stackoverflow: Apelarea unei comenzi externe în Python. (http://stackoverflow.com/questio ... l-command-in-python) (vor apărea probleme tehnice Google, practic probleme legate de stackoverflow). Apoi, sub această întrebare, cineva rezumă mai multe moduri de a invoca comenzi externe: os.system() os.popen() subproces.popen() subproces.call() subproces.run() Și fiecare metodă este introdusă, poți alege metoda care se potrivește scenariului tău de aplicare. Un alt exemplu este întrebarea: Cum să verifici dacă există un fișier folosind Python? (http://stackoverflow.com/questio ... exists-using-python), care descrie diferite metode în Python pentru a verifica prezența unui fișier. Utilizarea uneltelor Există multe instrumente puternice care ne pot ajuta să studiem mai bine problemele, poate știi instrumentul de depanare gdb, poate știi modulul de monitorizare timeit din python, dar nu cunoști uneltele pe care nu le cunoști. De multe ori, când cunoaștem pentru prima dată un instrument, avem senzația că ne întâlnim prea târziu. Totuși, uneltele care îți plac sunt mereu greu de găsit. Pe Stackoverflow, pot exista instrumente bune în fiecare întrebare, răspuns sau comentariu, și vei avea întotdeauna șansa să găsești cele mai bune care au rămas în urmă. Iată o listă cu unele dintre uneltele grozave pe care le-am găsit: Truss/Strace: Urmărește apelurile sistemului și semnalele primite când un proces este executat, Strace poate urmări apelurile sistemului generate de un proces, inclusiv parametri, valori de retur și timpul de execuție. (Din întrebare: De ce este citirea replicilor din stdin mult mai lentă în C++ decât în Python?) vprof: Un instrument vizual care analizează caracteristicile programelor Python, cum ar fi timpul de execuție, utilizarea memoriei etc. (Din întrebare: Cum poți profila un Python?) Regex 101: Un asistent online pentru expresii regulate care te poate ajuta să înțelegi semnificația expresiilor regulate, să depanezi expresiile regulate și să faci experimente simple. (Din număr: Învățarea expresiilor regulate) Iată un exemplu simplu de Regex 101:
Procesul de gândire De multe ori, când ne confruntăm cu o problemă, nu avem cum să începem și nu știm în ce direcție să ne gândim. Dar cu stackoverflow, putem afla ușor soluția specifică și uneori chiar să știm ce cred alții când se confruntă cu această problemă. Să zicem că vrei să folosești un decorator pentru a realiza o sarcină adăugând șirul înaintea și după-ul returnat de funcția say de mai jos, și te gândești să definești să definești așa. @makebold @makeitalic Clar spune(): întoarce-te "Bună" Fiecare apel pentru a spune întoarce Bună. Dar modul în care se implementează makebold și makeitalic este o problemă. Pe Stackoverflow, există mari tauri care îți spun răspunsul direct și îți trimit un link către documentația decoratorilor. Dar există și Daniels care îți vor povesti în detaliu despre procesul lor de gândire și despre înțelegerea lor despre decoratori, astfel încât să poți înțelege profund mecanismul decoratorilor. Ca răspuns la întrebarea de mai sus, există un răspuns care a primit peste 3.000 de aprecieri, spunându-ți cum să rezolvi problema pas cu pas. În primul rând, spune-ne care sunt caracteristicile funcțiilor în python: Funcțiile sunt obiecte O funcție poate fi atribuită unei variabile O funcție poate fi definită într-o altă funcție O funcție poate returna o altă funcție Poți trece funcții ca parametri Apoi începe să explici ce este un decorator: este de fapt un encapsulator, care ne permite să executăm alt cod înainte și după executarea funcției originale fără a o modifica. Un prototip simplu de decorator este implementat manual, urmat de introducerea sintaxei decoratorului în Python. În final, sunt enumerate câteva utilizări avansate ale decoratorilor, inclusiv transmiterea parametrilor către decoratori. Citește tot răspunsul, cu siguranță vei avea o înțelegere mai profundă a decoratorului și vei înțelege procesul de gândire al acestuia. Astfel, urmând această cale de gândire, poți deduce tu însuți cum să folosești decoratorii. Posibile puncte oarbe Când nu ai întrebări de pus, poți vizita din când în când StackOverflow, poți răsfoi unele întrebări cu mai multe voturi și poți vedea ce au răspuns alții. În această bază vastă de cunoștințe, cel mai probabil vei descoperi unele dintre punctele tale oarbe cognitive și vei descoperi conținut la care nu ai acordat niciodată atenție. Am găsit câteva întrebări interesante, cum ar fi: Imprimarea în terminal cu culori folosind Python? Ce este o metaclasă în Python? Care este cea mai productivă scurtătură cu Vim? Am pregătit aici o listă de întrebări Python de înaltă calitate pentru referințe frecvente. Regret că ne-am întâlnit prea târziu Deci, cum să găsești StackOverflow, două sugestii: Descrie problema cu precizie în engleză Caută pe Google Atâta timp cât nu ești prima persoană care întâmpină o problemă tehnică, probabil vei găsi aceeași sau o problemă similară pe StackOverflow. Întâlnește-te curând, îndrăgostește-te de Stackoverflow devreme și vei descoperi că viața este atât de confortabilă.
|