Рубрика «ruvds_переводы»

Если вы программист или хотя бы немного связаны с программированием1, то без сомнения сталкивались с таблицей ASCII.

Таблица ASCII полезна. Но знали ли вы, что она ещё красива и изящна?

Красота и изящество таблицы ASCII - 1

Сегодня даже не близкие к программированию люди могут знать об ASCII благодаря книгам и фильмам наподобие «Марсианина»2

ASCII по-прежнему с нами; даже если вы передаёте современный Unicode3, то должны знать, что самый популярный формат кодировки UTF-8 специально спроектирован как обратно совместимый с ASCII! Декодировав эту статью как ASCII, вы в целом поймёте её смысл… если закроете глаза на мусорные символы в конце предложений (прим. ред.: имеет смысл только для оригинальной статьи на английском).Читать полностью »

Побеждаем компилятор в скорости при помощи ассемблера - 1


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

Тем не менее, иногда до нас доносятся слухи.

Написанные в древних томах, подслушанные в тайных покоях, начертанные на стенах разрушенных храмов, упоминаемые в загадочных текстах, они рисуют чёткую картину:

Компиляторы плохо справляются с генерацией кода для интерпретаторов, и можно превзойти их, написав интерпретатор на языке ассемблера.

Читать полностью »

Реверс-инжиниринг умных часов - 1


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

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

Как правильно тестировать конкурентные структуры данных - 1


Есть потрясающая библиотека Rust под названием loom, которую можно использовать для тщательного тестирования неблокируемых (lock-free) структур данных. Я давно хотел разобраться, как она работает. И сейчас хочу! Но недавно я случайно реализовал небольшой эксперимент, который, как мне кажется, содержит часть идей loom, поэтому о нём стоит написать. Моя цель — не научить вас тому, что нужно использовать на практике (если вы хотите этого, то почитайте документацию loom), а, скорее, вывести пару идей из фундаментальных принципов.Читать полностью »

Как я запустил Linux с Google Drive - 1


Я грешен: во мне есть дух соперничества. Когда я услышал, что мой друг заставил Linux загружаться с NFS, мне обязательно нужно было его превзойти. Я обязан был доказать, что могу сделать что-то сложнее, лучше, быстрее, сильнее [прим. пер.: в оригинале отсылка к композиции Daft Punk «Harder, Better, Faster, Stronger»].

Как и все хорошие проекты, этот начался с идеи.

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

На грани безумия мой утомлённый мозг придумал мой magnum opus: запуск Linux с рута Google Drive.

▍ Но как?

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

Мне достаточно было установить программы FUSE в initramfs ядра Linux и сконфигурировать сеть. В этом ведь не должно быть ничего сложного, так?Читать полностью »

Всё ещё нерешённая загадка замерзания воды - 1


В школе нас учат, что вода замерзает при нуле градусов Цельсия, но так бывает редко. Учёные обнаружили в облаках переохлаждённые капли воды до температуры -40 °C, а в 2014 году в лабораторных условиях они охладили воду до целых -46 °C без замерзания. Вы можете переохладить воду и дома: засуньте бутылку дистиллированной воды в морозилку, и она вряд ли кристаллизуется, пока вы её не встряхнёте.

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

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

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

Как я нашёл 55-летний баг в первой игре о приземлении на Луну - 1


Спустя всего несколько месяцев после исторической прогулки по Луне Нила Армстронга, ученик массачусетской школы Lexington High School Джим Сторер написал первую версию игры Lunar Landing. К 1973 году она стала самой популярной компьютерной игрой с большим отрывом от остальных. В этой простой текстовой игре вы управляете аппаратом для посадки на Луну, стремясь максимально плавно приземлиться. Всё движение происходит вертикально, каждые десять симулируемых секунд игрок решает, сколько топлива нужно сжечь.

