Search
Write a publication
Pull to refresh
3
0
Евгений Даниленко @JekaMas

Golang и распределенные системы

Send message

Основы React (текстовый учебник, 2-е издание)

Reading time2 min
Views52K

Прошло 2.5 года после публикации первой версии подробного туториала по основам React. За это время gitbook насчитал 250 000+ уникальных посетителей.


book cover


Под катом подробнее об учебнике и список изменений.

Читать дальше →

Глаукома – не слышали о ней? Знакомьтесь – серийный тихий убийца зрения

Reading time9 min
Views96K
Среди глазных заболеваний есть те, которые особенно опасны. Они протекают вначале бессимптомно — ничего не болит, жалоб нет, могут «маскироваться» под другие «легкие» болезни и, самое главное, появиться в любом возрасте и безвозвратно «уничтожить» зрение.

Представьте, прикрыли вы левый глаз случайно, а правым то все «как в тумане»! Читаете в интернете как себе помочь или звоните друзьям, а они — не переживай, проморгается. Пока ждали — вроде бы и правда туман прошел. Вот так периоды беспокойства повторяются, но на первых порах мало тревожат. А он (убийца) начал свое коварное дело. Причем как правило на обоих глазах, даже если второй никак не беспокоит! И возраст не помеха — дети также подвержены этому заболеванию — 10% детей слепнут именно от глаукомы.
глаукома — причины и симптомы

Глаукома достаточно распространена во всех странах — в 15% случаев слепоты причиной является именно она. Это ставит ее на второе место среди причин неизлечимой слепоты!

А все почему — потому что человеческий мозг очень хорошо «замещает» провалы в поле зрения, если они возникают постепенно, адаптируется и только когда 30-40% от зрительного нерва погибло начинается ощущение «тумана». А все — привет, потерянное невозобновимо!
Читать дальше →

Метапрограммирование в JavaScript

Reading time17 min
Views23K
Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы, либо программ, которые меняют себя во время выполнения. (Википедия)

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

Centrifugo v2 — будущее сервера real-time сообщений и библиотека для Go

Reading time11 min
Views26K

Возможно, некоторые из читателей уже слышали про Centrifugo раньше. В данной статье речь пойдет о разработке второй версии сервера и новой real-time библиотеке для языка Go, лежащей в его основе.


Меня зовут Александр Емелин. Летом прошлого года я присоединился к команде Авито, где сейчас помогаю разрабатывать бэкенд мессенджера Авито. Новая работа, напрямую связанная с быстрой доставкой сообщений пользователям, и новые коллеги вдохновили меня продолжать работу над open-source проектом Centrifugo.


Читать дальше →

Дейкстра за линейное время

Reading time5 min
Views19K

Приветствую всех и особенно тех кто интересуется задачами дискретной математики и теорией графов.


Предыстория


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

Читать дальше →

Проверка временем: Timejacking против Bitcoin

Reading time5 min
Views3.8K



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

В этой статье мы рассмотрим атаку «Timejacking», основанную на уязвимости в обработке временных меток блоков в системе криптовалюты Bitcoin, и попытаемся объяснить, почему атака есть, а ее успешной реализации нет.

P.S. Тут будет много производных от слова «время». Очень много.
Читать дальше →

Анализ применения цифровой подписи: 10 из 15 топовых криптовалют не подписывают ПО

Reading time5 min
Views4.9K

Читая очередную новость об успешной подмене злоумышленниками кода крупного проекта, сам собой возникает вопрос: как вообще такое возможно, если код был подписан!? Пренебрежение правилами безопасности в криптосфере – оксюморон и, одновременно, факт, поэтому, чтобы данная статья не превратилась в избиение лежачего, я отобрал для анализа не новичков, а криптовалюты с вершины рейтинга CoinMarketCap. И, как вы уже догадались, не зря.


Давайте посмотрим как обстоят дела с применением цифровой подписи в оплоте финтех революции.

Читать дальше →

Мини-империи

Reading time3 min
Views16K
Как выглядит стратегическая игра, если мы будем смотреть только на мини-карту? Недавно я решил изучить эту идею, вернувшись к классической Age of Empires II.

Начало исследования


Я начал с изучения матча с тремя ИИ-игроками на карте средних размеров. Вот исходное состояние:


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

Делая каждые несколько секунд скриншоты мини-карты, мы можем создать таймлапс игры. Каждый кадр в показанном ниже видео представляет две секунды реального времени. При частоте 24 кадров в секунду двухчасовая игра занимает гораздо более удобные две с половиной минуты:

Как написать смарт-контракт для ICO за 5 минут

Reading time14 min
Views64K


Всем привет! В этой статье я расскажу вам, как за 5 минут и несколько команд в терминале запустить смарт-контракт сбора денег для своего ICO на Ethereum. Этот очерк потенциально сэкономит вам десятки тысяч американских долларов, так как любой программист — да и не программист тоже — сможет запустить проаудированный и безопасный смарт-контракт (вместо того, чтобы платить $15,000 – $75,000 за разработку). Вкратце, на этот смарт-контракт можно будет отправить денег и получить за это ERC20 токены. Можно сказать, эта статья — сборник всего опыта, который я получил, запуская ICO для своего проекта.

В Интернетах этих ваших и так полно статьей про смарт-контракты, но как только начинаешь писать оный, сталкиваешься с тем, что информация везде повторяется, а туториалов, как запулить свой ERC20 попросту либо нет, либо они устарели что аж донельзя. К слову, чтобы эта статья оставалась актуальной, постараюсь указать потенциальные места, где она может устареть (и как это поправить). Поехали!
Читать дальше →

Редукция нейронных сетей при помощи вариационной оптимизации

Reading time13 min
Views12K
Привет, Хабр. Сегодня я бы хотел развить тему вариационной оптимизации и рассказать, как применить её к задаче обрезки малоинформативных каналов в нейронных сетях (pruning). При помощи неё можно сравнительно просто увеличить «скорострельность» нейронной сети, не перелопачивая её архитектуру.

Читать дальше →

«20 тысяч IOPS на узел — хорошие показатели с учётом задержек в 5 мс». Для OLTP — нет

Level of difficultyMedium
Reading time15 min
Views41K

КДПВ


Поводом написать эту статью стал весьма достойный обзор Как мы тестировали VMware vSAN... компании КРОК. Обзор-то достойный, но в нем есть фраза, с которой я борюсь уже больше десятка лет. Админы СХД, виртуализаторы и интеграторы раз за разом повторяют: "Задержки в 5 мс — это отличный показатель". Даже цифра в 5 мс десять лет не меняется. Я это слышал вживую от весьма уважаемых админов уже не меньше десятка раз. От менее уважаемых — десятки, а уж сколько раз читал в интернете… Нет, нет, нет. Для OLTP нагрузок 5 мс, особенно так, как их обычно измеряют — это epic fail. Мне приходилось объяснять причины этого уже много раз, на этот раз я решил собрать свои мысли в переиспользуемую форму.


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

Читать дальше →

Обзор градиентных методов в задачах математической оптимизации

Reading time11 min
Views110K

Предисловие


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



Читать дальше →

Нахождение числа комиссий, «рисовавших» целые значения явки на президентских выборах РФ 2018 года

Reading time7 min
Views42K
Графики с необычными пиками мы теперь видим после каждых федеральных выборов. Впервые в массы они вышли после выборов в 2011 году, когда люди и увидели фальсификации, и ознакомились в целом с анализом данных по выборам и с проблемой целочисленного деления в частности.

У распределений даже стали появляться свои имена. Это и «борода Чурова» для выборов 2011, и «пик Володина» для знаменитых 62.2% в Саратове. Поскольку до сих пор даже на хабре появляются статьи, не знакомые с решением проблемы целочисленного деления и не согласные "добавлять мусор" небольшой случайной добавки в данные, давайте посмотрим на результаты совсем иначе. Мы зайдём к построению графиков с противоположной стороны, где проблемы целочисленного деления вообще нет. И тоже увидим пики на целых значениях.


Читать дальше →

50 (или 60) лет разработки процессоров… ради этого?

Reading time12 min
Views52K
«Закон масштабирования Деннарда и закон Мура мертвы, что теперь?» — пьеса в четырёх действиях от Дэвида Паттерсона

«Мы сжигаем мосты, по которым сюда мчимся, не имея других доказательств своего движения, кроме воспоминаний о запахе дыма и предположения, что он вызывал слёзы» — «Розенкранц и Гильденштерн мертвы», абсурдистская пьеса Тома Стоппарда

15 марта д-р Дэвид Паттерсон выступил перед аудиторией из примерно 200 наевшихся пиццы инженеров. Доктор вкратце изложил им полувековую историю конструирования компьютеров с трибуны в большом конференц-зале здания E в кампусе Texas Instruments в Санта-Кларе во время лекции IEEE под названием «50 лет компьютерной архитектуры: от центральных процессоров до DNN TPU и Open RISC-V». Это история случайных взлётов и падений, провалов и чёрных дыр, поглотивших целые архитектуры.

Паттерсон начал с 1960-х годов и новаторского проекта IBM System/360, основанного на ранних работах Мориса Уилкса по микропрограммированию 1951 года. По меркам IT это было давным-давно… Ближе к концу выступления Паттерсон показал потрясающую диаграмму. Она наглядно демонстрирует, как именно смерть закона масштабирования Деннарда, за которой следует смерть закона Мура, полностью изменили методы проектирования компьютерных систем. В конце он объяснил посмертные технологические последствия этих потрясений.
Читать дальше →

