Programista 11/2018 (78)
Programista 11/2018 (78)
Wprowadzenie do budowania inteligentnych chatbotów
Sztuczna inteligencja, chmury obliczeniowe oraz rozpoznawanie ludzkiej mowy to jedne z najgorętszych tematów ostatnich lat. Najwięksi gracze z sektora IT nieustannie próbują nam dostarczyć coraz to nowszych osobistych asystentów (Alexa, Siri czy też Cortana). Czy rozwiązania tego typu rzeczywiście są zarezerwowane tylko dla gigantów? Czy może jednak mniejsze zespoły również mogą zaoferować swoim klientom własnego wirtualnego doradcę? Stworzenie własnego chatbota może być łatwiejsze niż się wydaje.
Asynchroniczne programowanie w ostatnich latach jest coraz bardziej popularne. Zmiany w języku, które były sukcesywnie wprowadzane, spowodowały, że pisanie kodu asynchronicznego jest teraz prostsze niż kiedykolwiek wcześniej. W tym artykule postaram się wyjaśnić, czym jest asynchroniczność, kiedy warto z niej korzystać oraz jak jej użyć w języku Python.
10 listopada 2018 roku w San Diego (California, USA) zakończyło się największe posiedzenie komisji standaryzacyjnej C++ w jej 29-letniej historii. Uczestniczyło w nim 180 osób z 12 krajów. Poza rekordową frekwencją znaczącym osiągnięciem było zakończone sukcesem głosowanie w sprawie dodania do standardu biblioteki zakresów – ranges (a konkretniej: Ranges TS [0]).
Aktualne trendy wytwarzania aplikacji wskazują architekturę opartą o REST API jako lek na całe zło branży IT. Coraz częściej potrzebą biznesową jest posiadanie oprócz strony WWW również aplikacji mobilnej, a przy tym firmy szukają oszczędności w postaci aplikacji wieloplatformowych, w ten sposób redukując koszty. Jak wyjść naprzeciw potrzebom klientów i wykorzystać w pełni potencjał dostępnych technologii oraz architektury? Odpowiedzią są biblioteki, które pozwalają pisać z wykorzystaniem jednego języka, a aplikacja kompiluje się na różne środowiska docelowe. Jednym z takich rozwiązań jest NativeScript, pozwalający pisać w pełni natywne aplikacje z wykorzystaniem TypeScript oraz takich frameworków jak Angular czy Vue.
EtherCAT nie pochodzi od angielskiej nazwy bardzo popularnego w sieci stworzenia, czyli kota domowego (łac. felis catus), ale jest rozwinięciem angielskiego skrótu Ethernet for Control Automation Technology, co można przetłumaczyć jako „Ethernet dla technologii sterowania i automatyzacji”. Jest to sprytna modyfikacja protokołu Ethernet dostosowująca go do potrzeb sieci przemysłowych. Chciałbym przedstawić kilka eksperymentów, które pozwolą czytelnikom zapoznać się z podstawowymi zasadami jego działania.
Przyjęło się, że techniki „czystego kodu” ilustruje się przykładami z języków Java, C# lub pseudokodu nawiązującego do najmodniejszych języków. Jeśli więc jesteś programistą embedded C, wiele koncepcji będzie nieadekwatnych w Twoim środowisku pracy. W tym artykule znajdziesz interpretację technik „czystego kodu” dostosowanych do specyficznych wymagań programistów systemów wbudowanych.
Wraz z poprzednią częścią artykułu zakończyliśmy rozważania o strukturach będących wariacjami na temat tablic oraz list. Tym razem skupimy się na takiej strukturze danych, która w wygodny sposób pozwala na przechowywanie danych ze swojej natury hierarchicznych, czyli na drzewie.
Architektura oparta na mikroserwisach jest aktualnie bardzo popularna i z pewnością oferuje liczne korzyści. Jednak jej zalety idą w parze z szeregiem wyzwań. Ewolucja istniejących oraz implementacja kolejnych mikroserwisów sprawia, że testowanie integracji i utrzymywanie kontraktów pomiędzy nimi staje się wyzwaniem. Jeżeli odbywa się to w projekcie, który ma wiele ścieżek rozwoju i wiele zespołów pracujących jednocześnie nad rozwojem usług, to wydawać by się mogło, że mamy gotowy przepis na porażkę. Czy jednak na pewno tak musi być?
Zupełnie naturalne jest to, że członkowie zespołu bywają zmotywowani w różnym stopniu. Jako Agile Coachowie czy Scrum Masterzy często pracujemy z każdym z nich indywidualnie, próbując dociec, czego jeszcze brakuje w naszej firmie lub projekcie, by motywacja członków zespołu była optymalna. Co w sytuacji, gdy cały zespół sygnalizuje, że ma z nią problem? Jak zabrać się za poprawę motywacji całego zespołu, skoro składa się on z różnych osobowości?