суббота, 30 января 2016 г.

[prog.thoughts] Интересный момент с обслуживанием одной очереди задач пулом рабочих нитей

Предположим, что у нас есть одна очередь независимых друг от друга задач (T1, T2,..., Tn). И есть пул рабочих потоков {w(1), ..., w(k)}. Каждый рабочий поток берет первую задачу из очереди, выполняет ее, после чего берет новую первую задачу и т.д. Если задач в очереди нет, рабочий поток засыпает. Когда в очередь добавляется новая задача и есть спящие рабочие потоки, один из них нужно разбудить.

Вроде все просто. Но есть нюанс...

[prog.c++] Стоило вчера помянуть C++14 как сегодня его возможности оказались бы очень в тему :)

Вчера написал коротенькую заметку про то, что пора уже пристально смотреть в сторону C++14, как сегодня столкнулся с ситуацией, где возможности C++14 сократили бы и упростили бы мой собственный код.

пятница, 29 января 2016 г.

[work.sandness] Денис Томашенко увольняется из Интервэйл-Гомель

Еще один член моей старой команды, Денис Томашенко, увольняется из Интервэйла и уходит в свободное плавание. Остается с благодарностью вспомнить о том, насколько мне повезло, когда представилась возможность взять Дениса в команду. Хороший разработчик, плотно и надежно закрывавший огромный кусок работы, связанный с СУБД. В том, что наш софт работал шустро и надежно, внезапные проблемы быстро преодолевались, а новые пути повышения производительности БД регулярно обнаруживались и успешно внедрялись, есть весьма и весьма весомый вклад Дениса, его знаний, опыта, трудолюбия и способностей к изучению нового.

Ну а его вклад в т.н. социальную составляющую вообще сложно переоценить. Не припомню случая, чтобы Денис отказал в помощи или как-то негативно повлиял на атмосферу в команде. Вряд ли преувеличу, если скажу, что более подходящего под понятие "командный игрок" человека сложно будет найти. Возможно даже, что некоторые общественно-полезные начинания без помощи и энергии Дениса могли бы если не заглохнуть в самом начале, то уж точно пойти совершенно по другому пути развития. В частности, если бы не инициативность Дениса, неизвестно, когда именно гомельчане приняли бы участие в БПФД-шных турнирах в Минске...

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

[prog.c++14] Видимо пора начинать осваивать фишки C++14

Увидел в документации к новой библиотеке Boost.MSM-lite (из boost-experimental) коротенький пример, который еще раз напомнил о том, что современный C++ совсем другой:

class example {
public:
    auto configure() noexcept {
        using namespace msm;
        return make_transition_table(
            "src_state"_s(initial) == "dst_state"_s + event<my_event> [ guard ] / action,
            "dst_state"_s          == terminate     + event<game_over>
        );
    }
};

Сразу вспомнилось, как по времени растянулось освоение возможностей C++11 по мере появления компиляторов со все более и более полной поддержкой стандарта C++11. Теперь вот нужно осваивать C++14, т.к. хоть это и не настолько принципиальное изменение C++, как переход от C++03 к C++11, но все же. Одна только возможность автоматического вывода типа возвращаемого значения чего стоит...

среда, 27 января 2016 г.

[prog.flame] Писать на plain old C вместо C++? А с головой у вас все нормально?

На C++ плотно и осмысленно программирую где-то с 1992-го года (до этого был еще небольшой период времени, когда я не знал, что C и C++ -- это два разных языка). За это время довелось наслушаться столько критики C++ и рекомендаций использовать вместо C++ другие языки, что мало не кажется :) В разное время назывались разные альтернативы: Common Lisp, Ada, Modula-2, Pascal и Object Pascal, Oberon, Java, Eiffel, C#, D, OCaml, Haskell, Rust и Go. И это не считая разной скриптодинамики вроде Python-ов с Perl-ами и Ruby-ями.

Но вот настойчивые рекомендации использовать вместо C++ старый добрый C (или как годно и молодежно говорить: сишечку) -- это какое-то дурацкое веяние последний лет...

понедельник, 25 января 2016 г.

[work] OpenSource-проекту SObjectizer нужна помощь волонтера-переводчика

В течении последних нескольких лет мы, т.н. команда SObjectizer-а, активно занимаемся OpenSource-проектом SObjectizer. В результате наших усилий проект начинает получать некоторую известность в мире. Как раз в связи с этим хотим попросить помощи у волонтеров, которые могли бы помочь нам поднять качество английского языка. По крайней мере в блоге проекта.

Очень нужна помощь корректора. Т.е. тексты мы пишем сами, но т.к. наш английский оставляет желать много лучшего, то было бы здорово, чтобы кто-то вычитывал нашу писанину и исправлял самые элементарные и грубые ошибки. Если говорить о блоге, то объем там предполагается в районе 2-3 заметок в неделю. Иногда больше, иногда меньше. Есть еще презенташки и документация в Wiki, но это уже, наверное, слишком жирно для нас будет :)

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

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

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

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

Если кому-то интересно, то со мной можно связаться в комментариях к этой теме или через eao197 на гмайле точка ком.