Pull to refresh

Gitlab-ci модульные pipelines для вашего enterprise

Level of difficultyHard
Reading time7 min
Views8.6K

Привет, меня зовут Панов Михаил, я DevOps‑инженер МТС Digital. Хочу поделиться с вами опытом построения «модульных» pipelines на основе gitlab-ci. В этой статье я расскажу, что такое модульный CI/CD, из чего он состоит, для чего нужен и как поможет командам, поддерживающим большой список нетиповых репозиториев.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments5

«Разгоняем» HashSet, HashMap и циклы на примере Dart

Level of difficultyMedium
Reading time11 min
Views4.3K

Если вы занимались профилированием своего приложения, то, глядя на CPU Flame Chart, вероятно, испытывали смесь досады и азарта, глядя на особо «жирный» метод. Досады – что ваша программа всё ещё не идеальна по скорости. Азарт – от того, что вы можете докопаться до причины проблемы и отжать для процессора ещё немного свободного времени на более полезные вычисления. По крайней мере, я регулярно становлюсь жертвой обоих этих чувств, чему данная статья и обязана своим появлением.

Мой кейс – это попытка выжать из игрового движка Flame больше скорости и возможностей, чем он может «из коробки». Гейм-разработка имеет свои особенности по сравнению с «парсингом большого json» или устранением подлагивания при разовом проигрывании анимации, как минимум потому что здесь потенциально объёмные вычисления производятся абсолютно на каждом кадре. Так что, наверное, мой опыт не сильно будет перекликаться с теми проблемами, которые встречает большинство Flutter-разработчиков.

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

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

Тебе не нужно классическое ООП в твоём бэкенд микросервисе

Reading time24 min
Views19K

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

Читать далее
Total votes 51: ↑46 and ↓5+41
Comments55

Как вырастить ИТшника или принстонский Computer Science для школьников

Level of difficultyEasy
Reading time23 min
Views9K

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

На практике успеха в этих направлениях достигает лишь малая доля из первоначально заинтересованных. Ученики отваливаются в самом начале пути, столкнувшись с высоким порогом входа в мир ИТ.

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

Читать далее
Total votes 14: ↑12 and ↓2+10
Comments14

Визуальный и интерактивный отчёт матрицы коллизий из Autodesk Navisworks в Microsoft Power BI

Level of difficultyEasy
Reading time9 min
Views3.4K

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

Эта статья является более расширенной версией поста с Dzen про формирование динамической матрицы коллизий. Судя по обратной связи, многим не хватило более подробного раскрытия процесса импорта и преобразования отчёта .xml в Power BI и дальнейшая работа с данными. В этой статье я постараюсь дать более подробный гайд, но также освещу весь процесс начиная с формирования поисковых наборов (Search Sets) в Autodesk Navisworks для более целостной картины.

В конце должны получить примерно такой результат...

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

Как выбрать дефектоскоп: критерии, влияющие на выбор ультразвукового прибора

Reading time17 min
Views2.4K


В статье проверенная информация для инженеров и более узких специалистов. Рассказано, что надо учесть при выборе ультразвукового дефектоскопа. Зависимость выбора от задачи, которую должен выполнить дефектоскоп, от материала, с которым он будет работать и выбор в зависимости от функциональности.
Читать дальше →
Total votes 7: ↑5 and ↓2+3
Comments15

Делай нейминг как сеньор

Reading time13 min
Views115K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее
Total votes 186: ↑184 and ↓2+182
Comments221

Фоторезистор = Навигатор

Level of difficultyEasy
Reading time17 min
Views12K

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

Если взять микроконтроллер, к ADC пину подключить фоторезистор, целый день непрерывно записывать на SD карту показания солнечной освещенности с вкраплениями временных отметок из часов реального времени RTC, то спустя 24 часа можно оценить широту (длительность светового дня) и долготу (фаза светового дня).

Попробуем понять, работает ли эта идея.

Читать далее
Total votes 93: ↑88 and ↓5+83
Comments127

Вы никогда не сократите Тime Тo Мarket, если будете тестировать все фичи на одном сервере

Level of difficultyEasy
Reading time4 min
Views3K

Привет, это Максим Павлов из KTS. Мы создаём IT-продукты для бизнеса.

Все твердят про важность Time To Market — времени от появлении идеи фичи до её релиза для пользователей. При этом почему-то тестируют все фичи на одном сервере. В статье рассказываю, как ускорить Time To Market одним простым способом.

Читать далее
Total votes 39: ↑31 and ↓8+23
Comments25

Учебное проектирование для джунов: как учить и зачем

Level of difficultyEasy
Reading time12 min
Views24K

Привет! Меня зовут Андрей, я бэкенд-тимлид в KTS

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

В статье расскажу про методику обучения проектированию в нашей компании.

Читать далее
Total votes 33: ↑32 and ↓1+31
Comments10

Долгоиграющие приложения на PHP

Level of difficultyMedium
Reading time15 min
Views19K

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

Меня зовут Александр Пряхин, я TechUnit Lead в Авито. В IT работаю уже 14 лет. Из них 8 лет руковожу командами. Параллельно с этим преподаю и менторю. Сегодня разберём, как готовить демонов на PHP — от А до Я, и почему это актуально.

Читать далее
Total votes 62: ↑60 and ↓2+58
Comments17

