2016年12月11日日曜日

Git bash / ConEmu で日本語が表示されなかったけど単に locale の問題だった話

相変わらず基本 T/O なのですが、恥を忍んでもうちょい書きます。
もはやこのブログは、自らの知識のなさと頭の回転の遅さを
嘆く場所と化しております。

さて。最近 Windows でちょっと開発しなくちゃいけなくなりまして。
Chocolatey で Git for Windows (v2.11.0) とか
ConEmu (v16.12.6.0)とかを入れてみたんです。
それで Git bash を直接、あるいは ConEmu を通して起動したんですが、
どうも日本語がおかしい。
それも、?????? という文字化けでも、
□□□ というようなトウフ化でもなく、

''$'\346\227\245\346\234\254\350\252\236''.txt'

といったような表示のされ方をしていました
(上記は 日本語.txt というファイル名の例です)。
どうも、UTF-8の数値コードといいますか、
バイト表現がそのまま数字で出ている感じでした。

文字化けやトウフの対処は検索ですぐ見つかったのですが
(例えば、lsコマンドは ls  --show-control-chars としろとか、
 使うフォントを日本語対応のものに変えろとか)
私のような症状はみつからず。

で、しばらく試行錯誤してからようやく気付きました。
これ単に locale がUTF-8に対応していないだけなのでは・・・?

というわけで locale コマンドをたたいてみると、

$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=

ですよねー。
というわけで ConEmu の場合、
export LC_ALL=ja_JP.UTF-8
と打って locale 設定を上書きする形で無事解決。

Git bash だとそれだけだとなんかうまく動かなかったような気がする?ので、
タイトルバーを右クリックして現れたメニューから Option 画面を開き、
左のリストから「Text」 を選んで、
Locale と Character set を ja_JP / UTF-8 にし、
起動しなおしたら直りました。

最初に疑うべきところを疑わなかった私が悪いっていうことで、
皆さんは私のように時間を無駄にしないようにしていただければと思います。

2016年6月4日土曜日

Youtube動画埋め込みを最大サイズ指定しつつレスポンシブにする (インラインスタイルver)

よくあるやつなんですけど、インラインで style 指定してしまうやつのメモです。良い子はマネしちゃいけません。

<div style="max-width:560px">
  <div style="position:relative; width:100%; padding-top:56.25%;">
    <iframe style="position:absolute; top:0; left:0; width:100%; height:100%;"  src="https://www.youtube.com/embed/CmRih_VtVAs" frameborder="0" allowfullscreen=""></iframe>
  </div>
</div>

2016年4月17日日曜日

スリープ中に電源が勝手にシャットダウンする症状が、WiFiドライバーを更新してみたら出なくなった話

もはや、「自分と同じ問題に直面した人がいたら助けになるように」という趣旨に
変わってきているこのブログですが、今度は悪名高き Kernel-Power41エラー (KP41エラー)と戦った話です。

先日、Windows10 入りのラップトップをマウスコンピューターでいろいろカスタマイズして注文したのです。
届いてからいろいろセッティングしてみたのですが、おかしいことが一つ。
スリープ中に電源が勝手にシャットダウンしているのです。
おかしいなあと思いいろいろ調べた結果、これはKP41病なのではという疑いが。
というわけでイベントビューワーで調べてみました。
  • スタートメニュー、というか窓のアイコンを右クリック
  • 「イベントビューワー」をクリックして起動
  • カスタムビュー > 管理イベント から怪しいイベントがないか探る

というわけでビンゴ。

Kernel-Power 41 エラー
さてどうするかな、というときに見つけたのか reddit のこの記事。


どうも、 Thinkpad で自分と同じようにスリープ中に電源が切れる症状が出たけど、
Intel の WiFi のドライバーを再インストールしたら直ったよ、とのこと。

なるほどそういえば、注文時に無線LANモジュールが在庫の関係で
"インテル(R) Dual Band Wireless-AC 3165" に勝手にアップグレードされていたなと思い出し、
デバイスマネージャからドライバの更新を試してみることにしました。
  • スタートメニュー、というか窓のアイコンを右クリック
  • 「デバイスマネージャ」をクリックして起動
  • 一覧の中から「ネットワークアダプター」以下にある Intel の WiFi ドライバーを見つけ、右クリックのメニュー、またはプロパティの「ドライバ」タブ内からドライバーを更新
WiFiドライバの更新
これで症状が出なくなりました(少なくとも、更新した後からこの記事を書くまでの約一週間のあいだは)。
というわけで、同じような症状にハマっている方は試す価値はあるのではないでしょうか?



2015年4月28日火曜日

msysGit のインストールで [po/bg.msg] Error 253 が出たら環境変数にLANG=CでOK

T/O・・・といいたいのですがもうちょいまともに書くことにしましょう。
久しぶりの更新過ぎて何を書けばいいんだという感じではありますが。

先日、 Windows に msysGit を入れようとしたんです。
https://msysgit.github.io
Git for windows ではなく、ページの下のほうにある Contributer 用の msysGit の方です。
Contribute する気は特にないのですが・・・

それで、msysGit-netinstall-1.9.5-preview20150319.exe なるインストーラを実行していたら、
その途中にこんな感じのエラーが出ました。

Generating catalog po/bg.msg
msgfmt --statistics --tcl po/bg.po -l bg -d po/
302 ツフ|bZ[W.
make[1]: *** [po/bg.msg] Error 253
make: *** [all] Error 2

何のことやら?というエラーだったのですが、
以下の forum のやり取りによれば、 「環境変数に LANG = C入れろ」 との事。
https://groups.google.com/forum/#!msg/msysgit/leSx-cJMv2A/Q9cxYCegxTQJ

マジでか・・・Windows の環境変数に LANG = C を入れるのか・・・
というわけで、コントロールパネルからシステムのプロパティーを開き、
「環境設定」タブの下のほう、「環境変数」ボタンから設定画面を出し、変数:LANG 値:C を設定。
msysgit ディレクトリ直下 の msys.bat (私の場合 C:\msysgit\msys.bat) を再実行し、
git ディレクトリに移動して(私の場合 C:\msysgit\git)
make clean してからの make all でうまくいきました。

日本語の情報が見つからなかったので、備忘録として一応置いておきますよ。

2012年5月6日日曜日

Objective-C のコードの循環的複雑度を測るツール


職場で Objective-C のコード (つまり iPhone アプリ) を書いているのですが、
その循環的複雑度 (Cyclomatic Complexity) を測りたいなあと思い立ち、
無料で使えるツールが無いかなあと思って探したところ、次のツールが見つかりました。

headerfile-free-cyclomatic-complexity-analyzer
http://code.google.com/p/headerfile-free-cyclomatic-complexity-analyzer/

2012/05/06現在、最新は hfcca14.py です。
拡張子でお分かりの通り、Pythonで書かれたツールです。
Objective-C を使っているなら、たいていの場合 MacOS X 上 で作業しているでしょうから、
その場合は Python がそもそも入っているので問題なく使えると思います。
使い方は上記のページで大体わかると思いますが、

python hfcca14.py filename.m

てな感じでやるだけです。ディレクトリ指定や複数指定ももちろん可能です。
オプションはいろいろありますが、出力結果のしきい値を変更する -C は特に重要です。
あるしきい値 (デフォルトは15) 以上の複雑度を持つ関数が存在する場合、
実行結果に警告として表示されるのですが、例えばしきい値を 20 としたい場合には、

python hfcca14.py -C 20 filename.m

とかやればOKです。

"header-file-free" と書いてあるように、このツールは若干簡易的な測り方をしているようで、
ヘッダファイルは無視されますし、
また#defineで書かれたマクロなどの展開を(デフォルトでは)行わないようです。
まあ、実用上はそれで十分かなと思います。

あと、裏話ですが、Objective-C サポートしているといいつつ、
Objective-C 特有の関数シグニチャの解析が微妙だったせいで、
実行結果で表示される関数名がめちゃくちゃだったので、
作者にそれを修正するパッチ送ったら採用してくれました(それが上記の最新版です)。

これ以外にも色々探したのですが、
中々 Objective-C をサポートしているツールが見つからないんですよね。
他によいものがあればぜひお教え下さい。