Применение рекуррентных слоев для решения многоходовок

Reading time7 min
Views14K
image

История


Рекуррентные слои были изобретены еще в 80х Джоном Хопфилдом. Они легли в основу разработанных им искусственных ассоциативных нейронных сетей (сетей Хопфилда). Сегодня рекуррентные сети получили большое распространение в задачах обработки последовательностей: естественных языков, речи, музыки, видеоряда и тд.

Задача


В рамках задачи по Hierarchy reinforcement learning я решил прогнозировать не одно действие агента, а несколько, используя для этого уже пред обученную сеть способную предсказать последовательность действий. В данной статье я покажу как реализовать “sequence to sequence” алгоритм для обучения этой самой сети а в последующей, постараюсь рассказать, как использовать ее в Q-learning обучении.
Читать дальше →

Планирование спидрана Morrowind с помощью имитации отжига

Reading time19 min
Views37K
image

Ну ты и соня, тебя даже вчерашний шторм не разбудил. Говорят, мы уже приплыли в Морровинд. Нас выпустят и позволят нам сделать спидран, это точно!

Введение


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

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

Software Transactional Memory на Free-монадах

Reading time13 min
Views7.9K
Осознав, что я давно не писал на Хабр ничего полезного о ФП и Haskell, и что имеется вполне отличный повод для технической статьи, — решил тряхнуть стариной. Речь в статье пойдет о Software Trasactional Memory (STM), которую мне удалось реализовать на Free-монадах при участии ADTs (Algebraic Data Types) и MVars (конкурентные мутабельные переменные). И, в общем-то, Proof of Concept оказался крайне простым, в сравнении с «настоящим» STM. Давайте это обсудим.

Software Transactional Memory

Читать дальше →

Feature Engineering, о чём молчат online-курсы

Reading time7 min
Views26K


Sherlock by ThatsWhatSheSayd


Чтобы стать великим сыщиком, Шерлоку Холмсу было достаточно замечать то, чего не видели остальные, в вещах, которые находились у всех на виду. Мне кажется, что этим качеством должен обладать и каждый специалист по машинному обучению. Но тема Feature Engineering’а зачастую изучается в курсах по машинному обучению и анализу данных вскользь. В этом материале я хочу поделиться своим опытом обработки признаков с начинающими датасаентистами. Надеюсь, это поможет им быстрее достичь успеха в решении первых задач. Оговорюсь сразу, что в рамках этой части будут рассмотрены концептуальные методы обработки. Практическую часть по этому материалу совсем скоро опубликует моя коллега Osina_Anya.


Один из популярных источников данных для машинного обучения — логи. Практически в любой строчке лога есть время, а если это web-сервис, то там будут IP и UserAgent. Рассмотрим, какие признаки можно извлечь из этих данных.

Читать дальше →

Шпаргалка по OTP (Erlang)

Reading time1 min
Views12K

Наверное многим, кто начинал изучать Erlang и Open Telecom Platform (OTP), было непросто запомнить все возможные настройки супервизора или ген-сервера, а также порядок входящих аргументов и формат возвращаемых значений. Основная сложность заключается в том, что описание любого процесса, будь то инициализация супервизора или синхронный вызов ген-сервера, находится в разных частях одной страницы документации. В самом начале освоения OTP такая навигация приводит к потере контекста и замедлению обучения. Не найдя шпаргалки по OTP на просторах интернета, пришлось создать свою. Надеюсь, она поможет вам в изучении (все картинки на английском языке).

Читать дальше →

Не сверточные сети

Reading time7 min
Views16K


Достоинства, проблемы и ограничения сверточных нейронных сетей (CNN) в настоящее время достаточно неплохо изучены. Прошло уже около 5 лет после признания их сообществом инженеров и первое впечатление «вот теперь решим все задачи», хочется верить, уже прошло. А значит, пришло время искать идеи, которые позволят сделать следующий шаг в области ИИ. Хинтон, например, предложил CapsuleNet.
Вместе с Алексеем Редозубовым, опираясь на его идеи об устройстве мозга, мы тоже решили отступить от мейнстрима. И сейчас у меня есть что показать: архитектуру (идёт заглавной картинкой для привлечения внимания) и исходники на Tensorflow для MNIST.

Более формально, результат описан в статье на arxiv.
Читать дальше →

Information

Rating
10,565-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Distributed systems
Lead
From 150,000 $
BlockChain
Ethereum
Bitcoin
Solidity
Golang
Rust