Pull to refresh
76
0
Rumkin @rumkin

Developer and tech writer

Send message

Логика, объяснимость и будущее понимания

Reading time37 min
Views16K

Открытие, связанное с логикой


Логика служит основой множества вещей. Но каковы основы самой логики?

В символьной логике вводятся символы вроде p и q, обозначающие утверждения (или «пропозиции») типа «это интересное эссе». Ещё есть определённые правила логики, к примеру, для любого p и любого q выражение NOT (p AND q) аналогично (NOT p) OR (NOT q).

Но откуда берутся эти «правила логики»? Логика – система формальная. Как и евклидову геометрию, её можно построить на аксиомах. Но что такое аксиомы? Можно начать с таких утверждений, как p AND q = q AND p, или NOT NOT p = p. Но сколько аксиом требуется? Насколько они могут быть простыми?

Этот вопрос довольно давно был мучительным. Но в 20:31 в воскресенье, 29 января 2000 года, на экране моего компьютера появилась единственная аксиома. Я уже показал, что проще ничего быть не может, но вскоре установил, что этой единственной небольшой аксиомы было достаточно, чтобы создать всю логику:

Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments61

Схема разделения секрета Шамира

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

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

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

Отчаявшись, вы уничтожаете дубликат и решаете разделить исходный ключ пополам. Теперь, вы думаете, два доверенных человека с фрагментами ключей должны физически присутствовать, чтобы собрать ключ и открыть хранилище. Это означает, что вору необходимо украсть два фрагмента, что вдвое труднее кражи одного ключа. Однако вскоре вы понимаете, что эта схема ненамного лучше, чем просто один ключ, потому что если кто-то потеряет половину ключа, полный ключ нельзя восстановить.
Читать дальше →
Total votes 72: ↑72 and ↓0+72
Comments22

Chain replication: построение эффективного KV-хранилища (часть 1/2)

Reading time8 min
Views6.1K

В данной статье рассмотрим архитектуры простых и эффективных KV-хранилищ с использованием цепной репликации (chain replication), которая активно исследуется и успешно применяется в различных системах.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments0

96-ядерный суперкомпьютер на одноплатниках NanoPi Fire3

Reading time14 min
Views66K
Создание высокопроизводительного кластера с 12 узлами NanoPi-Fire3 менее чем за £100 (£550, включая двенадцать Fire3)

Мой прошлый кластер на Raspberry Pi 3 в прошлом году немало заинтересовал публику, так что я попробовать сделать аналогичные проекты на других отличных одноплатных компьютерах, которые есть на рынке. FriendlyARM из Китая очень щедро отправила мне 12 своих последних 64-битных ARM плат NanoPi-Fire3, на каждой из которых восьмиядерный ARM A53 SoC, работающий на частоте 1,4 ГГц, с гигабитным Ethernet.


Читать дальше →
Total votes 89: ↑88 and ↓1+87
Comments55

Как создать Roguelike

Reading time19 min
Views75K
image

Я всегда хотел написать подробное руководство для начинающих о том, как создать roguelike, содержащее как общие, так и более специфические советы. Проведённый в этом году очередной праздник Roguelike Celebration показался мне отличной возможностью наконец-то заставить себя это сделать, поэтому я подготовил получасовой доклад по этой теме.

У меня есть довольно большой опыт — в течение последних семи лет я работал только в этом жанре (Cogmind, Cogmind 7DRL, POLYBOT-7, REXPaint, X@COM), и в течение последних пяти эта работа была моей основной. К тому же, все эти годы я помогал превращению r/RoguelikeDev в крупнейшее сетевое сообщество разработчиков roguelike.
Total votes 58: ↑58 and ↓0+58
Comments24

6 типовых сюжетов мировой литературы

Reading time5 min
Views72K
Исследователи изучили тексты более 1700 романов и обнаружили, что все их можно отнести к 6 сюжетным типам.


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

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

1. «Из грязи в князи» — постепенное улучшение положения от плохого к хорошему.
2. «Из князи в грязи» — падение от хорошего положения к плохому, трагедия.
3. «Икар» — взлет и падение.
4. «Эдип» — падение, взлет и снова падение.
5. «Золушка» — взлет, падение, взлет.
6. «Человек, загнанный в угол» — падение и взлет.

Исследователи применили анализ эмоциональной окраски — статистическую методику, часто используемую маркетологами для оценки публикаций в социальных СМИ.
Читать дальше →
Total votes 53: ↑40 and ↓13+27
Comments40

Австралийский английский: что это такое и как его понимать

Reading time9 min
Views49K
Недавно мы размещали статью про американский английский, и в комментариях нам предложили сделать аналогичный разбор австралийского. Тема оказалась очень обширная, поэтому статья разделена на две части: история австралийского английского и особенности произношения.


Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments9

Говорим как американцы: особенности американского произношения

Reading time5 min
Views74K
Очень часто изучение английского языка ведется по британским пособиям, и в результате студент умеет говорить и слышать только рафинированный британский «королевский английский», который, по сути, никем не употребляется. Да-да, даже самой королевой. Но львиная доля бизнеса и практически вся сфера развлечений (кино, музыка, игры) сопряжены с Америкой и американским английским. Вот с ним-то у студентов чаще всего возникают трудности: ничего не понятно, слышно только «р» и «что-то в нос», американцы будто бы «проглатывают» окончания или вовсе целые слова.

На самом деле все не так страшно. Особенности произношения есть в каждом варианте английского языка. Сегодня в блоге Puzzle English посмотрим, чем же американцы так отличаются от британцев.

Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments28

Тренды дизайна в 2018: прогноз и реальность

Reading time11 min
Views34K


Примечание переводчика: эту замечательную статью не перевели для Хабра ни в начале года, ни позднее. При том что она действительно полезная и заслуживает внимания. Поэтому, несмотря на то, что почти ⅔ 18-го года уже прожиты, я всё-таки решилась на перевод. Заодно сравнила прогнозы с реальностью, о чём оставила комментарии по тексту.

Внимание: под катом много тяжёлых гифок и красоты!
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments20

Автоматическое разрешение конфликтов с помощью операциональных преобразований

Reading time9 min
Views9.2K
image

Автоматическое разрешение конфликтов в среде с более, чем одним ведущим узлом (в данной статье под ведущим узлом понимается узел, который принимает запросы на изменение данных) – очень интересная область исследований. Существует несколько различных подходов и алгоритмов, в зависимости от области применения, и в данной статье будет рассмотрена технология Операциональных Преобразований (Operational Transformations, OT) для разрешения конфликтов в приложениях совместного редактирования, таких как Google Docs и Etherpad.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments3

Опубликовано руководство по дизайну Веб 2.0

Reading time2 min
Views4.2K


На дизайнерском сайте Web Design From Scratch опубликовано подробное руководство по дизайну Веб 2.0. Это руководство представляет собой список из 15 дизайнерских приемов, которые чаще всего используются на сайтах нового поколения, с конкретными примерами и скриншотами.
Читать дальше →
Total votes 76: ↑70 and ↓6+64
Comments35

Иерархическая генерация ключей

Reading time16 min
Views45K
В этой статье мы поговорим о детерминистических кошельках, иерархической генерации ключей, а также о том, как это математически работает и в каких случаях это удобно применять на практике. Данный материал будет полезен специалистам, чья деятельность связана с платежными шлюзами, Биткоин кошельками и другими хранилищами монет. Кроме того, материал будет интересен тем, кто увлекается эллиптической криптографией и схемами развертывания ключей электронной подписи.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments2

Операционные системы с нуля; уровень 3 (старшая половина)

Reading time28 min
Views16K

В этой части мы допишем обработку прерываний и возьмёмся за планировщик. Наконец-то у нас появятся элементы многозадачной операционной системы! Разумеется это только начало темы. Одно прерывание таймера, один системный вызов, базовая часть простого планировщика потоков. Ничего сложного. Однако этим мы подготовим плацдарм для создания полноценной системы, которая будет заниматься самыми настоящими процессами безо всяких "но". Прямо как в этих ваших линупсах и прочих. До конца этого курса осталось уже чуть менее половины.


Нулевая лаба


Первая лаба: младшая половина и старшая половина


Вторая лаба: младшая половина и старшая половина


Третья лаба: младшая половина

Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments13

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

Reading time21 min
Views24K
image

Недавно я выпустил свою первую игру BYTEPATH и мне показалось, что будет полезно записать свои мысли о том, чему я научился в процессе её создания. Я разделю эти уроки на «мягкие» и «жёсткие»: под мягкими я подразумеваю идеи, связанные с разработкой ПО, жёсткие — это более технические аспекты программирования. Кроме того, я расскажу о том, почему хочу написать собственный движок.

Мягкие уроки


Сообщу ради контекста, что начал делать собственные игры примерно 5-6 лет назад и у меня есть 3 «серьёзных» проекта, над которыми я работал до выпуска первой игры. Два из эти проектов мертвы и полностью провалились, а последний я временно приостановил, чтобы поработать над BYTEPATH.

Вот gif-анимации из этих проектов



Первые два проекта провалились по разным причинам, но с точки зрения программирования они провалились (по крайней мере, как мне это видится) потому, что я слишком часто пытался быть слишком умным и заранее обобщал слишком многое. Большинство мягких уроков связано с этим провалом, поэтому важно было сказать об этом.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments13

Новые стандарты для беспарольной аутентификации: как они работают

Reading time4 min
Views26K
На прошлой неделе были опубликованы два новых стандарта для беспарольной аутентификации на сайтах, в мобильных и веб-приложениях: WebAuthn API и CTAP. Оба были одобрены Microsoft, Mozilla и Google.

Подробнее об них расскажем ниже.

Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments68

Формирование JWS и JWK из rsa-ключей на примере интеграции Let’s Encrypt и ISPmanager

Reading time6 min
Views17K
Всем привет! Меня зовут Дмитрий Смирнов, я разработчик из ISPsystem и это именно я в ответе за появление в панели ISPmanager 5 интеграции с Let’s Encrypt. Расскажу, как проходила разработка плагина, как он менялся и как пришел в теперешнее состояние. Из текста узнаете, как формировать JWS и JWK из rsa-ключей и получать Let’s Encrypt сертификат для ACME v01. Если интересно, добро пожаловать под кат.

image
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Правильные ответы по криптографии: 2018 год

Reading time10 min
Views21K
Перевод статьи, автор – Latacora

В литературе и самых сложных современных системах есть «лучшие» ответы на многие вопросы. Если вы разрабатываете встроенные приложения, то предлагают использовать STROBE и модный современный криптографический стек для аутентификации полностью из одиночных SHA-3-подобных функций губки. Советуют использовать NOISE для разработки безопасного транспортного протокола с формированием общего ключа аутентификации (AKE). Говоря об AKE, есть около 30 различных парольных AKE на выбор.

Но если вы разработчик, а не криптограф, то не должны делать ничего такого. Следует придерживаться простых и обычных решений, которые легко поддаются анализу — «скучных», как говорят люди из Google TLS.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments7

Как мы создавали менеджер паролей со стойкой криптографией и мастер-паролем. Опыт команды Яндекс.Браузера

Reading time9 min
Views51K
Как ни странно, но только 1% пользователей браузера используют специализированные расширения для хранения паролей (LastPass, KeePass, 1Password, ...). Безопасность паролей всех остальных пользователей зависит от браузера. Cегодня мы расскажем читателям Хабрахабра, почему наша команда отказалась от архитектуры защиты паролей из проекта Chromium и как разработала собственный менеджер паролей, который уже тестируется в бете. Вы также узнаете, как мы решили проблему сброса мастер-пароля без расшифровки самих паролей.



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

Читать дальше →
Total votes 87: ↑85 and ↓2+83
Comments178

Меловой леттеринг для «чайников» на примере работы над арт-объектом

Reading time11 min
Views19K
Это история личного опыта одного UX-дизайнера, который полюбил леттеринг ещё нечётко зная, что это такое.

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


Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments6

Разработка высоконагруженного WebSocket-сервиса

Reading time10 min
Views63K
Как создать веб-сервис, который будет взаимодействовать с пользователями в реальном времени, поддерживая при этом несколько сотен тысяч коннектов одновременно?

Всем привет, меня зовут Андрей Клюев, я разработчик. Недавно я столкнулся с такой задачей – создать интерактивный сервис, где пользователь может получать быстрые бонусы за свои действия. Дело осложнялось тем, что в проекте были довольно высокие требования по нагрузке, а сроки были крайне невелики.

В этой статье я расскажу, как выбирал решение для реализации websocket-сервера под непростые требования проекта, с какими проблемами столкнулся в процессе разработки, а также скажу несколько слов о том, как в достижении вышеуказанных целей может помочь конфигурирование ядра Linux.

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

Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments58

Information

Rating
Does not participate
Registered
Activity