Pull to refresh
1
0

User

Send message

Нужен ли ConfigureAwait?

Reading time8 min
Views21K

image


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


Одна из многословных конструкций .NET связана с деталями реализации асинхронности и обросла кучей мифов. Про неё спрашивают на собеседованиях, код-ревью, делают обязательной, добавляя в правила линтера. Это .ConfigureAwait(false), сопровождающий каждый await в коде.


В этой статье я расскажу, зачем нужен ConfigureAwait(false) и как обойтись без него.

Читать дальше →
Total votes 46: ↑45 and ↓1+59
Comments19

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

Level of difficultyMedium
Reading time30 min
Views6.8K

Привет! Я работаю в компании Bercut, которая более 20 лет занимается разработкой и поддержкой ПО для операторов сотовой и фиксированной связи. Сегодня я хочу рассказать о наших подходах к сокращению времени простоя продуктивного комплекса при установке обновлений схемы данных на СУБД Oracle. Целевая аудитория — начинающие и продолжающие разработчики, которым интересно узнать о различных вариантах распараллеливания и ускорения работы DDL, DML и прочих штуках, облегчающих процесс отладки и установки.

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

Журнал архитектурных решений (ADL) при проектировании информационных систем

Level of difficultyEasy
Reading time4 min
Views6.6K

Для сложных информационных систем бывает крайне сложно принять компромиссные решения с учетом ограниченных ресурсов. Одним из возможных способов решения является подход Architecture Description Log, который внедрен в крупных компаниях, таких как Google, Spotify и Microsoft. В этой статье мы рассмотрим основные положения ADL и обсудим, чем это может быть полезно для создания сбалансированной архитектуры в гибкой методологии разработки.

Читать далее
Total votes 13: ↑11 and ↓2+12
Comments2

FAQ про SLO и SLI

Level of difficultyMedium
Reading time8 min
Views6.1K

После прохождения одного из серии собеседований на SRE мне анонсировали, что на следующем будут задачки про SLO/SLI. Задач не было, но в ходе подготовки я сделал тематический конспект нескольких материалов, посвященных этой теме. Возможно, он будет вам полезен.

Понятно, что основной источник информации по теме – это Google SRE Book, но книга была опубликована давно, и мне было интересно, что по этой теме есть нового. В основном конспект основан на четырех материалах от Google: Implementing SLO, Art of SLOs (slides), SLO Document, Setting SLO Step by Step. Впоследствии я дополнил их несколькими интересными идеями из выступления Ивана Круглова.

Буду рад замечаниям и дополнениям.

Читать далее
Total votes 5: ↑4 and ↓1+4
Comments0

Самый простой способ ввести Linux в домен

Level of difficultyMedium
Reading time5 min
Views39K

Всем привет!

Термин Microsoft Active Directory Domain Services включает в себя множество технологий, поэтому сразу уточню, в этой статье речь пойдет про использование контроллера домена только для аутентификации пользователей. То есть в финале, нужна возможность любому сотруднику предприятия сесть за любую рабочую станцию Linux, используя свой доменный логин и пароль.

Начиная с Windows 2000 Server для аутентификации пользователей домена используется протокол Kerberos, разработанный еще в 80-х годах прошлого столетия, алгоритм работы которого, ИМХО, являет собой пример отличного инженерного хака, в хорошем (изначальном:) смысле этого слова. В конце статьи есть ссылка на описание его работы, а сейчас надо сказать, что имеется несколько реализаций этого протокола и решение из этой статьи не привязано только к Microsoft Active Directory

Читать далее
Total votes 29: ↑26 and ↓3+33
Comments37

Пишем расширение Chrome, которое ворует вообще всё

Reading time10 min
Views24K

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

Мы добьёмся двух целей:

  • Исследуем грани возможного для расширений Chrome
  • Продемонстрируем, что вы подвержены опасности, если не будете аккуратны с тем, что устанавливаете.

Примечание: на самом деле реализация этого расширения — злодейство. Вам не следует использовать в злонамеренных целях полномочия расширений, красть пользовательские данные и создавать зловредные браузерные расширения. Любые реализации, производные расширения или применение этих техник без разрешения Национальной баскетбольной ассоциации не рекомендуются.
Читать дальше →
Total votes 33: ↑31 and ↓2+37
Comments12

Создаём систему радиоуправления для самодельного самолёта. Ч.1

