Архив за 27 апреля 2016 - 3

в 16:12, , рубрики: c++, С++

Нет нужды описывать чем хорош pattern matching. Так как в любом случае такой конструкции в С++ нет.
Без него же работа с шаблонами, часто обрастает лесами понятного и полезного кода.
Итак предлагаю способ некоего подобия pattern matching`а для С++14 (скорее даже type matching'a), который укладывается в 50 строк кода, не использует макросы и вообще кросс-компиляторный.

Сначала пример использования: http://coliru.stacked-crooked.com/a/6066e8c3d87e31eb

template<class T>
decltype(auto) test(T& value) {
    return match(value
        ,[](std::string value)    { cout << "This is string"; return value + " Hi!"; }
        ,[](int i)                { cout << "This is int";    return i * 100; }
        ,[](auto a)               { cout << "This is default";return nullptr; }
    );
}

compile-time Условия: http://coliru.stacked-crooked.com/a/ccb13547b04ce6ad

match(true_type{}
         ,[](bool_constant< T::value == 10 >)                        { cout << "1" ; }
         ,[](bool_constant< (T::value == 20 && sizeof...(Args)>4) >) { cout << "2" ; }
    );

Возвращаем тип: http://coliru.stacked-crooked.com/a/0a8788d026008b4b

auto t = match(true_type{}
           ,[](is_same_t<T, int>) -> type_holder<short>  { return{}; }
           ,[](auto)              -> type_holder<T>      { return{}; }
         );

using I = typename decltype(t)::type;             
I i = 1000000;

Читать полностью »

По сообщению источника, LG Electronics вчера объявила о присоединении к альянсу Genivi Alliance. Это некоммерческая организация, которая занимается продвижением платформы Genivi с открытым исходным кодом в качестве основы для автомобильных информационно-развлекательных систем.

LG Electronics присоединилась к альянсу Genivi Alliance

Читать полностью »

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

Почему моё внимание было обращено именно на понятие «ниши»? Потому что, множество тренингов типа «создай свой бизнес за 1 день и 100 рублей» строятся именно на таком маркетинговом приёме входа в рынок как «нишевание» и он действительно является одним из самых доступных способов старта собственного бизнеса, что я, будучи в тот момент студентом программы MBA (а сейчас уже обладатель соответствующего диплома*), знал из курса маркетинга.

Сервис обмена идеями Eurecable.com: история создания «стартапа» - 1

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

Другой областью моих интересов является двухколесная техника. Не велосипеды, как некоторые могли бы подумать, хотя и этот безусловно полезный для здоровья экологически чистый транспорт мне интересен, а мотоциклы. Судя по приведенному анализу, продажа мотоциклов через интернет — довольно-таки здравая и перспективная идея: при рентабельности в 30% 60 продаж в месяц при среднем чеке в 200 000 рублей могут обеспечить прибыль в 4 миллиона в месяц. Учитывая, что это сезонный бизнес, в год получается порядка 23 миллионов!
Читать полностью »

P2P в браузере - 1
Автор: Александр Трищенко

Я расскажу о своем хобби — организации видеотрансляций в браузере по технологии WebRTC (Web Real-Time Communication — веб-коммуникация в режиме реального времени). Этот проект с открытым исходным кодом Google активно развивает с 2012 г., а первый стабильный релиз появился в 2013 г. Сейчас WebRTC уже хорошо поддерживается самыми распространенными современными браузерами, за исключением Safari.

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

Если мы используем WebRTC, мы решаем следующие проблемы:

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

Читать полностью »

Компания Hola объявляет начало весеннего конкурса по программированию! Призовой фонд увеличен:

  1. Первое место: 3000 USD.
  2. Второе место: 2000 USD.
  3. Третье место: 1000 USD.
  4. Возможно, мы решим отметить чьи-то чрезвычайно оригинальные решения двумя специальными призами в 400 USD.
  5. Если Вы отправите кому-то ссылку на этот конкурс, поставив наш адрес в CC, и этот человек займёт призовое место, Вы получите половину суммы приза (разумеется, не в ущерб награде победителя). За одного победителя такую награду может получить только один человек — тот, кто отправил ссылку первым.

Мы ищем талантливых программистов, поэтому авторы интересных решений будут приглашены на собеседования.

Конкурс по программированию на JS: Классификатор слов - 1

Правила

На этот раз мы решили попробовать что-то новенькое: для разнообразия, этот конкурс — не на производительность кода.

Условия конкурса на английском языке размещены на GitHub. Ниже — перевод на русский язык.

Читать полностью »

Всем привет!
После долгого перерыва блудный Python Meetup снова с нами. На долгожданной мартовской встрече сообщества любителей и профессионалов языка программирования Python обсуждались животрепещущие темы: противостояние Python и Erlang, а также дополнительные возможности PostgreSQL.
Видеозаписи выступлений под катом. Приятного просмотра!
Мартовский Python Meetup: Python VS Erlang и возможности PostgreSQL - 1
Читать полностью »

Чтобы расти, не совершайте откровенных глупостей. На облачном рынке кризиса нет. Вызов в том, чтобы обгонять остальных, считает Дмитрий Бызов, генеральный директор «Манго Телеком» (Mango Office).

Читать полностью »

image

На этой неделе Nintendo опубликовала отчёт за прошедший финансовый квартал, в рамках которого компания заявила о прибыли за прошедший финансовый год в размере $148 млн, при общем доходе в $4,53 млрд. В годовом исчислении доходы компании снизились на 60,6%, что также повлияло на стоимость акций компании — они упали в цене на 0,9% до $18,72. По прогнозам компании прибыль в следующем году упадёт на 1% до $4,49 млрд, в то время как операционная прибыль увеличится на 37% до $404,9 млн.Читать полностью »

Одним прекрасным утром, проснувшись от звука будильника на смартфоне, я увидел в своей ленте новостей социальной сети LinkedIn интересную заметку с забавным названием — Battery Eaters (пожиратели батареек). Сначала подумал, что это очередной пост с подборкой софта, который будет «съедать» заряд батареи вашего девайса за считанные часы. Но, открыв ссылку я увидел маленького «человечка» с руками и ногами из обычных скрепок, печатной платы в качестве туловища и светодиодными лампочками вместо глаз.

Пожиратели батареек - 1Читать полностью »

Шестая версия самой массовой и популярной операционной системы в мире Android от Google помимо ряда различных улучшений, которые подробно осветили при её анонсе и запуске, содержит как минимум одну интересную, а главное полезную опцию безопасности, о которой не рассказали широко.

Factory reset protection: новый подход к защите персональных данных в Android - 1
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js