Pokazywanie postów oznaczonych etykietą Google Chrome. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Google Chrome. Pokaż wszystkie posty

czwartek, grudnia 30, 2010

Podsłuchiwanie Chrome ;-)

Ha! A dziś "podsłuchałem" Google Chrome :-) dokładnie to co robi gdy rozpoznaje mowę :-)

Już tu pisałem o tym fajnym ficzerze, który można zobaczyć (w Chrome) w tym polu tekstowym:



[po prawej stronie pola powinien być mikrofonik, po którego wciśnięciu należy gadać].

Wygląda na to, że Chrome wysyła naszą gadaninę, jak się wydaje zakodowaną przy pomocy Speex'a [to wiem z zajrzenia do źródeł Chrome ;-)] do Google po HTTPS [bezpieczeństwo przede wszystkim!] pod adres https://www.google.com/speech-api/v1/recognize?client=chromium&lang=en&maxresults=3 z content-type równym "audio/x-speex-with-header-byte; rate=16000" [co jest sprytnie zahardcodowane w kodzie Chrome ;-)].
Wychodzi na to, że serwer bierze pod uwagę nagłówek Accept-Language i używa pierwszego znanego języka do rozpoznawania mowy.
Później przysyła JSONem odpowiedź i tam jest dopiero ciekawie :-)
Serwer przysyła do 3 najbardziej prawdopodobnych wersji tekstu, wraz z poziomem ufności dla najbardziej pewnego tekstu :-)
Odpowiedź wygląda tak:
{"status":0,"id":"6b68aa421c21b841bcba6368c26dc21e-1","hypotheses":[{"utterance":"this is a test","confidence":0.9484572},{"utterance":"this is the past"},{"utterance":"this is a past"}]}


Btw. wygląda na to, że możemy się za jakis czas spodziewać API do rozpoznawania mowy ;-)
Chociaż możliwe, że Google uzna jednak, że akurat tego lepiej nie jest udostępniać w zbyt wygodny sposób na zewnątrz ;-)

Przy okazji, gadanie które jest w Google Translate działa bardziej "po bożemu" ;-) Wystarczy wysłać requesta GET pod adres http://translate.google.com/translate_tts?q=to%20jest%20test&tl=pl&prev=input by Google Translate przysłało plik MP3 [audio/mpeg, może to nie jest MP3?] z powiedzianym "to jest test" :-)

Z innych ciekawych rzeczy, to chociaż już trochę z różnych okazji "podsłuchiwałem" Chrome to nie widziałem tam tych słynnych "szpiegujących" requestów :-) co wg. mnie podważa różne "teorie" o tym jak to Google "szpieguje".
Nie jestem oczywiście w stanie wykluczyć, że co jakiś czas [np. raz na 24h] leci np. krótki raport z informacjami o tym ile tabek było otwarte i ze średnimi czasami otwarcia], ale nie jestem przekonany co do tego by takowe były. Choć kiedyś trzeba będzie sprawdzić ;-)

Podobne postybeta
Google Maps 5.0 na Androidzie 1.6 wcale nie używa wektorowych map :-(
Bawię się GPT4All
Spóźnialskie Google Latitude ;-)
3 must have dla Chrome OS ;-)
Ha! Ochidna Echidna potrafi updatować pliki :-)

środa, grudnia 29, 2010

Chrome2Chrome w Chrome Web Store

A co, nikt nie chce testować (a jak testuje to nie działa ;-)) to wrzuciłem do Chrome Web Store, może tam ktoś zainstaluje? ;-)

Zapraszam do pobierania Chrome2Chrome :-)

Chrome2Chrome to dodatek do Chrome, który pozwala na "przerzucanie" oglądanej właśnie strony na inny komputer z Chrome.
Wszystko działa w oparciu o Google Docs, które jest używane do współdzielenia plików z "poleceniami" wysyłanymi z jednego komputera do drugiego.

Trzeba uważać jeżeli używasz Chrome2Chrome na łączu na którym nie chcesz generować zbyt dużego ruchu. Chrome2Chrome w ciągu dnia zeżre najmniej 10 MB transferu (a może więcej) na jednym komputerze, dlatego należy uważać.
Chrome2Chrome tworzy w Google Docs nowy folder Chrome2Chrome i kilka plików, które są widoczne jako pliki tekstowe w Google Docs.
Google Chrome zachowuje namiary na Twoje konto Google na komputerze na którym go używasz, więc nie należy używać Chrome2Chrome na ogólnodostępnych maszynach.

Tutaj krótki pokaz Chrome2Chrome:



Podobne postybeta
Przenosimy .NET'a na inny dysk :-)
Chrome2Chrome - pożeracz transferu ;-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
GitHub - pierwsza próba :-)
Chrome2Chrome - kto chce potestować? ;-)

środa, grudnia 22, 2010

ChromoPaskudztwo ;-) - czyli, pisanie aplikacji dla Chrome to pikuś :-)

Tak się dziś przez chwilę bawiłem i okazuje się, że tworzenie aplikacji dla Chrome, takiej instalowanej na komputerze nie jest takie trudne :-)

Wziąłem na warsztat moją starą zabawkę, która miała mi niby pomagać w pilnowaniu rzeczy do zrobienia. Ten coś był aplikacją HTA, używającą specyficznych dla IE obiektów do dostępu do lokalnych plików.
Postanowiłem przenieść to do Chrome i okazało się, że wszystko zajęło może 30 minut ;-)

Taką "pakowalną" aplikację tworzy się podobnie do rozszerzenia, z tym, że aplikacja ma w manifeście deklarację tego gdzie znajduje się "strona główna" aplikacji i nie ma akcji [czyli stron ;-)] dla przeglądarki [czyli stronki, która pojawia się po sklikaniu ikonki w zasobniku obok menu] i strony [czyli tego co pokazuje się po sklikaniu ikonki w pasku adresu, np. gwiazdki, której przyciśnięcie pozwala na dodanie strony do zakładek].

Fajne jest to, że aplikacja może "łazić" po sieci, nie trzeba kodu za to odpowiedzialnego wyrzucać do tła [trudno tak to tłumaczyć ;-) chodzi o stronę nazywaną w dokumentacji Background page, co bardziej niż tło oznacza tutaj zaplecze].

Lokalne pliki zastąpiłem przy pomocy localStorage, co wymagało tylko lekkich zmian w kodzie.
Aplikacja ma też możliwość używania lokalnie SQLa, ale tutaj nie próbowałem i nie wiem czy warto, z racji tego, że to się może jeszcze zmieniać [W3C czy jak im tam, wstrzymało prace nad tym bo wszystkie implementacje bazowały na SQLLite].

Wg. mnie w przypadku tych pakowanych apliakcji istotne jest to by one działały off-line, a sieci używały raczej do synchronizacji niż do "świadczenia usług".

Aplikacja może być kartą i panelem, różnica jest taka, że karta otwiera się normalnie w przeglądarce, a panel poza nią.



Tutaj ta moja "aplikacyjka" jako panel.

Jak rozumiem w Chrome OS panele trzymane są przy dole ekranu i układane obok siebie, pod Windows są po prostu otwierane. Mamy jedynie kontrolę nad ich rozmiarem.
Na moim Windows 7 panele zawsze otwierają się tak, że ich górny lewy róg jest w górnym lewym rogu ekranu głównego :-)

Ogólnie stwierdzam, że ma to potencjał :-)
Teraz trzeba go tylko zacząć wykorzystywać ;-)

Jakby ktoś ciekawy jak to to wygląda [w środku też], to tutaj jest "instalka". Co do kodu to powstał lata temu i się do niego nie przyznaje ;-) [widzę, że był pisany jeszcze w czasach gdy nie używałem tylko angielskich nazw dla elementów w kodzie].

Podobne postybeta
Co się dzieje jak Ci zrobią Cancel lotu na lotnisku "startowym"?
YouWave
Nexus 4 - pierwsze wrażenia
Bloggeroid - polityka małych kroczków ;-)
Czy się stoi czy się siedzi.... kamerka w laptopie jako detektor tego czy biurko jest w trybie stand czy sit ;-)

poniedziałek, grudnia 20, 2010

3 rzeczy, które pomogłyby Chrome OS i Chrome

Wydaje mi się, że są 3 rzeczy, które pomogłyby w sukcesie Chrome OS.
Pierwsza to serwis do trzymania danych, wspierany przez API Chrome. Taki, w którym użytkownik mógłby trzymać część swoich danych. Powiedzmy 10, może 100 MB.
Wtedy ktoś piszący np. listę zadań mógłby swobodnie używać takiego serwisu, a użytkownik miałby pewność, że jego dane nie "wyciekają".
Przydałaby się w nim jeszcze funkcja podobna do tego jak działało w Interbasie coś co zwało się IBEvent. Aplikacja podpinała się do serwera baz danych i gdy miała włączony IBEvent to w momencie gdy np. trigger generował taki IBEvent to aplikacja była o tym natychmiast informowana.
Wydaje mi się, że to by się dało zrobić przy użyciu WebSockets.
Gdyby nie ten ostatni ficzer to od biedy Google Docs może do tego służyć. Ale to trochę siłowe wykorzystanie.
Drugą rzeczą pomocną dla Chrome OS byłby serwis będący serwerem XMPP. Użytkownicy mieliby konta, które mogłyby służyć do komunikacji z innymi użytkownikami. Ale z takim ficzerem, że można by było przy pomocy takiego serwisu przesyłać także komunikaty.
Np. pisząc aplikację, która służyłaby jako plansza do gry w kółko i krzyżyk, albo szachy, można by było przesyłać komunikaty między klientami obu graczy przy pomocy tego serwisu.
Tutaj może dałoby się wykorzystać Google Talk for Developers, ale szczerze nie do końca rozumiem jak to działa.
Trzecią pomocną rzeczą byłoby dodanie do API Chrome narzędzi pozwalających na użycie kamer i mikrofonów podpiętych do komputera.
Tak żeby można było np. wyciągnąć obrazek z kamerki i pobawić się jego pikselami, albo próbować się bawić zsamplowanym dźwiękiem nagranym przez mikrofon.
Choć tu akurat widzę wiele niebezpieczeństw związanych z bezpieczeństwem.
No i rzecz, czwarta, która powinna być oczywistością ;-) czyli to by WSZYSTKIE serwisy Google były dostępne poprzez API.
To by naprawdę pomagało programistom :-)

Podobne postybeta
Chorowanie jest do bani, czyli wspomnienia z L4... które trwa ;-)
clone() i Cloneable się mszczą ;-)
Jak rozwiązać krzyżówkę? ;-)
OOo2GD 2.1.1 gotowe :-)
Tak Maven'ie, zbłądziłem ;-)

środa, grudnia 15, 2010

Chrome2Chrome - kto chce potestować? ;-)

OK, Chrome2Chrome dotarł do etapu w którym można go już zacząć publicznie testować :-)

Jednym z wyznaczników tego jest to, że nie ma już w środku namiarów na moje konto :-)
Nie przegina też już z generowaniem transferu. Wg. teorii dzienne zapotrzebowanie na "pinganie" Google Docs to teraz nie ponad 100 MB, a jakieś 170 KB :-) ale to tylko teoria, w praktyce trzeba pewnie liczyć na 1 transmisje 512 bajtów bo tyle ma chyba pakiet TCP/IP [choć to leci w tunelu HTTPS, to może być ciut inaczej] co daje koło 17 MB.

Jak ktoś chce spróbować Chrome2Chrome, czyli wtyczki do Chrome, która pozwala na przesłanie strony z jednej przeglądarki do drugiej to zapraszam do pobierania.

Po uruchomieniu w pasku rozszerzeń pojawi się nowa, niezbyt piękna ikonka ;-)


To ta w środku.

Gdy ją klikniemy powinno pokazać się coś takiego:



Klikamy na Edit credentials i naszym oczom ukaże się:



Wpisujemy namiary na nasze konto Google [ważne by działało z Google Docs], oraz to jak chcemy by nazywał się ten komputer [tak naprawdę to ta przeglądarka].
Klikamy na Save computer name.
Klikamy gdzieś obok i teraz po chwili możemy spróbować znów kliknąć i spróbować rozwinąć listę obok "Send to". Tam powinna się pojawić nazwa naszego komputera. Jeśli się nie pojawiła, znów klikamy na Edit credentials i klikamy Save computer name.
Za drugim razem zwykle już działa.
To samo powtarzamy na innych komputerach [sugeruję wybrać inną nazwę dla tych maszyn ;-)]

Teraz wysyłanie strony wygląda w taki sposób, że gdy chcemy ją przesłać to po prostu klikamy ikonkę i wybieramy komputer gdzie ma ta strona zostać przesłana z listy, jak to widać tutaj:



I już po chwili powinna się ta strona na drugim komputerze otwierać :-)

Jeśli zajrzycie do Google Docs to zobaczycie kilka nowych plików. Po pierwsze plik markerFile, w którym będzie jakaś liczba, to jest plik, który służy do "synchronizacji" rozszerzeń. Coby nie pobierać za każdym razem całej listy plików w folderze Chrome2Chrome, rozszerzenie pobiera tylko ten plik i sprawdza czy jego zawartość się zmieniła, jeśli się zmieni pobiera całą zawartość foldera.
Dalej powinny się pojawić pliki postaci __nazwaKomputera__, które służą do budowania listy komputerów :-)
Samo przekazywanie strony polega zaś na tworzeniu plików _nazwaKomputera_id, które to pliki są kasowane przez komputer dla którego są przeznaczone.

Chętnie poznam opinie :-) Mogą być krytyczne, choć wolę pozytywne :-)


Podobne postybeta
Browser2Browser, czyli prześlij stronę z przeglądarki do przeglądarki ;-)
Wpisy z Bloggera jako eventy w Google Calendar, odsłona 3 - Aplikacja ;-)
Gadające Gadu-Gadu
Coca-Cola Zero i pomidory = najbardziej "odchudzająca dieta" na świecie ;-)
Żarówki kolekcjonerskie ;-)

niedziela, grudnia 12, 2010

Chrome2Chrome - pożeracz transferu ;-)

No i mam małego zgryza z Chrome2Chrome.
Każdy request z prośba o listę plików w folderze Chrome2Chrome to w przypadku braku komputerów, które są dostępne 1.77 KB, w przypadku 1 komputera to już 4.31 KB, dla 2 to 6.85 KB. Czyli każdy komputer dodatkowo to 2.54 KB więcej transferu.
Niby nic, ale w momencie gdy odpytujemy co 5 sekund to już zaczyna być dużo.
W ciągu doby to jakieś 17280 requestów [będzie tego trochę mniej bo u mnie cały request to jakieś 300 ms, do tego dochodzą sytuacje gdy coś zostanie pobrane, ale to co spowoduje spadek ilości requestów spowoduje wzrost ilości danych].
A to jest 115 MB danych... dużo, szczególnie jeśli by to biegało na połączeniu gdzie jest mały limit danych.

Powinno być tego mniej bo Chrome2Chrome prosi Google Docs by wysyłało listę elementów w folderze Chrome2Chrome tylko wtedy gdy się zmieniła, niestety Google Docs wysyła zawsze ;-)

Pomysł jest więc inny, zrezygnować z podejścia z pobieraniem listy elementów w folderze, za to zacząć używać pojedynczych plików. Wtedy co powiedzmy minutę albo co 10 minut Chrome2Chrome sprawdzałby listę komputerów, a później by co 5 sekund pobierał plik dla danego komputera. To by wtedy nie było parę KB, a góra 256 bajtów.
To by były 4.3 MB na 1 komputer, czyli w miarę znośna ilość danych :-)

Btw. dlatego nigdy nie lubiłem XMLa, strasznie duży jest. JSON przy nim to maleństwo, do tego dużo bardziej czytelne.

Podobne postybeta
Chrome2Chrome - kto chce potestować? ;-)
Koronawirus - jak na mnie wpływa
Chrome2Chrome w Chrome Web Store
Chrome2Chrome 0.7.2 - OAuth w akcji ;-)
A tak o liczbach ;-)

Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)

Faza Chrome/Chrome OS nadal u mnie trwa ;-)

Dotarło np. do mnie, że komputer z Chrome OS to będzie idealna maszyna dla mojej mamy :-), która boi się, że "coś popsuje", a w Chrome OS to się po prostu nie może zdarzyć.

Jedyną przeszkodą jest brak możliwości uruchomienia na Chrome OS bazy książek, którą sobie kiedyś napisałem (w Turbo Pascalu z użyciem TurboVision), a która to baza jest używana przez moją mamę do trzymania katalogu książek.
Ale zaczęło mi się w głowie roić, że skoro chciałbym mieć też listę książek na telefonie to można by było połączyć obie rzeczy i napisać prostą aplikację dla Chrome, która pokazywałaby bazę książek, przechowywałaby ją zaś albo lokalnie (przy pomocy localStorage) albo w Google Docs, i w przypadku trzymania w Google Docs mogłaby pobierać też te dane na telefon i byłoby jak znalazł w księgarni.

Jeszcze Skype brakuje dla Chrome OS... ale przecież zawsze można zacząć używać Google Talka/Google Voice.

Bawiłem się też dziś w tworzenie Chrome2Chrome i oto efekty:



