Как стать автором
Обновить
9
0
Валерий Верхотуров @ValeryV

Go, Node.js, React разработчик

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

database/sql: плохой, хороший, злой

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

Многие Golang-разработчики  пробовали работать с БД в Go, и у каждого — свои боли. В этой статье разберём библиотеку database/sql как безотносительно конкретной СУБД, так и применительно к YDB. Рассмотрим трудности эксплуатации при использовании драйвера database/sql на проде. А также рассмотрим, что мы делали для решения проблем.

Меня зовут Алексей Мясников, я — руководитель Application Team в команде разработки YDB. Я очень люблю git blame за то, что с его помощью можно проследить, как развивалась инженерная мысль с течением времени и немножко побыть в шкуре разработчика той или иной классной штуки. В статье я расскажу, как реализовать драйвер database/sql для распределённой базы данных, какие проблемы при этом придётся преодолеть и как менялся подход с выходом новых версий Go. 

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

Морозная атака на шифрование в Android

Время на прочтение2 мин
Количество просмотров63K
Двое исследователей из Университета Эрлангена, в Германии, продемонстрировали способ получения зашифрованной информации смартфона под управлением Android, используя… морозилку :)

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

IO_URING. Часть 2. Let's GO

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

Всем привет! Продолжаем разбираться с io_uring. Сегодня попробуем использовать io_uring для решения прикладных задач. А именно напишем полноценный TCP сервер. Для этого мигрируем наши приложения с C на GO. Не буду писать длинные вступления, вперед экспериментировать!

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

Коллеги, вы меня огорчаете

Время на прочтение12 мин
Количество просмотров178K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


Читать дальше →
Всего голосов 145: ↑101 и ↓44+93
Комментарии1152

Банки.ру: от монолита до микрофронтендов

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

Всем привет! Меня зовут Марсель Абдрахманов, я фронтлид в Банки.ру. В статье хочу поделиться нашей историей ухода от монолита к микрофронтендам. У нас в Банки.ру большой отдел веб-разработки, за последнее время мы сильно выросли, ежедневно катим десятки релизов на прод. Расскажу, как мы относительно быстро внедрили микрофронтенды и перешли на архитектуру, которая позволила сократить время доставки обновлений на прод с двух дней до нескольких часов.

Если интересно, прошу под кат.
Всего голосов 11: ↑11 и ↓0+11
Комментарии3

Утечки памяти, которые не утечки

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

Что случилось? Авария, ужас-ужас

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

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течёт, сервисы падают с OOM каждый день, все пропало!

Да, картинка действительно удручающая. Всё время, когда есть нагрузка, память в контейнере прирастает и почти не очищается при снятии нагрузки. Все остальные метрики, которые мы собирали были в норме: event loop lag, использование CPU, active request, open handles. Прирастала только используемая память и незначительно увеличивалось время отклика сервиса.

Что-ж, выглядит как классическая утечка, надо искать источник.

Читать далее
Всего голосов 95: ↑94 и ↓1+106
Комментарии15

Софт становится хуже?

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

Технологии разработки развиваются, но качество приложений по-прежнему оставляет желать лучшего. Почему?

Читать далее
Всего голосов 32: ↑29 и ↓3+32
Комментарии91

Четыре типажа программистов

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

Привет.


Я впервые пишу в поток об управлении и найме персонала. Речь пойдет об одном из способов классифицировать ваших будущих или действующих программистов. Мой основной тезис: все разработчики, грубо говоря, делятся на 4 больших типажа и каждому из этих типажей есть своя область применения. Попытка направить неправильный типаж на решение неподходящих для него задач ведет к провалу (неэффективная работа, или сотрудник покидает команду). Хотите знать почему так — добро пожаловать под кат. Приготовьтесь, текста много.

Читать дальше →
Всего голосов 258: ↑237 и ↓21+216
Комментарии548

Все оценки сроков разработки ПО — ложь

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

▍ Разработка ПО — это исследование


Требуют ли фармацевтические компании от исследователей сообщить им сроки создания лекарства от рака? Исследователи могут сообщить сроки выполнения конкретного исследования (и достаточно точные сроки, потому что планы исследований обычно имеют графики), но результаты наподобие «получения лекарства от рака» зависят от того, что выяснится в процессе экспериментов. Для прогнозирования подобных результатов нам заранее нужно знать результаты экспериментов, но если бы мы их знали, то эксперименты были бы не нужны. На самом деле мы не можем смотреть дальше, чем результаты следующего эксперимента, потому что этот эксперимент определяет дальнейший шаг.

В разработке ПО мы не тратим время на задачи, решения которых знаем. Если решения уже существуют, мы добавляем в качестве зависимости пакет или библиотеку с этим решением, или копируем старый код, или делаем что-то ещё, на что требуются секунды, а затем можем переходить к следующей задаче. Почти всё время разработки тратится на новые задачи, ответов на которые мы не знаем. Часто они новы ужасно скучным образом, например, «как нам сохранять эту модель данных с этими конкретными полями в эту конкретную базу данных?» Но именно из-за них эта ситуация отличается от всех остальных (или, по крайней мере, от тех, которые мы смогли найти) и именно это занимает всё наше время.
Читать дальше →
Всего голосов 62: ↑57 и ↓5+70
Комментарии67

Рендеринг трёхмерных развязок, мостов и тоннелей для реалистичных карт

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

Привет! Меня зовут Арсений Кононов. На прошлой неделе мы зарелизили трёхмерные развязки и тоннели, которые можно увидеть в режиме навигатора. Я расскажу о простой и гибкой технике, реализованной в графической подсистеме нашего графического движка для отображения плоских объектов на произвольной трехмерной поверхности. Например, линии маршрута на поверхности развязки.

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

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

Социальный проект: визуализация данных медицинской статистики

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

Хабровчане, приветствую! Меня зовут Андрей Иванов, я системный аналитик в сфере медицины и здравоохранения. До 2005 года работал практикующим врачом, потом руководил медицинским информационно-аналитическим центром. Спустя время возникла настоятельная потребность получить базовое IT-образование и научиться тому, чем прежде приходилось руководить, — так я начал обучение на курсе «Системный аналитик»

Позже я принял участие в Мастерской Практикума, где смог реализовать давнюю идею — сделать удобочитаемыми материалы медицинской статистики. Выбор пал на отчёт главного онколога Министерства здравоохранения России. Он выходит ежегодно и выглядит как огромный сборник таблиц формата А4. Ни один даже самый крутой мегамозг, просматривая эти гектары цифр, не в состоянии понять, «что такое хорошо и что такое плохо в онкологической службе».

Решить эту проблему и взялась команда аналитиков данных. Сразу же оговорюсь, мы не пытаемся анализировать данные онкологической статистики. Мы разрабатываем целевой инструмент, который хотим передать в руки медицинского (онкологического) сообщества — там уже смогут с полным правом делать профессиональные выводы «о добре и зле» и конечно же, ответить на извечный вопрос «что делать?».

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

Авторизация в CLI приложении с помощью OAuth

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

Как выглядит процесс авторизации через OAuth в Command-line interface приложении? В стандартном сценарии провайдер перенаправляет обратно на сайт или в мобильное приложение (в случае с OAuth 2), а как перенаправлять в программу в терминале?

В статье будет рассмотрен процесс OAuth авторизации в CLI приложении на примере HeadHunter.

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

Как IT-специалисты помогли выиграть суд у банка

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

Статья о том, как в суде при помощи разработчиков удалось оспорить кредитный договор, оформленный на человека жуликами.

Автор статьи выражает благодарность разработчикам Роману и Александру. Специалисты проделали огромную и кропотливую работу, нашли выход в безнадежной (с точки зрения юристов) ситуации.

Читать далее
Всего голосов 160: ↑159 и ↓1+200
Комментарии102

Вопросы и ответы для собеседования на позицию frontend-разработчик. Часть 2

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

Всем привет! В этой статье (части) рассмотрим вопросы, связанные с великим и могучим TypeScript'ом, которые задают на собеседованиях. Если вы не читали прошлую статью, где описаны вопросы по JS, вот ссылочка. Пожалуйста, не заучивайте вопросы, это вредно для вашего здоровья!)

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

Крупномасштабный стриминг видео с использованием Kubernetes и RabbitMQ

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров12K
Давайте поговорим о тех проблемах, с которыми приходится сталкиваться на сайтах для стримингового видео, и как организовать архитектуру такого сайта, чтобы было проще справляться с нагрузками.

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

Большой тест GPT4, GPT3.5, YandexGPT, GigaChat, Saiga в RAG-задаче. Часть 2/2

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

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

Особенностью эксперимента является в том, что оценку ответов делают обычные люди. Юристы.

Во второй части мы рассмотрим как и зачем делать локальные токензайзеры и попробуем запустить всё полностью на локальной машине с видеокартой 4090.

В конце будет приведена полная сравнительная таблица разных моделей и токензайзеров.

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

As const в Typescript

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

Привет, Хабр!

В разработке часто возникают ситуации, когда точность типов и нежелание допускать неясности в коде становятся первостепенными задачами. В таких случаях, разработчикам приходится искать инструменты, предоставляющие максимальную ясность и строгость в определении данных. Один из таких инструментов — ключевое слово as const. В данной статье мы рассмотрим, как as const может повысить уровень строгости и предсказуемости, а также рассмотрим практические примеры его использования для создания неизменяемых и точных типов.

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

Как я сделал ремастер всех серий Том и Джерри в 2к всего за пару месяцев

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

Улучшение Том и Джерри из 480p в 1440p

С чего всё началось? Как-то я решил в третий раз с детства пересмотреть всю оригинальную коллекцию "Том и Джерри", но я, в отличие от маленького ребёнка, не потребляю любой контент вне зависимости от его качества. И вот я собрался посмотреть самую доступную версию, а там вот это цветошоу с постоянными царапинами на всём экране.

Мур-мур-мур
Всего голосов 347: ↑342 и ↓5+387
Комментарии193

Вопросы и ответы для собеседования на позицию frontend-разработчик. Часть 1

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

Всем привет! В этой статье хотел бы поделиться вопросами и ответами, которые я задаю на собеседованиях фронтенд-разработчикам и которые попадались мне, когда я сам искал работу. Здесь собраны вопросы именно по JavaScript. В дальнейшем планирую рассмотреть TypeScript отдельно, а также React и связанные с ним технологии.

Читать далее
Всего голосов 10: ↑6 и ↓4+2
Комментарии24

Может ли нейро-сотрудник на базе ChatGPT звонить по обычной телефонной линии?

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

Продолжаем создавать нейро-сотрудников на базе ChatGPT и пробовать их в разных каналах коммуникаций.

В этот раз мы решили дать нейро-сотруднику возможность отвечать по обычной телефонной линии или самому делать исходящие вызовы исходя из свой системной роли. Интересно что получилось?

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer, Fullstack Developer
Middle
Golang
Node.js
TypeScript
React