セッションのタイムアウト

セッションのタイムアウトtomcatならデフォルト30分。以下のファイル。

  • conf/web.xml (共通)
  • webapps/foobar/WEB-INF/web.xml (アプリごと)
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

参考サイト

http://natsumisane.sakura.ne.jp/blog/2017/10/11/post-118/ http://d.hatena.ne.jp/zabadaq/20080108/1199811729

リロードしてもウィンドウオブジェクトを保持しておく方法(javascript)

ウィンドウをリロードするとグローバル変数に保存していた子供のウィンドウオブジェクトがわからなくなる(当然)。 その場合は、以下の方法が考えられる。

そのウィンドウ(W2)に親ウィンドウ(W1)がいる場合

その親にグローバル変数を持たせて以下のようにする

// W1
var child;

// 子供のウィンドウを生成するウィンドウ(W2)
window.opener.window.child = window.open('URL', 'mySon');

同じ名前でURL無指定

window.open()にURL無指定で同じウィンドウ名を指定すると同じ名前なので見失った子供のウィンドウオブジェクトを生成できる。

var child;

if (child == undefined) {
  child = window.open('', 'mySon');
}

ただし、子供すでにいない場合は空白のウィンドウを生成してしまう。

SQLでのマルチバイト(全角)のワイルドカード(%, _)

動かないであろうと思った以下のselectがちゃんと動いた。

select * from table
 where TO_MULTI_BYTE(UPPER(COLUMN_NAME)) like TO_MULTI_BYTE(UPPER('%test%'));

http://metroit.hatenablog.jp/entry/2017/05/12/095949

を見ると

  • Oracle のバージョンが11.2.0.3 未満の場合は動作する。
  • Oracle のバージョンが11.2.0.3 以上の場合は動作しない。

とあり、そのものズバリで、動いた環境は10.2.0.2だったのだ。やはり、

select * from table
 where TO_MULTI_BYTE(UPPER(COLUMN_NAME)) like '%' || TO_MULTI_BYTE(UPPER('test')) || '%';

と書くべき。

PL/SQL配列・ループテスト

PL/SQLの配列=コレクション型 に詳細がある。配列は1オリジン。配列のメソッドについては、 配列で使用可能なメソッド が詳しい。

/*
 * C:\> C:\ORACLE\PRODUCT\XX.Y.Z\CLIENT_1\bin\sqlplus.exe USER/PASSWORD@SCHEMA
 * SQL> SET SERVEROUTPUT ON
 */

DECLARE
  TYPE tCodeArray IS VARRAY(100) OF TABLE_A.ID%TYPE;
  vOperCodes tCodeArray := tCodeArray('select', 'insert', 'update', 'delete');
  
  PROCEDURE testProcedure (num IN NUMBER, kind IS VARCHAR2) IS
    vNumber VARCHAR(10);
    vId     TABLE_A.ID%TYPE;
    vName   TABLE_A.NAME%TYPE;
  BEGIN
    vNumber := TO_CHAR(num, 'FM0000');
    vId := 'TEST' || vNumber;
    vName := 'テスト' || TO_MULTI_BYTE(vNumber);
    IF (kind = 'insert') THEN
      DBMS.OUTPUT.PUT_LINE('Inserting to XXXX was succeeded. ID='
          || vId || ' NAME=' || vName);
    ELSIF (kind = 'delete') THEN
      DBMS.OUTPUT.PUT_LINE('Deleting from XXXX was succeeded. ID='
          || vId || ' NAME=' || vName);
    ELSE
      DBMS.OUTPUT.PUT_LINE('Not execute');
    END IF;
  EXCEPTION
    WHEN OTHERS THEN
      DBMS.OUTPUT.PUT_LINE('Error occured. ID=' || vId);
  END;

BEGIN
  FOR i IN 1 .. vOperCodes.count LOOP
    IF (MOD(i, 2) = 0 OR i = 3) THEN
      testProcedure(i, vOperCodes(i));
    ELSE
      DBMS.OUTPUT.PUT_LINE('Not target=' || vOperCodes(i));
    END IF;
  END LOOP;
END;
/

Windows Modules Install Workerがとてつもなく重い件

Windows10 on VM(Memory4GBの1Core)で動かしていて、Windows Modules Install Workerが起動しちゃうと重くてどうしようもない。

WindowsModulesInstallWorker爆食い
WindowsModulesInstallWorker爆食い
終了するまでほっとくしかないらしいが、CPU一人で食べまくりって。。。リミッター付けらんないのかなぁ。。。

eclipse 4.8 Photon(pleiades)へのTomcat Pluginインストール

eclipse 4.8 Photon(pleiades)にはTomcat Pluginがインストールされていない。 なので、メニュー「ヘルプ」の「Eclipseマーケットプレース」からインストールする。

通常

Eclipseマーケットプレース画面で、tomcatで検索すると Tomcat Pluginが表示されるので「インストール」。 同意画面で同意すれば、インストール後、「再起動しますか」と聞いてくるので再起動。

f:id:kazuokohchi:20190705142249p:plain
eclipse market place

その2

上記方法では、「リポジトリが読み取れない」みたいなエラーになってインストールできない場合があった。 その場合は以下のサイトを参照してEclipse Tomcat Plugin - Browse Files at SourceForge.netからzipをダウンロードし、メニュー「ヘルプ」の「新規ソフトウェアのインストール」からインストール可能だった。

eclipse Neon(4.6)にTomcatプラグインをインストールする方法

うーん、何が違うんだろう???

VMware Fusion上のWindows10でのALT+Print Screenはどうするのか

Windows10 on VMware Fusion でのALT + Print ScreenはOption + F13のようです。 Macに慣れているとデスクトップにファイルが出来るつもりでいますが、Windowsではクリップボートに コピーされるだけなので自分でペイントなりに貼り付けてあげます(Option+F13した後、あれ?できねーって暫く考えてた^^;)。

また、PrintScreenだけなら、「仮想マシン」の「キーの送信」から「Print Scrn」を選べるようです。

その他のキーマッピングも設定できるようで以下のサイトを参照のこと。

(Mac)VMware Fusion 8で仮想マシン(Windows8.1)上でのアクティブウィンドウのスクリーンショットをキャプチャするショートカットキーを追加する