Archiwum Szsz.pl: grudnia 2009
Rozszerzenia Chrome - Tutorial 1
czwartek, 31 grudnia 2009
Jakiś czas temu obiecałem napisać krótki tutorial dotyczący tworzenia rozszerzeń… Najwyższa pora spełnić tą obietnicę.
… ale, na początek:
Bezwstydna autoreklama
Oto drugie rozszerzenie, które popełniłem:
Tym razem jest to modyfikacja paska przewijania. W ten sposób linuksowy Chrome zachowuje spójny wygląd z resztą systemu – pod warunkiem że korzystasz z motywu Clearlook.
Mimo że powstało ono dla systemu Linux, mam potwierdzenia że działa pod każdym systemem operacyjnym.
Narodziło się jako efekt mojej frustracji spowodowanej nieomal całkowitym brakiem czytelności pasków przewijania pod Linuksem. Przy złych warunkach oświetleniowych, bardzo trudno było je dostrzec. Początkowo ograniczałem się do zmiany kolorystyki, jednak później, zachęcony rezultatami, zacząłem coraz bardziej upodabniać je do tego jak wygląda mój system.
Ok, a teraz wracając do tematu…
Tutorial
Jak już wcześniej wspominałem, rozszerzenia mają dwojaką naturę. Z jednej strony, są nowym typem aplikacji – posiadają własny proces, mogą komunikować się z całym światem, zapisywać informacje na Twoim komputerze. Z drugiej strony mają one unikatową możliwość – mogą modyfikować odwiedzane przez Ciebie strony, podłączając do nich dodatkowe skrypty.
Dziś postaram się opisać jedynie podstawy, nie będzie żadnego programowania. Powstałe rozszerzenie będzie jednak całkiem użyteczne.
Manifest
Najważniejszym plikiem jest manifest.json
.
Przynajmniej dla mnie jest to też najtrudniejszy element – za sprawą braku jakiejkolwiek diagnostyki. Najmniejszy błąd i manifest zostanie zignorowany przez przeglądarkę.
Można uruchomić Chrome z linii poleceń, wtedy pośród licznych komunikatów, będzie można przeczytać informację o przyczynie odrzucenia naszego rozszerzenia. Nie lubię tego rozwiązania, ponieważ wymaga ono restartu przeglądarki. Alternatywą jest sprawdzenie poprawności pliku próbując odczytać go za pomocą własnoręcznie napisanego programu, który będzie zawierał np takie polecenie:
eval("x="+zawartosc_manifest_json);
W ten sposób można przynajmniej wyeliminować błędy składniowe.
Oto przykładowy manifest:
manifest.json
{ "name": "BW Scroll", "description": "Black & White Scrollbar", "version": "1.0.0", "content_scripts": [{ "matches": ["http://*/*", "https://*/*"], "css": ["bwscroll.css"] }] }
Nazwa i opis rozszerzenia wraz z numerem wersji, są obowiązkowymi polami. Jednak to pole content_scripts ma kluczowe znaczenie, niesie informację o plikach, ze skryptami, oraz stronach których będą one dotyczyły. To rozszerzenie będzie niezwykle lekkie, nie będzie posiadało własnego procesu, jedynie pojedynczy arkusz stylów CSS dołączany do wszystkich stron. Może np posłużyć do modyfikacji zadanych stron, zmieniając kolor tła, lub podmieniając zestaw używanych fontów.
Skrypt
Na początek proponuję prostą re-stylizację pasków przewijania. Efekt nie będzie powalający, ale od czegoś trzeba zacząć…
bwscroll.css
::-webkit-scrollbar { background: white; } ::-webkit-scrollbar-thumb { background: black; }
Myślę że zawartość obu plików jest zrozumiała dla każdego, kto zna przynajmniej podstawy technik niezbędnych do tworzenia współczesnych stron. Selektory co prawda są specyficzne dla silnika WebKit i raczej nie polecał bym używania ich przy projekcie strony, ale niekiedy warto wiedzieć że istnieje coś takiego.
Pierwsze uruchomienie
Pora przetestować rozszerzenie. W tym celu utwórz nowy katalog, najlepiej nazwany tak samo jak rozszerzenie i zapisz w nim oba pliki. Następnie, w przeglądarce wybierz menu (klucz) -> Rozszerzenia
, włącz Tryb programisty
i po naciśnięciu przycisku Wczytaj rozszerzenie bez pakietu
wskaż ten katalog.
Na liście powinno pojawić się nowe rozszerzenie. Teraz wystarczy przeładować dowolną stronę by zobaczyć rezultat (uwaga: jeśli zainstalowałeś temat Clearlook, to musisz go wyłączyć).
Jeśli po prawej stronie, zamiast znajomego paska przewijania, widzisz brzydki czarny prostokąt, to gratuluję. Właśnie utworzyłeś pierwsze działające rozszerzenie.
Ciąg dalszy
Mając działający prototyp, proponuję zacząć własne eksperymenty. Ponieważ nowy wygląd paska, nie jest atrakcyjny, można na przykład dodać odpowiednie zaokrąglenia i gradienty, kolory nadal będą pozostawiały wiele do życzenia, ale…
bwscroll.css poprawiony
::-webkit-scrollbar { background: white; } ::-webkit-scrollbar-thumb { background: black; -webkit-border-radius: 6px; } ::-webkit-scrollbar:vertical { background-image: -webkit-gradient( linear, 0% 0%, 100% 0%, from(#ddd), to(#fff) ); } ::-webkit-scrollbar-thumb:vertical { border: 2px outset #ccc; background-image: -webkit-gradient( linear, 0% 0%, 100% 0%, from(#def), to(#234) ); }
Resztę pozostawiam Twojej wyobraźni.
Szczęśliwego nowego roku!
Odnośniki
- Getting Started. Bezcenna dokumentacja rozszerzeń.
- AutoZoom. Moje pierwsze rozszerzenie.
- Clearlook Scrollbar. Rozszerzenie będące rozbudowaną wersją opisanego tu kodu.
- Styling Scrollbars. Opis CSS używanego przy stylizacji pasków przewijania.
- Lista najciekawszych rozszerzeń
Etykiety: chrome, css, extensions, javascript, rozszerzenia
Red 07:00
Wesołych Świąt
czwartek, 24 grudnia 2009
Wesołych Świąt i szczęśliwego nowego roku wszystkim!
Red 09:49
Auto Zoom
sobota, 12 grudnia 2009
Dążenie do doskonałości
Ostatnio pisałem o rozszerzeniach (Chrome Rozszerzenia). Instalacja tych kilku drobiazgów, pozwoliła wyeliminować prawie wszystkie, przypadłości przeglądarki…
Poza jedną
Wyświetlany tekst był zbyt mały, a konieczność ciągłego powiększania odwiedzanych stron irytująca.
Odpowiednie rozwiązanie miałem już wcześniej w postaci prymitywnego skryptu Greasemonkey. Pozostało tylko dokonać kilka drobnych przeróbek, takich jak możliwość zmiany stopnia powiększenia i zapamiętywanie ustawień.
W efekcie powstało moje pierwsze rozszerzenie Google Chrome.
Oto rezultat
Krótki opis
- Automatyczne skalowanie odwiedzanych stron. Powiększenie jest zapamiętywane niezależnie dla każdej z nich.
- Domyślny stopień powiększenia/pomniejszenia nowo otwieranych stron można ustawić w
Opcjach
.
Na dziś Auto Zoom można obsługiwać tylko za pomocą myszki, sprawia też pewne problemy na stronach takich jak Google Reader.
Zachęcam do testowania
… i zapraszam wkrótce, postaram się napisać krótki tutorial na temat pisania rozszerzeń.
Etykiety: AutoZoom, chrome, programowanie, rozszerzenia
Red 01:00
Chrome - Rozszerzenia
wtorek, 8 grudnia 2009
Pisanie rozszerzeń
Firefox
Dotychczas rozszerzenia były głównym powodem do dumy programu Mozilla Firefox.
Niestety API, nie należy do przyjaznych. Nawet najmniejsze rozszerzenie wymaga od twórcy dobrej znajomości XUL i XPCOM. Jest to bardzo rozległa wiedza i niestety przydatna wyłącznie przy pracy z kodem fundacji Mozilla.
Greasemonkey
Pewnym rozwiązaniem tego problemu, jest znakomite rozszerzenie dla Firefox: Greasemonkey.
… tak znakomite, że pojawiły się jego odpowiedniki na inne przeglądarki (Safari, IE) a w niektórych jego API zostało zaimplementowane natywnie (Opera i Chrome).
Fenomen GM polega na tym, że z prostego narzędzia do łatania
stron, wyrósł bardzo solidny mechanizm rozszerzeń, z setkami skryptów publikowanych w Sieci. Obecnie GM stanowi de facto standard… a twórcy przeglądarki Firefox pracują nad własnym rozwiązaniem wzorowanym właśnie na tym rozszerzeniu (Jetpack).
Chrome
Rozszerzenia Google Chrome, są rozwinięciem koncepcji wywodzącej się z GM.
Pierwsza miła wiadomość: Do pisania wystarcza wiedza o tworzeniu stron. Dokumentacja opisująca interfejs przeglądarki, mieści się wraz z przykładami na kilku stronach.
Najciekawsza jest architektura rozszerzeń: Każde działa w systemie jako odrębny program i ma własne ukryte okno. Interakcję ze stronami WWW zapewnia mechanizm osadzania kodu JavaScript i CSS, wzorowany na wspomnianym GM. Komunikacja, pomiędzy skryptami działającymi w obrębie strony a głównym kodem rozszerzenia, odbywa się poprzez mechanizmy IPC (zdarzenia).
Opisane rozwiązanie, w połączeniu z organizacją przeglądarki, gdzie każda zakładka także jest odrębnym procesem, ma kluczowe znaczenie dla bezpieczeństwa. Struktura jest czysta, klarowna i nie pozostawia żadnych szarych stref, gdzie można obawiać się eskalacji przywilejów.
Użyteczne rozszerzenia
Ten tekst nie był by kompletny bez listy przetestowanych i używanych przeze mnie rozszerzeń:
- AntiADS
- Eliminacja reklam. Zdecydowanie najważniejsze rozszerzenie, dla każdego kto ceni sobie spokój i nie lubi być atakowany wyskakującymi, błyskającymi, natrętnymi reklamami produktów, które go w ogóle nie interesują i nie mają żadnego związku z czytanym tekstem.
- Subscribe in Feed Reader
- Ikonka kanałów RSS działająca podobnie jak w przeglądarce Firefox. Jedno z pierwszych rozszerzeń jakie powstało i przynajmniej dla mnie jedno z najbardziej użytecznych.
- Docs PDF/PowerPoint Viewer
- Umożliwia przeglądanie dokumentów PDF bez instalacji dodatkowego oprogramowania. Koniec z czytaniem o kolejnych dziurach w tych programach.
- Chrome Touch
- Przewijanie stron, w stylu podobnym do przeglądarek PDF i telefonów komórkowych. Ideał, gdy używa się ekranu dotykowego, ale i z myszką jest wygodniejszy niż rolka, czy pasek przewijania.
- Google Mail Checker
- Sprawdzanie poczty na Gmail. Rozszerzenie łatwo dostosować do obsługi kont GoogleApps. Jeśli znajdę chwilę, to zamieszczę zmodyfikowaną wersję jako przykład budowy rozszerzeń.
- Google Wave Checker
- Analogicznie jak Gmail, tyle że sprawdza Wave.
Obecnie powstaje coraz więcej rozszerzeń integrujących Gmail, Wave, Kalendarz itp, dla tego warto zainteresować się również innymipowiadamiaczami
- Google Tasks
- Wyświetla listę TODO z Gmail.
- GetYouTube
- Pobieranie filmu z Youtube jako mp4. To rozszerzenie jest bezpośrednią przeróbką znanego skryptu Greasemonkey
O Google Chrome pisałem już wielokrotnie…
Na początku dość chłodno, później coraz cieplej.
Jednak zawsze zaznaczałem że ma olbrzymi potencjał, głównie za sprawą znakomicie przemyślanej architektury. Od początku zwracałem uwagę na wkład specjalistów od systemów operacyjnych w rozwój tego programu. To jest coś obok czego nie można przejść obojętnie.
Wreszcie, gdy spróbowałem używać tej przeglądarki nieco dłużej, polubiłem ją pomimo dotkliwych braków (ostre krawędzie).
Największymi zaletami Chrome, jest wyraźnie lepsza architektura i znacznie większa wydajność w porównaniu z konkurentami – szczególnie w systemie Linux.
Prawdziwy przełom nastąpił, gdy zainteresowałem się rozszerzeniami…
W efekcie, żegnam się z Mozilla Firefox i przesiadam się na Google Chrome.
Odnośniki
- Dokumentacja dla twórców rozszerzeń
- code.google.com
- Oficjalne repozytorium rozszerzeń
- chrome.google.com/extensions
- Nie oficjalna strona z rozszerzeniami
- chromeextensions.org
- Pierwsze dwa rozszerzenia (obsługa RSS i Gmail)
- code.google.com/chrome/extensions/samples.html
- Dostęp do wersji beta i developerskich Chrome
- www.chromium.org
Etykiety: chrome, greasemonkey, rozszerzenia, system
Red 22:57