Как стать автором
Обновить
-1
0
Mike Kosulin @MikeKosulin

CTO

Отправить сообщение

Как перевезти интернет-магазин на Spree и RoR в облако и улучшить стабильность сайта в 4 раза?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.3K

Всем привет! Меня зовут Сергей Спорышев, я директор направления DevOps-продуктов в ITSumma. В этом тексте я хочу рассказать, как задача по переносу в облако простого на первый взгляд проекта оказалась не такой уж простой и превратилась в целый квест.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии6

Лучшие ИИ-инструменты для аннотирования видео в 2023 году

Время на прочтение4 мин
Количество просмотров4.8K

Процесс добавления метаданных, тэгов или меток к различным объектам, действиям или событиям в видео называется аннотированием видео. Живые аннотаторы могут выполнять эту задачу вручную, однако благодаря ИИ существенную часть процесса можно автоматизировать. Алгоритмы ИИ используют компьютерное зрение (computer vision, CV) для изучения и понимания покадрового содержания видео, а затем распознают и классифицируют объекты, действия или события на основании их визуальных элементов.

Давайте рассмотрим некоторые из лучших инструментов аннотирования видео на основе ИИ.
Читать дальше →
Всего голосов 7: ↑5 и ↓2+3
Комментарии1

Как использовать Kotlin Multiplatform ViewModel в SwiftUI и Jetpack Compose

Время на прочтение9 мин
Количество просмотров10K

Мы в IceRock Development уже много лет пользуемся подходом MVVM, а последние 4 года наши ViewModel расположены в общем коде, за счет использования нашей библиотеки moko-mvvm. В последний год мы активно переходим на использование Jetpack Compose и SwiftUI для построения UI в наших проектах. И это потребовало улучшения MOKO MVVM, чтобы разработчикам на обеих платформах было удобно работать с таким подходом.

30 апреля 2022 вышла новая версия MOKO MVVM - 0.13.0. В этой версии появилась полноценная поддержка Jetpack Compose и SwiftUI. Разберем на примере как можно использовать ViewModel из общего кода с данными фреймворками.

Пример будет простой - приложение с экраном авторизации. Два поля ввода - логин и пароль, кнопка Войти и сообщение о успешном входе после секунды ожидания (во время ожидания крутим прогресс бар).

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Разработка под Flipper Zero: быстрый старт и первое приложение

Время на прочтение19 мин
Количество просмотров28K

Итак, это случилось. Я добыл Flipper Zero в бою (ну, на самом деле мне его выдали на хакатоне), и естественно, что интереснее всего не играть в него, используя уже сделанные кем-то функции, а писать что-то новое. Примерно так же я развлекался с Pebble. Тут, кстати, все очень похоже — МК, RTOS, небольшой монохромный экранчик, си.

Поэтому давайте попробуем что-нибудь под него написать. Для начала, что-то совсем простое, чтобы освоиться с SDK, не закапываясь в отладку и сложности RTOS, но функциональное. Есть кнопки, есть экранчик, давайте напишем счетчик-кликер. Нажимаете кнопку — число увеличивается. Подойдет считать посетителей, круги на стадионе, взломанные домофоны или сообщения в чате русскоязычного комьюнити флиппера (по утрам, в особенно активное время там их бывает до 2к, так что я бы на вашем месте подумал, прежде чем нажимать кнопку Join).

Читать далее
Всего голосов 122: ↑119 и ↓3+116
Комментарии74

Как объяснить детям, что такое Apache Kafka за 15 минут с картинками и выдрами

Время на прочтение4 мин
Количество просмотров29K


Я учусь иллюстрировать сложные процессы с помощью комиксов. Нашла себе в копилку крутой кейс: как с помощью комиксов про милых выдр можно ребенку объяснить такую сложную штуку как Apache Kafka, и сделать мир немного добрее.

«Легко по течению» — легкое введение в потоковую обработку и Apache Kafka. Группа выдр обнаруживает, что они могут использовать гигантскую реку для общения друг с другом. По мере того, как все больше выдр перемещается в лес, они должны научиться адаптировать свою систему, чтобы справиться с возросшей активностью леса.

Под катом 25 слайдов, объясняющие основы Kafka для детей и гуманитариев. И много милых выдр.

Читать дальше →
Всего голосов 32: ↑24 и ↓8+16
Комментарии18

Хакаем CAN шину авто. Мобильное приложение вместо панели приборов

