PostgreSQL: Jak zrestartować usługę?

2020-11-01

Czy to Windows, czy to Linux – postgres jest procesem, który w pewnych przypadkach trzeba zrestartować. W takim przypadku skorzystaj z polecenia restart. Tak wygląda to na Windows:

"C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe" restart -D "C:/Program Files/PostgreSQL/13/data/"

a tak na Linuxie:

service postgresql-X.Y restart

Jeśli z jakiegoś powodu (np. źle zdefiniowanych parametrów uruchomieniowych) serwer nie startuje, to przyczyny należy szukać w  plikach logów, które znajdują się w podkatalogu log katalogu data:

C:\Program Files\PostgreSQL\13\data\log

By Rafał Kraik in PostgreSQL

PostgreSQL: Gdzie znajdują się pliki konfiguracyjne?

2020-11-01

Konfigurację postgres-a zapisuje sie w plikach konfiguracyjnych. W zależności od tego, jak została przeprowadzona instalacja, te pliki mogą się znajdować w różnych lokalizacjach. Jeśli trzeba ustalić dokładne ścieżki do tych plików, to uruchom następujące polecenie:

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';

Czytaj dalej »

By Rafał Kraik in PostgreSQL

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