2020-01-01
W tym przypadku chodziło o instalację Centosa, który został zaintalowany w środowisku graficznym. Z grafiką jednak pojawiły się problemy powodujące, że serwer całkowicie się blokował (problemy z klawiaturą).
Oto jak uruchomić Linuxa bez grafiki, ale z obsługą sieci (run level 2 lub 3): Czytaj dalej »
2019-12-21
Kiedy robisz rzeczy standardowe, korzystasz sobie ze standardowych metod, ale kiedy przychodzi zmierzyć się z niestandardowym problemem, to trzeba sięgnąć po funkcję apply.
Tutaj mamy dosyć nietypowy DataFrame. Dla każdego wiersza DataFrame trzeba wykonać jakąś niestandardową czynność…
import pandas as pd
df = pd.DataFrame(
[ [-1, -1],
[[11,12], [21, 22]],
[-1,-1],
[[101,102],[201,202]]
],
columns=['rola','X_dist'])
df
rola X_dist
0 -1 -1
1 [11, 12] [21, 22]
2 -1 -1
3 [101, 102] [201, 202]
Dajmy na to, że w zależności od zawartości kolumny „rola” trzeba zwrócić taki albo inny DataFrame – ogólnie wykonać jakąś złożoną operację. W tym celu zdefiunujemy funkcję. Pisząc ją myśl, jakby miała pracować na wierszu z DataFrame. Do dyspozycji masz zmienną row, możesz się odwoływać do niej, jak do wiersza danych, sprawdzać wartości, pobierać dane, budować if, while – cokolwiek. Funkcja ta może zwracać nowy obiekt Series:
def do_something(row):
return pd.Series([row['rola'],'x','101'])
Jak wywołać tą funkcję? Tak:
df.apply(do_something, axis=1)
Istotne jest wskazanie argumentem axis, że funkcja ma być stosowana do każdego wiesza, bo domyślnie apply wywołuje funkcję dla kolumn. Oto wynik:
0 1 2
0 -1 x 101
1 [11, 12] x 101
2 -1 x 101
3 [101, 102] x 101
Ten wynik można zapisać do innego DataFrame, czy właściwie zrobić z nim, co tam się chce 🙂
Funkcja apply – stosuj w przypadkach niestandardowych
2019-12-21
Odpowiadając krótko – wtedy kiedy chcesz mieć pewność że jakieś instrukcje wykonają się NA PEWNO i ZAWSZE. Nawet w bardzo dziwnych i nietypowych sytuacjach.
Zazwyczaj np. uważamy, że kod w funkcji po słowie return się nie wykona:
def DoSomething(a,b):
c=a+b
return c
c=3+3
return c
DoSomething(1,1)
i rzeczywiście tak jest:
Out[66]: 2
Ale kiedy popatrzysz na taki zwariowany kod:
def TestTryCatchFinally(a,b):
try:
print('starting TRY')
c = a / b
print('ending TRY')
return c
except:
print('starting EXCEPT')
c = b / a
print('ending EXCEPT')
return -1
finally:
print('starting FINALLY')
c = 9
return c
print('ending FINALLY')
i wywołasz go tak:
TestTryCatchFinally(1,2)
starting TRY
ending TRY
starting FINALLY
Out[68]: 9
To zobacz, że kod z bloku finally się wykonał, pomimo tego, że wykonywał się kod w try!
TestTryCatchFinally(1,0)
starting TRY
starting EXCEPT
ending EXCEPT
starting FINALLY
Out[69]: 9
Tutaj finally wykonał sie mimo błedu w try
TestTryCatchFinally(0,0)
starting TRY
starting EXCEPT
starting FINALLY
Out[70]: 9
A tutaj mimo błedu w try i except.
Finally jest „nie do zabicia”… dlatego stosujemy go np. do zamknięcia plików, usunięcia roboczych danych itp.
2019-12-17
Programista bez debuggera, to jak mechanik bez klucza… to trzeba mieć!
Ostatnio bardzo popularnym narzędziem do tworzenia skryptów w Pythonie jest Jupyter Notebook. Niestety domyślnie menu nie ma polecenia debug… o ile w pojedynczych komórkach po prostu wykonujesz mało skomplikowane polecenia, to ewentualne dodanie polecenia print powinno pomóc i rozwiązać problem. Co jednak zrobić jeżeli masz nieco bardziej złożoną pętlę i coś w niej nie działa?
W charakterze kłopotliwego kodu wystąpi u nas taka pętla:
i = 1
while i < 10:
print(i)
i += 3
if i % 2 == 0:
i -= 2
print('done i={}'.format(i))
W sumie - nic skomplikowanego, ale zmienna sterująca i jest raz zwiększana, raz zmiejszana... idzie się pogubić, zwłaszcza po drinku.
W celu debuggowania w trybie "znakowym" wykonaj takie czynności:
import pdb
- a następnie w miejscu, gdzie chcesz aby zatrzymał się program dodaj linijkę:
pdb.set_trace()
Czyli nasza kłopotliwa pętelka może teraz wyglądać tak:
import pdb
i = 1
while i < 10:
print(i)
i += 3
if i % 2 == 0:
pdb.set_trace()
i -= 2
print('done i={}'.format(i))
Po uruchomieniu w/w kodu, kiedy wykonanie dotrze do linijki
pdb.set_trace()
program zatrzyma się prezentując proste pole do wprowadzenia instrukcji:

jeśli wpiszesz "i" i naciśniesz enter, to debugger wyświetli w odpowiedzi aktualną wartość i. W okienku możesz też podawać bardziej skomplikowane wyrażenia, np sprawdzać ile wynosi i % 2 lub czy i %2 == True itp.
Kiedy chcesz aby zostało wykonane kolejne polecenie wystarczy nacisnąć n i enter. A kiedy masz już dosyć przetwarzania linijka po linijce naciśnij c i enter
Można też wpisać help, na co debugger odpowie listą dostępnych poleceń, lub wpisać help <nazwa_komendy> i wtedy zobaczysz opis polecenia:

Nasza sesja debuggowania mogłaby więc koniec końców wyglądać tak:

2019-11-30
Ciekawe, czy tylko ja jestem rozczarowany narzędziem do szukania plików w Windows….
Kiedy przeszukuję pliki tekstowe i chcę znaleźć pliki zawierające określony tekst, wystarczy w powershellu skorzystać z polecenia select-string:
Select-String -Path *.sql -Pattern „@ENV”
Krótkie, wygodne, a przede wszystkim SKUTECZNE – jak unixowy grep
2019-11-22
Jak się uczyć to najlepiej przez praktykę, dlatego właśnie w kursie MS Excel Tips and Tricks oprócz video mamy też mnóstwo zadań. Zadania zebrane w całość można pobrać i na własne potrzeby wykorzystywać ile się chce. Dostęp do materiałów video i potrzebnych plików ćwiczeniowych jest możliwy dopiero po zapisaniu się na kurs, ale już sam wgląd w zadania może pomóc się zorientować o czym opowiadamy na kursie.
Zbiór zadań do kursu „MS Excel Tips & Tricks”
MS Excel Tips and Tricks – zbiór zadań
A w tym podręczniku seria zadań na temat: codziennych czynności wykonywanych w Excel i Office, triki dotyczące bezpieczeństwa, formatowania danych, specyficznych typów danych, kontroli drukowania arkuszy, wskazówki dotyczące synchronizacji i porównywania arkuszy, korzystania z dodatków Excela, wstawiania i formatowania wykresów i wprowadzenie do makr.
Kurs
Tutaj dostępne są ćwiczenia. Jeżeli chcesz zobaczyć wykłady do tych lekcji oraz sprawdzić rozwiązania, zapraszam na kurs dostępny na platformie Udemy:

Kto może skorzystać z ćwiczeń?
- na własną rękę i na własny użytek każdy
- jeśli podręcznik ma być wykorzystany na kursie Excela, w ośrodkach szkoleniowych, w firmowych wewnętrznych akademiach, w szkołach, uczelniach, ma być w części lub w całości wykorzystany jako element innej publikacji, ma podlegać replikacji w jakiejkolwiek formie – prosimy o kontakt w celu ustalenia warunków licencji
Niech moc będzie z Tobą!
2019-11-21
Podobno można się nauczyć pływania z książki. Podobno nawet komuś się to udało… Moim zdaniem, kiedy chodzi o naukę rzeczy praktycznych, trzeba to robić praktycznie. Dlatego właśnie jeśli chcesz poznać Linuxa, a dokładniej rzecz biorąc podstawowe komendy BASH-a, to możesz skorzystać z darmowego zbioru zadań, który można za darmo pobrać klikając w poniższy link
Zbiór zadań do kursu „Linux – linia komend dla początkujących”
Darmowy zbiór zadań „Linux – linia komend dla początkujących”
A w tym podręczniku seria zadań na temat: operacji na plikach i katalogach, edytorze vim, uprawnień do plików i katalogów, kont użytkowników, grup, poleceń użytkowych (who, whoami, users, uname, last, lastb, alias, expr, bc, date, cal, head, tail, less, more, cmp, diff), skryptowania i komunikacji (echo, read, write, mesg, wall, zarządzania plikami i dyskami (du, ds, tar, zip, unzip, gzip), skryptowania (grep, find, cut, wc, sort, uniq, tr, tree), zarządzania procesami (ps, pstree, top, kill).
Kurs
Tutaj dostępne są ćwiczenia. Jeżeli chcesz zobaczyć wykłady do tych lekcji oraz sprawdzić rozwiązania, zapraszam na kurs dostępny na platformie Udemy:

Kto może skorzystać z ćwiczeń?
- na własną rękę i na własny użytek każdy
- jeśli podręcznik ma być wykorzystany na kursie Linuxa, w ośrodkach szkoleniowych, w firmowych wewnętrznych akademiach, w szkołach, uczelniach, ma być w części lub w całości wykorzystany jako element innej publikacji, ma podlegać replikacji w jakiejkolwiek formie – prosimy o kontakt w celu ustalenia warunków licencji
Niech moc będzie z Tobą!