Pull to refresh
8
0
Send message

Поговорим об оптимизирующих компиляторах. Сказ седьмой: борьба с проверками диапазонов

Level of difficultyMedium
Reading time10 min
Views6.5K

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

Читать далее
Total votes 33: ↑33 and ↓0+33
Comments14

Не набирайте тексты в интернете, или Обфускация времени между нажатиями клавиш в SSH

Level of difficultyEasy
Reading time5 min
Views47K


В августе этого года в ssh(1) (клиент OpenSSH) внесено изменение с поддержкой обфускации тайминга нажатий клавиш, то есть интервалов между временем нажатия клавиш на клавиатуре.

Спрашивается, почему разработчики озаботились такими нюансами информационной безопасности? Но причина есть. И на самом деле такие меры должны предпринять все программы, которые допускают ввод паролей в интернете (или вообще любого конфиденциального текста). В первую очередь, браузеры и мессенджеры.
Читать дальше →
Total votes 95: ↑95 and ↓0+95
Comments125

Мнение три года спустя: стоил ли того переход с JavaScript на Rust?

Level of difficultyMedium
Reading time7 min
Views39K

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

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

Спустя три года, выполнив несколько развёртываний в продакшен, написав электронную книгу и выпустив примерно сто пакетов на crates.io, я решил, что настало время поделиться своими мыслями о Rust.

Читать далее
Total votes 40: ↑39 and ↓1+53
Comments64

Введение в Чистую архитектуру через 6 кругов рефакторинга

Level of difficultyMedium
Reading time15 min
Views45K

Разделяй и влавствуй, или как провести клининг легаси-кода GoLang.

Этот пост является частью большого цикла статей, в которых мы демонстрируем, как создавать приложения на Go, которые легко разрабатывать, поддерживать и с которыми приятно работать в долгосрочной перспективе. Мы делаем это, делясь проверенными методами, основанными на множестве экспериментов с командами, которыми мы руководили, и научных исследованиях («при съёмках фильма ни одно животное не пострадало»).

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

Что касается подхода к «чистой» архитектуре, описываемого далее, то это симбиоз двух идей: разделение Ports и Adapters, а также контроль за тем, как пакеты ссылаются друг на друга...

Оставь надежду, всяк сюда входящий
Total votes 16: ↑12 and ↓4+11
Comments4

Войны битов

Level of difficultyEasy
Reading time37 min
Views14K

В своей прошлой публикации я вскользь упомянул так называемые «консольные войны» — битву маркетинговых кампаний конкурирующих видеоигровых платформ прошлого. Это не такое уж малоизвестное явление, о нём написаны книги, сняты фильмы, ему посвящены Youtube-каналы.

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

Будем заниматься странными вещами: подсчётом бит в игровых приставках и попытками найти в этом занятии какой-то глубокий смысл. Открывайте форточки, будет душно!
Читать дальше →
Total votes 61: ↑60 and ↓1+88
Comments13

Что общего у приватности и феодализма

Level of difficultyEasy
Reading time4 min
Views3.2K

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

Децентрализованные проекты обычно не говорят «приватность», а говорят, что данные «принадлежат пользователю» (data ownership). А в чем разница? Мы придумали забавную аналогию, и хотим поделиться.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments61

Самые дорогие материалы в науке совсем не те, о которых вы могли подумать

Reading time4 min
Views28K

После семилетнего путешествия и преодоления почти 6 млрд км космический аппарат НАСА OSIRIS-REx утром 24 сентября 2023 г. мягко приземлился в пустыне штата Юта с ценным грузом. Аппарат доставил на Землю образец с астероида Бенну.

Примерно 250 гр материала, собранного с астероида массой 85 млн тонн, поможет учёным узнать о формировании Солнечной системы, в том числе о том, есть ли в таких астероидах, как Бенну, химические компоненты для жизни.

Бюджет миссии НАСА составлял $800 млн, а в итоге стоимость 255 г образцов составит около $1,16 млрд. Но самый ли это дорогой из известных материалов? Даже близко нет.

Читать далее
Total votes 51: ↑47 and ↓4+62
Comments52

На какие вопросы викторин интереснее всего отвечать

Reading time12 min
Views19K


Нам нравится быть умными.

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

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

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

Обычно это вопрос того же уровня, что обработка чёрного юмора. Тут недавно вышло исследование, которое показывает, что чёрный юмор требует очень хорошего кругозора, памяти, умения предсказывать ситуацию плюс сдвига рамки, то есть умения отойти от сложившихся убеждений. То есть удовольствие достигается не только в точке «о, я знаю», а ещё и в точке «о, кажется, я понял!» — когда удалось быстро синтезировать новое знание из имеющихся данных.

Так что хороший вопрос викторины должен быть смешной, как удар лопатой в темноте.
Читать дальше →
Total votes 41: ↑40 and ↓1+52
Comments70

Как мы обезличиваем ПДн, сохраняя их смысл и качество. Чтобы тестовый стенд был полезным, будто там данные с прода

Level of difficultyMedium
Reading time18 min
Views5.5K

Год назад мы выпустили «Маскировщик» — промышленный софт, который обезличивает персональные данные, сохраняя их качество и смысл. То есть гендерный баланс; социально‑демографическую структуру; родственные связи; страну и оператора в телефоне; валидность паспортов, ИНН, СНИЛС. В общем, «Маскировщик» делает так, чтобы вы тестировали продукты и обучали ML‑модели будто бы на «живых» ПД.

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

Разобраться в алгоритмах маскирования
Total votes 14: ↑14 and ↓0+14
Comments7

Подождите, сейчас я вас переключу на другого сотрудника…

Reading time2 min
Views5.7K

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

Этот другой снова задаёт те же вопросы — и ты уже общаешься с ним раздражённый и разочарованный.

Когда я работал в студии разработки сайтов Webmaster.SPB (в середине двухтысячных), то заметил, что мы точно так же расстраивали своих клиентов. Сначала они тесно общались с проектировщиком, затем с дизайнером, затем с техническим директором. И двигаясь от этапа к этапу, от сотрудника к сотруднику, клиенты обладали полной информацией о происходящем, для них опыт общения был неразрывным. В отличие от сотрудников, которые врывались в проект каждый на своём этапе. Каждый раз в таком случае терялась информация, и клиенту приходилось неоднократно рассказывать одни и те же вещи и отвечать на похожие вопросы.

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

Читать далее
Total votes 12: ↑6 and ↓6+2
Comments9

Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)

Level of difficultyMedium
Reading time13 min
Views51K

Проектирование REST API - это процесс создания дизайна методов обмена данными. Дизайн - это субъективное. У одних "так", у других "сяк". А кто прав? Иногда все, а иногда нет.

Можно ли сделать в проекте все методы POST? Как правильно именовать эндпоинты - ед. число или мн. число (/user или /users)? Можно ли использовать метод POST для получения данных? ...

Холиварные вопросы! Вкусовщина! Давайте разбираться!

Читать далее
Total votes 25: ↑21 and ↓4+20
Comments302

Большая миграция из Кремниевой долины не удалась. Люди едут обратно

Level of difficultyEasy
Reading time7 min
Views41K

Три года назад разработчики начали «побег из Сан-Франциско». Люди бежали от высоких цен на недвижимость, от аренды по $3600 в месяц за односпальную квартиру, от засилья бездомных и наркоманов на улицах. Самым популярным направлением во время ковида стал Остин, столица штата Техас. Где вроде как не должно было быть всех проблем, постигших «либеральную» Калифорнию.

Но оказалось, что проблемы там были, просто не совсем такие, как все ожидали. И теперь пошел уже «побег из Техаса».

Читать далее
Total votes 62: ↑53 and ↓9+67
Comments394

Американская паровая империя

Reading time18 min
Views11K

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

Эту взаимосвязь можно проследить на примере развития железнодорожной системы в США. В то время как британская торговая и имперская мощь основывались на владении океанами, Америка черпала силу в континентальных масштабах своих владений. Пароходы в какой-то мере способствовали тому, что огромные внутренние пространства стали более доступными, а ещё сыграли вспомогательную роль в войнах, в результате которых контроль над континентом был отвоёван у коренных американских народов и Мексики. В 1847 г. паровой флот совершил набег на мексиканские порты и помог захватить прибрежную базу армии в Веракрусе, но затем армии с вьючными мулами пришлось пройти сотни километров по суше, чтобы захватить Мехико. Аналогичным образом пароходы доставляли войска и обеспечивали огневую мощь в ходе многочисленных индейских войн XIX в., когда поблизости имелся судоходный водный путь[1]. Но чаще всего армия полагалась на лошадей.

Читать далее
Total votes 20: ↑17 and ↓3+24
Comments10

Очень странные дела: как мы столкнулись с аномальной зоной на складе

Level of difficultyEasy
Reading time7 min
Views5.9K

Привет, Хабр! На связи Hoff Tech с новой историей из жизни центрального склада Hoff в Домодедове. В прошлый раз мы рассказывали, как «переносили» складской комплекс из 2000-х в современность: обновляли инфраструктуру, распутывали кабели, боролись с подпольной биржей труда.

Но и после запуска обновлённый склад не сразу заработал на все 100500%: сотрудникам нужно было время, чтобы привыкнуть к работе по-новому, притереться к обновлённым информационным процессам. В отличие от маркетологов вендорных решений, которые продали и забыли, а потом «пишите письма мелким почерком», мы 24/7 находимся в работе с инфраструктурой и пользователями. Это тоже сыграло свою роль — самые захватывающие кулстори часто связаны не с железом и программным обеспечением, а с людьми. Под катом — детали запутанной истории, разгадку которой мы отыскали совсем недавно. 

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments6

Космическая фабрика по производству лекарств, которая не может вернуться домой

Reading time6 min
Views12K

В пятистах километрах над Землёй небольшой космический аппарат терпеливо ждёт разрешения вернуться домой. Автономная капсула, созданная компанией Varda Space Industries из Торранса (Калифорния), должна была приземлиться в пустыне штата Юта в начале сентября.

Она должна была стать первой коммерческой космической компанией, вернувшей на Землю лекарство, произведённое в космосе, в данном случае несколько граммов противовирусного препарата ритонавира для лечения ВИЧ и гепатита С. Вместо этого спутник размером с большой мусорный бак, получивший кодовое название Winnebago 1, продолжает двигаться по орбите планеты со скоростью около 30 000 км/ч.

Читать далее
Total votes 17: ↑14 and ↓3+20
Comments75

История одной Real-Time-рекомендательной системы: пример построения решения от нуля до реализации

Reading time9 min
Views2.7K


Real-Time-рекомендательные системы — сложный с точки зрения реализации и поддержания продукт. Его разработка требует тщательной проработки архитектуры и этапов, качественной работы с данными и обеспечения возможности масштабирования решения. Причём большинство подобных задач приходится решать уже в процессе, с учётом реалий и возникающих подводных камней.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments0

Один компонент, 20+ фич, A/B-тесты: Поможет ли машина состояний?

Reading time16 min
Views2.8K

Сталкивались ли вы с проблемой возникновения багов из-за пересечения включенных фичей в приложении? Или, возможно, была необходимость одновременно проводить большое число A/B-экспериментов в одном компоненте? 

Некоторое время назад команда Почты Mail.ru решала задачу управления сложным состоянием приложения с большим количеством фичей и источников данных с помощью конечных автоматов. Нужно было ускорить разработку и тестирование, поддерживая возможность проведения более чем 20 А/В-экспериментов. На тот момент, я работал там над проектами портальной навигации и главной страницы.

Меня зовут Денис Стасьев. В этой статье расскажу о том, как мы внедряли машину состояний в одном из компонентов главной страницы Mail.ru — блоке новостей, что получили на выходе и ещё подробнее о том, почему в итоге остановились на XState.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments0

Запрет писать про VPN: Роскомнадзор досрочно закрыл общественное обсуждение

Reading time3 min
Views35K

Запрет писать про VPN: 1 сентября 2023 года Минцифры опубликовало предложение, дающее Роскомнадзору право блокировать сайты с информацией ‎о способах доступа к заблокированным на территории РФ ресурсам — такие как списки VPN, инструкции по использованию Tor или созданию собственных VPN и прокси-серверов. О последствиях этой меры мы писали в предыдущей статье.

До этой пятницы, 15 сентября, должен идти этап открытого общественного обсуждения проекта постановления, в котором любой желающий может направить своё мнение. Однако, как оказалось, подача предложений была досрочно закрыта.

Читать далее
Total votes 82: ↑75 and ↓7+93
Comments70

Встречайте UUID нового поколения для ключей высоконагруженных систем

Reading time3 min
Views30K

31 марта 2022 года на сайте IETF был официально размещен текст рабочего документа (копия 1, копия 2) New UUID Formats (далее – стандарт), который должен формально обновить, а фактически заменить давно устаревший и изначально ущербный RFC 4122.

В долгих и жарких спорах удалось выработать стандарт высокого качества. Можно надеяться, что этот стандарт заменит многочисленные «самоделки» энтузиастов и отдельных компаний: ULID, KSUID, CUID и т.д., а в СУБД будут встроены генераторы UUID новых форматов, предназначенных для ключей высоконагруженных систем.

Читать далее
Total votes 42: ↑42 and ↓0+42
Comments104

«Чистый» код, ужасная производительность

Level of difficultyEasy
Reading time17 min
Views71K

Один из самых частых советов программистам, особенно начинающим, гласит, что они должны писать «чистый» код. Это понятие сопровождается длинным списком правил, которые указывают, что вы должны делать, чтобы ваш код был «чистым». Вопрос, который я хотел бы задать — если мы напишем код, следуя этим правилам, какова будет его производительность?

Читать далее
Total votes 95: ↑69 and ↓26+63
Comments222

Information

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

Specialization

Fullstack Developer
Junior
React
TypeScript