2015年1月27日火曜日

Oracle 大量データ修正はSQLLoader

600万件のデータ修正を update 文で実行すると8 時間かかった。
delete & insert にしてもほぼ同じ。
CSV を吐き出してから、SQL Loader ならば2時間で取り込みまで完了する。
CSV 作るのが若干手間だが、初めからこうすればよかった。

2015年1月25日日曜日

Java で zip ファイル作成

以外と悩んだので、参考になったサイトのリンクを残す。

http://stackoverflow.com/questions/1399126/java-util-zip-recreating-directory-structure
java.net.URI の relativize() を上手く使って非常にわかりやすいコードになっている。勉強になります。


http://oshiete.goo.ne.jp/qa/5157299.html
日本語の記事ではこちらの記事が良かった。

2015年1月4日日曜日

Yahoo User Interface 2 Tree View 不用意にハッシュが消えてしまう事象の回避

お客さんの要望により、Javascript でツリーを表示を開発する。
いろいろなツリー表示のライブラリがあるが、自分が一番気に入っているのは、Yahoo User Interface 2 の Tree View だ。
YUI2 は開発停止しているものの、API が使いやすくて素晴らしいライブラリだと思う。


で、1つだけ問題が。
赤いところをクリックすると、アドレスバーのハッシュが消えてしまうのだ。


理由は、赤いところのタグがこうなっているから。

<a href="#" class="ygtvspacer"> </a>


この問題を回避するには、次のようにHTMLNode を継承すると良い。


var NewHtmlNode = function(oData, oParent, expanded, hasIcon) {
    if (oData) {
        this.init(oData, oParent, expanded);
        this.initContent(oData, hasIcon);
    }
};
//YUI2.9.0
YAHOO.lang.extend(NewHtmlNode, YAHOO.widget.HTMLNode, {
getNodeHtml:function(){
    var sb = [];

    sb[sb.length] = '<table id="ygtvtableel' + this.index + '" border="0" cellpadding="0" cellspacing="0" class="ygtvtable ygtvdepth' + this.depth;
    sb[sb.length] = ' ygtv-' + (this.expanded?'expanded':'collapsed');
    if (this.enableHighlight) {
        sb[sb.length] = ' ygtv-highlight' + this.highlightState;
    }
    if (this.className) {
        sb[sb.length] = ' ' + this.className;
    }
    sb[sb.length] = '"><tr class="ygtvrow">';

    for (var i=0;i<this.depth;++i) {
        sb[sb.length] = '<td class="ygtvcell ' + this.getDepthStyle(i) + '"><div class="ygtvspacer"></div></td>';
    }

    if (this.hasIcon) {
        sb[sb.length] = '<td id="' + this.getToggleElId();
        sb[sb.length] = '" class="ygtvcell ';
        sb[sb.length] = this.getStyle() ;
//修正ここから
//        sb[sb.length] = '"><a href="#" class="ygtvspacer">&#160;</a></td>';
        sb[sb.length] = '"><a class="ygtvspacer"> </a></td>';
//修正ここまで
    }

    sb[sb.length] = '<td id="' + this.contentElId;
    sb[sb.length] = '" class="ygtvcell ';
    sb[sb.length] = this.contentStyle  + ' ygtvcontent" ';
    sb[sb.length] = (this.nowrap) ? ' nowrap="nowrap" ' : '';
    sb[sb.length] = ' >';
    sb[sb.length] = this.getContentHtml();
    sb[sb.length] = '</td></tr></table>';

    return sb.join("");
}});


私が現在手がけているシステムは、jQuery History と連携させているのでハッシュが無くなると非常に困る。
もはや時代遅れと思うが、もしかしたら誰かの役に立つかもしれないので、記載しておきます。

2014年12月28日日曜日

iPhone App FTPManager

FTPManager

これは本当に使いやすい。
簡単な修正はもちろん、もしかしたらこれだけでスクリプト系言語の開発ができてしまうと思う。
今度はこれでアプリ作ってみたいな。
24時間、iPhone さえあればいつでも開発ができるのだ。

2014年12月18日木曜日

iPhone VNC client

外出先から家のマシンを操作したいと思い、iPhone のVNC(リモートデスクトップ)アプリをいくつか試してみた。
独断と偏見により下の2つをオススメしたい。

Remotix VNC & RDP
2,000円


VNC Viewer
無料


やってみると、iPhone でPCのデスクトップを操作するのはいろいろ無理があることが分かのだが、
これらの2アプリはかなりのレベルまで使いやすさが追求されている。
どちらもとても満足なのだが、個人的な違いは、仮想キーボードの有無だ。
Remotix の仮想キーボードはcopy, paster, 矢印キー が1画面に収まっている。
接続先で表計算ソフトを動かす時にこれは非常に助かるのだ。
試していないがゲームにも使える気がする。

2014年12月15日月曜日

Blogger OSX Safari でハングする

FireFox だと安定している気がする。

ネットのラジオ番組をiPhone で聞くやり方

複数のアプリをつかって、ネットのラジオ番組をiPhone で聞いています。
パソコンはMac を使っているが、windows でも似たようなことできると思う。

Mac のアプリ

iPhone のアプリ

手順
(1) Soundflowerbed を起動

(2) System preference --> Sound --> Output --> Multi Output Device を選択

(3) Audacity を起動、入力デバイスをSoundflower に指定。

(4) Audacity の録音機能を使って、番組を録音。

(5) Audacity の File --> Export で mp3 としてエクスポート

(6) iPhone の File Connect でssh 経由でパソコンに接続し、mp3 を取り込めば好きな時に再生できる。