Level of difficultyMedium
Reading time13 min
Views38K
Картинка Viarprodesign, Freepik

У каждого человека есть определённая тема, к которой он испытывает некое иррациональное влечение. У автора этой статьи такой темой является авиамоделирование: на тот момент, когда ещё существовали авиамодельные кружки, автор пришёл в него записываться и ему сказали, что он ещё слишком мал и лучше прийти через пару лет. А через пару лет распался Советский Союз и всем стало совсем даже не до кружков — на дворе наступили «благословенные» 90-е годы…

Однако, «гештальт сам себя не закроет» и автор решил тряхнуть стариной и попробовать собрать свою первую авиамодель (лучше поздно, чем никогда, да и в авиамодельный кружок опять не возьмут — теперь уже по причине старости :-)
Читать дальше →
Total votes 75: ↑72 and ↓3+95
Comments51

Микросервисные приложения на GoMicro

Level of difficultyEasy
Reading time5 min
Views13K

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

Читать далее
Total votes 11: ↑10 and ↓1+11
Comments5

Динамические тестовые окружения на ArgoCD и Crossplane

Level of difficultyMedium
Reading time9 min
Views2.6K

Всем привет! Хочу поделиться вариантом организации динамических окружений для разработки и тестирования с помощью ArgoCD и применением GitOps подхода на реальном примере.

Статья рассчитана на DevOps инженеров и разработчиков уже хорошо знакомых с инструментами из DevOps стека.

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments1

Как создать матрицу-компетенций: 6 простых шагов с примерами

Level of difficultyEasy
Reading time6 min
Views12K

Меня зовут Иван Ярославцев, я руководитель Alto. Мы разрабатываем сайты, интернет‑магазины, веб‑сервисы на заказ. В статье собрал всю необходимую информацию — от создания матрицы до ее внедрения. Здесь есть пошаговые инструкции, понятные объяснения и полезные советы. На примере нашей компании покажу, что матрица‑компетенций — это простой инструмент. Начать работать с ним можно прямо сейчас, для этого не нужно 100+ часов.

Читать далее
Total votes 9: ↑5 and ↓4+2
Comments5

8 вещей, о которых забывают разработчики при переносе приложения в Kubernetes

Reading time11 min
Views15K

Kubernetes становится стандартом разработки, при этом порог входа в него остается довольно высоким. Вместе с архитектором отдела администрирования сервисов Selectel Михаилом Вишняковым собрали список рекомендаций для разработчиков приложений, которые мигрируют их в оркестратор. Знание перечисленных пунктов позволит избежать потенциальных проблем и не создавать ограничений на месте преимуществ k8s.

Наш субъективный список — под катом. Пополните его своими рекомендациями в комментариях!
Читать дальше →
Total votes 59: ↑57 and ↓2+72
Comments2

Кластер ElasticSearch на 1Ptb+

Level of difficultyHard
Reading time9 min
Views7.8K

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

На проекте в моем ведении находилось несколько on-premise кластеров в нескольких европейских датацентрах. «Мы» в этой статье — небольшая команда DataOps из 5 человек.

Было дело я читал на Хабре статью про «Кластер Elasticsearch на 200 ТБ+» и примерял написанное к нам, у нас такой кластер считался средним, самый маленький кластер под 0,1Ptb, а большой тогда был под 0,5Ptb. Потом была поставлена задача подготовить кластер к увеличению объемов входящих данных в 2-3 раза, а срок хранения в 2 раза, т. е. объем хранимых данных, если грубо экстраполировать, должен был стать в районе 2-3Ptb.

Хочу поделиться нашим опытом, может кому пригодиться.

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

В какой сказке встречаются Баба Яга и Колобок или сказ о том как мы таск-трекер писали

Reading time15 min
Views4.7K

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

