1) Да, мой косяк. Но почему-то в обоих случаях Regex.toString() возвращает одну и ту же строку.
2) Возможно. Я сильно не разбирался — не было времени. Парсилось около 50 файлов по 10Мб каждый. Зависание происходило спонтанно, каждый раз в новом месте, иногда даже прокатывало без зависаний. Но тред именно в read-е сидел. Странно.
val MSG = "Async service invocation: ISigresPartner Interface=INT.SIGRES.PSSBA.001 #_PI:90030156.2de27eff.e6df58f5.71524441"
// Java Regexp
val invokeMatcher = Pattern.compile(
""".*:\s+([A-Za-z0-9\._-]+)\s+Interface=([A-Za-z0-9\._\-]+).+#(.+)""")
val match = invokeMatcher.matcher(MSG)
println(match.find())
// -> true
// Kotlin
println(Regex.fromLiteral(""".*:\s+([A-Za-z0-9\._-]+)\s+Interface=([A-Za-z0-9\._-]+).+#(.+)""").matches(MSG))
// -> false
println(Regex.fromLiteral(""".*:\s+([A-Za-z0-9\._-]+)\s+Interface=([A-Za-z0-9\._-]+).+#(.+)""").find(MSG))
// -> null
Regex 100% правильный, можете проверить на regex101.com.
val files = File(logDir).listFiles {
dif, name -> name.startsWith("SystemOut") && name.endsWith(".log")
}.asList().sortedBy { if (it.name == "SystemOut.log") "Z" else it.name }
files.forEach { file ->
file.forEachLine { line ->
// ...
}
}
Зависает. Но не на процессинге линии, а на чтении.
Неделю назад нужно было написать простой парсер логов одного приложения, ничего особенного. Попробовал Котлин. В итоге: Regex matcher не работает, а File.forEachLine мистически виснет. Заменил все джавовскими аналогами Pattern.compile/Matcher и BufferedReader. Фигня конечно, но как-то стремно, ибо чревато на ровном месте геморроем.
По-моему, большая часть взаимного непонимания в комментариях к этой статье связана с тем, что зачастую никакого такого отдельного «специального человека» попросту нет.
Более того, если такой человек есть, то он заведомо лишний в компании. Он не разработчик, поэтому плохо знает детали системы, он также не бизнес аналист, поэтому также не може предложить собственное решение или инициативу клиенту.
Вот типичная работа такого человека:
Поэтому все современные методики разработки пытаются уменьшить число ступеней в иерархии разработки, сделать структуру более плоской и прозрачной. Обязанности "software consultant" ложатся на team lead-а, который суть есть разработчик.
А чем, по-Вашему, занимался кандидат, как не сбором "бОльшегом количества данных о целевой задаче и области ее применения"?
Надменно демонстрировал важность своей работы и ценность своих знаний.
Первым вопросом должен быть не "что вы подразумеваете под вашей просьбой?", а "для чего вам это нужно?", "где вы это будете использовать?", "для какой общей задачи требуется данное решение?" Опишите проблему целиком, а я уже сам решу, нужно ли вам атрибуты менять и вообще нужно ли само копирование файла.
Вот приходите Вы к дентисту: "вылечите мне зуб". А он такой: "что конкретно Вы имеете ввиду под "вылечите"? У вас пульпит, периодонтит, перикоронит или простой кариес? Вам пломбу поставить, удаление нерва, коронку, удаление зуба или что? Что Вы от меня хотите? Сформулируйте точно!"
> Но в ОТО есть ещё одна важная загвоздка: кроме того, что наличие материи и энергии определяет кривизну пространства, всё, что есть в этом пространстве, определяет и эволюцию самого пространства-времени!
Все остальное можно выкинуть из статьи (кроме разве что еще упоминания метрики де-Ситтера, а точнее антидеситтеровское пространство). Тема совершенно не раскрыта.
Маркетологи сразу позиционируют себя по социальной лестнице выше программистов и имеют в среднем бОльший доход.
Их решения ориентированы на получение сиюминутной выгоды, в ущерб общей стратегии. Например маргетолог может испортить общий дизайн продукта вцелом, дабы угодить какому-то конкретному заказчику с неординарными запросами.
Все решения маркетолога ориентированы на субъективных, недостоверных или сомнительных предпосылках, несмотря на то, что многие из них написаны в умных и модных книгах. Никто никогда не сможет измерить эффективность того или иного решения, например как изменение цвета или размера шрифта повлияет на количество покупок. Обнаружить и доказать подобную корреляцию впринципе невозможно (если мы не говорим о шрифте в 8pt).
Собственно из вышесказанного следует, что ответственность маркетолога перед продуктом фактически нулевая по сравнению с ответственностью, которую несет программист. Коммерческий успех продукта он присваивает исключительно себе, а неудачу может оправдать миллионом причин. И нет никакого объективного критерия, который бы четко указал на ошибку именно маркетолога, как например неверная работа программы указывает на вину разработчика.
Поскольку маркетологи практически не участвуют в разработке и дизайне продукта, они как правило плохо в нем разбираются и представляют. Вместо упрощения многих вещей они могут потребовать изменения, которые наоборот, усложнят пользование продуктом и нарушат единообразность. Не вникая в детали, маркетологу впринципе индифферентно чем торговать: газировкой или софтверным решением. Один и тот же штамп: наклеечки поярче и шрифт.
"Нельзя управлять тем, что нельзя измерить — так звучит одна из излюбленных аксиом гильдии менеджеров."
Всегда привожу по этому случаю закон Гудхарта как контраргумент:
"Закон (принцип) Гудхарта заключается в том, что когда социальный или экономический показатель (KPI) становится целью для проведения социальной или экономической политики, он перестаёт быть достойным доверия показателем."
Американизмы. На встречу как на войну — при оружии.
Все это необхдимо в работе, где профессиональными требованиями является наличие комуникативных качеств. Типично для американцев, где практически вся офисная работа связана с куплей-продажей. Но есть еще дохрена профессий от асфальтоукладчика до программиста, где это не требуется. И соответственно "промахом" будет являеться не слабое рукопожание, а некомпетентность и неспособность справиться с конкретной поставленной задачей.
Для этого нужно определить "штатную ситуацию". Если дополнительные реквизиты не определены, нужно взять самое простое решение: создание нового файла с заданным именем и дефолтными атрибутами и копирование в него содержимого заданного файла. Все операции с привилегиями процесса. В случае невозможности копирования вывести (вернуть) ошибку, желательно с пояснением причины.
Все вышеперечисленное аналитик-программист должен автоматически вывести из задания "напиши мне программу для копирования файла". Только при обладании бОльшим количеством данных о целевой задаче и области ее применения, данное решение может быть трансформированно в нечто более сложное. Принцип KISS еще никто не отменял.
Совершенно верно. Человека берут на работу решать проблемы, а не создавать их. Если также он будет донимать вопросами заказчика, то тот просто уйдет.
Задача программиста-аналиатка — уметь трансформировать фукнциональные реквизиты в конкретное решение, а в случае нехватки деталей предлагать собственное решение, а не допытываться по каждому пунтку. Поэтому программа должна работать адевкатно в большинстве случаев и корректно отлавливать нештатные ситуации.
В вашем рекламном проспекте отсутствует самый главный параметр — цена. Я понимаю, что она зависит от конфигурации, и что все можно посмотреть на сайте. Но все-таки, рассказывая о прелестях новых моделей можно было написать цена — от стольки-то.
Вообще говоря, странное поведение для планировщика. Обычно запрашиваемые поля никак влияют на план выполнения запроса, а только поля, участвующие в предикатах, сортировках, джоинах, etc… Цель планирования — получить keyset, по которому можно будет сделать fetch — достать все остальные данные из таблицы. То есть по-сути, планировщих должен всегда неявно трансформировать первый запрос во второй.
Т.н. «успешные люди» склонны в той или иной мере использовать других людей, для достижения своих целей. В корпоративной среде они используют результаты труда других и выдавать их за свои, создавая впечатление главного участника. Как говорится, бонус получил не тот, кто сделал работу, а тот, кто отчитался перед начальством. Таким образом, у окружающих формируется ложная легенда о важности данного человека. Очень быстро эти люди начинают сами искренне верить в свою легенду и считать себя лидером в команде и незаменимым человеком, а все заслуги команды считать своими личными заслугами.
Я могу ошибаться, но по-моему срабатывало как раз в виртуальном режиме: делаешь .com-файл из двух байт, и пускаешь его. И Win95 и OS/2 наглухо висли. Причем, вроде бы срабатывало только на процессорах AMD 486. На четверках Intel-а ничего не происходило.
1) Да, мой косяк. Но почему-то в обоих случаях Regex.toString() возвращает одну и ту же строку.
2) Возможно. Я сильно не разбирался — не было времени. Парсилось около 50 файлов по 10Мб каждый. Зависание происходило спонтанно, каждый раз в новом месте, иногда даже прокатывало без зависаний. Но тред именно в read-е сидел. Странно.
Regex 100% правильный, можете проверить на regex101.com.
Неделю назад нужно было написать простой парсер логов одного приложения, ничего особенного. Попробовал Котлин. В итоге: Regex matcher не работает, а File.forEachLine мистически виснет. Заменил все джавовскими аналогами Pattern.compile/Matcher и BufferedReader. Фигня конечно, но как-то стремно, ибо чревато на ровном месте геморроем.
Просто ассоциация, идея чем-то напомнила Интерстеллар:

Более того, если такой человек есть, то он заведомо лишний в компании. Он не разработчик, поэтому плохо знает детали системы, он также не бизнес аналист, поэтому также не може предложить собственное решение или инициативу клиенту.
Вот типичная работа такого человека:
Поэтому все современные методики разработки пытаются уменьшить число ступеней в иерархии разработки, сделать структуру более плоской и прозрачной. Обязанности "software consultant" ложатся на team lead-а, который суть есть разработчик.
Надменно демонстрировал важность своей работы и ценность своих знаний.
Первым вопросом должен быть не "что вы подразумеваете под вашей просьбой?", а "для чего вам это нужно?", "где вы это будете использовать?", "для какой общей задачи требуется данное решение?" Опишите проблему целиком, а я уже сам решу, нужно ли вам атрибуты менять и вообще нужно ли само копирование файла.
Вот приходите Вы к дентисту: "вылечите мне зуб". А он такой: "что конкретно Вы имеете ввиду под "вылечите"? У вас пульпит, периодонтит, перикоронит или простой кариес? Вам пломбу поставить, удаление нерва, коронку, удаление зуба или что? Что Вы от меня хотите? Сформулируйте точно!"
Все остальное можно выкинуть из статьи (кроме разве что еще упоминания метрики де-Ситтера, а точнее антидеситтеровское пространство). Тема совершенно не раскрыта.
Почему программисты не любят маркетологов:
Всегда привожу по этому случаю закон Гудхарта как контраргумент:
"Закон (принцип) Гудхарта заключается в том, что когда социальный или экономический показатель (KPI) становится целью для проведения социальной или экономической политики, он перестаёт быть достойным доверия показателем."
https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BA%D0%BE%D0%BD_%D0%93%D1%83%D0%B4%D1%85%D0%B0%D1%80%D1%82%D0%B0
Американизмы. На встречу как на войну — при оружии.
Все это необхдимо в работе, где профессиональными требованиями является наличие комуникативных качеств. Типично для американцев, где практически вся офисная работа связана с куплей-продажей. Но есть еще дохрена профессий от асфальтоукладчика до программиста, где это не требуется. И соответственно "промахом" будет являеться не слабое рукопожание, а некомпетентность и неспособность справиться с конкретной поставленной задачей.
Для этого нужно определить "штатную ситуацию". Если дополнительные реквизиты не определены, нужно взять самое простое решение: создание нового файла с заданным именем и дефолтными атрибутами и копирование в него содержимого заданного файла. Все операции с привилегиями процесса. В случае невозможности копирования вывести (вернуть) ошибку, желательно с пояснением причины.
Все вышеперечисленное аналитик-программист должен автоматически вывести из задания "напиши мне программу для копирования файла". Только при обладании бОльшим количеством данных о целевой задаче и области ее применения, данное решение может быть трансформированно в нечто более сложное. Принцип KISS еще никто не отменял.
Вот кстати притча в тему: https://habrahabr.ru/post/74193/
Совершенно верно. Человека берут на работу решать проблемы, а не создавать их. Если также он будет донимать вопросами заказчика, то тот просто уйдет.
Задача программиста-аналиатка — уметь трансформировать фукнциональные реквизиты в конкретное решение, а в случае нехватки деталей предлагать собственное решение, а не допытываться по каждому пунтку. Поэтому программа должна работать адевкатно в большинстве случаев и корректно отлавливать нештатные ситуации.
https://www.youtube.com/watch?v=VMPeTrHNX1U
В вашем рекламном проспекте отсутствует самый главный параметр — цена. Я понимаю, что она зависит от конфигурации, и что все можно посмотреть на сайте. Но все-таки, рассказывая о прелестях новых моделей можно было написать цена — от стольки-то.
Т.н. «успешные люди» склонны в той или иной мере использовать других людей, для достижения своих целей. В корпоративной среде они используют результаты труда других и выдавать их за свои, создавая впечатление главного участника. Как говорится, бонус получил не тот, кто сделал работу, а тот, кто отчитался перед начальством. Таким образом, у окружающих формируется ложная легенда о важности данного человека. Очень быстро эти люди начинают сами искренне верить в свою легенду и считать себя лидером в команде и незаменимым человеком, а все заслуги команды считать своими личными заслугами.
Я могу ошибаться, но по-моему срабатывало как раз в виртуальном режиме: делаешь .com-файл из двух байт, и пускаешь его. И Win95 и OS/2 наглухо висли. Причем, вроде бы срабатывало только на процессорах AMD 486. На четверках Intel-а ничего не происходило.
@ScopedProxy???