четверг, 15 ноября 2018 г.

Сатоши Накамото на русском

Знаменитую статью "Bitcoin: A Peer-to-Peer Electronic Cash System"  можно прочитать на русском. Вот здесь лежат переводы этой работы в том числе на наш Великий и Могучий.

воскресенье, 7 октября 2018 г.

Разработка игр

Игры - это замечательный тренажёр для программиста. Позволяет отточить все виды навыков - от компьютерной графики до сетевого взаимодействия.

Фундаментальный труд Multiplayer game programming. Cтек TCP/IP, сокеты, сериализация объектов, репликация объектов и ... сами игры :)

Статья Distributed Architectures for Massively-Multiplayer Online Games. Кратко даются основы распределенных систем, а затем рассматривается вопрос, как писать многопользовательские игры для архитектуры peer-to-peer.

И, наконец, книжка на русском (переводная) Шаблоны игрового программирования. Приемы решения типовых задач при написании игрового ПО. Меня пока больше всего заинтересовали глава 9 Игровой цикл (по-английски game loop, основной цикл программы, в котором считывается пользовательский ввод, обновляется состояние игры, производится отрисовка) и глава 10 Метод обновления

понедельник, 24 сентября 2018 г.

Etherium, Solidity, geth.

Вот такие интересные имена бывают. Брендон Арванаги. Это блоггер, который пишет о блокчейне. Интересно, подробно и с примерами.

Меня заинтересовала возможность попробовать блокчейн у себя на компьютере или на собственном маленьком кластере. Оказывается, для этого есть все возможности. На Golang написана реализация Эфирного блокчейна, называется geth. Арванаги написал статью How to Set Up a Private Ethereum Blockchain using Geth где рассказывает азы работы с этой штукой. А если захочется со смарт-контрактами поиграться - пожалуйста, пост  Testing Smart Contracts Locally using Geth.

Что же дальше? Как выглядят суровые будни разработчка смарт-контрактов в России ? Об этом можно почитать в статье Как я окунулся в смарт-контракты.

А могут ли хакнуть блокчейн ? Еще как. И смарт-контракты только помогают в этом злоумышленникам. Уже и Лаборатория Касперского заинтересовалась безопасностью блокчейна. Вот интересный пост от их сотрудника (с описанием крушения The DAO).

Блокчейн: византийский консенсус, установка в локалке и версия на Питоне

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

В серии статей Understanding Blockchain Fundamentals кратко объясняется в чем состоит проблема византийских генералов. В изначальной формулировке (1975 года)  говорилось о двух генералах. В 1982 году вышла статья Лэмпорта и других, где задача была обобщена на
случай n генералов. Было показано, что можно достичь консенсуса, если предателей не больше трети.

В третей статье кратко описывается протокол delegated proof of stake, о котором до этого не знал почти ничего. Основная идея, что майнеров (в PoS и DPoS их называют валидаторами) выбирают пользователи, причем больше голосов у тех, у кого больше местной криптовалюты.  А в обычном PoS каждый может быть валидатором, но больше шансов добавить блок у более "богатых" пользователей.

А про двойные траты я нашел информацию в статье A Practical Introduction to Blockchain with Python. Там же, разумеется, приводится реализация блокчейна на Питоне.

А есть еще реализация блокчейна Ethereum на Go, которую можно скачать и развернуть у себя, в своей сети.

воскресенье, 16 сентября 2018 г.

Искусство тестирования ПО

Замечательная статья на Хабре Юнит-тестирование для чайников. Моки, стабы и прочие интересные штуки. Вот еще статья на эту тему, там побольше примеров. Вот здесь обсуждается классификация тестирующих объектов (Dummy, Fake, Stub, Mock) 

А вообще информации про тестировании полно. Что еще раз подтверждает необходимость тщательной отладки ПО. 


пятница, 31 августа 2018 г.

Роботы и блокчейн в России

Отличная статья у Фриц Моргена Роботизация нашей промышленности.  ОС для киберзавода (Газпромовский Центр Цифровых Исследований делает), беспилотные погрузчики, роботы-заправщики,  цепочка поставок на блокчейне (Газпром-Нефть), нейросети для проведения ледокольных караванов. Красота. Кстати, в Газпромовской ОС в качестве СУБД использует Apache Cassandra.

четверг, 30 августа 2018 г.

8 заблуждений - всё? Реальное воплощение PAXOS а

Мир меняется так стремительно, что остаётся только разводит руками.

Решил получше разобраться с известными 8ю заблуждениями, которые сформулировал в 1994 году Дойч (8е добавил Гослинг, создатель Java). Есть небольшая статья в Вики. А есть..
еще одна статья, которая называется "The 8 fallacies of distributed computing are becoming irrelevant". 

В этой второй статье говорится, что все эти заблуждения уже в общем и не заблуждения. И сети надёжны, и с латентностью разобрались, и т.д., и т.п.. А всё благодаря репликации, конкретно - благодаря технологии Active Transactional Data Replication. В самом конце статьи приводится в качестве примера гуглопродукт под название Cloud Spanner.

Стал копать. Active Transactional Data Replication - это технология, используемая в IBMвском Big Replicate (версия продукта Fusion от WANDisco). И там есть репликация типа active-active (это типа master-master?). Вот интервью с разработчиками. 

Что интересно, в Big Replicate используется протокол PAXOS. Хм. Вообще-то я раньше читал, 
что PAXOS слишком сложен для реализации, собственно из-за этого и возник Raft (есть, кстати, ещё Zab). 

Так вот, оказывается, PAXOS реализован и используется в коммерческом (не академическом) проекте. И не одном! Упомянутый выше Google Spanner тоже его использует.

А что такое Google Spanner ? Нууу, это полное великолепие. Взять хотя бы это описание. Это NewSQL СУБД, со строгой согласованностью, масштабируемая в глобальном масштабе, с синхронизацией времени с помощью GPS и атомных часов. Т.е. расхождения времени (clock skew), получается, вообще нет. И всё благодаря паксосу...?

В общем, с PAXOSом имеет смысл ознакомиться. Вот здесь интересное сравнение PAXOS и Raft.  Иииии... конечно есть альтернативная точка зрения на могущество PAXOSа . "Why would you use blockchain over a distributed consensus protocol like Paxos or Raft?",- задают вопрос на Quora. И в комментах пишут, что PAXOS плохо масштабируется по сравнению с блокчейновским консенсусом (напр., выборы лидера и отслеживание "живости" процессов требуют слишком большого количество пересылок).

Вот так. Хоть стой, хоть падай. Протокол консенсуса, который считался слишком абстрактным и сложным, вдруг лёг в основу коммерческих софтин Big Replicate и Spanner. А в этих софтинах решены чуть ли не все проблемы теории распределённых систем.