Pull to refresh
1
0
Максим @MaxxONE

Инженер

Send message

Toolchain в Go

Level of difficultyEasy
Reading time5 min
Views7K

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

Цепочка инструментов или toolchain (тулчейн звучит покруче) используются для создания, тестирования, отладки и управления вашими Go-проектами.

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

Event Sourcing и CQRS в Go

Level of difficultyMedium
Reading time9 min
Views5.7K

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

Сегодня мы поговорим о двух концепциях — Event Sourcing и CQRS, и их реализации на языке Go. Go предоставляет хорошие возможности для реализации этих паттернов благодаря своей производительности, простоте и поддержке конкурентности «из коробки».

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

Object-Relational Mapping (ORM) в Golang

Level of difficultyMedium
Reading time9 min
Views13K

Одна из самых важных задач ЯП`s это эффективное взаимодействие с базами данных и Go не исключение. В Go есть парадигма Object-Relational Mapping (ORM), позволяет работать с реляционными базами данных в терминах объектно-ориентированного программирования. Это очень сильно упрощает работу с базами данных, позволяя сосредоточиться на бизнес-логике приложения, а не на нюансах SQL-запросов.

GORM (Go Object-Relational Mapping) предоставляет удобный интерфейс для взаимодействия с различными базами данных, сохраняя при этом идиоматичность и фичу конкуретности в Go.

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

Мапы в Go: уровень Pro

Reading time16 min
Views30K

Подробный туториал по процессам записи и чтения данных в мапах Go. Объясняем проблемы переполнения, эвакуации элементов; важность передачи количества элементов при создании мапы. Рассказываем, почему в Go нельзя обращаться к ключу или значению по адресу.

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

Увлекательный лексический анализ языка Rust

Reading time7 min
Views6.6K

Давайте поговорим о лексическом анализе. Сначала я собирался назвать этот пост «Реализуем токенайзер», но ветер переменился, времена изменились… и, чтобы не утонуть в потоке комментариев вида «фыр, а где мой BPE-токенизатор LLama, который вы мне обещали», ограничимся пока лексическим анализом.

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

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

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

Довольно слов, приступим.

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

Go (fiber) vs Rust (axum) JWT&DB

Level of difficultyEasy
Reading time7 min
Views11K

На medium.com есть ряд статей со сравнением простых web-сервисов, написанных на разных языках. Одна из них Go vs Rust: Performance comparison for JWT verify and MySQL query и судя по ней, Go на 42% быстрее чем Rust. Я решил перепроверить и заодно поменять Gin на Fiber, Axis на Axum и MySQL на PostgreSQL.

Web-сервис будет принимать запрос с авторизацией по токену JWT, искать в БД пользователя с данными email из JWT и возвращать его в виде json. Так как подобная авторизация используется повсеместно, то тест актуальный.

Читать далее
Total votes 17: ↑12 and ↓5+11
Comments68

Как обновлять информацию о фильмах и сериалах на медиацентре Kodi бесплатно и на русском языке

Level of difficultyEasy
Reading time3 min
Views9K

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

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

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

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

Скачать обложки автоматически
Total votes 6: ↑5 and ↓1+4
Comments15

ФП виновно в снижении стоимости программ. Вот мои доказательства, господа присяжные заседатели

Level of difficultyMedium
Reading time12 min
Views13K

Среди особенностей моего подхода к разработке у моих заказчиков, коллег и студентов наибольшее сопротивление вызывает использование Spring Data JDBC, а не [Spring Data] JPA (де-факто стандарта работы с БД на платформе Java).

Изначально я собирался писать пост "Почему не JPA", но немного подумав понял, что ответ умещается в одно предложение: потому что JPA по своей природе (persistence context и dirty checking) не поддерживает неизменяемую модель данных - неотъемлемую часть функционального стиля программирования, который, в свою очередь, является неотъемлемой частью моего подхода к разработке. И это объективный факт.

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

Уверен, многие не согласятся с истинностью утверждения "применение функционального стиля ведёт к снижению стоимости разработки". Поэтому я пока буду называть его Гипотезой и приведу факты, доказывающие её истинность.

Какие ваши доказательства?
Total votes 16: ↑13 and ↓3+15
Comments56

Инженерный калькулятор на C++. Часть 1: Токенизатор математических выражений

Level of difficultyEasy
Reading time10 min
Views18K

Всем привет! Сегодня хочу поделиться опытом написания консольного инженерного калькулятора, который может посчитать выражение вроде (log2(18)/3.14)*sqrt(0.1*10^(-3)/0.02)

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

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

Гауссов сплэтинг: как это выглядит

Level of difficultyEasy
Reading time11 min
Views17K
Пример работы гауссова сплэтинга. Этот ролик — не видеосъёмка реального мира, а рендер в реальном времени на настольном компьютере

Всплеск внимания к технике сплэтинга связан с представленной в августе этого года статьей 3D Gaussian Splatting for Real-Time Radiance Field Rendering [Трёхмерный гауссов сплэтинг для рендера radiance field в реальном времени]. До этого, в июле, эта научная работа исследователей Университета Лазурного берега, Института информатики Общества Макса Планка и французского Национального института исследований в информатике и автоматике вошла в пятёрку лучших работ SIGGRAPH 2023.

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

Сейчас исследователи бьются над поиском практического применения технологии и сканированием движения. В оригинальной работе речь идёт о воссоздании в первую очередь статичных сцен.
Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments13

IT-Екатеринбург: как из заводской культуры выросли IT-слоны и поколение айтишников

Reading time11 min
Views18K

Екатеринбург — четвертый по населению город России. Как и большинство уральских городов, он начался с железоделательного завода: в Лондоне до сих пор есть крыши, покрытые металлом с нашим соболем на логотипе.

Издалека Екатеринбург известен как родина Бориса Ельцина, место расстрела царской семьи, столица конструктивизма и крупный промышленный центр. По просьбе Хабра расскажу про Екатеринбург айтишный — историю появления и становления IT-жизни здесь, состояние, перспективы развития.

Читать далее
Total votes 45: ↑40 and ↓5+44
Comments87

Безопасное управление двигателем постоянного тока

Level of difficultyMedium
Reading time7 min
Views12K

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

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

Самодельные звукоизлучатели

Level of difficultyEasy
Reading time14 min
Views19K
Картинка Upklyak, Freepik

Если посмотреть в сети, то многие самодельщики обходят стороной такую любопытную сферу приложения усилий, как самодельные звукоизлучатели. Тем не менее понимание этой области позволит создавать свои собственные звукоизлучающие устройства, практически из подножного материала, что само по себе может быть весьма занятным и полезным. Например, можно создать звуковую колонку из листа бумаги, которая будет очень дешёвой и её не страшно будет оставлять без присмотра (например, на даче). Эта же простота и понимание устройства, позволяет и попробовать создать колонку любого размера. Или же, собрать альтернативу широко известным типам звукоизлучающих устройств — электростатическую колонку (как заявляют очевидцы, обладающую поразительно кристальным звучанием). А если вы захотите получить простой и дешёвый источник громкого звука, чтобы отпугивать вредителей (например, птиц) или просто собрать сторожевую систему из электродвигателя — то сирена ваш выбор! Обо всём этом и не только — в этой статье.
Читать дальше →
Total votes 61: ↑59 and ↓2+80
Comments21

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

Reading time10 min
Views47K

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

🔥 Примечание — эта статья автора расположилась на первом месте по рейтингу/просмотрам в хабе OSM за 2023г.

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

Собственный строковый тип на Rust

Level of difficultyMedium
Reading time14 min
Views7.1K

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

pub enum Expr<'src> {
  Int(u32)
  Ident(&'src str),
  // ...
}

Когда мы парсим идентификатор, то вместо копирования его названия в новую String мы заимствуем его из входной исходной строки. Это позволяет избежать дополнительных распределений, дополнительного копирования и экономит слово на представлении данных. Компиляторы могут быть очень требовательны к памяти, поэтому стоит выбирать краткое представление.
Читать дальше →
Total votes 48: ↑47 and ↓1+63
Comments6

Индуктивная нагрузка биполярного транзистора

Level of difficultyMedium
Reading time15 min
Views9.5K

В книгах со времен рассвета полупроводниковой импульсной силовой схемотехники отечественного (СССР) и зарубежного производства, авторы зачатую прибегают к рассказу принципов работы того или иного устройства основываясь лишь на базовых схемотехнических постулатах, без явного объяснения происходящих внутри биполярного транзистора уникальных явлений. Так, к примеру, подавляющее количество литературы, в частности посвященной описанию принципа работы, разработки и дальнейшего расчёта импульсных источников питания (далее ИБП), не объясняет природы переходных процессов, происходящих в биполярном транзисторе с индуктивной нагрузкой. Данная статья является попыткой автора систематически собрать воедино многие фрагменты знаний электроники и электротехники, с целью избавления следующего поколения пытливых умов от необходимости самостоятельного анализа кривых напряжения и тока в разных участках схемы. Так же в данной работе на конкретном примере продемонстрирован процесс анализа и введения необходимых уточнений и допущений для поддержания корректности дальнейшего повествования.

 В далее излагаемом материале простейшей схемой ИБП (далее ПИБП) автор называет автогенераторную схему, реализованную на минимальном количестве элементов (см рис.1).

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

Дизайн API в С++

Level of difficultyHard
Reading time26 min
Views24K

В этом году на C++ Russia я рассказывал про API дизайн. Эта статья — пересказ и переосмысление моего доклада.

То, что я здесь расскажу, основано на моем личном опыте — про API дизайн я думаю уже лет 15, с того момента как в 2008м начал читать ревью библиотек на входе в boost (кстати, всем рекомендую).

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

Читать далее
Total votes 52: ↑51 and ↓1+57
Comments36

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1

Reading time8 min
Views15K

Квантовые компьютеры. С точки зрения традиционного программиста-математика.
Часть 1. Основы. Квантовый регистр.

О чем эта публикация

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

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

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

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

Как начинать проект на Go в 2023 году

Reading time14 min
Views17K

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

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

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity