[Java][Spring] Udostępnianie zasobów przez REST API

W 3 części kursu dowiemy się jak udostępniać nasze dane przez REST.

[Java][Spring] Baza danych w Spring

W poprzednim kursie odnoszącym się do Spring Boot, skończyliśmy na utworzeniu pierwszego projektu. Nie mamy w nim nic, oprócz domyślnych plików i ustawień. Naszym celem jest utworzenie aplikacji do wyświetlania wyników lotto. Aby nie obciążać obcego systemu z którego będziemy pobierać te wyniki http://www.mbnet.com.pl/wyniki.htm, będziemy je wczytywać do naszej bazy danych przy każdym uruchomieniu aplikacji.

[Java][Kryonet] Połączenie TCP i UDP. Serwer i Client.

W tym poście przedstawię wam podstawowe zasady programowania socketów w Javie. Ustanowimy podstawowe połączenie pomiędzy serwerem a klientem.

[Java][LibGDX][artemis-odb] Szybkie tworzenie prototypu.



Pisanie gier w Javie, nawet w tak rozbudowanym frameworku jak libGDX jest dość mozolnym i uciążliwym zajęciem, w porównaniu np. do szybkości pisania w gotowych silnikach. Jak np. Unity.
Na szczęście istnieją biblioteki pomagające w przyśpieszeniu naszej pracy i jej uproszczeniu. Oczywiście kosztem poznania danej biblioteki. Dzisiaj właśnie o jednej takiej bibliotece będzie.
Jest nią artemis-odb.
Sam artemis-odb to implementacja systemu ESC - Entity System Component. Czyli taki system w którym nasz główny obiekt World, jest uzupełniany przez nasze Entity posiadające Componenty i obsługiwany przez nasze Systemu. Dzięki temu mamy fajną skalowalna aplikację, z odseparowana logiką.

[Java][Spring] Jak rozpocząć pisanie w Spring Boot - kurs

W tym poście przedstawię wam najszybszy sposób na tworzenie aplikacji w Spring Boot z wykorzystaniem języka Java. Źródło to powinno stanowić punkt startowy przy pracy z Springiem i wyjaśniać podstawowe kwestie związane z konfiguracją i środowiskiem programistycznym.

