Slide 1

Slide 1 text

Rails Girls Sofia 4.0 Ден 1 6-7 март 2015 г.

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Вчера

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Днес

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Цел

Slide 11

Slide 11 text

Да сглобим нещо!

Slide 12

Slide 12 text

Да запалим > Да научим

Slide 13

Slide 13 text

Как?

Slide 14

Slide 14 text

Не бързайте; има време. Задавайте въпроси. Много. Обяснявайте си неща взаимно. Бъдете максимално непредубедени. Забавлявайте се :)

Slide 15

Slide 15 text

Бележки? • Слайдовете и от двата дни ще са качени на сайта • Ще ви засипем с линкове и напътствия след края на събитието – тях няма нужда да помните • Записвайте си въпроси, неясни термини, неща за обяснение по-късно, интересни моменти • Винаги може да питате инструктора си или нас за нещо

Slide 16

Slide 16 text

Термини • Ще има много, които няма да знаете. • Питайте за всички. Трябва ви само груба представа кое какво е. Не е нужно да помните всичко. • Понякога не се усещаме, когато ползваме термини. Помогнете ни.

Slide 17

Slide 17 text

Кодекс на поведение http://railsgirls.com/sofia#code-of-conduct

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Процедурни • Hashtag — #RailsGirlsSofia • Facebook страница и Facebook група — “RailsGirlsSofia” • Обяд тук, от спонсорите, в 13:00 ч. • Кафе-пауза в 15:45 ч. • Афтърпарти от 20 ч. в Ink Bar, на ул. Славянска 36, всички са поканени! • Имате по едно безплатно питие от нас

Slide 20

Slide 20 text

План

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Що е то програмиране?

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Ruby?

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Език за програмиране

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Нещата, които ще научите, важат и за други езици.

Slide 33

Slide 33 text

Show me the code!

Slide 34

Slide 34 text

Ето ви малко Ruby* 5.пъти  {      покажи_текст_на_екрана  "Здравейте!"   }

Slide 35

Slide 35 text

Внимание - термини • Код = последователност от команди и данни • Кодът на Ruby (а и повечето други езици за програмиране) се пази в текстови файлове • Изпълнява се от програма (интерпретатор), кръстена “ruby” • Може да си играете с Ruby и в т.нар. “интерактивна конзола” (REPL) • Interactive Ruby — irb и TryRuby.org

Slide 36

Slide 36 text

Основи на програмирането 1. Данни 2. Имена 3. Действия 4. Условия 5. Цикли 6. Изрази

Slide 37

Slide 37 text

1. Данни • Всичко се върти около данните – зареждате данни, манипулирате данни, продуцидате данни. • Програмиране = зареждане на данни, манипулация на данни, продуциране на данни (по автоматизиран начин)

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

2. Имена Имена (променливи) и данни (стойности): някакво_име  =  данни   Например: event_name  =  "Rails  Girls  Sofia  4.0"
 candidates  =  "many"   accepted_participants  =  25  *  2

Slide 42

Slide 42 text

3. Действия Всички данни (стойности) поддържат определени операции/действия:     данни.действие   данни.друго_действие()   данни.пак_действие(други_данни)   данни.друго_действие(и,  разни,  опции)

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

3. Действия Шаблонът е:     данни.име_на_действие(опции)

Slide 46

Slide 46 text

Обекти? 1. Обекти = данни + операциите, които можем да правим с тях. 2. Днес ще приемем, че “данни” и “обекти” са взаимозаменяеми.

Slide 47

Slide 47 text

4. Условия Начин за взимане на решения по време на работа на програмата.

Slide 48

Slide 48 text

4. Условия if  условие      изпълни  това,  ако  условието  е  истина   else      иначе  изпълни  тази  част   end

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

5. Цикли 30.times  do      направи_коремна_преса   end

Slide 53

Slide 53 text

5. Цикли 100.times  do  |номер_на_участник|      имейл_адрес  =  намери_имейла_на_участник_по(номер_на_участник)      изпрати_подсещащ_имейл_до(имейл_адрес)   end

Slide 54

Slide 54 text

5. Цикли 5.пъти  {      покажи_текст_на_екрана  "Здравейте!"   }

Slide 55

Slide 55 text

5. Цикли 5.пъти  do      покажи_текст_на_екрана  "Здравейте!"   end

Slide 56

Slide 56 text

Най-важният шаблон данни.име_на_действие(опции)   обект.име_на_действие(опции)

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

http://bit.ly/about-web

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

Как разработваме сайт? • Обикновено имаме “локално” копие • Файлове, код, картинки + сървър + БД • Редактираме си кода и файловете локално • Разглеждаме си промените локално • Когато сме готови, копираме новия код, картинки, файлове на реалния сървър • Nitrous.io ще замества вашия компютър

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

“Идейник” Събиране на идеи, състоящи се от име, детайлно описание и евентуално снимка

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

Нашето просто начало • Добавяне на идеи • Списък с идеи • Редакция на идеи (идентичен екран с този за добавянето) • Ще използваме Ruby on Rails

Slide 67

Slide 67 text

Ruby on Rails?

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

Уъркшоп 1

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

• http://bit.ly/railsgirlssofia4 + http://bit.ly/cheat-rails • http://tryruby.org (или gem install rails-girls- sofia-tryruby и го стартирайте с tryruby) • Първо HTML + CSS • Инструменти — конзола, текстов редактор, браузър • Изгледи – ERB и HTML. Routes (маршрути/URL-и). • Бази от данни – “Big data is when Excel crashes…” • Контролери, модели, сървър – бегло. • Rails генератори; Scaffolds; Gems и управлението им Уъркшоп 1

Slide 75

Slide 75 text

ОБЯД!!!!!!!!!!!!!!!!!!!!!!!!!! (невъзможно кратък) (~1800 секунди)

Slide 76

Slide 76 text

http://www.youtube.com/watch?v=qObzgUfCl28

Slide 77

Slide 77 text

ห౰

Slide 78

Slide 78 text

Бенто бокс

Slide 79

Slide 79 text

Speak Geek. Or how to teach the language of web Friday, March 23, 12

Slide 80

Slide 80 text

2 Friday, March 23, 12

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

4 Friday, March 23, 12

Slide 83

Slide 83 text

HTML AJAX CSS RUBY, PYTHON, PHP, SCALA MYSQL, MONGODB RUBY ON RAILS, DJANGO, CAKEPHP, JETTY , LIFT…. XML JAVASCRIPT DOM UNICORN Friday, March 23, 12

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

7 PHP + Matlab MySQL PostgeSQL Friday, March 23, 12

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

9 MongoDB and PostresSQL Nginx + HAProxy Lift Scala Friday, March 23, 12

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

HTML CSS Friday, March 23, 12

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

UNICORN Friday, March 23, 12

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

5 minutes. Game on! Friday, March 23, 12

Slide 94

Slide 94 text

HTML PHP SaaS RoR MongoDB CSS Apache Django nginx MySQL Friday, March 23, 12

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

Lightning Talks

Slide 97

Slide 97 text

Димитър Димитров

Slide 98

Slide 98 text

No content

Slide 99

Slide 99 text

No content

Slide 100

Slide 100 text

No content

Slide 101

Slide 101 text

No content

Slide 102

Slide 102 text

No content

Slide 103

Slide 103 text

No content

Slide 104

Slide 104 text

No content

Slide 105

Slide 105 text

No content

Slide 106

Slide 106 text

No content

Slide 107

Slide 107 text

No content

Slide 108

Slide 108 text

No content

Slide 109

Slide 109 text

http://trudovak.herokuapp.com/ https://github.com/rails-girls-sofia-study-group/trudovak Създадено от вас.

Slide 110

Slide 110 text

No content

Slide 111

Slide 111 text

Как да счупим света Борис Петров

Slide 112

Slide 112 text

ЖЕНИТЕ-ПИОНЕРИ В ПРОГРАМИРАНЕТО

Slide 113

Slide 113 text

„МЪЖКА РАБОТА“

Slide 114

Slide 114 text

ПЪРВИЯТ ПРОГРАМИСТ - АДА ЛЪВЛЕЙС

Slide 115

Slide 115 text

The greatest machine that never was

Slide 116

Slide 116 text

„МОМИЧЕТАТА НА ЕНИАК“ Researcher reveals how “Computer Geeks” replaced “Computer Girls”

Slide 117

Slide 117 text

ГРЕЙС ХОПЪР

Slide 118

Slide 118 text

No content

Slide 119

Slide 119 text

LIN2 R SRX U PHR3 50 COMMA B COUNT L ZERO Q RESET S ONE H COUNT 00 U LIN21 RESET B NINE9 H COUNT LIN21 R SRX U PHR1 50 VOTW 50 PRDCR 50 CR B COUNT

Slide 120

Slide 120 text

OPEN INPUT sales, OUTPUT report­out INITIATE sales­report PERFORM UNTIL 1 <> 1 READ sales AT END EXIT PERFORM END­READ VALIDATE sales­record IF valid­record GENERATE sales­on­day ELSE GENERATE invalid­sales END­IF END­PERFORM

Slide 121

Slide 121 text

БАРБАРА ЛИСКОВ

Slide 122

Slide 122 text

ЛИНДА ЛЮКАС

Slide 123

Slide 123 text

ВИЕ?

Slide 124

Slide 124 text

БЛАГОДАРЯ!

Slide 125

Slide 125 text

За още една “мъжка” професия …и един експеримент

Slide 126

Slide 126 text

No content

Slide 127

Slide 127 text

Мария Склодовска-Кюри (1867-1934) Радиоактивност Нобелова награда по физика (1903) Два нови химични елемента: Po & Ra Нобелова награда по химия (1911)

Slide 128

Slide 128 text

Лиза Майтнер (1878-1968) Част от екипа, открил ядреното делене, за което Ото Хан получава Нобелова награда (1945) 21 високи научни отличия Първата жена член на Австрийската Академия на Науките

Slide 129

Slide 129 text

И мъжете във физиката искат да има повече жени във физиката Ако искате да правите нещо, но то изглежда “запазено” за мъже, това не трябва да ви отказва!

Slide 130

Slide 130 text

И Експериментът…

Slide 131

Slide 131 text

Why Learning to Code is So Damn Hard http://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Slide 132

Slide 132 text

No content

Slide 133

Slide 133 text

No content

Slide 134

Slide 134 text

No content

Slide 135

Slide 135 text

No content

Slide 136

Slide 136 text

No content

Slide 137

Slide 137 text

Над 3 милиарда Resource density

Slide 138

Slide 138 text

No content

Slide 139

Slide 139 text

No content

Slide 140

Slide 140 text

No content

Slide 141

Slide 141 text

No content

Slide 142

Slide 142 text

No content

Slide 143

Slide 143 text

No content

Slide 144

Slide 144 text

No content

Slide 145

Slide 145 text

No content

Slide 146

Slide 146 text

No content

Slide 147

Slide 147 text

No content

Slide 148

Slide 148 text

No content

Slide 149

Slide 149 text

No content

Slide 150

Slide 150 text

Уъркшоп 2 • http://bit.ly/railsgirlssofia4 + http://bit.ly/cheat-rails • http://tryruby.org (или gem install rails-girls- sofia-tryruby и го стартирайте с tryruby) • Изгледи – ERB и HTML. Routes (маршрути/URL-и). • Бази от данни. ActiveRecord. Контролери, модели. • Rails генератори; Scaffolds. • Външни библиотеки (gems) и управлението им.

Slide 151

Slide 151 text

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

Slide 152

Slide 152 text

Study групи

Slide 153

Slide 153 text

No content

Slide 154

Slide 154 text

Study групи • Седмични срещи в местния хакерспейс • Ще има поне един инструктор • Без “домашна” работа • Трупаме реални знания чрез практика • С начинаещи ще започнем от нулата

Slide 155

Slide 155 text

Study групи • Четвъртък и петък, 19:30 - 22:00 • Идвате един от двата дни • Имаме място за около 10-ина човека на ден • Не е фатално, ако понякога изпускате • Ако има повече желаещи, ще го измислим

Slide 156

Slide 156 text

Study групи • Напълно възможно е да се научите • Няма тайна – трябва да отделяте време • Ще си помагаме много, но трябва да сте мотивирани да изкачите планината сами

Slide 157

Slide 157 text

За да се присъедините • Включете се във Фейсбук групата • facebook.com/groups/RailsGirlsSofiaStudyGroup • Имаме и пощенски списък • Запишете се в един от двата дни в графика • Елате с лаптоп и желание :)

Slide 158

Slide 158 text

Ресурси 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) • Защо книга?

Slide 159

Slide 159 text

Ресурси 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

Slide 160

Slide 160 text

Афтърпарти! • След 20 ч. в Ink BAR, ул. Славянска 36 • Имате по едно питие от нас • Отворено за всички, дори и извън събитието • Да положим основите на community-то :)

Slide 161

Slide 161 text

No content

Slide 162

Slide 162 text

No content

Slide 163

Slide 163 text

No content

Slide 164

Slide 164 text

Благодарности • На г-жа Паси, Марти, Марта, Ели, Георги, Ади • На всички инструктори • На спонсорите и партньорите ни • На домакините от Бетахаус • На вас!

Slide 165

Slide 165 text

No content