Pull to refresh
6
-2
Михаил Иванов @LyuMih

Web-разработчик

Send message

Фальшивые криптокошельки в официальном каталоге Ubuntu — индикатор более серьёзной угрозы

Reading time3 min
Views8.2K


Через официальный каталог приложений Ubuntu Snap некоторое время распространялся фейковый криптокошелёк, средства с которых сразу переводились на сторонний адрес. У одного из пользователей удалось увести 9,84 BTC.

Это типичная supply chain attack, один из самых опасных видов атак. Он предполагает внедрение зловредов в официальные каналы поставки ПО. Например, в прошивки от производителя оборудования, официальные обновления программ, которые распространяются через официальные сайты, и т д.
Читать дальше →
Total votes 10: ↑9 and ↓1+14
Comments15

Супер-эффективная архивация — сжимаем все что угодно до 32 байт

Level of difficultyMedium
Reading time4 min
Views34K

Будем разрабатывать архиватор, который может сжимать данные любого размера и типа до 32 (38 с метаданными) байт. Рассмотрим достоинства и недостатки данного алгоритма, возможные способы улучшения его работы.

Распаковать
Total votes 96: ↑89 and ↓7+108
Comments79

Декомпозиция программных компонент

Level of difficultyEasy
Reading time4 min
Views2.9K

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

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

И тут начинаются нюансы..
Total votes 38: ↑18 and ↓20+5
Comments18

Typescript Generics

Level of difficultyHard
Reading time8 min
Views7K

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

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

При этом написание типов бывает действительно утомительным, но Typescript предоставляет возможности ускорить и этот процесс. Здесь нам на помощь придут дженерики.

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

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

Использование кастомных шаблонов и конфигов для swagger-typescript-api

Level of difficultyMedium
Reading time8 min
Views2K

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

Именно кастомные шаблоны и бонусом, кастомная конфигурация, будут раскрыты в текущей статье. Поехали!

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

Проектирование боевых систем в играх: с чего начать

Level of difficultyEasy
Reading time4 min
Views7.9K

Большинство игровых продуктов в том или ином виде сталкиваются с боёвкой. Где-то это эпический кошмар уровня Dark Souls, где-то полуавтоматический бой между группами чибиков в мобильном батлере. В этой статье я покажу один из подходов, используемый геймдизайнерами при проектировании боевой системы для конкретной игры.

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

Zustand.js: современный, невесомый, производительный и очень гибкий state manager

Level of difficultyEasy
Reading time9 min
Views9.5K

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

В статье я расскажу:

о простом интерфейсе Zustand

о его внутреннем устройстве

о производительности без усилий: 3 простых способа оптимизаций

о производительности на максималках: не всегда нужно использовать длинный цикл рендера React, чтобы достичь максимальной производительности - Zustand может быстрее!

о применении на практике: советы и рекомендации по интеграции Zustand в ваши проекты для достижения масштабируемости и удобства поддержки.

Начните активно использовать Zustand в своих проектах - вы будете приятно удивлены простотой и удобством работы с ним.

Читать далее
Total votes 18: ↑13 and ↓5+8
Comments53

Как мы Steam Deck Verified получали

Level of difficultyEasy
Reading time4 min
Views3.3K

Это небольшой рассказ о том, как мы получили заветную плашечку Steam Deck Verified для нашей игры The Unexpected Quest. Причем, никто из нас даже в руках не держал этот ваш Steam Deck.

Читать далее
Total votes 9: ↑6 and ↓3+4
Comments0

πfs — революционная файловая система без хранения данных­

Reading time2 min
Views176K

Что это?


πfs это революционная файловая система, которая вместо того, чтобы тратить место на вашем жестком диске, хранит все данные в π. Вам никогда больше не придется заботится о свободном месте! Вам говорили, что 100% сжатие невозможно? Да вот же оно!

Как собрать?


πfs собирается элементарно:
./configure
make


Да и использовать его не сложнее:
πfs -o mdd=<metadata directory> <mountpoint>

Где metadata directory — каталог с метаданными (названия файлов, смещение в π), а mountpoint ­— каталог монтирования.

Что же π делает с моими данными?


π — одна из самых важных констант математики, и у нее есть куча интересных свойств (о которых можно прочесть в статье на википедии)
Одним из таких свойств числа π предположительно является нормальность, что означает, что все его числа распределяются равномерно, при условии, что это дизъюнктивная последовательность, т.е. все конечные числовые последовательности находятся внутри него. Если мы рассмотрим число π по основанию 16 (HEX), то это предположение верно. Первая запись об этом была в 2001 году.
Ну а если так, то зачем нам хранить все эти эксабайты данных на винчестерах, если мы можем найти их в π?
Читать дальше →
Total votes 395: ↑300 and ↓95+205
Comments228

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

Level of difficultyEasy
Reading time5 min
Views13K

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

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

Читать далее
Total votes 32: ↑27 and ↓5+32
Comments22

Организация развития видеоигровой индустрии: как все начиналось и что мы имеем

Level of difficultyEasy
Reading time8 min
Views1.6K

