Im a rough boy, Im a rough boy.

Niedziałające przyciski w aplikacjach Java i Flash

Ostatnia aktualizacja Ubuntu zawiera nową wersję biblioteki GTK+, w której kilka rzeczy się troszeczkę zmieniło na lepsze. Wiadomo “lepsze jest wrogiem dobrego” i coś musiało się zepsuć, padło na ulubionego Eclipse’a oraz większość aplikacji stworzonych we Flash’u.

Objawia się to tym, że część przycisków działa dobrze np. Next, Back w Eclipse, natomiast inne działają źle i tylko wyglądają na wciśnięte – np przyciski Finish w Eclipsie, czy przyciski na Youtube (play, przewijanie). Najbardziej jednak irytowało mnie zepsute ustawianie meczu w Hattric’u :) . Problem występuje prawdopodobnie w większej liczbie aplikacji napisanych w Javie lub we Flashu.

Rozwiązanie jest dość proste dla Eclipse wystarczy stworzyć prosty skrypt do uruchamiania, oczywiście podając dobrą ścieżkę. Przykładowy skrypt powinien wyglądać mniej więcej tak:

#!/bin/sh
export GDK_NATIVE_WINDOWS=1
~/Programy/eclipse_2.1/eclipse

Dla Flasha należy przeedytować skrypt z lokalizacji /usr/lib/nspluginwrapper/i386/linux/npviewer np:

gksudo gedit /usr/lib/nspluginwrapper/i386/linux/npviewer

Należy dopisać ustawienie zmiennej export GDK_NATIVE_WINDOWS=1

#!/bin/sh
TARGET_OS=linux
TARGET_ARCH=i386
export GDK_NATIVE_WINDOWS=1
. /usr/lib/nspluginwrapper/noarch/npviewer

ChromeOS in a box

Dzisiaj na Google Readerze mignął mi post z bloga I’ Been to Ubuntu o możliwości sprawdzenia jednej z wersji rozwojowych systemu ChromeOS. W sieci dostępny jest obraz dysku VMWare ze skompilowanym systemu ChromeOS. Można go także odpalić w VirtualBoxie, więc postanowiłem spróbować i wrzucić tutaj kilka screenów.

Czas startu jest dość krótki i prawi od razu widzimy:

Ekran logowania

Ekran logowania, podajemy oczywiście swój login i hasło do gmaila

następnie:

Autoryzacja ...

Autoryzacja ...

wcześniej miga jednak takie coś:

Hmm :)

Hmm :)

i właściwie to zastanawia mnie czy nie jest jakaś podróbka :)

Aplikacje Googla

Aplikacje Googla

Praktycznie wygląda jakby cały ChromeOS zawierał tylko przeglądarkę Chrome, …fajne?

ostatmnio otwieran strony

ostatnio otwierane strony

Jedną z niewielu cech, które wyglądają na nowe to wskaźnik naładowania baterii oraz opcja wyłączenia sieci.

Ustawienia sieci

Ustawienia sieci

Eclipse, Mylyn i Gmail – prosta recepta na żółte karteczki

Od dłuższego czasu chodziło mi po głowie uruchomienie i korzystanie w Eclipsie z Mylyn‘a. Jednak pierwsze spotkanie było mało owocne. Ok 1,5 roku temu dostępne były tylko connectory do Trac’a i jeszcze 2-3 repozytoriów zadań. Trac i jego tickety wydaje się w miarę rozsądnym narzędziem. Samo połączenie Mylyn i Traca ze względu na potrzebę instalacji pluginu Trac XML-RPC Plugin i jednoczesnym brakiem uprawnień, zakończyło się niepowodzeniem.

Kiedy w pracy straciłem kartkę długą ‘listą TODO’ pomyślałem, że w wolnym czasie spróbuję podejść do Mylyna jeszcze raz. Przy okazji instalacji nowego Eclipse Galileo, postanowiłem doinstalować connectory do Traca i spróbować jeszcze raz. Oczywiście w oczy rzuciło mi się coś innego – connectory do Gmaila oraz Google Calendar… Szybkie zaznaczenie, szybka instalacja…

W widoku Task Repositories dodajemy nowe repozytoriom tasków, jako typ wybieramy Gmail.

Wybieramy typ repozytorium

Typ repozytorium

W ustawieniach podajemy login i hasło wymagane do logowania w googlach:

Dane logowania

Dane logowania do Gmail'a

W widoku Task List klikamy na właściwości i ustawiamy jaki label powinien być zaciągany jako lista zadań:

Wybór etykiety Gmail'a

Wybór etykiety Gmail'a

Na liście zadań otrzymujemy wszystkie emaile oznaczone odpowiednim labelem z Gmail’a

Lista z zadaniami

Lista z zadaniami z Gmail'a

.. i to wszystko na szybki początek. Żółte karteczki, także te w iGoogle, papier i inne tego typu akcesoria możemy odstawić :)

PHP 5.3.0

Pojawiła się długo oczekiwana nowa wersja PHP oznaczona wersją 5.3.0.

Wśród nowych ficzerów otrzymujemy:

  • namespace – przestrzenie nazw dla stałych, funkcji i klas.
  • late static binding – czyli mechanizm późnego rozwiązywania referencji do klasy. Przyda się bardzo podczas programowania ze statikami.
  • __callStatic() – nowa, magiczna metoda, wywoływana w momencie statycznego wywołania niedostępnej/niezdefiniowanej metody
  • closures – domknięcia, znane także pod pojęciem anonimowej funkcji, czy funkcji lambda, popularnie stosowane w JavaScripcie oraz jQuery.
  • NOWDOC – podobne do HEREDOC, jednak całkowicie bez parsowania treści
  • garbage collection – opcjonalnie pozwala na “grzebanie w śmieciach”, inaczej daje dostęp do poprzednich wartości zmiennej.
  • ternary operator “?:” – jeszcze bardziej skrócona wersja składni if
  • goto/jumpToLabel – można go użyć do przeskoczenia z jednego miejsca skryptu do innego oznaczonego labelem, budzi dużo, niezdrowego podniecenia na blipie na tagu #php
  • mysqlnd – phpowy, natywny sterownik do mysqla, zamiennik libmysql. Zapewne komunikacja z bazą stanie się efektywniejsza.
  • w bonusie mamy spore przyśpieszenie działania skryptów, w wersjach RC dochodzące do 30%
  • sekcje w php.ini – dodano nowe sekcje ([HOST=], [PATH=]) do konfiguracji środowiska per host i per path

Mamy także nowe rozszerzenia:

  • ext/phar – PHP Archive – zbuduje nam paczkę z aplikacją
  • ext/intl – wprowadza szereg nowych funkcjonalności wpierających internacjonalizację
  • ext/fileinfo – klika funkcji wspierających rozpoznawanie ‘content type’ pliku
  • ext/sqlite3

a usunięte zostały:

  • ext/mhash na rzecz ext/hash
  • ext/msql
  • ext/pspell na rzecz ext/enchant
  • ext/sysbase na rzecz ext/sysbase_ct
  • zend.ze1_compatibility_mode

Problemy z podpowiedzią składni w PDT 2.0

Od pewnego czasu zauważyłem, że w niektórych projektach mam podpowiedzi do wbudowanych funkcji PHP, a w innych tylko podpowiedzi z kodu zawartego w projekcie. Brak podświetlania objawiał się głównie w tych zaimportowanych z SVN’a.

W nowych projektach wszystko było w porządku, ale Eclipse nie zawsze dobrze importuje projekty z SVN’a. Sprawdziłem pliki w projekcie, brakowało pliku .buildpath i katalogu .settings. O ile brak .settings można przeżyć, to plik .buildpath jest nam niezbędny do działania podpowiedzi w projektach PHP.

Wystarczy więc go dograć z nowego lub działającego projektu.

Istotna zawartość pliku .buildpath:

<?xml version=”1.0″ encoding=”UTF-8″?>
<buildpath>
<buildpathentry kind=”src” path=”"/>
<buildpathentry kind=”con” path=”org.eclipse.php.core.LANGUAGE”/>
</buildpath>

W pliku tym pojawiają się także informacje o zewnętrznych bibliotekach, więc lepiej sobie ich nie wycinać :)

Zewnętrzne biblioteki w PDT

Kiedy pracujemy z kilkoma projektami, wykorzystując wspólnie biblioteki, np. Zend Framework czy PEAR, możemy taką bibliotekę dołączyć do naszego projektu.

We właściwościach projektu wybieramy PHP Include Path, na zakładce Libraries wybieramy Add External Source Folder i wskazujemy katalog z projektem.

Od tego momentu kod z tej biblioteki jest analizowany przez Eclipse i możemy cieszyć się uzupełnianiem składni z tegoż projektu.

Projekt z SVN i brak podpowiedzi

Czasem zdarza się, że podczas importowania projektu z SVN, w naszym projekcie w ogóle nie działa podpowiadanie składni. Gdy podczas importu kroku Check out As wybierzemy Check out as a project with the name specified Eclipse utworzy nam zwykły projekt. Nie posiada on odpowiedniego charakteru np. PHP Project.

Rozwiązaniem jest edycja pliku .project w katalogu naszego projektu. Za naturę projektu odpowiadają elementy projectDescription/natures/*. Dla projektu PHP powinniśmy dodać element <nature>org.eclipse.php.core.PHPNature</nature>, następnie restart Eclipsa i możemy się cieszyć działającym projektem.

Zawartość pliku .project poprawnie działającego projektu PHP:

<?xml version=”1.0″ encoding=”UTF-8″?>
<projectDescription>
<name>mojProjekt</name>


<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
</natures>
</projectDescription>

Eclipse PDT 2.0 Release – Hierarchia Typu (Hierarchy Type)

Pokazuje hierarchię dziedziczenia wybranego typu. Do wyboru są 3 widoki: Type Hierarchy, Supertype Hierarchy, Subtype Hierarchy.

Widok Type Hierarchy pokazuje umiejscowienie wybranego typu w drzewie, wraz z wszystkimi innymi klasami.

Hierarchia Typu

Hierarchy Type

Supertype Hierarchy pokazuje nadtypy wybranego typu.

Supertype Hierarchy

Supertype Hierarchy

Subtype Hierarchy pokazuje podtypy wybranego typu

Hierarchy Subtype

Hierarchy Subtype

Eclipse PDT 2.0 Release – Wskaźniki przedefiniowania/implementacji metod (Override Indicators)

Rozróżniane są dwa rodzaje wskaźników – przedefiniowania (przesłonięcia) i implementacji.

Wskaźnikiem implementacji jest biały trójkąt pojawiający się z lewej strony deklaracji metody. Pojawia się przy zaimplementowanej metodzie. Na potrzebę implementacji może wskazywać interfejs lub klasa abstrakcyjna.

Zielony trójkąt to wskaźnik przedefiniowania metody.

Wskaźnik przedefiniowania

Wskaźnik przedefiniowania/implementacji

Eclipse PDT 2.0 Release – co nowego? Oznaczanie wystąpień

Pokazuje wystąpienia w kodzie PHP: zaznaczonych zmiennych, stałych, w klasach użycia: pól, metod, stałych, wyjścia w blokach switch i pętlach poprzez deklaracje break.

W kodzie HTML podświetlany jest początek oraz koniec tagu.

Działa to w ten sposób, że po ustawieniu kursora w kodzie PHP, Eclipse pokazuje w danym pliku wystąpienie odpowiedniego elementu w kodzie poprzez kolorowe podświetlenie w kodzie oraz . Rozróżniane są wystąpienia odczytujące daną wartość lub użycie metody (read occurrence) oraz modyfikującą daną wartość (write occurrence).

Wystąpienia włączamy wyłączamy poprzez kombinację klawiszy Alt+Shift+O lub poprzez przycisk na pasku narzędziowym:

Przycisk oznaczania wystąpień.

Przycisk oznaczania wystąpień.

W preferencjach możemy ustawić co ma być podświetlane w kodzie: Preferences/PHP/Editor/Mark Occurrences.

Ustawienia dotyczące wyświetlania wystąpień

Ustawienia dotyczące wyświetlania wystąpień

Można także zmienić sposób kolorowania wystąpień

Zmiana kolorowania wystąpień w PDT 2.0

Zmiana kolorowania wystąpień w PDT 2.0

Wystąpienia pól klasy

Na poniższym obrazku widać jak oznaczana są wystąpienia pól klasy w kodzie.

Wystąpienia pól klasy, odczyt i zapis

Wystąpienia pól klasy, odczyt i zapis

Podświetlenie stałych klasy

Podświetlenie użycia stałej klasy

Podświetlenie użycia stałej klasy

Podświetlenie użycia metod

Podświetlenie dla użycia metod

Podświetlenie dla użycia metod

Użycie break

Poniżej kilka sposobów podświetlania deklaracji break i jej użycie w pętli i bloku switch.

Użycie break w pętli

Użycie break w pętli

Podświetlanie break w switchu

Podświetlanie deklaracji break w bloku switch

Podświetlenie deklaracji break 2 w bloku switch i pętli

Podświetlenie deklaracji break 2 w bloku switch i pętli

Podświetlanie tagów HTML

Podświetlanie tagów HTML

Podświetlanie tagów HTML