2014年12月7日日曜日

google authenticatorは機種変更時に情報が引き継がれないので要注意

AWSのmfaを解除するにはサポートに問い合わせて電話で確認コードを読み上げる(英語)必要があるらしい。

めんどいな。。
個人アカウントは情報控えてなかっただろうなぁ。

2014年11月28日金曜日

WindowsのSourceTreeでGit Pull/Pushが異様に遅い

内蔵GitにしてもシステムGitにしてもダメ。
なお、システムGit(git 2.1.1)は、コマンドラインから実行すると早い。

.git/config
を開いて

[remote "origin"]
url = https://hogehoge.hogehoge

のところを

[remote "origin"]
url = https://user@password:hogehoge.hogehoge

のように、IDとパスワードを入れたら復活した。
が、あんまり気分の良い解決策じゃないなぁ。
その後色々いじってみたが根本解決策は不明。

ちなみに、msysGit(git version 1.9.4.msysgit.2)のGit Bashは、上記対応を実施しても未だに遅い。

謎だ。。

Proxy Switchy! Auto Switch Mode doesn't work on windows 7

it can be fixed by replacing an dll file.

C:\Users\\AppData\Local\Google\Chrome\User Data\Default\Extensions\caehdcpeofiiigpdhbabniblemipncjj\1.6.3_0\plugins\npSwitchy.dll

Issue 338 - switchy - auto switch mode set wrong pac url - Manage and switch between multiple proxy profiles quickly and easily. - Google Project Hosting
https://code.google.com/p/switchy/issues/detail?id=338

1. Close all Chrome windows
2. rename the dll like npSwitchy.dll -> npSwitchy.dll.bak
3. DL new dll via https://switchy.googlecode.com/issues/attachment?aid=3380009000&name=npSwitchy.dll&token=ABZ6GAeDFOJfek2l0I0PweYzcQopJhqAgg%3A1417172501056

That's it.

Proxy Switchy! のAuto Switch Modeがあるときから使えなくなっていた。
ずっとほっておいたが本腰を入れて調べたところ、どうも自動生成しているPACファイルのファイル名が
SwitchyAuto.pac?XXXXX
になるべきところ、
SwitchyAuto.pacc?XXXXX
と、なぜか拡張子のcが余分についてくるようになってしまった模様。

この問題を解消してくれるDLLが下記URLに公開されていたので、
それをDLして差し替えたところ、問題が解消した。
Issue 338 - switchy - auto switch mode set wrong pac url - Manage and switch between multiple proxy profiles quickly and easily. - Google Project Hosting
https://code.google.com/p/switchy/issues/detail?id=338

https://switchy.googlecode.com/issues/attachment?aid=3380009000&name=npSwitchy.dll&token=ABZ6GAeDFOJfek2l0I0PweYzcQopJhqAgg%3A1417172501056

#リンク先にあるように、pacファイルのアドレスを入力する欄に記載されているパスが、
 何故か\から%5Cに置き換わってしまったが、まぁ問題ない模様。

2014年10月29日水曜日

故障したRAID5構成のTeraStationからデータ救出(無料)

職場で使っている Buffalo の TeraStation(HD-QSSU2/R5) が壊れた。
月曜日に出社したら赤ランプが4つとも点灯していた。
赤ランプ全点灯てことは、2本以上同時に壊れたのか?

RAID5を過信すると怖いっすね。。。
非常に困るのでなんとかデータ救出したいと思い色々調べていると下記の情報を発見。

RAID5 が壊れた・・・ - マニログ

非常に心強い。ディスク2本壊れても何とかなるもんなんすね。

4本のハードディスク(のうち3本)の中身さえ抽出できればつなぎ合わせることで救出できそうなことがわかった。
そこで何はともあれ、分解して中身をバックアップすることにした。

使われていないデスクトップPCがあったので、4本のディスクのうち2本(SATAポート数の都合)をつないで、UbuntuをUSB起動してddコマンドでイメージ化することにした。

ddイメージの出力先は、容量の都合でネットワーク上のドライブ(NAS)にした。ので、時間がかかった。。。

時間がかかりすぎるので調べたところ、GNU ddrescueコマンドがよさ気なのでそちらを使うことにした。
下記のような感じで2本×2回に分けて実施。(USB起動のUbuntuを使っていたため、リブート後にもGNU ddrescue等入れなおす必要があった。。)

ディスク情報を取得

sudo su
fdisk -l

→どちらが/dev/sdaでどちらが/dev/sdbか確認。セクタ数も確認しておく。

ネットワークドライブをマウント

mkdir /mnt/smb
mount //xxx.xx.xx.xxx/xxx /mnt/smb -o username=xxxxxxxx
mkdir ~/workspace
cd ~/workspace/
ln -s /mnt/smb/xxxxxx_work
cd xxxxxx_work

GNU ddrescueを(プロキシ経由で)インストール

export http_proxy="http://***:***@**proxy****:NNNN/"
export https_proxy=$http_proxy
add-apt-repository universe
apt-get update
apt-get install gddrescue

一台目のディスクをイメージに出力

ddrescue -f -n /dev/sdb disk3ddrescue.img disk3ddrescue.log

もう一つコンソールを立ち上げて、もう一台も同時実行

ddrescue -f -n /dev/sda disk4ddrescue.img disk4ddrescue.log

一晩放置した結果、エラー無く2本とも抽出できていたので、前述のとおりUbuntuをシャットダウンし、
残りの二本につなぎ替えて上記を(disk3, disk4のところはdisk1, disk2に置き換えて)もう一度実行。

4本分のHDDイメージはいずれもエラー無く抽出完了したため、パリティから復元するのではなく、4つのイメージ(のうち3つ)から512バイトごと毎にデータを取得して、ひとつのイメージとして合成することにした。
rubyで簡単なスクリプトを作成し実行。

apt-get install ruby
vi raid5merge.rb

raid5merg.rb

disks = []
sectors = 488_397_167 #各ディスクのセクタ数。4台共同一だった。

(1..4).each{|i|
  disks.push << File.open("./disk#{i}ddrescue.img","rb")
}
out = File.open("./merged_disk_ddrescue.img","wb")

buff = ""

sectors.times{|i|
  4.times{|j|
    #disk4→3→2→1→4→3→2→1の順でスキップ。
    if 3 == (j+i)%4
      disks[j].read(512)
      next
    end
    buff << disks[j].read(512)
  }

  if buff.length < 50*1024*1024 #高速化のため、50MB分読み込むまで書き出ししないようにしてみた。
    out.print buff
    buff = ""
  end
}
out.print buff if buff.length > 0
ruby raid5merge.rb

ddのイメージファイルをWindowsでマウントしたいなぁと思い、調査したところ「ImDisk Virtual Disk Driver」てやつがフリーで良さげだった。
インストールし、イメージをマウントして中身が読み書きできることを確認。
ddイメージをNAS上に書き出していたので、メインで使用しているWindows機からもすぐアクセスできて便利だった。(が遅い)

元の4本のHDDは故障しているわけではなさそうだったので、もう一度TeraStationに組み戻して、TeraStationをRAID5で初期化した後、イメージから書き戻すことにした。

現在はFastCopyでコピー中だが、非常に時間がかかる。。。。

2014年8月14日木曜日

PC(Windows 7)からRoot化せずにNexus 7(Android 4.4.3)を操作する

PC(Windows 7)からRoot化せずにNexus 7(Android 4.4.3)を操作するため、こちらのページの下の方を参考に、asm.jarを導入した。おおまかな流れは下記。
※予めAndroid SDKをインストールしておく必要あり。
  1. Nexus 7にて、USBデバッグモードを有効にする。
  2. Windows 7側にAndroid USB Driverをインストールする。
  3. asm.jarをDownloadし実行する。

Nexus 7にて、USBデバッグモードを有効にする。

  • こちらのページに従い、設定アプリ→タブレット情報→「ビルド番号」を7回タップ(!?)
  • 設定画面にもどり、「開発者向けオプション」を選択
  • 「USBデバッグ」をONにする

Windows 7側にAndroid USB Driverをインストールする。

  • android.comのGoogle Driverのページ
    を開き、「Download Android USB Driver」ボタンからドライバをDL
  • ZIPを解凍
  • デバイスマネージャを開き、不明なデバイスになっているNexus 7を選択
  • ドライバーの更新を行い、上記で解凍したフォルダを指定してドライバーをインストールする
