Author Archive: ebvalaim

Ożywianie bloga

Długo nic nie pisałem, blog przymarł, czas go trochę ożywić! Podzielę się więc planem na najbliższą przyszłość i tym, co ostatnio natworzyłem.

Bliska przeszłość:

  1. Ostatnie kilka lat byłem wiernym użytkownikiem Arch Linuksa. Niedawno postanowiłem w ramach eksperymentu postawić na osobnej partycji Gentoo. Eksperyment powiódł się na tyle dobrze, że w zasadzie można powiedzieć, że się przesiadłem :p Aktualizacje oprogramowania nieco irytują (takie Chromium potrafi kompilować się ~5 godzin na procesorze z 8 logicznymi rdzeniami), ale widać korzyści (znów na przykładzie Chromium: używa ok. 30% mniej RAMu niż przy takim samym użyciu na Archu).
  2. Zacząłem pisać nowego bota do czatów. Do tej pory napisałem kilka wersji bota do IRCa i jedną do Slacka. Ponieważ jedna ze społeczności, w której jestem w miarę aktywny, ma w tym momencie kanał IRC, Slacka i Discorda, postanowiłem zebrać to w kupę w jednym bocie. Jest on napisany w Ruście, ukrywa połączenia z różnymi sieciami pod warstwą abstrakcji, dzięki czemu łatwo go rozszerzać o kolejne sieci (Gadu-Gadu? nie ma problemu!), plus udostępnia API dla różnego rodzaju modułów (losowe gadanie, przekazywanie wiadomości między sieciami, ...). Opiszę go szerzej w osobnej notce.
  3. Postanowiłem wydać kolejną wojnę spamerom. Administruję pewnym forum, na którym od jakiegoś czasu co chwila pojawiają się konta reklamujące różne bezużyteczne strony. Miałem kilka pomysłów na odwet (rejestracja adresów kontaktowych do firm na spamlistach, kontaktowanie się z firmami), które nie wypaliły, czemu w sumie trudno się dziwić. Kolejny pomysł wymaga ode mnie stworzenia prostej aplikacji: będzie ona posiadała listę adresów e-mail i listę spamerskich wiadomości. Uruchomienie aplikacji wyśle losową wiadomość pod losowy adres. Gwóźdź programu: adresy e-mail to adresy kontaktowe reklamowanych firm, a wiadomości to wiadomości wklejane przez boty. Niech sami piją piwo, którego nawarzyli. Projekt dopiero zacząłem, ale zapowiada się obiecująco :)

Bliska przyszłość:

  1. Rozważam pisanie cotygodniowych aktualizacji. Jest z tym jednak pewien problem - po pierwsze, nie wiem, czy znajdę w sobie tyle samozaparcia, żeby co tydzień wymyślać co umieścić w notce, a po drugie, nie wiem czy w każdym tygodniu będzie o czym pisać :P Nie podjąłem jeszcze decyzji, ale to może być dobry sposób na podtrzymanie bloga przy życiu.
  2. Dalsze rozwijanie dawnych projektów. Część w sumie już opisałem wyżej, oprócz tego mam jeszcze kilka nowych pomysłów. Napiszę więcej, jak coś faktycznie stworzę ;)
  3. Kontynuacja cyklu o fizyce! Pierwsze posty spotkały się z dużym zainteresowaniem, planowałem szybko pisać kolejne... i wcięło mi wenę. Kompletnie nie mam pomysłu na następną notkę, i nie mam tu do końca na myśli treści, ale bardziej jak tę treść logicznie przedstawić. Niestety, niewiele czasu wolnego w połączeniu z dużą liczbą pomysłów na projekty nie daje mi za bardzo szansy na zatrzymanie się na chwilę i przemyślenie sprawy na spokojnie. Liczę na to, że w jeden z najbliższych weekendów wreszcie coś z tego wyjdzie.

Tak więc, drodzy Czytelnicy, jeśli jeszcze tam jesteście - proszę o jeszcze trochę cierpliwości, a na pewno doczekacie się czegoś ciekawego! :)

Edukacyjne GIFy

Powoli przygotowuję kolejny post do kategorii "Fizyka dla każdego", który ma omówić nieco dokładniej transformację Lorentza i jakie są konsekwencje tego, że opisuje ona rzeczywistość. W tym celu przygotowałem dwa GIFy:

Transformacja układu współrzędnych przez obrót (kliknij aby obejrzeć animację)

