No to mamy nową wersję 3.0.0 OOo2GD :-)
W tej wersji dodałem możliwość eksportowania i importowania plików bez konwersji do Google Docs (najpierw trzeba plik wysłać do Google Docs bez konwersji, później takie pliki mogą być pobierane bez konwersji :-)).
Jednak ponieważ strona z rozszerzeniami OpenOffice.org nie działa, to do pobierania nowej wersji zapraszam na stronę projektu ;-)
Nowości:
- wspomniana już wcześniej możliwość eksportowania plików bez konwersji,
- praca z grafikami ODG, ale tylko bez konwersji.
Jeżeli Twój dokument można wrzucić bez konwersji i z konwersją ujrzysz taką wersję okienka eksportu:
Nowością jest checkobx "Convert to Google Docs format" (w polskiej wersji powinno być inaczej, ale właśnie do mnie dotarło, że zapomniałem dodać używanie wersji językowych dla tego pola ;-)... no to już wiem co będzie w kolejnej wersji ;-)).
Jeżeli ten checkbox będzie zaznaczony (domyślnie jest, ale można to zmienić w konfiguracji) OOo2GD wyeksportuje plik konwertując go do formatu Google Docs.
Jeżeli będzie niezaznaczony to eksport odbędzie się bez konwersji, wyeksportowany zostanie plik binarny, a więc wszelkie formatowania, wzory i inne podobne rzeczy nie zostaną utracone.... Brzmi świetnie, nie? ;-)
Nie jest jednak, aż tak różowo, bo niestety z takim plikiem nie można pracować w Google Docs :-( Google Docs robi w takim przypadku za taki "dysk".
Jeśli chcesz wyeksportować plik, który jest "niekonwertowalny", np. grafikę ODG to zobaczysz okienko, które będzie wyglądało tak:
Updatowanie działa tak jak działało :-)
Podobne postybeta
OOo2GD (OpenOffice.org2GoogleDocs) 1.2.2
Wersja 2.0.0 OOo2GD już jest :-)
Podejrzanie szybko....
OpenOffice.org i Google Docs :-)
Zmienne Go ;-)
Pokazywanie postów oznaczonych etykietą Google Docs. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Google Docs. Pokaż wszystkie posty
niedziela, czerwca 05, 2011
niedziela, maja 29, 2011
OO.org i Google Docs bez konwersji są tuż tuż ;-)
No to mam już pierwszy działający build OOo2GD, który wspiera pracę z Google Docs bez konwersji do ich formatu.
Dzięki temu nie tracimy formatowań, wzorów, czy czegokolwiek z plików. Po pobraniu ich z Google Docs są binarnie identyczne z tym co wysłaliśmy do Google Docs.
Tracimy jednak możliwość pracy z tymi plikami w Google Docs.
Teraz mam zgryz.
Pierwszy jest taki jak poinformować o tym użytkowników. W Release Notesach sobie to mogą umieszczać i tak ich nie czyta, nowe checkboxy też nic nie dadzą, bo od dawna mam checkboxy do updatowania, a ciągle mam użytkowników, którzy nie mają w ogóle pojęcia, że można updatować lub autoupdatować dokumenty w Google Docs. Na razie rozważam dwie opcje, wyświetlenie na początku okienka z informacją i może odesłanie do strony WWW z np. filmem na YouTube pokazującym o co biega, druga chyba lepsza, ale ciut trudniejsza do zrobienia, to dodać specjalni "hinty", takie jak Google używa w GMAILu by pokazać nowe funkcje.
Drugi jest taki, jaki nadać numer wersji ;-) Na razie roboczo jest to 2.5.0 beta, ale waham się czy ma to być 2.5.0 czy może 3.0.0 :-)
Trzeci zgryz jest taki, czy wydawać jak rozwiąże zgryzy #1 i #2, czy jeszcze wyciąć w ogóle biblioteki Google i używać tylko swoich własnych, wtedy plik będzie dużo mniejszy, zamiast 2.2 MB, będzie miał góra 300 KB.
Jak ktoś chciałby dostać wersję testową to proszę o kontakt przez mój profil Google, albo przez maila, którego znajdziecie tutaj.
Podobne postybeta
Ukradli nam przyszłość....
Marcowe książki
OOo2GD w liczbach ;-)
Bardzo testowa wersja OOo2GD 1.7.0, która w porywach działa nawet na MacOS ;-)
Uwolnić, nie uwolnić?
Dzięki temu nie tracimy formatowań, wzorów, czy czegokolwiek z plików. Po pobraniu ich z Google Docs są binarnie identyczne z tym co wysłaliśmy do Google Docs.
Tracimy jednak możliwość pracy z tymi plikami w Google Docs.
Teraz mam zgryz.
Pierwszy jest taki jak poinformować o tym użytkowników. W Release Notesach sobie to mogą umieszczać i tak ich nie czyta, nowe checkboxy też nic nie dadzą, bo od dawna mam checkboxy do updatowania, a ciągle mam użytkowników, którzy nie mają w ogóle pojęcia, że można updatować lub autoupdatować dokumenty w Google Docs. Na razie rozważam dwie opcje, wyświetlenie na początku okienka z informacją i może odesłanie do strony WWW z np. filmem na YouTube pokazującym o co biega, druga chyba lepsza, ale ciut trudniejsza do zrobienia, to dodać specjalni "hinty", takie jak Google używa w GMAILu by pokazać nowe funkcje.
Drugi jest taki, jaki nadać numer wersji ;-) Na razie roboczo jest to 2.5.0 beta, ale waham się czy ma to być 2.5.0 czy może 3.0.0 :-)
Trzeci zgryz jest taki, czy wydawać jak rozwiąże zgryzy #1 i #2, czy jeszcze wyciąć w ogóle biblioteki Google i używać tylko swoich własnych, wtedy plik będzie dużo mniejszy, zamiast 2.2 MB, będzie miał góra 300 KB.
Jak ktoś chciałby dostać wersję testową to proszę o kontakt przez mój profil Google, albo przez maila, którego znajdziecie tutaj.
Podobne postybeta
Ukradli nam przyszłość....
Marcowe książki
OOo2GD w liczbach ;-)
Bardzo testowa wersja OOo2GD 1.7.0, która w porywach działa nawet na MacOS ;-)
Uwolnić, nie uwolnić?
Google Docs dojrzewa :-)
Po pierwsze w przypadku API idą w kierunku tego by praca ze wszystkimi typami plików czy dokumentów była taka sama, bawię się teraz w dodawanie do OOo2GD wsparcia pracy z plikami bez konwersji do formatu Google Docs i updatowanie plików i dokumentów załatwia dokładnie ten sam kawałek kodu :-)
Nie do końca co prawda rozumiem czemu zdecydowali się by w przyszłości zrezygnować z uploadowania plików w 1 kawałku i chcą to zastąpić uploadowaniem w kawałkach (nic nie stoi na przeszkodzie by zrobić upload w 1 kawałku ;-)), ale to stosunkowo niewielka zmiana w kodzie, a ten sam praktycznie kod może służyć do updatowania i uploadowania plików/dokumentów :-)
Po drugie w przypadku plików istnieje możliwość przekonwertowania ich po stronie Google Docs do formatu Google Docs co jest super :-)
Podobne postybeta
OOo2GD 2.4.0 - foldery i HTTPS
Mogłoby być łatwiej ;-)
Sklep z mieszkaniami
Nie takie złe API ;-)
OO.org i Google Docs bez konwersji są tuż tuż ;-)
Nie do końca co prawda rozumiem czemu zdecydowali się by w przyszłości zrezygnować z uploadowania plików w 1 kawałku i chcą to zastąpić uploadowaniem w kawałkach (nic nie stoi na przeszkodzie by zrobić upload w 1 kawałku ;-)), ale to stosunkowo niewielka zmiana w kodzie, a ten sam praktycznie kod może służyć do updatowania i uploadowania plików/dokumentów :-)
Po drugie w przypadku plików istnieje możliwość przekonwertowania ich po stronie Google Docs do formatu Google Docs co jest super :-)
Podobne postybeta
OOo2GD 2.4.0 - foldery i HTTPS
Mogłoby być łatwiej ;-)
Sklep z mieszkaniami
Nie takie złe API ;-)
OO.org i Google Docs bez konwersji są tuż tuż ;-)
niedziela, maja 22, 2011
Mogłoby być łatwiej ;-)
W końcu zaczęło działać uploadowanie dowolnych plików do Google Docs, wcześniej było dostępne tylko dla szczęśliwych posiadaczy płatnych kont w Google Apps for Business. Teraz z tego ficzera może skorzystać już każdy....
Nie jest oczywiście tak różowo ;-) bo nie działa jak na razie podstawowa funkcjonalność uploadowania plików bez konwersji, działa jednak jej wariant z uploadowaniem w kawałkach, można więc z tego ficzera już korzystać.
Czyli wysyłanie pliku pod adres:
<code>https://docs.google.com/feeds/default/private/full?ocr=true</code>
nie działa, działa za to wysyłanie najpierw nagłówków pod:
<code>https://docs.google.com/feeds/upload/create-session/default/private/full?convert=false</code>
a później wysyłanie zawartości pliku pod adres zwrócony w nagłówku Location zwróconym przez serwer.
Ale.... Ale upload to jedno, download to drugie ;-) A żeby zrobić download trzeba dostać listę plików w Google Docs, a tego nie potrafi jeszcze żadna biblioteka (tudzież co równie prawdopodobne, nie wiem jak to zrobić ;-)), biblioteki podają tylko listę dokumentów Google Docs. Niestety we wszystkich moich projektach (poza Chrome2Chrome) używam do dostępu do Google Docs bibliotek Google'a (czyli w OOo2GD i w Echidna'ie), stąd teraz mam problem bo muszę je obejść bez wyłączania głównej funkcjonalności ;-)
A XML jest ohydny i trzeba napisać doń parser.... OK, kawałek parsera, bo SAX za nas zrobi resztę, ale i tak jest to upierdliwe.
Coś mi się wydaje, że zbliża się moment gdy będę musiał w ogóle zrezygnować z Google'owych bibliotek. Ważą w wersji Java'owej prawie czy nawet ponad 2MB, a sam jestem w stanie zakodować większość ich funkcji (tych które potrzebuje, bo biblioteki są duże dlatego, że pozwalają na różne kosmiczne rzeczy, które mnie nie są potrzebne) w paruset liniach.
Cały Bloggeroid, który używa właśnie napisanych z palca metod dostępu do API liczy koło 90 KB po kompilacji, inne klienty 500 KB i więcej ;-) bo używają bibliotek.
Na pierwszy ogień pójdzie chyba OOo2GD, raz że więcej ludzi go używa, dwa, że Java jest prostsza od obrzydliwego C#. W przypadku Echidny cholera wie czy w ogóle będę w stanie zrobić wersję "dla ludzi" bo używam jakichś bibliotek Dokan do mapowania dysku i jest to ohydne ;-)
W Windows panuje kult instalatorów, bo nie można po prostu wrzucić plików do katalogu, trzeba je często "rejestrować"....
Dlatego nie wiem czy nie będzie łatwiej zrobić po prostu synchronizacji katalogu ;-)
Ale jak uploadowanie do Google Docs dowolnych plików będzie działać to chyba rozważę kupno dodatkowej przestrzeni "dyskowej" od Google, 5 USD za dodatkowe 20 GB brzmi nieźle.
Btw. czy Google się zabezpiecza jakoś przed tym by np. nie wykorzystywano przestrzeni w Google Docs jako magazynu plików dla innych serwisów ;-) 16 TB za 4096 USD to znów nie byłoby tak dużo ;-)
Podobne postybeta
Jak "okradłem" Google Readera ;-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Wredne Google Docs
Chyba czegoś nie rozumiem....
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
Nie jest oczywiście tak różowo ;-) bo nie działa jak na razie podstawowa funkcjonalność uploadowania plików bez konwersji, działa jednak jej wariant z uploadowaniem w kawałkach, można więc z tego ficzera już korzystać.
Czyli wysyłanie pliku pod adres:
<code>https://docs.google.com/feeds/default/private/full?ocr=true</code>
nie działa, działa za to wysyłanie najpierw nagłówków pod:
<code>https://docs.google.com/feeds/upload/create-session/default/private/full?convert=false</code>
a później wysyłanie zawartości pliku pod adres zwrócony w nagłówku Location zwróconym przez serwer.
Ale.... Ale upload to jedno, download to drugie ;-) A żeby zrobić download trzeba dostać listę plików w Google Docs, a tego nie potrafi jeszcze żadna biblioteka (tudzież co równie prawdopodobne, nie wiem jak to zrobić ;-)), biblioteki podają tylko listę dokumentów Google Docs. Niestety we wszystkich moich projektach (poza Chrome2Chrome) używam do dostępu do Google Docs bibliotek Google'a (czyli w OOo2GD i w Echidna'ie), stąd teraz mam problem bo muszę je obejść bez wyłączania głównej funkcjonalności ;-)
A XML jest ohydny i trzeba napisać doń parser.... OK, kawałek parsera, bo SAX za nas zrobi resztę, ale i tak jest to upierdliwe.
Coś mi się wydaje, że zbliża się moment gdy będę musiał w ogóle zrezygnować z Google'owych bibliotek. Ważą w wersji Java'owej prawie czy nawet ponad 2MB, a sam jestem w stanie zakodować większość ich funkcji (tych które potrzebuje, bo biblioteki są duże dlatego, że pozwalają na różne kosmiczne rzeczy, które mnie nie są potrzebne) w paruset liniach.
Cały Bloggeroid, który używa właśnie napisanych z palca metod dostępu do API liczy koło 90 KB po kompilacji, inne klienty 500 KB i więcej ;-) bo używają bibliotek.
Na pierwszy ogień pójdzie chyba OOo2GD, raz że więcej ludzi go używa, dwa, że Java jest prostsza od obrzydliwego C#. W przypadku Echidny cholera wie czy w ogóle będę w stanie zrobić wersję "dla ludzi" bo używam jakichś bibliotek Dokan do mapowania dysku i jest to ohydne ;-)
W Windows panuje kult instalatorów, bo nie można po prostu wrzucić plików do katalogu, trzeba je często "rejestrować"....
Dlatego nie wiem czy nie będzie łatwiej zrobić po prostu synchronizacji katalogu ;-)
Ale jak uploadowanie do Google Docs dowolnych plików będzie działać to chyba rozważę kupno dodatkowej przestrzeni "dyskowej" od Google, 5 USD za dodatkowe 20 GB brzmi nieźle.
Btw. czy Google się zabezpiecza jakoś przed tym by np. nie wykorzystywano przestrzeni w Google Docs jako magazynu plików dla innych serwisów ;-) 16 TB za 4096 USD to znów nie byłoby tak dużo ;-)
Podobne postybeta
Jak "okradłem" Google Readera ;-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Wredne Google Docs
Chyba czegoś nie rozumiem....
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
czwartek, maja 12, 2011
OOo2GD 2.4.0 - foldery i HTTPS
Zoho znów dziś mi przypomniało, że właśnie skończyli wsparcie dla połączeń po HTTP, ale widzą nadal użytkowników mojej aplikacji, którzy używają HTTP.
Przedłużyli czas działania i przysłali przypominajkę :-)
To mi się podoba.
Dlatego mamy dziś nową wersję 2.4.0 OOo2GD.
Nowości:
- przy nazwach plików w Google Docs widać foldery do których należą,
- pod listą plików w Google Docs widać listę folderów, kliknięcie na folderze filtruje listę plików tylko do tego folderu
Zmiany:
- cała komunikacja z Zoho (z Google Docs powinno już być tak wcześniej) odbywa się tylko po HTTPS.
OOo2GD na razie nie wspiera uploadowania dowolnych plików (tudzież uploadowania plików bez konwersji do dokumentów Google Docs). Nie mam tego jeszcze jak przetestować, ale jak tylko Google włączy to na którymś z moich kont to postaram się dodać wsparcie ;-)
Zapraszam do pobierani, albo ze strony rozszerzenia w repozytorium rozszerzeń OpenOffice.org, albo ze strony projektu, sam OpenOffice.org też powinien wam przypomnieć o możliwości updatowania :-)
Podobne postybeta
Graph Search.... ale o co chodzi?
Spóźnialskie Google Latitude ;-)
Google Docs dojrzewa :-)
OOo2GD - zabawa w dodawanie folderów
Yeah! Czyżby mój zapominany projekt Echidna miał znów zacząć działać? ;-)
Przedłużyli czas działania i przysłali przypominajkę :-)
To mi się podoba.
Dlatego mamy dziś nową wersję 2.4.0 OOo2GD.
Nowości:
- przy nazwach plików w Google Docs widać foldery do których należą,
- pod listą plików w Google Docs widać listę folderów, kliknięcie na folderze filtruje listę plików tylko do tego folderu
Zmiany:
- cała komunikacja z Zoho (z Google Docs powinno już być tak wcześniej) odbywa się tylko po HTTPS.
OOo2GD na razie nie wspiera uploadowania dowolnych plików (tudzież uploadowania plików bez konwersji do dokumentów Google Docs). Nie mam tego jeszcze jak przetestować, ale jak tylko Google włączy to na którymś z moich kont to postaram się dodać wsparcie ;-)
Zapraszam do pobierani, albo ze strony rozszerzenia w repozytorium rozszerzeń OpenOffice.org, albo ze strony projektu, sam OpenOffice.org też powinien wam przypomnieć o możliwości updatowania :-)
Podobne postybeta
Graph Search.... ale o co chodzi?
Spóźnialskie Google Latitude ;-)
Google Docs dojrzewa :-)
OOo2GD - zabawa w dodawanie folderów
Yeah! Czyżby mój zapominany projekt Echidna miał znów zacząć działać? ;-)
poniedziałek, maja 02, 2011
Yeah! Czyżby mój zapominany projekt Echidna miał znów zacząć działać? ;-)
Google na Twitterze właśnie ogłosiło, że odblokowują dla wszystkich możliwość uploadowania dowolnych plików do Google Docs przez API.
A to oznacza, że mój pomysł dysku R:\ ;-) czyli mojego własnego klona Google'owego projektu Platypus (który jak na razie nie ujrzał światła dziennego ;-)) może wrócić do życia :-)
Bo tym co mnie najbardziej hamowało były problemy z tym, że plik między wrzuceniem do Google Docs, a pobraniem go z Google Docs się zmieniał. Teraz problem zostanie rozwiązany :-)
To trzymajcie kciuki coby mi się udało :-)
No i jak tu nie kochać Google? ;-)
Podobne postybeta
OpenSocial
Przymiarki do Nowego Gadacza
Zasada drobnej przekory ;-)
Eksperymentalna wersja 0.5 OpenOffice.org2GoogleDocs
Czemu deploymenty są takie trudne?
A to oznacza, że mój pomysł dysku R:\ ;-) czyli mojego własnego klona Google'owego projektu Platypus (który jak na razie nie ujrzał światła dziennego ;-)) może wrócić do życia :-)
Bo tym co mnie najbardziej hamowało były problemy z tym, że plik między wrzuceniem do Google Docs, a pobraniem go z Google Docs się zmieniał. Teraz problem zostanie rozwiązany :-)
To trzymajcie kciuki coby mi się udało :-)
No i jak tu nie kochać Google? ;-)
Podobne postybeta
OpenSocial
Przymiarki do Nowego Gadacza
Zasada drobnej przekory ;-)
Eksperymentalna wersja 0.5 OpenOffice.org2GoogleDocs
Czemu deploymenty są takie trudne?
piątek, grudnia 24, 2010
OOo2GD - zabawa w dodawanie folderów
OK, robię eksperymenty nad dodawaniem do OOo2GD wsparcia dla folderów.
Na razie wygląda to tak:

Te kolorowe labelki to właśnie foldery, dodatkowo jeżeli użytkownik zaklika jedną z tych labelek u dołu okienka to OOo2GD pokaże tylko elementy z tego folderu:

Funkcjonalnie jest to to do czego dążyłem, co do wyglądu to jeszcze nie jest to to co chciałem :-)
Np. jak na razie mam tylko 7 "schematów" kolorów z czego i tak jak mi się wydaje co najmniej 1 nie działa ;-)
Z innych około OOo2GDowych spraw, to nadal OOo2GD nie działa, tudzież bardziej, nie wygląda ;-) na Mac OS X. Mnie za to po głowie chodzi pomysł kupienia sobie Maca Mini... Ale się leczę ;-)
Podobne postybeta
Dostaję coraz więcej screenshotów
Mruk i metalowe przedmioty - (nie)poradnik inwestycyjny z epoki kamienia (czasami łupanego), część pierwsza
OOo2GD 2.4.0 - foldery i HTTPS
Workflow dla Alfreda do dodawania tasków z projektami i labelkami do Todoista :-)
Nowy coś do pisania - constants list/reference/cokolwiek ;-) albo spis stałych
Na razie wygląda to tak:

Te kolorowe labelki to właśnie foldery, dodatkowo jeżeli użytkownik zaklika jedną z tych labelek u dołu okienka to OOo2GD pokaże tylko elementy z tego folderu:

