Всем привет! Сегодня я хочу поделиться полным руководством по развертыванию на своем сервере замечательного open-source инструмента для мониторинга — Uptime Kuma.
Читать далееНедавно я занялся реинжинирингом биллинг-панели для VPN, заменив legacy-PHP на Zig.
Результат: скорость выросла в 20 раз, а нагрузка упала на 70%. Но самое интересное — как мне удалось встроить Zig-код прямо в C-бинарник, хотя в интернете почти нет guides на эту тему.
Хотите узнать, как я смог избежать костылей и сделать систему в 10 раз надежнее? Тогда читайте полную статью — там всё: от боли PHP до хитростей сборки Zig в продакшене.
Читать далееПривет, это снова oldzoomer, и сейчас я расскажу, как ИИ помогает мне освободить себя от рутинных задач, и заниматься исключительно любимым делом.
Читать далееКак устроена наша система на практике: от первого звонка и сметы до актов, допников и еженедельных отчётов. Подойдёт студиям, разработчикам и продактам
Читать далееПривет, Хабр! Меня зовут Александр, я разработчик и, как многие в IT, стараюсь уравновешивать сидячую работу спортом — в моем случае, это велосипед и бег. И, как многие спортсмены-любители, я пользуюсь Strava.
В этой статье я хочу провести вас «под капот» моего проекта и показать на реальных фрагментах кода, как с помощью Python, щепотки NumPy и капли JavaScript можно построить собственный мощный инструмент для анализа спортивных данных. Это история не только про код, но и про философию открытых данных и желание сделать профессиональные инструменты доступными для всех.
Читать далееВ Angular любое изменение в компоненте, которое отображается на экране, является результатом работы механизма отслеживания изменений (Change Detection, CD). За этим процессом стоит Zone.js, который можно представить в роли дирижера, сообщающего компонентам о необходимости обновить DOM.
Zone.js не запускает CD сам. Он лишь создает контекст, в котором Angular потом может его запустить. Его задача только уведомлять Angular о завершении асинхронных операций, после чего Angular решает, нужно ли проверять изменения.
Чтобы понять важность такого подхода, нужно учитывать особенности JavaScript. В JavaScript асинхронные операции, такие как setTimeout или fetch, разрывают стек вызовов. Это значит, что callback-функция, выполняемая после завершения асинхронной операции, не имеет информации о контексте, в котором она была вызвана. Для фреймворка, который отслеживает изменения, это создает определенные трудности: как узнать, что асинхронная операция завершилась и, возможно, изменила данные?
Заглянуть под капотЯ отдал системам авиационной связи и связи специального назначения 11 лет жизни — прошёл путь от линейного инженера-исполнителя и испытателя БРЭО до конструктора авиационных средств связи специального назначения. Несколько лет назад я пообещал написать статью о том, как устроена авиационная связь. Со временем материал оброс деталями, схемами, техническими историями и вырос в полноценный цикл. Что ж, так тому и быть.
В этом цикле мы вместе разберём физические принципы работы авиационных систем связи: от элементарных основ радиопередачи до архитектуры современных спутниковых комплексов. Мы проследим эволюцию технических решений: от аналоговых передатчиков с амплитудной модуляцией до программно-определяемых SDR-систем, в которых частота, модуляция и логика работы задаются кодом. Поговорим о том, как устроены приёмники, как работают тракт передачи, какие модуляции применяются, и почему в авиации до сих пор живы старые диапазоны.
Эволюция протоколов передачи данных отдельная тема. От первых телеграфных радиограмм и азбуки Морзе до цифровых протоколов ACARS и CPDLC, по которым борта сегодня обмениваются сообщениями с центрами управления. Мы разберём, как формируются цифровые пакеты, какие методы коррекции ошибок применяются, как обеспечивается криптографическая защита и надёжность, и как всё это интегрируется с другими бортовыми системами.
Мы заглянем и в небо: посмотрим на спутниковые системы связи L-диапазон, Ku и Ka, SwiftBroadband, Iridium Certus. Поговорим о специфике передачи данных с подвижными объектами, методах множественного доступа, задержках, и о том, как в этих условиях строится надёжный канал. Отдельно обсудим бортовые терминалы, их конструкцию и взаимодействие с авионикой.
Читать далее...которая работает на первых Android-смартфонах в мире, компьютерах из 90-х и даже Mac'ах! Часть 2.
Иногда у меня лежит душа просто взять и написать какую-нибудь небольшую игрушку с нуля, без использования готовых движков. В процессе разработки я ставлю перед собой интересные задачки: игра должна весить как можно меньше, работать на как можно большем числе платформ и использовать нетипичный для меня архитектурный паттерн. Недавно я начал писать ремейк классических «танчиков» и в рамках серии статей готов рассказать о всех деталях разработки трёхмерной игры с нуля в 2025 году. Если вам интересно узнать, как работают небольшие 3D-демки «под капотом» от написания фреймворка до разработки геймплея и тестов на экзотических устройствах — жду вас под катом!
Читать далееПривет, Хабр!
Сергей Пантелеев и Данил Щуцкий собрали ключевые новости PHP и Laravel за июнь. Будьте в тренде — читайте обзор!
Проще всего понять, как это, быть — ассистентом предпринимателя, можно по формату «Один мой день». Аня — мой ассистент в контент-бюро, но, подозреваю, что в любой нише движ примерно такой же.
Читать как это, быть ассистентомСтоит только подьехать к центру города, Красной площади или Дворцовой, как ваш навигатор виснет, а GPS-точка прыгает через дороги, заводит вас во дворы и упорно считает, что вы идёте по Неве, а не по тротуару. В городских джунглях GPS сталкивается с отражениями, перекрытиями сигналов и тёмными зонами, из-за которых точность падает до нескольких десятков метров, а иногда и сотен.
Разберёмся, какие механизмы приводят к «скачкам» позиционирования и как индустрия борется с тем, чтобы вы не терялись. Детали внутри ката.
Читать далееSinclair ZX80 по праву считается одним из родоначальников персональной компьютерной революции. Начало R&D-проекта по созданию ZX80 положено в 1979 году, когда Клайв Синклер совместно с командой инженеров приступил к проектированию. Через год мир увидел ZX81. Инженеры Sinclair буквально выжали максимум из него, стремясь удержать минимальную стоимость устройства. А в 1982 году произошел прорыв – свет увидел ZX Spectrum, ставший впоследствии культовой моделью 1980-х годов, сыгравшей ключевую роль в революции, благодаря которой компьютеры впервые появились в домах британцев.
Игры для ZX Spectrum загружались с помощью кассетного проигрывателя и выводились на экран телевизора. В отличие от своего монохромного предшественника, они были цветными. Давайте вспомним несколько наиболее – на мой взгляд – знаковых и популярных тайтлов игровой индустрии этой легендарной серии.
LOAD ""Прочитав [1], хотя это и не академический материал, очень впечатлился идеей того, что мнимая единица кодирует направление. Дело в том, что если мы имеем в формуле два скаляра, которые запрещено складывать и это - в математике, которая запросто суммирует апельсины с помидорами, происходящее должно нести какой-то смысл. Но математика не кодирует смыслов, поэтому из идеи комплексных чисел мы можем знать лишь то, что смысл в принципе существует. Найти же категориальное различие для такой фундаментальной математической абстракции, как комплексные числа - отдельная большая удача и исследование такой возможности может оказаться перспективным.
Читать далееПривет, Хабр!
Сегодня мы рассмотрим, как спасаться от «эффекта соседа», рандомизируя не пользователей, а их кластеры в A/B тестах.
У классического AB-теста есть аксиома SUTVA: мол, результат конкретного юзера зависит только от его собственной ветки «treatment / control». Реальность улыбается и кидает в лицо соцсетью, где лайк друга поднимает и твою вовлечённость, курьером, который обгоняет коллег и заражает их скоростью, и cпасибками «приведи друга — получи бонус». Итог — наблюдения больше не независимы.
Внутрикамерный жаргон это называет network interference. Чем плотнее граф связей, тем сильнее лечение «просачивается» за контрольные границы.
Читать далееПодключение датчика VL53L0X к микроконтроллеру STM32F103 и вывод расстояния в реальном времени. Рассмотрены особенности инициализации датчика, настройка I²C-интерфейса и обработка данных. Приведен пример кода на языке C для работы с периферией STM32.
Читать далееПару лет назад единственной настольной игрой, в которую я играл онлайн с друзьями, была «Монополия». Со временем она начала надоедать, и мне захотелось чего‑то нового. Моим открытием стала Machi Koro — экономическая карточная игра, где победа зависит не столько от случайности, сколько от выбранной стратегии, что выгодно отличает её от «Монополии».
На тот момент я не нашёл достойных онлайн‑аналогов Machi Koro, что и подтолкнуло меня к созданию собственной реализации. В этой статье я подробно расскажу о технической стороне проекта: от составления требований до выбора стека технологий.
Читать далее«Работает - не трогай» - самый опасный принцип, который передается между разработчиками быстрее, чем баги через копипасту.
Да, код может запускаться. Да, он даже может делать то, что нужно. Но вопрос в другом - можно ли с ним работать? Понять, поправить, развить, не впадая в экзистенциальный кризис.
Эта памятка не про чистоту ради чистоты. Она про то, чтобы через неделю ты сам себе не писал комменты со словами «кто это вообще придумал». "Отревьюируй" себя пока это не сделал кто-то другой.