WEBVTT

1
00:04:31.090 --> 00:04:35.329
Михаил Непряхин: Максим привет Как видно слышно пожалуйста. Отпишитесь чайки

2
00:04:44.580 --> 00:04:45.600
Михаил Непряхин: спасибо

3
00:04:51.910 --> 00:04:57.129
Михаил Непряхин: так сегодня будем разбираться, Как работать с Грей эмиграциями

4
00:04:57.500 --> 00:05:01.489
Михаил Непряхин: вот но перед этим Давайте Еще глянем

5
00:05:03.310 --> 00:05:10.669
Михаил Непряхин: на паттер который встречается ков Гоу довольно часто когда работаете с библиотеками какими-нибудь

6
00:05:11.170 --> 00:05:25.270
Михаил Непряхин: То очень часто конфигурация Этих библиотек происходит Через этот Патруль пад называется опшин на и

7
00:05:25.890 --> 00:05:34.749
Михаил Непряхин: типично как выглядит сернатура. То есть отработать с какой-нибудь функцией Или конструктора, Или просто с какой-нибудь Функцией

8
00:05:34.860 --> 00:05:43.500
Михаил Непряхин: а У которой Есть какая опциональность то Есть можно вот Так запустить а можно По Другому запустить и и

9
00:05:43.740 --> 00:05:46.940
Михаил Непряхин: Вы видите в конце вот это троеточие

10
00:05:47.130 --> 00:06:07.020
Михаил Непряхин: и то есть могут быть обязательные какие-то аргументы, но вот с тремя точками это опциональный аргумент ну не касательно того паттерна опшена а вообще как бы с тремя точками вот у нас есть возможность когда Мы вот эти три точки указываем это значит аргумент может быть

11
00:06:08.110 --> 00:06:22.900
Михаил Непряхин: аргументов может быть несколько или аргумента может вообще не быть то есть как бы три варианта нисколько один или несколько и

12
00:06:23.100 --> 00:06:29.919
Михаил Непряхин: и типа удобно что вот можно По дефолту какой-то аа, конфликт загрузить

13
00:06:30.060 --> 00:06:43.049
Михаил Непряхин: наверное если вы ничего не указываете то Там просто какой то Дефолтный автор какой конфликт задумал вот он такой бот но вы опционально можете какие То опции переопределить этот дефолт

14
00:06:43.290 --> 00:06:49.450
Михаил Непряхин: и значит вот Сейчас разберемся как оно Устроено как оно работает

15
00:06:50.670 --> 00:06:54.040
Михаил Непряхин: значит смотрите у нас есть сервер например, на сервере

16
00:06:54.200 --> 00:06:57.700
Михаил Непряхин: и у него есть какие то настройки адрес

17
00:06:57.880 --> 00:07:01.780
Михаил Непряхин: ну Вот то есть около хост подразумевается порт

18
00:07:03.060 --> 00:07:07.009
Михаил Непряхин: дефолт на его значение восемьдесят восемьдесят

19
00:07:07.500 --> 00:07:15.770
Михаил Непряхин: и по пять секунд там то есть вот это дефолтное дефолтное значение для этого сервера

20
00:07:15.870 --> 00:07:21.569
Михаил Непряхин: и когда создаются. Конструкторы, новый Экземпляр этого сервера

21
00:07:21.920 --> 00:07:30.590
Михаил Непряхин: то Мы вот просто Создаем его с духовными значениями а дальше Перебираем вот Этот вот

22
00:07:31.190 --> 00:07:42.689
Михаил Непряхин: опшенс аргумент который может если, его Нет допустим ничего Не передали вы то Мы в этот цикл форм просто Не попадаем и соответственно Никакие опции Не Променяются дополнительно

23
00:07:42.760 --> 00:07:57.080
Михаил Непряхин: если он Там один То Мы его вызываем один Раз и Переопределяем вот Одну из этих Настроек ну Или Там Несколько и мы можем Например переопределить все Настройки но в зависимости от того какие нам дали возможности

24
00:07:57.270 --> 00:08:04.910
Михаил Непряхин: Допустим Здесь какие у нас есть Возможности переопределить адрес порт

25
00:08:05.130 --> 00:08:14.950
Михаил Непряхин: Тайм Аут робот таймут ну короче Все Можем переопределить с помощью Опшенов Э принято опции называть

26
00:08:15.140 --> 00:08:18.490
Михаил Непряхин: Со словом видит То есть начинается выезд.

27
00:08:19.690 --> 00:08:29.269
Михаил Непряхин: То есть вот оно типично значит возвращается общем как, Правило ну Так и называют Авторы и эта опция она начинается За слово виз

28
00:08:29.790 --> 00:08:52.210
Михаил Непряхин: значит Что такое опшин Посмотрим Что такое обшин это функция как объект первого Класса то есть и

29
00:08:52.280 --> 00:09:00.829
Михаил Непряхин: Причем функция не просто пустая а Она Должна быть с одним аргументом сервером вот Этим Нашим

30
00:09:01.110 --> 00:09:03.439
Михаил Непряхин: Так Смотрим значит вот уис адер

31
00:09:03.900 --> 00:09:07.889
Михаил Непряхин: Мы здесь в опции, Можем передать аа, адрес

32
00:09:17.280 --> 00:09:20.790
Михаил Непряхин: Делом создаем Новый сервер

33
00:09:21.030 --> 00:09:27.789
Михаил Непряхин: и Вот так Вот видит кадр и передаем сюда что Вот он будет на порту Не около. Хоста а в Двадцать семь ноль ноль один

34
00:09:28.470 --> 00:09:32.560
Михаил Непряхин: а переопределяем как бы дефолт и и

35
00:09:32.800 --> 00:09:42.090
Михаил Непряхин: как это сработает значит вот Мы передали аргумент адрес нам Возвращается функция

36
00:09:44.390 --> 00:09:51.010
Михаил Непряхин: Сигнатура, ее здесь соответственно соблюдается что аргументом Этой функции будет сервер

37
00:09:51.770 --> 00:09:57.080
Михаил Непряхин: и внутри Этой функции Мы просто Берем и прямо по полю

38
00:09:57.420 --> 00:10:03.919
Михаил Непряхин: Переопределяем поле то есть вот это поле говорим оно хоть, такое Которое мы здесь в документе передали

39
00:10:04.300 --> 00:10:10.260
Михаил Непряхин: и получается смотрите когда мы здесь создали Воз дефолтными какими то настройками уже наш сервер

40
00:10:10.570 --> 00:10:15.960
Михаил Непряхин: уже после этого мы эти функции и прогоняем

41
00:10:16.100 --> 00:10:20.450
Михаил Непряхин: то есть у нас здесь слайс опшенов а общем это функция

42
00:10:20.660 --> 00:10:24.559
Михаил Непряхин: здесь у нас сама функция общем

43
00:10:25.080 --> 00:10:36.100
Михаил Непряхин: и все что Мы здесь делаем вызываем эту Функцию аргумент Этой функции он уже за

44
00:10:36.370 --> 00:10:40.000
Михаил Непряхин: в замыкании то есть у нас смотрите это получается Замыкание

45
00:10:40.500 --> 00:10:45.060
Михаил Непряхин: когда Мы тут аргументом передаем адрес он захватывается замыканием

46
00:10:45.210 --> 00:10:47.230
Михаил Непряхин: и он Там уже Внутри есть

47
00:10:47.460 --> 00:10:53.959
Михаил Непряхин: и Поэтому все что нам остается сделать это просто эту функцию вызвать

48
00:10:54.720 --> 00:11:14.360
Михаил Непряхин: и соответственно все опшины имеют одну сигнатуру и просто Мы берем передаем туда наш сервер Вот он наш сервер и с этим сервером происходит то Что. Вот здесь Написано то Есть ну все равно Что. Мы сделали

49
00:11:15.750 --> 00:11:23.640
Михаил Непряхин: все равно что Мы так сделали то Есть там только Вот здесь бы Допустим адрес, передавали адрес, ну Стрингада

50
00:11:23.810 --> 00:11:35.560
Михаил Непряхин: то Есть вот Мы сделали что-то подобное только в обобщенном стиле опциональном что адрес. Передавать не обязательно А он опциональный можно передать можно не передать

51
00:11:36.640 --> 00:11:38.740
Михаил Непряхин: встречается как ни. Странно довольно часто

52
00:11:38.880 --> 00:11:42.630
Михаил Непряхин: люди гошники реально любят этот патрон

53
00:11:42.990 --> 00:11:47.770
Михаил Непряхин: и он в стандартной библиотеке тоже довольно часто Встречается

54
00:12:03.050 --> 00:12:12.700
Михаил Непряхин: так значит Отвернем То есть вот здесь я переопределил вообще все то есть переопределил порт тайм-о теперь. Определил оба.

55
00:12:13.770 --> 00:12:17.700
Михаил Непряхин: А и начать проверну

56
00:12:21.900 --> 00:12:35.900
Михаил Непряхин: ну тут у меня он просто в мейне ничего не происходит я просто севера создал я его даже не вызываю а ну я печатаю да то есть я печатаю ну вода я печатаю что я переопределил переопределив эти вещи да-да-да

57
00:12:36.470 --> 00:12:40.050
Михаил Непряхин: вот значит в чем минус этого патрона

58
00:12:40.220 --> 00:12:42.490
Михаил Непряхин: о том что он громоздко выглядит

59
00:12:42.610 --> 00:12:47.740
Михаил Непряхин: дело в том что это вот здесь я его вызвал

60
00:12:47.940 --> 00:13:04.669
Михаил Непряхин: ну вот у нас библиотечный код он находится здесь же где и вызов этого конструктора а вообще так-то это было бы в отдельном пакете и этот пакет как-то бы назывался ну например, я бы назывался

61
00:13:05.690 --> 00:13:14.780
Михаил Непряхин: и смотрите что происходит а вот У всех вот У этих опций Тоже, нужно добавлять вот этот вот кто-то про сервер

62
00:13:15.050 --> 00:13:20.070
Михаил Непряхин: и Оно начинает Выглядеть. Громоздко и и

63
00:13:21.280 --> 00:13:27.840
Михаил Непряхин: читаемость Эммм Ну читаем и страдает короче говоря читаем и страдают

64
00:13:28.360 --> 00:13:41.689
Михаил Непряхин: Поэтому этот паттерн я недолюбливаю То Есть я сам Ну как, Бы Раньше понимал Что это принято в Принципе и Всегда конфигурацию делал вот с помощью опшенов

65
00:13:41.860 --> 00:13:47.129
Михаил Непряхин: но есть Гораздо более Удобный способ аа делать Конфеты

66
00:13:47.820 --> 00:13:56.310
Михаил Непряхин: ну есть еще вариант через патрон гилдер сделать как бы тоже Окей тоже нормально вот но это все-таки

67
00:13:56.990 --> 00:14:08.529
Михаил Непряхин: вы немножечко ну как бы сложнее Громоздкие более громоздко получалось конструкция и как бы просто есть библиотеки в которых патрон билдер ну как бы хорош

68
00:14:08.740 --> 00:14:15.859
Михаил Непряхин: ну вот если вот дефолт так говорить то мне больше нравится вот просто через патруль конфик

69
00:14:16.060 --> 00:14:17.859
Михаил Непряхин: но если так его можно назвать

70
00:14:17.970 --> 00:14:24.450
Михаил Непряхин: короче говоря когда у нас есть какой то конструктор он принимает этот самый конфликт

71
00:14:25.240 --> 00:14:36.829
Михаил Непряхин: э можно конечно опционально его сделать прием то есть если Мы понимаем что ну у нас и Так дефолтные опции а не Хорошие, вот можно сделать больше опциональным

72
00:14:39.260 --> 00:14:40.370
Михаил Непряхин: и

73
00:14:41.110 --> 00:14:55.260
Михаил Непряхин: ну получается что у нас вот он эта структура конфига она у нас Всегда перед глазами мы ее просто берем и заполняем над теми значениями Которые нам нужно

74
00:14:55.490 --> 00:15:02.759
Михаил Непряхин: и в общем-то если, нам нужно ее Расширить тут легко Добавляются поля ничего не Меняется в сигнатуре

75
00:15:03.170 --> 00:15:16.020
Михаил Непряхин: и здесь история Похожая Мы создаем дефолтное значение а Потом проверяем Если к нам пришла структура конфига

76
00:15:16.150 --> 00:15:24.490
Михаил Непряхин: и Там в этих полях. Не Зеровелью То Мы переопределяем Наш дефолтный конфликт на тот который к нам пришел

77
00:15:24.730 --> 00:15:36.070
Михаил Непряхин: ну и да выглядит вот в этом месте чуть более громоздко и с каждой добавленной опцией придется здесь дописать ю

78
00:15:37.140 --> 00:15:44.210
Михаил Непряхин: а здесь Видите как бы Мы экономим на этом и у нас конструктор короткий и но

79
00:15:44.530 --> 00:15:53.789
Михаил Непряхин: господи зачем нам нужен короткий конструктор на эта библиотека библиотека должна быть удобно в использовании

80
00:15:53.900 --> 00:16:08.800
Михаил Непряхин: а вот как она Там под капотом устроена Это абсолютно пофигу и Поэтому то что Мы как бы вот этот и имеем чуть больше кодов конструкторы зато у нас в месте вызова получается более Лаконичный код

81
00:16:09.230 --> 00:16:15.860
Михаил Непряхин: смотрите у нас вот мы создаем структуру конфига и заполняем те поля которые нам нужны

82
00:16:16.270 --> 00:16:22.059
Михаил Непряхин: и передаем дальше в конструктор ну. И в общем-то то есть все то же самое

83
00:16:22.370 --> 00:16:39.899
Михаил Непряхин: но в коде оно все равно Читается лучшее ну? Вывод из Этого Импорта что У всех Опций приходится импортировать название пакета и оно в Конечном итоге Читается не так хорошо То есть смотрите мусор получается вот в этом месте

84
00:16:41.160 --> 00:16:44.900
Михаил Непряхин: сервер Всегда, повторяется видит Всегда, повторяется

85
00:16:45.610 --> 00:17:01.670
Михаил Непряхин: аргумент получается ну в виде аргумента а не в виде вот этого как бы поля Структуры и ну там Чисто Мое Мнение что Вот это Вот читается лучше, чем Вот это Вот

86
00:17:02.560 --> 00:17:13.729
Михаил Непряхин: Вот ну как бы дело ваше, можете использовать и то и то в жизни как бы Встречаться и то и то Но весь конфикт Этого преображения он построен вот на этом патруне

87
00:17:13.930 --> 00:17:17.859
Михаил Непряхин: и плюс видите здесь сочетание такое что

88
00:17:19.310 --> 00:17:21.999
Михаил Непряхин: конфиги они уже сразу со всеми, этими

89
00:17:22.210 --> 00:17:35.769
Михаил Непряхин: опциями для получения переменных из янв из фарва доотвенга или из переменных окружения и Поэтому мы конфиги руками даже и не конфигурировали хорошо как бы тоже удобно

90
00:17:36.590 --> 00:17:44.969
Михаил Непряхин: блогера блогера У Меня, ну У Меня, Всегда, Всегда, Всегда, я передаю конфликт вот

91
00:17:45.080 --> 00:17:53.930
Михаил Непряхин: ну например, можно его иногда сделать опциональным то есть можно Было бы здесь сделать троеточие например и тогда. И Нет

92
00:17:54.050 --> 00:17:59.430
Михаил Непряхин: Не требовал бы обязательно передачу этого конфликта

93
00:17:59.550 --> 00:18:16.249
Михаил Непряхин: но как бы это так как Не так сложно передать этот конфликт Везде в Коде это тоже выглядит довольно-таки лаконично в Плане что ну вот Мы делали блогер и нид передали его конфликт

94
00:18:17.090 --> 00:18:21.099
Михаил Непряхин: а что Мы Там пг икс передали его конфет

95
00:18:21.730 --> 00:18:29.410
Михаил Непряхин: вот а в интеграционных тестах но соответственно Мы этот конфликт в явном виде видим и

96
00:18:31.800 --> 00:18:37.650
Михаил Непряхин: оно здесь просто одной структурой да как бы сразу, весь конфликт задается и

97
00:18:38.220 --> 00:18:53.329
Михаил Непряхин: тоже опять же Мое личное мнение что вот в интеграционном тесте такой конфликт он читается лучше, чем если, бы мы это делали общинами ну то есть представляете насколько код был бы здесь сложный и замусоренный

98
00:18:53.800 --> 00:19:12.229
Михаил Непряхин: это нам бы если, бы Мы это делали бы с Помощью опшенов, нам бы все равно пришлось придумать структуру конфига и только Там вот уже на уровне инициализации слоев Мы бы из этого конфига еще этого в общем передавали бы выч двойная Работа получала бы

99
00:19:13.690 --> 00:19:34.340
Михаил Непряхин: Так а есть а что Если хотим, передать озеруэлью ноль Например, ну я здесь и Отличить ноль от азербайджана

100
00:19:35.850 --> 00:19:46.550
Михаил Непряхин: делается так ну Сейчас где у меня там есть У меня сестры и Сестренки ну короче

101
00:19:47.260 --> 00:19:51.500
Михаил Непряхин: где вот Сейчас указатель если нужно Различить

102
00:19:51.640 --> 00:19:55.020
Михаил Непряхин: то есть если бы если Значение не Передано оно бы от Него

103
00:19:55.500 --> 00:20:05.160
Михаил Непряхин: если значение пустая Строка то оно будет, Задано но оно будет, в виде пустой строки Поэтому как бы и это встречается

104
00:20:05.590 --> 00:20:11.339
Михаил Непряхин: на апдейтах чаще всего это ручка которая об эти данные вот обычно там встречаются

105
00:20:11.630 --> 00:20:30.729
Михаил Непряхин: такие структуры ну собственно у нас тоже та же самая история на дтп если посмотреть ручку обдает, видеть все опциональные поля которые могут в которых надо отличать а типа вот пользователь он Там свой Возраст занулил Или он его просто Не передал типа надо его Сейчас обновить в Ноль

106
00:20:30.830 --> 00:20:39.949
Михаил Непряхин: Или ничего с Ним Делать Не надо его просто Не передали чтобы Отличить Зероэлью От Непередного значения Используется этот указатель

107
00:20:43.180 --> 00:20:47.079
Михаил Непряхин: Так купшин нашей Страны выглядит как будто Кот Ради Куда

108
00:20:48.300 --> 00:20:59.960
Михаил Непряхин: Вот короче кто то вел, моду в гошном коде на опшины и они вот прямо, популярны то есть особенно, начинающие

109
00:21:00.150 --> 00:21:06.720
Михаил Непряхин: ну вот люди кто начинает писать свою библиотеку они чаще всего выбирают патронопшена

110
00:21:07.260 --> 00:21:26.220
Михаил Непряхин: а не конфик либо биллнер по мнедок ну какой там такой он еще сложный для вот понимания вот когда человек заходит то сидите здесь используются функции как объект первого Класса, и когда ты читаешь вот это вот

111
00:21:26.700 --> 00:21:34.090
Михаил Непряхин: очень эээ ты видишь конструктор видишь что Он принимает опшины

112
00:21:34.570 --> 00:21:47.330
Михаил Непряхин: но Список всех Опшенов Он где-то разбросан По файлу и ты короче как дурачок там находишь сперва вот что-то за Тип потом Там Что у нас возвращает этот Тип

113
00:21:47.430 --> 00:22:06.120
Михаил Непряхин: и Находишь тогда уже эти функции и просто даже Банально и

