Přeskočit navigaci

Tento blog byl již ukončen. Aktuální novinky ze světa Mozilly nyní hledejte na webu Mozilla.cz.

Přednáška o problematice lokalizace aplikací

Včera jsem se zúčastnil zajímavé přednášky na téma Lokalizace a globalizace aplikací, kterou na Západočeské univerzitě prezentovali zástupci firmy Syntactic Sugar. Slajdy z prezentace jsou k dispozici. Zájemcům o tuto problematiku je doporučuji projít a vyzkoušet si demonstrační aplikace. Přiznám se, že jsem třeba netušil, že společnost Microsoft má své překlady k dispozici na ftp. Škoda jen, že zatím není k dispozici příjemnější vyhledávání, které je slibováno. Sjednocení terminologie v překladech by to rozhodně pomohlo.

MozBackup 1.4.4 Beta

Po delší době ticha jsem uvolnil MozBackup 1.4.4 Beta. Nová verze s sebou přináší podporu Mozilla Firefoxu 2.0 Alpha 1 (Bon Echo) a přidává podporu několika dalších rozšíření. Jedná se o rozšíření: Clippings, Crash Recovery, Download Manager Tweak, File Title, ForecastFox, Greasemonkey, HTML Validator, Lightning, Menu Editor, Mouse Gestures, Sage, Signature, Slim Extension List, Stylish, Tab Mix Plus, Tabbrowser Extensions a Web Developer.

Bylo též opraveno několik drobných chyb. Nová verze je k dispozici ke stažení a uvítám ohlasy. Podotýkám, že se jedná o vývojovou verzi a není proto určena pro důležité zálohování.

Rozšíření AboutPlug a File Title pro Firefox 2.0 Alpha 1

Provedl jsem aktualizace rozšíření AboutPlug a File Title pro Mozilla Firefox na verze 1.1. Ty přidávají kompatibilitu s Firefoxem 2.0 Alpha 1.

Firefox 2 Alpha 1 (Bon Echo)

Dnes spatřila světlo světa první alpha verze Firefoxu 2. Nese označení Bon Echo a je určena pro vývojáře a testery. Co je nového se dozvíte v poznámkách k vydání a stáhnout si ji můžete v angličtině na ftp.mozilla.org. Nedalo mi to, abych se na novinky nepodíval trochu blíže.

Upravené prohlížení v panelech

První, čeho si uživatel všimne po otevření více panelů, je nové umístění tlačítka pro zavírání panelů. Místo původního umístění vpravo na liště panelů je nyní zavírací tlačítko na každém panelu. Tato změna oproti Firefoxu 1.5 byla provedena na základě studie. Blíže se o této změně rozepisoval hlavní vývojář Firefox Ben Goodger ve svém blogu. Trochu zamrzí, že nejde v dialogu Možnosti nastavit původní umístění zavíracího tlačítka.

Panely

Upozornění: Pozor na používání rozšíření, které pracují s panely. V nové verzi Firefoxu nemusí fungovat korektně, takže se raději přesvědčte, že jsou s novou verzí kompatibilní.

Nové provedení záložek a historie

Hlavní novinkou této Alpha verze je nové provedení záložek a historie označované jako Places. Celá idea spočívá v tom, že záložky, aktivní záložky a historie budou spravovány v rámci jednoho dialogu. To s sebou přináší zejména snazší možnost správy a možnost vyhledávání napříč jednotlivými částmi (záložky, historie apod.). V první Alpha verzi se zatím nalézá pouze část toho, čeho se dočkáme ve finální verzi.

Places

Změn se též dočkaly související položky v hlavní nabídce. Teď mluvím hlavně o nabídkách History a Bookmarks. Všechny nové volby vesměs otevřou dialog Places a v něm vyberou konkrétní funkci, kterou jsme zvolili v hlavní nabídce. Celkově pěkně provedená integrace, která ušetří čas. Dialog na přidání nové záložky má novou podobu, i když bych řekl, že je asi silně provizorní, což je patrné na první pohled.

Nabídka History

Další změnou, která s touto funkcí souvisí, je jejich jiné pozadí. Ve Firefoxu 1.5 byly záložky a historie ukládány v souborech s danou strukturou. Firefox 2.0 Alpha 1 přichází s ukládáním na databázovém principu, který je založen na databázové knihovně SQLite. Uvedená změna by měla přinést vyšší spolehlivost a hlavně lepší možnosti pro implementaci nových funkcí souvisejících práve se záložkami a historií. Dalším kladem bude též vyšší rychlost práce zejména s větším množstvím záložek a delší historií.

Z výše uvedeného popisu už nejspíš tušíte, že v uživatelském profilu nastanou změny. Připravil jsem tabulku, která ukazuje, do jakých souborů se nyní budou ukládat záložky apod. s informací, jaké soubory k tomu sloužily ve Firefoxu 1.5 a starší.

Funkce <= Firefox 1.5 >= Firefox 2.0 Alpha1
Záložky bookmarks.html bookmarks_history.sqlite
Historie history.dat bookmarks_history.sqlite
Historie formulářů formhistory.dat formhistory.sqlite

Jak jste si asi všimli, záložky a historie jsou umístěny ve stejném datovém souboru. Nejspíš to souvisí se snazší prací programu s Places. Negativem je zálohování, protože nyní zálohováním datového souboru zazálohujete společně záložky i historii, i když třeba chcete pouze záložky. Tuto záležitost snadno vyřešíte funkcí Export v dialogu Places.

Co se týče přechodu na novější datové soubory, i na to se pamatuje. Při prvním spuštění se provede import dat ze starších souborů do nových. Z mé zkušenosti ovšem tento import zatím nefunguje příliš spolehlivě, protože výsledkem importu jsou na první pohled objemné soubory, se kterými program pracuje značně pomalu. Tato záležitost však bude do finální verze vyřešena.

Pozor na jednu zrádnost. Pokud začnete používat Firefox 2.0 Alpha 1 a po čase zjistíte, že je přecijen ještě příliš vývojový na běžné používání a vrátíte se k Firefoxu 1.5, o změny provedené ve Firefoxu 2.0 Alpha 1 přijdete, protože se uloží do nových datových souborů, které Firefox 1.5 nezná. S tím souvisí řada dalších důvodů, proč vývojovou verzi nepoužívat.

Ostatní drobnosti

V podobných dokumentech většinou bývá zmíněno, co je nového pro webové vývojáře. Odpověď zde je celkem jednoduchá: až na podporu svg:textPath v SVG nic. Důvodem je to, že Firefox 2 bude založen na stejném renderovacím jádře jako Firefox 1.5 tj. Gecko 1.8. Nové renderovací jádro bude k dispozici ve Firefoxu 3. Nemá tedy smysl zkoušet ACID2 test a podobné záležitosti. Ty si můžete zkoušet na vývojové verzi Firefoxu 3.

V poznámkách k vydání se píše ještě o vylepšení správy rozšíření (pozadí práce s rozšířeními) a vylepšení formátu vyhledávacích modulů. Osobně nevím, co se za tím přesně skrývá, takže se o tom nebudu blíže rozepisovat.

Co ještě zcela nefunguje

Při zkoušení jsem narazil na celou řadu věcí, které mi nefungují.

  • Pod View -> Sidebars nic nenaleznu.
  • Volba History -> Clear History je nefunkční.
  • Správa Places je prozatím nespolehlivá. Kolikrát se stane, že smazaná záložka z přehledu nezmizí a pomůže až zavření dialogu a jeho opětovné otevření.
  • Funkce na import a export záložek v dialogu Places nefunguje.

Zhodnocení

Firefox 2.0 Alpha 1 přináší zejména Places, i když ne ve finálním stavu. S používám této verze budete mít spíše problémy, takže není žádným přínosem pro koncové uživatele. Těm doporučuji používat nadále Firefox 1.5 a počkat si na Firefox 2.0 ve finálním provedení. Celkově se mi novinky zamlouvají, i když jich je zatím jen pár. Dle dění v Bugzille se však máme na co těšit.

Kdy upgradovat na novější verzi Firefoxu

Základní poučka by se dala shrnout do jedné věty: upgradovat kdykoliv, kdy je dostupná aktualizace stabilní verze. Ve Firefoxu zvolíte Nápověda -> Zkontrolovat aktualizace a hned vidíte, zda je dostupná novější verze Firefoxu. V zásadě by nebylo dále o čem psát, ale ...

Firefox je většinou k dispozici ve dvou verzích. První je stabilní. To je ta, která je určena pro koncové uživatele (nyní je to Firefox 1.5). Stáhnete si ji na serveru CZilla.cz či Mozilla.com. Bohužel novináři jsou senzace chtiví a občas ohlašují novou verzi dříve, než skutečně vyjde. Na to pozor! Obrana je proti tomu jednoduchá. Pokud nejsou o nové verzi žádné informace na Mozilla.com (příp. Mozilla.org pro vývojové verze), nic nevyšlo a jedná se o tzv. novinářskou kachnu.

Pro 99% z vás je vhodné používát právě a pouze stabilní verze. Existuje pro to několik dobrých důvodů:

  • Používáte stabilní a ozkoušenou verzi, která byla vyladěna tak, abyste s ní měli co nejméně problémů.
  • Pro stabilní verzi existuje velké množství rozšíření.
  • Uživatelé stabilních verzí snáze seženou podporu, která jim zodpoví jejich dotaz.

Nyní k druhé skupině verzí. Jedná se o ty vývojové a většina z vás je zná jako Alpha, Beta či RC verze. Ty jsou určeny primárně pro vývojáře a testery – ne pro koncové uživatele! Bohužel řada uživatelů ráda "zakázané ovoce" a jakmile taková verze vyjde, okamžitě si ji nainstalují. Jenže pochopitelně často narazí na celou řadu problémů:

  • Program vytuhává či se chová nestandardně.
  • Řada rozšíření není pro vývojovou verzi dostupná.
  • Zmizí záložky či jiná důležitá data.
  • Samozřejmě nejsou poskytovány bezpečnostní aktualizace.

Stojí vám to za podobné problémy? Myslím, že ne. Samostatnou kapitolou jsou pak problémy s uživatelským profilem, který zprvu používáte ve stabilní verzi, následně ve vývojové, a pak se po problémech vrátíte zpět. Mixování stabilní a vývojové verze může s uživatelským profilem nadělat pěknou paseku.

Proč to celé píšu? Brzy vyjde Firefox 2.0 Alpha 1 a řada magazínů bude opět psát o nové verzi Firefoxu. Slůvko "vývojová" jim jaksi vypadne. A uživatelé budou instalovat a zadělávat si na problémy. Buďte tedy rozumní a zůstaňte u používání stabilní verze tj. Firefoxu 1.5.0.x. Touto volbou jenom získáte.

Není verze jako verze

Dnes jsem se na pár serverech dočetl (např. ABCLinuxu.cz), že vyšel Firefox 2.0 Alpha 1. Vtip je v tom, že nic takového není pravda.

Novináři často hledají senzace. Chtějí informovat jako první o tom či onom a přestřelují. Sotva se na ftp.mozilla.org objeví soubor firefox-2.0a1.en-US.linux-i686.tar.gz (jedno v jakém adresáři), už píší, že vyšel Firefox 2.0 Alpha 1. Ve skutečnosti se však jedná o nedoladěnou vývojovou verzi. Uživatel je mystifikován a dost často na to doplácí.

Proto bych byl rád, kdybyste přemýšleli, když takovou novinku čtete. Instalování něčeho, o čem si někdo myslí, že se jedná o finální produkt, se může vymstit. Výsledek se nemusí mít očekávaná chování, můžete přijít o data či si zaděláte na další problémy.

Jeden důležitý tip. Pokud někde narazíte na odkaz ke stažení verze Firefoxu (či Thunderbirdu) a na webu Mozilla.org o ní nebude žádná zmínka, podívejte se, zda URL obsahuje adresář releases. Pokud ne, někdo si zas myslel, že je chytrý a od takové verze ruce pryč.

Lightning 0.1

Zatím bez nějaké velké slávy vyšel Lightning 0.1. Lightning je rozšíření pro Thunderbird, které se snaží o přidání kalendářových funkcí (správa času, úkolů apod.) přímo do e-mailového klientu.

Asi si hned řada z vás položí otázku, proč Lightning, když už je tu Mozilla Calendar. Podle výše uvedeného popisu by se totiž zdálo, že se oba snaží o totéž. Calendar je též rozšíření, které přidává kalendářové funkce. Rozdíl mezi těmito dvěma produkty je ovšem v integraci. Zatímco Calendar je k dispozici pro Firefox, Thunderbird a SeaMonkey (Mozilla Suite) v podobě samostatného okna nad oknem samotné aplikace, Lightning je nyní k dispozici pouze pro Thunderbird a jeho snahou je přímá integrace do prostředí e-mailového klientu tj. do okna, kde pracujete s poštou.

Lightning se sliboval hodně dlouho. Nejprve se mluvilo o vydání v létě, pak v listopadu, následně v lednu a nyní konečně vyšel (půlka března). K dispozici je verze 0.1 a je určena pro Thunderbird 1.5. Po instalaci Lightningu bude okno Thunderbirdu vypadat nějak takto:

Náhled Lightningu

Můžete si všimnout, že okénko s kalendářem a seznamem událostí a úkolů je v levém sloupci pod složkami s poštou. To je docela nešikovné, pokud máte více poštovních účtů pod sebou či větší množství složek. Vzhledem k tomu, že jsem vždy považoval okénko s kalendářem jako takovou zbytečnost navíc, vyzkoumal jsem způsob, jak ho skrýt. Postačí, když do souboru userChrome.css přidá následující kód.

#ltnMinimonth {visibility:collapse;}
#folderPaneBox > vbox {max-height:(hodnota)px;}

Pomocí prvního řádku kódu skryjete okénko s kalendářem, pomocí druhého můžete nastavit maximální výšku seznamu s úkoly. Osobně bych ale radši přepínání mezi jednotlivými částmi aplikace ala Outlook.

Samotný Lightning 0.1 je vývojová verze. Pokud hledáte stabilní řešení, poohlédněte se spíš po Mozilla Calendar či Mozilla Sunbird. Autoři slibovali, že první verze bude bez chyb, které by způsobovaly ztrátu dat. To se však ne zcela povedlo. Osobně bych tedy Lightning 0.1 bral jako ukázku toho, že se něco takového vyvíjí a nevypadá to zas až tak zle. Prozatím je to takový horší Mozilla Calendar, ale má to perspektivu do budoucna. Chyb se však najde požehnaně.

Bylo by hezké, kdyby byl Lightning jednoho dne součástí Thunderbirdu (byť volitelnou), ale to je spíš hudba budoucnosti. Prozatím se k tomu nikdo nevyjádřil. Plánů do budoucna je ovšem hodně.

Proč lze přes Thunderbird odeslat menší zprávy než přes webové rozhraní?

Občas se ve fóru podpory uživatelů aplikací Mozilla objeví dotaz, proč v Thunderbirdu nejde odeslat zpráva s přílohou, která přes webové rozhraní freemailu jde. Odpověď je vcelku jednoduchá.

Pošta se odesílá přes SMTP server. Každá síť má svůj vlastní či se využívá přímo SMTP server poskytovatele. Když si v Thunderbirdu vytváříte nový účet, zadáváte jeho adresu. Každý takový server má nastaveno omezení, jak velkou e-mailovou zprávu přes něj lze poslat. Většinou je tato hodnota nastavena na pár MB. V případě mnou používaného SMTP serveru jsou to 2 MB.

Když skrze webové rozhraní pošlete e-mailovou zprávu s přílohou, děje se úplně to samé. Jen je využit SMTP server poskytovatele freemailu (Seznam, Centrum, Atlas apod.), který uživatel přistupující k poště přes Thunderbird nemůže použít. Tento server má nastavenou jinou maximální velikost zprávy, kterou lze odeslat. Toť vše. Jak velkou zprávu budete moci odeslat závisí na nastavení SMTP serveru a na straně žádného e-mailového klientu to nemůžete změnit.

Další možným zdrojem problému může být používání některého z antivirových programů (zvlášť Avastu).

Poznámka: Pokud chcete odesílat e-mailem x MB přílohu, zvažte, zda není vhodné použít nějakou webovou úschovnu a poslat dotyčnému pouze odkaz, kde si může soubor stáhnout. Osobně nejsem rád, když dostávám e-mailem x MB přílohu bez varování.

Firefox a paměť

Řada diskusí o Firefoxu se týká jeho paměťových nároků. Rozhodl jsem se tedy o tom sepsat obsáhlejší příspěvek, který se pokusí shrnout, čím jsou často velké paměťové nároky způsobeny, proč je jeden pozoruje a jiný ne, jak tento problém řešit a jak redukovat paměťové nároky Firefoxu.

Problematická rozšíření

Pomáhal jsem ve fóru podpory řešit problémy řady uživatelů Firefoxu. Stěžovali si, jak jim Firefox běží pomalu, že jim padá, chová se nestadardně apod. V přibližně 90% případů bylo na vině některé z nainstalovaných rozšíření. Pokud tedy přijde člověk do fóra a řekne "navštívil jsem tu a tu stránku a Firefox mi v paměti zabírá xxx MB" a někdo další napíše, že tento problém nepociťuje, dá se téměř jistě říci, že problém je na straně některého z rozšíření. Samozřejmě za předpokladu, že oba používají stejnou verzi Firefoxu.

Rozšíření jsou obecně potencionální problém. Zatímco Firefox vyvíjí řada zkušených vývojářů, každý kus kódu prochází pečlivou revizí, vše se testuje, tvorba rozšíření je většinou "one man show" tj. jeden člověk dělá vše. Díky tomu je kvalita rozšíření různá. Nelze se tedy divit, že řada rozšíření obsahuje memory leaky. Ty se pak chybně přičítají Firefoxu samotnému. Pokud tedy máte pocit, že si Firefox bere hodně paměti, zamyslete se nad nainstalovanými rozšířeními. Patrně bude problém v některém z nich.

S rozšířeními souvisí problém přechodu na novější verzi Firefoxu. Pokud uvedené problémy s pamětí pozorujete po přechodu z Firefoxu 1.0.x na 1.5, doporučuji vytvořit si nový profil a přesunout do něj data ze starého profilu. Firefox 1.5 obsahuje jinou správu rozšíření než Firefox 1.0.x. Některá rozšíření se s tímto přechodem nemusela vyrovnat. Poohlédněte se po novějších verzích těchto rozšíření.

Na základě osobních zkušeností tvrdím, že za většinu zvýšených paměťových nároků mohou nainstalovaná rozšíření tj. produkty třetích stran. Nemusí jít pokaždé o rozšíření, též některé zásuvné moduly mohou být zdrojem problémů. Pokud někdo tvrdí, že s Firefoxem 1.0.x nemá žádný problém a problémy vznikly až s verzí 1.5, s největší pravděpodobností za to opět může některé z rozšíření. Řešení opět spočívá v novém uživatelském profilu.

Aktualizujte

Základní kámen úrazů u memory leaků jsem popsal výše – jsou to rozšíření. Pokud chcete snížit paměťové nároky, používejte vždy poslední verzi Firefoxu. V době psaní tohoto článku je to Firefox 1.5.0.1. S každou novou verzí jsou opraveny chybky související s prací s pamětí. Pokud tedy někdo tvrdí, že Firefox 1.0.x obsahuje méně memory leaků než Firefox 1.5, je to jen jeho optický dojem. Během vývojového cyklu byla řada chyb práce s pamětí odstraněna. Pokud se vám tedy zdá, že si Firefox 1.5 zabírá více paměti než verze 1.0.x, je tu buď způsobeno rozšířeními či funkcemi, které budou popsány níže.

Další rada je tedy zřejmá. Používejte vždy poslední verzi Firefoxu. V hlavní nabídce zvolte Nápověda -> Zkontrolovat aktualizace. Díky rozdílovým aktualizacím ve Firefoxu 1.5 se stáhne jen pár set kilobajtů, když aktualizujete na novější verzi Firefoxu 1.5. Totéž provádějte u rozšíření. Řada autorů v poslední době odstraňuje memory leaky ve svých rozšířeních. Zvolte v nabídce Nástroje – > Správce rozšíření, klepněte na tlačítko Vyhledat aktualizace a proveďte instalaci novějších verzí rozšíření.

Problematická rozšíření jsou AdBlock (přejděte na AdBlock Plus), Fasterfox, Session Saver a řada dalších. Některé jsou opraveny v posledních verzích, jiné ne. Problémem může být též Java. Aktualizujte na nejnovější verzi (nyní 1.5.0_06). Problém je též se staršími verzemi Adobe Acrobat. Aktualizujte na poslední verzi (nyní 7.0.5). Používáte Firefox Preloader? Nedělejte to! Tento program realizuje takové úpravy, které vám mohou paměťové nároky značně zvýšit. Všechny uvedené případy jsou opět problémem rozšíření a zásuvných modulů třetích stran.

Množství zabrané paměti též souvisí s tím, kolik máte v počítači operační paměti (MB RAM). Pokud ji máte hodně, je logické, že si jí Firefox zabere pro svuj rychlejší chod. Pokud jí máte málo, více stránkuje na disk a v paměti je menší část. Takto se chovají všechny programy.

Jak redukovat zabírání paměti

Krom výše uvedených obecných doporučení, které vás zbaví velkých problémů s pamětí, existuje celá řada předvoleb, které vám umožní zredukovat využívání paměti Firefoxem. Většina je konfigurovatelná před konfigurační stránku about:config (Co je about:config?).

Upozornění: Některé z níže uvedených změn mohou zpomalit práci s Firefoxem. Kdykoliv se však můžete vrátit do původního stavu, když vám nebudou provedené změny vyhovovat.

Firefox používá vyrovnávací paměť pro rychlejší načítání vyrovnávací paměť, kam se ukládají obsahy již navštívených stránek. Díky tomu se již navštívené stránky při příštím spuštění načítají rychleji, protože se např. obrázky nemusí stahovat znovu z webu, ale vezmou se z vyrovnávací paměti.

Firefox obsahuje dvě vyrovnávací paměti. Jedna je disková, druhá je přímo v operační paměti. Množství zabrané paměti pro operační vyrovnávací pamět je přimo závislé na její velikosti. Vezme se tedy určité procento z celkové paměti. Pokud tedy máte 512 MB RAM, vezme si Firefox pro tuto pamět méně, než když máte 1 GB RAM. Pokud chcete tuto paměť vypnout, nastavte předvolbu browser.cache.memory.enable na false. Pokud chcete nastavit její velikost na nějakou pevnou hodnotu, přidejte novou předvolbu browser.cache.memory.capacity a nastavte ji na maximální velikost, kterou vyrovnávací paměť může mít (v kilobajtech).

Další možností je redukce funkce rychlého procházení. Firefox 1.5 umožňuje rychlé procházení historie posledních navštívených stránek. Díky ní, když klepnete v prohlížeči na tlačítko Zpět, zobrazí se předchozí stránka prakticky okamžitě. Pěkný příspěvek rozebírající tuto funkci sepsal hlavní vývojář Firefoxu, Ben Goodger. Pro tuto funkci využívá Firefox speciální vyrovnávací paměť, kde si uchovává strukturu navštěvovanách stránek do určité historie.

Na základě toho, kolik máte operační paměti, se ukládá určitý počet stránek. Pokud máte 512 MB RAM, je to 5 stránek, pokud máte 1 GB RAM či více, je to 8 stránek. Pokud funkci rychlého procházení zpět nechcete, nastavte předvolbu browser.sessionhistory.max_total_viewers na hodnotu 0 (výchozí hodnota je -1). Pokud chcete nastavit velikost této historie napevno, zadejte konkrétní číselnou hodnotu.

