Python: packing & unpacking

2017-09-06

Python ma ciekawe rozwiązanie dotyczące przepisywania wartości. Jest to szczególnie prawdziwe w przypadku, gdy za jednym zamachem chcesz przypisać kilka wartości. Instrukcja

my_tuple = (1,2,3,4)

to tzw. tuple packing – wartości 1,2,3,4 są konwertowane do tuple i zapisywane w zmiennej.

Instrukcja

(a,b,c,d) = my_tuple
print(a,b,c,d)

to tzw. tuple unpacking. Jest tworzony roboczy tuple (a,b,c,d) i do niego do każdej kolejnej wartości z tego tuple są przypisywane kolejne wartości z my_tuple, więc w efekcie a ma wartość 1, b ma wartość 2, c ma wartość 3, a d ma wartość 4

Dla ułatwienia (bo Pythonowcy lubią upraszczać sprawy) podczas wykonywania można pisać nawiasy, ale nie trzeba. Tutaj do a1, a2, a3, a4 najpierw przypisują wartości w sposób tradycyjny, a potem już wykonuję równoważne polecenia: Czytaj dalej »

By Rafał Kraik in Python

Powershell: sprawdzanie, czy port jest otwarty

2017-08-16

Im bardziej skomplikowana i zabezpieczona jest infrastruktura sieciowa, tym trudniej jest diagnozować występujące problemy. Weźmy na przykład kwestię serwera, do którego nie można się połączyć przez RDP lub do serwera SQL. Jeśli serwer występuje w tej samej sieci, w tym samym segmencie, to jednym z podstawoych testów, jakie mogły by być wykonane jest ping sprawdzający czy serwer w ogóle odpowiada i jest włączony. Niestety jeśli między maszynami znajdują sie zapory sieciowe (firewall), to ping może nie działać (wyłączony ICMP), ale połączenie RDP (port TCP/3389. UDP/3389) lub SQL (tcp/1433) mogą być dostępne.

Do niedawna w takich przypadkach korzystałem z polecenia portqry.exe, np

portqry -n <server_name> -t <protocol> -e <port_number>

portqry -n CANTOR10 -t tcp -e 3389

Nie wszyscy są świadomi, że właściwie na nowszych systemach wcale nie ma potrzeby korzystania z zewnętrznego programu. Można korzystać z cmdlet Test-NetConnection:

Test-NetConnection -computer CANTOR10 -protocol tcp -port 3389

Można zaryzykować stwierdzenie, że Test-NetConnection to taki „ping na port”. Niektórzy w celu sprawdzenia otwarcia portu korzystają również z polecenia telnet otwieranego na określony port. Wydaje się jednak, że Test-NetConnection robi to co należy i jak należy w stosunkowo prosty sposób.

By Rafał Kraik in Power Shell

SQL: Łamanie haseł zapisanych w credentials lub w linked servers

2017-08-08

Jest kilka takich miejsc w SQL Server, gdzie administratorzy czasami umieszczają hasła użytkowników:

  • w definicji linked server, gdzie połączenie ma być wykonywane dla każdego użytkownika lokalnej maszyny z wykorzystaniem zdalnego loginu sql-owego
  • w definicji credentials, które są dalej wykorzystywane do uruchamiania jobów agenta na innym koncie niż konto SQL Agenta

Na pierwszy rzut oka może się wydawać, że te hasła są bezpieczne, bo przecież podczas wprowadzania zostaną wyświetlone gwiazdeczki, a na dodatek w tabelach systemowych hasła też nie można podejrzeć. No ale…. Czytaj dalej »

By Rafał Kraik in SQL

Powershell: wyświetlenie informacji o procesie i użytkowniku jednocześnie

2017-08-02

Jak zwykle w powershell zadanie można zrealizować na dziesiątki sposobów, a ten poniżej to tylko jedna z propozycji

