Russian Qt Forum
Май 10, 2024, 23:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 4 5 [6] 7   Вниз
  Печать  
Автор Тема: Разбор QString  (Прочитано 60959 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #75 : Июль 05, 2013, 13:31 »

Но этот код никак не делает того что просили, каычки ему пофиг.
Ну так добавьте. Я вам показал, как это элементарно делается в бусте и какой там порог вхождения/выхождения. Улыбающийся

Вы можете считать что угодно, но мы говорим о дальнейшей поддержке написанного Вами кода. Вот Вы написали, др люди этим пользуются, работает. Хирак - на этой строке (см выше) ошибка. А Вас нет - ушились гулять с собачкой  Улыбающийся
Точно-точно. Вы написали на Qt GUI и ушли гулять с собачкой, а тут хирак ошибка... Что делать, нужен человек знающий Qt.  Смеющийся

Да, ну и не понял, в чем же величие буста (в данном случае)? Я так вижу что мы опять городим тот же самый велосипед, весь анализ баланса все равно на нас. С той лишь разницей что встроили его в бустовский функтор. Смысл? Так, попеть дифирамбы великому бусту, "приобщиться", пофорсить?  Улыбающийся
А ваш парсер умеет парсить QByteArray или QLatin1String, а QVector или скажем std::vector? Нет?
Печально, а мой умеет и я ничего для этого не делал.

Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #76 : Июль 05, 2013, 14:16 »

Цитировать
Вы можете считать что угодно, но мы говорим о дальнейшей поддержке написанного Вами кода. Вот Вы написали, др люди этим пользуются, работает. Хирак - на этой строке (см выше) ошибка. А Вас нет - ушились гулять с собачкой  Улыбающийся
Опять это пугающее упоминание об "ошибке".. Алгоритм, которой я привёл чётко регламентирует область своего применения и соответствующие правила игры. Любой нормальный (адекватный) пользователь не будет пытаться использовать инструмент не по назначению. Если уж встанет необходимость в приорететах, то функционал может быть легко расширен.

Как это сделать: Old приводил пример выше, наглядно демонстрирующий как это можно реализовать.

Цитировать
Да, ну и не понял, в чем же величие буста (в данном случае)? Я так вижу что мы опять городим тот же самый велосипед, весь анализ баланса все равно на нас. С той лишь разницей что встроили его в бустовский функтор. Смысл? Так, попеть дифирамбы великому бусту, "приобщиться", пофорсить?

Если вы не видите очевидных преимуществ архитектурного решения boost::tokenizer, то дальнейшее обсуждение, боюсь, как всегда просто перейдёт во влуд..   
В чём преимущество Вашей архитектурной реализации? М?)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Bepec
Гость
« Ответ #77 : Июль 05, 2013, 14:36 »

Извините дяди, я опять вмешаюсь Улыбающийся

Пользование бустом - хорошо.
Пользование отлаженным классом токенизер - хорошо.
Возможности этого класса - широки - хорошо.

То, что всем использующим этот код для "правки под себя"/"доработки" нужно будет знать буст - плохо.
То, что это решение не очевидно человеку, не пользующемуся бусту - плохо.
То, что код на деле несамодокументируемый - плохо.

Это различные точки мнения.

Кому то нужно взаимодействие с коллегами, кому то нет.

Кому то проще и быстрее написать свой велосипед под эту ситуацию (допустим с исключениями каких либо строк или сочетаний), чем подстраивать это решение под себя.

Кому то проще взять regexp и двумя регэкспами сделать всё то же самое.

PS не ссорьтесь Веселый

PPS и вообще парсинг строк - неблагодарное занятие Веселый
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #78 : Июль 05, 2013, 14:48 »

Это различные точки мнения.
Так никто и не навязывает... Улыбающийся
Спор идет о том, что в качестве аргументов не применять буст используются субъективные страхи, которые выдаются за объективную реальность. Улыбающийся
« Последнее редактирование: Июль 05, 2013, 14:50 от Old » Записан
Bepec
Гость
« Ответ #79 : Июль 05, 2013, 14:49 »

Тогда сделайте решения и сравнивайте. А то так скоро во флуд тему.

Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #80 : Июль 05, 2013, 14:51 »

Тогда сделайте решения и сравнивайте. А то так скоро во флуд тему.
Я сомневаюсь, что решение Igors когда то будет уметь работать со всем, что имеет итераторы. Улыбающийся
Точнее, тогда получиться решение из буста. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #81 : Июль 05, 2013, 15:19 »

Алгоритм, которой я привёл чётко регламентирует область своего применения и соответствующие правила игры. Любой нормальный (адекватный) пользователь не будет пытаться использовать инструмент не по назначению.
Если человек хочет чтобы кавычки экранировали скобки - по-моему он совершенно нормальный Улыбающийся А вот если реализация не обеспечивает такой возможности - это халтура, и неважно на дусте или на чем.

Как это сделать: Old приводил пример выше, наглядно демонстрирующий как это можно реализовать.
Не вижу никаких кавычек в приведенном примере, да и скобки почему-то hard-coded

