@ProCxx

Страница 2252 из 2477
Sergey
02.08.2018
05:26:44
а вот кстати про clang-format. не знает кто утилиты, которая бы посмотрела на исходники проекта и сгенерила бы по используемому стилю файл для clang-format?
Есть онлайн-сервис для создания первичного конфига .clang-format http://clangformat.com/ дальше - прогонять на исходниках, смотреть diff и вручную доводить до желаемого иначе никак, автоматизировать генерацию clang-format в принципе трудная задача, т.к. скрипт не сможет решить противоречия в самих исходниках теоретически можно выводить общие настройки clang-format, например, по наиболее часто встречаемому стилю, но о таких проектах я не слышал

https://github.com/jbapple-cloudera/clang-format-infer
Беру свои слова назад =)

Matwey
02.08.2018
05:33:22
Я тут
Можно в ЛС задам вопрос? Тут все-равно нет других фортрановедов

Sergey
02.08.2018
05:36:22
мы очень долго сопртивлялись, но в итоге приняли что лучше неидеальный, но автоматический, чем идеальный, но руками
По той же самой причине перешли на clang-format больше года назад. Пока не полностью, т.к. кодовая база огромная и часть её изменяется прямо сейчас. Для перехода навелосипедили свой скрипт, похожий на run_clang_format - для ускорения запускает несколько экземпляров clang-format.exe одновременно (без полноценного пула воркеров, просто делит список файлов на пакеты по N элементов и один пакет обрабатывает параллельно) - использует три простых конфига inlude_dirs, exclude_dirs и exclude_files для составления списка файлов для форматирования (т.к. кодовая база не полностью автоформатируется) - исключает stdafx.h / stdafx.cpp в планах - в течении хотя бы года перевести на автоформатирование все проекты и тогда уже включить форматирование при сохранении файла в IDE В первое время при переходе было ворчание, что там стиль портится, там не так, как хочется и т.п. Т.к. я был инициатором перехода, я отвечал, что автоматически - лучше, чем руками, т.к. уже тогда clang-format исправлял больше, чем портил; кроме того, порча возникала как раз при неправильном форматировании - могли 10 строк свернуться в одну, т.к. ограничений на длину строки в нашем .clang-format нет

Google
Ilia
02.08.2018
05:36:53
ну чаще всего и пишут utc +- зона
Я только один раз в жизни работал там, где это реально надо.

Denis
02.08.2018
05:39:48
Я только один раз в жизни работал там, где это реально надо.
мы года полтора назад здорово отхватили на этом на 10летнем проекте, когда открыли вторую фабрику на весткосте. Первая была на исткосте, а авторизация была заточена под время и вперед можно было, а назад нет, поэтому из рф и исткоста все работало, а из весткоста - перестало. Было весело, с тех пор только utc или полностью заданные таймзоны

Ilya
02.08.2018
08:27:44
Ребят, можете пояснить код? Я с С++ не знаком, но нужно понять что за тип данных возвращается. Конкретно ec_compressed ec_compressed getPublicKey() { std::string mnemonic = "portion shop border uniform loan grab dismiss boss wild magnet strong supreme era swing else keep voyage forest"; data_chunk seed = to_chunk(decode_mnemonic(split(mnemonic))); hd_private privateKey = hd_private(seed, hd_private::testnet); ec_compressed compressedPublicKey = privateKey.to_public().point(); return compressedPublicKey; }

yuri
02.08.2018
08:30:43
elliptic curve, видимо.

Ilya
02.08.2018
08:30:49
это как-бы понятно, вдруг у c++ есть какие-либо свои особенности с выводом типа

нашел. typedef byte_array<ec_compressed_size> ec_compressed;

Ilya
02.08.2018
08:42:35
Это не стандартный тип данных, мы тебе не поможем,смотри в документации на твою библиотеку
да, спасибо, буквально сразу после моего поста мне удалось найти определение)) хотя до этого не гуглилось а data_chunk тоже не стандартный?

Google
Ilia
02.08.2018
08:43:53
нашел. typedef byte_array<ec_compressed_size> ec_compressed;
Ну, тут даже его typedef нестандартный... Видимо, это просто байтовое бинарное поле определенной длины, но все же до конца не понятно.

Михаил
02.08.2018
09:11:29
Доброго времени суток! Такой вопрос: правда, что в C++17 так можно? // pre C++17 ssize_t idx = names.find("3a"); if (idx != -1) { // ... } // C++17 if (ssize_t idx = names.find("3a"); idx != -1) { // ... }

Ilya
02.08.2018
09:20:34
Ещё такой вопрос static BC_CONSTEXPR size_t ec_secret_size = 32 BC_CONSTEXPR - что за спецификатор? Как в C++ эта конструкция называется?

Anatoly
02.08.2018
09:21:15
Ещё такой вопрос static BC_CONSTEXPR size_t ec_secret_size = 32 BC_CONSTEXPR - что за спецификатор? Как в C++ эта конструкция называется?
BC_CONSTEXPR - макрос, который равен либо constexpr для компиляторов его поддерживающих, либо пусто или const в противном случае

Alex
02.08.2018
09:22:03
https://github.com/libbitcoin/libbitcoin/search?p=2&q=BC_CONSTEXPR&unscoped_q=BC_CONSTEXPR - вторая страница, первый пезультат

Alex
02.08.2018
09:24:50
нет, макрос, я скинул где это посмотреть

Zhanat
02.08.2018
09:27:03
Добрый день. Рандомно сервер становится недоступным с бесконечным "Failed to accept connection\n". Подскажите пожалуйста как сбросить соединение или сделать чтобы сервер в случае этой ошибки работал дальше нормально? /* Get to work */ while (1) { /* Hold on till we can an incoming connection */ sin_len = sizeof(sin); if ((net_fd = accept(listen_fd, (struct sockaddr *) &sin, &sin_len)) < 0) { fprintf(stderr, "Failed to accept connection\n"); //Ошибка тут continue; } ... }

Михаил
02.08.2018
09:28:32
да.
Хм. Здорово. Спасибо!

Combot
02.08.2018
09:30:40
Ilya Druzhinin (0) увеличил репутацию Alex Matveev (1)

Zhanat
02.08.2018
09:36:02
Совершенно непонятно, что значит "рандомно", какую "эту" ошибку. Что в errno?
Есть несколько сот клиентов, и иногда вылетает эта ошибка. Отловить из-за кого конкретно это не представляется возможным. Топорное решение убить сервер не удобно, так как при переподключении сразу порты могут быть заняты

Zhanat
02.08.2018
09:37:07
Max
02.08.2018
09:37:34
Как узнать какая ошибка?
посмотреть что в errno

Zhanat
02.08.2018
09:39:26
посмотреть что в errno
Когда узнаю как сбросить соединение? Сервер вообще не отвечает в консоли сверху до низу эта ошибка

Google
Max
02.08.2018
09:42:29
Когда узнаю как сбросить соединение? Сервер вообще не отвечает в консоли сверху до низу эта ошибка
"Эта" — это строка "Failed to accept connection"? Выводите вместо неё strerror(errno). Смотрите man accept. Там описаны 2 десятка ошибок, каждую из них фиксить, разумеется, по своему.

Pavel
02.08.2018
10:04:16
а есть в stl стандартный способ свапнуть элемент вектора с последним и уменьшить размер вектора на один элемнт (эдакий фаст-делит без сдвига элементов)? чтобы не руками это делать каждый раз

Ilia
02.08.2018
10:09:26
Ещё такой вопрос static BC_CONSTEXPR size_t ec_secret_size = 32 BC_CONSTEXPR - что за спецификатор? Как в C++ эта конструкция называется?
Это макро, которое определяет в разных условиях компиляции разные дополнительные атрибуты , привязываемые к объявлению. Этот макрос вполне может быть вообще пустым. Ты можешь в первом приближении для понимания кода просто его игнорировать.

Pavel
02.08.2018
10:11:12
не с начала, из середины

Max
02.08.2018
10:11:50
не с начала, из середины
а, понял. Но всё равно такого нет.

Ilia
02.08.2018
10:12:22
и — в @supapro
Нененене, это не относится к языку С/С++ вообще. Не надо в СУПУ.

ed
02.08.2018
10:12:25
не с начала, из середины
pool object юзайте, не помню есть ли в stl реализация..

Ilia
02.08.2018
10:13:18
не с начала, из середины
А я посоветую deque

Pavel
02.08.2018
10:13:19
pool object юзайте, не помню есть ли в stl реализация..
мне хочется меньше кода писать, не больше :)

ну вектор все таки больше годится под задачу, удалять из него не часто, обходить часто, порядок не важен

Fedor
02.08.2018
10:17:48
std::iter_swap не подойдёт?

Max
02.08.2018
10:20:33
ну вектор все таки больше годится под задачу, удалять из него не часто, обходить часто, порядок не важен
А что там хранится? Есть уверенность, что копирование значения действительно будет эффективнее, чем memmove?

Pavel
02.08.2018
10:23:22
std::iter_swap не подойдёт?
почитаю, но по идее свап сам быстрее не сделать, тут вопрос немного в другом пока такая байда получилось, которую можно в функцию спрятать if (spawnPoints.size() > 1) { std::swap(spawnPoints[i], spawnPoints[spawnPoints.size() - 1]); } spawnPoints.pop_back();

Max
02.08.2018
10:27:44
структура с данными, такой уверенности на самом деле нет
если удалять не часто, то и городить огород не стоит, кмк. Станет узким местом — тогда и проверишь.

Google
Sergey
02.08.2018
10:50:21
народ, а счетчик ссылок в shared_ptr атомарный?

то есть, operator= атомарно увеличит счетчик ссылок или нет?

Sergey
02.08.2018
10:51:19
понял, спасибо)

Spoonson
02.08.2018
10:54:02
то есть, operator= атомарно увеличит счетчик ссылок или нет?
кажется, там все вполне атомарно. relaxed конечно, но атомарно.

Ilia
02.08.2018
10:55:07
Ну, оно может и атомарно, но что он под этим хотел узнать, вот в чём вопрос.

Обычно хотят понять, надо ли мьютексом защищать shared_ptr. Ответ -- надо. А если на вопрос "он атомарный" ответить "Да, атомарный", обычно делают вывод, что мьютексом его защищать не надо

Ilia
02.08.2018
11:05:47
Пеницилином?
Про Юникод. http://local.joelonsoftware.com/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D1%8B%D0%B9_%D0%9C%D0%B8%D0%BD%D0%B8%D0%BC%D1%83%D0%BC,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%9A%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9_%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA_%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%9E%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%9E%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE_%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D0%97%D0%BD%D0%B0%D1%82%D1%8C_%D0%BE_Unicode_%D0%B8_%D0%9D%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%85_%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2 https://habr.com/sandbox/47663/ http://www.cyberforum.ru/blogs/33029/blog5139.html Всё это по идее одна статья, я просто не знаю, где перевод лучше. и лучше бы её в оригинале читать.

Ilia
02.08.2018
11:20:36
yuri
02.08.2018
11:22:05
Я кстати написал свою реализацию tolower() на основе CaseFolding.txt из юникода.

Alexander
02.08.2018
11:35:34
тут в чате кто-то спрашивал, где почитать про оптимизации - вот что нашёл. мб полезно будет: http://llvm.org/docs/Passes.html

Nikita
02.08.2018
11:57:10
Ребят, хочу подтянуть библиотеку в проект. Она поставляется в виде .h и .so В хедере весь функционал находится в namespace foo, а мне нужно чтоб он был в namespace bar, поэтому я дописал в конце namespace bar = foo; В коде, использующий эту библиотеку, обращается к ней через bar Ошибки линковку здесь могут быть?

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

Google
Sergey
02.08.2018
12:10:23
модифицировать заголовок - так себе, но это не повлияет: bar при таком объявлении будет лишь синонимом foo, к которому привязаны символы с точки зрения линковщика ошибка вызвана чем-то другим, возможно, SO собран под другую архитектуру, стоит сравнить флаги ELF для своего бинарника без библиотеки и для библиотеки

Nikita
02.08.2018
12:21:13
Spoonson
02.08.2018
12:26:12
всегда можно сделать свой прокси-хеадер и уже там сделать переименование неймспейса, это будет как-то более правильно, чем менять библиотечный заголовочник

Nikita
02.08.2018
12:27:12
Кажется понял в чес проблема, у этой либы Android API SDK Level = 25, тогда как на проекте только 21

Nikita
02.08.2018
12:49:24
Sfinae в c++03 есть?)

Sergey
02.08.2018
12:52:16
В стандарте есть, в некоторых компиляторах нет

Max
02.08.2018
12:56:03

Страница 2252 из 2477