Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс Парсинг (для строкового парсинга) (число прочтений - 24363 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #15 - 22. Января 2007 :: 19:34
Печать  
to KMS - целиком поддерживаю.

Кроме того - а как этой ИТ пользоваться, и главное зачем?  Смех
Вот не вижу необходимости, учитывая что любые данные могу получить с SQL запросом...
  
Наверх
 
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #16 - 22. Января 2007 :: 19:44
Печать  
В общем у меня только одна мысль. Популяризация это все фигня.
Реально человека волнует только он сам. Внес он в класс половину запятой и все.
Теперь он обречен им пользоваться. А уж если внес три строки - ваще капец.
А если приносят ему тонну строк и там даже его запятой нету то нах оно ему надо.
В библиотках пылятся тонны умных мыслей очень умных людей. Очень известных и тем
не менее нафиг никому не нужных. Почему тебя волнует класс индексированная таблица ?
потому что ты его писал. Почему он меня не волует ? (да я даже не знаю что такое существует и зачем существует), потому что ты не попросил меня
написать для нее всего один метод. Я потому думаю что и документация это все фигня.
Когда чел залез сам в сорцы и все методы подглядел он же их теперь _помнить_ наизусть будет. Нафиг ему дока. Раньше помню никаких книг в книжных не продавалось. НУ ВАЩЕ НИКАКИХ по компам. ЗА ПИВО покупали доки к ТурбоАссемблеру на дискетах. Ну и че ?
Я ассемблер до сих пор не забыл. И могу написать слету какой нибудь TSR или полиморфный движок. Другое дело - что это мне щаз нафиг не надо.
А потом как книг много появилось так что читать их стали ? НИФИГА НЕ СТАЛИ. Идиотов стало на порядок больше. несмотря на все книги и доки. Мысли простые : если это так легко дается - нафиг это ценить.  так что моя формула простая - не надо лохматить бабушку, давайте просто ваять код вместе, а бабки получать за него отдельно.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #17 - 22. Января 2007 :: 19:56
Печать  
А еще раньше помню ваще книг не было. Читали чужие сорцы.
Декомпилировали и читали. Как же еще Улыбка)
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #18 - 22. Января 2007 :: 20:08
Печать  
Все кто считают себе не идиотами:

http://children.kulichki.net/vopros/idiot-rp.swf

выкладываем кво попыток.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Класс Парсинг (для строкового парсинга)
Ответ #19 - 22. Января 2007 :: 20:11
Печать  
Kostya писал(а) 22. Января 2007 :: 19:56:
Декомпилировали и читали. Как же еще Улыбка)

У меня был турбодебаггер. Подмигивание
А систему команд К1801ВМ1 я знал наизусть и писал в машинных кодах.
Мне как-то никто сразу не сказал, что так не принято.

Короче я понял, Костя, ты по жизни юниксоид.
Но если ты не заметил, популяризацией ты _уже_ активно занимаешься Подмигивание
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #20 - 22. Января 2007 :: 20:28
Печать  
kms писал(а) 22. Января 2007 :: 20:11:
Kostya писал(а) 22. Января 2007 :: 19:56:
Декомпилировали и читали. Как же еще Улыбка)

У меня был турбодебаггер. Подмигивание
А систему команд К1801ВМ1 я знал наизусть и писал в машинных кодах.
Мне как-то никто сразу не сказал, что так не принято.

Короче я понял, Костя, ты по жизни юниксоид.
Но если ты не заметил, популяризацией ты _уже_ активно занимаешься Подмигивание


А у меня был NEC20. В него гениально было встроено сразу ДВЕ системы команд.
8080 и 8086. Можно было писать на 8080 и вызывать прерывания дос.
Я по жизни уже давно не хакер. Это у меня просто ностальгические судороги Улыбка
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Класс Парсинг (для строкового парсинга)
Ответ #21 - 22. Января 2007 :: 21:15
Печать  
Костя, знаешь, я не буду использовать твои классы, так же, как не использую классы Артура и прочие. Также, как не использую классы из FuncTest'а, хотя я же в них участвовал. И знаешь в чем причина?

Есть такой мужик, Фредерик Брукс. Он написал книжку "Мифический человеко-месяц". В ней много вещей, с которыми я согласен и не согласен. Но есть у него такой момент: он оценивает стоимость компонентов (тогда классов не было).

