<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Maciej[cc] &#187; Uncategorized</title><atom:link href="https://nabozny.io/category/uncategorized/index.xml" rel="self" type="application/rss+xml"/><link>https://nabozny.io/category/uncategorized/</link><description>Blog o programowaniu i nie tylko</description><lastBuildDate>Tue, 31 Aug 2021 09:55:17 +0000</lastBuildDate><language>pl-PL</language><generator>Hugo 0.167.0</generator><item><title>Nowy adres</title><link>https://nabozny.io/nowy-adres/</link><dc:creator>maciej</dc:creator><pubDate>Tue, 31 Aug 2021 09:55:17 +0000</pubDate><category>Uncategorized</category><guid isPermaLink="true">https://nabozny.io/nowy-adres/</guid><description>Od dzisiaj można przeglądać bloga pod adresem nabozny.io. Stara domena (jak również maile, jeśli ktoś do mnie pisał na nią :) ) przestanie być aktywna z końcem listopada.</description><content:encoded>&lt;p&gt;Od dzisiaj można przeglądać bloga pod adresem nabozny.io. Stara domena (jak również maile, jeśli ktoś do mnie pisał na nią :) ) przestanie być aktywna z końcem listopada.&lt;/p&gt;&#10;</content:encoded></item><item><title>Wakacje Tyrol vs. Beskid Sądecki</title><link>https://nabozny.io/wakacje-tyrol-vs-beskid-sadecki/</link><dc:creator>maciej</dc:creator><pubDate>Sun, 13 Sep 2020 09:26:12 +0000</pubDate><category>Uncategorized</category><guid isPermaLink="true">https://nabozny.io/wakacje-tyrol-vs-beskid-sadecki/</guid><description>Porównanie pobytu tu i tam, z nastawieniem na to aby nie zbankrutować i mieć fajne wakacje.</description><content:encoded>&lt;p&gt;Porównanie pobytu tu i tam, z nastawieniem na to aby nie zbankrutować i mieć fajne wakacje.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://nabozny.io/uploads/2020/09/au2.jpg" srcset="https://nabozny.io/uploads/2020/09/au2_hu_bad09c8bbd04e778.jpg 600w, https://nabozny.io/uploads/2020/09/au2_hu_c2973fb3152af3da.jpg 1200w, https://nabozny.io/uploads/2020/09/au2.jpg 1296w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" alt="" width="1296" height="728" class="alignnone size-full" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;Krynica – znaleziony nocleg w pokoju 20m2 z łazienką i TV, niedaleko centrum po dość długich poszukiwaniach z widokiem na sąsiadującą plebanie. Tyrol – apartament znaleziony na Interhome, z promocją last minute. Ok. 70m2, z 3 pokojami, łazienką, w pełni wyposażoną kuchnią, TV i 3 balkonami na wszystkie strony z pięknym widokiem. Porównanie cen dla 2 dorosłych, dwójki dzieci do 6 lat, na 14 dni. Wszystkie ceny w zł.&lt;/p&gt;&#10;&lt;h3 id="nocleg-i-mieszkanie"&gt;Nocleg i mieszkanie&lt;/h3&gt;&#10;&lt;table&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;Austria – Zillertal&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Polska – Krynica&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Nocleg 2 dorosłych i 2 dzieci&lt;/td&gt;&lt;td&gt;2700&lt;/td&gt;&lt;td&gt;Mieszkanie 60m2 z kuchnią i łazienką, 3 balkony, z Interhome&lt;/td&gt;&lt;td&gt;2100&lt;/td&gt;&lt;td&gt;Pokój 20m2 z łazienką, 1 okno&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Dojazd&lt;/td&gt;&lt;td&gt;500&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Parking&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;Duży parking przy domu w cenie&lt;/td&gt;&lt;td&gt;140&lt;/td&gt;&lt;td&gt;10zł/dzień, płatne ekstra&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Podatek lokalny&lt;/td&gt;&lt;td&gt;259&lt;/td&gt;&lt;td&gt;2,2eur za dorosłą osobę, sąsiedzi nie palą śmieciami&lt;/td&gt;&lt;td&gt;246&lt;/td&gt;&lt;td&gt;4,4zł za osobę&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;em&gt;Razem:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;3459zł&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;2556zł&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="atrakcje"&gt;Atrakcje&lt;/h3&gt;&#10;&lt;p&gt;Tutaj Tyrol niestety przegrywa. Nie ma górali, na próżno również szukać parkingowych czychających za każdym rogiem, ulicznych wysokiej klasy artystów z krupówek lub misia. Rekompensuje to natomiast uprzejmość lokalnych mieszkańców. Nie pozna się też wielu ciekawych ludzi, ich kultury i historii czekając od 5 do 9 w kolejce do kolejki na Kasprowy.&lt;/p&gt;&#10;&lt;table&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;Wyjazd kolejką na dużą górę&lt;/td&gt;&lt;td&gt;160&lt;/td&gt;&lt;td&gt;Ahorn, brak kolejek do wejścia, parking pod kolejką w cenie&lt;/td&gt;&lt;td&gt;240&lt;/td&gt;&lt;td&gt;Kasprowy, czekanie w kilkugodzinnej kolejce, parking i dojazd pod kolejkę ekstra&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Wjazd kolejką na małą górę&lt;/td&gt;&lt;td&gt;ok. 70&lt;/td&gt;&lt;td&gt;Żeby przejechać się małą kolejką pokroju tej z Jaworzyny, trzeba najpierw wjechać na dużą górę&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;Jaworzyna Krynicka, parking gratis!&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Wjazd na lodowiec&lt;/td&gt;&lt;td&gt;250&lt;/td&gt;&lt;td&gt;Hintertux, parking gratis&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;Brak lodowców&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Atrakcja – punkt widokowy&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;Przejazd ponad 30km przez Hohenstrasse na ponad 2000m, w tym zwiedzanie parku świstaków, liczne wodospady, trasa nad chmurami. Opłata jedynie za wjazd samochodu. Należy doliczyć paliwo&lt;/td&gt;&lt;td&gt;208&lt;/td&gt;&lt;td&gt;Wejście na wieżę widokową z wjazdem kolejką na Jaworzynę&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Wyjście na szlak&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;Niektóre fajne szlaki zaczynają się tak wysoko, że opłaca się wjechać na nie kolejką, żeby nie marnować czasu. Sporo jest też tych z samego dołu&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;Cena za wstęp na 3 korony&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Parking pod szlakiem&lt;/td&gt;&lt;td&gt;20-40&lt;/td&gt;&lt;td&gt;za pozostawienie samochodu wysoko w górach, na całą dobę&lt;/td&gt;&lt;td&gt;20zł&lt;/td&gt;&lt;td&gt;Zapłacone jakiś czas temu za pozostawienie auta gdzieś na błocie, na prywatnym polu&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Dojazd pociągiem do miasta&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;Zillertal bahn&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;Krynica – Piwniczna&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Godzina parkingu&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;ok. 1-1.5eur blisko centrum&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;SPP w Krynicy&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Dojazd do większego miasta&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;Innsbruck, 70km&lt;/td&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;Kraków, 130km&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Jezioro z plażą i placem zabaw&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;Achensee, 4eur za 4 godziny parkingu, wstęp i atrakcje gratis&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;Kryspinów, dorośli po 15zł, auto 15zł. Jedyne znane mi jezioro, które choć trochę przypomina standardem darmowe Achensee. Dodatkowa atrakcja – Krakowskie towarzystwo&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;em&gt;Razem&lt;/em&gt;&lt;/td&gt;&lt;td&gt;549&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;1153&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="jedzenie"&gt;Jedzenie&lt;/h3&gt;&#10;&lt;p&gt;Z powodu braku kuchni pobyt w większości &amp;ldquo;apartamentów&amp;rdquo; w Krynicy wiąże się z wykupieniem wyżywienia lub chodzeniem od knajpy do knajpy. Za to w Tyrolu nie uświadczymy bezmięsnych parówek podawanych na każdą kolację na przemian z rozmoczonymi płatkami z mlekiem. Z drugiej strony w Krynicy nie musimy udawać weganina i unikać mięsa ze względu na jego ceny, możemy za to rozkoszować się własnym niezbyt smacznym jedzeniem, jeśli średnio gotujemy.&lt;/p&gt;&#10;&lt;table&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;Jedzenie&lt;/td&gt;&lt;td&gt;1200&lt;/td&gt;&lt;td&gt;Przywiezione w większości kupione gotowe, konserwowe dania.&lt;/td&gt;&lt;td&gt;2100&lt;/td&gt;&lt;td&gt;Wykupione w pensjonacie, porównywalnej jakości do konserw wywiezionych do Austrii&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Kilo mięsa&lt;/td&gt;&lt;td&gt;40-50&lt;/td&gt;&lt;td&gt;Lokalne sklepy nie mają dużego wyboru, zwykle pakowane kawałki kurczaka lub świni&lt;/td&gt;&lt;td&gt;15-25zł&lt;/td&gt;&lt;td&gt;Zwykle nie ma na czym ugotować&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Kawa na mieście&lt;br /&gt;&lt;small&gt;W dobrej kawiarni/knajpie&lt;/small&gt;&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Kawa w trasie&lt;br /&gt;&lt;small&gt;w schronisku lub na górnej stacji kolejki&lt;/small&gt;&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Dobry chleb żytni&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Szynka, 100g&lt;br /&gt;&lt;small&gt;Pakowane w plasterkach, tanie coś, bez makulatury w składzie&lt;/small&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Masło&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Jajka, 20szt&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Słodka bułka&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Croissant&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Drożdżówka z makiem&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;em&gt;Razem:&lt;/em&gt;&lt;/td&gt;&lt;td&gt;ok. 1300&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;ok. 2153&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Powyższe ceny są orientacyjne. Niektórzy chcą pozostać przy diecie &amp;ldquo;polskiej&amp;rdquo;, inni będą wcinać lokalne specjały, które są droższe, a jeszcze inni zmontują obiad z tego, co jest lokalnie najtańsze. Warto też wiedzieć, że większość knajp w Tyrolu ma zwykle kilka miejsc parkingowych dla gości gratis.&lt;/p&gt;&#10;&lt;h3 id="inne"&gt;Inne&lt;/h3&gt;&#10;&lt;table&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;Diesel&lt;/td&gt;&lt;td&gt;4,7&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;4,2&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Benzyna&lt;/td&gt;&lt;td&gt;4,9&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;4,5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;LPG&lt;/td&gt;&lt;td&gt;3,5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;2,2&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Jak widać, może mamy wysokie podatki, ale za to ceny są wyższe :) Atrakcje również nieporównywalnie wyższe, co za tym idzie człowiekowi nawet przez myśl nieprzejdzie rozkoszowanie się widokami gór, na które w Tyrolu żeby popatrzeć, trzeba odginać głowę do góry. W Polsce to nie grozi, bo co chwile schyla ją do portfela po kolejne opłaty to tu to tam.&lt;/p&gt;&#10;&lt;p&gt;Jadąc za granicę opłaca się wybrać w więcej osób. Zwykle apartamenty kosztują tyle samo niezależnie od ilości gości, co w Polsce jest żadkością i kasuje się od głowy.&lt;/p&gt;</content:encoded></item><item><title>Czemu mi srand nie działa</title><link>https://nabozny.io/czemu-mi-srand-nie-dziala/</link><dc:creator>maciej</dc:creator><pubDate>Fri, 26 Jun 2020 09:37:47 +0000</pubDate><category>Uncategorized</category><guid isPermaLink="true">https://nabozny.io/czemu-mi-srand-nie-dziala/</guid><description>Czasami człowiek spędzi dwa tygodnie na durny błąd, którego testy ani wszelkie debugowanie w żaden sposób nie zweryfikują. O co poszło tym razem? Wcisnąłem parę dinemic i jego wrapper dla pythona do Flaska. Ot co, alternatywa dla ORM Django i SqlAlchemy, w dodatku nie trzeba się martwić o …</description><content:encoded>&lt;p&gt;Czasami człowiek spędzi dwa tygodnie na durny błąd, którego testy ani wszelkie debugowanie w żaden sposób nie zweryfikują. O co poszło tym razem? Wcisnąłem parę &lt;a href="https://dinemic.io"&gt;dinemic&lt;/a&gt; i jego wrapper dla pythona do Flaska. Ot co, alternatywa dla ORM Django i SqlAlchemy, w dodatku nie trzeba się martwić o uprawnienia, wewnętrzne API i tak dalej&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;Wszystko szło dobrze, natomiast po dłuższym użytkowaniu zauważyłem, że czasami obiekty w bazie nie chcą się tworzyć, może w 1 na 10 lub na 20 przypadkach. Winny oczywiście Sync processor, który prawdopodobnie miał lukę gdzieś w zawiłej logice odpowiedzialnej za procesowanie zmian w klastrze. Zwykle takich problemów nie ma, gdy za każdym mikroserwisem stoi baza danych i tylko ten mikroserwis ją modyfikuje (ewentualnie kilka jego wątków, korzystając z locków). Dinemic daje nieco inne podejście, gdzie każdy może rozesłać zmianę bazy, a dopiero logika naszego programu ma stwierdzić, czy taką zmianę akceptuje, czy nie. W praktyce, ciąg zmian związany ze stworzeniem i cyklem życia obiektu zamiast tak:&lt;br&gt;&#10;&lt;img src="https://nabozny.io/uploads/2020/06/dinemic-chain.png" alt="" width="148" height="814" class="alignnone size-full" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;wygląda tak:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://nabozny.io/uploads/2020/06/dinemic-trees.png" srcset="https://nabozny.io/uploads/2020/06/dinemic-trees_hu_db20e424a9e0d9f0.png 600w, https://nabozny.io/uploads/2020/06/dinemic-trees_hu_f80511eb0f6b181d.png 1200w, https://nabozny.io/uploads/2020/06/dinemic-trees.png 1431w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" alt="" width="1431" height="669" class="alignnone size-full" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;Każdy bloczek w powyższym to mała wiadomość wędrująca po całym klastrze z informacją np. w polu A zmień wartość na X. Kto ją dostanie, może zaaplikować u siebie, zweryfikować podpis obiektu, który zmianę wykonał lub sprawdzić ciągłość całego łańcucha (lub drzewka). Taka komplikacja frameworka miała na celu umożliwienie pracy w niekonsystentnym środowisku, na rozproszonej bazie. Czemu zmiany są aż tak pokomplikowane? Pomyśl, że chcesz się umówić na piwo z 10 znajomymi. Wysyłasz wszystkim SMS, że w piątek o 20 idziecie na piwo. 6 odpisze, że ok, 1 w między czasie umówi się na inne piwo i za godzine odpisze, że jest zajęty, a pozostałych trzech jest poza zasięgiem. To jesteście umówieni? Na piwo trzeba iść, a z pozostałą czwórką umówić się w innym terminie lub skontaktować inaczej. Zwykle rozwiązanie zależy od &amp;ldquo;mózgu&amp;rdquo; operacji i tego co zrobi z pozostałą czwórką. Ot, takie życie. Podobne założenia były w dinemic – kto dostanie informacje o zmianie w bazie, ten (jakoś) zareaguje, a kto nie dostanie, ten musi radzić sobie sam. W takiej architekturze już na wstępie mamy mocno niekonsystentną bazę w obrębie klastra, a jedyne co powinno się zgadzać to cała historia zmian.&lt;/p&gt;&#10;&lt;p&gt;Wróćmy do naszych wiadomości o zmianach (sms z zaproszeniem na piwo). Jako, że wspólnego, konsystentnego indeksu nie mamy, to każda zmiana ma losowy ID, do tego hash poprzedniej zmiany oraz swój podpis. Problem z Flaskiem rozpoczął się dość niewinnie – jakby niektóre zmiany nie były poprawnie procesowane i ignorowane. Po prostu system twierdził, że wiadomość była już przetworzona.&lt;/p&gt;&#10;&lt;p&gt;Wróćmy na chwilę do Flaska i tego, jak działa serwer www. Flask przy uruchamianiu serwera przez skrypt pythona tworzony jest główny wątek. W nim można m.in. zainicjalizować framework dinemic (lub cokolwiek innego) i przygotować wszystko co potrzeba do odpalenia serwisu. Po otrzymaniu nowego połaczenia od klienta serwer tworzy proces potomny i w nim obsługuje request.&lt;/p&gt;&#10;&lt;p&gt;Niby proste, a jednak nie. Jeśli wszystko inicjalizujemy w głównym wątku, to również generator liczb losowych (pseudolosowych), czyli srand(time(NULL)). Niezależnie od tego jaką wartość podamy do srand, to powinien dać pseudolosowe liczby, o dobrym rozkładzie. Jeśli jednak zainicjalizujemy go dwukrotnie tą samą wartością, to zawsze dostaniemy taką samą serię liczb.&lt;/p&gt;&#10;&lt;p&gt;W czym zatem problem? Srand inicjalizujemy w głównym wątku i generuje on X liczb pseudolosowych. Dla każdego klienta Flask tworzy nowy wątek, w którym również potrzebne są nowe liczby losowe (bo na przykład każdy update generowany w takim wątku potrzebuje swoje ID). Czym to skutkuje? Po forku proces potomny generuje X+1 liczbę losową. Dla drugiego klienta fork również generuje liczbę, uwaga uwaga: X+1. I tak dalej&amp;hellip; rand wypluwa zawsze pseudolosową, kolejną liczbę z generowanego ciągu. Jeśli skopiujemy proces (przez fork, pthread z odseparowaną pamięcią lub jakikolwiek sposób), to licznik zaczyna się dublować z innymi procesami. W ten sposób każdy proces potomny dostaje ten sam ciąg kolejnych liczb pseudolosowych, dla danej wartości początkowej z srand.&lt;/p&gt;&#10;&lt;p&gt;Dzięki temu możnaby ze 100% skutecznością zgadywać z procesu-brata jakie liczby wylosuje drugi proces. Na zakończenie warto jeszcze opowiedzieć jak udało się to rozwiązać (chociaż po znalezieniu problemu nie było to trudne). Rand z C++ został zamieniony na generator liczb losowych z libsodium. Praktycznie bez zmiany logiki, algorytmów i dużego grzebania w kodzie. Dużym plusem jest to, że libsodium nie wymaga inicjalizowania generatora liczb pseudolosowych i zwraca za każdym razem losowe wartości, co w przypadku biblioteki takiej jak dinemic ma duże znaczenie – nigdy nie wiadomo czy aplikacja macierzysta nie zacznie się forkować.&lt;/p&gt;&#10;&lt;p&gt;Ot, głupi błąd, 2 tygodnie szukania i przy okazji zrefactorowany najpaskudniejszy kawałek logiki frameworka.&lt;/p&gt;</content:encoded></item><item><title>Jasność w laptopie</title><link>https://nabozny.io/jasnosc-w-laptopie/</link><dc:creator>maciej</dc:creator><pubDate>Thu, 27 Feb 2020 16:43:29 +0000</pubDate><category>Uncategorized</category><guid isPermaLink="true">https://nabozny.io/jasnosc-w-laptopie/</guid><description>Każdy, nawet mało doświadczony użytkownik systemu Linux wie, że jeśli klawisze od zmiany jasności po aktualizacji nie działają, to trzeba findem poszukać w /sys plików pasujących do wzorca “*brightness*” i następnie przekierować
echo 100 na
sudo tee do pliku …</description><content:encoded>&lt;p&gt;Każdy, nawet mało doświadczony użytkownik systemu Linux wie, że jeśli klawisze od zmiany jasności po aktualizacji nie działają, to trzeba findem poszukać w /sys plików pasujących do wzorca &amp;ldquo;*brightness*&amp;rdquo; i następnie przekierować&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;echo 100&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;na&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo tee&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;do pliku&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;żeby ściemnić ekran.&lt;/p&gt;&#10;</content:encoded></item><item><title>Trochę prywatności w Twoim telefonie</title><link>https://nabozny.io/troche-prywatnosci-w-twoim-telefonie/</link><dc:creator>maciej</dc:creator><pubDate>Sat, 14 Sep 2019 13:37:22 +0000</pubDate><category>Uncategorized</category><guid isPermaLink="true">https://nabozny.io/troche-prywatnosci-w-twoim-telefonie/</guid><description>Kilka porad jak z goglowego androida zrobić trochę bardziej prywatny android, bez zmiany ROM’u. Dodatkowe upierdliwości związane z użytkowaniem telefonu gratis :)</description><content:encoded>&lt;p&gt;Kilka porad jak z goglowego androida zrobić trochę bardziej prywatny android, bez zmiany ROM&amp;rsquo;u. Dodatkowe upierdliwości związane z użytkowaniem telefonu gratis :)&lt;/p&gt;&#10;&lt;h5 id="f-droid-i-wersje-opensource-aplikacji"&gt;F-Droid i wersje OpenSource aplikacji&lt;/h5&gt;&#10;&lt;p&gt;Na samym początku warto zainstalować odpowiednik sklepu play, który pozwala na instalacje aplikacji OpenSource na Twoim telefonie. Ze strony f-droid należy pobrać plik .apk i zainstalować go w telefonie (przez manager, odblokowując w opcjach programisty możliwość instalowania z nieznanych źródeł lub przez kabelek, poleceniem adb). Dzięki F-Droidowi można znaleźć odpowiedniki wszystkiego tego, co w google play jest, i czasem jest płatne. W F-droidzie część z tych aplikacji (zwłaszcza do synchronizacji kalendarza i kontaktów) jest darmowa.&lt;/p&gt;&#10;&lt;h5 id="nextcloud-zamiast-drive-calendar-i-gmaila"&gt;Nextcloud zamiast Drive, Calendar i Gmaila&lt;/h5&gt;&#10;&lt;p&gt;Samo konto nextcloud można założyć za darmo u jednego z dostawców (nextcloud.com) lub postawić własną instalację, co wymaga nieco więcej roboty. Mając już to za sobą, na telefonie instalujemy po kolei:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;nextcloud client – do synchronizacji plików&lt;/li&gt;&#10;&lt;li&gt;davx5 – narzędzie do synchronizacji kontaktów i kalendarza&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;W kliencie nextcloud oprócz zalogowania się do konta dobrze jest jeszcze włączyć synchronizację innych katalogów (w ustawieniach). Zwłaszcza z zdjęć i filmów z aparatu, które nextcloud pokazuje jako dwa osobne katalogi. Dzięki temu nasze dane będą lądowały odrazu w chmurze, z tą różnicą, że będzie to nasza, w pełni prywatna chmura.&lt;/p&gt;&#10;&lt;p&gt;Z serwisu nextcloud musimy jeszcze dostać link do kalendarza oraz książki adresowej i skonfigurować je w kliencie davx5. Po tej operacji wszystkie kontakty i wydarzenia będą widoczne w nextcloud.&lt;/p&gt;&#10;&lt;p&gt;Jeśli wszystko poszło dobrze, to jest to moment, w którym można odłączyć pępowine od wujka G i usunąć swoje główne konto google z telefonu.&lt;/p&gt;&#10;&lt;h5 id="osmand-zamiast-map-google"&gt;Osmand zamiast map google&lt;/h5&gt;&#10;&lt;p&gt;Jedną z moich ulubionych aplikacji, z których korzystam dość często jest Osmand. Jest to bazująca na mapach OpenStreetMap, która pozwala najdować nieco więcej przydatnych rzeczy w okolicy niż Google Maps. Działa offline, co jest dość istotne za granicą oraz nie wysyła (chyba) danych o naszym położeniu do chmury googli. Minusem jest natomiast dość wolne działanie routera oraz brak informacji na temat aktualnego ruchu na drodze.&lt;/p&gt;&#10;&lt;h5 id="znajdź-mój-telefon"&gt;Znajdź mój telefon&lt;/h5&gt;&#10;&lt;p&gt;Googlowa usługa Find your phone może się czasami przydać, natomiast pokazuje ile google może też zrobić bez naszej wiedzy. Alternatywą do niej może być zintegrowana z nextcloud aplikacja &lt;a href="https://f-droid.org/en/packages/net.eneiluj.nextcloud.phonetrack/"&gt;PhoneTrack&lt;/a&gt;. Po zainstalowaniu jej w Nextcloud i na naszej komórce możemy łatwo skonfigurować jak często nasz telefon ma się logować z jego lokalizacją. Możliwe jest też śledzenie kilku telefonów na raz oraz wyświetlenie ich położenia oraz trasy na mapie. Wrzucenie starej komórki z tą aplikacją do schowka w aucie, która będzie się ładowała przy każdej jeździe może posłużyć nam jako bardzo tani lokalizator GPS do samochodu.&lt;/p&gt;&#10;&lt;p&gt;Natomiast co do samej aplikacji, to tak jak we wszystkich opisanych tu propozycjach, kontrolę nad danymi i informacjami o naszej lokalizacji mamy my.&lt;/p&gt;&#10;&lt;h5 id="shelter"&gt;Shelter&lt;/h5&gt;&#10;&lt;p&gt;&lt;a href="https://f-droid.org/en/packages/net.typeblog.shelter/"&gt;Jest to jedna z ważniejszych pozycji na tej liście&lt;/a&gt;, z której warto skorzystać. Shelter pozwala stworzyć dodatkowy profile (Work profile) dla Androida, w którym zarządza zainstalowanymi aplikacjami. Dzięki temu możemy w dodatkowym profilu skonfigurować konta do twarzoksiążki, whatsapp oraz inne, które mogą nas śledzić. Pozostałe, bardziej zaufane aplikacje możemy wtedy włączyć w normalnym profilu do pracy na codzień.&lt;/p&gt;&#10;&lt;p&gt;Aplikacje działające w profilu Sheltera mają dostęp do osobnej książki adresowej, kalendarza, plików oraz profili z innych aplikacji. Dzięki temu aplikacja facebooka nie może przeskanować wszystkich plików ani kontaktów jakie mamy w komórce.&lt;/p&gt;&#10;&lt;h5 id="instalacja-niezaufanych-aplikacji-w-shelterze"&gt;Instalacja niezaufanych aplikacji w shelterze&lt;/h5&gt;&#10;&lt;p&gt;Po zainstalowaniu Shelter&amp;rsquo;a musimy sami dodać go jako administratora urządzenia. Oznacza to, że będzie miał prawo do instalacji i usuwania aplikacji na naszej komórce. Dzięki temu będzie on pozwalał kopiować aplikacje do ograniczonego środowiska shelter&amp;rsquo;a. Po instalacji możemy skonfigurować dodatkowe (lub nawet tylko podstawowe) konto google w profilu sheltera, np. przez zalogowanie się do google play). Każda aplikacja skonfigurowana do pracy w środowisku shelter&amp;rsquo;a ma przy swojej ikonie dodatkowy pomarańczowy znaczek, który oznacza że działa właśnie w sandboxie.&lt;/p&gt;&#10;&lt;p&gt;Korzystając z Sklepu play działającego w shelterze możemy zainstalować aplikacje bezpośrednio w tym środowisku, bez dawania im dostępu do naszych prywatnych danych. Co więcej, nawet zgoda na dostęp do kontaktów dla aplikacji działającej w shelterowym sandboxie nie daje jej dostępu do listy naszych właściwych kontaktów, spoza środowiska shelter.&lt;/p&gt;&#10;&lt;h5 id="fake-gps-dla-paranoików"&gt;Fake GPS dla paranoików&lt;/h5&gt;&#10;&lt;p&gt;Ostatnio aplikacja do mojej inteligentnej inaczej pralki LG powiedziała, że musi mieć dostęp do GPS. Żebym ku&amp;hellip; nie zapomniał gdzie pranie nastawiłem. I jeszcze do telefonów i SMS. Pewnie, żeby wysłać mi wiadomość że pranie się pierze. A czekaj, nie. Aplikacja też jest na telefonie, tak jak moje SMS&amp;rsquo;y :) Taką jak i inne, wymagające dostępu do lokalizacji usługi można oszukać przez uruchomienie w Androidzie usługi, która podaje fałszywe odczyty z GPS. Nie jest to zbyt wygodne, ponieważ przestają działać wszelkiego rodzaju nawigacje i mapy – pokazują one jedną, ustawioną przez nas geolokalizację. Natomiast pralka po skomunikowaniu się z komórką, której GPS pokazywał Grenlandię przełączyła się w tryb serwisowy i nie chciała działać przez tydzień. Ot, technologia ułatwiająca życie. Przeprowadź się do innego państwa, to stracisz gwarancję na pralkę.&lt;/p&gt;&#10;&lt;h5 id="firefox-focus"&gt;Firefox focus&lt;/h5&gt;&#10;&lt;p&gt;Na koniec jedna z bardziej uciążliwych rzeczy, ale dająca dużą, o ile nie największą ochronę przed śledzeniem przez strony www. Przeglądarka Firefox Focus kasuje wszystkie dane prywatne z przeglądanych stron www. Działa dokładnie tak, jakbyśmy za każdym razem używali trybu prywatnego. W zamian za ciągłe popupy z zapytaniem o RODO i Cookies widzimy internet, który nie jest profilowany pod nasze upodobania. Jeśli koniecznie potrzebujemy być zalogowani na twarzoksiążce i linkedinie, to można to zrobić w zwykłym Firefox, który nie zapomni naszej sesji, natomiast na codzień przeglądać internet z Forefox Focus.&lt;/p&gt;&#10;&lt;h5 id="to-nie-wszystko"&gt;To nie wszystko&amp;hellip;&lt;/h5&gt;&#10;&lt;p&gt;Kilka powyższych kroków daje dość sporo prywatności i oddziela śledzące aplikacje od naszych prywatnych danych oraz daje nad nimi kontrolę. Odcięcie się od konta google, przez wykasowanie go z telefonu teoretycznie powinno zapewnić, że rzeczy takie jak &amp;ldquo;ok google&amp;rdquo;, tworzenie shadow profili oraz zbieranie danych będzie mocno ograniczone. Jednak 100% pewności mieć nie można, zwłaszcza czytając ostatnie newsy, gdzie twarzoksiążka potrafiła skanować nasze prywatne dane będąc jedynie dodatkiem do właściwej aplikacji, który pozwalał np. na logowanie przez twarzoksiążkę.&lt;/p&gt;&#10;&lt;h5 id="i-aluminiowa-czapeczka-na-koniec"&gt;i aluminiowa czapeczka na koniec&lt;/h5&gt;&#10;&lt;p&gt;&lt;img src="https://nabozny.io/uploads/2019/09/3211396764_4bd6fb6bb3_z.jpg" alt="" width="640" height="480" class="alignnone size-full" loading="lazy" decoding="async"&gt;&lt;br&gt;&#10;&lt;small&gt;Source: &lt;a href="https://live.staticflickr.com/3430/3211396764_4bd6fb6bb3_z_d.jpg"&gt;https://live.staticflickr.com/3430/3211396764_4bd6fb6bb3_z_d.jpg&lt;/a&gt;, CC-BY-SA&lt;/small&gt;&lt;/p&gt;&#10;&lt;p&gt;Różnica w wygodzie pomiędzy telefonem skonfigurowanym z powyższymi aplikacjami a tym z google jest duża. Taka jest cena za częściową prywatność. Zwłaszcza przeglądając internet z przeglądarki, która nie pamięta żadnego naszego logowania z wczoraj. Jeśli troszczymy się o własne dane i prywatność, a nie chcemy być non stop inwigilowani, to warto wybrać coś pomiędzy i nie wskakiwać odrazu na głęboką wodę, wykorzystać tylko część z powyższych porad.&lt;/p&gt;</content:encoded></item></channel></rss>