Archive

Archive for December, 2007

Sapkowski vs CD Projekt

December 20th, 2007 No comments

Niedawno kupiłem grę Wiedźmin. Głównie dlatego że jest zrobiona w Polsce. Muszę jednak przyłączyć się do forum niezadowolonych. Gra nie działa na moim komputerze: gdy walczę to zawiesza się grafika. Czekam na aktualizację.

Nigdy wcześniej nie interesowałem się ani Sapkowskim ani grami. Jak na razie najbardziej wartościową rzeczą, którą znalazłem w pudełku z Wiedźminem było opowiadanie Andrzeja Sapkowskiego. Z całą pewnością sięgnę po inne książki tego autora. Czas spędzony z książką, jest dla mnie większym relaksem, niż czas spędzony nad zawieszającą się grą.

Mimo wszystko uważam, że grę “Wiedźmin” powinien kupić każdy, komu zależy na rozwoju branży IT w Polsce. Komercyjny sukces tego przedsięwzięcia zachęci innych do inwestowania w produkcję gier. Dzięki temu będzie więcej ciekawej pracy dla informatyków, a ja będę miał mniej czasu żeby nudzić na blogu.

Aktualizacja: 2008-01-27
Na moim nowym komputerze Wiedźmin działa poprawnie. Dane komputera: Vista Ultimate 64bit, 8600GT, uczciwy procesor Intela, dużo ramu. Gdy gra się nie zawiesza, to gra się bardzo dobrze – czuje się prawie tak, jak bym oglądał fajny film. Pozdrawiam i dzięki za Wiedźmina.

Categories: Recenzje Tags:

JPA Translator – przykładowy war + JSF

December 10th, 2007 No comments
Witam! Dla wszystkich, którzy chcą szybko zobaczyć na jak działa jpa-translator w dziale download zamieściłem przykładową aplikację webową. Można ją uruchomić na nowoczesnym kontenerze WEB, na przykład: Tomcat, Jetty. Pozdrawiam
Categories: Java, JPA Tags:

JPA Translator się rozwija

December 5th, 2007 No comments
Witam,
Mój projekt translatora dla JPA rozwija się dobrze. Ze źródeł SVN można pobrać działającą aplikację wykorzystującą mój translator, OpenJPA i JSF.
Pozdrawiam i zapraszam do rozwijania projektu.
Categories: Java, JPA Tags:

NetBeans 6

December 4th, 2007 2 comments
Wersja 6 NetBeans jest już dostępna!!! To znakomite IDE, które wybieram ze względu na: Od pewnego czasu przyglądałem się kolejnym wydaniom beta i release candidate. Były coraz lepsze, działały coraz szybciej, muliły się coraz rzadziej. Wszystko szło w dobrym kierunku. Właśnie instaluje wersje NetBeans 6.0!!!
Categories: Java Tags:

Tłumaczenia w aplikacji na wiele sposobów

December 3rd, 2007 6 comments
Zdarzyło mi się napisać aplikacje WWW, która miała działać w wielu krajach, w wielu językach. Potrzebowałem systemu tłumaczeń. Mówiąc systemu mam na myśli systematyczne podejścia do sprawy tłumaczeń. Tłumaczenia w mojej aplikacji są częścią jej biznesu. Najprościej zrozumieć to na przykładzie. Jest sobie hotel który ma opis. Ten opis może być przetłumaczony na wiele języków. Do systemu można wprowadzić nowe hotele a każdy z nich będzie miał inne tłumaczenie. Wyobraźmy sobie tabelkę hotel. Ma ona trzy pola: identyfikator, nazwa i opis. Opis to coś co trzeba przetłumaczyć. Ale jak to zrobić?
create table hotel(
  primary key int id,
  varchar nazwa,
  varchar opis
)
Istnieje wiele sposobów rozwiązania tego problemu. Do głowy przychodzą mi takie:
  • W systemie tworzymy tabelę hotel zawierającą kolumnę opis dla każdego z dostępnych języków. Będzie to wyglądać mniej więcej tak:
    table hotel(
      primary key int id,
      varchar nazwa,
      varchar opis_en, 
      varchar opis_de, 
      varchar opis_pl
    )
    
    Przedstawione rozwiązanie powinno działać bardzo szybko, jednak ma wadę – dodanie kolejnego języka do wymaga modyfikacji bazy danych – a to jest brzydkie.
  • Dla każdej wersji językowej tworzymy osobną tabelę zawierającą pola, które trzeba przetłumaczyć. Wygląda to mniej więcej tak:
    table hotel(
      primary key int id,
      varchar nazwa,
    )
    table hotel_en(
      primary key int id,
      varchar opis
    )
    table hotel_pl(
      primary key int id,
      varchar opis
    )
    
    To rozwiązanie będzie działać szybko. Dodanie nowego języka będzie wymagać modyfikacji bazy danych. Oczywiście, korzystając z tego lub z poprzedniego rozwiązania warto napisać program, który będzie tłumaczył zapytania SQL i pobierał dane z odpowiednich tabel językowych. Obydwa te rozwiązania będą działać szybko jednak moim zdaniem nie są one ładne.
  • Znam jeszcze coś takiego:
    table hotel(
      primary key int id,
      varchar nazwa
    )
    table hotel_tłumaczenia(
      primary key int id,
      int identyfikator_języka,
      varchar opis
    )
    
    To rozwiązanie jest lepsze od poprzednich tym, że wprowadzenie do systemu nowego języka nie będzie wymagało zmiany w strukturze danych.
  • Ja najbardziej lubiłem jednak tworzenie tablicy słownikowej. W uproszczeniu wygląda to tak:
    table słownik (
      primary key int identyfikator_tłumaczonego_tekstu,
      int identyfikator_języka,
      varchar tłumaczenie
    )
    table hotel(
      primary key int id,
      varchar nazwa,
      identyfikator_tłumaczonego_tekstu opis
    )
    
    To rozwiązanie jest o tyle fajne, że proste. Nie wymaga modyfikacji struktury bazy danych w momencie dodania nowego języka. Łatwo też pisać zapytania SQL, które pobierają teksty w wybranym języku. Niestety, to rozwiązanie jest wolniejsze, szczególnie wtedy gdy tabelka hotel ma wiele pól które chcemy przetłumaczyć.
Myślę, że można wymyślić jeszcze wiele innych rozwiązań tego problemu. Schemat myślenia można przenieś ze świata relacji do języków programowania obiektowego. Można zrobić też coś takiego:
@Entity
class Hotel{
  @Id
  private Long id;
 
  private String nazwa;

  @Tłumaczenie
  private String opis;
}
Tak to nowa JAVA. Dzięki adnotacjom możemy programować wielowymiarowo. Więc dlaczego by nie stworzyć dla naszej aplikacji nowego wymiaru – wymiaru tłumaczeń??? Ja właśnie to robię. Tworzę bibliotekę Java, która programistom będzie dostarczać wygodnego narzędzia rozwiązującego problem tłumaczeń. Tłumaczenia, nie będą już częścią aplikacji. Będą jej nowym wymiarem. Zainteresowanych zapraszam do projektu: JPA Translator
Categories: Java, JPA, SQL Tags: