«VK Tech Talks | Performance Advertising» ведёт на m.vk.com/wall-147415323_5257, откуда предлагают регистрироваться и ссылка на m.vk.com/app6013442_-147415323?form_id=12#form_id=12. А там пишут «Unfortunately, this page is unavailable in the mobile version.»
И вопрос по существу. Написано «Для тех, кто не сможет прийти, мы проведём онлайн-трансляцию в сообществе.». А запись есть? Может ссылочки выложите?
Если честно, не совсем понял. На сколько я вижу обе под одинаковыми лицензиями. Или есть разница? Если вам это правда нужно, я могу попробовать адаптировать на использование других имплементаций. Тогда хотелось бы подробнее понять потребность. Но это, полагаю, уже лучше в issue.
Ворнинги от groovy это лишь запуск тестов, они могут быть спокойно проигнорированы, подробнее в его багтрекере баг GROOVY-8339, то есть это никак не относится к плагину и Jaxb.
Groovy сам по себе отлаживать не проблема совершенно. Интересует как отлаживать то что мы внедрили таким изощрённым способом. Даже если подключиться дебаггером, там будет evaluate (execute) т.к. это фактически строка. Есть ли способ остановиться брэкпоинтом в коде?
Суть в том что если я внедряю в приложение логгинг подобным образом, вероятно у меня нет контроля над его исходным кодом (купленное проприетарное). То есть я не могу всё запустить в любимой IDE.
Второй вопрос здесь же — по примеру сделать скрипт легко, а если я пишу свой скрипт разбора и логгирование, а приложение стартует пару минут — поседеть можно отлаживать скрипт каждый раз перезапуская полностью. Есть ли возможность скрипт менять в рантайме?
Спасибо большое за интересные статьи и что продолжаете, как обещали.
Часть теории конечно вполне тривиальна, но здорово что всё вместе и последовательно.
Я хотел спросить на счёт порядка определения своего класса операторов. Скажем в вашем примере, сначала для комплексных чисел используется дефолтный метод. Что если мы сначала создадим btree индекс по этому полю, а потом уже определим класс операторов:
create operator class complex_ops
Достаточно ли postgres «умный» чтобы не стать использовать для индексов, создававшихся с другими операторами вновь созданный?
И если мы хотим чтобы старый индекс стал использовать новый класс операторов, его обязательно пересоздавать? Или есть другие возможности перестроения (REINDEX)?
Не могли бы вы пожалуйста пояснить подробнее про хранение NULL и что нужно было увидеть с помощью Pageinspect?
Я пытаюсь разобрать приведённый вами пример:
CREATE TABLE t1(x int, y int);
CREATE TABLE t2(x int not null, y int not null);
INSERT INTO t1 VALUES (1, 1)
SELECT * FROM heap_page_items(get_raw_page('t1', 0)) limit 1;
В особенности если это используется для тестирования, рекомендую просто подготовить Docker образ, и откатываться к любой закоммиченной точке в течении единичных секунд.
Задача, в том числе, максимально упростить вход разработчика в приложение, чтобы все инструкции по сборке и запуску приложения, от многодневных попыток, как это было еще с год назад, сводились к:
git clone …
./gradlew dockerRun
При этом бы приложение бы сразу запустилось, но не с игрушечной базой (как обычно делают вроде in-memory H2 для тестов с парой записей), а с базой, на которой, в том числе гоняются интеграционные и перфоманс тесты на CI и чтобы воспроизвести можно было 99.9% проблем из продакшена.
Более того, я для простоты этот шаг убрал, чтобы не засорять описание, но имея стабильную master ветку, я ещё прогоняю все имеющиеся там миграции на БД (c помощью flyway) в момент билда — так, чтобы эта база запускалась бы моментально.
У CitusDB нет более-менее эффективных произвольных JOIN'ов. Хотят видеть только JOIN по одинаковым распределённым ключам.
Простите, что значит нет?
Ещё с версии 4.х эквиджойны есть для любых таблиц:
CitusDB supports equi-JOINs between any number of tables irrespective of their size and distribution method. The query planner chooses the optimal join method and join order based on the statistics gathered from the distributed tables. It evaluates several possible join orders and creates a join plan which requires minimum data to be transferred across network.
Или вы имеете ввиду что работают они медленно и оптимизатор плохо справляется с локальностью данных?
Да, прошу прощения, но всё-таки очень хочется спросить ещё про In-Memory-Data-Grid, или In-Memory-SQL-Grid. Вы их рассматривали? В частности, например проект apache ignite предоставляет не только программный интерфейс в стиле Data Grid computing, но обещают прямо ANSI SQL-99 совместимость и стандартный JDBC доступ.
Очень интересно ваше мнение по этому поводу.
Добрый день. А ссылки-то на все доклады битые. 404 ошибка.
Есть возможность поправить?
github.com/ExchangeCalendar/exchangecalendar тоже поддерживает только версии thunderbird до 60, даже в альфа пре-релизах.
Получается альтернатив больше нет?
И вопрос по существу. Написано «Для тех, кто не сможет прийти, мы проведём онлайн-трансляцию в сообществе.». А запись есть? Может ссылочки выложите?
Так а нет проблемы!
Хотя в демо-проекте и указано sourceCompatibility = 1.8 это лишь чтобы не поднимать требования напрасно.
Т.к. явно указаны зависимости как API, таки имплементации, нет никаких проблем. Тесты нормально проходят под openjdk 11:
Ворнинги от
groovyэто лишь запуск тестов, они могут быть спокойно проигнорированы, подробнее в его багтрекере баг GROOVY-8339, то есть это никак не относится к плагину иJaxb.Суть в том что если я внедряю в приложение логгинг подобным образом, вероятно у меня нет контроля над его исходным кодом (купленное проприетарное). То есть я не могу всё запустить в любимой IDE.
Второй вопрос здесь же — по примеру сделать скрипт легко, а если я пишу свой скрипт разбора и логгирование, а приложение стартует пару минут — поседеть можно отлаживать скрипт каждый раз перезапуская полностью. Есть ли возможность скрипт менять в рантайме?
Часть теории конечно вполне тривиальна, но здорово что всё вместе и последовательно.
Я хотел спросить на счёт порядка определения своего класса операторов. Скажем в вашем примере, сначала для комплексных чисел используется дефолтный метод. Что если мы сначала создадим btree индекс по этому полю, а потом уже определим класс операторов:
Достаточно ли postgres «умный» чтобы не стать использовать для индексов, создававшихся с другими операторами вновь созданный?
И если мы хотим чтобы старый индекс стал использовать новый класс операторов, его обязательно пересоздавать? Или есть другие возможности перестроения (REINDEX)?
Я пытаюсь разобрать приведённый вами пример:
Вывод:
Вывод:
Абсолютно одинаковые.
Пробую вставит null значения:
И всё равно всё то же самое.
На каком основании сделать какая из них занимает меньше места?
P.S. Форматированный вывод, который выроятно будет удобнее смотреть: paste.fedoraproject.org/paste/z50hMUVlKZ4Idh0mgqTEBQ
ERROR: block number 0 is out of range for relation «t1»
Вероятно стоит добавить что для этого требуется в таблицу вставить хотя бы один кортеж.
При этом бы приложение бы сразу запустилось, но не с игрушечной базой (как обычно делают вроде in-memory H2 для тестов с парой записей), а с базой, на которой, в том числе гоняются интеграционные и перфоманс тесты на CI и чтобы воспроизвести можно было 99.9% проблем из продакшена.
Более того, я для простоты этот шаг убрал, чтобы не засорять описание, но имея стабильную master ветку, я ещё прогоняю все имеющиеся там миграции на БД (c помощью flyway) в момент билда — так, чтобы эта база запускалась бы моментально.
Простите, что значит нет?
Ещё с версии 4.х эквиджойны есть для любых таблиц:
Или вы имеете ввиду что работают они медленно и оптимизатор плохо справляется с локальностью данных?
Очень интересно ваше мнение по этому поводу.