• Пишем операционную систему на Rust. Страничная организация памяти

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

    Этот блог выложен на GitHub. Если у вас какие-то вопросы или проблемы, открывайте там соответствующий запрос.
    Читать дальше →
  • Переносим 30 000 строк кода с Flow на TypeScript

    • Перевод
    Недавно мы перенесли 30 тысяч строк кода JavaScript нашей системы MemSQL Studio с Flow на TypeScript. В этой статье я расскажу, почему мы портировали кодовую базу, как это происходило и что получилось.

    Дисклеймер: моя цель — вовсе не критика Flow. Я восхищаюсь проектом и думаю, что в сообществе JavaScript достаточно места для обоих вариантов проверки типов. В итоге каждый выберет то, что ему лучше подходит. Искренне надеюсь, что статья поможет в этом выборе.

    Сначала введу вас в курс дела. Мы в MemSQL большие фанаты статической и строгой типизации JavaScript, чтобы избежать типичных проблем с динамической и слабой типизаций.
    Читать дальше →
  • Как без особенных усилий создать ИИ-расиста

    • Перевод
    • Tutorial
    Предостерегающий урок.

    Сделаем классификатор тональности!

    Анализ тональности (сентимент-анализ) — очень распространённая задача в обработке естественного языка (NLP), и это неудивительно. Для бизнеса важно понимать, какие мнения высказывают люди: положительные или отрицательные. Такой анализ используется для мониторинга социальных сетей, обратной связи с клиентами и даже в алгоритмической биржевой торговле (в результате боты покупают акции Berkshire Hathaway после публикации положительных отзывов о роли Энн Хэтэуэй в последнем фильме).

    Метод анализа иногда слишком упрощён, но это один из самых простых способов получить измеримые результаты. Просто подаёте текст — и на выходе положительные и отрицательные оценки. Не нужно разбираться с деревом синтаксического анализа, строить граф или какое-то другое сложное представление.
    Читать дальше →
    • +11
    • 4,1k
    • 2
  • Повторная децентрализация веба. На этот раз навсегда

    • Перевод
    В последние годы веб стал сильно централизованным. Чтобы восстановить свободу и контроль над цифровыми аспектами нашей жизни, нужно понять, как мы дошли до такого состояния и как вернуться на правильный путь. В этой статье рассказана история децентрализации веба и роль Тима Бернерса-Ли в продолжающейся борьбе за свободный и открытый интернет. Проблемы и решения носят не чисто технический характер, а скорее вписываются в более масштабную социально-экономическую головоломку. Мы все вместе должны заняться её решением. Давайте вернём себе Интернет на этот навсегда, и используем весь потенциал веба, как это предусмотрено его создателем.
    Читать дальше →
  • Руководство и шпаргалка по Wireshark

    • Перевод
    • Tutorial
    Даже поверхностное знание программы Wireshark и её фильтров на порядок сэкономит время при устранении проблем сетевого или прикладного уровня. Wireshark полезен для многих задач в работе сетевого инженера, специалиста по безопасности или системного администратора. Вот несколько примеров использования:

    Устранение неполадок сетевого подключения


    • Визуальное отображение потери пакетов
    • Анализ ретрансляции TCP
    • График по пакетам с большой задержкой ответа

    Исследование сессий прикладного уровня (даже при шифровании с помощью SSL/TLS, см. ниже)


    • Полный просмотр HTTP-сессий, включая все заголовки и данные для запросов и ответов
    • Просмотр сеансов Telnet, просмотр паролей, введённых команд и ответов
    • Просмотр трафика SMTP и POP3, чтение писем
    Читать дальше →
    • +26
    • 14,9k
    • 4
  • Анализ атак на ханипот Cowrie

    • Перевод
    Статистика за 24 часа после установки ханипота на узле Digital Ocean в Сингапуре

    Пиу-пиу! Начнём сразу с карты атак


    Наша суперклассная карта показывает уникальные ASN, которые подключались к нашему ханипоту Cowrie за 24 часа. Жёлтый соответствует SSH-соединениям, а красный — Telnet. Такие анимации часто впечатляют совет директоров компании, что позволяет выбить больше финансирования на безопасность и ресурсы. Тем не менее, карта имеет некоторую ценность, чётко демонстрируя географическое и организационное распространение источников атаки на наш хост всего за 24 часа. В анимации не отражается объём трафика с каждого источника.
    Читать дальше →
  • Как мы разработали девкит Librem 5 полностью на свободном ПО

    • Перевод
    От переводчика: Librem 5 (на рендере) — защищённый смартфон под Linux от компании Purism, который создаётся на максимально открытом железе и софте за счёт краудфандинга.

    Сегодня расскажем о разработке Librem 5 Developer Kit и о том, как мы использовали в его разработке только на 100% свободные программы.

    Дизайн девкита опубликован на условиях лицензии GNU GPLv3+, аппаратный репозиторий Git лежит здесь.

    KiCad — очевидный выбор EDA

    Перед началом разработки было не совсем ясно, по какому пути разрабатывать проект. В частности, какой инструмент выбрать для автоматизации проектирования электроники (EDA). Изначально идея состояла в изменении платы i.MX 6QP OpenRex от FEDEVEL для соответствия всем требованиям к девкиту, но мы сразу столкнулись с двумя основными проблемами: там использовался архаичный процессор i.MX 6QP, а ещё хуже, что плата была разработана в проприетарной системе Altium. К счастью, у меня уже был опыт проектирования электроники с помощью EDA KiCad, поэтому мы сумели создать дизайн девкита, используя на 100% свободное ПО.
    Читать дальше →
  • Нейросети и философия языка

    • Перевод
    Почему теории Витгенштейна остаются основой всего современного NLP

    Векторное представление слов — пожалуй, одна из самых красивых и романтичных идей в истории искусственного интеллекта. Философия языка — это раздел философии, исследующий связь между языком и реальностью и как сделать сделать речь осмысленной и понятной. А векторное представление слов — очень специфический метод в современной обработке естественного языка (Natural Language Processing, NLP). В некотором смысле он представляет собой эмпирическое доказательство теорий Людвига Витгенштейна, одного из самых актуальных философов прошлого века. Для Витгенштейна использование слов — это ход в социальной языковой игре, в которую играют члены сообщества, понимающие друг друга. Значение слова зависит только от его полезности в контексте, оно не соотносится один к одному с объектом из реального мира.

    Для большого класса случаев, в которых мы используем слово «значение», его можно определить как значение слова есть его использование в языке.
    Читать дальше →
    • +14
    • 3,7k
    • 7
  • Разработка Adblock Radio

    • Перевод


    tl;dr: Adblock Radio распознаёт аудиорекламу с помощью машинного обучения и Shazam-подобных техник. Основной движок с открытым исходным кодом: используйте его в своих продуктах! Можно объединить усилия для поддержки большего количества радиостанций и подкастов.

    Мало кому нравится слушать рекламу на радио. Я запустил проект AdblockRadio.com, чтобы слушатели могли пропускать рекламу на своём любимом интернет-радио. Алгоритм опубликован с открытым исходным кодом, а в этой статье описывается, как он работает.

    Adblock Radio уже протестировали на реальных данных более 60 радиостанций в семи странах. Он также совместим с подкастами и работает довольно хорошо!
    Читать дальше →
  • Не доверяйте информации о памяти в Диспетчере задач

    • Перевод
    За много лет использования Windows я привык к Диспетчеру задач. Оттуда я убил сотни приложений за плохое поведение. Там же смотрел, кто из них пожирает ресурсы. Пока я не начал работать с машинами, у которых сотни гигабайт памяти, а у приложений соответствующие запросы. В этой статье обсудим, почему Диспетчер задач плохо отслеживает память и что использовать взамен. Во-первых, о механизме выделения памяти в Windows.

    tl;dr: Диспетчер задач скрывает информацию о подкачке (paged memory) и виртуальном пространстве процесса. Лучше используйте Process Explorer из комплекта Sysinternals.
    Читать дальше →
  • О счастье разработчиков и где его найти

    • Перевод
    «Успех — это получать то, чего вы хотите. Счастье — это хотеть то, что вы получаете». Уильям Патрик Кинселла

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

    • Почему компанию волнует счастье разработчика?
    • Что на самом деле сделает его счастливым?

    Дисклеймер. Имейте в виду, что это не истина в последней инстанции. Я просто поделюсь некоторыми идеями от людей из индустрии, вперемешку с собственными. Вероятно, всё это больше относится к западному обществу. В других странах и культурах может быть совершенно противоположное восприятие счастья.
    Читать дальше →
  • Практические советы, примеры и туннели SSH

    • Перевод
    • Tutorial

    Практические примеры SSH, которые выведут на новый уровень ваши навыки удалённого системного администратора. Команды и советы помогут не только использовать SSH, но и более грамотно перемещаться по сети.

    Знание нескольких трюков ssh полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.
    Читать дальше →
  • Фаззинг в стиле 1989 года

    • Перевод
    С наступлением 2019 года хорошо вспомнить прошлое и подумать о будущем. Оглянемся на 30 лет назад и поразмышляем над первыми научными статьями по фаззингу: «Эмпирическое исследование надёжности утилит UNIX» и последующей работой 1995 года «Пересмотр фаззинга» того же автора Бартона Миллера.

    В этой статье попытаемся найти баги в современных версиях Ubuntu Linux, используя те же самые инструменты, что и в оригинальных работах по фаззингу. Вы должны прочитать оригинальные документы не только для контекста, но и для понимания. Они оказались весьма пророческими в отношении уязвимостей и эксплоитов на десятилетия вперёд. Внимательные читатели могут заметить дату публикации оригинальной статьи: 1990 год. Ещё более внимательные заметят копирайт в комментариях исходников: 1989.
    Читать дальше →
  • Будущее Kubernetes — за виртуальными машинами

    • Перевод
    Гадания на кофейной гуще

    В моей работе Kubernetes уже сыграл важную роль, а в будущем она станет ещё важнее. Но 2018 год подходит к концу, так что забудем о скромности и сделаем смелый прогноз:
    Будущее Kubernetes — это виртуальные машины, а не контейнеры
    По китайскому гороскопу 2018 год был годом собаки, но в технике это был год Kubernetes. Многие только сейчас узнают об этой революционной технологии, а IT-отделы повсеместно пытаются разработать «стратегию Kubernetes» [1]. Некоторые организации уже перевели на Kubernetes большие рабочие нагрузки.

    [1] Если вы пытаетесь разработать стратегию Kubernetes, вы уже потерпели неудачу, но это тема для другой статьи.
    Читать дальше →
  • Пессимизм насчёт многопоточности

    • Перевод
    Массивный и аппаратный параллелизм — горячие темы 21 века. Для этого есть несколько приятных причин и одна довольно печальная.

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

    Конкурируя за внимание публики, производители процессоров пытаются впихнуть в каждый чип всё больше процессорных ядер, рекламируя теоретическую общую производительность. Также быстро растут усилия на конвейеризацию и спекулятивные методы выполнения, которые применяют многопоточность под капотом, чтобы видимый программисту одиночный процессор быстрее обрабатывал инструкции.
    Читать дальше →
  • Rust в 2019 году и далее: ограничения на рост

    • Перевод
    Как и просили, вот мои предложения по развитию Rust в 2019 году и далее.

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

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

    TL;DR: Важно осознать проблему и запланировать явные механизмы по ограничению роста двух вещей:

    1. Обязательные общие технические артефакты, особенно само определение языка.
    2. Нагрузка на людей, участвующих в обсуждении этих артефактов.
    Читать дальше →
  • Как я нашёл баг в GNU Tar

    • Перевод
    Автор статьи — Крис Зибенманн, системный администратор Unix в университете Торонто

    Время от времени в моей работе происходит нечто странное, что заставляет задуматься. Даже если сразу непонятно, какие следуют выводы. Недавно я упомянул, что мы нашли ошибку в GNU Tar, и история о том, как это произошло, — один из таких случаев.

    Для бэкапа файл-серверов мы используем Amanda и GNU Tar. В течение долгого времени у нас периодически возникала довольно редкая проблема, когда tar сходил с ума при резервном копировании файловой системы с каталогом /var/mail, производя огромное количество выходных данных. Обычно этот процесс уходил в бесконечность и приходилось убивать дамп; в других случаях он всё-таки завершался, выдав терабайт(ы) данных, которые вроде бы отлично сжимались. Когда мне в очередной раз попался такой гигантский файл tar, я подверг его проверке — и выяснил, что он частично состоит из нулевых байтов, которые очень не нравятся команде тестирования tar -t, после чего всё возвращается в норму.

    (Из-за этого мне стало интересно, появляются ли нулевые байты естественным образом у людей в почтовых ящиках. Оказалось, что поиск нулевых байтов в текстовых файлах не такой простой и да, они там есть).
    Читать дальше →
  • Как Google пытался покорить Китай — и проиграл

    • Перевод
    Было время, когда Google хотел попасть на китайский рынок, а Китай нуждался в Google. Теперь это время ушло.

    Первый набег Google на китайские рынки стал недолгим экспериментом. Поисковую систему Google China запустили в 2006 году, а спустя четыре года её внезапно закрыли для материкового Китая после крупного взлома и споров по цензуре поисковой выдачи. Но в августе 2018 года сайт журналистских расследований The Intercept сообщил, что компания тайно работает над прототипом новой подцензурной поисковой системы для Китая под названием Project Dragonfly.

    На фоне протеста правозащитников и некоторых сотрудников Google вице-президент США Майк Пенс призвал компанию прекратить работу над Dragonfly. Он заявил, что система «усилит цензуру Коммунистической партии и поставит под угрозу конфиденциальность пользователей». В середине декабря издание The Intercept сообщило, что Google приостановила разработку Dragonfly после претензий собственного отдела конфиденциальности, который узнал о проекте из СМИ.

    Некоторые наблюдатели говорят, что решение вернуться на крупнейший рынок мира зависит от Google: пойдет ли она на компромисс со своими принципами и подвергнет цензуре поиск, как хочет Китай? Но наблюдатели упускают из внимания главное: на этот раз решение будет принимать китайское правительство.
    Читать дальше →
  • Анимация подчёркивания ссылок на чистом CSS

    • Перевод
    • Tutorial
    Одно из преимуществ создания моего личного сайта с нуля вместо использования готовой темы заключается в том, что я начинаю с настроек браузера по умолчанию и постепенно добавляю собственные расцветки. Я стараюсь удержать сайт от раздувания, но и персонализация — важное дело. Нужно найти некий компромисс между спартанскими страницами Hacker News и Craigslist с одной стороны и перегруженностью старого MySpace с другой.

    Как-то мне попался сайт с причудливыми анимированными подчёркиваниями для ссылок, и я захотел реализовать эффект. Но мне важно использовать чистый CSS, потому что ради таких легкомысленных вещей негоже добавлять JavaScript, который может вызвать проблемы с производительностью или удобством интерфейса (см. угон полосы прокрутки).
    Читать дальше →
  • Двухфазный коммит и будущее распределённых систем

    • Перевод
    В этой статье мы смоделируем и исследуем протокол двухфазного коммита с помощью TLA+.

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

    Проблема двухфазного коммита


    Транзакция проходит через диспетчеры ресурсов (RM). Все RM должны договориться, будет транзакция завершена или прервана.

    Менеджер транзакций (TM) принимает окончательное решение: коммит или отмена. Условием для коммита является готовность к коммиту всех RM. В противном случае транзакцию следует отменить.
    Читать дальше →
    • +14
    • 4,3k
    • 1