Pull to refresh
138
0
Владимир Губарьков @xonix

CTO

Send message
Что значит правильно обрабатывает


Как Ваши варианты решения отработают на какой-то из записей facilities без поля services?
Но данная библиотека только повышает количество возможных способов


Не только. Её вариант проще Вашего лаконичного варианта, правильно обрабатывает null/undefined, работает на любом древнем JS.
По-моему плюсов не так и мало.
query(hotel,'facilities.services[_.visible !== false].name')

Весьма верное замечание! Вариант с Jsqry корректно прожует вариант объекта без поля services. Вариант с ES-кунг-фу скорее всего упадет с Null Pointer.

Библиотеки очень похожи по задумке. Jsqry значительно проще как по устройству так и по использованию за счет переиспользования обычного js для предикатов, в JSPath же изобрели свой язык предикатов со своими операторами и т.д. По функционалу, имхо 80-90% совпадает. Хотя в Jsqry срезы более продвинутые (поддерживется step параметр, как в Python), а также не нашел трансформации у них, только фильтрация. С другой стороны, в JSPath, разумеется есть и возможности, коих нет в Jsqry, например, '..' и '|' в location path. А, да, у них еще более громоздкий синтаксис подстановок — именованные вместо '?'. Впрочем, это можно расценить и как плюс.

Ну когда запрос настолько сложен, что требует дебага, можно и в коде переписать.
А так-то можно и в Jsqry, хотя, признаться, о таком способе использования я раньше не думал.


function f1(elt) { return elt > 2 }
function f2(elt) { return elt + 10 }
console.info(jsqry.query([1,2,3,4,5],'[ ?(_) ]{ ?(_) }', f1, f2)); // [ 13, 14, 15 ]

А что — разве будет легче дебажить?

В этом смысле так же как и регулярные выражения, JQuery-селекторы или тот же SQL.

Скурпулезных замеров не проводил, но вот есть небольшой бенчмарк https://github.com/xonixx/jsqry/blob/master/bench.js.
У меня 100000 прогонов запроса вида


jsqry.one(o1, '[_.id>=2].name[_.toLowerCase()[0]==?].length', 's')

отрабатывает за 425ms.

Спасибо, интересно.
А такой юз-кейс:


var hotel = {
    name: 'Name',
    facilities: [
        {name:'Fac 1',
        services: [
            {name:'Service 1', visible:false},
            {name:'Service 2'}
        ]},
        {name:'Fac 1',
        services: [
            {name:'Service 3'},
            {name:'Service 4', visible:false},
            {name:'Service 5'}
        ]}
    ]
};

console.info(query(hotel,'facilities.services[_.visible !== false].name')); // [ 'Service 2', 'Service 3', 'Service 5' ]
Тема весьма интересная. Хотя я и не доконца понял вашу мотивацию, т.е. вообще постановку вопроса. Если не понравился интерфейс Kibana — не проще ли было просто доработать её или создать свой веб-интерфейс? Подозреваю, что реальным мотиватором был избыток молодецкого задора :-) Также зря отказались от Elasticsearch, очень уж хороший продукт.

Также, по-моему, у вас в описании неточность
It's nodejs-based Logstash witch suddenly stops processing logs in some conditions.

Logstash написан на Ruby, который запускается на JRuby, т.е. на JVM. А вот Kibana, да — на node.js.

Ну а вообще, респект, конечно!
Интересно то же самое проанализировать для geektimes, увидеть есть ли корреляция и какая.
Плюсану, всегда использовал что-то типа
class SomeCls {
  private final Logger log = Logger.getLogger(SomeCls.class);
}

Также подход автора не позволит логировать из static методов.
Синтаксисом больно на Кобол похож.
Я думаю, не потянет. Банально рантайм Groovy не влезет. Не говоря уже о том, что там, по-видимому, байткод-магии внутри хватает.
sed -r 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/'

Может это тоже стоит пропатчить…
В чем киллер-фича этого ЯП?
Ну там С(++) — эффективность, Erlang — акторы/конкурентность, Go — хипстерский С++ с GC, Java — ну понятно… А тут что (кроме нового синтаксиса)? DSL, Lisp-like? А оно практически нужно как самоцель? Если он метит в нишу Lisp, то вряд ли это будет популярным…
За статью спасибо, может быть интересно как пример дизайна/имплементации ЯП.
Очевидно, как. Додуматься впихнуть список и словарь в одну структуру — «гениальное» дизайнерское решение.
В таком случае ещё один вопрос — про какую версию говорится?

ideone.com/Gb2Bhl
И нет, не совпадение, а дальновидность дизайнеров языка, которой я поражаюсь.

Блин ну в чем дальновидность-то?

Может быть в этом? (за достоверностью цитаты к автору поста)>>
Вместо этого Рамус Лердорф говорит вещи навроде:

У нас есть защищённые свойства, абстрактные методы, вся эта фигня, про которую ваш учитель информатики вам рассказывал. Мне на всё это дерьмо плевать.

Или в этом:
Хозяйке на заметку: PHP в линейном массиве из int-ов отводит где-то по 70-80 байт на элемент.

david-m.livejournal.com/1117497.html

Information

Rating
Does not participate
Date of birth
Registered
Activity