Так вот, стоимость их соотносится так: начальная заготовка оценится в единицу, тогда отлаженный класс, который соответствует спецификациям (вычищена начинка) стоит в три раза дороже. А класс, который уже отработан во взаимодействии с другими классами (у которого вычищена не только начинка, но и интерфейсы, он выполняет все, для чего он предназначен) стоит еще в три раза дороже.

То есть отлаженный и готовый к интеграции класс стоит в 9 (девять!) раз дороже, чем исходный. Я смотрю на твои классы (впрочем, как и на классы Артура), и понимаю, что для полноценного использования мне надо затратить от двух до девяти раз больше усилий, чем вложил ты (то есть то, что я получаю условно-бесплатно).

Плюс к этому, нужно время, чтобы разобраться в твоем коде. Плюс, если я хочу пользоваться дальнейшим развитием класса, мне нужно время на взаимодействие с тобой и утрясание вопросов. То есть в конечном итоге вполне может оказаться так, что мне дешевле самому написать класс, чем пользоваться твоим классам. Таким образом я оцениваю полезность твоих классов как близкую к нулю. А с учетом разброса погрешности, она может оказаться и отрицательной.

Но, естественно, это оценка для моего использования твоих классов. Так как я представляю именно высокие требования к классам. Наверное, найдутся люди, кому твои классы подойдут. Но если я за них буду отвечать перед 300 клиентами (1500 рабочих мест), то я лучше напишу свои такие же классы. И напишу их через тестирование для того, чтобы быть в них уверенным.

Если же ты хочешь, чтобы твоими классами пользовались другие, то напиши для них хотя бы тесты. Этим ты повысишь их стоимость для потенциальных пользователей. А надеяться на то, что другие будут дорабатывать твои классы особо не стоит, хотя это, конечно, может произойти.  Подмигивание

Могу привести еще один пример - внешняя компонента работы со сканером. Нам тоже захотелось халявы, мы нашли такую компоненту и встроили к себе. В результате оказалось, что она не работает со сканером на принтере HP-1200. Автор, конечно, поковырялся-поковырялся, да и сказал, что не знает в чем дело. А что нам ответить клиенту? Вот тебе и халява. И даже если бы у нее бы у нее были открытые коды, думаешь нам было бы намного легче?

Я также не использую ИндексированнуюТаблицу, хотя считаю, что ее стоимость составляет 80-90% от желаемой. Не использую по простой причине, что для меня ее функционал не востребован, просто другие задачи. В одном месте попытался ее применить, но в результате рефакторинга ее использование выродилось до простой ТаблицыЗначений.  Пришлось выборосить. Улыбка

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

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

Да что там ИндексированнаяТаблица, если стандартная 1С-овская ТаблицаЗначений преподносит сюрпризы при сортировках и свертках. Ну не верю я, что ИндексированнаяТаблица лучше протестирована, чем ТаблицаЗначений!

Вот я могу, например, опубликовать (после согласованя со своими) класс ХранилищеОбъектов, который позволяет хранить в базе данных 1С произвольные объекты. Он по уровню проработки близок к ИндексированнойТаблице. Знаешь сколько времени ушло на то, чтобы проработать хранение пустых списков и строк различной длины. Знаешь, сколько времени вычищались интерфейсы под разные нужды? Так до сих пор подправляем его, не смотря на то, что писался он через тестирование. И до сих пор в нем есть ограничения, о которых я знаю.

Не знаю, какие ты сделаешь выводы в отношении своих классов, но понятно, что создание библиотеки классов, которой будут пользоватся другие - не такое простое дело.
  
Наверх
 
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #22 - 22. Января 2007 :: 21:47
Печать  
Знаешь ты абсолютно прав. Я вот тоже не юзаю чужой код, потому что не очень доверяю ему. Есть другая история. Про надежность тестов. Решил я как то одного своего самого опытного работника пригрузить написать класс. Все по взрослому. Сам описал ему спецификацию. Написал десяток тестов. но тесты не дал. заставил самостоятельно писать тесты перед разработкой. человек написал 20 тестов. на один класс. потом написал класс. не все тесты сразу прошли, но со временем класс отладил. я прогнал свои 10 тестов. нашли еще несколько ошибок. все. все тесты проходят. все должно быть хорошо. И вот после какого то момента решаю я принять этот класс в продакшн. тем более столько тестов, столько отладки и муки. и вот в какой то момент, смотря на проводки документа с этим классом я с чем то просто не соглашаюсь. я начинаю разбираться и понимаю что забыли описать в тестах какую то маленькую деталь, но которая на самом деле очень важна. пишу тест и он не проходит. дело на выходных. разработчика нету. решаю посмотреть внутрь класса (а до этого специально не смотрел - мол важен только вход и выход). и убеждаюсь в том, что дописать эту маленькую вещь это надо переписать весь класс. в итоге я плюю на три недели работы этого человека. и за часа три пишу свой вариант этого класса. который проходит все тесты. класс этот называется ФИФО.
(не простой фифо, а фифо которое может проводиться даже задним числом и не требует перепроведения всех документов, чтобы выравнять последовательность).
И что я думаю после этого о тестах ??? я думаю что это самообман. либо ты пишешь код качественно, либо ты его не пишешь. и тесты могут гарантировать только одно - когда они _не проходят_ то класс не работающий. А когда проходят - он точно так же может быть неработающим. Так что доверие бесспорно необходимо. Но документация не даст доверия. И  тесты тоже не дадут. Иногда сам себе не доверяешь, что там говорить про чужих разработчиков. Но один то в поле не воин. Ну напишет каждый из нас свой парсинг, которому он будет доверять. А систему планирования потребностей производства уже не напишет. Времени не хватит. Ну напишет каждый из нас по классу ТЗ, а ФинансовыйАнализ не напишет. Опять таки один в поле не воин. Поэтому иного выхода как совместно что-то писать я лично не вижу. Именно создавать, а не ставить готовое - юзайте. 
п.с. Брукса читал.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс Парсинг (для строкового парсинга)
Ответ #23 - 22. Января 2007 :: 21:50
Печать  
(sedmin) Вообще то есть классы которыми можно пользоваться не заботясь об их рефаторинге, возьмем к примеру класс "Общие.Форма.Привязка.ert" - пользуюсь им полгода и даже не заглядывал как он написан - работает вроде как безнареканий - так зачем мне свое писать если добрый человек подобное уже сделал Подмигивание
Частью классов можно пользоваться как примерами для создания своих собственных - никто же не мещает сделать лучше и выложить свое.
  
Наверх
wwwICQ  
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #24 - 22. Января 2007 :: 22:02
Печать  
Цитата:
ТаблицаЗначений преподносит сюрпризы при сортировках и свертках.


кстати говоря - очень интересно какие сюрпризы. тесты в студию.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Класс Парсинг (для строкового парсинга)
Ответ #25 - 22. Января 2007 :: 22:11
Печать  
Kostya писал(а) 22. Января 2007 :: 22:02:
Цитата:
ТаблицаЗначений преподносит сюрпризы при сортировках и свертках.


кстати говоря - очень интересно какие сюрпризы. тесты в студию.

Тестов не будет. Просто скажу, что ситуации возникают, когда элементы справочника имеют одинаковое наименование.

И если ты знаешь, что лежит в колонке таблицы, то ты напишешь разные варианты кода, который правильно выполняет сортировку/свертку, а если не знаешь - то хрен.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Класс Парсинг (для строкового парсинга)
Ответ #26 - 22. Января 2007 :: 22:14
Печать  
noprogrammer писал(а) 22. Января 2007 :: 21:50:
(sedmin) Вообще то есть классы которыми можно пользоваться не заботясь об их рефаторинге, возьмем к примеру класс "Общие.Форма.Привязка.ert" - пользуюсь им полгода и даже не заглядывал как он написан - работает вроде как безнареканий - так зачем мне свое писать если добрый человек подобное уже сделал Подмигивание


Некий ПО тоже пытался им воспользоватся, но через некоторое время напоролся на то, то он глючит, если у формы есть закладки, форма модальная и т.д. Пришлось очередной раз лезть в кишки.  Улыбка
  
Наверх
 
IP записан
 
Kostya
Junior Member
**
Отсутствует



Сообщений: 62
Местоположение: Украина / Луцк
Зарегистрирован: 14. Декабря 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #27 - 22. Января 2007 :: 22:50
Печать  
sedmin писал(а) 22. Января 2007 :: 22:11:
Kostya писал(а) 22. Января 2007 :: 22:02:
Цитата:
ТаблицаЗначений преподносит сюрпризы при сортировках и свертках.


кстати говоря - очень интересно какие сюрпризы. тесты в студию.