114
00:22:12.650 --> 00:22:15.659
Михаил Непряхин: так ладно если здесь вопросов нет

115
00:22:16.020 --> 00:22:21.690
Михаил Непряхин: такая важная тема которую тоже надо было светить идем дальше уйдем подгрем

116
00:22:22.840 --> 00:22:28.979
Михаил Непряхин: ну основная База у, нас понятно что позгрыс мы держим и

117
00:22:29.510 --> 00:22:32.450
Михаил Непряхин: то есть у нас приложение двадцать шесть

118
00:22:37.420 --> 00:22:47.179
Михаил Непряхин: то есть классическое приложение у нас выглядит так Что у нас есть Два инстинкта и они крутятся, в губернетисе

119
00:22:47.330 --> 00:23:00.449
Михаил Непряхин: Эти инстанции они Без стоит вопрос где Держать стоит ну топ один это подвис а подвис революционно баз данных

120
00:23:00.770 --> 00:23:10.760
Михаил Непряхин: аа и даже неважно нужны нам транзакции Не нужны на транзакции Там почти Всегда, все везде используется подкрас

121
00:23:11.930 --> 00:23:17.530
Михаил Непряхин: а Монго ну то Есть Там Не Знаю это девяносто пять процентов случаев

122
00:23:18.140 --> 00:23:25.550
Михаил Непряхин: а еще четыре, процента или три процента я бы дал монгел.

123
00:23:29.450 --> 00:23:42.439
Михаил Непряхин: Редко Но встречается мы Эти три процента дадим и и надежная база данных

124
00:23:42.620 --> 00:23:48.759
Михаил Непряхин: и Два процента ну или там, тоже плюс минус три процента это эс три

125
00:23:49.790 --> 00:23:52.919
Михаил Непряхин: остри чаще всего используют для хранения Файлов

126
00:23:54.870 --> 00:24:12.619
Михаил Непряхин: монго Использует Если вдруг У леда Или У вас ну вы Допустим пишете, сервис и У вас дофига экспертизы в монго и вы до Этого работали с Монго Тоже Как бы и если в Компании разрешено использовать Монго короче Это должны. Прямо, Звезды сойтись чтобы заюзать базу, Монго я там встречал

127
00:24:12.810 --> 00:24:21.689
Михаил Непряхин: ну на двух проектах я строча у Монго и в целом оно там было не особо оправдано что же Можно было все закрыть по зверю

128
00:24:21.840 --> 00:24:29.040
Михаил Непряхин: Вот и просто Всегда Всегда почти Всегда просто используется подряд для того чтобы что-то хранить

129
00:24:35.680 --> 00:24:45.240
Михаил Непряхин: так значит во-первых как Мы Работаем с Поздрой Мы Работаем через библиотеку Пг

130
00:24:48.410 --> 00:24:56.180
Михаил Непряхин: Трикс Это Драйвер Для работы с подвисом Так двенадцать тысяч

131
00:24:57.860 --> 00:25:02.669
Михаил Непряхин: двенадцать Звездочек Популярная реаль у нее уже

132
00:25:02.820 --> 00:25:13.340
Михаил Непряхин: а пятая версия, Поэтому там важно кто-то Еще Не перешел с четвертый многие на четвертые сидят Но как бы вот уже видно Что пятое. Точно актуально надо Переходить

133
00:25:13.930 --> 00:25:25.709
Михаил Непряхин: и когда устанавливаете соответственно оно Здесь даже и Не показано да ну просто надо Слэш пятая. Версия указывать чтобы установилась именно пятый твикс

134
00:25:25.950 --> 00:25:32.210
Михаил Непряхин: автор Реально крутой талантливый и вот этот вот джек

135
00:25:32.760 --> 00:25:42.079
Михаил Непряхин: джек си он ну прям Реально профессионал в этой теме очень хорошо кто именно разбирается в тренерах

136
00:25:42.220 --> 00:25:48.600
Михаил Непряхин: есть. Какие-то альтернативы но они менее популярны и вот певикс По большому счету победил

137
00:25:48.910 --> 00:25:56.700
Михаил Непряхин: значит есть версия с обычным коннекшеном вот если вот ну просто южную Библиотеку это один коннекшн

138
00:25:56.850 --> 00:26:00.719
Михаил Непряхин: вот но здесь же есть пейнтбол,

139
00:26:01.180 --> 00:26:08.130
Михаил Непряхин: и Прегрекс пул, он всеми, Не используется то Есть Мы Тоже Всегда используем подэкспул надо нам

140
00:26:09.430 --> 00:26:14.600
Михаил Непряхин: параллельность какая-то Не надо Всегда прыгать с пул и все без вариантов

141
00:26:15.590 --> 00:26:25.550
Михаил Непряхин: Он повторяю Там У Него Так и транзакции работают ну и Там все остальные функции Только У нас получается, Есть ул из Коробки

142
00:26:25.760 --> 00:26:40.279
Михаил Непряхин: значит чтобы примерно Так Понимать это как это работает присмотрите в других языках принято использовать вот наше приложение

143
00:26:42.890 --> 00:26:47.470
Михаил Непряхин: и если у нас значит пазгря возраст у нас есть

144
00:26:49.100 --> 00:26:57.990
Михаил Непряхин: и мы обычно Не ходим напрямую в поисках ну на других языках, да а у нас есть и

145
00:27:01.610 --> 00:27:09.890
Михаил Непряхин: баун сер, а и Или Как Он Там называется Он чего-то типа того короче пуллер какой-то

146
00:27:13.170 --> 00:27:27.150
Михаил Непряхин: для того чтобы Мы могли из нашего предложения делать очень много запросов а он их все собиравбачи

147
00:27:27.540 --> 00:27:31.130
Михаил Непряхин: и имел несколько постоянных коннекшенов,

148
00:27:31.340 --> 00:27:46.670
Михаил Непряхин: допустим четыре коннекшина постоянных он имел по зверя и вот это вот большое количество коннекшенов превращал и

149
00:27:48.200 --> 00:27:55.350
Михаил Непряхин: в гоу у Нас такой проблемы Нет и этот погребаум все равно он не нужен потому что у Нас приложение и Так

150
00:27:55.770 --> 00:28:02.450
Михаил Непряхин: когда Мы используем когда Мы используем пгрекспул,

151
00:28:02.850 --> 00:28:08.829
Михаил Непряхин: он и Так Поднимает Внутри Нашего приложения этот пул, коннекшенов

152
00:28:09.120 --> 00:28:26.520
Михаил Непряхин: а дефолт Там четыре поднимается но как бы этого на самом деле очень много за глаза вот они постоянно коннечно поднимаются и все и все приложения которые вы делаете из разных ручек Там Не важно Сколько рпц во Сколько вы обрабатываете оно все равно все

153
00:28:26.730 --> 00:28:43.980
Михаил Непряхин: вот обрабатываются бочуются и Работают с этими четырьмя коннекшиными которые переиспользуют Поэтому Мы здесь тоже экономим на этих Сетевых задержках на каких-то личных прослойках они нам. Просто Не нужны

154
00:28:44.380 --> 00:28:50.079
Михаил Непряхин: ну Мы можем отрегулировать это значение там поставить десять двадцать сколько Хотите,

155
00:28:50.210 --> 00:28:52.370
Михаил Непряхин: де фунт на четыре если ничего не менять

156
00:28:56.250 --> 00:29:02.830
Михаил Непряхин: так как я понимаю нет смысла использовать прогресспу если под возраст выделено однодро

157
00:29:03.270 --> 00:29:08.810
Михаил Непряхин: и имеет смысл все равно использовать потому что и

158
00:29:11.070 --> 00:29:17.869
Михаил Непряхин: так ну куда-то глянем сколько там духовный борт, вот Сейчас глянут спугались испуг когда Канапин создается

159
00:29:18.860 --> 00:29:27.210
Михаил Непряхин: а вот видите Я даже в примерах Я даже не пул использую а просто использую этот коннекшн обычный. Вот но в приложении у нас будет

160
00:29:27.910 --> 00:29:31.370
Михаил Непряхин: пул, шаз высокоблянин

161
00:29:36.870 --> 00:29:39.069
Михаил Непряхин: Парсинг, конфек

162
00:29:45.440 --> 00:29:49.529
Михаил Непряхин: мне просто кажется, Что. Он как Будто, бы это

163
00:29:50.300 --> 00:30:04.759
Михаил Непряхин: там используется гол макс прокс и он Делает если Одно, ведро. То один коннекшн в пуле и будет Но просто все равно важно же переиспользовать коннекшн нельзя как близкий вопрос к коннешнл Но каждый Раз, Умирает как Раз, заново

164
00:30:04.920 --> 00:30:11.420
Михаил Непряхин: создается а если. У нас пул, то даже если. У нас в пуле Один, коннекшн он его Переиспользует а это как бы хорошо

165
00:30:11.700 --> 00:30:16.909
Михаил Непряхин: когда Мы теперь Используем чудо Поэтому он в Любом случае.

166
00:30:20.430 --> 00:30:26.200
David R: А пул. Там выше создавался двести двадцать восьмая стака фото вот-вот ниже ниже вот она.

167
00:30:26.970 --> 00:30:36.870
Михаил Непряхин: Танк это да Ну короче можете не пул.

168
00:30:46.640 --> 00:30:51.130
Михаил Непряхин: Сейчас надо по здесь есть перемены Сейчас Мы по ней посмотрим

169
00:30:51.710 --> 00:30:59.810
Михаил Непряхин: вот она де форт макс конс энфорт минконс ноль эээ

170
00:31:01.030 --> 00:31:03.200
Михаил Непряхин: чем даже не ищется по нему

171
00:31:13.390 --> 00:31:29.089
Михаил Непряхин: так к нам сепию вот смотрите он говорит значит макс коннекшн вот дефолтная значит их остается четыре дальше он

172
00:31:29.440 --> 00:31:33.299
Михаил Непряхин: а проверяет нам. Сипию Сколько. Он о себе, ее ядер

173
00:31:34.430 --> 00:31:48.330
Михаил Непряхин: и если нам. Себею ядер больше чем Коннекшн Тогда Он переопределяет значит Духовность вам будет четыре неважно Сколько У вас ядер будет четыре поставлено Ну короче говоря

174
00:31:49.320 --> 00:32:00.999
Михаил Непряхин: Оно все нормально работает с этим Проблем, Нет Поэтому можно Не, париться, и я просто Вижу вот иногда Люди вот зачем-то используют просто каннешн Но это ну

175
00:32:01.320 --> 00:32:11.999
Михаил Непряхин: почти никогда Не Смысл потому Что когда перформанс Там звук У вас будут какие-то Пиковые нагрузки привет с Пульсера. Себя все равно лучше, Показывать вот потом неважно Сколько ядер Всегда едет по весь пул

176
00:32:13.240 --> 00:32:28.680
Михаил Непряхин: да так да Что еще важно сказать У нас Есть Ом У нас есть его рынка хочу называться Горм

177
00:32:32.360 --> 00:32:40.360
Михаил Непряхин: есть Прям целый сайт. С Шашлым Идем на Гитхаби. Сколько нагиет Хабби. Тут Чува Сломал

178
00:32:45.690 --> 00:32:46.600
Михаил Непряхин: Понятно

179
00:32:52.800 --> 00:32:59.230
Михаил Непряхин: и как Можно заметить она супер популярная тридцать восемь тысяч звезд ну как бы Это дофига

180
00:32:59.550 --> 00:33:03.319
Михаил Непряхин: дело в том Что когда люди переходят с другого языка

181
00:33:03.500 --> 00:33:18.420
Михаил Непряхин: ну Не знаю там спетона сжавы и у них там Была у рэмка то они как бы Хотят в Голову Тоже использовать его рэмку но дело в том Что в гоу у нас нагрузки Гораздо больше мы пишем сервера

182
00:33:18.590 --> 00:33:40.100
Михаил Непряхин: и и ну Даже если на каких-то ранних этапах у нас какие-то Маленькие нагрузки орам Еще Вывозят То и

183
00:33:41.000 --> 00:33:48.380
Михаил Непряхин: и а пайтоном это Гораздо более урезанный вариант каравенький

184
00:33:48.600 --> 00:34:04.129
Михаил Непряхин: ну и вообще как бы видите когда мы хотим, автоматизировать запросы при традиционной базе данных у нас неизбежно Появляются наклонные расходы в виде каких-то дополнительных, запросов в виде непрозрачности вообще что происходит

185
00:34:04.210 --> 00:34:21.160
Михаил Непряхин: и как Бы выглядит звучит неплохо типа Мы берем объект и говорим и

186
00:34:21.739 --> 00:34:32.070
Михаил Непряхин: о рем она дает нагрузки ну типа Там в Два в Три Раза в зависимости От сложности таблиц и

187
00:34:32.300 --> 00:34:50.079
Михаил Непряхин: короче Она Не масштабироваться никак и Любой проект, который он высоконагруженный он Рано Или поздно Доходит до точки когда аура выпиливают и переписывает все на чистую Эскель ну с помощью Библиотеки Пг икс то есть Мы когда по Гриксом Работаем мы почти Всегда Работаем с Чистым и Сквеем

188
00:34:51.500 --> 00:35:06.890
Михаил Непряхин: А кто Не привык Так делать. То кажется как Будто бы это Плохо ну смотрите во-первых эскюэль и

189
00:35:07.830 --> 00:35:18.859
Михаил Непряхин: и Сквер отлично работает с мвд то есть ну как бы все Эти университе отлично Шарят

190
00:35:18.980 --> 00:35:27.040
Михаил Непряхин: вы Сквеле просто русским языком пишете абсолютно чего угодно пишут и вы Там потом только редактируете его

191
00:35:27.040 --> 00:35:39.549
Михаил Непряхин: Поэтому даже если, вы не знаете эхель Ну во-первых в Любом случае нужно пройти какие-то Тренажеры Не Знаю их очень много хоть степик хоть вообще чего угодно ничего Не идете их ровно Там два-три хороших точно есть

192
00:35:39.810 --> 00:36:01.339
Михаил Непряхин: и и а так и

193
00:36:01.880 --> 00:36:10.910
Михаил Непряхин: и Не все отлично Разбираются а вот Не растительным в нем отлично понимают любые запросы все Что вы хотите. Вы можете написать

194
00:36:11.110 --> 00:36:18.500
Михаил Непряхин: и плюс когда Мы Работаем с Подвигсом У нас из Кюэль запрос Всегда, перед Глазами Мы Его Видим Мы

195
00:36:18.620 --> 00:36:28.649
Михаил Непряхин: Четко Понимаем Что Наш Кот Делает а Что Он Не Делает когда Же Вы Работаете с его Рамкой Вы Не понимаете Что происходит то есть ну вот сколько запросов было сделано

196
00:36:28.650 --> 00:36:48.480
Михаил Непряхин: ну понятно что часто вам кажется, что он должен быть один запрос а их на самом деле Два и часто когда вы видите перед Собой и

197
00:36:50.030 --> 00:36:50.970
Михаил Непряхин: вот.

198
00:36:52.220 --> 00:37:00.469
Михаил Непряхин: Так начну Давайте теперь про сам пог икс поговорим значит как с ним работать у нас

199
00:37:00.910 --> 00:37:06.220
Михаил Непряхин: что мы создаем вот коннекшн и

200
00:37:06.700 --> 00:37:14.160
Михаил Непряхин: ну? Можем. Проверить пин к нему да то есть как бы опять же так важно делать когда создаете коннекшн неплохо пингнуть

201
00:37:14.300 --> 00:37:19.439
Михаил Непряхин: хм я не забываю это делать но

202
00:37:20.100 --> 00:37:27.399
Михаил Непряхин: улучши получить ошибку в этом месте прямо, на создании андактора, Чем, идти дальше если, у нас нет подключения к базе данных

203
00:37:27.660 --> 00:37:35.099
Михаил Непряхин: так Сейчас посмотрим пингую или нет ну это я здесь не пигую то есть я здесь просто создаю вот Это вот

204
00:37:37.130 --> 00:37:47.419
Михаил Непряхин: Соединение, Но я Реально Не, проверяю оно живу. Или Нет То есть когда уже в Процессе работы приложения Оно проверится. Поэтому Неплохо Пингвинуть прямо здесь

205
00:37:48.670 --> 00:37:57.160
Михаил Непряхин: А и Дальше значит Мы Работаем с Скверем Так как Он есть и

206
00:37:57.310 --> 00:38:10.400
Михаил Непряхин: Единственное Что. Конечно вы можете и создавать таблицы и индексы делать в эсквеле ну вот как здесь я создаю таблицу клейтебу но создание изменения таблиц и индексов

207
00:38:10.640 --> 00:38:20.060
Михаил Непряхин: оно живет в миграциях здесь просто пример чтобы можно было запустить единым файлом и все работало вот в домиграции мы Сейчас. Тоже дойдем

208
00:38:20.900 --> 00:38:31.320
Михаил Непряхин: и основная функция которую мы будем использовать основной метод это пикэк значит группы грикса, их всего три

209
00:38:31.610 --> 00:38:36.750
Михаил Непряхин: а это вот экза который делает какую-то выполняет произвольный исковый запрос

210
00:38:37.480 --> 00:38:41.869
Михаил Непряхин: так Сейчас Найдем где здесь должен быть где нибудь интерфейс

211
00:38:50.880 --> 00:38:52.730
Михаил Непряхин: а нашествие себя Найду

212
00:39:00.800 --> 00:39:05.260
Михаил Непряхин: Вот значит Вот сигнатура, значит их зэк

213
00:39:05.710 --> 00:39:15.119
Михаил Непряхин: ну понятно, Что Всегда, передается Контекст, чтобы если вдруг Контекст, умер. Кончился чтобы Мы не Катили ресурсы Завершились здесь Сейчас

214
00:39:15.510 --> 00:39:21.110
Михаил Непряхин: дальше передается и скверный запрос то есть вот здесь прямом Текстом и сквель

215
00:39:21.560 --> 00:39:27.689
Михаил Непряхин: и аргументы ну это имеются в виду аргументы кискализапроса то есть мы Можем

216
00:39:28.590 --> 00:39:44.809
Михаил Непряхин: оставить Плей-холдеры в эсковель Запросе и они будут Заполнены через за вот эти вот аргументы а если, Мы сразу, же удоставляем значение передаем ну тогда вот этот аргумент остается Пустым мы Ему не передаем ничего национальной звезды

217
00:39:45.290 --> 00:40:09.520
Михаил Непряхин: возвращается комонтек и ошибка но в ком Онтеги у нас здесь мы Можем посмотреть просто Результат какой-то так и

218
00:40:09.800 --> 00:40:21.850
Михаил Непряхин: значит Второй вариант относится к вера это к единичным Запросам когда Возвращается орнастрока и соответственно когда

219
00:40:22.570 --> 00:40:28.950
Михаил Непряхин: ой Наоборот перепутал вот Одна строка значит запрос когда мы хотим? Вернуть одну Строку

220
00:40:29.490 --> 00:40:33.899
Михаил Непряхин: ну здесь Сигнатура. Та же самая значит возвращаться а эта самая строка

221
00:40:34.180 --> 00:40:41.269
Михаил Непряхин: и ну это интерфейс и Мы просто используем скан сканируем результат в нашу структуру

222
00:40:42.160 --> 00:40:45.440
Михаил Непряхин: тебе как известно кажется, прямо, Там деказируем

223
00:40:45.730 --> 00:40:55.249
Михаил Непряхин: вот и квеери это когда Мы возвращаем ну Хотим, Вернуть несколько строк тогда возвращается интерфейс роуз