Výše dva uvedené body tj. vyrovnávací paměť a funkce rychlého procházení jsou hlavní možností, jak redukovat množství zabírané paměti. Existuje však celá řada dalších detailů, které mohou ve využití paměti hrát roli. Mějte rozumnou velikost historie prohlížení. Nadbytečná délka historie zvyšuje paměťové nároky. Délku historie můžete nastavit v sekci Soukromí dialogu Možnosti. Stejná věc se týká i historie stahovaných souborů. Osobně jsem historii stahování zrušil úplně.

Další možností je redukce množství zabrané paměti při minimalizaci všech oken Firefoxu. Toho docílíte přidáním nové logické hodnoty v konfigurační stránce about:config. Vytvořte novou předvolbu config.trim_on_minimize a nastavte její hodnotu na true. Tato předvolba je určena pouze pro Windows.

Co memory leak není

Pokud navštívíte stránku s více obrázky či otevřete náročnější stránku, asi očekáváte, že využití paměti okamžitě klesne při jejím zavření. Tak tomu ovšem nemusí být. To souvisí jednak s výše uvedenými vyrovnávacími paměťmi, druhak se správou paměti operačního systému. Využití může poklesnout i později.

Je tedy Firefox bez chyby?

Pokud jste z předchozího popisu dostaly dojem, že Firefox je bezchybný a neobsahuje memory leaky, není tomu tak. Každý větší software je v menší či větší míře obsahuje. Je to nekonečný běh autorů při psaní kódu, který je nebude generovat.

Tvůrci Firefoxu se objevené memory leaky snaží opravovat a každá novější verze obsahuje další a další opravy. Smyslem tohoto příspěvku bylo vysvětlit, proč si Firefox někdy bere více paměti a co může být příčinou nestandardního využití paměti.

Zajímavé odkazy na toto téma:

Jak ve Firefoxu hledat memory leaky

Od ledna existuje ve Firefoxu pěkná možnost vyhledávání některých typů memory leaků. Pokud chcete pomoci s jejich vyhledáváním, řiďte se pomocí následujícího návodu.

Prvně budete potřebovat poslední vývojou verzi Firefoxu. Možnost ladění memory leaků přijde i s Firefoxem 1.5.0.2, ale ten v době psaní tohoto příspěvku není k dispozici.

Vytvořte si nový uživatelský profil. Je důležité, aby se jednalo o čistý profil tj. bez jakýchkoliv rozšíření. Tím se zabrání jakýmkoliv negativním vlivům, které mohou mít rozšíření na výsledek hledání. Celkem užitečné je vyhledávání memory leaků i v různých rozšířeních, což se provádí tak, že se jednotlivá rozšíření postupně instalují (po testu opětovně odinstalují) a dle popisu níže se hledá, zda neobsahují memory leaky.

Dale budete potřebovat Perl pro Windows a perlový skript na analýzu. Pro správnou funkčnost potřebujete nastavit systémovou proměnnou NSPR_LOG_MODULES na hodnotu DOMLeak:5,DocumentLeak:5,nsDocShellLeak:5 a proměnnou NSPR_LOG_FILE na hodnotu nspr.log, což bude jméno výstupního logovacího souboru. Můžete jej tedy pojmenovat i jinak. Detailnější popis je uveden přímo v perlovém skriptu.

Celé testování probíhá vcelku jednoduše. Nakopírujete perlový skript do adresáře s Firefoxem (tam kde je spouštěcí soubor firefox.exe) a spustíte Firefox s kterým normálně pracujete. Ve stejném adresáři se vytvoří výstupní logovací soubor nspr.log (či jiný vámi nastavený), který se bude postupně plnit. Čím déle bude pracovat s Firefoxem, tím větší soubor bude. Nakonec ukončete Firefox.

Otevřete příkazový řádek a přesuňte se do adresáře s instalací Firefoxu a spusťte následující kód:

perl leak-gauge.pl nspr.log

Výstupem bude pár řádků do konzole. Výsledek by měl v ideálním případě vypadat podobně, jako v následujícím výstupu.

Leaked 0 out of 15 DOM Windows
Leaked 0 out of 44 documents
Leaked 0 out of 6 docshells

Výše uvedený výstup neodhalil žádný memory leak. Pokud za slovem "Leaked" naleznete jinou hodnotu než nula, našli jste memory leak. Takový memory leak je dobré nahlásit. Podotýkám, že nemá smysl hlásit něco, co se vám podařilo jednou provést a neumíte to zreprodukovat. Informace typu "sem přes den pracoval s webem a výstupem je memory leak" není užitečná a nikomu nepomůže. Je potřeba co nejvíce přibližně zreprodukovat problém. Hlášení typu "stává se to na této stránce" už užitečné je.

