Przejdź do głównej zawartości

Posty

Neat idea

W Pythonie jest obyczaj, że informacja o wersji jest dostępna pod zmienną __version__ na najwyższym poziomie pakietu. Informacja ta powinna być zawarta również w skrypcie instalacji setup.py, jednakowoż zwykle złym pomysłem jest importowanie w nim własnego pakietu. Ludzie mają różne sposoby aby to obejść - parsują pliki jako tekst i szukają tam umówionego ciągu wyrażeniami regularnymi, albo trzymają tę informację gdzieś na boku.

A gdyby tak sparsować ten plik do AST i rekurencyjnie badając zmienną __version__ dotrzeć w końcu do tej jednej stałej, która ustala wersję raz dla wszystkich?
Najnowsze posty

Python 3.7 na Debianie 8 (Jessie) z pełnym SSL

Jakkolwiek wszyscy dobrze wiedzą, że Debian Jessie to jest staroć i w ogóle nikt go nie używa, to czasem jest potrzeba odpalić nowego Pythona (3.7 oraz nowszy) na takim archaicznym systemie. Problem jest taki, że ten stary Debian ma stare OpenSSL, z którym Python 3.7 nie gada. Nie ma rady, trzeba sobie zmielić nowe libssl i nowego Pythona.

Jak to zwykle w internecie, na ten temat można znaleźć pińcet recept, każdy z autorów zarzeka się, że tylko jego sposób działa, a wszyscy pozostali to hochsztaplerzy. Tymczasem na świeżo mogę napisać, co działa na Armbianie Jessie z jądrem 3.4. Obie zabawki budowane były na miejscu, czyli na komputerku klasy SBC z procesorem Allwinner H3 i 512MB RAM. Decyzja o budowaniu na miejscu zapadła jak zobaczyłem jakiej gimnastyki wymaga budowanie krzyżowe Pythona, np. na x86_64 dla ARMv7. Tak że jakoś przeżyjemy. Jak również spróbowałem zbudować sobie zarówno OpenSSL 1.1.1, jak i LibreSSL 2.9.0 - ostatecznie wybrałem to drugie. Proces budowania jest jakiś ta…

Hello, Mr. Developer

Po dłuższej robocie z innymi rzeczami trafił mi się jeden mały projekt, który idealnie nadał się na rozpoznanie bojem, co tam nowego panie w światku bibliotek narzędziowych/ramówek do robienia aplikacji sieciowych - proste REST API z jednym zasobem w kilku perspektywach. Pierwsza myśl była "robiłem to meeelion razy, w jeden dzień będzie z pokryciem 100%". Ale zaraz zorientowałem się, że to dobra okazja, żeby przy okazji rozejrzeć się, czy czasem coś nowego nie pojawiło się na arenie w ciągu tych 3 czy 4 lat, kiedy tłukłem w standardzie Flask + SQLAlchemy, do porzygu. Pamiętam przecież, jak ze 3 lata temu co chwilę pojawiały się jakieś zajawki, że tu jakiś framework osiągnął niesamowite wyniki w benchmarkach, a to jakiś przełomowy koncept miał na zawsze odmienić sposób w jaki robi się webaplikacje w Pythonie, a to to, a to tamto. Poprosiłem więc o chwilę ekstra na zastanowienie się i wyruszyłem wraz z Google na poszukiwanie króla dżungli.
Jest źle, a nawet bardzo źle. Asynch…

Powrót piekarza

Trzy książki, każda dobra do czego innego, żadna nie jest idealna. Mieć wszystkie lub nie mieć żadnej.

Pierwszego kupiłem Hamelmana, na fali fascynacji piekarstwem jako rzemiosłem bliskim piwowarstwu - i tu i tu robi się z produktami zbożowymi, choć zupełnie co innego, to wciąż blisko ziemi i natury. Piekłem trochę chlebów wg przepisów z róznych blogów, czasem było lepiej czasem gorzej, ale nigdy nie byłem zadowolony z efektu. Gdy Eliza z WhitePlate.com napisała wstępniak do polskiego wydania książki Hamelmana nie wahałem się długo i kupiłem. Przeczytałem z niecierpliwością wstęp i kilka pierwszych przepisów i... zeszło powietrze. Nie dam rady. To poza moimi możliwościami. Nie w domu. Odłożyłem książkę na półkę i zapomniałem o doskonaleniu warsztatu piekarniczego, skupiłem się na robieniu piwa.

