VSCodium na Debianie

Jak pisałem wcześniej, nadchodzi koniec edytora Atom. Z pewnych względów, na maszynie służbowej i tak zacząłem korzystać z Visual Studio Code . Dlatego postanowiłem przyspieszyć proces migracji także na prywatnej maszynie. VSC nie było złe, więc zgodnie z zapowiedzią dałem szansę VSCodium.

Czym jest VSCodium?

VSCodium to fork microsoftowego Visual Studio Code, zbudowany z otwartego kodu źródłowego, dostępny na wolnej licencji. Dodatkowo pozbawiony dodatków od Microsoft służących do zbierania telemetrii/śledzenia. Poza tym, wszystko powinno działać tak samo.

VSCodium logo
Źródło: https://vscodium.com/

Instalacja VSCodium

Na początek instalacja pod Debianem. Z tego co widzę, na Ubuntu będzie identycznie. Szczęśliwie dostępne jest repozytorium pakietów deb. Skorzystałem z opisu instalacji spod tego linka: https://www.linuxcapable.com/how-to-install-vscodium-on-debian-11-bullseye/. Wersja skrócona poniżej.

Dodajemy klucz GPG do zaufanych:

curl https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/vscodium.gpg

Dodajemy źródło pakietów:

echo "deb https://download.vscodium.com/debs vscodium main" > /etc/apt/sources.list.d/vscodium.list

Po tym zostaje już tylko aktualizacja danych o repozytoriach i instalacja pakietu codium:

apt update; apt install codium

Wtyczki z marketplace

Nieprzypadkowo napisałem, że wszystko powinno działać tak samo. Słowo powinno powinno dać do myślenia. Otóż po instalacji pozwoliłem sobie „ściągnąć” konfigurację, a w zasadzie używane wtyczki, z marketplace od kolegi z pracy, korzystającego z VSC. Mocno się zdziwiłem, bo większość potrzebnych wtyczek, tych od Microsoft, nie była w VSCodium dostępna do instalacji. Nie drążyłem wtedy tematu i po prostu zainstalowałem VSC.

Jednak po szybkim zbadaniu tematu okazuje się, że nie ma najmniejszego problemu z korzystaniem z marketplace Microsoft w VSCodium. Zgodnie z tym, co piszą w dokumentacji, wystarczy w pliku

~/.config/VSCodium/product.json

dodać stosowną zawartość, czyli:

{
  "extensionsGallery": {
    "serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
    "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
    "itemUrl": "https://marketplace.visualstudio.com/items",
    "controlUrl": "",
    "recommendationsUrl": ""
  }
}

I możemy cieszyć się dostępem do wtyczek zupełnie jak w Visual Studio Code.

Wtyczki

Nie ukrywam, że bardziej podobało mi się działanie wtyczek w Atomie. Na przykład isort wywołany tamże po prostu sortował wszystkie importy. W przypadku VSC nie ma tak dobrze. Z tego co udało mi się znaleźć, można „naprawić” pojedynczy import.

Istnieje obejście, które jest podpowiadane w opisie konfiguracji wtyczki, czyli dodanie do settings odpowiedniej sekcji. Jest to nieco nieintuicyjne, bo w czytamy to będąc w… ustawieniach, czyli settings. Chodzi jednak o inne settings. Jak znalazłem pod tym linkiem, trzeba zmienić zawartość pliku

~/.config/Code/User/settings.json

Na razie tyle. Z doświadczeń w pracy wynika, że spokojnie da się żyć z VSC zamiast Atoma. Na razie pracuje mi się w VSC gorzej, ale raczej chodzi o drobną zmianę przyzwyczajeń i dokładniejsze poznanie nowego programu. Z wyboru zamiennika jestem wstępnie zadowolony.

Chmura Wyroczni

Niewiele brakowało, a lipiec byłby pierwszym od wielu miesięcy, jeśli nie w historii, miesiącem bez wpisu. Jakoś tak się złożyło, że było parę rzeczy, ale żadna nie wydała mi się godna wpisu.

Najważniejszym zagadnieniem jest rozpoczęcie prac związanych z migracją na nowy hosting (Oracle Cloud), o którym wspominałem we wpisie z początku roku. Jest to jednocześnie ostatnie z zaplanowanych postanowień. PUM jest już przepisany na Pythona i działa. Skrypt generujący stan rowerów na stacjach Nextbike, w zeszłym miesiącu przeniosłem na repo na GitHub.

Pozostał hosting. Moim wyborem jest Oracle Cloud. Ich free tier jest bardzo zachęcający, szczególnie jeśli chodzi o moje potrzeby. Ilość przestrzeni na dysku wręcz rozpieszcza – obecnie mieszczę się „ze wszystkim” na 1 VPS i 20 GB. Przynajmniej, jeśli chodzi o rzeczy „produkcyjne”. Nie ukrywam, że po pierwsze dopiero się uczę, po drugie nie jest to wszystko ani intuicyjne, ani dopracowane. Dobrze, że kiedyś miałem nieco więcej do czynienia z Openstack, bo filozofia podobna.

Napaliłem się na maszynki ARMowe i… szybko dostałem kubłem zimnej wody. Po pierwsze, w oficjalnych obrazach nie ma Debiana. Po drugie, w przypadku ARM nie ma możliwości cywilizowanej metody instalacji, przez dostarczenie swojego obrazu. Znalazłem co prawda tego typu wygibasy, które rozumiem, ale… nie działają od kopa. Przynajmniej nie dla najnowszego Ubuntu. Pewnie popróbuję jeszcze, ale wariant, że polegam na dostępności starego Ubuntu dla „produkcyjnych” gratów, średnio mi się uśmiecha.

Tak czy inaczej mam soft, który wymaga amd64, więc po prostu postawiłem maszynkę amd64. Tu również nie dają Debiana, ale istnieje ręczna, jednak dość cywilizowana metoda instalacji Debiana w Oracle Cloud. Trochę mniejsze zasoby, ale w zupełności wystarczają. Pierwsze kontenery już przeniosłem. Oczywiście zacząłem od strony zadniej, czyli od zabawek i rzeczy nieprodukcyjnych. Pozwoliło mi to złożyć „tymczasowego” VPSa. W przyszłym tygodniu pewnie będzie większa przerwa. Akurat blog nie jest skonteneryzowany, więc przywrócenie nie będzie po prostu wgraniem backupu kontenera.

Co w 433 MHz piszczy?

Wpis na blogu o termometrach zewnętrznych przypomniał mi o pewnym zakupie, który jakiś czas temu poczyniłem. Chodzi o termometr bezprzewodowy z Jula. Nieco spontaniczny zakup, by mieć pretekst do zabawy urządzeniami pracującymi w paśmie 433 MHz. Z drugiej strony nawet gdyby nie udało się dobrać do danych z komputera, to jakaś tam potrzeba poznania temperatury w różnych miejscach w mieszkaniu była.

Do zabawy nie doszło, nie pamiętam dlaczego. Z tego co pamiętam chciałem pójść bardziej w stronę dedykowanego odbiornika (i transmitera…) 433 MHz, nie SDR. I trochę utknąłem na zakupie, a w zasadzie na zastanawianiu się nad podłączeniem tego – lub czegoś podobnego – do zwykłego komputera, najchętniej przez USB.

rtl_433

W każdym razie wpis zwrócił moją uwagę na program rtl_433 i możliwość odczytu danych przez SDR. Wersja docelowa to może nie będzie, w rozmowie ze znajomymi z pracy mieliśmy nieco obawy co do jakości sygnału, ale skoro tak łatwo dostępne, to warto spróbować. Okazało się, że pakiet rtl-433, który jest dostępny w Debianie SID, mam już zainstalowany. Zupełnie nie przypominam sobie, bym go używał, ale może to z czasów kiedy instalowałem wszelki soft do SDR?

Uruchomiłem i… to działa, po prostu, od kopa. Okazało się, że termometr z Jula, który kupiłem, jest wspierany. Okazało się także, że podobny czujnik jest gdzieś w okolicy. Najciekawsze zaś jest, że wykrytych zostało sporo innych czujników. Z których wiele udostępnia nie tylko dane o temperaturze, ale także o wilgotności.

Ilość widocznych czujników naprawdę mnie zaskoczyła. Z fabryczną, biedną anteną ustawioną w losowym miejscu na biurku SDR widzi kilka. W tym – sądząc po nazwach – trochę czujników temperatury i ciśnienia powietrza z samochodów.

Zastosowanie

W oparciu o Raspberry Pi lub podobną płytkę można łatwo można zrobić sobie własną stację pogodową, z dowolną ilością czujników. Wariant udostępniający dane po WWW jest trywialny i zapewne w tę stronę pójdę. Nic nie stoi jednak na przeszkodzie by dołożyć wyświetlacz i na nim prezentować dane, tworząc odpowiednik prawdziwej stacji.

Dodatkowo opisywane rozwiązanie daje możliwość skorzystania z danych z cudzych czujników. Mój czujnik zdalny jest w innym pomieszczeniu, niż stacja. Trochę miałem dylemat, czy nie umieścić go za oknem. Ale skoro sąsiad ma na zewnątrz, to ja już nie potrzebuję… Tracimy co prawda kontrolę nad umiejscowieniem czujnika, który może np. znajdować się w nasłonecznionym miejscu, ale darowanemu koniowi w zęby się nie zagląda.

Rozglądam się teraz i myślę jaki termometr bezprzewodowy kupić. Póki co znalazłem ładny moduł do stacji pogodowej za 34 zł, kuszą jednak inne moduły do stacji pogodowych, które zapewniają pomiar wilgotności. Co prawda nie mam pewności czy będą obsługiwane przez rtl_433, ale zakładam, że tak. Ewentualnie można dopisać ich obsługę.