224
00:40:55.420 --> 00:41:00.780
Михаил Непряхин: и здесь Мы по нему иерируемся с помощью аннекста

225
00:41:01.040 --> 00:41:10.950
Михаил Непряхин: и сканируем результаты в нашей перемены Которые мы сюда здесь подставим и главное Не забывать Что его еще надо клоунзить

226
00:41:11.160 --> 00:41:22.500
Михаил Непряхин: от моего когда все прочитали строки Мы его в конце, закрываем ну можно на ошибку вот проверить петя и эта штука Тоже, есть комонтек это типа ну текста сообщения от базы

227
00:41:23.280 --> 00:41:26.720
Михаил Непряхин: это не знаю, никогда не пользовался

228
00:41:27.300 --> 00:41:31.129
Михаил Непряхин: выли из источника они пользоваться этим Тоже, никогда не показалось

229
00:41:31.870 --> 00:41:36.190
Михаил Непряхин: вот то есть тут, все все сном обычно насканется

230
00:41:37.630 --> 00:41:41.180
Михаил Непряхин: а вот ну и это Как бы три Метода

231
00:41:41.390 --> 00:41:45.950
Михаил Непряхин: с Которыми Мы Взаимодействуем с базой

232
00:41:46.130 --> 00:41:50.510
Михаил Непряхин: и соответственно если у нас селекты но они попадают либо, сюда либо, сюда

233
00:41:50.660 --> 00:41:57.170
Михаил Непряхин: а все остальное Там апдейты инстерты делиты они соответственно через, экзамен Делают,

234
00:41:59.100 --> 00:42:04.000
Михаил Непряхин: так Ну здесь меня Там надо по транзакции

235
00:42:06.510 --> 00:42:13.960
Михаил Непряхин: я понял что горм плохо но часто ли у нас торжественно рабочий Проект ну встречается на одном Из десяти и встречается горм

236
00:42:14.410 --> 00:42:20.300
Михаил Непряхин: потому что ну какие-то люди неопытные начинали проект или просто на крутой легайся старый

237
00:42:20.730 --> 00:42:23.780
Михаил Непряхин: то есть в ка компании обязательно где нибудь гором

238
00:42:24.310 --> 00:42:40.350
Михаил Непряхин: бывает что встречаться какое же мнение про раскрыликс и из крюси ну смотрите это как сказать Сша. Давайте найдем

239
00:42:40.540 --> 00:42:48.899
Михаил Непряхин: Почему может там пример бот Из крыльсив встречал. На Одном проекте Идея конечно Интересная

240
00:42:49.670 --> 00:42:51.480
Михаил Непряхин: Это бы хороший вопрос опять. Же, Да

241
00:42:52.040 --> 00:42:59.660
Михаил Непряхин: а смотрите здесь шестнадцать шестнадцать тысяч Звездочек Из кверси и Это

242
00:43:00.780 --> 00:43:08.080
Михаил Непряхин: примеры будут нет но вот жалко Я Не, Люблю когда в библиотеке его нет здесь примеров Ничего У них Там сайт есть шас

243
00:43:09.740 --> 00:43:30.850
Михаил Непряхин: Ммм докс какой нибудь ну смотрите во Первых значит вы берете эсквель анонтируйте его и после этого

244
00:43:30.990 --> 00:43:45.730
Михаил Непряхин: вы выполняете команду и из вашего Эсквеля генералса генерация прямо методы каких-то хороших. Примеров Шас

245
00:43:50.890 --> 00:43:56.689
Михаил Непряхин: какой Раз, ну да Но здесь вот какого-то хорошего Примера, я не, вижу чтобы показать Иваново Сейчас Нарисую

246
00:44:10.900 --> 00:44:13.350
Михаил Непряхин: начтись Эскиэль

247
00:44:18.580 --> 00:44:23.910
Михаил Непряхин: си короче говоря значит в чем Идея У нас Есть сквер Кот

248
00:44:25.150 --> 00:44:28.659
Михаил Непряхин: и Мы ну в миграциях Мы Там выдержим

249
00:44:29.320 --> 00:44:43.500
Михаил Непряхин: и Мы его кроме того что пишем обычный Там криэйтей был Мы еще можем его аннотировать специальными

250
00:44:44.100 --> 00:44:48.369
Михаил Непряхин: А специальным текстом который понимает Извельи

251
00:44:49.200 --> 00:44:55.079
Михаил Непряхин: Идея скрести Что Мы просто берем из Квель и из него генерим

252
00:44:55.730 --> 00:44:59.100
Михаил Непряхин: адаптеры то есть У нас Адаптация. Как бы Генерица

253
00:45:01.170 --> 00:45:17.239
Михаил Непряхин: вот Мы Сейчас у нас жизнь вот эта аптерата ну там сходи, в базу, достань из базы и вот как бы, и из этого изысквеля сразу генерация. Адаптеры и Мы все равно должны писать То есть Не могут За нас все сгенерить но часть Генерица

254
00:45:18.600 --> 00:45:28.540
Михаил Непряхин: но Так как. В Обычном искеле недостаточно информации для того чтобы качественно сгенерировать адаптацию приходится этот обычный эскель аннотировать

255
00:45:28.760 --> 00:45:33.260
Михаил Непряхин: с своим собственным. Синтаксисом вот Этим эсквельсишным.

256
00:45:34.830 --> 00:45:39.740
Михаил Непряхин: Ну мне Не нравится, вот это потому что

257
00:45:39.860 --> 00:45:48.979
Михаил Непряхин: вы вынуждены то есть смотрите она обязывает этот библиотека обязывает вас ее учить Мне это вообще не нравится, когда так происходит

258
00:45:49.340 --> 00:45:53.310
Михаил Непряхин: и и Там очень много функционалов

259
00:45:53.410 --> 00:46:11.779
Михаил Непряхин: она имеет ну Там костылину все случаи жизни То есть вы Там просто дополнительные синтаксы спишите нажимаете Кнопку Генерировать У вас генерация вот эти адапторы. Которые тем Не менее все равно вы Не можете использовать до конца ну то есть там какие-то модельки Генерация, грубо говоря Если посмотреть на наши доктор

260
00:46:16.650 --> 00:46:19.690
Михаил Непряхин: автозрисовый томклеет профайл.

261
00:46:20.210 --> 00:46:26.749
Михаил Непряхин: Значит Ищутная для детошка вот оно эту ложку вот эту сгенерит как отдельную структуру

262
00:46:27.080 --> 00:46:30.999
Михаил Непряхин: Сейчас может что-нибудь По удачнику например, ну вот смотрите вот гет профайер да

263
00:46:31.220 --> 00:46:35.429
Михаил Непряхин: значит Что сгенерится. Ну вот эта штука она

264
00:46:38.330 --> 00:46:43.270
Михаил Непряхин: как. Бы Там она Будет Генеральная уже это Будет просто. Константа

265
00:46:43.460 --> 00:46:51.290
Михаил Непряхин: значит вот эта вот структура сгенериться За вас это дто Тоже. Подставится То есть Не надо будет вот этот Код писать

266
00:46:52.950 --> 00:46:58.500
Михаил Непряхин: и оно само а вот это вот декодирование Тоже с генерица

267
00:46:59.150 --> 00:47:08.750
Михаил Непряхин: ну как Будто бы неплохо звучит потому что действительно если посмотреть на адаптацию работы с базой данных вот селек да ну он довольно-таки объемный как бы много текста

268
00:47:09.200 --> 00:47:23.189
Михаил Непряхин: и если За нас это сделает библиотека с генериет как Будто бы это звучит неплохо Но чтобы она более-менее что-то Вменяемость с генерила приходится использовать много аннотаций, в Скрекоде и

269
00:47:24.240 --> 00:47:38.540
Михаил Непряхин: очень высокий порог Входа для Нового Разработчика если он Не знает из сквельси и попадает на Проект, Использования скверси ну все он обречен на то чтобы очень долго выполнять любую небольшую доработку и он будет плеваться

270
00:47:38.820 --> 00:47:46.630
Михаил Непряхин: вот поэтому я Так посмотрел на это ну интересная Идея Но в целом мне не зашла не Нравится

271
00:47:47.650 --> 00:47:58.339
Михаил Непряхин: а насчет Эскверикс ну просто альтернативный тоже драйвер Эсквеликс который тоже популярен семнадцать тысяч.

272
00:47:58.450 --> 00:48:00.100
Михаил Непряхин: Звездочек

273
00:48:03.350 --> 00:48:14.129
Михаил Непряхин: Сейчас сказал примерчик ну Он в общем то Очень Похож на п икс только Он Он по-моему Совместим Со стандартным драйвером

274
00:48:14.400 --> 00:48:44.800
Михаил Непряхин: и он немножечко и и по Так

275
00:48:48.720 --> 00:48:54.639
Михаил Непряхин: Так вот значит возвращаемся да значит мы написали наш скорее запрос вот его передали вик зэк

276
00:48:55.380 --> 00:49:01.890
Михаил Непряхин: а ну и все То есть Нуртеги здесь Распечатали тексты Сообщения если Нет ошибки значит все-таки

277
00:49:02.360 --> 00:49:12.009
Михаил Непряхин: ну и тут так дроб Ты был ну это я оставил, вот мало если, захотите, поиграться тут посоздавать таблицы вот если, вам это важно вы можете использовать этот

278
00:49:12.270 --> 00:49:20.570
Михаил Непряхин: файлик Сейчас просто посмотрим креит индекс тоже опять, Же это делается в миграциях Ну, вот инер Например, да

279
00:49:20.940 --> 00:49:28.859
Михаил Непряхин: Ну, пишем соответственно инфорд в таблицу узера вставляем ней Мейдж с плейхолдерами

280
00:49:30.020 --> 00:49:34.989
Михаил Непряхин: да кстати обратите внимание. Естьхолдеры так Ну ка здесь есть можно

281
00:49:42.820 --> 00:49:47.050
Михаил Непряхин: чем так подсвечиваться некрасиво таблицы видимо не что ли не знаю

282
00:49:47.410 --> 00:49:57.070
Михаил Непряхин: короче говоря у нас есть поискхолдеры у доллар один дома Два и это просто вот они вы сюда передаете перемены они вставляются соответственно

283
00:49:57.200 --> 00:49:58.570
Михаил Непряхин: на имя яйчук

284
00:49:58.800 --> 00:50:12.620
Михаил Непряхин: и когда Я Делаю югэк у меня здесь и квель Я Передаю два аргумента это имя и возраст соответственно они поставят Сюда в эти поисколдеры и в итоге ставятся, в эти столкцы в таблицу юзера

285
00:50:13.680 --> 00:50:17.800
Михаил Непряхин: если вы не будете использовать поэтхолдеры то у вас возможно

286
00:50:18.550 --> 00:50:33.819
Михаил Непряхин: сделать ботинскую Ленинграцию то Есть они защищают От иск ее линнекции Грубо говоря экранируют какие-то опасные символы и просто Превращаются в текст Не скрывали. Ли они акции становится невозможной поэтому вот эти вот происхолдеры

287
00:50:34.280 --> 00:50:41.570
Михаил Непряхин: при цертах все надо использовать так Что У нас здесь

288
00:50:42.490 --> 00:50:53.880
Михаил Непряхин: ага, ну вот собственно я хотел вам показать Одну из Проблем посмотрите когда Мы Хотим, вставить пачку. Значений

289
00:50:55.330 --> 00:50:57.720
Михаил Непряхин: и Мы работаем с чистым сквеем

290
00:50:57.910 --> 00:51:07.730
Михаил Непряхин: То у нас возникают некоторые проблемы в конкретинации строк то есть нам приходится их делать потому что ну

291
00:51:08.240 --> 00:51:12.300
Михаил Непряхин: как иначе то есть появляются вот какие-то вот такие вот аппенды

292
00:51:12.430 --> 00:51:23.290
Михаил Непряхин: что мы хотим, три значения вставить нам надо и поихолдеры из пейнтболеры добавить и просто вот аргументы мы заводим связь аргументов

293
00:51:23.430 --> 00:51:34.059
Михаил Непряхин: а потом вот эти все аргументы туда Передаем ну, и все вот эти вот аргументы они потом Встают но вот эти вот поисколдеры которые потом Вставляются в эту Табличку мьюзизер снеймей

294
00:51:35.150 --> 00:51:44.830
Михаил Непряхин: вот как Бы Один. Из моментов когда Неудобно работать с певиксом ну, имеется в виду не с паниксом а с чистым сквером

295
00:51:45.310 --> 00:51:46.830
Михаил Непряхин: Как, это решается

296
00:51:47.410 --> 00:51:57.330
Михаил Непряхин: леша и с помощью сторонних библиотек Сейчас чуть позже прогулку поговорим которая Как, Раз, этот момент позволяет, автоматизировать

297
00:51:58.150 --> 00:52:06.250
Михаил Непряхин: так про Апдейт про ну с абдельвитами все Окей здесь обычно Никаких Проблем Нет как бы Чистый скель все хорошо

298
00:52:06.410 --> 00:52:08.779
Михаил Непряхин: эти тоже Штуки в поисках воды встают

299
00:52:09.830 --> 00:52:16.000
Михаил Непряхин: Так с деллитом тоже все окей никаких Проблем, Не бывает селектомию

300
00:52:16.990 --> 00:52:21.869
Михаил Непряхин: селекто мне смотрите как работаем то есть ну мы тут достаем все из таблицы юзерс

301
00:52:22.380 --> 00:52:25.420
Михаил Непряхин: используем Жених зэк метод Акваре

302
00:52:26.030 --> 00:52:35.529
Михаил Непряхин: и вот как я сказал появляется вот этот цикл, значит мы используем во-первых некст когда мы иерируемся по строкам которые получили

303
00:52:36.280 --> 00:52:57.529
Михаил Непряхин: и и много разных Оптимизаций, под капотом которых нет вскрыликсе

304
00:52:58.130 --> 00:53:11.560
Михаил Непряхин: и сканируем из этих строк то есть нам надо получить, айди имя и возраст Мы заводим эти перемены и передаем сюда в скан э в правильном порядке естественно

305
00:53:11.640 --> 00:53:23.720
Михаил Непряхин: передаем ну как в селекте Там Ну мне тут Звездочка Ну Грубо говоря Там таблица у меня значит идет, сперва Иди потом меня потом возраст соответственно я здесь Тоже в правильном порядке их передаю

306
00:53:23.860 --> 00:53:29.470
Михаил Непряхин: и они их на них ласконируются ну и все дальше я уже их Имею.

307
00:53:30.230 --> 00:53:35.379
Михаил Непряхин: А какбы происходит декодинг Или они У меня там уже есть

308
00:53:40.300 --> 00:53:47.659
Михаил Непряхин: М может показаться что этот момент можно Автоматизировать на самом деле да его Можно Автоматизировать

309
00:53:47.800 --> 00:53:54.310
Михаил Непряхин: ээ тоже в голку есть возможность завести вот под это дело, структуру и

310
00:53:54.520 --> 00:54:08.320
Михаил Непряхин: в страктегах указать какие колонки мы Хотим, портить то есть типа это не уарем но чуть больше автоматизации но Тем не менее когда вы вот так вот руками делаете сканы

311
00:54:08.510 --> 00:54:24.970
Михаил Непряхин: хоть и кода получается больше но Тем не менее У вас полный контроль и Вы легко можете сделать какие То Небольшие, изменения оптимизации Поэтому как бы круто Что Голову. Дает возможность на таком, низком уровне именно вот со скрелем работать

312
00:54:26.030 --> 00:54:29.669
Михаил Непряхин: так Мы хотим, заселетьте одну, строку

313
00:54:30.630 --> 00:54:37.170
Михаил Непряхин: с вером да ну тоже заранее готовим вот Эти, поля, Куда Мы будем сканировать данные

314
00:54:37.620 --> 00:54:57.430
Михаил Непряхин: эти вот пгетапы это обертки для того чтобы отделить ниу значения вернее нууууу чтобы нулы отделить то есть Там Мы можем проверять на вылет и если оно фоукс то значит значение было ну и Мы Так можем Отличить ну от ненула Озеровелью

315
00:54:59.150 --> 00:55:03.019
Михаил Непряхин: ин восемь на самом деле это и не шестьдесят четыре просто

316
00:55:04.050 --> 00:55:10.500
Михаил Непряхин: асгревой это подгреговый тип ин восемь в позгре это восемь бай

317
00:55:11.190 --> 00:55:14.699
Михаил Непряхин: вот по нашему пошному это инн шестьдесят четыре,

318
00:55:15.480 --> 00:55:21.660
Михаил Непряхин: и Ну точно Так же вот Мы в них сканируем и потом Можем У Каждого проверить

319
00:55:22.170 --> 00:55:24.080
Михаил Непряхин: аа валидно ли оно

320
00:55:24.390 --> 00:55:40.490
Михаил Непряхин: то есть вот отойди мы можем проверить валидно инвалидное и Если валидно то дальше использовать ну здесь я ничего не проверяю я просто сразу, вывожу то есть я здесь не отличаю зерова или незорвали если, вот ноль я не пойму а До зеркалью или нуму Было в таблице

321
00:55:40.610 --> 00:55:47.290
Михаил Непряхин: вот если, нужно отличить тогда проверять через метод валит и

322
00:55:47.960 --> 00:55:59.850
Михаил Непряхин: транзакция, так транзакция, амбла тут уже много ладно давайте сделаем перерывчик, в шестом проське. Роу снегг Это Фичь одной строки избд

323
00:56:00.880 --> 00:56:04.900
Михаил Непряхин: и Не совсем Это Не совсем так

324
00:56:05.180 --> 00:56:13.690
Михаил Непряхин: оон Не будет по одной фече Он все равно запрос Сделает к базе как есть

325
00:56:13.990 --> 00:56:21.690
Михаил Непряхин: и база батчим. Вернет эти данные то есть она вернула пятьдесят строк

326
00:56:22.150 --> 00:56:35.890
Михаил Непряхин: и мы уже ну драйвер уже эти Пятьдесят Строк имеют и Некст это не фечь По одной Строке из базы это именно просто перебор вот здесь вот как бы уже вронтами строки у нас уже есть

327
00:56:36.000 --> 00:56:40.940
Михаил Непряхин: то есть в драйве они уже есть они уже получены из баз данных просто мы их

328
00:56:41.410 --> 00:56:42.860
Михаил Непряхин: Нам, рубатам по одной

329
00:56:43.230 --> 00:56:57.439
Михаил Непряхин: Так в Чем, Плох стандартной Драйве Расклеились Голову. Там Что Нет пуа да Ну, естественно Там Нет пуа и Ну, его никто не использует все используют Пеликс все просто Погибликс используется десять из десять случаев ну может быть Там

330
00:56:57.690 --> 00:57:03.710
Михаил Непряхин: в очень. Редких. Случаях использую вы можете увидеть Горм, вот эсквеликс

331
00:57:04.390 --> 00:57:10.330
Михаил Непряхин: может один, Раз виделся все Время Искрились и один, Раз виделся в Свое, Время голый Скрип Вообще ни разу Не видел

332
00:57:10.660 --> 00:57:18.329
Михаил Непряхин: а если в базе столько острог забросили Сколько выбрал этот момент вот вот Там вот не могу сказать Сколько но Там какая То оптимизация есть

333
00:57:18.440 --> 00:57:32.980
Михаил Непряхин: все сто строк сразу не попадут то есть вот там уже включают работу вот этот райвер п икс и он будет какими-то бочами получать запросы из базы и отдавать их нам

334
00:57:33.010 --> 00:57:43.839
Михаил Непряхин: то есть но как какие там именно дефолты если это важно то надо уже читать Кот по грикса мне это Ни разу не было нужно Поэтому тут не могу сказать

335
00:57:44.110 --> 00:57:50.349
Михаил Непряхин: но апгрейк с этим хорошо умеет работать именно Так чтобы Не было там тети тормозов и как-то все было плавно

336
00:57:51.390 --> 00:57:55.880
Михаил Непряхин: Я эффективна так вам Давайте перерожден, две Минутки

337
01:00:17.490 --> 01:00:18.170
Михаил Непряхин: или кто

338
01:00:30.090 --> 01:00:41.800
Михаил Непряхин: так Продолжаем значит про транзакции здесь и от самого коннекшена у нас есть э

339
01:00:42.090 --> 01:00:46.020
Михаил Непряхин: три метода которые нам нужны для Транзакций

340
01:00:46.490 --> 01:00:48.560
Михаил Непряхин: так Сейчас Посмотрим Это у нас

341
01:00:54.310 --> 01:00:57.559
Михаил Непряхин: где ты бунтерфейс увидеть ты икса

342
01:01:19.050 --> 01:01:30.040
Михаил Непряхин: воттон вот у нас для транзакции нужно чтобы начать транзак нужен грин и он возвращает объект транзакции

343
01:01:31.740 --> 01:01:36.940
Михаил Непряхин: Если Все хорошо Том где Он Камит Он Только Ошибку Возвращает

344
01:01:37.660 --> 01:01:45.969
Михаил Непряхин: и если что-то идет Не Так То происходит ролл. Бэк Тоже, Только Ошибка Возвращает и и

345
01:01:48.890 --> 01:01:52.970
Михаил Непряхин: Можно сделать ролл. Бэк аа несколько Раз

346
01:01:53.470 --> 01:01:59.150
Михаил Непряхин: и даже если у нас уже закоченная

347
01:01:59.310 --> 01:02:09.009
Михаил Непряхин: транзакция то вызов Роллбека он никак ее Не Отменит и как Бы ээ ну все Окей ну Так и Написано что это Безопасно

348
01:02:09.180 --> 01:02:22.789
Михаил Непряхин: вот можно в конце э любой транзакции Всегда, робок вызывать и в зависимости От того что если все было хорошо то ничего Не произойдет если уже комит был вызван рафбек ничего Не меняет

349
01:02:22.960 --> 01:02:28.790
Михаил Непряхин: а если, камита не было то тогда роббек сделает возврат сделать робот

350
01:02:28.940 --> 01:02:33.770
Михаил Непряхин: вот и в коде это выглядит следующим образом

351
01:02:33.960 --> 01:02:39.439
Михаил Непряхин: значит вот начинаем транзакцию делаем бегин получили объект транзакции

352
01:02:40.720 --> 01:02:43.499
Михаил Непряхин: сразу же в дифферере делаем робот

353
01:02:44.500 --> 01:02:50.400
Михаил Непряхин: он весь этот бог вызовется в конце. Функции

354
01:02:50.990 --> 01:03:03.909
Михаил Непряхин: как деструктор то есть он в самом конце вызовет Поэтому вот все что изнутри это ничего не начнет выполняться здесь и Сейчас но здесь и Сейчас мы уже говорим значит в любом случае сделаешь роубек

355
01:03:04.540 --> 01:03:11.850
Михаил Непряхин: и если транзакция Уже была Закрыта если камид был удачно вызван вот здесь ботками вызван

356
01:03:12.100 --> 01:03:18.859
Михаил Непряхин: то Там вернется. Ошибка Что транзакция закрыта и вот здесь Она нас Не интересует то Есть, Мы говорим

357
01:03:19.270 --> 01:03:23.430
Михаил Непряхин: если ошибка Не нем то Есть, если ошибка Есть,

358
01:03:25.390 --> 01:03:39.419
Михаил Непряхин: то мы бы хотели ее залогировать но мы бы хотели исключить ошибку если, это ошибка вот эта транзакция закрыта то есть, комит был успешно Вызван и Поэтому Мы говорим ирассвист То Есть, если ошибка У нас

359
01:03:39.580 --> 01:03:48.980
Михаил Непряхин: вот Это Что ты эксглост Но восклицательный знак Но Это Не Она

360
01:03:49.550 --> 01:04:04.529
Михаил Непряхин: то мы хотим? Это дело залогировать а это мы реагировать Не хотим? Эту Ошибку нужно фига как Бы ну Она и так будет почти Всегда возникать потому Что Мы будем Всегда Делать роббек а когда Ботка мид успешен и вот только когда он Не успешен тогда Мы этого героя

361
01:04:05.520 --> 01:04:24.549
Михаил Непряхин: дальше от Транзакций смотреть уже от Транзакций Мы вызываем микзек потому что вот этот объект вначале транзакции возвращается интерфейс У Него есть эти три Методы которые нам нужны для работы вот он ыкзек который для всего остального

362
01:04:24.620 --> 01:04:27.250
Михаил Непряхин: для всех запросов кроме

363
01:04:27.740 --> 01:04:35.010
Михаил Непряхин: и селекта одной строки отселект одной строки и селекта много строк то Есть а вот это уже все остальное

364
01:04:35.480 --> 01:04:44.500
Михаил Непряхин: как видите тут Есть Всякие Препоры там вот Еще чего-то ну Мы это руками Никогда не работаем с этим Потому что. Это уже Там

365
01:04:44.700 --> 01:04:47.130
Михаил Непряхин: и это уже Там

366
01:04:47.900 --> 01:05:03.229
Михаил Непряхин: на низком Уровне с этим работать. И мне Никогда Не приходилось работать. С Этими методами То Есть Всегда. Это для транзакции Эти. Три метода ну классические и Эти. Три метода для работы с

367
01:05:05.230 --> 01:05:07.480
Михаил Непряхин: спрос с запросами

368
01:05:10.280 --> 01:05:22.060
Михаил Непряхин: а если База поддерживаться. И в Поиске транзакциях можно сделать второй Раз ээ биген Не знаю, Не Нет экспертизы по этому вопросу

369
01:05:22.190 --> 01:05:27.799
Михаил Непряхин: звезда надо самим вам вот проверить ну или чаще же идти спросить Думаю ответит,

370
01:05:30.950 --> 01:05:37.999
Михаил Непряхин: так ну да вот короче мы начали. Транзакцию сделали, два раза язык

371
01:05:38.470 --> 01:05:42.850
Михаил Непряхин: сделали, два раза ничего от строк и закомителем

372
01:05:43.130 --> 01:05:51.430
Михаил Непряхин: и когда будем выходить эти функции сработает роллбек и либо откатит либо подтвердит зэмедит

373
01:05:52.970 --> 01:06:04.080
Михаил Непряхин: так сразу, же если вдруг вам Нужен уровень изолированности Какой То определенный То есть по дефолту у нас уровень изоляции в гоу

374
01:06:04.290 --> 01:06:07.640
Михаил Непряхин: Ну в привилегии спас грей это

375
01:06:07.900 --> 01:06:24.860
Михаил Непряхин: рыбка метод то есть вот это три танкомитед он здесь есть я вот не знаю вообще в погребе его можно руками выставить или Нет потому что в позгре вот дефолтный уровень из рации это Редко митед что транзакция видит закоченные данные

376
01:06:25.570 --> 01:06:37.470
Михаил Непряхин: а незакомеченные данные она Не видит вот Поэтому возможность просто для совместимости как-то добавили совместимость со сквером вот Мы можем руками увеличить,

377
01:06:37.590 --> 01:06:49.739
Михаил Непряхин: уровень изолированности до рипита говорит и до устере вази был ну типа репита говорит нам говорит что Повторяющиеся чтения

378
01:06:49.840 --> 01:06:57.020
Михаил Непряхин: и все запросы выполняем в транзакциях как Будто бы они не параллельные а

379
01:06:57.130 --> 01:07:05.400
Михаил Непряхин: последовательно вот короче говоря вот если Мы хотим, повысить уровень изоляции то отменить с помощью опции вот это дело

380
01:07:06.230 --> 01:07:10.539
Михаил Непряхин: и и Мы ее передаем эту Опцию,

381
01:07:10.970 --> 01:07:14.120
Михаил Непряхин: в бегине ну а Дальше Дальше все то же самое

382
01:07:17.210 --> 01:07:23.150
Михаил Непряхин: Так можно Пожалуйста, Вкратце. Объясническую Транзакцию, для чего вы деваться. Я просто только слышу Эндаков,

383
01:07:23.500 --> 01:07:35.079
Михаил Непряхин: ну смотрите вкратце у нас база данных революционная она нас э поддерживает

384
01:07:37.770 --> 01:07:50.260
Михаил Непряхин: вернее не поддерживает а соответствует соответствует асит значит асит это омарность операции а си

385
01:07:59.130 --> 01:08:00.459
Михаил Непряхин: а консистенты сдал,

386
01:08:00.610 --> 01:08:13.330
Михаил Непряхин: си консистентность и это уровень изоляции ну вот про который то что, вам говорил и иди ну надежность дюрабилите или как-то то есть Ммм

387
01:08:16.140 --> 01:08:27.699
Михаил Непряхин: база данных дает гарантии что, операции будут выполнены все или не одной дает гарантии Что

388
01:08:27.930 --> 01:08:40.639
Михаил Непряхин: данные будут в консистентном состоянии Что если мы из одной таблицы Что то Деньги списали добавили в другую таблицу то из одной таблицы очну будет а второе прибудет

389
01:08:40.800 --> 01:08:45.469
Михаил Непряхин: уровень изолированности это то Что вот между Собой транзакцией мы можем

390
01:08:45.870 --> 01:08:48.700
Михаил Непряхин: аа изолировать между Собой для того Чтобы

391
01:08:49.279 --> 01:08:55.050
Михаил Непряхин: ну повысить как бы, у нас же база данных она Поддержит параллельную работу

392
01:08:55.359 --> 01:09:04.870
Михаил Непряхин: а но э где есть параллелизм там есть гонка данных и вот в общем то это решается с Помощью уровня изолированности

393
01:09:04.990 --> 01:09:13.970
Михаил Непряхин: и по Сути мы управляем блокировками можем всю таблицу заблокировать можем строку заблокировать а можем сказать что

394
01:09:14.200 --> 01:09:33.809
Михаил Непряхин: ну там ничего страшного главное чтобы только за комиченные данные следующая транзакция видела ну а дюрбилити это то что У нас есть гарантия что если база данных нам ответила ок, типа вот мы записали туда данные база сказала ок, то мы считаем что они правда Сохранились

395
01:09:33.810 --> 01:09:46.449
Михаил Непряхин: и Сперва данные попадают в лок файл а потом они уже Сохраняются реальные таблицы и если даже электричество отключат то, в оккупай в локфайле эти, данные все равно будут

396
01:09:46.550 --> 01:09:49.460
Михаил Непряхин: вот короче говоря и

397
01:09:49.770 --> 01:09:58.170
Михаил Непряхин: революционная база данных это уже отдельная большая тема и в любом случае здесь вам ну как бы мы в рамках курсов не можем ее осветить и охватить,

398
01:09:58.370 --> 01:10:02.709
Михаил Непряхин: мы смотрим просто как с этим работать вот Но

399
01:10:02.940 --> 01:10:17.009
Михаил Непряхин: в любом Случае Если какие-то глупые Вопросы, Есть равно задавайте Ну Если вы считаете Что Они глупый имеется в виду Но в любом случае вам придется дать Самому поизучать традиционные базы данных э скиэль и подлес

400
01:10:19.090 --> 01:10:23.959
Михаил Непряхин: а вопрос был в Контакт что такое то чего делается ну

401
01:10:24.070 --> 01:10:37.290
Михаил Непряхин: грубо Говоря у нас есть Денежные финансовые Операции нам надо с одного счета у клиента списать а Второму положить и деньги же не могут взяться Ниоткуда и Деньги не должны исчезать Никуда

402
01:10:37.290 --> 01:10:46.070
Михаил Непряхин: такой транзакции просто дают гарантии что у нас данные будут в конституционном состоянии Ну его буква си вот она как Раз про это и говорит

403
01:10:48.010 --> 01:10:53.939
Михаил Непряхин: Так просто башка, запросов Которые должны или за Разом не рухнется не один, в Любом случае ошибки ну да да да

404
01:10:54.290 --> 01:11:01.120
Михаил Непряхин: так по идее со запроса это и есть транзакция жида а и да

405
01:11:01.380 --> 01:11:06.510
Михаил Непряхин: но Мы еще можем руками и сказать

406
01:11:06.710 --> 01:11:09.610
Михаил Непряхин: какой кусочек мы Хотим? Сделать это марлен

407
01:11:09.840 --> 01:11:15.960
Михаил Непряхин: то есть Мы можем сказать что две операции э, должны быть

408
01:11:16.530 --> 01:11:24.800
Михаил Непряхин: атамарными они обе. Или должны выполниться то есть вот мы тут дева минсерд делаем менцер данных м

409
01:11:25.090 --> 01:11:34.990
Михаил Непряхин: данные добавляем в таблицу короче либо они обе, добавятся, либо ни Одна из них Не добавится допустим добавили вот эту Строку

410
01:11:35.350 --> 01:11:44.839
Михаил Непряхин: и все Окей борьба за ответила Окей добавляем следующую Строку в таблицу и база ответила ошибкой

411
01:11:45.140 --> 01:11:50.000
Михаил Непряхин: Это значит что, мы вот здесь вот

412
01:11:50.100 --> 01:11:59.250
Михаил Непряхин: а завершаем Работу ну, тут мы должны сделать режиссером дату пишем влог делом ретерн вот эти вот ошибки нашей,

413
01:12:00.530 --> 01:12:07.749
Михаил Непряхин: и у нас сработает ронбек который откатит вот эту вот

414
01:12:08.230 --> 01:12:23.749
Михаил Непряхин: э строку которая добавилась туда то есть грубо говоря там на уровне таблицы помечается вот строка добавилась она физически добавилась но она помечена что транзакция, не закачена то есть мы находимся в подвижном состоянии

415
01:12:25.590 --> 01:12:33.000
Михаил Непряхин: и только когда Мы добавили эту Строку. Тоже, Мы Делаем комитет

416
01:12:33.200 --> 01:12:45.659
Михаил Непряхин: и вот с этих Строк Которые Мы добавили Снимается Флажочек что эти данные они были не замечены то есть мы их комимем и соответственно данные уже

417
01:12:45.890 --> 01:12:50.039
Михаил Непряхин: атамарно как бы вот записались в таблицу

418
01:12:51.600 --> 01:13:00.290
Михаил Непряхин: так ну надеюсь кратце Объясним, и не задушил бакендеров. Наших вот так

419
01:13:00.690 --> 01:13:04.230
Михаил Непряхин: а знать какие команды Правом жб надо знать

420
01:13:04.350 --> 01:13:14.649
Михаил Непряхин: ну и да ну как бы это какие команды это Уже просто э Сквель, это вы просто эскивалитренажер проходите ну Там Не знаю за Неделю вы скорее осваиваете, в Любом

421
01:13:14.690 --> 01:13:30.929
Михаил Непряхин: в тренажеры потому что там основные какие-то Команды они простые все ну положить данные достать данные Крутка короче условно а То что там сложное чего-то Но это Уже бывает редко и все равно все забудете главное просто грубо говоря не надо эскивель

422
01:13:31.180 --> 01:13:43.520
Михаил Непряхин: запоминать что То Там надо знать его возможности, вот то же. Самое какое то у меня обучение да я же. Вам понимаю что вы же. Не, запомните все но вы должны Знать какие есть возможности,

423
01:13:43.530 --> 01:13:57.460
Михаил Непряхин: и если. Что потом быстренько загуглить Или зайти и

424
01:13:57.460 --> 01:14:05.240
Михаил Непряхин: все запоминать То если. Вы будете постоянно с Чем То Работать конечно вы это выучите но никто не ждет от вас что вы все будете знать

425
01:14:06.300 --> 01:14:08.860
Михаил Непряхин: а так так

426
01:14:09.980 --> 01:14:21.809
Михаил Непряхин: дальше значит какой моментик у нас Для облегчения работы Со скрипом есть Билдеры То есть знаете У оремов Нет Ну как бы есть да Но они

427
01:14:21.880 --> 01:14:30.400
Михаил Непряхин: Нет с Ними никто Не работал есть биллдеры из сквер билдера значит Два популярных из киева из квиддира первый эскуировал

428
01:14:33.240 --> 01:14:34.109
Михаил Непряхин: ну и

429
01:14:39.340 --> 01:14:41.910
Михаил Непряхин: довольно популярен значит

430
01:14:42.600 --> 01:14:55.689
Михаил Непряхин: вот Мне тут конечно беда я закрываю Год значит семь тысяч звездочек довольно популярная Библиотека но вот даже по Годам видно что она старая и она Не обновляется

431
01:14:56.240 --> 01:15:07.060
Михаил Непряхин: А для скриж билдера ну может быть конечно он уже законченный и с ним все хорошо но короче заброшенная библиотека но очень часто используется на проектах

432
01:15:08.880 --> 01:15:23.630
Михаил Непряхин: ну в общем-то смотрите тут вот вместо того чтобы писать чистый эскель можно использовать биллеры и вот в таком плане значит что вот селек Мы пишем конкретно даже вот уже Внутри селекта аргументом типа Звездочку

433
01:15:23.710 --> 01:15:32.929
Михаил Непряхин: фром вот так вот пишется Там то же самое ну Ради, джоинов чаще всего используют в библиотеке, чтобы попроще было как-то

434
01:15:33.070 --> 01:15:42.550
Михаил Непряхин: а ну как будто бы кажется, людям что через, биллдеры оно будет, Выглядеть. Читаеме чем, когда вот

435
01:15:42.710 --> 01:15:51.049
Михаил Непряхин: просто Мы Будем получать вот такой запрос короче говоря биллдеры могут Сбиудить вот этот вот наш, скрытый запрос

436
01:15:52.130 --> 01:16:02.360
Михаил Непряхин: и на выходе У билдера Всегда это вот строка которую Мы потом передаем вот сюда хоть, какую-нибудь

437
01:16:03.010 --> 01:16:12.620
Михаил Непряхин: без транзакции вот сюда который Мы потом передаем то есть вот эту строку можно заранее Еще Сбилдить дополнительной библиотекой

438
01:16:14.030 --> 01:16:19.650
Михаил Непряхин: и интерес представляет только и а билдинг

439
01:16:20.750 --> 01:16:38.010
Михаил Непряхин: бабачки инсертов вот когда надо вставить в таблицу типа миллионы строк тогда биллдер оказывается ну довольно полезно и удобен. Во всех. Остальных Случаях с Голым и с крылем работать ээ Лучше и приятнее ну кроме сквирова есть еще вторая библиотека иголку

440
01:16:38.240 --> 01:16:41.590
Михаил Непряхин: которая все-таки хоть, как-то а поддерживается

441
01:16:42.660 --> 01:16:51.189
Михаил Непряхин: и развивается и возможности у нее Гораздо больше чем из Купева Но на менее популярном Эти Две тысячи Шестьсот звездочек но она хотя Бы как-то

442
01:16:52.180 --> 01:17:10.220
Михаил Непряхин: да ну тоже Заброшенное оказывается ну короче говоря биллдеры как видите что-то хорошее они какие-то заброшенные и

443
01:17:10.850 --> 01:17:18.819
Михаил Непряхин: а значит где я использую голку Там где мне надо ставить много строк значит вот пример с иннивертом

444
01:17:20.350 --> 01:17:25.339
Михаил Непряхин: Мне в конечном итоге смотрите я все равно буду работать сикзеком

445
01:17:25.600 --> 01:17:31.720
Михаил Непряхин: просто для экзотика Мне нужно Сбиудить вот этот вот эсквель большой, длинный

446
01:17:32.190 --> 01:17:36.689
Михаил Непряхин: значит А Сейчас я его запишу найд

447
01:17:43.290 --> 01:17:44.919
Михаил Непряхин: запуститься не забывайте

448
01:17:49.930 --> 01:17:56.449
Михаил Непряхин: так шастаться Без Прыг коннекшн мне Он не нужен ээ И здесь дело ну

449
01:18:21.210 --> 01:18:27.129
Михаил Непряхин: ну вот короче говоря и я хочу сделать и Ни черт

450
01:18:27.570 --> 01:18:30.960
Михаил Непряхин: аа трех строк значит У меня, Есть Таблица юзеры

451
01:18:31.530 --> 01:18:40.199
Михаил Непряхин: и я хочу вставить э, три пользователя с именем Или с Возрастом вот элис двадцать боб тридцать чарли сорок

452
01:18:40.890 --> 01:18:43.900
Михаил Непряхин: и для того чтобы не континировать Строки.

453
01:18:44.080 --> 01:18:50.809
Михаил Непряхин: И получить, и гранирование

454
01:18:51.420 --> 01:19:01.240
Михаил Непряхин: То есть смотрите я же эти данные от пользователей получаю да например, пользователь у меня регистрируется и типа говорит что вот в поле он там в браузер в бил элис я эти данные получил

455
01:19:01.490 --> 01:19:12.439
Михаил Непряхин: и чтобы он туда ни проббросил какую-то искали запрос не сделать какую-то инъекцию То есть это вид А Так значит есть такой вид А Так кто называется из Скю венеции

456
01:19:12.440 --> 01:19:26.650
Михаил Непряхин: когда Мы можем от пользователя получить, данные не провалидировать их и сразу, вставлять данные и тем самым получить, исколеникцию ну по запросу вот у меня, в десятом комнате есть примеры из кенеции значит Там под капотом

457
01:19:26.650 --> 01:19:34.949
Михаил Непряхин: происходит экранирование всех опасных символов и в конечном итоге Мы имеем безопасный Исковый запрос который просто передаем на

458
01:19:34.960 --> 01:19:36.719
Михаил Непряхин: в Наш прогрекс и выполняем

459
01:19:36.810 --> 01:19:49.149
Михаил Непряхин: и вот вот с помощью такого, вот нехитрого Кода Мы получаем в итоге вот Инженер инту юзерс в кавычках и Вот эти вэльюс видите они уже подставлены

460
01:19:49.450 --> 01:19:53.610
Михаил Непряхин: и их тут может быть типа полмиллиона

461
01:19:54.030 --> 01:19:57.310
Михаил Непряхин: Вот чтобы не заниматься конкретинацией строк

462
01:19:58.020 --> 01:20:17.719
Михаил Непряхин: а Потому что в противном случае это же вам пришлось бы руками писать значит вот есть биудель Которые позволяют это делать Поэтому просто знать о Их возможностях и Их наличии важно когда вы вдруг захотите, работать Там с большим количеством министертов алгаритов что-нибудь такое вот но на селектах

463
01:20:17.900 --> 01:20:26.700
Михаил Непряхин: они скорее не нужны чем нужны потому, что смотрите вот Сейчас тот Вернул вот селект

464
01:20:27.380 --> 01:20:35.240
Михаил Непряхин: значит Мы говорим, что фром юзерс Там селект вот это Это где ну и значит у нас

465
01:20:35.880 --> 01:20:44.609
Михаил Непряхин: Это будет и значит должен быть возраст больше Двадцати гетто я типа гейтзен

466
01:20:45.010 --> 01:20:52.369
Михаил Непряхин: эко ану типа больше или равно двадцати вот и имя должно быть и квол, элис

467
01:20:52.620 --> 01:21:03.229
Михаил Непряхин: ну типа видите как бы читается как будто бы но мало того вы искрыли должны знать выше и вот этот вот язык запроса нужно знать потому Что он тут все Там ведь их

468
01:21:03.510 --> 01:21:21.890
Михаил Непряхин: на Пустых интерфейсах короче там в Веселух вообще тут Ошибки бывают прямо. Жесточайшие, То есть как бы я Вот много с Этой фигней работал еще более-менее как бы ориентируясь на когда Там какой-то человек Залазит кто Там дело не имел с биллерами и это прям ему очень больно вот это читать и важно почитать делать какие-то Правки

469
01:21:22.580 --> 01:21:29.789
Михаил Непряхин: Или Искать Баги Поэтому институты уордер еще Добавляются что имя и дз Мы добавляем короче

470
01:21:30.600 --> 01:21:43.679
Михаил Непряхин: все Кроме Сложных. Больших. Инертов делается просто с помощью обычного, изкрыли запроса если вдруг там оправдано действительно вот эту вот чтобы кон континентацию не делать то можно сделать с помощью билдера

471
01:21:44.180 --> 01:21:53.220
Михаил Непряхин: вот Джульеттап дейд ну. Вот так вот обдеет выглядит где-то Например, надоелит Модели тут, покороче

472
01:21:53.640 --> 01:22:02.510
Михаил Непряхин: вот Есть тут, у меня пример сидера значит вот допустим я хочу Фейковыми, данными забить таблицу когда то, бывает нужно

473
01:22:03.110 --> 01:22:13.400
Михаил Непряхин: и здесь Действительно Удобно использовать биллдер потому что У Меня, большое количество строк и вот как Бы я Малым Количеством Кода могу

474
01:22:14.190 --> 01:22:20.810
Михаил Непряхин: сделайте инерт этих таблиц то, Есть вот эту тысячу строк фейковых данных сделал

475
01:22:21.600 --> 01:22:32.390
Михаил Непряхин: получил, из них и кель всего здесь у меня уже иск есть я его в викке, передаю и у меня эти тысячи строк улетает одним Запросом в базу,

476
01:22:32.940 --> 01:22:35.220
Михаил Непряхин: Вот ну и работать быстро.

477
01:22:36.170 --> 01:22:42.849
Михаил Непряхин: Аа Так значит с Голку все ну Давайте еще Искренне к с явлениям значит к примерчик

478
01:22:43.560 --> 01:22:47.589
Михаил Непряхин: ну. Вот это надо запускать конечно надо трогать руками

479
01:22:48.340 --> 01:23:02.230
Михаил Непряхин: Мы Же представим что Вот нам пользователь сослал инъекцию искрыли-некцию То есть кавычку Там только запятой потом берет идро, и от нашу таблицу Пользователей и дальше типа все комментарий

480
01:23:02.360 --> 01:23:09.509
Михаил Непряхин: вот Если Мы Возьмем и этот наш, код полученный от пользователя

481
01:23:09.870 --> 01:23:14.949
Михаил Непряхин: вставим в Эскюэль Не с помощью плейхолдера Номер Один

482
01:23:15.240 --> 01:23:19.750
Михаил Непряхин: ровнос Номер Один то есть вот Это поиск, холдер вот он экранирует данные

483
01:23:19.900 --> 01:23:25.169
Михаил Непряхин: если мы просто его как виде строки вставим Ну или то же самое что вот

484
01:23:25.340 --> 01:23:28.520
Михаил Непряхин: Через плюс мы это сделаем просто так сказал катенируем

485
01:23:29.160 --> 01:23:42.919
Михаил Непряхин: то мы получим сквелиннекцию и у нас таблица нпнется запрос в итоге будет такое что вот селект типа достань все из таблицы кровь в профайл где имя равно

486
01:23:43.460 --> 01:23:44.800
Михаил Непряхин: а такое-то

487
01:23:44.970 --> 01:23:56.200
Михаил Непряхин: потом точка запятой последующая инструкция а следующая инструкция Дропнем всю таблицу с профилями а все что остальное там комментарий

488
01:23:56.880 --> 01:24:07.030
Михаил Непряхин: вот и Поэтому очень важно не забывать использовать плейхолдеры

489
01:24:07.100 --> 01:24:15.770
Михаил Непряхин: Доллар один ну и они там Еще же увеличиваются то есть все они должны быть там синклементом плюс один плюс один плюс один плюс один

490
01:24:15.770 --> 01:24:30.690
Михаил Непряхин: вот Поэтому когда-то если вы это руками будете делать и больше поставлять большое количество строк мало того вам надо инкриминировать ну и конкретировать совета а гулку взоваться это все сделают то есть если вы передадите вот этот плохой код

491
01:24:31.440 --> 01:24:33.570
Михаил Непряхин: в гулку Ммм!

492
01:24:33.700 --> 01:24:42.720
Михаил Непряхин: Тысячу ну! Тут селект профиль да где нейм равен вот Этот нукаж то же самое Значит на выходе Будет запрос Выглядеть. Вот Так вот

493
01:24:43.400 --> 01:24:51.430
Михаил Непряхин: Вр короче вот Все Что передал пользователю вот эту инъекцию она вся Обернулась А вот здесь

494
01:24:52.330 --> 01:24:54.269
Михаил Непряхин: вот она кавычка меня вернулась

495
01:24:54.470 --> 01:25:03.809
Михаил Непряхин: то есть вот это вот все оно будет просто как одно поле рассматриваться видите как бы и инъекции не произойдет

496
01:25:04.930 --> 01:25:16.249
Михаил Непряхин: и то же самое когда Мы делаем через поездхолдер ну здесь Мы не можем посмотреть потому что это передается уже туда Внутри библиотеки но как бы Поверьте мне Там и

497
01:25:16.590 --> 01:25:23.240
Михаил Непряхин: тоже Будет все нормально То Есть плей-холдер Он экранирует, подобным Же образом все инъекции

498
01:25:24.320 --> 01:25:32.569
Михаил Непряхин: как Есть пример как создать синдро записи где есть связи между улицами, и по меньшим ключом да естественно есть пример значит

499
01:25:32.730 --> 01:25:34.600
Михаил Непряхин: вот пример вот

500
01:25:38.110 --> 01:25:41.850
Михаил Непряхин: а вот сидор, вот здесь у нас как Раз, было заполнение,

501
01:25:42.040 --> 01:25:49.010
Михаил Непряхин: данными чуть, позже посмотрим ну хорошо вот здесь вот как Раз, то

502
01:25:49.430 --> 01:25:53.180
Михаил Непряхин: несколько таблиц и там есть внешние Ключи

503
01:25:56.950 --> 01:25:58.420
Михаил Непряхин: тек

504
01:26:01.750 --> 01:26:10.600
Михаил Непряхин: дальше в следующий момент значит У нас эээ миграции они

505
01:26:10.910 --> 01:26:15.710
Михаил Непряхин: уже Я жду к эмиграции да Давайте Про миграцию Поговорим значит

506
01:26:19.150 --> 01:26:25.239
Михаил Непряхин: во Первых Есть такая философия инфостраг чая скотт то Есть инфраструктура как Кот

507
01:26:25.420 --> 01:26:32.979
Михаил Непряхин: и в рамках Этой же философии то как выглядит наша база

508
01:26:33.290 --> 01:26:36.149
Михаил Непряхин: оно должно быть записано отражено в коня

509
01:26:36.960 --> 01:26:44.350
Михаил Непряхин: и чтобы удобно с этим работать и наблюдать эволюцию придумали миграции

510
01:26:45.950 --> 01:26:52.480
Михаил Непряхин: то. Есть Мы конечно же можем в коде с помощью экзеков но от какой-то здесь У меня были примеры

511
01:26:52.610 --> 01:27:09.459
Михаил Непряхин: создавать таблицы создавать индексы ну вот можно создать таблицу таким образом, по таблице, создастся то есть там создали таблицу если она не существует Назови ее юзерс и тут айдишни будет праймериз и возраст

512
01:27:09.680 --> 01:27:19.110
Михаил Непряхин: вот но это неправильно а правильно Создавать вот такие вот файлики которых

513
01:27:20.950 --> 01:27:25.169
Михаил Непряхин: ну Отображать эволюцию изменения наших таблиц

514
01:27:26.650 --> 01:27:38.980
Михаил Непряхин: значит мы будем работать с библиотекой мигрейд Сейчас мы найдем Ца Написано на гоу и

515
01:27:39.940 --> 01:27:42.929
Михаил Непряхин: ну также на Других языках тоже кто использует

516
01:27:43.180 --> 01:27:50.369
Михаил Непряхин: на самом деле для Миграции Очень. Много разных библиотек эээ в Джава Два инструмента. Популярных есть для миграции

517
01:27:50.600 --> 01:28:05.370
Михаил Непряхин: Поэтому если вы знаете Какой Это инструмент миграции то Крыш может его юзать ну Там в пять проектах Или если другого инструмента Нет вот если вы Приходите на Проект То Там скорее всего будет мигрейт значит

518
01:28:05.590 --> 01:28:10.690
Михаил Непряхин: Это Сивай То есть, комнат военно-прикешен в котором

519
01:28:10.890 --> 01:28:26.309
Михаил Непряхин: ну самая главная функция это в миграции накатить миграции откатить Ночью покажи мигрейт вот значит устанавливается,

520
01:28:27.110 --> 01:28:32.869
Михаил Непряхин: с Помощью гоуин. Стал ну Там здесь вот здесь инструкция здесь есть

521
01:28:37.410 --> 01:28:47.089
Михаил Непряхин: сэмэк ментыш а и у меня она есть в этом гоу озера в май файли

522
01:28:47.740 --> 01:28:52.999
Михаил Непряхин: а вот мигрэйн стал вот просто устанавливаете вот Этой строкой

523
01:28:53.380 --> 01:28:58.929
Михаил Непряхин: библиотека миграции поддерживает не Только погре а также другие базы данных

524
01:28:59.180 --> 01:29:08.999
Михаил Непряхин: крик хаус Май скриэль ну конечно Там много много много разных баз, вот но вот вы можете указать с Тэгами это стратегия

525
01:29:09.520 --> 01:29:26.630
Михаил Непряхин: и и вот в интеграционных тестах я так передаю теге

526
01:29:27.390 --> 01:29:39.500
Михаил Непряхин: а чтобы Только интеграционные тесты запустились а здесь просто тэк витепоскас и грубо говоря в бинарнике оказывается Только то что нужно для библиотеки пользы

527
01:29:40.380 --> 01:29:44.469
Михаил Непряхин: вот оказывается у вас бинарник в папке голубин

528
01:29:44.670 --> 01:29:59.600
Михаил Непряхин: и дальше вот вы можете ее называться мигрейт значит основные функции, это создать миграцию то есть создать вот эти вот Два файла значит один накатить миграцию а второй откатить миграцию

529
01:30:00.970 --> 01:30:09.630
Михаил Непряхин: дальше гулту Перейти к конкретной версии ну версия здесь это вот она автоматически это просто

530
01:30:09.870 --> 01:30:19.530
Михаил Непряхин: Год месяц время секунды ты и получается номер миграции и и апп, это

531
01:30:19.650 --> 01:30:27.000
Михаил Непряхин: накатите миграции вот сколько есть миграции в пробке накатить их все даун откатить их все дроп

532
01:30:27.380 --> 01:30:36.400
Михаил Непряхин: и не использует роб форс это если какие-то проблемы с миграциями произошли

533
01:30:36.840 --> 01:30:41.729
Михаил Непряхин: и напечатать версию какая сейчас версия эмиграции

534
01:30:42.850 --> 01:30:53.249
Михаил Непряхин: м ну нас больше всего интересует апп и даун то есть накатите эмиграции откатите эмиграции когда вы пишете миграцию от ну во Первых Мы ведем транзакции

535
01:30:54.410 --> 01:31:01.559
Михаил Непряхин: зачем для того чтобы если, вдруг несколько Инстинктов решили там накатывать миграции для того чтобы все-таки они были атомарными

536
01:31:02.100 --> 01:31:07.029
Михаил Непряхин: и Мы здесь создаем таблицу со звездами индекс

537
01:31:07.360 --> 01:31:13.740
Михаил Непряхин: и Мы создаем противоположную э миграцию операцию

538
01:31:13.860 --> 01:31:18.569
Михаил Непряхин: Мы тоже в транзакции группы индекс дропаем базу,

539
01:31:18.670 --> 01:31:26.590
Михаил Непряхин: ну можно было просто Дрогнуть базу, так как бы для порядка индекс так друг над Собой и и

540
01:31:26.880 --> 01:31:31.929
Михаил Непряхин: что у нас тут какая Разница есть душа

541
01:31:33.680 --> 01:31:40.970
Михаил Непряхин: а на другую я к другую ожидаю я тут создаю базу, таблицу в эпоху создаю десять сдвиг Таблице банана

542
01:31:41.360 --> 01:31:51.889
Михаил Непряхин: вот и короче говоря я тебе покажу как телефоны создавать вот есть, в майк файли

543
01:31:52.220 --> 01:32:03.880
Михаил Непряхин: Удобная вот мне играет клеет а майкл греет значит делаете мэйк мигрид понимаете час

544
01:32:18.640 --> 01:32:22.569
Михаил Непряхин: вводится название базы данных о миграции

545
01:32:24.370 --> 01:32:31.950
Михаил Непряхин: вот вот создаются два Файма и где а оно-то создалось

546
01:32:37.990 --> 01:32:51.639
Михаил Непряхин: да оно здесь создалось да вот создается короче два файла и вы просто руками тут, вписываете ну то что вы хотите, изменить в ваших таблицах и обратную операцию этому действию

547
01:32:52.110 --> 01:32:57.149
Михаил Непряхин: и Таким образом у вас получается ну вот у нас здесь в проекте да то есть

548
01:32:57.360 --> 01:33:02.470
Михаил Непряхин: вот еномы Мы создали табрид мы создали

549
01:33:03.030 --> 01:33:13.089
Михаил Непряхин: потом мы что сделали потом изменили таблицу и мы заменили таблицу профаю значит мы добавили колонку контакты с джейсоном би

550
01:33:13.380 --> 01:33:20.049
Михаил Непряхин: и потом Мы создали еще Одну таблицу с какими-то Свойствами вот

551
01:33:20.710 --> 01:33:30.539
Михаил Непряхин: с ключом ее идей и какими-то Трями и таким образом У нас перед глазами есть история миграции как будто Что происходило с базой данных

552
01:33:31.590 --> 01:33:36.250
Михаил Непряхин: ну вот эти вот дауны конечно это так скорее знаете типом

553
01:33:36.990 --> 01:33:53.469
Михаил Непряхин: ну в реальной жизни никто да он не делает на продуктовой базе данных просто как Бы так принято писать ну скорее это Для разработки Для локальной Чтобы быстро чего-нибудь откатить или вообще быстро все откатить и быстро все накатить вот Как я это делаю в интеграционных тестах то есть тут для того чтобы Сбросить миграции Я например,

554
01:33:53.480 --> 01:34:06.080
Михаил Непряхин: просто ведь делаю все даун и все ап и получается Что Я отменяюсь эмиграции а потом снова их накатываю и у Меня получается чистая база данных

555
01:34:06.080 --> 01:34:18.400
Михаил Непряхин: потому что когда я откатываю вот я все тропаю тропаю андропою и все у Меня получается Чисто базданных а потом опять, накатываю на катор накатываю и Она У Меня опять, возданных с этими данными Которые Нужны

556
01:34:19.060 --> 01:34:22.430
Михаил Непряхин: Так Сейчас Давайте зайдем да

557
01:34:25.740 --> 01:34:26.990
Михаил Непряхин: надо Табличку

558
01:34:55.700 --> 01:35:01.190
Михаил Непряхин: так ну вот у меня на миграции накачанным новотеки подкачу

559
01:35:01.740 --> 01:35:15.859
Михаил Непряхин: а тут также у меня есть Команда мигрэйд даун вот типа я откатился Эмиграции, сделал вот Эти даун и у Меня все таблицы на крючо Не исчезли у меня таблицы нету

560
01:35:16.570 --> 01:35:24.679
Михаил Непряхин: аа Но есть одна таблица схема микрейшенс и здесь у нее есть вот как версия и флажок дерли

561
01:35:24.940 --> 01:35:28.960
Михаил Непряхин: теперь грязные и не грязные вот потом накручи накатываю

562
01:35:29.790 --> 01:35:38.860
Михаил Непряхин: девы ап и вот методы блоге что, вот накратилось вне три эмиграции этой миграции которая была ну вот эти вот у меня как бы вот они три

563
01:35:39.690 --> 01:35:42.590
Михаил Непряхин: и таблицы

564
01:35:43.340 --> 01:35:55.299
Михаил Непряхин: что мы видим значит мы видим версию какая версия последняя вот она двадцать шестая вот она последняя и дерти фолз ну? Типа да она Не грязная типа она чистая все хорошо

565
01:35:56.940 --> 01:36:04.510
Михаил Непряхин: Случается так что мы чего нибудь косячим и Миграция Не может накатиться и тогда Здесь получается

566
01:36:04.980 --> 01:36:13.740
Михаил Непряхин: аа Дерте его тру типа она грязная что Миграция Успешно Не накатилась и для того чтобы и

567
01:36:14.700 --> 01:36:18.550
Михаил Непряхин: Ну Мы конечно просто делаем исправляем то что нам нужно

568
01:36:18.720 --> 01:36:28.220
Михаил Непряхин: и накатываем следующее дело мигрейд ап Только уже с важком слэшкомфорс

569
01:36:32.900 --> 01:36:33.940
Михаил Непряхин: шас

570
01:36:35.020 --> 01:36:46.489
Михаил Непряхин: вернее не с флажком форс а просто Грим форс и версию и она досюда докатывается, вот ну Или мы просто все Сносим

571
01:36:46.640 --> 01:36:51.529
Михаил Непряхин: делаем полностью даун и накатываем ее снова

572
01:36:52.280 --> 01:37:00.410
Михаил Непряхин: вот но для того чтобы это как бы когда вы столкнетесь с этим первый Раз просто вы все равно будете

573
01:37:01.380 --> 01:37:16.309
Михаил Непряхин: как сказать нам придется залезть вот Сюда на Эту Страничку посмотреть что Там Делать в случае Если Миграция завершилась неудачно и просто как Вы знаете что Решается это с Помощью форс и

574
01:37:17.040 --> 01:37:30.850
Михаил Непряхин: вот этот флажок если, он получил все тру То, как бы у вас там миграции все заблокированы Вы ничего не можете делать, вот Пока руками не укажете с Помощью форса к какой именно миграции вы хотите, прийти

575
01:37:31.510 --> 01:37:34.060
Михаил Непряхин: а ну перед этим мы должны эту миграцию исправить

576
01:37:34.850 --> 01:37:40.319
Михаил Непряхин: и в целом идея миграции в том что чтобы

577
01:37:42.150 --> 01:37:48.630
Михаил Непряхин: не Было Конфликтов когда несколько Людей. Работают надданной таблицей, для того чтобы видеть

578
01:37:49.730 --> 01:37:55.250
Михаил Непряхин: вот этот порядок в каких ну кто какие изменения исторические применял

579
01:37:55.380 --> 01:38:09.969
Михаил Непряхин: и это такой подход скорее и

580
01:38:10.090 --> 01:38:25.570
Михаил Непряхин: есть еще гуз, библиотека такая и так

581
01:38:40.610 --> 01:38:52.190
Михаил Непряхин: не совсем, понял, откуда берутся данные которые попадают в миграции окей так для скрини границы используйтелинтер а

582
01:38:58.350 --> 01:39:06.000
Михаил Непряхин: но я форматирую, просто этим ну есть Же здесь он этот код

583
01:39:08.170 --> 01:39:23.760
Михаил Непряхин: будет Некоторый формат код просто делаю форматирование и все но вот тут Же и так подсветится эдришка и так подсветит и если здесь будет какой-то косяк и никаких Лент роттов пользователь не использует а если в провожении соединения с несколькими вазами для какого соединения Будет использоваться миграции

584
01:39:26.200 --> 01:39:31.270
Михаил Непряхин: а ну смотрите как бы у вас миграции либо их они не накатились

585
01:39:31.400 --> 01:39:36.990
Михаил Непряхин: и тогда у вас приложение Будет ошибками сыпать вы будете обращаться к каким то данным таблицам которых Нет

586
01:39:37.260 --> 01:39:45.419
Михаил Непряхин: вот и но и принято миграции встраивать в пайплайн, вся сиди

587
01:39:45.530 --> 01:40:03.139
Михаил Непряхин: и Поэтому когда у вас выкатывается, приложение автоматически выкатываются эмиграции Все которые здесь есть Поэтому если вы добавили сюда миграцию ну не может быть такого чтоб она не выкатилась она просто автоматически выкатывается и У вас база данных Всегда Находится в состоянии вот этом вот

588
01:40:03.820 --> 01:40:04.570
Михаил Непряхин: а и

589
01:40:05.110 --> 01:40:13.830
Михаил Непряхин: и когда вы вокально запускаете хотите, проверить вы также Тоже делаете миграции Но вот Не играет апп, ну вот как Раз, здесь у меня все эти команды

590
01:40:13.890 --> 01:40:25.900
Михаил Непряхин: вот мегаэтап, миграй даун Которыми мне часто приходится пользоваться. Они просто вот Из этой папки берут и все накатывают и вы Тоже, можете проверить там вся убедиться но работать не работает

591
01:40:26.800 --> 01:40:30.150
Михаил Непряхин: интеграционные тесты автоматически тоже накатываются в Эмиграции.

592
01:40:33.710 --> 01:40:37.260
Константин Шум: То если идет, приложение Два соединения две конфигурации

593
01:40:37.380 --> 01:40:40.030
Константин Шум: то есть есть один хост есть второй хост

594
01:40:40.300 --> 01:40:43.729
Константин Шум: и как в миграциях указать конкретное соединение.

595
01:40:44.250 --> 01:40:50.960
Михаил Непряхин: А просто на уровне ся сиди смотрите там как выглядит история вот

596
01:40:51.930 --> 01:41:02.309
Михаил Непряхин: вот микроэтап нам надо сделать здесь передается урок ээ где находится база данных а он у меня здесь вот у роботов просто

597
01:41:02.580 --> 01:41:03.510
Михаил Непряхин: такой вот

598
01:41:03.710 --> 01:41:18.469
Михаил Непряхин: соответственно если, вам надо на оба, хоста накатить миграции вы в поеплане просто сперва на один хост их накатываете а потом на второй хвост их накатываете и они у вас в консистентном одинаковом состоянии находятся

599
01:41:19.160 --> 01:41:23.060
Михаил Непряхин: ну. Это в любом Случае в Пайплане должно Быть Встроено

600
01:41:27.050 --> 01:41:37.580
Михаил Непряхин: Так да Пусть Даже Мастера свои. В любом Случае надо как-то ну да ну короче во все слои вы естественно тоже надо накатить миграции то есть это понятно что

601
01:41:37.620 --> 01:41:48.640
Михаил Непряхин: это будет ээ естественно это будет не атамарно сделано тут по очереди сделано может случиться ситуация, мастер выкатили свое, ее почему-то не Получилось вот но это уже разруливать руками придется

602
01:41:49.820 --> 01:41:54.560
Михаил Непряхин: эмиграция нужна для перемещения базы из одного, места такой не не смотрите вот

603
01:41:54.780 --> 01:41:58.629
Михаил Непряхин: здесь короче не про это речь называется миграция

604
01:41:59.040 --> 01:42:18.950
Михаил Непряхин: но это про миграцию не и

605
01:42:18.970 --> 01:42:35.799
Михаил Непряхин: и тоже там поднять такую же базу, данных вам же мало миграции накатить вам надо Еще данные перелить и Поэтому как бы речь, именно просто про Состояние таблиц полей динамов.

606
01:42:37.230 --> 01:42:53.920
Михаил Непряхин: Когда вы создадите другую Базу в Другом месте То вам в любом случае придется данные это скопировать но там Поэтому это не про это то, есть речь именно про состояние чтобы как бы отобразить вот это состояние таблиц в коде

607
01:42:56.140 --> 01:42:59.620
Михаил Непряхин: так для Редактирования Скорее да да

608
01:43:05.050 --> 01:43:15.310
Михаил Непряхин: что это такое короче с этим хоть как. Надо поработать то есть Ну вот попробуйте что нибудь подобавляете таблицы

609
01:43:15.980 --> 01:43:34.760
Михаил Непряхин: а подропать их какие-то колонки удалять и да и а

610
01:43:36.020 --> 01:43:48.619
Михаил Непряхин: так с миграциями понимаю что с миграциями Здесь немножко сложновато и Здесь придется да придется все равно зайти вот сюда вот это вот прочитать найти здесь где там

611
01:43:52.770 --> 01:44:01.170
Михаил Непряхин: википедия у них это есть как там что называется дис кашинс шашлыми

612
01:44:01.430 --> 01:44:02.960
Михаил Непряхин: ну наверное вот в ряд мире

613
01:44:03.640 --> 01:44:05.580
Михаил Непряхин: ой Нет не людьми как это

614
01:44:09.620 --> 01:44:11.920
Михаил Непряхин: ну хорошо здесь у них внутри есть ссылки

615
01:44:12.190 --> 01:44:22.699
Михаил Непряхин: а У них тут по-моему Внутри какая-то своя это так вот есть как с этим работать и

616
01:44:24.220 --> 01:44:28.580
Михаил Непряхин: если, вы просто как бы вот разрабатываете вам не надо много файлов

617
01:44:28.730 --> 01:44:43.549
Михаил Непряхин: то есть вы там внутри себя пока наоборот не запушили вы не делите это на разные файлы но когда уже у вас база оказывается. Запушенная на про ну то приходится, изменение Делать с помощью вот этих миграций

618
01:44:43.550 --> 01:44:51.970
Михаил Непряхин: ну есть еще практика когда все эмиграции там проходят несколько лет для того чтобы не. Разбираться в этих больших количествах файлов

619
01:44:52.020 --> 01:44:56.609
Михаил Непряхин: их просто схлопывают в одном состоянии какое Сейчас. И оставляют

620
01:44:56.690 --> 01:45:15.639
Михаил Непряхин: ну просто в одном файле текущей стоит чтобы видеть чего там хочешь как хульба-то выглядит потому что когда у вас все много файлов и они вот такие все черезальтеры то, не очень понятно, как бы не очень удобно это ну конечно вы просто заходите в таблицы и смотрите Что Там оно в каком состоянии Находится

621
01:45:16.350 --> 01:45:18.090
Михаил Непряхин: а Так

622
01:45:18.490 --> 01:45:30.670
Михаил Непряхин: когда я накатываю мимиграйт ап о чем я ничем не обновилась Самого отры таблицы ну вот у меня тут Две таблицы значит вот есть у меня с Профилями есть вторая таблица

623
01:45:30.830 --> 01:45:34.500
Михаил Непряхин: Проперти а вот они Там как так выглядят

624
01:45:35.670 --> 01:45:54.969
Михаил Непряхин: и для того чтобы удобнее было и

625
01:45:55.750 --> 01:46:10.189
Михаил Непряхин: попозже на следующий. Раз про пропрофилирование посмотрим ну например, хочу я запомнить базу, данных вот миллионам пользователей я говорю вот значит Тысячу, литераций, хочу и за одну, итерацию я забавляю Тысячу,

626
01:46:10.520 --> 01:46:15.420
Михаил Непряхин: о филиппом профайл база данных и

627
01:46:15.610 --> 01:46:19.919
Михаил Непряхин: так давайте, запустим тут Наверное запустится

628
01:46:24.670 --> 01:46:29.209
Михаил Непряхин: вот ну там какое то время Сейчас понадобится чтоб оно в базу записалось

629
01:46:31.940 --> 01:46:40.749
Михаил Непряхин: так сама миграция раскатывает дефолтную базу данных на сервере с набором таблиц промеродоходными данными из Родмина Ну да

630
01:46:44.830 --> 01:46:50.059
Михаил Непряхин: вот но двадцать, две секунды очень миллион юзеров у меня вставлялся двадцать, две секунды

631
01:46:50.780 --> 01:46:58.000
Михаил Непряхин: мне этот еще профайл Снимал при этом ну и все и У нас получается Что Сейчас есть, таблица а

632
01:46:58.310 --> 01:47:03.180
Михаил Непряхин: а заполненная рандомными данными с миллионами пользователей

633
01:47:03.180 --> 01:47:18.429
Михаил Непряхин: и таким образом вы можете делать даже какие то нагрузочные тесты ну в плане смотрите Всегда Интересно если, вы вот делаете изменения в какой то большой таблице

634
01:47:18.620 --> 01:47:30.399
Михаил Непряхин: то важно бы такое же количество строк сколько есть напротив у себя вокальное поднять то есть там с какими-то Фейковыми, данными, а дальше уже вы Можете делать.

635
01:47:30.610 --> 01:47:33.759
Михаил Непряхин: На запросы Сейчас этот вид Строка

636
01:47:34.360 --> 01:47:54.479
Михаил Непряхин: вот значит дальше вы делаете, селект а Так чего бы там вернее так, не затевар эйдж больше

637
01:47:54.970 --> 01:48:01.120
Михаил Непряхин: так, что больше восемнадцати статус акций ну допустим такой запрос так, и

638
01:48:04.400 --> 01:48:13.060
Михаил Непряхин: Ммм фромнадза у меня эта база данных профайл

639
01:48:20.000 --> 01:48:32.190
Михаил Непряхин: Так ну и вот и дальше уже вы можете добавлять анавайс Оликсплей новостяк сплэйн вот и

640
01:48:32.490 --> 01:48:42.700
Михаил Непряхин: план запроса соответственно понимать и

641
01:48:43.620 --> 01:48:56.989
Михаил Непряхин: ну в любом Случае Это рано Или поздно понадобится нас обеих Тоже, спрашивают как профилировать базу, данных вот Это либо эксплейн запрос когда Мы видим план запроса как он будет выполняться базой данных

642
01:48:57.130 --> 01:49:12.049
Михаил Непряхин: а сколько Времени он занимает нуу в попугаях он сколько Времени занимает и еще кибер фитчан вайс это когда выполняется реальный запрос и мы видим реальный План то есть как Бы мало того теоретическую оценку мы видим прям вот что план был такой

643
01:49:12.440 --> 01:49:25.490
Михаил Непряхин: а фактическое время выполнение, было шестьдесят семь или секунд суть как бы тут, реальное время выполнения прикольнее и соответственно вы Ими за северную Базу данных можете понимать как Лучше сделать изменения

644
01:49:26.210 --> 01:49:35.290
Михаил Непряхин: с данными для того чтобы не прострелить себе, ногу, и чтобы действительно было быстро вот а именно, по плану ну мы здесь не будем, разбираться, это уже

645
01:49:36.180 --> 01:49:49.739
Михаил Непряхин: надо изучать пасгрем и

646
01:49:49.770 --> 01:49:58.070
Михаил Непряхин: в общем там Можно это изучать бесконечно есть отдельная Профессия дибией кто занимается Только Базами данных

647
01:49:59.440 --> 01:50:02.680
Михаил Непряхин: а значит ты немножко. Простите Посмотрим как он тут устроен

648
01:50:03.610 --> 01:50:17.459
Михаил Непряхин: Так Ну Создаю коннекшн не пул просто обычный. Коннекшн делаю количество федерации сколько украл Переменной и генериру Бач Профилей

649
01:50:17.960 --> 01:50:24.860
Михаил Непряхин: ну вернее из права генерал это адишники и потом эти предвидюшники, в бач профиля Их и генериру

650
01:50:25.140 --> 01:50:27.370
Михаил Непряхин: потом я Их всех, ин сердю.

651
01:50:27.740 --> 01:50:34.709
Михаил Непряхин: И добавляю к Ним эти свойства во Второй таблицу и Тоже. Инртю а вот

652
01:50:34.900 --> 01:50:37.649
Михаил Непряхин: а конкретно как я профиль и создаю

653
01:50:38.030 --> 01:50:48.479
Михаил Непряхин: Это делается с помощью голку видите здесь рекорд то есть прямо, вот конкретные с помощью Фейковых данных вот это библиотека для генерации Фейковых данных

654
01:50:49.640 --> 01:50:59.600
Михаил Непряхин: ну удобное рается мне создаете бачи со свойствами создали бычи вот ну а сами э вызовы

655
01:50:59.710 --> 01:51:05.080
Михаил Непряхин: они контакт блабла это здесь для Джейсон Би,

656
01:51:06.250 --> 01:51:25.109
Михаил Непряхин: так это неинтересный ин, Стюард происходит тоже Кстати в голку через голку я генерирую, самую сквель вот читайте у Меня Там тысяча, вбаче я сюда Передвию Бач значит Я Тысячу Профиля здесь Передаю Поучаю скеель Делаю экзек и записываю Их

657
01:51:25.530 --> 01:51:33.110
Михаил Непряхин: Вот и допустим видя Как в голку выглядит когда Мы Хотим, работать Вот с какими нибудь

658
01:51:33.630 --> 01:51:41.639
Михаил Непряхин: Вот это Сарреем я Полчаса работаю с массивом опять. Же свой синтаксис и и

659
01:51:43.120 --> 01:51:48.259
Михаил Непряхин: это оправдано только ну вот когда я Допустим сидер пишу если я пишу

660
01:51:49.040 --> 01:52:05.510
Михаил Непряхин: и продакшнэнди код то уголку я никогда не использую потому что ну редко когда надо такие бочами чего-то вставлять бывает если надо тогда конечно голкуюзе или только на интерты а так во всех остальных случаях это

661
01:52:06.120 --> 01:52:15.170
Михаил Непряхин: ну вот кричит у Меня да Что здесь обычно не сказали запрос ну. Так Что надо не вставить в таблицу профайл

662
01:52:15.460 --> 01:52:23.200
Михаил Непряхин: этире поля они все соответственно вот через плейхолдеры через знак доллара

663
01:52:24.760 --> 01:52:32.840
Михаил Непряхин: так контакты они у меня Джейсон би насколько я понимаю Раз я актриса не Всегда, заталкиваю а Сейчас глянем

664
01:52:33.460 --> 01:52:40.740
Михаил Непряхин: да контакты Джейсон, би Поэтому я их сюда оставляю уже там видеть жельсона.

665
01:52:41.220 --> 01:52:56.049
Михаил Непряхин: И дальше эти аргументы я сперва сам и сквель передаю а потом уже эти аргументы и вот эти все айди ими возраст они подставятся вот эти пейсхолдеры

666
01:52:56.690 --> 01:52:58.700
Михаил Непряхин: и в базы данных ставится