Ikonki jeszcze nie mam i używam nadal ikonki z Buzz Troll Removera ;-) Samo UI też nie jest piękne, ale główna funkcjonalność czyli możliwość przesyłania stron między różnymi komputerami już działa :-)

Akurat na tym filmie złośliwie trwa to aż 10 sekund [i nie widać momentu gdy zamykam na EEE PC dialog wyrzucony przez system, który mówi o tym, że coś padło ;-)], ale zwykle jest to o wiele szybsze.

Wszystko działa w taki sposób, że każda z przeglądarek z Chrome2Chrome co 2.5 sekundy pobiera listę dokumentów w folderze Chrome2Chrome w Google Docs [jak trzeba to tworzy ten folder], jeżeli znajdzie jakikolwiek plik o nazwie zaczynającej się od _, a następnie nazwy komputera i znów _ to pobiera ten plik, otwiera stronę której adres jest w tym pliku i kasuje go z Google Docs.
Wysyłanie strony to po prostu stworzenie pliku tekstowego z nazwą _nazwaKomputera_jakieśID [które to jakieśID jest tylko po to by być bo nie musi być nawet unikatowe], w którym to pliku zapisany jest adres strony do otwarcia].

Sam kod do operowania na Google Docs to jakieś 280 linii kodu w JavaScript i to napisanego z wieloma powtórzeniami.

Np. upload wygląda tak:
    function upload(auth,folder,name,body) {
var req = new Object();
req.method="POST";
req.url="https://docs.google.com/feeds/default/private/full";
if (folder!=null) {
var elems = folder.split("%");
req.url+="/folder%"+elems[1]+"/contents";
}
req.body=body;
var headers = new Array();
headers.push({"name":"Content-Type","value":"text/plain"});
headers.push({"name":"Authorization","value":("GoogleLogin auth="+auth)});
headers.push({"name":"Slug","value":name});
headers.push({"name":"GData-Version","value":"3.0"});
req.headers=headers;
var retXML = fetch(req.url, req.method, req.headers, req.body, null,false,true);
return retXML;
}


Czyli już mam kod do operowania Google Docs z rozszerzenia ;-)
Jedynie update mi nie działa, ale możliwe, że to przez to iż zdecydowałem się na używanie wersji 3.0 API, i chyba trzeba będzie zrobić downgrade do wersji 2.0.


Podobne postybeta
Wysyłamy pliki do Google Docs przy pomocy Go :-)
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
Żenienie Todoist z Obsidian przy pomocy Pythona ;-)
Wredne Google Docs
Zmienne Go ;-)

piątek, grudnia 10, 2010

Chrome OS i Java - ostateczna odpowiedź

No i już wiem jak jest z Java'ą w Chrome OS.

Ni ma.

Skąd to wiem?

Wywiad ;-)

Spytałem 2 osoby na Twitterze, osoby te należą do szczęśliwców którzy dostali od Google laptopy Cr48 w ramach pilota. Obie sprawdziły i Java'y nie ma :-(

Na chwilę obecną wydaje mi się, że Google chcąc przekonać biznes do Chrome OS będzie musiało jednak o tej Java'ie pomyśleć, w końcu wiele korporacyjnego softu w stylu Kronosa czy Primavery to aplety Java'y.

Podobne postybeta
3 pytania o Chrome OS :-)
Narzędzia
Nie rozumiem, czyli czemu niektórzy ludzie pytają jak przejść z Windows 7 na XP?
"Nowy" Fallout 4 ;-)
Pilotka ;-)

czwartek, grudnia 09, 2010

3 pytania o Chrome OS :-)

Dalej w temacie Chrome OS ;-)

Ja mam 3 pytania:
  1. co z Javą w Chrome OS?
  2. co z chromotingiem?
  3. czy są gdzieś dostępne nowe buildy Chromium OS?
Co to jest Java to wyjaśniać nie trzeba ;-) moje pytanie dotyczy zaś tego czy będzie można na Chrome OS używać apletów Java, a może nawet aplikacji w JNLP?

Chromoting to ma być taki ficzer, który pozwoli na używanie na netbooku z Chrome OS aplikacji uruchomionych na naszym komputerze z Windows. Taki "Cytrix" tylko, że na własnym sprzęcie ;-)
Ale w trakcie prezentacji tego nie pokazali.

Pytanie ostatnie jest o to czy nie mając Cr48 można się pobawić niektórymi ficzerami Chromium OS :-) Ostatnie buildy z których korzystałem są z lutego 2010, czyli mają blisko rok.

Ktoś zna jakieś odpowiedzi? ;-)



Podobne postybeta
Chrome OS i Java - ostateczna odpowiedź
Python i wiele rdzeni ;-)
Maruda mode post ;-)
Miałem dziś sen, a w nim...
Ice Cream Sandwich - Nexus S coraz bliżej, EEE Pad Transformer czeka...

Fajny ficzer Chrome

Dopiero dziś zorientowałem się jaki fajny ficzer ma Chrome (na pewno 9 i wyższe).

Jeżeli do inputa typu text dodasz atrybut x-webkit-speech to pole to wzbogaci się w Chrome o rozpoznawanie mowy :-)
To jest z tego co się orientuję ten sam mechanizm rozpoznawania mowy, który wykorzystywany jest przez Voice Search.



Nie grzeszy ono jeszcze skutecznością, albo ja niewyraźnie mówię, ale już jako zabawka jest niezłe :-)
Niestety ten ficzer nie działa w textarea :-(

Podobne postybeta
Moje IT życzenia co do 2009 :-)
Chorować to trzeba umieć ;-)
Niemangielski ;-)
Skoro Deep Web jest potrzebny by zapewnić wolność słowa, ale jest wykorzystywany do szerzenia niecnych treści, to może rozwiązaniem jest ograniczenie technologii takiej sieci tak by tylko przekazywała tekst?
Java i Chrome OS....

środa, grudnia 08, 2010

Prezentacja Chrome/Chrome OS

Lubię oglądać takie rzeczy jak dzisiejszy [a bardziej już wczorajszy ;-)] event, czy po naszemu pokaz Chrome, Chrome OS i Chrome Webstore.

Naoglądałem się trochę prezentacji na różnego rodzaju targach branżowych, a to byłem wysyłany na targi dla energetyków, a to dla gazowników, raz mnie nawet wysłano na spotkanie dystrybutorów 3COMa ;-) Naoglądałem się też różnych prezentacji na studiach doktoranckich [sam też prowadziłem ;-)].

I zwykle osoby, które coś prezentowały sprawiały wrażenie jakby miały z tą całą prezentacją niewiele wspólnego. W wielu przypadkach wyglądało jakby nawet sobie tego raz nie powtórzyli.

A na tych Google'owych eventach zawsze im to fajnie wychodzi.
Miło to oglądać.

A co do samego wydarzenia i Chrome OS.

To już tu kiedyś pisałem, że nie podoba mi się idea by wszystko było aplikacją webową, ale i tu nie wiem czy to już pisałem ;-) powoli się przekonuję do idei Chrome OS.
Ja osobiście mam wyuzdane podejście do obsługi komputera, ale jeśli by nie liczyć Eclipse'a i WinAmpa to zwykle nie potrzebuję niczego innego niż przeglądarka.
No i z tego co widać Google się stara by było to coś więcej niż HTML + JS. Jest WebGL, jest Native Client [chociaż nie sprawdzałem go od dłuższego czasu, a jak sprawdzałem kiedyś to był w takiej postaci, że nie udało mi się niczego dlań skompilować, a i odpalanie czegoś bardziej skomplikowanego niż wymiana komunikatów między NaCL a przeglądarką zwykle nie działało [np. słynny Quake w NaCL mi się w ogóle nie odpalił]].
Cholera wie czy jest Java... Była we wczesnych buildach robionych ze źródeł Chromium OS, ale później ją chyba wyrzucono z głównego drzewa. Pokazywała się za to w niezależnych buildach.

Mnie się marzy taki "lekki" krok w bok ;-) czyli to by Chrome dał możliwość pisania w samym HTML i JS bardziej "natywnych" aplikacji, żeby można było np. dodawać swoje ikonki do paska koło zegara i operować na plikach w systemie. Takie HTA od Google ;-)
To wszystko już prawie jest, ale to jeszcze nie do końca to.

Ciekawie wygląda też pomysł z rozdawaniem dla "pilotów oblatywaczy" Chrome OS netbooków :-) Może się o to starać każdy....... w USA ;-)
Muszę tu jednak przyznać, że raczej nie kupię takiego netbooka.
Kolejny SIM by mieć takiego netbooka on-line w dowolnym miejscu świata odpada.

Tak btw. Google i Chrome Os. Tablet Motoroli pokazany chyba wczoraj wygląda nieźle. Wektorowe Google Maps też ;-)
To mogę kupić, chociaż też raczej bez SIMa.

A na koniec się pochwalę, że udało mi się przesłać do serwerów Google requesta do autentykacji w ich serwisie writely [czyli Google Docs dla dokumentów i prezentacji] i to z rozszerzenia dla Chrome :-) Czyli udało mi się to czego wczoraj nie umiałem zrobić. Yeah!


Podobne postybeta
Java i Chrome OS....
Goto Go ;-)
Mogłoby być łatwiej ;-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Cyniczne ja ;-)

sobota, czerwca 26, 2010

Chrome, Firefox, IE9 preview i cieniowanie Gouraud'em w JavaScript

Wczoraj chciałem sprawdzić jak działa moje cieniowanie Gouraud'em w IE9 Preview. Microsoft pochwalił się, że dodali wsparcie dla elementu Canvas to chciałem zobaczyć.
Na początku nie chciało działać, ale krótkie śledztwo wykazało, że wina była po mojej stronie. W chwili obecnej IE9 nie pozwala na używanie elementu Canvas w momencie gdy przechodzi do Quirks mode [myślę, że docelowo to poprawią], a ponieważ mój testowy plik HTML nie miał poprawnych nagłówków to IE9 zakładał, że powinien właśnie przejść do trybu Quirks.
Efekty działania można zobaczyć na poniższym filmie.
Wyniki nie zachwycają ;-) po pierwsze denerwujący jest widoczny pasek, który jak zgaduję jest wynikiem jakichś zawirowań z synchronizacją.
Jak widać na filmiku, jedna klatka zajmuje około 80-90 ms, dla porównania w Chrome na tym samym komputerze potrzeba od 8 do 12 ms, a na Firefoksie od 32-52 ms [tutaj widać, że Firefoks dość niestabilny jest w wydajności "dawanej" JavaScript'owi]. Te czasy są dla "pełnych" klatek, nie tych gdy twarz się obraca tyłem :-)Ciekawe jest to, że jak się przyjrzeć tym klatką gdy twarz jest niewidoczna [bo wektory normalne trójkątów są skierowane "do monitora"] to w IE9 zajmuje taka klatka koło 20-30 ms, czyli 2-3 razy więcej niż "pełna" klatka w Chrome ;-)Tak w ramach informacji, większość czasu jest spędzana w samym rysowaniu, nie w obliczeniach.
Tutaj ramka z animacją by można było po raz wtóry pobawić się swoją przeglądarką :-) [Opera się obraziła i nadal nie działa]
Tutaj zaś link do demka ;-)


Podobne postybeta
Cieniowanie Gourauda w JavaScript part 2 - przyśpieszamy :-)
Cieniowanie Gourauda w JavaScript :-)
Strategiczny wybór miejsca w tramwaju - poradnik ;-)
Gouraud = Pseudo Phong :-)
Nie tylko IE6 powinno pójść do piachu, każdy Internet Explorer powinien!!!!

sobota, maja 22, 2010

Buzz Troll Remover v0.3.2 zawędrował do galerii rozszerzeń Chrome ;-)

