2013年3月29日金曜日

emacsでHTTP Requestを送る方法

デフォルトのemacsパッケージの url を使って簡単なelispスクリプトを作成しました。
https://gist.github.com/kakakikikeke/5262112

■インストール方法
cd ~/.emacs.d/site-lisp/send-http-request
wget https://raw.github.com/gist/5262112/send-http-request.el

.emacsに以下を追記
(load-file "~/.emacs.d/site-lisp/send-http-request/send-http-request.el")

emacsを再起動後、scratchで以下を実施するとカレントバッファに結果がかえってきます
(send-http-request "http://kakakikikeke.blogspot.com/")

参考サイト
http://emacswiki.org/emacs/UrlPackage#toc2

2013年3月27日水曜日

2013年3月26日火曜日

【emacs】multi-term.elのインストールと設定

1. インストール
mkdir ~/.emacs.d/site-lisp/multi-term
cd ~/.emacs.d/site-lisp/multi-term
curl -O http://www.emacswiki.org/emacs/download/multi-term.el

2. 設定
.emacs に以下を記述
(require 'multi-term)
(setq multi-term-program shell-file-name)

3. 確認
emacsを起動して
M-x multi-term
を実行するとterminalでemacsのキーバインドが使えるようになっているはずです
(Ctrl+x b でバッファの切り替えができるようになります)

参考サイト
http://sakito.jp/emacs/emacsshell.html

2013年3月25日月曜日

【emacs】eclipseみたいにJavaの構文エラーがあった場合にコンパイルする前に表示する方法(flymake)

flymakeはemacsの22以降だとデフォルトでパッケージに入ってるらしいのですが
それ以前ではないようなので自分でインストールする必要があります
以下はすでにflymakeがインストールしてある状態で.emacsに記述する内容です

(require 'flymake)
(setq char_set "SHIFT_JIS")
(setq classpath
; (getenv "CLASS_PATH"))
nil)
(defun flymake-java-init ()
(flymake-simple-make-init-impl
  'flymake-create-temp-with-folder-structure nil nil
  buffer-file-name
  'flymake-get-java-cmdline))
(defun flymake-get-java-cmdline
(source base-dir)
(list "javac"
  (if classpath
   (list "-classpath" classpath (concat "-J-Dfile.encoding=" char_set) "-encoding" char_set source)
   (list (concat "-J-Dfile.encoding=" char_set) "-encoding" char_set source))))
(push '("\\.java$" flymake-java-init) flymake-allowed-file-name-masks)
(add-hook 'java-mode-hook '(lambda ()
                            (flymake-mode t)))

これでJavaファイルを開いたときにエラーがあった箇所をハイライトしてくれます
$CLASS_PATHの部分をコメントアウトして設定すると外部のライブラリも構文チェックしてくれるようになります

参考サイト
http://www.info.kochi-tech.ac.jp/y-takata/index.php?%A5%E1%A5%F3%A5%D0%A1%BC%2Fy-takata%2FFlymake

2013年3月22日金曜日

英字キーボードでGoogle IMEを使用する方法

どうやらGoogle IMEは日本語キーボードをデフォルトでサーポートしているらしく日本語Windowsで英字キーボードを使っている場合はレジストリを書き換えないとGoogle IMEが正常に動作しません
(※特にキーバインドが)

■設定方法
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0200411

Layout Fileを
KBDUS.DLL
に変換して再起動

参考リンク
http://d.hatena.ne.jp/wakky1127/20111028/1319798286

2013年3月21日木曜日

【emacs】JDEEのAPIリファレンス参照でw3mを使用する方法

.emacsに以下を記述

(require 'w3m-load)
(setq browse-url-browser-function 'w3m-browse-url)

emacsを再起動してJDEEから C-c C-v C-w でリファレンスを参照してw3mが起動することを確認する

どうやら他のブラウザ(Firefoxなど)がインストールされているとそっちが優先されるようです
requireだけだとw3mがemacsで使えるようになりますが、デフォルトブラウザとしての設定はされない様子

2013年3月19日火曜日

emacs serverを使って前回のセッションを保持する方法

.emacsに以下を記載
(server-start)

emacs --daemon
デーモンとして起動します

emacsclient -c
でemacsが起動します
何かファイルを開いたりしたあとに
C-x C-c (または delete-frame)
で一旦終了し再度 emacsclient -c すると先ほど開いたファイルがそのまま残っています

emacsclient -e '(kill-emacs)'
でデーモンプロセスを終了することができます


2013年3月18日月曜日

【emacs】w3mをインストールしてみた

1. 事前準備
yum -y install w3m*

2. インストール
■emacs22以下の場合
wget http://emacs-w3m.namazu.org/emacs-w3m-1.4.4.tar.gz
tar xvfz emacs-w3m-1.4.4.tar.gz
cd emacs-w3m-1.4.4
./configure
make
make install
.emacs配下に以下を記述
(require 'w3m-load)

■emacs23以上の場合
wget http://emacs-w3m.namazu.org/emacs-w3m-1.4.4.tar.gz
tar xvfz emacs-w3m-1.4.4.tar.gz
cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m
y|cp -ipr emacs-w3m-1.4.4/* emacs-w3m
cd emacs-w3m
./configure
make
make install
.emacs配下に以下を記述
(require 'w3m-load)

emacsを開きミニバッファから M-x w3mを 実行できればOK
lispのインストールディレクトリは/usr/local/share/emacs/site-lisp/になります

3. 基本的な操作
H ホームに戻る
B 前のページに戻る
U URLを開く
a 現在のURLをブックマークを登録する(カテゴリで分類できるのでSection:と表示されたらカテゴリ情報を入力する)
v ブックマークを表示する(C-kで登録したブックマークを削除)
Q w3mを終了する

参考サイト
http://d.hatena.ne.jp/shigemk2/20110727/1311774318
http://www.bookshelf.jp/texi/emacs-w3m/emacs-w3m-ja_3.html

2013年3月15日金曜日

JavaでWindowsサーバにTelnetして取得した文字列からエスケープシーケンスを削除する方法

org.apache.commons.net.telnet
を使用して

TelnetClient client = new TelnetClient("dump");

引数に「dumb」をつけてTelnetClientのオブジェクトを作成し

telnet.connect(IPADDRESS);
Reader reader = new InputStreamReader(telnet.getInputStream(), "SHIFT_JIS");

で作成したreaderからread()のメソッドで取得できる数値から

int c = reader.read();
char c1 = (char)c;

作成した文字にはエスケープシーケンスが含まれていないようになる

すごいハマりました。。。

2013年3月14日木曜日

【emacs】File .java_base.tag is large (11MB), really open? (y or n)

(setq large-file-warning-threshold (* 25 1024 1024))

上記の場合は25MB以下のファイルであれば警告せずにオープンする

2013年3月13日水曜日

emacsのanythingをインストールしてみた

1. 環境
CentOS 5.9(final) 64bit
emacs 23.4.1

2. インストール
git clone git://repo.or.cz/anything-config.git
mv anything-config/ ~/.emacs.d/site-lisp/
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/anything-config")
(require 'anything-config)
emacsを再起動して完了

ミニバッファからanything for filesを実行しましょう
カレントディレクトリ一覧が表示されそこからファイルを開くことが可能です

他のコマンド等に関しては以下の記事が非常に参考になります
anythingの作者さんのページです
http://d.hatena.ne.jp/rubikitch/20100718/anything

2013年3月12日火曜日

emacsでJavaのコードを補完する方法

1. 環境
CentOS 5.9(final) 64bit
emacs 23.4.1

2. yasunipetインストール
git clone https://github.com/capitaomorte/yasnippet
mv yasnippet/ ~/.emacs.d/site-lisp/
mkdir ~/.emacs.d/snippets
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)
emacsを再起動して完了

3. auto-completeインストール
wget http://cx4a.org/pub/auto-complete/auto-complete-1.3.1.zip
unzip auto-complete-1.3.1.zip
mkdir -p ~/.emacs.d/site-lisp/auto-complete-1.3.1
cd auto-complete-1.3.1
make
make install
Install to: で入力を求められたら以下を指定
~/.emacs.d/site-lisp/auto-complete-1.3.1
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/auto-complete-1.3.1")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/site-lisp/auto-complete-1.3.1/ac-dict")
(ac-config-default)
(setq ac-use-menu-map t)
(define-key ac-menu-map "\C-n" 'ac-next)
(define-key ac-menu-map "\C-p" 'ac-previous)
(setq ac-menu-height 10)
ac-menu-heightの値が大きすぎるとターミナルのサイズが小さい時にポップアップがターミナルのサイズをオーバーして表示されないことがあるのであまり大きくしないようにする
emacsを再起動して完了

4. ajc-java-completeインストール
git clone git://github.com/emacs-java/auto-java-complete.git
mv auto-java-complete/ ~/.emacs.d/site-lisp/
cd ~/.emacs.d/site-lisp/auto-java-complete/
wget https://github.com/emacs-java/auto-java-complete/archive/0.2.8.zip
unzip 0.2.8
mv auto-java-complete-0.2.8/ ~/.emacs.d/site-lisp/auto-java-complete
cd ~/.emacs.d/site-lisp/auto-java-complete
cp auto-java-complete/popup.el auto-complete-1.3.1/popup.el
※このpopup.elのコピーを実施しないとメソッドの補完が実施されません
javac Tags.java
java Tags
実行が完了すると ~/.java_base.tag が作成されます
bunzip2 java_base2.tag.bz2
mv java_base2.tag ~/.java_base.tag
.emacsに以下を追記
(add-to-list 'load-path "~/.emacs.d/site-lisp/auto-java-complete")
(require 'ajc-java-complete-config)
(add-hook 'java-mode-hook 'ajc-java-complete-mode)
(add-hook 'find-file-hook 'ajc-4-jsp-find-file-hook)
emacsを再起動して完了

5. 動作確認
emacsでJavaファイルを開きクラス名やパッケージ名を入れていくと自動でポップアップし
補完されるはずです
Tagsクラスに追加したライブラリのパスを通してを再度実行すると .java_base.tag が再生成され
補完したいクラス名を増やすことができます
ex) java -cp ".:/usr/local/java/jdk/jre/lib/rt.jar"  Tags


P.S Tagsを再生成するシェルスクリプトを作ってみた
#!/bin/sh

AUTO_JAVA_COMPLETE_PATH=/root/.emacs.d/site-lisp/auto-java-complete
if [ -d ${AUTO_JAVA_COMPLETE_PATH} ]
then
 cd ${AUTO_JAVA_COMPLETE_PATH};
 java -cp $CLASSPATH Tags;
else
 echo "[ERROR] Do not exist the path of ${AUTO_JAVA_COMPLETE}."
 exit 1;
fi
cd /usr/local/sbin/
touch ajc_tags.sh
chmod 744 ajc_tags.sh
emacs ajc_tags.sh
上記を記載
ajc_tags
を実行するとサジェストしてくれるライブラリを追加することができます
※CLASSPATHに追加したいライブラリのjarファイルを追記しておく必要があります

2013年3月11日月曜日

emacsをアップグレードする方法(ソースファイル編)

1. 環境
CentOS 5.9(final) 64bit
emacs 21.4.1 から emacs 24.2

2. 新バージョンインストール
http://kakakikikeke.blogspot.jp/2013/02/centosemacs-242.html
を参考にemacsをソースからインストール

which emacs
既存のemacsのPATHを調べます(自分は/usr/local/bin/emacsでした)
cd /usr/local/bin/
mv emacs emacs-21.4.1
ln -s emacs-24.2 emacs
bash
一旦パスを再読み込みします
emacs --version
GNU Emacs 24.2.1

前回の.emacsの設定や追加lispはそのまま引き継がれます


epelにも最新のemacsのrpmはないようで頑張ってyumとrpmからインストールしようとしたのですができませんでした
最新版のemacsはyumではなくソースからインストールした方がいいと思います

2013年3月8日金曜日

【Java】Play frameworkのインストール方法と実行方法

1. 環境
CentOS 5.9(final) 64bit
Play framework 2.0.4

2. インストール
wget http://download.playframework.org/releases/play-2.0.4.zip
unzip play-2.0.4.zip
mv play-2.0.4 /usr/local
cd /usr/local
ln -s play-2.0.4 play
export PLAY_HOME="/usr/local/play"
export PATH=$PATH:$PLAY_HOME

play help
でバージョン情報が表示されればインストール成功
「play」というサウンドファイルを再生するコマンドがPATHにすでに通っている場合があるのでその場合はPLAY_HOMEを先に通すか既存のplayを削除する

3. サンプルプロジェクト作成
play new testapps

プロジェクト名とプロジェクトのタイプを選択する
プロジェクトのタイプは「Scala」「Java」「empty」から選択する
testappsというプロジェクトのフォルダが実行したディレクトリ直下に作成される

4. サンプルプロジェクト実行
cd testapps
play
playコンソールが実行されてから以下を実行

run
http://localhost:9000/にアクセスしてチュートリアルが表示されることを確認

start
というコマンドでアプリケーションの実行ができますが、startはplayの概念的には商用環境を実行するときに実施するコマンドのよう
startで実施した後、http://localhost:9000/にアクセスすると表示されるページがスタイルが異なっていることがわかる

停止は両者ともCtrl+Dで停止


一応これで動作できる環境は整いました
せっかく作ったんで何か作ってみたいです

参考サイト
http://www.playframework-ja.org/documentation/2.0.4/Installing
http://www.playframework-ja.org/documentation/2.0.4/JavaTodoList
http://qiita.com/items/69a7365f359e44460f6c

2013年3月6日水曜日

emacsでJava開発をするためにJDEEを入れてみた

1. 環境
CentOS 5.9(final) 64bit
emacs 23.4.1
※emacsのバージョンは22.1以上である必要があります
JDEE 2.4.0.1
cedet 1.1
elib 1.0

2. cedetインストール
JDEEを動作させるためにcedet(Collection of Emacs Development Environment Tools)を先にインストールします
sourceforgeの公式サイトから「cedet-1.1.tar.gz」をダウンロード
http://sourceforge.net/projects/jdee/files/

tar zvxf cedet-1.1.tar.gz
mv cedet-1.1 ~/.emacs.d/site-lisp/
cd ~/.emacs.d/site-lisp/cedet-1.1
make EMACS=emacs
emacs -Q -l cedet-build.el -f cedet-build
emacsが起動しビルドが開始されます
ビルドでエラーがでなければ完了です
一旦emacsを閉じます

3. elibインストール
elibはemacsの拡張lispです
JDEEの動作に必要なのでインストールします

wget http://sourceforge.net/projects/jdee/files/jdee/Dependencies/elib-1.0.zip/download
mv elib-1.0 ~/.emacs.d/site-lisp/

4. JDEEインストール
wget http://sourceforge.net/projects/jdee/files/jdee/2.4.0.1/jdee-bin-2.4.0.1.zip/download
unzip jdee-bin-2.4.0.1.zip
mv jdee-2.4.0.1/ ~/.emacs.d/site-lisp/

.emacsファイルを開いて以下を追記
; for jdee
(load-file "~/.emacs.d/site-lisp/cedet-1.1/common/cedet.el")
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/cedet-1.1/common"))
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/jdee-2.4.0.1/lisp"))
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/elib-1.0"))
(setq jde-check-version-flag nil) ; for error that 'JDEE requires a version of CEDET between 1.0beta2 and 1.0 (found 1.1)'
(setq defer-loading-jde nil)
(if defer-loading-jde
  (progn
    (autoload 'jde-mode "jde" "JDE mode." t)
      (setq auto-mode-alist
        (append '(
          ("\\.java\\'" . jde-mode)) auto-mode-alist)))
  (require 'jde))
eval-bufferを実行して.emacsを反映します
※反映されない場合はemacsを再起動してください

5. 動作確認
Javaファイルをemacsで開きます
C-c C-v C-l(jde-complete)
を実行してprintlnが追加されればJDEEが正常に動作している状態になります
他のキーバインドに関してはdescribe-bindingsで確認することができます
また、C-c C-v C-. の補完機能を実施すると
Starting the BeanShell. Please wait...
が出て若干時間がかかります

■便利コマンド
C-c C-v C-l println補完
C-c C-v C-k BeanShell起動
C-c C-v C-n ブラウザでのJavadoc閲覧
(※C-c C-v C-wでも閲覧できますが、上記はローカルで指定したJavaDocを参照できます)


当初はemacsの24.21に対してJDEEをインストールしようと思ったのですが、どうやら24系では以下のエラーが発生するためJDEEが動作しないようです
Symbol's function definition is void: make-local-hook

参考サイト
http://jdee.sourceforge.net/
https://www.assembla.com/code/emacs_osnibore/subversion/nodes/trunk/site/dotemacs/.emacs.jde

非常にわかりやすいiptablesの設定方法


http://www.nina.jp/server/redhat/iptables/iptables.html

すごいわかりやすいです
このページを理解してれば80%は理解してるんじゃないかと勝手に思ってます

  • 主な機能はパケットフィルタ、NAT
  • 書式は[チェインに対して][パケットを][どうするか]の形式で記述
  • 独自のチェインが設定できる
  • 独自のチェインとはINPUTやFORWARDなどのチェインを束ねることができる名前空間的なもの
  • FORWARDはインタフェース間での通信に関するチェイン
  • INPUTはあるインタフェースへの入力に対するチェイン
  • -m state --stateで接続の状態に対して細かく制御することも可能
  • -m は拡張モジュールを指定するためのオプション
  • -j の次にチェインを指定する

2013年3月5日火曜日

今更memcachedを触ってみた

0. 環境
CentOS 5.9(final) 64bit
memcached 1.4.15

1. インストール
yum -y install libevent libevent-devel

wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar xvf memcached-1.4.15.tar.gz
cd 72_20130301_memcached/
./configure
make
make test
make install

which memcached
デフォルトでは/usr/local/bin/memcachedにインストールされる

2. memcached実行
memcached -u root -d
プロセスを停止するときはkillする
telnet localhost 11211
telnet状態になってから以下のコマンドを実施していく

3. memcachedコマンド実行
・状態を確認する
stats

・キーに値をセットする
set test1 0 0 5
abcde
STORED
と表示されれば「abcde」という値の格納が完了

・キーから値を取得する
get test1
VALUE test1 0 5
abcde
END
格納した値を取得

・キーの値を更新する
replace test1 0 0 6
abcdef
STORED
で「abcdef」に値が変更

・キーの値に対して後ろに値を追加する
append test1 0 0 5
12345
STORED
get test1
VALUE test1 0 11
abcdef12345
と表示されるように後ろに12345が追加

・cas IDを使ってキーの値を更新する
cas test1 0 0 6 6
zzzzzz
STORED
ここでのcasによる値変更は反映されるが
cas test1 0 0 6 6
aaaaaa
EXISTS
古いcas IDに対する変更は反映されない
gets test1
VALUE test1 0 6 7
zzzzzz
実際に値を取得してみるとわかる
cas IDを指定しての値変更は最新のcas IDを指定しない限りキーの値が変更されないことがわかる

・キー情報を全て削除する
flush_all

あとはAPIがありJDKもいろいろと用意されているようなので試してみてください

参考サイト:
http://memcached.org/
http://code.google.com/p/memcached/wiki/Clients
http://l-w-i.net/t/memcached/command_001.txt

2013年3月4日月曜日

超簡単chefのインストール方法【Omnibus(オムニバス)】

chefに必要なツールをgemを使わずにインストールできる方法がOpscodeから提供されています
http://wiki.opscode.com/display/chef/Installing+Omnibus+Chef+Client+on+Linux+and+Mac

20140206 P.S
ドキュメントサイトが変更になっていました
ワンライナーインストールに関しては以下のサイトに記載されております
http://www.getchef.com/chef/install/

ネットワークが使える環境で以下のコマンドを実行するだけです

sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash

chef-solo -v
などを実行するとインストールされていることが確認できると思います
実はrubyをインストールしていないので、わざわざrubyやgemをインストールしなくてもchefが使えます
お試しあれ

20130411 P.S
プロキシ経由でオムニバスを実行する場合には
  • curl(引数に--proxy-ntln --proxy)
  • wget(/etc/wgetrc にプロキシ設定を記載)
にプロキシを設定する必要があります