e-Deklaracje Linux

09 Apr 2012 09:57

Z jakiegoś powodu Ministerstwo Finansów zdecydowało się wypuścić swoją aplikację do rozliczania PIT-u. To dobry pomysł, ale technologicznie trochę nietrafiony, bo zdecydowali się skorzystać ze wszystkiego co daje Adobe: Flash (instalator), AIR (aplikacja), Reader (w sumie nie wiadomo do czego, do jakiegoś podpisywania dokumentów, czy czegoś w tym stylu, w każdym razie dziwne rozwiązanie Adobe).

Instalator na stronie Ministerstwa (aplet Flash) działał nawet całkiem nieźle jakiś czas temu na Ubuntu 11.10. U rodziców zainstalował się również dobrze. Instalował po kolei, najpierw AIR-a, potem aplikację. Adobe Readera trzeba było zainstalować samemu (no ale mamy to jako pakiet w Ubuntu — w repozytorium partner, więc w miarę spoko).

Dzisiaj zdecydowałem się zainstalować owy program na Xubuntu 12.04. Instalator dostępny przez WWW zawiódł. Nie potrafił zainstalować AIR-a. Po ściągnięciu (co trochę trwało) pisze, że ściąganie nie powiodło się i, żeby spróbować ponownie. No to próbuję, ale od razu (bez próby ściągania ponownie) pokazuje ten sam błąd. Wyczyściłem różne katalogi, które wydawały mi się powiązane z tym, odpaliłem od nowa przeglądarkę, uruchamiam instalator i dzieje się to samo.

Zajęło mi to dość długo, bo w międzyczasie wtyczka Flash (która o dziwo w sumie od dłuższego działa spoko) co kilka minut ulegała awarii.

Koniec końców nie udało mi się zainstalować "automatycznie" e-deklaracji. Próbuję manualnie. Ze strony ministerstwa wchodzę na stronę Get AIR, gdzie od razu wita mnie tekst, że na Linuksa nie ma Adobe AIR i mogę tylko sobie ściągnąć jakieś stare wersje. No to szukam, znalazłem wersję 2.6. Uruchamiam ściągnięty plik (instalator). Po zaakceptowaniu, pojawia się błąd: nie mam zainstalowanego GNOME keyringa ani KDE Walleta. No faktycznie nie używam, no to szybciutko chcę zainstalować pakiet gnome-keyring, ale się okazuje, że on już jest zainstalowany. W desperacji próbuję zainstalować KDE Wallet (co oznaczało instalację pakietu kde-runtime), ale to jak można się domyślić też nie pomogło. Podobnie jak ustawienie w XFCE, żeby uruchamiał usługi KDE i GNOME przy starcie.

Poszukiwania w Internecie doprowadziły mnie do pliku Deb z Adobe AIR:

http://airdownload.adobe.com/air/lin/download/latest/adobeair.deb

(czemu nie było tego na stronie Adobe AIR?). Instalacja przez dpkg przebiegła bez problemów, natomiast ważne będzie za moment to, że jest to AIR-a wersja 32-bitowa.

Ze stony ministerstwa ściągnąłem plik aplikacji AIR i spróbowałem go instalować. Okazuje się, że jest to tak proste jak dwukrotne kliknięcie ikonki. Faktycznie pojawia się instalator, pyta się o lokalizacje instalowanego programu, coś tam rozpakowuje i pokazuje błąd o numerze 1 (i żadnego wyjścia diagnostycznego). Próbuję uruchomić to samo z linii komend, ale tam też nie pokazuje się nic.

Zdesperowany uruchamiam instalator przez strace, żeby zobaczyć co konkretnie próbuje zrobić instalator, co go wysypuje, ale w gąszczu milionów wywołań gettimeofday i mprotect ciężko coś znaleźć. Nawet po odgrepowaniu tych śmieciowych linii nie ma nic konkretnego. A może? Znalazłem coś. Log aplikacji instalatora. Zaglądam szybko do niego, ale dużo ciekawego się nie dowiedziałem. Próbuję różnych przełączników instalatora AIR (okazało się, że w katalogu /tmp/air.XXXX są wołania instalatora z przełącznikami), no ale żadnego tropu nie łapię.

Gdzieś w logu znalazłem w końcu, że instalator aplikacji musi być uruchomiony jako root. To już coś. Uruchamiam przez sudo, ale wciąż pojawia się błąd. W logach ciekawa rzecz. Wyjście z dpkg, które narzeka, że adobeair nie jest w wersji przynamnniej 2.0.0.0 (a naprawdę jest zainstalowane w wersji 2.6.0.XXXX). Widać też, że AIR próbuje przez dpkg zainstalować pakiet setup.deb. Po ktrótkim poszukiwaniu znajduję ten plik w jednym z katalogów /tmp/FlashTmp.XXXX. Kopiuję sobie go, żeby nie zniknął i próbuję zainstalować. Ten sam błąd, to w logu, pakiet adobeair w wersji przynajmniej 2.0.0.0 nie zainstalowany. Uruchamiam z przełącznikiem —ignore-dependency=adobeair i po chwili mam zainstalowane e-Deklaracje z linkiem w menu systemowym.

Myślę, że Ministerstwo Finansów ułatwiłoby wszystkim życie, gdyby aplikacja do PIT-ów była w HTML5. Firefox jest na wszystkie systemy, które obecnie "wspierają" i na wiele innych platform.

Comments: 10

Ad Filtering On Adroid Phones

06 Apr 2012 21:44

Recently I installed a CM9-based Ice Cream Sandwitch ROM on my HTC Desire and it's cool, but I found one thing extremely frustrating: the ads. They are everywhere and slow things down. I haven't noticed them before, because I always used AdAway (and AdFree before that), but with this ROM those ad blockers refused to work.

The problem seems to be the /system/etc/hosts file is real file on flash filesystem and if modified it can be only as big as 2 kilobytes, so regular host-based ad-blocking can't be used here. For some reason creating symbolic link to /data also fails.

I though the ad blocking can be done differently — by DNS server. If we can't put much to /etc/hosts file, let's set up a DNS server (say dnsmasq) that reads the hosts-to-be-blocked file and returns 127.0.0.1 for them and act as a proxy-DNS server for every other domain. But there was problem in settings DNS server in Android settings. It seems the ROM has hardcoded OpenDNS servers and you can only override this per each WiFi network. No way to do this for 3G.

But then I found, the ROM comes with iptables executable (possibly from busybox, haven't really checked) and more interestingly iptables-capable kernel. After a bit of trial and error (and Google searching) I found commands to redirect all DNS traffic comming from the phone to one predefined server:

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 87.118.110.215
iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to-destination 87.118.110.215

The shell throws out one-line TODO (implement getprotobyname) errors but this is harmless to us. This is effective untill you flush iptables (with iptables -t nat -F) or reboot the phone.

At first I wanted to set up the ad-blocking DNS server myself, but I said, hey, someone just had to do it. I wasn't wrong, there were at least two relevant Google results for this: AdBarricade and FoolDNS. So you need to choose one and you're set.

But how do you compare those two? I mentioned I used AdAway and AdFree before and their block lists are very good (personal opinion), so I decided to download the hosts file generated by AdAway (it has the option to generate the hosts file anywhere, not just in plain /etc/hosts), shuffle it a bit and for top 1000 hosts check whether AdBarricade or FoolDNS block them. The results were:

FoolDNS (87.118.110.215): 744/1000 hosts blocked
AdBarricade (74.53.155.162): 234/1000 hosts blocked

For our purpose (measure by how many of AdAway-listed hosts are blocked) FoolDNS is a winner. That's why 87.118.110.215 was used in the iptables scripts above.

Once we have our DNS-based iptables-powered ad filtering, we may want to make it persistent. BCM ROM has a script that's called during boot process, it's /etc/boot.d/99bash and we can just append two abovementioned lines to it, to make the boot process run them each time the phone boots.

Comments: 0

Za to Xubuntu...

15 Mar 2012 18:59

W poprzednim poście pisałem o tym jak Ubuntu idzie w złą stronę. I cały czas tak myślę. Dodajmy do tego co pisałem ostatnio, że Ubuntu próbuje się skupić na wszystkim i wszystkich. Już nie wystarczy robić dobrej dystrybucji dla desktopów i laptopów (co i tak już zepsuli). Teraz Ubuntu będzie planuje rozwijać Ubuntu na telewizory, smartfony no i (niestety) serwery.

Jakiś czas temu zauważyłem, że dzielę z Linusem Torvaldsem odczucia dotyczące środowisk graficznych. Podobnie jak on, byłem wielkim fanem KDE 3, potem GNOME 2. Wynalazki takie jak KDE 4, Gnome 3, Gnome Shell czy Unity nie przypadały mi do gustu. Obecnie środowiskiem graficznym, które uznaję za sensowne (podobnie jak Linus) jest XFCE, którego byłem fanem (i użytkownikiem) od dłuższego czasu.

Korzystając z okazji i chęci eksperymentowania, zainstalowałem ostatnio Xubuntu Precise w wersji beta1 i ku mojemu zdziwieniu całość sprawuje się świetnie. Korzystam z szyfrowania katalogu domowego, a mimo wszystko całość zasuwa jak dziki skurczybyk.

Miałem problem z nieładowaniem się pulpitu po zalogowaniu, ale po wymianie lightdm na gdm już jest OK.

Dodam, że korzystam z doka, który nazywa się "Docky" (wywodzącego się z Gnome-Do, lecz teraz jest osobnym projektem), który też robi kawał dobrej roboty.

Podsumowując: cały świat Linuksowy jednak nie zapomniał się w holizmie i są wciąż projekty skupiające się na tym, co powinny robić. I ja to bardzo doceniam. I nie potrzebuję mieć jednej firmy, która dostarczy mi cały system, gdzie absolutnie wszystko będzie do siebie podobne i pasujące. Nie żebym nie chciał, ale to po prostu niemożliwe. Wystarczy, że do każdej rzeczy, którą robię wybiorę sobie jakiś komponent, który mi pasuje, a komunikacja między nimi nie będzie sprawiać problemów.

Filozoficzne myśli ostatnio się mnie trzymają. I wiem, że sporo ludzi docenia to co ja, więc fajnie było się tą myślą podzielić publicznie.

Comments: 0

Ubuntu idzie (według mnie) w złym kierunku

06 Feb 2012 22:31

Dzisiejsza notka będzie wielce narzekająca i pewnie nic nie wnosząca do Waszego życia, ale zauważyłem, że wiele osób ma podobne odczucia, do moich, więc postanowiłem się podzielić swoimi przemyśleniami.

Jakiś czas temu Ubuntu postanowiło postawić na Unity — nowoczesne środowisko graficzne z ultra fajnym dokiem jak i wyszukiwarką programów, które miało być hitem dla tzw. zwykłego użytkownika.

Niestety całe to Unity, pomimo kilku fajnych rzeczy, po prostu nie sprawdza się. I o ile wszystkie pomysły w teorii są bardzo fajne (np. dock a'la Mac OS) to w praktyce są zrealizowane po prostu źle.

Mam wrażenie, że nikt tego nie testował, ponieważ, kiedy pierwszy raz zetknąłem się z tym środowiskiem (a było już ono w Ubuntu w wersji wydanej, nie żadne alfa-bety) to miało mnóstwo błędów.

Najgorsze jest chyba jednak to, że poczyniono w jakimś wyższym celu mnóstwo założeń, jak chyba najbardziej kontrowersyjne, że dock będzie po lewej stronie i nie da się go przesunąć. Można się do tego przyzwyczaić? Można. O ile się korzysta z jednego ekranu. Jako power-user korzystam od dłuższego czasu z dwóch monitorów i ustawiałem je zawsze sobie w pionie: laptop (bo lubię pisać na jego klawiaturze) i nad nim duży "główny" monitor.

Z jakiegoś powodu pionowe ułożenie monitorów w Unity nie jest dobrze wspierane: a to nie da się przenieść okienka, a to maksymalizacja działa nie tak jak trzeba, a to po jakiejś operacji na oknie, wywalają się dekoracje okien, a to restartuje się Xorg. Pięknie! No to ułóżmy monitory w poziomie. Ale moment, przecież dok będzie zawsze po lewej stronie. Tylko na którym monitorze? Mam nadzieję, że na lewym. No ale wolałbym mieć mały monitor po lewej stronie, a dok na większym. Ok, dało się ustawić, tylko teraz znowu nie można przenosić okienek na mały monitor. Brrrrr. Najbardziej dostosowywalny i dostępny system na świecie (GNU/Linux) właśnie rządzi układem monitorów na moim biurku. Świetnie!

Ale do rzeczy. W ostatniej wersji Ubuntu (którą instalowałem moim rodzicom) jak się okazało w ogóle nie przewidziano sesji "Ubuntu classic — no effects"). Środowisko GNOME trzeba doinstalować ręcznie. Po raz kolejny gratulacje.

Powiem głośno: Unity NIE jest jeszcze użyteczne dla normalnego użytkownika. Jest nieintuicyjne i przeczy wszystkim przyzwyczajeniom użytkowników. Interfejs jest nieczytelny. Nawet dla ludzi niestykających się dotąd z komputerami. GNOME czy XFCE jest bardziej zrozumiały niż to Unity.

Następna rzecz. Ekipa Ubuntu testuje obecnie mechanizm przeszukiwania menu aplikacji. Zamiast kliknąć menu "Edycja" a następnie "Skopiuj", będziemy mogli nacisnąć Alt, napisać "Skopiuj" i dostaniemy listę akcji dostępnych przez menu aplikacji z tekstem "Skopiuj" w tym "Edycja > Skopiuj". Jakże przydatne, prawda? Idealnie wpisuje się to w trend upraszczania aplikacji, tak, aby aplikacja mając trzy guzikami i jedno menu rozwijane z czterema następnymi akcjami była jak najbardziej zrozumiała i użyteczna. Na pewno w gąszczu tych 7-miu akcji będę wolał nacisnąć Alt i wpisać co chcę zrobić zastanawiając się jeszcze, czy mam napisać to po polsku, czy po angielsku i czy użyć słowa "Wydrukuj", czy "Drukuj" (bo jeszcze tłumacze się nie dogadali jakiego aspektu używać).

Pewnie zastanawiacie się jaką bym widział przyszłość dla Ubuntu, gdybym nim kierował? Na pewno nie, ale i tak napiszę. Ubuntu nie powinno na siłę tworzyć jakichś nowych ULTRA-innowacyjnych rozwiązań, które pewnie są w zamierzeniu dobre, ale zrozumiemy to dopiero, gdy zaimplementuje je np. Apple. Ubuntu powinno właśnie dobierać to co już istnieje, filtrować i ulepszać. Powinno położyć kres niedopracowanym projektom jak Unity czy GNOME 3 i przeznaczać kasę i czas deweloperów na szlifowanie UI, tak aby korzystanie z Linuksa było naprawdę proste dla zwykłego użytkownika.

Istnieją też ciekawe wyzwania (no bo tamto wyżej przyznam brzmi nudnie). Ubuntu mogłoby zaoferować możliwość uruchamiania aplikacji Androidowych. Byłby to super ruch, powieważ wtedy Ubuntu stałoby się idealnym systemem na wszelakie tablety, netbooki i inne mini-komputery.

Wyobraź sobie: możesz sobie korzystać z Androidowych aplikacji, a kiedy trzeba uruchamiasz sobie najnormalniejszego Gedita, Eclipse'a, Pidgina czy Firefoksa, drukujesz na normalnej drukarce przez USB, wystawiasz serwer FTP albo grasz w Open Arenę.

Technicznie odpalanie Androidowych aplikacji na Linuksie jest możliwe, nawet całkiem. Wystarczy uruchomić wirtualną maszynę DalvikVM a w niej aplikacje APK. Aby działały, trzeba dostarczyć implementację biblioteki standardowej Androida (np. metody interfejsu użytkownika). Można nawet się pokusić o obsługę JNI (czyli APK-ów z fragmentami skompilowanymi do kodu natywnego) z wykorzystaniem QEmu i scratchboksa, aby móc swobodnie mieszać kod dla ARM i x86/amd64.

Skoro się da, to czemu nikt tego nie zrobił? Nikomu się nie chce? A może ktoś jest zbyt zadufany i nie będzie robił takich ustępstw w stronę "wrogiej" technologii? Nie mi oceniać. Mi tylko żal, wiedząc, że rozwiązanie jest tuż za rogiem, że nikomu na tym nie zależy.

Na koniec w związku z tym, że narzekam na domyślnie skonfigurowane Ubuntu podam jak wygląda (na dzień dzisiejszy) Ubuntu, które poleciłbym z czystym sercem znajomym:

  • Baza: Xubuntu, czyli Ubuntu z XFCE zamiast Unity
  • Przeglądarka: Firefox (bo Chrome jest zbyt Google'owy)
  • Klient poczty: Claws-mail (ewentualnie Thunderbird)
  • Komunikator: Pidgin (żaden Empathy nie ma szans dorównać prostotą i po prostu dobrością Pidgina) + wtyczka libnotify do ładnych dymków z wiadomościami
  • Panel: mały panel XFCE z godziną i systrayem (czytaj o tym później)
  • Panel2: Docky z listą aplikacji (polecam bardzo ten dok) a'la Unity, ale zrobiony mniej inwazyjnie, no i można go przesuwać :P
  • Docky potrafi komunikować zdarzenia takie jak przyjście nowego maila, albo nowej wiadomości, jeśli tylko aplikacja ustawi swojemu oknu hinta "URGENT". W claws-mailu jak i w pidginie są do tego odpowiednie ustawienia bądź wtyczki

Taki system działa naprawdę miodnie, jest szybciutki i zrozumiały dla normalnego usera. Jednocześnie nie zmusza go do zrozumienia jakichś skomplikowanych konceptów i po prostu działa. I tak powinno wyglądać Ubuntu.

Boli mnie konieczność posiadania systraya. Uważam, że jego funkcjonalność da się wkomponować w dok (który już potrafi łączyć pasek ze skrótami do aplikacji z listą uruchomionych aplikacji).

Zarówno Unity jak i Docky (i inne doki też) potrafią wyświetlać na ikonce danej aplikacji np. ilość nieprzeczytanych wiadomości, jak również wyświetlać customowe opcje w menu ikonki w doku. Jeden i drugi ma do tego specjalne API i to jest bardzo słabe, bo wymaga instalowania dodatku bądź do doku, bądź do aplikacji, a przecież nie o to chodzi.

Nie od tego jest FreeDesktop.org, żeby każdy programik robił swoje API. Jest potrzeba takiego API — trzeba je ustalić, choćby jakiegoś drafcika, żeby już było wiadomo w jaką stronę to wszystko zmierza, a nie czekać aż już będzie ich 10 (w dowolnie wybranym systemie pozycyjnym). Jest API do śmietnika, jest do miniaturek, niech będzie też do menu doka.

I tak powinno działać Ubuntu. Powinno patrzyć co jest potrzebne, żeby standardowy Linuksowy desktop był bardziej użyteczny i to urzeczywistniać. Pracując z FDO i wypracowując standardowe rozwiązania zamiast narzucać swoje.

Amen.

Comments: 0

page 1 of 212next »
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License