Отмена кэширования в Pentaho Report

Option1: You can navigate to \biserver-ee\tomcat\webapps\pentaho\WEB-INF\classes and change the configuration file «ehcache.xml»

<cache name="report-dataset-cache"
maxElementsInMemory="50"
eternal="false"
overflowToDisk="false"
timeToIdleSeconds="1"
timeToLiveSeconds="2"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="1"
/>

If you have done that and still no positive answer, I think you have not restarted the BA server. If the issue still exists comment below.

caching — How to clear cache in Pentaho — Stack Overflow

Option2: I have had the same problem — I get data from a report via a mondrian cube but when the data in DB changes, it is not reflected in the report unless i logout and login again. (i have also set report-cache to false and also in the cube definition cache is set to false).

Here is how i fixed it.

1) in pentaho-solutions\system\mondrian\mondrian.properties» — set «mondrian.rolap.star.disableCaching=» to true
2) in tomcat\tomcat\webapps\pentaho\WEB-INF\classes\classic-engine.properties add the line — org.pentaho.reporting.engine.classic.core.cache.DataCache=
3) in tomcat\tomcat\webapps\pentaho\WEB-INF\classes\ehcache.xml for cache name «mondrian-catalog-cache» set timeToIdleSeconds and timeToLiveSeconds to a small value, say 5

What is interesting is that if i do steps 1 and 2 it works for some reports, and for some reports just step 3 suffices. So for now i have done all three steps.

I am not sure if this will work for you since this approach is based on trial and error rather an understanding of how ehcache works in in the pentaho+mondrian setup.

So while it works for me , there is not a good feeling of comfort that this is the way to do it. Hopefully someone from the pentaho team can throw some light on this.

regards
-anish

Disabling cache for Pentaho

Java Decompiler

The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions.

JD-GUI is a standalone graphical utility that displays Java source codes of “.class” files. You can browse the reconstructed source code with the JD-GUI for instant access to methods and fields.

JD-Eclipse is a plug-in for the Eclipse platform. It allows you to display all the Java sources during your debugging process, even if you do not have them all.

JD-Core is a library that reconstructs Java source code from one or more “.class” files. JD-Core may be used to recover lost source code and explore the source of Java runtime libraries. New features of Java 5, such as annotations, generics or type “enum”, are supported. JD-GUI and JD-Eclipse include JD-Core library.

JD-Core, JD-GUI & JD-Eclipse are open source projects released under the GPLv3 License.

Java Decompiler (java-decompiler.github.io)

Очистка логов journalctl в Ubuntu

Для очистки логов по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб) можно использовать встроенные команды:

journalctl --vacuum-size=128M 
journalctl --vacuum-time=1d

Записки ученика iOS программиста

 Все знания полученные здесь взяты из книги «Swift разработка приложений в среде Xcode для iPhone и iPad».

 Исходный код можно получить с сайта GitHub https://github.com/Apress/beg-iphone-dev-w-swift-3

  • для изменения иконки приложения лучше воспользоваться сервисом https://appicon.co Находим изображение размером 1024х1024 и передаем этому сервису? он сам вернет архив с нужными иконками.
  •  Создание кода при помощи которого можно форматировать текст через swift:
Читать далее «Записки ученика iOS программиста»

Блокировка ipv6 запросов к vsftpd

При настройке vsftpd и включении ufw происходит блокировка.

Если в файле vsftpd.conf установлены следующие параметры

  • listen=NO
  • listen_ipv6=YES

и еще включен firewall и у Вас не работает подключение к ftp, то можно попробовать следующее.

В файле vsftpd.conf установить следующие параметры:

  • listen=YES
  • а listen_ipv6=YES закомментировать.

Оптимизация запросов из базы данных для мобильного приложения

  • Основным механизмом этого процесса является trigger в PostgreSql.Создается функция которая обновляет информацию о том, в каком состоянии находиться таблица. Состояние — это переменная в которой храниться время с типом данных double precision.
INSERT INTO core.sd_table_change (c_table_name, n_change)
VALUES (_c_table_name, (SELECT EXTRACT(EPOCH FROM now())))
ON CONFLICT (c_table_name) DO UPDATE
SET c_table_name = _c_table_name,
n_change = (SELECT EXTRACT(EPOCH FROM now()));
  • Далее создается триггер, который изменяет «состояние таблицы»
CREATE OR REPLACE FUNCTION core.cft_change_version() RETURNS trigger
   LANGUAGE plpgsql
   AS $$
BEGIN
   IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
      select core.sf_table_change_update(t.c_table_name_ref) from  (select TG_TABLE_NAME as c_table_name_ref UNION select  c_table_name_ref from core.sd_table_change_ref where c_table_name = TG_TABLE_NAME) as t; END IF; RETURN NEW;
END
$$;
ALTER FUNCTION core.cft_change_version() OWNER TO mobnius;
COMMENT ON FUNCTION core.cft_change_version() IS 'Триггер. Обновление справочной версии';
  • Для хранения информации о состоянии, создается 2 таблицы:
  1. Состояние таблиц — имя таблицы и её числовое состояние
  2. Таблицы зависимых состояний
CREATE TABLE core.sd_table_change (
c_table_name text NOT NULL,
n_change double precision NOT NULL
);
ALTER TABLE core.sd_table_change OWNER TO mobnius;
COMMENT ON TABLE core.sd_table_change IS 'Изменение состояния таблицы';
COMMENT ON COLUMN core.sd_table_change.c_table_name IS 'Имя таблицы';
COMMENT ON COLUMN core.sd_table_change.n_change IS 'Версия изменения';

ALTER TABLE core.sd_table_change
ADD CONSTRAINT sd_table_change_pkey PRIMARY KEY (c_table_name);
CREATE TABLE core.sd_table_change_ref (
id smallint DEFAULT nextval('core.sd_table_change_ref_id_seq'::regclass) NOT NULL,
c_table_name text NOT NULL,
c_table_name_ref text NOT NULL
);
ALTER TABLE core.sd_table_change_ref OWNER TO mobnius;
COMMENT ON TABLE core.sd_table_change_ref IS 'Зависимость таблиц состояний';
COMMENT ON COLUMN core.sd_table_change_ref.c_table_name IS 'Таблица';
COMMENT ON COLUMN core.sd_table_change_ref.c_table_name_ref IS 'Зависимая таблица';

ALTER TABLE core.sd_table_change_ref
ADD CONSTRAINT sd_table_change_ref_pkey PRIMARY KEY (id);

ALTER TABLE core.sd_table_change_ref
ADD CONSTRAINT sd_table_change_ref_c_table_name_fkey FOREIGN KEY (c_table_name) REFERENCES core.sd_table_change(c_table_name) NOT VALID;

ALTER TABLE core.sd_table_change_ref
ADD CONSTRAINT "sd_table_change_ref_cTable_name_ref_fkey" FOREIGN KEY (c_table_name_ref) REFERENCES core.sd_table_change(c_table_name) NOT VALID;

PostgreSQL: преобразование строки в число

В базе данных доступны следующие строки:

Исходные данные

Требуется в колонке c_house_number, которая является типом text, найти число и сохранить преобразованное значение в новой колонке:

Читать далее «PostgreSQL: преобразование строки в число»