Время на прочтение7 мин
Количество просмотров111K

Я продолжаю изучать CAN шину авто. В предыдущих статьях я голосом открывал окна в машине и собирал виртуальную панель приборов на RPi. Теперь я разрабатываю мобильное приложение VAG Virtual Cockpit, которое должно полностью заменить приборную панель любой модели VW/Audi/Skoda/Seat. Работает оно так: телефон подключается к ELM327 адаптеру по Wi-Fi или Bluetooth и отправляет диагностические запросы в CAN шину, в ответ получает информацию о датчиках.

По ходу разработки мобильного приложения пришлось узнать, что разные электронные блоки управления (двигателя, трансмиссии, приборной панели и др.) подключенные к CAN шине могут использовать разные протоколы для диагностики, а именно UDS и KWP2000 в обертке из VW Transport Protocol 2.0.

Как телефон взаимодействует с автомобилем
Всего голосов 109: ↑109 и ↓0+109
Комментарии123

Тестирование From Zero to Hero. Часть 1

Время на прочтение6 мин
Количество просмотров13K

Всем привет! Меня зовут Сергей, я работаю в команде Тинькофф. Сегодня я хочу рассказать, как мы в Тинькофф приходили к классической пирамиде тестирования. 

Рассказ будет в трех частях:

- Трудности, с которыми нам пришлось столкнуться, и как мы их преодолевали.

- Конкретные решения по некоторым распространенным кейсам при написании интеграционных тестов.

- Подход к написанию E2E-тестов (тестов, покрывающих взаимодействие всех систем приложения, включая back-end и пользовательский интерфейс) с использованием паттерна PageObject, пришедшего к нам из мира веб-разработки.

Читать далее
Всего голосов 19: ↑19 и ↓0+19
Комментарии6

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон, часть 2

Время на прочтение17 мин
Количество просмотров59K

Я продолжаю выразительно пересказывать документацию Ансибла и разбирать последствия её незнания (ссылка на предыдущую часть).


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


Мы будем разбирать каждый элемент инвентори (кроме host_group_vars plugin) и обсуждать зачем он, как его использовать правильно, и как неправильно.


Оглавление:


  • Что такое хост? (и немного про транспорты)
  • Доступ IP vs FQDN; inventory_hostname vs ansible_host
  • ansible_user — писать или не писать?
  • Группы
  • Переменные: в инвентори или в плейбуку?
  • Классификация инвентори по происхождению.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии15

simctl: управление симуляторами Apple через терминал

Время на прочтение12 мин
Количество просмотров16K
Всем привет! Меня зовут Паша Лесюк, я работаю мобильным тестировщиком в компании Циан. В этой статье я расскажу о возможностях управления яблочными симуляторами из командной строки.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии5

Самомотивация технаря: уравнение прокрастинации, эффект шредера и трюки с едой

Время на прочтение14 мин
Количество просмотров31K
Привет! Меня зовут Игорь, я занимаюсь машинным обучением в Lamoda. До этого я несколько лет работал в науке, что сильно сформировало мое мышление в технарскую сторону.

Когда занимаешься наукой, иногда приходится делать не очень увлекательные вещи. Например, заполнять бюрократические бумажки, писать статьи и делать публикации в журналах, выступать на конференциях. Иногда очень тяжело себя заставить. Я два раза писал кандидатскую диссертацию в разных странах, и каждый раз это шло через усилие. В тот момент я задумался: наверняка есть люди, которые испытывали то же самое, и возможно, у них есть фреймворк, который можно использовать. Так и оказалось! Я нашел несколько интересных решений и опробовал на себе.

Этими находками я решил поделиться в этой статье.

  • Поговорим про мотивацию самого себя, а не кого-то другого;
  • Узнаем, что такое мотивационное уравнение и как его использовать;
  • Разберём, как влиять на факторы мотивации;
  • И какие есть сервисы и инструменты для этого.

Это статья не про мотивацию сотрудников Lamoda, а про мотивацию, которую я нашел для себя.

image
Всего голосов 54: ↑50 и ↓4+46
Комментарии16

Всё, что нужно знать о Progressive Web App (PWA)

Время на прочтение6 мин
Количество просмотров45K
image

PWA — прогрессивные веб-приложения.

Предупреждение. Эта статья не проспонсирована PWA. Все взгляды и мнения в статье принадлежат только её автору.

