Oracleは天然自然のように何事も問題が起きないように祈る、畏怖の対象

怒りを通り越してあきれるOracleユーザー |  ITPro

「Oracle Database(DB)は信頼性や可用性が高く、当社のシステムには欠かせない。しかしここ数年、保守料が右肩上がり。IT予算に占めるOracle DBの保守料金の割合が増えて困っている」

昔、私もオラクルをよく分かっていなかった頃、「なんかよく分からないけどすげぇRDBMS」くらいに思っていました。なんというか、理解を通り越して神秘的なもの、みたいな。

でもよくよく学んでいくと、オラクルの提供する機能の大半は、シンプルな他ののソフトウェアの組み合わせで置き換えられる事が分かってきました。現代において、オラクルでないと達成できない要件なんて、突き詰めればほとんどないはずです。

オラクルは利便性をもたらすようにも見えますが、反面でオラクルを利用する事による『複雑さ』が存在します。そしてITにおいて複雑さとは人件費とほぼ同義。

この利便性と複雑さのバランスがもう大分昔から、とれなくなっていたんです。利便性で得られる利益が、複雑さによるコストを、とうの昔から上回っていた。合理性だけで判断すれば「まだ使ってたのかよ!」レベルの話です。

ところが実際には「止めよう!」と思っても簡単には止められないんですよ。だって、オラクルを他のソリューションに置き換えるのってすげぇめんどくさい。合理的に考えてもめんどくさい。移行コストが、削減コストを大幅に上回るわけです。

しかもこれが何より問題なんですが――
オラクルというのは神秘的な存在なんで、これに手を付けようなどという罰当たりなエンジニアは存在しないんです。いやホントに。

昔、汎用機の時代にも、障害の原因をエンジニアが突き止めたら「巫女に神託が降りたぞ!」とかみんな言ってたわけですよ。これ、冗談のようで冗談ではなく、過度に複雑なITはもはや神秘的な存在であって、天然自然のように何事も問題が起きないように祈る、畏怖の対象なんです。

まぁ、要は何が言いたいかというと。
そろそろ手を付けておかないと、遠い未来、汎用機と同じだけのコストを負担するハメになるという事ですわ。

だって、何事も神秘的なモノほど儲かりますよね?合理性がない数字の裏付けが付けられないモノほど、高い利益率が紛れ込むのは全ての商売に共通のはずです。

CyanogenMod 13でnasneを視聴する

以下の方法を参考にすればcm13でも動きます。

CyanogenMod で DTCP-IP やパズドラを動かす【The Weight】

私も動作確認していますが、私の場合はrootは不要だったので、suのバイナリはmoveしたままにしています。
どのみちデバッグモード中はnasneは視聴できません。素直にデバッグモードもOFFにして、開発に使わないスマホ or タブレットとして運用するのが吉だと思います

CUBE T8 ultimate

中華タブレット、買ってしまいました。

002

開発中アプリの動作検証用&ノートPCでプログラミング時の外部モニタとして。
120ドルで、Full HDのオクタコアで4G対応。このスペックは2~3万円タブレットに相当し、国内キャリアのタブレットなら5万円クラスです。
中国の通販サイトでデビットカードで購入。我ながら恐れを知らない行為だと思いますね。
開封早々、20cm位の高さから落としてしまったところ、画面が映らなくなってしまいました。よもやその程度の衝撃で、モニタが壊れるなどとは思っていませんでした。しかし「きっと内部の接触だろう」と思って、タブレット全体を少しねじって曲げてみたところ、直りました。

まぁ何というか、叩いて直ったり壊れたりする、昭和のテレビのような製造品質の商品ですね。
その上、センサーが、加速度センサーとGPSくらいしか付いておらず、地磁気センサーすら付いていないため、ナビゲーションアプリがマトモに使えません。回転軸センサーがないのでゲームも多くが動かないでしょう。

さらには、内蔵ストレージパーティションの切り方がおかしく、アプリのインストールに使える領域は1GBもありません。やむを得ないので、公式サイトからファームを落としてきてインストールし直し、パーティションを一つにまとめました。

ファームをインストールする時に表示された多分中国語で言うところの【自己責任】表示が印象的でした。中華製で自己責任とか、嫌な予感しかしませんでしたが、通販サイトにデビットカードの番号を入力した私には怖いものはありません。

結局の所、ファームを入れ替えたところ調子は大変良好で、今は当初の予定を裏切り、普通にタブレットとして便利に使っています。
・・・と、今日、取引先でその話をしたら「火事にならないように注意してくださいね」といわれてしまいました。

購入される方は、予め、契約している火災保険が爆発にも対応しているか、確認しておくことをお勧めします。

WordPressの自動<br>と<p>タグの挿入を止める

投稿や固定ページで、本文を入力すると改行部分に自動的にbrやpタグが入ってしまう。

昔からある課題で、解決策も『プラグイン導入!』と紹介されていることがほとんどですが、最近はそれらのプラグインがさすがに古すぎて、導入がためらわれるようになってきました。
もうWordpressも3.xですからね。

WordPressの3.xにちゃんと対応しているプラグインがありますので、ご紹介。

【便利プラグイン】TinyMCE Buttons Arrangement 編集画面カスタマイズツール | 無料でつくる!ビジネスに活かせるワードプレス(WordPress)作成講座

プラグインの新規追加で「TinyMCE Buttons 」と打ち込んで検索すれば一覧に出てくると思います。

プラグインを有効化すると、設定メニューの中に『TinyMCE Advanced』という項目が増えているので、クリック。そして表示された画面の一番下『Advanced Options』にある『Stop removing the <p> and <br /> tags 』のチェックを外せば完了です。

これで、brタグやpタグが入らなくなるはず。

もっとも、brタグやpタグが入って困るようなところはそもそもテンプレート側に持っておくべきであると思いますけどね。

KalturaにUPしたコンテンツのセキュリティはどのようになっているか?

Kltuaには元々アクセス制限の機能が備わっている。

Kalturaアクセス制限のかけかた

端的に言うと以下のコンテンツ保護機能がある

  1. 動画の直リンク禁止機能
  2. RTMPのストリーミングによる配信

1は動画をコピペでいろんなサイトに貼り付けられないようにする制限のこと。要は意図しない直リンク禁止機能。crossdomain.xmlで実現できる機能とほぼ同等と思っていい。2はストリーミング配信で、クライアントにキャッシュが残ることを防ぐ機能。ただ、ストリーミング配信単体で運用しても、コンテンツ保護の観点からは気休め程度にしかならないだろう。

さらに上記機能に加えて以下のような保護がなされている


● FLVファイルのリアルパス隠蔽機能

Kalturaのプレイヤーを利用する限り、ユーザーの目にFLVの実体パスが目に触れることはない。FLVの実体パスはウィジェットのHTMLには埋まっておらず、SWFに埋まっている。/opt/kaltura/web/content/entry/data/ 以下にFLVの実体ファイルは保管されている。ファイル名が分かっていればFLVに直接アクセスすることは可能。

しかし、Kalutra自身はすべてのコンテンツをコントローラー(index.php)経由で返却しているので、/opt/kaltura/web/content/entry/data/ にApacheのアクセス制限をかけることで、容易に直接アクセスを制限することができる。/etc/httpd/conf.d/my_kaltura.conf の中に上記ディレクトリのアクセス制限を書けばいいだろう。

もっとも、セキュリティの観点からはもう一つ欲しい機能がある。それは閲覧範囲の制限。


● 閲覧する人を制限する機能(IP制限であったり、あるいは認証システム連携して閲覧範囲を制限するとか)

実はこの機能もKalturaには備えられている。上記で紹介した「Kalturaアクセス制限のかけかた」の手順で、最後に「Advanced security & Pey-per-view」を選べばよい。

前述の通りKalturaはすべてのコンテンツをindex.php経由で返しており、これによってコンテンツの公開範囲などをコントロールしている。このKalturaの閲覧制限との連携をとる仕組みを「Kaltura Session」といい、このセッション機能を使えば、たとえばPHPで開発したアプリなどとの認証連携が可能になるという理屈のようだ。

ドキュメントはきわめて少なく、探したがそれらしい情報は公式ブログ(英語)くらいにしかなかった。

Create KS protected videos with free preview | Kaltura Developer Blog

あとは公式ドキュメント

KalturaAPI:startsession – Kaltura Wiki

PHPからExcelファイルを出力する際に必要なヘッダ

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

swfmillで日本語を正しく取り扱うには?

Flash(SWF)をXMLに変換したり、あるいは逆にXMLからSWFを生成したりするswfmill。XMLに変換できるということは、アクションスクリプト内に記述した変数の中身を置換できたりするということ。つまり、動的に値が変化するFlashを作成することが出来る。

そんなものXMLでやればいいじゃないかと思うかもしれないが、ガラケーのFlash Liteの実装は超テキトーで、仕様書通りに動いてはくれない。そういうわけで、携帯サイト向けのFlash動的生成にはswfmillがよく使われているわけだ。

ところがこのswfmill、日本語を扱うと正しくXML>SWFの変換が行えない。ググると関連する情報が幾つか見つかるが、どれもバージョンが古いモノが対象らしく、私の場合は正しく動作しなかった。

結論から言うと、swfmillの実行オプションとか、そういうもので努力するよりも日本語を数値文字参照に置き換えてしまった方がよい。以下はPHPのサンプル。


$sentence = '日本語の文字列。';
$xml = file_get_contents( 'XMLファイルへのパス' );
$xml = str_replace( '%%randomSentence%%' , mb_convert_encoding($sentence, 'HTML-ENTITIES', 'UTF-8'), $xml );

mb_convert_encodingを用いて数値文字参照に変換するのがポイント(参考)。’HTML-ENTITIES’を指定すると数値文字参照に変換できる。こうして置換したXMLをswfmillを用いてSWFに変換すれば、正しく日本語が扱えるという具合だ。ググるといろいろな方法が見つかったが、まともに動いたのは私の場合この方法だけだった。

CentOS 5.x にyumでTrueCrypt をインストール

RPMforgeにTrueCryptは登録されているので、コマンド5つ打ち込めば、インストールできる。以下は64bit版の場合。

# wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt
# wget http://packages.sw.be/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
# yum install truecrypt