Сегодня разбираем, что не так с кривой обучения GNU Emacs, и почему многие бросают его, так и не разобравшись.
Пользователь
Я тебя найду и позвоню
Абсолютно легальные инструменты за смешные деньги могут позволить вам: звонить всем активным клиентам ваших конкурентов, построить десяток эффективных мошеннических схем, или даже позвонить предполагаемому любовнику вашей девушки/жены, а заодно проверить где она была вчера вечером! Обнаружил я это в ходе одного из расследований утечек заявок клиентов. И я твердо уверен, что такого быть не должно. Инструмент использующийся в статье эффективнее всех утечек вместе взятых, нашими данными не должны так легко легально торговать практически в режиме онлайн. Можно найти любого и позвонить любому из нас. Почему и как это работает, какие риски это несет и как этому противодействовать?
Я угадаю, что рабочий цеха хочет ввести, с трёх букв
У нас есть система регистрации простоев оборудования. В ней рабочему нужно ввести комментарий о причине простоя вручную. А нам потом надо собирать статистику по этим данным для анализа, как работал цех и что приводило к простоям.
Рабочие вводят причины простоя разными словами, от души. «Шланг порвался», «они не успевают дать продукцию», «безобразно обрезана кромка» — это ещё цветочки. Одно только слово «железнодорожный» можно написать десятками способов — жд, Жд, ЖД, ж/д, ж\д, ж /д, ж д, Ж д, ЖД!!! — и так далее. С вывернутыми слешами, двойными пробелами и другими творческими формулировками.
В базе 13 миллионов записей, из них 700 тысяч уникальных, из которых остаётся примерно 500 тысяч после нормализации по регистру, слешам, пробелам и т. п. А нам нужно как-то разобраться, что не так и с кем.
Если вы сейчас думаете про ML, LLM и прочие модные слова, я вас огорчу. Оказалось, что есть простой кондовый способ, если применить немного ТРИЗа. В итоге получилось, что мы умудрились и рабочим сделать намного удобнее (что вообще-то редкость в реалиях производства), и дико помочь аналитикам.
Реверс-инжиниринг новой функции iOS Inactivity Reboot
В iOS 18 появилась новая функция безопасности: перезагрузка бездействия (inactivity reboot). От чего она защищает и как работает? В этом посте мы рассмотрим все подробности вплоть до расширения ядра и Secure Enclave Processor.
Безопасность до и после первой разблокировки
А вы знали, что первый ввод пароля после включения телефона сильно отличается от его дальнейшего ввода для разблокировки телефона?
При первом вводе пароля разблокируется хранилище ключей в Secure Enclave Processor (SEP), шифрующем пользовательские данные на iPhone.
Состояние до первого ввода пароля называется Before First Unlock (BFU). Из-за шифрования пользовательских данных iPhone ведёт себя немного иначе при последующих разблокировках. Вы увидите, что Face ID и Touch ID не работают, и требуется ввод пароля. Но можно заметить и более тонкие отличия: поскольку пароли Wi-Fi зашифрованы, iPhone не будет подключаться к сетям Wi-Fi. Если SIM не защищена PIN-кодом, то iPhone сможет подключаться к сотовым сетям. Это означает, что вы сможете получать телефонные вызовы. Однако при получении вызова, даже если номер есть в контактах, имя контакта не будет отображаться, потому что контакты ещё не дешифрованы. Аналогично, при получении уведомлений о новых сообщениях вы увидите, что получили сообщения, но их предпросмотр будет недоступен. Можете попробовать сами!
MLS (Messaging Layer Security) — единый протокол шифрования для всех приложений
MLS обеспечивает сквозное шифрование между разными приложениями и устройствами таким образом, что облачные службы и инфраструктура, через которую проходит трафик, не имеют возможности расшифровать эти сообщения.
До появления MLS не существовало открытой, совместимой спецификации для этого дополнительного уровня криптографии. Новый протокол заполняет этот пробел. Он предоставляет систему, которая полностью специфицирована, формально проверена и проста в использовании для разработчиков.
Фургоны-детекторы ТВ всё ещё колесят по улицам Великобритании
Возможно, вы не знали, но Соединённое Королевство требует от каждой семьи, которая пользуется телевизором, приобретать лицензию на эту привилегию. Появившаяся в 1923 году после принятия Закона о беспроводной телеграфии лицензия требовалась всем, кто пользовался радиоприёмниками. В 1946 году под лицензирование попало и телевидение. Средства, собираемые с граждан, используются в качестве основного источника финансирования Британской общенациональной общественной телерадиовещательной организации. Если коротко, то BBC.
Максимально вырожденная игра на общение
Сразу скажу, эта штука просто офигенна для небольшой вечеринки, и сделать её можно прямо прочитав пост. Я крайне удивлён, что такая штука до сих пор не продавалась в России. И, кажется, знаю, почему.
Потому что она настолько тривиальна, что это сложно представить.
Но давайте начнём с начала. Итак, настольные игры нужны для общения. Как повод встретиться с друзьями (а для этого многим реально нужен повод — ведь соцсети уверенно разделяют людей). Люди обмениваются тёплыми словами, — ну, стоит, в общем, положительный транзакционный обмен с нулевой суммой.
Задача — найти максимально вырожденную игру, которая работает только на общение. Сначала я думал, что встретил её в Южной Африке на обучении — мы играли в классическую «две правды и ложь».
Но, оказывается, можно ещё проще. И с совершенно убойным результатом.
Mount — ещё один способ уменьшения размера Docker-образа
Делюсь лайфхаком по уменьшению размеров Docker-образов. Как-то нам попалась на поддержку и развитие CRM-система, написанная на Ruby...
Обновили Ruby-пакеты и под них код, написали Dockerfile. Первая сборка была удручающей: образ в 2Гб. Это нормальный размер, если ты собираешь образ с Torch и другой ML-штуковиной, но CRM - нет. В результате дальнейших действий, удалось сократить размер образа до 200Мб.
Как удаление isNumber из зависимостей сэкономил 440 Гб еженедельного трафика
Недавно наткнулся на занимательный merge request по замене зависимости isNumber. Удивительно было в целом осознавать, что как такого универсального метода по определению числа в переменной нет в базовой концепции JavaScript. И данная проблема породила npm-репозиторий isNumber c почти 72 миллионами еженедельных скачиваний на сентябрь 2024 года. Но стоит ли в очередной раз использовать мизерную зависимость в своём проекте? Предлагаю взглянуть на решение, представленное в ранее сказанном mr-е.
Любительская стереосъёмка
В книге Якова Перельмана «Занимательная физика» было описание наблюдения ландшафта через стереотрубу:
«Трудно описать ощущения, которые испытываешь, когда смотришь в подобные инструменты, — до того они необычайны! Вся природа преображается. Далёкие горы становятся рельефными, деревья, скалы, здания, корабли на море — всё круглится, всё выпукло, расставлено на бесконечном просторе, а не лежит на плоском экране. Вы непосредственно видите, как движется далёкое судно, которое в обыкновенные трубы кажется неподвижным. В таком виде должны были бы представляться наши земные ландшафты сказочным великанам».
В этой книге был раздел, посвящённый стереоэффекту, и приводились несколько картинок, которые при особом способе рассмотрения в плоскости бумажного листа превращались в трёхмерные изображения. Это казалось фантастикой.
Секретики в «повреждённых» скинах Winamp
Несколько лет назад я собирал материалы для Музея скинов Winamp, и часть файлов показалась мне повреждённой. Я решил исследовать их, и оказалось, что на самом деле эти скины являются просто zip-файлами с другим расширением. Что же будет, если извлечь эти файлы? О, чего там только нет!
11 полезных фичей Chrome DevTools
Всем привет!
Все мы постоянно используем Chrome DevTools, но там так много фичей, что некоторые из них мы никогда не использовали и даже не замечали. В этой небольшой статье, я хочу поделиться интересными находками, которыми пользуюсь сам.
Возможно вы уже видели эти фичи и используете их на постоянной основе, а возможно это именно те фичи, которых вам так давно не хватало в вашей работе.
Погнали!
Разбираем самый маленький JPEG в мире
Недавно на Хабре была опубликована статья Разбираем самый маленький PNG в мире. Интересно, а какой самый маленький файл JPEG? В ответах на StackOverflow и Reddit можно встретить размеры 107, 119, 125, 134, 141, 160 байтов. Все они представляют серый прямоугольник 1 на 1. И кто прав? Все правы, просто такая разница объясняется различными режимами кодирования и степенью строгости соответствия стандарту. Описание всех нюансов разрослось до целой статьи cо всеми необходимыми подробностями для более-менее хорошего знакомства с самыми маленькими jpeg-ами. После краткой теории разберем 159-байтный файл на КДПВ, а затем рассмотрим способы его уменьшения.
Про́клятый огонь, или магия препроцессора C
Задавались ли вы когда-нибудь вопросом, можно ли полноценно программировать при помощи директивы #define
в языке C? Полнота по Тьюрингу шаблонов C++ известна весьма широко, например, люди пишут трассировщики лучей, делающие все вычисления во время компиляции (вместо времени исполнения). А как обстоят дела с препроцессором C? Вопрос оказался сильно нетривиальнее, и эта история является, на мой вкус, отличным анекдотом для курса лекций по теории компиляторов, что я готовлю в данный момент. В частности, для лучшего понимания происходящего здесь, рекомендую ознакомиться со второй статьёй, которую я опубликовал параллельно этой: лексер и парсер.
Чтобы не было обманутых впечатлений, предупрежу сразу, что рейтрейсера не будет, но про́клятый код будет очень даже! Итак, поехали. Для начала, почему я вообще задался этим вопросом? Если обычный код компьютерной графики вам скучен, следующий раздел можно пропустить, перематывайте до последней картинки.
Галопом по Европам: Легитимные процессы Windows на пальцах
В этой статье моей целью будет быстро и понятно внести памятку о легитимных процессах Windows. Немного расскажу, какой процесс за что отвечает, какие нормальные свойства имеют процессы, и приправлю это все небольшим количеством краткой, но полезной информации.
Фотохостинги с 2017 по 2023 (утрачено 57% фотографий)
С публикации прошлого текста ( «Тестирование фотохостингов на цифровой износ (21 шт)») прошло 6 лет, что позволяет провести новое исследование, но не по теме цифрового износа и конкретно по вопросу выживания цифровых архивов.
Если вы захотите сказать, что тема очевидная и общеизвестная, то вы ошибаетесь - не существует ничего очевидного, и каждый день в мире появляются люди, которые ещё не знают того, что знаем мы с вами. Поэтому, время от времени надо рассказывать то, о чём кто-то ещё не знает, снабжая это актуальными примерами.
Ну и, опять же, у меня есть эксперимент длиной в десятки лет и не плохо было бы зафиксировать его промежуточные результаты.
Ускоряем программу для 50-летнего процессора на 180000%
В прошлом году я написал программу, вычисляющую 255 цифр числа π на самом первом микропроцессоре от Intel - 4004. В той статье я упоминал рекорд ENIAC'a - 2035 цифр [^1], но побить его не смог. Настало время закрыть гештальт. В этот раз возьмём одного из преемников от Intel - 4040.
Книга «Грокаем функциональное программирование»
Вам кажется, что функциональное программирование — это нечто сложное, доступное только гуру программирования? Эта книга развенчает миф об элитарности и позволит любому программисту с легкостью разобраться в хитросплетениях кода.
От знакомых и простых идей ООП вы перейдете к ФП, рассматривая его на простых примерах, захватывающих упражнениях и большом количестве иллюстраций.
Вы начнете с решения простых и маленьких задач, иллюстрирующих базовые понятия, такие как чистые функции и неизменяемые данные, научитесь писать код, лишенный типичных ошибок, обусловленных наличием сложного распределенного состояния, разберетесь с подходами к реализации ввода-вывода, параллельного выполнения и потоковой передачи данных. К концу книги вы будете создавать ясный функциональный код, который легко читается, тестируется и сопровождается.
Пакет context в Go: взгляд профессионала
А вы часто читаете реализацию стандартной библиотеки своего любимого языка?..
Меня зовут Константин Соколов, и мы с Сергеем Мачульскисом, моим коллегой из бэкенд-разработки в Positive Technologies, хотим с вами поделиться вдохновением. Давайте вместе посмотрим на пакет context с последними обновлениями. На наш взгляд, он идеально выражает философию языка Go! Образцовый интерфейс, постоянное развитие пакета и использование самых распространенных приемов Go — все это говорит о том, что наш материал будет полезен не только новичкам, но и знатокам.
Объединение открытых данных Open Street Map и Landsat для уточнения площадей зеленых зон
Привет, Хабр! Под катом мы хотели бы поговорить о том какие преимущества привносит в нашу жизнь объединение пространственных данных из различных открытых источников. Рассматривать, для примера, будем следующую задачу: оценить насколько в “зеленом” районе расположен тот или иной объект недвижимости. Без долгих предисловий - переходим к делу!
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Зарегистрирован
- Активность