• Изучите все языки программирования
    0

    Недавно удивился, обнаружив в разрабатываемой спецификации Java Value Classes куски кода описания на прологе http://cr.openjdk.java.net/~dlsmith/values.html

  • Для чего нужен Apache Ignite / GridGain, на примере .NET & C#
    +8

    Советую в подобных статьях вот это "Самый простой и ёмкий ответ — это база данных. В основе которой — хранилище "ключ-значение"; грубо говоря, ConcurrentDictionary, в котором данные расположены на нескольких машинах." помещать в шапку. Жутко бесит когда сперва идет простыня о продукте, но даже не понятно о каком :)
    В остальном, спасибо.

  • ClickHouse: очень быстро и очень удобно
    +2

    А можете, если возможно, сказать пару слов о том, как соотносятся ClickHouse и Amazon Redshift? На работе есть юзкейс под который как будто идеально ложится ClickHouse, но босс хочет Redshift. По позиционированию смотрятся близкими продуктами, так ли это?

  • Jsqry — библиотека для запросов к JS объектам и массивам
    0
    Ну это философский спор. Но, например, разработчики angularjs сделали так же.
    Forgiving: In JavaScript, trying to evaluate undefined properties generates ReferenceError or TypeError. In Angular, expression evaluation is forgiving to undefined and null
  • Jsqry — библиотека для запросов к JS объектам и массивам
    0
    Что значит правильно обрабатывает


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


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

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

  • Jsqry — библиотека для запросов к JS объектам и массивам
    0

    Да, спасибо.

  • Jsqry — библиотека для запросов к JS объектам и массивам
    0

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

  • Jsqry — библиотека для запросов к JS объектам и массивам
    –2

    Ну когда запрос настолько сложен, что требует дебага, можно и в коде переписать.
    А так-то можно и в 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 ]
  • Jsqry — библиотека для запросов к JS объектам и массивам
    0

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

  • Jsqry — библиотека для запросов к JS объектам и массивам
    –1

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

  • Jsqry — библиотека для запросов к JS объектам и массивам
    0

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


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

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

  • Jsqry — библиотека для запросов к JS объектам и массивам
    0

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


    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' ]
    
  • Чем заменить ELK для просмотра логов?
    +1
    Тема весьма интересная. Хотя я и не доконца понял вашу мотивацию, т.е. вообще постановку вопроса. Если не понравился интерфейс Kibana — не проще ли было просто доработать её или создать свой веб-интерфейс? Подозреваю, что реальным мотиватором был избыток молодецкого задора :-) Также зря отказались от Elasticsearch, очень уж хороший продукт.

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

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

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

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

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

    ideone.com/Gb2Bhl
  • Почему PHP устарел
    +1
    И нет, не совпадение, а дальновидность дизайнеров языка, которой я поражаюсь.

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

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

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

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

    david-m.livejournal.com/1117497.html
  • Почему PHP устарел
    0
    Двойное двоеточие позволяет визуально определить где обращение к объекту, а где вызов статики:

    А здесь обращение к объекту или к статике?

    class OtherClass extends MyClass
    {
        public function myFunc()
        {
            parent::myFunc();
            echo "OtherClass::myFunc()\n";
        }
    }
    


    А т.ж.

    So, word of warning: apparently, some PHP installations will let you use a $instance::method(), while others don't.

    Ну и зачем оно нужно было чтоб потом юзвери путались что им писать?

    Чтоб обосновать выбор стрелочки в качестве доступа к объектам — надо пойти чуть глубже: Распространённая практика использования символа "+" для конкатенации строковых значений.

    Это все понятно. Череда обратных совместимостей породила монстра. Нет, обратная совместимость, безусловно, нужна. Даже важнее чем новые фичи. Но Вы же сами оголяете противоречие. С одной стороны Вы говорите, что синтаксис был обусловлен уже существующими конструкциями языка, и с другой пишете что вам полученный синтаксис нравится даже больше. Совпадение? Возможно. Но больше похоже на оправдание.
  • Почему PHP устарел
    –2
    Бывает удобно — иногда, а некрасиво — всегда.
    Понятно, что можно найти тысячу оправданий несовершенству парсера. Туда же ::, \, -> и прочие.
  • Почему PHP устарел
    0
    Почему не позволит? Вот заменили array() -> [] тоже все удивлялись.
    Что такого принципиально невозможного? Почему в куче языков возможно, а в пхп нет?
  • Почему PHP устарел
    –1
    Наблюдаю краем глаза за лавинообразным развитием пхп последних лет, и сделал парадоксальный вывод. Чем быстрее пхп развивается, тем быстрее он умрет. Очень просто. Из него сделают недо-яву (без юникода, потоков, толковой типизации, тормозную, с «шумным» синтаксисом), и люди получат больше оснований сравнивать.
    А сравнив, сделают очевидный вывод.
    Процесс запущен.
    Мой прогноз: пхп умрет, когда отменят доллар в имени переменных.
  • Почему PHP устарел
    0
    Как там в 2015 — уже привинтили юникод-то?
    Один `[]` заменяет HashMap, HashSet, T[] (т.е. массивы) и прочее
    И оттого работает чудовищно неэффективно по памяти.
  • AngularJs $parse hacks
    0
    Можно короче:

    $scope.$eval('a + b')
    
  • Релиз Scala 2.11.0
    +1
    Груви чем хорош, он может быть одновременно и javascript'ом и java'ой — за счет опциональной типизации. Очень напоминает Dart в этом плане.
    Еще одна заманчивая особенность — полнейшая динамичность. Например, не только резолвинг методов выполняется по типу получателя (виртуальность, как в java), но и резолвинг методов по типу сигнатуры в runtime (мультиметоды, как в obj c, smalltalk). В общем-то из за такой сверх-динамичности на груви весьма удобно городить всякое метапрограммирование и DSL. В ущерб скорости, конечно, но всегда можно тормозящее написать на java.
  • Отладка Java приложения, когда оно совсем не ждёт — добро пожаловать в InTrace подход
    0
    Спасибо. Встречал аналогичный тул — btrace. Там профилирующие скрипты можно писать на java. Довольно гибко.
  • Как перейти от Java к Scala в вашем проекте
    0
    Свои проекты перевёл на Gradle недавно.


    Не показывает ли это что Groovy лучшая альтернатива?
  • Как перейти от Java к Scala в вашем проекте
  • Что Java 8 нам готовит
    +3
    Ну если вспомнить, для чего вообще ввели в жаве эти дефолты, то все станет понятно. А ввели для того, чтоб расширить базовые интерфейсы коллекций лямбда-примочками, не поломав уже написанный код, явно или неявно использующий оные интерфейсы.
  • Высокоуровневое программирование в 1975м году
  • Что можно узнать о кандидате по тестовому заданию
    0
    На angular jsfiddle.net/G7Pc2/
  • JAXB и XSLT с использованием StAX
    +2
    Говорят, еще vtd-xml.sourceforge.net/ хорош для такого
  • Инструментирующий профайлер своими руками
    +2
    Для подобного можно использовать kenai.com/projects/btrace
  • Релиз Java 8 передвинут на март 2014 года
    0
    Я в целом про то, что синтаксис Java не улучшается годами.

    А нужно оно? Золотое правило: работает — не трожь.

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

    То что можно сделать библиотеками — не нужно делать на уровне языка. Однородность и простота синтаксиса это плюс а не минус.