Facebook userscript, nektek

Előszeretettel használom a böngészők azon tulajdonságát, hogy a füleket képesek ikonméretűre zsugorítani. Ma külön megörültem, amikor láttam, hogy a Gmail esetében bekapcsolható, hogy az ikonon mutassa az olvasatlan üzenetek számát, és úgy gondoltam, hogy ilyen jó volna Facebookhoz is.
Megszületett ez.

Működik Firefox, Opera és Chromium alatt is, annyi eltéréssel, hogy az utóbbi kettőnél 9-nél több figyelmeztetés esetén nem animált az ikon.
Ismert hibák:
- Mivel a címsor végén lévő (X) számot nézi, bizonyos bejegyzések megzavarhatják.
- Nem ellenőrzi, hogy kell-e frissíteni az ikont, ezért az minden frissítés alkalmával (percenként) villan egyet.

Javítható hibák, de én lusta vagyok. ☺

Hozzászólások

Franyó! GReader-hez is van ilyen?
sly @ w3m.hu

Megoldható, a scriptben szinte csak a stringeket kell kicserélni.
Ami kellemetlen a dologban, az az ikonok előállítása. A Facebookhoz kézzel rajzoltam meg kilenc számot, plusz egy animált gifet. Kétjegyű számokra nem is gondoltam, mert az eleve 16×16-os méretű ikonon 4×6 képpontnyi helyet találtam. (az f betűt hátrébb tolhattam volna, de inkább igyekeztem amennyire lehet az eredetit megőrizni)

A Readerhez lehet, hogy több szám kéne, mivel nálam most 1000+-ot mutat a számlálója. Négy számjegyet még simán egymás mellé lehet írni egy faviconon, de azt már nem kézzel rajzolnám. Animált gifet viszont már végképp nem gyártanék php-val… ☺

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

Sajnos nem tudom megcsinálni, mivel a dotroll bugos GD könyvtárat használ a PHP-hoz
http://numen.extra.hu/favicon_maker/?number=1243&icon=reader
Localhoston pedig remekül megy…

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

http://numen.extra.hu/favicon_maker/faviconmaker.tar.bz2
Valószínűleg ha nem képekből raknám ki a számot, hanem imagestring()-gel, akkor menne, de nehéz olyan betűtípust találni, ami 3×6 képpontos méretben olvasható.

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

ezt még csapd hozzá:
// @include https://www.google.hu/reader/*
// @include http://www.google.hu/reader/*
// @include https://google.uh/reader/*
// @include http://google.hu/reader/*

Amúgy nem működött eddig. Belenéztem a kódba, mert valami hibát írt ki. Kivettem a ciklust. Így már működött. :) Ja meg a frissítési problémát is megoldottam. :) Ha kel a kód akkor szólj. :)

sly @ w3m.hu

Igen, kérem – jómagam ugyan csak mobilon használok Readert (desktopon Netvibes-párti vagyok… ☺), de másokat akár érdekelhet. Cserébe nálam, akit kevésbé érintett a dolog, működött ☺ Ja meg nem tudom, hogy oldod meg ciklus nélkül… ☺
Amúgy sanszos, hogy nem icon, hanem shortcut szövegre lenne érdemes keresni a linkekben, de sajnos tényleg lusta dög vagyok, és valamit csak addig írok, amíg nálam pont nem működik. ☺

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

No igen, sanszos, hogy pont Firefox 4 alatt nem néztem meg… ☺
Egyébként azért takarítottam ki mindig a linkeket, mert én veled ellentétben lusta voltam gondolkodni, és az első alkalommal, amikor nem működött a script megnéztem egy faviconbaszkuráló javascriptet, és ott bizony kitörlik a többit. Tartozott hozzá valami blogbejegyzés is, ott is hasonlókat emlegettek. Meg amúgy is azt gondoltam, hogy nyilván ki kell takarítani magunk előtt… ☺

Ami a frissítési problémát illeti, sejtettem, hogy vagy globális változó kell hozzá (amit utálni illik), vagy össze kell vetni a favicon által kijelzett számot a címsorban lévővel (ami meg körülményes).
Esetleg be lehetne rakni az egész userscriptet egy függvénybe, hogy ne szennyezzük a globális névteret (ami nem tudom, hogy userscripteknél mekkora):


(function(){ 
//… Ide kerül a script
})()
int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

Globális névteret nem tudom hogy szennyezi e. Annyit tudok hogy nem zavarja. Mindenesetre a saját verzióm működik. Az használom. :) Még azon agyaltam hogy nem e lehetne valahogyan a script-be ágyazni az ikonokat, meg a számozást. data protokollból nem tudom ki lehet e ezt hozni. :) Mondjuk kiindulásnak ez nem s rossz: http://neil.fraser.name/software/bmp_lib/
sly @ w3m.hu

Szerintem ha már data URI-t használunk, egyszerűbb canvast és toDataURL-t használni. Gondolom ahogy képet rak az ember canvasre, azt data URI-ként is meg lehet adni, a forrásikont meg ki is lehet olvasni a tényleges faviconból.
A számokat pedig akár tömbként is be lehet ágyazni, egy 3×6-os tömb jó eséllyel kisebb helyet is foglal, mint a PHP által egyébként használt PNG base64-ben.
Szerk.: sajnos az átlátszóságot ezzel jó eséllyel nem lehet megoldani, de talán emulálható a CSS System Colorsszal.

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

Az eset margójára:
Megírtam a hibát a Dotrollnak, feltehetőleg abból adódott a hibajelenség, hogy a szervereiken még csak 5.-es PHP fut régebbi GD könyvtárral. Javasolták, hogy használjam inkább az Imagicket, mert az nem bugos.
Átírtam a scriptet, ám feltöltve konstatáltam, hogy a tárhelyemen egyelőre nem elérhető az Imagick. Holnap az lesz. ☺

Pirospontot nekik!

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

GMail > jobb felül Labs > "Nem olvasott levelek számának megjelenítése" (vagy hasonló. Egy szürke OSX kinézetű címsor bal oldala látszik rajta).

Szerk.: ez most eggyel feljebb akart menni. Remélem, Drupalék a következő verzióban már javítják ezt a hibát.

--
The Elder Scrolls V: Skyrim