пятница, 25 января 2019 г.

Машобуч - улов статей

Решил я погрузиться в пучины модного нынче machine learning. Полез, понятное дело, в Интернет. И нашел там массу всего интересного.

Вот, например - можно ли машинно обучаться с помощью SQL? Обычно-то используют R и Python. Но вот некто Адам Праут считает, что нужно начинать с SQL - "Building a Machine Learning Application? Start with SQL". Адам считает, что современный SQL неплохо параллелится. А сочетание распределенного SQL хранилища с очередью сообщений (типа Kafka) и исполнительного движка типа Spark - вообще огонь.

Кстати, плюсы и минусы Spark хорошо разобраны в статье "Apache Spark — достоинства, недостатки, пожелания".

Внимательного прочтения заслуживает статья "Modeling and simulation in the big data era".

Появление больших данных заставляет разрабатывать распределенные алгоритмы машобуча. Об этом - в статье "Distributed Machine Learning Is The Answer To Scalability And Computation Requirements".

суббота, 19 января 2019 г.

Технические конференции

Поискал конференции об IT-технологиях (в Москве). Конференции есть, немало. Вот списочек найденного:

  1. Конференция PGConf.Russia 2019 (Экономический ф-т МГУ, 4–6 февраля в 09:00) - о PostGres
  2. Конференция «Технологии блокчейна 2019» 
  3. С++ Russia
Во всех этих мероприятиях один жирный минус - огромные взносы за участие. На PGConf, например, от 10 тыс руб. Взнос на  конференцию о блокчейне даже смотреть страшно, выделю только ключевые слова - Hyperledger Fabric, Ethereum, Exonum, R3 Corda, Ripple, «Мастерчейн», Quorum. На С++ преподавателям и студентам дается хорошая скидка, получается около 6 тысяч. Судя по описанию, конференция просто шикарная, с большим разнообразием мероприятий.

Так что вот - накопи денежек и окунись в мир высоких технологий.

четверг, 17 января 2019 г.

C++, тестирование: моки

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

Наконец нашлось кое-что вразумительное. Статья Mock objects в блоге Clean C++. 

Моки в этой статье рассказываются на достаточно простом примере. Пусть имеется класс play_time, который показывает геймеру, сколько времени он просидел за игрой. Этот класс нужно протестировать - проверить, что он действительно показывает правильное время. Стратегия тут простая - запустили таймер в play_time, затем вызвали sleep() на несколько секунд, остановили таймер, прочитали время из play_time. 

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

Нормальные системные часы будут реализованы как класс system_clock, наследник клаcса second_clock. Для нормальной работы класса play_time в его конструктор нужно подсунуть именно system_clock.

А вот для тестирования создаются "поддельные" часы - класс mock_clock, которые тоже наследуются от second_clock (вот и появился мок). В подделке часы не тикают - их устанавливают вручную.

И схема тестирования теперь выглядит следующим образом. Создаем объект-таймер типа  play_time, в конструктор передаем часы-мок. Запускаем таймер, продвигаем "поддельные" часы вручную (просто делаем set_time), останавливаем таймер. Теперь можно проверять время. На этот раз обошлись без ожидания в течение реального промежутка времени.




среда, 9 января 2019 г.

В закладки: обзор по NoSQL

Попалась мне хорошая статья на портале jetinfo  Называется "СУБД NoSQL - сильные и слабые стороны".

Итак, плюсы NoSQL (в сравнении с реляционными СУБД). Это хорошая горизонтальная масштабируемость, бОльшая производительность на одном узле (за счет отказа от некоторых букв в ACID), надежная работа в условиях отказа узлов или сети, простота разработки и администрирования, различные модели данных (не нужны прослойки, отображающие реляционную модель на модель данных пользователя).

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

Есть также краткое описание MapReduce, обзор разновидностей СУБД, относящихся к NoSQL. Вобщем, хороший получился обзор, даёт достаточно целостную картину. Да и другие статьи на сайты достойны прочтения (в основном они про машинное обучение).  

суббота, 5 января 2019 г.

Виртуализация - основы


источник картинки: sputnik-georgia.com

Насколько я понял, основная выгода от виртуализации серверов - это возможность использовать один мощный сервер (на котором будет несколько виртуальных машин) вместо нескольких попроще. И деньги на покупку сэкономим, и электроэнергии будет расходоваться поменьше. 

Удобно сделать несколько виртуальных серверов, дав каждому свою роль - сервер БД, веб-сервер и т.д. Администрирование будет проще,  чем если у одного физического сервера будет несколько ролей.

Обо всём этом (и многом другом) написано в цикле статей Введение в виртуализацию (не первой свежести, конечно, 2012 год, но для новичка вполне подойдёт). Меня особенно обнадёжила фраза "Несмотря на кажущуюся сложность виртуальная машина (ВМ) представляет собой всего лишь папку с файлами". Стало не так страшно разбираться в этой теме.

И вот еще статья на Хабре, которая мне очень понравилась: Основные принципы виртуализации на пальцах. Примеры оптимизации расходов с помощью виртуализации, основные понятия темы, интересные факты (на 2015 год половина серверов в мире были виртуальными).

вторник, 1 января 2019 г.

Трудная дорога в облака

Я решил освоить облачные технологии. Уже сейчас понятно, насколько это непросто - нужно проработать множество тем, в которых не разбираюсь (виртуализация, например).

Первый вопрос, который встал передо мной - что выбрать, OpenStack или OpenNebula. И он решился буквально за полчаса гугления. OpenStack точно изучать не буду в ближайшем будущем. Слишком много отрицательных отзывов. Достаточно проглядеть названия текстов: Боль и страдания OpenStack (на Хакере), OpenStack или как не стоит делать проекты (видео лекции Бориса Павловича), Итак, вы решили развернуть OpenStack (статья на Хабре; в названии никакого негатива нет, но сам автор характеризует свой текст как "пост ненависти к OpenStack"). 

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

В общем, решил я остановиться на OpenNebula. Тоже open, тоже бесплатная платформа, но вроде бы попроще и попонятнее. Начну, пожалуй со статьи на Вике МГТУ им. Баумана.

Кстати, где-то там в недрах OpenNebula используется алгоритм консенсуса Raft. Об этом можно прочитать в посте Романа Богачева.

суббота, 29 декабря 2018 г.

Ссылки: электроника

В браузере моего мобильного открыто множество страниц. И все интересные, и все хочется сохранить. Сюда скину ссылки на страницы об электронике.