Progressive Web App или PWA — лучший способ для разработчиков заставить свои веб-приложения загружаться быстрее и быть более производительными. PWA — это веб-сайты, которые используют современные веб-стандарты, что дает возможность устанавливать их на компьютер или устройство пользователя. В работе они как приложения. Самый известный пример — это Twitter, который запустил сайт mobile.twitter.com как PWA на React и Node.js.
Читать дальше →
Всего голосов 30: ↑19 и ↓11+8
Комментарии43

Как начать использовать USB Type-C в своих разработках

Время на прочтение13 мин
Количество просмотров44K

В современных embedded-устройствах используется огромное количество различных разъемов, таких как USB Type-B, miniUSB, microUSB и так далее. Все они отличаются форм-фактором, максимальной пропускной способностью и другими различными характеристиками. Самым верным решением в данной ситуации было бы минимизировать количество используемых разъемов и остановиться на каком-то одном, «едином» для большинства разработок. Наиболее перспективным выглядит использование разъема Type-C. В нем объединены невероятная пропускная способность с высокой мощностью питания. Такие производители, как Apple, Huawei, Sony уже внедряют разъем Type-C в свои разработки, постепенно отказываясь от использования «старых» разъемов. А чем embedded-разработчики хуже?


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

Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии57

Чек-лист ИТ-стартапа на начальной стадии развития: что нужно сделать, прежде чем тестировать каналы продаж

Время на прочтение11 мин
Количество просмотров40K
В Акселераторе ФРИИ работу со стартапами начинают с того, что пытаются определить, на какой стадии развития находится компания. Почему именно с этого? В целом, большая часть проблем у стартапов появляются от отсутствия фокуса: предприниматели совершают много ненужных действий, не концентрируясь на том, что приведет их бизнес к точке безубыточности. Чтобы понять, какие действия компании необходимо совершить в настоящий момент, нужно определить, на каком этапе развития она находится. Для этого во ФРИИ используется такой инструмент, как дорожная карта или road map. Мы выделяем в развитии ИТ-стартапов три больших этапа – поиск и изучение клиентов, тестирование каналов продаж и масштабирование. В данном материале мы пошагово рассмотрим первую большую стадию развития стартапа – Customer Discovery, поиск и изучение клиентов. Обычно оборот компаний на этой стадии не превышает 100 тысяч рублей. Какие шаги должен совершить ИТ-стартап, чтобы уверенно перейти к следующей стадии — тестированию каналов продаж?
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии0

Как «Дадата» ищет дубли в списках торговых точек. Разбираем алгоритм

Время на прочтение4 мин
Количество просмотров6.3K


Наши клиенты хранят списки из тысяч компаний, и обычно там первозданный хаос.

Возьмем список торговых точек, через которые сельхозпроизводитель продает товары по всей стране. Названия магазинов пишут как хотят, поэтому типичный список выглядит так:

  1. Евразия.
  2. «САКУРА» Японская кухня.
  3. Доминант.
  4. Магазин-бутик «Евразия».
  5. Милениум, ООО, продуктовый магазин.
  6. Киви/ООО/Челябинск.
  7. Супермаркет эко-продуктов «Доминант».

Точки № 1 и № 4 — дубли, № 3 и № 7 — тоже, но поди разберись.

А разобраться надо: когда в списке из 1000 торговых точек 300 дублей, у производителя начинаются проблемы.
Что за проблемы и как мы их решаем
Всего голосов 24: ↑22 и ↓2+20
Комментарии14

Настоящее суммирование интернет-каналов — OpenMPTCPRouter

Время на прочтение7 мин
Количество просмотров90K


Можно ли объединить несколько интернет-каналов в один? Вокруг этой темы куча заблуждений и мифов, даже сетевые инженеры с опытом часто не знают о том, что это возможно. В большинстве случаев, объединением каналов ошибочно называют балансировку на уровне NAT или failover. Но настоящее суммирование позволяет пустить одно единственное TCP-подключение одновременно по всем интернет-каналам, например видеотрансляцию так, чтобы при обрыве любого из интернет-каналов вещание не прерывалось.

Существуют дорогие коммерческие решения для видеотрансляций, но такие устройства стоят много килобаксов. В статье описывается настройка бесплатного, открытого пакета OpenMPTCPRouter, разбираются популярные мифы о суммировании каналов.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии24

Электронная карта виноделия России. Замысел и наполнение

