Oracle NVARCHAR2を文字列連結するときの注意
検索したい該当カラムがNVARCHAR2でも連結すると暗黙変換でVARCHAR2となるらしく、4000byte以上はエラーとあるため、以下のようにTO_CLOB('')を連結しとく必要がある。
SQL> select col1 from foo_table where (TO_CLOB('') || col1 || col2) like '%検索%';
確認したOracleのバージョンは11.2
MacOS Xのはがきデザインキットが起動しない件
日本郵政の年賀状ソフトウェア「はがきデザインキット」を2015年の年末に使っていたのに2016年になってからなぜか使えなくなっていた。
ダブルクリックしてもソフトウェアが起動しない。コマンドラインから起動してみたら以下のようになる。
$ cd /Applications/ $ open -a はがきデザインキット LSOpenURLsWithRole() failed for the application /Applications/はがきデザインキット.app with error -10810. $
これだとわからないのでコンソール.appを起動して見てみた。
2016/01/17 10:00:11.423 はがきデザインキット[2427]: renaming failed with this error: Error Domain=NSCocoaErrorDomain Code=513 "“MacOS”へのアクセス権がないため、“はがきデザインキット”を移動できませんでした。" UserInfo=0x21a800 {NSSourceFilePathErrorKey=/Applications/はがきデザインキット.app/Contents/MacOS/はがきデザインキット, NSUserStringVariant=(
Move
), NSFilePath=/Applications/はがきデザインキット.app/Contents/MacOS/はがきデザインキット, NSDestinationFilePath=/Applications/はがきデザインキット.app/Contents/MacOS/はがきデザインキット_32, NSUnderlyingError=0x218b60 "操作を完了できませんでした。
アクセス権がありません"}
なんかパーミッションがないみたいなので以下を実行
$ cd はがきデザインキット.app/ $ cd Contents/ $ ls -l total 16 -rwxr-xr-x@ 1 root wheel 1926 11 29 14:44 Info.plist drwxr-xr-x@ 3 root wheel 102 11 29 14:44 MacOS -rwxr-xr-x@ 1 root wheel 8 10 28 2014 PkgInfo drwxr-xr-x 8 root wheel 272 11 29 14:44 Resources $ ls -alF MacOS total 72 drwxr-xr-x@ 3 root wheel 102 11 29 14:44 ./ drwxr-xr-x@ 6 root wheel 204 11 29 14:44 ../ -rwxr-xr-x@ 1 root wheel 34604 10 28 2014 はがきデザインキット* $ sudo chmod 777 MacOS Password: $
この後、ダブルクリックしてみたところ起動成功。OSバージョンアップしたわけでもソフトウェアをバージョンアップしたわけでもないのでこうなってしまった原因は不明。
で、起動成功後、バージョンアップを促される。なのでバージョンアップした。
バージョンアップした後、変更したディレクトリパーミッションだとまずいので見てみたところ、
$ pwd /Applications/はがきデザインキット.app/Contents $ ls -alF total 16 drwxr-xr-x@ 6 root wheel 204 1 17 10:06 ./ drwxr-xr-x 3 root wheel 102 1 17 10:06 ../ -rwxr-xr-x@ 1 root wheel 1926 1 17 10:06 Info.plist* drwxr-xr-x@ 3 root wheel 102 1 17 10:06 MacOS/ -rwxr-xr-x@ 1 root wheel 8 11 22 16:08 PkgInfo* drwxr-xr-x 8 root wheel 272 1 17 10:06 Resources/ $ ls -alF MacOS total 64 drwxr-xr-x@ 3 root wheel 102 1 17 10:06 ./ drwxr-xr-x@ 6 root wheel 204 1 17 10:06 ../ -rwxr-xr-x@ 1 root wheel 31252 11 22 16:08 はがきデザインキット* $
ディレクトリのパーミッションは元どおりになっている。これで起動できないのかと思っていたけど普通に起動できる。
エラーメッセージでは"_32"(32bitかよ)にリネームしようとしてパーミッションがないとか言っているんで、実はまずいバージョンを掴まされてただけ?
Javaスレッドで異なるインスタンスでも同期するためには
Javaでスレッドで同期するにはsynchronizedを使用するが、
synchronized public void foo() { .... }
や
public void foo() { synchronized (this) { .... } }
とした場合、同じインスタンスでの同期となる。
スレッドが異なるインスタンスを使用して同期しなきゃいけない時は、同期用オブジェクトをsynchronizedに指定してやれば良い。例ではクラス変数を参照して同期している。
package com.foobar.console; /** * スレッド同志で異なるインスタンスでも同期できるかのテスト */ public class Test00 { private static final int MAX_THREAD = 500; public static int counter = 0; public static final Object LOCK = new Object(); // 同期用オブジェクト public static void main(String[] args) { // スレッド生成 MyThread[] threads0 = new MyThread[MAX_THREAD]; MyThread[] threads1 = new MyThread[MAX_THREAD]; for (int i = 0; i < MAX_THREAD; i++) { threads0[i] = new MyThread(new Counter()); threads1[i] = new MyThread(new Counter()); threads0[i].start(); threads1[i].start(); } // スレッドが全て終了するのを待つ for (int i = 0; i < MAX_THREAD; i++) { try { threads0[i].join(); threads1[i].join(); } catch (InterruptedException e) { System.out.println(e); } } // カウンタを表示 System.out.println(counter); } } /** * スレッドクラス */ class MyThread extends Thread { private Counter counter = null; public MyThread(Counter counter) { this.counter = counter; } public void run() { this.counter.countUp(); } } /** * カウンタクラス */ class Counter { public void countUp() { synchronized (Test00.LOCK) { System.out.print("."); int n = Test00.counter; // カウンタ値を読み込み System.out.print("o"); Test00.counter = n + 1; // 加算してカウンタに設定 System.out.print("O"); } } }
参考にしたのは以下のサイト。
はてなブログに引っ越します
Windows8からWindows10にアップグレードしたらWSDプリンタが見えなくなって困った件
MacOS XのVMware上のWindows8からホスト側ネットワーク接続されたプリンタへの設定(WSD)で設定したプリンタがWindows10にしてから見えなくなっていた。原因不明。
とりあえず、上記URL通りにWSDでプリンタ追加をしようとしたら、
とエラーとなり追加できない。何度もやってみたけど同じ。
ググってみてもいい解決方法が見つからず、またCanonのサイトからドライバをダウンロードしてインストールをしようとしてみたけど、こちらはネットワーク(同じセグメントでないとダメ)もしくはUSB接続していないとインストールできない流れ。
諦めかけてたところでWindows Updateになったのでダウンロード、インストールして後、再度プリンタドライバを確認したところ、
なんと復活していた。
うーん、印刷できるけど、原因不明、気持ち良くない。
MacOSのfirefoxでgooglemapを見ると画面が乱れる件
OS | MacOS 10.7.5(Lion) |
---|---|
Software | firefox 44.0.2(現在最新) |
でgooglemapやPDF、javascriptで画像を入れ替えてたりすると画像が乱れるという現象に遭遇。firefoxがここ最近バージョンアップしてから(確証ないけど44になった辺りかと思うが)この現象に遭遇し、まったくもってgooglemapが見えないし気持ちも悪い。
いろいろ試してみて解決したのでログを残す。
肝心のGoogleMap
以下のように超キモい。GoogleMapにアクセスした最初は表示されるんだけど、きっとすべて読み込み完了後(jqueryでいえば$(document).ready()後のようなタイミング)にこんな感じになる。