ODBIERZ TWÓJ BONUS :: »

Recenzje

Prompt engineering. Projektowanie aplikacji z wykorzystaniem LLM

„Prompt Engineering” to książka, która od początku jasno komunikuje, do kogo jest skierowana. I dobrze - bo to nie jest pozycja dla przypadkowego użytkownika czatu, który chce „lepiej gadać z AI”. To książka przede wszystkim dla programistów i inżynierów promptów, którzy faktycznie budują na modelach i potrzebują zrozumieć ich działanie, ograniczenia i dobre praktyki tak, żeby tworzyć powtarzalnie lepsze zapytania. Zwykły użytkownik szybko poczuje się przytłoczony - i nic dziwnego, bo część materiału wymaga już sporego obycia z LLM-ami, również na poziomie API. Zacznijmy od rzeczy mniej przyjemnych: jest tu trochę błędów językowych, momentami wręcz rozpraszających. Do tego dochodzą fragmenty przekombinowane i niepotrzebnie rozwleczone. Zdarzają się też zaskakujące sformułowania, jak „zdrowy rozsądek modelu LLM”, które nie do końca pasują, ale rozumiem intencję autora. Ale kiedy już przebijemy się przez te słabsze momenty, zobaczymy, że autorzy mają przemyślany i transparentny styl pracy. Omawiają różne techniki, pokazują zarówno ich zalety, jak i wady, co pozwala czytelnikowi zrozumieć, skąd dokładnie biorą się konkretne rekomendacje. To buduje realną świadomość i kompetencję — nie tylko „stosuj tę regułę”, ale dlaczego ją stosujesz. Dużym plusem są wizualne przykłady - wiele omawianych koncepcji ma swoje graficzne przedstawienie. I to działa: nagle rzeczy, które brzmią abstrakcyjnie, stają się całkiem intuicyjne. Do tego dochodzą ćwiczenia, które zmuszają do myślenia i pomagają uporządkować wiedzę. Podoba mi się też podejście autorów: zanim zaczniemy budować prompty, najpierw musimy zrozumieć jak działa LLM. Dlaczego zachowuje się tak, a nie inaczej. Skąd wynikają błędne odpowiedzi. Jak łączą się tokenizery z precyzją promptu. Brzmi akademicko, ale w praktyce bardzo ułatwia późniejszą pracę nad promptami. Na początku może to przytłaczać. Bo zaczynamy od długiego wstępu, ale znam ten ból, bo to samo zdarza mi się podczas prowadzonych przeze mnie szkoleń. Kilka elementów jest naprawdę świeżych - na przykład dynamiczne budowanie promptów systemowych. Szczerze mówiąc, nie spotkałem się jeszcze z takim ujęciem w innych publikacjach. Wielki plus za referencje do badań, które pozwalają sprawdzić źródła i pogłębić temat. Dzięki temu mamy łatwe odniesienia do pogłębienia wiedzy w danym temacie. Niestety — książka jest już miejscami zdezaktualizowana. Widać mocne skupienie na GPT-3, więc część szczegółów jest dziś przestarzała. Znajdziemy podpowiedzi, które obecnie nie mają sensu (np. dotyczące „echo”). Jednak z drugiej strony to też pokazuje, które z opisanych koncepcji okazały się ponadczasowe. Na przykład opis tool callingu nie uwzględnia MCP, ale opisuje dość dokładnie sposób działania protokołu MCP. Tak więc mimo, że sama książka odnosi się do starszych technologii, nie zabiera to jej praktyczności. Na koniec ciekawostka: wiele wprowadzanych pojęć brzmi na początku obco, ale szybko okazuje się, że to głównie efekt polskiego tłumaczenia. Odpowiedniki angielskie są bardziej naturalne. Podsumowanie: To książka nierówna, momentami rozwlekła i zbyt szeroko opisana, ale jednocześnie pełna konkretnych, praktycznych i dobrze wyjaśnionych wskazówek. Jeśli tworzysz prompty zawodowo, zbudujesz na niej solidne fundamenty. Jeśli korzystasz z LLM-ów okazjonalnie - to nie jest książka dla Ciebie. Jednak dla inżyniera: warto.

Blog, LinkedIn, YouTube, Newsletter Sroka Adrian

Testowanie oprogramowania z wykorzystaniem generatywnej AI

Testowanie oprogramowania jest krytycznym elementem procesu wytwarzania, gwarantującym jakość, niezawodność i bezpieczeństwo dostarczanych systemów i produktów. W ostatnich latach generatywna sztuczna inteligencja (ang. generative artificial intelligence, generative AI, GenAI) i duże modele językowe (ang. large language models, LLMs) otworzyły nowe możliwości dla testowania: automatyzację pewnych zadań, generowanie danych testowych, znaczące wsparcie procesu projektowania skryptów automatycznych, a nawet wspomaganie testowania eksploracyjnego, obiecując znaczne przyspieszenie cyklu wydawania. Z jednej strony eksperci prowadzą krytyczne rozważania odnośnie wiarygodności, kontroli i etyki wykorzystania AI w tak wrażliwym obszarze, jak zapewnienie jakości. Z drugiej strony, strategiczne możliwości AI w optymalizacji kosztów i czasu testowania są zbyt duże, by je ignorować. I choć wiele firm inwestuje coraz więcej zasobów w rozwój kompetencji pracowników w zakresie AI i jej integrację z procesem tworzenia oprogramowania, teoria nie zawsze łatwo przekłada się na praktykę, tym bardziej, że wdrożenie tego typu rozwiązań wymaga przezwyciężenia wielu wyzwań związanych z kontekstem domenowym, halucynacjami modeli i efektywną inżynierią promptów. Książka “Testowanie oprogramowania z wykorzystaniem generatywnej AI” Marka Winteringhama stanowi ciekawy i praktyczny pomost między innowacyjnym potencjałem AI a rzeczywistymi przykładami i gotowymi implementacjami w procesie testowania. Książka podzielona jest na trzy logiczne części, które obejmują trzy kluczowe atrybuty stanowiące niezbędny fundament dla skutecznej i odpowiedzialnej pracy z modelami językowymi: nastawienie (mindset), technikę i kontekst. Pierwsza część - Nastawienie, to fundament, który skupia się na zrozumieniu i właściwemu podejściu do tego, jak wykorzystujemy LLMs, co może znacząco zwiększyć lub zmniejszyć ich wartość. To celowy i świadomy kierunek, który wymaga jasnego zrozumienia celu i wartości testowania, realnej oceny możliwości LLMs oraz nauczenia się, jak budować z nimi relację, by wykorzystywać w ukierunkowany i precyzyjny sposób. O ile wiedza o tym gdzie i kiedy używać LLMs jest kluczowa, o tyle umiejętność skutecznej pracy z nimi maksymalizuje ich wartość. Druga część - Technika, koncentruje się na inżynierii, w tym na tworzeniu jasnych i precyzyjnych instrukcji, na zaawansowanych metodach integracji z platformami API i agentami AI, czy na wdrażaniu AI do automatyzacji bardziej złożonych zadań. W części tej Autor omawia, jak wykorzystując pojedyncze prompty i inne narzędzia LLM w połączeniu z technikami TDD i narzędziami, jak Copilot, mogą one wspierać programistów w szybszym tworzeniu kodu i testów jednostkowych, ale również w ulepszaniu dokumentacji technicznej i komunikacji z zespołem. Kolejne podrozdziały skupiają się na planowaniu efektywnych i ukierunkowanych testów opartych na ryzyku. Kluczowe jest to, aby nie ograniczać się tylko do generowania przypadków testowych przy użyciu AI, ale skupić się również na tym, jak bezpiecznie i precyzyjnie wykorzystać model do wsparcia w identyfikacji zagrożeń, analizy ryzyka, i generowaniu danych testowych w dowolnym popularnym formacie (np. JSON, XML, SQL), pamiętając, że zbyt ogólnikowe i niejasne formułowanie promptów może bardziej zaszkodzić niż wesprzeć nasze planowanie i przygotowywanie testów. Również w przypadku automatyzacji UI, Autor prezentuje jak możemy przyspieszyć zautomatyzowanie testów przy użyciu AI, ale znowu, podkreśla, że najpierw musimy posiadać głęboką wiedzę na temat projektu i struktury automatyzowanych testów, a dopiero potem myśleć kiedy i gdzie używać narzędzi AI, by odnieść faktyczne korzyści, a nie tylko szybciej generować trudne w utrzymaniu testy wymagające wielu poprawek. Bardzo ciekawy jest również fragment książki opisujący wsparcie AI w testach eksploracyjnych i kombinację różnych działań, które mogą wystąpić podczas sesji testowej, i jak łączenie promptów z heurystykami testowymi może zaoferować nową perspektywę i sugerować pomysły na nowe testy. Ostatnia część książki - Kontekst, wychodzi poza standardowe użycie dostępnych modeli, wprowadzając zaawansowane techniki i ich dostosowywanie do specyfiki danej dziedziny. Zasada „śmieci na wejściu, śmieci na wyjściu” jest w pracy z modelami bezwzględna. Ich odpowiedzi będą powierzchowne, jeśli brakuje im specyficznych informacji. W tym rozdziale Autor skupia się na sposobach pozyskiwania i dostarczania wiedzy dziedzinowej i kontekstu do promptów i modeli, aby generować trafne i użyteczne rezultaty. Czytelnik pozna kilka technik, takich jak generowanie wspomagane wyszukiwaniem (ang. retrieval-augmented generation, RAG) i dostrajanie (ang. fine-tuning), zyskując wiedzę na temat narzędzi do dostosowywania LLMów do konkretnych potrzeb biznesowych. Książka „Testowanie oprogramowania z wykorzystaniem generatywnej AI” to doskonałe źródło wiedzy, które łączy w sobie szeroką perspektywę teoretyczną z konkretnymi, gotowymi do wdrożenia technikami. Przemyślana struktura i skupienie na inżynierii promptów oraz odpowiedzialnym użyciu AI sprawiają, że jest to pozycja wartościowa zarówno dla testerów manualnych, którzy chcą wejść w świat automatyzacji i GenAI, jak i dla programistów oraz architektów testów, szukających innowacyjnych metod na podniesienie jakości swojego oprogramowania. Szczególnie cenię formę książki za to, że z jednej strony prezentuje praktyczne i innowacyjne metody testowania wspomaganego przez sztuczną inteligencję, z drugiej, w niemal każdym aspekcie, konsekwentnie podkreśla rolę Human-in-the-Loop (HITL) w AI, która łączy wiedzę ekspercką człowieka z uczeniem maszynowym. To tester, posiadający wiedzę domenową i doświadczenie, kieruje procesem, decydując o tym, kiedy, gdzie i jakie narzędzie AI ma zostać użyte, co z pewnością stanowi o przewadze tej pozycji nad innymi publikacjami, które promują bezrefleksyjne użycie AI. W dobie współpracy testerów ze sztuczną inteligencją, książka oferuje praktyczny plan działania dla efektywniejszego testowania przy jednoczesnym utrzymaniu najwyższej jakości. Zdecydowanie polecam ją każdemu, kto dąży do bycia innowacyjnym liderem i chce przewodzić transformacji w dziedzinie zapewnienia jakości oprogramowania.

Signum-temporis.pl Agnieszka Paś

Kali Linux. Testy bezpieczeństwa, testy penetracyjne i etyczne hakowanie. Wydanie II

„Kali Linux. Testy bezpieczeństwa, testy penetracyjne i etyczne hakowanie. Wydanie II” to doskonałe wprowadzenie do świata pentestów i cyberbezpieczeństwa - zarówno dla początkujących, jak i dla osób, które chcą usystematyzować swoją wiedzę. Autor w przejrzysty, rzeczowy sposób prowadzi czytelnika przez kolejne etapy pracy pentestera, pokazując, jak potężnym narzędziem jest Kali Linux i jak świadomie można go wykorzystać w profesjonalnych testach bezpieczeństwa. Książka imponuje aktualnością: to odświeżone, rozszerzone wydanie, które nie tylko przedstawia narzędzia dostępne w Kali Linux, ale przede wszystkim uczy, jak realnie planować, przeprowadzać i dokumentować testy penetracyjne. Znajdziemy tu zarówno podstawy, takie jak instalacja systemu i struktura testów, jak i bardziej zaawansowane zagadnienia - eksploity, techniki łamania haseł, testy aplikacji WWW, analizy kodu czy praktyczne podejście do inżynierii wstecznej. Dużym atutem jest również rozdział poświęcony etyce i legalności działań, co czyni książkę kompletnym i odpowiedzialnym przewodnikiem po świecie cyberbezpieczeństwa. Autor nie poprzestaje na prezentacji narzędzi - podpowiada, jak myśli pentester, jak dobierać techniki ataku, interpretować wyniki oraz jak przygotować profesjonalny raport końcowy. Dzięki temu książka staje się nie tylko katalogiem funkcji Kali Linux, ale przede wszystkim praktycznym kursem metodyki bezpieczeństwa. Całość napisana jest zwięźle, klarownie i z wyczuwalnym doświadczeniem praktyka. To publikacja, która naprawdę „robi robotę”: pozwala zrozumieć procesy, narzędzia i filozofię pracy w security, nie przytłaczając przy tym zbyt technicznym językiem. Świetna pozycja dla każdego, kto chce wejść w świat pentestów, poszerzyć swoje kompetencje lub poznać bezpieczne i etyczne podstawy pracy z Kali Linux. Zdecydowanie warto - polecam jako człowiek zajmujący się również tematami Cyber w praktyce!

dlaTesterów.PL Krząpa Rafał

Kadr (nie)doskonały. Poznaj sekrety mistrza kompozycji i fotografuj, przełamując schematy

Czy zastanawialiście się kiedyś, jak to jest, że niektórzy potrafią zrobić niesamowite zdjęcie nawet w pozornie chaotycznym otoczeniu? Właśnie na to pytanie (i na wiele innych), próbuje odpowiedzieć Scott Kelby w swojej książce "Kadr (nie)doskonały". To nie jest typowy podręcznik, a raczej wciągająca podróż u boku jednego z najbardziej znanych fotografów. Ta książka to ponad 200 stron inspiracji, przy czym mniej więcej połowa to fascynujący tekst, a druga połowa to zdjęcie, które ten tekst omawia. Autor uczy nas przede wszystkim podejścia do fotografowania, analizowania swoich błędów i ciągłego wprowadzania ulepszeń. Dzieli się z nami opowieściami ze swojego życia i cytatami, które skłoniły go do głębszych refleksji nad rzemiosłem, udowadniając, że nie zawsze wszystko wychodzi idealnie od razu. Autor skupia się na praktycznych aspektach, pokazując, jak w tym "(nie)doskonałym" kadrze stworzyć coś pięknego i przyciągającego wzrok. Znajdzicie tu cenne wskazówki dotyczące perspektyw, w tym robienia zdjęć z dołu, z góry, w każdym możliwym miejscu, a nawet w jakich sytuacjach nasz telefon może z powodzeniem zastąpić profesjonalny aparat. To książka o fotograficznej postawie, która ma nas inspirować do wyjścia poza strefę komfortu i szukania własnego, unikalnego spojrzenia na świat. Jeśli szukacie inspiracji, autentycznych historii i chcecie nauczyć się myśleć jak fotograf, analizując to, co robicie - "Kadr (nie)doskonały" jest dla Was! To lektura, która odświeża i motywuje do ciągłego ćwiczenia oka i techniki📸.

atejka7 Nosal Natalia

Automatyka przemysłowa dla początkujących. Poznaj sterowniki PLC oraz panele HMI i naucz się je programować

Na początek - dwa łyki automatyki Zanim omówię książkę o jakże intrygującym tytule „Automatyka przemysłowa dla początkujących”, pozwolę sobie umieścić parę zdań o sterownikach programowalnych, czyli PLC, czyli Programmable Logic Controllers, a właściwie o ich programowaniu. Czy sterowniki PLC programuje się tak samo jak „klasyczne” aplikacje? I tak i nie. Są podobieństwa i dość zasadnicze różnice. Po stronie podobieństw jest możliwość programowania (jedna z kilku) w języku tekstowym podobnym nieco do Pascala. Różnic jest dużo więcej. Podstawowa różnica wywodzi się z zaszłości historycznych. Programowanie PLC (będę używał tego terminu w znaczeniu „sterownik programowalny”) jest skokiem ewolucyjnym jaki nastąpił w układach sterowania, kiedy komputery nie były tak tanie jak teraz, żeby sterować pojedynczymi urządzeniami. Układem sterującym była wtedy płyta z elektroniką zawierającą elementy realizujące logikę działania oraz komunikujące się z otoczeniem (odczytywanie danych wejściowych i sterowanie elementami wykonawczymi). Nie były to komputery tylko układy elektroniczne, które wykonywały pewne działania w sposób algorytmiczny. Nie były maszynami o architekturze von Neumanna (patrz: EM Poleca (#34) Benjamín Labatut - „Maniak”), nie przetwarzały strumienia danych w procesorze, ale zmieniały swój stan w zależności od stanu otoczenia. Współczesne sterowniki naśladują tę filozofię działania. W skrócie można powiedzieć, że sterownik wykonuje nieskończoną pętlę programową analizując w każdym obiegu dane wejściowe za pomocą elementów logiki stanowiących właściwy program sterujący i oddziałując na otoczenie za pomocą generowanych sygnałów wyjściowych. Wykonywanie programu PLC polega na każdorazowej (w każdym obiegu tej pętli) analizie zastanego stanu układu i tworzeniu stanu następnego, będącego stanem początkowym dla następnego obiegu. To trochę inne programowanie niż to, które znamy, wymagające wykształcenia pewnych nawyków myślenia. Dodatkowym utrudnieniem jest brak (dla tańszych sterowników, np. S7-1200) możliwości krokowego wykonywania programu i wstrzymywania go na żądanie (breakpoint), co utrudnia i komplikuje debugowanie, zmuszając do stosowania innych, bardziej uciążliwych technik. Ponieważ programowanie informatyczne sterowników PLC wyewoluowało z programowalnych sterowników opartych o fizyczne elementy elektroniczne, lutowane na płytce i łączone ścieżkami, istnieją graficzne „języki” programowania naśladujące takie płytki elektroniczne. Jednym z nich jest język LAD (skrót od ladder-drabina), język tzw. drabinkowy, gdzie rolę programu pełni „drabina” ze „szczebelkami”, na których są porozmieszczane elementy logiki programu, a przepływ sterowania przypomina przepływ prądu między „masą” a „cewkami” i innym elementami klasycznej elektroniki. Wbrew pozorom język LAD jest nadal bardzo popularny, zwłaszcza do programowania sterowania o niezbyt skomplikowanej logice. Jest też łatwiejszy do opanowania dla osób nieprogramujących w klasycznych językach programowania. Trzeba przyznać, że jest bardziej pomocny w debugowaniu programu od tekstowego języka SCL, gdyż na bieżąco pokazuje przepływ „prądu” przez układ. Wracając do książki, co w niej jest? Omawiana książka jest podstawowym kursem programowania sterowników Siemens SIMATIC S7-1200 (generacje G1 i G2) i SIMATIC S7-1500 za pomocą oprogramowania Siemens TIA Portal. Plusem jest uwzględnienie najnowszej wersji pakietu, czyli TIA Portal V20. Autor przystępnie omawia podstawowe aspekty konfiguracji i programowania za pomocą TIA Portal. To ważne, że wykład jest przystępny, bo często zdarza się, że programista przestawiający się z programowania klasycznych aplikacji na programowanie automatyki zdobywa wiedzę w sposób chaotyczny i niepełny, korzystając ze stron internetowych i filmików na YouTube, które są bardzo różnej jakości (oględnie mówiąc). Wiem co piszę, bo sam przez to przeszedłem. Wiedza o programowaniu sterowników Siemensa nie ma takiej bazy wiedzy (Q&A) jak inne języki programowania, na przykład Stack Overflow dla Javy i Pythona. Baza wiedzy prowadzona przez Siemensa jest tak dramatycznie niskiej jakości, że nie przypominam sobie, abym kiedykolwiek był usatysfakcjonowany znalezioną w niej informacją. Jedynym źródłem w miarę (bardzo w miarę) wiarygodnym jest odpytywanie Chatu GPT albo Groka, ale tu należy bardzo uważać na częste konfabulacje. Liderem rynku automatyki przemysłowej w Polsce jest Siemens i jego linia sterowników SIMATIC, „ogarniająca” około ¾ polskiego rynku. Można więc śmiało powiedzieć, że sterowniki PLC Siemensa są pierwszym skojarzeniem związanym z tą tematyką, a TIA Portal pierwszym i najważniejszym środowiskiem programistycznym (aczkolwiek mocno niedoskonałym i wymagającym). Dlatego nie uznaję za błąd, że marka Siemens nie została wymieniona w tytule książki. Zapoznanie się z programowaniem sterowników Siemens można uznać za podstawowy kurs programowania sterowników PLC w ogóle. Autor książki - inżynier praktyk Marcin Podsiadły, dobrze wie, czego potrzeba początkującemu programiście. Nie wiedzy encyklopedycznej, bo ta znajduje się w tzw. helpie. Potrzeba przystepnie wygłoszonego wykładu obejmującego zarówno podstawy jak i wskazówki praktyczne, dobre rady (tips & tricks), schematy postępowania i ostrzeżenia przed polami minowymi. To wszystko jest i chwała Ci Autorze za to. Mam tylko jedną wątpliwość: czy słusznym jest wybór języka drabinkowego (LAD) do prezentowania przykładów programowania. Sam wybrałbym tekstowy SCL, chociażby z uwagi na klasycznych programistów, chcących się przebranżowić na programowanie sterowników. LAD jest wygodny dla nieprogramistów, przypomina obwód elektryczny (bo tym w istocie był x lat temu), ale zaczyna być narzędziem nieporęcznym przy pisaniu dużych, skomplikowanych projektów o wielkiej liczbie zależności. Poniżej, dla porządku, wymienię tematy poruszone w książce abyś, Czytelniku, wiedział z góry czego się spodziewać: - na czym polega programowanie PLC, - zapoznanie się z TIA Portal, - przegląd języków programowania PLC, - programowanie - podstawy, - dobre praktyki, - programowanie timerów i liczników, - obsługa sterowników PLC, różne aspekty, - programowanie paneli HMI (Human Machine Interface) Siemensa. Marcin Podsiadły „Automatyka przemysłowa dla początkujących. Poznaj sterowniki PLC oraz panele HMI i naucz się je programować”. Wydawnictwo Helion 2025 Notka o autorze: Marcin Podsiadły, inżynier automatyki i robotyki, ekspert w dziedzinie programowania sterowników PLC. Wykładowca, doświadczony szkoleniowiec, projektant i programista automatyki. Zwycięzca pierwszej edycji Mistrzostw Polski Programistów PLC (2018).

portal popularnonaukowy Seweryn Wiesław
Zamknij Pobierz aplikację mobilną Helion