Всем привет! Ровно год назад мы с другими предпринимателями из видеоигровой (или около нее) индустрии со второй попытки создали первую российскую ассоциацию видеоигровых разработчиков и назвали ее – Организация развития видеоигровой индустрии (РВИ) в форме АНО. Хотя фактически объединяться стали еще раньше — в 2021 году, когда понадобилось выступить совместными усилиями и добиться признания геймдева частью IT, чтобы иметь возможность доступа ко льготам. После решили не расходиться, реализовывать разные проекты на благо индустрии и в итоге пришли к официальной регистрации. Активную деятельность начали, мягко скажем, не в самое спокойное время, было непонятно примерно ничего. Массовые отъезды студий и релокации сотрудников, закрытие многих крупных индустриальных компаний, отключение от площадок дистрибуции и многие другое – все это не вселяло особой надежды не то чтобы на развитие отечественного геймдева, а хотя бы на его сохранение. Но мы решили рискнуть и последовать совету классика: «Делай, что можешь, с тем, что имеешь, там, где ты есть». Давайте посмотрим, что из этого вышло. 

Пришлось несколько раз переформатировать наши основные цели и задачи по ходу изменения внешних факторов. Но в итоге вышло это: «Цель организации — развитие индустрии видеоигр путем поддержки значимых проектов и полезных инициатив, их продвижения и обсуждения. РВИ содействует созданию положительного образа геймдева и игровой культуры в обществе, а также координации взаимодействия между инвесторами, паблишерами, научно-образовательными сообществами и корпорациями. Организация хочет добиться значимого повышения привлекательности инвестиций в видеоигровые проекты и найти решения для их продвижения на глобальном рынке с учетом новых реалий». В целом все сходится 🙂 

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

Hyper: Chance. Этап 0. Знакомство

Level of difficultyEasy
Reading time3 min
Views967

Hyper Chance: Этап 0. Знакомство

Hyper Chance - бесплатный технический акселератор коммерческих проектов от Hyper Dev Guild для разработчиков на основе фреймворка $mol

Обратная связь приветствуется! ^-^

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

Фонетический словарь. Пет-проект в полезное приложение

Level of difficultyEasy
Reading time3 min
Views3K

У меня есть хобби — изучение английского языка, и последнее время я увлекся фонетикой британского английского языка, но почти все словари дают транскрипцию «‎Королевского английского», на котором говорят, по данным Гугла, около 3 процентов жителей Соединённого Королевства. А найденный в интернете словарь http://www.cubedictionary.org/ хоть и дает нужную мне транскрипцию, но имеет ряд недостатков.

Читать далее
Total votes 8: ↑6 and ↓2+6
Comments14

Натальная травматология фронтенда S1 E1-14

Level of difficultyEasy
Reading time3 min
Views6.3K

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

В этом сезоне ко мне на операционный стол попались разные JS, CSS и тест фреймворки да методологии, менеджеры состояний и потоков исполнения, коллекции виджетов и даже приложений. Приготовьтесь, далее вас ждёт целых 32 часа отборного кринжа!

Погрузится в эпидерсию
Total votes 40: ↑22 and ↓18+9
Comments47

Введение в $mol. Часть 1. Модульная система

Reading time35 min
Views9.9K

Эта статья открывает серию публикаций по обучению фреймворку $mol. Сегодня мы разберемся в модульной системе MAM. Речь пойдет об организации кода, отделении его от инфраструктуры, сборке, версионировании, нейминге, минимизации размера бандла, автоматическом выкачивании зависимостей, фрактальных моно-поли-репозиториях, разделении кода на платформы, альтернативе импортам/экспортам, автоматическом разруливании циклических зависимостей.

Читать далее
Total votes 21: ↑14 and ↓7+11
Comments21

«В чём причина?» — спросил Тимлид

Level of difficultyEasy
Reading time2 min
Views11K

«В чём причина?» — такой первый вопрос я бы советовал задавать перед решением каждой ошибки и задачи.

«Вижу следствие» — Чаще всего мы стараемся исправить ошибку как она есть, но не разобраться, какой причиной она была вызвана.

Простой реальный пример с проекта, над которым я сейчас работаю.

Заголовок страницы заглавными написан «ПРОДУКТЫ» вместо «Продукты».

Следствие: видно сразу — быстро поправить и забыть про этот баг. Минимум приложенных усилий.

Читать далее
Total votes 14: ↑7 and ↓7+4
Comments23

BALLSORT на $mol. Часть 1

Level of difficultyMedium
Reading time14 min
Views2.7K

Сегодня мы перепишем на $mol эту демку почти пиксель в пиксель и напишем несколько тестов.

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

Изначально она была реализована на эффекторе + react, недавно несколько человек реализовали ее на реатоме + react исходники, на vue исходники и две независимых версии на моле: первая и моя о ней пойдет речь.

Читать далее
Total votes 10: ↑8 and ↓2+6
Comments22

Простенькие заметки на $mol

Level of difficultyEasy
Reading time5 min
Views3.5K

картинка для привлечения внимания. чорт. надеюсь никто не читает альты..
Начало пути капитана $mol'a! Шта?..


Здравствуйте, меня не зовут Дмитрий Карловский и я… решил написать простенькие заметки на $mol в несколько итераций:


  1. Настраиваемся
  2. Возводим скелет
  3. Сохраняемся
  4. Шаримся
  5. Пакуемся
Читать дальше →
Total votes 15: ↑9 and ↓6+4
Comments5

Information

Rating
Does not participate
Location
Алексин, Тульская обл., Россия
Date of birth
Registered
Activity