Pull to refresh
0
0

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

Send message

Моделирование микросервисов. Часть 1

Level of difficultyMedium
Reading time5 min
Views15K

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

Читать далее
Total votes 8: ↑5 and ↓3+4
Comments4

Метод “Выгнать всех и набрать сначала”. Оперативная оценка сотрудников (и не только)

Level of difficultyEasy
Reading time4 min
Views11K
image

Руководителю зачастую сложно провести адекватную оценку сотрудника. Это связано со многими факторами: отсутствием времени, постоянной погоней за результатом, недостатком персонала и других ресурсов. А еще, часто бывает, что руководитель настолько плотно взаимодействует с сотрудниками (с утра до вечера вместе с ними что-то делает), что просто привыкает к их слабостям, перестает на это реагировать и тем более, не может правильно оценить того или иного сотрудника. Поэтому, иногда приходится прибегать к нестандартным методам анализа, которые помогают выйти из рабочего потока и нейтрально посмотреть на происходящее. Одним из таких методов является метод “Выгнать всех и набрать снова”

Суть метода достаточно проста. Руководителю нужно представить, что все его сотрудники вышли за двери компании, а ему нужно решить, кого из них он позовет назад, а кого нет. Для этого он должен ответить на следующие вопросы:
  1. “Кого я позову назад без условий?”. То есть, работа сотрудника меня на 100% устраивает.
  2. “Кого я позову назад с условием исправить ...?”. То есть, сотрудник вполне хорош, но я его возьму назад только, если он исправит какой-то конкретный изъян.
  3. “Кого точно не позову назад?”. То есть, сотрудник настолько не хорош, что даже не рассматривается вариант его обучения и/или перевоспитания.

Читать дальше →
Total votes 14: ↑7 and ↓7+2
Comments35

[По полочкам] Кэширование

Level of difficultyEasy
Reading time12 min
Views51K

Всем привет! Меня зовут Илья Денисов, я занимаюсь backend разработкой уже более пяти лет и сейчас пишу на языке go. Сегодня я предлагаю вам поговорить о кэшировании. Постараюсь рассказать о базовых концепциях, а также затронуть ряд особенностей, неочевидных на первый взгляд.

Читать далее
Total votes 38: ↑34 and ↓4+37
Comments16

Архитектура архитектуры архитектора

Reading time6 min
Views22K

Архитектор – это звучит… Звучит как-то не понятно. Наверное, поэтому всегда добавляют что-то. Ну типа «системный архитектор» или там «программный архитектор». Не то чтоб так стало понятно, что он делает, но точно кто-то важный. Я вообще пишу «архитектор информационных систем и программного обеспечения». Это ж как назовёшься -так и поплывешь! С архитекторами тут вообще такое дело – это как бы и не профессия. Ведь архитектором как стать? Либо тебя назовут таковым, либо сам назовёшься. Другого пути нет. Ни школы, ни спец. образования, никаких то там универсальных сертификатов нету. Только название и есть.

А раз оно есть – значит зачем-нибудь нужно! А нужно чтоб как-то указать на необходимость главного элемента мозаики – архитектуры. А раз нужен элемент, то за него, конечно, должен кто-то да отвечать. А раз должен, то вот и появляется такая должность.

Появляется, кстати, не всегда и не везде. Ведь не в каждой луже можно встретить кораблик. В самых больших - есть шанс. В такие лужи обычно и заплывают корабли из стартрека. Enterprise. Что же ищут эти корабли в корпоративных болотах? Чтоб вода не иссыхала, ветер только попутный и кругом гавани с блекджеком… Проще говоря им нужен сервис на много лет и так, чтоб исполнялись все их капризы за обещанные деньги.

Чтоб избежать проверенного классического сценария «много, дорого, бестолково» нужны ориентиры. Пунктир намеченного пути на карте требований и функционала. Это не красота и элегантность рисунков Леонардо, и не лабиринты цвета Поллока. Архитектура вообще не про искусство. Нет, все любят, когда красиво. Вот я бы строил дом, тоже бы хотел не бетонную коробку, а чтоб в вечность. Но у вечности, однако свои расценки. Так что даже Джи-мэн с кейсом полным золота хочет хайп и тренды, но строго в бюджет. Архитектура даёт парадигму.

Читать дальше и дальше
Total votes 26: ↑19 and ↓7+19
Comments26

Go. О покрытии кода интеграционными тестами и флаге -cover

Level of difficultyEasy
Reading time7 min
Views5K

Инструменты покрытия кода помогают понять, какая часть кодовой базы выполняется (или, как еще говорят, покрывается) при выполнении данного набора тестов. Какое-то время Go поддерживал измерение покрытия кода на уровне пакета, введенное в Go 1.2, она включалась флагом команды go test -cover.


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


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


Двоичные файлы интеграционных тестов создаются командой go build, а не go test, поэтому инструментарий Go до сих пор не предоставлял простого способа сбора профиля покрытия этих тестов.


С версии Go 1.20 программы с инструментированием покрытия можно создавать командой go build -cover, а затем, чтобы расширить область покрытия, передавать эти инструментированные двоичные файлы в интеграционный тест.


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

Читать дальше →
Total votes 4: ↑1 and ↓3-2
Comments0

Bitmap-индексы в Go: поиск на дикой скорости

Reading time15 min
Views31K


Вступительное слово


Я выступил с этим докладом на английском языке на конференции GopherCon Russia 2019 в Москве и на русском — на митапе в Нижнем Новгороде. Речь в нём идёт о bitmap-индексе — менее распространённом, чем B-tree, но не менее интересном. Делюсь записью выступления на конференции на английском и текстовой расшифровкой на русском.

Мы рассмотрим, как устроен bitmap-индекс, когда он лучше, когда — хуже других индексов и в каких случаях он значительно быстрее них; увидим, в каких популярных СУБД уже есть bitmap-индексы; попробуем написать свой на Go. А «на десерт» мы воспользуемся готовыми библиотеками, чтобы создать свою супербыструю специализированную базу данных.

Очень надеюсь, что мои труды окажутся для вас полезными и интересными. Поехали!
Total votes 93: ↑91 and ↓2+89
Comments40

10 удивительно зрелищных простейших клеточных автоматов

Level of difficultyEasy
Reading time5 min
Views32K

Самое простое представление двумерного клеточного автомата основано на двух характеристиках: клетки имеют всего 2 состояния; правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих).

Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки требуется ровно 3 живых соседа, для выживания – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).

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

Сегодня взглянем на самых интересных представителей.

?
Total votes 158: ↑158 and ↓0+158
Comments24

Как писать код на Go? Подход Google. Часть первая

Reading time11 min
Views5K

Рекомендации по стилю для проектов из Google с открытым исходным кодом


Руководство по стилю Go


Принципы стиля


Есть несколько охватывающих всё принципов, которые резюмируют представления о том, как писать читаемый код на языке Go. Ниже перечислены признаки читаемого кода в порядке их важности:


  1. Ясность: Назначение и обоснованность кода должны быть понятны читателю.
  2. Простота: Код должен выполнять свою задачу самым простым способом.
  3. Лаконичность: Код должен содержать как можно меньше воды.
  4. Сопровождаемость: Код должен быть написан так, чтобы его легко было поддерживать.
  5. Согласованность: Код должен согласоваться с более масштабной кодовой базой Google.

Подробности — к старту курса по Backend-разработке на Go.

Читать дальше →
Total votes 7: ↑4 and ↓3+2
Comments1

Fuzzing-тесты в Go после v1.18: знакомство и практика

Reading time6 min
Views7.9K

Когда говорят о Go 1.18, обычно вспоминают про дженерики и незаслуженно забывают об остальных изменениях. Например, о fuzzing-тестировании, которое раньше можно было запустить только с помощью открытых библиотек. Пора это исправить.

По мотивам выступления Сергея Петрова, разработчика в Selectel, рассказываем, как устроено fuzzing-тестирование в Go. А также показываем, как проверить функцию на корректную валидацию данных. Подробности под катом.
Читать дальше →
Total votes 35: ↑33 and ↓2+40
Comments2

Трейсинг в Go — это просто

Reading time13 min
Views19K

В эпоху быстрорастущих приложений важно иметь возможность контролировать состояние системы в любой момент времени. Одними из требований для достижения этого являются логи и метрики, которые помогают нам следить за многими параметрами, такими как количество запросов в секунду (RPS), потребление памяти, cache git и т.д. Однако, есть ещё один полезный инструмент - трейсинг. В этой статье мы ознакомимся со стандартом OpenTelemetry в языке Go и инструментом Jaeger

Читать далее
Total votes 18: ↑17 and ↓1+18
Comments13

Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая

Reading time43 min
Views29K

Наступил Апокалипсис.

Нет, не стоит бежать запасаться банками с консервами и крышками отечественной бай-колы! Апокалипсис произошёл только в нашей фантазии и с определённой целью — чтобы проверить, а может ли человек, обладающий только книгами по теме и стандартной библиотекой языка, воссоздать инструмент, который будет служить ему верой и правдой?

Так родился учебный проект SicQL, реляционная СУБД, чей символ — сова — это олицетворение силы знаний и мудрости. Олицетворение тех знаний и той мудрости, которые мы получим, создав с нуля то, чем мы пользуемся каждый день, может, не осознавая всей сложности таких инструментов.

Приглашаю присоединиться к увлекательному путешествию!

Принять приглашение на борт
Total votes 54: ↑53 and ↓1+64
Comments62

Что НЕ должен делать тимлид — или сага о задачках в таск-трекере

Reading time5 min
Views5.5K

Привет! Меня зовут Виталий, я фронтенд-тимлид в KTS. Рассказываю, что входит в нашей компании в обязанности тимлида, а что — нет.  Спойлер: это не расставление задач в таск-трекере.

Зоны ответственности тимлида отличаются от компании к компании и от проекта к проекту. Иногда позиция включает в себя менеджерскую работу, иногда нет. Бывает так, что должность тимлида совсем отсутствует в компании — есть только менеджеры. 

Мы выстроили свою схему разделения обязанностей между тимлидами, менеджерами и аналитиками. Она позволяет снять с тимлидов менеджерскую работу, для которой не нужно обладать глубокими техническими знаниями, но нужно часто переключаться между разными задачами и сотрудниками. Это даёт возможность тимлидам работать над теми задачами, которые и отличают их от менеджеров, — с технической частью проекта. Рассказываем, как мы реализовали эту схему для компании из 80 сотрудников.

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments12

Под капотом у компилятора Go: добавление нового оператора в Go — часть 1

Reading time11 min
Views9.8K

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

Мы собираемся изменить компилятор Go, добавив новую (условно) языковую фичу, и собрать модифицированный компилятор, чтобы ее опробовать.

Читать далее
Total votes 17: ↑14 and ↓3+12
Comments2

Библиотека алгоритмов на графах на языке Go. Часть 1

Reading time5 min
Views9.2K

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

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments10

Мой любимый рецепт приготовления программных продуктов

Reading time8 min
Views2.7K

Есть много способов приготовить картошку. Вот тут написано больше 100 способов. Рецептов кофе существует множество. Лично я предпочитаю черный, без сахара. Кто-то любит с молоком, кто-то предпочитает холодный. Бессмысленно спорить, какой из них лучше.

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

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

Новые возможности Angular 14 изменят ваш код

Reading time4 min
Views6.1K

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

Это не должно повлиять на другие проекты Angular. Запомните — "Angular". Неважно, какую версию вы используете, главное, что вы применяете Angular. Каждый год вы получаете новую версию Ubuntu, обновляете свой мобильный телефон, или каждые восемь месяцев NodeJS публикует новую версию.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments4

Топ полезных SQL-запросов для PostgreSQL

Reading time7 min
Views87K

Статей о работе с PostgreSQL и её преимуществах достаточно много, но не всегда из них понятно, как следить за состоянием базы и метриками, влияющими на её оптимальную работу. В статье подробно рассмотрим SQL-запросы, которые помогут вам отслеживать эти показатели и просто могут быть полезны как пользователю.

Читать далее
Total votes 71: ↑69 and ↓2+79
Comments15

Дженерики в Go: когда нужны и когда можно без них

Reading time14 min
Views13K

Много раз при обсуждении преимуществ и прелестей Go, как языка разработки, мне приходилось слышать что-то вроде «у вас даже нет дженериков» или «вот завезут дженерики, тогда и поговорим». Так вот, дженерики завезли, давайте посмотрим что из этого вышло. 

Меня зовут Павел Грязнов. Я уже несколько лет пишу на Go в прод, хотя знакомство с языком начал с самых ранних версий. Видел как Garbage Collector мог сделать stop the world на пару секунд, страдал от отсутствия системы зависимостей и других проблем. В этой статье я расскажу о дженериках в Go. Начнём с самых основ, продолжим более продвинутыми примерами и закончим бенчмарками.

Чтобы лучше показать работу дженериков на контрасте, я сравню примеры их использования на двух языках — Python и Go. C Python последний раз работал слишком давно, поэтому вторую часть доклада мне помогли сделать коллеги из Evrone. Пойдем по порядку: разберем, для чего нужны дженерики и какие задачи они решают. Посмотрим, как выглядит мир без дженериков, на их синтаксис, ограничения, бенчмарки и немного затронем функциональное программирование.

Читать далее
Total votes 22: ↑21 and ↓1+26
Comments13

IT для неайтишников: Куда исчезают программисты после 40 лет?

Reading time11 min
Views122K

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

Читать далее
Total votes 114: ↑95 and ↓19+103
Comments281

Чистая архитектура, или проектируя клиента RuBackup

Reading time8 min
Views3.8K

Здесь описан путь, которым мы шли, проблемы, с которыми столкнулись, и обзор наших решений. Здесь не пересказ книги дяди Боба, и мы полагаем, что вы знакомы с трудом Роберта Мартина “Чистая архитектура. Искусство разработки программного обеспечения”. Это скорее интерпретация с различными дополнениями в контексте разработки нашего клиентского приложения.

Хочу рассказать о том, как мы избавились от дублирования кода, повысили тестируемость и отвязали UI. Почему мы сделали такой выбор, как разделили функционал и что нам это дало. Помимо этого хотелось бы показать, что отхождение от правил бывает уместным.

Читать статью
Total votes 8: ↑6 and ↓2+4
Comments0

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity