пятница, 6 марта 2015 г.

[life.economic] Пятничное, валютно-финансовое

На этой неделе обозначился приятный тренд. Разбежка между курсами покупки и продажи USD в РФ по показаниям rbc.ru пришла к нормальным величинам:

Смотреть нужно на столбец "Сред.маржа". Когда там значения в районе одного рубля (обычно чуть меньше), то значительных колебаний курса не ожидается. Если же маржинальность начинает расти, то курс должен измениться. Причем, как я смог заметить, если маржинальность растет при росте курса USD, значит рост курса будет продолжаться (возможно даже с увеличивающейся скоростью, как это было в ноябре-декабре 2014, когда USD "улетел" к семидесяти рублям). А вот если маржинальность растет при снижении курса, значит USD сейчас переоценен и его курс должен снижаться (что и происходило на текущей неделе):

четверг, 5 марта 2015 г.

[prog.c++] В первый раз попробовал std::enable_if для перегрузки шаблона по типу аргумента

Разбираться с чужими трехэтажными шаблонами мне не нравится. Писать свои навороченные шаблонные конструкции тоже. Но иногда приходится это делать.

Вот сегодня захотелось сделать, чтобы можно было писать вот так:

// Лямбда с аргументом. Тип аргумента лямбды выводится автоматом.
limit_then_transform( 1, []( const msg_request & request ) {...} );

// Лямбда без аргумента, тип нужно указывать явно.
limit_then_transform< msg_get_status >( 1, [] {...} );

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

[prog] Пример проблемы при разработке SObjectizer (mpmc-mbox, message_limits + redirect)

Т.к. есть несколько читателей блога, которым интересно читать про возникающие при разработке SObjectizer-а проблемы, то для них свежайший пример одной из таковых :)

вторник, 3 марта 2015 г.

[life.memories] Такая вот история случилась лет 30 назад

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

[life] Что такое красота?

То, что вызывает пронзительное чувство "это нельзя потерять".

Николя Ванье, "Вокруг Света" 2015/№3,стр.74

понедельник, 2 марта 2015 г.

[prog] Яркая демонстрация того, почему я предпочитаю сначала писать код на бумаге

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

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

[prog.flame] И вот в этом случае реализация акторов для C/C++ "ненужно"? ;)

Когда анонсируешь где-нибудь очередной релиз SObjectizer-а, рано или поздно возникает вопрос "а зачем это нужно?" (правда, еще раньше находится какой-нибудь неадекват, который будет кричать "ненужно" в ответ на каждую реплику). В тоже время на глаза регулярно попадаются темы, которые, имхо, наглядно показывают, где именно в C или C++ агентный фреймворк вроде SObjectizer или CAF мог бы пригодиться.

Вот, например, две свежие темы с LOR-а от одного и того же автора: "Подскажите аналог GLUT, но без проблем с потоками" и "И таки как правильно потоки убивать?"

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

Да, при отсутствии агентов, да еще в чистом C, все это большой и нудный трах с pthreads.

Зато при наличии агентов и специального диспетчера, который может запускать агентов, в том числе, и на главной нити, все оказывается намного, очень намного проще и удобнее. В SObjectizer-4 мы такое проделывали и на голом WinAPI, и в Qt. Получалось просто и удобно.

В SObjectizer-5 пока такой надобности не было. Но, при необходимости, диспетчер главной рабочей нити, заточенный под какой-нибудь вменяемый GUI-фреймворк вполне можно сделать.

[business] Samsung анонсировала собственный сервис мобильных платежей Samsung Pay

Благодаря ссылке Марины Мартыновой увидел одноименную новость о планах Samsung-а по запуску сервиса Samsung Pay.

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

Такими темпами разработка собственных инструментов мобильных платежей, не привязанных к конкретному производителю телефонов, вроде MasterCard Mobile, PayUP и т.д., может стать никому из конечных пользователей не нужной. Не пора ли создавать "коробочные" решения, которые можно продавать производителям смартфонов "второй" и "третьей" категории (вроде LG, Sony, HTP, Huawai, Lenovo, Asus и т.д.). Плюс создавать для них "региональные хабы". Т.е. адаптированные под конкретную страну сервисы оплаты различных услуг посредством телефона. Например, для России -- это ЖКХ, мобильная связь, денежные переводы и т.д. Ну и, соответственно, продавать софт для этих хабов как "коробку" или даже становясь оператором этих хабов, зарабатывая с процентов проходящих через хабы потоков платежных транзакций.

ИМХО, тем немногим российским компаниям, которые занимаются платформами мобильной коммерции, придется пересмотреть позиционирование своих разработок и планы по их развитию.