УМННБJ, ЯХВ. Войти !bnw Сегодня Клубы
Привет, TbI — HRWKA! 1235.0 пользователей не могут ошибаться!
?6910
прекрасное6424
говно5887
говнорашка5512
хуита4695
anime3056
linux2645
music2623
bnw2588
рашка2560
log2337
ололо2113
pic1814
дунч1734
сталирасты1488
украина1437
быдло1434
bnw_ppl1370
дыбр1237
гімно1158

Зделал швабодную фирмварь для пятибаксового вайфай-выключателя: https://github.com/l29ah/sonoff-wifi-switch-sming
#5D79ST (0+3) / @l29ah / 2667 дней назад

Question: Why do I get a very long compile error when I define more than 20 rows in the transition table?

Answer: MSM uses Boost.MPL under the hood and this is the default maximum size. Please define the following 3 macros before including any MSM headers:
```

define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS

define BOOST_MPL_LIMIT_VECTOR_SIZE 30 // or whatever you need

define BOOST_MPL_LIMIT_MAP_SIZE 30 // or whatever you need

#P1TZGU (4+2) / @ninesigns / 2703 дня назад

TIL QtConcurrent

#4J8MJ2 (0+1) / @ninesigns / 2710 дней назад
c++

*c++ *?
Boost::MSM говно или ок?

#G24DEU (0) / @ninesigns / 2714 дней назад

Создаю asio::io_service, передаю его как reference вниз классу, который на нем открывает socket.
При разрушении всей этой хуйни разрушается io_service, а потом пытается разрушиться socket и радостно вычитвает данные по освобожденной памяти.

Это буст говно или я тупой и так делать нельзя? Ведь не спроста в basic_datagram_socket в конструкторе io_service передается не по const ref, а по обычному?

==2865==ERROR: AddressSanitizer: heap-use-after-free on address 0x604000535538 at pc 0x560b6cf18d1b bp 0x7ffce4792370 sp 0x7ffce4792368
READ of size 8 at 0x604000535538 thread T0
    #0 0x560b6cf18d1a in boost::asio::detail::reactive_socket_service_base::destroy(boost::asio::detail::reactive_socket_service_base::base_implementation_type&) /usr/include/boost/asio/deta
il/impl/reactive_socket_service_base.ipp:87
    #1 0x560b6cf1f330 in boost::asio::datagram_socket_service<boost::asio::ip::udp>::destroy(boost::asio::detail::reactive_socket_service<boost::asio::ip::udp>::implementation_type&) /usr/in
clude/boost/asio/datagram_socket_service.hpp:138
    #2 0x560b6cf1f0d5 in boost::asio::basic_io_object<boost::asio::datagram_socket_service<boost::asio::ip::udp>, true>::~basic_io_object() /usr/include/boost/asio/basic_io_object.hpp:197
    #3 0x560b6cf1de95 in boost::asio::basic_socket<boost::asio::ip::udp, boost::asio::datagram_socket_service<boost::asio::ip::udp> >::~basic_socket() /usr/include/boost/asio/basic_socket.hp
p:1512
    #4 0x560b6cf1cfab in boost::asio::basic_datagram_socket<boost::asio::ip::udp, boost::asio::datagram_socket_service<boost::asio::ip::udp> >::~basic_datagram_socket() /usr/include/boost/as
io/basic_datagram_socket.hpp:43
0x604000535538 is located 40 bytes inside of 48-byte region [0x604000535510,0x604000535540)
freed by thread T0 here:
    #0 0x7fcfdc9d21f0 in operator delete(void*) (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc31f0)
    #1 0x560b6cf26daf in boost::asio::datagram_socket_service<boost::asio::ip::udp>::~datagram_socket_service() /usr/include/boost/asio/datagram_socket_service.hpp:40
    #2 0x560b6cf149fa in boost::asio::detail::service_registry::destroy(boost::asio::io_service::service*) /usr/include/boost/asio/detail/impl/service_registry.ipp:101
    #3 0x560b6cf1493a in boost::asio::detail::service_registry::~service_registry() /usr/include/boost/asio/detail/impl/service_registry.ipp:45
    #4 0x560b6cf17963 in boost::asio::io_service::~io_service() /usr/include/boost/asio/impl/io_service.ipp:53
#LFJFXK (2) / @ninesigns / 2717 дней назад
https://gist.github.com/ndtimofeev/0a6a4e04b5b0c9f3aee17bae24b78db4#file-lambda-cpp — Почему если в 48ой строке заменить явный захват указателя на сокет на & (захватывать всё по ссылке) всё 1) компилируется 2) но сегфолтится при любой попытке обратиться к переменной socket внутри лямбды? При этом, если определить socket вне лямбды вообще, то всё прекрасно захватывается по &.
#H5E0IB (2) / @ndtimofeev / 2879 дней назад
Пришлось сесть за кресты впервые за последние года два. То ощущение когда внезапно на крестах проще городить абстракции и сложнее работать с данными чем в хаскеле.
#MEL43V (6) / @ndtimofeev / 2883 дня назад
  • Ставим rtags через ``M-x package-list-pachages&#39;&#39;
  • Ставим rtags daemon
  • Для текущего проекта генерим JSON compilation datatabse cmake . -DCMAKE_EXPORT_COMPILE_COMMANDS=1
  • Если проект не на cmake, ставим bear (есть в debian).
  • Делаем bear make
  • Делаем rc -J . в каталоге с compile_commands.json

Наслаждаемся несосущей навигацией по плюсовому проекту из любимого редактора.

#9009YZ (8+1) / @ninesigns / 2905 дней назад

Вот тут кто-то [наговнил] либу для параллелизма для Rust:

let total_price = stores.par_iter()
.map(|store| store.compute_price(&list))
.sum()

Конечно мало сделать параллелизм простым, его надо сделать ещё и безопасным. Rayon гарантирует, что использование его API никогда не приведёт к гонке данных.

Мне вот интересно, неужели в rust нет способа захватить ref на Weak Box и таким образом выстрелить себе в ногу (ну или организовать race condition).

Не слишком ли громкое заявление?

Олсо, реквестирую подобных либ для плюсцов.

#12REV0 (4) / @ninesigns / 3044 дня назад
... Внезапно АНДРЕЙ увидел ВЫЧИСЛЕНИЕ ЧИСЕЛ ФИБОНАЧЧИ ВО ВРЕМЯ КОМПИЛЯЦИИ НА C++ и замер. В его уставшей, больной голове что-то щелкнуло - он нашел, что искал. Он начал читать книги по C++. Чем дальше он проникал в тайны C++, тем больше он понимал, что этот язык создан для него. Мерзкие извращения, которые он наблюдал на страницах, глубоко резонировали с его истерзанной и едко ненавидящей все светлое душой. Его глаза наливались кровью от удовольствия и слезы текли по щекам, от осознания, что на свете есть люди, не намного менее больные, чем он. АНДРЕЙ понимал, что скоро ему сделают третью лоботомию и тогда он вряд ли сможет написать книгу. Времени до третьей лоботомии оставалось немного и АНДРЕЙ решил начать писать книгу прямо сейчас. "THE TIME IS NOW, ANDREI", сказал он вслух самому себе на ломаном английском с выблядски кривым акцентом и начал писать. Вначале он не знал, в чем суть того, что он пишет. Но со временем картина стала ясной как день. АНДРЕЙ взял самый гнилой, уродский и омерзительный язык программирования и решил довести его до уровня сумасшествия, до сих пор невиданного в мире людей. Первый (и последний) технический рецензент его книги, сошел с ума и убил всю свою семью, после прочтения нескольких глав. Узнав об этом АНДРЕЙ смеялся, пока не потерял сознание. АНДРЕЙ понимал, что все идет как надо. Сразу после того, как он дописал последнюю главу, ему сделали последнюю лоботомию и писать книги ему больше не хотелось. Представители издателя взяли книгу АНДРЕЯ и, согласившись ее издать, спросили у него, как бы он хотел ее назвать. На ломаном, кривом английском он ответил: "MODERN C++ DESIGN: GENERIC PROGRAMMING AND DESIGN PATTERNS APPLIED BY ANDREI ALEXANDRESCU". Его акцент был настолько уебищен, что представители издателя начали ржать, с такой силой, что моча начала струиться по их ногам. Но, слишком поздно они поняли, что это была моча АНДРЕЯ...
#9A9C8F (4+5) / @j123123 / 3058 дней назад
http://www.govnokod.ru/19105 похоже что я изобрел особый стиль говнопрограммирования. Комментарии эпичные, знатно я посрался там с одним типом на тему хуевости C++ шаблонов и constexpr
#RBGV9Q (5) / @j123123 / 3073 дня назад

Между json и boost::serialization выбрал glib-овский GVariant.
Такие дела.

#0B1ET7 (20) / @ninesigns / 3113 дней назад

Хочу анафорический if, который бы делал коньюнкция между операндами и возвращал первый сфейлившийся, плюс который бы анафорично захватывал все значения из операндов

Вот, например:

bool result =
  a_if_and<boost::variant<T>,  boost::none> (
    {msg.getString(v[1]), msg.getString(v[2]), msg.getString(v[3]), msg.getString(v[4])},

  // at least one operand == boost::none
  [&](unisgned int first_null, const std::tuple<boost::variant<T>, boost::variant<T>, ...> &evalValues) { 
    std::cerr << "value " << first_null "is bad" << std::endl;
    return false;
  },

  // otherwise                                                  
  [&](const std::tuple<boost::variant<T>, boost::variant<T>, ...> &evalValues) {
    std::cout << "value 0 =" << evalValues.get(0).get<T> << std::endl;
    std::cout << "value 1 =" << evalValues.get(1).get<T> << std::endl;
    // ...
    return true;
  });

То есть, a_if_end eval-ит аргументы и каждый на неравенство boost::none.
И в зависимости от этого дергает мою лямбдочку.
Что есть чо похожее? Или я слишком охуел?

#LUCOP3 (52) / @ninesigns / 3115 дней назад

Пожрал говна с boost::serialization
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): unregistered void cast 11MediaSetMsg<-20IndicationMsgPayload

Есть чо полущ чтобы перекинуть структурку со строками между двумя процессами?

#RVSAUR (6) / @ninesigns / 3116 дней назад
? c++

Плюсбоги, спалите когда pimpl идиом не подходит?
(кроме очевидных кейсов когда прибавляет а не уменьшает сложность)

#UKWEQY (6) / @ninesigns / 3128 дней назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.