2014年11月28日金曜日

MacにJavaをインストールする方法

概要

OSXのシステム自信が使用するためのJavaはデフォルトで入っているようなのですが、それがJava6まででJava7以降が必要な場合は自分でインストールします
今回はJava8ですが、方法をまとめたのでメモしておきます

環境

  • Mac OS X 10.8.5
  • JDK 8 update 25

インストール

dmgファイルのダウンロード

まずはMacにインストールするためのdmgファイルをダウンロードします
Oracleの公式サイトにMac用のdmgファイルがあります

ライセンスに同意してMac OS X x64のdmgパッケージをダウンロードします
2014/11/27現在では「jdk-8u25-macosx-x64.dmg」というファイルがダウンロードできました
mac_java_dmg.png

Macにインストールする

ダウンロードした「jdk-8u25-macosx-x64.dmg」を実行します
するとFinderで開くのでその中にある「JDK 8 Update 25.pkg」をクリックして実行します
これがインストーラになります
extract_dmg.png

実行するとインストールがはじまります
start_install_java.png

インストール先は好きなところを選択してください
途中Admin権限のパスワードを聞かれる場合はAdminユーザのパスワードを入力してください
特に問題なくインストールできると思います

確認

MacにはインストールされているJavaを一覧表示できる便利なコマンドがあります

/usr/libexec/java_home -V

実行すると以下のような結果が返ってくると思います

Matching Java Virtual Machines (3):
    1.8.0_25, x86_64:   "Java SE 8"     /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
    1.6.0_65-b14-462, x86_64:   "Java SE 6"     /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-462, i386:     "Java SE 6"     /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
n

1.6.0はデフォルトで入っていたJavaです
今回インストールしたのは1.8.0の方になります
ポイントとかは特にないですが、自分でインストールしたJavaとデフォルトでMacにインストールされているJavaは管理上からかインストールされるディレクトリが異なっているようです

で、javaコマンド自体はどちらになっているのか確認したら

java -version

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

とちゃんと自分でインストールしたほうが優先されていました

あとは必要におうじて$JAVA_HOMEを設定してください
インストールしただけでは$JAVA_HOMEは設定されないようでした

2014年11月27日木曜日

WindowsサーバにRabbitMQをインストールしてみた

概要

Windows + Cygwin環境上でRabbitMQを動作させてみました

環境

  • Windows7 64bit
  • Cygwin 1.7.32-1
  • apt-cyg 0.59
  • erlang 17.3
  • RabbitMQ

インストール

erlangのインストール

erlangのダウンロードサイトから最新のerlangのインストーラをダウンロードしてきます
ダウンロードが完了したらインストーラを起動してインストールします
2014/11/26のWindows7 64bitの最新版は「OTP 17.3 Windows 64-bit Binary File (91.0 MB) 」でした

インストールに関しては特に問題ないと思います
サイズがでかくダウンロードに時間がかかるのとローカルのストレージの残容量にご注意ください

ERLANG_HOMEの設定

デフォルトだと「C:\Program Files\erl6.2」にインストールされるようです
これをERLANG_HOMEとしてWindowsのシステム環境変数に追加します

コントロールパネル -> システムとセキュリティ -> システム -> システムの詳細設定 -> 環境変数

erlang_path_config.png
必ずシステムの環境変数に設定してください
これでerlangの設定はOKです

RabbitMQのインストール

https://www.rabbitmq.com/releases/rabbitmq-server/v3.4.1/rabbitmq-server-windows-3.4.1.zip
をダウンロードします
ダウンロードしてできたzipファイルを解凍します
あとは解凍したファイルを適当なパスに配置します

mkdir -p ~/Documents/work/rabbitmq/
cd ~/Downloads/
unzip rabbitmq-server-windows-3.4.1.zip
mv rabbitmq_server-3.4.1 ~/Documents/work/rabbitmq/

これでインストールは完了です

RabbbitMQの起動

では起動するか確認してみましょう
先ほどインストールしたディレクトリに移動してbatファイルを実行します
同じターミナルで作業している場合は一旦閉じるか別のターミナルで作業をしてください
ERLANG_HOMEをターミナルに反映させるためです

cd ~/Documents/work/rabbitmq/rabbitmq_server-3.4.1
cd sbin
./rabbitmq-server.bat

で以下のように起動すればOKです

username@localhost ~/Documents/work/rabbitmq/rabbitmq_server-3.4.1/sbin
$ ./rabbitmq-server.bat

              RabbitMQ 3.4.1. Copyright (C) 2007-2014 GoPivotal, Inc.
  ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/
  ##  ##
  ##########  Logs: C:/Users/username/AppData/Roaming/RabbitMQ/log/rabbit@localhost.log
  ######  ##        C:/Users/username/AppData/Roaming/RabbitMQ/log/rabbit@localhost-sasl.log
  ##########
              Starting broker... completed with 0 plugins.

停止する場合は

./rabbitmqctl.bat stop

で停止できます

管理UIを有効にする

一旦stopした後に

./rabbitmq-plugins.bat enable rabbitmq_management

でプラグインを有効化してから、起動してください
その後http://localhost:15672/にアクセスして
guest/guestでログインすることができます(デフォルトのユーザとPWです)

紹介は以上です
意外と簡単にできました
上記のコマンドや作業はすべてCygwin上で実行しています

参考サイト

2014年11月26日水曜日

Cygwin上にRedisをインストール

概要

過去にWindows上にRedisをインストールする方法を紹介しましたが、この方法だと実はCygwin上では使えません
今回はCygwin上で実行できるRedisのインストール方法をご紹介します

環境

  • Windows7 64bit
  • Cygwin 1.7.32-1
  • apt-cyg 0.59
    • make, gcc-core
    • 事前にapt-cygでmakeに必要なパッケージをインストールしておいてください、apt-cygのインストール方法はこちらから
  • Redis 2.6.14

インストール

インストールはRedisのソースコードをmakeビルドしてインストールします

Redisインストール

まずはソースをダウンロードして解凍します

wget https://redis.googlecode.com/files/redis-2.6.14.tar.gz
tar zvxf redis-2.6.14.tar.gz

既存のソースコードをCygwin でビルドできるように修正します

cd redis-2.6.14/src/
vim redis.h

redis.hはすでに存在するファイルでこれに追記します
追記する箇所は「Data types」の上に以下を追記します
(左の番号は行数なのでコピペしないでください)

307 #ifdef __CYGWIN__
308 #ifndef SA_ONSTACK
309 #define SA_ONSTACK 0x08000000
310 #endif
311 #endif
312
313 #if defined(__CYGWIN__)
314 #define strtold(a,b)    ((long double)strtod((a),(b)))
315 #endif
316
317 /*-----------------------------------------------------------------------------
318  * Data types
319  *----------------------------------------------------------------------------*/

追記できたらあとはビルドします

make

P.S 20160822
make 時に「エラー: 不明な型名 ‘u_int’ です」となってエラーになる場合は以下のように実行してみてください
CFLAGS='-D_GNU_SOURCE'

成功すると最後は以下のようになりました
警告でまくりでしたがうまく成功しているようです

...この前にもいろいろビルドログが出ている...

...

redis-check-aof.c: 関数 ‘process’ 内:
redis-check-aof.c:118:17: 警告: 関数 ‘strcasecmp’ の暗黙的な宣言です [-Wimplicit-function-declaration]
                 if (strcasecmp(str, "multi") == 0) {
                 ^
redis-check-aof.c: 関数 ‘main’ 内:
redis-check-aof.c:177:5: 警告: 関数 ‘fileno’ の暗黙的な宣言です [-Wimplicit-function-declaration]
     if (redis_fstat(fileno(fp),&sb) == -1) {
     ^
redis-check-aof.c:198:17: 警告: 関数 ‘strncasecmp’ の暗黙的な宣言です [-Wimplicit-function-declaration]
                 strncasecmp(buf,"y",1) != 0) {
                 ^
    LINK redis-check-aof

Hint: To run 'make test' is a good idea ;)

実行するのはmakeだけでOKです(make testやmake installは不要)

動作確認

バイナリファイルが存在するか確認しましょう
redis-2.6.14/src/配下でls -ltrを実行して以下のファイルがあればOKです

-rwxr-xr-x 1 user None 2056256 11月 26 15:51 redis-server.exe
-rwxr-xr-x 1 user None 2056256 11月 26 15:51 redis-sentinel.exe
-rw-r--r-- 1 user None  139609 11月 26 15:51 redis-cli.o
-rwxr-xr-x 1 user None  424068 11月 26 15:51 redis-cli.exe
-rw-r--r-- 1 user None   52283 11月 26 15:51 redis-benchmark.o
-rwxr-xr-x 1 user None  337399 11月 26 15:51 redis-benchmark.exe
-rw-r--r-- 1 user None   44586 11月 26 15:51 redis-check-dump.o
-rwxr-xr-x 1 user None  114399 11月 26 15:51 redis-check-dump.exe
-rw-r--r-- 1 user None   23556 11月 26 15:51 redis-check-aof.o
-rwxr-xr-x 1 user None   84892 11月 26 15:51 redis-check-aof.exe

あとは

cd redis-2.6.14/src/
./redis-server.exe

でredis-serverを立ち上げて別のcygwinターミナルから

cd redis-2.6.14/src/
./redis-cli.exe

すれば問題なく使えると思います

自分の場合は何も失敗することなくスムーズにmakeビルドできましたが、makeする環境が整っていないとエラーになると思います
その場合はapt-cygがあればapt-cygで必要なライブラリやモジュールをインストールすれば問題ないと思います

参考サイト

2014年11月20日木曜日

NewRelicを使ってZabbixサーバ自信を監視してみた

概要

Zabbixにはzabbix_server自信を監視する機能がない(というか無理)なので
外部の監視システム(今回はNewRelic)を使ってZabbix自体を監視してみました

環境

  • CentOS 6.3 64bit
  • Zabbix 2.0.3
  • NewRelic 2014/11/20時点

準備

まずはNewRelicでアカウント登録

基本は無料で登録使用できます
http://newrelic.com/
にアクセスして「Sign Up for New Relic」からアカウント登録できます
regist_newrelic.png

アカウント登録画面では全部の内容を入力します
内容に不備がある場合は登録しようとしてもエラーになります
内容に不備がある部分は赤字で怒られます
regist_account.png

注意するところは特にないですが
監視するサーバのプラットフォームを選択する部分があるので「PHP」を選択してください
会社名を入力する部分がありますない方は適当でもいいかもしれません(自分は一応所属する会社名を入力しました)

設定

エージェントインストール

NewRelicで監視するサーバにエージェントをインストールします
これがないと監視することができません

まずはNewRelicが提供するレポジトリをインストールします

rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm

リポジトリがインストールできたらyumコマンドで必要なパッケージをインストールしていきます

yum install newrelic-php5
  • newrelic-php5
  • newrelic-daemon
  • newrelic-php5-common

がインストールされます
インストール時にGPG keyをインポートしますと言われるのでyesにします

Importing GPG key 0x548C16BF:
Userid : New Relic <support@newrelic.com>
Package: newrelic-repo-5-3.noarch (installed)
From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-NewRelic
Is this ok [y/N]: y

エージェントをインストールする準備が整ったのでエージェントをインストールしていきます

newrelic-install install

インタラクティブモードでインストールすることになります
必要な内容を入力しながらインストールしていきます

ライセンスキーの入力

おそらくしょっぱなで入力することになります
以下が表示されたらライセンスキーを入力します

Enter New Relic license key (or leave blank):

ライセンスキーはNewRelicのARM(Application Performance Management)で取得することができます
get_license_key.png

たぶん設定するのはこれだけです
入力後にインストールが完了された旨の英語が出てくればインストール完了です

あとついでにchkconfigをONにしておきます

chkconfig newrelic-daemon on

監視状態の確認

エージェントがインストールできたら一旦zabbix_serverとhttpdを再起動します

service httpd restart
service zabbix-server restart

これで5分後くらいにARMを見ると監視が開始されていることを確認できると思います
watch_php_app.png

成功していると上図のような感じになります
Nameのリンクをクリックすると監視しているサーバの詳細な情報をグラフで確認できます
何の設定もしていないですが、Zabbixで使っているMySQLの監視も勝手にできているっぽいです

うまくいかない場合は/var/log/newrelic/newrelic-daemon.logというログを見てください
何か手がかりがあるかもしれません

ZabbixServerがダウンしたら通知するように設定

さてここからが本題です
ZabbixServerがダウンしたらメールで通知するようにしてみます

サイトの監視

所謂、80番ポート監視してみます
ARMで対象のアプリケーションを開いて左メニューから

Event -> Alerts -> Edit alert policy

を確認してみます、するとすでにアラートが設定されておりこれ利用することでサイトの監視をしてみます default_alerts.png

このアラートを見ると「1 application is missing a ping URL」という警告が出ていて、これが出ているとサイト監視ができていないことになります

左メニューから

SETTINGS -> Availability monitoring -> URL to monitor

にZabbixのURLを記載します
regist_zabbix_host.png

入力してから「Save your changes」とすれば設定完了です
再度Application alert policiesを見ると先ほどの警告が出ていないと思います
それでもアラートが出る場合はここに記載されているIPからの80番ポートアクセスをFWやiptablesに許可してみてください

この状態で試しにサーバを停止してみたらアカウント登録時に設定したメールアドレスにちゃんとサーバ死んだよメールが届きました
起動すれば復旧メールも届きます

一応これでサーバ自体がダウンした場合と80番でLISTENできなくなった場合はNewRelicから監視することができるようになりました

が、たとえばzabbix-serverのプロセス自体が死んだ場合やZabbixが使っているMySQLが死んだ場合は検知できない状態です
本当はそこまで監視したかったんですが、プラグインを作ったりしないといけなさそうだったのと自分のNewRelic力がなさすぎて今回はギブしました
時間があったらやってみようかな

参考サイト

2014年11月18日火曜日

emacsを起動しないでelispを実行する方法

概要

rubyとかでいうところのirb的なことをemacsでもやりたいなと思い調べてみたらあったので紹介します

環境準備

  • CentOS 5.10 Final
  • emacs 24.2.2

やり方

サンプルを交えつつ

  • メッセージをプリントするだけ
emacs -batch --eval '(message "test")'
  • package.elを使ってパッケージをインストールする
emacs -l ~/.emacs -batch --eval '(progn (require (quote package)) (package-install (quote anything)))'

オプションの説明

  • -batch
    emacsをバッチモードで起動します、エディタが立ち上がってきません
  • –eval
    引数で与えられたelispを評価します
    シングルクォートでくくっておくといいです
    評価式内でシングルクォートを使いたい場合は(quote)を使いましょう
  • -l
    .emacsをロードする
    指定しない場合は.emacsに定義されているelispは読み込まれずにバッチモードが起動します

これでpackage.elがコマンドラインから使えるのでemacsの設定もある程度自動化できそうです

2014年11月13日木曜日

iOSアプリを更新する際の手順

概要

iOSアプリをアップデートする手順をまとめました
公開するときの手順はこちら

環境

  • Mac OS X 10.8.5
  • Xcode 5.1.1
  • iTunes Connect 2014/11/12時点

手順

ざっくりと

  1. iTunesConnectに次バージョンを作成
  2. Xcodeで General -> Identity -> Versionのバージョンを変更(iTunesと同じバージョンにする)
  3. Xcodeで General -> Identity -> Buildのバージョンをを変更(iTunesと同じバージョンにする)
  4. Xcodeを起動した状態でMacに実機接続
  5. XcodeのOrganizerで実機に証明書を登録(公開時にやっているのであれば特に実施する必要はなし、Xcodeが使える実機を使うこと)
    • デバイスが新規デバイスの場合は Member Center でデバイスを登録したあとで開発用のプロビジョニングプロファイルの作成もしなおしてください
    • 作成しなおしたプロビジョニングプロファイルをダウンロードして Xcode でデバイスにプロファイルをインストールしましょう
  6. Xcodeで左上の端末情報を実機に変更する
  7. Xcodeで Product -> Archiveで公開用のビルドファイルを作成するとOrganizerが立ち上がる
    Archiveがアクティブになっていない場合はうまく実機が認識できていないか、実機が使えない状況になっています
    • 使用できない原因の多くはデバイスにアプリに対応したプロビジョニングプロファイルがインストールされていないためです
    • まだ実機でテストする場合は開発用のプロビジョニングプロファイルがデバイスとアプリ側で一致している必要があります
  8. OrganizerでValidateをかける
  9. Validateが問題なければDistributeでiTunesConnectにビルドファイルをアップロードする
  10. iTunesConnectにアクセスして「このバージョンの最新情報 」の日本語と英語を入力
  11. iTunesConnectでアップロードしたビルドファイルを選択する
  12. iTunesConnectでアプリの説明やレイティング等を調整して問題なければレビューへ提出する

あとはレビューが完了するのを待つだけです
iTunesConnectやXcodeバージョンによって操作方法や流れが変わっちゃうのはDeveloperにとってはよくないですね

Q&A

  • Q. バージョンアップしないでスクリーンショットだけ変更したい
    A. できません、新規バージョンを作成して再度アプリを申請に出す必要があります

2014年11月12日水曜日

既存のJekyll環境にBootstrapを適用する方法

概要

Jekyllをそのまま使っていてちょっとデザインが味気ない場合にBootstrapを適用することができるのでその方法をご紹介します
バージョンによって設定方法が変わる可能性がありますのでご了承ください

環境

  • Ruby 1.9.3p286
  • Jekyll 1.2.1
  • Jekyll Bootstrap 0.3.0

各種設定

Jekyll Bootstrapの適用

既存の環境はこんな感じです

[root@localhost jekyll]# ls -ltr
合計 28
-rw-r--r--  1  134 10月 15 16:56 2013 _config.yml
drwxr-xr-x  4 4096 11月 11 11:23 2013 assets
drwxr-xr-x  3 4096 11月  7 13:30 2014 _posts
drwxr-xr-x  2 4096 11月 11 15:25 2014 _layouts
-rw-r--r--  1  500 11月 11 15:29 2014 index.md
drwxr-xr-x 74 4096 11月 11 15:29 2014 _site
  • デフォルトからほぼ変更していない状態
  • index.mdとassets配下にcssを若干置いたくらい
  • _layouts配下も記事のテンプレートとなるHTMLと若干のcssがある
  • _post配下には記事となるmdファイルがたくさんある

この状態から

git clone 'https://github.com/plusjade/jekyll-bootstrap.git'
cp -ipr _posts/* jekyll-bootstrap/_posts
cd jekyll-bootstrap/
jekyll build
jekyll server

とすればhttp://hostname:4000でJekyll Bootstrapが適用されたUIが確認できると思います
基本的には_posts配下の記事を移動するだけです

ビルドした際にエラーが出る場合は_postsディレクトリ配下に移動したmarkdownファイル内に使用できない文字が含まれていたりmarkdownファイルのフォーマットがおかしい可能性があるのでエラーの内容を確認してmarkdownファイルを修正してください

ここまでがJekyll Bootstrapの適応に必要な作業です
適用すること自体は非常に簡単でした
以下は必要に応じて作業してください

広告を外す

どうやらJekyll Bootstrapはコメント機能にDisqusを使っているようです
デフォルトだとDisqusの広告機能が有効になっておりアダルトやらbillの広告多数あります
外す方法はこちら参考にしてみてください

そのままでは移植できなかったフォーマット

_postsファイル配下にmarkdownファイルを移動した際にエラーとなったので対処しました

  • `(backticks)が使えない
    デフォルトだと使えません
    以下の手順でredcarpet2というJekyllPluginをインストールする必要があります
gem install albino redcarpet

cd jekyll-bootstrap
git clone https://github.com/nono/Jekyll-plugins.git
mv Jekyll-plugins/redcarpet2_markdown.rb _plugins/
rm -rf Jekyll-plugins/

そして_config.ymlに対して以下を追記します

markdown: redcarpet 
redcarpet: 
    extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"] 

これでGithubFlavorのようにソースコードを表示するときのbacktickts3つが使えるようになります

その他設定箇所

  • _config.yml
    • title, authorを変更
    • comments, analyticsをコメントアウト
      • commentsの設定箇所をコメントアウトすれば
    • BASE_PATHの設定
      • /以外がindex.htmlにある場合に設定してください
      • ビルドする際はjekyll build --safeオプションを指定してください(指定しないとBASE_PATHがうまく反映されませんでした)
      • BASE_PATH: /blog
  • トップ画面の不要部分を削除(index.md)
    • titleの変更
    • taglineのSupporting taglineを削除
    • Read ~ Sample Postsまでを削除
    • TODO部分の削除
  • 不要ファイルの削除
    • _posts/core-samples/2011-12-29-jekyll-introduction.mdの削除
    • pages.html, categories.html の削除(ヘッダのナビゲーションバーもなくなります)
  • 検索フォームの削除
    • _includes/themes/bootstrap-3/default.html内でフォームを管理しているのでその部分を削除
      • 検索機能がうまく動作しなかったので外しました

以上です
Jekyllは便利ですね

2014年11月10日月曜日

TestNGで文字列の部分一致テストをする方法

概要

TestNGはJavaのテストフレームワークです
さまざまなAssertを使い、値を比較してテストが通ったかどうかを判定させます
ただ、TestNGが提供するAssertの種類に文字列の部分一致を行うテストがなく文字列に関しては完全一致によるテストしかありません
今回はTestNGで文字列の部分一致を実施する方法を紹介します

環境

  • Java 1.6 Over
  • TestNG 6.3.1

やり方

結論から記載すると以下のような感じで記載します

Assert.assertTrue(str.contains(expectedStr));

assertTrueとStringクラスのcontainsメソッドを使って実現します
assertTrueは引数がtrueの場合にテストを成功に倒してくれます
String クラスのcontainsメソッドは引数で指定した文字列が含まれている場合にtrueを返します
なのでこの組み合わせを使えば、文字列の部分一致によるテストが実現できます

ただ、この場合ちょっと残念なのは失敗した場合のログが「結果がtrueじゃなかったよ」と教えてくれるだけなので、比較した文字列の情報が何だったのかということまで教えてくれません

java.lang.AssertionError: expected:<true> but was:<false>
        at org.testng.Assert.fail(Assert.java:89)
        at org.testng.Assert.failNotEquals(Assert.java:489)
        at org.testng.Assert.assertTrue(Assert.java:37)
        at org.testng.Assert.assertTrue(Assert.java:47)

なので、比較した文字列の情報は別途ロギングする必要があります

TestNGを使う場合は上記でOKなのですが、そもそもTestNGを使わないというのも手です
Hamcrestというテストフレームワークがありこれを使えばcontainsStringというメソッドが使えこれが部分一致のテストになります
StackOverFlowにもそんな回答がありました
http://stackoverflow.com/questions/1092219/assertcontains-on-strings-in-junit

一番きれいなのはHamcrestを使う方法でしょうか
確かSpringIOでもテストフレームワークはJUnit+Hamcrestだったような記憶があります

2014年11月7日金曜日

Emacsにクリップボードをペーストすると勝手にインデントされてしまう場合の対処方法

概要

Cygwin上でemacsを使っていてクリックボードの情報をemacsに貼り付け(Shift-Insert)しようとすると行ごとに勝手にインデントされてしまいました
結果、ペーストした情報が段々になり思い通りに貼り付けできない現象に遭遇しました
上記の解決方法を紹介します

環境

  • Windows7 64bit
  • Cygwin 1.7.32
  • Emacs 24.4.1

対処方法

いろいろ調べた結果自分は以下の方法で解消されました

(electric-indent-mode 0)

を.emacsに記載しました
ミニバッファでelectric-indent-modeを実行してdisableにするのでもいいです

他の環境のemacsではデフォルトでelectric-indent-modeがdisableだったのですが、そうでない場合もあるようです
Emacsのバージョンの違いとかでしょうか

2014年11月6日木曜日

Gitのコミット履歴を検索する方法

概要

git logコマンドを使えばコミットメッセージを簡単に検索することができます
今回はコミットしたファイルの変更内容まで検索する方法を紹介します

環境

  • Mac OS X 10.8.5
  • git 2.1.0

やり方

git log -p

とするだけです
「-p」オプションをつけることでログにコミットした内容も表示されるようになります

これとgrepコマンドを組み合わせたり
個人的にはpecoと組み合わせると非常に使いやすいと思いました

またパイプしないとlessで開くのでそこでスラッシュを使って検索してもいいと思います

オプション1つ付けるだけでこんな簡単にできるとは。。。
コミットメッセージだけでコミット内容を判断しにくいときに役に立ちそうです

2014年11月4日火曜日

Bloggerの記事を検索してpostIdを取得するスクリプト

概要

Bloggerに投稿した記事にはそれぞれを識別するためのIDが振られます
IDは管理画面でも確認することができますが、結構面倒です
自分はStackEditを使って記事を投稿、編集していて既存の記事を編集する場合にこのIDが必要になります
毎回UIで確認するのが面倒だったのでrubyからコマンドベースで確認できるようにしました

環境

  • Mac OS X 10.8.5
  • Ruby 2.1.2p95

ソースコード

https://gist.github.com/kakakikikeke/9ffc5427cf7f42a48ec5

使い方

上記のコードをgistから取得してapi_keyblog_idの部分を書き換えてください

そして

ruby get_post_ids.rb Blogger

と実行します
引数が1つ必要で、1つ目に指定したキーワードを元に記事を絞り込んで絞りこまれた記事のIDを表示します
上記の例では「Blogger」という単語を含む記事IDを表示します

BloggerのAPIの仕様で検索対象がタイトルも記事もURLも含まれるので1つに絞込みたい場合は、タイトル全文をキーワードとして指定するといいと思います

だいぶニッチですが、もし使う機会があれば使ってください