Python 3.9 - stabilizacja i mało nowości

Python 3.9 – stabilizacja i mało nowości

Python 3.9 - stabilizacja i mało nowości

We wtorek oficjalnie wydano Python 3.9. Nowa wersja nie jest niczym przełomowym, mam wrażenie, że autorzy skupili się na bardziej na stabilizacji i uporządkowaniu kodu języka niż na wprowadzaniu nowych funkcjonalności. Poniżej krótka lista najważniejszych moim zdaniem zmian patrząc z perspektywy osoby zajmującej się automatyzacją infrastruktury IT.

Zmiany i nowości w Python 3.9

Poniżej moja subiektywna lista najciekawszych zmian w nowej wersji języka:

  • Wprowadzono dwie nowe operację na zmiennych typu słownikowego, które wykonamy za pomocą operatorów. są to operacja łączenia oraz aktualizacji
  • Dwie nowe metody wprowadzone do obiektów typu str pozwalające na usunięcie prefiksu albo sufiksu w ciągu znaków.
  • Nowy moduł zoneinfo, który pozwala na zarządzanie strefami czasowymi zgodnie ze standardem IANA. Oznaczenia stref czasowych według standardu IANA to na przykład “Europe/Warsaw”.
  • Ujednolicenie błędu związanego z importowaniem bibliotek zależnych. Zawsze zwracany będzie błąd typu ImportError.
  • Generator losowych bajtów (nie mylić z generatorem losowych liczb, który już istnieje od dawna)
Warto też zauważyć, że zmienia się także cykl wydawania nowych wersji. Dotychczas nowe wersje były wydawane co 18 miesięcy. Od wydania 3.9 cykl ten został zmniejszony do 12 miesięcy. Oznacza to, że nowości możemy spodziewać się częściej niż dotychczas.
Skaner podatności CodeQL na GitHub

Skaner podatności CodeQL na GitHub

Skaner podatności CodeQL na GitHub

Błędy w oprogramowaniu wynikają bardzo często z błędów programistów. Z naszego niedopatrzenia, z tego, że nie przewidzieliśmy pewnych sytuacji czy zachowania użytkowników. Mogliśmy też zaniechać poprawnego sprawdzenia poprawności danych wejściowych. Przyczyn jest wiele. Dlatego ważne jest, abyśmy skanowali kod źródłowy naszego programu niezależnie od tego czy jest on kompilowany czy interpretowany. Bardzo mnie cieszy, że pod koniec września właściciele publicznych repozytoriów w serwisie GitHub uzyskali możliwość wykorzystania w swoim repozytorium darmowego skanera podatności CodeQL. 

Czym jest CodeQL?

Skanowanie kodu to funkcja używana do analizowania kodu w repozytorium GitHub w celu znajdowania luk w zabezpieczeniach i błędów w kodowaniu. Takie błędy popełnia każdy programista i nie jest to nic dziwnego. Ważne jest by odpowiednio eliminować je ze swojego programu i doskonalić swój warsztat. Należy też unikać wykorzystywania bibliotek, w których zidentyfikowano podatności bezpieczeństwa. 

W GitHub Marketplace dostępnych jest kilka skanerów, w większości płatnych. Od niedawna właściciele publicznych projektów mogą skorzystać z darmowego skanera CodeQL. Jeśli skanowanie kodu wykryje potencjalną lukę lub błąd w kodzie, GitHub wyświetli alert w repozytorium. Po naprawieniu kodu, który wywołał alert, usługa GitHub zamyka alert. 

Darmowa usługa ma jednak swoje limity. W przypadku darmowego konta użytkownik ma do wykorzystania 2000 tak zwanych Action Minutes w każdym miesiącu. W zależności od tego jakie operacje wykonujemy stosowany jest odpowiedni mnożnik w stosunku do rzeczywistego czasu pracy modułu. Dla kodu wykonywanego na platformie Linux jest to 1, Windows 2, zaś MacOS to 10. Domyślny limit wydatków ustawiony jest na $0. Oznacza to, że gdy wyczerpie się nasza pula darmowych minut to zadania przestaną się wykonywać. Więcej informacji znajduje się w dokumentacji.

Jak włączyć CodeQL

Włączenie skanera CodeQL jest bardzo proste. W głównym oknie naszego projektu przechodzimy do zakładki Security, a następnie z menu wybieramy sekcję Overview, oraz odnajdujemy przycisk Set up code scanning.

Aktywacja skanera kodu CodeQL w projekcie na GitHub
Aktywacja skanera kodu CodeQL w projekcie na GitHub

Dostępnych skanerów jest kilka, pamiętajmy jednak, że w większości są to produkty komercyjne, za których używanie będziemy musieli zapłacić. Wybieramy zatem z dostępnych opcji CodeQL. 

Z dostępnych skanerów wybieramy CodeQL
Z dostępnych skanerów wybieramy CodeQL

Kreator doda w w naszym projekcie nowy plik codeql-analysis.yml. Znajduje się w nim konfiguracja skanera opisana w języku YAML. Otworzy się też nam edytor tego pliku co pozwoli nam już na tym etapie ustawić opcje skanowania. Zwróć w niej uwagę na sekcję on.

on:
  push:
    branches: [master]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [master]
  schedule:
    - cron: '0 1 * * 3'

W moim projekcie CMLNetKit jest tylko jeden branch o nazwie master. W przyszłości, gdy projekt się rozrośnie, będzie ich więcej. Wtedy w sekcji on będę musiał zdefiniować, dla których gałęzi projektu skaner ma być aktywny.

Skanowanie definiujemy dla operacji push, pull oraz jako cykliczne zadanie crona.

Większości użytkowników powinny wystarczyć domyślne ustawienia skanera. Zainteresowani opisem wszystkich dostępnych opcji mogą zapoznać się z dokumentacją.

Wgranie pliku konfiguracyjnego CodeQL do repozytorium projektu
Wgranie pliku konfiguracyjnego CodeQL do repozytorium projektu

Działanie skanera w praktyce

Jeżeli zastosujemy domyślne ustawienia skaner będzie się uruchamiał domyślnie po kazdej aktualizacji kodu w repozytorium, czyli także od razu po dodaniu pliku konfiguracyjnego. Jego działanie jest sygnalizowane pomarańczową kropką status. Gdy na nią klikniemy, zobaczymy informację, że odbywa się w tle zdefiniowane przez nas zadanie.

Wykonywania zadania typu workflow w tle
Wykonywania zadania typu workflow w tle

Możemy teraz kliknąć na szczegóły i prześledzić działanie samego skanera. Jest ono podzielone na kilka etapów. Szczegóły wykonanej pracy w każdym z nich zobaczymy rozwijając właściwe poddrzewo z dostępnej listy.

Szczegóły działania procesu skanowania kodu przez CodeQL
Szczegóły działania procesu skanowania kodu przez CodeQL

Jeżeli w kodzie nie zostały znalezione żadne znane podatności, to status wykonania zadań w projekcie zmieni się na zielony

Sygnalizacja poprawnego wykonania zadań w projekcie
Sygnalizacja poprawnego wykonania zadań w projekcie

Jeżeli chcemy zobaczyć wyniki przeprowadzonych skanów musimy przejść do zakładki Actions, w której znajdziemy raporty z wykonanych skanów.

Zakładamy projekt na GitHub i dodajemy go do PyCharm

Zakładamy projekt na GitHub i dodajemy go do pyCharm

Zakładamy projekt na GitHub i dodajemy go do PyCharm

Nadszedł ten moment, w którym, aby rozpocząć pracę nad moim projektem muszę go założyć. A dokładniej stworzyć dla niego repozytorium kodu źródłowego. CMLNetKit, tak nazwałem swój projekt, będzie publicznie dostępny na platformie GitHub, aby każda zainteresowana osoba mogła z niego korzystać. Jako środowisko do pracy nad projektem będę używał PyCharm, o którym pisałem już wcześniej. Przeprowadzę Cię teraz przez wszystkie kroki niezbędne do utworzenia nowego projektu i stworzenia dla niego środowiska w PyCharm.

Czytaj dalej
Dlaczego CML 2.0 mnie rozczarowało?

Dlaczego CML 2.0 mnie rozczarowało?

Dlaczego CML 2.0 mnie rozczarowało?

Nareszcie po kilku(nastu) tygodniach czekania mogłem uruchomić następcę słynnego VIRL-a, czyli Cisco Modeling Lab 2.0. Wcześniej produkt był znany pod roboczą nazwą VIRL2, ale stanęło finalnie na CML 2.0. Tak, wiem, w sieci jest już sporo recenzji, zarówno pisanych czy w formie video, Niestety nie jestem pracownikiem Cisco, by mieć dostęp do wewnętrznych wersji od dawna, użytkownikiem wersji Enterprise, która została wydana miesiąc wcześniej i ze względu na cenę pewnie też nie jest dostępna dla każdej firmy. Na szczęście już jest i wczoraj miałem okazję się nieco jej przyjrzeć. Spisałem swoje pierwsze wrażenia. Jest kilka rzeczy, które moim zdaniem zasługują na uwagę (nie jest to kompletna lista na pewno).

Czytaj dalej
Pierwsze kroki z Terraform

Pierwsze kroki z Terraform

Pierwsze kroki z Terraform

Od początku roku przygotowałem kilka labów typu PoC (Proof of Concept), webinariów oraz prezentacji, w ramach których używałem rozwiązań w chmurze Azure. Dema i testy mają jedną wspólną cechę – wykonuje się je z modyfikacjami wielokrotnie. W takich sytuacjach staram się korzystać ze zautomatyzowanych narzędzi do budowy infrastruktury. Do takich należy choćby Terraform. Zanim jednak pokażę Ci fragmenty konfiguracji budujących środowisko do wspomnianych projektów, zobacz, w jaki sposób Terraform zainstalować i uruchomić.

Czytaj dalej
Jak webhook łączy Jenkins i Microsoft Teams

Jak webhook łączy Jenkins i Microsoft Teams

Jak webhook łączy Jenkins i Microsoft Teams

Webhook to bardzo prosty, a jednocześnie niezwykle efektywny mechanizm pozwalający na dwóm aplikacjom na przekazywanie sobie nawzajem danych. Jeżeli potrzebujemy ze sobą zintegrować różne aplikacje wykorzystywane w infrastrukturze przeznaczonej do wykonywania zautomatyzowanych działań, na pewno bardzo szybko zetkniemy się z tym mechanizmem. Wiele rozszerzeń w popularnych programach zbudowanych jest właśnie w oparciu o ten mechanizm. Ja wykorzystałem go aby przekazywać status wykonania zadań w Jenkins do kanału w Microsoft Teams, dzięki czemu mogę na bieżąco reagować na problemy.

Czytaj dalej
Ansible 2.10 - nadchodzą zmiany

Ansible 2.10 – nadchodzą zmiany

Ansible 2.10 - nadchodzą zmiany

Każdy rozwinięty projekt osiąga taki moment , w którym niezbędne jest wprowadzenie w nim pewnych zmian. Mają one zapewnić jego dalszy rozwój i jeszcze większy sukces. Do takiego punktu niewątpliwie doszedł Ansible. Wraz z wydaniem Ansible 2.10, prawdopodobnie w okolicach połowy tego roku, ujrzymy ten sam produkt, ale w nieco odmienionej formule budowy i zarządzania kodem. Dla mnie, jako jednego z programistów, którego kod i całe moduły są częścią Ansible, jest to ciekawe doświadczenie.

Czytaj dalej
REST API w VMware Workstation 15

REST API w VMware Workstation Pro 15

REST API w VMware Workstation 15

VMware Workstation jest jedną z popularniejszych platform do wirtualizacji zasobów sprzętowych. Jest to naprawdę dobry produkt dla wszystkich inżynierów i entuzjastów, którzy nie mają lub nie potrzebują dedykowanego sprzętu klasy serwerowej do pracy. Jako maszynę wirtualną można uruchomić prawie dowolny system operacyjny, a nawet inny hypervisor – ESXi. Od wersji 15 oprócz możliwości zarządzania maszynami wirtualnymi za pomocą GUI dodana została opcja wykonywania niektórych czynności za pośrednictwem interfejsu programowalnego. Pokażę ci jak uruchomić i jakie daje możliwości interfejs REST API w VMware Workstation w wersji 15.0 i nowszych.

Czytaj dalej