Итак, знакомьтесь. Тасктрекер "Яга", целимся импортозаместить Atlassian Jira. Система управления знаниями "Кощей" - закрывает нишу Confluence. "Колобок" (как первый релиз) - вариант более простого трекера (не всем нужна функциональность Jir'ы) - по мотивам Trello.

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

Mysqldump в MySQL

Reading time7 min
Views15K

Привет! Предлагаем вашему вниманию перевод не новой, но способной оказаться полезной статьи. Автор делится полезными возможностями утилиты Mysqldump.

Читать далее
Total votes 15: ↑13 and ↓2+11
Comments4

Концепции Rust, которые неплохо бы знать пораньше

Reading time21 min
Views18K

Весь минувший месяц я глаз не мог оторвать от языка программирования Rust, ведь его конёк – создание современных программ, обеспечивающих безопасную работу с памятью. За прошедшие годы появилось несколько языков, которые позиционировались как «инструмент что надо» для написания надёжного бекенд-софта. Постепенно маятник качнулся от Java/C++ к Go и Rust, выстроенных на многолетних разработках по теории языков программирования. Суть – в создании инструментов, которые были бы эффективны именно в наш век.

Читать далее
Total votes 44: ↑35 and ↓9+35
Comments13

Наши любимые приложения-помощники в тестировании back-end

Reading time4 min
Views13K

Всем привет! Меня зовут Константин, и я работаю ведущим тестировщиком в дружной команде back-end компании Solit. Мои коллеги уже не раз делились различными хитростями и ноу-хау, которые они применяют в своих проектах. Я же решил пойти немного другим путём и поделиться с вами набором сервисов и утилит, которые помогают нам прийти к недостижимой цели — работа приложений без дефектов.

 В мою подборку попали те приложения, которые прижились в нашей команде и ими пользуется более одного человека. Конечно, есть очевидные вещи, типа Notepad++. Но есть и более редкие «звери», типа JWT.

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

Приложения для генерации данных

Правильная подготовка тестовых данных — уже половина успешного тестирования. В этом разделе я собрал приложения, которые помогают быстро сгенерировать большие (я бы даже сказал, очень БОЛЬШИЕ) объёмы тестовых данных.

pgCodeKeeper

Вообще, эту утилиту можно использовать для различных целей. Её основная цель — поиск различий между объектами баз данных, создание скриптов миграции и тому подобных вещей.

 В нашем случае она прижилась именно как генератор тестовых данных для БД Postgres. Подробнее о том, как он работает, можно прочитать в официальной справке pgCodeKeeper.

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments6

Монорепозитории: пожалуйста не надо

Reading time10 min
Views55K
От переводчика: Привет, Хабр! Да, это очередная статья о преимуществах и недостатках монорепозиториев. Собирался написать свою статью о том, как мы используем монорепозиторий, как мы переходили с maven на bazel и что из этого получилось. Но пока собирался с мыслями, вышла отличная статья от разработчика из Lyft, которую я и решил для вас перевести. Обещаю опубликовать свои дополнения к статье, а также опыт с bazel в виде продолжения.
Мы в Новом 2019 году, и я настроен на еще одну дискуссию о преимуществах (или отсутствии таковых) в хранении всего исходного кода организации в «Монорепозитории». Для тех из вас, кто не знаком с этим подходом, идея состоит в том, чтобы хранить весь исходный код в едином репозитории системы контроля версий. Альтернатива, конечно, заключается в том, чтобы хранить исходный код в нескольких независимых репозиториях, разделяя их обычно по границе сервисов/приложений/библиотек.

В данном посте я буду называть такой подход «полирепозиторий».
Total votes 57: ↑52 and ↓5+47
Comments85

CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

Reading time6 min
Views50K

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

В этом посте описан мой топ-25 обязательных инструментов CLI, на которые я привык полагаться. Если тут нет вашего любимого - дайте мне знать в комментариях :)

Читать далее
Total votes 100: ↑93 and ↓7+100
Comments83

DCSync: особенности выполнения атаки и возможные варианты детектирования, Часть 2

Reading time7 min
Views5.1K

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

В предущей статье мы разобрали основы и механизмы работы атаки DCSync, а также рассмотрели несколько наиболее популярных утилит для ее реализации: mimikatz, secretsdump, DSInternals и существующие между ними различия. В результате анализа стало понятно, что у всех утилит прослеживается один и тот же принцип проведения атаки и присутствует одинаковый фактор для ее выявления - DRSReplicaSync.

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

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

Как настроить Jenkins в режиме высокой доступности

Reading time6 min
Views2.5K

Когда говорим о высокой доступности (HA), мы имеем в виду системы, которые могут работать непрерывно без сбоев в течение длительного времени. Jenkins — один из ключевых компонентов DevOps, а потому критически важно, чтобы он оставался высокодоступным.

В статье разберём два способа настройки Jenkins в режиме высокой доступности.

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

Information

Rating
Does not participate
Registered
Activity