Search
Write a publication
Pull to refresh
78
0
Роман @RomeoGolf

инженер-программист

Send message

Альтернативы Firefox: обзор 5 лучших форков для тех, кто устал от Mozilla

Reading time4 min
Views24K

Firefox, созданный Mozilla, долгое время оставался символом свободы и конфиденциальности в интернете. Однако в последние годы многие пользователи (включая меня) начали замечать, что проект меняется: есть спорные обновления, интеграция коммерческих функций и вопросы к конфиденциальности. К счастью, сообщество open-source не сидит сложа руки — на основе исходного кода Firefox появились форки, которые предлагают свежий взгляд на браузер. В этой статье мы рассмотрим пять альтернатив Firefox. Поехали!
Читать дальше →

Я устал возиться с кучей VPN и поставил Xray на роутер

Level of difficultyMedium
Reading time5 min
Views140K

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

Я долгое время жил в этом хаосе. Сначала я ставил VPN на телефон, потом на ноутбук, потом на телевизор... В какой-то момент их стало столько, что я уже не знал, какой включен, какой отключен, где подписка закончилась, а где опять надо искать новый сервер. Рабочий VPN переставал работать в самый неподходящий момент – например, когда я пытался оплатить что-то онлайн или посмотреть видео.

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

Читать далее

Чтобы побеждать, достаточно одной книги

Level of difficultyMedium
Reading time12 min
Views67K

Есть два правдивых утверждения.

Первое прозвучит плохо для культуры, в которой инженеров мотивируют извиняться за сам факт их существования, а не умеющий кодить мошенник вправе заявлять, что он является «идейным вдохновителем». Утверждение заключается в том, что я — один из лучших инженеров в моей непосредственной рабочей среде. Я изучаю приблизительно на два-три порядка больше, чем средний инженер рядом со мной. Мне делала оффер на должность сениора одна из лучших компаний в стране, разные Серьёзные Люди с радостью повторно нанимают меня и радостно наблюдают, как я разгребаю лениво составленные примечания к коммитам. Дела мои вполне хороши.

Второе прозвучит плохо, потому что иногда мне приходится убеждать людей нанять меня: я очевидно хуже, чем те, кто пишет мне связанные с работой письма. Я смутно лишь могу догадываться, как с тремя-четырьмя годами опыта качественной работы в психологии я смог стать «сениор-инженером». Я писал тесты только для личных проектов, потому что ни у одного моего работодателя не было никаких рабочих тестов, как и интереса в их написании. Код для моей магистерской я полностью написал без контроля версий, потому что один из лучших университетов страны ему не обучал. Если вкратце, я ни разу не решал по-настоящему сложной задачи, а лишь нажимал на кнопочку «сэкономить полмиллиона долларов», которую не замечал никто другой. Я просто тупица.

Я знаю, что второе утверждение истинно, потому что вижу, насколько сложными вещами занимаются другие люди, и знаю, что истинно первое, ведь я, иммигрант, без проблем попал в 3-4% людей, получающих самую высокую зарплату в стране. Как эти два утверждения могут быть истинны одновременно?
Читать дальше →

О скрытии сообщений в эмодзи и взломе казначейства США

Level of difficultyMedium
Reading time7 min
Views15K

30 декабря 2024 года, пока большинство из нас суетились в преддверии празднования Нового года, Казначейство США готовило для Финансового комитета Сената США важное уведомление. В нём сообщалось, что его системы, которые, очевидно, содержат особо чувствительные конфиденциальные данные, были взломаны группой правительственных хакеров Китая.

Даже не знаю, как пропустил эту новость. Обычно я всё активно отслеживаю, особенно уязвимости опенсорсного ПО, которые касаются казначейства моей страны 🤷‍♂‍

И это ещё не самое безумное. Сейчас я расскажу вам, как именно они это сделали!
Читать дальше →

Фундамент тайм-менеджмента. Убираем костыли и учимся нормально ходить

Level of difficultyEasy
Reading time6 min
Views31K

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

Реагируя на этот запрос от общества, интернет заполонили блогеры‑инфлюенсеры, которые обещают, что своим 10-минутным видео они смогут объяснить, как абсолютно любой, независимо ни от каких обстоятельств и личных характеристик, сможет стать супер продуктивным. Да, может явно это и не проговаривается, но кликая по обложке такого видео мы надеемся, что сейчас этот гуру сможет дать нам решение проблемы, которую мы, зачастую, даже сформулировать сами не можем. Но проходит время, и после пресыщения подобным контентом разумный человек начинает жёстко фильтровать поступающую информацию, отсеивая подобные обещания.

Я достаточно долго варился в этой саморазвиваторской движухе и понял, почему бОльшая часть советов разных блоггеров не помогают. Дело в отсутствии фундамента. Нас заманивают волшебными приложениями и методиками, которые нам «точно помогут»: метод помидора, zettelkasten (второй мозг), getting things done, deep work… продолжать можно достаточно долго. Эти инструменты могут быть действительно полезны, но лишь для конкретного человека, находящегося в конкретной ситуации. Тот, кто реально преуспел в организации себя, должен всем этим умело управлять, а для этого необходимо иметь базовые принципы, на которых будет строиться его логика в контроле своего времени.

Читать далее

Вся правда про реальную инфляцию в России

Level of difficultyEasy
Reading time23 min
Views74K

В этой статье не будет никаких «возможно», «мне так кажется», «прикинула на глаз» и прочих дилетантских методов подсчета реальной инфляции, которыми обычно наполнены статьи на эту тему. Зато тут будут реальные расчеты, моя собственная статистика инфляции, а также некоторые другие альтернативные статистики. Расскажу, для чего вообще нужна инфляция, как Росстат считает инфляцию, какая реальная инфляция в РФ, что такое личная инфляция и как от этой пресловутой инфляции спасаться. Приятного чтения.

Читать далее

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

Level of difficultyMedium
Reading time3 min
Views5.3K


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


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


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


Но мне кажется, что есть очень простой способ устранить циклические ссылки в программе, который можно реализовать практически в любом типизированном языке программирования, конечно, если при этом не использовать все разрешающее ключевое слово unsafe для Rust или оператор reinterpret_cast в случае С++.

Читать дальше →

Linux-десктоп своими руками: подключаем bluetooth-наушники

Reading time8 min
Views4.6K

Немного шаманства и колдовства, чтобы заставить работать беспроводные наушники без помощи Desktop Environment, особенно когда вы его не устанавливали

Читать далее

Десульфатация автомобильных аккумуляторов — это просто

Level of difficultyEasy
Reading time10 min
Views57K


Привет, Хабр! К обслуживанию аккумуляторной батареи не все автомобилисты относятся серьёзно, ведь её можно сдать для переработки в обмен на деньги или скидку при покупке нового аккумулятора.

Однако это вопрос не только экономики и экологии, но ещё и надёжности. Когда двигатель не заводится в самый неподходящий момент, либо выходит из строя генератор, а резервная ёмкость АКБ не позволяет доехать до места назначения, это серьёзно портит жизнь.

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

Крутой гиковский девайс по цене роллов — зачем я купил смарт-часы на Android'е за 1 000 рублей?

Level of difficultyMedium
Reading time10 min
Views34K

На первый взгляд кажется, что в современном мире за 1 000 рублей не представляется возможным купить интересное и полезное устройство. Уже практически 3 года я занимаюсь тем, что рассказываю о том, как я покупаю за копейки различные гаджеты и стараюсь дать им новую жизнь. Однако всё это время я обходил один интереснейший класс устройств — Android-часы, причём не на WearOS, а на самом обычном чистом андроиде с полноценными смартфонными чипсетами. Недавно я сэкономил на «шавухе» и купил себе на вторичке смарт-часы ZGPax S8 за тысячу рублей — и в сегодняшней статье я расскажу, почему это один из лучших бюджетных девайсов для настоящего гика!

Читать далее

Гениальный водяной компьютер: гидравлический интегратор Владимира Лукьянова

Level of difficultyEasy
Reading time6 min
Views11K

В истории вычислительной техники существует замечательная и часто упускаемая из виду глава: разработка аналоговых водяных компьютеров в Советском Союзе. Среди этих инноваций гидравлический интегратор Владимира Сергеевича Лукьянова представляет собой пионерское достижение, которое опередило сложные математические расчеты почти на полвека. Благодаря этой чудо-машине был построен БАМ, Саратовская ГЭС и огромное количество других масштабных проектов.

Читать далее

Суд признал незаконным п. 2.24 УКБО ТБанк об автоматическом согласии клиента на обработку его биометрии

Reading time23 min
Views14K

Суд признал НЕЗАКОННЫМ п.2.24 УКБО ТБанк об автоматическом согласии клиента на обработку биометрии и получение согласия при входе в интернет-банк, мобильное приложение или вводе пин-кода в банкомате.

Читать далее

Три теоремы о сортировках

Level of difficultyMedium
Reading time12 min
Views14K

Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort. Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу?

В статье хочу рассказать об этой теореме и ещё о двух, на которые я наткнулся когда вел занятия по информатике в 9-11 классах будучи студентом старших курсов. Эти теоремы для меня были удивительным открытием, радовался вне себя когда вывел сам одну из них - её я не встречал ни в одном учебнике по информатике. В последствии все три теоремы были найдены в недрах Кнута, но чёрт побери, их поиск был сложнее, чем вывод!

Если я ещё не убедил Вас прочитать статью, то вот моя последняя попытка: в статье объясню почему пузырёк -- это бесполезная фигня, но внезапно практически также работающая сортировка вставками -- это супер важная сортировка, являющаяся частью std::sort в MSVC, GCC и Clang. Расскажу, каким интересным свойством оптимальности обладает сортировка выбором, являющаяся в теории такой же неэффективной как пузырёк.

Читать далее

Мои правила

Level of difficultyEasy
Reading time6 min
Views3.8K

Можно считать эту статью второй частью в неком цикле про мои принципы в работе. В первой части я писал про какие-то неважные для меня вещи на примере code-style. Теперь логично рассказать о том, что для меня важно, про некоторые правила, которые помогают мне в работе. Это не только про написание кода, но и про процесс разработки в целом.

Читать далее

История ИТ: как человечество построило ИТ-мир и почему без него рухнет всё

Level of difficultyEasy
Reading time4 min
Views7.4K

Представьте, что вы попали в 1825 год и пытаетесь объяснить крестьянину, что через 200 лет люди будут общаться через «невидимые волны», а железные ящики станут умнее всех академий. Представили что он сделает своим указательным пальцем у виска? ИТ — это не случайность, а закономерный итог 5000 лет изобретательства. Разберемся, как мы дошли от камешков до квантовых процессоров и почему назад пути нет.

Читать далее

Пишем стек TCP/IP с нуля: основы TCP и Handshake

Level of difficultyEasy
Reading time9 min
Views12K

Первая часть: Ethernet, ARP, IPv4 и ICMPv4

Пока наш стек TCP/IP пользовательского пространства содержит минимальные реализации Ethernet и IPv4. Настало время заняться пугающим Transmission Control Protocol (TCP).

TCP, работающий на четвёртом (транспортном) сетевом слое OSI1, отвечает за починку ошибочных подключений и сбоев в доставке пакетов. TCP — «рабочая лошадка» Интернета, обеспечивающая надёжную связь практически во всех компьютерных сетях.

TCP — не особо новый протокол, первая его спецификация вышла в 1974 году2. С тех пор многое поменялось, TCP дополнился множеством расширений и исправлений3.

В этом посте мы изучим базовую теорию TCP, а также рассмотрим заголовок TCP и поговорим об установке соединения (TCP handshaking). Под конец мы продемонстрируем первую функциональность TCP в нашем сетевом стеке.

Читать далее

eBPF вместо всего: почему это новая эра сетей, мониторинга и безопасности?

Reading time9 min
Views14K

Раньше модификация Linux требовала пересборки ядра или использования дополнительных модулей. Но теперь есть eBPF — технология, которая позволяет программировать ядро на лету, не жертвуя стабильностью. Звучит как мечта системного администратора или очередной тренд, который существует только на бумаге, но нет. Обработка миллионов пакетов в секунду, отслеживание уязвимостей в реальном времени и замена традиционных агентов мониторинга чем-то более эффективным — это не будущее. Это настоящее, в котором уже живут, например, CloudFlare и Netflix. Детали под катом.
Читать дальше →

Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС

Level of difficultyMedium
Reading time5 min
Views5.7K

Привет! Я Егор Ерусланов, Qt-разработчик.

В Android-приложение 2ГИС мы добавили новый режим PiP (Picture-in-Picture, или «картинка в картинке»). С PiP наши пользователи смогут следить за маршрутом в маленьком плавающем окне на основном экране. Например, когда нужно быстро прочитать сообщение или включить подкаст и при этом сохранять фокус на навигации. Режим PiP — это не просто «приятная мелочь», а функциональность, которая подстраивается под новые требования пользователей навигатора. 

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

Читать далее

Выбираем стандарт языка Си в 2025 году

Level of difficultyEasy
Reading time13 min
Views8K

Шёл 2025 год, а я задался вопросом: «Не пора ли нашей команде выбрать стандарт языка Си, на котором будет вестись основная часть разработки?» С одной стороны кажется, что этот вопрос давно должен быть решён, стандарт языка указан в code style, конечно, после «холиваров», череды обсуждений, обид, проклятий и прочих маленьких трагедий. А если нет? А если нет, то так ли это важно? Что там нового может быть в языке Си? Стоит ли этот вопрос вообще того, чтобы тратить время? В этой заметке поделюсь с уважаемым читателем тем интересным, что я узнал и вспомнил во время неспешного исследования этого вопроса, относительно холодными и тёмными вечерами.

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

Что делает код трудным для чтения? Визуальные паттерны сложности

Level of difficultyEasy
Reading time14 min
Views22K

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

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

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

Предупреждение! Это туманная и плохо изученная область. В исследовании использовались различные источники: популярные метрики, научные статьи и практические мнения (включая мое собственное). Но в конце пути мы сведем всё ниже к 8 визуально различимым свойствам, которые помогут программистам любого языка улучшить читаемость кода.

Читать далее

Information

Rating
3,749-th
Location
Свердловская обл., Россия
Date of birth
Registered
Activity