Обновить
31
Антон Куранов@Throwable

Пользователь

13
Подписчики
Отправить сообщение

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. Фигня конечно, но как-то стремно, ибо чревато на ровном месте геморроем.

Интересно, но разве подобная модель не подразумевает, что у Вселенной есть центр и все разлетание должно быть радиальным?

Просто ассоциация, идея чем-то напомнила Интерстеллар:
image

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

Более того, если такой человек есть, то он заведомо лишний в компании. Он не разработчик, поэтому плохо знает детали системы, он также не бизнес аналист, поэтому также не може предложить собственное решение или инициативу клиенту.
Вот типичная работа такого человека:



Поэтому все современные методики разработки пытаются уменьшить число ступеней в иерархии разработки, сделать структуру более плоской и прозрачной. Обязанности "software consultant" ложатся на team lead-а, который суть есть разработчик.

А чем, по-Вашему, занимался кандидат, как не сбором "бОльшегом количества данных о целевой задаче и области ее применения"?

Надменно демонстрировал важность своей работы и ценность своих знаний.


Первым вопросом должен быть не "что вы подразумеваете под вашей просьбой?", а "для чего вам это нужно?", "где вы это будете использовать?", "для какой общей задачи требуется данное решение?" Опишите проблему целиком, а я уже сам решу, нужно ли вам атрибуты менять и вообще нужно ли само копирование файла.


Вот приходите Вы к дентисту: "вылечите мне зуб". А он такой: "что конкретно Вы имеете ввиду под "вылечите"? У вас пульпит, периодонтит, перикоронит или простой кариес? Вам пломбу поставить, удаление нерва, коронку, удаление зуба или что? Что Вы от меня хотите? Сформулируйте точно!"

> Но в ОТО есть ещё одна важная загвоздка: кроме того, что наличие материи и энергии определяет кривизну пространства, всё, что есть в этом пространстве, определяет и эволюцию самого пространства-времени!

Все остальное можно выкинуть из статьи (кроме разве что еще упоминания метрики де-Ситтера, а точнее антидеситтеровское пространство). Тема совершенно не раскрыта.

Почему программисты не любят маркетологов:


  • Маркетологи сразу позиционируют себя по социальной лестнице выше программистов и имеют в среднем бОльший доход.
  • Их решения ориентированы на получение сиюминутной выгоды, в ущерб общей стратегии. Например маргетолог может испортить общий дизайн продукта вцелом, дабы угодить какому-то конкретному заказчику с неординарными запросами.
  • Все решения маркетолога ориентированы на субъективных, недостоверных или сомнительных предпосылках, несмотря на то, что многие из них написаны в умных и модных книгах. Никто никогда не сможет измерить эффективность того или иного решения, например как изменение цвета или размера шрифта повлияет на количество покупок. Обнаружить и доказать подобную корреляцию впринципе невозможно (если мы не говорим о шрифте в 8pt).
  • Собственно из вышесказанного следует, что ответственность маркетолога перед продуктом фактически нулевая по сравнению с ответственностью, которую несет программист. Коммерческий успех продукта он присваивает исключительно себе, а неудачу может оправдать миллионом причин. И нет никакого объективного критерия, который бы четко указал на ошибку именно маркетолога, как например неверная работа программы указывает на вину разработчика.
  • Поскольку маркетологи практически не участвуют в разработке и дизайне продукта, они как правило плохо в нем разбираются и представляют. Вместо упрощения многих вещей они могут потребовать изменения, которые наоборот, усложнят пользование продуктом и нарушат единообразность. Не вникая в детали, маркетологу впринципе индифферентно чем торговать: газировкой или софтверным решением. Один и тот же штамп: наклеечки поярче и шрифт.
"Нельзя управлять тем, что нельзя измерить — так звучит одна из излюбленных аксиом гильдии менеджеров."

Всегда привожу по этому случаю закон Гудхарта как контраргумент:


"Закон (принцип) Гудхарта заключается в том, что когда социальный или экономический показатель (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

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

Вообще говоря, странное поведение для планировщика. Обычно запрашиваемые поля никак влияют на план выполнения запроса, а только поля, участвующие в предикатах, сортировках, джоинах, etc… Цель планирования — получить keyset, по которому можно будет сделать fetch — достать все остальные данные из таблицы. То есть по-сути, планировщих должен всегда неявно трансформировать первый запрос во второй.
0. Они используют других для достижения успеха.

Т.н. «успешные люди» склонны в той или иной мере использовать других людей, для достижения своих целей. В корпоративной среде они используют результаты труда других и выдавать их за свои, создавая впечатление главного участника. Как говорится, бонус получил не тот, кто сделал работу, а тот, кто отчитался перед начальством. Таким образом, у окружающих формируется ложная легенда о важности данного человека. Очень быстро эти люди начинают сами искренне верить в свою легенду и считать себя лидером в команде и незаменимым человеком, а все заслуги команды считать своими личными заслугами.
Можете объяснить откуда берутся такие результаты? Что за движок и какие планы выполнения обоих запросов?

Я могу ошибаться, но по-моему срабатывало как раз в виртуальном режиме: делаешь .com-файл из двух байт, и пускаешь его. И Win95 и OS/2 наглухо висли. Причем, вроде бы срабатывало только на процессорах AMD 486. На четверках Intel-а ничего не происходило.

Информация

В рейтинге
Не участвует
Откуда
Madrid, Испания
Зарегистрирован
Активность