Re[16]: в очередной раз о собеседованиях
От: olegkr  
Дата: 01.12.08 17:16
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А ежели формат файлов может меняться довольно часто и там будут необязательные значения, что тогда ?

А он и меняется довольно часто, но в основном остается тем же. Просто конфигуришь и все.
Re[16]: в очередной раз о собеседованиях
От: olegkr  
Дата: 01.12.08 17:16
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А если язык, на котором написаны эти файлы, не является регулярным языком, а, следовательно, не может быть разобран с использованием регулярных выражений?

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

Pzz>Ну это не говорит ни о чем.

Это говорит только о том, что нефиг писать парсер языка, если есть готовые.
Re[17]: в очередной раз о собеседованиях
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 01.12.08 17:23
Оценка:
Здравствуйте, olegkr, Вы писали:

Pzz>>Ну это не говорит ни о чем.

O>Это говорит только о том, что нефиг писать парсер языка, если есть готовые.

Сколько работы для конфигуряния надо и в чем это заключается ?
Re[17]: в очередной раз о собеседованиях
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.12.08 17:46
Оценка: +1
Здравствуйте, olegkr, Вы писали:

Pzz>>А если язык, на котором написаны эти файлы, не является регулярным языком, а, следовательно, не может быть разобран с использованием регулярных выражений?

O>Тогда пишешь подключаемую сборку на C#. Получаешь то же, что и при использовании самописного языка, но сборка скомпилируется, все будет летать и не будет прикольных багов.

Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#?

Pzz>>Ну это не говорит ни о чем.

O>Это говорит только о том, что нефиг писать парсер языка, если есть готовые.

А если нет готового? Вот выдал вам заказчик задание — понимать текстовые файлы, которые выплевывает из себя программа, написаная на Коболе. Синтаксис этих файлов более-менее известен, но поменять его нельзя, поскольку Кобола никто уже не знает (да и вообще, кто ж вас пустит ковырать драгоценный доисторический код, написанный на нем?). Синтаксис при этом такой, что регулярными выражениями не обойдешься.

Ну и чего вы делать будете?
Re[18]: в очередной раз о собеседованиях
От: olegkr  
Дата: 01.12.08 18:29
Оценка: :)
Здравствуйте, Pzz, Вы писали:

Pzz>Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#?

Про то, что бы парсить исходники программы ты не писал. Речь шла про текстовые файлы

А что вы будете делать, если вам поставят задачу читать данные из текстовых файлов в определенном формате, и при этом этот формат будет не XML?


Pzz>Ну и чего вы делать будете?

Зависит от того, что именно выплевывает.
Re[19]: в очередной раз о собеседованиях
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.12.08 18:35
Оценка:
Здравствуйте, olegkr, Вы писали:

Pzz>>Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#?

O>Про то, что бы парсить исходники программы ты не писал. Речь шла про текстовые файлы

Я и сейчас об этом не пишу. Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера? И при чем здесь сборка на C#, раз уж вы ее приплели к вопросу?
Re[20]: в очередной раз о собеседованиях
От: Stanislav V. Zudin Россия  
Дата: 01.12.08 19:02
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Я не понимаю, каким образом подключаемая сборка на C# помогает парсить текст на языке, отличном от C#?

O>>Про то, что бы парсить исходники программы ты не писал. Речь шла про текстовые файлы

Pzz>Я и сейчас об этом не пишу. Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера? И при чем здесь сборка на C#, раз уж вы ее приплели к вопросу?


Предположу
Изобретет пару велосипедов, наплодит кучу багов, потом возьмет Dragon book.
Где-нибудь через полгода задача будет решена.
Шуткую. Не принимайте на свой счет.
_____________________
С уважением,
Stanislav V. Zudin
Re[21]: в очередной раз о собеседованиях
От: Pzz Россия https://github.com/alexpevzner
Дата: 01.12.08 19:06
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Предположу

SVZ>Изобретет пару велосипедов, наплодит кучу багов, потом возьмет Dragon book.
SVZ>Где-нибудь через полгода задача будет решена.
SVZ>Шуткую. Не принимайте на свой счет.

Нет, потому что уважаемый olegkr — убежденный противник взятия в руки Dragon Book'а
Re[20]: в очередной раз о собеседованиях
От: olegkr  
Дата: 01.12.08 20:34
Оценка: :))
Здравствуйте, Pzz, Вы писали:

Pzz>Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера?

Элементарно. Воспользуюсь методам класса String. И точно не буду городить лексический анализ логов типа
12/1/2007  11:55:00 89167734455   OUTGOING  L1C2 05:33
Re[21]: в очередной раз о собеседованиях
От: alf_kadett  
Дата: 02.12.08 00:33
Оценка:
Здравствуйте, olegkr, Вы писали:

Pzz>>Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера?

O>Элементарно. Воспользуюсь методам класса String. И точно не буду городить лексический анализ логов типа
O>
12/1/2007  11:55:00 89167734455   OUTGOING  L1C2 05:33


No hire, sorry.
Re[21]: в очередной раз о собеседованиях
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 02.12.08 08:59
Оценка:
Здравствуйте, olegkr, Вы писали:

O>Здравствуйте, Pzz, Вы писали:


Pzz>>Я спрашиваю, каким образом вы собираетесь парсить текстовые файлы, если нет готового парсера?

O>Элементарно. Воспользуюсь методам класса String. И точно не буду городить лексический анализ логов типа
O>
12/1/2007  11:55:00 89167734455   OUTGOING  L1C2 05:33


А если это не логи, а файло в текстовом формате, которого у кастомера вагоны ?

Вот не самый большой пример

S_VC-4_4 1 STM-64 2008-10-09 9999-12-31 Circuit Standard WDM Unprotected Site_3 Site_4

Re[22]: в очередной раз о собеседованиях
От: olegkr  
Дата: 02.12.08 16:07
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Вот не самый большой пример

Аналогично. Не вижу проблем разобрать его регулярными выражениями или тупым стрингом.
Re[22]: в очередной раз о собеседованиях
От: olegkr  
Дата: 02.12.08 16:15
Оценка:
Здравствуйте, alf_kadett, Вы писали:

_>No hire, sorry.

Кстати, да. Неплохой тест на собеседовании. Позволяет отсеить "умников", которые ради решения элементарной задачи на пару дней будут год городить огород с зоопарком вместе взятые.
Re[23]: в очередной раз о собеседованиях
От: Pzz Россия https://github.com/alexpevzner
Дата: 02.12.08 16:21
Оценка: :)))
Здравствуйте, olegkr, Вы писали:

_>>No hire, sorry.

O>Кстати, да. Неплохой тест на собеседовании. Позволяет отсеить "умников", которые ради решения элементарной задачи на пару дней будут год городить огород с зоопарком вместе взятые.

Да лучше сразу в объявлении писать: "в нашей компании самый умный оказывается самым крайним" — глядишь, умники сами отсеятся.
Re[23]: в очередной раз о собеседованиях
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 02.12.08 16:23
Оценка:
Здравствуйте, olegkr, Вы писали:

_>>No hire, sorry.

O>Кстати, да. Неплохой тест на собеседовании. Позволяет отсеить "умников", которые ради решения элементарной задачи на пару дней будут год городить огород с зоопарком вместе взятые.

У нас используется тот подход, что ты забраковал. Парсер+свой язык+конфигуряние.

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

Что характерно, почти каждый новый челвоек задаётся тем же вопросом что и ты, только ни один не предложил достойную замену.

Собственно к языку пришлось прибегнуть по той причине, что объем текста для конфигуряния превысил все мыслимые и немыслимые пределы.
Re[24]: в очередной раз о собеседованиях
От: olegkr  
Дата: 02.12.08 16:48
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Что характерно, почти каждый новый челвоек задаётся тем же вопросом что и ты, только ни один не предложил достойную замену.

Стоит призадуматься почему так происходит.

I>Собственно к языку пришлось прибегнуть по той причине, что объем текста для конфигуряния превысил все мыслимые и немыслимые пределы.

Чем не подходит в качестве языка стандартный C#?
Re[25]: в очередной раз о собеседованиях
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 02.12.08 18:05
Оценка:
Здравствуйте, olegkr, Вы писали:

I>>Что характерно, почти каждый новый челвоек задаётся тем же вопросом что и ты, только ни один не предложил достойную замену.

O>Стоит призадуматься почему так происходит.

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

I>>Собственно к языку пришлось прибегнуть по той причине, что объем текста для конфигуряния превысил все мыслимые и немыслимые пределы.

O>Чем не подходит в качестве языка стандартный C#?

Каким образом ты это себе представляешь ? Слишком общий вопрос.

файлы(всё множество) хранят состояние объектной модели с рутовым объектом.

Подобное в БД решается через хибернейт, только ни один движок БД не дает нужного перформанса да и sql нам ни к чему.

с каждым файлом проводятся две операции чтения и две операции записи, для каждой из них свой конфиг и файлов таких пару сотен, точно не помню.

конфиг задаёт структуру и типы данных(формат) + определенный код для выполнения каждой из операций на поле, строку, файл.

при этом входной/выходной файл может быть как текстовый с разделителями так и xml.

при чтении нужно проверять возможные ошибки и тд и тд.

все конфигуряние в одном xml файле, который около 100 кб. весом.

как образом ты хочешь пользовать здесь C# что бы все было достаточно наглядно, быстро и гладко ?

Поначалу был вариант такой — в конфиге просто прописывались методы из сборки на C#. Слишком много кода было и этот подход умер сам собой.

разумеется, общие фразы вроде "если задача решается на языке X то она решается и на языке Y" можешь оставить себе.
Re[23]: в очередной раз о собеседованиях
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 02.12.08 18:10
Оценка:
Здравствуйте, olegkr, Вы писали:

I>>Вот не самый большой пример

O>Аналогично. Не вижу проблем разобрать его регулярными выражениями или тупым стрингом.

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

все это делатся просто — разбором, правда безо всяких регулярных выражений, на выходе получается заполненый data-table.

А далее надо над каждым элементом, над каждой строчкой и над всем файлом выполнить определенные операции в зависимости от операции.

Вот это самое интересное.
Re[26]: в очередной раз о собеседованиях
От: olegkr  
Дата: 02.12.08 18:28
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>как образом ты хочешь пользовать здесь C# что бы все было достаточно наглядно, быстро и гладко ?

Пишешь на C# сборку, которая берет в качестве параметра конфиг и по нему разбирает текстовый файл. Подключаешь ее, как плагин к основной программе. Если надо разбирать хитровы..тый формат, пишешь сборку заточенную под него, если есть варианты данного формата, то цепляешь к ней еще и конфиг. Потом ассоциируешь тип файла со сборкой и конфигом. Все.

I>разумеется, общие фразы вроде "если задача решается на языке X то она решается и на языке Y" можешь оставить себе.

Я не вижу преимуществ использования собственного языка в данном случае. Как я понял он делает точно то же самое, что я написал выше.
Re[24]: в очередной раз о собеседованиях
От: olegkr  
Дата: 02.12.08 18:28
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>А далее надо над каждым элементом, над каждой строчкой и над всем файлом выполнить определенные операции в зависимости от операции.

Описываешь эти операции на C#. Если есть повторяющиеся или похожии операции, то группируешь их в одну сборку и цепляешь к ней конфиг. Нет, я правда не понимаю в чем сложности.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.