Pull to refresh
18
0
Журат Максим @ChessMax

User

Send message

Система рендеринга для космического симулятора в Unity

Level of difficultyMedium
Reading time20 min
Views7.1K

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

? Читать далее

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time46 min
Views343K

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

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

Читать далее

Пути внедрения поддержки скриптов в Dart/Flutter

Level of difficultyHard
Reading time9 min
Views2.1K

А что, если я скажу вам, что есть ряд способов изменения бизнес-логики мобильных приложений без проверки сторами?

«Бред!»- ответят скептики. «Выкладывай!» - ответят энтузиасты.

В рамках данной статьи я предлагаю вам рассмотреть возможные пути для интеграции функционала выполнения скриптов в ваши Dart/Flutter приложения.

Читать далее

Пытаясь композировать некомпозируемое: монады

Reading time5 min
Views5.2K

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

Читать далее

Как я чтение всего контента на RSS переводил

Level of difficultyEasy
Reading time13 min
Views13K

TL;DR В статье рассказывается о том, как мне удалось перевести чтение лент в ВКонтакте**, Telegram, Facebook*, Instagram**, Reddit и почтовых рассылок в единый сервис InoReader. Причем почти без написания своих велосипедов.

Подписаться на RSS

Как написать свою маленькую ОС

Level of difficultyEasy
Reading time7 min
Views50K


Большое начинается с малого. Например, ядро Linux 0.0.1 состояло всего из 10 239 строк кода, из них 20% комментарии. Такой проект вполне может осилить студент в качестве курсовой или дипломной работы, программируя по вечерам на домашнем ПК (собственно, Линус и написал его во время учёбы в университете, когда вернулся из армии).

Если один студент смог это сделать тогда, то почему нельзя повторить? И действительно, в интернете есть даже специальные обучающие ресурсы для написания новых ОС и целые сообщества энтузиастов, которые помогают друг другу в этом непростом деле.
Читать дальше →

Самое понятное объяснение Специальной теории относительности

Level of difficultyMedium
Reading time13 min
Views143K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

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

Читать далее

Личное облако на Proxmox

Level of difficultyMedium
Reading time8 min
Views28K