[Java][Windows] Instalowanie jar`a jako usługi systemu windows

Czasem zachodzi potrzeba aby nasza usługa włączała się i pracowała jako usługa. Możemy tego dokonać dzięki programowi NSSM, a to wszystko przy użyciu konsoli albo graficznego interfejsu.

[Java][Maven] Własne repozytorium mavenowe.

Aby móc udostępniać innym swoje biblioteki w mavenie lub trzymać swoje prywatne repozytorium, możemy wykorzystać do tego celu konto ftp.
W tym celu możemy wykorzystać jakiś hosting, własny komputer albo dowolny w sieci lokalnej.


[Java][Spring]Dynamiczne konfigurowanie komponentów i ich właściwości z pliku konfiguracyjnego.

Gdy potrzebujemy mieć możliwość "zewnętrznego i dynamicznego" wpływu na ustawienia konfiguracji, np. czasu wykonywania zadań to możemy tego dokonać wpisująć interesujące nas właściwości w pliku application.properties naszego Springowego projektu a następnie je dynamicznie wczytać w kodzie programu np. tak:

@Scheduled(fixedDelayString = "${my.property.fixed.delay.seconds}000")
private void process() {
    // your impl here
}

[Axis2][Java] ERROR AxisEngine:219 - Must Understand check failed for header http://www.w3.org/2005/08/addressing : Action

Poniżej zapis pierwszych linii errora, który otrzymałem pisząc połączenie SOAP z jedną z usług webowych:

2015-11-16 14:01:35 ERROR AxisEngine:219 - Must Understand check failed for header http://www.w3.org/2005/08/addressing : Action
org.apache.axis2.AxisFault: Must Understand check failed for header http://www.w3.org/2005/08/addressing : Action
at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:105)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:171)

Spowodowane jest ono brakiem odpowiedniego engage module dodanego do naszego stuba, rozwiązaniem jest poniższy kod:

stub = new TPIServiceStub(serviceUrl);
ServiceClient sc = stub._getServiceClient();
sc.engageModule("addressing");

[JavaScript][Chrome] Problem z CORS

Jeśli testujemy jakąś usługę np po REST i mamy problem z połączeniem się do niej, to na przeglądrce chrome, wystarczy zainstalować dodatek: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/support?hl=en-US
unikniemy w ten sposób potrzeby definiowania odpowiednich ustawień na serwerze i konfiguracji nagłówków po stronie strony, co czasem bywa przydatne.

Source

Osmosis nie chce się uruchomić pod windowsem | Could not find or load main class org.codehaus.classworlds.Launcher


Należy zmodyfikować w pliku .bat który uruchamiamy wersję biblioteki plexus-classworlds-2.4.jar na wersje aktualnie osadzoną w projekcie. Na czas pisania tego postu jest to wersja plexus-classworlds-2.5.2.jar


http://permalink.gmane.org/gmane.comp.gis.openstreetmap.osmosis.devel/1701

[LibGDX] System scen i drag and drop

Scene2d jest dobrym narzędziem do tworzenia GUI takiego jak Menu Główne, Menu Opcji, Mapy Przygody czy Sklepu. W jego skład wchodzą takie elementy jak Stage - które jest głównym rodzicem dla wszystkich komponentów. Niżej w hierarchi mamy rodzinę Layoutów:

Table - do ogólnego przeznaczenia. W praktyce używam ją raczej jako główny stół do grupowania pozostałych elementów.

HorizontalGroup, VerticalGroup - do grupowania poziomego lub pionowego.

A także przydatny ScrollPane - do menu przewijanego. Oraz Container do pozycjonowania pojedynczych widgetów.

Dalej mamy Layouty wyspecjalizowane np.:
Tree - do tworzenia drzew. Czyli kompozycji rozwijanych.
SplitPane - do dzielenia przestrzeni pomiędzy dwóch aktorów.

oraz layouty pomocnicze jak ScrollPane - do przesuwania komponentów.

Na niższym poziomie znajdują się widgety czyli wszelkiego rodzaju kontrolki jak Button, Image, CheckBox.

Niektóre widgety takie jak Window służą podobnie jak layouty do obsadzania w nich innych kontrolek.

Żeby wykorzystać pełen potencjał layoutów. Wszelkich aktorów do dodania należy dodawać poprzez metodę .add(actor). Dzięki temu zwracana jest nam komórka którą możemy pod wieloma względami pozycjonować. np.:


dropRow = new HorizontalGroup(); scrollDropRow = new ScrollPane(dropRow); table.add(scrollDropRow).expand().center();




Pozwala na wycentrowanie naszego layouta na środek ekranu.
Polecenie expand() rozszerza nasz komponent na maksymalną szerokość i wysokość jaką może osiągnąć. Czyli jak bardzo może się rozepchać, zostawiając innym minimalne miejsce istnienia.
Natomiast center pozwala ustawić przesunięcie na środek.

Ciekawym narzędziem przy tworzeniu menusów jest system DragAndDrop oferowany przez klasę narzędziową scene2d.
Najprościej rzecz ujmując jego działanie polega na przypisaniu aktorów jako Source(elementy które można przesuwać) oraz Target(elementy na które można przesuwać). Dzięki temu dostajemy elastyczny system do tworzenia dowolnej funkcjonalności na podstawie systemu DragAndDrop.


WiFi ADB nie widzi naszego telefonu.

Posiadam telefon Samsung Galaxy Trend Plus. Po zmianie windowsa chciałem uruchomić debuggowanie mojej gry ale luncher nie rozpoznał mojego telefonu. Rozwiązaniem było zainstalowanie sterowników USB od Samsunga oraz podpięcie telefonu i uwierzytelnienie podpisu cyfrowego.

[Vaadin 7] Konfiguracja mavena - pom.xml - tak aby można było korzystać z własnych theme i widgetset

O ile samo korzystanie z Vaadina daje spore możliwości, to jednak dodanie dodatkowego komponentu jak EasyUpload add-ons, może naprzykrzyć trochę życie. Po kilkudniowym boju, mogę jednak powiedzieć że udało mi się skonfigurować dostatecznie żeby korzystać z dobrodziejstw dodatków.

[Java SE][JAX-WS] Implementacja web service w Javie SE

Java SE od wersji 6 posiada możliwość utworzenia wbudowanego serwera web methods opartego o protokół SOAP. W odróżnieniu od REST`owego API nie potrzebujemy tutaj żadnego serwera typu tomcat, wildfly co przydaje się w niektórych zastosowaniach.


Programowanie gier. Koncepcje i techniki.

W tym poście chciałbym zawrzeć część ważniejszych koncepcji związanych z tworzeniem gier.
Właściwie jest to podsumowanie moich przemyśleń z kilku lat praktyki w pisaniu gier. 
Zatem do dzieła!


LibGDX i Ashley. Wstęp.

W dobrze tworzonej grze, ważny jest podział na moduły i odpowiednia koncepcja zarządzania obiektami. W libGDX możemy wykorzystać do tego celu bibliotekę ashley, dzięki której możemy podzielić funkcję na niezależne systemy. Przy dobrze zaprojektowanym układzie mamy możliwość wielokrotnego używania systemów i komponentów w innych grach lub widokach co znacznie przyśpiesza proces developingu.

[CodeIgniter2][Doctrine2] Integracja Doctrine2 z projektem CodeIgnitera

Dziś czas na kolejny artykuł poświęcony dokładaniem bibliotek do naszego frameworka. Także jak poprzednio użyłem composera do instalacji Doctrine w projekcie.

Zacznijmy więc od początku...

[CodeIgniter2][Facebook PHP SDK 4] Integracja facebookowego sdk za pomocą composera.

Do działania swojej strony potrzebuję ścisłej współpracy z facebookiem, tak żeby użytkownicy nie musieli się u mnie rejestrować, a wystarczyło szybkie logowanie.

Po kilku godzinnych bojach udało mi się dojść do części działającego projektu. Oczywiście kilka kwestii jest do dociągnięcia i być może w swoim czasie doczekają się ulepszenia. Testowane na windows i xampp.