Funkcjonalnie jest to to do czego dążyłem, co do wyglądu to jeszcze nie jest to to co chciałem :-)
Np. jak na razie mam tylko 7 "schematów" kolorów z czego i tak jak mi się wydaje co najmniej 1 nie działa ;-)
Z innych około OOo2GDowych spraw, to nadal OOo2GD nie działa, tudzież bardziej, nie wygląda ;-) na Mac OS X. Mnie za to po głowie chodzi pomysł kupienia sobie Maca Mini... Ale się leczę ;-)
Podobne postybeta
Dostaję coraz więcej screenshotów
Mruk i metalowe przedmioty - (nie)poradnik inwestycyjny z epoki kamienia (czasami łupanego), część pierwsza
OOo2GD 2.4.0 - foldery i HTTPS
Workflow dla Alfreda do dodawania tasków z projektami i labelkami do Todoista :-)
Nowy coś do pisania - constants list/reference/cokolwiek ;-) albo spis stałych
poniedziałek, listopada 29, 2010
Strona z pomocą dla OOo2GD
Od dłuższego czasu planowałem to zrobić, ale mi się nie chciało ;-)
Ostatnio jednak przełamałem się i zacząłem tworzyć stronę w Google Sites, która ma być pomocą dla OpenOffice.org2GoogleDocs.
Zapraszam na stronę pomocy dla OOo2GD.
Wszelkie uwagi mile widziane [tutaj, w Google Buzz, na maila, w surveyach].
Stworzyłem też nową ankietę, która ma sprawdzić czy mogę liczyć na pomoc użytkowników OOo2GD w umieszczeniu go w Google Apps Marketplace.
Tak się składa, że Google liczy sobie za dodanie aplikacji 100 USD, a to trochę za dużo żebym sam z tego wyskoczył [ja mogę dać 25 USD, bo to wg. mnie rozsądna cena]. Dlatego stworzyłem ankietę, która pozwoli mi ocenić czy znajdzie się taka liczba osób by opłacało mi się zmienić moje konto w PayPal do takiego na które można przesyłać donacje.
Myślałem o datkach 5 USD, wtedy z moimi 25 USD potrzebne by było 15 osób, które byłyby gotowe wyłożyć po 5 USD. Ewentualny podatek wezmę na siebie [jak rozumiem będzie to 18% bo raczej się nie załapię w tym roku na 32% ;-)].
Tutaj ankieta:
Podobne postybeta
100USD to jednak za dużo.....
Otwarty umysł - definicja ;-)
Sprzęt WiFi w procentach
Milion
Tesco hack ;-)
Ostatnio jednak przełamałem się i zacząłem tworzyć stronę w Google Sites, która ma być pomocą dla OpenOffice.org2GoogleDocs.
Zapraszam na stronę pomocy dla OOo2GD.
Wszelkie uwagi mile widziane [tutaj, w Google Buzz, na maila, w surveyach].
Stworzyłem też nową ankietę, która ma sprawdzić czy mogę liczyć na pomoc użytkowników OOo2GD w umieszczeniu go w Google Apps Marketplace.
Tak się składa, że Google liczy sobie za dodanie aplikacji 100 USD, a to trochę za dużo żebym sam z tego wyskoczył [ja mogę dać 25 USD, bo to wg. mnie rozsądna cena]. Dlatego stworzyłem ankietę, która pozwoli mi ocenić czy znajdzie się taka liczba osób by opłacało mi się zmienić moje konto w PayPal do takiego na które można przesyłać donacje.
Myślałem o datkach 5 USD, wtedy z moimi 25 USD potrzebne by było 15 osób, które byłyby gotowe wyłożyć po 5 USD. Ewentualny podatek wezmę na siebie [jak rozumiem będzie to 18% bo raczej się nie załapię w tym roku na 32% ;-)].
Tutaj ankieta:
Podobne postybeta
100USD to jednak za dużo.....
Otwarty umysł - definicja ;-)
Sprzęt WiFi w procentach
Milion
Tesco hack ;-)
niedziela, listopada 21, 2010
Zaczynamy Sync2GDocs.... ciekawe czy skończymy ;-)
Próbuję sobie na szybko napisać takie małe narzędzie, które będzie mi synchronizowało jakiś katalog na dysku z Google Docs i niby działa, ale nie do końca ;-)
Kradnę sobie swój kod z OpenOffice.org2GoogleDocs i jak na razie po jakichś 2 godzinach [łącznie] pracy nad tym mam coś co pobiera pliki z Google Docs i wrzuca je do katalogu na dysku i w razie plik na dysku się zmieni to wrzuca jego update do Google Docs....... Ale coś się psuje w pobieraniu w dół.
Bardzo dużo czasu to zabiera.... ale nie zawsze, czasem to błysk ciupagi i po zmianie w Google Docs plik jest szybko updatowany na dysku, a czasem zajmuje to bardzo dużo czasu.
Z updatowaniem pliku w Google Docs jest prościej, ale też bywa różnie.
Chociaż na razie wszystko wskazuje na to, że problemy są nawet nie w algorytmie decydującym kto ma lepszą wersję ;-) ale w tym, że programik mając na razie koło 150 linii [nie licząc kodu z OOo2GD] nie updatuje sobie jeszcze swojej listy plików w razie sam go zmieni, ale to się zrobi ;-)
Algorytm jest prosty.
Lokalnie przechowuję ścieżkę do pliku, jego rozmiar [ostatniej znanej wersji], jego datę [lokalną] i datę ostatniej zmiany w Google Docs. Jeżeli data ostatniej zmiany w Google Docs uległa zmianie to pobieram plik z Google Docs, jeśli zmieniła się lokalna data i długość pliku to wrzucam jego zawartość do Google Docs [pewnie wystarczyłoby samą datę brać pod uwagę].
Na razie nie potrafię obsłużyć wrzucania nowych plików, ani zmiany nazwy plików w Google Docs [zmiana lokalnie będzie bardziej niż trudna i chyba nie jestem jej w stanie "złapać"].
Już o takim programiku od dłuższego czasu myślałem, ale jakoś mi się pisać nie chciało ;-) Ale, że Echidna była zbyt ochidna ;-) do pisania to sobie chyba takie coś popełnię. A nóż okaże się przydatne? :-)
Marzyłoby mi się dodanie ciągłej synchronizacji między OpenOffice.org a GoogleDocs, ale do tego musiałbym się naumieć operować edytorem OO.org i w razie potrzeby pobierać też plik bez jego zapisywania na dysk [tzn. dostać dane binarne pliku, ale OO.org powinien ciągle "myśleć", że pliku nie zapisał].
Podobne postybeta
Raport z prac nad ubogą krewną Playtypusa, czyli Kolczatką :-)
"Ochidna" Echidna ;-) czyli jak się mają prace nad RDrive.
Ha! Ochidna Echidna potrafi updatować pliki :-)
Nowa choroba ;-)
User Interface... jak ja tego nie lubię...
Kradnę sobie swój kod z OpenOffice.org2GoogleDocs i jak na razie po jakichś 2 godzinach [łącznie] pracy nad tym mam coś co pobiera pliki z Google Docs i wrzuca je do katalogu na dysku i w razie plik na dysku się zmieni to wrzuca jego update do Google Docs....... Ale coś się psuje w pobieraniu w dół.
Bardzo dużo czasu to zabiera.... ale nie zawsze, czasem to błysk ciupagi i po zmianie w Google Docs plik jest szybko updatowany na dysku, a czasem zajmuje to bardzo dużo czasu.
Z updatowaniem pliku w Google Docs jest prościej, ale też bywa różnie.
Chociaż na razie wszystko wskazuje na to, że problemy są nawet nie w algorytmie decydującym kto ma lepszą wersję ;-) ale w tym, że programik mając na razie koło 150 linii [nie licząc kodu z OOo2GD] nie updatuje sobie jeszcze swojej listy plików w razie sam go zmieni, ale to się zrobi ;-)
Algorytm jest prosty.
Lokalnie przechowuję ścieżkę do pliku, jego rozmiar [ostatniej znanej wersji], jego datę [lokalną] i datę ostatniej zmiany w Google Docs. Jeżeli data ostatniej zmiany w Google Docs uległa zmianie to pobieram plik z Google Docs, jeśli zmieniła się lokalna data i długość pliku to wrzucam jego zawartość do Google Docs [pewnie wystarczyłoby samą datę brać pod uwagę].
Na razie nie potrafię obsłużyć wrzucania nowych plików, ani zmiany nazwy plików w Google Docs [zmiana lokalnie będzie bardziej niż trudna i chyba nie jestem jej w stanie "złapać"].
Już o takim programiku od dłuższego czasu myślałem, ale jakoś mi się pisać nie chciało ;-) Ale, że Echidna była zbyt ochidna ;-) do pisania to sobie chyba takie coś popełnię. A nóż okaże się przydatne? :-)
Marzyłoby mi się dodanie ciągłej synchronizacji między OpenOffice.org a GoogleDocs, ale do tego musiałbym się naumieć operować edytorem OO.org i w razie potrzeby pobierać też plik bez jego zapisywania na dysk [tzn. dostać dane binarne pliku, ale OO.org powinien ciągle "myśleć", że pliku nie zapisał].
Podobne postybeta
Raport z prac nad ubogą krewną Playtypusa, czyli Kolczatką :-)
"Ochidna" Echidna ;-) czyli jak się mają prace nad RDrive.
Ha! Ochidna Echidna potrafi updatować pliki :-)
Nowa choroba ;-)
User Interface... jak ja tego nie lubię...
środa, listopada 03, 2010
OOo2GD 2.3.0 - nowe dokumenty i autoupdate w działaniu :-)
No i po bardzo długiej przerwie mamy OpenOffice.org2GoogleDocs w nowej wersji 2.3.0.
Nowością jest wsparcie dla Nowych dokumentów Google Docs.
Mówiąc prościej dla takich, w których edycja jest bardzo szybka... w myśl zasady, że jeden obraz jest wart tysiąca słów, krótki film pokazujący o co chodzi ;-)
Po prawej mamy OpenOffice.org w którym prowadzona jest edycja, po lewej mamy okno Google Chorme z otwartym dokumentem w Google Docs:
Po każdorazowym nagraniu dokumentu w OpenOffice.org [przy pomocy CTRL-S tutaj] jego zawartość jest w ciągu kilku sekund wrzucana do Google Docs gdzie już po chwili ją widać :-)
Tutaj jest mały błąd i pierwsze updatowanie nie działa ;-) Nie wiem do końca dlaczego, ale nie działa. Kolejne już działają.
Jak zwykle zapraszam do pobierania ze strony OOo2GD w repozytorium rozszerzeń OpenOffice.org, lub ze strony projektu.
Marzy mi się działanie tej funkcji w drugą stronę, ale to już takie proste nie jest.
Nawet przy założeniu prostego algorytmu rozwiązywania konfliktów wyrażającego się w słowach "nowszy zawsze wygrywa" trudno jest chyba przekonać OO.org do tego by nagrywało/wczytywało zawartość dokumentu w locie.........
Podobne postybeta
Podejrzanie szybko....
Wersja 2.0.0 OOo2GD już jest :-)
Jednoczesna edycja pliku.... a jakby to tak........ i nowy ePubGenerator v0.0.4
3 sezon Wiedźmina był jak narazie najlepszy ;-)
Działa :-)
Nowością jest wsparcie dla Nowych dokumentów Google Docs.
Mówiąc prościej dla takich, w których edycja jest bardzo szybka... w myśl zasady, że jeden obraz jest wart tysiąca słów, krótki film pokazujący o co chodzi ;-)
Po prawej mamy OpenOffice.org w którym prowadzona jest edycja, po lewej mamy okno Google Chorme z otwartym dokumentem w Google Docs:
Po każdorazowym nagraniu dokumentu w OpenOffice.org [przy pomocy CTRL-S tutaj] jego zawartość jest w ciągu kilku sekund wrzucana do Google Docs gdzie już po chwili ją widać :-)
Tutaj jest mały błąd i pierwsze updatowanie nie działa ;-) Nie wiem do końca dlaczego, ale nie działa. Kolejne już działają.
Jak zwykle zapraszam do pobierania ze strony OOo2GD w repozytorium rozszerzeń OpenOffice.org, lub ze strony projektu.
Marzy mi się działanie tej funkcji w drugą stronę, ale to już takie proste nie jest.
Nawet przy założeniu prostego algorytmu rozwiązywania konfliktów wyrażającego się w słowach "nowszy zawsze wygrywa" trudno jest chyba przekonać OO.org do tego by nagrywało/wczytywało zawartość dokumentu w locie.........
Podobne postybeta
Podejrzanie szybko....
Wersja 2.0.0 OOo2GD już jest :-)
Jednoczesna edycja pliku.... a jakby to tak........ i nowy ePubGenerator v0.0.4
3 sezon Wiedźmina był jak narazie najlepszy ;-)
Działa :-)
poniedziałek, października 18, 2010
Wysyłamy pliki do Google Docs przy pomocy Go :-)
W ramach szukania pomysłów na wpis do bloga, a i nauki Go chciałem napisać sobie uploadowarkę plików do Google Docs przy pomocy Go........
I częściowo mi się to udało ;-)
Częściowo, bo działa tylko pod Linuskem, pod portem dla Windows nie działa.
Błąd na Windows pojawia się w trakcie próby zalogowania się do Google Docs, a dokładniej do Writely bo tak nazywa się serwis związany z Google Docs [bez arkuszy] dostaję błąd "could not find root certificate for chain", a przez to reszta zabawy nie ma sensu :-(
Na Linuksie jednak wszystko działa :-) i cały program wygląda tak:
W celu jego uruchomienia kompilujemy go standardem:
i uruchamiamy:
Gdzie eMail to adres którego używamy w Google Docs, a HasłoDoKontaGoogle to hasło do konta związanego z tym mailem.
Ta wersja programu wysyła plik do Google Docs przy pomocy HTTP, jeśli chcemy użyć HTTPS, to trzeba w sekcji import zmienić "net" w "crypto/tls", a w linii z net.Dial trzeba zmienić to net.Dial na tls.Dial, do tego trzeba zmienić docs.google.code:80 na docs.google.code:443.
Po skompilowaniu działa :-)
Efektem działania programu jest pojawienie się nowego pliku toster.txt w Google Docs :-)
Wszystko działa także z kontami w Google Apps.
Teraz parę słów krytyki ;-)
Po pierwsze zwracanie wielu wartości z funkcji jest super, ale tylko do czasu. Bo zawsze trzeba pobrać wszystkie wartości, a że Go chce być pomocne i uznaje za błąd istnienie niewykorzystanej zmiennej to trzeba też używać tych zwracanych wartości. Ja oszukałem bo błędy w większości przypadków tylko wypisuję, w rzeczywistości za każdym razem powinienem stosować taki "idiom":
Który jest jak najbardziej OK, ale to, że język do tego zmusza to przeszkadzajka. W ogólnym rozrachunku nie jest to może takie złe, bo w kodzie produkcyjnym trzeba się upewniać czy wszystko poszło OK, ale to męczy. Zresztą często w takich sytuacjach stosuje się sterowanie przepływem przy pomocy wyjątków, co nie jest ładne, ale jest szybsze w pisaniu, czyli robi się serie rzeczy, które mogą spowodować wyjątek, i jeśli wyjątek nie poleci to sterowanie przechodzi do następnej linii, aż wystąpi wyjątek, albo wszystko się uda zrobić.
Po drugie, pomieszanie światów. Raz używając http można stworzyć cały request POST i go wysłać, drugim razem trzeba zniżyć się do net albo crypto/tls czyli do poziomu socketów bo zechcieliśmy wykonać jedną nietypową rzecz, czyli ustawić nagłówki requesta.
W tym miejscu może nawet więcej sensu miałoby użycie tylko net albo crytpo/tls bez bawienia się w requesty.
Po trzecie, to wkurzające wymaganie jawnej konwersji typów. Java robi to milej. Przez tą konwersję trzeba ciągle kombinować. Przez co mam taką linię:
Bo oczywiście do ContentLength trzeba włożyć int64, a len zwraca "tylko" int.
Strasznie to upierdliwe.
Po czwarte, nadużywanie struktur. Jak widać w źródle, musiałem ukraść ze źródeł Go 2 struktury, nopCloser i readClose, bo komuś się ubzdurało, żeby strumień i jego zamykanie były oddzielnymi bytami, ale akurat do wielu bibliotek trzeba dostarczać strumienie, które są jednocześnie czytalne czy zapisywalne i zamykalne......
Po piątek, zmiany w kompilatorze. To jest na razie język eksperymentalny, choć Google podobno pisze w nim niektóre swoje wewnętrzne narzędzia.
Np. to, że teraz nie używa się średnika bo kompilator sam sobie go potrafi włożyć, nie działa z kompilatorem sprzed pół roku czy jakoś tak. Biblioteki też się zmieniają.
Po szóste, port dla Windows. Nie ma oficjalnego, jest taki mniej oficjalny, który ma np. problemy z HTTPSem.
Dla ciekawskich, ten program wyżej to dziecko jakichś 4 godzin, czyli dość długo powstawał.
Podobne postybeta
Zmienne Go ;-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
Go dla Java'owca ;-) odcinek 1 "klasy"
Wredne Google Docs
I częściowo mi się to udało ;-)
Częściowo, bo działa tylko pod Linuskem, pod portem dla Windows nie działa.
Błąd na Windows pojawia się w trakcie próby zalogowania się do Google Docs, a dokładniej do Writely bo tak nazywa się serwis związany z Google Docs [bez arkuszy] dostaję błąd "could not find root certificate for chain", a przez to reszta zabawy nie ma sensu :-(
Na Linuksie jednak wszystko działa :-) i cały program wygląda tak:
package main
import ("fmt";"http";"os";"strings";"io";"net";"bufio")
type nopCloser struct {
io.Reader
}
func (nopCloser) Close() os.Error { return nil }
type readClose struct {
io.Reader
io.Closer
}
func main() {
var user string
var password string
if len(os.Args)==3 {
user = os.Args[1]
password = os.Args[2]
} else {
fmt.Println("Sorry, you need to provide your Google Account credentials")
return
}
fmt.Println(password)
fmt.Println(user)
// OK, tutaj zaczyna się logowanie do serwisów Google, tym razem do "writely" czyli składowiska dla dokumentów, prezentacji i obrazków Google Docs
bodyType:="application/x-www-form-urlencoded"
appName:="RMKGOTest"
appVersion:="0.01"
service:="writely"
var loginRequestBody = "accountType=HOSTED_OR_GOOGLE&Email="+user+"&Passwd="+password+"&service="+service+"&source="+appName+"-"+appVersion;
r,err:=http.Post("https://www.google.com/accounts/ClientLogin",bodyType,strings.NewReader(loginRequestBody))
fmt.Println(err)
reader := r.Body
var buf []byte = make([]byte,r.ContentLength)
reader.Read(buf)
fmt.Println(string(buf))
elems:=strings.Split(string(buf),"\n",-1)
fmt.Println(len(elems))
// OK, już jesteśmy zalogowani, teraz musimy pobrać nagłówki autoryzacji
var authHeader string
for i:=range elems {
if strings.Index(elems[i],"Auth=")==0 {
authHeader=strings.Replace(elems[i],"Auth=","GoogleLogin auth=",1)
}
}
// Teraz przygotowujemy się do wysłania naszego "pliku" do Google Docs :-)
// treść pliku
documentBody:="This is only a test\nSend from Go to Google Docs :-)"
// MIME type
bodyType="text/plain"
// Tworzymy requesta
req:=new(http.Request)
req.Method="POST"
req.RawURL="https://docs.google.com/feeds/default/private/full"
req.ProtoMajor = 1
req.ProtoMinor = 1
req.Host="docs.google.com"
req.Close = true
req.Body=nopCloser{strings.NewReader(documentBody)}
req.Header = make(map[string]string)
req.Header["Content-Type"]=bodyType
req.Header["Authorization"]=authHeader
req.Header["Slug"]="toster.txt"
req.Header["GData-Version"]="3.0"
req.ContentLength=int64(len(documentBody))
c,errNet:=net.Dial("tcp","","docs.google.com:80")
fmt.Println(errNet)
fmt.Println(c)
err2:=req.Write(c)
fmt.Println(err2)
reader2 := bufio.NewReader(c)
resp, err3 := http.ReadResponse(reader2, req.Method)
if err3 != nil {
c.Close()
fmt.Println(err3)
return
}
resp.Body = readClose{resp.Body, c}
fmt.Println(resp.Body)
fmt.Println(resp.ContentLength)
cLen:=resp.ContentLength
if cLen==-1 {
cLen = 8192
}
var buf2 []byte = make([]byte,cLen)
reader2.Read(buf2)
fmt.Println(string(buf2))
c.Close()
} W celu jego uruchomienia kompilujemy go standardem:
8g httpTest2.go
8l httpTest2.8
i uruchamiamy:
./8.out eMail HasłoDoKontaGoogleGdzie eMail to adres którego używamy w Google Docs, a HasłoDoKontaGoogle to hasło do konta związanego z tym mailem.
Ta wersja programu wysyła plik do Google Docs przy pomocy HTTP, jeśli chcemy użyć HTTPS, to trzeba w sekcji import zmienić "net" w "crypto/tls", a w linii z net.Dial trzeba zmienić to net.Dial na tls.Dial, do tego trzeba zmienić docs.google.code:80 na docs.google.code:443.
Po skompilowaniu działa :-)
Efektem działania programu jest pojawienie się nowego pliku toster.txt w Google Docs :-)
Wszystko działa także z kontami w Google Apps.
Teraz parę słów krytyki ;-)
Po pierwsze zwracanie wielu wartości z funkcji jest super, ale tylko do czasu. Bo zawsze trzeba pobrać wszystkie wartości, a że Go chce być pomocne i uznaje za błąd istnienie niewykorzystanej zmiennej to trzeba też używać tych zwracanych wartości. Ja oszukałem bo błędy w większości przypadków tylko wypisuję, w rzeczywistości za każdym razem powinienem stosować taki "idiom":
coś, err = cośIo
if err!=nil {
// obsłuż błąd
return
}
Który jest jak najbardziej OK, ale to, że język do tego zmusza to przeszkadzajka. W ogólnym rozrachunku nie jest to może takie złe, bo w kodzie produkcyjnym trzeba się upewniać czy wszystko poszło OK, ale to męczy. Zresztą często w takich sytuacjach stosuje się sterowanie przepływem przy pomocy wyjątków, co nie jest ładne, ale jest szybsze w pisaniu, czyli robi się serie rzeczy, które mogą spowodować wyjątek, i jeśli wyjątek nie poleci to sterowanie przechodzi do następnej linii, aż wystąpi wyjątek, albo wszystko się uda zrobić.
Po drugie, pomieszanie światów. Raz używając http można stworzyć cały request POST i go wysłać, drugim razem trzeba zniżyć się do net albo crypto/tls czyli do poziomu socketów bo zechcieliśmy wykonać jedną nietypową rzecz, czyli ustawić nagłówki requesta.
W tym miejscu może nawet więcej sensu miałoby użycie tylko net albo crytpo/tls bez bawienia się w requesty.
Po trzecie, to wkurzające wymaganie jawnej konwersji typów. Java robi to milej. Przez tą konwersję trzeba ciągle kombinować. Przez co mam taką linię:
req.ContentLength=int64(len(documentBody))Bo oczywiście do ContentLength trzeba włożyć int64, a len zwraca "tylko" int.
Strasznie to upierdliwe.
Po czwarte, nadużywanie struktur. Jak widać w źródle, musiałem ukraść ze źródeł Go 2 struktury, nopCloser i readClose, bo komuś się ubzdurało, żeby strumień i jego zamykanie były oddzielnymi bytami, ale akurat do wielu bibliotek trzeba dostarczać strumienie, które są jednocześnie czytalne czy zapisywalne i zamykalne......
Po piątek, zmiany w kompilatorze. To jest na razie język eksperymentalny, choć Google podobno pisze w nim niektóre swoje wewnętrzne narzędzia.
Np. to, że teraz nie używa się średnika bo kompilator sam sobie go potrafi włożyć, nie działa z kompilatorem sprzed pół roku czy jakoś tak. Biblioteki też się zmieniają.
Po szóste, port dla Windows. Nie ma oficjalnego, jest taki mniej oficjalny, który ma np. problemy z HTTPSem.
Dla ciekawskich, ten program wyżej to dziecko jakichś 4 godzin, czyli dość długo powstawał.
Podobne postybeta
Zmienne Go ;-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
Go dla Java'owca ;-) odcinek 1 "klasy"
Wredne Google Docs
czwartek, października 14, 2010
Google Apps Scripts - to może być fajne :-)
Może wszyscy już wiedzą, ale wychodzi na to, że ze skryptów z Google Docs operować można na innych serwisach Google.
Dziś udało mi się stworzyć takim skryptem event w Google Calendar, a z tego co widać na liście dostępnych serwisów helpie to jest tego trochę.
Widziałem zapowiedzi tych Google Apps Scripts ale nie wiedziałem, że tego będzie aż tyle :-)
Wg. pomocy teraz można oskryptowić takie serwisy:
Teraz jeszcze tylko automatyzacja uruchamiania i można szaleć :-)
Te serwisy z gwiazdką to serwisy eksperymentalne.
Dziś udało mi się stworzyć takim skryptem event w Google Calendar, a z tego co widać na liście dostępnych serwisów helpie to jest tego trochę.
Widziałem zapowiedzi tych Google Apps Scripts ale nie wiedziałem, że tego będzie aż tyle :-)
Wg. pomocy teraz można oskryptowić takie serwisy:
- Base Services
- Calendar Services
- Contacts Services
- DocsList Services*
- Finance Services
- Jdbc Services*
- Language Services
- Mail Services
- Maps Services*
- Properties Services*
- Sites Services
- Soap Services
- Spreadsheet Services
- Ui Services*
- UrlFetch Services
- Utilities Services
- Xml Services
Teraz jeszcze tylko automatyzacja uruchamiania i można szaleć :-)
Te serwisy z gwiazdką to serwisy eksperymentalne.
Przykładowy skrypt dodany do arkusza w Google Docs, który stworzy w kalendarzu eventa wygląda tak:
function testCalendar() {
var cc = CalendarApp.getAllCalendars()[0].createEvent("Test", new Date("2010/10/14 15:10:00"), new Date("2010/10/14 16:00:00"));
}Co prawda godziny są przyjmowane wg. czasu Montain View, ale to można przeskoczyć pewnie przez dodanie nazwy strefy czasowej ;-) [chyba nie można, w każdym bądź razie tak jak myślałem, bo jak dodałem CET to mi nie stworzyło eventa]
Ale wygląda na to, że będzie się czemu przyglądać :-)
Podobne postybeta
Wpisy z Bloggera jako eventy w Google Calendar 4 - nowa wersja aplikacji ;-)
Google Play Services dobre jest :-)
Regresja liniowa w Google Docs
Serwisy mniejszej miłości ;-)
Niewyspanie - złe skutki niechciejśpizmu ;-)
Regresja liniowa w Google Docs
Na bardzo szybko ;-)
Ostatnio potrzebne mi było policzenie regresji liniowej..
OK, dokładniej chodziło mi o to by przybliżyć pewien zestaw punktów [moją pensję w czasie ;-)] linią.
Z tego co pamiętam w Excelu była taka możliwość, ale Excela nie mam, w OpenOffice.org Calc nie znalazłem [choć nie szukałem jakoś szczególnie], w końcu policzyłem na kalkulatorze :-) [inne rodzaje regresji zresztą też ;-)]
Ale po wszystkim stwierdziłem, że zobaczę sobie czy da się to zrobić w Google Docs :-)
Wprost się chyba nie da, w każdym bądź razie nie znalazłem niczego, ale za to napisałem sobie skrypt :-)
Coby go dodać do naszego arkusza to wybieramy Tools -> Scripts -> Script editor i wklejamy do niego poniższy skrypt.
Działanie polega na tym, że po nagraniu i uruchomieniu skryptu [w okienku edytora, jak to się robi bez edytora jeszcze nie wiem, używam tego od 20 minut :-)] podajemy zakres w którym są nasze dane (w postaci w stylu A1:B100). Muszą to być 2 kolumny danych, w pierwszej kolumnie będzie X, w drugiej Y.
Po chwili zobaczymy wyniki, czyli wartość współczynników a i b równania:
y=a*x+b
I to by było na tyle...
Aha, nie dam głowy że to dobrze działa ;-) ale powinno.
Podobne postybeta
A może by odkurzyć AI? ;-)
Bookmarklet do robienia CSV z obligacjami i ich oprocentowaniem ;-)
Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)
Dalsze ładne rzeczy
EEEBateria ;-)
Ostatnio potrzebne mi było policzenie regresji liniowej..
OK, dokładniej chodziło mi o to by przybliżyć pewien zestaw punktów [moją pensję w czasie ;-)] linią.
Z tego co pamiętam w Excelu była taka możliwość, ale Excela nie mam, w OpenOffice.org Calc nie znalazłem [choć nie szukałem jakoś szczególnie], w końcu policzyłem na kalkulatorze :-) [inne rodzaje regresji zresztą też ;-)]
Ale po wszystkim stwierdziłem, że zobaczę sobie czy da się to zrobić w Google Docs :-)
Wprost się chyba nie da, w każdym bądź razie nie znalazłem niczego, ale za to napisałem sobie skrypt :-)
Coby go dodać do naszego arkusza to wybieramy Tools -> Scripts -> Script editor i wklejamy do niego poniższy skrypt.
function linearRegression() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var myValue = Browser.inputBox("Enter a range");
var sumXY = 0.0;
var sumX = 0.0;
var sumY = 0.0;
var sumX2 = 0.0;
var myRange = sheet.getRange(myValue);
var n = myRange.getHeight();
for (var i=0; i<n; i++) {
var xi = myRange.getCell(i+1, 1).getValue();
var yi = myRange.getCell(i+1, 2).getValue();
sumXY+=xi*yi;
sumX+=xi;
sumY+=yi;
sumX2+=xi*xi;
}
var a = (n*sumXY-sumX*sumY)/(n*sumX2-sumX*sumX);
var b = 1/n*(sumY-a*sumX);
Browser.msgBox("a="+a+"\nb="+b);
}Działanie polega na tym, że po nagraniu i uruchomieniu skryptu [w okienku edytora, jak to się robi bez edytora jeszcze nie wiem, używam tego od 20 minut :-)] podajemy zakres w którym są nasze dane (w postaci w stylu A1:B100). Muszą to być 2 kolumny danych, w pierwszej kolumnie będzie X, w drugiej Y.
Po chwili zobaczymy wyniki, czyli wartość współczynników a i b równania:
I to by było na tyle...
Aha, nie dam głowy że to dobrze działa ;-) ale powinno.
Podobne postybeta
A może by odkurzyć AI? ;-)
Bookmarklet do robienia CSV z obligacjami i ich oprocentowaniem ;-)
Logistic Regression wykrywa clickbaity lepiej od Bayesa ;-)
Dalsze ładne rzeczy
EEEBateria ;-)
czwartek, lipca 22, 2010
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
[mały edit, zdecydowałem, że toperz powinno się pisać przez rz, a nie ż, wziął się od nietoperza choć myślałem też o pisowni topesz ;-) i tak, to nie ma żadnego wpływu na resztę postu ;-)]
Dziś pochwalę się wynikami mojego eksperymentu z użyciem Androida i OCRa w Google Docs do tworzenia dokumentów w Google Docs na podstawie zdjęć ;-)
Jest to moim prywatnym zdaniem jedno z najmniej przydatnych narzędzi jakie sobie kiedykolwiek popełniłem ;-)
Znajdziecie je pod tym linkiem.
Obsługa jest prosta, po zainstalowaniu idziemy do galerii i wybieramy zdjęcie, które chcielibyśmy zOCeRować, wybieramy dzielenie się tym zdjęciem i z listy wybieramy OCRDroid, przy pierwszym uruchomieniu zostaniemy poproszeni o hasło do Google Docs, tutaj lepiej się nie pomylić bo program jest "jednorazowy" jeśli chodzi o wprowadzanie danych o koncie :-) [To dlatego, że oryginalnie miał namiary na konto zahardkodowane, ale "ukradłem" sobie okienko dodawania kont z Bloggeroida i teraz już nie muszę nic hardkodować], po wprowadzeniu nazwy konta i hasła klikamy Save i czekamy, przez jakiś czas będziemy widzieli czarny ekran z napisem OCRDroid, możemy też zobaczyć informację, że aktywność zbyt długo nie odpowiada, wtedy klikamy Czekaj. W końcu dostaniemy informację, że możemy sobie pójść do Google Docs żeby obejrzeć nasz dokument ;-)
W większości przypadków dokument ten nie będzie się do niczego nadawał ;-)
W trakcie działania programu lepiej nie robić żadnych zmian orientacji telefonu, to jest prosty program, a całe wysyłanie obrazka odbywa się bardzo nieprofesjonalnie w onCreate() aktywności, a Android ma tak, że jak zmienia się orientacja ekranu to zabija aktywność i tworzy ją od nowa. Dlatego w trakcie zabaw z Toperzem ;-) nie machać telefonem ;-)
Jak ktoś chciałby źródła to proszę się do mnie zgłosić :-)
Tutaj chyba najciekawszy kawałek odpowiedzialny za zalogowanie się i wrzucenie zdjęcia do Google Docs do przeprocesowania go przez OCR.
Używam tutaj najbardziej podstawowej metody walki z połączeniami HTTP, na Androidzie wypada to robić ciut inaczej, ale szczerze nie miałem jeszcze czasu się temu przyjrzeć, a podejście takie jak moje ma tą zaletę, że można dość swobodnie kod testować poza Androidem na PC, a to pomaga ;-)
Przy okazji jak ktoś nie wierzy to przy pomocy HttpURLConnection można wysyłać też wieloczęściowe requesty co można zobaczyć np. w źródłach OOo2GD (Plik ZohoWrapper.java linia 357, metoda uploadDocumentForUrl).
Dlatego jak już piszesz jakąś wspaniałą aplikację na Androida to nie używaj przyciężkich bibliotek, to dla Ciebie pikuś, a zyskasz miłość userów ;-)
Podobne postybeta
Wredne Google Docs
Programowanie trudne ;-)
Wysyłamy pliki do Google Docs przy pomocy Go :-)
PROPFIND, czyli jak przechytrzyć HttpURLConnection
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Dziś pochwalę się wynikami mojego eksperymentu z użyciem Androida i OCRa w Google Docs do tworzenia dokumentów w Google Docs na podstawie zdjęć ;-)
Jest to moim prywatnym zdaniem jedno z najmniej przydatnych narzędzi jakie sobie kiedykolwiek popełniłem ;-)
Znajdziecie je pod tym linkiem.
Obsługa jest prosta, po zainstalowaniu idziemy do galerii i wybieramy zdjęcie, które chcielibyśmy zOCeRować, wybieramy dzielenie się tym zdjęciem i z listy wybieramy OCRDroid, przy pierwszym uruchomieniu zostaniemy poproszeni o hasło do Google Docs, tutaj lepiej się nie pomylić bo program jest "jednorazowy" jeśli chodzi o wprowadzanie danych o koncie :-) [To dlatego, że oryginalnie miał namiary na konto zahardkodowane, ale "ukradłem" sobie okienko dodawania kont z Bloggeroida i teraz już nie muszę nic hardkodować], po wprowadzeniu nazwy konta i hasła klikamy Save i czekamy, przez jakiś czas będziemy widzieli czarny ekran z napisem OCRDroid, możemy też zobaczyć informację, że aktywność zbyt długo nie odpowiada, wtedy klikamy Czekaj. W końcu dostaniemy informację, że możemy sobie pójść do Google Docs żeby obejrzeć nasz dokument ;-)
W większości przypadków dokument ten nie będzie się do niczego nadawał ;-)
W trakcie działania programu lepiej nie robić żadnych zmian orientacji telefonu, to jest prosty program, a całe wysyłanie obrazka odbywa się bardzo nieprofesjonalnie w onCreate() aktywności, a Android ma tak, że jak zmienia się orientacja ekranu to zabija aktywność i tworzy ją od nowa. Dlatego w trakcie zabaw z Toperzem ;-) nie machać telefonem ;-)
Jak ktoś chciałby źródła to proszę się do mnie zgłosić :-)
Tutaj chyba najciekawszy kawałek odpowiedzialny za zalogowanie się i wrzucenie zdjęcia do Google Docs do przeprocesowania go przez OCR.
// Najwpierw logowanie
// W email jest adres e-mail usera, w password hasło
URL url = new URL("https://www.google.com/accounts/ClientLogin");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setAllowUserInteraction(true);
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
connection.setDoOutput(true);
connection.connect();
OutputStream os = connection.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
// Logujemy się do Google Docs, czyli nazwa serwisu to writely
bw.write("\r\naccountType=HOSTED_OR_GOOGLE&Email="+email+"&Passwd="+password+"&service=writely&source=RMK-OCRDroid-0.01\r\n");
bw.flush();
is = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = "";
String auth = "";
// Teraz serwer nam odpowiada, linia zaczynająca się od Auth= zawiera token
// do autoryzacji
while ((line=br.readLine())!=null) {
if (line.startsWith("Auth=")) {
auth = line.replace("Auth=", "");
}
}
// Przesyłanie do Google Docs
// To ocr=true jest najważniejsze :-)
String uploadUrlStr = "https://docs.google.com/feeds/default/private/full?ocr=true";
URL uploadUrl = new URL(uploadUrlStr);
HttpURLConnection conn = (HttpURLConnection)uploadUrl.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "GoogleLogin auth="+auth);
conn.setRequestProperty("GData-Version", "3.0");
conn.setRequestProperty("Content-Type", "image/jpeg");
// wg. teorii Slug to nazwa pliku, ale coś nie działa tak jakbym chciał
conn.setRequestProperty("Slug", "OCRDoc "+new Date());
ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
long contentLength = baos.size();
conn.setRequestProperty("Content-Length", ""+contentLength);
conn.setDoOutput(true);
conn.connect();
// baos to zmienna zawierająca ByteArrayOutputStream z binarnymi danymi
// naszego obrazka
conn.getOutputStream().write(baos.toByteArray());
// W bardzo nieprofesjonalny sposób czytamy odpowiedź Google Docs,
// ale szczegół bo i tak ją zignorujemy ;-)
BufferedReader br2 = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line2 = "";
while ((line2=br2.readLine())!=null) {
System.out.println(line2);
}
Używam tutaj najbardziej podstawowej metody walki z połączeniami HTTP, na Androidzie wypada to robić ciut inaczej, ale szczerze nie miałem jeszcze czasu się temu przyjrzeć, a podejście takie jak moje ma tą zaletę, że można dość swobodnie kod testować poza Androidem na PC, a to pomaga ;-)
Przy okazji jak ktoś nie wierzy to przy pomocy HttpURLConnection można wysyłać też wieloczęściowe requesty co można zobaczyć np. w źródłach OOo2GD (Plik ZohoWrapper.java linia 357, metoda uploadDocumentForUrl).
Dlatego jak już piszesz jakąś wspaniałą aplikację na Androida to nie używaj przyciężkich bibliotek, to dla Ciebie pikuś, a zyskasz miłość userów ;-)
Podobne postybeta
Wredne Google Docs
Programowanie trudne ;-)
Wysyłamy pliki do Google Docs przy pomocy Go :-)
PROPFIND, czyli jak przechytrzyć HttpURLConnection
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
wtorek, czerwca 29, 2010
Olśnienie... chyba wiem jak zrobić R-Drive [czyli dysk R:\ będący "obrazem" Google Docs ;-)]
Wczoraj przed snem doznałem olśnienia jak powinna działać Echidna aka R-Drive [czyli mój programik, który sobie w C# [fuj!] dłubię, mający dodać do mojego systemu dysk R:\, którego zawartość byłaby identyczna z Google Docs].Wcześniej problem był z tym, że trudno było połączyć model dostępu do plików binarnych od strony systemu operacyjnego z tym, że te pliki przechowywane są w sieci, a ich zapis binarny może ulec zmianie.Olśnienie polegało na tym, że dotarło do mnie, że najprawdopodobniej można to zrobić tak by po stronie klienta R-Drive działał jak RAM-Dysk. Użytkownik wrzucałby plik na dysk R:\, a po jakimś czasie byłby ten plik wrzucany do Google Docs. Czyli nie działałoby to na zasadzie ciągłego synchronizowania plików, ale na robieniu tego co czas jakiś. Żeby było łatwiej synchronizacja byłaby tylko w jedną stronę, od klienta do serwera.Teraz trzeba tylko wrócić do kodowania........ ;-)
Podobne postybeta
Lekcja na dziś - żeby konfiguracja działała trzeba ją zapisywać i odczytywać ;-)
Windows++ ;-)
Olśnienie
Programowanie na Chromebooku :-)
Szkoła, a ja zaczynam rozumieć ClassLoader'a
Podobne postybeta
Lekcja na dziś - żeby konfiguracja działała trzeba ją zapisywać i odczytywać ;-)
Windows++ ;-)
Olśnienie
Programowanie na Chromebooku :-)
Szkoła, a ja zaczynam rozumieć ClassLoader'a
niedziela, czerwca 20, 2010
Mniej wredne Google Docs ;-) - zabawy z OCRem część 2
Z dobrych wieści, już wiem czemu nie działało mi wrzucanie obrazków do OCRa w Google Docs :-)
Używałem złego mime type, zamiast poprawnego
Co najlepsze rozważałem taki powód problemów, ale odrzuciłem go bo nie pasował mi komunikat otrzymywany od Google Docs. Kolejny już raz widać, że jak się ma wątpliwości to trzeba testować wszystkie dostępne opcje ;-)
I to by było tyle dobrego.
Eksperymenty polegające na tym, że robię zdjęcie moim G1, i wrzucam je do OCRa w Google Docs kończą się czymś co trudno nazwać sukcesem ;-)
List z Aurum który dostałem [znowu! pewnie znów im ich kryzysowy algorytm kazał wysłać list gdzie się da, a nóż ktoś się zgodzi płacić 16 złotych miesięcznie za konto ;-)] został rozpoznany jako dwie linijki tekstu [złego, ale tu wydaje się, że winą był język] jednego z nagłówków i cała reszta została zamieniona na czystą stronę ;-)
Znów pierwsza strona pierwszego rozdziału The Wisdom of Crowds została przerobiona na coś takiego [wklejam obrazek bo lepiej pokazuje ;-)]

oryginalny tekst na stronie wyglądał tak [z tym, że tutaj daję obrazek zmniejszony do rozmiarów 350x467, oryginał miał wymiary 1536x2048, gdzie pojedyncza wielka litera A miała ponad 50 punktów wysokości..... Google radzi OCRować teksty mające najmniej po 10 punktów na znak]:

Rezultaty nie są zbyt zadowalające :-)
Podobne postybeta
Wredne Google Docs
Rama... coś nie działa ;-)
Android + Google Docs OCR = zestaw dla szpiega? ;-)
Kryzysowy, pokręcony algorytm? ;-)
Android + OCR, to zaczyna działać ;-)
Używałem złego mime type, zamiast poprawnego
image/jpeg używałem image/jpg.Co najlepsze rozważałem taki powód problemów, ale odrzuciłem go bo nie pasował mi komunikat otrzymywany od Google Docs. Kolejny już raz widać, że jak się ma wątpliwości to trzeba testować wszystkie dostępne opcje ;-)
I to by było tyle dobrego.
Eksperymenty polegające na tym, że robię zdjęcie moim G1, i wrzucam je do OCRa w Google Docs kończą się czymś co trudno nazwać sukcesem ;-)
List z Aurum który dostałem [znowu! pewnie znów im ich kryzysowy algorytm kazał wysłać list gdzie się da, a nóż ktoś się zgodzi płacić 16 złotych miesięcznie za konto ;-)] został rozpoznany jako dwie linijki tekstu [złego, ale tu wydaje się, że winą był język] jednego z nagłówków i cała reszta została zamieniona na czystą stronę ;-)
Znów pierwsza strona pierwszego rozdziału The Wisdom of Crowds została przerobiona na coś takiego [wklejam obrazek bo lepiej pokazuje ;-)]

oryginalny tekst na stronie wyglądał tak [z tym, że tutaj daję obrazek zmniejszony do rozmiarów 350x467, oryginał miał wymiary 1536x2048, gdzie pojedyncza wielka litera A miała ponad 50 punktów wysokości..... Google radzi OCRować teksty mające najmniej po 10 punktów na znak]:

Rezultaty nie są zbyt zadowalające :-)
Podobne postybeta
Wredne Google Docs
Rama... coś nie działa ;-)
Android + Google Docs OCR = zestaw dla szpiega? ;-)
Kryzysowy, pokręcony algorytm? ;-)
Android + OCR, to zaczyna działać ;-)
czwartek, czerwca 17, 2010
Wredne Google Docs
Próbuję powołać do życia zabawkę, która pozwoli robić zdjęcia telefonem Androidowym jakiemuś tekstowi, wrzucać to do Google Docs, OCRować przez Google Docs i zwracać do telefonu jako tekst.
Wg. teorii przedstawionej w dokumentacji Google Docs List API to powinien być pikuś.
Trzeba się zalogować, później zaś użyć adresu:
https://docs.google.com/feeds/default/private/full?ocr=true
do zuploadowania pliku z obrazkiem i voila! wszystko powinno działać.
Ale nie działa. Dostaję od serwera błąd 403, z wyjaśnieniem, że nie mam prawa do korzystania z danego zasobu. Ale gdy korzystam z Google'owego przykładu, który działa jako aplikacja webowa to OCR działa dla każdego z moich kont.
Czyżby chodziło więc o to, że moja aplikacja używa autoryzacji ClientLogin?
Nie wiem. Z Google Docs List API jest taki problem, że to jest nadal beta (dokładniej jest w laboratorium] i nie zawsze wszystko działa tak jak powinno, dlatego nie mogę być pewny tego, że np. za chwilę wszystko jednak nie zacznie działać.
Np. okazuje się, że od momentu wprowadzenia nowego edytora do Google Docs nie działa eksport plików przez API. Ktoś w Google nad tym pracuje, ale jak na razie nie ma rozwiązania, a patrząc na wątki na forum i w bug trackerze to można momentami mieć wrażenie, że nie wiadomo do końca właściwie czemu to nie działa ;-)
Tak jakby kogoś interesowało to tutaj łopatologiczny i niezbyt ładny, ale działający sposób na logowanie do Google Docs [części związanej z dokumentami tekstowymi i prezentacjami, czyli do writely, z informacją, że logująca się aplikacja zowie się RMK-OCRDroid-0.01]:
To co wyżej zwykle lepiej zrobić przy pomocy bibliotek dostarczonych przez Google, ale ponieważ dla mnie okazało się prostszym i szybszym napisanie własnego kodu do kontaktów z Google Docs List API niż zrozumienie jak działa wersja bibliotek dla Androida, to przedstawiam jak zrobić to logowanie ręcznie :-)
Upload obrazka do OCRa robię w taki sposób [zakładam, że obrazek jest w lokalizacji E:\Projects\BLOG\OCRTest.jpg]:
gdzie metoda
I na koniec dostaję info o błędzie 403 :-(
Podobne postybeta
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
Programowanie trudne ;-)
PROPFIND, czyli jak przechytrzyć HttpURLConnection
Wysyłamy pliki do Google Docs przy pomocy Go :-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
Wg. teorii przedstawionej w dokumentacji Google Docs List API to powinien być pikuś.
Trzeba się zalogować, później zaś użyć adresu:
https://docs.google.com/feeds/default/private/full?ocr=true
do zuploadowania pliku z obrazkiem i voila! wszystko powinno działać.
Ale nie działa. Dostaję od serwera błąd 403, z wyjaśnieniem, że nie mam prawa do korzystania z danego zasobu. Ale gdy korzystam z Google'owego przykładu, który działa jako aplikacja webowa to OCR działa dla każdego z moich kont.
Czyżby chodziło więc o to, że moja aplikacja używa autoryzacji ClientLogin?
Nie wiem. Z Google Docs List API jest taki problem, że to jest nadal beta (dokładniej jest w laboratorium] i nie zawsze wszystko działa tak jak powinno, dlatego nie mogę być pewny tego, że np. za chwilę wszystko jednak nie zacznie działać.
Np. okazuje się, że od momentu wprowadzenia nowego edytora do Google Docs nie działa eksport plików przez API. Ktoś w Google nad tym pracuje, ale jak na razie nie ma rozwiązania, a patrząc na wątki na forum i w bug trackerze to można momentami mieć wrażenie, że nie wiadomo do końca właściwie czemu to nie działa ;-)
Tak jakby kogoś interesowało to tutaj łopatologiczny i niezbyt ładny, ale działający sposób na logowanie do Google Docs [części związanej z dokumentami tekstowymi i prezentacjami, czyli do writely, z informacją, że logująca się aplikacja zowie się RMK-OCRDroid-0.01]:
URL url = new URL("https://www.google.com/accounts/ClientLogin");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setAllowUserInteraction(true);
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
connection.setDoOutput(true);
connection.connect();
OutputStream os = connection.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write("\r\naccountType=HOSTED_OR_GOOGLE&Email="+email+"&Passwd="+password+"&service=writely&source=RMK-OCRDroid-0.01\r\n");
bw.flush();
InputStream is = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = "";
String auth = "";
while ((line=br.readLine())!=null) {
System.out.println(line);
if (line.startsWith("Auth=")) {
auth = line.replace("Auth=", "");
System.out.println("!"+auth);
}
}
To co wyżej zwykle lepiej zrobić przy pomocy bibliotek dostarczonych przez Google, ale ponieważ dla mnie okazało się prostszym i szybszym napisanie własnego kodu do kontaktów z Google Docs List API niż zrozumienie jak działa wersja bibliotek dla Androida, to przedstawiam jak zrobić to logowanie ręcznie :-)
Upload obrazka do OCRa robię w taki sposób [zakładam, że obrazek jest w lokalizacji E:\Projects\BLOG\OCRTest.jpg]:
String uploadUrlStr = "https://docs.google.com/feeds/default/private/full?ocr=true";
URL uploadUrl = new URL(uploadUrlStr);
HttpURLConnection conn = (HttpURLConnection)uploadUrl.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "GoogleLogin auth="+auth);
conn.setRequestProperty("GData-Version", "3.0");
conn.setRequestProperty("Content-Type", "image/jpg");
conn.setRequestProperty("Slug", "OCRd Doc");
String sourceFileName = "e:\\projects\\blog\\OCRtest.jpg";
FileInputStream fis = new FileInputStream(sourceFileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
long contentLength = getStream(fis,baos);
conn.setRequestProperty("Content-Length", ""+contentLength);
conn.setDoOutput(true);
conn.connect();
conn.getOutputStream().write(baos.toByteArray());
conn.getOutputStream().flush();
conn.getOutputStream().close();
BufferedReader br2 = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line2 = "";
while ((line2=br2.readLine())!=null) {
System.out.println(line2);
}
gdzie metoda
int getStream(InputStream,OutputStream) jest podejrzanie podobna do tej :-)I na koniec dostaję info o błędzie 403 :-(
Podobne postybeta
Toperz ;-) czyli OCR + Android odsłona 2 albo któraś tam
Programowanie trudne ;-)
PROPFIND, czyli jak przechytrzyć HttpURLConnection
Wysyłamy pliki do Google Docs przy pomocy Go :-)
Chrome OS, Chrome2Chrome i w ogóle Chrome ;-)
niedziela, kwietnia 04, 2010
OOo2GD 2.2.0 - autoupdate "rośnie"
Dostępna jest nowa wersja OOo2GD, tym razem o numerku 2.2.0. W tej wersji dodałem możliwość wybrania by eksportowany/updatowany właśnie do/w Google Docs dokument był autoupdatowany po każdym zapisie.
Działa to tak, że gdy zaznaczymy autoupdate w trakcie eksportu naszego dokumentu do Google Docs to później w czasie tej samej "sesji" gdy tylko nagramy dokument na dysku to OOo2GD wrzuci jego nową wersję do Google Docs.Jak zwykle zapraszam do pobierania ze strony OOo2GD w katalogu rozszerzeń do OpenOffice.org lub ze strony projektu.
Podobne postybeta
Wersja 2.0.0 OOo2GD już jest :-)
Podejrzanie szybko....
OOo2GD 1.6.0 :-)
Nie tylko IE6 powinno pójść do piachu, każdy Internet Explorer powinien!!!!
OOo2GD 2.3.0 - nowe dokumenty i autoupdate w działaniu :-)
Działa to tak, że gdy zaznaczymy autoupdate w trakcie eksportu naszego dokumentu do Google Docs to później w czasie tej samej "sesji" gdy tylko nagramy dokument na dysku to OOo2GD wrzuci jego nową wersję do Google Docs.Jak zwykle zapraszam do pobierania ze strony OOo2GD w katalogu rozszerzeń do OpenOffice.org lub ze strony projektu.Podobne postybeta
Wersja 2.0.0 OOo2GD już jest :-)
Podejrzanie szybko....
OOo2GD 1.6.0 :-)
Nie tylko IE6 powinno pójść do piachu, każdy Internet Explorer powinien!!!!
OOo2GD 2.3.0 - nowe dokumenty i autoupdate w działaniu :-)
wtorek, marca 23, 2010
Jednoczesna edycja pliku.... a jakby to tak........ i nowy ePubGenerator v0.0.4
Disclaimer: to są tylko domysły i pomysły i wcale nie mówię, że to się da dodać do OOo2GD, a nawet jeżeli się da to nie mówię, że to dodam.Przyglądałem się jak działa wspólna praca 2 osób nad tym samym dokumentem w Google Docs, moje przyglądanie było głównie pod kątem tego jak to działa od strony technicznej, czy może logicznej.I wnioski są takie, że poszczególne przeglądarki robią update tego co mają na podstawie wersji. Jeżeli 1 osoba napisze w współdzielonym dokumencie "słowo" to druga osoba ujrzy ten napis wtedy gdy jej przeglądarka pobierze kolejną wersję dokumentu w której jest właśnie ten napis "słowo".I teraz pytanie czy to w ogóle można wykorzystać do takiego hackerskiego wpięcia się do zabawy? Czy gdyby pobierać powiedzmy co 10 sekund dokument z Google Docs [albo sprawdzać czy pojawiła się nowa wersja i ją pobierać] i jednocześnie co 10 sekund po stronie klienta sprawdzać czy dokument edytowany w OpenOffice.org się zmienił...... to czy gdyby umiało się jeszcze połączyć, tudzież jeśli ktoś woli zrobić merge'a tych dokumentów i wrzucić wynik jako nową wersje do Google Docs..... to czy zaczęłoby to działać jak wspólne edytowanie tego samego pliku?Zapominamy tutaj o takich "bonusach" jak to, że konwersja ODT -> Google Docs -> ODT nie da na wyjściu takiego samego dokumentu jak był na wejściu ;-)Zapominamy też o tym, że nawet jak konwersja nie będzie problemem to trzeba by jeszcze do OO.org załadować nową wersję dokumentu tak by użytkownik tego nie widział, czyli pewnie trzeba by było operować na zawartości edytora, a nie na plikach.... [To mnie zniechęca i sugeruje, że się nie da zrobić takiego czegoś :-(]Teoretycznie powinno się udać. Algorytm musiałby działać chyba mniej więcej tak:1) czekaj 10 sekund2) czy na serwerze nowa wersja? jeśli nie to idź do 53) pobierz nową wersję i wersję poprzednią4) stwórz zbiór A różnic między nową wersją na serwerze, a poprzednią wersją z serwera5) stwórz zbiór B różnic między poprzednią wersją z serwera, a aktualnym edytowanym dokumentem.......... tu się zaczyna magia, bo trzeba pewnie znaleźć różnicę C = A \ B i nanieść te zmiany na aktualnie edytowany dokument, a następnie wysłać go do serwera......Ciut za dużo domysłów, a "trochę" brak chęci ;-) ale może warto się przyjrzeć.Nie żeby od razu pisać ;-)Bo do pisania to mam nadal ePubGenerator'a który dziś doczekał się wersji 0.0.4, która różni się szczególikami, np. nie wywala się gdy dokument wskazuje na obrazek w sieci, a na dodatek śmieciowe pliki tymczasowe umieszcza w katalogu tymczasowym.
Podobne postybeta
Zauroczył mnie Cladue Code ;-)
OOo2GD 2.3.0 - nowe dokumenty i autoupdate w działaniu :-)
Działa :-)
Próbuję naprawić wtyczkę lokalnym Claude'm ;-)
Defragmentacja SSD - o tym dlaczego nie należy jej robić
Podobne postybeta
Zauroczył mnie Cladue Code ;-)
OOo2GD 2.3.0 - nowe dokumenty i autoupdate w działaniu :-)
Działa :-)
Próbuję naprawić wtyczkę lokalnym Claude'm ;-)
Defragmentacja SSD - o tym dlaczego nie należy jej robić
sobota, marca 20, 2010
100USD to jednak za dużo.....
Jakiś czas temu ktoś zasugerował mi bym dodałem OOo2GD do Google Apps Marketplace, bo są tam rzeczy, które mogą pomóc firmom na zintegrowanie się z ekosystemem Google. Zajrzałem, stworzyłem sobie profil Vendora, przeczytałem TOS..... i zrezygnowałem ;-)
Za samo wylistowanie OpenOffice.org2GoogleDocs wśród aplikacji musiałbym zapłacić 100 USD.
Chciałbym by firmy miały możliwość łatwiejszego znalezienia mojej wtyczki, ale nie mam zamiaru na to wydawać 100 USD. Niby nie są to jakieś zabójcze pieniądze, ale jaki mam w tym interes? Żaden.
Podobnie jest z Android Marketem, za to by móc publikować swoje aplikacje trzeba zapłacić 25 USD, a i tak mieszkając w Polsce nie można dodać płatnych aplikacji.
Rozumiem istnienie tych opłat, chodzi o to by zapewnić w miarę wysoki poziom aplikacji, bo przecież nikt nie zapłaci 25 czy 100 dolarów po to by wrzucić głupi programik....... 25 USD do Android Market jakoś można znieść, ale te 100 USD do Google Apps Marketplace to ciut za dużo ;-)
Liczę, że firmy chcące używać OpenOffice.org i Google Docs znają stronę OpenOffice.org Extensions i że trafią tak na moją wtyczkę ;-)
Podobne postybeta
Strona z pomocą dla OOo2GD
Java wygrała ;-)
Amazon Kindle Fire....
Stopnie trudności ;-)
Markety
Za samo wylistowanie OpenOffice.org2GoogleDocs wśród aplikacji musiałbym zapłacić 100 USD.
Chciałbym by firmy miały możliwość łatwiejszego znalezienia mojej wtyczki, ale nie mam zamiaru na to wydawać 100 USD. Niby nie są to jakieś zabójcze pieniądze, ale jaki mam w tym interes? Żaden.
Podobnie jest z Android Marketem, za to by móc publikować swoje aplikacje trzeba zapłacić 25 USD, a i tak mieszkając w Polsce nie można dodać płatnych aplikacji.
Rozumiem istnienie tych opłat, chodzi o to by zapewnić w miarę wysoki poziom aplikacji, bo przecież nikt nie zapłaci 25 czy 100 dolarów po to by wrzucić głupi programik....... 25 USD do Android Market jakoś można znieść, ale te 100 USD do Google Apps Marketplace to ciut za dużo ;-)
Liczę, że firmy chcące używać OpenOffice.org i Google Docs znają stronę OpenOffice.org Extensions i że trafią tak na moją wtyczkę ;-)
Podobne postybeta
Strona z pomocą dla OOo2GD
Java wygrała ;-)
Amazon Kindle Fire....
Stopnie trudności ;-)
Markety
Subskrybuj:
Posty (Atom)

