[Symfony 3] Configuration of custom path for your entities - mappings

This is good answer Whitch I can't found in last documentation. I think that Symfony 3 is not well for simply and quick start.

http://stackoverflow.com/questions/22267998/symfony2-no-metadata-classes-to-process#answer-33352917

I will create Quick Start Tutorial for Symfony 3.

[Gentoo][Portage] Understood Gentoo Portage

A moment ago, I just tried to install meld on My gentoo on ThinkPad notebook at work. I've got one blocking package and one which was with conflict.

I decided to reinstall one of conflicting package from require list to install meld and portage repair all conflicts by update another package.

The problem of portage is that portage can't resolve conflicts by "Step by Step" and can't reorder package to install when conflicts was found.

But is a liitle, tiny, and trival problem, becouse the power of resolving conflicts is assined to gentoo user :D

[The Witcher: Wild Hunt Cheats]

additem ('NGP Wolf School silver sword x')
additem ('NGP Wolf School steel sword x')
additem ('NGP Wolf Pants x')
additem ('NGP Wolf Boots x')
additem ('NGP Wolf Gloves x')
additem ('NGP Wolf Armor x')

Simple & Look's Good PHP Bug Tracker - Bugs

It was a very hard to find free / open source Bug Tracking system written in PHP and without difficult installation process like Redmine. But now I have found it!

http://pixeline.github.io/bugs/

and many forks on github like https://github.com/GerritHoekstra/bugs
and my fork https://github.com/maveius/bugs - it is the same as https://github.com/GerritHoekstra/bugs but need to fork because GerritHoekstra maked good work.

Loguję tylko adres jak uzyskać sam adres IP:

http://www.commandlinefu.com/commands/view/1908/get-the-ip-address-of-a-machine.-just-the-ip-no-junk.

[JOB / WORK] Rekrutacje i werbowanie kandudatów do pracy

Ostatnio popularnym trendem w procesie rekrutacji jest wyłapywanie programistów dla klientów których nazwa nie jest znana i tym sposobem Twoje CV może trafić do Twojego obecnego szefa. Tak się dzieje pomino tego, że Ty nawet nie wysyłałeś do nikogo swojego CV tylko pytałeś o szczegóły oferty.

Niestety kojeny raz piszą do mnie rekruterzy z propozycją, jak to określają "możliwości" czy "udziału w projekcie" dla naszego klienta, którego nazwy nie podadzą bo takie mają procedury. 

Czy to normalne, jak traktuje się ludzi? To wcale nie jest przyjemne, bo to jak porwanie  z zakładaniem worka na głowę. A później otwierasz oczy i znajdujesz się w mega nieprzyjemniej korporacji, w której jedynymi twoimi prawami to jest praca pod presją i poniżanie Twojej osoby, za to, że czegoś nie wiesz. Gnojenie Cię na każdym kroku, za to, że zwracasz się o Pomoc. Nie wiesz czy z takiej "Radnki w Ciemno" wyjdziesz cały, czy zduszony czy może trafisz na "Piękną księżniczkę". 

Zabawy w ciemno nie są najlepszą formą rekrutacji, ponieważ nie wiesz z kim masz doczynienia. To jak traktowanie ludzi jako przedmiotów, jak nie ten to inny. Ktoś kto naprawdę potrzebuje pracy zagryzie zęby i będzie poniżany i nieszczęśliwy tylko dlatego, że dał się wciągnąć w taką "płapkę".

Zastanawiam się jak to się nazywa, ale jedynce co mi przychodzi do głowy to "łapanka" bo to nie są ludzkie metody. Mało tego, nie dość, że nie wiesz gdzie potencjalnie masz iść to jeszcze nie znasz szczegółów oferty np. co oznacza "udział w projecie"?
Czy to znaczy, że "nie zatrudnimy Ciebie ale zrobisz coś dla nas" ?
Co się kryje pod tym dziwnym światem "wyłapywaczy" i firm, które nie chcą jawnie podawać kim są? 

Firmy takie jak Google, IBM, Amazone, Apple to znane marki i wiesz już, że taki duży światowy gigant, to korporacja, ze swoją strukturą, procesami itp... A w korporacjach w jakich miałem przyjemność pracować, nie było podejścia polegającego na rozwiązywaniu konfliktów czy problemów ale najczęśćiej "spychologia", "gnojenie ludzi" i każdy na każdego donosi swoim szefom o tym, że "Jasiu zrobił kupkę na środku przedszkola, proszę Pani kierowniczko".

Jeśli znasz choć nazwę firmy (klienta) rekruterów, jesteś w stanie już coś powiedzieć na jej temat, choćby poprzez zorientowanie się w działalności danej firmy. W jakiej branży się specjalizują. 

Kiedyś miałem wyobrażenie, że banki to jedne z najstabilniejszych i idących z duchem czasu instytucje - nic bardziej mylnego! 

Banki jako wielkie korporacje, są zakopane w swoich procedurach korporacyjnych, a im więcej ludzi tym więcej problemów i gorzej tym zarządzać, bo każdy ma swoje zdanie. Ile on już tu nie pracuje, ile on ma doświadczenia, jaki on nie jest mądry, nie można go zwolnić, bo jest bardzo cenny, nie podważa się zdania szefa, czy kierownika (choć przez wszystkich może być mylne). "Co wolno wojewodzie to nie Tobie smrodzie". Tak się traktuje ludzi  w wielkich korporacjach w polsce. 

Technologicznie banki pomimo wprowadzenia innowacyjnej technologii zbliżeniowej kart płatniczych, które postrzegane jest jako "innowacyjne" nadal tkwią w starych technologiach, choćby aktualizacja sprzętu wymaga kilka miesięcy akceptacji, instalacji, konfiguracji itp. - jak widać o czas się nie martwią, bo to ludzie muszą się zmieścić w czasie a nie procedury.

Prawdopodobnie nadal w korporacjach w polsce zastaniesz jako najnowszy system Windows XP, rzadziej ale powoli nadal wdrażany w żłówim tempie Windows 7, bo przecież każdy zna te systemy. 
Korporacje płacą grube miliony za oprogramowanie Microsoftu zarówno licencje na Systemy operacyjne jak i MS OFFICE potrzebny w pracy biurowej. Czy inne serwery, ale pewnie dlatego, że chcą czuć bezpieczeńśtwo, "my płacimy to wymagamy jakości na odpowiednim poziomie". Inną kwestią jest wykwalifikowana kadra administratorów znających technologię Microsoft i wspaniałe "zarządzanie domeną i Active Directory". 


Moim zdaniem:
Łatwiej jest tym co w tym pracują niż tym, którzy mają na tym pracować.

Dlaczego nie dać pracownikowi wolnej ręki ? Dlaczego nie podejść do tematu w sposób taki aby to pracownik powiedział na czym mu się najlepiej będzie pracowało? Dlaczego pracownik jest zmuszony  do pracy na platformie określonej przez jakieś przyjęte normy. Na dodatek czasem trzeba pracować na jednym monitorze 15 czy 17", gdzie kod programu wychodzi poza monitor, bo nikt nie stosował stylu kodowania do 80 znaku.

Dosyć już tego! Nie chodzi o narzekanie ale o wyciągnięcie na jaw brudów, które mogą czaić się gdy nie wiemy z czym mamy doczynienia!

Reasumując, zbyt dużo zła czai się za czymś co nie jest ujawnione, a ja sądzę, że każdą propozycję rekrutacyjną trzeba dobrze poznać, zwłaszcza gdy ma się już pewne wymagania w stosunku do nowego miejsca pracy i bez podania szczegółów takich jak:

1. Miejsce pracy (nazwa klienta  / firmy) (czy korporacja czy mniejsza firma)
2. Technologie wykorzystywane (jakie technologie języki programowania, frameworki)
3. Atmosfera / warunki pracy (jakie sprzęty, jakie systemy, co można a co jest zablokowane przez administratorów, czy ludzie sa na poziomie czy gnoją innych)

Lepiej nie pchać się w rekrutacje, bo nigdy nie wiesz czy twojego CV nie otrzyma Twój szef ;)

[Joke] O programistach javy!

W pracy siedzi dzwóch kumpli aż w końcu jeden  postanowił zapytać drugiego.

- Ej Ty! Po której jesteś stronie ?

A ten odpowiedział:

- Serwera!

[Java + GWT] Horrible

  Jako programista miałem jakieś 1,5 roku temu przyjemność, albo raczej nieprzyjemność (wyjaśnie w dalszej części posta) poznania technologii GWT co oficjalnie oznacza Google Web Toolkit. W wielkim skrócie polega to na tym, że piszemy w większści w javie i raczej nie wiele jest plików jsp css js. Zwłaszcza tych ostatnich ponieważ kod JAVA jest kompilowany do JavaScript. 

  Najcześciej argumentem przeważającym wybór technologii jest między innymi to że w plikach konfiguracyjnych możesz określić na ile silnikow przeglądarek chcesz kompilować. Czas kompilacji jest tym dłuższy im wiecej jest silników przeglądarek.

  Biblioteki takie jak GWT, GXT, framework MVP4G zawierają odpowienio mechanizmy i komponenty ktore mają ułatwiać i szybciej tworzyć aplikacje webowe oparte o GWT.

  Do komponentow tych należą comboboxy (select w html) inputy konkretnych typów takich jak TextField, NumberField, itp. 

  Osobiście na początku nie przeszkadzało mi w tym nic, prócz czasu kompilacji i uruchomienia serwera podczas tworzenia aplikacji z tutoriala.

  Kolejnym dużym zaskoczeniem był czas kompilacji w projekcie dość rozbudowanym nad jakim pracowałem zawodowo. Potem po jakimś czasie zaczęło mi to naprawdę przeszkadzać, a potem już tylko denerwować. Nie znam wszystkich projektów w świecie opartych o GWT, ale te dwa, które poznałem wykorzystują dodatkowo framework Spring. Nie znając innych frameworkow wydawało mi się, że spring jest genialny. Aż przeszedłem do zupełnie nowego i lekkiego projektu opartego o Spring MVC. Byłem mile rozczarowany ile rzeczy można prościej zrealizować.

  Przede wszystkim w tym nowym projekcie było coś co zawsze rozwija i co bardzo lubię. Separacja plikow .css .js .jsp (zawierających html) i .java. Nie chodzi tu o samą separację, bo w projektach GWT też pliki były odseparowane, ale bardziej chodzi mi o to, że zaczynasz mieć większą kontrolę nad kodem który tworzysz a przede wszystkim dotykasz plików, króre w technologiach webowych i wszelkich podstawach tworzenia stron WWW są kluczowe i bardzo rozwijające. Zwłaszcza że tworzymy już w HTML5!

  Uważam za największą przyjemność tworzenie i modyfikcję plików CSS JS HTML osobno, ponieważ efekt zmian jest automatyczy po odświerzeniu przeglądarki co powoduje krótszy czas realizacji oraz daje przyjemność z tego że od razu możesz zobaczyć to co napisałeś i czy działa / wygląda tak jak tego oczekiwano.

  Lubie patrzeć na efekty swojej pracy a nie oczekiwać minuty i godziny na kompilacje a potem jeszcze na np. restart servera tomcat jak to jest w przypadku GWT. Jeśli liczy się czas wykonania zadania uważam, że java i cały Spring jest zbyt ciężkie w połączeniu z GWT albo z wadliwym GXT czy nieźle pojechanym MVP4G. Jeszcze nie miałem okazji poznać Vaadina, ale na samą myśl, że jest to oparte o GWT już mi się źle robi.


