Всем привет! Я на Мосбирже занимаюсь мобильной разработкой под Android. Осенью этого года мы начали разрабатывать приложение для платформы личных финансов Финуслуги и воспользовались возможностью делать UI сразу на Jetpack Compose. Как и всегда, сразу встал вопрос выбора архитектуры многомодульности и механизма навигации. Решение должно быть, с одной стороны, достаточно лаконичным и понятным для новых разработчиков. С другой стороны, оно должно быть масштабируемым, чтобы рост числа и размера модулей не создавал неприятностей, таких как раздражающее времени сборки или частые merge-конфликты.
Все потоки
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Новости
Окрашивание изображений
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/f43/ec7/eed/f43ec7eed7f3930266adb3c95ee71a64.png)
Статья про окрашивание изображений на основе работы Color2Embed: Fast Exemplar-Based Image Colorization using Color Embeddings. Рассмотрим, как переносить цвет с одной картинки на другую с помощью смеси из U-Net и StyleGAN v2.
Как я стал «лицензиатом» ZOON. Очередной отрицательный отзыв о “премиум” разводилове zoon
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/4f6/c35/5af/4f6c355af48087d93f8a1bd8badaafa9.jpg)
Наверное, все знают Zoom — программу для организации видеоконференций, которую разработал умница Эрик Юань из Zoom Video Communications. Но не все знают Zoon — "инновационный комплексный b2b-инструмент для привлечения клиентов и управления репутацией в интернете", которым командует ООО «ЗУН». Сбила с толку фраза, что эта компания прошла экспертизу Фонда "Сколково" (ссылка на источник).
Эй, ребята в Сколково! Вы там что, раздаете свой статус как водительские права? Ваш "резидент", приступая к исполнению договорных обязательств по "управлению репутацией", начал с того, что заменил мои оригинальные сервисные сообщения в интернете на шаблонные, много раз используемые, что мгновенно застопорило SEO-продвижение. Googl допускает только уникальные тексты - это знает любой школьник. И за тот месяц, что я безуспешно пытался найти идиота, давшего это распоряжение, они продолжали действовать в том же духе. И вот результат. Согласно статистике того же Google, мои рейтинги как профессионала упали в Интернете до уровня городской канализации - минус 50% в первый же месяц. А всего за три месяца, которые мне довелось пережить под спудом услуг "сколковкой фирмы", число обращений к известному до этого времени гипнотерапевту снизилось (барабанная дробь) в 3 раза! И это, не считая того, что я подарил ООО "Zoon" в виде предоплаты 100 тысяч настоящих рублей. А самое главное, жаловаться некуда. Оказывается, я подписал не договор, а лицензионное соглашение, которое контрагента ни к чему не обязывает. Естественно, я ни сном, ни духом (все таки "участник "Сколково" с 2020 года"), поэтому подписал предложенную бумагу как итог наших обсуждений ДОГОВОРА. Конечно, меня могут спросить: а где были твои глаза? Ответ прост: глаза всегда видят то, что хочет сознание. Так устроена психика человека, - говорю это как профессиональный гипнотизер. Длительные беседы о ДОГОВОРЕ сформировали мои ожидания таким образом, что я подписывал ДОГОВОР, не придавая значения тому, что передо мной совсем другой по форме документ. Такое бывает. В законе для такого рода случаев даже предусмотрена статья за мошенничество, когда заказчик вводится в заблуждение исполнителем в части существа обязательств и существа услуг. Способ введения именно такой: чтобы заказчик был уверен, что подписывает то, о чем договорились. Юрист, который помогал мне понять суть подписанных мною документов, строго смотрел на меня поверх очков: "Ты ж колдун - сделай так, чтобы у них яйца отсохли". Вы не поверите - я в первый раз пожалел о том, что расхожее мнение о моей работе не соответствуют действительности.
(с) Психолог, гипнотерапевт Геннадий Иванов
Как тимлиду обучить распределенную команду работать с Git
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/f02/759/b45/f02759b452b72cbbadefc67cbd2e6f63.png)
Git, как технология, прост в изучении — вменяемому разработчику требуется несколько часов и доступ к документации, чтобы понять базовые принципы его работы. Но в реальной жизни — теории недостаточно. Поэтому IT-компании создают простые пошаговые инструкции, чтобы новички быстро и безболезненно вливались в работу, старички работали единообразно и предсказуемо, а тимлиды могли легко управлять этим процессом.
Маленькие «малинки» в крупном дата-центре (часть 4 — автоустановка)
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/webt/8p/ni/4e/8pni4eocqpzqvgecp-pcsejygyg.png)
Это заключительная часть цикла статей, посвященного интеграции одноплатных компьютеров Raspberry Pi 4 в наши дата-центры. Мы рассмотрели, что происходит при загрузке «малинки» с момента включения до загрузки в операционную систему. Создали собственный мини-дистрибутив, который загружается по TFTP-протоколу и работает напрямую из памяти. Поговорили о хуках (hooks) Kea DHCP-сервера, разобрались, как они работают и что нужно для их создания.
Теперь соберем эти знания в цельную картину: зачем нам кастомная опция 224 и как управлять переключением режимов загрузки по сети и с локальной SD-карты.
Как не зарыться в задачах и выстроить работу в команде: наш опыт работы по scrum
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/42c/770/1fa/42c7701faaaaceb45ba420791db9ed4e.png)
Меня зовут Иванов Алексей. Я DS и скрам-мастер в центре ML-экспертизы разработчика HRtech-решений TalentTech. Мы занимаемся обучением моделей для проектов компании.
Ровно год назад наша команда самоорганизовалась и начала применять подход SCRUM (будем дальше — скрам.) Я расскажу о наших внутренних процессах: что произошло, что происходит и, возможно, будет происходить с нами в ближайшем будущем.
Как я на порядок ускорил переподключение к мастер-узлу в Redis Sentinel
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/7c7/23b/974/7c723b97484d4afd7f80f14a3d66fab8.png)
Не так давно, развернув в Kubernetes уже привычный инфраструктурный компонент в виде кластера Redis Sentinel + redis-sentinel-proxy, мы столкнулись с интересными проблемами. При тестировании времени переключения мастера выяснилось, что оно составляет полторы минуты. Это очень долго.
Расскажу, как получилось ускорить процесс.
Восстановление старинного Авометра модель 8 Марк II
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/webt/gc/om/so/gcomso9uy3axg3hncvsj2fvxuwy.jpeg)
Когда начинал работать над статьёй "Способы питания электролюминесцентных индикаторов", для наглядности я подбирал наиболее интересный и красивый стрелочный мультиметр. Тогда мне удалось купить весьма стильный, но всё же не самый элегантный ампервольтметр, отечественного производства. Сайт объявлений запомнил мой поиск и начал мне подсовывать и дальше подобные приборы, и в один из дней попался мне он, этот невероятный красавец, за просто смешные деньги. Это был чистокровный старинный британец, а по цене был таким же, как и его отечественный собрат. Хотя даже по фотографиям в объявлении, было ясно, что судьба его изрядно потрепала, и я предполагал, да наверняка он даже не работает. Но желание иметь такого красавца в хозяйстве, хотя бы в интерьере — не оставило мне выбора.
Отменив все дела на вечер, я помчался за данным устройством на другой конец Москвы. И, о чудо, мне удалось успеть и купить его первым. Дальше же предстояла работа по восстановлению или хотя бы приведению в порядок данного аппарата.
Навыки ITSM-профессионала
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/webt/8e/ci/cb/8ecicbm_tudpdy8bh_4uh-zm4do.jpeg)
Машинное обучение, облачные вычисления и интернет вещей меняют подход компаний к работе с клиентами. Использование этих технологий в среде управления ИТ-услугами (ITSM, IT Service Management) помогает организациям устранять ошибки и отслеживать сервисные бизнес-процессы, тем самым повышая общий уровень сервиса. Поэтому с каждым годом компании все больше полагаются на автоматизацию, чат-ботов и облака.
10 навыков, необходимых для достижения успеха в ITSM — в этой статье.
Новый Brave Wallet, встроенный в браузер криптокошелёк без всяких расширений
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/b1c/170/b6b/b1c170b6b00c32c8dd719b2140266c71.png)
Мы запустили Brave Wallet, криптокошелёк, встроенный в десктопную версию нашего браузера, который позволяет пользователям Brave хранить, управлять, накапливать и обменивать свой криптопортфель. В отличие от других криптокошельков, наш не требует установки расширений: он встроен в браузер, что увеличивает безопасность и уменьшает нагрузку на железо. Пользователи могут совершить транзакции практически с любой криптой, не теряя в безопасности и производительности, а также подключать другие кошельки и приложения веб 3.0. Вскоре кошелёк Brave станет доступен и в наших мобильных приложениях.
Австралия не Кремниевая долина: почему я вернулся в Москву спустя шесть лет
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/f51/6f3/c91/f516f3c91fc05e5ccf1b789ab1a66b69.jpg)
Я проработал инженером по инфраструктуре в крупной клинике Мельбурна почти шесть лет. И этой весной решил вернуться не только в Россию, но и в ту же компанию, в которой работал до отъезда. Я хочу рассказать о моем опыте, который может быть полезен ИТ-специалистам и особенно инженерам, которые уже собираются в Австралию, или тем, кто еще сомневается, стоит ли вообще уезжать.
Погружение в Helm Package Manager. Часть первая
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/3da/c5c/5b5/3dac5c5b5e42c9ff3d6b3a49a9919fee.jpg)
Helm — один из самых популярных пакетных менеджеров для Kubernetes. Познакомиться с ним полезно любому DevOps-инженеру и всем, кто сталкивается с задачами деплоя приложений. Эта статья — первый из двух материалов, которые можно вместе можно рассматривать как краткое, но достаточно полное введение в Helm.
Как Яндекс делает обычные автомобили беспилотными
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/webt/ph/un/e9/phune9kaf2uyb9edisfjwkdwqfo.jpeg)
Привет, меня зовут Антон Чистяков. Пару лет назад я работал в хелпдеске Яндекса и даже писал здесь про то, как мы придумали вендомат с аксессуарами. Теперь отвечаю за сборку беспилотных автомобилей и роботов-доставщиков. Под катом расскажу, как мы делаем простые машины беспилотными: от момента покупки авто и выбора имени до сборки и калибровки, на которых всё, впрочем, не заканчивается.
Серверные бэкапы
Хотя часть проблем связана с уязвимостями и эксплойтами нулевого дня, которые оставляют корпоративные сети без защиты, необходимость сберечь то невероятное количество данных, которое собрано, сохранено и обработано бизнесом, ставит перед нами особые задачи.
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/webt/bj/l7/oo/bjl7oobp3ypkvrlzuaprcekiucq.jpeg)
DINS SCALA EVENING
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/df1/2b2/7ee/df12b27ee229fb9bdbe180f29f466648.jpg)
Андрей Обухов из DINS расскажет, что такое Software Transactional Memory. Ахтям Сакаев из компании «Метр квадратный» поделится, как исключить баги на этапе моделирования с использованием ADT. Участие бесплатное, но необходимо зарегистрироваться. Подробности под катом.
Как встать на путь sustainability: гендерные квоты и экоофисы
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/632/e4c/09a/632e4c09aeb538eeb7455f85c5171ba5.jpg)
Времена, когда целью организации любого бизнеса в IT было извлечение максимальной прибыли, кажется, прошли. Теперь мало хорошо работать и хорошо зарабатывать. От любого стартапа в Европе и США ожидают большего, чем просто внушительной выручки и налогов. Кроме экономических показателей, инвесторы хотят видеть в любом стартапе и предприятии движение в сторону sustainability – сохранения окружающей среды, общественного прогресса и справедливой экономии.
Настраиваем GitLab Container Registry
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/891/267/c4e/891267c4e1e3739d7b51a7f5135c69fb.png)
В этой статье мы рассмотрим, как настроить реестр образов GitLab Container Registry, находящийся за обратным прокси сервером NGINX. Предполагается, что у вас уже установлен GitLab с помощью пакета Omnibus. Согласно документации, Container Registry можно настроить на том же домене, на котором работает сам GitLab, но в случае работы GitLab за прокси сервером, необходимо завести отдельный домен для реестра образов, чтобы избежать конфликта доменных имен при настройке виртуальных хостов в GitLab Nginx.
Реестр образов будет доступен по адресу: registry.example.com. Добавляем А запись для домена реестра в DNS. Приводим конфиг виртуального хоста на сервере обратного прокси к следующему виду:
Тип данных Either как альтернатива выбрасыванию исключений
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/48a/fda/a05/48afdaa05a73a9a34d1f499b90c404b6.png)
Исключения – это базовый элемент многих языков программирования. Они обычно используются для обработки аномальных или непредусмотренных условий, при устранении которых необходим особый подход, нарушающий нормальный поток задач в приложении. В некоторых языках, например, в C++ или Java, исключения используются повсюду. Но не все языки спроектированы так. В C# или Kotlin нет проверяемых исключений. В других языках, например, Go и Rust, исключений нет вообще.
Думаю, код, выбрасывающий исключение всякий раз, когда произойдет что-то неожиданное, сложен для понимания, и его тяжелее поддерживать. В этой статье я хочу рассказать о типе данных Either
как об альтернативном способе обработки условий, приводящих к ошибкам. Примеры в этой статье даны на Kotlin, поскольку, на мой взгляд, за его синтаксисом легко следить. Но сами концепции не уникальны для Kotlin. Их, так или иначе, можно реализовать в любом языке, поддерживающем функциональное программирование.
Безопасность ПЛК: 13-15) Сетевые интерфейсы и безопасная перезагрузка ПЛК
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/upload_files/b44/b45/609/b44b45609516733c682092003e7bce8b.png)
Контроллеры ПЛК и модули сетевого интерфейса обычно поддерживают несколько протоколов связи, которые включены по умолчанию. Отключите порты и протоколы, которые не требуются для приложения.
Ограничьте типы соединений и доступные данные для сторонних интерфейсов. Соединения или интерфейсы передачи данных должны быть четко определены и ограничены, чтобы чтение/запись были доступны только для необходимого обмена данными.
Определите безопасные состояния для процесса в случае перезапуска ПЛК.
Разбираем рекомендации по безопасному программированию ПЛК, формируем список своих рекомендаций. Всех неравнодушных прошу под кат.
Простая система ветровой эрозии на основе частиц
![](https://webcf.waybackmachine.org/web/20211117095625im_/https://habrastorage.org/getpro/habr/post_images/ef9/6cd/cca/ef96cdcca29da1d6bc88aad6b34c9be8.png)
Полный исходный код этого проекта, а также объяснение того, как его использовать и читать, можно найти на Github [здесь]. Проект рендерится при помощи моего собственного [TinyEngine].
В прошлом году я много экспериментировал со способами реализации эрозии на основе частиц для генерации рельефов.
Я считаю, что эрозия на основе частиц обеспечивает хороший баланс между реализмом и простотой, давая интуитивные описания переноса массы и энергии при их движении. Следовательно, они могут воспроизводить геомофологическое явление при низкой сложности концепций/кода как хорошие приблизительные модели. Благодаря этому они более доступны для большинства пользователей, чем исследовательские модели.
Один из самых хорошо известных и производительных алгоритмов улучшения генерации рельефов на основе шума — это гидравлическая эрозия на основе частиц [перевод на Хабре]. Этот алгоритм чрезвычайно прост и обеспечивает отличные результаты относительно малыми усилиями.
Его результаты убедили меня дополнить эту систему потоками воды и водоёмами, что привело к созданию процедурной гидрологической системы [перевод на Хабре]. Используя упрощённую модель, система успешно передаёт многие эффекты реального мира, поэтому я заинтересовался в дальнейшем исследовании симуляции геоморфологии на основе частиц.
Вскоре я осознал, что внеся только незначительные изменения, эти системы можно дополнить ветровой эрозией и основными эоловыми процессами. Так как в ненаучной литературе мне не удалось найти хороших ресурсов о реализации ветровой эрозии на карте высот, я решил спроектировать и реализовать собственную модель ветровой эрозии на основе частиц для процедурного рельефа.
Получившаяся система хорошо работает, позволяя моделировать движущиеся осадочные породы, а также сплошные неподвижные препятствия. Она воссоздаёт многие эффекты, наблюдаемые при реальной ветровой эрозии, например, серповидные дюны!