Как убить всех человеков с помощью кота, или знакомство с Akka.FSM

Автор: admin от 22-09-2014, 12:41, посмотрело: 359

Как убить всех человеков с помощью кота, или знакомство с Akka.FSM
Как я уже писал в своей первой статье, не так давно я перешел c С++ на Scala. И вместе с этим я начал изучать модель акторов в исполнении Akka. Наиболее яркое впечатление на меня произвела лекгость реализации и тестирования конечных автоматов (finite-state machines, FSM), которую предоставляет эта библиотека. Уж не знаю, почему именно так получилось, учитывая изобилие остальных прекрасных и полезных вещей в Akka. Но теперь в моем первом проекте на Scala я использую конечные автоматы при каждой выпадающей возможности, подкрепленной целесообразностью (как я искренне надеюсь). И вот я решил, что готов поделиться с сообществом теми знаниями об Akka.FSM, а также некоторыми хитростями и личными наработками, которые я успел накопить. Подобной темы на хабре я не нашел (да и вообще со статьями про Scala и Akka здесь как-то не густо), и решил, не затягивая, исправить положение и выговориться, пока кто-то не сказал всего раньше меня. А чтобы было не скучно — предлагаю вместе реализовать поведение самого настоящего электронного кота. Хотелось бы верить, что какая-то одинокая романтическая душа, вдохновившись моей статьей, доработает предлагаемый в ней функционал до полноценного «Тамакотчи», в качестве домашнего задания. Главное, чтобы такая душа не забыла после поделиться своими результатами с сообществом в комментариях. В идеальном варианте можно было бы создать проект на гитхабе с общим доступом, чтобы каждый желающий смог привнести свой личный вклад в развитие идей трансгуманизма. А теперь — в сторону шутки и фантазии, закатываем рукава. Начинать мы будем с самого нуля, а я для пущего 7D и эффекта присутствия я буду проделывать каждый шаг вместе с вами. TDD прилагается: с неоттестированным робокотом уж точно будет не до шуток.

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

Категория: Программирование

 

Чем заняться айтишнику в армии или как я на VBA игры писал

Автор: admin от 22-09-2014, 11:25, посмотрело: 353

Чем заняться айтишнику в армии или как я на VBA игры писал Прошло уже больше двух месяцев с момента моей демобилизации. Я уже освоился на свободе, пришло время рассказать правду. Служил я в разведке!.. «Секретная» в/ч ОсНаз ГРУ. По распределению попал в отдел ЦРП (Центр радиоперехвата). Работенка не пыльная, сидишь ночами в наушниках и слушаешь врага. Но речь пойдет не об этом.

У каждого оператора поста радиоперехвата (таковыми мы числились) был в распоряжении компьютер с подключенными к нему РПУ (радио-приемными устройствами). На компьютере стоял спецсофт + Excel. Все остальное было заблочено. После N-ного дежурства я стал скучать… Зачесались руки.

Категория: Программирование

 

Как разные политики конфиденциальности влияют на конверсию: результаты 4-х A/B-тестирований!

Автор: admin от 22-09-2014, 10:58, посмотрело: 294

Как разные политики конфиденциальности влияют на конверсию: результаты 4-х A/B-тестирований!

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

Недавно я протестировал 4 разных варианта использования политики конфиденциальности на форме регистрации на главной странице сайта сообщества любителей пари и ставок. Результаты меня весьма удивили, так как каждый из вариантов по-разному повлиял на количество регистраций – от уменьшения регистраций на 18,7% до увеличения на 19,47%.

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

Категория: Программирование » Веб-разработка

 

Математика краудфандингового проекта

Автор: admin от 22-09-2014, 10:54, посмотрело: 237

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

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

Так из чего состоит финансовая составляющая краудфандинга?


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

Математика краудфандингового проекта

Например: друзья, если мы соберем 100.000 рублей, мою книгу “Краудфандинг в России” издадут!

Чтобы правильно посчитать эту цифру, нужно учитывать все расходы, которые существуют.

Имейте в виду, что проекты очень разные, поэтому тут указаны общие рекомендации в составлении краудфандингового-плана.

В «сумму проекта» входит:

  • Бюджет на реализацию идеи;

  • Вознаграждения;

  • Комиссия краудфандинговых платформ;

  • Комиссия платежных систем;

  • Налоги;

  • Реклама, оформление;

  • Подушка.

Категория: Программирование

 

RailsClub'Moscow 2014: Интервью с Равилем Байрамгалиным

Автор: admin от 22-09-2014, 10:28, посмотрело: 212

Привет!

Уже в конце этой недели состоится конференция RailsClub. Наши гости собирают чемоданы (вот и Аарон Паттерсон написал в своем твиттере, что едет в Россию). А мы с нетерпением ждем встречи с вами!

Мы задали пару вопросов о жизни и программировании разработчику в Evil Martians, ведущему разработчику Oh My Stats Равилю Байрамгалину. Равиль контрибьютор больше 40 опенсорсных проектов, среди которых Ruby on Rails, rack, cassandra-rb, sidekiq и другие. Получилось интересно!

RailsClub'Moscow 2014: Интервью с Равилем Байрамгалиным

Над чем ты сейчас работаешь?

Категория: Программирование » Веб-разработка

 

Несколько интересностей и полезностей для веб-разработчика #28

Автор: admin от 21-09-2014, 23:20, посмотрело: 577

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

roBrowser


Несколько интересностей и полезностей для веб-разработчика #28

roBrowser — open source клон достаточно популярной MMORPG игры Ragnarok Online в браузере. Проект разрабатывается по последним стандартам W3C — WebGL, HTML5, File API, javascript, Threads… Небольшой ролик с демонастрацией игры:

Категория: Программирование » Веб-разработка

 

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №126 (15 — 21 сентября 2014)

Автор: admin от 21-09-2014, 21:11, посмотрело: 417

Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №126 (15 — 21 сентября 2014)

Категория: Программирование » Веб-разработка

 

Полуавтоматическое увеличение версии проекта при работе с GIT в Visual Studio

Автор: admin от 21-09-2014, 19:35, посмотрело: 706

В Интернетах написано немало статей об инкреминировании версий своих приложений и каждый использует свой метод. У кого-то ревизии используются в качестве «билдов», у кого-то это количество секунд текущих суток (например, Microsoft), у кого-то что-то другое.

В моем проекте используются 4 определяющие версии.

Например, 1.2.34.56, где:
1 — Major version: Критические изменения проекта (введен новый функционал, в корне переработан существующий и пр.). Устанавливается вручную;
2 — Minor version: Изменение функциональных частей приложения, значительное улучшение кода и пр. Устанавливается вручную;
24 — Build: номер релиза, попадающего в общество. Назначается автоматически;
56 — Revision: номер ревизии, полученный с GIT. Назначается автоматически.

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

Категория: Программирование

 

Трёхканальный UART АЦП на ATtiny13

Автор: admin от 21-09-2014, 13:42, посмотрело: 1556

Трёхканальный UART АЦП на ATtiny13

Привет хабр. Я уже давно вынашивал сделать UART Аналогового-Цифрового Преобразователя на ATtiny13, зачем делать именно на ATtiny13 ведь есть, к примеру, ATmega8 имеет аж 6 (для DIP корпуса) портов на которых, при помощи мультиплексора, можно проводить измерение АЦП?
Причин несколько:

— ATtiny13 стоит дешевле;
— В ATtiny13 более оптимально используются ресурсы микроконтроллера;
— Размеры;
— Энергопотребление;
— Просто мне так захотелось.

Конечно на мои аргументы можно найти множество контраргументов, например ATmega8 при использовании V-USB может превратится в плату ввода/вывода которой не нужен переходник с UART на USB, правда кроме последнего, и с этим пожалуй не поспоришь.

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



Пару слов по схеме, кстати, вот она:
Хотя бы схему посмотрю

Категория: Программирование

 

Улучшаем LINQ для работы с IReadOnly-коллекциями

Автор: admin от 21-09-2014, 10:26, посмотрело: 496

Как известно, при использовании интерфейса IEnumerable<> там, где подразумевается коллекция, могут случаться проблемы (см. например Проблемы использования IEnumerable и LINQ против LSP). К счастью, в .NET v4.5 в 2012-м году (немного поздновато, но лучше поздно, чем никогда), появились интерфейсы IReadOnlyCollection<>, IReadOnlyList<>, IReadOnlyDictionary<> (далее буду их обобщённо называть IReadOnly-интерфейсы). В отличие от IEnumerable<>, IReadOnly-интерфейсы дают возможность достаточно и без лишних требований обозначать функциональность коллекции, что и позволяет их рекомендовать для использования вместо IEnumerable<> везде, где подразумевается чтение коллекции. Но тут встречается одно затруднение. Одним из важных компонентов, потребляющим и создающим коллекции, является LINQ и, особенно, его часть «LINQ к объектам». К сожалению, IReadOnly-интерфейсы появились на 5 лет позже чем LINQ, и в нём не используются. Все входные и выходные коллекции LINQ-операций имеют базовый тип IEnumerable<>, исходя из ограниченных возможностей которого, многие операции подразумевают лишние затраты: полный последовательный перебор или даже создание промежуточных копий входных коллекций. Более того, возвращая из операций тот же IEnumerable<>, LINQ требует при дальнейшем использовании результата опять использовать полный перебор и создание промежуточных копий. В связи с этим, у меня давно зрела мысль «подружить» LINQ с IReadOnly-интерфейсами.

Категория: Программирование