52
Blip technicznie, czyli Inżynieria uzależnień

Blip technicznie, czyli inżynieria uzależnień

Embed Size (px)

DESCRIPTION

Prezentacja ze styczniowego Bootstrapa.

Citation preview

Page 1: Blip technicznie, czyli inżynieria uzależnień

Blip technicznie, czyliInżynieria uzależnień

Page 2: Blip technicznie, czyli inżynieria uzależnień

Co to jest ten blip?

Page 3: Blip technicznie, czyli inżynieria uzależnień

blog na spidzie?

Page 4: Blip technicznie, czyli inżynieria uzależnień

IRC 2.0?

Page 5: Blip technicznie, czyli inżynieria uzależnień

kolejna FaJnA StRonKa?

Page 6: Blip technicznie, czyli inżynieria uzależnień

Tak na początku myśląnowi użytkownicy.

Page 7: Blip technicznie, czyli inżynieria uzależnień

A programiści,zwykle mówią...

Page 8: Blip technicznie, czyli inżynieria uzależnień
Page 9: Blip technicznie, czyli inżynieria uzależnień

Mylą się jednak srodze.Bo blip, to też:

Page 10: Blip technicznie, czyli inżynieria uzależnień

Mylą się jednak srodze.

• SMS

• MMS

• GaduGadu

• Jabber (GTalk, SPIK, inne)

• API

• Widget

• naGłos

• naprawdę dynamiczne WWW

Bo blip, to też:

Page 11: Blip technicznie, czyli inżynieria uzależnień

42%

24%

22%

2%10%

WWW GG Jabber SMS/MMS API

WWW to nie wszystko

Page 12: Blip technicznie, czyli inżynieria uzależnień

Zacznijmy od nowa.

Page 13: Blip technicznie, czyli inżynieria uzależnień

Programowanie w czasach zarazy.

Page 14: Blip technicznie, czyli inżynieria uzależnień

Programowanie w czasach zarazy.

Osoby wrażliwe na piękno koduprosimy o zamknięcie oczu.

Page 15: Blip technicznie, czyli inżynieria uzależnień

LAMP? nie, dziękuję.

Page 16: Blip technicznie, czyli inżynieria uzależnień

• FreeBSD

• Lighttpd

• PostgreSQL (+Slony-I)

• Ruby + Rails

• one more thing..

LAMP? nie, dziękuję.

Page 17: Blip technicznie, czyli inżynieria uzależnień

Python + ekg!

Page 18: Blip technicznie, czyli inżynieria uzależnień

Twitter nie dawał rady, więc..

Page 19: Blip technicznie, czyli inżynieria uzależnień

Użyliśmy ANSI C!

Page 20: Blip technicznie, czyli inżynieria uzależnień

Maszyneria

Page 21: Blip technicznie, czyli inżynieria uzależnień

Maszyneria

• “zapomniany” pecet, webrick:3000

• hetzner.de

• pożyczone maszyny z rsync’em

• nokia 6310 na strychu

Page 22: Blip technicznie, czyli inżynieria uzależnień

A potem wszystko zaoraliśmy.no, prawie wszystko.

Page 23: Blip technicznie, czyli inżynieria uzależnień

Architektura jest banalna.

Page 24: Blip technicznie, czyli inżynieria uzależnień

DarklordWłada nami ciemny demon

Page 25: Blip technicznie, czyli inżynieria uzależnień

Transporty to oddzielne wątki~# darklord_ctl list_services--- mms_transport: :thread_state: "#<Thread:0x2ba46d51fd78 sleep>" :uptime: 26h 55m 23sgadu_gadu_transport: :thread_state: "#<Thread:0x2ba46d591978 sleep>" :uptime: 26h 55m 23sjabber_transport: :thread_state: "#<Thread:0x2ba46d520520 sleep>" :uptime: 26h 55m 23ssms_transport: :thread_state: "#<Thread:0x2ba46d591298 sleep>" :uptime: 26h 55m 23sweb_service: :thread_state: nil :uptime: 26h 55m 23s

Page 26: Blip technicznie, czyli inżynieria uzależnień

zarządzalne w biegu# darklord_ctl commands

commands

debug_start

debug_stop

list_services

service_restart

service_start

service_stop

stats

stop

Page 27: Blip technicznie, czyli inżynieria uzależnień

raportujące usłużnie# darklord_ctl stats gadu_gadu_transport

--- !map:Statistics