Transformacja układu współrzędnych przez tranformację Lorentza (kliknij aby obejrzeć animację)

Szerszy opis tych GIFów znajdzie się w kolejnej notce w kategorii Fizyka dla każdego :)

Kod wykorzystany do wygenerowania ich opublikowałem na GitHubie: https://github.com/fizyk20/spacetime-graph/tree/blog-post

Zdarzenia i czasoprzestrzeń

Pierwsza notka z serii będzie dość podstawowa, ale myślę, że parę omówionych zagadnień okaże się ciekawych. Opowiemy sobie o tym czym są czasoprzestrzeń, zdarzenia, i pokażemy skąd bierze się teoria względności. No to jedziemy :)

O pojęciu czasoprzestrzeni mówi się nieco w szkole, ale zwykle bardzo mało uwagi poświęca się temu, jak doniosłe konsekwencje ma połączenie czasu i przestrzeni w jeden byt. Żeby jednak to zrozumieć, trzeba najpierw nieco wgłębić się w szczegóły całej idei.

(więcej…)

Generic-array ma 100 000 pobrań!

Mój projekt, generic-array (biblioteka do Rusta) został pobrany już 100 000 (słownie: sto tysięcy) razy! To jest mój pierwszy projekt o takiej popularności.

Zaczęło się od prostego hacka, omijającego jedno z ograniczeń języka - i to ograniczenie wyraźnie przeszkadzało wielu osobom, ponieważ kilka nadesłało swoje modyfikacje (też pierwszy taki przypadek dla mnie), a ogromna liczba pobiera bibliotekę. Nie wiem w sumie, co jeszcze napisać, po prostu się cieszę, że okazała się dla kogoś przydatna ;)

Kształt horyzontu czarnej dziury

Trafiłem wczoraj w internecie na wątek, który wydawał się typowym pytaniem kogoś zainteresowanego nauką, a okazał się całkiem ciekawym problemem.

Pytanie, które padło, dotyczyło kształtu czarnej dziury. Kilka osób odpisało, że horyzont zdarzeń (czyli granica - w pewnym sensie "powierzchnia" - czarnej dziury) ma kształt kuli (co ściślej należałoby określić jako sferę, gdyż horyzont jest tylko 2-wymiarową powierzchnią, a nie 3-wymiarową bryłą). Ktoś zasugerował, że niezupełnie, gdyż czarne dziury zwykle wirują i to je spłaszcza. Wtedy w wątek włączyłem się ja, odpisując, że nawet horyzont wirujących czarnych dziur jest sferyczny - opisuje go równanie r = const. Ale czy na pewno...?

(więcej…)

Co da się zrobić ze smartfonem z zepsutym ekranem dotykowym?

Zostałem niedawno poproszony o odzyskanie danych z zepsutego telefonu. Haczyk: dane były w pamięci telefonu, opcja podłączania się przez USB jako dysk zewnętrzny była wyłączona, a ekran dotykowy nie działał. I co z takim fantem zrobić? Otóż okazało się, że da się zrobić całkiem sporo, i choć ostatecznie danych nie udało mi się odzyskać, to przebieg samej walki z telefonem był dość ciekawy i wydaje mi się, że warty opisania.

(więcej…)

Daj Się Poznać - post-mortem

Jak mogliście pewnie zauważyć, mój udział w konkursie zakończył się jakiś czas temu brakiem kolejnych notek. Niestety, okazało się, że znajdowanie czasu na regularne zajmowanie się projektem programistycznym to coś, co mnie przerasta. Praca i życie prywatne niestety wymagają sporo uwagi.

Nie znaczy to jednak, że projekt konkursowy zostaje porzucony. W chwili obecnej co prawda zajmuję się innymi rzeczami (o których też postaram się trochę wspomnieć w najbliższym czasie), ale do Ktulu Online na pewno jeszcze wrócę. Kiedy dokładnie, to się dopiero okaże.

Szkoda, że tak się to skończyło, ale tak już bywa w życiu. Jeśli w przyszłym roku będzie kolejna edycja, na pewno spróbuję jeszcze raz :)

Funkcje hiperboliczne - co to za czort?

