Pull to refresh
9
0
Иван Линдберг | стартап-наставник @marshersusanin

Основатель и руководитель стартапов

Send message

Деревья Меркла и экономия газа в смарт-контрактах Solidity

Reading time 13 min
Views 3.3K

В идеальном децентрализованном приложении мы бы хотели хранить все в блокчейне на смарт-контрактах — в хранилище Ethereum: данные не могут быть изменены несанкционированным способом. Но запись какой-либо информации, размером 32 байта обойдется нам в 20000 газа. На момент написания статьи это примерно $0.26, c одной стороны не много, но что если мы хотим хранить в хранилище какой-то значительный массив информации.

В поисках решения данной проблемы экосистема Ethereum дает множество альтернативных вариантов. Как правило, в выбранном пути есть компромисс между доступностью и ценной. Вариант описанный в этой статье может обойтись крайне дешево в реализации, при должном подходе и понимании темы.

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

Видео-туториал: https://www.youtube.com/watch?v=1aC1_AlCuT8

Читать далее
Total votes 8: ↑6 and ↓2 +4
Comments 7

Игровой real-time сервер простыми словами: теория, архитектура на Python, оптимизация, автомасштабирование в AWS

Reading time 20 min
Views 22K

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

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

Перейти к материалу
Total votes 23: ↑21 and ↓2 +19
Comments 32

Я сделаю свою «умную» колонку… «with blackjack and hookers!»

Reading time 7 min
Views 57K

Я сделаю свою «умную» колонку… «with blackjack and hookers!»

Привет всем. В данной статье я расскажу историю как мы с двоюродным братом сделали свою «умную» колонку-голову робота Бендера из Футурамы.

Читать далее
Total votes 134: ↑134 and ↓0 +134
Comments 47

Почему мозгу нужно давать «передохнуть»

Reading time 5 min
Views 21K


Для работы некоторых жизненно важных функций мозг должен быть в состоянии покоя

Внимание — один из ценнейших ресурсов, и его часто с трудом хватает на всё.

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

И казалось бы: что в этом плохого? Зачем тратить время на бездействие, когда можно заняться чем-то интересным или продуктивным? Если разум занят высококачественным (в основном) продуктом, какой может быть вред?

«Исследования в области теории обучения дают предельно ясную картину, — рассказывает Лорен Фрэнк, профессор Центра интегративной нейробиологии в Калифорнийском университете (Сан-Франциско). — Для эффективного обучения нужно через небольшие промежутки времени делать перерывы на отдых».

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

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

Переведено в Alconost
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 10

Простой парсер арифметических операций

Reading time 6 min
Views 8.2K
Для учёбы необходимо было написать парсер арифметических операций, который мог бы рассчитывать не только простейшие операции, но и работать со скобками и функциями.

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

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

$(2 + 2) * ((2 * 2) + ((2 * 2) * (2 * 2)))$

Точно такая же история с функциями — в параметрах функции могут находится другие функции и даже целые выражения.

$sqrt(2 * 2; log(4; 2))$
Читать дальше →
Total votes 25: ↑15 and ↓10 +5
Comments 22

Самые быстрые Python веб-фреймворки в 2019

Reading time 4 min
Views 53K


В 2018 году Python укрепил свои позиции популярности среди программистов и вошел в Top 3 самых популярных языков на github. Все больше и больше людей переходит на светлую сторону…то есть Python. Появилось еще большее количество разработчиков, которые интересуются данным языком и ведут разработку своих проектов с его помощью. Одним из популярных направлений для Python является web-разработка. Хочется, чтобы не только процесс разработки был удобным и быстрым, но и сами проекты могли похвастаться скоростью и стабильностью работы.

Читать дальше →
Total votes 35: ↑28 and ↓7 +21
Comments 30

Символьный калькулятор на C#

Reading time 3 min
Views 15K
Понадобилась мне как-то библиотека на c#, которая умеет делать символьные вычисления (время от времени дополняю возможностями одну математическую программу). Всякие исходники в сети найти можно и на разных языках, но вот что-то попроще и попонятнее найти не удавалось. Обратил внимание на Jasymca (Java Symbolic Calculator).
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 12

Адаптивные шаблоны Figma: как сделать гибкий дизайн-компонент мобильной навигации iOS

Reading time 3 min
Views 22K


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

При создании набора компонентных iOS-шаблонов для Figma я решил поэкспериментировать с компонентом Tab Bar. Напомню, что в гайдлайнах iOS это нижняя навигация. Мне хотелось, чтобы его содержимое имело логичное и оптимальное поведение при ресайзе. Хотелось сделать его максимально адаптивным для всех iOS-устройств, насколько это позволяет сделать Figma и направляющие (constraints).
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 0

Программируем проходной выключатель. MicroPython на esp8266 (sonoff) с OTA. Часть 1

Reading time 9 min
Views 17K

Всем привет.


В процессе ремонта возникла задача сделать проходной выключатель. Конечно же захотелось сделать самым простым и удобным способом, добавив базовые функции управления с телефона. Я выбрал наиболее простую и удобную технологию для этого (конечно, на свой взгляд) — MicroPython, и начал делать. Взял готовую плату на esp8266 и выделил час свободного времени на это. Но, как это бывает с не очень популярными и не обкатанными проектами, задача немного затянулась.


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

Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Comments 22

Подборка @pythonetc, январь 2019

Reading time 3 min
Views 8.4K


Это восьмая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие подборки:


Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 0

Изучаем Docker, часть 1: основы

Reading time 6 min
Views 496K
Технологии контейнеризации приложений нашли широкое применение в сферах разработки ПО и анализа данных. Эти технологии помогают сделать приложения более безопасными, облегчают их развёртывание и улучшают возможности по их масштабированию. Рост и развитие технологий контейнеризации можно считать одним из важнейших трендов современности.

Docker — это платформа, которая предназначена для разработки, развёртывания и запуска приложений в контейнерах. Слово «Docker» в последнее время стало чем-то вроде синонима слова «контейнеризация». И если вы ещё не пользуетесь Docker, но при этом работаете или собираетесь работать в сферах разработки приложений или анализа данных, то Docker — это то, с чем вы непременно встретитесь в будущем.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными

image

Если вы пока не знаете о том, что такое Docker, сейчас у вас есть шанс сделать первый шаг к пониманию этой платформы. А именно, освоив этот материал, вы разберётесь с основами Docker и попутно приготовите пиццу.
Читать дальше →
Total votes 62: ↑52 and ↓10 +42
Comments 26

Делаем нейронную сеть: как не сломать мозг

Reading time 4 min
Views 8.8K
Привет, Хабр!

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

Речь пойдет о создании тривиальной нейронной сети на Keras, с помощью которой будем предсказывать среднее арифметическое двух чисел.

Казалось бы, что может быть проще. И действительно, ничего сложного, но есть нюансы.

Кому тема интересна, добро пожаловать под кат, здесь не будет долгих занудных описаний, просто короткий код и комментарии к нему.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Comments 3

Кастомный виджет googleTranslate для сайта

Reading time 5 min
Views 58K
Перед тем как преступить к написанию данной статьи, я решил посетить страницу где генерируется Google Translate Widget, чтобы узнать о возможных изменениях и увидел данное сообщение:
Получить доступ к переводчику сайтов больше нельзя. Это никак не отразится на тех, кто уже установил соответствующий плагин.

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

Как будет выглядеть наш пример:


Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Comments 10

Интернет вещей по-русски. Спектральные параметры радио-сигнала

Reading time 4 min
Views 14K
image

Полгода назад один заказчик заинтересовал меня передачей данных по радио для интернета вещей в нашей отечественной версии — NB-FI. Очевидно, что идеологически это система низкоскоростной передачи данных (Ultra-Narrow Band, UNB) SigFox. В деталях есть отличия, которые несомненно можно назвать улучшениями. Например, в NB-FI введено помехоустойчивое кодирование, которое позволяет значительно повысить вероятность доставки сообщения. Более узкая полоса частот также положительно сказывается на сложности оборудования базовой станции. Все это подробно описано в черновике стандарта, который готовится к принятию в РФ в этом, 2019 году. Но в проекте стандарта есть один, как мне кажется существенный, пробел.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 136

Ищем убийцу на Прологе

Reading time 8 min
Views 8.5K
Каждое воскресенье в нашей компании принято устраивать весёлые викторины, это одна из них.

Загадка


Чтобы найти убийцу мистера Бодди, нужно узнать, где находился каждый человек и какое оружие было в комнате. Подсказки разбросаны по всей викторине (вы не можете ответить на первый вопрос, пока не прочитаете все десять).

  • Для начала, представим подозреваемых. Есть три мужчины (Джордж, Джон, Роберт) и три женщины (Барбара, Кристина, Иоланда). Каждый человек находится в отдельной комнате (ванная, столовая, кухня, гостиная, кладовая, кабинет). В каждой комнате найдено подозрительное оружие (сумка, огнестрельное оружие, газ, нож, яд, верёвка). Вопрос: кого нашли на кухне?
  • Подсказка 1. При мужчине на кухне нет ни верёвки, ни ножа, ни сумки. Оружие не является огнестрельным. Вопрос: какое оружие найдено на кухне?
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 9

О чем говорит YouTube

Reading time 7 min
Views 11K
image

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

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

В моем проекте пользователи создают и обмениваются сотнями различных материалов: текстом, картинками, видеороликами, статьями, документами в различных форматах.

Поиск по документам представляется достаточно просто. Но что делать с поиском по мультимедиа контенту? Для полноценного сервиса пользователя надо обязать заполнить описание, дать название видеоролику или картинке, не помешает несколько тегов. К сожалению, далеко не все хотят тратить время на подобные улучшения контента. Обычно пользователь загружает ссылку на youtube, сообщает что это новое видео и нажимает сохранить. Что же делать сервису с таким “серым” контентом. Первая идея — спросить у YouTube? Но YouTube тоже наполняют пользователи (часто это один и тот же пользователь). Часто видеоматериал может быть и не с Youtube сервиса.
Так мне пришла идея научить наш сервис “слушать” видеоролик и самостоятельно “понимать”, о чем он.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 3

Машинное обучение на Python-е с интерактивными Jupyter демонстрациями

Reading time 3 min
Views 35K

image


Здравствуйте, Читатели!


Недавно я запустил репозиторий Homemade Machine Learning, который содержит примеры популярных алгоритмов и подходов машинного обучения, таких как линейная регрессия, логистическая регрессия, метод K-средних и нейронная сеть (многослойный перцептрон). Каждый алгоритм содержит интерактивные демо-странички, запускаемые в Jupyter NBViewer-e или Binder-e. Таким образом у каждого желающего есть возможность изменить тренировочные данные, параметры обучения и сразу же увидеть результат обучения, визуализации и прогнозирования модели у себя в браузере без установки Jupyter-а локально.

Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 5

Тетрис на C# в 100 строк

Reading time 5 min
Views 86K
UPD. Ссылка на github.
Недавно мне в голову пришла идея — написать простенькую игру в минимальное количество строк. Мой выбор пал на тетрис. В этой статье я опишу свой код.

Для начала стоит отметить, что в свою реализацию я включил только базовые возможности:

  • движение фигурок влево/вправо;
  • падение фигурок;
  • поворот фигурок;
  • удаление заполненных фигурок;
  • окончание игры.

Итак, сперва добавим на форму PictureBox и создадим таймер.
Читать дальше →
Total votes 37: ↑31 and ↓6 +25
Comments 36

Качество воздуха в доме зимой

Reading time 4 min
Views 85K
image

Зимой воздух в помещении хуже всего. Духота, сухость. Работает отопление, проветривать часто нельзя, потому что замерзнешь. Особенно актуально, когда дома есть маленькие дети.
Как соблюсти баланс? Возможно ли это?

В статье я приведу цифры и расчеты. А еще свой вариант решения проблемы и устройство, собранное для этого. Кому интересно, прошу под кат…
Читать дальше →
Total votes 64: ↑60 and ↓4 +56
Comments 411

Краткое руководство по Dash — Python веб-фреймворк для создания дэшбордов. Installation + Dash Layout

Reading time 7 min
Views 93K
image

Всем привет!

Сегодня предлагаю погрузиться в один из удобнейших веб-фреймворков в связке c Python под названием Dash. Появился он не так давно, пару лет назад благодаря разработчикам фреймворка plotly. Сам Dash является связкой Flask, React.Js, HTML и CSS.

Выступление Криса Пармера на PLOTCON 2016


Давайте сразу установим фреймворк. Обновленные версии уточняйте тут.

pip install dash==0.31.1  # The core dash backend
pip install dash-html-components==0.13.2  # HTML components
pip install dash-core-components==0.38.1  # Supercharged components
pip install dash-table==3.1.7  # Interactive DataTable component (new!)

Друзья, если вы действительно хотите разобраться в данном фреймворке, читайте публикации до конца, так как зачастую сначала следуют примеры, а уже после детальный обзор кода. Если вам все равно непонятно — советую читать документацию по Dash на английском языке в оригинале. Также в рунете есть несколько статей, которые объясняют концепции, которые я решил пропустить в данном туториале.
Total votes 26: ↑26 and ↓0 +26
Comments 8

Information

Rating
Does not participate
Location
Владивосток, Приморский край, Россия
Date of birth
Registered
Activity

Specialization

Product Manager, Chief Executive Officer (CEO)
Lead
Project management
People management
Product management
Development management
Internet Marketing
Startup management
Company management
Strategic planning
Optimization of business processes
Building a team