Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2023 / week1 / setup.du
blob: 6b22df6ff9cd07bf506a013291571942a0f70df9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
# Конфигуриране на GitHub classroom и Visual Studio - УПП, Седмица 1, 06.10.2023

\n

[$presentation-controller]

:title_slide

# Конфигуриране на GitHub classroom и Visual Studiо


:slide

## Теория относно GitHub classroom

.p
Ще използваме активно GitHub classroom за упражненията.
Едва ли знаете какво е, затова ще трябва да поясня някои неща.

### Проблемът със синхронизиране на работа

.unordered
- Системи като Dropbox, Google Drive, etc. ти позволяват да качиш файл в сървър и след това да го споделиш
- Върху една програма ще работят много хора, затова се налага всички разработчици да споделят своят код
- Различни хора могат да правят различни промени в едно и също място
- Обединението на труда на всички, особено в огромни екипи, става супер трудно


:slide

### Git

[$br1]

.p
git е програма (система) за [url https://en.wikipedia.org/wiki/Distributed_version_control контрол на версиите].
В един проект, git пази [=списък от всички commit-и=].
Един commit в себе си [=съдържа какви са точно промените=], кой ги е направил, кога са направени, защо са направени и так. нат.
Този списък, заедно с още неща за които не е нужно да мислите, се нарича [=repository=].

.p
Обаче, [=commit-ове не се правят автоматично=], не е като историята с промени в един Word файл.
[=Commit се прави от разработчика=], и то за предпочитане на всеки няколко (свързани) промени.

.p
Така, когато смесваме кода от многото разработчици, ще можем да засечем [=какви точно са различията=] между работата на двама човека.\n
Често промените не си "противоречат" и могат да бъдат смесени директно, понякога се налага ръчно да решим какво точно да се случи с тези парчета код.


:slide

### GitHub

[$br5]

.p
Всички repository-та трябва да се пазят някъде и да може лесно да се споделят и гледат.
Има много сайтове за тази цел, най-популярния се нарича [url https://github.com GitHub].

.p
Напомням, че git и GitHub са напълно отделни неща, направени от различни хора с различни функционалности.
Свързаността с имената е както свързаността между думите "чар" и "чаршаф".


:slide

## Сега всички трябва да си направят GitHub акаунти

.p
Отивате на [url https://github.com/signup github.com/signup], въвеждате си данните една по една и се регистрирате

.p [image ./img/github-signup.gif]


:middle_slide

.p
След това, като влезете в акаунтите си (което става автоматично след регистрация), на заглавната страница ще имате нещо такова:

.width75% [image ./img/github-index.gif]

.p
В горния десен ъгъл, където е иконката с квадрати на бял фон, след натискане получавате sidebar.
От него, може да достъпите профила си, repository-та които имате, и так. нат.


:slide

### Проверете дали сте маркирани!

.p
Понякога при създаване на нов акаунт, GitHub го маркира (като "проблемен").
В такава ситуация, няма да можете сами да го изтриете и няма да можете да го ползвате за GitHub classroom.

.p
Най-простия начин, който намерих, е да отворите
[url https://support.github.com/contact/reinstatement support.github.com/contact/reinstatement]\n
Ако отгоре пише "Your account has been flagged", тогава имаме проблем.

.p
[image ./img/github-support-flagged.gif]


:slide

## GitHub classroom

[$br3]

.p
За всеки практикум ще ви направя линк, чрез който след малко кликане ще се създаде ново лично repository за всеки от вас.

.p
До 12:20 трябва да сте качили работата си [=по време=] на упражнението в това repository.
GitHub предоставя лесни начини да правите промени по файлове директно чрез браузъра, така че за незаинтересуваните, може да го ползвате като усложнен Google Drive.

.p
След това аз ще направя отзиви върху вашата работа.
Те ще се намират в таба "Pull Requests" на конкретното repository.
Четете ги, отговаряйте, целта е да дискутираме какво сте направили.


:slide

### Как ползваме GitHub classroom

.p
За всяко упражнение ще има отделен линк.\n
Този за днеска е: [url https://classroom.github.com/a/W7hZDMgC classroom.github.com/a/W7hZDMgC]

[$br1]

:row
.p След като го отворите, ще видите съобщение за разрешение, авторизирайте го.

.p [image ./img/github-classroom-authorize.gif]



:middle_slide

:row

.width60% [image ./img/join-the-classroom.gif]

:column

.p При първо влизане ще получите страница с имената и факултетните имена на всички студенти от групата.

.p Изберете своето.

.p Това се прави само веднъж, и след това никога пак.




:slide

.p След това, би трябвало да видите страницата за "Приемане на заданието".

.width40% [image ./img/accept-assignment.gif]

.p След като го приемете, на новата страница, изчакайте няколко секунди и презаредете.
Трябва да видите това:

.width40% [image ./img/ready-to-go.gif]


:middle_slide

.p Сега сте готови, кликнете върху синия линк и ще стигнете във вашето GitHub repository.

.p Вътре в това конкретно repository очаквам да качвате работата ви през упражнението.
Повтарям, дори да е недовършено, дори да има някакви празни файлове и такива, трябва да го качите.

.p Който иска спокойно може да прави няколко commit-и, да им прави съобщения и так. нат., ама към този етап, това не е нужно.

.p В края на презентация показвам как точно е най-лесно да качите работата си.


:slide

.p
В таба "Pull requests", още от началото, ще имате едно "Feedback".
В него ще ви връщам отзиви относно работата ви, и вие също можете да пишете неща и да ми отговаряте.

.p
Целта е да видя какво правите и да ви помогна, моля проверявайте какво съм ви писал, по подразбиране би трябвало да получавате известия на имейл-а.

.centered
.width80% [image ./img/feedback.gif]


:slide

## Къде пишем код?

[$br2]

.p
[=Кодът е чисто и просто текст=], компилаторът е специалната програма, която превръща този текст в нещо, което може компютъра да изпълни.

.p
За писане и редактиране на текст ползваме [=текстови редактори=].
Програмистите са искали да улеснят работата си, затова модерните текстови редактори поддържат много помощни функционалности: показване на грешки на точния ред, автоматично форматиране, ...

.p
За някои и това не е било достатъчно удобно, затова са създадени [=Integrated Development Environment=] (IDE), програми които съдържат в себе си всичко нужно за разработка на код.
Тоест, те са текстови редактори, но "вградено" могат да компилират код, да менижират сегашното repository, ...


:middle_slide

.p
Главно очакваме да пишете на IDE-то наречено Visual Studio.
Разработено е от Microsoft и е едно от най-използваните и развитите IDE-та на пазара.

.p
Разбира се, може да ползвате и текстови редактори като Visual Studio Code, vim, emacs, ...
.bulleted
- Главния проблем с тях е, че ще се налага повече конфигурация, но пък ще са по-леки и по-флексибилни
- Главния плюс е, че те са налични за операционни системи извън Microsoft Windows, за разлика от Visual Studio

.p
Ивана ви говори за Visual Studio Code, аз ще ви говоря за Visual Studio.

.p
Извън това, по лично желание, с мен може да говорите за vim, а за neovim може би ще мога да ви насоча към някой с опит.


:slide

### Инсталация

[$br1]

.p
Намираме се в компютърна зала, така че всички предоставени компютри би трябвало вече да са налични на предоставените компютри.
За ваши лични машини, ще минем набързо през информацията тук.

.p
За Visual Studio Code, отивате на [url https://code.visualstudio.com/Download code.visualstudio.com/Download], избирате своята операционна система (за Уиндоус, ако не сте сигурни, изберете "System Installer x64") и инсталирате.

.p
За Visual Studio, отивате на [url https://visualstudio.microsoft.com/ visualstudio.microsoft.com], скролвате малко надолу, избирате "Download Visual Studio" и след това "Community 2022".
.bulleted
'footnote vs-2022-old-win Може би има трикове с които да инсталирате 2022 версията, но те не са официални и затова няма да го преподам
- Ако искате да ползвате по-стара ОС, като Windows 8.1 или Windows 7 ще трябва да използвате "Community 2019"[$vs-2022-old-win], разликата между версиите не е съществена, затова не се притеснявайте.


:slide

.p
След като изтеглите инсталатора за Visual Studio и след като изчакате да заредят работи, би трябвало да имате прозорец на име "Installing - Visual Studio Community 2022".

.p
Единствено избирате "Desktop development with C++" в таба Worloads, и натискате "Install".
Би трябвало да заема към 11 GB памет и в моето тестване се инсталира за 10тина минути.

.centered
.width80% [image ./img/vs-install.gif]


:slide

.p
Когато е готово, би трябвало да се включи автоматично и да имате прозорец с име "Sign in to Visual Studio".
За сега това не е нужно, спокойно изберете "Not now, maybe later."

.p
След това, на "Start with a familiar environment", отново, не е нужно да променяте нищо, просто натиснете "Start Visual Studio".

:centered
:width75%
:row

.p [image ./img/vs-signin.gif]

.p [image ./img/vs-start-env.gif]





:slide

### Как да създадем проект с Visual Studio

.p
Това е първия прозорец, който се отваря.
В лявата колона имате скорошни проекти, в дясната имате начини да създадете нов проект.

:centered
:width80% [image ./img/vs-open-recent.gif]




:slide

.p
Нека да направим нов проект, кликнете "Create a new project".
В този прозорец избирате началната "конфигурация" на проекта.
В този курс ще работим само и единствено с "Console App", затова изберете него и кликнете "Next".

:centered
:width75% [image ./img/vs-create-project.gif]




:slide

.p
Последния прозорец преди писането на код е за конфигурация на проекта.
Тук единствено може да искате да промените Project Name и Location, другото не е важно.

:centered
:width80% [image ./img/vs-configure-project.gif]




:slide

#### Бърза вметка, какво и защо конзолата?

.p
През 19ти век са изобретени teleprinters: пишещи машини с възможности да печат текст от електрически сигнал.
Използвали са се в телеграфията: пишеш като на пишеща машина съобщението и отговора се напечатва на същия лист хартия.

В ранните години на компютрите, точно тези teleprinters са били използвани, все пак са били съществуваща технология, която "изпраща" текст като ел. сигнали и може да принтира ел. сигнали като текст.

.p
Имало е неудобства, използвало се е много хартия, и механиката на бутоните е била сложна.
С времето компаниите са разработвали такива устройства, който обаче ползват електронно-лъчева тръба и "нормални" бутони за клавиши.

.p
Чисто практически, ние това знаем като конзолата: устройство (или в модерно време, програма) което може да получи входен текст и да изкара текст.


:slide

### Как да компилираме с Visual Studio

.p
След малко чакане, най-после ще се намираме в средата за писане на код.

:centered
:width60%
.p [image ./img/vs-general.gif]



.p
В Solution Explorer имате всички файлове от проекта (Visual Studio позволява да групирате няколко проекта в едно, наречено Solution, не е нужно да се занимавате).

.p
Тук [=единственото важно за вас се намира в папката "Source Files"=].
В нея ще се намира вашия код, всичко останало са допълнителни неща, които са релевантни за по-големи проекти.


:slide

:row

.p
Компилирането на код става от менюто "Debug" най-отгоре, и след това избиране на "Start Without Debugging".

:width50%
:fright
.p [image ./img/vs-debug-menu.gif]




.p
След малко чакане, би трябвало да излезе един прозорец, който изглежда горе-долу така:

.p [image ./img/vs-console.gif]


:slide

### Как да дебъгваме с Visual Studio

[$br1]

.p
Bug е когато нещо непланирано се случи в кода.
Debuging е глаголът за откриване на причината за един bug.
Visual Studio предоставя много функционалности, които да ускорят debugging.

.p
Нека да въведем една грешка, в реда на който изкараме "Hello, World!", нека да махнем последната ";".

.p
При компилиране, ще получим съобщение за грешки по време на компилирането.

.p [image ./img/vs-build-errors.gif]


:slide

.p
Нека да натиснем "No" и да погледнем Visual Studio.

.p
Грешките, или поне където то си мисли че са, ще бъдат подчертани с червена зигзагообразна линия.
Ако сложим мишката върху тях, ще получим popup, в който ще пише каква е грешката на това място.
Грешки също се виждат в така наречения "Error List", който се намира директно под кода.
Той се появява когато при компилиране получим грешки и изчезва когато няма.

:centered
:width70% [image ./img/vs-errors.gif]




:slide

### Качване на решенията

.p
След като сте решили една задача, имате два варианта за писане на следващата: или да създадете нов проект, или да презапишете кода.
Второто е най-лесно.

.p
Във всеки случай, ще се наложи сегашния файл с код да го качите.
Най-елементарния начин: копирате всичко, след това отивате на вашето GitHub repository, кликвате "Add", после "Create new file".

.p
Отгоре на "Name your file..." пишете някакво име, което [=моля да завърша на [`.cpp`]!=]
Това показва, че файла съдържа код на C++.
Също, когато решавате много задачи и създавате много такива файлове, [=напомням че имената на файловете трябва да са различни.=]

.p
В "Enter file contents here" пействате копирания код.
Горе в дясно натискате "Commit changes...", в pop-up-a после пак натискате "Commit changes" (ако искате, променяйте "Commit message" и "Extended description", но не е нужно) и сте готови с този файл/задача.


:middle_slide

## Вече имате достатъчно информация да пишете код сами, [url ./ време е за задачи]