Linux: program bwm-ng na Centos 8

2020-10-30

Teoretycznie można założyć, że instalacja pakietów na Centos jest prosta, bo wystarczy znać program yum, ale… prawda jest brutalna. Yum pracuje w oparciu o skonfigurowane repozytoria pakietów, czyli zbiory dostępnych pakietów przewidzianych dla dystrybucji. Gdy jednak chcesz zainstalować coś bardziej wyrafinowanego, a nie chcesz się bawić w kompilację… to też się da!

Weźmy pakiet bwm-ng pozwalający na żywo śledzić przepustowość łączy. Domyślnie w Centos 8 go nie ma. Jest jednak specjalne rozbudowane repozytorium pakietów zwane EPEL (Extra Packages for Enterprise Linux). Tylko żeby z niego skorzystać należy go zainstalować. Jak opisano tutaj https://fedoraproject.org/wiki/EPEL służy do tego:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Teraz można już instalować „po nazwie pakietu”:

 sudo yum install bwm-ng

Gotowe!

 

By Rafał Kraik in Linuxy

Python: skrótowe zapisy operacji matematycznych

2020-10-04

Powiem coś w tajemnicy. Programiści to straszne lenie! Opłaca im się główkować tylko po to, żeby nacisnąć mniej klawiszy! Może nie do końca jest to prawda, ale przynajmniej plotka brzmi wiarygodnie? Prawdziwym celem skrócenia pewnych zapisów jest często uproszczenie czytelności kodu, zobacz:

Zamiast pisać

n = n +1

(czyli zwiększ o 1), można napisać

n += 1

zamiast pisać

n = n * 3

(czyli powiększ o 3), można napisać

n *= 3

Pewnie sam się domyślasz, jak zapisać

n = n – 2

albo

n = n / 3

By Rafał Kraik in Python

Python: Znaczenie parametru origin w funkcji imshow()

2020-10-04

Funkcja imshow ma parametr origin, który określa kierunek rysowania. Interpretacja danych zapisanych w macierzy może być naniesiona na wykres na różne sposoby. Przecież macierz (pomijając jej kształt) to po prostu jakiś ciąg liczb. Ten ciąg liczb można odwzorowywać na wykrsie tak, że początkowe wartości będą narysowane po lewej na dole, albo u góry. Za to właśnie odpowiada ten parametr.  Czytaj dalej »

By Rafał Kraik in Python

Python: expression vs statement

2020-09-30

Podstawowa różnica między statement, a expression bierze sie z definicji tych obiektów:

– statement – coś robi i niekoniecznie cokolwiek zwraca. Przykładem statement jest pass i przypisanie wartości do zmiennych

– expression – to jest jedna lub więcej instrukcji, które coś zwracają. Przykładem expression jest np dowolny napis, dowolne obliczenie, ale też np. polecenie print (!!!)

Rozważmy taki kod:

price = 10
bonus = 1
bonus_granted = True

Jak sprawdzić czy coś jest expression? Prosto. Do zmiennej przypisz wynik wykonania polecenia, np.:

x = print('Hello')
print("x = {}".format(x))

zwracany wynik to

Hello
x = None

Czytaj dalej »

By Rafał Kraik in Python

PowerShell: ScheduledJob się nie wykonuje. Brak błędów

2020-09-20

Dziwna sprawa. W PowerShellu utworzony ScheduledTask nie uruchamia się. PowerShell go widzi, ale nie wiadomo, co powoduje, że zaplanowane zadania nie startują. Oto kod tworzący taki przykładowy job:

$options = New-ScheduledJobOption -StartIfOnBattery -RunElevated 
$min = New-TimeSpan -Minutes 1
$trigger = New-JobTrigger -RepetitionInterval $min -RepeatIndefinitely -At (Get-Date) -Once

Register-ScheduledJob -Name "My Task" -Trigger $trigger -ScheduledJobOption $options -ScriptBlock {
 $files_archive = 'c:\files_archive'
 $currdir = Get-Date -Format yyyyMMddhhmm
 cd $files_archive 
 New-Item -ItemType directory -Path $currdir
}

Dokładniejsza analiza logu harmonogramu zadań wskazała, że przyczyną jest brak uprawnień. Dziwne, bo polecenia uruchamiał lokalny administrator. Niestety konto tego administratora pochodziło z Azure AD. Ponieważ na komputerze jest jeszcze zdefiniowane inne konto administratora, to najprostszym rozwiązaniem było wskazanie, że zadanie ma się uruchamiać z wykorzystaniem tego innego konta. Na to inne konto można wskazać parametrem credential:

$options = New-ScheduledJobOption -StartIfOnBattery -RunElevated 
$min = New-TimeSpan -Minutes 1
$trigger = New-JobTrigger -RepetitionInterval $min -RepeatIndefinitely -At (Get-Date) -Once

Register-ScheduledJob -Name "My Task" -Trigger $trigger -ScheduledJobOption $options -Credential ("$env:COMPUTERNAME\autoadmin") -ScriptBlock {
 $files_archive = 'c:\files_archive'
 $currdir = Get-Date -Format yyyyMMddhhmm
 cd $files_archive 
 New-Item -ItemType directory -Path $currdir
}

I teraz program działa jak ta lala. Jeśli zechcesz je usunąć wykonaj”

Get-ScheduledJob -Name 'My Task' | Unregister-ScheduledJob
By Rafał Kraik in Power Shell

SSRS: Interaktywne sortowanie kolumny

2020-09-01

W raporcie tworzonym w SSRS można zezwolić użytkownikowi na wykonywanie dowolnego sortowania wg wybranej kolumny. Kolumna ta nie musi pochodzić bezpośrednio z bazy danych – może powstawać jakkolwiek w data set. W tym celu wystarczy tylko odpowiednio zmienić właściwości kolumny:

By Rafał Kraik in SSRS

Windows: Włączanie historii harmonogramu zadań

2020-08-20

Task Scheduler lub po polsku Harmonogram Zadań służy do planowania i wykonywania powtarzalnych zadań na systemie. Narzędzie samo w sobie jest bardzo użyteczne… o ile działa… A jak nie działa? Do sprawdzenia wyników, warto by zajrzeć do historii wywołań takiego zadania. Historię można znaleźć przechodząc do określonego zadania w Harmonogramie. Problem w tym, że często ta historia jest wyłączona:

Włączenie historii jest proste, ale trzeba bardzo uważnie klikać myszką. Obawiam się, że projektanci aplikacji mogli by nieco poprawić usability tego programu. Należy kliknąć prawym przyciskiem myszy na „Task Scheduler” i wybrać polecenie „Enable All Tasks History”. Zazwyczaj kiedy tam klikasz, tej pozycji nie ma w menu! Skandal! Żeby polecenie było widoczne kliknij najpierw lewym przyciskiem myszy na Task Scheduler. W centralnej części okna pojawi się wtedy podsumowanie statusu zadań (okno startowe programu). Dopiero kolejne kliknięcie spowoduje, że w menu pojawi się poszukiwana opcja.

Po jej wybraniu właściwie od razu będzie można przeglądać historię uruchamianych zadań.