2023-02-10
Zazwyczaj VSC (a dokładniej rozszerzenie pylance) podkreślna nazwy modułów, które nie są zainstalowane. W celu instalacji wykonaj polecenie
pip install nazwa_modułu
np.
pip install scikit-learn
Problem w tym, że czasami moduł jest zainstalowany, a VSC i tak go podświetla. Co może być przyczyną?
Otóż domyślnie pylance sprawdza obecność modułów tylko w środowisku wirtualnym, tymczasem część modułów instaluje się w domyślnym katalogu, w którym zainstalowano Pythona – ot uparciuchy!
Wtedy otwórz settings: File >> Preferences >> Settings
U góry w polu tekstowym wpisz „python.analysis.extrapaths”

Właśnie w tym miejscu możesz podać ścieżkę dostępu do katalogu, w którym zostały zainstalowane dodatkowe „uparte” moduły.
2023-01-21
Internet to miejsce, w którym sie dzielimy tym co mamy. Nie oznacza to, że w internecie wszystko można skopiować, zabrać i może jeszcze wypuścić pod własną marką. Prawa autorskie są ważne i nie wolno ich łamać.
Jeśli już jednak coś w tym internecie jest i jest to za darmo, bez rejestracji, to zabezpieczanie np. strony internetowej przed kopiowaniem danych wydaje się co najmniej dziwne. Coś na zasadzie dam, ale nie dam… Zwykłe utrudnianie życia, bo jak sie chce, to takie zabezpieczenia i tak się nie sprawdzą.
Jak można obejść kwestię zablokowanego prawego przycisku myszy, a dokładniej menu kontekstowego, które w takim przypadku się pojawia, a pozwala na np. wydrukowanie strony. Prosto!
W Chrome przejdź do ustawień i poszukaj słowa javascript. Można skopiować ten adres i wkleić do przeglądarki:
chrome://settings/content/javascript?search=javascript
Odszukaj ustawień Java Script:

Jak widać javascript domyślnie jest włączony, ale można go wyłaczyć dla wybranej strony:

To odblokuje menu kontekstowe na stronie.
To teraz zabierzmy sie za możliwość zaznaczenia fragmentu tekstu, np po to aby go następnie skopiować. Będzie – no jasne – prosto! W Chrome naciśnij F12. Uruchomi to narzędzia developerskie. Teraz poszukaj w środkowej części znacznika HTML, po prawej stronie widać okienko Styles, a w nim opcję user-select: none oraz webkit-user-select:none. Wystarczy je „odhaczyć”, kliknąć na stronie widocznej po lewej i… już można zaznaczać tekst.

Dzięki temu nieśmiali blogerzy, którzy chcą całemu światu opowiedzieć o swojej miłości, ale trochę się wstydzą i nie pozwalają np. na skopiowanie, wydrukowanie (do celów prywatnych) fragmentu swojej historii, zostają uwolnieni. A tak na poważnie – po co utrudniać sobie życie, skoro takie dane i tak, jak widać, można obejść?
2023-01-14
Cron pozwala na automatyzację zadań na systemie Linux. Czasami chcemy aby te automaty działały na wybranym koncie, bo to konto ma już zdefiniowane odpowiednie dostępy, alebo też dlatego, że automatycznie uruchamiany skrypt będzie tworzył pliki, katalogi, do ktorych tylko ot konto powinno mieć dostęp.
W takim przypadku może się przydać zaplanowanie zadań do wykonania dla innego użytkownika.
Tak oto uruchomisz polecenie pozwalające edytować harmonogram zadań dla użytkownika:
crobtab -e -u redis
Jak tylko uruchomi się edytor wprowadź definicję polecenia, które ma się regularnie uruchamiać. Np aby co minutę zapisać aktualną datę w pliku użyj takiej linijki:
*/1 * * * * date >> /tmp/my_date.txt
Po zapisaniu definicji, możesz skontrolować, czy wszystko jest ok:
crontab -l -u redis
Co ciekawe, zadania w crontab można definiować nawet jeśli wybrany użytkownik używa shella nologin!
Dodajmy jeszcze, że ewentualne sprawdzenie działania crona można wykonać uruchamiając
grep CRON /var/log/syslog
2023-01-07
Polecenie su może służyć do zmiany tożsamości w sesji Linux. Jednak w tym przypadku pojawił sie błąd:
sudo su - redis
This account is currently not available.
O co chodzi? Chodzi o to, że użytkownik redis nie ma przypisanego żadnego shella, a właściwie to ma… nologin:
grep redis: /etc/passwd
redis:x:113:118::/var/lib/redis:/usr/sbin/nologin
Jeśli koniecznie chcesz wykonać su na to konto, to można by ten shell zmienić na /bin/bash, ale… jeśli ktoś pomyślał o takim skonfigurowaniu konta, to pewnie miał ku temu powody.
sudo usermod -s /bin/bash redis
No to co można zrobić dalej? Może wcale nie trzeba przełączać się na to konto, może po prostu wystarczy uruchamiać pojedyncze polecenia? Jeśli tak, to zobacz:
sudo -u redis -s /bin/bash -c "whoami"
redis
sudo może na koncie wskazywanym opcją -u z wykorzystaniem shella wskazywanym przez opcję -s wykonać polecenie! To super. Jeśli to polecenie miałobybyć bradziej złożone, np. miałoby więcej opcji, przekierowywałoby output do pliku itp. to nie zapomnij o umieszczeniu komendy w cudzysłowach lub apostrofach.
2022-12-27
W katalogu /var/log/journal odkładają się logi generowane przez journal. Logi to jedna z ważniejszych rzeczy w pracy administratora, więc to dobrze, że się tam odkładają. Jeśli jednak jest ich zbyt dużo, to też niedobrze.
Po pierwsze można sprawdzić, ile miejsca te logi zajmują:
journalctl --disk-usage
Po drugie, można usunać stare logi, zostawiając tylko wskazaną ilość miejsca:
journalctl --vacuum-size=200M
No i po trzecie, można skonfigurować journal, do przechowywania tylko zadanej ilości logów. Plik konfiguracyjny to /etc/systemd/journald.conf. Linijka definiująca ile miejsca można przeznaczyć na logi to SystemMaxUse:
SystemMaxUse=200M
Po zmianach w pliku journald powinien zostać zrestartowany:
sudo systemctl restart systemd-journald
Więcej informacji o journal.conf:
man journal.conf
2022-12-27
Co to ja właściwie zainstalowałem? No cóż – takie pytanie można zadawać sobie czasami i całkiem na trzeźwo. Żeby sprawdzić, co ostatnio było instalowane na Ubuntu można posłużyć się poleceniem:
grep install /var/log/dpkg.log
Jeśli plik w między czasie już się zrollował, to można dodać jeszcze jego wcześniejszą wersję:
grep install /var/log/dpkg.log /var/log/dpkg.log.1
Mając taką komendę można następnie budować sprytniejsze raporty, o których można poczytać tutaj:
https://unix.stackexchange.com/questions/12578/list-packages-on-an-apt-based-system-by-installation-date
W moim przypadku w/w komenda była wystarczająca
2022-12-27
Pod Hyper-V pracuje maszyna wirtualna z Linux. Część z plików została wykasowana z Linuxa, ale rozmiar dysku wirtualnego pozostał duży (ok 45 GB). Dostępny w konsoli Hyper-V edytor dysku, mimo wydania komendy zmniejszenia dysku, nie zmniejszył rozmiaru, albo zrobił to w minimalnym zakresie. Co robić?
1. Kilka operacji do wykonania na systemie gościa – Linuxa. Oczywiście na początku kasujemy wszelkie niepotrzebne pliki (ale to nie główny temat tego wpisu). Następnie na dysku na którym występuje problem (u mnie to dysk podmontowany w katalogu root) należy wykonać takie oto polecenia:
su
cd /
cat /dev/zero > zero.dat ; sync ; sleep 1 ; sync ; rm -f zero.dat
O co chodzi? Hyper-V zoptymalizuje tylko „wyzerowane” sektory. Ta komenda całe puste miejsce dysku zapełnia zerami. Dzięki temu, za chwilę komendy Hyper-V zobaczą to puste miejsce. Polecenie zapełnia dysk na 100% używając też miejsca wykorzystywanego przez juz usunięte pliki i o to właśnie chodzi. Jeśli na systemie linux działa jakaś ważna aplikacja, to zapełnienie dysku może być dla niej poważnym problemem – przemyśl ten krok 😉
2. Wyłącz linuxa.
3. Na systemie hosta, w powershellu uruchomionym jako administrator:
Optimize-VHD "C:\HV-Machines\exported u20\U20\Virtual Hard Disks\U20.vhdx" -Mode Full
To polecenie dokonuje pełnej optymaliacji dysku usuwając wyzerowane sektory. W moim przypadku rozmiar dysku spadł z 45 GB do 33, a wcześniej uruchamiany kreator nie zwalniał praktycznie nic.
Źródła:
How to compact VHDX files in the most efficient way – C:Amie (not) Com! (c-amie.co.uk)
virtual machine – Linux VHDX size on Hyper-V – Stack Overflow