Если вы не видите очевидных преимуществ архитектурного решения boost::tokenizer,
А Вам не кажется что Вы не задачу решаете, а расширяете свои познания? Эти вещи частенько мешают друг другу. Силенка ушла на вникание в хитросплетения темплейтов, а на реальные потребности пользователя - ничего не осталось. А когда пользователи или коллеги просят доделать - начинается виляние, ссылки на "архитектуру", "вы не понимаете" и.т.п. Таких знатоков/эрудитов лучше обходить стороной.

Точнее, тогда получиться решение из буста. Улыбающийся
Ну как мы уже убедились - никакого готового решения (типа бери-пользуйся) для данного случая в бусте нет. Есть только уверения что, дескать, "это легко/элементарно добавить" - но почему-то реально показывается только парность скобок (да и то неправильная)
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #82 : Июль 05, 2013, 15:28 »

Не вижу никаких кавычек в приведенном примере, да и скобки почему-то hard-coded
Нуу, это ограничения языка, тут ничего нельзя поделать.  Смеющийся

Таких знатоков/эрудитов лучше обходить стороной.
А заказчикам лучше обходить таких неумех программистов, которые за его деньги выдумывают велосипеды, вместо решения его задач.
Что будет если завтра, заказчик попросит сделать программу конвертации одно формата в другой без Qt (!) - вы напишите новый парсер? Улыбающийся

Ну как мы уже убедились - никакого готового решения (типа бери-пользуйся) для данного случая в бусте нет. Есть только уверения что, дескать, "это легко/элементарно добавить" - но почему-то реально показывается только парность скобок (да и то неправильная)
Повторяю, это ограничения языка C++, тут ничего нельзя поделать. Улыбающийся
« Последнее редактирование: Июль 05, 2013, 15:52 от Old » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #83 : Июль 05, 2013, 15:56 »

Цитировать
Если человек хочет чтобы кавычки экранировали скобки - по-моему он совершенно нормальный. А вот если реализация не обеспечивает такой возможности - это халтура, и неважно на дусте или на чем.
Я и не подвергаю сомнению нормальность человека, который хочет кавычки..
Ненормальный это тот, кто возмущается почему фотоаппаратом так неудобно открывать бутылки из под пива)

А почему ваша реализация не обеспечивает разбиение на токены по алгоритму подобному boost::offset_separator? Или, например я хочу выдерать токены заключённые в цитаты:
Код
C++ (Qt)
" (text1), бла бла бла {text2, text3}, ,, dsdfd (text4)"
 
 
хочу чтобы на выходе было:
Код
Bash
text1
text2, text3
text4
 
вы ведь не будете считать меня ненормальным из-за моих желаний? Почему же Вы не обеспечили в своём парсере такой возможности?
Это чистой воды - Халтура, Халтура с большой буквы Х)


Цитировать
А Вам не кажется что Вы не задачу решаете, а расширяете свои познания? Эти вещи частенько мешают друг другу. Силенка ушла на вникание в хитросплетения темплейтов, а на реальные потребности пользователя - ничего не осталось. А когда пользователи или коллеги просят доделать - начинается виляние, ссылки на "архитектуру", "вы не понимаете" и.т.п. Таких знатоков/эрудитов лучше обходить стороной.
Одно другому не мешает) Я решаю конкретную задачу и плюс ко всему расширяю свои познания) И это хорошо)
Никакого хитросплетения темплейтов я не вижу, вы как всегда драматизируете)
И да, как правильно заметил Old
Цитировать
А заказчикам лучше обходить таких неумех программистов, которые за его деньги выдумывают велосипеды, вместо решения его задач.





 
« Последнее редактирование: Июль 05, 2013, 15:58 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Bepec
Гость
« Ответ #84 : Июль 05, 2013, 16:26 »

И да, как правильно заметил Old

Не согласен. И по секрету скажу, что заказчику пофиг, как это будет сделано. Главное чтобы работало и не вылетало.

Когда я не был знаком с сериализацией, я сделал сохранение-загрузку данных тупо через файл строками. На это у меня ушло примерно минут 15.

Позже я сел и изучил s11n. На это у меня ушло примерно 4 дня.

Вот и посчитайте, господа "буст наше всё"/"нет велосипедам", разницу  между 15 минутами и 4 днями.  И мой велосипед есть и будет понятен всем с самым низким порогом. Отчасти из-за простоты, отчасти из-за комментариев.

PS скатились уже и в старый знакомый срач :/
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #85 : Июль 05, 2013, 17:08 »

Не согласен. И по секрету скажу, что заказчику пофиг, как это будет сделано. Главное чтобы работало и не вылетало.
Скажу по секрету, что заказчику нужно быстро, а поэтому разработчик должен уметь это сделать быстро.

Когда я не был знаком с сериализацией, я сделал сохранение-загрузку данных тупо через файл строками. На это у меня ушло примерно минут 15.
Если нужно сделать и дальше не трогать, то это действительно хорошо и просто, а вот если это в дальнейшем должно разрастись в огромную систему, то такой подход ошибочен. Будете переделывать все с нуля правильно.

