2014-02-23

Switching on log to file during start on Debian system

According to what debian users says about new version of Debian (after the Wheezy edition) to turn on the log from system start (boot) we must install package responsible for this - bootlogd.:

- sudo apt-get install bootlogd

After installation logs should be saved in /var/log/boot file.

2014-02-22

How to install sonarqube(sonar) on debian


- get source from www:
wget http://dist.sonar.codehaus.org/sonarqube-4.1.zip

- unzip package:
unzip sonarqube-4.1.zip

- move unzipped folder into/usr/local 
mv sonarqube-4.1 /usr/local/

- create symbolic link to operate without version number
ln -s /usr/local/sonarqube-4.1 /usr/local/sonar

- now we can operate on sonar directory name and check if it works:
/usr/local/sonar/bin/linux-x86-32/sonar.sh start

- edit configuration file:
vim /usr/local/sonar/conf/sonar.properties

-- set user and password to db and sql url:
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

- restart server
/usr/local/sonar/bin/linux-x86-32/sonar.sh restart

- implement sonar as a linux service:
sudo cp /usr/local/sonar/bin/linux-x86-32/sonar.sh /etc/init.d/sonar

- now change configuration of sonar
sudo vim /etc/init.d/sonar 

-- add home variables and reconfig command line command
SONAR_HOME=/usr/local/sonar
PLATFORM=linux-x86-32

WRAPPER_CMD="${SONAR_HOME}/bin/${PLATFORM}/wrapper"
WRAPPER_CONF="${SONAR_HOME}/conf/wrapper.conf"

PIDDIR="/var/run"

- now we can set this as a service wtihcommand (in debian):
sudo update-rc.d 

- and we can chack if it works:
sudo /etc/init.d/sonar restart
-or:
sudo service sonar restart

2013-09-30

[Android] Intent i wybór wynikowego activity

Problem

Uruchomienie odpowiedniego activity w zależności od tego czy powiadomienie (notification) jest odpalone przy aktywnym obecnie activity czy też nie.

Rozwiązanie

  • do nowego obiektu typu Intent przypisujemy odpowiednią klasę na podstawie metody sprawdzającej czy activity jest obecnie aktywne. Jeśli klasa ListOfOrdersActivity maw tej chwili aktywną reprezentację w postaci activity to Intent odwoła się właśnie do tej klasy. Jeśli nie to powołana do życia  zostanie  nowa activity klasy MainActivity.
  • metoda sprawdzająca czy dane activity jest w tej chwili aktywne:

2013-09-27

[Spring] Simple tutorial

How to start with java spring framework

prerequisites
  1. Maven (v 3)
    1. configured connection to Nexus;
2.     configured connection via proxy;
Maven settings.xml
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    c:\REPO\MVN\main\
    
            
            
              optional
               true
                     http
                     10.0.5.232
                     8080
                     10.*|112.*
            
    
    
    
            
                     nexus
                     *
                     Nordea Nexus repo
                     http://10.0.52.97:9001/nexus/content/groups/nordea-repos/
            
            
                     nexus-plug
                     *
                     Nordea Nexus repo
                     http://10.0.52.97:9001/nexus/content/groups/nordea-repos/
            
    
    
    1. optionally you can set Environment/User variable parameter for M2_REPO (used by eclipse):
    2. and also MAVEN_HOME param:
  1. Eclipse environment with Maven plugin (m2e - Maven Integration for Eclipse) or VMware Spring Tool Suite (based on Eclipse);
  2. Configured  Local repository (don't know why Remote repo doesn't work (smile) ) for Maven Archetype:
    1. go to url: http://repo1.maven.org/maven2/archetype-catalog.xml
    2. store xml on local disk
    3. configure the Archetypes on Maven menu under project Preferences:
      1. Catalog file: /archetype-catalog.xml
      2. Description:

