Goodbye Atom

W roku 2014 pojawił się a hackable editor for the 21st century czyli Atom. Od początku mnie zaintrygował. Był to edytor międzyplatformowy, open source, działający w GUI, reklamowany jako rozszerzalny… Samo dobro. Pobrałem i… skasowałem, ze względu na rozmiar. Ważył bowiem grube kilkadziesiąt MB, co wydało mi się sporą przesadą.

Screenshot ze strony projektu
Screenshot ze strony projektu. Źródło: https://atom.io/

Później jednak przekonałem się do Atoma, a nawet go polubiłem. Uzbrojony w pluginy był bardzo przyjemnym narzędziem wspomagającym edycję różnych formatów plików. Więcej, niż edytorem, bardziej traktowałem go jako IDE. Choć z rasowymi IDE nie mam doświadczenia. Czy to Python, Puppet czy zwykłe YAMLe – wszystko edytowało się przyjemnie, ze stosownym kolorowaniem, linterami itp. Pamiętam, że na jednym ze szkoleń z Pythona śmiało współzawodniczył z PyCharm. IIRC wówczas jednej rzeczy nie dało się zrobić w Atomie, i jednej w PyCharmie. W każdym razie, niczego mi w Atomie nie brakowało.

Dlatego w ogłoszeniu o wygaszeniu projektu zdanie Atom has not had significant feature development for the past several years wydaje mi się dwuznaczne. Skoro program ma wszystko, co potrzebne, to co tu rozwijać? No i jeśli oparty jest o wtyczki – a tak było w przypadku Atoma – to ficzery w samym programie też stają się drugorzędne.

Tak czy inaczej, decyzja mnie nie dziwi. Skoro Microsoft ma swoje Visual Studio Code, to będzie je promował, więc po co mu wewnętrzna konkurencja? Artykuł wspomina właśnie VSC jako alternatywę. Zapewne nieprzypadkowo. Z drugiej zaś strony jak robiłem przegląd ewentualnych alternatyw w głowie, to VSC jak najbardziej się pojawiło.

Nie ukrywam, że mam pewien sentyment do Atoma i parę wspomnień z nim związanych. Towarzyszył mi przy nauce Pythona, która zbiegła się ze zmianą pracy. Był nieodłączną częścią DSP2017.

Potem spojrzałem na listę alternatyw i… nie jest wiele lepiej. Nie widzę żadnego następcy czy też zastępcy. Chwilowo najbardziej skłaniam się ku wolnej wersji VSC czyli VSCodium. Ale to bez pośpiechu. W końcu Atom jest open source, więc może jednak okaże się, że będzie utrzymywany.

UPDATE Polecę jeszcze wpis, który właśnie przeczytałem. Nie o edytorze, a o desktopie, ale jest i o edytorach (vim).

All your PESEL are belong to us!

Wpis na Sekuraku o łamaniu hasła do PDF za cztery zł odwoływał się do wpisu na Informatyku zakładowym w tym temacie. Oba opierały się o generator numerów PESEL. Rzuciłem okiem na program i stwierdziłem, że nie jest kompletny. Nie obsługuje bowiem wszystkich lat. Co gorsza C# wydał mi się średnim wyborem – uruchomienie pod Linuksem wymaga doinstalowania dodatkowych pakietów, trudniejsze w rozwijaniu.

Postanowiłem ulepszyć i napisałem własną wersję generatora numerów PESEL. Zasadnicza różnica to obsługa wszystkich lat objętych specyfikacją PESEL. Dodatkowo można generować numery PESEL dla dowolnych zakresów. Takie ficzery przydatne przy pentestach.

Program nie jest specjalnie szybki – każdy rok na moim sprzęcie to ok. 2 sekundy. Z drugiej strony nie jest tak źle z prędkością . Oryginał działał 80 sekund według autora, mój dla tych samych lat – 113 sekund[1]. Oczywiście nasze sprzęty mogą się różnić, niemniej różnica nie jest drastyczna. Poza tym, słownik generuje się raczej rzadko.

Generator numerów PESEL raczej nie będzie rozwijany. No chyba, że ktoś znajdzie błędy. Może komuś się przyda.

[1] Wszystkie czasy podaję dla uruchomienia przy pomocy PyPy.

Automatyczne aktualizacje Debiana – HOWTO

Utrzymywanie aktualnych wersji oprogramowania to podstawa bezpieczeństwa. Nawet w przypadku zwykłego desktopa ma to znaczenie, szczególnie jeśli chodzi o przeglądarki internetowe. Pomóc w tym mogą automatyczne aktualizacje pakietów.

Tradycyjna, ręczna aktualizacja oprogramowania w Linuksie sprowadza się w większości dystrybucji do odświeżenia listy dostępnych pakietów i zainstalowania nowych wersji. Dla dystrybucji opartych o pakiety deb będzie to
apt-get update; apt-get dist-upgrade[1]

W dystrybucjach Linuksa takich jak Debian czy Ubuntu do dyspozycji mamy unattended upgrades, czyli mechanizm pozwalający na automatyczne aktualizacje pakietów. Pozwala on aktualizować wskazane pakiety bez ingerencji zarówno użytkownika, jak i administratora systemu. Poza samą aktualizacją umożliwia skonfigurowanie dodatkowych warunków, jak praca tylko przy podłączonym zasilaczu, wymuszenie rebootu systemu po aktualizacji pakietów, ograniczenie pasma przeznaczonego na pobieranie aktualizacji czy sprzątanie starych wersji kernela.

Aby włączyć mechanizm automatycznych aktualizacji, trzeba zainstalować pakiet unattended-upgrades. Dodatkowo należy wyedytować plik konfiguracyjny:
cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Samą konfiguracją działania automatycznych aktulizacji sterujemy przy pomocy zawartości pliku
/etc/apt/apt.conf.d/50unattended-upgrades.

Opcji jest wiele, od tego, które pakiety wykluczyć z aktualizacji, przez raportowanie mailem, czy wspomniane wcześniej limitowanie szybkości pobierania aktualizacji czy reboot systemu. Domyślna zawartość powinna być OK, jeśli korzystamy wyłącznie z podstawowych repozytoriów. W przypadku posiadania dodatkowych źródeł pakietów, warto sprawdzić czy będą one także aktualizowane i w razie potrzeby dostosować plik.

Przetestować działanie wprowadzonych zmian i ogólnie zachowanie możemy poprzez wydanie polecenia
unattended-upgrades -d

Pokaże ono, które pakiety zostałyby zaktualizowane w naszym systemie.

Trzeba pamiętać, że tego typu nienadzorowana aktualizacja zawsze niesie jakieś ryzyko niepowodzenia. Osobiście korzystam od lat na paru desktopach i nie napotkałem problemów. Jest tam jednak Debian w wersji stabilnej, przeważają repozytoria standardowe, a z dodatkowego oprogramowania są jedynie przeglądarki.

W przypadku systemów korzystających z systemd, należy jeszcze zwrócić uwagę na timery, jak to opisano na wiki Debiana. Dzieje się tak, ponieważ plik /etc/cron.daily/apt-compat zawiera na samym początku sprawdzenie, czy jest uruchamiany na systemie z systemd

if [ -d /run/systemd/system ]; then
exit 0
fi

Jeśli tak, kończy działanie.

Na koniec polecam lekturę tego opisu automatycznych aktualizacji. Znajdziecie tam wiele dodatkowych szczegółowych informacji i przykładów.

[1] Dostępna jest też mniej inwazyjna wersja polecenia czyli apt-get update. Próbuje ona aktualizować tylko te pakiety, których aktualizacja nie wiąże się z usuwaniem ani doinstalowaniem innych pakietów. Ceną jest pozostawienie w dotychczasowej wersji pakietów, których nie da się zainstalować bez tej operacji. Więcej w manualu apt. Interesującym narzędziem do zarządzania pakietami jest opisywany kiedyś wajig.