Your SlideShare is downloading. ×
  • Like
CodeFest 2013. Бабаев А. — Сервер для самых маленьких
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

CodeFest 2013. Бабаев А. — Сервер для самых маленьких

  • 272 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
272
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Сервердля  самых  маленьких Шурик  Бабаев,  DevPocket
  • 2. Здравствуйте!1 из  36 Сервер  для  самых  маленьких
  • 3. Кто  я?  Откуда  я? ДевПокет, Санкт-Петербург Шурик Бабаев2 из  36 Сервер  для  самых  маленьких
  • 4. Чем  я  занимаюсь? (Программирую)На  чем? C++  ⟶  Java,  ObjecNve-­‐C (а  еще  C,  JavaScript,  Groovy,  Scala,  ML,  Racket,  Ruby,  ...)Что? Серверы  и  прикладные  приложения (hip://TouchDev.ru  и  еще  несколько  проектов)Некоторые  мобильные  приложения: 3 из  36 Сервер  для  самых  маленьких
  • 5. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?  4 из  36 Сервер  для  самых  маленьких
  • 6. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?  5 из  36 Сервер  для  самых  маленьких
  • 7. Оффлайновые  задачи • Персональные  приложения («никому  не  покажу,  что  я  тут  пишу») • Игры («ни  с  кем  играть  не  хочу,  сам  буду») • Связь  с  «железками» («управление  персональным  танком») • ...  и  все? (не  совсем,  но  сильно  больше  не  наковыряешь)6 из  36 Сервер  для  самых  маленьких
  • 8. Оффлайн7 из  36 Шурик  Бабаев,  DevPocket
  • 9. Онлайновые  задачи • Персональные  приложения • Игры • Связь  с  «железками» • ...  8 из  36 Сервер  для  самых  маленьких
  • 10. Онлайн9 из  36 Шурик  Бабаев,  DevPocket
  • 11. Существующие  сервисы • Кто-­‐то  их  сделал  за  вас   (и  некоторые  даже  работают) • Не  нужно  поддерживать   (но  нужно  писать  багрепорты) • Готовый  API (удобный  ли?  интересный  вопрос)10 из  36 Сервер  для  самых  маленьких
  • 12. 11 из  36 Шурик  Бабаев,  DevPocket
  • 13. Свой  сервис • Именно  то,  что  нужно   (но  сначала  нужно  это  создать) • Правильный  API (что  очень  сильно  сказывается  на  самом  приложении) • Проще  развивать (но  поддержка  стоит  денег)12 из  36 Сервер  для  самых  маленьких
  • 14. Чужие  против  своих деньги гибкость13 из  36 Шурик  Бабаев,  DevPocket
  • 15. Когда  нужен  свой? • Обычно,  когда  нагрузка  очень  большая (стоимость  сервисов  ≈  стоимость  разработки) • Нужны  уникальные  фичи (вы  первые,  кто  додумался) • Соображения  безопасности (или  специфические  требования  к  ней)14 из  36 Сервер  для  самых  маленьких
  • 16. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?  15 из  36 Сервер  для  самых  маленьких
  • 17. А  у  нас  уже  есть  один! • обслуживает  web-­‐страницы (быстро,  модно,  красиво) • AJAX (почему  бы  им  тоже  не  воспользоваться?) • Ведь  два  сервера  поддерживать  нужно! (а  вот  про  это  поподробнее...)16 из  36 Сервер  для  самых  маленьких
  • 18. Один  за  всех • HTML (плохо  парсится,  совсем  не  вариант) • XHTML/XML (парсится  хорошо,  но  зачем  нам  представление?) • JSON (завязан  на  структуру  страниц,  а  не  мобильных  экранов) Можно?  Да.  Но  мобильная  разработка будет  сложнее  в  разы.17 из  36 Сервер  для  самых  маленьких
  • 19. К  чему  стремимся? Сервер Клиенты СУБД Логика API HTML18 из  36 Сервер  для  самых  маленьких
  • 20. Каждому  по  интерфейсу Ничего  нового,  простите,  просто   грамотное  планирование или  рефакторинг19 из  36 Сервер  для  самых  маленьких
  • 21. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?  20 из  36 Сервер  для  самых  маленьких
  • 22. Картинка21 из  36 Шурик  Бабаев,  DevPocket
  • 23. Обычно  все  не  так • Сервер  уже  есть; • Написан  сервер  как  попало; • Специалист  ушел  в  другую  компанию; • Сделать  нужно  быстро; • Поддержка  должна  быть  недорогой.22 из  36 Сервер  для  самых  маленьких
  • 24. Протокол • XML/JSON (хорошая  поддержка  мобильных  платформ) • Не  WebServices/другой  RPC (можно,  но  стандартной  поддержки  нет) • Внимание!  XML  —  парсится  SAX’ом (атрибуты  —  удобнее,  чем  подтэги) • Мобильный  интернет  —  медленный (один  экран  —  один  запрос)23 из  36 Сервер  для  самых  маленьких
  • 25. XML/JSON • Готовая  поддержка  на  платформах • KISS! (DOM  часто  недоступен,  XPath  тоже) • Только  для  данных (интерфейс  должен  быть  нативный) • Только  для  данных24 из  36 Сервер  для  самых  маленьких
  • 26. Не  WebServices • Очень  долго (библиотеку  нужно  разрабатывать  с  нуля) • Излишне  длинно (протокол  многословный) • WebServices  сделан  не  для  этого! • Если  есть  лишние  деньги  —  можно☺25 из  36 Сервер  для  самых  маленьких
  • 27. SAX<user> <user   <name>Шурик</name> name=”Шурик”   <coolness>high</coolness> coolness=”high”/></user> • Требует  более   • Легко! сложного  парсера26 из  36 Сервер  для  самых  маленьких
  • 28. SAX<user> <user   <name>Шурик</name> name=”Шурик”   <coolness>high</coolness> coolness=”high”/></user> • Требует  более   • Легко! сложного  парсера27 из  36 Сервер  для  самых  маленьких
  • 29. Один  на  один • Мобильный  интернет  медленный (особенно  если  двигаться) • Пользователь  хочет  сейчас! (дольше  10  секунд  —  долго) • Один  экран  —  один  запрос (один  на  каркас,  остальное  по  экранам)28 из  36 Сервер  для  самых  маленьких
  • 30. Один  на  один • Запрос,  чтобы   отобразить  текст • Отдельные  —  чтобы   показать  графику • Загружайте   маленькие  картинки29 из  36 Сервер  для  самых  маленьких
  • 31. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?  30 из  36 Сервер  для  самых  маленьких
  • 32. Курица  или  яйцо? • тут  картинка  нада31 из  36 Сервер  для  самых  маленьких
  • 33. Опыт • Договориться  о  протоколе (выше  сказано,  как  будет  правильно) • Реализовать  кусочек (чтобы  наступить  на  пару  граблей  и  учесть  их) • Протестировать  и  поправить • Повторить  по  необходимости32 из  36 Сервер  для  самых  маленьких
  • 34. План • Зачем  нам  сервер?   • Зачем  нам  еще  один  сервер?   • Общие  принципы,  грабли,  плюшки.   • Кто  главный?   • На  чем  писать?  33 из  36 Сервер  для  самых  маленьких
  • 35. Налево  пойдешь...34 из  36 Шурик  Бабаев,  DevPocket
  • 36. Языки,  платформы...Для  мобильного  клиента всё  равно35 из  36 Сервер  для  самых  маленьких
  • 37. Что  не  все-­‐равно • HTTPS (самый  простой  способ  защиты,  хоть  и  тормозит) • REST (полезные  практики,  упрощающие  жизнь) • кросс-­‐серверное  взаимодействие   (для  inApp  Purchase,  например) • KeepAlive,  Pipelining,  etc. (у  мобильных  клиентов  —  медленный  интернет)36 из  36 Сервер  для  самых  маленьких
  • 38. Вопросы?
  • 39. Спасибо! Вам  надоедал: Шурик  Бабаев alex@devpocket.ruhip://DevPocket.ru  hip://TouchDev.ru