Jeśli jesteście jak ja, to pierwszy raz zetknęliście się z funkcjami hiperbolicznymi jako "tym czymś dziwnym na kalkulatorze, co nie ma żadnego zastosowania". Ot, są jakieś przyciski oznaczone "sinh" i "cosh". W szkole w końcu wyjaśnili, co oznacza "sin" i "cos", ale o tych wariantach z "h" na końcu nikt nie wspominał. O co chodzi? Nazwa sugeruje jakieś podobieństwo do funkcji trygonometrycznych, zobaczmy co wyjdzie:

 \begin{array}{ll} \cos (1) = 0.54030230586 & \cosh (1) = 1.54308063482 \\ \cos (10) = -0.83907152907 & \cosh (10) = 11013.2329201 \end{array}

(Takie wyniki otrzymacie, jeśli macie kalkulator ustawiony na radiany - jeśli jest ustawiony na stopnie, to wartości cosinusów będą inne; na funkcje hiperboliczne to ustawienie nie ma wpływu i jeszcze zobaczymy dlaczego.)

No tak, te 11 tysięcy dla cosh(10) wygląda bardzo podobnie do funkcji trygonometrycznych. Ewidentnie to "h" zmienia całkiem sporo, ale co konkretnie...?

Jeśli w dalszym toku edukacji spotkaliście się z liczbami zespolonymi, mogliście zobaczyć takie definicje:

 \begin{array}{ll} \cos x = \frac{e^{ix} + e^{-ix}}{2} & \cosh x = \frac{e^x + e^{-x}}{2} \\ \sin x = \frac{e^{ix} - e^{-ix}}{2i} & \sinh x = \frac{e^x - e^{-x}}{2} \end{array}

Tu już widać większe podobieństwo, ale... Dlaczego taka forma? Co to ma wspólnego z hiperbolami? Jeśli jeszcze nie wiecie, to teraz się dowiecie.

(więcej…)

Ktulu Online - postępy (20.03.2017)

Projekt idzie do przodu, choć powoli. Zastosowanie TDD pozwoliło mi przełamać niemoc twórczą i udało mi się zrobić całkiem spore postępy jak na ilość czasu, którą mogłem przeznaczyć na rozwój kodu. Przede wszystkim kształtu zaczęło nabierać API obiektów Manitou (serwera) oraz gracza (klienta) - zaczynanie od pisania testów bardzo pomogło w uformowaniu dość szczegółowej koncepcji.

Mimo że obecnie wciąż nie ma w projekcie niestety wiele do zaprezentowania, liczę na to, że w tym tygodniu powstanie coś ciekawego. Dawno nie czułem, że kodowanie idzie mi tak lekko, jak ostatnio :)

To chyba tyle, jeśli chodzi o postępy. W następnej notce napiszę nieco o szczegółach problemów, z jakimi się zetknąłem, próbując zdefiniować API obiektów - część z nich ma ciekawe aspekty związane z własnościami Rusta. Może to być ciekawa lektura dla osób, które jeszcze nie wiedzą zbyt dużo o tym języku :)

Ktulu Online - postępy (13.03.2017)

Ostatecznie nie znalazłem wczoraj czasu na napisanie notki, ale dobre wieści są takie, że udało mi się pchnąć projekt do przodu 🎉 Na pierwszy ogień poszła kolejność "etapów" gry.

Jak już wspominałem we wcześniejszych notkach, Ktulu toczy się w cyklu nocy i dni. Oprócz tego, w nocy dzieje się wiele rzeczy - różne postacie budzą się i korzystają ze swoich zdolności, budzą się też całe frakcje. Wszystko to dzieje się w pewnym ustalonym porządku, który powinien być zaimplementowany w grze.

Nie ma tu w zasadzie wiele materiału do rozwodzenia się ;) Tak jak wspomniałem w poprzedniej notce, zacząłem od krótkiego testu, który miał sprawdzić, czy struktura opisująca moment gry poprawnie przechodzi z "przed rozpoczęciem" do "noc 0, aktywność Dziwki". Następnie zaimplementowałem samą strukturę, rozwinąłem trochę test, rozwinąłem kod i tak powoli powstał kod, który jest obecnie: zawierający dwie tablice (odpowiadające kolejności zerowej nocy oraz dowolnej innej nocy) i metodę, która sprowadza się głównie do iterowania po tych tablicach dla nocy i przechodzenia po drodze jeszcze przez dni.

Kod prawdopodobnie będzie jeszcze wymagał przeróbek (głównie w celu lepszego reprezentowania nocnej aktywności frakcji), ale jest już jakiś punkt zaczepienia. Jest szansa, że dalej będzie coraz lepiej :)