667
01:52:59.690 --> 01:53:08.930
Михаил Непряхин: и видите как бы вот допустим зачем я здесььюзен кэлвин си которая будет, что-то генерить Потому Что ну здесь и Так Это все лаконично и мало Написано

668
01:53:09.430 --> 01:53:23.989
Михаил Непряхин: ну У Меня здесь из двух таблицы стоит создание профиля Поэтому я здесь еще создаю свойство так же Час происхолдера и в экзамене потом записываю удаление профайрова тоже простое короткое

669
01:53:24.550 --> 01:53:32.450
Михаил Непряхин: ну у меня здесь Софт делит мягкое Удаление Не Чарльз делито чарльза бдейт и тэт

670
01:53:33.280 --> 01:53:37.289
Михаил Непряхин: часто бывает Так что Мы данные никогда Не удаляем а просто помещаем что они удалены

671
01:53:37.460 --> 01:53:43.609
Михаил Непряхин: ну если там по Закону к нам Обратились и сказали удалите жестко То давную жесткудали

672
01:53:45.580 --> 01:53:57.020
Михаил Непряхин: так с гетом ну как Я уже показывал здесь довольно много текста потому что мы должны подготовить агаты ложку

673
01:53:57.150 --> 01:54:05.630
Михаил Непряхин: в которую данные мы загрузим а потом из Этой детошки мы еще и должны сделать уже переменная

674
01:54:06.340 --> 01:54:12.610
Михаил Непряхин: и я их сразу тут с Указателями делаю и передаю

675
01:54:24.310 --> 01:54:27.749
Михаил Непряхин: вот и профайл иди

676
01:54:28.850 --> 01:54:39.540
Михаил Непряхин: профайлайди а ну да я тут конкретно один профайл достаю соответственно у Меня, тут один фейсхолдер вот он где айди равно вот этому моему прохай войди

677
01:54:39.910 --> 01:54:46.180
Михаил Непряхин: и дальше у Меня, возвращается профиль и я его соответственно сканирую, вот в эти вот тесты

678
01:54:46.400 --> 01:54:59.440
Михаил Непряхин: можно конечно и вот так вот все через, запятую здесь вот сюда вот передать но как, бы вот это вот читается немножечко хуже чем вот это вот поэтому я предпочитаю вот так вот ну и присутствует удобно ведь и тут, же важен. Порядок

679
01:54:59.560 --> 01:55:04.359
Михаил Непряхин: Поэтому Ммм если. Вы нарушите этот порядок решка ничего не Подсветит

680
01:55:04.530 --> 01:55:12.039
Михаил Непряхин: работать ничего не Будет вот Поэтому я Предпочитаю. Чтобы визуально можно было на одном Экране, сравнить

681
01:55:12.270 --> 01:55:17.280
Михаил Непряхин: по полям все ли нормально ну понятно дело Что Ошибка Будет просто ничего Не будет работать Но

682
01:55:17.710 --> 01:55:20.569
Михаил Непряхин: тем не Менее просто для удобства

683
01:55:21.500 --> 01:55:33.949
Михаил Непряхин: Так Ну, и все дальше еще тут Из особенностей значит у нас есть Ошибка ир ну роуз Это когда хороший нотаунд я просто оборачиваю свою кастную ноут фаунд

684
01:55:35.240 --> 01:55:57.430
Михаил Непряхин: для того чтобы наверх в юскейсы не протекала вот эта вот абстракция мозгивая то есть и и и

685
01:55:58.010 --> 01:56:03.250
Михаил Непряхин: и и ну это вторая таблица у меня соответственно

686
01:56:03.430 --> 01:56:07.379
Михаил Непряхин: ой не вторая версия мне надо сделать Анмаршинг,

687
01:56:07.680 --> 01:56:16.309
Михаил Непряхин: этих данных потому Что у Меня, там чесон би то есть просто я вам тут показал пример на все Случаи жизни значит здесь есть Джейсон Би

688
01:56:16.460 --> 01:56:34.179
Михаил Непряхин: здесь есть из и классная функция так ну Апдейт

689
01:56:34.390 --> 01:56:37.400
Михаил Непряхин: обладает Только особенность в том Что

690
01:56:38.490 --> 01:56:45.299
Михаил Непряхин: ну У Меня есть такой упрощенный обед типа просто, все что Ко Мне передали я это все и обновляю

691
01:56:46.970 --> 01:56:55.420
Михаил Непряхин: Ну. Тоже получается не длинный небольшой и значит Еще одна Особенность

692
01:56:56.030 --> 01:57:04.009
Михаил Непряхин: у меня все поля они все методы они умеют работать из транзакции, и Без

693
01:57:04.440 --> 01:57:19.940
Михаил Непряхин: и достигается это за счет того что я Кладу, а смотрите когда я создаю этот аа структуру нашу архитектуру

694
01:57:20.530 --> 01:57:26.689
Михаил Непряхин: а чего мне вообще где вся, Подсветка вот почему оно все слетевшее я не понимаю ты заключишь войнешь каштанно

695
01:57:38.280 --> 01:57:46.900
Михаил Непряхин: значит э смотрите когда я создаю пеликспул то вот я его получаю

696
01:57:47.310 --> 01:57:57.230
Михаил Непряхин: ну он тут создается Там Настройки передаются от этого Юзер, пасмурда хоста имя базы а и

697
01:57:57.540 --> 01:58:05.860
Михаил Непряхин: парсис дель сен и дальше создается вот Новый пул. Я его и возвращаю

698
01:58:06.060 --> 01:58:12.820
Михаил Непряхин: ну и в конце ведь ее надо его корзить Поэтому у Меня, п грекспул.

699
01:58:13.120 --> 01:58:17.760
Михаил Непряхин: Где он Там новый здесь мы закрываем в самый последний момент ну базу данные туда в конце закрывают

700
01:58:17.970 --> 01:58:19.550
Михаил Непряхин: базан самое главное

701
01:58:20.020 --> 01:58:33.790
Михаил Непряхин: и Я этот прыг с пул Я его Не использую Дальше в адаптерах а Я его Кладу в пакет транзакций то есть я инициативу транзакции

702
01:58:34.420 --> 01:58:39.779
Михаил Непряхин: и смотрите у меня здесь синглтон то есть у меня тут, есть стоит то в этой библиотеке

703
01:58:41.290 --> 01:58:49.749
Михаил Непряхин: то есть вот он пул это как бы указатель на пул коннекшенов

704
01:58:49.880 --> 01:59:01.950
Михаил Непряхин: он находится только в Этой библиотеке транзакшн а вот в пакете транзакшн и соответственно у меня методы

705
01:59:02.510 --> 01:59:10.620
Михаил Непряхин: от базы данных адапторная вот эти вот они умеют, работать и из транзакции все и без транзакции

706
01:59:11.110 --> 01:59:17.639
Михаил Непряхин: и вопрос лишь в том а в контексте, есть транзакция или Нет

707
01:59:17.860 --> 01:59:27.589
Михаил Непряхин: то есть смотреть чего откроет профайл ну Всегда, же у нас везде контекст пробрасывается Поэтому в контексте мы можем проббросить транзакцию

708
01:59:28.230 --> 01:59:40.499
Михаил Непряхин: и для того чтобы выполнить запрос наш вот Я делаю трай экстракт те икс из Контекста то есть я пытаюсь достать транзакцию из контекста

709
01:59:40.730 --> 01:59:49.890
Михаил Непряхин: если транзакция ну его здесь У Меня оказывается либо транзакция либо просто Чистый пул, коннекшнат

710
01:59:50.400 --> 01:59:54.670
Михаил Непряхин: ну транзакции тоже конечно пул, ну просто надо было как назвать на Золота

711
01:59:55.070 --> 02:00:04.319
Михаил Непряхин: и дальше выполняется егэ уже вот то Что оказывается, здесь а здесь оказывается интерфейс от игры Кьюти

712
02:00:04.620 --> 02:00:09.230
Михаил Непряхин: и просто я достаю из контекста

713
02:00:09.550 --> 02:00:21.649
Михаил Непряхин: транзакцию вот Она у меня, структура транзакции ну видите какой-то вот опять же вот вопрос был что Класть контекст ну вот транзакцию еще можно Класть контекст потому что в этом случае По-другому никак Не сделать

714
02:00:22.710 --> 02:00:31.290
Михаил Непряхин: чтобы Так же удобно было и если, удалось достать из контекста транзакцию соответственно я эту транзакцию возвращаю

715
02:00:32.140 --> 02:00:40.779
Михаил Непряхин: если, не, удалось то возвращается вот этот пул, коннекшенов который вот здесь в библиотеке вот он как стоит вот он здесь имеется

716
02:00:41.670 --> 02:00:49.219
Михаил Непряхин: и возвращается вот интерфейс с этими тремя методами нашими любимыми и с которыми мы уже и делаем все остальные вещи

717
02:00:49.690 --> 02:01:00.560
Михаил Непряхин: здесь еще в библиотеке есть флаг из юни тест для того чтобы можно было в юни тестах указать его и чтобы

718
02:01:01.190 --> 02:01:06.410
Михаил Непряхин: а отключить чтобы оно не падала ну а и

719
02:01:06.940 --> 02:01:12.080
Михаил Непряхин: потому что если этот флаг активен то

720
02:01:12.920 --> 02:01:16.630
Михаил Непряхин: да тут это для Врата надо ну Сейчас посмотрим

721
02:01:16.920 --> 02:01:27.089
Михаил Непряхин: вот и соответственно у Меня все Методы вот и они Всегда, пытаются из контекста достать эту транзакцию Если Получилось работать в транзакций Не получилась работа с обычным полом

722
02:01:27.200 --> 02:01:32.099
Михаил Непряхин: ну и все как бы все методы видите они все универсальные когда Вы смотрите по Ним ну как бы

723
02:01:32.110 --> 02:01:48.980
Михаил Непряхин: и непонятно же Там сразу акции Не работают ни транзакцией Поэтому они просто вот У меня вот этот интерфейс позгровый То Есть все методы они и транзакционные Если передан контекст в контекст транзакции и обычные Если там Транзакций. Нет

724
02:01:50.060 --> 02:01:58.130
Михаил Непряхин: в скейсах это выглядит следующим образом вот Мы Создаем профиль значит хотим, сделать транзакцию

725
02:01:59.710 --> 02:02:03.739
Михаил Непряхин: а Мы вот Берем функции, вот этот транзакшн раб

726
02:02:04.200 --> 02:02:09.189
Михаил Непряхин: и То, что внутри нее Это будет все в транзакции

727
02:02:09.350 --> 02:02:14.660
Михаил Непряхин: и соответственно вот Мы в транзакции хотим, создать профиль и создать свойства

728
02:02:15.010 --> 02:02:21.570
Михаил Непряхин: Сперва в таблице, реально Создается таблица запись с профилем

729
02:02:22.150 --> 02:02:31.079
Михаил Непряхин: а ну просто помечено Что транзакция незакомичена Дальше создается Еще в Другой Таблице Строка

730
02:02:31.270 --> 02:02:37.269
Михаил Непряхин: и тоже помечено Что она Не закочена и эти обе строки получаются незакомиченные

731
02:02:37.420 --> 02:02:41.310
Михаил Непряхин: и если ошибки здесь Не было то происходит комитет

732
02:02:41.640 --> 02:02:56.150
Михаил Непряхин: а Внутри ну мы имеем и аа взять дело вначале бегин бегин я делаю

733
02:02:57.050 --> 02:03:03.370
Михаил Непряхин: просто из обычного контекста да от пула а пул он вот здесь вот у Него стоит он он и Так есть

734
02:03:04.220 --> 02:03:13.339
Михаил Непряхин: ээ я Делаю Беги Получаю Транзакцию ну Делаю ровбек Сразу же Всегда, уж неважно завершилась удачно незавершилась срок, как это произойдет

735
02:03:14.850 --> 02:03:20.449
Михаил Непряхин: А дальше здесь Я Выполняю вот Эту функцию которую в аврапе Я Ей передал

736
02:03:20.750 --> 02:03:30.669
Михаил Непряхин: а здесь это просто функция значит как объект Черного Класса, Принимается которая просто только контекст передается и возвращается ошибка

737
02:03:30.910 --> 02:03:32.360
Михаил Непряхин: а и

738
02:03:32.870 --> 02:03:45.069
Михаил Непряхин: как видите, вот это в кейсе вот эти два метода, вот они внутри Этой функции и передаются то есть я просто их передаю в функции это получается как замыкание

739
02:03:46.590 --> 02:03:57.420
Михаил Непряхин: да и вот оно соответственно выполняется дальше я выполняю саму Вот эту функцию и эти два метода выполняются и камичу если. Все хорошо если ошибка здесь была

740
02:03:57.590 --> 02:04:05.799
Михаил Непряхин: Я ее проверяю и если ошибка будет то я возвращаюсь и происходит роллбек и транзакции получается откатываются

741
02:04:07.170 --> 02:04:10.880
Михаил Непряхин: значит это если Вы тут ни фига Не поняли

742
02:04:11.060 --> 02:04:18.780
Михаил Непряхин: то это нормально потому Что это капец как сложно и Я вам это Сейчас Рассказал

743
02:04:18.900 --> 02:04:23.069
Михаил Непряхин: просто чтобы хоть, что-то Примерно осталось

744
02:04:23.380 --> 02:04:30.320
Михаил Непряхин: это Еще раз Мы Скорее, всего Коснемся и еще Поговорим Про это

745
02:04:30.850 --> 02:04:34.240
Михаил Непряхин: но желательно Чтобы вы тут почитали код

746
02:04:34.530 --> 02:04:37.100
Михаил Непряхин: именно вот то что связано с транзакциями

747
02:04:37.630 --> 02:04:42.099
Михаил Непряхин: и попытались понять как оно работает

748
02:04:42.350 --> 02:04:47.630
Михаил Непряхин: но благодаря этому у нас получается

749
02:04:48.490 --> 02:04:56.259
Михаил Непряхин: Эээ не протекает ни как Возраст в наш из кейс вот отношусь к Есть да то Есть основная наша бизнес Войка

750
02:04:56.450 --> 02:05:02.870
Михаил Непряхин: что Мы на вот от контролера Получили метод Этогошку,

751
02:05:03.150 --> 02:05:07.330
Михаил Непряхин: создали профиль и дальше Мы Сохранили в базу

752
02:05:07.450 --> 02:05:23.390
Михаил Непряхин: атамарно к ассистентно в транзакции в две таблицы Мы сохранили у нас это две разные таблицы таблицы прожили таблица Проперти вот оно здесь таблицы прошли таблицы Проперти сперва сюда сохранили потом сюда сохранили

753
02:05:23.510 --> 02:05:32.620
Михаил Непряхин: проверили Что Ошибки. Нет и тогда Закомители и оно пометилось Что вот оно ассистент Атамарно значит сохранилось

754
02:05:32.960 --> 02:05:38.630
Михаил Непряхин: и Мы видим визуально что это в транзакции находится

755
02:05:39.010 --> 02:05:46.740
Михаил Непряхин: и Мы если, захотим убрать эту транзакцию Мы просто вот это убираем вот этот код

756
02:05:53.000 --> 02:05:59.909
Михаил Непряхин: ну не одну, тот актер надо будет немножко. Поменять но оно Тоже будет работать ты видишь как бы оно работает универсально не Так и Так

757
02:06:00.020 --> 02:06:10.349
Михаил Непряхин: Э просто в этом случае в Контексте Транзакции не будет и все как бы Ничего не произойдет а в этом случае в Контексте была транзакция

758
02:06:10.840 --> 02:06:21.030
Михаил Непряхин: откуда она Там будет потому Что вот она здесь создалась транзакция и она Так

759
02:06:23.970 --> 02:06:31.430
Михаил Непряхин: кого-то она в контекст положилась вот в этом месте Мы взяли на транзакцию и положили в контекст

760
02:06:31.820 --> 02:06:39.080
Михаил Непряхин: в прошлый, Раз рассказывал про контекст о контексте сфелью и уже здесь в этом контексте есть транзакция

761
02:06:39.410 --> 02:06:44.939
Михаил Непряхин: и вот этот контекст он уже Содержит. Транзакцию и вызывается вот эта функция

762
02:06:47.280 --> 02:06:57.099
Михаил Непряхин: а вот эта функция когда вызовется вот там в транзаев Там, в Контексте уже Будет транзакция и вот этот весь, код Поэтому Будет происходить с транзакцией

763
02:06:59.870 --> 02:07:06.889
Михаил Непряхин: а и так имплементировали ли вы

764
02:07:07.740 --> 02:07:12.850
Михаил Непряхин: ээ в гол юниорк потом не знаю чего за патрум

765
02:07:13.010 --> 02:07:17.359
Михаил Непряхин: могу сказать и если простыми словами шутят что-то заявив о форк

766
02:07:17.550 --> 02:07:26.010
Михаил Непряхин: Или Можно читать ваш пример и есть если Вы Вкратце Объясните разойюнету форк

767
02:07:26.150 --> 02:07:30.650
Михаил Непряхин: то ээ я не очень понимаю виторс да.

768
02:07:30.980 --> 02:07:37.749
Илиас Эззахид: Гу голосом ну как я его понимаю то в целом есть а некого уж пример Что будет

769
02:07:37.960 --> 02:07:49.830
Илиас Эззахид: э трандакцией делать а там оно и и

770
02:07:49.960 --> 02:07:52.119
Илиас Эззахид: делать фасад для этого при этом.

771
02:07:52.590 --> 02:08:02.669
Михаил Непряхин: Да да да да то есть идея в том чтобы абстрагироваться да Что У нас смотрите вот если мы Импорт и смотрим где импрорта доктора, его Нет

772
02:08:03.030 --> 02:08:12.729
Михаил Непряхин: может он Есть где-нибудь здесь Есть импорт-дактора, Нет ли Им проте-дактора, понимаете потому что Мы А через интерфейс Работаем

773
02:08:12.950 --> 02:08:23.130
Михаил Непряхин: и все и У нас Она как бы получается чистая Архитектура опять Же как бы Это как сказать

774
02:08:25.760 --> 02:08:31.819
Михаил Непряхин: это Не чистая Архитектура Ради чистой архитектуры да просто Я вам показываю как Бы

775
02:08:31.970 --> 02:08:39.180
Михаил Непряхин: флажки Которые указывают на то что вас хорошо

776
02:08:39.920 --> 02:08:53.300
Михаил Непряхин: э построено приложение с Точки зрения инверсии зависимостей Что у вас этот лоу куплен хороший Что нету связи с адаптами от такого то Что у вас вся связь Она только через интерфейс

777
02:08:53.920 --> 02:09:06.539
Михаил Непряхин: и круто что вот как будет довольно таки малой кровью Мы можем это Один из вариантов то есть вы когда поработаете в жизни увидите может там Еще парочку. Примеров как это можно Делать но Он самый. Удачный

778
02:09:06.720 --> 02:09:09.920
Михаил Непряхин: Он самый очень мало кода

779
02:09:10.110 --> 02:09:25.970
Михаил Непряхин: и это очень изящное решение это мной написано Ни у кого, не украл. Здесь То Что Я видел. Мне не Нравилось То есть и

780
02:09:25.970 --> 02:09:32.690
Михаил Непряхин: очень Хорошо выглядит Адаптация опять Же мало кода все что Я Видел. На Ютубе У коллег

781
02:09:32.920 --> 02:09:37.260
Михаил Непряхин: такую Порнографию устраивают из этого для того чтобы Это как-то можно было

