Slide 1

Slide 1 text

Rails Girls Sofia 6.0 25-26 март 2016 г. Ден 1

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Процедурни

Slide 4

Slide 4 text

WiFi: RailsGirls2016
 Без парола

Slide 5

Slide 5 text

WC

Slide 6

Slide 6 text

Гардероб

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

#RailsGirlsSofia

Slide 9

Slide 9 text

Игра на VMware 1. Намерете специалното табло на VMware и довършете изречениеето “Coding makes my life…” 2. Снимайте се с надписа 3. Споделете снимката в Twitter или Facebook с хештаг #railsgirlssofia и #vmwomen до 13 ч. в събота

Slide 10

Slide 10 text

bit.ly/rgs6games

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Вчера

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Днес

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

План

Slide 21

Slide 21 text

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:00 Кратки презентации 6. 14:00 – 18:00 Уъркшоп 2 (и една кафепауза) 7. 18:30 – 22:00 ПАРТИ!

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

bit.ly/blitzcoding

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Ruby?

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Show me the code!

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

5. Цикли while  cat.alive?      cat.eat      cat.sleep      cat.purr_for_diversion      cat.plot_for_world_domination   end

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

http://bit.ly/about-web

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

Приложение за гласуване

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

Sinatra?

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

Чакай малко…

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

Ruby on Rails vs. Sinatra

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

No content

Slide 77

Slide 77 text

Уъркшоп 1

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

Не бързайте. Задавайте въпроси. Експериментирайте. Грешете смело. Питайте за термините. Забавлявайте се!

Slide 80

Slide 80 text

No content

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

No content

Slide 84

Slide 84 text

ห౰

Slide 85

Slide 85 text

Бенто бокс

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

No content

Slide 89

Slide 89 text

4 Friday, March 23, 12

Slide 90

Slide 90 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 91

Slide 91 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 92

Slide 92 text

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

Slide 93

Slide 93 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 94

Slide 94 text

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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

HTML CSS Friday, March 23, 12

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

UNICORN Friday, March 23, 12

Slide 99

Slide 99 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 100

Slide 100 text

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

Slide 101

Slide 101 text

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

Slide 102

Slide 102 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 103

Slide 103 text

Lightning Talks

Slide 104

Slide 104 text

Димитър Шалварджиев

Slide 105

Slide 105 text

Предразсъдъците в програмирането

Slide 106

Slide 106 text

Видове стереотипи 1. Аз съм жена 2. Не бих се вписал 3. Програмирам за пари 4. Вече знам всичко

Slide 107

Slide 107 text

Но аз съм жена!

Slide 108

Slide 108 text

Но аз съм жена! #jesuisжена

Slide 109

Slide 109 text

Не бих се вписал!

Slide 110

Slide 110 text

Не бих се вписал! #IStandwithAhmed

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

No content

Slide 116

Slide 116 text

...a year ago

Slide 117

Slide 117 text

Sofia

Slide 118

Slide 118 text

No content

Slide 119

Slide 119 text

No content

Slide 120

Slide 120 text

No content

Slide 121

Slide 121 text

Rails Girls So a Study Group

Slide 122

Slide 122 text

No content

Slide 123

Slide 123 text

HTML

Slide 124

Slide 124 text

No content

Slide 125

Slide 125 text

CSS

Slide 126

Slide 126 text

No content

Slide 127

Slide 127 text

No content

Slide 128

Slide 128 text

???

Slide 129

Slide 129 text

No content

Slide 130

Slide 130 text

Java & JavaScript Oil & Water ===

Slide 131

Slide 131 text

No content

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

Rails Girls So a

Slide 137

Slide 137 text

София Такева

Slide 138

Slide 138 text

Rails  Girls  Sofia  6.0
 А  сега  накъде?

Slide 139

Slide 139 text

Rails  Girls  Sofia  3.0 Rails  Girls  Sofia     Study  Groups

Slide 140

Slide 140 text

The  Result   Meet  the  2015  Teams  of  Rails  Girls  Summer  of  Code     Our  2015  sponsored  teams  are  spread  all  over  the  globe!

Slide 141

Slide 141 text

Rails  Girls  Enthusiasts  Team

Slide 142

Slide 142 text

Едно  незабравимо  лято

Slide 143

Slide 143 text

RGSoC  rаffle  -­‐  dotJS  Conference  (Paris)

Slide 144

Slide 144 text

Let`s  do  it!  
 Rails  Girls  Sofia  6.0
 To  be  continued…

Slide 145

Slide 145 text

Мариян Маринов

Slide 146

Slide 146 text

Why it is important to FAIL ? Marian Marinov

Slide 147

Slide 147 text

How do children learn?

Slide 148

Slide 148 text

No content

Slide 149

Slide 149 text

No content

Slide 150

Slide 150 text

No content

Slide 151

Slide 151 text

No content

Slide 152

Slide 152 text

SOMETHING IS WRONG!

Slide 153

Slide 153 text

No content

Slide 154

Slide 154 text

No content

Slide 155

Slide 155 text

Димитър Смилянов

Slide 156

Slide 156 text

8 рентгенови снимки 2 извода и 1 монтанчанин Как си счупих ръката и станах по-добър програмист*

Slide 157

Slide 157 text

No content

Slide 158

Slide 158 text

No content

Slide 159

Slide 159 text

No content

Slide 160

Slide 160 text

No content

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

No content

Slide 165

Slide 165 text

- Как си прекара на Банско? - Направо се гипсирах

Slide 166

Slide 166 text

No content

Slide 167

Slide 167 text

No content

Slide 168

Slide 168 text

No content

Slide 169

Slide 169 text

No content

Slide 170

Slide 170 text

No content

Slide 171

Slide 171 text

No content

Slide 172

Slide 172 text

Васил Йосков + 25 см + 25 кг + 8 години гр. Монтана ?

Slide 173

Slide 173 text

No content

Slide 174

Slide 174 text

No content

Slide 175

Slide 175 text

Опит

Slide 176

Slide 176 text

No content

Slide 177

Slide 177 text

Не се страхувайте да чупите ръцете* си *мислене

Slide 178

Slide 178 text

No content

Slide 179

Slide 179 text

No content

Slide 180

Slide 180 text

No content

Slide 181

Slide 181 text

Чупете на воля! Гипс има за всички!

Slide 182

Slide 182 text

Благодаря!

Slide 183

Slide 183 text

Уъркшоп 2 • http://bit.ly/railsgirlssofia6 + 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) и управлението им.

Slide 184

Slide 184 text

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

Slide 185

Slide 185 text

Study групи

Slide 186

Slide 186 text

No content

Slide 187

Slide 187 text

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

Slide 188

Slide 188 text

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

Slide 189

Slide 189 text

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

Slide 190

Slide 190 text

https://www.facebook.com/groups/ RailsGirlsSofiaStudyGroup/

Slide 191

Slide 191 text

Ресурси

Slide 192

Slide 192 text

CoderDojo

Slide 193

Slide 193 text

Афтърпарти! • След 18:30 ч. тук! • Пиенето и хапването са от нас • Имате задача :)

Slide 194

Slide 194 text

No content

Slide 195

Slide 195 text

Благодарности • На г-жа Паси и ДНК • На Ади, Марта, Ели, Сабина, Марти, другия Димитър • На доброволците ни • На Владо – нашият фотограф • На спонсорите и партньорите ни • На всички инструктори • На вас!

Slide 196

Slide 196 text

No content