@ProCxx

Страница 1237 из 2477
Alexander
24.08.2017
17:40:02
есть реализация через стандартный enum class действия, но она не может быть снаружи кастомизирована, да
кроме коллбэка ты тут ничего не придумаешь. Я серьёзно. Если нужно действие ВНУТРИ функции, которое ты можешь передать извне, то не выдумывай ничего, что уже до тебя придумано

Constantine
24.08.2017
17:40:02
у меня кроме одной функции еще иерархия

Ioann V
24.08.2017
17:40:03
Читается полностью
Вроде как блрками читать быстрее выйдет.

Google
Ioann V
24.08.2017
17:40:17
Но могу и соврать. У hdd тоже кеш есть.

Alexander
24.08.2017
17:40:23
немного наркомания получается
не сказал бы. Зато защита есть, которую ты хочешь)

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

Ioann V
24.08.2017
17:41:15
ох я бы не был так уверен, что будет быстрее.
Я тоже не уверен. Но вроде как все возможно.

Constantine
24.08.2017
17:41:20
Для потоковых операций отдельные сущности

Alexander
24.08.2017
17:41:23
Я тоже не уверен. Но вроде как все возможно.
дай работу по ускорению чтения в угоду файловой системе

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

Alexander
24.08.2017
17:42:40
а пока что у него совсем другая задача

Constantine
24.08.2017
17:42:52
На самом деле, stream-режим это полностью отдельная тема

Google
Constantine
24.08.2017
17:42:52
Эта штука возникает когда надо просто прочитать файл, и 146% его можно последовательно в память уложить

Berkus
24.08.2017
17:43:47
но зачем там бросать исключение если можно вернуть result? который 100% надо будет обработать

если ты уж так беспокоишься что его не обработают

Result<T,E> кодится за 15 минут с нуля если лень брать готовое

Nik
24.08.2017
17:45:28
Я мимокрокодил, но есть же std::variant, он не подойдет?

Berkus
24.08.2017
17:45:40
неа

Constantine
24.08.2017
17:46:33
дай работу по ускорению чтения в угоду файловой системе
ну у меня на самом деле реализация через чтение мегабайтными блоками, но не суть

пользователю этой функции совершенно точно не нужен стрим-режим

хм... интересно, насколько упоротой будет иерархия коллбеков с подстановками поведения по умолчанию

но зачем там бросать исключение если можно вернуть result? который 100% надо будет обработать
наоборот, как правило исключение не обработают, потому что пустой файл - достаточная индикация ошибки уже

например, потом этот файл прочитают как utf-8 и пихнут в xml parser, который сообщит что инпут не xml

Berkus
24.08.2017
17:47:44
прости, я не понимаю что ты пишешь. слова по отдельности вроде бы понятные - а все вместе полная фигня

что значит исключение не обработают потому что файл пустой?

если файл пустой не будет исключения? или что?

Constantine
24.08.2017
17:48:37
прости, я не понимаю что ты пишешь. слова по отдельности вроде бы понятные - а все вместе полная фигня
вместе: как правило, пустой вектор возврата уже достаточная ошибка, поэтому вызывающий не хочет различать случаи ошибки чтения и чтения пустого файла

Berkus
24.08.2017
17:48:43
тогда расскажи в каких именно случаях ты бросаешь исключения а в каких - нет

чтение пустого файла, очевидно, не ошибка

Constantine
24.08.2017
17:49:21
"как правило" означает, что не всегда

Berkus
24.08.2017
17:49:23
но с result это поведение легко сделать ошибкой

смотри

Google
Berkus
24.08.2017
17:49:54
auto content = readFile("file_may_be_empty.txt").fail_on_empty("This file is empty");

Constantine
24.08.2017
17:52:34
я бы хотел, чтобы было auto content = readFile("file.bin"); static_assert(std::is_same<decltype(content), std::vector<uint8_t>>::value, "");

Azoyan
24.08.2017
17:53:30
В компайл тайме файл прочитать?

Alexander
24.08.2017
17:53:39
ЯННП

Berkus
24.08.2017
17:53:40
Alexander
24.08.2017
17:54:03
В компайл тайме файл прочитать?
сразу всё сделать в компайл-тайм ???

Azoyan
24.08.2017
17:54:04
ну а почему нет
Ну это странно

Constantine
24.08.2017
17:54:07
нет, это пример, что не нужно заменять возвращаемое значение readFile

Alexander
24.08.2017
17:54:19
Ну это странно
да не, ты шо) всё окей)

Berkus
24.08.2017
17:54:22
не вижу причины НЕ заменять возвращаемое значение readFile если так будет удобнее

Antony
24.08.2017
17:54:48
ну а почему нет
Есть такой proposal http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0373r0.pdf The content of datafile.txt: The quick brown fox jumps over the lazy dog. The content of main.cc: #include <iostream> int main() { std::cout << tF”datafile.txt”; } The program outputs: The quick brown fox jumps over the lazy dog.

Azoyan
24.08.2017
17:54:51
да не, ты шо) всё окей)
Ну давай ещё в сокеты читать/писать в компайл тайме.

