poniedziałek, stycznia 18, 2010

Kolczatka ;-) czyli próbujemy zastąpić Dziobaka ;-)

Od paru lat chodzą słuchy o tym, że Google udostępni projekt Playtypus [czyli Dziobak :-)], który wg. plotek ma dodawać do systemów Windows dysk G:\ którego zawartość przechowywana byłaby w Google..........
Ostatnio dodano nawet do Google Docs [na razie nie wszystkie konta mają to włączone] możliwość uploadowania dowolnych plików do Google Docs....

I tak sobie pomyślałem, może w ramach nauki tego paskudnego języka [zwanego C#, czyli si szarp, to szarp to pewnie od szarp włosy z rozpaczy ;-)] spróbować sobie napisać coś związanego z Google Docs.
No i tak powstał pomysł Kolczatki [Short-beaked Echidna], która mogłaby stać się ubogą kuzynką mitycznego Dziobaka...

Na razie udało mi się dojść do etapu w którym w Windows pojawia się dodatkowy napęd R:\ z nazwą wolumenu GoogleDocsFS:


Na dysku tym dostępne są katalogi związane z ustawionymi w konfiguracji Kolczatki kontami w Google Docs [na razie konfiguracja jest zahardkodowana w źródłach ;-)]:



Wybierając katalog związany z danym kontem widzimy spis dokumentów z wybranego konta Google Docs:



To samo w Total Commander'ze:



I tu kończy się to co działa ;-) Bo na razie nie ma możliwości otwierania i zapisywania plików [ale niech tłumaczy mnie to, że jak na razie pracuję nad tym jakieś 10 godzin :-)], a jeżeli uda się dodać to pobieranie i zapisywanie plików to działać to będzie tak, że pliki z rozszerzeniami w Google Docs [np. ODT lub DOC] będą pobierane w danym formacie, zaś inne w formacie wynikającym z konfiguracji [czyli jeśli ustawimy, że chcemy jako domyślny format dokumentów tekstowych OpenOffice.org Text to pobierzemy jako ODT, jeśli Microsoft Word to DOC]. Gorzej będzie z zapisywaniem plików, bo jak na razie API Google Docs pozwala jedynie na wrzucanie plików w kilku wybranych formatach, więc pewnie w razie próby wrzucenia pliku w innym formacie dysk R:\ będzie wyrzucał jakiś błąd w stylu braku miejsca do zapisania pliku.
Problemów może się pojawić multum [już się pojawiają ;-)], ale może się uda ;-)
Choć ze względu na to, że to ten paskudny C# to już jestem zmartwiony tym jak w razie czego to draństwo dystrybuować, bo potrzebować będzie bibliotek Google Docs API i DOKAN'a [to on umożliwia dodanie własnej literki dysku ;-)].

W ramach review kilka zasad, które będą [jeżeli projekt się nie załamie bo natrafię na przeszkodę, której nie będę umiał przeszkodzić] stosowane:
  • W sytuacji gdy w Google Docs istnieje kilka dokumentów o tej samej nazwie i tym samym typie to na dysku R:\ widoczne będą w taki sposób, że kolejne dokumenty o tej nazwie będą miały nazwę kończącą się kolejnym numerkiem [czyli gdy są 3 dokumenty tekstowe CV i konfiguracja będzie mówić, że mamy używać formatu OpenOffice.org to pojawią się pliki w stylu CV.odt, CV1.odt i CV2.odt]
  • Zapisanie pliku z nazwą która już istnieje spowoduje stworzenie nowej wersji istniejącego pliku

Co się może nie udać? :-)
Wiele,
  • po pierwsze może się okazać, że nie uda mi się zmusić .NETowych bibliotek do pobierania plików [bo oficjalnie wspiera to dopiero 3 wersja API, która dostępna jest tylko dla Java'y, ale OOo2GD do niedawna używało 2 wersji API, a jakoś ten ficzer działał ;-)
  • po drugie mogę się wyłożyć na odczytywaniu plików przez "mój" system plików, na razie z niewyjaśnionych przyczyn dostaję informację, że nie mogę zapisać pliku w miejscu docelowym...
  • po trzecie może się okazać, że nie będę w stanie emulować tego dysku jako dysku o dostępie swobodnym, bo jeżeli taki OpenOffice.org czy MS Word mają zwyczaj modyfikować pliki "w kawałkach" to jest problem... [chodzi o to, że pobierając plik z Google Docs w jakimś formacie pobieram wersję binarną, teraz gdy część pliku zostanie zmodyfikowana to wyślę ją do Google Docs i w Google Docs pojawi się nowa wersja dokumentu przekonwertowana na ich wewnętrzny format, teraz znów nastąpić może zapis kolejnej porcji bajtów do pliku i pojawia się problem.... czy w takim przypadku skorzystać z trzymanej gdzieś po stronie klienta binarnej kopii dokumentu wysłanego do Google Docs, czy pobrać znów z Google Docs? Ale jeśli pobierzemy znów z Google Docs to może się okazać, że zapis do tej kopi pliku go popsuje bo to już nie będzie plik identyczny binarnie z tym wysłanym....., znowu trzymanie lokalnej kopii pliku też jest trudne bo jak będzie trzymana w pamięci to szybko może tej pamięci zabraknąć ;-) a jeśli na dysku to zawsze ktoś mi może ją skasować [OK, przed tym się mogę zabezpieczyć ;-)]]
  • po czwarte szlak mnie może trafić ze względu na C# ;-) [tak, wiem że są ludzie którzy go lubią i uważają, że jest lepszy od Java'y i w ogóle wszystkiego innego, możliwe, ale to tak jak z jedzeniem szpinaku, jedni lubią i uważają, że jest to super pokarm, a inni, np. ja nie znoszą szpinaku [no może poza zupą szpinakową], tudzież w nawiązaniu do estetyki, jedni lubią meble ze zdobieniami, inni [znów ja ;-)] lubią meble proste i bez zdobień]
A teraz coś od czego może należało zacząć? ;-) Pytanie do Was, ma w ogóle taki projekt sens? A jeśli ma sens to czy sens będzie miała np. wersja pozwalająca tylko na odczyt plików?

Na zakończenie skarga. Bolą mnie plecy i jestem przez to biedny.... głupia zakładka potargała mi dziś stronę w Superfreaconomics i jeszcze mi zimno.... niech mnie ktoś przytuli ;-)


Podobne postybeta
RDrive w działaniu ;-) czyli kolejny raport z prac nad Kolczatką ;-)
OOo2GD w liczbach ;-)
Raport z prac nad ubogą krewną Playtypusa, czyli Kolczatką :-)
Ha! Ochidna Echidna potrafi updatować pliki :-)
Święta wojna - kolejna odsłona