Blip technicznie, czyli inżynieria uzależnień...

3,270 views

Published on

Prezentacja ze styczniowego Bootstrapa.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,270
On SlideShare
0
From Embeds
0
Number of Embeds
76
Actions
Shares
0
Downloads
25
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Blip technicznie, czyli inżynieria uzależnień...

  1. 1. Blip technicznie, czyli Inżynieria uzależnień
  2. 2. Co to jest ten blip?
  3. 3. blog na spidzie?
  4. 4. IRC 2.0?
  5. 5. kolejna FaJnA StRonKa?
  6. 6. Tak na początku myślą nowi użytkownicy.
  7. 7. A programiści, zwykle mówią...
  8. 8. Mylą się jednak srodze. Bo blip, to też:
  9. 9. Mylą się jednak srodze. Bo blip, to też: • SMS • MMS • GaduGadu • Jabber (GTalk, SPIK, inne) • API • Widget • naGłos • naprawdę dynamiczne WWW
  10. 10. WWW to nie wszystko 24% 42% 22% 10% 2% WWW GG Jabber SMS/MMS API
  11. 11. Zacznijmy od nowa.
  12. 12. Programowanie w czasach zarazy.
  13. 13. Programowanie w czasach zarazy. Osoby wrażliwe na piękno kodu prosimy o zamknięcie oczu.
  14. 14. LAMP? nie, dziękuję.
  15. 15. LAMP? nie, dziękuję. • FreeBSD • Lighttpd • PostgreSQL (+Slony-I) • Ruby + Rails • one more thing..
  16. 16. Python + ekg!
  17. 17. Twitter nie dawał rady, więc..
  18. 18. Użyliśmy ANSI C!
  19. 19. Maszyneria
  20. 20. Maszyneria • “zapomniany” pecet, webrick:3000 • hetzner.de • pożyczone maszyny z rsync’em • nokia 6310 na strychu
  21. 21. A potem wszystko zaoraliśmy. no, prawie wszystko.
  22. 22. Architektura jest banalna.
  23. 23. Darklord Włada nami ciemny demon
  24. 24. Transporty to oddzielne wątki ~# darklord_ctl list_services --- mms_transport: :thread_state: quot;#<Thread:0x2ba46d51fd78 sleep>quot; :uptime: 26h 55m 23s gadu_gadu_transport: :thread_state: quot;#<Thread:0x2ba46d591978 sleep>quot; :uptime: 26h 55m 23s jabber_transport: :thread_state: quot;#<Thread:0x2ba46d520520 sleep>quot; :uptime: 26h 55m 23s sms_transport: :thread_state: quot;#<Thread:0x2ba46d591298 sleep>quot; :uptime: 26h 55m 23s web_service: :thread_state: nil :uptime: 26h 55m 23s
  25. 25. zarządzalne w biegu # darklord_ctl commands commands debug_start debug_stop list_services service_restart service_start service_stop stats stop
  26. 26. 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
  27. 27. MMS
  28. 28. MMS •Użytkownik wysyła na e-mail (m@blip.pl) •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...
  29. 29. Donos trafia na blipa!
  30. 30. SMS
  31. 31. 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..
  32. 32. Informacja z ulicy trafia prosto na blipa!
  33. 33. Jabber
  34. 34. Jabber •Własny serwer ejabberd (niezależność, SRV) •Biblioteka: xmpp4r •Wątek jabber_transport działa jako klient
  35. 35. Gadu naGłos
  36. 36. 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..
  37. 37. Wracam po szkole i dzwonię na blipa!
  38. 38. Jak to się robi?
  39. 39. Ruby + Rails
  40. 40. nginx
  41. 41. Czemu nginx?
  42. 42. 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
  43. 43. GlusterFS
  44. 44. Czemu GlusterFS?
  45. 45. 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
  46. 46. CruiseControl.rb
  47. 47. RCov - badanie pokrycie kodu testami
  48. 48. 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
  49. 49. PYTANIA?
  50. 50. K THX BAI Zbigniew Sobiecki zbigniew@sobiecki.name

×