782
02:09:37.430 --> 02:09:50.340
Михаил Непряхин: отдельно работать либо еще разные Методы Делают, вот метод для транзакции метод для Транзакций, короче Ммм этот подход он прям вот классный что он очень простой

783
02:09:51.260 --> 02:09:57.229
Михаил Непряхин: а вот и вы такую вот берете и транзакцию получаете вот так вот абстрактно он очень круто

784
02:09:59.150 --> 02:10:01.780
Михаил Непряхин: так давайте, Еще Вопросы, есть Давайте

785
02:10:02.080 --> 02:10:05.400
Михаил Непряхин: это все для того чтобы много кода Не писать

786
02:10:05.720 --> 02:10:16.459
Михаил Непряхин: Нет Это все для того чтобы получить абстрактные кирпичики развод кирпичик второй кирпичик

787
02:10:16.750 --> 02:10:21.040
Михаил Непряхин: Но дело в том Что он вот нужна Абстракция над кирпичиками

788
02:10:21.490 --> 02:10:35.350
Михаил Непряхин: вы просто бах добавляете сверху абстракцию и получается хорошо читаемый Кот и понятно, Что Он делает

789
02:10:35.870 --> 02:10:43.879
Михаил Непряхин: и вопрос Даже Не в том Что мы мало коды Пишем А в том Что Он ну Он ремонтопригодный

790
02:10:44.450 --> 02:10:51.189
Михаил Непряхин: Он легко изменяемый он легко переносимый и это

791
02:10:51.650 --> 02:11:08.959
Михаил Непряхин: но гораздо важнее чем То Что он малословный ну условно тоже хорошо как бы Что не Так много места занимает ну как там Работать ошибку надо тут возвра, сделать все равно как бы какой-то Код есть а просто, Альтернативный Же какой вариант это пришлось бы тогда

792
02:11:09.130 --> 02:11:30.780
Михаил Непряхин: оба эти хадаптера делать и и сюда бы вы Передали и профайл и Проперти

793
02:11:32.110 --> 02:11:39.310
Михаил Непряхин: а ну Не знаю там ты икс как мне дальше что-то в транзакции, тут конечно эта штука уже была бы Не, нужна вот это было бы вот Так вот

794
02:11:39.590 --> 02:11:43.780
Михаил Непряхин: ведь это еще ну меньше да как будто бы

795
02:11:44.240 --> 02:11:52.539
Михаил Непряхин: мммм меньше года Мы написали но смотрите Что Мы тогда сделали Мы взяли и делегировали значит адапты ро

796
02:11:52.670 --> 02:12:03.950
Михаил Непряхин: сделать нам транзакцию над этими двумя докторами ну Не с авторами а с двумя таблицами но

797
02:12:04.060 --> 02:12:15.019
Михаил Непряхин: Мы потеряли ремонтопригодность Мы соединили Эти две операции а может быть они нам когда нибудь в отдельности понадобятся, ну может и нет но нам вдруг да

798
02:12:15.340 --> 02:12:20.960
Михаил Непряхин: и мы поручили как бы

799
02:12:21.290 --> 02:12:33.279
Михаил Непряхин: Мы Убрали часть логики Видите все таки Мы делаем два Сетевых Похода да то Есть как бы Ну, какие то Мы где вам два две осмысленные операции Мы Создаем две таблицы

800
02:12:33.490 --> 02:12:47.759
Михаил Непряхин: и Мы тут ее скрыли за одной функцией и это все делает адаптор как бы это отдали на Отку по автору Гораздо круче когда Мы это делаем У себя в логике

801
02:12:48.080 --> 02:12:56.100
Михаил Непряхин: и Мы имеем два отдельных кирпичика независимые а если Мы захотим сделать транзак или что-то еще

802
02:12:56.600 --> 02:13:00.879
Михаил Непряхин: мы взяли и добавили Две строки и все продолжают работать

803
02:13:01.060 --> 02:13:06.350
Михаил Непряхин: а если бы это была одна функция то Нам пришлось Бы Делать изменения Там

804
02:13:06.440 --> 02:13:22.160
Михаил Непряхин: и Мы скрыли От Читателя Какую То важную Информацию Что, делает наша Ручка а здесь Мы Видим, все как на ладони Мы делаем Небольшие, атомарные

805
02:13:22.760 --> 02:13:39.970
Михаил Непряхин: аа изменения Мы работаем с конкретными кирпичиками и Это все просто Читается оно Ремонтопригодно оно легко переиспользоваться Оно не Связано Между Собой Оно имеет низкую связанность Оно имеет Правильную Инверсию зависимостей

806
02:13:40.120 --> 02:13:45.220
Михаил Непряхин: и ну короче Я уже много всего сказал да Так

807
02:13:45.830 --> 02:13:51.779
Михаил Непряхин: а поучаствовать с родителям. Также можно сделать ну да да с родителями так же можно сделать но просто

808
02:13:51.880 --> 02:14:11.730
Михаил Непряхин: э с рэди сам ну много Еще где есть транзакций да но как бы в и пользуйтесь

809
02:14:12.890 --> 02:14:17.220
Михаил Непряхин: ваш пример подакс нарянь ну да да можете брать в продакшн тащить и у вас работать

810
02:14:18.580 --> 02:14:29.070
Михаил Непряхин: так вопрос про миграции если у нас большая таблица и мы знаем что эмиграции заблокируют таблицу Некоторое время Например три минуты как Избежать даунта приложения

811
02:14:31.280 --> 02:14:39.510
Михаил Непряхин: ну это уже сложный вопрос то есть здесь тогда по-хорошему надо Иметь две таблицы разных

812
02:14:39.670 --> 02:14:46.450
Михаил Непряхин: и чтобы не Было простое вы тогда должны накатить эти миграции в той базе данных

813
02:14:46.590 --> 02:14:50.160
Михаил Непряхин: а потом переключить трафик на нее

814
02:14:50.720 --> 02:14:54.470
Михаил Непряхин: и обновить вторую базу, данных да ну то Есть

815
02:14:55.190 --> 02:15:11.150
Михаил Непряхин: если Прямо Так важны Эти три минуты простое Но Это правда Я Не видел чтобы Так заморачивались. Обычно просто. Делаются Самые Низкие Низкие Пиковые часы нагрузки Ну типа все равно У вас когда-нибудь есть

816
02:15:11.150 --> 02:15:15.969
Михаил Непряхин: низко низкое время когда У вас мало запросов к приложению

817
02:15:15.970 --> 02:15:19.379
Михаил Непряхин: и Не знаю в три часа Ночью в четыре часа в Утра

818
02:15:19.380 --> 02:15:31.180
Михаил Непряхин: и Просто в это время вы встаете накатываете Эту Миграцию, и все У вас минимальный Простой ну как бы он все равно есть да но никто его не Заметит

819
02:15:31.180 --> 02:15:47.460
Михаил Непряхин: если у вас прямо, вообще Круглые сутки большой нагрузки и не дай бог чтобы Там три минуты оно все зависело ну тогда решается Только двумя Базами поднимайте рядом вторую базу, и

820
02:15:47.460 --> 02:15:59.530
Михаил Непряхин: и потом бесшевно переключаете ну еще и при этом льюте данные в обе базы чтобы у вас они чтобы данные были констентные он как бы я говорю я и ни Разу не Видел чтобы так заморачивались,

821
02:16:02.210 --> 02:16:14.370
Михаил Непряхин: да или это даже это скорее даже не кэллнер а блюгрин типа когда у вас есть две среды ты скажи кораблю клин подход. Когда у вас есть

822
02:16:14.800 --> 02:16:19.610
Михаил Непряхин: а в продакшене Всегда,

823
02:16:25.760 --> 02:16:32.969
Михаил Непряхин: как сказать как и вы Имеете в продакшене Две версии ну и

824
02:16:33.879 --> 02:16:49.350
Михаил Непряхин: одного и того Же просто одна Из них активна текущая Куда Льется трафик Но вторая она тоже боевая и вы просто в любой момент можете взять и переключить на нее и Она тоже будет работать и Поэтому вы можете очень быстро,

825
02:16:49.809 --> 02:17:06.870
Михаил Непряхин: взять и переключить на вторую рабочую версию полную копию вашего приложения всего и базой всего остального если, вдруг оно не работает вы Раз быстро переключайтесь на другую соответственно здесь то же. Самое вы просто берете вторую версию вашего приложения Полностью все обновляете

826
02:17:06.879 --> 02:17:16.889
Михаил Непряхин: и бесшумно переключайтесь но это если, вы Не Хотите даун тайма то вы должны платить За это,

827
02:17:16.990 --> 02:17:24.110
Михаил Непряхин: памятью дисковым пространством, то есть как Бы только так надежность она обеспечивается За счет ресурсов

828
02:17:24.910 --> 02:17:37.809
Михаил Непряхин: так смотрите давайте во-первых и

829
02:17:37.959 --> 02:17:44.460
Михаил Непряхин: вот хотя бы на текущий момент но особенно, фронтейдеров интересуют поняли ли вы фронтейнеры что такой миграции.

830
02:17:44.809 --> 02:17:47.629
dmitriy: Можно вопрос сразу помирать с Ним тогда,

831
02:17:47.829 --> 02:17:58.949
dmitriy: ну так для укрепления больше а получается Миграция, у нас используется например, для какой-то инициативы базы например, пустой

832
02:17:59.249 --> 02:18:06.849
dmitriy: и например, ну к примеру если у нас в таблице, добавляется новое поле какое-то это тоже миграция.

833
02:18:06.850 --> 02:18:16.999
Михаил Непряхин: Да да да поле добавляется поле удаляется ну. Колонка да Колонка добавляется Колонка удаляется

834
02:18:17.200 --> 02:18:24.650
Михаил Непряхин: и Индекс добавляется Эти индексы тоже индексы тоже делаются через. Эти миллионы Миграции

835
02:18:26.840 --> 02:18:36.069
Михаил Непряхин: Сейчас найдем А нету тут индексов Ну, короче говоря индексы тоже накатываются через. Эмиграции А Ну, вик за приблизительно

836
02:18:38.840 --> 02:18:50.840
Михаил Непряхин: вот Создание, индекса тоже, происходит в миграции вот Поэтому да как бы это по сути вот как бы

837
02:18:51.129 --> 02:18:56.080
Михаил Непряхин: история такая вот что вообще какие изменения происходили с базой

838
02:18:56.190 --> 02:19:02.779
Михаил Непряхин: ну как бы вопрос не про данные конкретно а именно вот про о поля по таблице

839
02:19:04.270 --> 02:19:22.090
Михаил Непряхин: и давайте. Тогда Второй вопрос по транзакции вот то что я рассказываю про транзакцию и

840
02:19:22.610 --> 02:19:26.550
Михаил Непряхин: ну это же какую то обратную связь близко к Мински все ли Окей

841
02:19:26.809 --> 02:19:31.389
Михаил Непряхин: и Вопросы, в теме по теме может быть есть еще Ухода.

842
02:19:34.899 --> 02:19:36.429
David R: Можно вопросик.

843
02:19:36.610 --> 02:19:37.200
Михаил Непряхин: Давайте.

844
02:19:37.200 --> 02:19:42.649
David R: Для Меня как для человека который пришел из бетона немного? Непривычного? В питоме я

845
02:19:42.730 --> 02:20:00.700
David R: и Описывал всю структуру таблицы изначальную потом натравливал там олимпик например тот же самый аля мигратор натравливал на эту схему базы данных он не, создавал

846
02:20:00.700 --> 02:20:05.689
David R: уже вот этот вот файл, Миграции потом я уже эти Миграции накатывал на базу, там их

847
02:20:05.730 --> 02:20:16.180
David R: а тут получается изначальную полностью таблицу со всеми, его полями свойствами всем всем Мы сразу пишем в файл, миграции ручками Так лет.

848
02:20:16.180 --> 02:20:22.250
Михаил Непряхин: Да да это так ну смотрите значит я встречал команды

849
02:20:23.200 --> 02:20:30.780
Михаил Непряхин: а как бы вот смотреть в мигратор и это все равно же вот увы видно что Это что То такое сбоку То есть как Будто бы

850
02:20:31.000 --> 02:20:40.890
Михаил Непряхин: а он не обязывает использовать Именно мигрейт и именно этот подход и я встречал джавистов Которые хорошо Знали инструмент

851
02:20:41.230 --> 02:20:52.360
Михаил Непряхин: эээ вот то что вот вы сказали это тоже автоматизация до этого дела и у джавы есть а

852
02:20:53.490 --> 02:21:03.110
Михаил Непряхин: че то странный джорджо мигрешин вот смотрите у них есть флай вей вот значит есть флай уэй

853
02:21:04.280 --> 02:21:08.570
Михаил Непряхин: оон ну это прямо, Там комбайны То Есть Там Юай у них Есть То Есть

854
02:21:08.820 --> 02:21:14.990
Михаил Непряхин: аа ну Или Флай Нет еще Есть аа на эу

855
02:21:16.070 --> 02:21:19.170
Михаил Непряхин: лику и бейс еще если, к любой свод

856
02:21:19.860 --> 02:21:27.210
Михаил Непряхин: вот он точно с Юаем вот и то Есть короче У Людей представляете как бы Есть два инструмента для миграции

857
02:21:27.340 --> 02:21:29.970
Михаил Непряхин: и они в них хорошо Разбирались

858
02:21:30.170 --> 02:21:41.990
Михаил Непряхин: они Там с Юаром с какой-то Автоматизацией и тогда, Ну они просто его и использовали то есть они ну знали этот инструмент и у них все Было с ним Окей

859
02:21:42.180 --> 02:21:43.300
Михаил Непряхин: Поэтому

860
02:21:43.430 --> 02:21:50.510
Михаил Непряхин: если Это ваш спецпроект наверное если вы знаете хорошо какой-то инструмент миграции вы просто берете его используете ученики, Проблем

861
02:21:50.910 --> 02:21:53.259
Михаил Непряхин: вот если, вы приходите в Команду

862
02:21:53.400 --> 02:22:03.639
Михаил Непряхин: Там Будет, Блин мигрейт ну почти Всегда и иногда будет гусь и

863
02:22:04.320 --> 02:22:09.359
Михаил Непряхин: сиявай там другой там даже Не сияет по-моему просто Исхода, выполняется

864
02:22:09.470 --> 02:22:21.139
Михаил Непряхин: и Поэтому ми играет как бы ну в любом случае вы с ними столкнетесь в работе. Ну а если вы не собираетесь работать то писать под проекты Используйте тот мигратор который знаете очень Без Проблем.

865
02:22:23.070 --> 02:22:24.750
Илиас Эззахид: Можно Еще один вопрос за год.

866
02:22:24.750 --> 02:22:25.670
Михаил Непряхин: Давайте.

867
02:22:25.670 --> 02:22:32.769
Илиас Эззахид: А у вас был опыт, продакшн го писать Там в юфанкшн в миграции.

868
02:22:33.900 --> 02:22:35.539
Михаил Непряхин: Еще раз какие фанкшн а.

869
02:22:35.540 --> 02:22:39.220
Илиас Эззахид: Включи фанкшн миллион.

870
02:22:40.290 --> 02:22:42.960
Михаил Непряхин: Это типа хранимые процедуры решимости.

871
02:22:42.960 --> 02:22:44.480
Илиас Эззахид: Да и.

872
02:22:44.480 --> 02:22:54.890
Михаил Непряхин: И и Ну, типа под запретом как бы считается что Это

873
02:22:56.170 --> 02:23:13.489
Михаил Непряхин: Ну, размытие бизнес логики то есть понятно что иногда можно сделать суперкрутую Оптимизацию но я ни разу не встречал что бы это удалось кому То защитить и это было оправдано

874
02:23:13.560 --> 02:23:19.109
Михаил Непряхин: типа просто как только на обсуждение выносится Задавать хранения процедуры союзам

875
02:23:19.160 --> 02:23:36.399
Михаил Непряхин: все сразу. Короче как Будто. Бы какой-то Коллективный Негативный опыт есть У всех с этим и типа Нет никаких ранних Процедур Мы либо Думаем как Бы Это сделать заранее хранить так чтобы Не делали храмы процедуры

876
02:23:36.420 --> 02:23:46.309
Михаил Непряхин: либо мы-то просто фронтами преображения делаем чтобы в бизнесе это Было видно ну, типа знаете можно сравнить хранимые Процедуры с мидом варами

877
02:23:46.310 --> 02:24:19.790
Михаил Непряхин: как мидоувары скрывают от вас часть логики неявными неявными и и и

878
02:24:21.820 --> 02:24:25.529
Михаил Непряхин: а по транзакции понятно, как работает контекст не очень понятно,

879
02:24:25.850 --> 02:24:35.569
Михаил Непряхин: вот вот я вас скорее про это про контекст увидите там, и короче если, еще важно про транзакции и про контекст

880
02:24:35.790 --> 02:24:44.809
Михаил Непряхин: если, вы попытаетесь разобраться Но не получится и надо Будет еще Эду объяснить скажите и можем прямо, порисовать

881
02:24:44.810 --> 02:24:59.139
Михаил Непряхин: прям ну там, как-то еще более подробно потому что в целом контекст такая штука сложная а тут когда транзакция в контексте и между слоями она передается в контексте ну я согласен что, ни фига не просто

882
02:25:06.260 --> 02:25:31.150
Михаил Непряхин: то понятно что, тут, все было чисто в общих чертах просто понимать Примерно как оно Устроено и все равно надо начинать изучение эсквеля а дальше уже возвращаются к этим примерам видите примеры, прямо, суперклассические, суперпростые суперпонятные вы хоть как Только начнете работать с базой данных и

883
02:25:31.150 --> 02:25:32.899
Михаил Непряхин: такие детские ну вот прямо, вот

884
02:25:33.100 --> 02:25:36.669
Михаил Непряхин: просто упрощено вылизано уже просто донельзя.

885
02:25:36.940 --> 02:25:44.389
Михаил Непряхин: Все вотмут максимально просто так хочу простые команды кди федора джонни ну да

886
02:25:44.560 --> 02:25:54.449
Михаил Непряхин: теперь взаимно специально ждал когда до этого рука дойдем да то есть Вот Сейчас уже прям обязательно крутите смотрите пробуйте запускаете делаете небольшие, изменения

887
02:25:55.680 --> 02:26:11.730
Михаил Непряхин: а так. Про поговорить с программистами Прошлого Поколения они расскажут нужно сохранять бизнес Стройку ну Да-да-да может Быть Вот из-за этого какая-то память Поколения короче Храни мою процедуру от Него Сейчас, они прям к ним отношение какое то очень такое напряженное

888
02:26:13.650 --> 02:26:31.590
Михаил Непряхин: вот и еще здесь вот про сидр тоже его можете у себя покрутить посмотреть вот эти штуки по изменять то Есть вот важно скорее просто попробовать поломать вот это все Так сломать так сломать посмотреть какие при этом будут ошибки

889
02:26:31.590 --> 02:26:47.850
Михаил Непряхин: и получить представление и

890
02:26:48.440 --> 02:26:55.540
Михаил Непряхин: работали с базой данных Если У вас до этого Не было То Это прямо, Реально сложно Так

891
02:26:56.390 --> 02:27:01.310
Михаил Непряхин: а Ладно тогда все думали Что недолго получилось да

892
02:27:01.630 --> 02:27:05.389
Михаил Непряхин: Баз данных просто в жизни целиковая тема и Она длинная большая

893
02:27:06.670 --> 02:27:12.529
Михаил Непряхин: Так Ладно ну все тогда давайте до четверга сюда спасибо всем, пока.

