Search
Write a publication
Pull to refresh
2
0
Константин @ConstOrVar

Разработчик мобильных приложений

Send message

Мастерство фокусов на Compose

Level of difficultyEasy
Reading time23 min
Views4.3K

Привет! Меня зовут Костя, я Android-разработчик в онлайн-кинотеатре PREMIER. Среди прочего у нас есть приложение для Android TV. Работая над ним, я столкнулся с тем, что система фокусов в Jetpack Compose устроена сложнее, чем кажется на первый взгляд. Поскольку для ТВ-приложений и устройств без сенсорного управления работа с фокусом играет ключевую роль в навигации, мне понадобилось детально разобраться в теме. Результатами делюсь в статье.

Читать далее

Эволюция хранилища ВКонтакте: от первой реализации до наших дней

Level of difficultyMedium
Reading time9 min
Views3.4K

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

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

Читать далее

Через тернии к 5 тысячам звёзд на гитхабе – мой путь опенсорсера

Level of difficultyEasy
Reading time10 min
Views10K

Пришло, пришло время (экспертов по опенсорсу) моей истории опенсорс-проекта. Было столько всего, что до технических деталей (почти) не дойдёт – они есть и в более древних свитках статьях.

Началось всё в 2010 году. Я только закончил аспирантуру и попал в новый для меня проект в Интеле фулл-тайм разработчиком. Мне нужно было внедрить автоматическое тестирование десктопных GUI приложений для внутреннего пользования. Опыт подобный уже был накоплен с середины 2006-го тоже в Интеле, но подходящий инструмент надо было еще найти или даже создать. Получилось что-то среднее: найти и воскресить!

Читать далее

Графика в Linux — как это вообще устроено

Reading time5 min
Views16K

По мотивам недавних постов, затрагивавших тему графики в Linux — как оно вообще там сделано, и как работает, не углубляясь особо в детали.

Здесь не будет технических подробностей и нюансов настройки — так, чисто обзорно сверху по кочкам.

Зачем? Затем, что, как я вижу, сейчас не все пользователи Linux представляют, что именно скрывается за словами «графическая среда», и чем Gnome отличается от Wayland.

Читать далее

Мобильная разработка за неделю #585 (21 — 27 апреля)

Level of difficultyEasy
Reading time4 min
Views1.9K
В новом дайджесте продолжаем изучение архитектурного линтинга и CI/CD, исследуем «приключение на 20 минут» с legacy-кодом и оправдания для вайб-кодинга, SwiftUI Instruments, скрытные ботнеты, выпуск приложений Spotify и многое другое. Заходите!

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

Как /etc/hosts поломал редактор сайта

Level of difficultyEasy
Reading time4 min
Views5.9K

Когда я работал над техническим постом о ресолвинге DNS, то столкнулся с чем-то неожиданным. Каждый раз, когда я вводил пути к файлу hosts (/etc/h*sts — здесь я намеренно его обфусцировал, чтобы не вызвать ту самую ошибку), редактор Substack показывал «Network Error» и отказывался автоматически сохранять черновик.

Читать далее

Безопасность ИИ на практике: разбор заданий AI CTF на Positive Hack Days Fest 2

Level of difficultyHard
Reading time38 min
Views1.7K

Чем больше систем работают на основе машинного обучения, тем критичнее становится вопрос их безопасности. Умные технологии всё больше окружают нас, и сложно отрицать важность этой темы. С 2019 года на конференции PHDays мы проводим соревнование по спортивному хакингу AI CTF, нацеленное на атаки систем, построенных на машинном обучении. Соревнование проходит в рамках AI Track — направления с докладами на Positive Hack Days, где эксперты в области информационной безопасности делятся опытом применения машинного обучения как для offensive, так и для defensive задач. В 2023 году мы поэкспериментировали с форматом, создав квест-рум, где участникам нужно было обойти три фактора защиты, чтобы выбраться. Однако, прислушавшись к многочисленным просьбам сообщества, мы решили вернуться к нашему традиционному формату CTF.

Читать далее

Все, что нужно знать о домашних 3D-принтерах: сколько стоит, как выбирать, нюансы использования, зачем нужен

Level of difficultyEasy
Reading time13 min
Views20K

Если вы подумываете о покупке своего первого 3D-принтера, но ничего о них не знаете и не понимаете, с чего начать выбор, эта статья для вас.

Привет, Хабр! Я Денис Воденеев, директор отделения автоматизированного тестирования в IBS. Увлекаюсь 3D-печатью уже 5 лет — первый принтер купил в 2019 году.

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

Читать далее

Как подготовиться и пройти System Design Interview

Level of difficultyEasy
Reading time16 min
Views15K

System Design Interview — пожалуй, один из самых «бесформенных» этапов технического собеседования. Здесь важно не найти единственно верное решение, а продемонстрировать системное мышление, умение работать с абстракциями, логически выстраивать архитектуру и аргументированно делать выбор технологий.

Александр Кучук, эксперт сообщества Spring АйО, подготовил авторскую статью, в которой шагом показывает, как структурировать интервью, какие вопросы задавать, как рассуждать и что оценит интервьюер.

Кстати, Александр ведет репозиторий с заметками: https://github.com/qcha/JBook

Читать далее

Алгоритмы консенсуса Paxos, Raft и Zab в распределённых системах

Level of difficultyMedium
Reading time31 min
Views5.4K

В распределённых системах критически важно обеспечить консенсус – согласованность данных или решений между множеством узлов (серверов), даже при сбоях и задержках сети. Алгоритмы консенсуса позволяют группе несовершенных узлов действовать как единое надёжное целое. Три классических алгоритма – Paxos, Raft и Zab – стали основой для построения отказоустойчивых систем. Они гарантируют, что при наличии кворума узлов (обычно большинства) все узлы придут к единому решению и последовательности операций, сохраняя консистентность данных. В данной статье мы рассмотрим устройство этих алгоритмов «под капотом», их этапы (выбор лидера, репликация журнала, обработка сбоев и восстановление), области применения в реальных системах (от координаторов в кластерах Kubernetes и Apache Kafka до распределённых баз данных), а также сравним готовые реализации (такие как etcd, ZooKeeper, Consul и др.) по ключевым характеристикам.

Читать далее

Как Factorio соблазнила Кремниевую долину (и меня)

Level of difficultyMedium
Reading time7 min
Views3.7K

Персонаж игры Factorio, разработанной чешской компанией Wube Software, совершил аварийную посадку на чужую планету. Его задача — построить ракету для побега. Для этого ему потребуется единолично воссоздать промышленную революцию, от разбивания камней для создания грубых каменных печей до перегонки нефти в ракетное топливо. Играя однажды, я установил насос на побережье озера, чтобы подавать воду на свой бетонный завод, и тут до меня дошло, что я много часов не пил воду в реальном мире. У меня болела голова, но я не хотел вставать из-за компьютера. Мне хотелось решить проблему щелчком мыши, как я делаю это в игре, проложив несколько метров трубопровода от кухонного крана к моей сгорбившейся фигуре (и, возможно, ещё несколько метров от моего тела до туалета).

Раньше меня увлекали многие игры, но лишь некоторые полностью подавляли мою волю, моё ощущение времени, да и все остальные зоны мозга, не занимающиеся строительством фабрики. Однако по стандартам Factorio я всё равно остаюсь обычным нубом. Два моих друга однажды устроили 24-часовую игровую сессию лишь с одним трёхчасовым перерывом на сон. Серьёзные игроки очень часто не выходят из игры в течение многих тысяч часов.

Эта игра, продавшаяся за последние восемь лет тиражом в четыре миллиона копий и недавно выпустившая первое расширение, за свою аддиктивность была прозвана «Крэкторио». Всё это ещё более примечательно потому, что Factorio практически не пытается увлечь игрока. Игровой процесс суров и беспокоен, графика как будто устарела на двадцать лет, за попытки срезать углы тебя всегда в позже наказывают, а если хочешь идеально освоить её, то хотя бы часть времени приходится тратить на вычисление коэффициентов.
Читать дальше →

hex-атака: как изящно обойти закрытый буфер обмена, потоковый AV и другие защитные механизмы удаленных рабочих мест

Reading time10 min
Views3.7K

Привет, Хабр! Меня зовут Марат Сафин, я эксперт по безопасности КИИ и АСУТП в К2 Кибербезопасность. Более восьми лет занимаюсь кибербезом с упором на защиту промышленных объектов и АСУТП. До этого пять лет внедрял и обеспечивал функционирование самих АСУТП.

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

Суть в том, что любой файл можно передать куда угодно, просто... набрав его на клавиатуре. Звучит безумно? Давайте разберем, как это работает, докажем работоспособность концепции, и, конечно, поговорим, как от этого защититься.

Читать далее

Очень простая структура данных, с помощью которой решаются сложные задачи

Reading time7 min
Views16K

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

Читать далее

Системные вызовы Linux, которые должен знать каждый разработчик

Level of difficultyMedium
Reading time7 min
Views17K

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

Читать далее

Markdown презентации по-новому: контроллер Nintendo, интерактивный блокнот и немного магии

Level of difficultyEasy
Reading time38 min
Views2.9K

Как превратить скучные слайды в интерактивную демонстрацию, где код можно запускать прямо на месте? В этой статье попробуем перенести презентацию в браузер, а затем — в «блокнот». Интерактивные среды, такие как Jupyter Notebook, Observable, Mathematica, WLJS Notebook, позволяют создавать живые презентации, лекции и наглядные материалы для коллег или студентов. Они незаменимы и для визуализации моделей, симуляций и любых данных.

Под катом — примеры, пошаговый разбор и демо вживую.

Читать далее

Почему мир не сошелся на ШАДе, если ты хочешь быть классным специалистом?

Level of difficultyEasy
Reading time8 min
Views9.1K

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

Для начала, скорее всего, если ты задумал поступать в ШАД, значит ты умеешь самостоятельно изучать дисциплины, и скорее всего понимаешь, что образование, само по себе, можешь дать себе только ты сам, а все университеты и преподаватели могут только направить, и дать материалы (в большинстве своем, материалы сейчас не являются чем‑то уникальным, что нельзя найти в интернете, однако и тут, есть свои нюансы, например ШАД, предоставляет свои уникальные курсы, а преподаватель любого учебного заведения может помочь ответить на тонкие теоретические вопросы). Ты понимаешь что на подготовку по экзамену по математике, тебе просто нужно выделить время, однако немалое, чтобы в пределе повысить свои шансы на поступление до максимальных; так же придется поступить и с алгосами. Примерное время подготовки для тебя на всё — около года, в зависимости от темпа. Ты скорее всего уже владеешь университетской математикой, базовыми нотациями, и как‑никак, да ориентируешься в материале. Так же с алгосами.

Читать далее

Балансировка в Angie: Алгоритмы

Level of difficultyMedium
Reading time15 min
Views1.4K

Сергей Каличев, старший разработчик, Angie Software

Это вторая статья из цикла "Балансировка в Angie". Первая была посвящена обзору и общим принципам работы балансировки в продуктах Angie и почти не касалась конкретных алгоритмов. В этой статье разберём алгоритмы балансировки более предметно, с привязкой к характеристикам, обозначенным в первой статье. Если характеристика была подробно рассмотрена в первой статье, то повторяться не буду. В тексте алгоритмы балансировки называются просто "балансировщиками", поскольку каждый алгоритм представлен отдельным модулем.

Читать далее

Почему COUNT(*) быстрее, чем COUNT(col) — и когда это не так

Level of difficultyEasy
Reading time4 min
Views23K

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

Сегодня поговорим про одну из тех тем, что вроде бы тривиальна, но до последней капли грязи тащит за собой внушительный пласт вопросов. Речь пойдёт про COUNT(*) и COUNT(col) в PostgreSQL.

Читать далее

Линус Торвальдс: Критика C++ — Комплексный анализ

Level of difficultyEasy
Reading time12 min
Views27K

Линус Торвальдс, создатель (и великодушный диктатор) Linux, всегда с особой критикой относился к C++, объясняя почему он отвергает его в разработке ядра Linux. Но он не просто резко высказывается против использования C++, а приводит ряд аргументов, которые мы с вами сегодня и рассмотрим.

Читать далее

Information

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