creating project
  1. Create new Maven project structure



  2. find Archetype with spring-mvc pattern. Choose co.ntier (GroupId) with artifactId: spring-mvc-archetype


  3. Provide Archetype parameters


  4. After confirming Finish button, you'll get the new project created:

Runing project
§  in the controller code you can see that main, root path of project request is set to test() method:
@RequestMapping(value="/") 
HomeController.java
package com.nordea.spring.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
  @RequestMapping(value="/")
  public ModelAndView test(HttpServletResponse response) throws IOException{
           return new ModelAndView("home");
  }
}

  • method test() returns the "home" as a view and model which should be refilled (in this case model is empty);
§  going to the MvcConfiguration class, where there is configured the views prefix and suffix, you can see that "home" value of the HomeController.test method result will give the "/WEB-INF/views/home.jsp" path;
MvcConfiguration.java
package com.nordea.spring.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@ComponentScan(basePackages="com.nordea.spring")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
  @Bean
  public ViewResolver getViewResolver(){
           InternalResourceViewResolver resolver = new InternalResourceViewResolver();
           resolver.setPrefix("/WEB-INF/views/");
           resolver.setSuffix(".jsp");
           return resolver;
  }
  
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
           registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
  }
}
the same configuration can be done with use of xml config file.

2013-09-25

Maven, eclipse i spring framework. Problemy z odpaleniem podstawowego projektu maven.

Po załadowaniu przykładowego projektu wykorzystującego Spring Framework (przy użyciu maven archetype), eclipse zgłasza szereg wyjątków. Między innymi widzimy coś takiego:

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (execution: default, phase: process-classes)

Replikacja błędu

  • W eclipse wybieramy nowy projekt maven tworzony na podstawie archetypu :
    • groupId: co.ntier
    • artifactId: spring-mvc-archetype
  • Po ściągnięciu i utworzeniu projektu możemy zauważyć powyższe wyjątki związane z sekcją build pliku pom:

  • po dodaniu węzła pluginManagement przed plugins wszystko jest ok:


  • co dziwne po wyczyszczeniu projektu, wykonaniu maven update i wyrzuceniu dodanego węzła wszystko jest ok - brak błędu?!

2013-06-29

Implementacja i wykorzystanie mapy cyfrowej w systemach internetowych

System nawigacji satelitarnej od czasu powstania przechodził wiele przeobrażeń. Udoskonalano satelity będące podstawą systemu, jak również (głównie) zdecydowanie ulepszono technologie stosowane w odbiornikach GPS. Coraz dokładniej potrafiono określać położenie poszczególnych obiektów, dzięki stosowaniu coraz bardziej ulepszonych algorytmów i technologii. Wraz z tą ewolucją technologia GPS zyskiwała coraz większe spektrum zastosowań. Obok projektów wojskowych (aktualizacja strategicznych rejonów map, akcje ratunkowe, lokalizacja żołnierzy, niszczenie strategicznych celów nieprzyjaciela, pociski samonaprowadzające, lokalizacja miejsc ataków jądrowych, itp.) system GPS znalazł swoje zastosowanie również w sferze cywilnej zarówno na lądzie (logistyka, ratownictwo, rolnictwo rekreacja, geodezja, ochrona mienia, budownictwo, itp.), powietrzu (ratownictwo lotnicze, lotnictwo, fotogrametria, itp.) jak i wodzie (batymetria, hydrografia, rybołówstwo, ratownictwo morskie, żegluga, itp.). Pomimo mnogości i różnorodności zastosowań, większość z nich spotyka się w tym samym punkcie – w momencie wizualizacji danych na mapie cyfrowej. Obecnie jednymi z najbardziej popularnych są sieciowe mapy cyfrowe dostępne za pomocą interfejsu przeglądarki internetowej. Wśród nich możemy wyróżnić serwis Google Maps oraz Open Street Maps (OSM).

Techniki wspomagające system GPS

AGPS/ A-GPS
System GPS jest niezwykle przydatnym narzędziem. Jednak ma pewne słabości. Możemy do nich zaliczyć stosunkowo słabą  moc sygnału, używanego do określania pozycji. Zwykły system GPS bardzo dobrze sprawdza się na otwartej przestrzeni. Gorzej jest już w przypadku określania pozycji w otoczeniu drzew lub budynków. A wewnątrz budynków określenie pozycji z powodu zanikającego sygnału jest praktycznie niemożliwe (może prócz ostatnich pięter, niektórych miejsc przy oknie lub budynków wykonanych z drewna – gdzie sygnał nie jest silnie tłumiony). Odbiorniki GPS (jakim najczęściej obecnie są telefony komórkowe)  nie funkcjonują dobrze (a nawet mogą nie działać) jeśli ich anteny nie znajdują się na otwartej przestrzeni.

Wszystkie te powyższe problemy rozwiązuje technologia AGPS (inny skrót A-GPS; ang.:Assisted GPS). Jej założeniem jest współpraca z odbiornikiem GPS urządzeń zewnętrznych takich jak serwer wspomagający (ang.: assistance server;  dalej nazwany AGPS serwer) wraz z odpowiednią siecią komunikacyjną GSM/CDMA/LTE (w przypadku tej pracy opisywana sieć to GSM, sieć telefonii komórkowej) lub w niektórych przypadkach nawet Wi-Fi.

W opisywanej architekturze serwer AGPS odbiera sygnały emitowane z satelitów krążących nad ziemią, przetwarza je i zapisuje w podłączonej do niego bazie danych. Odbiornik GPS może połączyć się poprzez sieć i pobrać odpowiednio przygotowane przez serwer AGPS dane. Wśród nich można wyróżnić: dane na temat orbit danego satelity (efemeryda), inicjalna pozycja i czas, pozycja odbiornika GPS (Rysunek 5). W ten sposób dane lokalizacyjne są znacznie szybciej przekazywane i odbiornik w mniejszym czasie może określić przybliżoną lokalizację. Ma to ogromne znaczenie przy najbardziej krytycznym momencie określania pozycji, mianowicie przy starcie odbiornika kiedy to odbiornik wylicza pierwszą prawidłową pozycję w oparciu o dane z satelity (opisane wyżej almanach, efemeryda i dane do obliczenia odległości od satelity), gdzie każde przeszkodzenie w odbiorze sygnału powoduje ponowienie odbioru danych od początku.

Przerzucenie samego przetwarzania sygnałów GPS na zewnętrzny serwer wpływa na oszczędność energii i zasobów pamięciowych odbiornika GPS. Należy jednak  mieć na uwadze fakt, iż dokładność pomiarów AGPS zależy bezpośrednio od zasięgu telefonii komórkowej (w szczególności transmisji GPRS).

Drugim minusem są koszty tego systemu. Podczas gdy zwykły GPS jest całkowicie darmowy, za dane ściągane z serwera AGPS trzeba zapłacić (koszty stawek operatora GSM za transmisję danych).


DGPS

Wykorzystując referencyjną stację bazową, której pozycja jest precyzyjnie określona (znajduje się w dokładnie geodezyjnie wyznaczonym punkcie) można znacznie zwiększyć precyzję pomiaru GPS do rzędu 0,5 do 2 m. Technika ta nazywana jest różnicowym GPS – w skrócie DGPS (ang.: Differential Global Positioning System).
            Zadaniem referencyjnej stacji bazowej jest odbiór sygnału GPS z satelitów i wyznaczanie na ich podstawie poprawek. Pozwala to wyeliminować większość błędów (błąd zegara satelity) i opóźnień związanych z emisją sygnału z satelity przez poszczególne warstwy atmosfery (np.: opóźnienie jonosferyczne i troposferyczne) pojawiających się przy standardowym pomiarze jednym odbiornikiem (Betke, 2001).
Poprawki wyliczone przez referencyjną stację  bazową odbierane są przez odbiornik GPS przez np. łącze satelitarne lub sieć GPS, WLAN.