Jako programista, jeśli nie słyszałeś o Stackoverflow, lepiej się nad tym zastanów. Jedna z książek programistycznych, które programiści powinni przeczytać najbardziej (właściwie wystarczy zostawić tę książkę na książki programistyczne!). ):
(Strona główna Jun mocno wstawiła, powyższe zdjęcie to parodia, niektórzy internauci wcześniej tego nie rozumieli, zwłaszcza że to mówili) Dla tych programistów, którzy jeszcze nie czytali książki, czas ją kupić. Jeśli nadal się wahasz, zajrzyj do tego artykułu, aby zobaczyć, dlaczego nie możesz się obyć bez StackOverflow. Mądrość zadawania pytań Gdy zadajesz pytanie techniczne, to, czy otrzymasz użyteczną odpowiedź, często zależy od tego, jak zadasz i jak się do tego dostosujesz. —— Eric S. Raymond Czasami jasny opis problemu, zwłaszcza technicznego, nie jest tak prosty, jak się wydaje. Zadawanie pytań zawsze było nauką, ale niestety wiele osób tego nie zdaje sobie sprawy lub nie zwraca na to wystarczającej uwagi. Albo niektórzy pytający w ogóle nie proszą o pomoc. Znajdziemy więc wszelkiego rodzaju pytania, na które ludzie nie potrafią odpowiedzieć lub nie chcą odpowiedzieć: Problem z regex w Javie? Czym jest czas reakcji na SLA? Jaka jest różnica między klasami ATL a ogólnym dziedziczeniem klas? Aby uniknąć zamknięcia lub modyfikacji powyższego problemu, wrzuć tutaj zdjęcie, żeby doświadczyć tego cholernego problemu:
Wiele z tych pytań znajdziesz w nierozwiązanych pytaniach na SegmentFault, więc wiele osób ewidentnie nie ma mądrości ani nastawienia, by je zadawać. Raymond i Rick Moen napisali klasyczny esej o tym, jak zadawać pytania, The Smart Way (http://www.catb.org/~esr/faqs/smart-questions.html#translations), który został przetłumaczony na różne języki, szeroko rozpowszechniony i można go znaleźć w chińskim wydaniu tutaj. Stackoverflow i Segmentfalut również mają sugestie dotyczące zadawania pytań: Centrum pomocy > Pytanie Jak zapytać Jak zadać dobre pytanie? Jakie pytania są mile widziane Na Stackoverflow jest zbyt wiele klasycznych pytań, a my możemy nauczyć się zadawać pytania i komunikować się z osobami odpowiadającymi. Kiedy przyzwyczaisz się do czytania pytań na stackoverflow, nieświadomie je naśladujesz podczas zadawania pytań, unikając tym samym bezmyślnych pytań. Oto niektóre z najważniejszych pytań, na które warto zwrócić uwagę podczas zadawania pytań: Zadaj pytanie, na które wyszukiwarka nie ma satysfakcjonującej odpowiedzi (Google ma co najmniej cztery strony). Zadawaj pytania, na które sam nie potrafisz odpowiedzieć i których próbowałeś wiele Staraj się opisać problem jak najjaśniej: dobra typografia, kod, polecenia błędów, obrazki itd Spraw, by Twoje pytania były pomocne dla innych Powinna być jednoznaczna odpowiedź na to pytanie i nie powinno być zbyt dużej subiektywności Różne schematy Często mamy nadzieję znaleźć rozwiązanie, ale na Stackoverflow często pojawiają się nieoczekiwane korzyści. Możesz zobaczyć różne rozwiązania problemu, w tym nawet porównania tych rozwiązań. Załóżmy teraz, że chcesz wiedzieć, jak wywołać zewnętrzne polecenie w Pythonie, takie jak ls -l, aby wydrukować artykuł w katalogu. Wyszukaj w Google polecenie system wywołań w Pythonie, a pierwsze pytanie dotyczy powiązanego pytania na stackoverflow: Wywołanie zewnętrznego polecenia w Pythonie. (http://stackoverflow.com/questio ... l-command-in-python) (wyświetlą się problemy techniczne w Google, zasadniczo problemy związane ze stackoverflow). Następnie pod tym pytaniem ktoś podsumowuje kilka sposobów wywoływania zewnętrznych poleceń: os.system() os.popen() subprocess.popen() subprocess.call() subprocess.run() Każda metoda jest również wprowadzana, możesz wybrać taką, która pasuje do twojego scenariusza zastosowania. Innym przykładem jest pytanie: Jak sprawdzić, czy plik istnieje za pomocą Pythona? (http://stackoverflow.com/questio ... exists-using-python), który opisuje różne metody w Pythonie do sprawdzania obecności pliku. Wykorzystanie narzędzi Istnieje wiele potężnych narzędzi, które mogą pomóc nam lepiej analizować problemy, możesz znać narzędzie do debugowania gdb, moduł monitorowania timeit w Pythonie, ale nie znasz narzędzi, których nie znasz. Często, gdy poznajemy narzędzie, mamy wrażenie, że spotykamy się zbyt późno. Jednak narzędzia, które lubisz, zawsze są bardzo trudne do zdobycia. Na Stackoverflow mogą znaleźć się dobre narzędzia w każdym pytaniu, odpowiedzi czy komentarzu, a zawsze będziesz mieć szansę znaleźć te najlepsze, które zostały za liniami. Oto lista kilku świetnych narzędzi, które znalazłem: Truss/Strace: śledzi wywołania systemowe i sygnały odebrane podczas wykonywania procesu, STRACE może śledzić wywołania systemowe generowane przez proces, w tym parametry, wartości zwrotne i czas wykonywania. (Z pytania: Dlaczego czytanie linii ze stdin jest znacznie wolniejsze w C++ niż w Pythonie?) vprof: Narzędzie wizualne analizujące cechy programów w Pythonie, takie jak czas działania, zużycie pamięci itp. (Z pytania: Jak można profilować Pythona?) Regex 101: Internetowy asystent wyrażeń regularnych, który pomoże Ci zrozumieć znaczenie wyrażeń regularnych, debugować wyrażenia regularne i prowadzić proste eksperymenty. (Z numeru: Nauka wyrażeń regularnych) Oto prosty przykład Regex 101:
Proces myślenia Często, gdy napotykamy problem, nie mamy jak zacząć i nie wiemy, w którą stronę myśleć. Ale dzięki stackoverflow łatwo możemy znaleźć konkretne rozwiązanie, a czasem nawet wiedzieć, co inni myślą w obliczu tego problemu. Załóżmy, że chcesz użyć dekoratora, aby wykonać zadanie, dodając przed i po ciągu ciągu zwrotnym przez funkcję say poniżej, i rozważasz definiowanie powiedzenia w ten sposób. @makebold @makeitalic Def say(): return"Hello" Każde połączenie z powrotem na Hello. Ale jak zaimplementować makebold i makeitalic to problem. Na Stackoverflow są duże byki, które od razu podają odpowiedź i podają link do dokumentacji dekoratorów. Ale są też Daniels, którzy szczegółowo opowiedzą o swoim procesie myślenia i zrozumieniu dekoratorów, dzięki czemu można było głęboko zrozumieć mechanizm dekoratora. W odpowiedzi na powyższe pytanie istnieje odpowiedź, która otrzymała ponad 3 000 polubień i informuje, jak krok po kroku rozwiązać problem. Przede wszystkim opowiedz nam, jakie są cechy funkcji w Pythonie: Funkcje są obiektami Funkcję można przypisać zmiennej Funkcję można zdefiniować w innej funkcji Jedna funkcja może zwracać inną funkcję Możesz przekazać funkcje jako parametry Następnie zacznij tłumaczyć, czym jest dekorator: to w rzeczywistości kapsułka, która pozwala nam wykonywać inny kod przed i po wykonaniu oryginalnej funkcji bez jej modyfikacji. Prosty prototyp dekoratora jest realizowany ręcznie, po czym wprowadza się składnię dekoratora w Pythonie. Na koniec wymieniono zaawansowane zastosowania dekoratorów, w tym przekazywanie parametrów dekoratorom. Przeczytaj całą odpowiedź, na pewno będziesz lepiej rozumieć dekoratora i znać proces myślenia o jego zrozumieniu projektanta. W ten sposób, podążając tą ścieżką myślenia, możesz sam wywnioskować, jak korzystać z dekoratorów. Możliwe martwe punkty Gdy nie masz żadnych pytań, możesz od czasu do czasu odwiedzić stackoverflow, przejrzeć pytania z większą liczbą głosów i zobaczyć, na co inni odpowiedzieli. W tej ogromnej bazie wiedzy najprawdopodobniej znajdziesz niektóre ze swoich poznawczych słabości i zauważysz treści, na które nigdy wcześniej nie zwracałeś uwagi. Znalazłem kilka ciekawych pytań, takich jak: Drukować w terminalu kolorami w Pythonie? Czym jest metaklasa w Pythonie? Jaki jest Twój najbardziej produktywny skrót z Vim? Przygotowałem tutaj listę wysokiej jakości pytań z Pythona, do których często się odwołuję. Żałuję, że spotkaliśmy się za późno Jak znaleźć StackOverflow, dwie sugestie: Opisz problem precyzyjnie po angielsku Wyszukaj to w Google Dopóki nie jesteś pierwszą osobą, która napotkała problem techniczny, prawdopodobnie znajdziesz ten sam lub podobny problem na StackOverflow. Spotkaj się wkrótce, zakochaj się w Stackoverflow wcześnie, a przekonasz się, że życie jest bardzo wygodne.
|