Aktualności

Symulowanie opóźnienia Shapiro

Fala e-m lecąca z Ziemi do Wenus i z powrotem zwalnia w pobliżu Słońca

Z Ogólnej Teorii Względności wynika dużo ciekawych efektów. Jednym z nich jest, znajdujące się w tytule tej notki, tzw. opóźnienie Shapiro.

O co chodzi? Ogólna Teoria Względności przewiduje m.in. fascynujące zjawisko wolniejszego upływ czasu w pobliżu masywnych ciał. Oznacza to np., że jeśli spotkacie się z sąsiadem wieczorem przy wejściu do bloku, pójdziecie spać do swoich mieszkań, po czym spotkacie się znowu przy wejściu rano - jeśli mieszkasz na parterze, a sąsiad na 10 piętrze, to sąsiad w ciągu nocy zestarzeje się bardziej, niż Ty. Na Ziemi, przy takich różnicach wysokości, różnice w upływie czasu są minimalne - w przykładzie z sąsiadem nie większe niż kilkadziesiąt bilionowych części sekundy - ale są.

Te różnice w upływie czasu da się zmierzyć w niektórych okolicznościach, i fizyk Irwin Shapiro wskazał jeden możliwy sposób. Wykorzystuje on najmasywniejsze ciało w Układzie Słonecznym - Słońce. Wysłana z Ziemi fala elektromagnetyczna, przelatująca w pobliżu Słońca, znajduje się w obszarze, w którym czas płynie nieco wolniej, niż na Ziemi - w efekcie z Ziemi wygląda to, jakby poruszała się nieco wolniej. Jeśli taka fala po przelocie obok Słońca odbije się od czegoś - np. od innej planety - i wróci na Ziemię, przelatując po drodze obok Słońca jeszcze raz - to okaże się, że zajmie jej to nieco więcej czasu, niż wynikałoby z prostego podzielenia odległości między Ziemią a planetą przez prędkość fali (prędkość światła). Shapiro obliczył, jakiego opóźnienia można się spodziewać, i wyszło mu, że np. jeśli planetą, od której odbiją się fale, będzie Wenus, to opóźnienie może wynieść nawet ponad 200 µs (milionowych części sekundy) - wciąż malutko, ale już do zmierzenia!

I opóźnienie Shapiro faktycznie zmierzono. Wielokrotnie wysyłano z Ziemi wiązkę radarową, która odbijała się od Wenus i wracała na Ziemię, i mierzono dokładnie czas jej przelotu. Uzyskane wyniki były zgodne z przewidywaniami OTW:

Wyniki pomiarów opóźnienia Shapiro - maksymalne opóźnienie sięgnęło 180 µs

Wiadomo wobec tego, że efekt występuje. Jednak jak przystało na porządnego nerda, postanowiłem sprawdzić, czy będę w stanie sam otrzymać poprawne przewidywanie z teorii. W tym celu stworzyłem sobie symulację, której dotyczy ta notka.

(więcej…)

Obalania płaskoziemstwa ciąg dalszy

W poprzedniej notce opisałem historię pewnej dyskusji z płaskoziemcami i jak stworzyłem kalkulator refrakcji, żeby mieć silniejsze argumenty. Dzisiaj opiszę, jak sprawa rozwinęła się dalej (sprawa kalkulatora, nie płaskoziemców - chyba nikt się nie łudzi, że zdołałem przekonać jakiegoś pseudonaukowca? ;) ).

Przypomnę może pokrótce sedno dyskusji. Otóż jeden z płaskoziemców upiera się, że widoki różnych krajobrazów wyglądają tak, jak powinny wyglądać na płaskiej Ziemi, a nie jak na kulistej. Na poparcie swoich tez pokazuje zdjęcia i liczy proporcje odległości między charakterystycznymi punktami albo wielkości widocznych na nich obiektów. Podejście całkiem sensowne - o ile wszystko przeprowadzi się rzetelnie, tzn. wyliczy, jakie odpowiednie proporcje powinny być na płaskiej Ziemi, a jakie na kulistej. Okazuje się - o czym traktuje wspomniana wyżej poprzednia notka - że w pełni poprawna analiza musi uwzględniać nawet refrakcję atmosferyczną, która w większości przypadków jest zaniedbywalnie mała.

Stworzony przeze mnie w związku z tym kalkulator refrakcji miał jedną zasadniczą wadę - pozwalał na przeliczenie toru tylko jednego promienia światła naraz. Wobec tego na każdym analizowanym zdjęciu trzeba było wybrać sobie jakieś punkty, po czym liczyć np. stosunki kątów. Wbrew pozorom takie podejście pozwala otrzymać ciekawe wyniki, jednak jest mało atrakcyjne wizualnie - ostatecznie wszystko sprowadza się do porównywania liczb. Wymyśliłem więc, jak wykorzystać komputer, aby poprawić nieco sytuację: a gdyby tak stworzyć program, który zamiast symulować jeden promień, symulował ich wiele naraz, sprawdzał kiedy trafiają w powierzchnię Ziemi i na tej podstawie generował całą panoramę…?

(więcej…)

MaidSafe i PARSEC - nowy algorytm rozproszonego konsensusu

Dla odmiany napiszę o tym, co robię w pracy.

Od ponad półtora roku jestem pracownikiem MaidSafe - małej, szkockiej firmy, która pracuje nad stworzeniem całkowicie rozproszonego internetu. Brzmi nieco dziwnie - przecież internet już jest rozproszony, nie? Otóż nie całkiem - każda strona w internecie znajduje się na serwerach jakiejś konkretnej firmy. Wszystkie dane w internecie są pod kontrolą właścicieli serwerów, na których się znajdują, a niekoniecznie właścicieli samych danych. Prowadzi to do sytuacji, w których nasze dane niekoniecznie są wykorzystywane tak, jakbyśmy chcieli (wchodzące od niedawna RODO ma poprawić sytuację, ale nie spodziewałbym się za wiele...).

MaidSafe zamierza zmienić ten stan rzeczy. Scentralizowanym serwerom przeciwstawia SAFE Network - rozproszoną sieć, w której każdy ma pełną kontrolę nad własnymi danymi. Uploadując jakiś plik do sieci, nie wrzucamy go na konkretny serwer - plik jest dzielony na kawałki, szyfrowany i rozprowadzany w kilku kopiach po komputerach użytkowników sieci. Każdy użytkownik udostępnia część swojego dysku, ale kontroluje jedynie swoje dane, reszta jest dla niego nieczytelna dzięki szyfrowaniu. Ponadto, aby zapobiegać spamowi i motywować użytkowników do udostępniania miejsca, SAFE Network ma mieć własną kryptowalutę - Safecoin - nie opartą jednak na blockchainie, jak pozostałe kryptowaluty.

(więcej…)

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

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…)

Opublikowany nowy projekt - Labirynt 4D

Opublikowałem dziś kolejny ze swoich projektów. W tytule notki napisałem, że nowy, ale nie jest to do końca prawda.

Historia

Labirynt 4D jest programem, którego pierwotną wersję stworzyłem około 10 lat temu. Mój kolega z liceum wpadł wówczas na pomysł, że dość zabawną grą mogłaby być strzelanka, w której świat jest 4-wymiarowy, ale naraz widać tylko 3 z nich. W jego wizji w każdym momencie 3 z 4 współrzędnych byłyby wybrane w celu określenia, która część świata ma być rysowana, a gracz mógłby w każdej chwili zmienić ten zestaw. To mogłoby prowadzić do zabawnych sytuacji, w których gracz widzi sunący na niego płaski przekrój innego gracza, który na moment staje się w pełni 3-wymiarowy (przez chwilowe "wskoczenie" w jego przestrzeń), zabija go i znowu się spłaszcza. Postanowiłem wtedy stworzyć "proof-of-concept" czegoś takiego, jednak uznałem, że ciekawsze od dyskretnego przełączania zbiorów współrzędnych będzie obracanie widocznego przekroju w sposób ciągły.

(więcej…)

Nowa domena

Nie jestem szczególnie bogaty, więc gdy tworzyłem tego bloga, wolałem użyć darmowej domeny. Tak się przyjemnie składało, że mój hosting oferował darmowe subdomeny pod swoją domeną (nazwa-użytkownika.mydevil.net), więc skorzystałem z okazji i tym sposobem mój blog otrzymał adres ebvalaim.mydevil.net.

Niestety, wystąpił jeden drobny problem. Jakiś czas temu w hostingu zaszły zmiany i darmowe domeny dla użytkowników zmieniły końcówkę z .mydevil.net na .usermd.net. Domeny, które już istniały, działały nadal, dopóki nic się z nimi nie robiło. Kilka dni temu zaszła jednak konieczność wprowadzenia pewnych zmian - przeterminował się mój certyfikat SSL uzyskany dzięki Let's Encrypt. Odświeżenie go okazało się niemożliwe na starej domenie. Musiałem przejść na nową, bez możliwości ustawienia choćby przekierowania.

Umieściłem blog pod domeną ebvalaim.usermd.net, jednak zdawałem sobie sprawę, że będzie to rozwiązanie tymczasowe. Zapobieżenie podobnym nieprzyjemnościom w przyszłości (czy to przez zmiany w ramach hostingu, czy to przez konieczność zmiany samego hostingu z jakiegoś powodu) wymagało założenia zewnętrznej domeny.

Witam zatem od dziś pod świeżutką domeną ebvalaim.pl :)

Przygoda z mikrokontrolerem

Na początku maja odkopałem swoją starą zabawkę, jeszcze z czasów gimnazjum - "komputer testowy" oparty na mikrokontrolerze 80C535. Układ składa się niemal wyłącznie z kontrolera, pamięci (EPROM + RAM), podłączenia do zasilania oraz portu szeregowego (RS-232) i kilku portów wyjściowych. Gniazdo portu szeregowego służy do podłączania układu do PC-ta i wgrywania na niego programów, napisanych w prostym asemblerze.

Komputer testowy 80C535

Komputer testowy 80C535

Pojawiły się jednak dwa problemy. Pierwszy - współczesne komputery rzadko mają gniazdo RS-232, a laptopy chyba już wcale. Ten łatwo było rozwiązać, zamawiając z internetu adapter podłączany przez USB. Drugi problem był poważniejszy.

Otóż jak nietrudno się domyślić, jako uczeń gimnazjum nie miałem większego wkładu w projekt układu. Autorem był mój nauczyciel, który wyposażył nas (mnie i innych uczestników kółka elektronicznego) również w oprogramowanie do obsługi kontrolera. Problem w tym, że w ciągu 14 lat oprogramowanie gdzieś mi zaginęło, a z nauczycielem nie mam kontaktu. Cóż, stwierdziłem, jestem teraz dorosły i całkiem nieźle obeznany w programowaniu, więc chyba jakoś sobie poradzę ;)

Tak zatem zaczęła się moja przygoda z reverse-engineeringiem zabawki z kółka elektronicznego.

(więcej…)

Rust: aplikacje z API dla wtyczek

Niektóre aplikacje pozwalają użytkownikom na modyfikowanie ich funkcjonalności. W wielu przypadkach odbywa się to za pomocą wtyczek - niewielkich bibliotek, które są wczytywane przez główny program, a następnie wykorzystywane w określonych okolicznościach. Za rozpoznawalny przykład mogą tu służyć komunikatory, takie jak np. Pidgin. W ich przypadku wtyczki mogą służyć np. do obsługi różnych protokołów (Gadu-Gadu, Jabber, Facebook...), modyfikacji wyglądu czy dodawania nowych funkcji do komunikatora. W symulatorze Orbiter można w formie wtyczek dodawać np. nowe statki kosmiczne. Potencjalnych zastosowań jest mnóstwo. W tej notce zamierzam zaprezentować, jak podobny efekt można osiągnąć w języku Rust. Mój sposób nie jest zapewne ani jedynym możliwym, ani najlepszym, wydaje mi się jednak prosty i wygodny :)

(więcej…)