[prog.thoughts] В каких ситуациях полезны дедлайны доставки сообщений?

Думаю, что вопрос о том, в каких ситуациях полезно ограничивать время доставки сообщения от одного агента к другому, интересен не только пользователям конкретных фреймворков (будь то Akka, CAF или SObjectizer). Но и вообще разработчикам, которые используют механизм message-passing для разработки своих приложений. А этот механизм весьма актуален, как для утилизации современных многоядерных процессоров, так и для разработки распределенных приложений, компоненты которых располагаются на разных узлах сети, но должны общаться между собой.

Непосредственная же необходимость данной заметки возникла для пояснения некоторых моментов, затронутых в одной из предыдущих заметок и в обсуждении на SourceForge.

Итак, сходу в памяти всплывает две ситуации, когда было бы желательно ограничивать время жизни сообщения m, отосланного агентом S агенту R.

среда, 24 декабря 2014 г.

[prog.c++] В склерозник: C++ фреймворки для разработки Web-приложений

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

Примечание. Сам ничем из этого не пользовался, так что дать какую-то характеристику каждому из инструментов не могу.

CppCMS:

CppCMS is a Free High Performance Web Development Framework (not a CMS) aimed at Rapid Web Application Development. It differs from most other web development frameworks like: Python Django, Java Servlets in the following ways:

1. It is designed and tuned to handle extremely high loads.
2. It uses modern C++ as the primary development language in order to achieve the first goal.
3. It is designed for developing both Web Sites and Web Services.

It is available under open source LGPLv3 license and alternative Commercial License for users who needs an alternative license for proprietary software development.

Pion:

C++ framework for building lightweight HTTP interfaces

The Pion Network Library is published under the Boost Software License

Tntnet:

Tntnet is a web server which allows users to develop web applications using C++. It has a template language ecpp where C++ code can be embedded into html similar to php or jsp. The pages are compiled and linked into a shared library. The result is a native web application which is compact and fast.

Features
    Template engine for HTML
    SSL support
    Url mapping
    API for http, http upload, authentifikation,
    Setting for http headers and cookies
    Automatical session management

License

All software published under tntnet.org is licensed under the LGPL with template extension. It is explicitly allowed to use the software in commercia products as closed source (although we always recommend to publish source code with all software).

TreeFrog Framework:

TreeFrog Framework is a full-stack Web application framework. Written in C++, it is lightweight (low resource demands), and allows extremely fast working.

With the aim of reducing development costs while producing a C++ framework, a policy of "convention over configuration" has been followed. The configuration file has been made as small as possible. Because it provides help in automatic generation of code for template systems (scaffolding), O/R mapping and ORM, developers are free to focus on logic.

TreeFrog Framework is open-source software, under the new BSD license (3-clause BSD License).

Wt:

Wt (pronounced as witty) is a C++ library for developing web applications.

The API is widget-centric and uses well-tested patterns of desktop GUI development tailored to the web. To the developer, it offers abstraction of many web-specific implementation details, including client-server protocols (HTTP, Ajax, WebSockets), and frees the developer from tedious JavaScript manipulations of HTML and dealing with cross-browser issues. Instead, with Wt, you can focus on actual functionality with a rich set of feature-complete widgets.

Wt may be used using either an Open Source (GPL) or a Commercial License.

Silicon:

The Silicon Web Framework.

Silicon is a high performance, middleware oriented, C++14 http web framework. It brings to C++ the high expressive power of other web frameworks based on dynamic languages without introducing run-time overhead. Its compile-time static metaprogramming paradigm allows to match the performances of servers written in C.

The MIT License.

Cutelyst:

Cutelyst! The Qt Web Framework

Cutelyst has a plugin for uWSGI which give us support for HTTP, FastCGI, uWSGI protocols. It also features a WSGI server written in Qt which can deliver even faster HTTP or FastCGI responses. Running standalone or behind a web server is really easy.
With your application logic written in C++ your application get's really small, a full CMS (like this one) uses around 4 MB which can be shared with other instances of the same application. You save your RAM and CPU while offering your users with faster response times.

GNU LGPL v.2.1

Так же в POCO, Boost (Asio) и ACE (не в самом ACE, а в дополнительных модулях) есть что-то вроде HTTP-серверов, на базе которых можно делать что-то вроде Web-приложений/Web-сервисов.

Так же можно посмотреть на ULib C++ Library, которая позволяет реализовывать разные типы серверных приложений.

вторник, 23 декабря 2014 г.

[prog.c++] Хорошая серия статей Б.Страуструпа "Five Popular Myths about C++"

Уже давал ссылки на эти статьи в G+, но по завершении серии имеет смысл собрать их все вместе:

Part 1.
Part 2.
Part 3.

понедельник, 22 декабря 2014 г.

[life] Да все будет хорошо, тем более, что в кризис хорошо работается

Тяжелая штука кризис, изматывающая. Вчера доллар по столько, сегодня по столько, и если бы вчера... А сегодня...

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

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

Почему?

Потому, что очень здорово сказал герой Папанова в х/ф "Холодное лето 53-го года": "Как хочется пожить по-человечески и поработать. Да, да, поработать".

Вот именно по-человечески поработать и хочется. Кому-то нравится путешествовать. Кому-то развлекаться. Кому-то проверять себя на прочность в экстремальных условиях. А мне нравится работать, "женат на работе" -- это про таких, как я.

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

Ну а раз так, то фиг с тем, что будет дальше. Пока есть возможность работать, нужно просто работать. Тем более, как правильно сказал Сергей Лукьяненко, "в кризис очень хорошо работается". Все остальное приложится.

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


PS. На данный момент работу не ищу, занимаюсь своим проектом. Не важно, выстрелит он или нет -- это дело случая. Дело в другом. Аркадий Евгеньевич Косарев, к сожалению, уже покойный, в середине 90-х собрал в гомельском КБСП уникальную команду и заразил нас общей идеей. Тогда мы не смогли завершить начатое и сказать "Мы сделали это!". Теперь у меня есть уникальная возможность исправить это. Хочется получить продукт с интересными идеями, с хорошим качеством, с нормальной документацией, с полезными примерами. Чтобы не стыдно было. Этим и занимаюсь. Ну а если это кому-то пригодится, то тогда точно все будет хорошо ;)

воскресенье, 21 декабря 2014 г.

[life.sport.darts] Только что Борис Кольцов открыл новую страничку в истории российского дартса

Если не ошибаюсь, такое происходит впервые: российский игрок попадает в основную сетку Чемпионата Мира по версии PDC. Победив в очень нервном матче отборочного раунда японца Харуки Мураматсу, россиянин Борис Кольцов вышел в первый круг ЧМ-2015 и через пару часов будет играть против Кевина Пайнтера.

Upd. 1-3 проигрыш Кевину Пайнтеру :( Имхо, не смотря на взятый лег, матч у Бориса не задался. Возможно, это объективно уровень отечественного дартса на данный момент. Но, зато у нас стало чуть больше людей, которые на своем опыте знают, что такое матчи с такими звездами на такой сцене.

PS. Наверное, далеким от дартса людям это мало о чем говорит, но вообще-то это просто афигенно круто! Что-то вроде возможности для российского игрока попасть на ЧМ по снукеру.

PPS. Зимой 2013 мне довелось играть против Бориса Кольцова (понятное дело 4-0 не в мою пользу). Так что ощущение такое, как будто это мой приятель на ЧМ мира сейчас играет :)