Prasówka IT SALESmanago to zbiór nowości, ciekawostek i rozwiązań z zakresu programowania, Big Data, Machine Learning & AI oraz budowania zaawansowanych systemów informatycznych.
Co dwa tygodnie nasi specjaliści selekcjonują kilka najważniejszych i najciekawszych artykułów. W tym wydaniu m.in. rozpoznawanie mowy według Facebooka, Deep Learning i tłumienie hałasu oraz Java w 2019 roku.
Machine Learning & AI
Deep Learning – Analytics Zoo
Analitycs Zoo to ujednolicona platforma analityczna i AI łącząca technologie Spark, TensorFlow, Keras i BigDL w jeden prosty do użycia pipeline. Cały potok danych i analiz można później w prosty sposób skalować przy użyciu klastra Hadoop/Spark i na nim wykonywać rozproszone uczenie się i wnioskowanie.
W przypadku “tradycyjnego” przygotowania środowiska wykorzystywanego do uczenia maszynowego każdy element musimy ze sobą integrować i implementować mechanizmy pozwalające wykorzystywać użytą technologię – Analytics Zoo pozwala tego uniknąć i zaoszczędzić sporo czasu poprzez pominięcie zbędnej konfiguracji każdego poszczególnego elementu.
W artykule znajdziesz konkretne przykłady użycia i kawałki kodu przybliżające rozwiązanie.
https://www.infoq.com/articles/analytics-zoo
Wav2letter++ – jak Facebook zaimplementował system rozpoznawania mowy
Systemy rozpoznawania mowy są jednymi z najczęściej implementowanych algorytmów w obszarze Deep Learningu – spowodowane jest to ciągłym zapotrzebowaniem na coraz lepsze algorytmy. Niedawno zespół Facebook AI Research (FAIR) zaproponował w swoim artykule badawczym nową technikę rozpoznawania mowy, bazującą tylko na konwolucyjnych (splotowych) sieciach neuronowych. Po researchu zespół FAIR udostępnił społeczności na zasadach Open Source project Wav2letter++ – zestaw narzędzi do rozpoznawania mowy oparty w pełni na splotowej metodzie. Zobacz jak działa ten mechanizm i jak możesz go wykorzystać w swoim projekcie:
https://towardsdatascience.com/introducing-wav2latter-9e94ae13246
Tłumienie hałasu za pomocą Deep Learning
Machine Learning w służbie dobrej komunikacji! W głośnych pomieszczeniach, gdzie występuje wiele źródeł hałasu, komunikacja (na przykład przez telefon) bywa mocno utrudniona lub jest wręcz niemożliwa. Podstawowym dokumentem, który opisuje metody tłumienia hałasu za pomocą Machine Learning, wydaje się być ten napisany przez Yong Xu już w 2015 roku. Yong zaproponował w nim metodę regresji, która uczy się tworzenia maski proporcji dla każdej częstotliwości dźwięku. Powstała maska proporcji rzekomo pozostawia ludzki głos nietknięty i usuwa niepożądany hałas. Rozwiązanie to było dalekie od ideału, na szczęście z biegiem lat temat został mocno rozwinięty – szczegóły poniżej:
https://towardsdatascience.com/real-time-noise-suppression-using-deep-learning-38719819e051
Bazy danych & Big Data
Nowa wersja PostgreSQL 11
10 października 2018 roku wypuszczona została nowa, długo oczekiwana wersja bazy danych PostgreSQL. Intensywny rozwój tego Open Source’owego silnika baz danych potwierdza lista nowych funkcjonalności oraz przygotowany przez twórców Feature Matrix:
https://www.postgresql.org/about/featurematrix/
JIT w PostgreSQL 11
JIT (Just-in-time) jest jedną z najbardziej oczekiwanych i ekscytujących funkcjonalności w nowej wersji PostgreSQL. Według informacji JIT potrafi przyspieszyć wykonywanie zapytań nawet o 30% – niestety, nie wszystkie zapytania mogą być wykonane w ten sposób.
Przeczytaj, czym dokładnie jest JIT oraz jak go zainstalować i skonfigurować w poniższym artykule:
https://www.percona.com/blog/2018/11/19/installing-and-configuring-jit-in-postgresql-11/
NoSQL nie zawsze tak dobry i skalowalny
Case “The Guardian” – migracja z klastra MongoDB do PostgreSQL na Amazon zakończonej w kwietniu 2018. Dokładny opis 10 miesięcy pracy i 2.4 miliony przeniesionych artykułów w formie step-by-step – od potrzeby, pomysłu przez kilku krokową realizację założeń przeniesienia danych po monitoring wydajności rozwiązania.
Dużo przydatnych koncepcji i zastosowanych rozwiązań w artykule poniżej:
https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-hello-postgres
Programowanie ogólne
Java w 2019 roku – co nas czeka?
2018 już za nami – był to bardzo intensywny i ciekawy rok dla społeczeństwa zgromadzonego wokół technologii Java. W artykule opisanych zostało sporo ciekawych case’ów na temat środowiska Javowego: migracja z Java 8 do Java 11, informacje na temat projektu Graal, OpenJDK oraz plan na release Java 12 oraz Java 13.
https://www.infoq.com/news/2018/12/java-2019-predictions
Frontend – najczęstsze problemy z CSS
Budowanie warstwy użytkownika aplikacji webowych znacznie się rozwinęło w ciągu ostatnich kilku lat. Każdy, kto pracował z frontendem, pamięta ogromne problemy z kompatybilnością wdrażanych rozwiązań – szczególnie, gdy mówimy o znienawidzonym przez Web Developerów Internet Explorerze. Po kilku latach (gdy IE, na szczęście, już nie jest rozwijany) potrafimy sobie już doskonale radzić z minimalizacją różnic przy renderowaniu stron w różnych przeglądarkach. Artykuł przybliża i pokazuje jak rozwiązać najczęstsze problemy z CSS:
https://www.smashingmagazine.com/2018/12/common-css-issues-front-end-projects/
Jaka jest największa ilość złego kodu, którą widziałeś?
Jeśli myślisz, że widziałeś w swoim życiu masę złego kodu, to bardzo się mylisz. Baza danych Oracle 12.2 składa się z blisko 25 milionów linii kodu C. Nie można zmienić pojedynczej linii kodu w produkcie bez poprawienia ponad 1000 istniejących testów. Kolejne pokolenia programistów pracowały nad tym kodem w trudnych terminach i wypełniając kod wszelkimi rodzajami bzdur zadbały o to, żebyś nie chciał nad nim nigdy pracować:
https://news.ycombinator.com/item?id=18442941
Decent Code – zwięzły przewodnik do pisania dobrego kodu
Każdy programista chce pisać coraz lepszy kod. Ale co to faktycznie znaczy? Składowych dobrego kodu jest wiele – na pewno trzeba zadbać o jego przejrzystość (pisz taki kod, jaki sam chciałbyś zastać). Wytwarzanie oprogramowania jest procesem zespołowym – należy wypracować szereg zasad i dbać o jakość i spójność kodu w całym projekcie. W przewodniku poniżej znajdziecie wszystkie dobre praktyki – od nazywania rzeczy, przez strukturę kodu, po jego komentowanie i umieszczenie w repozytorium kodu. Must have każdego programisty – od początkującego do seniora:
https://robatwilliams.github.io/decent-code/