Upozornění: Při každém spuštění Firefoxu se obsah souboru nspr.log vymaže.

Nyní krátce k tomu, jak memory leaky dohledávat. Pokud vám analýza logu odhalí memory leak, většinou k výše uvedeným třem řádkům uvede, kde tento leak nastal. Buď se může jednat o URL stránky, jméno zdrojového souboru Firefoxu či adresu v paměti. Pokud se jedná o leak na webové stránce, spusťte Firefox, navštivte uvedenou stránku a ukončete Firefox. Nyní opětovně proveďte spuštění skriptu. Pokud se vám podařilo leak opětovně nadetekovat, je dobré ho nahlásit. Často se stává, že leak vznikne, když provedete na uvedeném webu konkrétní akci. Např. přejedete myši přes nějaký prvek, na něco konkrétního klepnete apod. Pokoušejte se tedy o akce, které jste dělali při poslední návštěvě, která zaznamenala memory leak.

Pokud skript odhalil memory leak ve zdrojovém souboru Firefoxu, souvisí chyba s rozhraním Firefoxu. V takovém případě zapřemýšlejte nad tím, co jste v rámci posledního spuštění dělali. Např. smazali záložku, otevřeli soubor z disku apod. Zkuste uvedené akce znovu a pokoušejte se memory leak zreprodukovat.

Co dál

Řada lidí nehlásí chyby, protože neumí moc anglicky, pracovat s nástrojem na hlášení chyb apod. Pokud se vám podle výše uvedeného návodu podaří zreproduktovat memory leak, napište mi, zkusíme ho více zkonkretizovat a případně nahlásit. Mějte však na paměti, že pokud se nebudete řídit výše uvedenými pokyny, nemá vaše hlášení smysl. Máteli k uvedenému návodu dotaz, můžete mi též napsat.

Správa vyhledávacích modulů ve Firefoxu

Firefox umožňuje rychlé vyhledávání na webu pomocí pole vyhledávání, které standardně naleznete v pravém horním rohu okna prohlížeče. Ke standardním vyhledávacím modulům můžete kdykoliv přidat nové. Pokud se však nainstalovaný vyhledávací modul rozhodnete odstranit, nastane problém. Firefox 1.5 na to totiž neobsahuje žádný nástroj.

Pomoci si tedy musíme sami. Vyhledávací moduly jsou k dispozici na dvou místech. Prvním je podadresář searchplugins v adresáři s nainstalovaným Firefoxem (standardně C:Program FilesMozilla Firefox). Zde se nalézají vyhledávací moduly, které byly nainstalovány společně s Firefoxem či moduly, které jste si nainstalovali ve Firefoxu 1.0.x. Od Firefoxu 1.5 se vyhledávací moduly, které si uživatel doinstaluje, ukládají do podadresáře searchplugins v uživatelském profilu Firefoxu.

Vyhledávací modul se většinou skládá ze dvou souborů. Prvním je soubor s koncovkou .src a obrázkem ve formátu gif, png či jpg. Vyhledávací modul bývá většinou pojmenován podle jména vyhledávací služby. Přesné jméno naleznete v .src souboru (obyčejný textový soubor). Pokud tedy chcete nějaký vyhledávací modul odstranit, ukončete Firefox a vymažte příslušné soubory (vyhledávací modul a ikonku).

Upozornění: Nedoporučuje se odstraňovat výchozí vyhledávací moduly, které jsou k dispozici po instalaci Firefoxu. Je zde chyba, která způsobuje problémy při automatických aktualizacích.

Pokud se vám výše uvedený způsob zdá příliš krkolomný, můžete využít služeb rozšíření Search Engine Ordering, kterým můžete snadno uspořádávat pořadí vyhledávacích modulů a kdykoliv libovolné z nich odstranit. Další možností je rozšíření SearchPluginHacks, které umožňuje pouze odinstalovat nepotřebné vyhledávací moduly. Ani jedno z uvedených rozšíření jsem osobně nezkoušel.

Trocha nostalgie - CZillaX

Při dnešním úklidu disku jsem narazil na CZillaX. Že nevíte oč se jedná? Inu, už je to taky více jak dva roky nazpět, co jsem s pomocí Mozilla ActiveX Control vytvořil jednoduchý webový prohlížeč, který demonstroval možnost využití renderovacího jádra Gecko v aplikacích. Vypadal nějak takto:

CZillaX – Ukázka

Co uměl? V podstatě nic. Šlo mi jen o ukázku toho, že to jde. Výsledek mého tehdejšího snažení si můžete stále stáhnout (400 kB). Ke spuštění je nutné mít Mozilla ActiveX Control 1.5 (5 MB). S novějšími verzemi bohužel nefunguje.

Firefox 1.5 v ZIP verzi

Existuje poměrně velká skupina lidí, kteří neradi instalují aplikace. Pokud je aplikace k dispozici ve formě ZIP balíčku, dávají mu přednost. Mozilla Corporation donedávna poskytovala ZIP verze Firefoxu, ale z určitého důvodu přestala. Pokud však chcete tuto verzi získat, máte možnost neoficiálně.

Stáhněte si Firefox 1.5.0.4 RC4 z ftp.mozilla.org. Předpokládám, že dáte asi přednost české verzi tj. stáhnete si soubor firefox-1.5.0.4.cs.win32.zip. Rozbalte jej na disk a spusťte. V hlavní nabídce zvolte Nápověda – > Zkontrolovat aktualizace.... Tím provede upgrade na poslední verzi Firefoxu. Velikost aktualizace je asi 750 kB. Poměrně snadné, že?

Tip na GUI k MySQL 5

S upgradem na MySQL 5 jsem přišel o možnost používat mé oblíbené GUI prostředí pro práci s databází. Mým oblíbencem byl MySQL-Front 2.5, který již na webu není dostupný. Jednalo se o poslední verzi, která byla k dispozici zdarma a plně mi vyhovovala. Bohužel, s MySQL 5 si již nerozumí.

Začal jsem tedy pátrat po adekvátní náhradě. Lokální instalace phpMyAdminu přecejen není to pravé ořechové. Zejména rychlost odezvy na lokále se GUI aplikaci nemůže rovnat. Nakonec jsem objevil SQL Manager. GUI, které je dostupné pro řadu databázových serverů a verze Lite je vždy k dispozici zdarma. Doporučuji vyzkoušet.

Nové verze rozšíření AboutPlug a File Title

Dnes jsem dal na web nové verze rozšíření AboutPlug a File Title.

AboutPlug 1.0 je rozšíření, které vám do nabídky Nápověda přidá volbu O zásuvných modulech. Když tuto volbu zvolíte, zobrazí se vám stránka about:plugins. Rozšíření je k dispozici pro Firefox a nově pro webový prohlížeč Flock. V nové verzi jsem též opravil chybný odkaz na domovskou stránku.

File Title 1.0 je rozšíření, které vám umožní ukládat webové stránky jako v Microsoft Internet Exploreru tj. výchozí jméno ukládané stránky je generováno podle HTML tagu TITLE. Rozšíření je k dispozici pro Firefox a nově pro nově pro webový prohlížeč Flock.

Kdy mohou být rozšíření do Firefoxu nebezpečná

Firefox je obecně považován za bezpečný prohlížeč a to zcela poprávu. Přesto však existuje způsob, jak se přes něj dostat do problémů. Následující popis neberte jako sci-fi, ale jako věc k zamyšlení.

Nejprve bych ujasnil pojmy. Pokud hovořím o Firefoxu, hovořím o všem, co je k dispozici v rámci instalačního balíčku, který si stáhnete ze stránek CZilly či Mozilla.com. Vše, co si do Firefoxu doinstalujete, již není Firefoxem, ale produktem třetí strany.

Krom zásuvných modulů jsou hojně používány rozšíření. Prakticky každý zručnější uživatel si do nové instalace Firefoxu doinstaluje nějaké to rozšíření, které je dílem nadšence, který dopsal nějakou funkcionalitu.

Představme si následující modelovou situaci. Na stránce XX nalezneme skvělé rozšíření, které si stáhneme a nainstalujeme. Rozšíření funguje jak má a po pár dnech se ve Správci rozšíření objeví informace o dostupné aktualizaci na novější verzi. Stáhneme, nainstalujeme. Nyní se však začnou dít věci – svévolně mizí soubory, PC reaguje hodně zpomaleně apod. Jak je to možné?

Uvnitř rozšíření je instalační skript install.rdf, který řídí instalaci. V něm lze specifikovat URL, na které je k dispozici .rdf soubor s popisem poslední dostupné verze rozšíření. Pokud je v uvedeném souboru uvedena novější verze rozšíření, nabídne ji Firefox ke stažení. Problémem však je, že se může stáhnout záškodná verze (uvedený zdroj je totiž pochybný). V rámci rozšíření přitom může být i klasický spustitelný soubor, který může rozšíření spustit s právy přihlášeného uživatele.

V zásadě si můžete aktualizaci odmyslet. Stačí uživatele přesvědčit o tom, aby si nainstaloval rozšíření z pochybného zdroje.

Pokud vás zajímá nějaké řešení, pak je to klasická poučka o instalaci z bezpečných zdrojů. Doporučuji instalovat rozšíření z Mozilla Update. Veškerá rozšíření, která jsou přes tento server dostupná, se aktualizují jen z tohoto serveru a nikoliv z nějaké pochybné URL.

Osobně mi nyní není znám případ nějakého rozšíření, které by dělalo záškodnou činnost, ale objevit se může.