Привет, это снова Марк. В прошлой статье я разбирался, как небольшой компании получить собственный корпоративный мессенджер: рассказал немножко про варианты, выбрал Matrix/Element и развернул его в облаке, спрятав за WireGuard VPN. Сегодня решил продолжить строить компактную self-hosted-инфраструктуру и добавить поверх того же контура следующий обязательный сервис — собственный Git. Читать далее
Почему программистов? Ну, в 2017 году в Рапид-Сити команда из Санкт-Петербурга в седьмой раз выиграла студенческий чемпионат мира по программированию ACM ICPC. Кроме них, никто 7 раз не выигрывал.Но чтобы обучить таких программистов, сначала надо было примерно полвека чинить часы и…
Код с пометкой «открытая лицензия» можно принять за что-то бесхозное — бери и используй. Такое ощущение регулярно приводит компании к судам, штрафам и принудительному раскрытию исходников. Разбираемся, как устроены права на открытый исходный код и какие правила в его отношении нельзя нарушать. Читать далее
Каждый вызов скорой помощи – это гонка со временем. Здесь цена ошибки – это не просроченные дедлайны или упущенные финансовые возможности: на кону стоит человеческая жизнь. Чтобы узнать, что скрывается за кулисами диспетчерской, как устроены современные процессы цифровизации
Всем привет, меня зовут Михаил Поливаха, я являюсь техническим лидером проекта Axelix.В Axelix со временем добавляется всё больше и больше сторонних контрибьютеров, которых мы очень приветствуем. И всё больше и больше я сталкиваюсь с некоторым непониманием некоторых строгих гайдлайнов, которые установлены на проекте. Именно сегодня, речь пойдёт про размер PR-а.У нас есть собственный GitHub Action, который блокирует PR в том случае, если суммарное количество измененных строк кода превышает 500. Читать далее
Мы живём на стыке эпох. Речь даже не о смене технологий, а о событиях масштаба титаномахии.Профессионалы, пытающиеся бойкотировать ИИ, напоминают Кроноса, пожирающего своих детей, дабы те его не свергли. Я осознал его мотив только недавно. Раньше мотивации Кроноса и…
Граф зависимостей KMP‑приложения можно собрать обычным Kotlin‑кодом — без рефлексии, кодогенерации, аннотаций и DSL. Composition root и конструкторы, никакой магии. Звучит как шаг назад от зрелых DI‑фреймворков — пока не посмотришь, кому такая форма удобна: тебе, новому человеку в команде и твоему ИИ‑агенту. Читать далее
Выбираете алгоритм хеширования паролей — берёте bcrypt, потому что все берут bcrypt, ставите rounds=10, потому что так в туториале, и идёте дальше. Разбираем, почему это может быть ошибкой, чем отличаются Argon2, scrypt и PBKDF2, и как правильно настроить каждый из них. Читать далее
Вчера было много новостей про GTA VI. Пожалуй, это самая ожидаемая игра года (если не десятилетия). Для многих Vice City, с его автомобилями — это город детства. Пока все обсуждают стоимость игры, отсутствие физического наличия диска, я, как обычно, смотрю на правовую состаляющую. В GTA нет
В этом году мы вернулись к схеме, которую попробовали два года назад: в течение дня участники пишут и отлаживают SQL-запрос, делающий ходы в какой-то игре; ночью проводится турнир между итоговыми запросами претендентов и по сумме набранных очков определяется победитель. В отличие