В прошлой статье (https://habr.com/ru/articles/794508/) я писал как поставить Proxmox 8 на Orange Pi 5(b). Это даже получилось, но я уперся в то, что производитель железки не выпускает свежие ядра под нее. Для железки есть 5.10.160 и оно устарело для Proxmox 8. Виртуалки работают, но есть проблемы с фаерволом. Производитель обещает вот-вот выпустить новое, но ждать я не стал и решил сделать инфраструктуру по другому. О чем и напишу. Получается уже цикл статей. Эта будет описывать цель и первые шаги к ней.

Читать далее

Защита Home Assistant

Level of difficultyMedium
Reading time6 min
Views18K

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

И все это дельные советы, ничего плохого в них нет, но хочется чего то большего.

Читать далее

Кодируем крестики-нолики в 15 битах

Level of difficultyEasy
Reading time4 min
Views10K

Недавно я наткнулся на пост Алехандры Гонсалес (@blyxyas), в котором рассказывается о попытке сжать игру крестики-нолики в минимальное количество битов. Она пришла к решению из 18 битов. Это заставило меня задуматься: а можно ли улучшить этот результат?

Как говорит Алехандра, существует 765 возможных состояний игры1. Мы можем просто назначить число каждому состоянию, что займёт 10 битов2. Но, по словам Алехандры, это «скучно». С таким описанием игры мы практически ничего не сможем сделать. Когда будет нужно считать значение из конкретной ячейки или перейти из одного состояния в другое, на практике нам придётся использовать таблицу поиска, сопоставляющую каждое число с более крупным и структурированным описанием, что делает бессмысленным саму идею сжатого описания.

Читать далее

Самая нужная программа на свете

Reading time20 min
Views168K
image
Какими программами постоянно пользуются люди? Если подумать над этим вопросом, то окажется, что список этот не такой уж большой. К постоянно используемым программам можно отнести: саму операционную систему, файловый менеджер, текстовый редактор, браузер, мессенджер. Это именно тот базовый набор, которым пользуется на компьютере практически каждый человек. Требования к таким программам должны быть высокими: безотказная работа, быстрое выполнение всех функций, понятный и удобный интерфейс.

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

Как разработчику организовать личную базу знаний: систематизация информации из книг, статей, видео и курсов

Level of difficultyEasy
Reading time6 min
Views56K

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

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

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

Читать далее

Московский уровень медицины в регионе: переосмысляем клинику

Reading time10 min
Views5.2K
image
Навигационный шаблон для операции

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

В регионах проблемы очевидные:
  1. Недостаток хороших специалистов.
  2. Небольшой поток, то есть сложно закладываться под редкие случаи.
  3. Меньше доходы населения.
  4. Ниже культура профилактики.
  5. Ниже уровень понимания, как работает медицина (в т. ч. из-за всех перечисленных проблем, включая реальные доходы).

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

Для начала — у нас появилось разделение взятия анализов, диагностики и вмешательства. Как выглядит: специально обученный человек, способный произвести все нужные аппаратные исследования, делает пациенту КТ, сканирует его, берёт анализы и т. п. Всё это в цифровом виде отправляется к хирургу в Москву, где у последнего гнездо. На самом деле точно так же, как этот человек отправлял бы ему из кабинета № 3 в кабинет № 5.

Рабочее время хирурга выглядит так: от 70 до 90 % времени он рассматривает КТ и другие данные о пациенте, обсуждает это с другими врачами, печатает на 3D-принтере фрагменты организма пациента (прямо из КТ или фотограмметрии) и тренируется на них перед будущей операцией.

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

Чем выше класс хирурга, тем меньший процент времени он видит пациента.

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

Затем прилетает, отдыхает, делает операцию (точнее, несколько, собранных к его прилёту), улетает.

Когда мы поняли, как это должно работать, стало понятно, что можно пересмотреть ещё много всего в клинике.
Читать дальше →

Переворачивающиеся при умножении числа

Level of difficultyMedium
Reading time7 min
Views21K

Здравствуйте!

Расскажу о серии задач, которая случайно возникла в процессе решения другой задачи. Мне на глаза попалось равенство:

81 * 27 = 2187

– Интересно, – подумал я. – А бывают ли ещё такие числа, чтобы цифры слева и справа повторялись?

Читать далее

Создаём виртуальную сеть, как это делает Docker

Level of difficultyEasy
Reading time8 min
Views28K

Как известно, Docker умеет создавать виртуальные сети для безопасного и удобного сетевого взаимодействия внутри контейнеров. В этой статье мы рассмотрим, как именно он это делает на примере базовых манипуляций с сетью в рамках одного хоста с операционной системой Linux.

Читать далее

Flutter и ГОСТ TLS

Level of difficultyMedium
Reading time9 min
Views6.2K

Меня зовут Куприёв Андрей, я Flutter‑разработчик в команде Центра развития финансовых технологий (ЦРФТ) Россельхозбанка. В этой статье мы рассмотрим, как реализовать поддержку протокола ГОСТ TLS в приложениях, разработанных на Flutter.

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

Читать далее

Опровергаю пять архитектурных заблуждений

Level of difficultyMedium
Reading time13 min
Views25K

Привет! Я Алексей, iOS-разработчик в Тинькофф. Участвую в развитии архитектуры приложения, провожу собеседования и занимаюсь менторингом разработчиков.

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

Читать далее

Что почитать игровому программисту?

Level of difficultyEasy
Reading time6 min
Views36K

Объём специфичных знаний, которые требуются рядовому программисту игр, даже если он только начал свою карьеру, вызывает у меня «лёгкую» тоску. Это одна из причин, почему большая часть людей, которые «горят делать игры», отсеивается на этапе технических собеседований (обычно их больше одного). Это нормально и грустно. Добавьте сюда, что нефундаментальные знания, вроде инструментов, библиотек и движков, приходится обновлять где‑то раз в 5–7 лет. Не вижу тут, что игрострой сильно отличается от других областей разработки. Если бы лет 15 назад «добрый я» скинул на почту список книг, которые придется прочитать и осмыслить, армия собранных граблей не была бы столь большой и разнообразной, и без ручек половинной длины. Осторожно, в конце статьи будет супердлинная картинка (взята с github отсюда, с разрешения автора).

У программиста нет цели, только путь.

Value: библиотека реактивного программирования для Dart

Level of difficultyMedium
Reading time9 min
Views2.7K

Статья посвящена моей реализации идей реактивного программирования в Dart и Flutter. Рассказываю про разработанную мною библиотеку Value, которая в ряде случаев хорошо подходит для замены Stream, ValueNotifier и rxdart.

Читать далее

Как выдавать бесплатные SSL сертификаты с помощью certbot, Nginx и Docker

Level of difficultyMedium
Reading time5 min
Views55K

Всем привет! Одна из моих рутинных задач - это подъем новых проектов и микросервисов в облаках. Для этого практически всегда нужны домены и поддомены с наличием SSL сертификата. У меня выработался подход, с помощью которого я автоматизировал процесс выдачи сертификатов с помощью certbot. О чём и хочу рассказать.

Читать далее

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Mobile Application Developer
Senior
Flutter
Flutter Bloc
MobX
Mobile
Development of mobile applications