Недавно я исследовал график оптимального сжигания топлива для наиболее мягкого приземления с максимумом оставшегося топлива. К моему удивлению, теоретически наилучшая стратегия не сработала. Игра ошибочно думает, что аппарат не коснулся поверхности, хотя на самом деле это так. Углубившись в анализ, я был потрясён сложной физикой и вычислениями в игре. В конечном итоге я обнаружил баг: отсутствующее деление пополам; похоже, почти за 55 лет никто не заметил этого.Читать полностью »

Как я пытался создать электрохимические датчики на тканой основе - 1


В 2016 году я решил проверить, смогу ли создать электрохимические датчики, которые бы были гибкими и изготавливались как ткань (или печатались на ней). Это исследование продолжалось вплоть до эпидемии COVID, но за все эти годы я так и не задокументировал свои достижения.

На момент начала проекта у меня был опыт работы в аналитической электрохимии: в колледже я проводил исследования с кафедрой биоинжиниринга Флоридского университета (выражаю благодарность моему наставнику, доктору Эрику Маклеймору). Моя основная цель заключалась в проектировании носимого датчика, который бы неинвазивным образом мог распознавать различные мелкие молекулы в жидкостях наподобие пота.

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

Перечислю различные исследованные мной подходы:

  • вытравливаемый на тканях лазерно-индуцированный графен (laser-inscribed graphene, LIG);
  • вплетаемые в ткань металлические нити;
  • вышивание металлическими нитями;
  • трафаретная печать по ткани чернилами на основе металла и графена.

В статье представлено более подробное описание каждого из этих исследований.
Читать полностью »

Сравнение алгоритмов ограничения частоты запросов - 1

▍ Зачем ограничивать частоту?

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

Видео

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

Конечные точки API тоже часто ограничивают по частоте запросов, чтобы их ресурсы не монополизировал единственный пользователь. Представьте, что вам нужно, чтобы пользователи могли обращаться к затратной конечной точке не чаще ста раз в минуту. Это можно отслеживать при помощи счётчика, обнуляющегося каждую минуту. Все запросы после сотого в пределах этой минуты будут блокироваться. Это один из простейших алгоритмов ограничения частоты, называющийся fixed window limiter (ограничитель с фиксированным окном). Это распространённый способ управления трафиком к сервису.

Но не всегда всё так просто.

Когда начинается и заканчивается каждое одноминутное окно? Если я запущу поток запросов ближе к концу окна, смогу ли превысить лимит? Ёмкость окна восстанавливается по одному запросу за раз, или сразу на всё количество?

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

Почему люди до сих пор не отказались от дискет - 1

Музыкант Эспен Крафт хранит свои звуковые сэмплы на гибких дисках и использует их для создания музыки из-за их аутентичного звука

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

Когда в голову Эспена Крафта приходит идея нового музыкального произведения, он открывает одну из своих многочисленных коробок с дискетами. Открыв коробку, этот ютубер из Норвегии пробегает глазами по рядам разноцветных пластмассовых квадратов.

На одной из этикеток написано «Басовый звук Moog». Именно то, что нужно Крафту. Он достаёт диск и засовывает его в синтезатор. Машина подтверждает наличие диска приятным шумом. По словам Крафта, после этого начинается магия.

Сэмпл почти готов к воспроизведению, но именно предвкушение зарождает ностальгию Крафта по «тёплому и уютному месту». Идея уже висит в воздухе. Он нажимает на клавишу. Уши наполняются звуком.

Если вы помните времена, когда пользование гибкими дисками не казалось чем-то странным, то вам, вероятно, не меньше тридцати лет. Гибкие диски, или дискеты, появились примерно в 1970 году, и около трёх десятков лет были основным способом хранения и резервного копирования компьютерных данных. Всё приобретаемое людьми ПО и программы загружались на пачки таких дисков. Это технология из другой компьютерной эпохи, но по разным причинам дискеты по-прежнему привлекательны для некоторых людей, а значит, ещё не умерли.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js