[Java] Dodanie biblioteki geotools do projektu mavenowego

Aby dodać bibliotekę geotools przydającą się w obliczeniach gis`owskich należy dodać repozytoria:

 <repositories>
      <repository>
          <id>maven2-repository.dev.java.net</id>
          <name>Java.net repository</name>
          <url>http://download.java.net/maven/2</url>
      </repository>
      <repository>
          <id>osgeo</id>
          <name>Open Source Geospatial Foundation Repository</name>
          <url>http://download.osgeo.org/webdav/geotools/</url>
      </repository>
    </repositories>

A następnie dodać interesującą nas zależność np:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-shapefile</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-swing</artifactId>
            <version>${geotools.version}</version>
        </dependency>
    </dependencies>

Plus dodać properties odnośnie używanej wersji:

 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <geotools.version>15.1</geotools.version>
 </properties>


Dzięki temu zabiegowi możemy korzystać w naszych projektach z

[Unity][Android] Nie pokazuje nam naszej własnej ikonki aplikacji na Androidzie

To że Unity lubi się czasem krzaczyć i sprawiać nam psikusy nie muszę nikomu mówić. Ogólnie na część z tych rzeczy nie mamy wpływu, część jednak wynika z naszej nie wiedzy działania tego środowiska albo pluginów przez nas stosowanych. Dzisiaj miałem jeden z takich przypadków, od pewnego bulida znikła ikona mojej aplikacji na Androidzie i pojawił się pospolity Androidalus.

Przyczyną problemu okazał się plugin do płatności w aplikacji, zmodyfikował on plik AndroidManifest.xml tak że nasza apka nie czytała naszej ikony i Android dawał jej wersję domyślą.
Rozwiązaniem problemu jest dodanie do elementu application parametru:

android:icon="@drawable/app_icon"

Całość wyglądać powinna mniej więcej tak:

        <application
        android:label="@string/app_name"
        android:icon="@drawable/app_icon">

[Unity][2D] Start Guide - Szybki start pisania gier

W tym poradniku skupię się na najważniejszych aspektach potrzebnych do utworzenia gry w Unity. Nie będzie tutaj co prawda o obsłudze interfejsu edytora, zostanie natomiast przedstawiona techniczna idea działania silnika.


[Java][Multiinfo] Łączenie się z multiinfo w Javie 8: od certyfikatu do pierwszego sms`a

W dzisiejszym poście przedstawię przewodnik po integracji naszej aplikacji z platformą umożliwiająca wysyłanie wiadomości poprzez SOAP i HTTP, jaką jest Multiinfo.

[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!