Come programmatore, se non hai mai sentito parlare di Stackoverflow, faresti meglio a pensarci. Uno dei libri di programmazione che i programmatori devono leggere di più (anzi, basta lasciarlo solo ai libri di programmazione!). ):
(La homepage ha inserito fortemente June, l'immagine sopra è una parodia, alcuni internauta non lo avevano capito prima, soprattutto per dirlo) Per quei programmatori che non hanno ancora letto il libro, è il momento di acquistarne uno. Se sei ancora indeciso, dai un'occhiata a questo articolo per capire perché non puoi fare a meno di StackOverflow. La saggezza di fare domande Quando fai una domanda tecnica, se ottieni una risposta utile spesso dipende da come la chiedi e da come segui. —— Eric S. Raymond A volte, una descrizione chiara di un problema, specialmente di uno tecnico, non è così semplice come sembra. Fare domande è sempre stata una scienza, ma purtroppo molte persone non se ne rendono conto o non ci prestano abbastanza attenzione. Oppure, alcuni che chiedono non chiedono affatto aiuto. Quindi troveremo ogni tipo di domanda a cui le persone non possono rispondere o non vogliono rispondere: Problema con regex in Java? Cos'è il tempo di risposta SLA? Qual è la differenza tra le classi ATL e l'ereditarietà generale delle classi? Per evitare che il problema sopra venga chiuso o modificato, metti qui un'immagine per sperimentare questo problema di merda:
Puoi trovare molte di queste domande nelle domande senza risposta su SegmentFault, quindi molte persone ovviamente non hanno la saggezza o l'atteggiamento per fare domande. Raymond e Rick Moen hanno scritto un classico saggio su come porre domande, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), che è stato tradotto in varie lingue, ampiamente diffuso e si può trovare in edizione cinese qui. Stackoverflow e Segmentfalut offrono anche suggerimenti per porre domande: Centro Assistenza > Domande Come chiedere Come posso fare una buona domanda? Che tipo di domande sono benvenute Ci sono troppe domande classiche su Stackoverflow, e possiamo imparare a fare domande e comunicare con chi risponde. Quando ti abitui a leggere le domande su stackoverflow, le imiterai inconsciamente quando le porgi, evitando così di fare domande senza cervello. Ecco alcune delle domande più importanti a cui prestare attenzione quando si pongono domande: Fai una domanda a cui il motore di ricerca non ha una risposta soddisfacente (Google ha almeno quattro pagine fa). Fai domande che non puoi risolvere da solo e che hai provato molte Cerca di descrivere il problema nel modo più chiaro possibile: buona tipografia, codice, prompt di errore, immagini, ecc Rendi le tue domande utili agli altri Dovrebbe esserci una risposta definitiva alla domanda, e non ci dovrebbe essere troppa soggettività Schemi diversi Molte volte speriamo di trovare una soluzione, ma su Stackoverflow spesso ci sono guadagni inaspettati. Potresti vedere soluzioni diverse a un problema, inclusi anche confronti tra quelle soluzioni. Supponiamo che ora tu voglia sapere come chiamare un comando esterno in Python, come ls -l, per stampare un articolo sotto una directory. Cerca su Google il comando di chiamata di sistema in python, e la prima è una domanda correlata su stackoverflow: chiamare un comando esterno in Python. (http://stackoverflow.com/questio ... l-command-in-python) (verranno mostrati problemi tecnici su Google, fondamentalmente quelli legati a StackOverflow). Poi, sotto questa domanda, qualcuno riassume diversi modi per evocare comandi esterni: os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() E ogni metodo viene introdotto, puoi scegliere quello che si adatta al tuo scenario applicativo. Un altro esempio è la domanda: come verificare se un file esiste usando Python? (http://stackoverflow.com/questio ... exists-using-python), che descrive diversi metodi in Python per verificare la presenza di un file. Uso degli strumenti Ci sono molti strumenti potenti che possono aiutarci a studiare meglio i problemi: potresti conoscere lo strumento di debug gdb, potresti conoscere il modulo TimeIT monitoring di Python, ma non conosci gli strumenti che non conosci. Molte volte, quando conosciamo per la prima volta uno strumento, abbiamo la sensazione di incontrarci troppo tardi. Tuttavia, gli strumenti che ti piacciono sono sempre così difficili da trovare. Su Stackoverflow, potrebbero esserci dei buoni strumenti in ogni domanda, risposta o commento, e avrai sempre la possibilità di trovare i migliori che restano indietro. Ecco una lista di alcuni degli ottimi strumenti che ho trovato: Truss/Strace: Traccia le chiamate di sistema e i segnali ricevuti quando un processo viene eseguito, Strace può tracciare le chiamate di sistema generate da un processo, inclusi parametri, valori di ritorno e tempi di esecuzione. (Dalla domanda: Perché leggere le righe di stdin è molto più lento in C++ rispetto a Python?) vprof: Uno strumento visivo che analizza le caratteristiche dei programmi Python, come runtime, utilizzo della memoria, ecc. (Dalla domanda: Come si può profilare un Python?) Regex 101: Un assistente online per espressioni regolari che può aiutarti a comprendere il significato delle espressioni regolari, debuggarle e fare esperimenti semplici. (Dal numero: Imparare le espressioni regolari) Ecco un semplice esempio di Regex 101:
Il processo di pensiero Molte volte, quando incontriamo un problema, non abbiamo modo di iniziare e non sappiamo in che direzione pensare. Ma con stackoverflow possiamo facilmente scoprire la soluzione specifica e a volte anche capire cosa pensano gli altri di fronte a questo problema. Supponiamo che tu voglia usare un decoratore per svolgere un compito aggiungendo la stringa prima e dopo restituita dalla funzione say qui sotto, e pensi a definire, say così. @makebold @makeitalic Sicuramente dire(): ritorno "Ciao" Ogni chiamata per dire Ciao. Ma come implementare il makebold e il makeitalic è un problema. Su Stackoverflow, ci sono grandi tori che ti danno la risposta direttamente e ti danno un link alla documentazione dei decoratori. Ma ci sono anche Daniels che ti racconteranno in dettaglio il loro processo di pensiero e la loro comprensione dei decoratori, così da poter comprendere a fondo il meccanismo del decoratore. In risposta alla domanda sopra, c'è una risposta che ha ricevuto più di 3.000 like, che ti spiega come risolvere il problema passo dopo passo. Prima di tutto, dicci quali sono le caratteristiche delle funzioni in python: Le funzioni sono oggetti Una funzione può essere assegnata a una variabile Una funzione può essere definita in un'altra funzione Una funzione può restituirne un'altra Puoi passare funzioni come parametri Poi inizia a spiegare cos'è un decorator: in realtà è un incapsulatore, che ci permette di eseguire altro codice prima e dopo l'esecuzione della funzione originale senza modificarla. Un prototipo semplice di decorator viene realizzato a mano, seguito dall'introduzione della sintassi del decorator in Python. Infine, sono elencati alcuni usi avanzati dei decoratori, incluso il passaggio dei parametri ai decoratori. Leggi tutta la risposta, avrai sicuramente una comprensione più profonda del decoratore e conoscerai il processo di pensiero per comprenderlo. In questo modo, seguendo questo percorso di pensiero, puoi dedurre tu stesso come utilizzare i decoratori. Possibili punti ciechi Quando non hai domande da fare, puoi anche visitare stackoverflow di tanto in tanto, consultare alcune domande con più voti e vedere cosa hanno risposto gli altri. In questa vasta base di conoscenza, molto probabilmente troverai alcuni dei tuoi punti ciechi cognitivi e contenuti a cui non hai mai prestato attenzione. Ho trovato alcune domande interessanti, come: Stampare in terminale con colori usando Python? Cos'è una metaclasse in Python? Qual è la scorciatoia più produttiva con Vim? Ho preparato qui una lista di domande di alta qualità su Python per consulti frequenti. Mi dispiace che ci siamo incontrati troppo tardi Quindi, come trovare StackOverflow, due suggerimenti: Descrivi il problema con precisione in inglese Cercalo su Google Finché non sei il primo a incontrare un problema tecnico, probabilmente troverai lo stesso o simile problema su StackOverflow. Incontrati presto, innamorati presto di Stackoverflow e scoprirai che la vita è così confortevole.
|