最初はドライバが正常に認識されていないことに気づかず苦戦したが、「Android Screen Monitor - adakoda」を参考にトラブルシューティングしたところ、ドライバが足りないことが判明した。

asm.jarをDownloadし実行する。

Android Screen Monitorのページからasm.jar 3.0.0をDLし、Android SDKのplatform-toolsディレクトリの下にasm.jarを配置してダブルクリック。

2014年8月12日火曜日

SynergyでWindows 7 を Serverに、 Mac OSX 10.9 Merverics をClientにした時にキーボードが効かない

テンキーだけは有効だった。
Synergyのバージョンはサーバ、クライアント共に1.5 Premium。

http://anago.2ch.net/test/read.cgi/software/1131466455/922
上記を参考に、キーボードの入力ソースに「Unicode Hex Input」を追加し、Synergy(クライアント側)を再起動したら入力できるようになった!
※Unicode Hex Inputは「その他」にある。

ただ、日本語と英語の切り替えがうまくできない?みたいだ。。。

ちなみに、リンク先の918さんのように、SynergyKM 1.0.1も試したがうまく行かなかった。
~~

Germanにすると良い、という話題も見かけたので試したが、うまく行かなかった。
http://448.jp/blog/article/1432/

が、よく考えるとSynergyを再起動していないことが原因かもしれない。
英語っぽい配列を選んだ後にクライアント側を再起動するのがよいのかも?

~~追記~~
日本語と英語の切り替えはAlt(=Cmd)+ Spaceで実現できた。
※参考:http://4th-life.com/mac/synergy/

bitnamiで落としたWindows版Open Atriumが正常に起動しない

bitnamiで「bitnami-openatrium-2.19-1-windows-installer.exe」を落としてインストールしたが、
起動後にAtriumを開くとエラーメッセージが。。

下記のサイトに対処法が載っていた。
http://stackoverflow.com/questions/4632779/drupal-7-is-unable-to-install-modules/4633270#

tmpフォルダの設定が誤っている模様。無理やりログインして下記のページに辿り着いて、値を修正すれば解消した。

http://****/openatrium/admin/config/media/file-system
Home » Administration » Configuration » Media » File system

にて
Temporary directoryの値を
/tmp

sites/default/files\tmp
に書き換え。

Excellent Analyticsでログインできない

Google側で不審なアプリからのアクセスだと認識されてブロックされていた。

アカウントのセキュリティ>最近のアクティビティ(https://security.google.com/settings/security/activity)で確認可能。

許可したらログインできた。


「安全性の低いアプリ」を有効にする必要がある、ということらしい。
https://www.google.com/settings/security/lesssecureapps

2014年8月11日月曜日

IP電話で固定費0の家電(イエデン)を実現

こちらのサイトを参考に同じ環境で揃えさせていただいた。
途中、罠にはまったところが二箇所。
  1. 電話線を挿す口が逆
  2. マンションの回線なのでプライベートIPが付与されており、NAT超え出来ない
1.の方は、直感的には外側のほうが1番のポートだと思い込んでいたけど逆。
参考にさせて頂いたサイトに載っていた画像のとおりにつなぐべきだった。。。

2.の方は、STUNとやらを使うことで解決。
どうやらインターネット側から我が家のHT702へたどりつけるようにするために、インターネット上に公開されている仲介サーバ(STUN)を使う必要があるらしい。
STUNサーバは、自前で用意するのは大変なので、無料で公開されているサーバーを使わせていただくことにした。
無料のSTUNサーバは、googleで適当に見繕った。

で、HT702側は下記の三箇所を設定し、リブートすればオッケー。
FXS PORT1で
①NAT TraversalをSTUNに。
advanced settingの
② STUN server isにgoogleで調べたサーバー名を、
③ Use STUN to detect network connectivityをyesに。

なお、参考元サイトのコメント欄にある様な、
  • 先にスマホでアクティベーションしているとダメ、とか
  • 着信してもすぐ切れる、とか
  • 携帯にかけるときだけ国番号が必要、とか
はなかった。

ただし、一度試しにSTUNをやめてNAT keep aliveにしてみた時は、受発信ともにつながるが、音声が一切聞こえずすぐ切れる、という感じだった。

2014年8月7日木曜日

アメリカに行くならモバイルルータ(Wifi)よりもSIMフリーAndroid端末がおトク!?

アメリカ(ハワイ)にnexus7(2013 lte)持って行ったら大活躍した。

もしモバイルルータをレンタルしようと思ったら一日千円近くかかるのでもったいないと思い、SIMフリー端末代でテザリングすることにした。
カーナビ代わりにも使えるので、カーナビもレンタルすると一日10ドルぐらいすること考えると二度おいしい。

現地でのSIMカード調達は、t-mobile一択じゃないか?と思う。
  • Verizonに行ったらSIMカード単体では売っていないらしい。。。
  • at&tには行ってないけど、goPhoneと言うプランでSIMカード単体でも売っているがテザリングが出来ないと言う情報を目にしたので避けた。

t-mobileでは、SIMカード自体が$10、3GBまでのlteが30日間有効なプランで$30の合計$40だった。

t-mobileのお店の人にAndroid端末を見せ、プリペイドSIMカードプリーズ。で行けると思う。
言語設定を英語に変更したうえでお店の人に渡せば、あとはやってくれる。

途中で、プランをどうするか、4ケタの暗証番号、誕生日等を聞かれた。
あ、SIMカードトレーを取り出す器具(pinと呼んでいた)を持っているかも聞かれた。

Android (nexus7) でwifiに繋がらない、SSIDが見つからない場合の対処方法

原因は、無線LANのチャンネルにnexus7(android 4.4.3)が対応していないためっぽい。

無線LAN側のチャンネルが12か13だとSSIDが検出されず、WPSでも接続できない模様。

チャンネルを11に固定したところ問題なく接続できるようになった。

良かった。。。

2014年7月1日火曜日

Google Chromeで横幅があまり縮められない場合の対処法

Google Chromeを使ってレスポンシブWebデザインの確認をしようとしていると、ブラウザの横幅が思ったより縮まらなくて困ることがある。

●原因
・オムニバー(URL入力欄)の右側に並んでいる拡張機能のボタンが多い。
 (オムニバーはある一定以下の横幅に縮められないようになっている)

●対策
案1:不要な拡張機能を削除する
案2:オムニバーと拡張の間を右にドラッグし、表示される拡張ボタン数を減らす

2014年5月23日金曜日

Selenium webdriver: chromeで全画面をキャプチャする方法

見えている範囲だけをキャプチャすることはできたので、多少強引だが
  1. Javascriptを使って見えてる範囲の高さと画面全体の高さを取得
  2. スクロールしながらキャプチャ
  3. 最後の一枚のみ重複ができるのでImageMagickを使ってカット
  4. ImageMagickを使って全ての画像を結合
という流れで全体のキャプチャを実現出来た。
以下rubyの場合。
def chrome_capture(webdriver, fname_prefix)
  #1. Javascriptで画面のサイズを取得
  inner_h = webdriver.execute_script("return window.innerHeight").to_i
  scroll_h = webdriver.execute_script("return document.documentElement.scrollHeight").to_i

  repeat = (scroll_h.to_f/inner_h.to_f).ceil
  dupl_h = inner_h - (scroll_h % inner_h)

  tmp_fnames = []
  tmp_basename = fname_prefix

  #2. スクロールしながらキャプチャ
  repeat.times{|i|
    tmp_fnames << tmp_fname = tmp_basename + sprintf("%06d",i) + ".png"
    webdriver.save_screenshot(tmp_fname)
    sleep (0.3)
    webdriver.execute_script("window.scrollBy(0,#{inner_h})");
    sleep (0.3)
  }

  if tmp_fnames.length > 1
    #一時ファイルが2つ以上の場合
    #3. 最後の一枚のみ重複ができるのでImageMagickを使ってカット
    if dupl_h > 0
      `convert -chop 0x#{dupl_h} #{tmp_fnames.last} #{tmp_fnames.last}`
    end
    #4. ImageMagickを使って全ての画像を結合
    `convert -append #{tmp_fnames.join(' ')} #{tmp_basename}.png`
    File.unlink *tmp_fnames
  else
    #1つの場合は一時ファイルをリネームするだけ
    File.rename(tmp_fnames[0],"#{tmp_basename}.png")
  end

end

ちなみにMacのSafari、Chromeでも同様の方法でいけるが、Retinaの場合は重複カットする際のピクセル数を2倍(正確には、JavascriptのdevicePixelRatioで取得可能な値倍)にする必要があるため要注意。

2014年4月22日火曜日

Vagrantで楽々開発環境構築(失敗)

遅まきながらVagrantに挑戦してみた。
参考文献↓
VagrantでRails開発環境を整備 (CentOS 6.5/Nginx/mysql5.6/rbenv/ruby2.1.0) - 酒と泪とRubyとRailsと
http://morizyun.github.io/blog/vagrant-centos-nginx-mysql-rbenv/
Winodows環境で試したが、
bundle exec berks install --path site-cookbooks
を実行した際に以下のエラーが表示されたため、下記の対応を実施後、Berksfileを下記の通り修正した
エラーメッセージ↓
>bundle exec berks install --path site-cookbooks
Using mysql (4.1.2)
Using database (2.0.0)
Using nginx (2.4.4)
Using base (0.1.0) at './site-cookbooks/base'
Using mysql56 (0.1.0) at './site-cookbooks/mysql56'
Using ruby_build (0.8.0)
Failed to download 'rbenv' from github: 'fnichol/chef-rbenv' with branch: 'master' over protocol: 'git'
Cookbook 'rbenv' not found in any of the default locations
下記コマンド実行↓
>cd site-cookbooks
>git clone https://github.com/fnichol/chef-rbenv.git
>cd ..
Berksfile変更前↓
site :opscode
cookbook 'mysql'
cookbook 'database'
cookbook 'nginx', path: 'site-cookbooks/nginx'
cookbook 'base', path: 'site-cookbooks/base'
cookbook 'mysql56', path: 'site-cookbooks/mysql56'
cookbook 'ruby_build', github: 'fnichol/chef-ruby_build'
cookbook 'rbenv',  github: 'fnichol/chef-rbenv'
cookbook 'ruby_gem', path: 'site-cookbooks/ruby_gem'
Breksfile変更↓(rbenvをpathに変更)
site :opscode
cookbook 'mysql'
cookbook 'database'
cookbook 'nginx', path: 'site-cookbooks/nginx'
cookbook 'base', path: 'site-cookbooks/base'
cookbook 'mysql56', path: 'site-cookbooks/mysql56'
cookbook 'ruby_build', github: 'fnichol/chef-ruby_build'
cookbook 'rbenv',  path: 'site-cookbooks/chef-rbenv'
cookbook 'ruby_gem', path: 'site-cookbooks/ruby_gem'
と思ったら、なんだかエラーが出て失敗した。
今日はここまでにしておこう。。。
エラーメッセージ↓
[2014-04-22T13:20:41+00:00] DEBUG: Re-raising exception: Chef::Exceptions::CookbookNotFound - Cookbook base not found. If you're loading base from another cookbook, make sure you configure the dependency in your metadata
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/cookbook/cookbook_collection.rb:38:in `block in initialize'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-7.0.2/lib/ohai/mash.rb:77:in`yield'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-7.0.2/lib/ohai/mash.rb:77:in`default'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-7.0.2/lib/ohai/mash.rb:77:in`default'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:277:in `[]'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:277:in `each_cookbook_dep'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:255:in `add_cookbook_with_deps'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:88:in `block in cookbook_order'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:86:in `each'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:86:in `cookbook_order'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:98:in `compile_libraries'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:71:in `compile'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context.rb:88:in `load'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/policy_builder/expand_node_object.rb:73:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:265:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:429:in `do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:213:in `block in run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:207:in `fork'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:207:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application.rb:217:in `run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application/solo.rb:221:in `block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application/solo.rb:213:in `loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application/solo.rb:213:in `run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application.rb:67:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/bin/chef-solo:25:in `<top (required)>'
/usr/bin/chef-solo:23:in `load'
/usr/bin/chef-solo:23:in `<main>'
[2014-04-22T13:20:41+00:00] ERROR: Running exception handlers
[2014-04-22T13:20:41+00:00] ERROR: Exception handlers complete
[2014-04-22T13:20:41+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2014-04-22T13:20:41+00:00] DEBUG: Chef::Exceptions::CookbookNotFound: Cookbookbase not found. If you're loading base from another cookbook, make sure you configure the dependency in your metadata
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/cookbook/cookbook_collection.rb:38:in `block in initialize'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-7.0.2/lib/ohai/mash.rb:77:in `yield'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-7.0.2/lib/ohai/mash.rb:77:in `default'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/ohai-7.0.2/lib/ohai/mash.rb:77:in `default'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:277:in `[]'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:277:in `each_cookbook_dep'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:255:in `add_cookbook_with_deps'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:88:in `block in cookbook_order'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:86:in `each'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:86:in `cookbook_order'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:98:in `compile_libraries'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context/cookbook_compiler.rb:71:in `compile'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/run_context.rb:88:in `load'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/policy_builder/expand_node_object.rb:73:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:265:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:429:in `do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:213:in `block in run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:207:in `fork'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/client.rb:207:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application.rb:217:in `run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application/solo.rb:221:in `block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application/solo.rb:213:in `loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application/solo.rb:213:in `run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/application.rb:67:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/bin/chef-solo:25:in `<top (required)>'
/usr/bin/chef-solo:23:in `load'
/usr/bin/chef-solo:23:in `<main>'
[2014-04-22T13:20:41+00:00] ERROR: Cookbook base not found. If you're loading base from another cookbook, make sure you configure the dependency in your metadata
[2014-04-22T13:20:41+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete.

2014年4月14日月曜日

WindowsでSublime TextのRubyTestの実行に失敗する場合の対処法

Windows環境でRailsTutorialに沿って進めていたら3.6.4 Tests inside Sublime Textで躓きました。

Build Consoleに下記が表示されていました。

[Decode error - output not utf-8]
[Finished in 0.1s with exit code 1]
[cmd: [' bundle exec rspec spec\\requests\\static_pages_spec.rb -l50']]
[dir: C:\***\sample_app]
[path: C:****;]

いろいろ試行錯誤した結果、run_ryby_test.pyの下記(201行目あたり)を修正することで、何とか実行できるっぽい?ことが判明。

self.view.window().run_command("exec", {
"cmd": [command],
"shell": True,
"working_dir": working_dir,
"file_regex": r"([^ ]*\.rb):?(\d*)"
})

self.view.window().run_command("exec", {
"cmd": command, # ←[]除去
"shell": True,
"working_dir": working_dir,
"file_regex": r"([^ ]*\.rb):?(\d*)"
})

#最初はメッセージに「Decode error」と表示されていたから
エンコードの問題かと思って下記のようにしてみたのですが、

self.view.window().run_command("exec", {
"cmd": [command],
"shell": True,
"working_dir": working_dir,
"file_regex": r"([^ ]*\.rb):?(\d*)",
"encoding": "cp932"
})

こうすると、コンソールに「指定されたパスが見つかりません。」と出たので、
commandが間違っているようだとわかりました。

ちなみに、Windows環境でListing 3-34は「# gem 'win32console', '1.3.2'」のコメントアウトをはずすとエラーになるっぽいです。Ruby2.0では、Win32consoleは必要ないみたいです。

#参考:Error “cannot load such file — 2.0/Console_ext” running unit tests in RubyMine

#この問題は一応本家のrailstutorialに報告してみたので、もしかしたらそのうち修正されているかもしれません。

2014年4月7日月曜日

namazuに代わるサイト内全文検索ツールを模索中

あまりしっくりくるものが見つからない。 fessはどうだろうか。 専用サーバーを用意しないと重いかな。そうすると冗長化とかややこしいな。。 elasticsearchとかsolr+nutch?はどうなんだろうか。かなり作り込みが必要になりそうで気が引けるなぁ。

2014年3月12日水曜日

PowerPointで、大文字しか入力できなくなった時の対処法

caps lockしてないのに大文字しか入力できなくなることがある。

 
フォントの設定が原因。
 
右クリック→フォント
をひらいて「すべて大文字」のチェックを外せば直る。
 
 

2014年3月7日金曜日

PowerPoint2007でPDF保存時に図形が正しく表示されない場合の対処法

時々この問題起きる気がする。

今日も職場の先輩がこまっていたので何が悪さしてるのか調べて見た。
が、早々に諦め、悪さしてたオートシェイプを
右クリック
図として保存
元のオートシェイプと差し替え

で乗り切ることにした。。

ちなみに、悪さしてたオートシェイプが残ってると、なぜかPDFを開く際にエラーが表示され、図(png)も表示されなかった。。

2014年3月6日木曜日

piwikをurchinのように非リアルタイムに使いたい。

Piwikサーバを立てるに当たって、リアルタイム性は問わないので、多少止まっても平気なようにしたいんだが、何か都合の良い方法はないだろうか。

PiwikはGoogle Analyticsのようなリアルタイム集計か、あるいはレガシーなアクセス解析ツールのような後からWebサーバのアクセスログを集計する使い方ができるようだが、その中間とも言えるurchin6のutm方式のような使い方はできないのだろうか。

urchin6のような、とはWebサーバのアクセスログに対してトラッキングに必要な情報を色々記録させるやり方のこと。

具体的には
①Webサイトのルートディレクトリにトラッキングに必要なファイル(urchin.jsと__utm.gif)を設置する
②各ページにトラッキングタグ(上記jsの読み込みとurchinTracker関数を呼び出すscriptタグ)を埋め込む
③ユーザが上記のページにアクセスするとurchinTrackerが発動する。画面解像度やらipアドレスやらクッキーに覚えさせたユーザ個別に割り振った識別IDやら、その他JavaScriptで取得可能な様々な情報が取得され、__utm.gifのURLパラメータという形でWebサイトのアクセスlogに記録される。
④上記のlogを解析する
というような流れのこと。


2014年2月27日木曜日

Seleniumで発注業務を自動化

たのめーるで発注する担当なので、不定期に定型的なブラウザ作業をする必要が生じる。
 
あまりに単純作業なので、前から試してみたかったSeleniumを使って自動化してみた。
 
Firefox の Selenium Builderで一通り操作してruby形式で出力。
 
最後のwd.quitはコメントアウト。
 
社内環境にあわせてプロキシを設定。
 

発注する内容は、クリップボードから読み込むことにした。

カンマ区切りでデータを読み込んで、二次元配列にフォーマットして、商品番号欄、発注個数欄を埋めるようにした。
 
クリップボードの内容がカンマ区切りじゃない場合は再読み込みするようにした。
 
 

rubyで文字列をフォーマットする方法

sprintf でも良いけど、イマイチかっこ悪い気がする。

"%02d" % i
など、%演算子を利用するとよいようだ。



Chromeで拡張機能のアイコンが表示されなくなった場合の対処方法

アドレスバー(URLや検索ワードを入れるとこ)の右端をドラッグして左に移動すると復活する模様。


こうなってしまったら
  


この位置にマウスを持ってきて
  


横にドラッグすると良い。
  

参考: http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13111105988

2014年2月26日水曜日

ここ数日?Googleの検索結果がイマイチな気がする。

欲しい情報に全然たどり着けないケースがままある。

検索キーワードがbloggerと何かだと大抵残念な感じだった気がする。

chromeのabout:flagsに並んでた項目の一つであるがバルーンバッジだっけ?とか調べても全く役立つ情報に辿り着けそうにない。。

キーワードがマイナーすぎて情報が無いだけなんか?

Google先生のことだからそのうち直してくるんだろうけど、早く是正されないかなぁ。。

AWS上のEC2インスタンス間でのファイル共有にはGlusterFSが便利そう

そのうち詳しく調べてみよう。。。


uid/gidなどパーミッションの設定が問題ありそう?
遅そう?
後から設定を変更する(特にノードを減らすなど)時に面倒なのか?

など疑問がある。


2014年2月25日火曜日

nasneが便利すぎる

会社PCのchromeで個人google idでログインしたら面倒なことになった。

ブックマークが統合されてしまった。
履歴やパスワードも統合されてしまうらしいが、それらはパッと見は問題なさそうだった。

個人pcでそれらは同期しない設定にでもしてたのだろうか。

この機会にブックマークをかなり整理した。
てかブックマークほとんど使ってない。。

フリーのブログサービスはbloggerが良さげ。

他を知らないからなんとも言えないが、AnalyticsやAdsenceなど痒い所に手が届き、デザインの自由度もとても高い。

割り切って使えばビジネス利用にも耐えうる感じがする。

redmineでsvnコミットコメントをチケット#に紐付ける方法

refs #999
などとする。

redmine側の設定を変えれば#999だけでも紐付けられるようにできる。

google apiを動的に呼び出す方法

通常はgsapiを呼び出すscriptタグをheadに記載するところだが、ページ読み込み後などにJavaScriptで動的に呼び出したい時もある。

その場合、下記のようにjsapiを呼び出した後に実行したいcallback関数名をURLパラメータに加えると良い。

jsapu?callback=initHge

2014年2月24日月曜日

パスワード管理ツールはKeePass(フリーソフト)が便利

時間ができたら情報を整理して残したいな。

2014年2月20日木曜日

[AWS] IAMでEC2インスタンスの起動停止権限のみ付与

EC2インスタンスのスタート、ストップ、リスタート権限だけを与えたロールを用意したところ、AWSコンソールに肝心のEC2インスタンスの一覧が表示されなかったらしい。

ポリシーに下記の設定をしたら見られるようになったようだ。

{
      "Action": [ "ec2:RebootInstances",  "ec2:RunInstances",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:describe*"
      ],
      "Sid": "Aaaaa",
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    }

2014年2月19日水曜日

ドラゴンクエストモンスターズスーパーライト(DQMSL)でスタート直後に落ちる 問題

ダウンロード開始画面(下記)に遷移し直後に落ちる問題に遭遇中。
iPhone5S。
アプリのバージョンは1.0.3。
OS再起動しても再現する。

こうなる直前に、iPhoneのストレージが不足しているメッセージが表示された気がするけど、関係あるかは不明。
現在は500MB以上の空きを作ったけど、解決せず。

追記 2014/02/20 14:42

公式に下記のアナウンスが出てました。

データダウンロード中にアプリが終了する不具合 

不具合にあわれたプレイヤーの皆様には、大変お手数ですが、原因調査のため、「お問い合わせ」より、「ID」と「お使いの機種名」をご連絡いただけますようお願い申し上げます。

とのことだけど、「お問い合わせ」てどこにあるんだ?

追記 15:02

めっけた!
http://www.dragonquest.jp/dqmsl/

追記 2014/2/27
サポートから下記のメールが来た。

やはりアプリを一度削除して入れ直す必要があるようだ。

アプリ再インストールしてもデータが引き継がれるようにするためには、本人特定できる情報を伝えて秘密のパスワードとあいことばを設定してもらう必要があるらしい。

聞かれてる質問が覚えていないことばかりなので、復活してもらえるのか自信ないわー。

アプリが復活しても、連続ログインボーナスは途切れるんだろうな。。

--
「ドラゴンクエストモンスターズ スーパーライト」運営事務局です。

ご返答までにお時間をいただき申し訳ございません。
ご申告の現象について調査を行っておりますが、データ引き継ぎ機能を利用し、アプリを再インストールすることで改善される場合がございます。
お手数でございますが、一度改善されるかご確認いただけないでしょうか。

なお、データ引き継ぎに必要な「秘密のパスワード」と「あいことば」はご申告のIDについてご本人様確認が完了いたしましたら発行いたします。

ご本人様確認を行いますため以下についてご提供のご協力をお願いしたします。
■まず、引き継ぎ元の確認をいたします。
・引き継ぎ元のID
・引き継ぎ元のニックネーム
・このサービスを開始した日

■引き継ぎ元のプレイデータについての確認をいたします。
・ジェムを購入していた場合、登録した生年月
・パーティに登録していたモンスターの名前
・モンスターの名前を変えていた場合、その内容
・フレンドの名前(2,3人で構いません)

上記について、できるだけ答えていただけますと幸いです。
回答内容より個人が特定できない場合は引き継ぎ対応ができません。
予めご了承ください。

App Storeをご利用の方で、ジェムを購入している場合は、上記の回答の他、App Storeより送られます「注文番号」や購入日時が載ったメールをスクリーンショット機能で撮影しメールに添付してお送りください。

なお、データ引き継ぎのご依頼についてのお問い合わせが混雑しており、対応までお時間を要しております。あらかじめご了承ください。

※引き継ぎの対応中にメールアドレスが変わるようなことがあれば、対応前にメールアドレスの連絡をお願いいたします。

今後とも「ドラゴンクエストモンスターズ スーパーライト」をよろしくお願いいたします。
--

テスト

記憶力に自信がないので、主にWeb関連とか技術的なジャンルに関する個人的な備忘録を残して行きたいと思います。