Jako programátor, pokud jste o Stackoverflow neslyšeli, měli byste o tom přemýšlet. Jedna z programátorských knih, které programátoři potřebují číst nejvíc (vlastně stačí tuto nechat na programátorské knihy!). ):
(Domovská stránka Jun silně vkládala, obrázek výše je parodický obrázek, někteří uživatelé internetu tomu předtím nerozuměli, zvlášť když to řekli) Pro ty programátory, kteří knihu ještě nečetli, je čas si ji pořídit. Pokud si stále nejsi jistý, podívejte se na tento článek, proč se bez StackOverflow neobejdete. Moudrost klást otázky Když položíte technickou otázku, zda dostanete užitečnou odpověď, často závisí na tom, jak se ptáte a jak navazujete. —— Eric S. Raymond Někdy není jasné popsání problému, zvláště technického, tak jednoduché, jak se zdá. Kladení otázek bylo vždy vědou, ale bohužel si to mnoho lidí neuvědomuje nebo tomu nevěnuje dostatečnou pozornost. Nebo někteří tazatelé o pomoc vůbec nežádají. Takže najdeme spoustu otázek, na které lidé nemohou nebo nechtějí odpovědět: Problém s Java regexem? Co je doba odezvy na SLA? Jaký je rozdíl mezi ATL třídami a obecným dědičností tříd? Aby se výše uvedený problém neuzavřel nebo nezměnil, dejte sem fotku, abyste si tento mizerný problém zažili:
Spoustu těchto otázek najdete v nezodpovězených otázkách na SegmentFault, takže mnoho lidí zjevně nemá moudrost ani postoj se ptát. Raymond a Rick Moenovi napsali klasickou esej o tom, jak klást otázky The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), která byla přeložena do různých jazyků, je široce rozšířená a v čínském vydání ji najdete zde. Stackoverflow a Segmentfalut mají také tipy, jak klást otázky: Centrum pomoci > dotazy Jak se zeptat Jak položit dobrou otázku? Jaké otázky jsou vítány Na Stackoverflow je příliš mnoho klasických otázek a můžeme se naučit, jak klást otázky a komunikovat s odpovídajícími. Když si zvyknete číst otázky na stackoverflow, budete je nevědomky napodobovat při kladení otázek, čímž se vyhnete kladení bezmyšlenkovitých otázek. Zde jsou některé z nejdůležitějších otázek, na které je třeba při kladení otázek dávat pozor: Zeptejte se na otázku, na kterou vyhledávač nemá uspokojivou odpověď (Google je starý alespoň čtyři stránky). Ptej se na otázky, na které sám nedokážeš vyřešit a zkusil jsi toho hodně. Snažte se problém popsat co nejjasněji: dobrá typografie, kód, chybové výzvy, obrázky atd Udělejte své otázky užitečné pro ostatní Na otázku by měla být jednoznačná odpověď a neměla by být příliš velká subjektivita Různé schémata Mnohokrát doufáme, že najdeme řešení, ale na Stackoverflow často přicházejí nečekané přínosy. Můžete vidět různá řešení problému, včetně srovnání těchto řešení. Představte si, že nyní chcete vědět, jak zavolat externí příkaz v Pythonu, například ls -l, abyste vytiskli článek pod adresářem. Vyhledejte na Googlu příkaz Call System v Pythonu a první je příbuzná otázka na stackoverflow: Volání externího příkazu v Pythonu. (http://stackoverflow.com/questio ... l-command-in-python) (Technické problémy z Googlu, v podstatě související s StackOverflow, se zobrazí na Googlu). Poté pod touto otázkou někdo shrnuje několik způsobů, jak vyvolat externí příkazy: os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() A každá metoda je také představena, můžete si vybrat tu, která vyhovuje vašemu aplikačnímu scénáři. Dalším příkladem je otázka: Jak ověřit, zda soubor existuje pomocí Pythonu? (http://stackoverflow.com/questio ... exists-using-python), který popisuje různé metody v Pythonu pro kontrolu přítomnosti souboru. Použití nástrojů Existuje mnoho výkonných nástrojů, které nám mohou pomoci lépe studovat problémy, možná znáte nástroj pro ladění v gdb, modul Timeit monitoring v Pythonu, ale neznáte nástroje, které neznáte. Mnohokrát, když poprvé známe nástroj, máme pocit, že se setkáváme příliš pozdě. Nicméně nástroje, které máte rádi, jsou vždy velmi těžko dostupné. Na Stackoverflow mohou být dobré nástroje v každé otázce, odpovědi nebo komentáři a vždy budete mít šanci najít ty nejlepší, které zůstaly za liniemi. Tady je seznam některých skvělých nástrojů, které jsem našel: Truss/Strace: Sleduje systémové volání a přijaté signály při vykonání procesu, Strace dokáže sledovat systémová volání generovaná procesem, včetně parametrů, návratových hodnot a doby provedení. (Z otázky: Proč je čtení řádků ze stdin v C++ mnohem pomalejší než v Pythonu?) vprof: Vizuální nástroj, který analyzuje charakteristiky Python programů, jako je runtime, využití paměti atd. (Z otázky: Jak můžete profilovat Python?) Regex 101: Online asistent regulárních výrazů, který vám pomůže pochopit význam regulárních výrazů, ladit regulární výrazy a provádět jednoduché experimenty. (Z čísla: Učení regulárních výrazů) Tady je jednoduchý příklad Regex 101:
Proces myšlení Mnohokrát, když narazíme na problém, nemáme jak začít a nevíme, kterým směrem myslet. Ale se stackoverflow můžeme snadno najít konkrétní řešení a někdy dokonce vědět, co si ostatní myslí, když se s tímto problémem setkáme. Řekněme, že chcete použít dekorátora k dosažení úkolu tím, že přidáte před a za řetězec vrácený funkcí níže, a přemýšlíte o definici třeba takto. @makebold @makeitalic def say(): návrat "Ahoj" Každý hovor na pozdrav odpovídá Ahoj. Ale jak implementovat makebold a makeitalic je problém. Na Stackoverflow jsou velcí býci, kteří vám přímo řeknou odpověď a pošlou odkaz na dokumentaci dekoratérů. Ale jsou tu také Danielové, kteří vám podrobně podělí o svůj myšlenkový proces a porozumění dekoratérům, abyste mohli detailně pochopit mechanismus dekoratéra. Na výše uvedenou otázku je odpověď, která získala více než 3 000 lajků a říká vám, jak problém krok za krokem vyřešit. Nejprve nám řekněte, jaké jsou charakteristiky funkcí v pythonu: Funkce jsou objekty Funkci lze přiřadit proměnné Funkci lze definovat v jiné funkci Jedna funkce může vrátit jinou funkci Funkce můžete předávat jako parametry Pak začněte vysvětlovat, co je dekoratér: je to vlastně zapouzdření, které nám umožňuje spouštět jiný kód před a po spuštění původní funkce bez nutnosti ji upravovat. Jednoduchý prototyp dekorátora je implementován ručně, následovaný zavedením syntaxe dekorátorů v Pythonu. Nakonec jsou uvedeny některé pokročilé využití dekoratérů, včetně předávání parametrů dekoratérům. Přečtěte si celou odpověď, určitě budete mít hlubší porozumění dekoratérovi a poznáte způsob, jak ho chápat. Tímto způsobem, když budete následovat tuto cestu myšlení, můžete sami odvodit, jak dekoratéry používat. Možné slepé úhly Když nemáte žádné otázky, můžete také občas navštívit stackoverflow, prohlédnout si otázky s více hlasy a zjistit, na co ostatní odpověděli. V této rozsáhlé znalostní bázi pravděpodobně najdete některá ze svých kognitivních slepých míst a objevíte obsah, kterému jste nikdy nevěnovali pozornost. Našel jsem několik zajímavých otázek, například: Tisknout v terminálu s barvami pomocí Pythonu? Co je metaclass v Pythonu? Jaká je vaše nejproduktivnější zkratka s Vim? Sestavil jsem zde seznam kvalitních otázek do Pythonu pro časté použití. Lituji, že jsme se setkali příliš pozdě Jak najít StackOverflow, dva tipy: Popište problém přesně anglicky Vygoogli si to Pokud nejste první, kdo narazil na technický problém, pravděpodobně na StackOverflow narazíte na stejný nebo podobný problém. Setkejte se brzy, zamilujte se do Stackoverflow brzy a zjistíte, že život je tak pohodlný.
|