Get-WmiObject win32_process | 
  Foreach { `
       $ret=@{}; `
       $ret['ProcessName']=$_.Name; `
       $ret['Owner']=$_.GetOwner().User; `
       $obj =New-Object -TypeName PSObject -Property $ret; `
       $obj }

Co takiego się tutaj dzieje?

  • Ponieważ polecenie Get-Process samo w sobie nie posiada możliwości wyświetlenia właściciela procesu korzystamy z Get-WmiObject dla klasy Win32_process, które…
  • samo w sobie również nie ma informacji o użytkowniku, ale…
  • posiadając obiekt klasy win32_process, można wywoływać jego metody.
  • Dlatego dla obiektu $_ (konkretny proces) wywołujemy metodę GetOwner() i ze zwróconego obiektu pobieramy tylko nazwę użytkownika – reszta nas obecnie nie interesuje.
  • Znalezione informacje o nazwie procesu i właścicielu umieszczamy w tablicy hashowanej $ret. Do deklarowania tablicy hash korzystamy z $ret=@{}, a następnie przypisujemy omówione wcześniej: nazwę procesu i właściciela.
  • Mając hash table łatwo jest stworzyć obiekt. Po prostu wywołujemy New-Object wskazując że ma to być generyczny (pusty) obiekt a jego właściwości mają być pobrane z hash table, czyli będą to nazwa procesu i nazwa użytkownika.
  • Ostatnia linijka zwraca ten obiekt. Voila!

By Rafał Kraik in Power Shell

Praca: Szukam nowych kolegów/koleżanek do zespołu SQL w Katowicach…

2017-07-13

Szukam nowych kolegów/koleżanek do zespołu SQL w Katowicach…

Jeśli szukasz nowych wyzwań, coś już wiesz o SQL i chcesz wiedzieć jeszcze więcej to daj znać. Ponieważ ilość serwerów którymi się opiekuję rośnie szybciej niż idzie automatyzacja, przydałaby się pomoc. Napisz maila z informacją o swoich doświadczeniach SQL-owych i nie tylko. Nie będę się tu rozpisywał o młodym dynamicznym zespole ani o prywatnej opiece medycznej ani nawet o wymaganych kwalifikacjach. Stanowisk do obsadzenia jest kilka. Praca w Katowicach, ale odezwij sie nawet jeśli jesteś z województw ościennych. Z nami można  się dużo nauczyć! Czekam 🙂 Pisz na adres kontakt@mobilo24.eu

By Rafał Kraik in Aktualności

Kurs SQL Server Reporting Services – Tworzenie raportów

2017-07-13

Już jest!

  • 103 lekcje,
  • ponad 4 godziny video
  • do każdego filmu quiz i ćwiczenie praktyczne
  • dostęp bez ograniczeń czasowych (lifetime access)
  • możliwość uuruchamiania kursu na komputerze lub smartfonie 

Żeby podzielić się chwilą „sukcesu” przez kilka dni kurs jest dostępny za darmo! Ja się cieszę cziesz się i Ty!

Szkolenie SQL Server Reporting Services – Tworzenie raportów powstał z dwóch głównych powodów:

  • wiem jak fantastyczne raporty można tworzyć za jego pomocą i jakie robią wrażenie na odbiorcach
  • pamiętam, jak samodzielnie trudno mi było zrozumieć kilka w gruncie rzeczy prostych zasad pracy z SSRS

Kurs w całości jest poświęcony tworzeniu raporów, czyli pracy wykonywanej przez programistów, zaawansowanych użytkowników, managerów, analityków. Zaczynamy od „wyklikania” pierwszego prostego  raportu za pomocą kreatora. Potem robimy to samo ale zaczynamy od przerażającej pustej kartki. Dowiesz się więc wielu szczegółów na temat budowy raportu  i poznasz od środka właściwości najważniejszych kontrolek.

Użytkownicy lubią nie tylko w 100% gotowe raporty. które coś tam prezentują. Raport może być dynamiczny i pozwalać okeślać użytkownikowi co będzie wyświetlone. Dlatego jedna sekcja jest poświęcona parametrom: tym całkiem prostym, ale także pobieranym z bazy danych, hierarchicznym, i multivalue parameters.

Do każdego materiału video dostępny jest quiz. 3 pytania, na które nie powinno być problemu z odpowiedzią, bo co do zasady pytam tylko o to co było w czasie filmu. Quiz pozwala ci sprawdzić na ile uważałeś. Do każdej lekcji dostępne też są zadania do samodzielnego rozwiązania. Te ćwiczenia pozwalają ci samodzielnie spróbować sił. Nie czarujmy się. Jak czegoś sam nie przećwiczysz, to nie będziesz tego pamiętać.

A czego na kursie nie ma lub jest bardzo mało? Nie ma administracji Reporting Services, ale na to przyjdzie kolej w innym kursie, jeśli tylko ten temat się Wam spodoba!

Nie czekaj i zapisz się już dzisiaj klikając link. W zamian proszę o wystawienie oceny, kiedy już zostaniesz o to poproszony/a.

Kurs SQL Server Reporting Services

(Chcesz być powiadamiany o nowych wpisach na stronie? Zasubskrybuj bloga  formularzem w menu >>>)

Przy okazji zapoznaj się też z moimi innymi kursami o SQL i Powershell. Korzystając z tych odnośników cena robi się bardzo atrakcyjna:

Kurs SQL Server #2 - Zapytania SQL
Kurs SQL Server #3 - Programowanie, typy zaawansowane, XML Kurs Reporting Services - Tworzenie raportów
Kurs PowerShell dla administratora Windows Course Sybase - Installation and Configuration

 

 

By Rafał Kraik in Aktualności

Windows: Kto się podłączył do mojego serwera!?

2017-07-12

W nowszych serwerach, kiedy łączysz się przez RDP i jesteś administratorem, a wszystkie sesje są zajęte, to zobaczysz listę zalogowanych użytkowników. Możesz wybrać kolegę, który najbardziej ci podpadł i wylogowć go. Niestety w starszych windowsach zobaczysz tylko komunikat o tym, że nie ma wolnych sesji. Co zrobić?

Zakładając, że tym samym kontem możesz się zalogować na inny serwer uruchom z niego polecenie:

QWINSTA /server:YourServerName

w wyniku otrzymasz listę sesji. Każda z nich ma swoją nazwę. Zobaczysz też nazwę użytkownika. Mając nazwę sesji uruchom:

LOGOFF rdp-tcp#25 /server:YourServerName

nazwa rdp-tcp#25 to nazwa sesji z poprzedniego polecenia