:last_incoming_message_received: 1197378880

:inbound_messages_received: 1168

:event_disconnect_count: 4

:inbound_messages_flood_protected: 17

:updates_handled: 1148

:outbound_messages_handled: 12386

:verifications_handled: 20

:inbound_messages_handled: 1168

:last_outgoing_message_sent: 2007-12-11 14:14:53

:outbound_messages_failures: 1

:event_conn_failed_count: 653

Page 28: Blip technicznie, czyli inżynieria uzależnień

MMS

Page 29: Blip technicznie, czyli inżynieria uzależnień

MMS•Użytkownik wysyła na e-mail ([email protected])•Wiadomość trafia na serwer SMTP•DarkLord pobiera za pomocą POP3•E-mail jest oczyszczany za pomocą MMS2R (do którego wykonaliśmy kontrybucję!)•Odczytujemy wysyłający numer, szukamy u nas•Wysyłamy przez API żądanie POST razem z załącznikami•Potwierdzamy przyjęcie MMSa SMSem i...

Page 30: Blip technicznie, czyli inżynieria uzależnień

Donos trafia na blipa!

Page 31: Blip technicznie, czyli inżynieria uzależnień

SMS

Page 32: Blip technicznie, czyli inżynieria uzależnień

SMS

•Użytkownik wysyła SMS na nasz numer

•SMS trafia do modemu GSM

•Gammu w trybie SMSD spięte z MySQLem

•SMSowy sługa DarkLorda pobiera i..

Page 33: Blip technicznie, czyli inżynieria uzależnień

Informacja z ulicy trafia prosto na blipa!

Page 34: Blip technicznie, czyli inżynieria uzależnień

Jabber

Page 35: Blip technicznie, czyli inżynieria uzależnień

Jabber

•Własny serwer ejabberd (niezależność, SRV)

•Biblioteka: xmpp4r

•Wątek jabber_transport działa jako klient

Page 36: Blip technicznie, czyli inżynieria uzależnień

Gadu naGłos

Page 37: Blip technicznie, czyli inżynieria uzależnień

Gadu naGłos

•Użytkownik dzwoni z telefonu lub Gadu

•WS z nagłosu pyta o to, czy chcemy słuchać?

•DarkLord decyduje czy ma czas na audiencję

•WS notyfikuje o nowej, pachnącej mp3

•DarkLord pobiera mp3 i przekazuje przez API

do Rails..

Page 38: Blip technicznie, czyli inżynieria uzależnień

Wracam po szkolei dzwonię na blipa!

Page 39: Blip technicznie, czyli inżynieria uzależnień

Jak to się robi?

Page 40: Blip technicznie, czyli inżynieria uzależnień

Ruby + Rails

Page 41: Blip technicznie, czyli inżynieria uzależnień

nginx

Page 42: Blip technicznie, czyli inżynieria uzależnień

Czemu nginx?

Page 43: Blip technicznie, czyli inżynieria uzależnień

Czemu nginx?

•Bardzo mały

•Duże możliwości konfiguracyjne

•Nieco szybszy niż Lighttpd

•Lepsze możliwości rewrite’owania URLi

•Stabilny, nie cieknie, świetny jako reverse-proxy

Page 44: Blip technicznie, czyli inżynieria uzależnień

GlusterFS

Page 45: Blip technicznie, czyli inżynieria uzależnień

Czemu GlusterFS?

Page 46: Blip technicznie, czyli inżynieria uzależnień

Czemu GlusterFS?•Część GNU Clustering Platform (FS, HPC, EP)

•Agregacja wielu źródeł danych w jeden FS

•“Skalowalność ponad Petabajty”

•Różne schedulery, brak metadanych, moduły!

•Niezależny od sprzętu i systemu.

•Prosta konfiguracja

•FUSE

Page 47: Blip technicznie, czyli inżynieria uzależnień

CruiseControl.rb

Page 48: Blip technicznie, czyli inżynieria uzależnień
Page 49: Blip technicznie, czyli inżynieria uzależnień

RCov - badanie pokrycie kodu testami

Page 50: Blip technicznie, czyli inżynieria uzależnień

BDD - specyfikacja zamiast testów

User- should add http:// to url when missing- should not add http:// to url when already present- should find users from GaduGadu contact list- should not track anyone through im when no im configuration- should send email invitations

Page 51: Blip technicznie, czyli inżynieria uzależnień

PYTANIA?