Inne nieprzyjemności wynikające z korzystania z GWT to :
  1. Kodu JS skompilowanego przez GWT nie jest sie w stanie wydebugować w przeglądarce. HTML wygenerowany przez GWT jest bardzo skomplikowany i nie jest łatwy w debugowaniu. Chyba ze kazdemu komponentowi przypiszesz id lub klasę. Ale w dwóch projektach z którymi miałem styczność nikt o to nie dbał.

  2. Do debugowania kodu klienta musisz używać devmode jednak wymaga on uruchomieniu serwera a potem podpina sie pod kod.

  3. Zmiana interfacu na klasach wymaga kompilacji. Kolejna strata czasu. (nowe metody, klasy itp.)
  4. Metody komponentów nie działają wedle życzenia. Np. W Comboboxie są chyba metody setValue setFieldValue i setRawValue()
    W tak przygotowanym interfasie nie wiesz ktorej z metod użyć a takich kwiatków jest więcej.
  5. Programując w GXT musisz znać podatawy, że ładowanie do comboboxa danych wywoływane jest asynchronicznie poprzez jakiś loader o ktorym też musisz wiedzieć. Wybranie jednego rekordu z listy wymaga nadpisania metody ładującej bo inaczej domyślny mechanizm nie załaduje Ci opcji z selecta.
    Dlaczego trzeba mieć tak ogromną wiedzę do tego wszystkiego ? Musisz wiedzieć o isnieniu loadera, proxy, Rpc, asyncCallback, Interfaceach servisow i ich implementacji i asynchronicznych wersji interface'u.
  6. W GWT i GXT musisz cały czas liczyć pixele. Bawić się wysokością i znów masz metody setHeight() setSize i setMinHeight() którą z nich wybrać?
  7. Zanika twoja choćby najmniejsza umiejętność pisania w JS i przestajesz sie rozwijać. Tracisz umiejętność lub wiedzę na temat komunikacji z Http, bo wszystko robisz w javie. Nawet jak stworzysz serwlet czy kontroller w springu to i tak nie masz pelnego odwzorowania.
  8. Jeden kod na wszystkie przeglądarki to mit ponieważ są momenty w których musisz stosowac hacki takie jak konstrukcje sterujące if (IE) {...} else if (Chrome) {...} itp.
  9. Często zdarzają się problemy z renderowaniem widoku czy problemy behavioralne z w działaniu aplikacji których przyczyną jest GWT lub GXT nie z winy programisty użytkownika. W takich chwilach trzeba zastosować jakiś workaround albo przegrzebywać klasy GXT i override na metodę, która akurat zapomniała czegoś wykonać.
  10. GWT wymaga sporej mocy obliczeniowej i zajmuje dużo pamięci. Im więcej rdzeni i RAM tym kompilacja i uruchomienie staje się łatwiejsze. Strasznie jest zasobożerne i często trzeba zmagać się z ustawianiem parametrów na tomcacie, w argumentach GWT itp.
  11. Aktualność - tu straszna lipa. Wychodzą coraz nowsze wersje przeglądarek. Np. Firefox, do którego należy instalować coraz to nowszy plugin GWT a często jest tak że najnowszej wersji pluginu GWT nie ma. Jesli potrzebujesz uruchomić devmode to lepiej nie aktualizuj FireFox'a.
   Oto 11 powodów dla którch technologię GWT uznaje za naprawdę uciążliwą. Odradzam wszystkim i już nigdy nie wrócę do tej technologii. Reasumując nazywam to Gówno Wartą Technologią! 

  Z całym szacunkiem do Google, ale naprawdę wydaje mi się to strzałem w stopę. Dziś zamiast aplikacji okienkowej w przeglądarce modny i godny polecenia jest Twitter Bootstrap. Sam go używam zarówno w projekcie zawodowym jak i prywatnym :-)
