UbuntuにOracle 12cを入れようとして文字化けしたOUIとDBCAを日本語にする
仕事でVirtualBoxに立てたUbuntu(14.10)にOracle 12c(12.1.0.2.0)を入れることになったのですが、
インストール完了までは鬼のようにハマりどころがありました。
今回はインストーラーのOUI(Oracle Univeral Installer)と
データベースを作成するツールのDBCA(Database Configuration Assistant)が
以下のようにトウフな感じに文字化けしたので、その対処法を紹介します。
OUI(Oracle Univeral Installer)
DBCA(Database Configuration Assistant)
OUIの文字化けの直し方
OracleをインストールするときはJREが必要になります。
インストーラーにはJavaが含まれているのですが実はこれが罠で、
Oracle付属のJREを指定すると文字化けを起こしますw
理由はおそらくOracle製品に含まれているJREの日本語パッケージが、
Ubuntuに合っていないためだと思われます。
対処法はOpenJDKをインストールして、
インストーラーのオプションにOpenJDKのパスを指定して実行します。
手順は以下になります。
1. OpenJDKをインストールします
sudo apt-get install default-jre
Windowsに構築したXAMPP + NetBeansのPHP開発環境にComposerを設定する
前回のエントリ(XAMPP + NetBeansで作ったPHP開発環境でデバッグできるようにする - 猫にWeb)で
NetBeansでPHPプログラムをデバッグでステップ実行できるようになりました。
今回はPHPのパッケージ管理ツールであるComposerを設定してNetBeansから利用する手順を紹介します。
パッケージ管理は依存関係もあるので、やはりツールにまかせたほうが得策です。
Composerを使うことでプロジェクト単位でパッケージ管理をすることができます。
他にもComposerにはオートローディングという機能があり、requireやincludeを書かなくても必要なライブラリのファイルを読み込んでくれます。
手順としてはこんな感じです。
1. Composerをインストールする
Composerは公式サイトからインストーラーをダウンロードしてインストールすることもできますが、
コマンドプロンプトで実行した方が楽チンなので、コマンドでインストールします。
コマンドによる手順も公式サイトに書かれています。
phpがあるディレクトリに移動して以下のコマンドを実行します。
> cd c:\xampp\php > php -r "readfile('https://getcomposer.org/installer');" | php > echo @php "%~dp0composer.phar" %*>composer.bat
上記が終わって以下のコマンドを実行してバージョンが表示されたらOKです。
> composer -V > Composer version 1.0-dev (4d134ce8a2aacb9566fee8deb8c514248fd2a983) 2015-04-08 13:43:49
3. NetBeansにComposerを設定する
「ツール」 → 「オプション」 → 「フレームワークおよびツール」を選択します。
左サイドから「コンポーザ」を選択して、「コンポーザ」に手順1で作成したcomposer.pharを設定します。
ネットでよくある手順では、ここから新規にプロジェクトを作成して、
プロジェクトを選択して、「コンポーザ」の「初期化」を選択するのですが、
私の環境では以下のエラーが発生しました。
[RuntimeException] JSON encoding failed: Malformed UTF-8 characters, possibly incorrectly encoded
色々調査したのですが、根本的な解決法は見つけられませんでした。
ただし、NetBeansで「コンポーザ」の「初期化」時にやっているのは以下のコマンドを実行して、
composer用の設定ファイルであるcomposer.jsonを作成しているだけです。
php composer.phar init
そこで以下の手順を追加で実施して解決しました。
5. 初期化コマンドを直接実行する
コマンドプロンプトを起動して、作成したプロジェクトの直下に移動して以下のコマンドを実行します。
プロジェクトからcomposer.pharファイルへの相対パスを指定してください。
> php ..\..\php\composer.phar init
色々聞かれますが、後から修正できるので全部デフォルトでOKです。
ただし、Authorはフォーマットを「John Smith
それとラスト2つの質問はNOでOKです。
Would you like to define your dependencies (require) interactively [yes]? no Would you like to define your dev dependencies (require-dev) interactively [yes]? no
これでcomposerの設定ファイルcomposer.jsonがプロジェクト配下に作成されます。
ここでぶっちゃけるとcomposer.jsonはこんなファイルなので手動で作っても全然OKですw
{ "name": "necoyama3/sample", "authors": [ { "name": "necoyama3", "email": "necoyama3@gmail.com" } ], "require": {} }
これで準備はOKです。
「コンポーザ」 → 「依存性の追加」で好きなライブラリを検索して依存関係を含めたライブラリをダウンロードして管理することができます。
以上です。お疲れ様でした。
改めて思うのはWindowsで軽量言語の開発はするべきじゃないんだけど、
仕事の都合でしかたないのよね。
XAMPP + NetBeansで作ったPHP開発環境でデバッグできるようにする
以前のエントリ(WindowsにXAMPP + NetBeansでPHP開発環境を簡単に構築する - 猫にWeb)で
WindowsマシンにXAMPPとNetBeansを使ってPHPの開発環境を構築しました。
ただし、このままではブレークポイントをつけてもデバッガが止まらずステップ実行ができません。
少しゴニョゴニョしなければならないので、今回はその辺の手順を紹介していきます。
1 php.iniファイルを編集する
[xamppをインストールしたディレクトリ]\php\php.iniをエディタ等で開き以下を編集します。
L264付近 [Before] output_buffering=4096 [After] output_buffering=Off
L2079付近の[XDebug]の設定 [Before] ;zend_extension = "C:\xampp\php\ext\php_xdebug.dll" ;xdebug.profiler_append = 0 ;xdebug.profiler_enable = 1 ;xdebug.profiler_enable_trigger = 0 ;xdebug.profiler_output_dir = "C:\xampp\tmp" ;xdebug.profiler_output_name = "cachegrind.out.%t-%s" ;xdebug.remote_enable = 0 ;xdebug.remote_handler = "dbgp" ;xdebug.remote_host = "127.0.0.1" ;xdebug.trace_output_dir = "C:\xampp\tmp" [After] zend_extension = "C:\xampp\php\ext\php_xdebug.dll" ;xdebug.profiler_append = 0 ;xdebug.profiler_enable = 1 ;xdebug.profiler_enable_trigger = 0 xdebug.profiler_output_dir = "C:\xampp\tmp" ;xdebug.profiler_output_name = "cachegrind.out.%t-%s" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "127.0.0.1" ;xdebug.trace_output_dir = "C:\xampp\tmp"
2 Apacheを再起動する。
WindowsにXAMPP + NetBeansでPHP開発環境を簡単に構築する
仕事でWindows(OSは7の64bit)マシンにPHPの開発環境を構築することになりました。
IDEとエディタのどちらで実装するか迷ったのですが、PHP初体験ということでIDEを使うことにしました。
本当はIDEにPhpStormを使いたかったのですが、当然無料のツールだけしか使えないのでNetBeansにしました。
理由としては、ノウハウが多い、公式のドキュメントがしっかりしてる、ネットの評価がけっこう良かったところです。
調べてみると上記以外にも色々あって(知らないのも結構あった)、後は好みの問題かなと思います。
PHPの開発にはPHPとWebサーバー(例えばApache)が必要なのですが、
これらも個別にインストールするより、XAMPPを利用した方が楽チンでした。
XAMPPとはApacheのディストリビューションで、Apacheに加えてPHP、Perl、MySQLなどを一括でインストールすることができます。
読み方はザンプというらしいです。
そんなわけで前置きが長くなりましたが、
XAMPPのインストールからNetBeansでPHP実行可能なところまで構築していきます。
2. XAMPPのインストール
ダウンロードしたexeファイルをクリックします。
いきなりこんなダイアログが出て、ウイルス対策ソフトを入れていると遅くなるとか言ってくるけど、
おかまいなしに「Yes」をクリックします。
この画面で必要なソフトウェアを選択します。
最低限必要なのはPHPとApacheです。それ以外は自由に入れてください。
インストールする先も任意でOKですが、
Windowsだと半角スペースが入っていないパスの方が良いと思います。
チェックボックスにチェックを入れて「Finish」をクリックすると、
XAMPPのコントロールパネルが起動します。
http://localhostにアクセスして以下の画面が表示されたら、Apacheは正常に動作しています。
23:13:08 [Apache] Problem detected! 23:13:08 [Apache] Port 80 in use by "Unable to open process" with PID 4! 23:13:08 [Apache] Apache WILL NOT start without the configured ports free! 23:13:08 [Apache] You need to uninstall/disable/reconfigure the blocking application 23:13:08 [Apache] or reconfigure Apache and the Control Panel to listen on a different port
上記のようなエラーが出た場合は、80番ポートを他のソフトウェアが使用している場合です。
Windowsの場合はIISの可能性が高いと思います。
Apacheが起動するためのポート番号を変更したい場合は、
[XAMPPをインストールしたディレクトリ]\apache\conf\httpd.confをエディタ等で開いて以下を編集します。
58行目付近 #Listen 80 Listen 81 219行目付近 #ServerName localhost:80 ServerName localhost:81
ポート番号を変更した場合はhttp://localhost:81で起動してください。
4 Javaのインストール
ダウンロードしたexeファイルをクリックします。
すべてデフォルトの設定でOKです。
6 NetBeansのインストール
ダウンロードしたexeファイルをクリックします。
すべてデフォルトの設定でOKです。
7 NetBeansしてPHPプロジェクトを作成
NetBeansを起動してメニューの「ファイル」 → 「新規プロジェクト」をクリックします。
カテゴリは「PHP」、プロジェクトは「PHPアプリケーション」を選択して「次へ」をクリックします。
プロジェクト名を入力して、「次へ」をクリックします。
ソース・フォルダは自動的にApache管理下のディレクトリに設定されています。
「終了」をクリックします。
フレームワークを使用したい場合はここでチェックを入れます。
完了するとプロジェクトが作成され、index.phpファイルが自動で開きます。
<?php print "Hello World"; ?>
上記のように実装して保存し、Ctrl + F5をクリックします。
ブラウザが起動して「Hello World」が表示されれば完了です。
次はデバッグの設定やComposerによるパッケージ管理、PostgreSQLとの連携等をやっていきます。
Homebrew Caskのコマンドがエラーで動かなくなった時の解決方法
Macのアプリ管理はHomebrew Caskでやっているんですが、
先日インストール一覧を確認しようとしたこんなエラーが出ました。
Error: wrong number of arguments (1 for 0) while loading '/usr/local/Library/Taps/caskroom/homebrew-cask/Casks/alfred.rb' Please report this bug: https://github.com/caskroom/homebrew-cask/issues <main>:5:in `name' <main>:5:in `<class:Alfred>' <main>:in `<main>' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/source/path_base.rb:55:in `eval' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/source/path_base.rb:55:in `rescue in load' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/source/path_base.rb:52:in `load' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask.rb:120:in `load' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/scopes.rb:55:in `block in installed' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/scopes.rb:49:in `map' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/scopes.rb:49:in `installed' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/cli/list.rb:52:in `list_installed' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/cli/list.rb:10:in `run' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/cli.rb:81:in `run_command' /usr/local/Cellar/brew-cask/0.43.1/rubylib/cask/cli.rb:121:in `process' /usr/local/bin/brew-cask.rb:42:in `<top (required)>' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' /usr/local/Library/brew.rb:58:in `require?' /usr/local/Library/brew.rb:141:in `<main>'
とりあえずいつもの感じでアップデートと診断コマンドを実行したら
necoyama3:~ $brew update && brew doctor Already up-to-date. Your system is ready to brew. necoyama3:~ $
てな感じで正常に動作してるので、
もう一度「brew cask list」コマンドで一覧を見てみようとしたら同じエラーが出ました。
そこでおとなしくエラーログにあるissuesを見に行って、
最終的に以下のコマンドを実行したら正常に動作するようになりました。
brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup
やっぱり最初からエラーログのissues見に行くほうが賢いですね。
僕が思う最強のWindowsコマンドプロンプト
MacやLinuxでの作業が多いと、
Windowsのコマンドプロンプトを使った時に貧弱すぎてテンションが下がることがあります。
今までは「Cygwin」を入れることが多かったのですが、
とにかくインストールがメンドくさいし、めちゃくちゃ時間がかかります。
ほったらかしにしても、途中でエラーのダイアログが出て止まってたりとかもよくあります。
そこでもっと短時間でできるLinuxライクなコマンドプロンプト環境を作ってみました。
全部で6つの作業を行います。多いw
1. Linuxコマンドを使えるようにする
「Gow」というツールをインストールします。
インストールは全てデフォルトのままで進めていきます。
環境変数のPathへの追加も自動でしてくれます。
インストールが終了後、コマンドプロンプトを起動して以下のコマンドを起動すると、
追加されたコマンドが一覧で表示されます。
2. bashライクにカスタムする
「clink」というツールをインストールします。
このツールをインストールすると以下の機能がコマンドプロンプト上で出来るようになります。
- GNU readlineを実装し、bashと同じショートカットキーを利用可能
- [Tab]キーによるパスおよびファイル名補完機能
- [Ctrl] + [V]によるクリップボードからの貼り付け機能
- 環境変数を利用した実行ファイルの利用
- [Ctrl] + [_]キー or [Ctrl] + [X]キー→[Ctrl] + [U]キーによる「元に戻す」「やり直す」
- セッション間の保持や検索機能、ヒストリー展開をサポート
- スクリプト言語として「Lua」をサポート
このツールのおかげで[Ctrl] + [L]キーで画面クリアや、[Ctrl] + [R]キーで後方検索ができるようになります。
「clink」をインストールするとコマンドプロンプトの初期表示画面の文言が少し変わります。
bash起動時に設定を操作するinputrcと同様の事が、
clinkでは「clink_inputrc」というファイルを「%LOCALAPPDATA%\clink」ディレクトリに作成することで実現できます。
このファイルに「set editing-mode vi」や「set keymap vi」を記述すれば、
vi使いの人は幸せになれると思いますw
同じディレクトリにある「settings」というファイルで、キーバインドを変更することもできます。
[Ctrl] + [L]キーで画面クリアや、[Ctrl] + [R]キーで後方検索はここで設定しています。
3. Gitコマンドを使えるようにする
Git入れるだけです。
「Git for Windows」から最新版をインストールします。
エクスプローラーのコンテキストメニューからGit Bashを起動できるように、
[Git Bash Here]のチェックを入れています。
PATH環境変数の設定画面では、
コマンドプロンプトからもGitを利用できるように、
2番目の「Run Git from the Windows Command Prompt」を選択しています。
3番目の「Run Git and include Unix tools from the Windows Command Prompt」にすると、
Windowsの既存コマンドに影響を与えるかもしれないので試してません。
改行コードの選択画面では、
作業時にWindowsスタイルの改行コード(CRLF)に変換し、コミット時にはUNIXスタイル(LF)に変換する。
1番目の「Check out Windows-style, commit Unix-style line endings」を選択しています。
4.「tail -f」を使えるようにする
やっぱり「tail」コマンド使うなら、「f」オプションでログファイルとか監視したいところです。
しかし、「Gow」に入っている「tail」コマンドの「f」オプションはバグってて動きません。
そこで正常に動く「Git」に入っている「tail」コマンドを使用します。
「[Gitのインストールディレクトリ]\bin」の中に「tail」コマンドがあります。
まだ環境変数にパスが通っていないので通します。
ここで注意しなければいけないのが、先ほどインストールした「Gow」よりも前にパスを通してください。
先に入れた「Gow」とかぶっているコマンドがありますが、挙動に問題はありません。
5. タブ機能の追加
「ConEmu」というツールをインストールします。
バージョンは好きなものでOKです。
[Win] + [N] で新しいタブが開始でき、どのコンソールを開くか選択することができます。
また設定変更でどのコンソールを表示するか変更することができます。
候補はシステムにインストールしているものを検知して自動的に出してくれます。
タブの切り替えは「Win」+ [1 or 2 or 3]で切り替えることができます。
他にも色々設定をすることができます。
たとえばタブを右クリックして、メニューにある [Duplicate root...]で画面を開きなおすと、
カレントディレクトリをそのまま引き継いで、新しいタブで作業ができます。
タブ1でGitのコミットしながら、タブ2でlogを見ることなんかができます。
6. 「ファイル名を指定して実行」から起動できるようにする
「ConEmu」のショートカットのパスを環境変数の「Path」に追加します。
ファイル名は短い名前の方が起動しやすいです。
環境変数にパスを通せば、「Win」+「R」の「ファイル名を指定して実行」から起動できます。
僕はファイル名を「em」にして、「cmd」というディレクトリを作ってそこに保存してパスを通しました。
ブラウザごとにベンチマークをとれるjsPerfが便利すぎる
JavaScriptのコードスニペットのベンチマークをとれるjsPerf(http://jsperf.com/)というWebサービスを知って、
けっこう簡単で便利だったので紹介します。
ベンチマークというとプロファイラを使ったり、
計測したい処理の前後に*1Dateオブジェクト作って、差分をチェックしてゴニョゴニョする感じでした。
var start = new Date(); // 計測対象の処理 hoge(); var end = new Date(); var processTime = end - start; // start から end までのミリ秒を得る
ただ、JavaScriptの場合、短いプログラムだと結果が不安定だったり、
ブラウザによって速度が左右されたりします。
そんな時に使えるのが「jsPerf」です。
このWebサービスは、計測したい処理が1秒間に何回実行できたかでベンチマークを記録します。
そのため、回数が多いほどパフォーマンスが良い事になります。
また、この計測方法だと1ミリ秒以下の短い処理でも大体の時間が分かります。
内部の処理はjsPerfの中の人が作った「Benchmark.js(http://benchmarkjs.com/)」というライブラリが使用されています。
今回は「高速な文字列の連結」というネタでベンチマークを取りたいと思います。
比較する処理は以下とします。
1. 「Array.push() で配列に格納して Array.join() で繋げる」
2. 「+ 演算子で繋げる」
計測するコードはこんな感じです。
実行回数は10万回です。
var array = new Array(); for (var i = 0; i < 100000; i++) { array.push(i); } var txt = array.join("");
var txt = ""; for (var i = 0; i < 100000; i++) { txt += i; }
jsPerfの使い方
http://jsperf.comにアクセスします。
基本的な使い方は、必須項目(赤いアスタリスクがついてるもの)を埋めて「Beautify code」か「Save test case」ボタンを押下します。
「Beautify code」はインデントを揃えてくれます。
その他もろもろについては上から順番に、
-
- 「test cases(http://jsperf.com/browse)」のリンクから他のユーザが作成したベンチマークを見る事ができます。
- ユーザ名を登録しておくと、過去に作成したベンチマークを一覧で見る事ができます。
- 「slug」は自分のベンチマークのURLになります。
- デフォルトでは「title」の文言が設定されます。変更する事も可能です。
- Publishedのチェックを外すと、ベンチマークを非公開にする事ができます
- 「Preparation code」では、事前準備として必要なDOMを書いたり、共通処理などを書く事ができます。
設定を保存すると以下の画面に遷移するので、
後は、「Run tests」ボタンを押下すると計測してくれます。
別のブラウザで自分が作成したベンチマークのURLを開いて計測すると、
ブラウザごとのベンチマークを計測してくれます。
また、表示方法も数値だけでなく棒グラフや円グラフでも表示してくれます。
以下は私の環境で Google Chrome と Firefox と Safariでベンチマークをとってみました。
というわけで、肝心の計測結果ですが、
最近のブラウザだとJavaScriptの文字列の連結はどっちでやっても速度はほとんど変わりませんでしたw
余談ですが、
はてダだとスクロールしたキャプチャが、どうやっても解像度がキレいなままアップできませんでした。
どなたか対応方法知ってたら教えてください。
*1:Dateオブジェクトは数値として扱った場合、ミリ秒の数字になります。