2015/06/14

LPI更新

最近、Ingressをずっとやっていて、すっかりコンテンツ消費型生活になっていたのだが、受験前の注意点3 再認定ポリシー|IT資格といえば Linux技術者認定試験LPICの期限が迫ってきたので、久しぶりに試験勉強。資格があってもとか偉そうにいう人がいるけど、そういう人に限って資格を持っていなかったりするので、ノイズに惑わされてはいけない。

試験は所詮試験なので、それなりの対策を行えばOK。ころころ変わるような新しい部分は問題にできないけど、そうでないある程度枯れた部分は問題になるわけで。

それにしても、いつの間にか値上げしていて財布が辛い。


2015/05/23

ヘッドホンのイヤーパッドを交換

ヘッドホンのスポンジ(イヤーパッド)

ヘッドホンの耳に当たる部分のスポンジがボロボロになった。 Sony ヘッドホン スポンジ
SONY オープン型ヘッドホン 耳掛け式 コード巻き取り式 MDR-Q68という耳掛け式のタイプなのだが、 ボロボロ。探したら、交換部品がちゃんとあった。SONY スペアーイヤーパッド EP-Q2Ingressやるときに必要なので、すぐに届くお店で注文。翌日には届いたのだが、これ、どうやって交換するの?

イヤーパッドの交換方法

結局、スポンジの端を、ちぎれないように慎重にひっぱってヘッドホン本体から外して、新しいスポンジを代わりにはめ込んだ。ちょっと小さいのか、かなり引っ張ってはめ込んだけど、新品のスポンジはちょっとのことではちぎれないね。
これもIngressで言う「リアル課金」なのかな?(笑)



2015/05/03

7-11で買った充電ケーブルがかなりイイ

充電ケーブルを忘れて会社に行って、さぁたいへん!充電できないのでお昼休みや帰り道でのIngress活動ができません。

というわけで、会社近くのセブンイレブンに駆け込んで、見つけたのがこの充電ケーブル。これ、意外と使える、というか、今まで試してきた充電ケーブルの中では一番充電できる。
耐久性はこれから検証することになるけど、コンビニで売っているからって期待していなかったせいか、満足度高し。


2015/04/05

認識されなくなった、NAS上のtimemachine backupを復活させる

MacBook Air(別にMacBookでもMacBook Proでもいいけど)を使っていると、バックアップのためにわざわざ外付けディスクを繋げるのは面倒になってくる。というわけで、ReadyNAS 102にバックアップを取るようにしている。

たまーにバックアップのエラーがでて、バックアップディスクが使えなくなってしまうことがある。諦めて消して、新しいバックアップを作っていたのだけど、回避策を発見。
Time Machine バックアップイメージの修復 - almost discontinuous logにばっちり書いてある。
GUIでちょちょいのちょいってわけではないけど、ReadyNASにバックアップを取るようなユーザなら、どうってことはないだろう。
そういうことが嫌なら、素直にAirMac Time Capsuleを買うべし。


2015/03/07

Speed Wi-Fi NEXT W01 (WiMAX 2+) 到着

申し込んでいた So-net モバイル WiMAX 2+ の機材が到着。早速開封の儀を行う。

本体を取り出してみる。結構小さい。
ガラケー(SH906i)よりちょっと大きい程度。
厚さは、折りたたみ式のガラケーの半分程度。
ACアダプタは、USBケーブルを繋ぐタイプ。
家のメイン回線として使うので、クレードルも必要。ニョキっと生えている部分が、本体のUSB端子に刺さる。
裏面はLANとUSBの端子が1個ずつ。かなり安っぽいつくり>LAN端子。
これ、クレードルの有線LAN接続だと、どのくらいの速度が出るのだろう?

接続できることを確認したら、家のLANの設定にあうよう本体のアドレスを変更する必要があるのだが、設定画面がかなり謎。本体アドレスの設定は、設定タブのLAN設定ではなく、設定タブのファイアウォール設定→DHCP設定で行う。
IPv6アドレスも振られる。フレッツで割り当てられる、使い物にならないアドレスではなく、ちゃんと使えるアドレス。これ、固定なのかな?ただ、ファイアウォールの設定が終わっていないので、無効にしておく。プロファイル設定のIPタイプを変更すればいいのかな?


2015/02/21

確認!急速充電(Nexus 5)

スマホを急速充電できるバッテリー、ケーブルであるかどうかを確認する簡単な方法。
実際に充電してみる。
というわけで、NEXUS 5を充電中に確認。

 「設定」をタップする。

設定画面の下のほうにある、「端末情報」をタップ。

端末情報の「端末の状態」をタップ。

電池の状態を見てみる。

「ACで充電しています」なので、急速充電中。

ACアダプタに繋いでいるのに「ACで充電しています」にならない場合、充電ケーブルが怪しい。
急速充電に対応したケーブルを購入すべし。



2015/02/07

急速充電ケーブルでIngressの活動時間を延ばす

最近、健康のために歩くことにした。ただ歩くだけでは長続きしないだろうということで、Ingressを始めてみた。 確かに歩くのだが、それ以上にスマホのバッテリーが保たない。GPSとLTEは必要だし、一歩進む毎にmapが更新されるから、電気を喰うのも当然といえば当然。モバイルバッテリーを持ち歩いてすぐに充電できるようにしているのだが、充電が追いつかないようでバッテリー切れを起こしてしまった。

「それではモバイルバッテリーの意味がない」ということでググってみたところ、急速充電ができる場合とできない場合とがあることが判明。バッテリーはPanasonic モバイルバッテリー 8,100mAh 無接点充電(Qi)対応 USBモバイル電源 ブラック QE-PL301-Kを使っているので、容量的には問題ない。
ケーブルは、FOMA用充電ケーブル+microUSB変換アダプタ という構成なので、ちょっと貧弱。ケーブルの問題だろう。

というわけで、 オウルテック microUSB充電専用ケーブル 2.4A出力対応 急速充電モデル Galaxy/Xperia等スマートフォン タブレットPC対応 ブラック 巻取り 1m OWL-CBRJ(B)-SP/U2Aを購入。急速充電を行うためにはどういうケーブルである必要があるかは、ググると丁寧に解説しているサイトがあるので、参考にした。
  • 充電しながらスマホを使うので、ケーブルはある程度の長さが必要。
  • 持ち歩くことを考えると、巻き取り式が便利。
という点から、これに決定。

確かに、スマホを使いながらでも充電されるようになった。PCから充電するときも、充電時間が短くなった気がする。



2015/01/24

undefined symbol _znss4_rep20_s_empty_rep_storagee となってBittorrent Syncが起動しない

BitTorrent Syncを使ってディレクトリの同期を行おうとしたら、設定以前に起動しない。btsync -vとしてVersionを表示させようとしても、undefined symbol _znss4_rep20_s_empty_rep_storagee となってしまう。環境はCentOS 5.10。

stdc++の問題なのか、binutilのバージョンなのか、原因はよくわからなかった。結局、ダウンロードのページでx64ではなく、Linux_x64(glibc 2.3)をダウンロードしたら、解決した。


2015/01/11

Golang failed to run on FreeBSD8 / Intel Pentium III

This golang is installed from pkg command.
> sysctl hw.model
hw.model: Intel Pentium III
> uname -a
FreeBSD wall.home.group.jp 8.4-RELEASE-p19 FreeBSD 8.4-RELEASE-p19 #0: Mon Nov  3 17:09:45 UTC 2014     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  i386
> 
> go version
SIGILL: illegal instruction
PC=0x81ec273

goroutine 1 [running, locked to thread]:
math.init·1()
        /usr/local/go/src/math/pow10.go:34 +0x13 fp=0x3892ff4c sp=0x3892ff48
math.init()
        /usr/local/go/src/math/unsafe.go:21 +0x39 fp=0x3892ff50 sp=0x3892ff4c
strconv.init()
        /usr/local/go/src/strconv/quote.go:455 +0x3f fp=0x3892ff6c sp=0x3892ff50
go/parser.init()
        /usr/local/go/src/go/parser/parser.go:2462 +0x44 fp=0x3892ff78 sp=0x3892ff6c
main.init()
        /usr/local/go/src/cmd/go/zdefaultcc.go:6 +0x3f fp=0x3892ffcc sp=0x3892ff78
runtime.main()
        /usr/local/go/src/runtime/proc.go:58 +0xb7 fp=0x3892fff0 sp=0x3892ffcc
runtime.goexit()
        /usr/local/go/src/runtime/asm_386.s:2287 +0x1 fp=0x3892fff4 sp=0x3892fff0

goroutine 2 [runnable]:
runtime.forcegchelper()
        /usr/local/go/src/runtime/proc.go:90
runtime.goexit()
        /usr/local/go/src/runtime/asm_386.s:2287 +0x1

goroutine 3 [runnable]:
runtime.bgsweep()
        /usr/local/go/src/runtime/mgc0.go:82
runtime.goexit()
        /usr/local/go/src/runtime/asm_386.s:2287 +0x1

eax     0x389380a0
ebx     0x856122c
ecx     0x389000a0
edx     0x17dc9c7d
edi     0x7
esi     0x2b38
ebp     0x389380a0
esp     0x3892ff48
eip     0x81ec273
eflags  0x10206
cs      0x33
fs      0x3b
gs      0x1b
> 


2015/01/05

マイキーボードを職場に持ち込む

職場ではDell T1650を使っているのだが、これのキーボードがイマイチ。というか、ぺニャぺニャで、ガンガンコードを書くのには向いていない。印刷された資料を見ながらExcelにポチポチ入力していく程度であれば十分なのだが。

5月の連休後にアサインされたプロジェクトが開始前からきな臭く、話を持ちかけた会社から出てきたスケジュールは土日関係なく作業の予定が入れられていて、まさにブラック。案の定、開始直後から仕様がわかる部分だけでも片っ端から実装しないと間に合わない状況となった。少しでもイライラを減らすために、使い心地のよいキーボードを持ち込むことにした。
休日出勤する際に、ヨドバシのキーボードコーナーによってキータッチを確認。英語配列であることと、テンキーレスであることを条件に触ってみて、 ダイヤテック Majestouch MINILA US67キー 青軸 [FFKB67MC/EB] に落ち着いた。というか、これで妥協した。英語配列なのに余分なキーが多く、スペースキーが小さいというのが減点ポイントなのだが、時間をかけて満足いくものを探せる状況ではなかったので。

ちなみにプロジェクトのほうは、上司を巻き込んで、夏休みどころか連休すらない状態で突貫工事。「言われていないことはやらない」方針で、何とか間に合わせた。残業しまくったので大赤字のはずだけど、それは会社の問題。仕様が明示されないから、工数の見積もりのしようがないって散々言っていたのだから。


2015/01/04

ももんが家計簿をFreeBSD8で動かす

ももんが家計簿とは

ももんが家計簿は、オブジェクト指向スクリプト言語 RubyのCGIで書かれた家計簿Web Application。

ももんが家計簿をFreeBSD8以降で動かすときの問題点

ももんが家計簿はRuby 1.8.xをターゲットにしているので、Ruby 1.9以降で動かすには、いろいろと修正が必要になる。それを避けようとしてもFreeBSDのPorts/Packageには1.8系は含まれていないため、
  • 古いPorts/Packageのまま更新しない
  • 野良ビルドする
といった方法で1.8を使うことになる。これでは、Ports/Packageを使う意味がなさそう。

rbenvで管理する

rbenvは複数バージョンのRubyを切り替えるツールで、FreeBSDのPackageでも提供されている。ruby-buildも入れてRubyの管理をこれで行えば、上記問題は解決できる。

ももんが家計簿をrbenvで動かす

rbenv+ruby-buildの環境構築については省略。pkgで入れれば済むし、ぐぐるとたくさん記事が見つかる。

CGIでrbenvをどう使うかというのが、ありそうで見つけられなかった。
結局
  • /usr/local/rbenv ディレクトリを作成し、環境変数RBENV_ROOTにセットする
  • ユーザrootでrbenv installでruby 1.8.7-p375をインストール
  • ももんが家計簿のあるディレクトリで、rbenv local 1.8.7-p375と実行する。.ruby-version ファイルの中身が1.8.7-p375になっていればOK
とした。
次。CGIとして起動したとき、指定したバージョンのRubyになっているかを確認する。
#!/usr/bin/env /usr/local/rbenv/shims/ruby

require 'rbconfig'

p Config::CONFIG['ruby_version']
を、例えばruby.rbというファイル名でももんが家計簿と同じディレクトリに保存し、ブラウザからCGIとして呼び出す。headerを書いていないのでServer errorになるのだが、エラーメッセージで表示される数字がRubyのバージョンになるので、これで確認できる。
1.8と表示されればOK。

最後に、ももんが家計簿のindex.rbとupdate.rbの1行目を
#!/usr/bin/env /usr/local/rbenv/shims/ruby
と書き換えれば対応完了。

動きはするものの

Ruby 1.8.xはメンテナンスされないので、外部に公開しているようであればちゃんと Ruby 2.xに対応させるべき。上記は、自分一人でひっそり使うための対応であり、利用は自己責任で。



2015/01/02

mackerelでMemoryの状況を表示する

mackerel-agent/CHANGELOG.md at master · mackerelio/mackerel-agentにあるように、0.14.0でunofficialながらもFreeBSDに対応したのだが、MemoryやInterface(Network)はまだ表示されない。
なので、冬休みを利用して、パッチ作ってプルリクだした。

何を送ればいいのかは、メトリック仕様 - Mackerel ヘルプに書いてある通り。FreeBSDではどうなるかというと、FreeBSD find out RAM size including total amount of free and used memory sizeに説明があるのだが、コードをみたほうが判りやすい。ここから仕様に当てはまるものを送信すればよいのだが、何度もsysctlを実行するのは嫌だったので、基本topコマンドの出力をパースするようにし、総メモリ量だけsysctlで取得するようにした。
んー、力技でやっているので、どなたかもう少しきれいに書き直してください(笑)。


2015年年賀状



今年もよろしくお願いします。


2014/12/28

MacBook Air 2台目

以前から使っていたMacbook Air 11インチ | Hiroaki's blogがへばってきたので、急遽購入。

メモリ増設&英語キーボードにしたいので、カスタマイズが必要。Apple Online Storeで頼むと時間がかかるし定価なので、カスタマイズモデルを扱っている量販店をさがす。MacCollection:Mac Collection AKIBA | sofmap.com | Apple Premium ResellerならSofmapのポイントも使えるということで、早速買いに行く。
メモリ増設&英語キーボード&256Gディスクは、CPUも交換したモデルしか残っていないということなので、奮発してそれを購入。雨の日だったので、ビニールかけてくれた。
持って帰ってきて早速開封。なんか以前のモデルと箱が違う気がする。
ということで、2011 Midモデルの箱を引っ張り出してきて、並べて撮影。
ちょっと変わっていますな。

古いMacBook Airに外付けのディスクを繋いで、iTunes の認証を解除してからTimeMachine Backup。終わったら新しいMacBook Airに繋ぎ変えて、設定を移して移行作業終了。と思ったら、VPNの設定が移っていなかったので、ちまちまとexport&import。しばらく様子を見て、問題がなければ旧MacBook Airは初期化する予定。中古で売れるかな?

ソフマップ・ドットコム


2014/12/20

Jenkinsでビルド結果はテスト結果 (全て成功)となっているのに、失敗状態

前提環境

Jenkinsからparallel_rspec(parallel_tests)turnipのシナリオ(シナリオテンプレート)を実行している環境。

現象

Jenkinsで結果が赤丸。Console出力を見ると、Tests Failedと出ているが、ビルド結果は「テスト結果 (全て成功)」と表示され、テスト結果を見てみても、「0個の失敗」となっている。bundle exec parallel:rspec reports "Tests Failed" when nothing failed... · Issue #253 · grosser/parallel_testsにあるような状態。

原因

どこかで失敗している。parallel_rspecではなくrspecで動かしてみると、FAILEDとなるテストがあるはず。


2014/12/14

MackerelでMacの温度情報をグラフにする

以前Macbooi Airの温度情報をfluentdで扱う | Hiroaki's blogで、温度情報をグラフにしたが、今度はMackerelでグラフにしてみる。
プラグインはこんな感じ。 mackerel-agent.conf にプラグインとしてこのスクリプトを実行するように記述してmackerel-agentを再起動すると、こんな感じのグラフが描ける。



Mackerelを野良ビルドしてMacにインストールする

Mackerelを使ってみる | Hiroaki's blogMackerelを入れてみたのだが、これ、 Homebrewが必要。 MacPortsの環境に入れようとして野良ビルドした。Linux以外の環境は、どれもこれでいけそうな気がする。

やり方は、Raspberry Pi に mackerel-agent をインストールする方法 (2014年10月更新) - 意識低い開発者のBlogの通り。

  • goをインストールする
  • Gitでソースコードを持ってくる
  • 環境変数GOPATHを設定して、build
  • buildディレクトリにmackerel-agentができているので、/usr/local/bin にコピー。

    次。設定ファイル。Homebrewで作られる設定ファイルを参考にする。
    /usr/local/etc に mackerel-agent.conf ファイルを用意する。中身はpidfile, root, verbose, apikeyのエントリを有効にした。 詳しくはmackerel-agent仕様を参照。
    これで mackerel-agent -conf /usr/local/etc/mackerel-agent.conf で起動するようになった。
    さらに、/Library/LaunchDaemons/mackerel-agent.plist を用意。 sudo launchctl load /Library/LaunchDaemons/mackerel-agent.plist で、自動起動するようにする。

    以上でOK。しばらくすると、Mackerelの管理画面にhostが追加され、リソースグラフが表示される。ログは/var/log/mackerel-agent.log に出力されるので、動かない場合はそれを確認。



    2014/11/30

    クリスマスモード



    2014/11/29

    圧縮Proxyコンテナ書いてみた

    Dockerでスマホ用の圧縮Proxyを動かしてみようと思い、Dockerfileを書いてみた。hiroaki0404/squid-ziproxy · GitHubに一式置いた。
    squidの設定は、Squidの更新パターンでインターネットアクセスを高速化する | SourceForge.JP Magazineを見ながら修正した方がいいかな?


    2014/11/27

    MacBook Airを分解して掃除した

    最近、MacBook Airを傾けると、冷却ファンが音を立てるようになった。音だけではなく、筐体全体が振動するようになり、 キーボードが熱くなってくる。Apple Careが切れる直前にジーニアスバーに持っていって掃除してもらったんだけど、半年もたなかった。
    Apple Careも切れているので、自分で分解して掃除することにした。

    絶大な効果有り!MacBook Airの不調時に、分解して内部を掃除したら完全復活した件を参考にする。
    まずはドライバー。特殊な形をしたねじなので、Macbook Air用 星型ドライバー 1.2mmを購入。
    誇りを吹き飛ばすエアダスターは、以前買っておいたナカバヤシ Digio エアダスター/ノンフロン 390ml DGC-JB8がまだ残っていた。

    道具がそろったところで、作業開始。まずはばらす。

    赤丸をつけた2箇所だけは、長いねじなので、元通りに組み立てるときに注意する。

    裏蓋をはずすとこんな感じ。右上のファンが掃除対象。
    エアダスターで埃を吹き飛ばしていく。ファンが回らないよう、手で押さえて風を当てると、効率よく吹き飛ばすことができる。
    せっかくばらしたので、他の隙間についた埃も吹き飛ばす。
    一通り掃除したら、蓋をして元通りに組み立てていく。ねじの長さに注意。

    これで解決!と思ったけど、相変わらず筐体全体が振動することが多々ある。もう寿命かな?