Flexibee na Ubuntu – nastavení

http://forum.ubuntu.cz/index.php?topic=62253.msg484846

Flexibee je český účetní systém bežící na Javě a v cloudu (i když vám nikdo nebrání si server udělat doma). Bohužel, ač výrobce nabízí .deb Ubuntu balíček, který dokonce přidá i firemní repo, nefunguje vše tak jak by mělo. Jelikož ve firmě používáme Ubuntu 11.10 (Unity má docela úspěch :D), bylo potřeba najít řešení následujících problémů:
(Vše se vztahuje na nastavení klienta, o serveru nemám moc ponětí, stará se nám o něj samotné FlexiBee. Někde na ABCLinuxu je článek o jeho nastavení.)

  • Dekorace oken překrývá písmo.
  • Výchozí GTKL&F je neuvěřitelně pomalý.
  • Při rychlém posunu ze strany na stranu se písmo rozsype a je k nepřečtení.
  • Jak zapnout OpenGL akceleraci Javy.
  • Jak zvolit správnou Javu.

Všechny úpravy provádíme ve scriptu Flexibee v oblíbeném editoru (v mém případě gedit):

Kód: [Vybrat]
gksudo gedit /usr/bin/flexibee

  • Oprava dekorace oken a GTKL&F
    pokud vím tak jediný použitelný vzhled je Metal. V otevřeném konfiguračním souboru si tedy zadáme:
Kód: [Vybrat]
FLEXIBEE_ARGS="--no-laf" FLEXIBEE_JAVA_ARGS="-Xmx512m -client -XX:MaxPermSize=128m  -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:-OmitStackTraceInFastThrow -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel -Dswing.boldMetal=false"

Tím jsme vyřešili i problém s rychlostí GTKL&F, který se mi zdál mnohem pomalejší. Bohužel jako protiváhu jsme ztratili hezkou grafickou integraci do systému. Podle všeho se jedná o chybu programátorů FlexiBee, nahlášení tohoto bugu ale vesele ignorují se slovy „nám to na Debianu funguje“ :-\.

  • Rozsypání písma a OpenGL akcelerace
    Nevím jestli to bylo jenom u mě, ale problém s rozsypáváním textu při rychlém horizontálním scroolování se mi povedlo vyřešit zapnutím OpenGL akcelerace která FlexiBee i znatelně zrychlila. U Javy se OpenGL akcelerace (funguje jak pod normální Javou tak pod OpenJDK) zapíná pomocí -Dsun.java2d.opengl=true (-Dsun.java2d.opengl=True pokud chcete vidět debug v terminálu). Přidáme tedy na úplný konec scriptu, těsně před $FLEXIBEE_JAVA_ARGS, -Dsun.java2d.opengl=True -Dsun.java2d.d3d=false . Výsledek tedy vypadá:
Kód: [Vybrat]
${JAVACMD} -cp $CLASSPATH -Dwinstromdir=${winstromdir}/lib -splash:${winstromdir}/winstrom-splash.png -Dclassworlds.conf=${winstromdir}/lib/launcher.txt -Dsun.java2d.opengl=True -Dsun.java2d.d3d=false $FLEXIBEE_JAVA_ARGS org.codehaus.classworlds.Launcher $FLEXIBEE_ARGS $@
  • Samozřejmě by bylo vhodné vybrat i správnou Javu. Flexibee běží bez problémů na OpenJDK-6, OpenJDK-7 a OracleJDK-7. OpenJDK-6 a OpenJDK7 můžeme nainstalovat bez problémů z hlavního repa Ubuntu. Pokud mohu doporučit tak OpenJDK7 je znatelně rychlejší. Problém ale nastane ve chvíli kdy chcete použít originální OracleJDK-7, není totiž kvůli změně licence v repu Ubuntu. Nejjednodušší možnost je nainstalovat Javu pomocí PPA, které nainstaluje script a zbytek stáhne z webu Oracle. Nezapomeňte, že nainstalováním tohoto balíčku souhlasíte s jejich licencí! Do terminálu tedy zadejte:
Kód: [Vybrat]
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer

Pak by bylo dobré nastavit výchozí Javu, to buď můžete udělat zadáním příkazu do terminálu:

Kód: [Vybrat]
sudo update-alternatives --config java

a vybráním čísla korespondujícího s verzí Javy kterou chcete použít. A nebo můžete znovu upravit script FlexiBee, pod FLEXIBEE_CACHE_DIR=”$HOME/.winstrom/cache/” přidejte např.:

Kód: [Vybrat]
FLEXIBEE_JAVA="/usr/lib/jvm/jdk1.7.0_01/jre/bin/java"
    a výsledek zkontrolujte v „Nápověda“ > „O aplikaci FlexiBee“

Snad vám tenhle můj malý postřeh alespoň trochu pomůže. Linux (a zvláště Ubuntu) ve firmě řeší mnoho problémů a neuvěřitelně šetří náklady na HW. Například FlexiBee s výše zmíněným upraveným configem jede naprosto v pořádku na konfiguraci s AMD C-60 a 4GB RAM. Zvolená konfigurace si vezme max. cca. 30W a je naprosto dostačující pro základní použití (FireFox, ThunderBird, LibreOffice, FlexiBee, Evince). S FlexiBee máme dobré zkušenosti a můžeme ho bez problémů doporučit, jediné v co do budoucna doufám je opravení GTKL&F a celkové zrychlení aplikace.

Ještě uvedu zdroje ze kterých jsem čerpal.

  • Úprava vzhledu na Metal: ZROJ
  • Zapnutí OpenGL akcelerace: ZDROJ
  • OracleJAVA repo: ZDROJ

Pokud by někdo měl ještě nějaký nápad na zrychlení FlexiBee, prosím podělte se o něj :).

UPDATE

Dnes jsem updatoval na verzi 10.16.2 a zkusil jsem použít OpenJDK-7. A jak se tak dívám tak problém s GTK L&F (uřezávání písma) v Ubuntu je skoro pryč. Vypadá to že věci se konečně dávají do pořádku :)

UPDATE

Podle mailu z Flexibee je prý vše již opraveno a víc už to prý ani opravit nejde. Pravda je ale trochu jiná…
Pokud se vám po zapnutí GPU akcelerace Flexibee občas na chvíli zasekne, tak jí zase vypněte.