Как стать автором
Обновить
9
0
Игорь @itmind

Fullstack

Отправить сообщение

Практическое руководство по Rust. 4/4

Уровень сложности Средний
Время на прочтение 34 мин
Количество просмотров 3.2K



Hello world!


Представляю вашему вниманию четвертую и последнюю часть практического руководства по Rust.



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


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 2

Практическое руководство по Rust. 3/4

Уровень сложности Средний
Время на прочтение 26 мин
Количество просмотров 4.2K



Hello world!


Представляю вашему вниманию третью часть практического руководства по Rust.



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


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 0

Прокси-сервер для Android на Go

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 5.7K

Реализация простого HTTP CONNECT прокси-сервера на Go, квест с маркировкой сетевых пакетов и запуск программы в Android.

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 16

Практическое руководство по Rust. 1/4

Уровень сложности Средний
Время на прочтение 21 мин
Количество просмотров 14K



Hello world!


Представляю вашему вниманию первую часть практического руководства по Rust.



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


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 12

Ускоряем Go: известные и не очень методы оптимизации и связанные с ними штуки

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 7.2K

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

В этой статье хотел бы поделиться приёмами, которые позволяют повысить производительность Golang-кода. Некоторые из этих вещей довольно известные и их могут делать за вас линтеры, например go-critic, noctx (эти 2 касаются defer и отправки запросов без контекста).

Обсудим:

простые правила, которые не стоит забывать

мифы о производительности в духе "А я слышал, что X повышает скорость на Y%"

более интересные штуки, типо замены switch на map, проведём пару тестов, поэкспериментируем

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

Поехали!

Читать далее
Всего голосов 21: ↑15 и ↓6 +9
Комментарии 18

Большая шпаргалка по Rust. 2/2

Уровень сложности Средний
Время на прочтение 39 мин
Количество просмотров 5.7K



Hello world!


Представляю вашему вниманию вторую часть большой шпаргалки по Rust.


Первая часть.


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


Обратите внимание: шпаргалка рассчитана на людей, которые хорошо знают любой современный язык программирования, а не на тех, кто только начинает кодить 😉


Также настоятельно рекомендуется хотя бы по диагонали прочитать замечательный Учебник по Rust (на русском языке).

Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 2

Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 23K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции углубимся в расширенные возможности команды SELECT : как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT), или запомнить и использовать в рекурсивных запросах (CTE), что дают оконные функции (WINDOW) и соединения (JOIN).

Как обычно, для предпочитающих смотреть и слушать, а не читать - доступна видеозапись.

Читать далее
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 7

Компилятор за выходные: синтаксические деревья

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 24K

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

Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий живёт на гитхабе (не забудьте заглянуть в мой профиль и посмотреть другие tiny* репозитории).

Читать далее
Всего голосов 75: ↑75 и ↓0 +75
Комментарии 28

Синхронизация локальных изменений с docker/kubernetes контейнером

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 7.5K

Салют!

Хочу рассказать вам про такие замечательные инструменты как docker compose(быть точнее про новую возможность watch), skaffold, tilt.

Рассказать для чего они полезны, как пользоваться и с примерами.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 6

Сжатие целых чисел

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 13K

Цель статьи осветить state of the art методы сжатия целых чисел, чтобы сэкономить в будущем время исследования алгоритмов и терминологии. При этом описание части алгоритмов может быть упрощено для понимания. Сравнение алгоритмов тоже находится вне рамках этой статьи. Подробнее можно почитать в ссылках.

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

Читать далее
Всего голосов 42: ↑37 и ↓5 +32
Комментарии 22

Кто знает, что значит GPT в названии ChatGPT, могут дальше не читать

Уровень сложности Простой
Время на прочтение 11 мин
Количество просмотров 57K

В настоящее время искусственный интеллект (ИИ) стремительно развивается. Мы являемся свидетелями интеллектуальной мощи таких нейросетей, как GPT-4 Turbo от OpenAI и Gemini Ultra от Google. В Интернете появляется огромное количество научных и популярных публикаций. Зачем же нужна еще одна статья про ИИ? Играя с ребенком в ChatGPT, я неожиданно осознал, что не понимаю значения аббревиатуры GPT. И, казалось бы, простая задача для айтишника, неожиданно превратилась в нетривиальное исследование архитектур современных нейросетей, которым я и хочу поделиться. Сгенерированная ИИ картинка, будет еще долго напоминать мою задумчивость при взгляде на многообразие и сложность современных нейросетей.

Читать далее
Всего голосов 63: ↑62 и ↓1 +61
Комментарии 7

Помогаторы разработчика 1С

Время на прочтение 17 мин
Количество просмотров 11K

Всем привет.

Данная статья написана по моему выступлению на Infostart Event 2022, на котором я рассказал об инструментах и «лайфхаках», которые использую в своей работе и которые, как мне кажется, помогают сделать работу разработчика 1С проще, удобнее, а главное, эффективней. Многие вещи, возможно, покажутся вам очевидными или совсем простыми. Но часто я вижу, что разработчики пренебрегают ими, а ведь именно такие «мелочи» и делают нашу жизнь проще.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 7

Собираем автономную игру на C# в 2 килобайтах

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 20K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Всего голосов 128: ↑127 и ↓1 +126
Комментарии 34

Создание и использование BOM в Gradle

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 4.9K

В каждой компании (а если она крупная, то, скорее всего, в каждом подразделении) должна быть выстроена культура использования BOM (bill of materials) для управления версиями зависимостей. В этой статье я хочу поделиться своим видением того, как это может быть организовано, а также рассмотреть более сложные случаи создания и использования BOM в Gradle-проектах.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 9

Как работает протокол X11 на самом нижнем уровне

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 35K

X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.


Но мало кто знает как он работает на самом деле. Потому что с годами он оброс слоями и слоями библиотек, которые стремятся скрыть саму сущность протокола.


А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.


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


А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.


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


Как бы то ни было, если кому-то интересно как все работает на самом деле, пожалуйста под кат.

Читать дальше →
Всего голосов 201: ↑199 и ↓2 +197
Комментарии 181

Паттерн Unit of Work в разрезе чистой архитектуры DDD на языке Golang

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 14K

Всем привет! Недавно мне выпала возможность разработать шаблон сервиса, который можно было бы использовать как для монолитной, так и для микро‑сервисной архитектуры. Шаблон должен был придерживаться принципов Domain‑Driven Design (DDD). В этом процессе, я столкнулся с двумя интересными проблемами:

Проблема 1: Сложности обеспечения транзакционности базы данных

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

Проблема 2: Нарушение изолированности слоя

В попытке решить первую проблему, некоторые разработчики переносят работу с транзакциями на уровень слоя приложения, чтобы избежать прямой зависимости от базы данных. Однако, такой подход, несмотря на его обоснование, может нарушить изолированность слоев и противоречить принципам DDD и чистой архитектуры. Это, в конечном итоге, затрудняет поддержку приложения и усложняет его масштабирование.
Эти две проблемы стали отправной точкой для исследования применения паттерна Unit of Work и его роли в обеспечении надежности и консистентности данных в контексте Golang и DDD.

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

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 7

Почему B-деревья быстрые?

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 45K

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Всего голосов 185: ↑184 и ↓1 +183
Комментарии 13

Свободные лицензии на программное обеспечение

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.9K

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

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 7

Сложность алгоритмов. Разбор Big O

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 31K

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

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

Читать далее
Всего голосов 27: ↑25 и ↓2 +23
Комментарии 17

Пуш-уведомления RuStore

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 6.1K

Привет! Меня зовут Артем Ковардин, я работаю в VK и мы с командой разрабатываем Push Service RuStore и SDK для него. Если вы занимаетесь разработкой мобильных приложений и хотели бы иметь канал коммуникации с пользователями или же вам просто интересно то, как работают разработанные нами пуш-уведомления и как их можно масштабировать и интегрировать, то статья ниже — для вас. 

Читать далее
Всего голосов 41: ↑38 и ↓3 +35
Комментарии 8
1

Информация

В рейтинге
3 506-й
Откуда
Хабаровск, Хабаровский край, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, 1C Developer
Lead
От 300 000 ₽
Golang
Kotlin
SQL
Designing application architecture
Development of mobile applications
Android development
Rust