Z powodu migracji na Hejto, planuję zmigorwać moje najbardziej plusowane wpisy z #wykop zaczynając od najstarszych. Na te potrzeby stworzyłem tag #wpisyzwykopu i zachęcam innych do migracji wpisów.
Data: 12.08.2015, 0830
Plusy na dzień 17.01.2023: 96
Wpis:
Właśnie czytam "Learn Python The Hard Way" i rakłem
1. Do not use a "debugger." A debugger is like doing a full-body scan on a sick person. You do not get any specific useful information, and you find a whole lot of information that doesn't help and is just confusing.
2. The best way to debug a program is to use print to print out the values of variables at points in the program to see where they go wrong.
@mejwen Torchę poniewczasie, teraz już raczej używanie AWSowych macek jest na topie, chyba, że chcesz zacząć od początku, to macierze i przekształcenia tylko pajtong. A 2 czy 3?
Czy ktoś z was też zaczął w ostatnim czasie uczyć się Pythona? Ja właśnie kończę kurs CS50P, co polecacie dalej jak już zna się jako tako podstawy? Co myślicie o Realpython, dobre źródło wiedzy? Teraz dalej robić kursy, a może jakaś książka lub projekt?
co polecacie dalej jak już zna się jako tako podstawy
Pracę w zawodzie, bo to rozwija najbardziej i daje tyle wiedzy co żadna książka ani kurs tego nie zastąpi na dodatek zarobisz pieniądze. Oprócz tego własne projekty rozwijają wiedzę. Wymyśl sobie jakiś własny projekt który będziesz realizował przez kilka miesięcy lub tygodni na przykład stronkę do podglądu pogody z jakąś mapką gdzie na bierząco będziesz mógł podejrzeć pogodę.
@ioskarpl ja osobiście naukę zacząłem od Pythona, ale po tym jak zobaczyłem jak mało jest ofert juniorskich w tym języku, to pomyślałem, że bezpieczniej będzie coś popularniejszego, z czym łatwiej zacząć pracę w branży. Mój wybór padł na Javę. C# też imo nie byłby złym pomysłem, lub JS. Ponadto w materiałach, z którymi ja miałem do czynienia dla Pythona, bardzo mało uwagi poświęcono programowaniu obiektowemu, więc stwierdziłem, że wykupie kurs javy na udemy. W końcu najlepiej zrozumiem OOP pisząc w języku typowo obiektowym.
Ten sam interpreter zdefiniowany - PyCharm wywala się na wyjątku wypuszczając tylko exit code 0xC0000409 a jak apkę odpalę bezpośrednio z poziomu terminala to nagle się okazuje, że wyjątek wywołać można z całą jego treścią.
Utrzymanie i rozwój aplikacji potrafi przysporzyć wielu problemów, zwłaszcza jeśli nie zadbamy o odpowiednią architekturę kodu oraz higienę pracy z kodem. Mnogość przeróżnych podejść do tworzenia aplikacji w dzisiejszych czasach też potrafi doprowadzić do bólu głowy: DDD, TDD, BDD, DRY, WET, KISS i masa innych akronimów prowadzi starcie w naszych głowach, kiedy jeszcze nie wiemy dokładnie w jaką stronę będzie zmierzał projekt.
Poniższy artykuł, a właściwie cała strona, opisuje dwanaście składników aplikacji webowych, które pozwolą nam uniknąć najbardziej fundamentalnych problemów w czasie wdrażania oraz utrzymania oprogramowania. W skrócie są to:
Codebase - jedno repozytorium w systemie kontroli wersji, wiele wdrożeń
Dependencies - jasno definiuj i izoluj zależności
Config - przechowuj konfigurację w środowisku zamiast w kodzie
Backing services - traktuj usługi zewnętrzne (np. bazy danych, storage, integracje) jako zasoby
Build, release, run - bezwzględnie rozdzielaj od siebie etapy budowania i uruchamiania aplikacji
Processes - uruchamiaj aplikację jako jeden lub więcej bezstanowych procesów
Port binding - udostępniaj usługi poprzez dowiązanie portów
Concurrency - skaluj aplikację w modelu procesowym
Disposability - maksymalizuj niezawodność zapewniając szybki start i łagodne zamykanie procesów
Dev/prod parity - środowiska lokalne, testowe oraz produkcyjne powinny być do siebie tak podobne, jak tylko możliwe
Logs - traktuj logi jako strumienie zdarzeń
Admin processes - uruchamiaj zadanie administracyjne jako jednorazowe procesy
Zdaję sobie sprawę, że te opisy są bardzo ogólne, ale jeśli chcecie, mogę przygotować serię, w której dokładniej omówię każdy z punktów. Tymczasem, po więcej szczegółów możecie sięgnąć na stronę The Twelve-Factor App .
Temat traktowany po macoszemu przez wielu programistów. Logowanie zdarzeń może jednak dostarczyć nieocenionej pomocy, kiedy zachodzi konieczność prześledzenia zdarzeń na środowiskach produkcyjnych, gdzie nie mamy możliwości debugowania aplikacji.
Autor omawia, wraz z przykładami, najważniejsze zagadnienia związane z modułem logging w Pythonie:
dobre praktyki
poziomy logowania
konfigurację formaterów, handlerów i loggerów
a w międzyczasie opisuje jak to wszystko działa i jak się ze sobą łączy.
Lekturę polecam każdemu, niezależnie od tego, przy jak dużym projekcie pracujecie - logowanie zdarzeń jest przydatne w każdej skali, zwłaszcza jeśli je dobrze skonfigurujemy i używamy go z głową: Logging in Python like a PRO
Jak generować piękne, czytelne tracebacki w Pythonie?
Poniższy artykuł pokazuje, jak samemu można zmienić sposób wyświetlania tracebacków w Pythonie, a także pokazuje kilka przykładowych paczek, które zrobią to za nas.
W dużym skrócie, wystarczy stworzyć funkcję z odpowiednimi parametrami i przypisać ją do sys.excepthook.
Poniższy artykuł omawia dwie metryki złożoności kodu, które mają bezpośredni wpływ na naszą zdolność zrozumienia, co dany kod właściwie robi:
Złożoność cyklomatyczna - określana jest liczbą rozgałęzień i punktów decyzyjnych w funkcji
Złożoność poznawcza - określana jest liczbą punktów decyzyjnych oraz ilością stopni zagnieżdżenia w funkcji
Pisząc kod, powinno nam zależeć na tym, aby obie te metryki były jak najniższe, dzieki czemu utrzymanie takiego kodu w przyszłości, a także zrozumienie go, będzie dużo prostsze.