Мои трудовыебудни:
Надо было вместо вертикального списка с элементами во всю ширину сделать список, в котором у каждого элемента ширина по контенту, а в каждой строке списка должно быть столько элементов, сколько влезает по ширине.
Реализован старый список был на RecyclerView, так что я решил его и переделать. Решил, что надо найти решения двух разных задач: динамическая ширина элемента и динамическое количество элементов в строке, а потом смёрджить два решения в новый SuperAdapter и дело в шляпе.
Сказано – сделано.
Да хрен там, в итоге я понял, что если делать это вручную, то я в рамки этой таски точно не умещусь, и пошёл искать другое решение.
В итоге я наткнулся на гугловский FlexboxLayoutManager, казалось бы, предназначенный как раз для этой задачи. Довольный, затащил его в проект и реализовал.
А потом на ревью мне коллега покрутил пальцем у виска и сказал, что для этой задачи куда проще и удобнее сделать через ChipGroup, который как раз для этой цели и создан.
Но этот чёртов ChipGroup мне на мой запрос в гугле ни разу не вылез =)
Век живи, век учись. Оказалось, реально удобная штука, возьмите на заметку.
Особенно радует, что в ChipGroup можно с помощью addView добавлять не только наследников Chip, а любые вьюхи, и они все равно будут норм выстраиваться. Но часть методов / атрибутов правда перестанет работать, например singleSelection – потому что он работает только на Chip.
А вот к FlexboxLayoutManager есть вопросики: странновато он настраивается, странноватые дефолтные отступы между элементами, и сходу тоже непонятно, как их настраивать.
А вы бы как пошли эту задачу решать?) Я один такой тугой?)
Надо было вместо вертикального списка с элементами во всю ширину сделать список, в котором у каждого элемента ширина по контенту, а в каждой строке списка должно быть столько элементов, сколько влезает по ширине.
Реализован старый список был на RecyclerView, так что я решил его и переделать. Решил, что надо найти решения двух разных задач: динамическая ширина элемента и динамическое количество элементов в строке, а потом смёрджить два решения в новый SuperAdapter и дело в шляпе.
Сказано – сделано.
В итоге я наткнулся на гугловский FlexboxLayoutManager, казалось бы, предназначенный как раз для этой задачи. Довольный, затащил его в проект и реализовал.
А потом на ревью мне коллега покрутил пальцем у виска и сказал, что для этой задачи куда проще и удобнее сделать через ChipGroup, который как раз для этой цели и создан.
Но этот чёртов ChipGroup мне на мой запрос в гугле ни разу не вылез =)
Век живи, век учись. Оказалось, реально удобная штука, возьмите на заметку.
Особенно радует, что в ChipGroup можно с помощью addView добавлять не только наследников Chip, а любые вьюхи, и они все равно будут норм выстраиваться. Но часть методов / атрибутов правда перестанет работать, например singleSelection – потому что он работает только на Chip.
А вот к FlexboxLayoutManager есть вопросики: странновато он настраивается, странноватые дефолтные отступы между элементами, и сходу тоже непонятно, как их настраивать.
А вы бы как пошли эту задачу решать?) Я один такой тугой?)
😁10👍7👏2🌚2😈1
Вы ж помните, я был самоучкой, а на первой серьёзной работе через 3 месяца уволился лид и оставил меня одного. На 4 года =) Ну как, команда у меня была, но из бэкендеров-фронтендеров-дизайнеров-тестировщиков. Ни одного мобильщика больше не было всё это время.
И хотя я не то, чтобы дофига социально активный, мне все равно сильно не хватало общения "со своими". У меня были какие-то потуги это общение найти, но кроме каких-то англоязычных форумов я ничего не увидел, в итоге взгрустнул, да и забил.
И одним из главных пунктов, которые я называл при собеседовании в Белку, было "чтоб была команда разрабов, с которыми можно перетереть за андроид, походить на конференции и вот это вот всё".
И эти слова шли реально от души, как сейчас помню =)
Так вот – однажды, когда мы сплавлялись с друзьями по Тверце, один знакомый айосер мне сказал, что есть такое сообщество – КофеКод, на котором мобильные разрабы встречаются попить кофейку и потереть за жизу.
Крутой проект, как по мне. 10 лет назад мне бы это сильно помогло, хотя бы психологически. А если вы прямо сейчас ищете работу – вы, думаю, в курсе, что "по знакомству" устроиться куда проще, особенно если вы джун.
Так что советую сходить к кофекотовцам на встречи: заведёте полезные знакомства, ну или просто поболтаете в кругу своих =) 👇
И хотя я не то, чтобы дофига социально активный, мне все равно сильно не хватало общения "со своими". У меня были какие-то потуги это общение найти, но кроме каких-то англоязычных форумов я ничего не увидел, в итоге взгрустнул, да и забил.
И одним из главных пунктов, которые я называл при собеседовании в Белку, было "чтоб была команда разрабов, с которыми можно перетереть за андроид, походить на конференции и вот это вот всё".
И эти слова шли реально от души, как сейчас помню =)
Так вот – однажды, когда мы сплавлялись с друзьями по Тверце, один знакомый айосер мне сказал, что есть такое сообщество – КофеКод, на котором мобильные разрабы встречаются попить кофейку и потереть за жизу.
Крутой проект, как по мне. 10 лет назад мне бы это сильно помогло, хотя бы психологически. А если вы прямо сейчас ищете работу – вы, думаю, в курсе, что "по знакомству" устроиться куда проще, особенно если вы джун.
Так что советую сходить к кофекотовцам на встречи: заведёте полезные знакомства, ну или просто поболтаете в кругу своих =) 👇
🔥9💯5❤4
🤖 Android | 📱 Mobile | 🍏 iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4⚡2👌2
Кого куда зачем делить, нормально же общались((
Чем крупнее и сложнее приложение, и чем больше над ним работает команд и разработчиков разного уровня, тем важнее уметь изолировать части кода друг от друга, и тем важнее становится скорость сборки приложения.
Если у вас 2 разработчика, то увеличение скорости сборки на 5 минут будет выигрывать компании пару часов в день, а если у вас 50 разработчиков – то у компании дневной КПД вырастет в несколько раз. Stonks! 📈
С этим и помогает многомодульность (если правильно организована🌚). Задумка такая: делим приложение на несколько мелких независимых частей, и тогда изменения в одной части не потребуют пересборки всего проекта для запуска – потребуется пересобрать только изменённую часть и её зависимости. Так мы и время сэкономим, и сможем отдать какую-нибудь новую часть новому джуну, не боясь, что он в процессе разработки пол-проекта нам поменяет. Пусть сидит там чудит себе на здоровье, на код-ревью посмотрим 😎
Есть два способа деления:
– по слоям Clean-архитектуры (модули app, domain, data и presentation)
– core-feature деление.
С первым всё понятно: тут главное удобство в том, что ты учишься жить по клину, и прям на уровне модулей можешь прописать, что в domain нельзя тащить android-классы, и что domain не зависит от остальных модулей-слоёв. Удобно для начинающих и для тренировки, но в плане масштабирования не очень удобная история: в какой-то момент вам захочется делить на более мелкие части, чем 4 модуля, захочется выносить отдельные фичи в отдельные модули, и приложение начнёт постепенно превращаться в кавардак.
Core-feature деление – более удобная история: в core пихаем всё общее и используемое всеми модулями, а в feature... Тут опять 2 варианта:
– либо один экран – одна feature, либо один флоу – одна feature. Флоу – группа экранов, объединённых общим смыслом – например флоу авторизации или флоу покупки. Чаще всего делят по флоу.
И внутри каждая feature живёт своей жизнью: если там нет работы с данными, а только презентейшн-логика, то там из клин-слоёв только presentation, а если есть и работа с данными, и своя бизнес-логика – то в feature будут все 3 своих clean-слоя. Под каждый слой своя папка внутри фичи.
Во "взрослом" core-feature делении к feature-модулю, в котором лежит вся логика фичи, делают ещё feature-api модуль – это модуль-прослойка, состоящий только из интерфейса модуля, отражающего то, что от этого модуля нужно всем остальным. Если модуль состоит из одной активити и всей сопутствующей логики – значит, скорее всего, апи фичи будет состоять из старта этой активити. И все остальные модули не будут ничего знать о том, что происходит в самой фиче – а будут только использовать апи этой фичи.
Звучит всё это заманчиво, но на деле и в реальной компании вас все равно ждёт кавардак, это я вам обещаю. У вас точно часть общего будет в core, часть в каком-нибудь "временном" common, а часть вообще "временно" рассована по отдельным фичам с задачей по рефакторингу в бэклоге, которую однажды вечером пятницы наконец закэнселят и примут неизбежную бренность бытия.
Готов поспорить, что ни у кого не найдётся идеального мультимодульного проекта в проде, и чтоб у него было хотя бы тыщ 50 активных юзеров😏
Чем крупнее и сложнее приложение, и чем больше над ним работает команд и разработчиков разного уровня, тем важнее уметь изолировать части кода друг от друга, и тем важнее становится скорость сборки приложения.
Если у вас 2 разработчика, то увеличение скорости сборки на 5 минут будет выигрывать компании пару часов в день, а если у вас 50 разработчиков – то у компании дневной КПД вырастет в несколько раз. Stonks! 📈
С этим и помогает многомодульность (если правильно организована🌚). Задумка такая: делим приложение на несколько мелких независимых частей, и тогда изменения в одной части не потребуют пересборки всего проекта для запуска – потребуется пересобрать только изменённую часть и её зависимости. Так мы и время сэкономим, и сможем отдать какую-нибудь новую часть новому джуну, не боясь, что он в процессе разработки пол-проекта нам поменяет. Пусть сидит там чудит себе на здоровье, на код-ревью посмотрим 😎
Есть два способа деления:
– по слоям Clean-архитектуры (модули app, domain, data и presentation)
– core-feature деление.
С первым всё понятно: тут главное удобство в том, что ты учишься жить по клину, и прям на уровне модулей можешь прописать, что в domain нельзя тащить android-классы, и что domain не зависит от остальных модулей-слоёв. Удобно для начинающих и для тренировки, но в плане масштабирования не очень удобная история: в какой-то момент вам захочется делить на более мелкие части, чем 4 модуля, захочется выносить отдельные фичи в отдельные модули, и приложение начнёт постепенно превращаться в кавардак.
Core-feature деление – более удобная история: в core пихаем всё общее и используемое всеми модулями, а в feature... Тут опять 2 варианта:
– либо один экран – одна feature, либо один флоу – одна feature. Флоу – группа экранов, объединённых общим смыслом – например флоу авторизации или флоу покупки. Чаще всего делят по флоу.
И внутри каждая feature живёт своей жизнью: если там нет работы с данными, а только презентейшн-логика, то там из клин-слоёв только presentation, а если есть и работа с данными, и своя бизнес-логика – то в feature будут все 3 своих clean-слоя. Под каждый слой своя папка внутри фичи.
Во "взрослом" core-feature делении к feature-модулю, в котором лежит вся логика фичи, делают ещё feature-api модуль – это модуль-прослойка, состоящий только из интерфейса модуля, отражающего то, что от этого модуля нужно всем остальным. Если модуль состоит из одной активити и всей сопутствующей логики – значит, скорее всего, апи фичи будет состоять из старта этой активити. И все остальные модули не будут ничего знать о том, что происходит в самой фиче – а будут только использовать апи этой фичи.
Готов поспорить, что ни у кого не найдётся идеального мультимодульного проекта в проде, и чтоб у него было хотя бы тыщ 50 активных юзеров
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4👏2🌚1💯1
Любопытной Варваре на ревью нос оторвали
В одном из проектов, над которым я работаю, я нашёл баг во внешней библиотеке. Я выяснил, что баг появился в конкретном релизе библиотеки.
Что нужно сделать? Правильно, залезть в их мердж-коммит с этим релизом и попытаться понять, а чо они там сломали =)
Параллельно я, разумеется, общался с самими разрабами по поводу бага, и они выкатили фикс в следующем релизе.
И знаете что? Когда я смотрел их код, который я видел впервые в жизни, я за 5 минут предположил возможный источник проблемы и путь её решения.
И их мердж-коммит с новым релизом мою гипотезу подтвердил =)
Лишнее подтверждение тому, что если ты шаришь в computer science и сеньоришь в одном из нормальных ООПшных языков, тебе в целом уже пофиг, на каком языке и что писать – онбординг 5 мин и погнали =)
Ну 5 мин на любой язык это я конечно загнул, но суть вы думаю уловили :)
А у вас было такое, что бэкендеры или айосеры что-то наворотили, а потом ушли в отпуск / уволились, и вам пришлось за ними баги фиксить?)
В одном из проектов, над которым я работаю, я нашёл баг во внешней библиотеке. Я выяснил, что баг появился в конкретном релизе библиотеки.
Что нужно сделать? Правильно, залезть в их мердж-коммит с этим релизом и попытаться понять, а чо они там сломали =)
Параллельно я, разумеется, общался с самими разрабами по поводу бага, и они выкатили фикс в следующем релизе.
И знаете что? Когда я смотрел их код, который я видел впервые в жизни, я за 5 минут предположил возможный источник проблемы и путь её решения.
И их мердж-коммит с новым релизом мою гипотезу подтвердил =)
Лишнее подтверждение тому, что если ты шаришь в computer science и сеньоришь в одном из нормальных ООПшных языков, тебе в целом уже пофиг, на каком языке и что писать – онбординг 5 мин и погнали =)
А у вас было такое, что бэкендеры или айосеры что-то наворотили, а потом ушли в отпуск / уволились, и вам пришлось за ними баги фиксить?)
👍7🔥3👏3🌚2👀1
Наткнулся на странную дичь.
В http-логах вижу, что запрос заканчивается в X, при этом в rx / корутине результат запроса я получаю через X + 1 секунду.
Я канеш понимаю, запрос тяжёлый, респонс там почти на 5 Мб. Но ё-маё, целую секунду на этом терять ваще не круто. К тому же, потом наткнулся на кейс, когда респонс в 10 раз меньше, а простой почти такой же, 0.9с.
При этом я пробовал мокать в проксимене респонс на маленький, больше ничего не меняя – и запрос отдаётся сразу, то есть причина простоя точно в размере респонса.
Пока в раздумьях, что с этим делать. Нашёл старую статью со старым костылём на rx, мб попробую. Но хотелось бы и на уровне корутин решение найти.
Ставь 👻, если понятия не имеешь, как замокать респонс в проксимене, или даже не знаешь значение этой фразы.
В http-логах вижу, что запрос заканчивается в X, при этом в rx / корутине результат запроса я получаю через X + 1 секунду.
Я канеш понимаю, запрос тяжёлый, респонс там почти на 5 Мб. Но ё-маё, целую секунду на этом терять ваще не круто. К тому же, потом наткнулся на кейс, когда респонс в 10 раз меньше, а простой почти такой же, 0.9с.
При этом я пробовал мокать в проксимене респонс на маленький, больше ничего не меняя – и запрос отдаётся сразу, то есть причина простоя точно в размере респонса.
Пока в раздумьях, что с этим делать. Нашёл старую статью со старым костылём на rx, мб попробую. Но хотелось бы и на уровне корутин решение найти.
Ставь 👻, если понятия не имеешь, как замокать респонс в проксимене, или даже не знаешь значение этой фразы.
👻26👍4🔥2🤔2👀2
Сформулировал для себя главное правило эффективного использования нейросетей: ты должен в точности знать, что должно быть на выходе. Иначе нейросеть тебя наебёт, она это умеет делать очень убедительно.
Как-то я пытался отдать чатугпт задачу, с которой сам не мог справиться (это было связано с отрисовкой теней на канвасе), и он мне последовательно выдал с десяток решений, объяснив каждую строчку так, что сам дьявол бы в это поверил. И, разумеется, ничего из этого не сработало, и через часок я плюнул.
P.S.: а потом пришёл айосер (бывший андроидер), который за час это сделал. И я в очередной раз почувствовал себя никчёмным дауном. UI-ные штуки мне до сих тяжело даются, ну мало у меня опыта в них, особенно в анимациях. То ли дело решить сложную архитектурную задачу, чтоб потом 50 следующих поколений разработчиков меня благодарили и восхищались (ну или проклинали, как пойдёт), вот это завсегда!
Как-то я пытался отдать чатугпт задачу, с которой сам не мог справиться (это было связано с отрисовкой теней на канвасе), и он мне последовательно выдал с десяток решений, объяснив каждую строчку так, что сам дьявол бы в это поверил. И, разумеется, ничего из этого не сработало, и через часок я плюнул.
🔥15👍7❤4😁3
В последние недели немного выдохнул. Ученики закончились, на работе без пожаров. Появилось побольше времени на себя, и я активно его использую: начал регулярно ходить на тренировки по сквошу и по бегу.
На обоих типах тренировок ловлю кучу инсайтов, как правильно управлять своим телом. А на беге ещё и мозг ломается, когда надо синхронизировать разные движения ногами и руками.
Зато бегаю теперь сильно правильнее и безопаснее для здоровья, что радует.
А, да, ещё иногда хожу на цигун, или дома практикую. Оттуда словил инсайт "неподвижные медитации хреново работают из-за того, что на них ты все равно работаешь головой, как ни крути, хоть ты её типа и разгружаешь. А медитации в движении позволяют энергию спустить от постоянно работающей головы до постоянно простаивающего тела, отцентрироваться".
Нравится синергия в этом всём: в беге учат правильно дышать, в цигуне учат правильно дышать. Движения в цигуне и в сквоше местами сильно похожи, потому что работа идёт по совпадающим осям.
Эхх, ещё бы занятия по вокалу сюда накатить! Но боюсь это уже совсем перебор будет, 2-3 обучений пока всё же хватит =)
P.S.: а ещё иногда находится время даже в старенький вархаммер погамать, вот же радость! Потом на очереди перепрохождение второго старкрафта, думаю.
На обоих типах тренировок ловлю кучу инсайтов, как правильно управлять своим телом. А на беге ещё и мозг ломается, когда надо синхронизировать разные движения ногами и руками.
Зато бегаю теперь сильно правильнее и безопаснее для здоровья, что радует.
А, да, ещё иногда хожу на цигун, или дома практикую. Оттуда словил инсайт "неподвижные медитации хреново работают из-за того, что на них ты все равно работаешь головой, как ни крути, хоть ты её типа и разгружаешь. А медитации в движении позволяют энергию спустить от постоянно работающей головы до постоянно простаивающего тела, отцентрироваться".
Нравится синергия в этом всём: в беге учат правильно дышать, в цигуне учат правильно дышать. Движения в цигуне и в сквоше местами сильно похожи, потому что работа идёт по совпадающим осям.
Эхх, ещё бы занятия по вокалу сюда накатить! Но боюсь это уже совсем перебор будет, 2-3 обучений пока всё же хватит =)
🔥9❤5🆒3
А вот щас будет больно. Взбодрю вас, с утра пораньше, чтоб въёбывалось получше. Слабым, нервным и слабонервным советую уже заносить палец над кнопкой "Покинуть канал".
В IT вы, скорее всего, сейчас не войдёте.
5-7 лет назад, чтобы войти в IT, было нужно, чтобы у вас горели глаза, и у вас были минимальные навыки.
Сейчас, чтобы войти в IT, надо иметь навыки, близкие к миддлу. А ещё надо быть очень, очень зубастым и цепким, вот как питбуль с картинки. Вас это не устраивает? Считаете это несправедливым? Тогда даже не пытайтесь.
Вы можете удивлять самого Уортона своими знаниями о Даггере, а Елизарова стыдить за плохое знание корутин, но если вы сидите на хх и думаете, что устроитесь так на работу – я вас разочарую.
Если вы думаете, что быстро устроитесь на оплачиваемую работу – разочарую вас ещё раз. Вообще сильно не факт, что вам будут платить на первой работе.
Если вы идёте в IT за баблом – это норм затея, но готовьтесь к тому, что бабло будет через год бесплатной или очень низкооплачиваемой работы.
Затея "Эхх да щас уволюсь с нелюбимой работы, 3 месяца повъёбываю, да устроюсь на джуна" – это утопия. Нужно быть сраным гением – раз, и нужно быть питбулем – два. Где вы видели гениальных питбулей? Вот то-то же.
За 3 месяца вы и на бесплатную стажировку не устроитесь. Полгода – более реальный срок. И то, если знать, куда копать, а не тыкаться, как слепой котёнок.
Я вам так скажу: посмотрите или пересмотрите фильм В погоне за счастьем. Крис Гарднер там не сидел на хх, не так ли? И не ныл "ой рынок сложный у меня не получится((" ? Вот вам нужно быть таким же замотивированным и отбитым, как Крис Гарднер.
У меня такие были среди учеников. Все устроились, или на стажировки, или на работы. Их было очень мало от общей массы.
Готовьтесь к тому, что в IT все места заняты, и вам нужно убедить работодателя в том, что ради вас надо выпихнуть какого-нибудь отъявленного андерперформера. А вы, незнакомец, будете работать лучше.
Поймите, тех, кто ещё не начал, я щас не отговариваю, а тех, кто не закончил – не обвиняю. Это, скорее, мои мысли по поводу того, кого в будущем стоит брать себе в ученики, а кого – нет.
Потому что мне очень больно вкладывать в людей кучу сил, а потом видеть, как они не получают того, что хотели. Я ещё не постиг того наставнического дзена, при котором ты смотришь на то, насколько ты человеку помог, а не на то, чего он достиг. Поэтому с ними и я не получил того, что хотел.
И теперь на своих ознакомительных созвонах я буду отбирать учеников куда жёстче, чем до этого. А с теми, кто фильтр пройдёт, будем ебашить, как не в себя.
Найдутся ли такие? Хер его знает.
В IT вы, скорее всего, сейчас не войдёте.
5-7 лет назад, чтобы войти в IT, было нужно, чтобы у вас горели глаза, и у вас были минимальные навыки.
Сейчас, чтобы войти в IT, надо иметь навыки, близкие к миддлу. А ещё надо быть очень, очень зубастым и цепким, вот как питбуль с картинки. Вас это не устраивает? Считаете это несправедливым? Тогда даже не пытайтесь.
Вы можете удивлять самого Уортона своими знаниями о Даггере, а Елизарова стыдить за плохое знание корутин, но если вы сидите на хх и думаете, что устроитесь так на работу – я вас разочарую.
Если вы думаете, что быстро устроитесь на оплачиваемую работу – разочарую вас ещё раз. Вообще сильно не факт, что вам будут платить на первой работе.
Если вы идёте в IT за баблом – это норм затея, но готовьтесь к тому, что бабло будет через год бесплатной или очень низкооплачиваемой работы.
Затея "Эхх да щас уволюсь с нелюбимой работы, 3 месяца повъёбываю, да устроюсь на джуна" – это утопия. Нужно быть сраным гением – раз, и нужно быть питбулем – два. Где вы видели гениальных питбулей? Вот то-то же.
За 3 месяца вы и на бесплатную стажировку не устроитесь. Полгода – более реальный срок. И то, если знать, куда копать, а не тыкаться, как слепой котёнок.
Я вам так скажу: посмотрите или пересмотрите фильм В погоне за счастьем. Крис Гарднер там не сидел на хх, не так ли? И не ныл "ой рынок сложный у меня не получится((" ? Вот вам нужно быть таким же замотивированным и отбитым, как Крис Гарднер.
У меня такие были среди учеников. Все устроились, или на стажировки, или на работы. Их было очень мало от общей массы.
Готовьтесь к тому, что в IT все места заняты, и вам нужно убедить работодателя в том, что ради вас надо выпихнуть какого-нибудь отъявленного андерперформера. А вы, незнакомец, будете работать лучше.
Поймите, тех, кто ещё не начал, я щас не отговариваю, а тех, кто не закончил – не обвиняю. Это, скорее, мои мысли по поводу того, кого в будущем стоит брать себе в ученики, а кого – нет.
Потому что мне очень больно вкладывать в людей кучу сил, а потом видеть, как они не получают того, что хотели. Я ещё не постиг того наставнического дзена, при котором ты смотришь на то, насколько ты человеку помог, а не на то, чего он достиг. Поэтому с ними и я не получил того, что хотел.
И теперь на своих ознакомительных созвонах я буду отбирать учеников куда жёстче, чем до этого. А с теми, кто фильтр пройдёт, будем ебашить, как не в себя.
Найдутся ли такие? Хер его знает.
🔥12💯6❤5
Хочу вам попиарить канал одного чувака по имени Никита: Dev Easy Notes.
Никита меня об этом не просил, кстати. Просто мне настолько нравится то, что и как он пишет, что я решил и с вами поделиться :)
Он мало того, что умеет понятно и ёмко объяснять всякое из мира андроид и программирования в целом (сам он бывший бэкендер, как я понял), так ещё и у него охуенное чувство юмора, а это редкость в наше время.
А ещё он пишет без прикрас, плюс у него мощная самоирония. Короче, мне заходит прям очень.
Вот вам немного постов, чтоб понимали, за что он мне нравится:
Ржачный, но жизовый пост про страх перед собесами: https://t.iss.one/dev_easy_notes/334
Просто и ёмко о даггере: https://t.iss.one/dev_easy_notes/327
Разнос koinа: https://t.iss.one/dev_easy_notes/328
Охуенно понятно и ёмко про суть MVVM / MVI и их отличия: https://t.iss.one/dev_easy_notes/339
Если его канал вам понравился – ставьте 👻, если нет – 🤨
Никита меня об этом не просил, кстати. Просто мне настолько нравится то, что и как он пишет, что я решил и с вами поделиться :)
Он мало того, что умеет понятно и ёмко объяснять всякое из мира андроид и программирования в целом (сам он бывший бэкендер, как я понял), так ещё и у него охуенное чувство юмора, а это редкость в наше время.
А ещё он пишет без прикрас, плюс у него мощная самоирония. Короче, мне заходит прям очень.
Вот вам немного постов, чтоб понимали, за что он мне нравится:
Ржачный, но жизовый пост про страх перед собесами: https://t.iss.one/dev_easy_notes/334
Просто и ёмко о даггере: https://t.iss.one/dev_easy_notes/327
Разнос koinа: https://t.iss.one/dev_easy_notes/328
Охуенно понятно и ёмко про суть MVVM / MVI и их отличия: https://t.iss.one/dev_easy_notes/339
Если его канал вам понравился – ставьте 👻, если нет – 🤨
Telegram
Dev Easy Notes
Работаю в IT уже 8 лет. Рассказываю про разработку простым языком. Полезность скрыта под тупыми шутками и слоем мата. Лучший underground канал про разработку, который вы сможете найти.
По сотрудничеству писать @haroncode
По сотрудничеству писать @haroncode
🔥7👻6👍2❤1👀1🤗1
This media is not supported in your browser
VIEW IN TELEGRAM
Решал тут давеча UI-ную задачку, суть её была в следующем: есть скроллящийся контент, и когда скроллишь его вниз – он должен скроллиться под другую вьюху, а когда скроллишь его вверх – вьюха должна скроллиться за ним, когда он выедет из-под неё. Вы это, скорее всего, видели в модных тулбарах со всякими AppBarLayout, CollapsingToolbarLayout и иже с ними.
Такое поведение, как я понял, называется sticky. Если вьюха снизу – sticky footer, если сверху – sticky header. Посмотреть можно, вот тут и тут.
И если с тулбаром всё понятно, то вот со вьюхами внизу уже интереснее.
В целом, всё сводится к засовыванию всего в CoordinatorLayout и / или прослушиванию скроллвью и выставлению видимости / отступов в зависимости от этого. Решать можно или переопределением Behavior у CoordinatorLayout, или втупую делать всё руками, вешая OnScrollChangedListener на NestedScrollView.
Через бихевьор – красивее, но у меня чот не завелось T_T. В итоге всё получилось, но через CoordinatorLayout + прослушивание скролла.
Рад, что получилось сделать UI-ную задачу, как я говорил – они у меня идут туго. Местами консультировался у чатГПТ. Правда, по большей части он нёс ахинею и постоянно забывал, что я ему говорил одну фразу назад, ну да ладно. Зато иногда правил мне вёрстку быстрее, чем я бы поправил её сам.
Такое поведение, как я понял, называется sticky. Если вьюха снизу – sticky footer, если сверху – sticky header. Посмотреть можно, вот тут и тут.
И если с тулбаром всё понятно, то вот со вьюхами внизу уже интереснее.
В целом, всё сводится к засовыванию всего в CoordinatorLayout и / или прослушиванию скроллвью и выставлению видимости / отступов в зависимости от этого. Решать можно или переопределением Behavior у CoordinatorLayout, или втупую делать всё руками, вешая OnScrollChangedListener на NestedScrollView.
Через бихевьор – красивее, но у меня чот не завелось T_T. В итоге всё получилось, но через CoordinatorLayout + прослушивание скролла.
Рад, что получилось сделать UI-ную задачу, как я говорил – они у меня идут туго. Местами консультировался у чатГПТ. Правда, по большей части он нёс ахинею и постоянно забывал, что я ему говорил одну фразу назад, ну да ладно. Зато иногда правил мне вёрстку быстрее, чем я бы поправил её сам.
👍5🔥3👏2
Я не вижу будущего у нативной мобильной разработки
Почему? Потому что:
1️⃣ Все стараются экономить и заработать побыстрее
И если раньше бизнес этого просто "хотел", то сейчас, зачастую, это вопрос его выживания. "Или мы порежем бюджет, или через месяц-два-три нам пизда" – реальность многих проектов.
Нативная разработка = x3 команда (андроид + айос + веб). Все, кто смогут съехать на кросс-платформу – съедут, кто не сможет (потому что им нужно нормальное приложение, а не кусок говна) – съедет на мультиплатформу.
2️⃣ Нейронки активно развиваются
Всех разработчиков они не заменят, но ускорить разработку они ускоряют. А это означает одно: штат разработчиков будет и дальше сокращаться.
Зачем держать штат синьоров + миддлов + джунов, если можно держать пару синьоров-миддлов, которые будут ревьюить нейронку и работать с той же скоростью, как весь этот штат, а то и быстрее?🤔 Пока это не совсем так, но всё очень быстро к этому идёт, и я думаю, что этот поезд уже не остановится.
3️⃣ Активно развивается мультиплатформа
KMP, SwiftUI, Compose. Compose пытается тоже стать мультиплатформенным. Пока выглядит коряво, но и KMP 5 лет назад был корявым, а сейчас он куда бодрее.
❗️ Итог: если говорить о будущем 5-10 лет, то полезных на рынке разработчиков, которых будут отрывать с руками, я вижу так:
– Умеет в мультиплатформу андроид+айос+веб
– Умеет управляться с нейронками и писать код кратно быстрее, чем если бы писал своими руками, без критических потерь качества на дистанции. Не надо много ума, чтобы сказать нейронке "сверстай мне вот этот экран и нахуярь такую-то бизнес-логику".
Но тут есть две проблемы:
📍Нейронка обучалась на массиве данных из интернета, а это в большинстве случаев говнокод => если просто вставлять себе код нейронки, у вас будет каша из говнокода, которая через несколько месяцев начнёт тухнуть, вонять, падать и перестать быть поддерживаемой
📍Если вы ещё и сам по себе говнокодер, то вкупе с говнокодом нейронки вы проект закопаете ещё быстрее
Нейронка – это как тупой джун, но он мгновенно пишет код и мгновенно исправляет свои ошибки (хотя порой там будет одна ошибка вместо другой), поэтому для опытного разработчика нейронка очень полезна😏
❓ А че рынок будет делать, когда синьоры и миддлы кончатся? На всех-то их не напасёшься, иначе нахуй бы были нужны стажёры и джуны вообще. А где они найдут стажёров и джунов, которые умеют в нейронки, умеют в мультиплатформу, и при этом умеют делать так, чтоб всё это не обрастало говнокодом?
Им придётся их учить. И если вам кажется, что сейчас порог входа в разработку высокий и рынок сложный, то через 5 лет вы вообще охуеете. Если кто-то надеется "пересидеть, пока всё успокоится", я вас разочарую. Нихуя ничего не успокоится.
Скиллбоксы и кекбряксы будут заманивать людей в свои сети обещаниями "писать мультиплатформу с помощью нейронок".
😈 Думаете, это далёкое будущее? У меня жена-дизайнер недавно написала плагин для фигмы на JS, при этом не имея ни малейшего понятия, что такое это ваше программирование.
Да, я чутка помог, но там помощь была буквально "скобку вот тут надо закрыть, а вот тут он использует ещё не заведённую переменную". Я не ебу, что такое фигма, она не ебёт, что такое программирование, но мы за вечер накидали работающий плагин для дизайнеров. Каково?
🤌 И ещё один факт: тестовые задания в том виде, в котором они сейчас есть, отомрут. Смысл давать обычное тестовое, если человек скормит его нейронке и захуярит вам полноценное приложение за несколько часов?
На тестовых и собеседованиях будут как раз проверять, как быстро вы можете с помощью нейронок писать нормальный код.
Так что, ребятки, пора завязывать с этой нативкой. Отрасль мобильной разработки изменилась. Пора мыслить по-новому и менять подходы.
💥💥💥 Канал Next Level Dev будет о том, как я, android-разработчик с более чем 10- летним стажем, "отказываюсь" от собственной профессии и становлюсь разработчиком следующего уровня, который пишет под несколько платформ сразу. По сути, теперь это дневник моего нового пути :)
Приглашаю вас пройти этот путь вместе со мной. Ставь 👻 если согласен.
Почему? Потому что:
1️⃣ Все стараются экономить и заработать побыстрее
И если раньше бизнес этого просто "хотел", то сейчас, зачастую, это вопрос его выживания. "Или мы порежем бюджет, или через месяц-два-три нам пизда" – реальность многих проектов.
Нативная разработка = x3 команда (андроид + айос + веб). Все, кто смогут съехать на кросс-платформу – съедут, кто не сможет (потому что им нужно нормальное приложение, а не кусок говна) – съедет на мультиплатформу.
2️⃣ Нейронки активно развиваются
Всех разработчиков они не заменят, но ускорить разработку они ускоряют. А это означает одно: штат разработчиков будет и дальше сокращаться.
Зачем держать штат синьоров + миддлов + джунов, если можно держать пару синьоров-миддлов, которые будут ревьюить нейронку и работать с той же скоростью, как весь этот штат, а то и быстрее?
3️⃣ Активно развивается мультиплатформа
KMP, SwiftUI, Compose. Compose пытается тоже стать мультиплатформенным. Пока выглядит коряво, но и KMP 5 лет назад был корявым, а сейчас он куда бодрее.
– Умеет в мультиплатформу андроид+айос+веб
– Умеет управляться с нейронками и писать код кратно быстрее, чем если бы писал своими руками, без критических потерь качества на дистанции. Не надо много ума, чтобы сказать нейронке "сверстай мне вот этот экран и нахуярь такую-то бизнес-логику".
Но тут есть две проблемы:
📍Нейронка обучалась на массиве данных из интернета, а это в большинстве случаев говнокод => если просто вставлять себе код нейронки, у вас будет каша из говнокода, которая через несколько месяцев начнёт тухнуть, вонять, падать и перестать быть поддерживаемой
📍Если вы ещё и сам по себе говнокодер, то вкупе с говнокодом нейронки вы проект закопаете ещё быстрее
Нейронка – это как тупой джун, но он мгновенно пишет код и мгновенно исправляет свои ошибки (хотя порой там будет одна ошибка вместо другой), поэтому для опытного разработчика нейронка очень полезна
Им придётся их учить. И если вам кажется, что сейчас порог входа в разработку высокий и рынок сложный, то через 5 лет вы вообще охуеете. Если кто-то надеется "пересидеть, пока всё успокоится", я вас разочарую. Нихуя ничего не успокоится.
Скиллбоксы и кекбряксы будут заманивать людей в свои сети обещаниями "писать мультиплатформу с помощью нейронок".
😈 Думаете, это далёкое будущее? У меня жена-дизайнер недавно написала плагин для фигмы на JS, при этом не имея ни малейшего понятия, что такое это ваше программирование.
🤌 И ещё один факт: тестовые задания в том виде, в котором они сейчас есть, отомрут. Смысл давать обычное тестовое, если человек скормит его нейронке и захуярит вам полноценное приложение за несколько часов?
На тестовых и собеседованиях будут как раз проверять, как быстро вы можете с помощью нейронок писать нормальный код.
Так что, ребятки, пора завязывать с этой нативкой. Отрасль мобильной разработки изменилась. Пора мыслить по-новому и менять подходы.
💥💥💥 Канал Next Level Dev будет о том, как я, android-разработчик с более чем 10- летним стажем, "отказываюсь" от собственной профессии и становлюсь разработчиком следующего уровня, который пишет под несколько платформ сразу. По сути, теперь это дневник моего нового пути :)
Приглашаю вас пройти этот путь вместе со мной. Ставь 👻 если согласен.
Please open Telegram to view this post
VIEW IN TELEGRAM
👻28❤6🤔3😈1
This media is not supported in your browser
VIEW IN TELEGRAM
Вписался тут в Гладковский AI Advent Challenge. Месяц каждый день ебашим задания от Алексея. А Алексей спуску не даёт =)
Вчера вот я въебал несколько часов на то, чтоб Курсор написал мне андроид-приложуху с простеньким чатом, в котором можно общаться с нейронкой по апи. Лёг в 2 ночи, но справился. Алексей предупреждал, что не пытайтесь делать чат на мобилке, делайте хотя бы десктоп – но так неинтересно.
Больше всего времени ушло на настройку всяких базовых rules, чтоб Курсор не так сильно тупил.
Подключал его к тому самому проекту, который я когда-то вместе с вами писал на двух стримах. Потому что я решил, что вместо того, чтоб по сто раз объяснять нейронке, как ей надо писать код, пусть лучше сама посмотрит. Сказал ей прост сделай новую вкладку и херачь там чат.
Я пока не выёбываюсь, делаю на самом знакомом мне стэке, без этих ваших компоузов и кмп. Потому что сначала надо освоиться с вайб-кодингом как таковым, а потом уже всё остальное.
Из неприятного: я расслабился и позволил ему коммитить-пушить в гит самому, а он взял и запушил мой гпт-токен в публичный репо. Ну, учимся на ошибках, чо ж поделаешь.
Но факт остаётся фактом: первый настоящий вайбкодинг у меня успешно произошёл. Рад. Двигаемся дальше.
Вчера вот я въебал несколько часов на то, чтоб Курсор написал мне андроид-приложуху с простеньким чатом, в котором можно общаться с нейронкой по апи. Лёг в 2 ночи, но справился. Алексей предупреждал, что не пытайтесь делать чат на мобилке, делайте хотя бы десктоп – но так неинтересно.
Больше всего времени ушло на настройку всяких базовых rules, чтоб Курсор не так сильно тупил.
Подключал его к тому самому проекту, который я когда-то вместе с вами писал на двух стримах. Потому что я решил, что вместо того, чтоб по сто раз объяснять нейронке, как ей надо писать код, пусть лучше сама посмотрит. Сказал ей прост сделай новую вкладку и херачь там чат.
Я пока не выёбываюсь, делаю на самом знакомом мне стэке, без этих ваших компоузов и кмп. Потому что сначала надо освоиться с вайб-кодингом как таковым, а потом уже всё остальное.
Из неприятного: я расслабился и позволил ему коммитить-пушить в гит самому, а он взял и запушил мой гпт-токен в публичный репо. Ну, учимся на ошибках, чо ж поделаешь.
Но факт остаётся фактом: первый настоящий вайбкодинг у меня успешно произошёл. Рад. Двигаемся дальше.
🔥10❤5🥰2
Вчера Курсор мне накидал работающий докер-контейнер, который ходит через гитхаб апи в мой аккаунт, собирает данные о репозиториях, делает по ним отчёт и отправляет мне на gmail раз в день.
В целом, если накатить на это дело mcp-контракт, то можно это делать с помощью llm: написать в чате с нейронкой "захерачь мне отчёты раз в день", она по запросу поймёт, что надо обращаться на мой mcp-сервер, ну а дальше примерно то же самое.
А теперь внимание, вопрос: знаю ли я, что такое докер? Ну, чисто понаслышке, но ни разу сам не создавал контейнер. И для меня этот ящик весьма чёрный.
Тем не менее, мы с курсором на пару разрулили ряд проблем и с аутентификацией, и в питон-коде, и в итоге всё это завелось.
Говнокод ли там? Ну разумеется. Работает ли оно? Работает. Но я-то спешу, потому что мне задания дают ежедневные на челлендже, и мне пока это побоку.
Если бы сам делал, для себя, без спешки – то каждую итерацию написания кода ИИ бы проверял на адекватность, особенно с точки зрения архитектуры, солида и вот этого всего.Ну да, ну да, убеждай себя, проверял бы он, ха-ха.
Пока главным результатом 8 дней челленджа считаю то, что нейронка и взаимодействие с ней стало куда понятнее, этот ящик уже не так уж чёрен. И возможности и идеи использования ИИ у меня стали сильно шире. Круто. Едем дальше.
В целом, если накатить на это дело mcp-контракт, то можно это делать с помощью llm: написать в чате с нейронкой "захерачь мне отчёты раз в день", она по запросу поймёт, что надо обращаться на мой mcp-сервер, ну а дальше примерно то же самое.
А теперь внимание, вопрос: знаю ли я, что такое докер? Ну, чисто понаслышке, но ни разу сам не создавал контейнер. И для меня этот ящик весьма чёрный.
Тем не менее, мы с курсором на пару разрулили ряд проблем и с аутентификацией, и в питон-коде, и в итоге всё это завелось.
Говнокод ли там? Ну разумеется. Работает ли оно? Работает. Но я-то спешу, потому что мне задания дают ежедневные на челлендже, и мне пока это побоку.
Если бы сам делал, для себя, без спешки – то каждую итерацию написания кода ИИ бы проверял на адекватность, особенно с точки зрения архитектуры, солида и вот этого всего.
Пока главным результатом 8 дней челленджа считаю то, что нейронка и взаимодействие с ней стало куда понятнее, этот ящик уже не так уж чёрен. И возможности и идеи использования ИИ у меня стали сильно шире. Круто. Едем дальше.
❤6🔥3👍2😁1
И всё же лучше всего у нейронок получается пиздеть. Оно и неудивительно, на людях ж учились 🌚
Причём неважно, клауд это или гпт.
Даёшь ему задание «нейронка по апи должна написать тесты». Он пару раз пробует, у него не получается распарить ответ нормально. Он плюёт и пишет тесты сам, подсовывает это в коде в качестве «фоллбэка, если что-то идёт не так», и рапортует «задача решена, всё работает идеально!».
Всегда, всегда, всегда мать его надо читать код, который он пишет, даже если вам кажется, что задача решена и всё работает. Нейронки охренительно умеют маскировать свои ошибки.
Даёшь ему задание «вот ссылка на доку апи, почитай и реализуй конкретный метод». Он идёт читать, реализовывает, рапортует, что всё работает идеально. На деле же у него не получилось прочитать документацию и он реализовал метод «ну как вижу, примерно», насовав туда несуществующих параметров. Понял я это, когда сам глазами сравнил.
Пока не получается нормально вогнать его в предсказуемые рамки, постоянно приходится переспрашивать и перепроверять.
Особенно бесит, когда он шаг назад сломал то, что до этого работало, говоришь ему «откати всё назад», а он делает вместо этого очередное исправление поверх, которое ещё глубже закапывает проблему.
И, тем не менее, с ним получается всё куда быстрее, чем без него. Но вот с предсказуемостью сроков пока не очень. Порой зависаю на простых заданиях на часы, потому что эта свинья что-то ломает на ровном месте.
Причём неважно, клауд это или гпт.
Даёшь ему задание «нейронка по апи должна написать тесты». Он пару раз пробует, у него не получается распарить ответ нормально. Он плюёт и пишет тесты сам, подсовывает это в коде в качестве «фоллбэка, если что-то идёт не так», и рапортует «задача решена, всё работает идеально!».
Всегда, всегда, всегда мать его надо читать код, который он пишет, даже если вам кажется, что задача решена и всё работает. Нейронки охренительно умеют маскировать свои ошибки.
Даёшь ему задание «вот ссылка на доку апи, почитай и реализуй конкретный метод». Он идёт читать, реализовывает, рапортует, что всё работает идеально. На деле же у него не получилось прочитать документацию и он реализовал метод «ну как вижу, примерно», насовав туда несуществующих параметров. Понял я это, когда сам глазами сравнил.
Пока не получается нормально вогнать его в предсказуемые рамки, постоянно приходится переспрашивать и перепроверять.
Особенно бесит, когда он шаг назад сломал то, что до этого работало, говоришь ему «откати всё назад», а он делает вместо этого очередное исправление поверх, которое ещё глубже закапывает проблему.
И, тем не менее, с ним получается всё куда быстрее, чем без него. Но вот с предсказуемостью сроков пока не очень. Порой зависаю на простых заданиях на часы, потому что эта свинья что-то ломает на ровном месте.
😁11🔥4👍3❤2🤔1
📱System Design в мобильной разработке — это про архитектуру, которая выходит за рамки экранов и навигации.
Чтобы приложения масштабировались, выдерживали нагрузку и не ломались при росте — нужен системный подход.
Как выстроить его на практике? Подробно обсудим это на Podlodka Android Crew, 15-19 сентября.
В программе:
🧩 Бинарная совместимость: где с ней сталкиваются мобильные разработчики и какие ошибки чаще всего приводят к проблемам. (Абакар Магомедов, Альфа-Банк)
🏗️ Мобильный архитектор: какие решения он принимает и почему без этой роли сложно развивать сложные приложения. (Эдуард Некрутов, Blink)
⚙️ Dependency Injection в KMP: обзор фреймворков и разбор, как выбрать подходящее решение под проект. (Александр Власюк, РайффайзенБанк)
⚡️BDUI в Android: опыт от DivKit, Beduin и Duit. Как перестать хардкодить экраны и ускорить эксперименты, чтобы быстрее проверять гипотезы.
🔗 Подключайся — будет полезно
По промокоду для подписчиков скидка 500 р:android_crew_14_hVUhyT
Чтобы приложения масштабировались, выдерживали нагрузку и не ломались при росте — нужен системный подход.
Как выстроить его на практике? Подробно обсудим это на Podlodka Android Crew, 15-19 сентября.
В программе:
🧩 Бинарная совместимость: где с ней сталкиваются мобильные разработчики и какие ошибки чаще всего приводят к проблемам. (Абакар Магомедов, Альфа-Банк)
🏗️ Мобильный архитектор: какие решения он принимает и почему без этой роли сложно развивать сложные приложения. (Эдуард Некрутов, Blink)
⚙️ Dependency Injection в KMP: обзор фреймворков и разбор, как выбрать подходящее решение под проект. (Александр Власюк, РайффайзенБанк)
⚡️BDUI в Android: опыт от DivKit, Beduin и Duit. Как перестать хардкодить экраны и ускорить эксперименты, чтобы быстрее проверять гипотезы.
🔗 Подключайся — будет полезно
По промокоду для подписчиков скидка 500 р:
👍3❤1
Раскрываю магию нейронок: часть 1
Если ты – не сеньорский задрот мл-щик, которого не пугают слова эмбеддинг и тензор, то под "нейронкой" ты подразумеваешь сайты типа chatgpt.com или midjourney.com, на которых ты в чате общаешься с нейронкой, а она делает тебе всякую магию.
Нырнём-ка чуть поглубже, чтоб это не было для тебя таким чёрным ящиком:
То, что ты называешь нейронкой, на самом деле является полезным интерфейсом над LLM.
LLM (Large Language Model) – это, собственно, и есть сама нейронка. И её задача проста: понять твой запрос, который ты ей делаешь на "natural language" (обычном разговорном языке), и на таком же языке выдать тебе ответ из своей базы данных, на которой её предварительно обучили.
LLM, как большинство из вас знает, предобучают на огромном массиве данных из интернета. Грубо говоря, LLM – это та же википедия, в которую ты загоняешь запрос и получаешь наиболее релевантный ответ. Всё. Никакой магии. Да, под капотом там куча математики, но суть такая.
Поэтому LLM не может врать, она может только ошибаться. Любой её ответ – это просто поиск в её базе данных наиболее похожего ответа на твой вопрос. И если ты формулируешь вопрос так же, как его сформулировал какой-нибудь дебил на каком-нибудь форуме – ты и получишь ответ этому дебилу на этом форуме. Но, скорее всего, в вежливом ключе (хотя, говорят, не всегда).
Следовательно, твоя задача при промптировании – максимально сузить для LLM область, в которой ей надо искать ответ – чтобы она не полезла не на тот форум. Вот и вся суть "промпт инжиниринга".
Ещё раз: у нейронки нет эмоций. Однако у неё, видимо, есть ряд топорных надстроек (например, в thinking версиях видно, что на раздражение пользователя она реагирует как на триггер к изменению подхода – ровно так же, как если бы ты вместо "да мать твою сука" написал ей "измени подход, ты ходишь кругами").
Но запомните. Сама по себе LLM, будь это чатгпт или миджорни – максимально тупой инструмент, который просто сопоставляет ваш запрос с запросами, на которых его предобучили.
Чатгпт предобучили сопоставлять символам символы, а миджорни – символам изображения.
Но каким же нахрен образом она тогда ходит на сайты и берёт оттуда инфу? Как она тогда может сходить и посмотреть мой код или мои имейлы?
Если ты – не сеньорский задрот мл-щик, которого не пугают слова эмбеддинг и тензор, то под "нейронкой" ты подразумеваешь сайты типа chatgpt.com или midjourney.com, на которых ты в чате общаешься с нейронкой, а она делает тебе всякую магию.
Нырнём-ка чуть поглубже, чтоб это не было для тебя таким чёрным ящиком:
То, что ты называешь нейронкой, на самом деле является полезным интерфейсом над LLM.
LLM (Large Language Model) – это, собственно, и есть сама нейронка. И её задача проста: понять твой запрос, который ты ей делаешь на "natural language" (обычном разговорном языке), и на таком же языке выдать тебе ответ из своей базы данных, на которой её предварительно обучили.
LLM, как большинство из вас знает, предобучают на огромном массиве данных из интернета. Грубо говоря, LLM – это та же википедия, в которую ты загоняешь запрос и получаешь наиболее релевантный ответ. Всё. Никакой магии. Да, под капотом там куча математики, но суть такая.
Поэтому LLM не может врать, она может только ошибаться. Любой её ответ – это просто поиск в её базе данных наиболее похожего ответа на твой вопрос. И если ты формулируешь вопрос так же, как его сформулировал какой-нибудь дебил на каком-нибудь форуме – ты и получишь ответ этому дебилу на этом форуме. Но, скорее всего, в вежливом ключе (хотя, говорят, не всегда).
Следовательно, твоя задача при промптировании – максимально сузить для LLM область, в которой ей надо искать ответ – чтобы она не полезла не на тот форум. Вот и вся суть "промпт инжиниринга".
Ещё раз: у нейронки нет эмоций. Однако у неё, видимо, есть ряд топорных надстроек (например, в thinking версиях видно, что на раздражение пользователя она реагирует как на триггер к изменению подхода – ровно так же, как если бы ты вместо "да мать твою сука" написал ей "измени подход, ты ходишь кругами").
Но запомните. Сама по себе LLM, будь это чатгпт или миджорни – максимально тупой инструмент, который просто сопоставляет ваш запрос с запросами, на которых его предобучили.
Чатгпт предобучили сопоставлять символам символы, а миджорни – символам изображения.
🔥4👍2👏2❤1