Тестов не будет. Просто скажу, что ситуации возникают, когда элементы справочника имеют одинаковое наименование.

И если ты знаешь, что лежит в колонке таблицы, то ты напишешь разные варианты кода, который правильно выполняет сортировку/свертку, а если не знаешь - то хрен.



Попытка найти искомое:

Код
Выбрать все
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
	ТЗ.НоваяКолонка("ЭлементСправочника");
	ТЗ.НоваяКолонка("ЧисловоеЗначение");

	Спр=СоздатьОбъект("Справочник.Тестовый");
	Спр.ВыбратьЭлементы();
	Пока Спр.ПолучитьЭлемент()=1 Цикл
		Сообщить("["+Спр.ПолныйКод()+"::"+Спр.ТекущийЭлемент()+"]");
		ТЗ.НоваяСтрока();
		ТЗ.ЭлементСправочника=Спр.ТекущийЭлемент();
		ТЗ.ЧисловоеЗначение=1;
	КонецЦикла;

	Сообщить("строк="+ТЗ.КоличествоСтрок());
	ТЗ.ВыбратьСтроку();
	ТЗ.Свернуть("ЭлементСправочника","ЧисловоеЗначение");
	Сообщить("строк="+ТЗ.КоличествоСтрок());
    ТЗ.ВыбратьСтроку();

КонецПроцедуры

 



результат исполнения.
Код
Выбрать все
[3::второй]
[5::второй]
[1::первый]
[2::первый]
[4::третий]
строк=5
строк=5
 



Визуальная проверка на ВыбратьСтроку() обнаруживает две идентичные ТЗ.
То есть ничего не свернулось, даже несмотря на одиннаковые названия Наименований.
  

2b or not 2b = ff
Наверх
ICQ  
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: Класс Парсинг (для строкового парсинга)
Ответ #28 - 23. Января 2007 :: 04:25
Печать  
Цитата:
Некий ПО тоже пытался им воспользоватся, но через некоторое время напоролся на то, то он глючит, если у формы есть закладки, форма модальная и т.д. Пришлось очередной раз лезть в кишки. 


1.Про закладки у формы можно подробнее (что за глюки) ?
2.Про модальность - так там вообще не надо использовать данный класс, он там просто не нужен Подмигивание
  
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс Парсинг (для строкового парсинга)
Ответ #29 - 23. Января 2007 :: 05:08
Печать  
Привожу выдержку из хистори аськи для пояснения, почему я занялся подобным проектом
Цитата:
>> 22.01.2007 19:46:16 kms++ wrote:
>> Да, Артур, а насчет классов.
>> У тебя еще нет ощущения, что ты взялся за аццкий труд? Улыбка

>> 22.01.2007 19:50:52 artbear wrote:
>> есть, но вот в чем дело -
>> я сам очень люблю поизучать, потестить чужие полезные разработки, и периодически этим занимаюсь,
>> просто сейчас есть возможность собрать это все как-то воедино и реализовать какую-то единую схему учета и работы с классами

>> 22.01.2007 19:51:13 artbear wrote:
>> поэтому я так легко предложил себя в качестве ведущего Улыбка

>> 22.01.2007 19:51:42 artbear wrote:
>> посмотрим.
>> я не хочу/не буду вставлять все/любые классы + делать к ним доку, примеры и т.д.

>> 22.01.2007 19:52:16 artbear wrote:
>> возможно, все умрет при увеличении количества классов в несколько раз, а может быть, и нет.
>> Возможно, и еще кто-то подключится Улыбка

>> 22.01.2007 19:52:27 artbear wrote:
>> когда я делал конфу тестирования, я ведь также был один Улыбка

>> 22.01.2007 19:52:52 artbear wrote:
>> + Лехина тесты на ИТ - 110 штук Улыбка

>> 22.01.2007 19:54:52 artbear wrote:
>> просто в какой-то момент надоедает бардак, постоянные баги в новых версиях, возврат к одним и тем граблям и хочется как-то все систематизировать и улучшить.
>> так я взялся за 1С++ как пользователь
>> так я взялся за Опенконф,
>> так я взялся за юнит-тестирование 1С++,
>> так я взялся за 1С++ как разработчик,
>> так я взялся из конфу классов 1С++ Улыбка Очень довольный


ИМХО моя позиция и позиция Кости во многом близки Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать