Организованное программирование | Кирилл Мокевнин
11.8K subscribers
69 photos
267 links
Как из джуниора дойти до мидла, а потом и до синьора
Ютуб https://youtube.com/@mokevnin
Связь для предложений: @kirillpublic
Download Telegram
Пятничный пост (В субботу)

Стал чуть меньше писать, потому что жестко закопался в кодинге (в том числе на го хаха). Потом об этом расскажу, а пока пост выходного дня 🙂

Про язык и детей. Как дети погружаются в среду и за какое время учат язык? Вводные, когда мы переехали сюда 6 лет назад, дочке было 6, а сыну 2. У нее уже был очень хороший русский с падежами без ошибок (что не всегда бывает в этом возрасте), ну а сын еще только начинал говорить.

Вообще погружение в среду начинается не с переездом, а когда дети идут в школу. Да, часть вещей они хватают с детских площадок, но не так много на самом деле. И уж точно это не способ заговорить на языке. Когда кто-то говорит что мол смотрите, мой ребенок уже говорит после полугода в другой стране, все это хрень. Они знают буквально десяток слов и сколько-то фраз, но родители такие родители 🙂 (я даже знаю таких людей, которые в инсте пишут об успехах их детей, а я с ними на площадке гуляю)

В школе есть несколько вариантов, если дети маленькие, то во-первых у нас тут они идут в спец классы для тех у кого английский второй, во-вторых им в целом легче выучить язык, потому что дети. Насколько я знаю, те кто приезжают после 13 лет, уже не становятся билингвами и у них может быть слышен акцент.

Первой у меня пошла естессно дочка. Первый год она не говорила на английском вообще, но научилась что-то понимать. Второй год, английский уже стал родным, но говорить она могла лишь на ограниченный набор тем и не глубоко. А с третьего года, произошло переключение, когда даже с русскоязычными друзьями они говорили только по английски. На четвертый год, ее русский стал хуже, она в шесть лет знала падежи лучше чем сейчас. Плюс появились определенные элементы, которые калька с английского. Она, например, не говорит "пятое апреля", а скажет "апрель пятого". Или она часто говорит "это не хорошо", там где мы бы никогда так не сказали даже маленькими, просто потому, что в английском good используется сильно шире.

С сыном примерно такой же расклад, но из-за того, что он переехал сюда без языка, его русский прямо скажем не очень. Он часто не может выразить мысль и в его речи треть слов минимум на английском. К тому же у него пропали письменные навыки, он разучился читать и тем более писать на русском (но я с этим хочу еще поработать). Смс приходится переводить. Сейчас он уже дома постоянно спрыгивает на английски и я прошу его говорить по-русски (это стандартный прием, у кого дети билингво часто так делают чтобы сохранить хоть какой-то язык).

Есть ли у них акцент? У билингв мне кажется его не бывает, для них английский гораздо более родной и скорее когда они говорят по русски, ты слышишь странные нотки или такие ударения, которые выдают скорее американца, который хорошо научился говорить по русски (это если речь про дочь).

Меня иногда спрашивают, но почему так происходит, почему они вставляют много английских слов и им становится сложнее с русским? Все очень просто, домашний бытовой язык очень ограниченный. Все что они узают о мире, они узнают от друзей, учителей и книг на английском. Поэтому они хорошо знают бытовой язык, но все что за рамками, для них темный лес. Зависит конечно от того, кто в каком возрасте переехал.

Некоторые решают этот вопрос тем что ходят в воскресные русские школы, там помогают сохранить и речь и письмо. А некоторые забивают и их дети уже не говорят. Что можно точно сказать, что их дети, вряд ли сохранят язык.

p.s. с третьим вообще наверное кабздец будет, он уже в свои почти два, слышит много английского

Ссылки: Телеграм | Youtube | VK
👍4135🔥9😐1
Восстановление состояния в тестах

И так, вы решили написать тесты на свой проект. Вопрос, как добиться изоляции тестов друг от друга, когда речь идет про интеграционные и функциональные тесты?

Кто-то скажет, что все мокает и поэтому проблемы нет, реальный код изменяющий состояние, например, который ходит в базу, не вызывается. Это конечно выход, но цена у такого решения оч высока, а качество проверки сильно хуже у чем у тестов, которые вызывают реальный код.

Другой подход, в том, что позволять коду выполнять практически все внешние взаимодействия, кроме пожалуй, обращения к внешним сервисам, это точно должно быть запрещено, как минимум по причинам связанным с безопасностью и повторяемостью.

Но, тогда сразу встает вопрос, если один тест что-то изменил в базе, то как это повлияет на остальные тесты? Обычно влияет хреново, даже на небольшом наборе тестов. Допустим есть тест на регистрацию пользователя. Мы запускаем этот тест второй раз и он падает с ошибкой, потому что такой пользователь уже создан. Можно попытаться все время создавать новые данные, но это доп сложность (я не видел примеров где бы это было реализовано в полной мере). Можно попытаться чистить данные после каждого теста. Тут две проблемы. Во-первых этот код может не отработать если возникли ошибки в процессе (зависит от фреймворка и того как написано), а во вторых, это огромная когнитивная нагрузка, настолько большая, что программисты будут избегать писать тесты, лишь бы не думать об этом и не бороться потом с багами из-за забытых данных.

Ну и наконец вариант, который наиболее распространен и встроен во все богатые фреймворки (laravel, django, rails, spring boot, ...). В этих фреймворках до каждого теста стартует транзакция, которая в конце теста откатывается (и вложенные транзакции тоже хорошо обрабатываются). Это решение позволяет вообще не думать об очистке в процессе. Иногда делают по другому, включают автоматический truncate таблиц в базе при каждом старте тестов. Причем не ручками, а это фактически стратегия очистки, встроенная в некоторые фреймворки, где можно выбирать как чистить (или идет доп пакетом как в rails).

Поработав в таких системах вопрос о том надо ли мокать даже не встает. Без моков работает и проще и надежнее и понятнее. Да тут возможна история с производительностью, но про это будет отдельный пост фабрики vs фикстуры.

p.s. Как у вас? Мокаете или реальная база с откатом?
👍3613🔥7🤔1