Berkus
24.08.2017
17:55:15
Ну давай ещё в сокеты читать/писать в компайл тайме.
ну а что, compile-time http server! запускаешь gcc и он реквесты обрабатывает

Azoyan
24.08.2017
17:55:27
Во во

Constantine
24.08.2017
17:55:38
xy-problem?
Смотри. 90% пользователей считают, что пустой файл является ошибкой и обработают её в любом случае. И им совершенно не сдалось выяснять, что же на самом деле пошло не так у функции readFile

Azoyan
24.08.2017
17:56:00
У вас вместо программы эти же действия будет делать компилятор, но зачем?

Berkus
24.08.2017
17:56:01
100% пользователей получат от readFile Result<T,E> и несколько функций как его обрабатывать: - похуй пляшем .unwrap() - дефолтно .expect("Failed to read") - непустое .fail_on_empty("File is empty - string may be optional")

Все эти функции либо возвращают T либо падают или бросают эксепшены разной степени тяжести

Google
Azoyan
24.08.2017
17:58:36
А нельзя проще readFile("name", error_code)

Constantine
24.08.2017
17:59:03
Berkus
24.08.2017
17:59:08
А нельзя проще readFile("name", error_code)
а потом (void)error_code; чтобы не было варнинга про неиспользованную переменную ага

не напишут - конпелятор напомнит

Azoyan
24.08.2017
18:00:07
readFile(const string& name, ErrorCode& errcode)

Constantine
24.08.2017
18:00:23
не умрут, напишут
50 раз, из них 40 раз будет unwrap и игнорирование результата

Berkus
24.08.2017
18:00:52
50 раз, из них 40 раз будет unwrap и игнорирование результата
вообще дефолтный unwrap() делает PANIC("WOOPS") если в резалте пришел Err

Constantine
24.08.2017
18:01:17
вообще дефолтный unwrap() делает PANIC("WOOPS") если в резалте пришел Err
Еще хуже, надо было просто отдать пустой массив

Berkus
24.08.2017
18:01:24
назови правильно .ignore() или как-то так и сразу будет видно кто и где игнорирует

Admin
ERROR: S client not available

Constantine
24.08.2017
18:01:35
ну окай, .ignore

Berkus
24.08.2017
18:01:38
с дизайном у тебя явно проблемы

Constantine
24.08.2017
18:01:44
?

Alexander
24.08.2017
18:01:54
ну так если пользователь спецаильно игнорит, то ССЗБ

Constantine
24.08.2017
18:02:19
зачем мне специализировать ошибку чтения файла, если я все равно не смогу вытащить ее наверх пользователю программы

Azoyan
24.08.2017
18:02:24
Я не очень понял, а что код ошибки нельзя пробросить?

Ioann V
24.08.2017
18:03:36
сразу всё сделать в компайл-тайм ???
Можно бы(просто нету средств), почему нет ? Только работать это будет только там где компилировалось

Alexander
24.08.2017
18:04:44
Можно бы(просто нету средств), почему нет ? Только работать это будет только там где компилировалось
потому что вместо занятий хернёй нужно заниматься правильными вещами. Надо уметь расставлять приоритеты правильно

Google
Alexander
24.08.2017
18:04:57
а всякие странные фичи пусть пилят где-нибудь в другом месте

Azoyan
24.08.2017
18:05:21
int a[] = { #include array.txt.h }

Ioann V
24.08.2017
18:05:26
Ну это сарказм был. Просто я когда то давно думал, а почему CT нельзя узнать количество потоков на машине...

Constantine
24.08.2017
18:06:53
ты вообще знаком, что такое Result<T,V>?
Я полагаю, что речь идет о возврате "значение либо исключение"

Alexander
24.08.2017
18:07:06
просто сложлно будет что-то дальше обсуждать без понимания этой штуки.

Так точно

Constantine
24.08.2017
18:07:46
смотри, например, дальше будет вызов loadStringDecode() и поедет сигнатура loadString

Alexander
24.08.2017
18:07:53
он говорит тебе переделать сигнатуру функции под это дело. Но ты, как я понял, делать этого не хочешь, потому что не понимаешь, нах надо

Constantine
24.08.2017
18:08:19
Я не понимаю, нах мне переделывать сигнатуру функции под обязательную обработку ошибки

Если я как раз хочу этого избежать :)

Alexander
24.08.2017
18:09:23
Если я как раз хочу этого избежать :)
так, ещё раз. Какого ты хочешь добиться результат в итоге?

Constantine
24.08.2017
18:09:51
Я хочу кастомизировать поведение функции при ошибке (это нужно в 10% случаев)

Constantine
24.08.2017
18:10:58
Azoyan
24.08.2017
18:11:17
Ээ

Berkus
24.08.2017
18:11:20
не парьтесь, он сам разберется

сделает хуевый велосипед и успокоится

зато все 100мб клиентов будут довольны

Constantine
24.08.2017
18:11:58
ну ладно, со 100 я перегнул, вроде) там что-то вроде 500к строк

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