This media is not supported in your browser
VIEW IN TELEGRAM
Крутите барабан - или ваши ретро выглядят не так?
В дополнение к видео выше - тесты - это часть процесса разработки, это ваши 'друзья', которые помогают понять сломали вы логику приложения или нет, а ещё отчасти документируют поведение.
На своих проектах я бывает рефакторю код на 100+ классов и не особо беспокоюсь, что приложение не взлетит только потому, что основная бизнес-логика у меня покрыта тестами. Желаю и вам той же уверенности в том, что вы пишете.
P.S. Отдавать написание тестов на откуп ИИ не имеет никакого смысла, ведь при их самостоятельном написании можно обнаружить ошибки в логике.
На своих проектах я бывает рефакторю код на 100+ классов и не особо беспокоюсь, что приложение не взлетит только потому, что основная бизнес-логика у меня покрыта тестами. Желаю и вам той же уверенности в том, что вы пишете.
P.S. Отдавать написание тестов на откуп ИИ не имеет никакого смысла, ведь при их самостоятельном написании можно обнаружить ошибки в логике.
Айти бывает разным.
Мы все привыкли пользоваться сервисами для повседневной жизни, но в этот день стоит вспомнить пути своих предков. В этом мне помогает сайт https://m.pamyat-naroda.ru/ . К сожалению точной информации у меня никогда не было и мне он очень помог хоть как-то понять, что случилось с участниками ВОВ из моих родственников. Надеюсь, что вам он тоже поможет.
С праздником победы!
Мы все привыкли пользоваться сервисами для повседневной жизни, но в этот день стоит вспомнить пути своих предков. В этом мне помогает сайт https://m.pamyat-naroda.ru/ . К сожалению точной информации у меня никогда не было и мне он очень помог хоть как-то понять, что случилось с участниками ВОВ из моих родственников. Надеюсь, что вам он тоже поможет.
С праздником победы!
This media is not supported in your browser
VIEW IN TELEGRAM
Так или не так?
This media is not supported in your browser
VIEW IN TELEGRAM
Когда джун совсем без присмотра
Невыдуманные истории
Пришли ко мне как-то раз посмотреть проблемы утечки памяти (в простонародье OOM) в результате нагрузочного тестирования, вообще довольно частая проблема на самом деле, когда что-то выжирает вашу память и надо детектировать этого нарушителя.
Сразу опущу вводную часть с проверкой конфигураций и прочим (оно на самом деле важное, но пожалуй в другом посте или видео объясню). По мониторингу (это тоже отдельная тема для разговора) нашел очень интересную штуку - один эндпоинт был со средним временем ответа порядка 3-4 минут (для реста это ну очень много и выходит за рамки дозволенного). Копаясь в коде я обнаружил некоторые изменения, которые как раз были сделаны и одна из заглушек возвращала
а дальше по коду просто была попытка получить результат выполнения через get().
Попробуйте предположить какая же здесь кроется проблема, не заглядывая дальше по тексту.
А проблема вот в чем - эта самая фича не имеет результата, а следовательно будет висеть пока поток кто-то не прервет для прекращения ожидания, как итог получаем множество потоков, которые просто встали в ожидании пока завершится та самая фича.
Как это можно исправить - использовать статические методы (с передачей результата выполнения в метод)
Пришли ко мне как-то раз посмотреть проблемы утечки памяти (в простонародье OOM) в результате нагрузочного тестирования, вообще довольно частая проблема на самом деле, когда что-то выжирает вашу память и надо детектировать этого нарушителя.
Сразу опущу вводную часть с проверкой конфигураций и прочим (оно на самом деле важное, но пожалуй в другом посте или видео объясню). По мониторингу (это тоже отдельная тема для разговора) нашел очень интересную штуку - один эндпоинт был со средним временем ответа порядка 3-4 минут (для реста это ну очень много и выходит за рамки дозволенного). Копаясь в коде я обнаружил некоторые изменения, которые как раз были сделаны и одна из заглушек возвращала
return new CompletableFuture();
а дальше по коду просто была попытка получить результат выполнения через get().
Попробуйте предположить какая же здесь кроется проблема, не заглядывая дальше по тексту.
А проблема вот в чем - эта самая фича не имеет результата, а следовательно будет висеть пока поток кто-то не прервет для прекращения ожидания, как итог получаем множество потоков, которые просто встали в ожидании пока завершится та самая фича.
Как это можно исправить - использовать статические методы (с передачей результата выполнения в метод)
CompletableFuture.completedFuture(U value);
CompletableFuture.failedFuture(Throwable ex);
This media is not supported in your browser
VIEW IN TELEGRAM
Уже завтра он встретит вас на работе
Попробовал я значит эти разрекламированные сегодня тесты на форуме ЦИПР (это же надо додуматься, чтобы на такой уровень вынести 10-20 - минутные тесты для разрабов как вау-технология).
Краткий итог - шлак полнейший - теоретические вопросы еще более-менее, но практика с ужасным редактором кода, который даже не умеет в автокомплит - это фиаско (на самом деле то ли тормозит, то ли частично умеет). Кроме того - задачи элементарные, но с кучей условий, что ты можешь не успеть вспомнить все нужные статические методы, которые на практике не часто используешь, вроде parseDouble, Math.pow. Вообще эта часть похожа на алгоритмическую секцию в одной известной компании на "Я" - сидишь как дурак и пытаешься доказать, что ты - не верблюд.
Кто пытался - кидайте в комменты свои впечатления!
Краткий итог - шлак полнейший - теоретические вопросы еще более-менее, но практика с ужасным редактором кода, который даже не умеет в автокомплит - это фиаско (на самом деле то ли тормозит, то ли частично умеет). Кроме того - задачи элементарные, но с кучей условий, что ты можешь не успеть вспомнить все нужные статические методы, которые на практике не часто используешь, вроде parseDouble, Math.pow. Вообще эта часть похожа на алгоритмическую секцию в одной известной компании на "Я" - сидишь как дурак и пытаешься доказать, что ты - не верблюд.
Кто пытался - кидайте в комменты свои впечатления!
This media is not supported in your browser
VIEW IN TELEGRAM
Никогда такого не было и вот опять
Включил ненадолго сообщения в канале - проверим насколько это целесообразно и не будет ли спама.
Немного про практику. 💻 Технический дневник.📒
Впервые о нем я прочёл в книге 'Программист-прагматик'. Я и до этого делал некоторые заметки, но после стал намного чаще. О чем вообще эта идея - всякий раз, когда вы решаете какую-то задачу и сталкиваетесь с нестандартным кейсом, фиксируете это. Я последнее время использую телефон, несмотря на то, что бумага иногда даже лучший вариант. Просто блокнот в моменте не всегда под рукой.
У меня в заметках телефона накопилось уже очень много таких знаний, буду пробовать с вами делиться в том или ином виде. А пока вы можете эту технику взять и себе на вооружение - это полезно не только на работе, но и в учёбе - ведь она для разработчика никогда не заканчивается.
Впервые о нем я прочёл в книге 'Программист-прагматик'. Я и до этого делал некоторые заметки, но после стал намного чаще. О чем вообще эта идея - всякий раз, когда вы решаете какую-то задачу и сталкиваетесь с нестандартным кейсом, фиксируете это. Я последнее время использую телефон, несмотря на то, что бумага иногда даже лучший вариант. Просто блокнот в моменте не всегда под рукой.
У меня в заметках телефона накопилось уже очень много таких знаний, буду пробовать с вами делиться в том или ином виде. А пока вы можете эту технику взять и себе на вооружение - это полезно не только на работе, но и в учёбе - ведь она для разработчика никогда не заканчивается.
В пользу поста выше. 👆
Я как-то с другим сеньором решал проблему того, что созданный мок в тестах не отрабатывал, те не отрабатывал verify на вызове его метода (если не поняли, то ничего страшного) 🤔. Проблему мы как-то решили и забыли. А буквально вчера в общем чате джавистов про похожую кто-то спросил, а я не запомнил и не записал, что в итоге сделали. А ведь мог оперативно помочь коллеге, да и сам освежить свою память по этому кейсу.
Я как-то с другим сеньором решал проблему того, что созданный мок в тестах не отрабатывал, те не отрабатывал verify на вызове его метода (если не поняли, то ничего страшного) 🤔. Проблему мы как-то решили и забыли. А буквально вчера в общем чате джавистов про похожую кто-то спросил, а я не запомнил и не записал, что в итоге сделали. А ведь мог оперативно помочь коллеге, да и сам освежить свою память по этому кейсу.