Przewijamy o kilka lat. Piwo robię z zamkniętymi oczami, ale na youtube zobaczyłem jak Piotr Leśniański robi chleb, który wyglądał obłędnie - wielkie dziury i jednocześnie super elastyczny i s…

Stefan, nie desperuj (cz. 2)

W części 1 odbyło się kompletowanie sprzętu, a teraz zaczniemy wreszcie produkować towar.

Jak już sprzęt jest, to można zająć się wreszcie produkcją. Słód ześrutowany, chmiel w zamrażarce, zarezerwowane 7-8 godzin - można jechać. Robimy Dorada Pampeana, ale na początek ważna uwaga o czystości.

W piwowarstwie czystość jest jedną z dwóch najważniejszych rzeczy, dlatego cały sprzęt trzeba zaraz po użyciu dokładnie myć pod bieżącą wodą, a wszystko co ma styczność z brzeczką po gotowaniu musi być dezynfekowane - wiadra, węże, mieszadła, łyżki, termometry, cukromierze. Najwygodniej do tego jest używać środka dezynfekcyjnego na bazie alkoholu 70% ze spryskiwaczem, a do wiader - roztwór piro, ClO2 lub StarSan. Jeżeli warzenie ma być okazjonalne, to proponuję piro - jest tanie i łatwe w przyrządzaniu, nie szkoda go również wylać po użyciu. Jeden minus - wydziela SO2, więc śmierdzi, a opary są drażniące. Idealny jest StarSan, ale na nasze warunki jest dość drogi, jeżeli używa się go tylko od cz…

Stefan, nie desperuj (cz. 1)

Jeden kolega marzy o rozpoczęciu przygody z piwowarstwem domowym, ale przeraża go ilość materiałów na wiki portalu Piwo.org, więc przybywam z pomocą. Zebrane, skrócone, wydestylowane, pozbawione zbędnych dodatków, jak przystało na 2017 rok. I w punktach, po kolei.


Sprzęt Na początek - kompletowanie sprzętu, w wersji maksymalnie uproszczonej. Żadnego zbędnego szpeju. Proponuję nabyć ile się da na raz w jednym sklepie piwowarskim ale nie w postaci "zestawu startowego". Zestawy te zazwyczaj zawierają całą masę nikomu niepotrzebnych rzeczy, z którymi nie wiadomo co później robić. Do pewnego stopnia opcjonalna jest lodówka, ale umówmy się, te 40 złotych warto jest wydać na to, żeby mieć znacząco prostszy proces.
garnek 30 litrów (z alledrogo)kuchenka z fest palnikiem, np. do woka lub taboret gazowy - ale przez kilka lat gotowałem na zwykłej kuchence gazowej w bloku i też się dałolodówka turystyczna 30 litrów (z alledrogo)filtrator ze sraczwężyka (z budowlanego, min. 80cm, gwint na…

Resurrection: SQLAlchemy

Nie, nie zapomniałem, że robię głównie w Pythonie i nie zapomniałem że moją główną dziedziną działalności są internety. Po kilku miesiącach dłubania w drobnicy przyszedł czas powrotu do Flaska i SQLAlchemy. Z przytupem.
Hybrid property Sytuacja wyglądała tak, że potrzebowałem posortować query po kolumnie wyliczeniowej, która dodatkowo jest w dowiązanej tabeli. Prościzna w żywym SQL-u, nie aż taka w SQLAlchemy. Szczęśliwie nie ma sytuacji bez wyjścia, można użyć column_property, ale jest i nowoczesność w domu i zagrodzie pod postacią hybrid_property. W skrócie chodzi o to, że taki atrybut inaczej się wylicza, gdy jest pobierany z instancji a inaczej z obiektu klasy (np. przy budowaniu query). Jak to wygląda?

Atrybut dostępny z instancji jest zwykłą sumą robioną w Pythonie. Atrybut dostępny z obiektu klasy jest wyliczany przez podzapytanie po stronie SQL. Działa jak złoto, można zwrócić wynik posortowany po tym atrybucie.