Pull to refresh
21
0
Антон @gpaw

пишу код. надеюсь, хороший.

Send message

Автоматизация развертывания стенда Kubernetes

Level of difficultyEasy
Reading time22 min
Views8K

Автоматизация развертывания стенда Kubernetes

Что бывает когда стандартное и самое распространённое решение по изучению kubernetes по каким то причинам даёт осечку на твоей рабочей машине?

Ты начинаешь пилить свой велосипед конечно! Вот и я напилил. и он даже катается!)

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

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

Level of difficultyHard
Reading time16 min
Views7.2K

Декодер изображений PNG из стандартной библиотеки языка программирования Wuffs работает в 1.22–2.75 раза быстрее, чем libpng (широко используемая реализация PNG декодера на C с открытым исходным кодом), C-библиотеки libspng, lodepng и stb_image, а также самые популярные библиотеки для работы с PNG на Go и Rust.
Статья рассказывает о том, как именно достигается такая производительность.

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

КОГДА УМЕСТЕН CAPS LOCK, как расставить акценты и другие заметки о типографике

Level of difficultyEasy
Reading time7 min
Views3.6K

Привет. Меня зовут Костя, и я отвечаю за дизайн в AGIMA. Мы занимаемся дизайном интерфейсов. Особенность нашей работы в том, что во многих проектах мы не можем управлять контентом. Например, когда мы делаем какой-нибудь магазин, мы задаем «гнезда», в которые потом система или контент-менеджер вставит фото товаров, цену, описание и т. д. Каталог товаров формируется динамически, а состав главного меню может поменять продакт-оунер после A/B-тестов или хотелок инвестора. Даже надписи на кнопках правит UX-райтер.

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

Тот же граф, только в другой руке?

Level of difficultyEasy
Reading time14 min
Views4.4K

В 2015 году математик Ласло Бабай представил свой более эффективный алгоритм, решающий задачу изоморфизма графов (Graph Isomorphism, GI) за квазиполиномиальное время. На Хабре даже есть статья, освещающая это событие. Однако в дальнейшем сам учёный признал некоторую ошибочность своего подхода, что всё равно не повлияло на отношение большинства математиков к его открытию, поскольку даже получившийся вариант, решающий задачу за субэкспоненциальное время, оказался эффективнее существующих алгоритмов. Тем не менее учёный не остановился на этом и обнаружил ошибку. Опубликованные исправления алгоритма всё-таки привели к решению задачи изоморфизма за квазиполиномиальное время.

Проблема изоморфизма графов требует алгоритмов, которые могут определить, являются ли два графа структурно идентичными. На протяжении десятилетий эта задача занимала особый статус как одна из немногих естественно возникающих задач, уровень сложности которых трудно определить. Многие годы исследователи пытались выяснить, к чему она относится. Даже сейчас неизвестно, к какому классу относится задача, а абстрактно задачу рассматривают как нечто среднее — сложнее, чем P, но легче NP. Задачу из теории графов можно обобщить до общей проблемы изоморфизма, в смежных областях математики существуют идентичные задачи, например изоморфизм конечных групп.

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

Все яйца — в одну корзину. Как мы интегрировали автотесты с TestIt

Level of difficultyEasy
Reading time5 min
Views2.8K
image

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

Системы управления тестированием (они же — TMS) значительно упрощают жизнь команде тестирования. Их десятки разных на рынке. Они нужны для ведения тестовой модели и описания кейсов, их версионирования, интеграции с автотестами и их запуска, сбора данных с них, составления и прохождения тест-планов, формирования разнообразных отчётов.

При большом количестве кейсов (а у нас их несколько тысяч) в тест-плане как автоматизированных, так и ручных тестов без TMS не обойтись.

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

image
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments0

Что мы делали, когда Jira закончилась

Level of difficultyEasy
Reading time6 min
Views15K
В недавнем прошлом многие IT-команды применяли в разработке линейку продуктов от Atlassian: Confluence, Jira и Bitbucket. Полноценный цикл разработки включал в себя до 70 различных операций и процессов: удобно, когда их можно реализовать в единой экосистеме.

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

image

К моменту официального ухода компании Atlassian из России многие банки, корпорации, IT-компании и представители малого бизнеса настолько привыкли к Jira, что сервис стал казаться незаменимым. Но Jira кончилась. Сегодня с продлением подписки есть проблемы, и нет уверенности в том, что завтра все данные будут доступны и что они надежно защищены. И когда дело дошло до поиска альтернатив, оказалось, что выбора-то практически и нет.
Читать дальше →
Total votes 35: ↑30 and ↓5+27
Comments38

Сети Docker изнутри: как Docker использует iptables и интерфейсы Linux

Reading time7 min
Views154K

Я познакомился с Docker довольно давно и, как и большинство его пользователей, был мгновенно очарован его мощью и простотой использования. Простота является основным столпом, на котором основывается Docker, чья сила кроется в легких CLI-командах. Когда я изучал Docker, я захотел выяснить, что происходит у него в бэкграунде, как вообще все происходит, особенно что касается работы с сетью (для меня это одна из самых интересных областей).


Я нашел много разной документации о том, как создавать контейнерные сети и управлять ими, но в отношении того, как именно они работают, материалов намного меньше. Docker широко использует Linux iptables и bridge-интерфейсы для создания контейнерных сетей, и в этой статье я хочу подробно рассмотреть именно этот аспект. Информацию я почерпнул, в основном, из комментариев на github-е, разных презентаций, ну и из моего собственного опыта. В конце статьи можно найти список полезных ресурсов.


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

Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments18

Как разбить GPU на несколько частей и поделиться с коллегами: практическое пособие по работе с MIG

Reading time13 min
Views7.6K

Привет, Хабр! Меня зовут Антон, я — DevOps-инженер в отделе Data- и ML-продуктов Selectel. Последние три месяца исследовал интересную проблематику — шеринг GPU между конкурентными процессами и пользователями. В русскоязычном сегменте не смог найти ни одного оригинального материала — только переводы англоязычных статей.

После посещения пары докладов понял, что тема особенно актуальна: компании знают о шеринге GPU как о технологии, но пока не применяют ее. У меня же накопилось достаточно материалов, чтобы осветить эту тему более подробно и показать, как работает шеринг GPU на практике. Интересно? Самое время погрузиться под кат!
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments11

Простое должно быть простым: «Легкий» Load Testing

Level of difficultyMedium
Reading time14 min
Views3.6K

Для чего вообще создаются разные инструменты?

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

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

Наши ожидания подкрепляются рекламными проспектами, убеждающими нас, что... все инструменты лучше всех конкурентов. Во всем!

В результате представляется сказочный путь к счастью:

Без проблем установил, легко запустил и получил отличный результат. Просто. А сложностей достаточно и без этого.

Давайте пройдемся по этому пути, пытаясь решить некие задачи нагрузочного тестирования!

Будем сравнивать подходы различных инструментов под микроскопом, разглядывая дьявола, который спрятался в деталях ;)

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

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

Level of difficultyHard
Reading time7 min
Views11K

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

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

Микросервисы Rust в серверном WebAssembly

Level of difficultyHard
Reading time8 min
Views5.6K
image

Язык программирования Rust за последние несколько лет значительно распространился. Он несколько лет подряд считается самым любимым языком программирования среди разработчиков и включён в состав ядра Linux. Rust позволяет разработчикам писать корректные программы, обеспечивающие безопасность при работе с памятью, а также такие же компактные и быстрые, как на языке C. Он идеально подходит для создания инфраструктурного программного обеспечения, включая серверные приложения, от которых требуется высокая надёжность и производительность.
Читать дальше →
Total votes 21: ↑18 and ↓3+23
Comments11

Кто же такая это ваша LoRA

Level of difficultyMedium
Reading time5 min
Views43K

В сети в последнее время регулярно мелькают статьи типа - как обучить Stable Diffusion генерировать ваши фотографии/фотографии в определенном стиле/фотографии определенного лора/такие фотографии итп.

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

Читать далее
Total votes 32: ↑30 and ↓2+35
Comments18

Регистрация ПАК (программно-аппаратных комплексов) в реестре российского ПО 2023

Reading time6 min
Views9.4K

В реестре российского ПО стала доступна регистрация ПАК. Теперь компании смогут регистрировать программно-аппаратные комплексы в реестре и получать налоговые льготы: 7,6% страховых взносов и 0% налог на прибыль. В нашем материале мы собрали ответы на самые частые вопросы.

Оглавление:

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

Числа с плавающей точкой для гуманитариев. Что это такое и как они работают

Level of difficultyEasy
Reading time9 min
Views36K

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

В этой статье я простым языком попытаюсь изложить данную тему и помочь решить ряд вопросов: как на самом деле процессор хранит числа с плавающей точкой? Как точка хранится в памяти? Почему при сложении 0.1 + 0.2 получается ответ ~0.30000000000000004? Если по какому-то из этих вопросов вы чувствуете, что не можете дать точный ответ, то эта статья для вас.

Читать далее
Total votes 36: ↑35 and ↓1+39
Comments37

Вероятностные структуры данных и где они обитают

Level of difficultyMedium
Reading time3 min
Views11K

Под этим термином понимаются такие структуры данных или алгоритмы, результатом которых является не детерминированное «да» или «нет», а вероятностные ответы, например, «точно нет» и «возможно». Как правило, такие структуры позволяют существенно сэкономить вычислительные ресурсы в задачах, где допустимо получить примерный ответ.

В этой статье я сделаю обзор таких структур данных и расскажу, какую пользу они могут принести на практике. К базовым вероятностным структурам данных можно отнести фильтр Блума, HyperLogLog и Count-Min Sketch.

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

Picodata: простое масштабирование Tarantool

Level of difficultyMedium
Reading time16 min
Views9.2K

Привет! Сегодня я хочу познакомить вас с ПО, которое мы разрабатываем в нашей компанией — кластерной СУБД и сервером приложений на языке Rust. Мы профессионально занимаемся созданием и эксплуатацией решений на основе Tarantool и с некоторых пор начали разработку своего ПО, о котором и пойдёт речь.

Picodata — это дальнейшее развитие истории Tarantool, в которой учтен опыт эксплуатации этой СУБД и предложены решения как архитектурных, так и функциональных недостатков открытой версии Tarantool. Также, наше ПО проще запускать, настраивать и поддерживать в рабочем состоянии благодаря единой точке входа и интеграции всего инструментария в одном исполняемом файле. Мы создавали Picodata как изначально кластерную СУБД, которой удобно пользоваться. Если не верите, что российская СУБД может быть удобной, попробуйте — в конце этой статьи есть раздел Практикум, где можно сразу же попробовать собрать кластер самому на паре-тройке виртуальных машин или на вашем локальном компьютере. Сейчас же будет немного теории о том, как вообще работает распределенный кластер, что именно не так в “ванильном” Tarantool и что нам пришлось сделать чтобы это исправить.

Погрузиться в детали
Total votes 101: ↑101 and ↓0+101
Comments5

Что делает ChatGPT… и почему это работает?

Level of difficultyMedium
Reading time75 min
Views153K

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

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

Service Desk или Help Desk. Как правильно выбрать? Основные отличия

Level of difficultyEasy
Reading time11 min
Views21K

В статье расскажем в чем основные отличия между helpdesk и servicedesk системами, в чем бизнес-предназначение каждой из систем. Какие helpdesk и servicedesk есть на российском и зарубежном рынке, дополнительно рассмотрим такой тип систем как FSM-системы управления мобильными сотрудниками и автоматизации сервисных процессов.

Читать далее
Total votes 10: ↑9 and ↓1+14
Comments3

О некоторых нюансах юридического оформления разработки ПО

Level of difficultyMedium
Reading time4 min
Views4.1K

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

Регистрация нематериального актива (НМА) это комплексное мероприятие, работа бухгалтера, юриста, владельца продукта и других вовлеченных лиц.

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

Я написал одну из самых быстрых библиотек датафреймов

Level of difficultyHard
Reading time9 min
Views9.8K
image

1. Вступление


У меня в портфолио есть несколько готовых пет-проектов на Rust, и я заметил, что позиция «а у нас уже получилась DataFrame?» нисколько меня не устраивает. Поэтому я подумал, не сделать ли мне элементарный контейнер, который решал бы мою конкретную задачу. Но этот проект вышел из-под контроля.

Год спустя, написав немало кода, я создал одну из самых быстрых библиотек датафреймов, применимую в Rust и Python. Вот мой первый официальный «Hello World» на polars, размещённый у меня в блоге. Надеюсь, что с помощью этого поста я смогу пояснить читателю некоторые решения, которые мне довелось принять при проектировании, и вам станет понятнее, как Polars работает под капотом.
Читать дальше →
Total votes 32: ↑26 and ↓6+29
Comments9

Information

Rating
Does not participate
Location
Рыбинск, Ярославская обл., Россия
Date of birth
Registered
Activity