Osobiście wolę wyrwać sie z Javy i iść w stronę PHP, bardzo przyszłościowym JS, HTML5 i w końcu poznać Pythona ! To są języki którymi warto się zainteresować!
Polecam i jeśli macie jakieś argumenty za i przeciw zachęcam do komentowania :-)

[Tutorial] Jak stworzyć swoją własną subdomenę w serwisie Linode
How to create your own subdomain on Linode.


[ PL ]:
Poszukując informacji na temat stworzenia własnej subdomeny, napotkałem na różne artykuły, posty i fora. Część z nich była lepsza a część moim zdaniem gorsza. Co prawda ktoś nawet stworzył Tutorial stworzenia subdomeny w serwisie Linode, jednak nie wszystko było w tym tutorialu jasne i przejrzyste.

Wiadomym jest przecież, że jeśli ktoś jest znawcą i specjalistą w danej dziedzinie to nie będzie poświęcał się temu by dokładniej przybliżyć pewne terminologie czy czynności, ponieważ wydają się one być oczywiste. Tak - oczywiste, ale dla piszącego, publikującego artykuł, post, tutorial czy wypowiadającego się na forum lub w innej formie prezentacji. Jest to bardzo zgubne podejście, ponieważ zawsze może trafić się ktoś "świeży", ktoś "newbe", ktoś kto do tej pory nigdy tego nie robił a chce się tym zająć. I wtedy jest problem. 

Chcemy, czasem tylko wykonać pewne czynności, bez zastanawiania się co jest w środku, choć może to nie najlepsze podejście, ale gdy znajdziemy więcej czasu, możemy zgłębić interesującą nas tematykę i poszerzyć horyzonty przeglądając dokumentację, książki, blogi, WIKI i inne źródła, które wprowadzą nas w kanwy danej tematyki. 

Gdy czasem szukam informacji na jakiś temat i potrzebuję coś szybko rozwiązać i wykonać, to nie potrzebuję dywagacji na ten temat, tylko listingów z możliwie krótkim komentarzem.

W związku z tym że "Life is too short to write CRUD" zaczniemy szybki tutorial o tym,
Jak stworzyć swoją własną subdomenę w serwisie Linode.

1. Wymagania wstępne:
- Zarejestrowaliśmy się w serwisie Linode
- Postawiliśmy system operacyjny i odpowiednie usługi Apache, PHP, MySQL i inne na maszynie w serwisie Linode.
- Kupiliśmy nazwę dla naszej domeny

2. Czynności: 
  1. Podlinkowanie nazwy domeny i delegowanie domeny do serwisu Linode
  2. Utworzenie przestrzeni nazw dla subdomeny w serwisie Linode
  3. Konfiguracja apache i Virtual Hosts

Ad. 2.1. Podlinkowanie nazwy domeny i delegowanie domeny do serwisu Linode
  • Najpierw logujemy się na serwis "Linode"
 
  • Wchodzimy w zakładkę "DNS Manager"  
  • Następnie wybieramy "Add domain zone"
  •  Wypełniamy dane z ekranu:

 Gdzie:
- Domain - nazwa twojej domeny
- SOA Email - email do admina, np. : root@twojaDomena.abc

  • Klikamy Add Master Zone 
  • Zostajemy przekierowani na stronę:


 Ad. 2.1. Utworzenie przestrzeni nazw dla subdomeny w serwisie Linode
  • w sekcji "A/AAAA Records" dodajemy linkiem "Add a new A record" przestrzeń w postaci nazwy subdomeny.
  • W ekranie wpisujemy wartości jak na poniższym zdjęciu:
 Gdzie:
  • Hostname - nazwa naszej subdomeny (przestrzeń nazewnicza)
  • IP Addres - adres IP naszego serwera
  • Zatwierdzamy przyciskiem Save Changes.
 I widzimy już w tabeli z poprzedniego widoku nasz rekord z przestrzenią subdomeny (przedrostkiem) naszej głównej domeny.

W tym widoku zostały zamieszczone istotne informacje w sekcji NS Records. Są to serwery DNS serwisu linode dzięki którym będzie można zarządzać domeną.

W tym celu logujemy się do dostawcy nazwy domeny. W moim przypadku jest to portal "nazwa.pl"
  •  Wybieramy zakładkę "Panel klienta":
  • Przechodzimy w do "Twoje usługi"

  • Następnie wybieramy z "Listy domen" interesującą nas domenę:

  • i klikamy "konfiguruj"
  • Wybieramy następnie opcje "Zewnętrzne serwery DNS"
  • Uzupełniamy danymi z Linode dane z sekcji NS Records
  • Zatwierdzamy. Od tego momentu możemy w pełni zarządzać naszą domeną w serwisie Linode.

Ad 2.3 Konfiguracja apache i Virtual Hosts [ Gentoo ]

  • W tym celu logujemy się na nasz serwer z konsoli:
 root@localhost: ssh root@111.22.333.333

  • lub jeśli mamy wygenerowany klucz:
 root@localhost: ssh -i .ssh/key root@111.22.333.333

  • Po zalogowaniu przechodzimy do katalogu "/etc/apache2/vhosts.d"
 root@localhost: cd /etc/apache2/vhosts.d/

  • W tym katalogu stworzymy sobie plik test.pl.conf, oraz plik subdomain.test.pl.conf za pomocą edytora vi
# test.pl.conf


        ServerAdmin root@test.pl
        ServerName test.pl
        ServerAlias www.test.pl
        DocumentRoot /var/www/localhost/test/
        
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        

        ErrorLog /var/www/localhost/test/logs/error.log
        CustomLog /var/www/localhost/test/logs/access.log combined

~          

# subdomain.test.pl.conf


        ServerAdmin root@test.pl
        ServerName subdomain.test.pl
        ServerAlias www.subdomain.test.pl
        DocumentRoot /var/www/localhost/subdomain/

        
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        

        ErrorLog /var/www/localhost/subdomain/logs/error.log
        CustomLog /var/www/localhost/subdomain/logs/access.log combined

~          

  • Uwaga !!! należy utworzyć katalog logs w katalogu /var/www/localhost/subdomain !!!
  • mkdir -p /var/www/localhost/subdomain/logs
  • Pozstało nam wykonać ostatnią czynność:
# polecenie w konsoli ponownie ładujące konfigurację. 
root@test.pl: /etc/init.d/apache2 reload
  • KONIEC! nasza domena i subdomena działa pod osobnymi adresami.
Jeśli zauważyłeś brak lub coś zostało pominięte napisz w komentarzu!
Pozdrawiam Maveius

[Google Search] Too big font in Google search results

Google probably testing new layouts in Google search site, but header results are too big for me. I found the solution: In Chrome: install StyleBot addOn and insert the css from http://stylebot.me/styles/5083 In Firefox: install Stylish addOn and insert the css from http://stylebot.me/styles/5083 If You prefere other font size than 16px and 14px, You can change font size as you wish. Enjoy!

[SOLVED] Java, Hibernate and, @ManyToMany annotation - no results from one of Entity

I have an odd problem with relation
@ManyToMany
. In my case I had a Set as collection. The problem was my collecion of Bars element returns 0 rows. My exaples class was like this:
/**
 * Foo is NOT owner of relation
 */
class Foo {
  @ManyToMany(fetch = FetchType.LAZY, mappedBy = "foos")
  Collection bars;
}

/**
 * Bar is owner of relation
 */
class Bar {

  @OneToOne(fetch = FetchType.EAGER, mappedBy = "bar", optional = false, cascade = CascadeType.ALL)
  private RequiredFieldA requiredFieldA;

  @OneToOne(fetch = FetchType.EAGER, mappedBy = "bar", optional = false, cascade = CascadeType.ALL)
  private RequiredFieldB requiredFieldB;

  @OneToOne(fetch = FetchType.EAGER, mappedBy = "bar", optional = false, cascade = CascadeType.ALL)
  private RequiredFieldC requiredFieldC;

  @ManyToMany(fetch = FetchType.LAZY)
  @JoinTable(name = "BAR_FOO",
            joinColumns = @JoinColumn(name = "BAR_ID"),
            inverseJoinColumns = @JoinColumn(name = "FOO_ID"))
  Collection foos;

}

Solution:
1. I tried change
FetchType
from LAZY to EAGER - it works but I must save LAZY.
2. I decided to check what query Hibernate generated when
FetchType
is LAZY.

Results:
In my Bar entity I have required fields but in my Database i haven't got it. But the most odd is that hibernate generated INNER JOIN with only one (only first) field. This returns 0 rows becouse my first required field has no row in database for entity Bar.

The question is:
- Why FetchType.EAGER has no problems with required fileds?
- Why FetchType.LAZY INNER JOIN with ONLY ONE of required fileds (and join with only the first field)?

[SOLVED][ORMlite + Android Studio] Problem: "Could not find raw directory which is typically in the res directory"

W części tutoriala pod linkiem http://code.google.com/p/bazy-danych-2-projekt/wiki/LiteTworzenieTabel znajduje się instrukcja jak wygenerować plik konfiguracyjny dla ORMLite w środowisku Eclipse na wykorzystywanej tam wersji androida. Jednak problem pojawia się gdy korzystamy z najnowszej wersji android SDK + Android Studio v. 0.4.0 (opartego na produkcie JetBrains InteliJ IDEA ) po utworzeniu i uruchomieniu klasy DatabaseConfigUtil może zdarzyć się, że otrzymamy błąd podczas procesu kompilacji co uniemożliwi wygernowanie pliku.
Komunikat błędu jest oczywisty: "Could not find raw directory which is typically in the res directory", co oznacza, że w metodzie nie możemy dostać się do katalogu res oraz raw w tym katalogu, ponieważ takie foldery nie istnieją. Zgodnie z nową strukturą katalogów nasze zasoby mogą nie znajdować się w tym samym katalogu co zdefiniowany katalog domyślny dla naszej klasy DatabaseConfigUtil w związku z tym należy wykonać następujące kroki:

1. Wchodzimy w ustawienia konfiguracji uruchomieniowej naszej klasy DatabaseConfigUtil

2. Następnie szukamy sekcji "Working directory" i wpisujemy lub wybieramy właściwą ścieżkę do katalogu głównego, w którym znajduje się katalog zasobów "res"


3. Zatwierdzamy zmiany poprzez "OK"
W tym momencie możemy utworzyć katalog raw w katalogu res jeśli wcześniej nie został stworzony albo zlecić utworzenie katalogu jeśli nie istnieje metodzie main klasy DatabaseConfigUtil
4. Teraz możemy wrócić do tutoriala.

[SOLVED] Install Windows 7 after installation of Linux [Dual Boot]

Some people say that shouldn't install Windows 7 after install Linux, because Windows can override your start-up mechanizm called Master Boot Record (MBR) and You can lose your data if you don't know what happend. It's very good attention, because I almost experienced this. But I had a very basic knowledge about what I had done. I knew that I need second disk for create backup all my data. I had opposite situation, becouse I thought on that notebook was installed Windows XP and I couldn't see GRUB window to choose OS. It was wrong, it was mistake. Admins from Univercity advised me that i must run Fix MBR and Fix Boot from Windows XP Installer CD. After that, neither Windows nor Linux didn't want to run. Partition table was crashed. 

Now I know more than in the past. Now I don't worry about Install Windows 7 after install Linux. Let's start lesson about Windows and Linux installation in option dual boot.

Windows can be installed for two main ways. The easiest way is prepare partition table in Windows Installer or from Linux Live CD. This operation is very simple and it not entails loosing of data, assuming that hard drive disk is clean, in other case we must prepare a backup of our data. Preparing of partition table is easiest when we have a multiple hard drive disks, becouse we can create all partitions like Primary, not Extended/Logical. In my opinion It is good becouse we have clear partition table without dirty nesting and strange number of partitions without sort order.

Second way is harder becouse we must be very careful. We don't want loose all linux data and partitions. In this case I had another experience. I decide to install Windows 7 from USB Flash Drive, becouse I didn't want burn CD/DVD installer disk. First problem was how to run installer from USB. You have two option:
1. Setup Boot order in BIOS
2. Run Boot menu when you can see option like "Press XXX to run Boot Menager" 
In next step we must be sure what partition is designated for Windows. I was shure but I two times I checked that is correct partition. When I runned again Windows installer from USB I saw that Windows mount disks in descending sort order. It was very strange but though that I decided to continue installation of Windows... And after reboot I saw again GRUB User Interface to choose OS. It was very strange... I didn't know what happend. I found solution in the internet. The problem was that I have two device (two hard drive disks) and Windows boot maganer was installed on second disk. I tried to run auotmatic tool to repair it... and it was big wrong. I lost my linux home partition - Windows 7 installer and tool to repair bootmgr change my linux ext3 partition to FAT partition and create new partition with another Windows 7 data. It was very strange because two NTFS partitions wasn't touched and I thought that I loose all my data from HOME linux partition. I tried to install testdisk and learn how to use it for recover / restore lost partition. I did it. All my partition table was rescued! I hadn't backup! My master’s thesis... I don't want think about it.

This case teached me more and reminded me that I must have a backup. 

Example 1: 
Install Windows before Install Linux - The easiest Way (ONE HDD)
1. Open your CD/DVD ROM  and insert Windows CD or plug USB Flash Bootable Windows instalation drive
2. Reboot / Restart your computer
3. Run BIOS setup and set in Boot tab order devices (CD/DVD or USB at first position)
or if you have opportunity then run Boot Magaer Device and select correct device (CD/DVD or USB)
4. Create Partitions and Install Windows.
5. Install Linux 
-----------------------------------------------------------------------------------------------------------------------------------------

Example 2: 
Install Windows before Install Linux - More difficult (ONE HDD)
1. Open your CD/DVD ROM  and insert Linux Live CD or plug USB Flash Bootable Linux bootable instalation drive
2. Reboot / Restart your computer
3. Run BIOS setup and set in Boot tab order devices (CD/DVD or USB at first position)
or if you have opportunity then run Boot Magaer Device and select correct device (CD/DVD or USB)
4. Open terminal or use creator / wizard from Linux Live CD for partition table create
5. Create partition table
  5.1. First way is using cfdisk  
user@host $ cfdisk /dev/sda 
  5.2. Second way is using fdisk

user@host $ fdisk /dev/sda 
6. Your partition table can look like below 
/dev/sda
/dev/sda1  # (Primary) Boot / Grub partition
/dev/sda2  # (Primary) Windows
/dev/sda3  # (Extended)
 /dev/sda4 # (Logical) (Linux Swap)
 /dev/sda5 # (Logical) (Linux ROOT)
 /dev/sda6 # (Logical) (Linux Home)
...

7. After save a partition table you can reboot and insert Windows CD/DVD or plug USB installer.
8. Install Windows on created Windows partition
-----------------------------------------------------------------------------------------------------------------------------------------

Example 3: 
Install Windows before Install Linux - More difficult (Mutliple HDD)
1. Open your CD/DVD ROM  and insert Linux Live CD or plug USB Flash Bootable Linux bootable instalation drive
2. Reboot / Restart your computer
3. Run BIOS setup and set in Boot tab order devices (CD/DVD or USB at first position)
or if you have opportunity then run Boot Magaer Device and select correct device (CD/DVD or USB)
4. Open terminal or use creator / wizard from Linux Live CD for partition table create
5. Create partition table
  5.1. First way is using cfdisk  
user@host $ cfdisk /dev/sda 
  5.2. Second way is using fdisk
user@host $ fdisk /dev/sda 
6. Your partition table can look like below 
/dev/sda
/dev/sda1  # (Primary) Boot / Grub partition
/dev/sda2  # (Primary) Windows
/dev/sda3  # (Primary) Linux ROOT

/dev/sdb
/dev/sdb1  # (Primary) Linux Home
/dev/sdb2  # (Primary) NTFS
/dev/sdb3  # (Primary) NTFS
...
7. After save a partition table you can reboot and insert Windows CD/DVD or plug USB installer.
8. Install Windows on created Windows partition
-----------------------------------------------------------------------------------------------------------------------------------------

Example 4: 
Install Windows after Install Linux - Harder (ONE HDD)
You may installed only Linux or Linux and bad version of Windows and you would like install Windows.
1. Run Linux
2. Prepare partition table (add new partition to existing or move) - you can use gparted/fdisk/cfdisk 
3. Reboot and insert CD/DVD or USB Windows installer drive and run form CD/DVD/USB
5. Install Windows on prepared partition! - Be careful ! Select a correct partition. The best way to be sure that you will select correct partition is create label of this partition while you was creating it.
6. After reboot - please don't afraid that you loose your Linux data, when GRUB User Interface is not loaded. Probably Windows Installer override MBR and you run only Windows. Yes! Linux is still there! Don't panic! 
7. After Windows installation is done in 100% and reboot again and you can log in to the Windows You shuold switch CD/DVD/USB Windows isntaller with Linux Live CD reboot it by Windows -> start -> reboot.
8. Run from CD/DVD/USB Linux Live CD and run terminal
9. Run GRUB
root@host ~ $ grub 
10. Run GRUB Commands
grub> root(hd?,?)
grub> setup(hd?)
grub> quit
-----------------------------------------------------------------------------------------------------------------------------------------
Example 5: 
Install Windows after Install Linux - Harder (Multiple HDD)
You may installed only Linux or Linux and bad version of Windows and you would like install Windows.
1. Run Linux
2. Prepare partition table (add new partition to existing or move) - you can use gparted/fdisk/cfdisk 
3. Reboot and insert CD/DVD or USB Windows installer drive and run form CD/DVD/USB
5. Install Windows on prepared partition! - Be careful ! Select a correct partition. The best way to be sure that you will select correct partition is create label of this partition while you was creating it.
6. After reboot GRUB User Interface is loaded but when we select "Windows" you can see something like this:
BOOTMGR is missing. Press Ctrl+Alt+Del to restart
Probably Windows Installer create a Boot manager in the other HDD. 
7. Run Linux
8. Run Command:
root@host ~ $ fdisk -l
or run
root@host ~ $ cfdisk /dev/sdXY
where X - letter of other than first drive  and Y - number of partition
9. Copy or Move Windows Boot Manager Fiels from other bootable disk to windows installation partition
root@host ~ $ mv /dev/sdXY/Boot /dev/sdZM/ 
root@host ~ $ mv /dev/sdXY/BOOTSECT.BAK /dev/sdZM/ 
root@host ~ $ mv /dev/sdXY/bootmgr /dev/sdZM/ 
where Z - letter of disk where you installed Windows and M - number of partition
10. Reboot and select Windows record from GRUB User Interface.
-----------------------------------------------------------------------------------------------------------------------------------------
Legend:
Green - is describing the easiest operational level
Yellow - is describing easy operational level but contains some harder operation.
Orange -  is describing harder than easy operational level
Dark Orange - is describing hard operational level
Red - is describing the hardest operational level

[SOLVED][Android 2.3+ + Tasker app] Problem z przełącznikiem GPS on/off

Przedstawiam instrukcje postępowania w przypadku problemu z nowszymi wersjami Androida, chodzi tu o wersje 2.3+ i przełącznikiem GPS on/off z poziomu aplikacji Tasker.


  1. Zainstalować aplikację BussyBox z marketu google play: https://play.google.com/store/apps/details?id=stericson.busybox&hl=pl
  2. Zainstalować aplikację Secure Settings z marketu google play: https://play.google.com/store/apps/details?id=com.intangibleobject.securesettings.plugin&hl=pl
  3. Uruchomić aplikację BussyBox nadając uprawnienia (superuser-root)
  4. Uruchomić aplikację Secure Settings nadając uprawnienia (superuser-root)
  5. W aplikacji SecureSettings wejść w zakładkę "Helper"
  6. Status aplikacji Helper powinien być nie zainstalowany, więc klikamy na "helper not installed"
  7. Aplikacja instaluje Helper'a
  8. Przechodzimy ponownie do Tasker'a i tam już mamy bez blokowania możliwość zarządzania przełącznikiem GPS on/off.

