Zaszyfrowana pocztówka od Gynvaela

W połowie czerwca ze skrzynki pocztowej wyjąłem taką pocztówkę:

PocztówkaPocztówka

Odcyforwanie jej znaczenia zajęło mi ponad miesiąc, a bezpośrednio nad nią spędziłem kilka-kilkanaście godzin. Biorąc pod uwagę ostateczną trudność rozwiązania jest to trochę wstyd, ale jak to się mawia:

hindsight is 20/20

Transkrypcja

Gynvael ma lepszy styl pisma niż ja, więc problemów z przepisaniem nie było:

TXT = <<HEX
    50 6F 7A 64 72 6F
    77 69 65 6E 69 61
    20 [[ 7A 64 22 70
    68 6A 68 62 6B 73
    64 6E 6B 62 2E 43
    7F 72 73 61 7A 7A
    36 2C 31 39 5D 62
    72 ]]
HEX

Misja Gynvaela 003

MISJA 003            goo.gl/ZPQvV0               DIFFICULTY: ██░░░░░░░░ [2/10]

Tym razem nie trzeba nic robić. Wystarczy uruchomić poniższy skrypt, chwilkę
poczekać, a hasło zostanie wypisane. No, taką dłuższą chwilkę...

#!/usr/bin/python
def magic1(a, b):
  o = 0
  i = 0
  while i < a:
    o += 1
    i += 1
  i = 0
  while i < b:
    o += 1
    i += 1
  return o
def magic2(a, b):
  o = 0
  i = 0
  while i < b:
    o = magic1(o, a)
    i += 1
  return o
n1 = int("2867279575674690971609643216365"
         "4161626212087501848651843132337"
         "3373323997065608342")
n2 = int("1240905467219837578349182398365"
         "3459812983123659128386518235966"
         "4109783723654812937")
n = magic2(magic1(n1, n2), 1337)
print hex(n)[2:-1].decode("hex").splitlines()[0]

Co się dzieje z Pierunem?

Przez ostatnie kilka dni byłem na drugim końcu Polski (dosłownie, trasa Przemyśl-Szczecin to dramat), i nie bardzo miałem możliwości pracy nad rozwojem Pieruna (lub nawet codziennym postowaniem). Teraz wróciłem; najbliższe cele to:

  • edytor już istniejących postów,
  • paginacja,
  • pełna obsługa tagów (t.j. klikalne tagi).

Gdy zakończę powyższe będę mógł poważnie myśleć o przesiadce produkcyjnej na Pieruna (to by ewentualnie wymagało dodania jeszcze jakiegoś redirecta starych linków na nowe).

Links, lynx, w3m i dillo nie wspierają dostatecznie HTML5

Byłem szczęśliwy gdy szybkie google’owanie pokazało mi atrybutu formaction dla html-owych form. Niestety, podczas dzisiejszych testów zgodności (ręcznych) z linksem okazało się, że ten atrybut jest przez niego kompletnie ignorowany. Tak samo zachowują się pozostałe konsolowe przeglądarki (lynx, w3m) oraz prosta przeglądarka GUI: Dillo.

Wobec tego następujący kod będzie musiał zostać zmodyfikowany, wraz z metodą obsługującą POST w danej ścieżce:

button(type="submit", formaction='/preview_comment') preview!
button(type="submit", formaction='/send_comment') send

dbcache.d umie już cache’ować listy

Dzięki temu wszystkie wyszukania (po tagach, językach, autorach, etc) będą bardzo szybkie. Sama implementacja widoczna jest tutaj. Niestety, nie obyło się bez drobnej duplikacji kodu (“done is better than perfect”), którą trzeba będzie usunąć. Na szczęście nie będzie z tym wiele roboty.

Na maszynie testowej czas generowania listy spadł z 6ms do standardowych ~200µs.

Przy okazji miałem okazję pobawić się z variadic templatkami w D…