И мой велосипед есть и будет понятен всем с самым низким порогом. Отчасти из-за простоты, отчасти из-за комментариев.
На самом деле бустовский код ясен и понятен. Там разделяется проход по строке и логика разбора, т.е. нам нужно менять только логику. Что правильно.

PS скатились уже и в старый знакомый срач :/
Как всегда. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #86 : Июль 05, 2013, 21:00 »

А заказчикам лучше обходить таких неумех программистов, которые за его деньги выдумывают велосипеды, вместо решения его задач.
То да, но вот только кто здесь неумелый(е)? Улыбающийся У меня-то все с любыми кавычками работает, а у Вас - только слова да понты.

А почему ваша реализация не обеспечивает разбиение на токены по алгоритму подобному boost::offset_separator? Или, например я хочу выдерать токены заключённые в цитаты:
(опускаю Ваш пример для краткости). Да пожалуйста, такая возможность в моем парсере есть, хотя запрос действительно "причудливый".

И да, как правильно заметил Old
Возможно Вам кажется что овладев очередным кусочком буста Вы сильно выросли Улыбающийся Я думаю Вы наоборот, больше потеряли чем приобрели.

---------

Как верно заметил Верес, обсуждение скатилось в.. (ну неважно Улыбающийся). Хорошо, а вот такая задачка

- было бы нехило если бы парсер умел выделять "числа". Примеры

5               // ну тут уже все выделено
10.2           // тут хужее, точка может юзаться и по-другому
3.45f          // увы, это возможно
1.2e-5        // и это надо поддерживать
2.3e+10f    // и это

При этом, разумеется, весь имеющийся ф-ционал (цитаты и.т.п) должен быть сохранен. Какие есть мнения?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #87 : Июль 05, 2013, 21:09 »

У меня-то все с любыми кавычками работает
С чего это они работают? Даже не компилируется:
Код
C++ (Qt)
// std::string str("1, { 2 }, 3");    // ни так
QByteArray str("1, { 2 }, 3");      // ни даже так
QStringRef ref;
QStringParser parser(str, param);
while (parser.NextToken(ref))
qDebug() << ref.toString();
 
Как правильно написал m_ax - Халтура.

а у Вас - только слова да понты.
А у меня не оплачено. Грустный
Помните: "Ни строчки кода без бабосов" и "Я никому помогать просто так не буду"? Подмигивающий

А если серьезно, то вы говорили про сложный вход, я привел вам пример, как это просто, вы даже согласились. Все что я хотел донести я донес.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #88 : Июль 05, 2013, 21:24 »

С чего это они работают? Даже не компилируется:
Код
C++ (Qt)
// std::string str("1, { 2 }, 3");    // ни так
QByteArray str("1, { 2 }, 3");      // ни даже так
 
Вы посмотрите название темы - а играться в "общность" будете в др месте  Улыбающийся

А у меня не оплачено. Грустный
Помните: "Ни строчки кода без бабосов" и "Я никому помогать просто так не буду"? Подмигивающий
Пока я в упор не вижу за что Вам платить - скорее наоборот  Улыбающийся

А если серьезно, то вы говорили про сложный вход, я привел вам пример, как это просто, вы даже согласились. Все что я хотел донести я донес.
Ну так если серьезно - я в упор не вижу на хрена мне здесь буст, все равно все делать руками, так зачем еще зависеть от посторонки?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #89 : Июль 05, 2013, 21:43 »

Вы посмотрите название темы - а играться в "общность" будете в др месте  Улыбающийся
Вы знаете, точнее - вы не знаете, что общность можно сделать и на Qt.
Я привел классы, которые было бы удобно поддерживать. Первый это QByteArray - это тот контейнер, в котором мы получаем данные из вне, ну и QLatin1String почему-то забыт. Если вы ими не пользуетесь, то это не значит, что ими не пользуются другие.

Пока я в упор не вижу за что Вам платить - скорее наоборот  Улыбающийся
Я тоже не вижу за что вам платить, но это не мешает вам находить несчастных.... Подмигивающий

Ну так если серьезно - я в упор не вижу на хрена мне здесь буст, все равно все делать руками, так зачем еще зависеть от посторонки?
Основная проблема диалога с вами заключается в том, что вы или не читаете (забываете?), или не понимаете собеседника.
Вам никто не предлагает использовать буст! Всем совершенно все равно что вы тут использовали или не использовали.
m_ax решил поделиться со всеми тем, что по его мнению, подход (концепция) решения этой задачи в бусте более общий (универсальный). Вы начали защищать (непонятно для чего?) свое решение и придумывать кучу причин и басен про буст. Я начал с вами спорить про "сложности" буста (и мозг Улыбающийся ), вы попросили доказательств, я их привел, вы согласились. Все.
Попробуйте это понять. Улыбающийся
Или, знаете что, не надо понимать: если ваш мозг работает как вы описали, то я переживаю о его overflow. Подмигивающий

« Последнее редактирование: Июль 05, 2013, 22:21 от Old » Записан
Страниц: 1 ... 4 5 [6] 7   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.258 секунд. Запросов: 22.