読者です 読者をやめる 読者になる 読者になる

風で飛んでいくチラ裏

気ままに雑記メモ書き殴り。古い記事は別blogからの引っ越しなのでレイアウトがアレです。

Debian(wheezy)でApache2.2とTomcatの連携

はじめに

必要なアプリケーションのインストールは既に済んでいるものとします。Tomcatのバージョンは7.0.50。

Tomcatをrootではない専用ユーザで動かしていると、色々頑張らないと1000未満のポートで待ち受けできないようなので、Apacheをフロントエンドのリクエスト受付係にして、そこからTomcatにリクエストをスルーさせることにします。一般的にもこの方がよろしいということですね。

今回は静的リソースをApacheで表示させるとかはせず、リクエストを全部Tomcatに丸投げしてます。本当はApacheで処理できるものはApacheにやらせたほうが良いです。

HTTPでの連携

http://lfll.blog73.fc2.com/blog-entry-121.html

ほとんどこちらの参考URLの通り。HTTPについてはおそらく問題無いと思われるが、このままだとHTTPSはつながりませんね。

SSLを使えるようにする

Tomcatで使用するkeystoreからApacheで使用する秘密鍵サーバ証明書への変換

javaのkeystoreツールで既に作成済みのjksがあるので、まずはこれをApacheで使えるように秘密鍵サーバ証明書を取り出します。

http://system-admin.seesaa.net/article/94984370.html
http://stackoverflow.com/questions/652916/converting-a-java-keystore-into-pem-format

............

keystoreのパスワード忘れた\(^o^)/

流れとしては、javaのkeystoreコマンドで jks -> pkcs12 に変換、OpenSSLで pkcs12 -> 私有鍵(秘密鍵)とサーバ証明書(pemでもderでも)に変換すると良さげです。


仕方ねぇ、どうせオレオレ証明書だし再発行するか。

OpenSSLのアップグレード

OpenSSLのバージョン見たら1.0.1eだったのでついでにアップグレードしておきます*1
やり方は割愛。

秘密鍵自己署名証明書の発行とApache2の設定

http://uturo1.nevernothing.jp/apache2_ssl/

参考サイト様のとおりに作業すればOK。httpsで接続すると、ブラウザで証明書ダメーの警告画面が出て、それでも接続しに行くと、"It Works!" が表示された。

HTTPSの接続をTomcatで処理させる

http://lfll.blog73.fc2.com/blog-entry-121.html

最初に挙げた参考サイト様の通りです。編集するファイルは default-ssl のほう。

Apache再起動で無事HTTPS経由でTomcatの応答を受け取ることができました。

*1:外部に公開するサーバではないし、大したデータも入ってないので必要無いといえば無いですが。HeartBleed怖いっすよねー

Vimのセットアップ

Vimのセットアップです。


Vimでは主に「設定」「プラグイン」「外部ツール」を考えます。このうち「設定」と「プラグイン」は.vimrcで管理します。
この辺の話題は他のvimmerさんのほうがとてもわかりやすく書いていますので、検索してみたほうがよいでしょう。

設定

ホームディレクトリに.vimrcファイルを作成し、設定を記述します。
.vimrcはホスティングサービスやファイル共有サービスを使用すると、複数のPCで設定を共有できて便利です。
また、ユーザが作成したプラグインは最近だとgithubで公開しているものが多いので、gitを使うついでにgithubのアカウントを作成して自分の.vimrcをgithubで管理するのもアリです。

プラグイン

Vim拡張機能を「プラグイン」で提供していますが、そのほとんどは.vimrcに記述できるスクリプトで構成されているので、ユーザが自由に作成して公開することもできます。さらに、「プラグインを管理するためのプラグイン」というのがあり、これを導入することでほとんどのプラグインの管理を.vimrcの編集で済ませることができます。

外部ツール

外部コマンドをVimから利用して機能を実現しているものについては、対応するコマンドをインストールする必要があります。Windowsの場合は大抵のものは自分で用意する必要があります。ツールをダウンロードしてきたら、実行ファイルをパスが通った箇所に置きます。vimからしか使用しないのであれば、vimの実行ファイルがあるディレクトリにコピーしてもよいです。

git

NeoBundleでプラグイン管理をするために必要です。TortoiseGitなどでシェル統合してもOK。

grep

cygwingrepを使用するか、コマンドラインから実行できるgrepを使います。
最近だとagやptを使うとよいでしょう。

ctags

http://hp.vector.co.jp/authors/VA025040/ctags/
tagsファイルを作成するツールです。ソースコードを読む場合には必須ですね。

global

http://www.tamacom.com/global-j.html
ctagsしか使わないのであれば不要です。

curl

http://curl.haxx.se/
コマンドラインから使用するHTTPcです。プラグインの中にはcurlを使用するものがあるのでインストールします。
SSL対応版でないと中途半端に動作してハマるので注意。

python

http://www.python.jp/
pythonを利用する機能があるのでインストールします。個人的にはスクリプトも書くのでどちらにせよインストールします。

diff

差分表示する際に必要です。MinGWcygwin, その他実行可能なdiffを入手し、パスを通しておきましょう。

MinGW, VisualStudio

vimprocを使う場合、dllのビルドのために必要です。使用しているOSと同じビットの物を使いましょう。
64bit版で32bitのMinGWとかを使っている場合は要注意。

広告を非表示にする

PCの環境構築メモ

新しくPCを買った時、もしくはクリーンインストールした時用の
自分向けPC環境構築メモです。Windows7

初期設定

ドライバの更新

Windows Updateでドライバも更新される場合がほとんどですが、サードパーティ製の周辺機器等は自前でのドライバアップデートが必要な物もあるので、必要に応じてベンダーのサイトからドライバーを落としてアップデートします。

セキュリティソフト

おこのみでどうぞ。AvastやAVGMicrosoft Security Essentialsなど。市販のものを購入しても。ノーガードはさすがにお勧めできません。

プリインストールソフトでいらないものを削除

購入時にプリインストールされているソフトで不要なものはアンインストールします。

フォルダ構成

構成はお好みですが、「自分用の作業フォルダの先頭」を決めるとよいです。(ホームディレクトリ)

自分が作成するもの、ダウンロードするもの、何かのアプリケーションで保存するもの(アプリケーション設定を除く)は基本的にこのホームディレクトリ下にします。レジストリを使わないようなソフトウェアもこの中に入れてしまいます。

ドライブを複数に分けられるPCの場合は、システムボリュームではないところに /home// として、単独ドライブの場合は、Windowsのホームディレクトリ(スタートメニューのユーザ名からアクセスできるディレクトリ)を使うことが多いです。

また、cygwinなどCUIで作業することもあるので、フォルダ名に日本語はあまり使いません。


個人的にはざっくりこんな感じ。この辺はPCの使い方によってお好みで。

home --+-- bin   <CUIで使用するツール類を入れる、パスを通す>
       |
       +-- data  <画像や音声、その他データ保存用>
       |
       +-- dev   <ソースコード等開発プロジェクト入れ>
       |
       +-- tool  <レジストリを使わないアプリ入れ>

環境変数

HOME 上で構成した「自分用作業フォルダ」のルート
PATH %HOME%\bin;<あとはインストール時に追加したものとか必要なものを適当に>
TEMP, TMP システムドライブに余裕が無い場合は適当に避難場所を作る

TEMP, TMPは、すでに結構使用しているPCでいきなり変えるとアプリケーションの設定が消えたり、動作しなくなるかもしれないので、OSクリーンインストール後に設定して以降変えないほうがよいです。

ブラウザ

お好きなのをどうぞ。

メーラ

お好きなのをどうぞ。

アーカイバ

アーカイバも自分の使いやすいものを使いましょう。私はLhaPlusです。

ファイラー As/R

エクスプローラのウィンドウを複数開いて散り散りになるのが嫌なので、タブファイラを使います。私はまめFile後継のAs/Rを使ってます。

http://www.all.undo.jp/asr/

ほとんどカスタマイズしていませんが、タブ管理、マウスジェスチャ、アイコンオーバレイが使えるだけでとてもありがたいです。

キーボードのキー配置変更

Ctrlキーを押さえるために小指を下まで持ってくるのは面倒だし手首の負担が大きいので、Caps Lockを左Ctrlに変えます。常駐型のソフトではなく、レジストリをいじって変えてしまいましょう。

Caps Lockキーは右Altキーなどに割り当てておきます。できるだけキーを潰す場合でも全く押せなくならないようにしておきましょう。

KeyCtrl

http://www.vector.co.jp/soft/winnt/util/se220597.html

設定もシンプル、設定内容もレジストリに適用されるので、必要十分で素晴らしいですね。
実行時は「管理者として実行」で起動しないとレジストリの書き換えがうまく行かないです。

リモートデスクトップを使う場合

リモートデスクトップを使う場合、ログイン先のPCでも同じ設定をしておかないと動作がおかしくなります。(たしかCtrlが押しっぱなしになったような動きになる)

リモート先が自分のPCであれば同じく設定を変えてしまえばいいのですが、共有PCなどの場合は使用時に注意するか、常駐型のソフトでON/OFFを切り替えられるようにしたほうがいいかもしれませんね。

フォントリンク

コマンドプロンプトやエディタ等できれいなフォントを使うためにきれいな欧文フォントと、等幅メイリオを作って、フォントリンクという機能で組み合わせる方法です。詳しくはリンクを参照したり検索してみてください。

http://tanakh.jp/posts/2011-11-15-windows-terminal.html?utm_medium=twitter&utm_source=twitterfeed
http://d.hatena.ne.jp/amachang/

手順がやや煩雑だったり、レジストリをいじる必要があるので、やや慣れた人向け。私はInconsolataとメイリオ(等幅化したもの)を組み合わせてます。
設定後は再起動しましょう。(ログオフ→再ログインでもいけるかも)


Rictyフォントを自分で作って使うという選択肢もあります。ただ、Windows環境だと、
フォントサイズが小さい(11pt程度)場合にフォントの一部が欠けて見える場合があります。

MacTypegdi++といったフォントレンダリングアンチエイリアスを掛けるツールを併用すると綺麗に見えますが、
システムやソフトウェア上の相性があったり、このへんのツールを入れるのはちょっと...という場合は
フォントリンクのほうがよいです。

Rictyについてはこちら
http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html

開発関連

エディタ

サクラエディタ

http://sakura-editor.sourceforge.net/index.html
テキストエディタです。タブ型、マクロ機能、検索や置換に正規表現が使える、様々な改行コードや文字コードに対応という、私が必要な機能が一通り揃ってます。矩形選択ができるのも個人的に高好感度。

差分表示やタグジャンプなど、カスタマイズしていけばプログラミングにも十分使えるようになります。

diffを入れる場合、以下のサイト様からpatch-diff-w32.zipをDLして、中のdiff.exeをサクラエディタのexeファイルと同じディレクトリに突っ込みます。
http://www.ring.gr.jp/pub/text/TeX/ptex-win32/w32/

参考
http://sakura-editor.sourceforge.net/htmlhelp/HLP000251.html


migemoを使う場合は以下からダウンロードして適当な場所に置きます。Vimからも使うのであれば、パスの通った箇所がよいかも。
http://www.kaoriya.net/software/cmigemo/

サクラエディタの共通設定から「支援」タブ->migemo設定 でDLLと辞書を適切に設定してあげればOK。

Vim

http://www.kaoriya.net/software/vim/
コードはもっぱらVimで読み書きします。リンクは香り屋版です。Vim関連の環境構築についてはまた別途。

ctsgs

http://hp.vector.co.jp/authors/VA025040/ctags/
タグファイルを生成するツールです。タグジャンプに対応しているテキストエディタがあれば、ソースコード読みが格段に楽になります。

gnu global

http://www.tamacom.com/global-j.html
こちらもタグ生成ツールです。一応入れてはいるのですが、今のところctagsを使っています。

Console2

http://sourceforge.net/projects/console/files/console-devel/
http://www.gembook.org/console-ime-patch.html

ターミナルソフトウェア。CygwinNYAOSコマンドプロンプトをConsole2の画面で操作できます。タブ管理や見た目のカスタマイズができるので、コマンドプロンプトの見た目にうんざりしている人はどうぞw 先のフォントリンクの恩恵も受けられます。日本語入力と表示に少し設定が必要です。

processExplorer

