Rails Girls Sofia 5.0 October 2015 - Day 2

Rails Girls Sofia 5.0 October 2015 - Day 2

Slides for the Rails Girls Sofia 5.0 event, which took place on 23-24 October 2015. Day one.

9d3a04d8252ce89d5edbb0268af7ad8e?s=128

Dimitar Dimitrov

October 24, 2015
Tweet

Transcript

  1. Rails Girls Sofia 5.0 23-24 октомври 2015 г. Ден 1

  2. Здравейте! (отново)

  3. Процедурни

  4. WiFi: TelerikAcademy
 Pass: Ta$tud3ntsN3tw0rk

  5. #RailsGirlsSofia

  6. Игра на VMware 1. Пуснете туит до 15 ч. днес

    с отговор на въпроса “Какво научих на Rails Girls Sofia?” 2. Сложете и #railsgirlssofia и #vmwomen в отговора 3. Profit!
  7. None
  8. Вчера

  9. None
  10. None
  11. None
  12. Днес

  13. None
  14. None
  15. None
  16. План

  17. 1. 10:10 – 10:50 Увод в програмирането 2. 10:50 –

    13:00 Уъркшоп 1 3. 13:00 – 13:30 Обяд (тук, от спонсорите) 4. 13:30 – 13:45 Бентобокс игра 5. 13:45 – 14:15 Кратки презентации 6. 14:15 – 18:00 Уъркшоп 2 (и една кафепауза) 7. 20:30 – ∞ ПАРТИ!
  18. Що е то програмиране?

  19. https://twitter.com/fjsteele/status/434249935316615168

  20. None
  21. Ruby?

  22. None
  23. Език за програмиране

  24. Език за програмиране = Купчина правила, с които управлявате компютър

  25. Сходно на естествените езици, но с (доста) по-стриктни правила.

  26. Не е трудно да се научите.

  27. Езици за програмиране • Ruby (Руби) е език за програмиране

    • Има и други (C#, Java, C++, PHP, JavaScript, Clojure, Scheme и още 2783...) • Можем да ползваме произволен* език, за да правим това, което ще правим днес • Руби е готин и ще ползваме него • Може да си изкарвате прехраната с Ruby :)
  28. Нещата, които ще научите, важат и за други езици.

  29. Show me the code!

  30. Ето ви малко Ruby 5.times  {      puts  "Здравейте!"

      }
  31. Внимание - термини • Код = съвкупност от команди и

    данни • Кодът на Ruby (а и повечето други езици за програмиране) се пази в текстови файлове • Изпълнява се от програма (интерпретатор), кръстена “ruby” • Може да си играете с Ruby и в т.нар. “интерактивна конзола” (REPL) – irb
  32. Основи на програмирането 1. Данни 2. Имена 3. Действия 4.

    Условия 5. Цикли 6. Изрази
  33. 1. Данни • Всичко се върти около данните – зареждате

    данни, манипулирате данни, произвеждате данни. • Програмиране = зареждане на данни, манипулация на данни, произвеждане на данни (по автоматизиран начин)
  34. 1. Данни – зареждане 1. “Зареждане” на данни – прочитане

    от файлове, вход от потребителя, прочитане от друга програма (база данни, интернет и т.н.) 2. Вмъкване на данните в самата програма
  35. 1. Данни – типове 1. Данните имат различни типове 2.

    Всеки тип поддържа определен набор операции 3. Например, числата поддъжат деление: 42 / 2 4. Какво става, ако разделим “бетон” / “небе”?
  36. 1. Данни – типове 1. Текст – без ограничение в

    дължината 2. Числа – цели, с плаваща запетая, рационални, комплексни 3. Съставни типове данни – списъци от неща, речници с неща 4. Наши собствени типове данни – “продукт”, “поръчка”, “потребител”, …
  37. 2. Имена 1. Механизъм да реферираме към определени данни 2.

    Името си го избираме ние и го “насочваме” към някакви данни 3. Може да сменяме накъде сочи името 4. Правим манипулации с името, реално работейки с данните зад него 5. Имената наричаме променливи (variables)
  38. Имена (променливи) и данни (стойности): някакво_име  =  данни   Например:

    event_name  =  "Rails  Girls  Sofia”   coaches  =  50   accepted_participants  =  coaches  *  2 2. Имена
  39. 3. Действия Всички данни (стойности) поддържат определени операции/действия: данни.действие  

    данни.друго_действие()   данни.пак_действие(други_данни)   данни.друго_действие(и,  разни,  опции)
  40. 3. Действия Шаблонът е:     данни.име_на_действие(опции)

  41. 3. Действия Например: “Радостина”.length   6  *  7   Date.today

      participants.first(5)
  42. 3. Действия Например: “Радостина”.length()   6.*(7)   Date.today()   participants.first(5)

  43. Обекти? 1. Обекти = тип данни + операциите, които можем

    да правим с тях. 2. Днес ще приемем, че “данни” и “обекти” са взаимозаменяеми.
  44. 4. Условия Начин за взимане на решения по време на

    работа на програмата.
  45. 4. Условия if  условие      изпълни  това,  ако  условието

     е  истина   else      иначе  изпълни  тази  част   end
  46. 4. Условия братчеда  =  Човек.нов(name:  ‘Пешо')  

  47. 4. Условия братчеда  =  Човек.нов(name:  'Пешо')   if  братчеда.гладен?  

       братчеда.иди_да_обядваш   else      братчеда.изиграй_едно_хоро   end
  48. 5. Цикли • Начини да повтаряте едно и също действие

    многократно (т. нар. "цикли") • Повече от един начин да стане това; избираме си различни, според ситуацията • Принципът е еднакъв в повечето езици за програмиране
  49. 5. Цикли 30.times  do      направи_коремна_преса   end

  50. 5. Цикли 5.times  {      puts  "Здравейте!"   }

  51. 5. Цикли 5.times  do      puts  "Здравейте!"   end

  52. 5. Цикли while  cat.alive?      cat.eat      cat.sleep

         cat.purr_for_diversion      cat.plot_for_world_domination   end
  53. 6. Изрази • Всичко в Ruby е израз. Всяко валидно

    парче код, което можете да пуснете самостоятелно в irb и да не получите грешка. • Всеки израз си има резултат (някаква стойност) • Ще наричаме тази стойност “оценка” • Ще видите това по-късно в irb
  54. Най-важният шаблон данни.име_на_действие(опции)   обект.име_на_действие(опции)

  55. Приложението (приложение ≈ уебсайт)

  56. Уебсайт? Мътно понятие…

  57. http://bit.ly/about-web

  58. Речник • Сървър – компютър, закачен за интернет • (Уеб)

    сървър – помощна програма • Клиент – браузърът на потребителя • Интернет – компютри, свързани един с друг • Уебсайт – HTML + CSS + картинки + …, преточващи се от сървъра към клиента
  59. Статични vs. динамични сайтове • Статични — едно и също,

    во веки веков • Динамични — шаблони, попълвани с данни; може и да има интеракция с потребител, може и да няма • Приложението, което ще правим днес, попада във втората категория • И за двата вида имаме нужда от помощната програма “сървър” и от компютър, на който тя да работи
  60. Как разработваме сайт? • Обикновено имаме “локално” копие • Файлове,

    код, картинки + сървър + БД • Редактираме си кода и файловете локално • Разглеждаме си промените локално • Когато сме готови, копираме новия код, картинки, файлове на реалния сървър • Nitrous.io ще замества вашия компютър
  61. Динамични уеб сайтове • Още — приложения (applications, apps) •

    За тях имаме нужда от “логика” на сървър • “Логика” = програма, написана на език за програмиране • Ще се забавляваме с това днес, използвайки Ruby
  62. Приложение за гласуване

  63. None
  64. Sinatra?

  65. Sinatra • Sinatra е името на една купчина код (“фреймуърк”),

    която някой е написал вместо нас, за да ни улесни в направата на уеб приложения • Sinatra е написана на Ruby • Можем да я ползваме безплатно • Sinatra има някои вградени неща, вкл. и (уеб) сървър • Можем и без Sinatra, но ще се поизпотим повече • Няма да използваме Ruby on Rails днес
  66. Чакай малко…

  67. Събитието се казва “Rails Girls”, не “Sinatra Girls”! ВЪРНЕТЕ М

    И ПАРИТЕ!!!!
  68. Ruby on Rails vs. Sinatra

  69. Защо тогава не сме Sinatra Girls?

  70. Раждането на едно приложение • Звучи сложно, но не е

    • Най-важното — • Започвате с малки стъпки и надграждате на итерации • Експериментирате • Учите се от грешките си • Подобрявате и повтаряте цикъка
  71. None
  72. Уъркшоп 1

  73. Да си изцапаме ръцете!

  74. Не бързайте. Задавайте въпроси. Обяснявайте си взаимно. Питайте за термините.

    Забавлявайте се :)
  75. None
  76. • Опознайте инструментите си (Nitrous.io) — конзола, текстов редактор, браузър

    • Поиграйте си с Ruby в irb и с микро-програмки • HTML, CSS и следвайте ръководството • http://bit.ly/railsgirlssofia5 + http://bit.ly/cheat-rails • http://www.sinatrarb.com/intro.html • Изгледи; шаблони; ERB (embedded Ruby и HTML) • URL-и; HTTP Уъркшоп 1
  77. ОБЯД!!!!!!!!!!!!!!!!!!!!!!!!!! (невъзможно кратък) (~1800 секунди)

  78. Игра на VMware 1. Пуснете туит до 15 ч. днес

    с отговор на въпроса “Какво научих на Rails Girls Sofia?” 2. Сложете и #railsgirlssofia и #vmwomen в отговора 3. Profit!
  79. ห౰

  80. Бенто бокс

  81. Speak Geek. Or how to teach the language of web

    Friday, March 23, 12
  82. 2 Friday, March 23, 12

  83. Why Bento? • You need a balanced mix of things.

    • It’s a puzzle - putting everything together in the box. • “Ekiben“ - content which is arranged in the most efficient, graceful manner. The bento is presented in a simple, beautiful, balanced way. Nothing lacking. Nothing superfluous. Not decorated, but wonderfully designed. Friday, March 23, 12
  84. 4 Friday, March 23, 12

  85. HTML AJAX CSS RUBY, PYTHON, PHP, SCALA MYSQL, MONGODB RUBY

    ON RAILS, DJANGO, CAKEPHP, JETTY , LIFT…. XML JAVASCRIPT DOM UNICORN Friday, March 23, 12
  86. Etsy: “We use a number of different programming languages (including

    Matlab!) but are primarily a PHP shop. We have a number of databases, some of which are MySQL and some of which are PostgreSQL. “ Friday, March 23, 12
  87. 7 PHP + Matlab MySQL PostgeSQL Friday, March 23, 12

  88. 8 Foursquare: “Server code is written in scala running on

    the lift web framework using jetty for a webserver. We front everything with nginx, and use HAProxy in between. MongoDB handles most of our data storage needs (though a bit hasn't been migrated off PostgreSQL yet). Friday, March 23, 12
  89. 9 MongoDB and PostresSQL Nginx + HAProxy Lift Scala Friday,

    March 23, 12
  90. R #1 HTML/CSS #2 JQUERY #3 Unicorn Friday, March 23,

    12
  91. HTML CSS Friday, March 23, 12

  92. HTML AJAX CSS XML JAVASCRIPT DOM Friday, March 23, 12

  93. UNICORN Friday, March 23, 12

  94. R #1 PHP #2 SaaS #3 RoR #4 HTML #5

    MongoDB Rules: Figure out the term and place it on the bentobox in the right place.. There might be false friends and doubles. Googling allowed! You have five minutes – wrong answers will be removed, the team with most post-its wins! #6 Apache #7 CSS #8 Django #9 MySQL #10 nginx Friday, March 23, 12
  95. 5 minutes. Game on! Friday, March 23, 12

  96. HTML PHP SaaS RoR MongoDB CSS Apache Django nginx MySQL

    Friday, March 23, 12
  97. R #1 PHP #2 SaaS #3 RoR #4 HTML #5

    MongoDB #6 Apache #7 CSS #8 Django #9 MySQL #10 nginx Logic. PHP is a very popular language designed to produce dynamic Web pages. It goes well with HTML. - What makes PHP special? - Why it’s so popular? No where. Software as a service. Not a technical term - more a business/delivery model, in which software is hosted centrally, not by the user themselves and they often pay a subscription fee. Examples range from Salesforce, Spotify, Google Docs.. - What other buzzwords are there that are not technical? Logic. Ruby on Rails. Sometimes abbreviations might fool you! Style & structure. Especially structue: HTML is what describes the structure and the (static) content of the website. - What is XHTML? HTML5? - Scripting language vs. markup? Database. An open source database system. Stores the web app data in a little different way than MySQL, making it easier and faster for certain types of apps. - What are noSQLs? Why is MongoDB so popular? Infrastructure. A popular open source HTTP server software. Servers can be hardware or software - here we’re focusing on the latter. Servers are the piece of software that deliver the web page to you. - What is HTTP? What is the role of the browser? Style and structure. Especially style, designed to describe the look of webpages, including elements such as the layout, colors and fonts. - Why is CSS important when building bigger sites? - What is CSS3? Logic. A similar framework as Rails is for Ruby, Django is for Python. - What other examples of popular frameworks are there? For Ruby? Database. Worlds most popular open source database system, used by Facebook, Twitter, Wordpress etc. Well baked into many software stacks like LAMP - Talk about LAMP and other software stacks - Talk a little about open source Infrastructure. Pronounced “Engine X”. An open source HTTP server. Said to be faster than Apache - in many ways like MongoDB is for MySQL. - What are proxies? - Talk about Friday, March 23, 12
  98. Lightning Talks

  99. Деси Алексиева

  100. Пламен Стоев

  101. None
  102. None
  103. None
  104. None
  105. None
  106. None
  107. None
  108. None
  109. None
  110. None
  111. None
  112. None
  113. None
  114. None
  115. None
  116. None
  117. None
  118. None
  119. None
  120. Димитър Смилянов

  121. Роботите имат сърца Как да говорим с програмисти

  122. None
  123. None
  124. None
  125. Димитър

  126. None
  127. None
  128. None
  129. None
  130. Бъдете точни

  131. None
  132. None
  133. Точни данни 0 25 50 75 100 Участнич ки Успали

    се Страх да говорят Все тая
  134. Статистика в интернет 7% 93% Измислицa

  135. None
  136. None
  137. Задавайте въпроси

  138. None
  139. None
  140. Питайте за кучето* *pet (project)

  141. None
  142. None
  143. Грабнете вниманието

  144. Комплимент Обида

  145. None
  146. None
  147. None
  148. Java, JavaScript - все тая Vim е по-добър от Emacs

    iPhone е по-добър от Android
  149. None
  150. Не се страхувайте

  151. None
  152. None
  153. None
  154. Не се страхувайте Грабнете вниманието Питайте за кучето Задавайте въпроси

    Бъдете точни
  155. None
  156. Борис Петров

  157. Евгения Манолова

  158. None
  159. None
  160. None
  161. None
  162. None
  163. None
  164. None
  165. None
  166. None
  167. None
  168. None
  169. ако някога ви се е случвало да ви ударят с

    чук по главата, ще разберете точно какво изпитах аз в този момент не просто знаех. аз винаги съм го знаела май не споменах с какво се бях занимавала допреди началото на моето истинско начало бях работила известно време - няколко години като програмист за една голяма копорация. По-онова време най-силно ме подискаше мисълта, че това е единственото, което умея да правя и че цял живот ще работя за някой друг
  170. None
  171. None
  172. None
  173. Благодаря за вниманието

  174. Мартин Михайлов

  175. ੜ͖ߕ൹ ikigai

  176. Значение ੜ͖ - живот ߕ൹ - реализацията на нещата, които

    очакваме и за които се надяваме
  177. Същина - причината да се будиш сутрин, да се радваш

    на живота - не е нещо конкретно - различно е за всеки - всеки е отговорен сам да го намери - не е розови очила - естествени и спонтанни действия
  178. История

  179. Валентин Михов

  180. Как да завладеем света?

  181. None
  182. None
  183. None
  184. None
  185. None
  186. None
  187. None
  188. None
  189. None
  190. None
  191. None
  192. Георги Урумов

  193. Hack  the  World,  hack   yourself ИЛИ  КАК  ДА  СТАНЕМ

     СУПЕРГЕРОИ
  194. None
  195. HACKED

  196. HACKING

  197. None
  198. sometimes  ….

  199. Hack  the  World  !!!

  200. Hack  yourself  !!!

  201. None
  202. None
  203. None
  204. None
  205. None
  206. Боряна и София

  207. ОСМЕЛИ СЕ ДА ПОВЯРВАШ В СЕБЕ СИ!

  208. THE BEGINNING…

  209. None
  210. None
  211. THE SEQUEL

  212. THE SEQUEL Easter Holidays RGSo C

  213. THE RESULT

  214. MEET THE 2015 TEAMS OF RAILS GIRLS SUMMER OF CODE

    The 2015 sponsored teams are spread all over the globe!
  215. team: Rails Girls Enthusiasts < Sophia & Boryana> location: Sofia,

    Bulgaria project: RubyGameDev
  216. THE TEAM

  217. None
  218. START OF RGSoC July 1st

  219. None
  220. HOW WE FELT DURING THESE 3 MONTHS…

  221. None
  222. None
  223. None
  224. None
  225. CODING & TESTING, TESTING & CODING OR … what ?!?!?!?!?!?!?!?!?!?!?!

  226. 99 little bugs in the code, 99 little bugs in

    the code Take one down, patch it around… …127 little bugs in the code
  227. None
  228. None
  229. None
  230. RGSoC CONFERENCE RAFFLE…

  231. AND…

  232. …WE WON TICKETS FOR THIS CONFERENCE

  233. THE END OF RGSoC

  234. None
  235. BUT A NEW BEGINNING

  236. ПОМНЕТЕ, НЯМА НЕВЪЗМОЖНИ НЕЩА!

  237. KEEP CALM AND CHALLENGE YOURSELF

  238. Теди Панайотов

  239. Women  in  what?

  240. Ada  Lovelace  /   Analytical   Engine

  241. Grace  Hopper  /   WW2  /  First   Compiler  /

      COBOL  /   Fortran
  242. Margaret   Hamilton   /  Apollo   11

  243. Moore`s  Law


  244. Exponential  technologies

  245. None
  246. Most   popular   languages?


  247. Sheryl   Sandberg   /  COO     Facebook

  248. Susan   Wojcicki   /  CEO   YouTube

  249. Virginia   "Ginni"   Rometty/   CEO  IBM

  250. Meg   Whitman /  CEO  HP

  251. Marissa   Mayer/   CEO   Yahoo!

  252. We`re  hiring:
 teodor@coursedot. com


  253. Уъркшоп 2 • http://bit.ly/railsgirlssofia5 + http://bit.ly/cheat-rails • http://www.sinatrarb.com/intro.html • Изгледи;

    шаблони; ERB (embedded Ruby и HTML) • URL-и; HTTP и цикълът request-response • Бази от данни – “Big data is when Excel crashes…” • Външни библиотеки (gems) и управлението им.
  254. Как да продължим? 1. Продължете да пишете (и четете (код))

    2. Работете над нещо реално 3. Поддържайте връзка помежду си 4. Забавлявайте се!
  255. Study групи

  256. None
  257. Study групи • Седмични срещи в местния хакерспейс • Ще

    има поне един инструктор • Без “домашна” работа • Трупаме реални знания чрез практика • С начинаещи ще се започва от нулата • Индивидуална “програма”
  258. Study групи • Поне един ден седмично, след 19:30 •

    Малки групи - под 10 човека • Не е фатално, ако понякога изпускате • Ако има повече желаещи, ще се измисли • Доброволни и безплатни
  259. Study групи • Напълно възможно е да се научите •

    Няма тайна – трябва да отделяте време • Ще получавате помощ, но трябва да сте мотивирани да изкачите планината сами
  260. https://www.facebook.com/groups/ RailsGirlsSofiaStudyGroup/

  261. Ресурси 1/2 • http://bit.ly/rg-sofia-keep-coding • http://bit.ly/joan-on-rails (~30 min) • http://ruby-for-beginners.rubymonstas.org/

    • Безплатна книга “Learn Rails” от Daniel Kehoe (Отивате на http://learn-rails.com/ railsgirls и ползвате кода RAILSGIRLS) • Защо книга?
  262. Ресурси 2/2 • http://railsgirls.com/materials • http://explainshell.com/ (за конзолата) • http://try.github.io/

    (за Git!) • http://bit.ly/learn-rails-1 (Quora) • http://bit.ly/learn-rails-2 (Quora) • http://bit.ly/ruby-in-100-mins
  263. CoderDojo

  264. Афтърпарти! • След 20:30 ч. в Ink BAR, ул. Славянска

    36 • Имате по едно питие от нас • Отворено за всички, дори и извън събитието • Присъединете се към общността :)
  265. None
  266. Благодарности • На г-жа Паси и ДНК • На Ади,

    Марта, Марти, Сабина, Димитър С. • На Максо и Диди (Хикен Щикен) • На спонсорите и партньорите ни • На всички инструктори • На вас!
  267. None