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

FizzBuzz, который не помог мне найти работу - 1


Fizzbuzz — это простой алгоритм, который когда-то был популярен в контексте технических собеседований.

Я знал, что это такое, но до прошлой недели меня ни разу не просили написать его.

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

Базовую реализацию fizzbuzz можно написать однострочником на Typescript:

const fizzbuzz = (n: number)=>`${n%3 ? '' : 'Fizz'}${n%5 ? '' : 'Buzz'}`;

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

Операционная система в 1 000 строк кода (часть 3) - 1


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

▍ Навигация по вышедшим частям

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

Операционная система в 1 000 строках кода (часть 2) - 1


Продолжаем серию статей, посвящённую написанию собственной минималистичной ОС. В прошлой части мы познакомились со всеми вводными компонентами проекта и поставили общие цели. В этой же мы реализуем загрузку ядра, вывод строки Hello World!, механизм паники ядра, а также некоторые функции управления памятью и работы со строками.

▍ Навигация по вышедшим частям

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

Станет ли ИИ катастрофой для сквозного шифрования? - 1


Недавно я обнаружил потрясающую новую статью How to think about end-to-end encryption and AI, написанную группой исследователей из Нью-Йоркского и Корнеллского университетов. Я очень рад прочтению этой статьи, потому что, хоть не согласен со всеми её выводами, она стала первой попыткой ответа на невероятно важные вопросы.

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

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

Но давайте начнём с чего-то попроще.Читать полностью »

Почему нам всем стоит отказаться от соцсетей в пользу RSS - 1

«Вот бы существовал способ попроще...»

Я трачу слишком много времени на скроллинг лент соцсетей. Это вредит моему здоровью, так почему же я продолжаю это делать?

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

Однако я наткнулся на относительно малоизвестную сегодня старую бесплатную и опенсорсную технологию, которая ДОЛЖНА стать решением проблем современных медиа без потери доступного качественного контента. Это RSS.Читать полностью »

Операционная система в 1 000 строках кода (Часть 1) - 1


Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.

Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.

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

Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!

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

Что случилось с легковесными десктопными приложениями? История Electron - 1


Electron — это один из самых известных инструментов современного разработчика. Если присмотреться, то это родственник Reactive Native, манящий лозунгом «пиши один раз, запускай везде!», но с гораздо меньшими издержками по сборке и релизу, чем в случае мобильной разработки. Его уникальное преимущество заключается в комбинации Node.js и Chromium, создающей мощную десктопную среду для веб-технологий. Официальный блог Electron не так давно отметил своё десятилетие, что весьма удивляет с учётом того, насколько глубоко этот инструмент успел проникнуть в культуру разработки. Читать полностью »

Безумные и забавные факты о SQLite - 1

  1. SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент активно используется более одного триллиона (1000000000000 или миллиона миллионов) баз данных SQLite.

    Её поддерживают три человека. Они не допускают внешних контрибьюторов.

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

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

  4. За разработкой SQLite стоит компания Hwaci. Кажется, она занимается и музыкой (?).
    Безумные и забавные факты о SQLite - 4

  5. Изначально SQLite создавалась для корабля ВМС США. Ричард Хипп (D. Richard Hipp, DRH) разрабатывал ПО для эсминца USS Oscar Austin. Раньше ПО корабля просто переставало работать при выходе из строя сервера (это было в 2000-х). Для боевого корабля это неприемлемо.

    Поэтому DRH задался вопросом: что, если база данных будет работать без какого-либо сервера?Читать полностью »

Я решил, что обнаружил баг… - 1


Я работал над совершенствованием эмулятора DOS и внезапно обнаружил, что достаточно тривиальная операция работает неправильно. Когда просишь COMMAND.COM сделать следующее:

echo AB> foo.txt
echo CD>> foo.txt

то вместо ABCD в файл foo.txt записывается ABBC.

Я проверил и убедился, что fwrite() действительно передаются правильные данные, но хитрость в том, что действия COMMAND.COM не так просты, как можно подумать:

  • Открываем foo.txt
  • Записываем «AB»
  • Закрываем foo.txt
  • Открываем foo.txt
  • Выполняем поиск на один байт назад от конца файла
  • Считываем один байт
  • Записываем «CD»
  • Закрываем foo.txt

Такая сложность нужна, потому что COMMAND.COM хочет учесть случай, когда файл заканчивается символом Ctrl-Z (в нашем случае его нет): в этом случае Ctrl-Z необходимо удалить. Почему-то последовательность «поиск-чтение-запись» работала странно. Но почему?Читать полностью »

Упрощаем «простой» ELF - 1


Давайте-ка напишем простую программу для Linux. Насколько трудной она может быть? Только тут надо учесть, что простота противоположна сложности, но не трудности*, и создать нечто простое на удивление трудно. А что останется, если избавиться от сложности стандартной библиотеки, всех современных средств безопасности, отладочной информации и механизмов обработки ошибок?Читать полностью »


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