http://technet.microsoft.com/ja-jp/sysinternals/bb896653.aspx
なーんかPCの調子がおかしいな、というときに起動します。Ctrl-Alt-Delで起動するタスクマネージャより詳細な情報が確認できます。

curl

コマンドラインから使用するHTTPクライアントです。

VirtualBox

仮想環境上でLinuxを動かすのに使います。

WinMarge

2つのファイル(フォルダ)の違い、要するに差分を表示するアプリケーションです。ソースコードのレビューで使います。後述のSVNの差分表示アプリとしても設定できます。

Git

TortoiseGit

Mercurial

バージョン管理システムのクライアントです。コマンドラインでバリバリ使える人は不要ですが、GUIで操作できるTortoiseSVNとTortoiseGitも便利です。

リモート側のホスティングサービスでは、Google Code, Github, bitbukketなどなど。

gnuplot

2次元、3次元のグラフ作成ツールです。
http://www.gnuplot.info/

簡単なグラフであれば、OpenOfficeCalcで十分ですが、データが大量だったり、細かい制御をしたい場合には便利です。ですが、使い方を覚える必要があるので、お手軽なソフトではありません。
また、他にもSciLabや、pythonできる人なら python + SciPy系、Rなど、統計処理とグラフ描画をセットにしたほうが効率が良かったりする場合もあり、選択肢が色々あります。

go

Cygwin

ざっくりな説明だと、Windows上でUNIXライクな環境、コマンドを使うソフトウェアです。コマンドプロンプトにはないあんな機能やこんな機能が使いたいときに。今だと必要な機能に応じてMinGWNYAOSでもいいかもしれませんね。

WinSCP

http://winscp.net/eng/docs/lang:jp
SSHを使用したファイル転送ツールFTPクライアントとしても使用できます。

putty

http://yebisuya.dip.jp/Software/PuTTY/
Telnet, SSHクライアントです。リモートのLinuxサーバに接続するのに使います。上のURLはごった煮版へのリンクです。

Tera Term

http://sourceforge.jp/projects/ttssh2/
ターミナルエミュレータソフトですが、SSH接続するものについてはputtyを使用しているので、こちらは主にシリアル通信接続する機器との通信用に使用しています。

Wireshark

http://sourceforge.jp/projects/wireshark/
ネットワークプロトコルアナライザです。開発目的じゃない人には、「あーこんなパケット流れてるんだーニヤニヤ」くらいしか使い道がないと思いますので、自分でクラサバ作ったり、必要な方だけ。

FreeMind

http://sourceforge.jp/projects/freemind/
マインドマップを作成するツールです。モヤモヤ考えながらポコポコマップを作っていきます。

CacooというWebサービスもあります。

Audacity

http://audacity.sourceforge.net/?lang=ja
録音、音声編集ソフトです。あんまり本格的に使ってません。

OpenOffice

http://www.openoffice.org/ja/
オフィスソフトウェアです。この辺も縛りやお好みに応じて。
LibreOfficeでも。

MicrosoftOfficeViewer

WordやExcelPowerPointのファイルを閲覧するためのソフトです。

Astah

http://astah.change-vision.com/ja/
プログラミング設計ツールです。UMLの図を作るのに便利。

Inkspace

http://www.inkscape.org/ja/
フリーのドローソフト。
そのまま見るだけで問題ない図であれば、Cacoo や OpenOffice Draw で事足りるのですが、Web上の画面構成や、座標指定が必要な画面構成をモヤモヤ考える場合に、オブジェクトの位置や幅のピクセル表示が見れないのが不便だったりします。

オブジェクトのx, y座標、幅や高さを数値入力で指定できなくなる問題がWindowsの 0.48.4 以上で起きることがあるので、問題が起きた場合は 0.48.2 を使うのが吉。
環境変数で英語環境にして起動すると問題なくなるみたいなので、おそらく日本語とUIに使用しているフォント関連の問題なんじゃなかろうか。

その他

clockLauncher

http://www2s.biglobe.ne.jp/~geoph/
アプリケーションランチャーとして使用しています。クリップボード管理やメモ帳機能などもあります。

Launchy

http://www.launchy.net/
ホットキー -> キー入力 でアプリを起動するランチャーです。QuickSilverWindows版といったところ。
カタログの検索場所も設定で変えられるので、自前で管理しているツール類も簡単に追加できるのが便利。

CubePDF

http://www.forest.impress.co.jp/library/software/cubepdf/

仮想のプリンタを追加して、印刷の代わりにPDFファイルを出力するソフト。

WinShot

http://www.woodybells.com/

スクリーンショットのユーティリティです。マルチディスプレイだと拡張した側のモニタでキャプチャが取れないので注意。

GreenShot

http://getgreenshot.org/

こちらはマルチディスプレイでも動きます。

Gyazo

https://gyazo.com/ja

スクリーンショットをサーバにあげてURLを教えるだけで瞬間的に共有できるようにしたサービス。
スクリーンの動画をGIFアニメにして共有するGyazo GIFもあります。ちょっとした操作の共有にとても便利。

ハッシュ化されたURLにアップロードされるだけで、アクセス認証とかはないので、ヒミツにしたい内容はキャプチャしないほうが吉。

VNC

フリーのリモートデスクトップアプリケーションです。幾つかプロジェクトがあるので、おこのみでどうぞ。私は(最近はあまり使っていませんが)RealVNCです。

Windows標準のリモートデスクトップが付いているバージョンで、それだけで十分なのであればわざわざ入れる必要はないです。

IrfanView

http://www8.plala.or.jp/kusutaku/iview/
マルチメディアビューアですが、もっぱら画像サイズの変換等、簡単な画像編集ツールとして使用しています。

Dropbox

https://www.dropbox.com/
オンラインファイルストレージ兼共有サービスです。SkyDriveやGoogleDrive等、お好きなものをどうぞ。どのサービスを使うにしても、Confidentialな物はたとえプライベート設定にしていても置かないようにしておくとよいですね。

Limechat

http://limechat.net/
IRCクライアントです。オンラインチャットのフロントエンドに。棒読みちゃんなどで読み上げてくれるようにもできます。

棒読みちゃん

http://chi.usamimi.info/Program/Application/BouyomiChan/
テキスト読み上げソフトです。Skypeは非対応になるかもという微妙なところ(今も動く?)。Limechatの読み上げはできます。

Webサービス

Gist

ドットインストール

新しい技術を勉強したいときにまずここでひとまず動画をさらっと。

jsdo.it

HTML, CSS, JSのWeb上の開発環境兼コミュニティサイト。
他の方のサンプルからforkして自分の場所へ持ってくることができ、書いたコードはそのままお手軽にテストできる。

Qiita

メジャーどころの技術情報ならこちらで。自分の調べたことを保存、共有する場としても。

Codic

広告を非表示にする

windowsでpylintがtrailing-whitespace吐きまくるんよ

windowsでpylintを使ってみようと思ったらなんか 全部の行で trailing-whitespace とか言われてしまうんですよね。

https://bitbucket.org/logilab/pylint/commits/34b715e11c78

改行コードが行末スペースに勘違いされてんだろうなーと思ったら その通りだったようで。 リンク先様のようにコード修正すればOKす。

Vim7.4をビルドしてみた(20131219追記)

Ubuntu12.04 LTEのソフトウェアマネージャでインストールしたGVimは7.3(201205ビルド)なので、 若干古いのと、2013年8月にVim7.4がリリースされているので、ビルドして見ることにした。 と言っても、以下のサイト様の手順どおり。

http://vim-jp.org/docs/build_linux.html

ハマりどころは一切なく、さっくり起動しました。とりえあず。 以前のGVimは画面のReDrawがとても遅い気がしていて、ISDN時代の画像読み込みの アレみたいな感じだったんだけど(w)、7.4で改善されてる…ような…気がする。

 

(20131219追記) リモート接続で通信経路が細い場合だと遅くて、VSplitしているとさらに顕著、みたいな 話題があるみたいなんですが、私の場合はGVim+VMWareなんで、どうもそうではなさそうで。 結局スクロール時に描画がもっさりするのは7.4でも直っていない。 他のエディタ(gedit)とかだとそこそこヌルヌル動くのになぁ…。 仕方が無いので、最近はターミナル上からvi使ってます。

(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) ol.className = "preLine" ol.setAttribute("role", "presentation") for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)