No i Buzz Troll Remover jest już w galerii rozszerzeń Chrome.
Oznacza to, że osoby, które instalowały wcześniejszej jego wersja powinny go odinstalować i zainstalować z nowego źródła [i znów dodać trollów do listy].
Od dziś updaty do nowych wersji dostępne będą tylko tym kanałem.
Co nowego w tej wersji [i w wersji 0.3.1 także ;-)].
Brzydki guziczek "hide" został zastąpiony przez ciut ładniejszy krzyżyk:Poprawiłem w nim też kilka wewnętrznych spraw związanych z przestrzeganiem zasad bezpieczeństwa na stronach HTTPS [głównie chodziło o to by unikać jak ognia eval() co też uczyniłem]. Ikonka Buzz Troll Removera wyświetla teraz także liczbę blokowanych przez nas osób.
W samym okienku konfiguracji zlikwidowałem pytanie nas czy chcemy usunąć daną osobę z listy trolli, podyktowane to było tym, że poprzednie rozwiązanie nie działało w Chrome niższych niż 6.
Buzz Troll Remover działa tak :-)
Na koniec reklama konkurencji ;-)
Takiej dla Firefoksa [choć nie zdziwię się jeśli znów będzie działać za jakiś czas na Chrome] czyli skrypty Greasmonkey o wdzięcznej nazwie TrollEyBuzz.


Podobne postybeta
Ewolucja Buzz Troll Remover'a ;-) - czyli nad czym teraz pracuję
Buzz Troll Remover v0.3 - potęga guzików
Buzz Troll Remover v0.1.1 :-)
Przybywa userów :-)
Szaleństwo kolorów - kolorujemy Google+ ;-)

wtorek, maja 18, 2010

Buzz Troll Remover v0.3 - potęga guzików

Dokodowałem właśnie 2 rzeczy do Buzz Troll Removera, pierwszą jest brzydki guziczek "hide", który będzie się pojawiał przy wszystkich osobach z Buzza, po jego kliknięciu dana osoba zostanie wrzucona na listę Trolli.

Guziczek wygląda mniej więcej tak:

Po kliknięciu tego guziczka użytkownik zobaczy pytanie czy aby na pewno chce delikwenta wstawić na listę osób, których komentarze na Buzzie będą ukrywane:

[jak ktoś jest uważny, to zauważy, że powyższe 2 rysunki i tekst między nimi bezczelnie ukradłem z jednego z wcześniejszych wpisów ;-)]

Druga zmiana widoczna jest na liście trolli, już nie mamy tam listy linków, a listę nazw profili trolli, które jednocześnie są linkami do ich profili, z guziczkami unblock [i jak słyszałem nie wszędzie unblock działa :-(].

Wygląda to mniej więcej tak:

Gdy odblokujemy trolla to znów jesteśmy pytani czy aby na pewno tego chcemy i w razie czego wszystkie wcześniej skrzętnie ukryte [lub zastąpione przez informację o ukryciu] posty wrócą na swoje miejsce.

Kto chce może sobie pobrać nową wersję Buzz Troll Remover v0.3, na wszelki wypadek podaję też namiary na starszą wersję 0.2.1 jakby się komuś nie spodobała nowa :-)
W razie problemów pierwszą metodą może być odinstalowanie wtyczki, co prawda stracimy wtedy naszą trollliste, ale rozszerzenie ruszy z czystą kartą.


Podobne postybeta
Ewolucja Buzz Troll Remover'a ;-) - czyli nad czym teraz pracuję
Buzz Troll Remover v0.3.2 zawędrował do galerii rozszerzeń Chrome ;-)
Buzz Troll Remover v0.1.1 :-)
Ściana, czyli rozbijam się na onclick ;-)
Jak się rodzą Trolle?

Ściana, czyli rozbijam się na onclick ;-)

Zabawiając się z Buzz Troll Removerem dotarłem już do etapu na którym potrafię ukryć trollowe buzzy (trollbuzzy?) w taki sposób, że gdy użytkownik zdecyduje, że jednak odtrolluje danego delikwenta to jego komentarze znów się pojawią.

Niby super, ale jest jedno ale ;-) a mianowicie to, że wtedy nie działa guziczek "hide", który umiejscawiany jest przez BTR obok nicka użytkownika Buzza [buzzżytkownika? ;-)]. Próbowałem wielu sposobów i jak na razie odbijam się od ściany....

Guziczki tworzę tak:
var parent = b[i].parentNode;
var button = document.createElement("button");
button.innerHTML = "hide";
button.setAttribute("name",b[i].innerHTML);
button.setAttribute("link",b[i].href);
button.onclick=function() {
blockUser(this);
}

b[i].setAttribute("modifiedByBuzzTrollRemover","true");
parent.insertBefore(button,b[i].nextSibling);

Element b[i] to i-ty tag A na stronie spełniający jeszcze tam pewne wymogi.
Istotne jest to jak przypisywany jest kod do onclick.

Niestety użycie button.setAttribute("onclick","blockUser(this);") powoduje tylko tyle, że każde kliknięcie guziczka powoduje zgłoszenie na konsoli błędu mówiącego, że JavaScript nie może namierzyć funkcji blockUser(elem).

Samo kasowanie posta wygląda mniej więcej tak:
b[i].parentNode.parentNode.setAttribute("rBTK",b[i].parentNode.parentNode.innerHTML);
b[i].parentNode.parentNode.setAttribute("rBTKLink",b[i].href);
removed.push(b[i].parentNode.parentNode);
if (method*1==1) {
b[i].parentNode.parentNode.innerHTML="";
} else {
b[i].parentNode.parendNode.innerHTML="<span style='background:yellow;'>Post of "+b[i].innerHTML+" deleted by Buzz Troll Remover</span>";
}


Gdzie istotna jest pierwsza linia, która w atrybucie nad-nad-rodzica ;-) zapisuje treść kasowanego buzza.

Odnowienie Buzza wygląda tak elem.innerHTML = elem.getAttribute("rBTK");.

I problem jest taki, że onclick stworzone tak jak je tworzę w ogóle nie jest widoczne w tym co zostanie włożone do innerHTML, a jeśli użyję metody z przypisaniem stringa do onclick to co prawda jest widoczne w innerHTML, ale nie działa :-)

I pisząc to wpadłem na pomysł by jak zwykle rozwiązać problem przy pomocy oszustwa :-) Co dowodzi, że programowanie jest naprawdę sztuką oszukiwania.

A gdybyż tak "kopię" buzza, którą przechowuję, w momencie gdy będzie znów przypisywana do elementu potraktować wyrażeniem regularnym, które zamorduje wszystko od "<button" do "</button>", oraz wywali atrybut modifiedByBuzzTrollRemover? Wtedy mechanizm dodawania guziczków zobaczy taki wpis, stwierdzi, że wpis nie posiada guziczka i mu go doda....... :-)

Czyli jak dobrze pójdzie problem zrozumienia czemu onclick dodawany przez element.onclick="..." czy element.setAttribute("onclick","....") nie działa nie będzie ważny ;-) ważne będzie tylko napisanie odpowiedniego wyrażenia regularnego :-)


Podobne postybeta
IE suxx ;-)
Zasada numer 1: sprawdzaj oczywiste
Bookmarklet do robienia CSV z obligacjami i ich oprocentowaniem ;-)
Buzz Troll Remover v0.3 - potęga guzików
Go dla Java'owca ;-) odcinek 2 "kontenery dwa ;-)"

środa, maja 12, 2010

Ewolucja Buzz Troll Remover'a ;-) - czyli nad czym teraz pracuję

Post z serii, ja już mam, a Wy dostaniecie jak uznam to za słuszne ;-)

Bawię się nadal Buzz Troll Remover'em, moim celem jest uczynienie go bardziej przyjaznym w użytkowaniu, a jak już się taki stanie to wrzucę go do repozytorium rozszerzeń Chrome :-)

Celem jest uczynienie blokowania łatwiejszym, jak na razie zdecydowałem się dodawać po prostu do każdego widocznego profilu guziczka z napisem "hide":

Po kliknięciu tego guziczka użytkownik zobaczy pytanie czy aby na pewno chce delikwenta wstawić na listę osób, których komentarze na Buzzie będą ukrywane:

Jeśli odpowie twierdząco to dane nowego trolla trafiają na listę trolli i Buzz Troll Remover zacznie ukrywać wszystkie posty danej osoby.

To wyżej już mam ;-)

Kolejne zmiany mają pojawić się w konfiguracji Buzz Troll Remover'a, listę niewiele mówiących linków zastąpić ma lista nazw blokowanych użytkowników [w razie gdy danego użytkownika "odziedziczmy" po poprzedniej wersji to będzie opisany jako =No Name= lub podobnie] z guziczkiem do skasowania ich z listy.
Użytkownicy którzy będą chcieli będą mogli użyć guziczka pod tą listą do zobaczenia obecnej listy linków [z małą zmiana, że każdy item będzie zbudowany w taki sposób link|nazwa blokowanego profilu].

Jak to będzie już gotowe to myślę, że wypuszczę wersję 0.3 i poważnie rozważę dodanie jej do repozytorium rozszerzeń ;-)
Ktoś ma jeszcze jakieś sugestie? :-)

Tak btw. ten model rozszerzeń w Chrome jest wielki ;-)


Podobne postybeta
Buzz Troll Remover v0.3 - potęga guzików
Buzz Troll Remover v0.3.2 zawędrował do galerii rozszerzeń Chrome ;-)
Buzz Troll Remover v0.1.1 :-)
Ściana, czyli rozbijam się na onclick ;-)
Szaleństwo kolorów - kolorujemy Google+ ;-)

środa, maja 05, 2010

Buzz Troll Remover v0.1.1 :-)

[Update: najnowsza wersja to 0.2.1]Google Buzz jest bardzo miłym produktem, ma jednak jeden malutki problem, choć możemy zablokować niechcianą osobę tak, że nie będzie mogła komentować naszych buzzów to jednak nadal będziemy widzieli komentarze tej osoby pod buzzami od innych osób które obserwujemy.Miałem taki problem ostatnio i postanowiłem zrobić sobie rozszerzenie do Google Chrome, które naprawia tą jedną małą wadę Google Buzz.Rozszerzenie zowie się Buzz Troll Remover [tak, tak wiem, że mam problemy z nazywaniem swoich produktów ;-)] i w chwili obecnej dostępne jest w wersji 0.1.1.W celu instalacji wystarczy w Google Chrome kliknąć na ten link.Zobaczymy takie okienko:Klikamy na Zainstaluj. [rozszerzenie działa w taki sposób, że co 2 sekundy przechodzi przez wszystkie linki na stronie GMAILa w poszukiwaniu takich, które wskazują na komentarze od osób których wolimy unikać, stąd rozszerzenie musi monitorować stronę GMAILa].Po zainstalowaniu do naszych ikon dołączy ikonka ze znakiem ostrzeżenia o trollach ;-) [widoczna najbardziej z prawej]:Po kliknięciu na ikonkę ujrzymy konfigurację rozszerzenia:Gdy chcemy kogoś unikać to w GMAILu w zakładce Buzzowej znajdujemy jakiś komentarz od tej osoby, klikamy na nim prawym myszem i wybieramy z menu "Kopiuj adres linku":Wklejamy ten link do okienka z poprzedniego rysunku, klikamy na "Save Trolls list" i od teraz wszystkie posty osoby, której chcemy unikać wyglądają tak:Jeżeli chcesz skasować daną osobę z listy trolli to musisz usunąć link wskazujący tą osobę z listy w okienku konfiguracji, nacisnąć znów "Save Trolls list" i przeładować stronę GMAILa.Jestem otwarty na komentarze ;-) i wyrazy uznania ;-)


Podobne postybeta
Historia jednego #....
Buzz Troll Remover v0.3.2 zawędrował do galerii rozszerzeń Chrome ;-)
Ewolucja Buzz Troll Remover'a ;-) - czyli nad czym teraz pracuję
Buzz Troll Remover v0.3 - potęga guzików
Gadające Gadu-Gadu

piątek, marca 05, 2010

Najnowszy Chrome nie lubi chyba Gmaila ;-)

Dziś zaktualizował mi się Chrome do wersji 5.0.342.1 i zachorował na ciekawą przypadłość ;-) Nie lubi już GMAILa.
Każda próba wejścia na GMAILa kończy się padem przeglądarki, co widać na filmie :-)



Co ciekawe korzystanie z konta jest nadal możliwe gdy używam konta na Google Apps :-)

Trzeba jednak pamiętać, że ja używam wersji developerskiej, a ona ma prawo zachowywać się dziwnie.


Podobne postybeta
OOo2GD 2.1.0 - filtrowanie, sortowanie [dla niektórych ;-)] i bardziej *nixowe nazwy
OpenOffice.org2GoogleDocs 1.0.1
O zaletach JNLP/Java Web Start :-)
Content rating dla Bloggeroida ;-)
Jak Henryk VIII i Dynastia Tudorów uczy, że demokracja is the best! ;-)

poniedziałek, listopada 30, 2009

Piszemy rozszerzenie dla Chrome ;-)

Żeby nie było, że nie lubię Chrome OS i mam zamiar go sabotować ;-)

W ramach zabawy zrobiłem sobie malutkie rozszerzenie, które nie do końca wiadomo do czego ma służyć.
To taki niby notesik, tudzież to-do ;-)

Wygląda tak sobie:


Działa też w Chrome OS :-)



Podoba mi się bardzo to, że rozszerzenia w Chrome bazują w 100% na znanych technologiach, plik manifestu to JSON, popup rozszerzenia to HTML/CSS/JavaScript, strona backgroundu to także HTML/CSS/JavaScript [choć moje "rozszerzenie" nie ma strony backgroundu, bo nie robi nic w tle].
Co mi się nie podoba? To, że z automatu rozszerzenia lądują zawsze między paskiem a ikonkami menu. Nie dam głowy, ale zrobienie rozszerzenia, które umieści się gdzie indziej wymaga chyba zabawy z DOMem strony na której w danym momencie jesteśmy....... W każdym bądź razie na razie nie znalazłem innej możliwości umieszczenia "się" z rozszerzeniem u dołu strony.

Co do mojego "rozszerzenia" to używa ono localStorage do składowania notatek. Na razie nie potrafi się synchronizować i zobaczymy czy się kiedykolwiek nauczy ;-)

Co jak co, ale napisanie prostego rozszerzenia dla Chrome jest o wiele prostsze niż w przypadku Firefoksa. Z drugiej strony rozszerzenia dla FF jakoś łatwiej skomponować z przeglądarką.

Jakby ktoś chciał pobrać rozszerzenie to znajdzie je tutaj ;-)

Jakieś pomysły co dodać rozszerzeniu, co w nim zmienić? Czy może dać sobie spokój? ;-)

Podobne postybeta
Algorytm - czemu w szkole nie uczą jak obliczyć pierwiastek? ;-)
Android nie taki zły ;-)
Piszemy dzienniczek z Copilotem ;-)
3 pomysły
Rozszerzenia Chrome - Content Script nie wszystko może...

sobota, listopada 28, 2009

Java i Chrome OS część 2 :-)

Postanowiłem robić dalsze eksperymenty z Java'ą na Chrome OS, tym razem jednak nie na VMPlayerze, a na moim EEE PC.

Okazuje się, że na Chrome OS są aż 2 Java'y!
Jest OpenJDK 1.6, która kryje się w katalogu /usr/lib/jvm/java-6-openjdk i przedstawia się jako OpenJDK Runtime Environment (IcedTea6 1.5) (6b16~pre5-0ubuntu2) OpenJDK Client VM (build 14.0-b16, mixed mode).
Druga to GCJ 4.4, które znajduje się w katalogu /usr/lib/jvm/java-1.5.0-gcj-4.4, która przedstawia się jako java version "1.5.0" jij (GNU libgcj) version 4.4.1.

W tej Java'ie z OpenJDK nie działa Swing, próba uruchomienia programu używającego AWT lub Swinga kończy się komunikatem:


Który mówi w skrócie, że Java nie może znaleźć odpowiedniej biblioteki natywnej.

W GCJ Swing działa :-)



Chociaż program jest dziwnie rozciągnięty na cały ekran.

Udał mi się także uruchomić w tej Java'ie mój programik animujący twarz cieniowaną metodą Gourauda:



I trzeba przyznać, że jest potwornie wolny. Co można zobaczyć na filmiku :-) [mam nadzieję, że kawałek Korna, którego słuchałem już został zastąpiony przez Bacha :-)]



Tyle wiemy.
Nie wiemy czy Java zagości w Chrome OS na stałe, czy jest tam teraz tylko przez przypadek.

A przydałaby się.
Np. niemal z automatu przyjąłem, że będę mógł poużywać mojego głównego komputera z Win7 przy pomocy Java'owego klienta VNC uruchomionego na Chrome OS.... Nie udało się ;-) Co oznacza, że nadal trzeba wstać i podejść do dużego komputera gdy chcemy mu coś zrobić.


Podobne postybeta
JDK8 na Rasbperry Pi rządzi :-)
Udawanie Raspberry Pi ;-)
GCJ mnie przerosło ;-)
Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)
Jeszcze o Chrome OS... a mądrość ludu po premierze sugeruje porażkę Chrome...