[SOLVED][PHP][Kohana Framework 3.3]: Error reading session data when try "Session::instance();"


Wyjątkowo nie będę pisał tego tekstu po angielsku, ponieważ jest bardzo dużo różnych dziwnych rozwiązań w tym języku ale żadne nie zadziałało In My Case.

Dane:
Podczas wykonywania czynności obsługi sesji w bazie postępując zgodnie z VideoTutorialem natknąłem się na pewien problem, poważny problem dotyczący sessji bazodanowej, jak w tytule: "Error reading session data".
źródło: http://tomaszslazok.pl/2011/09/kohana-3-2-a-exception-w-session/

Powyżej umieściłem screen błędu jaki pojawił się po ustawieniu Session::$default = 'database'; IMC (InMyCase) było to w innej linii ale ten sam błąd:


Spędziłem bardzo dużo czasu czytając rozwiązania w sieci i próbójąc je szybko realizować, a że była noc to zmęczenie dało znać. Dziś na świerzy umysł przejrzałem kilka rozwiązań w interecie, które były lepsze, i miałem czas na dokładne ich przeczytanie. Okazało się tak jak napisano w jednej ze stron:http://tomaszslazok.pl/2011/09/kohana-3-2-a-exception-w-session/

Rozwiązanie:

Zasugerowałem się podpowiedzią dotyczącą tego aby szczegóły błędu wyświetlić, bo kohana nie daje pełnej informacji o błędzie. Tak też uczyniłem...

listing 1.1. W pliku: kohana/system/classes/Kohana/Session.php
  catch (Exception $e)
  {
   // Error reading the session, usually a corrupt session.
   throw new Session_Exception('Error reading session data.', NULL, Session_Exception::SESSION_CORRUPT);
  }
Dodałem informację o błędzie poprzez konkatenacje stringów (za pomocą operatora konkatenacji) sposób przedstawiam poniżej:

listing 1.2. W pliku: kohana/system/classes/Kohana/Session.php
  catch (Exception $e)
  {
   // Error reading the session, usually a corrupt session.
   throw new Session_Exception('Error reading session data.' . " [Details: " . $e . " ]", NULL, Session_Exception::SESSION_CORRUPT);
  }
Dzięki temu uzyskałem precyzyjniejszy komunikat gdzie leży błąd:

Wystarczyło na to by stwierdzić, że metoda mysql_connect(); jest metodą pochodzącą z PHP a w wersji PHP 5.5 ta metoda została oznaczona jako Deprecated, i na dodatek wywołuje błąd Deprecated Error, który powoduje taki właśnie błąd we Frameworku Kohana. No cóż... Nie można mieć wszystkiego co najnowsze, bo pierszy przychodzi język a potem ludzie dostosowują frameworki...

Co zalecam? 

Instalacje kolejnej starszej wersji PHP w wersji 5.4.x w której to nie będzie ten bład występował dla Kohana Framework 3.3;

Jako, że korzystam z systemu Gentoo, nie miałem problemów z instalacją obok najnowszej wersji wersji nie co starszej.

listing 2.1. W konsoli:
root@localhost : emerge -av =dev-lang/php-5.4.17
...
root@localhost : eselect php set apache2 1 // ustawiam starszą wersję PHP
...
root@localhost : /etc/init.d/apache2 restart


[Gentoo] Optimizing energy managing

My friend Piotrek, found the solution how to optimize energy managing in Gentoo.

He said that I should install the package app-laptop/laptop-mode-tools
My dell started puff a cool air, and start to save more energy!

The Best thanks for Him!

[e-kierowca Testy 2013] Problem z lektorem w wersji 1.013

1. Dane:
Po aktualizacji do wersji 1.013 z pliku instalacyjnego Testy2013_up1013_v2.exe wystąpił błąd z lektorem. Mianowicie po wejściu na "Przeglądaj pytania po kategoraiach" i wybraniu zestawu i kliknięciu przycisku [Start] resetują się ustawienia i nie słychać lektora.

2. Szukane:
Problem spowodowany jest błędem w pliku getQuestions.xml znajdującego się w katalogu "ziarna_nowe"

3. Rozwiązanie:
Należy wykonywać kopię pliku przed instalacją aknualizacji. (najlepiej usunąć program Testy 2013 i zainstalować ponownie) potem przejść do katalogu w którym zainstalowano aplikację i znaleźć katalog "ziarna_nowe" jeśli nie będzie tego katalogu należy pewnie wykonać aktualizację do wersji 1.010 a potem wykonać kopię pliku.
(np. wrzucając plik na pulpit)

Zainstalować aktualizację 1.013 na dwa sposoby:
1. Normalna instalacja
2. (Bezpieczniej) Zainstalować aktualizację do innego katalogu poczym skopiować wymagane pliki z tego nowego innego katalogu oprócz pliku getQuestions.xml i viola ;) jak poprawią plik (no chyba że chcesz sam go poprawiać) to wtedy będzie można dokonać kolejnej aktualizacji.