Как стать автором
Обновить
10
0
Михаил Берёзин @mehanizm

Пользователь

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

Ты пожалеешь, но будет поздно: как я участвовала в единственном в России экстремальном триатлоне

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров17K

После выхода из озера Чейбеккель, температура воды в котором не больше 9 градусов, слышу крики организаторов: «Переодевайте её, у вас несколько минут, чтобы уложиться в лимит на беговую транзитку до велосипеда».

Плачу. Просто рыдаю. Это не слезы радости или боли, нет, просто выход эмоций после «терпёжки» — двух часов в холодной воде. Вижу свои руки, кто-то мажет их вонючей мазью красного цвета, и они начинают гореть. Кричу: «У меня руки в крови!». И смех, и слёзы. 

Это только один из эмоциональных моментов многочасового экстремального триатлона в горах Алтая. Серия экстремальных триатлонов куда менее популярна в спортивном сообществе, чем классические старты Ironstar и Ironman. Расскажу и покажу, как это было. 

Погнали!
Всего голосов 28: ↑27 и ↓1+37
Комментарии32

Что у CDI под капотом? Расскажем на конференции по клиентским данным

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

Привет, Хабр! Я Никита Назаров, технический директор HFLabs. 4 апреля мы проводим конференцию CDI Tech Conf. На ней поговорим о том, как устроены энтерпрайз-приложения для работы с клиентскими данными и что нужно учесть при их интеграции с другими системами. Расскажем, почему нашу поддержку обожают заказчики и как наш CDI (Customer Data Integration) переехал с Oracle на PostgreSQL.

Узнать больше про конференцию
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

«Кто согласовал такую фигню?» — будни переговорщиков из IT

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

Привет, Хабр! Я работаю исполнительным директором в HFLabs, а до того, как им стать, больше восьми лет занимался продажами в B2B. Моя первая сделка началась с того, что меня позвали на переговоры с вице-президентом банка. Я подумал: не с моей же рожей к вице-президентам ходить. И позвал взрослых — генерального. В день встречи утром он мне позвонил и сказал, что я уже готов к таким встречам и могу смело идти один. Было страшно.

Так вот, лето, жара, погода изматывающая. Приходит вице-президент и начинает разговор примерно так: «Вот видите во дворе Audi стоят? Я их все купил со скидкой 60%. Так что и вам придется нас услышать». Но вся штука была в том, что я уже успел по этому проекту дать скидку 30%. И это был хороший жизненный урок: скидку я дал вообще не тому человеку — он не был тем самым ЛПР. Я не разобрался в процессе и даже не спросил, кто и как будет решать по сделке. Пришлось в итоге каждый пункт коммерческого предложения объяснять, каждую строчку сметы. Например, написано у нас тестирование 2 дня. А клиент мне в ответ — зачем два, давайте один день будете тестировать!..

Дальше расскажу, какие еще истории у нас случались на переговорах и вокруг них. 

Читать далее
Всего голосов 38: ↑37 и ↓1+47
Комментарии26

Погружение в IT Узбекистана: о чём говорили и что показывали на форуме в Самарканде

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

У Узбекистана есть амбиции стать центром развития всего среднеазиатского региона. У страны многое для этого есть: историческое наследие, население в 35 миллионов, неплохое географическое положение. На этом фоне IT и цифровизация в целом — один из официальных приоритетов. Тем интересней было оказаться на недельном айтишном форуме в Самарканде и своими глазами посмотреть, что к чему. 

Об этом и расскажу в посте. Может быть интересно тем, кто еще не уехал присматривается к релокации в Узбекистан или просто хочет узнать больше об этой стране. Все впечатления в тексте личные.  

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

Как небольшой IT-компании запустить обучающий курс: рассказываем о своём опыте

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

Один из мифов по поводу MDM-систем — «ну что там делать-то, данные взяли, записи объединили, вот тебе и готово. А вы, мол, за работу миллионы хотите. Мы сами всё за полгода сделаем». 

Чтобы объяснить, как всё обстоит на самом деле, мы в HFLabs придумали образовательный курс по клиентским данным в энтерпрайзе. Сегодня расскажу о том, как мы создавали курс, где ошибались и что меняли в процессе. Надеюсь, будет полезно небольшим компаниям, которые, несмотря ни на что, всё ещё задумываются о развитии собственных образовательных проектов.  

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

Как собрать образ Oracle DB для Testcontainers

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

Код должен тестироваться на той СУБД, с которой он будет работать. Testcontainers — это такая библиотека, которая позволяет использовать в юнит тестах практически любую СУБД с той же лёгкостью, что embedded базы данных типа HSQLDB или H2. Был бы только Docker образ



Именно сборке удобного для использования с Testcontainers докер образа посвящена эта статья. У меня при попытке его сделать возникли проблемы, и тут я делюсь своим решением.
Собирать буду образ для Oracle 11, потому он небольшого размера и мне версии 11 хватает. С другими версиями подход примерно тот же.


Для того, чтобы было понятно, как использовать образ, тут также будет код на Java, который демонстрирует применение образа для тестирования Spring Boot приложений. Способ подключения к testcontainers я привёл, наверное, не самый лучший. Но во-первых он демонстрирует как использовать настройки, заданные при создании образа. Во-вторых он простой. И в-третьих он почти не завязан на Spring, его можно воткнуть даже в джава код, в котором нет ничего, кроме public static void main.


Предполагается, что читатель обладает поверхностным знакомством с Docker и Testcontaners, а также хорошо знает Java. Для сборки нужно использовать linux, если собираете под Windows, нужно будет применить msys2 или что-то в этом духе.


Демонстрационный код залит на гитхаб вот сюда https://github.com/poxu/testcontainers-spring-demo Поправленные скрипты для сборки образа можно посмотреть в моём форке Оракловских инструкций https://github.com/poxu/docker-images/tree/master/OracleDatabase/SingleInstance

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

Go: десериализация JSON с неправильной типизацией, или как обходить ошибки разработчиков API

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

Недавно мне довелось разрабатывать на Go http-клиент для сервиса, предоставляющего REST API с json-ом в роли формата кодирования. Стандартная задача, но в ходе работы мне пришлось столкнуться с нестандартной проблемой. Рассказываю в чем суть.

Как известно, формат json имеет типы данных. Четыре примитивных: строка, число, логический, null; и два структурных типа: объект и массив. В данном случае нас интересуют примитивные типы. Вот пример json кода с четырьмя полями разных типов:

{
	"name":"qwerty",
	"price":258.25,
	"active":true,
	"description":null,
}

Как видно в примере, строковое значение заключается в кавычки. Числовое — не имеет кавычек. Логический тип может иметь только одно из двух значений: true или false (без кавычек). И тип null соответственно имеет значение null (также без кавычек).

А теперь собственно сама проблема. В какой-то момент, при детальном рассмотрении получаемого от стороннего сервиса json-кода, я обнаружил, что одно из полей (назовем его price) помимо числового значения периодически имеет строковое значение (число в кавычках). Т. е. один и тот же запрос с разными параметрами может вернуть число в виде числа, а может вернуть это же число в виде строки. Ума не приложу, как на том конце организован код, возвращающий такие результаты, но видимо, это связано с тем, что сервис сам является агрегатором и тянет данные из разных источников, а разработчики не привели json ответа сервера к единому формату. Тем не менее, надо работать с тем что есть.

Но далее меня ждало еще большее удивление. Логическое поле (назовем его active), помимо значений true и false, возвращало строковые значения «true», «false», и даже числовые 1 и 0 (истина и ложь соответственно).
Читать дальше →
Всего голосов 20: ↑15 и ↓5+16
Комментарии30

Юлия → Iuliia. Всё о транслитерации

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

Транслитерация


Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.


Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).


И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.

Читать дальше →
Всего голосов 146: ↑145 и ↓1+191
Комментарии545

Полный набор gRPC, RESTful JSON API, WS и Swagger из одного proto файла. От введения до нюансов и тонкостей grpc-gateway

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

В этой статье я опишу процесс создания сервера с gRPC и RESTful JSON API одновременно и Swagger документацию к нему.


Эта статья — продолжение разбора различных способов реализаций API-сервера на Golang с автогенерацией кода и документации. Там я обещал более подробно остановиться на этом подходе.


grpc-gateway — это плагин protoc. Он читает определение сервиса gRPC и генерирует обратный прокси-сервер, который переводит RESTful JSON API в gRPC. Этот сервер создается в соответствии с пользовательскими параметрами в вашем определении gRPC.


Это выглядит вот так:


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

Веб-приложение на Kotlin + Spring Boot + Vue.js

Время на прочтение40 мин
Количество просмотров47K
Добрый день, дорогие обитатели Хабра!

Не так давно мне представилась возможность реализовать небольшой проект без особых требований по технической части. То есть, я был волен выбирать стек технологий на своё усмотрение. Потому не преминул возможностью как следует «пощупать» модные, молодёжные многообещающие, но малознакомые мне на практике Kotlin и Vue.js, добавив туда уже знакомый Spring Boot и примерив всё это на незамысловатое веб-приложение.
Посмотреть, что из этого вышло
Всего голосов 19: ↑18 и ↓1+17
Комментарии21

Мой путь от Python к Go — делюсь советами и ресурсами

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


От переводчика: перевели для вас статью Илада Леева о переходе с Python на Go. Статья будет полезна не только начинающим программистам, но и всем, кто так либо иначе интересуется Go.

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

Постепенное «созревание» Go, обширное комьюнити и тот факт, что все больше компаний принимают этот язык на вооружение после успешных тестов, заставили меня обратить на него внимание и углубиться в литературу. Но этот пост не о том, что лучше — Python или Go: сравнений в сети огромное количество. По моему мнению, все зависит от области применения. Я собираюсь рассказать о том, почему выбрал Go, дав несколько советов и ссылок на полезные ресурсы для всех интересующихся темой.
Читать дальше →
Всего голосов 51: ↑47 и ↓4+43
Комментарии30

Лучшие доклады JPoint 2018: Java/JVM и её перформанс, Kotlin, Spring, Docker

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

Мы уже выложили на YouTube видеозаписи докладов JPoint 2018 и специально для хаба Java на Хабре сделали традиционную подборку самых лучших из них по мнению посетителей конференции.


Как обычно, наверху «младшие» доклады, в конце — с самым высоким рейтингом. Конечно, это не значит, что один доклад намного хуже другого: если изменить методику расчета, места могут легко поменяться. В реальности, мы её и изменили, теперь используется «soft quorum» вариант рейтинга, учитывающий количество присутствовавших на докладе участников. Этот подход имеет свои минусы (например, на кейноут приходит больше людей, чем на обычный доклад, просто потому что у аудитории нет выбора), но в целом даёт более качественную картину произошедшего.


Под катом — и видеозаписи лучших докладов, и ссылки на их презентации, и короткие описания, и ссылка на полный плейлист.


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

Микросервисы на Go с помощью Go kit: Введение

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

В этой статье я опишу использование Go kit, набора инструментов и библиотек для создания микросервисов на Go. Эта статья — введение в Go kit. Первая часть в моем блоге, исходный код примеров доступен здесь.

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

Информация

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