Первая система для обработки больших объемов данных появилась в конце 19 века. Американский инженер Герман Холлерит создал ее для того, чтобы обрабатывать результаты переписи населения США. Компания Холлерита — первый ИТ-стартап — нашла частных инвесторов и государственные заказы, создала новую отрасль, и привлекла сотни клиентов. Однако ее монопольное положение на этом рынке было недолгим — вскоре появился конкурент, который смог предложить пользователям более низкие цены и новые технологии.
Пользователь
Простой лайфхак для ввода символа "#" в русской раскладке клавиатуры под Linux
Давно полюбил формат Markdown за простоту и легкость его использования при документировании исходного кода и за возможность его применения при оформлении статей для Хабра. Потом добавился Obsidian для ведения заметок. И формат Markdown стал по сути основным способом форматирования набираемого текста.
Единственной, но весьма большой ложкой дегтя, оставалась проблема ввода символа решетки «#» при использовании русской клавиатуры. А так как знак решётки (октото́рп, хеш, знак номера, дие́з, sharp), в русской раскладке клавиатуры отсутствует, то каждый раз переключаться на английскую раскладку, меня немного утомляло. И «немного утомляло» еще мягко сказано, так как символ решетки, кроме указания заголовков в Markdown и тегов в Obsidian, еще часто используется как начало комментария до конца строки (в Bash, Python, NewLang).
А так как предлагаемые на просторах интернета способы ввода символа решетки в русской раскладке клавиатуры меня совсем не вдохновляли (и если Alt+35 на Numpad под виндой еще сойдет, но этот способ не работает под Linux, а занимать буфер обмена ради вставки одного символа, вообще не вариант), то пришлось потратить некоторое время на эксперименты, результатами которых я и хочу поделиться.
@Transactional в Spring и исключения
Привет! В этой статье я бы хотел рассказать, как Spring'овая аннотация @Transactional
ведет себя при возникновении исключений. Про это немало написано, в том числе на Хабре. Например, тут или тут. Поэтому, чтобы не повторяться, я не буду подробно расписывать как и почему исключения влияют на откат транзакций, а вместо этого просто покажу несколько примеров.
Spring Data JPA и upsert
Всем привет! Есть достаточно распространенная задача: нужно вставить новую запись в БД, но если она уже там есть, то её следует обновить. Эта ситуация может встретиться, например, если у вас есть 2 источника данных, каждый из которых передает половину информации об объекте, и ваш сервис должен склеить части вместе по какому‑то внешнему идентификатору. Но вы не знаете, в каком порядке к вам попадут эти половинки. Предлагаю посмотреть, как это можно сделать, если сервис использует Spring Data JPA.
Настройка связки Nginx / LetsEncrypt в Docker Swarm
Про то, как поднять контейнер Nginx и настроить для него автообновление сертификатов LetsEncrypt, есть довольно много статей. В этой будет описана довольно нестандартная схема. Основные моменты:
- Nginx разворачивается как сервис в Docker Swarm, а не как standalone-контейнер;
- Для проверки используется схема DNS-01, а не гораздо более популярная HTTP-01;
- Для DNS-провайдера GoDaddy в настоящий момент нет DNS-plugin'а для certbot'а, но есть API по управлению доменными записями.
Отчёт о конференции «Магнитка 2023»
В конце февраля‑начале марта 2023 года в Магнитогорске проходил форум «Цифровая устойчивость и промышленная безопасность России», который чаще называют «Магнитка». Несколько лет подряд он был посвящён банковской кибербезопасности. Однако в этот раз мероприятие перенесли в Екатеринбург, поэтому «Магнитку», проходящую в Магнитогорске, было решено переориентировать на индустриальную или промышленную ИБ. Информационная служба Хабра посетила форум и сделала несколько материалов. Начнём с отчёта.
Гипотеза Коллатца, часть 1
Эта страница временно недоступна.
Пожалуйста, зайдите на эту страницу позже.
Приносим извинения за доставленные неудобства.
Повторите попытку позже.
Дегустация Argo Rollouts: Experiments, Analysis. Часть 2
И снова здравствуйте! Я – Евгений Симигин, занимаюсь внедрением DevOps-практик в Центре компетенций по разработке облачных и интернет-решений МТС Digital. Как я и обещал – это вторая часть нашего обзора Argo Rollouts, из которой вы узнаете о том, как в процессе выкатки нового релиза организовать еще и тестирование.
Дегустация Argo Rollouts: обзор решения, часть 1
Всем привет! Меня зовут Евгений Симигин, я занимаюсь внедрением DevOps-практик в Центре компетенций по разработке облачных и интернет-решений МТС Digital. В этой статье – обзор Argo Rollouts, я покажу несколько примеров применения и отмечу интересные места в документации. Хотите быстро освоить Argo Rollouts и разобраться в этом решении? Тогда жмите кнопку «Читать далее»!
Босяцкий кластер высокой доступности
Крайне минималистичная схема кластера высокой доступности, требующая только 2 сервера и ничего более. Пригодна в том числе для серверов у разных хостеров или в разных датацентрах. Позволяет решить вопрос отказоустойчивости для балансировщика, так чтобы он сам не был единой точкой отказа.
Установка Jenkins с помощью terraform в Kubernetes в Yandex Cloud с letsencypt
В этой статье будет следующее:
- Заведение DNS домена на reg.ru.
- Управление DNS зоной в Yandex DNS c помощью terraform.
- Создание Kubernetes в Yandex Cloud.
- Резервируем внешний статический IP адрес.
- Установка Jenkins c помощью terraform модуля helm_release.
- Создание ClusterIssue(Issue) для создания letsencypt сертификата.
Консалтинг в России — взлёт и перерождение одной из редких профессий, где можно зарабатывать больше айтишников
Долгое время в России было две индустрии, куда стремились попасть почти все лучшие выпускники главных бизнес-вузов страны. Это инвестиционный банкинг (про него в другой раз) и топовый управленческий консалтинг. Консалтинговые фирмы успешно наращивали объемы проданных проектов и расширяли офисы. Но этот год в России переживут далеко не все из них. Разбираемся, каким был российский консалтинг до 2022 г., и какой он будет теперь.
Что такое хорошо и что такое плохо. Карьера разработчика глазами его руководителя
В чем отличается взгляд на карьеру у разработчика и его руководителя
Жизнь полна противоречий. Даже свет не может определиться, кто он – частица или волна.
В мире разработки софта противоречий между действующими лицами вагон и маленькая тележка. Давайте рассмотрим пару – разработчик и руководитель разработки (это может быть руководитель проекта, технический менеджер, тимлид). Как выяснится, эти двое зачастую по-разному смотрят на вещи и вообще стремятся в разные стороны.
Чего хочет разработчик
Все хотят разного. Но поскольку без обобщений нам не обойтись, возьмем сферического в вакууме разработчика уровня middle. Он в меру ленив, в меру любопытен и ему в целом нравится его профессия. Ему бы только сроки помягче, процессы получше, задачи поинтереснее.
Как он хочет развиваться? А вот так:
- Изучать новые технологии
- Решать более интересные задачи
- Участвовать в новых проектах
- Поменьше заниматься деятельностью, не связанной с разработкой
- Принимать решения самостоятельно
В то же время его руководитель хочет:
- Чтобы разработчик хорошо знал используемые технологии
- Чтобы разработчик хорошо справлялся с поставленными задачами: с должным качеством и в установленный срок
- Чтобы разработчик был ответственным и всегда завершал то, за что взялся
- Чтобы разработчик давал адекватные оценки задачам
- Чтобы разработчик имел понимание потребностей бизнеса и продукта в целом
- Чтобы разработчик своевременно сообщал о проблемах
Хотите знать, как добиться компромисса? Добро пожаловать под кат.
Кто такой хороший QA?
Начнем с того, что в народе всех quality assurance инженеров (“по-нашенски”, инженеров отдела качества) обзывают тестировщиками. Это не совсем правильно, в реальности тестирование — это только часть задач QA, но кого бы это волновало. Поэтому пойдем в общем тренде и будем использовать привычное всем погоняло.
Итак, что же определяет хорошего тестировщика? Не будем опускаться до банальностей и говорить: внимательность, усидчивость, терпение, любопытство, талант все ломать и другую чепуху. Это все, конечно, важно, но не главное. В первую очередь у человека должно присутствовать чувство здравого смысла и ответственности.
Опыт использования BDD
Около семи лет назад Dan North в своей статье описал практическое применение BDD подхода, который позволяет сделать процесс разработки более понятным и управляемым путем налаживания внутренних коммуникаций. Индустрия с каждым днем проявляет всё больший интерес к этой методологии, нацеленной на продуктивное взаимодействие стандартных команд типа «аналитика-разработка-тестирование».
Однако, сейчас лишь малая часть компаний решается на использование BDD. Почему?
Блеск и нищета Java для настольных систем
Вы не поверите, но в 2018 году всё ещё нужно разрабатывать Desktop приложения.
Представьте себе такой клуб анонимных Java программистов, запойных и беспробудных, которые сидят и делятся своими проблемами.
— Здравствуйте, меня зовут Юрий, я пишу Desktop приложения в 2018 году.
— Здравствуй, Юрий, давайте ему похлопаем, он смог поделиться своей проблемой!
Да, действительно, мы всё ещё пишем Desktop приложения. Обычно, не очень хочется этим заниматься, чаще всего это legacy проекты. Но бывает, что нужно писать и новые настольные приложения.
Зачем мы всё ещё это делаем, если есть web с его новыми продвинутыми возможностями: Progressive Web Apps, Service Worker, Web RTC, Web GL и т.д?
Под катом расскажу как с этим жить и при чём тут Java.
Kotlin DSL: Теория и Практика
Sql, RegExp, Gradle — что их объединяет? Всё это примеры использования проблемно-ориентированных языков или DSL (domain-specific language). Каждый такой язык решает свою узконаправленную задачу, например, запрос данных из БД, поиск совпадений в тексте или описание процесса сборки приложения. Язык Kotlin предоставляет большое количество возможностей для создания собственного проблемно-ориентированного языка. В ходе статьи мы разберемся, какие инструменты есть в арсенале программиста, и реализуем DSL для предложенной предметной области.
Весь синтаксис, представленный в статье, я объясню максимально просто, однако, материал рассчитан на практикующих инженеров, которые рассматривают Kotlin, как язык для построения проблемно-ориентированных языков. В конце статьи будут приведены недостатки, к которым нужно быть готовым. Используемый в статье код актуален для Kotlin версии 1.1.4-3 и доступен на GitHub.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность