Programowanie funkcyjne w Javie.

Co nieco o programowaniu funkcyjnym.

Czy możliwe jest całkowite usunięcie ze swojego kodu wyrażeń typu if / else, for, while, do while? Wydaje się to niemożliwe, bo wielu programistów nauczyło się, że podejmowanie decyzji to podstawowy element budowania każdego programu.

Wraz z wydaniem Javy 8 pojawiło się nieco funkcjonalności funkcyjnych i jeśli programujesz w tym języku, zapewne znasz interfejsy z pakietu java.util.function takie jak choćby: Function, Supplier, czy Consumer.

Aby obsłużyć dane opcjonalne, wprowadzono w Javie 8 klasę Optional. Ale jak można byłoby ją zaimplementować lepiej?

Czytaj dalej

Zostań Liderem zmian w swoim mieście.

Pół roku temu opisywałem na blogu i na FB projekt Szkoła 3.0. Dziś krakowska Fundacja szuka osób chętnych do działania w kolejnych województwach.

Innowacyjna inicjatywa społeczna – Szkoła 3.0 – rusza w Polskę. Jest to projekt polegający na nauce programowania i przekazywaniu przyszłościowych umiejętności dla dzieci z domów dziecka oraz z rodzin w trudnej sytuacji życiowej i materialnej. Krakowska Fundacja Sarigato rozszerza działalność i szuka osób, które będą współtworzyć akcję w kolejnych województwach.
Czytaj dalej

Kurs Android – podstawy tworzenia aplikacji. Recenzja kursu video

Poniżej kolejna recenzja przygotowana przez Bartka Medonia. Tym razem 8-godzinny kurs video „Android – podstawy tworzenia aplikacji”. Autorem wszystkich lekcji jest Piotr Dzwiniel, z wykształcenia psycholog i neurobiolog, doktorant Instytutu Biologii Doświadczalnej im. M. Nenckiego PAN. W swojej pracy wykorzystuje różne języki programowania: Java, Python, Matlab, czy Haskell. Tworzy narzędzia diagnostyczne, projektuje procedury eksperymentalne oraz zajmuje się przetwarzaniem i analizowaniem danych.

Na blogu był już recenzowany bardzo dobry materiał jego autorstwa z nauki podstaw Javy.


Dziś przyszło mi napisać słów kilka o video kursie podstaw tworzenia aplikacji na platformę android, który znajdziecie tutaj.

Czytaj dalej

Benefity w branży IT w 2017 roku

Oferowanie niektórych benefitów stało się już standardem na Polskim rynku pracy, a szczególnie w branży IT. Firmy informatyczne dbają o to by pakiet proponowanych przez nich świadczeń był bogaty. Często pracodawcy wręcz prześcigają się we wdrażaniu coraz to bardziej luksusowych benefitów. Wysiłki te są doceniane, bo 82% pracowników z branży IT jest zadowolonych z oferowanych przez firmę świadczeń. W artykule przedstawiono jakie benefity oferują swoim pracownikom pracodawcy z branży IT. Dane pochodzą z Raportu płacowego Sedlak & Sedlak dla branży IT – 2017.

„Są rzeczy na niebie i na ziemi, o których się filozofom nie śniło”.
(W. Szekspir)

Czytaj dalej

Coś tu cicho ostatnim czasem…

Od kilku lat dzieje się tak samo. Styczeń jest u mnie miesiącem, w którym mam najmniej wolnego czasu. Nie wiem z czego to wynika, ale wtedy pracy mam najwięcej. Sytuację spotęgowało moje zaangażowanie w rozwój niedawno założonej firmy mojej żony (jeszcze większej pasjonatki do swojej pracy niż ja). Uruchomienie strony, crm-a, smsapi, projekty graficzne, bannery, wizytówki, itd, Koniec końców styczeń 2017 to chyba pierwszy miesiąc od czasu istnienia bloga, w którym nie opublikowałem ani jednego wpisu. Wszystko wskazuje na to, że luty będzie wyglądał podobnie…

ELK Stack, dobre praktyki zarządzania logami

 

Cat | tail | grep – nierzadko jest to dla wielu osób podstawowy zestaw komend do wyszukiwania pewnych informacji w logach. Rozwijając jakąkolwiek aplikację, tworzymy pewien ekosystem składający się wielu usług, generujących własne pliki rejestru zdarzeń w różnych formatach. Na przykład w pierwszej lepszej aplikacji którą rozwijałem informacje rejestrowane są przez:

  • serwer proxy – NGINX
  • serwer http – Tomcat
  • bazę danych – PostgrteSQL
  • no i aplikację.

Już przy tak podstawowym zestawie usług, generowanych informacji jest ogrom. Przegląd i analiza takich logów jest dosyć problematyczna. Jeszcze pół biedy, gdy wszystkie z tych danych znajdują się na jednym serwerze.

Jak nad tym zapanować? W tym artykule przedstawię open source’owy zestaw narzędzi służących zarządzania logami ELK Stack w skład którego wchodzą:

  • Elasticsearch – silnik wyszukiwania pełnotekstowego oparty na Apache Lucene.
  • Logstash – narzędzie przetwarzające, filtrujące, normalizujące i wysyłające gdzieś logi (w naszym przypadku do Elasticsearch’a).
  • Kibana – interfejs, aplikacja webowa do przeglądania i wizualizacji logów w czasie rzeczywistym.

W poniższym artykule zaprezentuję przykład aplikacji wykorzystującej Javovy Log4J wysyłającej do Logstasha logi za pomocą SocketAppendera (na potrzeby wpisu w Windowsie 10).

Zaczynajmy, jak zwykle bez zbędnego rozpisywania się.

Czytaj dalej

Wykonywanie kodu JavaScript w Javie

ausmalbild-nashorn-7Wraz z pojawieniem się Javy 8 został udostępniony nowy silnik JavaScriptowy dla JVM o nazwie Nashorn. Zastąpił on starszą implementację Rhino, dostępnego od Javy 6. JavaScriptowy silnik Rhino został stworzony dawno temu przez firmę Netscape (chyba w 1997 roku), a w późniejszym czasie rozwijany był przez Mozillę. Nashorn to silnik pozwalający uruchamiać kod Javascriptowy po stronie serwera. Daje to duże możliwości, bo w łatwy sposób można udostępnić „język / składnie” jakiejś konfiguracji dla użytkownika, dzięki czemu w trakcie działania aplikacji można modyfikować implementację pewnych zachowań i dodawać nowe. Dzięki wykorzystaniu takiego silnika można np. dać użytkownikowi możliwość oprogramowania jakiegoś fragmentu systemu.
Wykorzystując taki silnik można zaimplementować np. walidację formularzy przechowując ją tylko w jednym miejscu systemu / modelu. Z formularza przekazujemy JSONa, po stronie serwera wykonujemy ten sam kod który był wykonany po stronie przeglądarki.

Bez zbędnego wstępu, przejdę do konkretnych przykładów pokazujących możliwości wywoływania kodu JavaScript z poziomu Javy.

Przykład Hello World:

W wyniku uruchomienia czego, na konsoli pojawi się tekst: „Cześć, tu Notatnik Programisty!”

Interfejs ScriptEngine posiada przeciążoną metodę eval przyjmującą obiekt klasy Reader, dzięki czemu można wywołać kod bezpośrednio z zewnętrznego pliku:

W Javie 7 metoda getEngineByName(„js”) zwróci implementację Rhino. Od wersji ósmej będzie to już silnik Nashorn.

Czytaj dalej

Dasz rybę, czy wędkę? Ty też możesz pomóc młodemu przyszłemu programiście!

Szkoła 3.0 – nowy program pomocy dla potrzebujących dzieci!

about-1

Jeśli dasz człowiekowi rybę, nakarmisz go na jeden dzień. Jeśli nauczysz go łowić ryby, nakarmisz go na całe życie.

Czy wiedzieliście, że 68% wychowanków placówek opiekuńczo-wychowawczych w dorosłym życiu NIE MA STAŁEGO ZATRUDNIENIA? Jest to naprawdę smutne. Braki w wykształceniu, wykluczenie cyfrowe, brak środków na dalszą edukację, brak praktyk zawodowych – sprawiają, że sytuacja zawodowa usamodzielnionych wychowanków domów dziecka wygląda tak, jak poniżej:

15241184_1111004095679135_4461154571250033522_n

Źródło: https://www.facebook.com/Szkola3.0/

Właśnie przed chwilą zafundowałem roczną edukację jednemu z wychowanków domu dziecka i cieszę się z tego niezmiernie oraz zachęcam każdego z was o pomoc w jakiejkolwiek formie. Ale o co tu chodzi?

Czytaj dalej