Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rails Girls Sofia 2014 - Day 2

Rails Girls Sofia 2014 - Day 2

Slides from the second day of the Rails Girls event held in Sofia on March 8th 2014. More info at http://railsgirls.com/sofia

Dimitar Dimitrov

March 08, 2014
Tweet

More Decks by Dimitar Dimitrov

Other Decks in Education

Transcript

  1. Процедурни • Twitter hashtag — #RailsGirlsSofia • Facebook група —

    “RailsGirlsSofia” • Обяд тук, от спонсорите
  2. Процедурни • Twitter hashtag — #RailsGirlsSofia • Facebook група —

    “RailsGirlsSofia” • Обяд тук, от спонсорите • Афтърпарти от 20 ч. в “Memento” на НДК, всички са поканени!
  3. Процедурни • Twitter hashtag — #RailsGirlsSofia • Facebook група —

    “RailsGirlsSofia” • Обяд тук, от спонсорите • Афтърпарти от 20 ч. в “Memento” на НДК, всички са поканени! • Имате по едно безплатно питие от нас
  4. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение
  5. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение 4. Уъркшоп 1
  6. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение 4. Уъркшоп 1 5. Обяд
  7. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение 4. Уъркшоп 1 5. Обяд 6. Бентобокс
  8. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение 4. Уъркшоп 1 5. Обяд 6. Бентобокс 7. Десетина петминутни презентации
  9. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение 4. Уъркшоп 1 5. Обяд 6. Бентобокс 7. Десетина петминутни презентации 8. Уъркшоп 2
  10. 1. Блиц-увод в програмирането 2. Оцапване на ръце с Ruby

    в TryRuby.org 3. За уеб и вашето приложение 4. Уъркшоп 1 5. Обяд 6. Бентобокс 7. Десетина петминутни презентации 8. Уъркшоп 2 9. ПАРТИ!
  11. Езици за програмиране • Ruby (Руби) е език за програмиране

    • Има и други (C#, Java, C++, PHP, JavaScript, Clojure, Scheme и още 2783...)
  12. Езици за програмиране • Ruby (Руби) е език за програмиране

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

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

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

    данни • Кодът на Ruby се пази в текстови файлове с произволен размер и брой
  16. Внимание - термини • Код = последователност от команди и

    данни • Кодът на Ruby се пази в текстови файлове с произволен размер и брой • Изпълнява се от програма (интерпретатор), кръстена “ruby”
  17. Внимание - термини • Код = последователност от команди и

    данни • Кодът на Ruby се пази в текстови файлове с произволен размер и брой • Изпълнява се от програма (интерпретатор), кръстена “ruby” • Може да се изпълняват и една по една, а вие да виждате резултата
  18. Внимание - термини • Код = последователност от команди и

    данни • Кодът на Ruby се пази в текстови файлове с произволен размер и брой • Изпълнява се от програма (интерпретатор), кръстена “ruby” • Може да се изпълняват и една по една, а вие да виждате резултата • Interactive Ruby — irb и TryRuby.org
  19. 1. Данни и имена НЕЩА (стойности) и имена (променливи) име

     =  НЕЩО Например: event_name  =  "Rails  Girls  Sofia  2014"
  20. 3. Условия if  човекът_е_гладен?      прати_човека_да_обядва   else  

       помоли_човека_да_изиграе_едно_хоро   end
  21. 4. Цикли • Начини да повтаряте едно и също действие

    многократно (т. нар. "цикли") • Повече от един начин да стане това; избираме си различни, според ситуацията
  22. 4. Цикли • Начини да повтаряте едно и също действие

    многократно (т. нар. "цикли") • Повече от един начин да стане това; избираме си различни, според ситуацията • В Ruby е малко по-особено (и готино), отколкото в други езици за програмиране
  23. 4. Цикли • Начини да повтаряте едно и също действие

    многократно (т. нар. "цикли") • Повече от един начин да стане това; избираме си различни, според ситуацията • В Ruby е малко по-особено (и готино), отколкото в други езици за програмиране • Принципът е еднакъв навсякъде
  24. TryRuby.org • Променливи и стойности • Връзки между тях •

    Типове стойности – числа, низове, списъци, речници…
  25. TryRuby.org • Променливи и стойности • Връзки между тях •

    Типове стойности – числа, низове, списъци, речници… • Синтаксис – защо всеки символ е важен?
  26. TryRuby.org • Променливи и стойности • Връзки между тях •

    Типове стойности – числа, низове, списъци, речници… • Синтаксис – защо всеки символ е важен? • Абстракции – методи, класове
  27. TryRuby.org • Променливи и стойности • Връзки между тях •

    Типове стойности – числа, низове, списъци, речници… • Синтаксис – защо всеки символ е важен? • Абстракции – методи, класове • Каквото вие ги питате :)
  28. Речник • Сървър – вашият лаптоп • Клиент – браузърът

    на вашия лаптоп • Интернет – вашият лаптоп
  29. Речник • Сървър – вашият лаптоп • Клиент – браузърът

    на вашия лаптоп • Интернет – вашият лаптоп • Целият свят – на вашия лаптоп
  30. Речник • Сървър – вашият лаптоп • Клиент – браузърът

    на вашия лаптоп • Интернет – вашият лаптоп • Целият свят – на вашия лаптоп • Уебсайт – данни, преточващи се от сървъра към клиента
  31. Типове уеб сайтове • Статични — едно и също, во

    веки веков • Динамични — шаблони, попълвани с данни; може и да има интеракция с потребител, може и да няма
  32. Типове уеб сайтове • Статични — едно и също, во

    веки веков • Динамични — шаблони, попълвани с данни; може и да има интеракция с потребител, може и да няма • Приложението, което ще правим днес, попада във втората категория
  33. Динамични уеб сайтове • Още — приложения (applications, apps) •

    За тях имаме нужда от “логика” на сървър
  34. Динамични уеб сайтове • Още — приложения (applications, apps) •

    За тях имаме нужда от “логика” на сървър • “Логика” = програма, написана на език за програмиране
  35. Динамични уеб сайтове • Още — приложения (applications, apps) •

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

    в по-конкретни рамки, например: • Започвате да мислите по UX (User eXperience)
  37. Раждането на едно приложение • Имате идея! • Обличате я

    в по-конкретни рамки, например: • Започвате да мислите по UX (User eXperience) • UX = UI + Workflow
  38. Раждането на едно приложение • Имате идея! • Обличате я

    в по-конкретни рамки, например: • Започвате да мислите по UX (User eXperience) • UX = UI + Workflow • UI = User Interface = потребителски интерфейс
  39. Раждането на едно приложение • Имате идея! • Обличате я

    в по-конкретни рамки, например: • Започвате да мислите по UX (User eXperience) • UX = UI + Workflow • UI = User Interface = потребителски интерфейс • Workflow = поток на действията
  40. Раждането на едно приложение • Имате идея! • Обличате я

    в по-конкретни рамки, например: • Започвате да мислите по UX (User eXperience) • UX = UI + Workflow • UI = User Interface = потребителски интерфейс • Workflow = поток на действията • Wireframes (или драскулки на кутийки на хартия)
  41. Раждането на едно приложение • Звучи сложно, но не е

    • Най-важното — • Започвате с малки стъпки и надграждате на итерации
  42. Раждането на едно приложение • Звучи сложно, но не е

    • Най-важното — • Започвате с малки стъпки и надграждате на итерации • Експериментирате
  43. Раждането на едно приложение • Звучи сложно, но не е

    • Най-важното — • Започвате с малки стъпки и надграждате на итерации • Експериментирате • Учите се от грешките си
  44. Раждането на едно приложение • Звучи сложно, но не е

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

    идеи • Редакция на идеи (идентичен екран с този за добавянето)
  46. Нашето просто начало • Добавяне на идеи • Списък с

    идеи • Редакция на идеи (идентичен екран с този за добавянето) • Звучи достатъчно просто
  47. Нашето просто начало • Добавяне на идеи • Списък с

    идеи • Редакция на идеи (идентичен екран с този за добавянето) • Звучи достатъчно просто • Ще използваме Ruby on Rails
  48. Руби на релси • Ruby on Rails е името на

    уеб фреймуърк • Фреймуърк = купчина Руби код, който някой е написал вместо нас
  49. Руби на релси • Ruby on Rails е името на

    уеб фреймуърк • Фреймуърк = купчина Руби код, който някой е написал вместо нас • Можем и без Рейлс, но ще се изпотим повече*
  50. Руби на релси • Ruby on Rails е името на

    уеб фреймуърк • Фреймуърк = купчина Руби код, който някой е написал вместо нас • Можем и без Рейлс, но ще се изпотим повече* • Ruby on Rails е един от по-добрите варианти
  51. Руби на релси • Ruby on Rails е името на

    уеб фреймуърк • Фреймуърк = купчина Руби код, който някой е написал вместо нас • Можем и без Рейлс, но ще се изпотим повече* • Ruby on Rails е един от по-добрите варианти • Може да се изхранвате с Ruby on Rails :)
  52. • Компоненти на едно уеб приложение (бази данни, инфраструктурни компоненти)

    • Инструменти — конзола, текстов редактор, браузър • Rails генератори; Scaffolds; Gems и управлението им • MVC, REST/Resources • Модели и Active Record • Контролери и ActionController • Изгледи и ERB • Бази от данни – “Big data is when Excel crashes…” Уъркшоп 1
  53. 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
  54. HTML AJAX CSS RUBY, PYTHON, PHP, SCALA MYSQL, MONGODB RUBY

    ON RAILS, DJANGO, CAKEPHP, JETTY , LIFT…. XML JAVASCRIPT DOM UNICORN Friday, March 23, 12
  55. 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
  56. 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
  57. 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
  58. 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
  59. Отваряне на врата • Звъните на един телефон и ви

    се отваря вратата и казва в twitter • Под 20 реда код • 10134 отваряния на вратата до сега
  60. Време Generated on 2014-03-07 20:08:00 Inside temperature: 24.7 Inside humidity:

    35.0 Outside temperature: 6 Outside humidity: 98 weather=# select date(ts) as dt,avg(temp_out)::numeric(10,2) as t_out, avg(temp_in)::numeric(10,2) as t_in from wdata where ts > '2014-01-01' and ts< '2014-01-15' group by dt order by dt; dt | t_out | t_in ------------+-------+------- 2014-01-01 | 0.18 | 26.20 2014-01-02 | 1.49 | 26.22 2014-01-03 | -0.16 | 26.44 2014-01-04 | -1.12 | 26.21 2014-01-05 | 0.39 | 25.86 2014-01-06 | 3.19 | 26.29 2014-01-07 | 1.97 | 26.53 2014-01-08 | -0.15 | 26.27 2014-01-10 | 5.34 | 26.09 2014-01-11 | 5.68 | 26.84 2014-01-12 | 4.53 | 26.73 2014-01-13 | 3.66 | 27.61 2014-01-14 | 3.52 | 28.18 weather=# select min(temp_out) from wdata; min --------- -9.3000 https://cassie.ludost.net/weather.txt http://phoebe.ludost.net/weather.txt
  61. Мощност на тривиалните средства • Цикъл („За всички X направи...“)

    • Проверка („ако НЕЩО, направи ДРУГО“) • „преброй“, „пресметни“
  62. Пример CD-та • За всичките файлове: – Копирай файла в

    поредната директория, докато общата им дължина не надвишава 74 минути • За всички директории – Конвертирай файловете до некомпресиран звук – Запиши на диск – Кажи на потребителя да сложи следващия диск
  63. Прости автоматизации (Мариян има много повече идеи, питайте го:) )

    • Пускай парното час-два преди да стана • Пусни кафеварката, като стана от леглото • Изключи лампите, като изляза – И симулирай присъствие
  64. • При отворена врата да светят При отворена врата да

    светят • Само когато е тъмно Само когато е тъмно • След 01:00 сутринта да светят само След 01:00 сутринта да светят само вътрешните вътрешните • Да се самоизгасят ако вратата остане Да се самоизгасят ако вратата остане отворена повече от 40мин (прах) отворена повече от 40мин (прах)
  65. • Вратата да се затваря автоматично Вратата да се затваря

    автоматично • Вратата да се ДО отваря автоматично Вратата да се ДО отваря автоматично • Ако повече от 30мин стои отворена, Ако повече от 30мин стои отворена, да се самозатвори да се самозатвори • Ако има други автоматични модули Ако има други автоматични модули отворени, първо те да се затворят отворени, първо те да се затворят
  66. • Ако часът е между 4:30 и 10:00 Ако часът

    е между 4:30 и 10:00 • след отварянето на вратата, да се след отварянето на вратата, да се отваря и горното чекмедже(чорапи) отваря и горното чекмедже(чорапи) • Ако часът е между 17:30 и 22 Ако часът е между 17:30 и 22 • след отварянето на вратата, да се след отварянето на вратата, да се отваря и долното чекмедже(гащи) отваря и долното чекмедже(гащи) • В зависимост от това до къде съм В зависимост от това до къде съм отворил вратата, да се подават отворил вратата, да се подават тениските... тениските...
  67. • Всичко това може да се Всичко това може да

    се направи с Hardware... направи с Hardware... • Но за да има мозък... Но за да има мозък... трябва някой да даде трябва някой да даде ИДЕЯТА! ИДЕЯТА!
  68. Разбийте яйцата с миксер Сложете яйцата в купа Сложете яйцата

    в купа Сложете яйцата в купа Сложете яйцата в купа Сложете яйцата в купа Разбийте с миксера
  69. Разбийте яйцата с миксер Сложете яйцата в купа Сложете яйцата

    в купа Сложете яйцата в купа Сложете яйцата в купа Сложете яйцата в купа Разбийте с миксера Сложете яйцата в купа Счупете яйцата Сложете яйцата в купа Сложете белтъка и желтъка в купа Сложете бъркалки Включете в контакта Разбийте
  70. 1.Разделяме тестето на две половини. 2.Поглеждаме картата, която дели тестето:

    a)Ако е по-силна от търсената, изхвърляме дясната половина. Премини към т.1 b)Ако е по-слаба от търсената, изхвърляме лявата половина. Премини към т.1 c)Ако е търсената, край Търсене на карта в подредено тесте
  71. 1. Създава  файл 2. Пише  в  него 3. Записва  го

    4. Прави  промени 5. Пак  го  записва Как  работи  Лиска?
  72. !  ExecJS::RuntimeError:    -­‐  в  Ideas#index    -­‐  само  на

     Windows  8    -­‐  коментирайте/изтрийте        layouts/application.html:6    -­‐  или  качете  NodeJS
  73. Как да продължим? 1. Продължете да пишете (код) 2. Работете

    над нещо реално 3. Поддържайте връзка помежду си
  74. Как да продължим? 1. Продължете да пишете (код) 2. Работете

    над нещо реално 3. Поддържайте връзка помежду си 4. Забавлявайте се!
  75. Study групи • Седмични срещи в InitLab (или другаде) •

    Ще развиваме приложение • Ще има поне един инструктор за въпроси и напътствия • За “домашно” ще четете книжка • Информация във Фейсбук, Twitter и в пощенския списък
  76. Ресурси 1/2 • http://bit.ly/rg-sofia-keep-coding • http://bit.ly/joan-on-rails (~30 min) • Безплатна

    книга “Learn Rails” от Daniel Kehoe (Отивате на http://learn-rails.com/ railsgirls и ползвате кода RAILSGIRLS) • Защо книга?
  77. Ресурси 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
  78. Афтърпарти! • След 20 ч. в “Мементо” на НДК •

    Имате по едно питие от нас • Отворено за всички
  79. Афтърпарти! • След 20 ч. в “Мементо” на НДК •

    Имате по едно питие от нас • Отворено за всички • Да положим основите на community-то :)
  80. Благодаря! • На г-жа Паси и Ели • На спонсорите

    • На всички инструктори • На домакините от Телерик
  81. Благодаря! • На г-жа Паси и Ели • На спонсорите

    • На всички инструктори • На домакините от Телерик • На цялото Rails Girls community
  82. Благодаря! • На г-жа Паси и Ели • На спонсорите

    • На всички инструктори • На домакините от Телерик • На цялото Rails Girls community • На вас!