Время на прочтение8 мин
Количество просмотров8.9K

Поводом для моей регистрации и этой публикации стал прочитанный пост о посещении завода "Коктебель", в истории которого усомнился автор (ссылка). Фейковых вин не существует в продаже.


Лично меня очень интересует российское виноделие. Обладая при этом минимальными навыками работы с online GIS, я стараюсь не только собирать информацию о положении дел, но и картографировать ее. Я веду постоянно пополняемую карту виноделия (ссылка на карту).

Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии24

Карта развития мобильного разработчика

Время на прочтение12 мин
Количество просмотров23K
Мы ежедневно сталкиваемся с понятиями «джун», «мидл», «сеньор», но наши представления о том, какими знаниями должен обладать разработчик на разных стадиях роста, разнятся. Отсутствие четкого плана развития и непонимание, куда двигаться дальше, часто приводят к фрустрации и необдуманным сменам места работы.



Ребята из AppsCast совместно с Head of Mobile проекта Pandao Александром Черным (@AlexChernyy) попробовали разобраться в вопросе и составить собственную карту развития мобильного разработчика с момента попадания в профессию и до руководящих постов. Под катом советы о собеседовании джунов, где брать хороших разработчиков, рекомендации новичкам для устройства на работу, ключевые отличия джунов, мидлов и сеньоров, и важность навыка коммуникации для всех уровней.
Читать дальше →
Всего голосов 47: ↑42 и ↓5+37
Комментарии9

Трекеры от Google встроены в ряд официальных российских электронных ресурсов

Время на прочтение6 мин
Количество просмотров18K

image


Google не то, чем кажется
Дж. Ассанж


Предваряю текст цитатой небезызвестного товарища Дж.Ассанжа, издавшего в свое время книгу «When Google Met WikiLeaks» в которой описываются некоторые факты и особенности тесного взаимодействия этой компании с правительством/спецслужбами США.


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

Читать дальше →
Всего голосов 42: ↑36 и ↓6+30
Комментарии51

Mountebank: гибкое мокирование web API

Время на прочтение6 мин
Количество просмотров22K
image Когда речь заходит о разработке современных IT-систем, вопрос мокирования внешних зависимостей всегда идет где-то рядом. Внешний сервис может быть недоступен на этапе разработки, либо его функционал разрабатывается параллельно и на него нельзя полагаться. Особенно остро этот вопрос встает на этапе написания автотестов, ведь проверять нужно не только штатное поведение вашей системы, но и исключительные случаи: недоступность внешнего сервиса, случаи когда внешний сервис отвечает ошибкой и так далее.

Даже если вам повезло и ваш продукт имеет минимум зависимостей от внешних сервисов, скорее всего внутри он разбит на компоненты (классика жанра — backend/frontend), которые можно и нужно тестировать по отдельности. Это значит, что внешней зависимостью уже является api соседнего компонента, команда разработки которого совсем не горит желанием предоставлять вам инструменты для управления его состоянием.

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

Решить эту проблему может мокирование API внешних систем.

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

В данной статье я опишу Mountebank: инструмент, который позволяет быстро и очень гибко мокировать API прямо из автотестов без необходимости писать свой веб-сервис.

Возможности mountebank'а:

  • мокирование API на протоколах tcp, http, https, smtp;
  • мокирование неограниченного количества API одновременно;
  • гибкое переопределение логики mock-API прямо во время тестов используя конфигурационный API mountebank'a;

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии3

В Asterisk версии 12 появился REST интерфейс (Asterisk REST Interface — ARI)

Время на прочтение2 мин
Количество просмотров37K
В Asterisk версии 12 появился REST интерфейс (Asterisk REST Interface — ARI).

Да, это RESTful API в натуре.

Пока имеются следующие ресурсы:

  • Asterisk
  • Bridges
  • Channels
  • Endpoints
  • Events
  • Recordings
  • Sounds
  • Applications
  • Playbacks
  • Devicestates
  • Mailboxes


Или, интерфейсы к Каналам, Девайсам, Бриджам, Записям, Звукам. Вероятно, будут наращивать мощности :-)

Ну и главная фишка, это возможность подключения через WebSocket на /ari/events и в режиме постоянного соединения получать события.
В отличие от AMI, тут гуляют объекты в JSON формате, и работать с событиями крайне удобно.
Пример скрипта на ARI:
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии5
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность