2013年4月30日火曜日

【CentOS】emacs serverのinit.dスクリプトを作成してserviceコマンドから起動する方法

Githubで公開してます
chefのcookbooksとして公開してます
https://github.com/kakakikikeke/cookbooks-emacs/blob/master/templates/default/emacsd.erb

2013年4月26日金曜日

configure→make→make installでマイナーバージョンがどんどんあがってしまう場合の対処方法

ものによるかもしれないのですが、ソースコードからインストールを行っている場合に再度コンパイルしてインストールを実施するとマイナーバージョンがどんどん上がっていってしまうみたいです
例えば

・一回目のインストール
emacs-23.4.1
・再インストール
emacs-23.4.2
・三回目のインストール
emacs-23.4.3

といった感じです
再インストールを繰り返しているといつの間にかマイナーバージョンがとんでもない数字になっている可能性もあるので、これを1に修正する方法です
以下で可能です

make clean

make uninstallではできないのでご注意ください
あんまり使うことはないと思いますがw

2013年4月23日火曜日

【SmartGit/Hg】The remote end hung up unexpectedly while git cloning

■対処方法
  1. コマンドプロンプトを開く
  2. cd C:\Program Files (x86)\SmartGitHg 4\git\bin
  3. .\git.exe config --global http.postBuffer 524288000
  4. SmartGit/Hgを再起動
  5. 再pushして1MB以上のファイルpushされることを確認する

■参考サイト

2013年4月22日月曜日

githubでいつもと違うPCからHTTPSの認証を使ってgit pushする場合の手順

■現象
git clone https://github.com/kakakikikeke/cookbooks-jpackage.git
したときに
git add
git commit
で最後の
git push
でエラーになる

■出るエラー
error: The requested URL returned error: 403 Forbidden while accessing https://github.com/kakakikikeke/cookbooks-emacs.git/info/refs
fatal: HTTP request failed

■解決作成
git remote set-url origin https://kakakikikeke@github.com/kakakikikeke/cookbooks-jpackage.git
git push -u origin master
ユーザを指定してから git push を実行するとパスワードが聞かれてメインストリームにpushできるようになります

■参考サイト

2013年4月20日土曜日

Virtualboxで作成したVMの初期設定項目(自分用メモ)

■基本設定
・ネットワーク設定
VMを停止した状態でNATとホストオンリーのネットワークカードを設定する
/etc/sysconfig/network で ホスト名を設定する
/etc/sysconfig/network-scripts/ifcfg-ethX でonbootをyesにする
/etc/sysconfig/network-scripts/ifcfg-ethX でHWADDRとUUIDの欄を削除する
service network restart
※この段階ではdhcpにしておく
※プロキシ環境の場合はここでプロキシ設定を実施(以下参照)
・chefインストール
chefのオムニバスインストール(ちょっと時間がかかるのでおいておく)
sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash
echo "export PATH=$PATH:/opt/chef/embedded/bin/" >> ~/.bashrc
mkdir /etc/chef
touch /etc/chef/solo.rb
mkdir /tmp/chef-solo
vi /etc/chef/solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path ["/chef-repo/cookbooks"]
role_path "/chef-repo/roles"
log_level :debug
solo.rbを切り替えられるのスクリプト配置(/usr/local/sbin/に配置)
https://gist.github.com/kakakikikeke/5499999
複数のcookbooksを異なるパスで管理する場合に使用する
上記を使用する場合は/chef-solo/cookbookXフォルダの用意と/etc/chef/soloX.rbを必要な数だけ用意する
・必要なパッケージ追加
yum -y update
yum -y install git openssh-clients telnet make gcc ncurses-devel wget bind-utils
cd /; git clone git://github.com/opscode/chef-repo.git
※ncursesはemacs用、bind-utilsはnslookupなど
・共有ドライブ設定
別記事参照
http://kakakikikeke.blogspot.com/2013/04/virtualboxlinuxwindows.html
設定できたあとは/chef-repoを移動する
共有フォルダの場所をDropBoxなどにしておくと更に便利です
mv /chef-repo /mnt/vb_share
ln -s /mnt/vb_share/chef-repo/ /chef-repo
・udev無効化
/etc/udev/rules.d
rm 70-persistent-net.rules
ln -s /dev/null 70-persistent-net.rules
※クローンした場合にはVMの設定からネットワークでmacアドレスを再設定する必要があります
・emacsレシピ実行
・.bashrcへのCLASSPATH追加
mkdir /usrl/local/java_lib/
vi ~/.bashrc
CLASSPATH="."
for i in `find /usr/local/java_lib/ -name "*.jar"`; do CLASSPATH=$CLASSPATH":"$i; done;
export CLASSPATH
・iptables, selinux設定
基本は両方共offにします(検証用のため)
chkconfig iptables off
emacs /etc/selinux/config
→SELINUX=disable
■プロキシ環境がある場合
・/etc/yum.conf
echo "proxy=http://sample.proxy.com:8080/" >> /etc/yum.conf
・環境変数
echo "export HTTP_PROXY=sample.proxy.com:8080" >> ~/.bashrc
echo "export HTTPS_PROXY=sample.proxy.com:8080" >> ~/.bashrc
・curl
echo 'proxy = "http://sample.proxy.com:8080"' >> ~/.curlrc
curl --proxy-ntlm --proxy sample.proxy.com:8080
⇒curlはaliasに登録してしまってもいいと思う
⇒http://kakakikikeke.blogspot.com/2013/04/curl.html
・wget
echo "http_proxy=sample.proxy.com:8080" >> /etc/wgetrc
echo "https_proxy=sample.proxy.com:8080" >> /etc/wgetrc
・chef
vi /etc/chef/solo.rb
http_proxy "http://sample.proxy.com:8080"
https_proxy "http://sample.proxy.com:8080"
・git
git config --system http.proxy http:{proxy_host}:{proxy_port}
git config --system https.proxy http:{proxy_host}:{proxy_port}
■クローン後の設定
・ホスト名の設定
/etc/sysconfig/network
で種になっているマシン名を変更する

2013年4月19日金曜日

VirtualBoxで作成したLinuxマシンにWindowsのドライブをマウントする方法

1. 共有フォルダ作成(Windows側操作)
C:\vb_share フォルダを作成
作成したフォルダで右クリックで共有を選択
共有するユーザを選択するプルダウンでEveryOneを選択

2. VirtualBox共有フォルダ設定(Windows側操作)
VMの設定から一番下の共有フォルダを選択
右上のフォルダ追加ボタンからフォルダを追加
「フォルダーのパス」のところで先ほどWindows上で作成した共有フォルダを選択
必要であれば自動マウントを選択

3. Guest Addtionsのインストール(Windows&Linux側操作)
Windows側でVirtualBoxの設定画面からメニューバーのデバイスからGuest Addtionsのインストールを選択
Linux側に移動し以下を実施
yum -y install gcc make
yum -y install kernel-devel
export KERN_DIR=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64
mkdir /mnt/disk
mount -r /dev/cdrom /mnt/disk/
cd /mnt/disk
sh VBoxLinuxAdditions.run
mount.vboxsfのコマンドがインストールされていることを確認

4. マウントの実施(Linux側操作)
mkdir /mnt/vb_share
mount -t vboxsf vb_share /mnt/vb_share


これでマウントが完了するので、Windows側で作成したファイルがLinux上でも見てることを確認してください
起動時に自動でマウントしたい場合には
echo "mount -t vboxsf vb_share /mnt/vb_share" >> ~/.bashrc
を記載しておけば自動マウントされます

またカーネルモジュールがアップデートされた場合は再度GuestAddtionsをインストールし直す必要があるのでご注意ください
mounting failed with the error: No such device
というエラーが出た場合には再インストールしてください

2013年4月18日木曜日

複数の動画を同時に再生する方法(Mellow)

  1. http://17.pro.tok2.com/~mellow/blog/archives/3081からMellowの最新版をダウンロード(結構、下のほうにリンクがあります)
  2. ダウンロードしたMellowというファイルの後ろに.zipを付与して解凍
  3. Mellow Multi Player.exeを実行し起動
  4. 左下にある列の追加または行の追加のプルダウンを選択して右隣りにあるSETを押下
  5. 分割されたウィンドウにそれぞれ再生した動画をドラッグ&ドロップ
  6. 停止、再生を実行すると同時再生がはじまります

2013年4月15日月曜日

docomoのDOCOPYでバックアップした連絡先データをgmailにインポートし、iphone5と同期する方法

■docomoのデータリンクソフトをダウンロードしインストール
  1. http://datalink.nttdocomo.co.jp/dl.html
  2. インストールが完了したら適当にユーザを作成します(ユーザ作成は必須です)
  3. 作成したユーザでログインします

■データのインポート
  1. ファイルメニューから「バックアップファイルの読み込み」を選択
  2. ドライブにCDを挿入
  3. 読み込んだディスクのbackup.datを選択してインポート実施
  4. パスワードを聞かれるのでdocomoショップでバックアップCDを作成した際に設定したパスワードを設定します
  5. ※インポートが完了後にデータを最新のフォーマットに変換するというダイアログが出る場合があるのでOKにします ※インポートしたデータはdatalinkが管理してるどこかのデータストアに保存されます

■CSV形式でエクスポート
  1. ファイルメニューから「エクスポート」→「CSV」を選択
  2. エクスポート先を選択する画面になるので選択するとエクスポートされます

■Gmailへインポート
  1. Gmailを開き左上の「Gmail」から連絡先を選択
  2. 左メニュー欄に連絡先のインポートがあるので、選択
  3. エクスポートしたCSVファイルを選んでエクスポートすると「インポート(日付)」の名前のグループにすべてのユーザが属します
  4. あとは地道にメールアドレスと電話番号、グループ等を設定すればgmail側の設定完了です

■iPhone5側設定
  1. http://d.hatena.ne.jp/kobonemi/20120928/iPhoneGmailContacsSyncCardDAV
  2. CardDAVとしてgmailと同期すると連絡先をiPhoneに取り込めます


これで連絡先を統合することができました
お試しあれー

2013年4月14日日曜日

xyzzyでmarkdown形式を編集できるようにする方法

  1. https://gist.github.com/youz/1339252/
  2. のDownload Gist からtar.gz形式をダウンロード
  3. 展開して以下のディレクトリにmarkdown-mode.lを設置
  4. C:/myinstallprogram/xyzzy/site-lisp/ (lファイルを置く場所はxyzzyをインストールしている各自の適切な場所に配置してください)
  5. C:/myinstallprogram/xyzzy/site-lisp/.xyzzy に以下を記述
  6. (load-file "C:/myinstallprogram/xyzzy/site-lisp/markdown-mode.l")
    (push '("\\.md$" . markdown-mode) *auto-mode-alist*)
    
  7. .mdファイルを開くとmarkdown記法の部分に対して色づけがされるようになります

ただ、xyzzy上でプレビューが見れるというわけではないので別途
https://addons.mozilla.org/ja/firefox/addon/markdown-viewer/
とかをインストールするといいかもしれません

2013年4月13日土曜日

curlでプロキシを設定する方法

curl --proxy-ntlm --proxy sample.proxy.com:8080 www.nifty.com


curlコマンドは設定ファイルでproxy設定ができないので、以下のような感じでaliasを通しておくといいかもしれません
alias curl='curl --proxy-ntlm --proxy sample.proxy.com:8080'


P.S curl用の設定ファイルはあるようです・・・
~/.curlrc

proxy = "http://sample.proxy.com:8080"
を設定するとプロキシ設定になるようです

2013年4月12日金曜日

【Windows7】SmartGit/Hg4.0.5 でプロキシを設定する方法

Windows上で使えるGUIベースのgit用のクライアント「SmartGit/Hg」でプロキシを設定する方法を紹介します

  1. 1. windowsのコントロールパネルから環境変数の設定画面を開く
  2. 2. 「HTTP_PROXY」の変数を作成しプロキシサーバの値を設定(ポート番号まで記載すること)
  3. EX)sample.proxy.com:8080
  4. 3. SmartGit/Hgを再起動

これでもダメな場合は以下も設定

  1. 1. C:\Program Files (x86)\SmartGitHg 4\bin 移動
  2. 2. smartgithg.vmoptions を編集し以下を追記
  3. -Dhttp.proxyHost=sample.proxy.com -Dhttp.proxyPort=8080
  4. 3. SmartGit/Hgを再起動

自分は上記2つを設定することで無事通信できるようになりました

2013年4月11日木曜日

iphone5でPCのブックマークと同期する方法

※以下を実施するためには事前にGoogleアカウントを取得しておく必要があります。

■PC側での作業
  1. PCにGoogle Chromeをインストール
  2. GoogleChromeにログインする
右上の設定ボタンからchromeにログインを押下することでログインすることができます
PC側のログインが完了したらPC側の作業は完了です

■iphone5側での作業
  1. Apple storeからchromeのアプリをダウンロード(検索でchromeと入力すれば検索できます)
  2. chromeアプリを起動し設定からchromeにログインを押下してログインします
  3. するとPC上で登録したブックマークとiphone5上のブックマークが同期されます


いろいろと試行錯誤したのですが、上記が一番簡単でした。
自分はchromeをiphone5のデフォルトブラウザとして利用しているので特に問題ないのですが、safariをデフォルトで使っている方はこの同期方法だとsafariには反映されません
PC側のfirefoxのブックマークをiphone5にインポートした場合は一旦firefoxとchromeで同期をかけたあとにiphone5と同期をとる必要があります
firefoxとchromeのブックマークを同期にはいろいろと方法がありますが、自分はxmarksを使ってやってます
またxmarksのiphone5アプリもあるのですが、有料でかつ結構使いづらいのでおすすめはしません
というわけで流れをまとまると以下のようになります

(PC側)             (iphone5側)
firefox ⇔ xmarks ⇔ chrome | ⇔ | chromeアプリ

2013年4月9日火曜日

emacsでXMLパースをやってみた

1. インストール
cd ~/.emacs.d/site-lisp/xml
wget http://repo.or.cz/w/emacs.git/blob_plain/HEAD:/lisp/xml.el
.emacsに以下を追記
(load-file "~/.emacs.d/site-lisp/xml/xml.el")
emacsを再起動します

2. サンプルXML作成
<post time="20050716234509" id="010101">
  <login>Test</login>
  <msg>Here is the message</msg>
  <info>MyUA</info>
</post>

上記をcd ~/.emacs.d/site-lisp/xml/sample.xmlとして保存してください
※他にも「XML サンプル」でググるとたくさんでてきます

3. 実行
scratchで以下のソースコードを記載

(let*
  ((xml (xml-parse-file
    (expand-file-name "~/.emacs.d/site-lisp/xml/sample.xml")))
    (post (car xml))
    (attrs (xml-node-attributes post))
    (time (cdr (assq 'time attrs)))
    (msg (car (xml-get-children post 'msg)))
    (text (car (xml-node-children msg))))
    (message "time: %s, message '%s'" time text))

eva-bufferもしくはカーソルを一番下にもっていきCtrl+jで実行できます
ミニバッファに
「time: 20050716234509, message 'Here is the message'」と出れば成功です
xmlをパースしたリストを返すようなメソッドを作成して受け取ったリストから
パースする流れを作ったほうがいいかもしれません


ちなみに文字列を直接パースする場合には以下の方法となります
ファイルの読み込み時とは異なるのでご注意を

(let*
  ((xml "<post time=\"20050716234509\" id=\"010101\"><login>Test</login><msg>Here is the message</msg><info>MyUA</info></post>")
    (root (with-temp-buffer (insert xml) (xml-parse-region (point-min) (point-max))))
    (post (car root))
    (attrs (xml-node-attributes post))
    (time (cdr (assq 'time attrs)))
    (msg (car (xml-get-children post 'msg)))
    (text (car (xml-node-children msg))))
    (message "time: %s, message '%s'" time text))

処理の流れとしてはXMLデータをlispで扱えるリスト形式のデータに落とし込んだ後にcarでリストから値を取得するという流れになっています
パースする部分は直感的で使いやすいなーと感じました


参考サイト
http://www.emacswiki.org/emacs/XmlParserExamples

2013年4月8日月曜日

【au】iphone5契約時に設定しなければいけない項目

■auIDの取得
safariから実施
ブックマークからauお客様サポートのページに遷移し「iphone5簡単設定」からauIDの設定画面にいけます
電話番号+4桁の数字パスワードで認証するとMMSにメールが届くのでそのリンクをクリックするとauIDの本パスワードが設定できます
それが完了すればauIDの取得は完了です
初回は携帯番号がIDとして登録されているので、必要に応じて好きなIDに変更してください

Tips
契約した初日では契約内容を確認したり変更したりできないので翌日に実施しましょう

■appleIDの取得
普通にPCのブラウザから実施(iphone5のsafariでも大丈夫です)
以下から取得してください
https://appleid.apple.com/jp/
クレジットカード情報や住所情報を入力したら登録完了です
完了したら設定アプリまたはapple storeアプリからiphone5にappleIDを設定します

Tips
apple storeのID情報から取得したほうが入力する情報がすくなくて済むが
まだ一度もitunesにログインしていないappleIDをiphone5で使用するとapple storeのアプリがフリーズするようです
自分は一応再起動で直りました
http://support.apple.com/kb/HT1430?viewlocale=ja_JP&locale=ja_JP
これがappleクオリティってやつですかねw
ちゃんとクレジットカードの情報とかを入れないとダメみたいです

■auお客様サポートアプリのダウンロード
apple storeアプリから実施
初回にapple storeアプリを実行しようとするとダウンロードを促されます
さきほどのappleIDが設定されていればダウンロードできます
ダウンロードが完了したら取得したauIDを設定します

■SMSメールアドレスの変更
safariから実施
auのお客様サポートページを開いてメールアドレスの設定をします
@ezweb.ne.jpのドメインで終わるメールアドレスを使うために設定する必要があります
デフォルトはランダムな文字列になっているため変更する必要があります
「EZwebメール初期設定」という欄があるのでそこから設定可能です
契約時に設定した4桁の数字の暗証番号が必要になります
変更は1日3回もできるみたいです

■MMSメールアドレスの設定
safariから実施
auのお客様サポートページを開いてメールアドレスの設定をします
「メッセージアプリ(MMS)利用設定」という欄があるのでそこから設定可能です
手順通りに行なっていけば問題なくできると思います
設定するメールアドレスはSMSで取得したメールアドレスを使用してください
これでMMSアプリを使用してメールの送受信ができるようになります
ちなみにMMSとはiphone独自のメーラのことです

ここまで実施すれば基本的なスマホの動作はできるようになります
あとはアプリのインストールや細かいiphone5の設定を実施してくただければと思います
MNPの場合もあるので電話帳の移行も実施したほうがいいと思います
http://www.au.kddi.com/iphone/support/guide/5.html

2013年4月6日土曜日

【emacs】elipsでREST-APIのsignatureを生成する方法

gistで公開しています
https://gist.github.com/kakakikikeke/5316171

■インストール方法
cd ~/.emacs.d/site-lisp/get-signature
git clone git://github.com/psanford/emacs-oauth.git
# hmac-sha1.elという公開済みのelispを使用する
mv ~/.emacs.d/site-lisp/get-signature/emacs-oauth/hmac-sha1.el ~/.emacs.d/site-lisp/get-signature/
wget https://raw.github.com/gist/5316171/get-signature.el

.emacsに以下を追記
(load-file "~/.emacs.d/site-lisp/get-signature/hmac-sha1.el")
(load-file "~/.emacs.d/site-lisp/get-signature/get-signature.el")

emacsを再起動後、scratchで以下を実施すると生成されたsignatureが表示されます
(get-signature "Your Secret Key" "message for creating the signature")

2013年4月5日金曜日

【emacs】Not enough arguments for format string

(message "%s" test)

依存文字らしき文字「%」や「:」が入っているときには
「%s」
でmessageを表示しないとエラーになるようです
なので当該エラーが発生したときには、elispファイル内にmessageの宣言がないか確認しましょう

2013年4月4日木曜日

【emacs】一回で画面を4分割するelisp

gistで公開しています
https://gist.github.com/kakakikikeke/5308321

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

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

emacsを再起動後、ミニバッファでで以下を実施すると画面が4分割されます
M-x split4

2013年4月3日水曜日

【メモ】オレ流CLASSPATHの管理方法

.bashrcに以下を追記
CLASSPATH="."
for i in `find /usr/local/java/lib/ -name "*.jar"`; do CLASSPATH=$CLASSPATH":"$i; done;
export CLASSPATH
/usr/local/java/lib/で必要なjarファイルを一括管理(何か追加があった場合はここにどんどん追加していく)

という風にすると起動時または source .bashrc でCLASSPATHを更新することができる
アスタリスクでフォルダ指定すればいいじゃんってのもあるんだけどCLASSPATHがアスタリスクだとアプリ側で対応してない場合があったのでこの方法にしました
これが俗にいうmavenリポジトリってやつなのか・・・w