Pull to refresh
417
0
Вадим Шевяков @Sirion

Пролетарий умственного труда

Send message

Современное пиратство глазами моряка

Reading time 6 min
Views 70K

Автор: Илья Копосов

Здравствуйте. Сегодня я хочу рассказать вам о современном морском пиратстве, как от него защититься и чего это стоит. Из первых рук, так сказать, – рук штурмана торгового флота.

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

Читать далее
Total votes 448: ↑424 and ↓24 +400
Comments 414
Привет, я Вадим Шевяков (@Sirion), и я пишу на Хабр о всяких интересных вещах. Чаще про математику или JavaScript, но сегодня хочу рассказать кое о чём другом: о том, что иногда чудеса поджидают прямо за углом. Меня они подстерегли в самый обычный рабочий день, когда я обнаружил в телеграме сообщение от хабровского редактора: «Привет! А вам было бы интересно посетить киберферму и рассказать о ней? Там коровы с QR-кодами, доилки на ардуинках и всё такое». Я подумал — а чем чёрт не шутит? Недолгие переговоры — и вот мы с женой уже грузимся в наш старенький ниссан и едем на ферму M2, в страну непуганых коров. Спойлер: про QR-коды редактор пошутил. Однако я узнал много других занимательных фактов. В каких случаях нет разницы между коровой и автомобилем? Что лучше — нежная девичья рука или бездушный механический манипулятор? Зачем маленькой ферме своя ERP-система и как поживает Delphi в 2021 году?
Ответы здесь
Total votes 46: ↑46 and ↓0 +46
Comments 11

Фрактальный state-менеджер на генераторах*

Reading time 14 min
Views 6.2K


По некоторым источникам еще в IV до нашей эры Аристотель задался одним простым вопросом — Что было раньше? Курица или яйцо? Сам он в итоге пришел к выводу, что и то, и другое появилось одновременно — вот это поворот! Не правда ли?


Ладно, шутки в сторону, тут есть кое-что интересное. Данная простая дилемма хорошо описывает ситуацию, в которой не ясно, какое из двух явлений считать причиной, а какое — следствием, но в то же время позволяет сделать вывод о том, что причина может являться следствием и наоборот — следствие может являться причиной, смотря с какой стороны посмотреть (относительность, позиция наблюдателя и т.д.).


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


Сегодня я не буду терзать ваш разум водопадом отборного бреда. Выпуск будет чуть суровее — ибо лирики меньше, а кода больше. Тем не менее местами он будет вкуснее — ибо вишенки я вам приготовил отменные. Поехали?

Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 12

Объяснимый искусственный интеллект: понимание черного ящика

Reading time 6 min
Views 8.8K

Черный квадрат — знаковая картина советского художника Казимира Малевича. Первая версия написана в 1915 году. Черный квадрат впечатляет искусствоведов и сегодня, но на своих современников не произвел впечатления и хранился в таких плохих условиях, что сильно потрескался и обветшал.

Сложные алгоритмы машинного обучения могут быть математическим произведением искусства, но если эти «алгоритмы черного ящика», которые мы не видим, не смогут произвести впечатление и завоевать доверие пользователей, они могут быть проигнорированы, как Черный квадрат Малевича. Как сделать все понятнее для юзеров — в материале под катом.
Приятного чтения!
Total votes 22: ↑20 and ↓2 +18
Comments 0

Git subtree в деталях

Reading time 29 min
Views 33K

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


Целью настоящей работы является практическое изучение средства управления поддеревьями Git.



Начиная с ревизии 1.7.11 upstream-репозиторий Git, в каталоге contrib/subtree, содержит средство автоматизации работы с поддеревьями.


Сервис git-subtree(1) фактически является полезной надстройкой, использующей функции git-read-tree(1) и git-write-tree(1). Поэтому ссылки в командах git-subtree(1) add/pull/push:

  git subtree add --prefix=<subdir> <remote> <ref>

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


Кроме того, если заранее добавить удаленный репозиторий в конфигурационный файл локального репозитория .git/config, с помошью команды:


bash-4.4$ git remote add build-system ../../remote/build-system.git

где build-system является именем удаленного репозитория ../../remote/build-system.git, то в дальнейшем, при использовании команд git-subtree(1) add/pull/push, мы сможем ссылаться на upstream-репозиторий remote/build-system.git по имени.


На данный момент git-subtree(1) практически не развивается, а лишь поддерживается в актуальном состоянии для текущей степени развития проекта Git.


Однако git-subtree(1) является наиболее популярным и мощным средством работы с поддеревьями.


Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Comments 3

Death Note, анонимность и энтропия

Reading time 16 min
Views 74K


В начале “Death Note” местный гениальный детектив по сути занят деанонимизацией: он знает только то, что убийца существует где-то на планете. Никаких улик тот не оставляет, но довольно быстро оказывается пойман. Вообще-то хабр не площадка для обсуждения аниме, но такая же охота на того-не-знаю-кого порой случается и в реальном мире — достаточно вспомнить Сатоши Накамото, Dread Pirate Roberts или Q. Так что под катом перевод статьи (анонимного, кстати говоря, автора) о том, насколько происходящее в этом сериале связано с реальной анонимностью и что у его героя пошло не так.

Читать дальше →
Total votes 181: ↑181 and ↓0 +181
Comments 97

Люди ушли общаться в интернет, но теперь снова мечтают об оффлайне. Что происходит?

Reading time 15 min
Views 10K

И речь не про коронавирус




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

Звучит нормально, но есть один забавный момент. Люди, которые почувствовали это желание, не хотят просто закрыть интернет и пойти на улицу; не хотят написать «новому человеку» в любом из миллиарда мессенджеров — они хотят новый цифровой сервис для того чтобы не общаться в цифровых сервисах.

Мы уже писали, как Константин Шубин и Павел Козлов ушли из «Яндекса», чтобы развивать стартап Random Coffee. Или как дизайнеры Елизавета Орешкина и Этери Санеблидзе создали The Breakfast — закрытый клуб для завтраков с незнакомцами. В то же время основательница Rusbase Мария Подлеснова рассказала о скором релизе своего Adele.io — дейтинга, который будет сводить людей не только для романтики. Параллельно большим релизам маленькие сообщества в сети, паблики и чатики в Телеграме заводят простые таблички в экселе и чатботы для рандомного распределения на пары.

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

Я попытался разобраться — откуда взялся такой запрос в мире переполненном социальными связями, и что вообще происходит с человеческим общением.
Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Comments 8

Разбираем WTF задачки в JavaScript

Reading time 2 min
Views 34K


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


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


Задачка 1 — «BANANA»


Читать дальше →
Total votes 53: ↑47 and ↓6 +41
Comments 108

Что ты такое, замыкания в JavaScript?

Reading time 4 min
Views 27K
В этой статье я постараюсь подробно разобрать механизм реализации замыканий в JavaScript. Для этого я буду использовать браузер Chrome.

Начнем с определения:
Замыкания  - это функции, ссылающиеся на независимые (свободные) переменные. Другими словами, функция, определённая в замыкании, 'запоминает' окружение, в котором она была создана.
MDN

Если вам что-то не понятно в этом определении, это не страшно. Просто читайте дальше.

Я глубоко убежден, что разбираться в чем-либо проще и быстрее на конкретных примерах.

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

Итак, приступим:


Рисунок 1
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Comments 11

Талант против удачи: роль случайности в успехе и провале

Reading time 45 min
Views 39K


Недавно я натолкнулся на интересную работу итальянских учёных о сильно недооценённой роли удачи и случайности в нашей жизни. К сожалению, не нашёл полной версии на русском языке (может, плохо искал?), но очень уж хотелось поделиться прочитанным со своими не владеющими английским товарищами. Поэтому, засучив рукава, принялся за свой кустарный перевод. Авторы, Алессандро, Алессио и Андреа, любезно разрешили опубликовать его в общем доступе, поэтому, если заинтересовались, добро пожаловать под кат.
Читать дальше →
Total votes 32: ↑31 and ↓1 +30
Comments 58

Создание процедурного генератора головоломок

Reading time 11 min
Views 5.9K
В этом посте описывается генератор уровней для моей игры-головоломки Linjat. Пост можно читать и без подготовки, но он легче усвоится, если сыграть в несколько уровней. Исходный код я выложил на github; всё обсуждаемое в статье находится в файле src/main.cc.

Примерный план поста:

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

Правила


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


Цель игрока — прочертить вертикальную или горизонтальную линию через каждое из чисел при соблюдении трёх условий:

  • Линия, идущая через число, должна иметь ту же длину, что и число.
  • Линии не могут пересекаться.
  • Все точки необходимо закрыть линиями.

Пример решения:


Ура! Дизайн игры готов, UI реализован, и теперь единственное, что осталось — найти несколько сотен хороших головоломок. А для подобных игр обычно не имеет смысла пытаться создавать такие головоломки вручную. Это работа для компьютера.
Читать дальше →
Total votes 34: ↑34 and ↓0 +34
Comments 11

Про идеи преждевременные и своевременные на примере братьев Гракхов

Reading time 3 min
Views 11K
Обстоятельства в истории братьев Гракхов сложились так, что малоизвестный эпизод политической борьбы в Римской республике II века до PX превратился в своего рода модельную демонстрацию одного из принципов исторического процесса, словно в окошко позволяя взглянуть на внутреннюю машинерию хода истории, обычно скрытую за декорациями событий.



История аграрной реформы братьев Гракхов — это наглядная демонстрация, чем опережающие своё время идеи отличаются от идей своевременных.

Тиберий и Гай Гракх были братьями-реформаторами, которых разделяло 15 лет разницы в возрасте, но объединяла общая идея: они оба верили в важность и необходимость для Рима назревшей земельной реформы — и, с разницей ровно в 10 лет, каждый из них предпринял попытку её провести.
Читать дальше →
Total votes 57: ↑43 and ↓14 +29
Comments 35

Трехмерный движок на формулах Excel для чайников

Reading time 9 min
Views 69K


В этой статье я расскажу, как мне удалось портировать алгоритм рендера трехмерных сцен на формулы Excel (без макросов).

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

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

Осторожно: 19 картинок и 3 анимации под катом.
Читать дальше →
Total votes 211: ↑209 and ↓2 +207
Comments 54

Теория счастья. Термодинамика классового неравенства

Reading time 23 min
Views 32K
Продолжаю знакомить читателей Хабра с главами из своей книжки «Теория счастья» с подзаголовком «Математические основы законов подлости». Это ещё не изданная научно-популярная книжка, очень неформально рассказывающая о том, как математика позволяет с новой степенью осознанности взглянуть на мир и жизнь людей. Она для тех кому интересна наука и для тех, кому интересна жизнь. А поскольку жизнь наша сложна и, по большому счёту, непредсказуема, упор в книжке делается, в основном, на теорию вероятностей и математическую статистику. Здесь не доказываются теоремы и не даются основы науки, это ни в коем случае не учебник, а то, что называется recreational science. Но именно такой почти игровой подход позволяет развить интуицию, скрасить яркими примерами лекции для студентов и, наконец, объяснить нематематикам и нашим детям, что же такого интересного мы нашли в своей сухой науке.



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


Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Comments 110

Дротики, кости и монеты: алгоритмы выборки из дискретного распределения

Reading time 45 min
Views 9.1K

Однажды я задал на Stack Overflow вопрос о структуре данных для шулерских игральных костей. В частности, меня интересовал ответ на такой вопрос: «Если у нас есть n-гранная кость, у грани которой i есть вероятность выпадения pi. Какова наиболее эффективная структура данных для симуляции бросков такой кости?»

Такую структуру данных можно использовать для многих задач. Например, можно применять её для симуляции бросков честной шестигранной кости, присвоив вероятность $\frac{1}{6}$ каждой из сторон кости, или для симуляции честной монетки имитацией двусторонней кости, вероятность выпадения каждой из сторон которой равна $\frac{1}{2}$. Также можно использовать эту структуру данных для непосредственной симуляции суммы двух честных шестигранных костей, создав 11-гранную кость (с гранями 2, 3, 4, ..., 12), каждая грань которой имеет вес вероятности, соответствующий броскам двух честных костей. Однако можно также использовать эту структуру данных и для симуляции шулерских костей. Например, если вы играете в «крэпс» с костью, которая, как вы точно знаете, не идеально честная, то можно использовать эту структуру данных для симуляции множества бросков костей и анализа оптимальной стратегии. Также можно попробовать симулировать аналогичным образом неидеальное колесо рулетки.

Если выйти за пределы игр, то можно применить эту структуру данных в симуляции роботов, датчики которых имеют известные уровни отказа. Например, если датчик дальности имеет 95-процентную вероятность возврата правильного значения, 4-процентную вероятность слишком маленького значения, и 1-процентную вероятность слишком большого значения, то можно использовать эту структуру данных для симуляции считывания показаний датчика генерацией случайного результата и симуляцией считывания датчиком этого результата.
Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Comments 16

UI-компоненты на пиксельных шейдерах: пишем ваш первый шейдер

Reading time 10 min
Views 13K
Кого можно назвать «пиксельных шейдеров начальник и пикселов командир»? Дениса Радина, работающего в Evolution Gaming над фотореалистичными веб-играми с использованием React и WebGL: он известен многим как раз под именем Pixels Commander.

В декабре на нашей конференции HolyJS он выступил с докладом о том, как использование GLSL может улучшить работу с UI-компонентами по сравнению с «обычным джаваскриптом». А теперь для Хабра мы подготовили текстовую версию этого доклада — добро пожаловать под кат! Заодно прикладываем видеозапись выступления:


Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 12

Ноги

Reading time 2 min
Views 8.2K
Привет, старик Гиктаймс!

Я тебя помню с рождения. Помню, как ты отделился от Хабрахабра. Как гремел на весь мир. Тут было всё! От политсрачей до DIY-проектов. От грёз о будущем до воспоминаний о прошлом.

Сколько ног я с тех пор поменял — уже и перестал считать. А потом на тебя, что называется, «забили». Ты стал неинтересен своим разработчикам, переключившимся на новые проекты. Им было некогда прикрутить к тебе голографический интерфейс, а затем и все последующие новшества. Ну а перед тем, как окончательно превратить тебя в абандон — ещё и перевели на HTML 3.2 и восьмибитную кодировку. Аргумент — «чтобы в Arachne работало, всё равно теперь тут будут тусоваться полтора олдфага». Так оно и случилось. Трудно в середине двадцать второго века быть популярным ресурсу, не задействующему через нейроинтерфейс все шесть чувств.

А я сегодня опять надгробие для ног гравировал. Ручная гравировка сегодня — услуга очень редкая и дорогая, но ведь у любых ног первые и последние хозяева — богачи. Вот и у этих история вполне типична.

Читать дальше →
Total votes 46: ↑30 and ↓16 +14
Comments 20

Иллюзия движения

Reading time 17 min
Views 68K
История о чувстве зрения, восприятии кадров и частоты обновления, размытости движущегося объекта и телевизионных экранах.
(также см. перевод статьи того же автора «Иллюзия скорости» — прим. пер.)

Введение


Вы могли слышать термин кадры в секунду (FPS), и что 60 FPS — действительно хороший ориентир для любой анимации. Но большинство консольных игр идут на 30 FPS, а кинофильмы обычно записывают на 24 FPS, так зачем же нам стремиться к 60 FPS?

Кадры… в секунду?


Ранние времена кинопроизводства



Съёмки голливудского фильма 1950 года «Юлий Цезарь» с Чарлтоном Хестоном

Когда первые кинематографисты начали снимать кино, многие открытия делались не научным методом, а путём проб и ошибок. Первые камеры и проекторы управлялись вручную, а плёнка была очень дорогой — настолько дорогой, что при съёмке старались использовать наименьшую возможную частоту кадров, лишь бы сэкономить плёнку. Этот порог обычно находился между 16 и 24 FPS.
Читать дальше →
Total votes 89: ↑89 and ↓0 +89
Comments 51

Что такое пространство?

Reading time 16 min
Views 73K

Не то, что вы думаете


image

Попросите группу физиков и философов определить «пространство», и вы, скорее всего, увязнете в долгой дискуссии, в которой будут встречаться такие глубокие, но бессмысленные комбинации слов, как «сама ткань пространства-времени является физическим проявлением концепций квантовой энтропии, сотканной воедино универсальной природой местоположения». Если подумать, может вам и не стоит затевать глубокие дискуссии между физиками и философами.

Является ли пространство просто бесконечной пустотой, лежащей в основе всего? Или же это пустота между объектами? Что, если пространство – это ни то, ни другое, а вовсе даже и физическая сущность, способная плескаться, будто ванна с водой?

Оказывается, что природа пространства – одна из величайших и самых странных загадок Вселенной. Так что приготовьтесь к… пространным рассуждениям.
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 145

Information

Rating
Does not participate
Location
Калуга, Калужская обл., Россия
Date of birth
Registered
Activity