Pull to refresh
12
0
Павел @Hubbitus

Архитектор ИТ

Send message

Добрый день. А ссылки-то на все доклады битые. 404 ошибка.
Есть возможность поправить?

Похоже кончилась…
github.com/ExchangeCalendar/exchangecalendar тоже поддерживает только версии thunderbird до 60, даже в альфа пре-релизах.

Получается альтернатив больше нет?
«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.

Так а нет проблемы!
Хотя в демо-проекте и указано sourceCompatibility = 1.8 это лишь чтобы не поднимать требования напрасно.


Т.к. явно указаны зависимости как API, таки имплементации, нет никаких проблем. Тесты нормально проходят под openjdk 11: image


Ворнинги от groovy это лишь запуск тестов, они могут быть спокойно проигнорированы, подробнее в его багтрекере баг GROOVY-8339, то есть это никак не относится к плагину и Jaxb.

Groovy сам по себе отлаживать не проблема совершенно. Интересует как отлаживать то что мы внедрили таким изощрённым способом. Даже если подключиться дебаггером, там будет evaluate (execute) т.к. это фактически строка. Есть ли способ остановиться брэкпоинтом в коде?

Суть в том что если я внедряю в приложение логгинг подобным образом, вероятно у меня нет контроля над его исходным кодом (купленное проприетарное). То есть я не могу всё запустить в любимой IDE.

Второй вопрос здесь же — по примеру сделать скрипт легко, а если я пишу свой скрипт разбора и логгирование, а приложение стартует пару минут — поседеть можно отлаживать скрипт каждый раз перезапуская полностью. Есть ли возможность скрипт менять в рантайме?
Как вы отлаживаете код, написанный в XML для aspectj-scripting?
Да, конечно. JMeter многое умеет, например тот же JDBC (БД). SMTP, LDAP, FTP, MOM, JMS и многое другое. Можно писать свои протоколы плагинами.
Спасибо большое за интересные статьи и что продолжаете, как обещали.
Часть теории конечно вполне тривиальна, но здорово что всё вместе и последовательно.

Я хотел спросить на счёт порядка определения своего класса операторов. Скажем в вашем примере, сначала для комплексных чисел используется дефолтный метод. Что если мы сначала создадим 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;

Вывод:

 lp     lp_off     lp_flags     lp_len     t_xmin     t_xmax     t_field3     t_ctid     t_infomask2     t_infomask     t_hoff     t_bits     t_oid     t_data           
 -----  ---------  -----------  ---------  ---------  ---------  -----------  ---------  --------------  -------------  ---------  ---------  --------  ---------------- 
 1      8160       1            32         4302       0          0            (0,1)      2               2048           24         (null)     (null)    0100000001000000


INSERT INTO t2 VALUES (1, 1)
SELECT * FROM heap_page_items(get_raw_page('t2', 0)) limit 1;


Вывод:
 lp     lp_off     lp_flags     lp_len     t_xmin     t_xmax     t_field3     t_ctid     t_infomask2     t_infomask     t_hoff     t_bits     t_oid     t_data           
 -----  ---------  -----------  ---------  ---------  ---------  -----------  ---------  --------------  -------------  ---------  ---------  --------  ---------------- 
 1      8160       1            32         4303       0          0            (0,1)      2               2048           24         (null)     (null)    0100000001000000 


Абсолютно одинаковые.

Пробую вставит null значения:
INSERT INTO t1 VALUES (null, null)
SELECT * FROM heap_page_items(get_raw_page('t1', 0)) limit 1;


 lp     lp_off     lp_flags     lp_len     t_xmin     t_xmax     t_field3     t_ctid     t_infomask2     t_infomask     t_hoff     t_bits     t_oid     t_data           
 -----  ---------  -----------  ---------  ---------  ---------  -----------  ---------  --------------  -------------  ---------  ---------  --------  ---------------- 
 1      8160       1            32         4302       0          0            (0,1)      2               2048           24         (null)     (null)    0100000001000000


И всё равно всё то же самое.

На каком основании сделать какая из них занимает меньше места?

P.S. Форматированный вывод, который выроятно будет удобнее смотреть: paste.fedoraproject.org/paste/z50hMUVlKZ4Idh0mgqTEBQ
На postgres 9.6, как минимум, команда просмотра заголовка для таблицы выдаёт ошибку:
SELECT * FROM heap_page_items(get_raw_page('t1', 0)) limit 1;

ERROR: block number 0 is out of range for relation «t1»

Вероятно стоит добавить что для этого требуется в таблицу вставить хотя бы один кортеж.
Ссылка в статье https://habrahabr.ru/company/tcsbank/blog/248853/ не корректная, видимо имелась ввиду https://habrahabr.ru/company/tinkoff/blog/248853/.
В особенности если это используется для тестирования, рекомендую просто подготовить Docker образ, и откатываться к любой закоммиченной точке в течении единичных секунд.
Задача, в том числе, максимально упростить вход разработчика в приложение, чтобы все инструкции по сборке и запуску приложения, от многодневных попыток, как это было еще с год назад, сводились к:

git clone …
./gradlew dockerRun


При этом бы приложение бы сразу запустилось, но не с игрушечной базой (как обычно делают вроде in-memory H2 для тестов с парой записей), а с базой, на которой, в том числе гоняются интеграционные и перфоманс тесты на CI и чтобы воспроизвести можно было 99.9% проблем из продакшена.

Более того, я для простоты этот шаг убрал, чтобы не засорять описание, но имея стабильную master ветку, я ещё прогоняю все имеющиеся там миграции на БД (c помощью flyway) в момент билда — так, чтобы эта база запускалась бы моментально.
Будет здорово, если напишете развёрнутую статью в продолжение сравнения.
Я так понимаю это просто повтор перевода https://habrahabr.ru/post/322440/?
У 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 доступ.
Очень интересно ваше мнение по этому поводу.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity