26 Dec 2009

34 projekty Open Source udostępnione przez Google

Google jest jedną z największych firm wspierający ruch wolnego oprogramowania, Gigant z Mountain View w sumie wypuścił ponad 500 projektów jako OpenSource, postaram się przedstawić listę tylko tych ciekawszych, jakie zostały upublicznione.

Przetwarzanie plików tekstowych

Google CRUSH (Custom Reporting Utilities for SHell)
Jest to kolekcja narzędzi przeznaczonych do pracy na plikach TSV/CSV praca z plikami może odbywać się z linii komend oraz plików shellowych

Biblioteki i źródła C++

Google Breakpad
Jest otwarto źródłowym systemem do diagnozowania usterek w oprogramowaniu (crash reporting system).
Google GFlags
GFlags jest biblioteką pozwalającą na przetwarzanie argumentów linii komend. Można powiedzieć, że jest to zastępstwo dla funkcji getopt(), jednakże znacznie zwiększono w niej elastyczność oraz dodano obsługę typów znanych z C++ takich jak string.
Google Glog
Biblioteka Glog pozwala na logowanie działania aplikacji poprzez wygodny interfejs bazujący na potokach (streams). Glog udostepnia też wiele gotowych makro definicji, które można wykorzystać w oprogramowaniu podczas jego debugowania.
Google PerfTools
Narzędzia GooGle PerfTools zostały stworzone dla programistów tak by mogli tworzyć lepsze i solidniejsze aplikacje. Narzędzia te mogą się przydać szczególnie przy budowaniu aplikacji wielowątkowych w języku C++ przy wykorzystaniu mechanizmu szablonów (templates). Projekt zawiera heap-checker, heap-profiler i cpu-profiler.
Google Sparse Hash
Google Sparse Hash jest zoptymalizowaną pod kątem zajętości pamięci implementacja hash mapy.
Omaha - Google Update
Omaha, szerzej znana jako Google Update jest to narzędzie monitorujące zainstalowane oprogramowanie pod kątem aktualności. Do tej pory Omaha jest wykorzystywana w produktach Google na platformę Windows (projekty takie jak Google Chrome i Google Earth), ale Omaha może być też użyta w oprogramowaniu firm trzecich.
Protocol Buffers
Protocol Buffers jest protokół kodowania danych strukturalnych i przygotowanie ich do przesłania w sieci. Sam format jest łatwo rozszerzalny, a jednocześnie bardzo wydajny. Google używa Protocol Buffers praktycznie we wszystkich wewnętrznych usługach RPC. Format ten jest także obsługiwany przez środowisko NetBeans (istnieje plugin wspomagający tworzenie Protocol Buffers).

Sieć Internet

