Skip to content

Commit cdfe920

Browse files
committed
Добавил правки Игоря
1 parent 15b5a7b commit cdfe920

3 files changed

Lines changed: 135 additions & 0 deletions

File tree

0_tutorial/14_google.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Правильно искать информацию в сети – важно. Подберёшь неправильный запрос – не найдёшь нужной ссылки.
2+
Иногда приходится делать много попыток, чтобы найти то, что надо. Тратишь полчаса на поиск решения проблемы,
3+
а какой-нибудь Вася найдёт то же, но за один запрос.
4+
5+
В итоге правильное использование поиска не только позволяет экономить время, но и не чувствовать себя идиотом.
6+
7+
8+
> Это же чёртов поиск, написал запрос – увидел результат. Чего сложного?
9+
10+
Сложно написать запрос правильно. Оказывается, Гугл умеет много вещей, которые очень помогают искать информацию.
11+
Их надо знать и использовать.
12+
13+
Вот где о них можно узнать:
14+
15+
- [Мини-курс Power Searching With Google](https://coursebuilder.withgoogle.com/sample/course) (en). Да, у Гугла есть
16+
онлайн-курс про то, как пользоваться Гуглом (даже два курса). Видео-лекции, домашние задания. Всё серьёзно.
17+
Очень рекомендую: он короткий и очень подробный.
18+
- [Google Tips & Tricks](https://www.google.com/intl/en_us/insidesearch/tipstricks/all.html) (en).
19+
- [Как правильно искать в Google](https://habrahabr.ru/sandbox/46956/).
20+
- [Google без секретов (операторы Гугла в практических примерах)](http://it2b.ru/blog/arhiv/761.html).

0_tutorial/8_cli.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Консоль – основной способ взаимодействия разработчика с системой. С ней надо уметь взаимодействовать
2+
не хуже, чем с графическим интерфейсом.
3+
4+
А вот ресурсы, на которых есть план минимум и больше:
5+
6+
- [ШПАРГАЛКА. Команды Unix - Linux](http://forum.ubuntu.ru/index.php?topic=14535.15). Неожиданно полезная тема на форуме Убунту.
7+
- [Цикл статей на linuxrussia](http://www.linuxrussia.com/2013/08/terminal-linux-1.html).
8+
- [Unix shell: абсолютно первые шаги](https://habrahabr.ru/post/267825/).
9+
- [Туториал от университета Суррей](http://www.ee.surrey.ac.uk/Teaching/Unix/index.html) (en).
10+
- [Туториал от Райана](http://ryanstutorials.net/linuxtutorial/) (en). Есть [шпаргалка](http://ryanstutorials.net/linuxtutorial/cheatsheet.php).
11+
12+
Обрати внимание, что есть shell scripting – прямо в консоли можно городить циклы, условия и вообще писать вполне себе программы.
13+
Лучше обойти это стороной прямо сейчас: это довольно специфичный навык, которые не каждому пригождается.
14+
15+
Мне в своё время очень помогла книга ["Linux. Необходимый код и команды. Карманный справочник"](https://www.ozon.ru/context/detail/id/3178480/).
16+
Она компактная, подробная и понятная. Рекомендую.
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
### Коротко о главных управляющих конструкциях
2+
3+
Сейчас мы совсем реактивно пройдёмся по самым основным управляющим конструкциям. Гет реди.
4+
5+
6+
### if
7+
8+
Ну, вы все знаете условный оператор, так ведь?
9+
10+
:::python
11+
if age < 18:
12+
print('Никаких тебе сигарет. Ишь чего удумал!')
13+
else:
14+
print('Вам синий или красный?')
15+
16+
17+
Есть ещё `elif`, их можно сделать много в одном операторе. Это такой аналог `which` из других языков.
18+
19+
20+
### for
21+
22+
Цикл. Вместо сишного варианта с init, cond и loop выражениями, тут просто итерация по коллекции:
23+
24+
:::python
25+
for user in users:
26+
print user
27+
28+
Иногда надо не пройтись по списку, а выполнить одну и ту же операцию много раз. Тогда хорошо подходит функция
29+
[range](https://docs.python.org/3.5/library/functions.html#func-range). Она возвращает целые числа в заданном промежутке,
30+
поэтому в цикле её можно использовать так:
31+
32+
:::python
33+
for level_num in range(10):
34+
user.levelup() # пользователь получит десять уровней. Читер!
35+
36+
А вот `break` и `continue` делают то же, что в Паскале и Сях. `break` прерывает выполнение цикла,
37+
`continue` завершает текущую итерацию и переходит к следующей.
38+
39+
Ещё у цикла есть `else`, но про него почти никто не знает. Как он работает можно посмотреть
40+
[в официальной документации](https://docs.python.org/3.5/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops).
41+
42+
43+
### def
44+
45+
Начало объявления функции. После него идёт название,
46+
потом – аргументы функции в скобках, двоеточие и тело функции с отступом:
47+
48+
:::python
49+
def get_square(value):
50+
return value ** 2
51+
52+
То, что после `return` – это возвращаемое значение функции.
53+
54+
Функцию создали, вот как её теперь использовать:
55+
56+
:::python
57+
print(get_square(2)) # 4
58+
print(get_square(6)) # 36
59+
print(get_square('ыыы')) # всё сломается
60+
61+
А вот пример посложнее, из исходников Девмана. Получает пользователя по айди в Слаке:
62+
63+
:::python
64+
def _get_user_by_slack_id(slack_user_id):
65+
user_email = get_slack_email_for_user(slack_user_id)
66+
return User.objects.filter(email__iexact=user_email).first()
67+
68+
(вот почему емейл необходим)
69+
70+
71+
### range
72+
73+
Функция очень полезная, поэтому про неё отдельно. `range` генерирует целые числа в заданном диапазоне. Например:
74+
75+
:::python
76+
range(10) # 0..0
77+
range(5, 10) # 5..9
78+
range(5, 10, 2) # [5, 7, 9] (от пяти до девяти с шагом два)
79+
80+
Фишка этой функции заключается в том, что она не создаёт список со всеми числами.
81+
Вместо этого он вернёт объект, который будет возвращать элементы как только они нужны, по одному.
82+
Поэтому код `range(9999999999999)` не съест всю память.
83+
Этот хитрый объект (Sequence ABC, но об этом потом) можно превратить в список явно:
84+
85+
:::python
86+
list(range(9999999999999))
87+
88+
(не советую так делать)
89+
90+
91+
### pass
92+
93+
Блок, который ничего не делает:
94+
95+
:::python
96+
for i in range(20):
97+
pass # 20 раз сделать ничего. Очень полезно!
98+
99+
Часто используется в начальном коде для заданий: в финальной версии вместо `pass` должен быть настоящий код.

0 commit comments

Comments
 (0)