«Эффект лицензионного домино»: тренд на коммерциализацию open source решений набирает обороты — кейс HashiCorp

Reading time12 min
Views11K

Продолжаю тему изменений в лицензионной политике Elastic — компании-разработчика стека ELK, которая отказалась сотрудничать с российскими организациями, а до этого поменяла условия распространения поисковой системы Elasticsearch, а также интегрируемого средства анализа данных Kibana.

Три месяца назад HashiCorp взяли похожий курс на защиту от конкурентов и коммерциализацию ранее полностью открытых продуктов, в том числе Terraform для управления ИТ-инфраструктурой в формате Infrastructure-as-Code и Vault для управления сертификатами, токенами доступа и другими «секретами». Однако, если сравнивать с Elastic, руководство HashiCorp выбрало иной подход и тип лицензии.

Разбираемся, что к чему, как реагирует сообщество, и на что обратить внимание компаниям с точки зрения стратегического развития своих ИТ-продуктов.

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

Как быстро выбирать языковые модели (LLM) под свои задачи

Level of difficultyMedium
Reading time6 min
Views13K

Последние полгода я активно занимаюсь разработкой сервисов на базе больших языковых моделей, они же «LLM». Для каждого проекта мне приходится подбирать модель по определенным критериям: языковая поддержка, требования к памяти, типу (instruction-based или completion), скорости генерации и т.п. Первое время я использовал платформу HuggingFace, где ежедневно публикуются около сотни новых моделей. Но кто им пользовался, знает, насколько там неудобный и слабый поиск: даже точные совпадения по названию он иногда не выдаёт. Плюс к этому, приходится тратить достаточно времени, чтобы найти и сравнить модели по нескольким критериям. В этой статье я расскажу, как решил проблему выбора языковых моделей.

Читать далее
Total votes 31: ↑29 and ↓2+27
Comments25

Превращаем старый iPad в умную фоторамку

Level of difficultyMedium
Reading time12 min
Views12K

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

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

“Ну и долго мне ещё до магазина?” Или пара слов о геоинформационном анализе с помощью Python

Level of difficultyMedium
Reading time11 min
Views5.7K

Привет, хабр! Сегодня мы хотели бы продолжить тему обработки пространственных данных средствами Python библиотеки estaty. Мы уже рассказывали о том как можно Объединять открытые данные Open Street Map и Landsat для уточнения площадей зеленых зон вокруг объектов недвижимости.

Теперь же поговорим о более сложном анализе

Ну правда, долго?
Total votes 12: ↑11 and ↓1+10
Comments0

Обзор онтологического Low-code подхода к разработке решений класса ERP

Level of difficultyMedium
Reading time9 min
Views1.8K

Здравствуй, уважаемый Хабр!

Эта статья описывает объектно-ориентированный (или онтологический) Low-code подход к проектированию и разработке информационных систем на примере платформы «Системный Геном».

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

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments13

Я знаю, что вы сделали с этим файлом. Проектируем функцию «история событий» в офисном продукте

Reading time7 min
Views3K

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

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

О том, как мы планировали и проектировали «историю событий файла» — новую функцию в «МойОфис Частное Облако 2» — читайте под катом.

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

Кастомизируем VS Code для веб-разработки

Level of difficultyEasy
Reading time10 min
Views28K

Visual Studio Code — это бесплатный, шустрый (что важно на больших проектах) и глубоко кастомизируемый редактор кода.

В статье расскажу, какие настройки и плагины VS Code использует наша команда фронтенда в KTS. Материал может быть полезен для JavaScript- и React-разработчиков, а ещё для тех, кто уже давно пользуется VS Code, но не знает о некоторых полезных плагинах и фичах для повседневного использования. 

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

Также я рассмотрел инструменты для оптимизации работы с Git, шаблоны директорий и другие возможные настройки.

Читать далее
Total votes 46: ↑42 and ↓4+38
Comments17

DTO в языке PHP: примеры для начинающих

Level of difficultyEasy
Reading time12 min
Views22K

DISCLAIMER


Друзья, читая этот текст, вы мало того, что общаетесь со вселенским разумом, но и принимаете участие в социальном эксперименте. ChatGPT пытается рассуждать о DTO в языке PHP. Пока ему сложно, с каждым вашим комментарием, замечанием, он пытается улучшить свой ответ, получается не всегда хорошо. Мы со своей стороны его почти не редактируем. Просто просим переформулировать какие-то фрагменты, дополнить свой ответ. Скоро опубликуем статью в ВАКовском журнале об этом эксперименте. Ссылку приложим в комментариях.

DTO (Data Transfer Object) — это шаблон проектирования, который используется для передачи данных между слоями приложения. DTO представляет собой объект, который содержит данные, необходимые для выполнения операции или запроса в приложении.
Читать дальше →
Total votes 14: ↑5 and ↓9-4
Comments36

Тонкости настройки Grafana Loki

Level of difficultyMedium
Reading time12 min
Views28K

В этой статье, подготовленной по мотивам моего доклада в «Школе мониторинга» Slurm, хочу поделиться своим набором best practice «Как лучше всего настроить Grafana Loki для сбора логов в инфраструктуре». 

На мой взгляд, порог входа в систему достаточно низкий, и в Интернете много туториалов. Поэтому я расскажу о более сложных и не совсем очевидных вещах, с которыми не раз сталкивался при работе с Grafana Loki. 

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