@ProCxx

Страница 1226 из 2477
Alexander
19.08.2017
11:19:31
Шланг в pdb научился выводить

Ioann V
19.08.2017
11:24:46
да, хорошо. Потому что чувствую, что немного сумбурно вышло. Внимание, длиннопост. Итак, для чего это нужно. Обычная либа с CSV форматом. Почему не взял готовое? Потому что всё, что я нашёл готовое - говно. Это один из немногих случаев, когда приходится садиться за написание своего качественного велосипеда и доведения его до ума. В чём суть либы (конкретно сейчас мы говорим только про часть либы, но не суть): есть класс для записи DSV-like файлов. DSV-like - это CSV, TSV, SCSV и так далее - что придумаете похожее, то и будет писать. Что мы можем в аднном случае конфигурировать? О, список довольно большой: - Символ(строка)-разделитель - Символ(строка)-кавычка - Символ(строка) конца линии - Символ(строка) комментария - Символ(строка) для тримминга - Policy для выставления кавычек (то есть как ставим кавычки: всегда или только на те поле, которые без кавычек нельзя выводить. А может быть только на не числовые значения? простор для фанатзии велик) - Policy для тримминга (триммим всё в строке, или только начало, или только конец. Или вообще не тримим) И это вроде как не всё (я скорее всего что-то забыл). Почему так много? Потмоу что я пишу велосипеды обощённые и не хочу, чтобы кому-то пришлось ещё раз писать всю эту дрянь. Итак, у нас есть столько параметров, и нам нужно как-то запихнуть их в класс Writer. Окей, как? На ум приходит нескольно вариантов: 1) template <typename Delimiter, typename Quote, ...> class Writer{bla-bla-bla}; Какая здесь проблема? Всё очень просто - Вы не сможете передать сами символы сепараторы, кавычки и так далее через параметры шаблона, вы только можете указать их типы. А сами символы вам придётся передавать уже в конструкторе, сохранять их внутри класса и работать с ними. Выглядеть это будет вот так: Writer<char,char> writer(',', '"'); К тому же, если Вы хотите предоставить пользователю уже готовый класс для работы с тем же TSV (а в TSV в качестве сепаратора используется \t, то у вас не получится обьявить такой ТИП (так как мы не можем символы пихать в тип, потому что у нас везде typename, а не char,int,etc.)). Нам придётся давать пользователю уже готовые ОБЬЕКТЫ для работы с этим, чего делать бы очень не хотелось (так как нам же надо тогда давать интерфейс допольнительный для установки выходного потока, так как обьект уже есть). ДА и вообще, готовый обьект - дерьмо. Пользователь должен сам создать Writer тогда, когда ОН хочет, а не я. А я должен дать ему макисльно удобные средства для этого. Вариант мне нравится. 2) template <char Delimiter, char Quote, ...> class Writer{bla-bla-bla}; Сразу отметаем, так как мы тут привязываемся к типам, которые я задам. А если пользователь захочет wchar_t или ещё какую-нибудь свою штуку, которая будет нормально выводится? Сразу отметаем. 3) Улучшение первого варианта через трейты template <typename Dialect> class Writer{bla-bla-bla}; Всё остаётся по аналогии с первым пунктом, только теперь у нас есть набор предефайненых трейтов для разных случаев жизни: TSV, CSV, SCSV, что-нибудь ещё (трейты эти я дам пользователю сам). Если пользователю не понравится, он всегда сам сможет сделать свой трейт и подпихнуть его в мой Writer. (вот пример, как это примерно будет выглядеть: https://pastebin.com/ETfS7r4K) Проблема в том, что снова же обьекты уже трейта будут предефайнены, потому что снова же мы внутренности их инициализируем не в типе шаблона, а уже в конструкторе (подпихиваем, что там за символы внутри будут) Мне этот вариант нравится больше всего. Что скажете?
Ха, из всего описанного выше, складывается впечатление, что самым нормальным вариантом, было бы использование не объекта, а его интерфейса - при том, статического(ну т е статик функции члены и т.п

Ну третий вариант хороший. По крайней мере я его много где использую.

Вместо готовых объектов можно помакросить :) qDebug так какжется как то делает

Google
Constantine
19.08.2017
13:09:20
ващет второй вариант выглядит как дерьмо
Автоматический аутпут должен быть во второй формат всегда. Там под CDATA еще, чтобы вообще не париться вплоть до символов меньше 32. И речь о хуман инпуте xml, там чуть удобнее JSONa

Ioann V
20.08.2017
13:56:54
Фиу-фить, все времени суток доброго. Вопрос такой, а у QVariant, метод value возвращает объект по значению, а можно ли как то ссылочку на него получить и не бояться, что объект будет разрушен ? Или указателями только :(?

Stanislav
20.08.2017
14:05:32
хм, зачем так?

Square
20.08.2017
14:06:00
хм, зачем так?
Спасибо. А то меня тоже мучал вопрос что аж в гугол полез (

Ioann V
20.08.2017
14:09:03
хм, зачем так?
Да, копировать не хотелось бы, ну как, у меня получается что есть QModelIndex, и добавляются итемы в Виджет, с помощью делегата. В делегате у меня разная инфа хоронится, типа всяких отступов для рисовки и т.п. Получается, что каждый новый итем добавляет копирование, хотя мне то просто нужны значения нужных переменных, вот и все

Evgeniy
20.08.2017
14:16:35
Return-address protection https://marc.info/?l=openbsd-tech&m=150317547021396&w=2

Ioann V
20.08.2017
14:17:52
Много текста, покороче не выйдет :D?

Evgeniy
20.08.2017
14:19:45
Много текста, покороче не выйдет :D?
можешь диффы не читить)

Ioann V
20.08.2017
15:04:01
Stop. А при копировании qvariant - данные копируются или там счетчик ссылок и все такое :?

fox.cpp
20.08.2017
15:06:41
судя по документации копируются

Ioann V
20.08.2017
15:08:00
Тогда действительно не просто плохо, а очень плохо. Ну а чо, в событии paint вызывается копирование....

Google
Surreal
20.08.2017
15:13:32
А сам qvariant нельзя передать по ссылке и получить value уже внутри функции?

Ioann V
20.08.2017
15:15:40
Ды там вот функция есть типа data(), она и возвращает QVariant. Функция эта не моя, а кутешная.

судя по документации копируются
А то что это Impl. Sharing ? http://qtdocs.narod.ru/4.1.0/doc/html/shclass.html

Scarf
20.08.2017
15:48:11
FYI Читай офф доки лучше

Ioann V
20.08.2017
16:01:17
А если строки impl sharing, то почему у них адреса не совпадают ? У данных т.e ?

George
20.08.2017
16:07:39
Приведи пример кода чтобы не гадали.

Ioann V
20.08.2017
16:10:56
` const QVariant a(100); const QVariant b = a; qDebug() << a.constData(); qDebug() << b.constData();`

То есть по идиоме шейринга, мы имеем две константы, вызова к неконстантным методам не происходит, но адреса разные ....

Berkus
20.08.2017
16:22:52
сорцы Qt доступны кстати, можно там посмотреть внутре

буквально три файла

Ioann V
20.08.2017
16:35:35
Та я сделаю проще - просто прогоню стресс тестирование. Если ркажется что, : А - приложение после запуска ест много памяти или Б - тормозит Ui, то я - нахрен сношу кьюти, поливаю говном его разработчиков, ну и как следствие все холивары о крутости кути буду тоже завершать одной фразой.

Gleb
20.08.2017
16:37:23
Что делать когда нужно проверить есть ли элемент в файле который больше оперативной памяти В файле каждая строка это один элемент, причем они упорядочены

Ioann V
20.08.2017
16:37:30
Для меня это очень круто, когда ядро, математика и все расчеты написаны не только быстро в reference коде, ну еще и юзают avx, opencl, vulkan и т.п что ускоряет его до космических скоростей, а Ui глючный и тормозной.... А все почему :? А потому что Ваня решил использовать кути

Ioann V
20.08.2017
16:40:50
Ну, тоже вариант, но, ты когда либо смотрел сколько у тебя кушает скайп :? А он вроде как на кути :)

Berkus
20.08.2017
16:41:09
на куте был только линуковый и кушал он вообще не из-за ui

Ioann V
20.08.2017
16:44:25
Буду иметь ввиду. Но, заметьте - я за ним не слежу особо, но было время когда читал / следил

Berkus
20.08.2017
16:44:46
напугал

Google
Ilya
20.08.2017
16:46:12
Что делать когда нужно проверить есть ли элемент в файле который больше оперативной памяти В файле каждая строка это один элемент, причем они упорядочены
Сделать файл который представляет собой структуру хашмапа в памяти, сделать mmap и искать по хашмапу с файловой системой в качестве бекенда. Другие варианты индексации в памяти. Засунуть данные в бд. Вобщем много вариантов.

Ioann V
20.08.2017
16:47:49
напугал
Беркус, братан - охлади свой пыл, ну чо ты как это самое ...

Berkus
20.08.2017
16:48:45
Беркус, братан - охлади свой пыл, ну чо ты как это самое ...
я тебе не братан, если это было сразу не очевидно

Ioann V
20.08.2017
16:49:20
Слушай, я выше попросил - сделать не сложно, мне кажется.

Berkus
20.08.2017
16:54:26
Слушай, я выше попросил - сделать не сложно, мне кажется.
кто тут подгорает, так это, непонятно почему - ты. я тебе просто написал, что раз уж ты следишь за скайпом, они наверное все очень испуганы и боятся

Ioann V
20.08.2017
16:56:29
Да. Я неверно интерпретировал твои слова, мне не сложно извиниться :) так что так ;)

Vladislav
20.08.2017
18:49:54
все, американца вжухнули?

Vladislav
20.08.2017
18:50:44
да был тут один, флудил по-басурмански

Alex Фэils?︙
20.08.2017
19:35:21
да, хорошо. Потому что чувствую, что немного сумбурно вышло. Внимание, длиннопост. Итак, для чего это нужно. Обычная либа с CSV форматом. Почему не взял готовое? Потому что всё, что я нашёл готовое - говно. Это один из немногих случаев, когда приходится садиться за написание своего качественного велосипеда и доведения его до ума. В чём суть либы (конкретно сейчас мы говорим только про часть либы, но не суть): есть класс для записи DSV-like файлов. DSV-like - это CSV, TSV, SCSV и так далее - что придумаете похожее, то и будет писать. Что мы можем в аднном случае конфигурировать? О, список довольно большой: - Символ(строка)-разделитель - Символ(строка)-кавычка - Символ(строка) конца линии - Символ(строка) комментария - Символ(строка) для тримминга - Policy для выставления кавычек (то есть как ставим кавычки: всегда или только на те поле, которые без кавычек нельзя выводить. А может быть только на не числовые значения? простор для фанатзии велик) - Policy для тримминга (триммим всё в строке, или только начало, или только конец. Или вообще не тримим) И это вроде как не всё (я скорее всего что-то забыл). Почему так много? Потмоу что я пишу велосипеды обощённые и не хочу, чтобы кому-то пришлось ещё раз писать всю эту дрянь. Итак, у нас есть столько параметров, и нам нужно как-то запихнуть их в класс Writer. Окей, как? На ум приходит нескольно вариантов: 1) template <typename Delimiter, typename Quote, ...> class Writer{bla-bla-bla}; Какая здесь проблема? Всё очень просто - Вы не сможете передать сами символы сепараторы, кавычки и так далее через параметры шаблона, вы только можете указать их типы. А сами символы вам придётся передавать уже в конструкторе, сохранять их внутри класса и работать с ними. Выглядеть это будет вот так: Writer<char,char> writer(',', '"'); К тому же, если Вы хотите предоставить пользователю уже готовый класс для работы с тем же TSV (а в TSV в качестве сепаратора используется \t, то у вас не получится обьявить такой ТИП (так как мы не можем символы пихать в тип, потому что у нас везде typename, а не char,int,etc.)). Нам придётся давать пользователю уже готовые ОБЬЕКТЫ для работы с этим, чего делать бы очень не хотелось (так как нам же надо тогда давать интерфейс допольнительный для установки выходного потока, так как обьект уже есть). ДА и вообще, готовый обьект - дерьмо. Пользователь должен сам создать Writer тогда, когда ОН хочет, а не я. А я должен дать ему макисльно удобные средства для этого. Вариант мне нравится. 2) template <char Delimiter, char Quote, ...> class Writer{bla-bla-bla}; Сразу отметаем, так как мы тут привязываемся к типам, которые я задам. А если пользователь захочет wchar_t или ещё какую-нибудь свою штуку, которая будет нормально выводится? Сразу отметаем. 3) Улучшение первого варианта через трейты template <typename Dialect> class Writer{bla-bla-bla}; Всё остаётся по аналогии с первым пунктом, только теперь у нас есть набор предефайненых трейтов для разных случаев жизни: TSV, CSV, SCSV, что-нибудь ещё (трейты эти я дам пользователю сам). Если пользователю не понравится, он всегда сам сможет сделать свой трейт и подпихнуть его в мой Writer. (вот пример, как это примерно будет выглядеть: https://pastebin.com/ETfS7r4K) Проблема в том, что снова же обьекты уже трейта будут предефайнены, потому что снова же мы внутренности их инициализируем не в типе шаблона, а уже в конструкторе (подпихиваем, что там за символы внутри будут) Мне этот вариант нравится больше всего. Что скажете?
а чем тебе дизайн template <typename char_type, char_type Delim, /*... */> не нравится?:

Admin
ERROR: S client not available

Evgeniy
20.08.2017
19:36:30
Alex Фэils?︙
20.08.2017
19:36:50
а вон же я написал typename char_type

Evgeniy
20.08.2017
19:37:41
Tema
20.08.2017
20:02:26
кик нахуй

ой извините

Scarf
20.08.2017
20:03:45
Tema
20.08.2017
20:04:21
/warn
он просто добавился во все групы и молчит

што ты на меня кидаешся

Dmitry
20.08.2017
20:04:47
может покурить вышел человек. а вы тут уже его линчевали

Google
Дед Пегас
20.08.2017
20:04:52
Что у вас тут?

Dmitry
20.08.2017
20:05:24
ну в других уже

Tema
20.08.2017
20:05:29
Что у вас тут?
пока всё нормъ

Alex Фэils?︙
20.08.2017
20:23:33
ну в других уже
чо, где-то уже насрал?

Dmitry
20.08.2017
20:23:52
Я не видел

Alex Фэils?︙
20.08.2017
20:24:11
репортите мне, если что

Tema
20.08.2017
20:30:15
я не видел пока

Anton
20.08.2017
20:49:33
Hello

Alex Фэils?︙
20.08.2017
20:49:53
привет. просьба не флудить тут стикерами

Anton
20.08.2017
20:50:07
Okey

Roman
20.08.2017
22:32:45
Всех приветствую, тут исполнителя под задачу можно попробовать поискать или не феншуй?

Square
20.08.2017
22:39:35
Всех приветствую, тут исполнителя под задачу можно попробовать поискать или не феншуй?
Ну вообще по вакансиям в описании чята написано чо делать. Но если прям разовая задача и она лежит в рамках правового поля - кидайте толковое описание

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