2.25.2013

The Twelve Steps of Recovery in Git Phobia

Git 恐怖症を克服する 12 のステップ

「周りでGitを使っている人がいない」「コマンドを覚えきれない」
「エラーが出ても何をすればいいかわからない」など、Git の習得の過程にはいくつか阻害要因が存在する。

以下は、私のような凡人でも Git / GitHub に対する抵抗感をなくすための 12 の処方箋である。
所要時間の目安も記載した。 

 

1. トレンドを知る [5min]

Google トレンド - ウェブ検索の人気度: git, subversion, mercurial, cvs - すべての国, 2004年 - 現在

Google トレンドのグラフは、バージョン管理システムの覇者は誰かを明白に示している。
目指すべき方向性が間違っていないことを確認できるはずだ。

 

2. 英語に慣れる [5min]

Git / GitHub を使いこなすためには、どうしても英語の壁は避けて通れない。
とはいえ辞書があれば英語力がなくても問題ない。英語を見ても逃げ出さない勇気を持てばよいだけだ。

壁の向こう側には果てしなく広い世界が待っている。

 

3. コマンドラインに親しむ [5min]

Git に対応した GUI のツールは数多く存在する。
しかしデファクト・スタンダードがあるわけではないし、不安定なプロダクトも多い。
何より、理解しなくても何となく使えてしまうのが一番の問題だ。(エラーが出てから泣くこととなった私のように)

まずはコマンドラインによる操作で基本を習得するのが、最終的には一番の近道である。

 

4. Git をインストールする [5min]

これがなくては始まらない。
OS に標準でインストールされている場合も、最新バージョンをチェックすることをお勧めする。

 
5. GitHub のアカウントを作る [5min]

Git といえば GitHub。
Git ホスティングサービスを提供し、世界最大のオープンソース開発基盤を作り上げた
GitHub のアカウントを作成する。 

 

6. Git ポケットリファレンス の1章を読む [3h]

Git に関する(日本語の)書籍はいくつか出版されているが、「Git ポケットリファレンス」は
手元に持っておきたい一冊だ。

その第一章「まずは Git を使ってみよう」を読めば、Git の概要を理解できる。

 

7. tryGit をプレイする [30min]

ここからは実際手を動かしていく。

tryGit は GitHub の中にある簡単なチュートリアル。
表示されるコマンドを入力していくことで、Git の利用の流れが見えてくる。

 

8. ドットインストールのレッスンを視聴する [2h]

3分ほどの動画が22回に分かれて置いてある。全て無料で視聴可能。

 

9. githug をプレイする [6h]

ギットハブではなく、ギットハ「グ」。
出題される問題を順番に解いていくことで徐々に  Git に対する理解が深まっていく。

このとき、「Git ポケットリファレンス」の第二章(コマンドリファレンス)が役に立つ。

 
10. Learn Git Branching をプレイする [未実施]

Git のブランチの仕組みをパズル形式で学習できる。

 
11. GitHub Flow を読む [2h]

GitHub の運用にあたってのベストプラクティスが書かれている。

 

12. 入門Git を読む [未読]

タイトルとは裏腹に、中級者向けの本らしい。著者自身が Git 開発者である。

Git の内部仕様や考え方などが書いてあるとのこと。

 

 

やっぱり無理矢理12個も書くのは大変だった。

2.16.2013

Python: How to Get the Width of East Asian Characters

Python: 日本語(および東アジア言語)のマルチバイト文字の幅を調べる

ターミナル周りの処理では、Unicode の文字列を文字の幅によって表示を整えたい場合が往々にしてある。
このようなとき Python では、unicodedata モジュールの east_asian_width 関数を使えばよい。

こちらの記事が大変分かりやすく参考になった。
【UTF8文字幅揃え】unicodedata.east_asian_width(): Pythonと自分 ~ a python life

 

実装例 (ジェネレータ式を使用。Python 2.4~)
def unicode_width(s, width={'F': 2, 'H': 1, 'W': 2, 'Na': 1, 'A': 2, 'N': 1}):
    from unicodedata import east_asian_width
    return sum(width[east_asian_width(c)] for c in s)

print(unicode_width(u'A'))  # 2 (Fullwidth)
print(unicode_width(u'ア'))  # 1 (Halfwidth)
print(unicode_width(u'あ'))  # 2 (Wide)
print(unicode_width(u'A'))  # 1 (Narrow)
print(unicode_width(u'α'))  # 2 (Ambiguous)
print(unicode_width(u'ς'))  # 1 (Neutral)

 

References

2.11.2013

Using 'blockdiag' - Simple Diagram Images Generator

ブロック図生成ツール blockdiag を使ってみる

テキストベースの定義ファイルからコマンド一発で簡単にドキュメント用の図を生成できる、Pythonベースのツール。
astah を使うほどでもないようなブロック図、論理ネットワーク図を作るときに特に重宝しそうだ。

 

References

Windows: Files that are Copied using the Remote Desktop are Corrupted

Windows: リモートデスクトップ接続でコピーしたファイルが壊れている

Windows XP SP3 ベースのクライアントから Windows Server 2008 ベースのサーバへリモートデスクトップ接続し、
ファイルをクリップボード経由でコピーする(サーバから持ってくる)と、そのファイルが壊れている場合がある。

この致命的なバグにハマりかけた。
(ファイル終端以降もバッファ上のデータが書き込まれてしまうような現象だった)

個別パッチを適用すれば修正されるようだ。

References

2.04.2013

Accessing the .NET Framework from Windows Scripting Host

Windows Scripting Host で .NET Framework を利用する

.NET Framework の一部はCOM呼び出し用のラッパーが付いている。
利用すれば意外と便利かもしれない。

Hey, Scripting Guy!: 発言には注意しましょう

  • ArrayList を使う
    var list = new ActiveXObject('System.Collections.ArrayList');
    
    list.Add('B');
    list.Add('C');
    list.Add('E');
    list.Add('D');
    list.Add('A');
    
    list.Sort();
    list.Remove('D');
    list.Reverse();
    
    for (var i = 0; i < list.Count; ++i) {
      WScript.Echo(list(i));
    }
    
    
  • 乱数を取得する
    var rand = new ActiveXObject('System.Random');
    WScript.Echo(rand.Next_2(1,100));
    

How to Get Data From Oracle Database in JScript

JScript で Oracle のデータを取得する方法
Windows のネイティブ環境から Oracle へ接続する場合、そのインタフェースにはいくつかの選択肢がある。
  • ADO + ODBC
  • ADO + OLE DB
  • oo4o (Oracle Objects for OLE)
  • ODP.NET (Oracle Data Provider for .NET)

いずれも Oracle Client のインストールが必要。ODP.NET は個別モジュールのインストールも必要。

パフォーマンスが求められる場合、oo4o および ODP.NET に優位性があるが
oo4o はレガシーなツールで 64bit 対応も行われていない。

一方、ODP.NET は ASP.NET に最適化されているものの
「COM クライアントへの .NET Framework アセンブリの公開」を行わない限り
Windows Scripting Host からは利用すらできないようだ。 [未確認]

32bit環境であれば、先がないと理解しつつも oo4o に頼り
64bit環境なら性能は諦めて OLE DB を利用するのが現実的な解であろうか。

oo4o によるDB接続コードはこのような感じ。

var session = new ActiveXObject('OracleInProcServer.XOraSession');
var db = session.OpenDatabase('DB接続識別子', 'ユーザ名/パスワード', 0);

References