Google Code Pretiffy
Jest to moduł JavaScript oraz plik CSS pozwalający na podświetlanie składni kawałków kodu źródłowego na stronie www. Lexer pozwala na przetwarzanie i kolorowanie składni języków takich jak: C oraz pochodne, Java, Python, Ruby, PHP, VisualBasic, AWK, Bash, SQL, HTML, XML, CSS, Javascript oraz tekstu plików Makefile oraz na sporej części skryptów Perla. Nie są obsługiwane języki: Smalltalk, oraz wszystkie pochodne CAML.
SpriteMe - czyli tworzenie "CSS spirtes"
SpriteMe pozwala na bardzo łatwe tworzenie CSS sprites (połączenia wielu małych plików w jeden obraz, a następnie wycinanie poszczególnych obrazków i osadzanie ich na stronie za pomocą CSS juz po stronie klienta), taka optymalizacja minimalizuje ilość odwołań przeglądarki do serwera www niezbędnych do załadowania całej strony - przyspieszając czas ładowania strony. Usługa jest dostępna także pod adresem: http://spriteme.org/.
Redacisaurus
Reducisaurus jest usługą pozwalającą na zmniejszenie oraz serwowanie plików CSS i JavaScript. Cała usługa jest oparta na Systemie kompresji YUI i działa na platformie AppEngine.
JaikuEngine
JaikuEngine jest usługą mikroblogową działającą na platformie AppEngine. JaikuEngine napędza serwis Jaiku.com. Istnieje także mobilna wersja klienta.
Selector Shell
Pozwala na stworzenie "powłoki" wewnątrz przeglądarki tak by możliwe było testowanie selektorów CSS.
Google Feed Server
Google Feed Server jest otwarto źródłową implementacją serwera Atom Publishing Protocol, serwer ten bazuje na frameworku Apache Abdera. Google Feed Server dostarcza prostego back-endu dla adapterów danych, które umożliwiają programistom szybkie stworzenie kanału Atom z dostępnych danych - takich jak baza danych.
NameBench
NameBench pozwala na sprawdzenie prędkości różnych serwerów DNS, dane do testów aplikacja może pobrać z historii przeglądarki, zrzutów tcpdumpa lub standardowych zbiorów danych. Namebench jest całkowicie darmowy i nie modyfikuje systemu w żaden sposób. Projekt ten został rozpoczęty w ramach 20% czasu na własne projekty w Google. Dobrze jest przy jet okazji wspomnieć, że firma Google udostępnia własne serwery DNS (cachujące) są one dostępne pod adresami ip: 8.8.8.8 i 8.8.4.4.
Rat Proxy
RatProxy jest półautomatycznym, pasywnym narzędziem do badania bezpieczeństwa usług internetowych. Narzędzie to zostało zoptymalizowane do wykrywania i automatycznego kategoryzowania potencjalnych problemów związanych z bezpieczeństwem, poprzez obserwację ruchu generowanego przez użytkowników. Narzędzie to powstało by ułatwić analizę bezpieczeństwa serwisu w skomplikowanych środowiskach web 2.0.
TopDraw
TopDraw jest programem do generowania obrazków, poprzez ich opis w języku podobnym do JavaScriptu. TopDraw może stworzyć bardzo zaawansowane i interesujące kompozycje z obrazów. Najfajniejszą częścią projektu jest to, że posiada wbudowany mechanizm tworzenia obrazów oraz instalowania ich jako tapeta. W pakiecie jest także przeglądarka która może być zainstalowana w pasku narzędzi i może uruchamiać skrypt generujący obraz co określony interwał czasowy.
etherpad
EtherPad jest internetowym edytorem tekstu pozwalającym na pracę nad jednym dokumentem do ośmiu osób w czasie rzeczywistym, każda z osób może edytować dokument w tym samym czasie i podejrzeć wszystkie zmiany innych uczestników (każdy z użytkowników ma swój kolor - zobacz screencast). Uczestnicy mogą zapisać zmiany w dokumencie w każdej chwili. Aplikacja została stworzona przez firmę AppJet i działa w oparciu o JavaScript, Javę, serwer Comet.
Chromium
Chromium jest otwarto źródłowym projektem przeglądarki Google Chrome (od wersji sygnowanej przez Google niewiele się różni tak naprawdę).
V8 Google's open source JavaScript engine
V8 jest interpreterem języka JavaScript napisanym całkowicie w C++ jest on wykorzystywany w Google Chrome. V8 obsługuje ECMAScript (czyli JavaScript) wg. specyfikacji ECMA-262 (edycja: 3). Działa poprawnie pod Windows XP i Vista, Mac OS X 10.5 (Leopard) oraz Linux na architekturze IA-32 i ARM.
Chromium OS
Celem projektu jest zbudowanie systemu operacyjnego, który dostarcza użytkownikowi szybkiej, prostej i bezpiecznej platformy do przeglądania i tworzenia materiałów w sieci internet. Chromium OS jest projektem dostępnym wraz z kodem źródłowym, a jego źródła są dostępne pod adresem: http://git.chromium.org/ src
Android
Android jest pierwszą darmową i w pełni konfigurowalną platformą mobilną o otwartym źródle. Android oferuje pełen stos rozwiązań: system operacyjny, middleware, oraz podstawowe aplikacje mobilne. Platforma Android zawiera bogaty zbiór różnych API, pozwalając programistom tworzyć ciekawe aplikacje, które mogą się integrować z systemem operacyjnym na urządzeniu mobilnym.

Narzędzia do obsługi serwerów bazodanowych - MySQL

Google MySQL Tools
Google mMAIM
Celem narzędzia mMAIM jest monitorowane i analiza serwerów bazodanowych opartych na MySQL. Narzędzie to łatwo może być zintegrowane z każdym środowiskiem w którym działają bazy MySQL. Pozwala na wyświetlenie stanu replikacji Master/Slave, wyświetlanie statystyk całej bazy, wyświetlenie statystyk ze wszystkich komend typu 'SHOW' oraz wiele więcej. Pakiet ten zawiera wiele narzędzi do zarządzania, monitorowania i zwiększania wydajności baz danych opartych o MySQL, oryginalnie projekt był tworzony przez Google.

Inne

Stressful Application Test (stressapptest)
Stressful Application Test (w Unixie: stressapptest) jest to narzędzie pozwalające na wytworzenie sytuacji w której komputer jest poddawany dużym obciążeniom by sprawdzić jak zachowują się poszczególne części zestawu komputerowego. Narzędzie generuje przepływ danych z procesora do pamięci, oraz sporą ilość operacji wejścia/wyjścia. Jest ono używane w Google, a obecnie jest dostępne jako projekt open source na licencji Apache 2.0.
Pop and IMAP Troubleshooter
POP and IMAP troubleshooter pozwala na zdiagnozowanie i rozwiązanie problemów z połączeniem do serwerów poczty elektronicznej z komputerów klientów przez protokół POP3 i IMAP. Program ten może odczytywać pliki konfiguracyjne klientów pocztowych (Outlook, Windows Mail, Thunderbird, itp.), sprawdzać poszczególne ustawienia, a następnie spróbować wykonać połączenia POP, IMAP, SMTP używając tych ustawień.
OpenDuckBill
Openduckbill jest programem konsolowym do backupu danych w systemu Linux. Pozwala on na monitorowanie zmian w plikach i katalogach oznaczonych jako "backup", oraz ich synchronizację do lokalnego katalogu backupu, zdalnego udziału NFS lub przesłanie ich na serwer z wykorzystaniem komendy rsync.
ZXing
ZXing ("zebra crossing") jest biblioteką służącą do rozpoznawanie kodów kreskowych 1D i 2D. Biblioteka jest dostępna wraz z kodem źródłowym, obsługuje wiele typów obrazów, została ona stworzona w Javie, jej głównym celem jest udostępnianie możliwości przetwarzania kodów kreskowych bez komunikacji z serwerem na urządzeniach moblinych takich jak telefony komórkowe. O ile się nie mylę jest ona wykorzystana w Platformie Android.
Tesseract OCR Engine
Silnik rozpoznawania tekstu Tesseract był jednym z 3 najlepszych w 1995 roku wg. testu dokładności UNLV. Pomiędzy rokiem 1995, a 2006 nie było w nim wiele modyfikacji, ale pomimo tego najprawdopodobniej jest on jednym z najdokładniejszych systemów rozpoznawania tekstu wydanych jako open-source. Kod źródłowy pozwala na odczyt i przetworzenie danych zapisanych w postaci binarnej - obrazy w odcieniach szarości lub kolorowe mogą być przetworzone na tekst. Do projektu dołączony jest narzędzie odczytujące nieskompresowane obrazy w formacie TIFF.
Neatx - Open Source NX server
Neatx jest projektem Open Source podobnym do serwera NX firmy NoMachine. Protokół NX wydajnością bije na głowę VNC, co przy niezbyt szybkim łączu jest bardzo korzystne. Główne różnice pomiędzy NX, a VNC:
  • NX jest klientem X11 a nie przesyła obrazy jak VNC
  • NX działa z X, VNC i Remote Desktop (Windows)
  • NX buforuje dane
  • NX jest prostszy w konfiguracji
Alternatywnym projektem może być FreeNx
PSVM
Jest to wersja maszyny SVM, która może być uruchomiona równolegle na wielu maszynach. Szczegóły zostały opisane w artykule.
The GO programming language
Nowy język programowania stworzony w Google. Składnia języka jest podobna do C i Pythona.
Google styleguide
Zbiór reguł wg. których jest pisany kod aplikacji w Google.

Podsumowanie

Google jest jedną z najbardziej aktywnych firm wspierających ruch wolnego oprogramowania, publikując część swoich projektów za darmo w sieci, co więcej każdego roku organizuje Summer Of Code - projekt wspierania Otwartego Oprogramowania, w ramach którego studenci realizują różne zadania na rzecz już istniejących projektów Open Source i otrzymują za to stypendium ufundowane przez Google.

2 comments:

  1. The Google Collections Library for Java

    The Google Collections Library jest zbiorem nowych kolekcji dla języka Java, zostały zbudowane z myślą o Javie conajmniej w wersji 5.

    ReplyDelete
  2. No, ładnie, namachałeś się trochę. :)

    ReplyDelete