2013年6月18日火曜日

wgetを並列に走らす


ダウンロード先がバラバラでかつ,それぞれのサーバが遠くのもので,ダウンロード速度が出ないようなときがある.

そんなときに便利な技.




まず,urls.txtに1行ずつダウンロード先のurlを書いておく.

そして,以下のコマンドを実行する.




xargs -P 20 -n 1 wget -nv < urls.txt


このコマンドで最大20個のwgetが並列に走る.

また,それぞれのwgetには引数が1つずつ渡される.







--
My Emacs Files At GitHub

Emacsで複数行に文字列を挿入する方法


Emacsで以下を実行




M-x string-rectangle


もしくは




C-x r t


で可能.

自動インデントが効かないときなどに複数行右にずらす(スペースをいれる)のに便利.

左にずらす(スペースを消す)ときは M-x delete-rectangle もしくは C-x r d でOK.





--
My Emacs Files At GitHub

2013年6月16日日曜日

Haskellのclassとinstance(Javaのイメージで理解)

すぐ忘れそうなので,忘れないうちにメモ.

HaskellのclassはJavaで言うinterface.
実装すべき関数の型を定義している.
classというのは,Haskellでこれを型クラスというから.

一方,HaskellのinstanceはJavaで言うinterfaceを継承したclass.
実際は型コンストラクタができる.

もう少し良い例えがあるかもしれないが,僕はこういうイメージで理解した.

参考URL: http://learnyouahaskell.com/making-our-own-types-and-typeclasses#the-functor-typeclass

2013年4月28日日曜日

Brasero が起動しない問題への対処


動作環境(ディストリビューション)




Linux Mint 14 Mate(64bit版)






本題




UbuntuやLinux Mint上でisoイメージをCDやDVDに焼くときに,Braseroというアプリケーションを使う時があります.

しかし,これが起動しなくなる時があります.

Terminalから起動しようとすると以下のようにメッセージが出力されます.




$ brasero &
** (brasero:14601): WARNING **: An instance of Brasero is already running, exiting





どうやら,すでにBraseroが裏で動いてるから起動できない,ということらしいです.

なので,システムモニタなどを使って裏で動いてるBraseroのプロセスを終了して,再度,起動を試みると,ちゃんと起動しました.










--
My Emacs Files At GitHub

2013年4月5日金曜日

Emacs上で動作するTwitterクライアント(Twittering-mode)をインストールする


はじめに




この記事では,Emacs上で動作するTwitterクライアントである,Twittering-modeのインストール手順を解説する.

なお,Twittering-modeの使い方に関しては解説しない.

使い方に関しては,EmacsWiki: TwitteringMode-ja を参照するとよい.




インストール環境



今回Twittering-modeをインストールした環境を以下に示す.
OS: Mac OS X 10.7.5
Emacs: GNU Emacs 23.4.1


インストール手順





  1. twittering-modeのリポジトリをクローン

    Git を用いてtwittering-modeのリポジトリをクローンする.




    git clone git://github.com/hayamiz/twittering-mode.git


    Githubページ: https://github.com/hayamiz/twittering-mode

    リポジトリを丸ごと取ってくるのが嫌な人や,Gitを使いたくない人は,sourceforgeからダウンロードできる.









  1. Emacsの設定ファイルを編集

    Emacsの設定ファイルに以下の設定を追加する.




    (add-to-list 'load-path "展開したtwittering-modeディレクトリのパス")
    (require 'twittering-mode)
    (setq twittering-use-master-password t)


    3行目の twittering-use-master-password はtwittering-modeを起動する度にアプリの認証を行わないで済むようにするためのものである.

    twittering-use-master-password の機能を用いるためには GnuPG というものが必要である.

  2. GnuPGをインストール.

    GnuPGとは,公開鍵や秘密鍵なんかをいい感じに扱ってくれるものらしい(適当ですみません).

    ともかく, twittering-use-master-password の機能を用いるために必要なのでインストールする.

    GnuPGはMacPortsを使ってインストールできる.

    ターミナルで以下を実行する.




    sudo port install gnupg


  3. Twittering-modeを起動する.

    以上の手順を終えた後に,Emacsを再起動し, M-x twit と押下.

    すると,Twittering-modeが起動される.

  4. Twittering-modeを認証する.

    Twittering-modeを初めて起動するとき,Emacsのミニバッファに以下のメッセージが表示される.




    Open authorization URL with browser? (using `browse-url')(y or n) 


    このメッセージが表示されたら, y を押下する.

    すると,ブラウザでTwitterのページが開き,Twittering-modeを認証するか否か問われる.

    ここで,認証すると,PINコードが表示される.

    このPINコードをEmacsのミニバッファに入力する(コピペでOK).

    最後に,次回起動時から入力するパスワードを設定する.

    設定するパスワードを2回入力すると,Twittering-modeが起動し,Emacsにタイムラインが表示される.




    次回の起動からは,設定したパスワードを入力するだけで起動することができる.










おわりに




Twittering-modeのインストールの手順を解説した.







--
My Emacs Files At GitHub

2013年3月23日土曜日

Scalaのお勉強 第2回:「Scalaプログラミングの次の一歩」(前編)


はじめに




前回のScalaの記事から,1ヶ月半ほど経ってしまいました.

今回はコップ本の第3章「Scalaプログラミングの次の一歩」を読んだので,記事を書きます.

この第3章,内容をブログにまとめようとすると,結構な量になってきたので,記事を2つに分けようと思います.









パラメータ化




パラメータ化 = "生成するインスタンスの「構成を設定する」こと"

Javaで言えば,オブジェクトを作る時に,コンストラクタへ引数を渡すのと同じ(?)




val greetStrings = new Array[String](4)


上の例では, Array[String] 型のオブジェクトに (4) とすることで,長さ4の配列であると構成を設定している.

greetStrings の型が Array[String] であるのもポイント.









型コンストラクタ




Array は型コンストラクタと呼ばれるもの.

型コンストラクタに型変数を与えることによって,初めて型として成り立つ.

関数にいくつかの引数を与えて,値になるようなイメージで型を作る仕組み.

Haskellにもあった概念だと思う.









valで宣言した配列の書き換え







val greetStrings = new Array[String](4)    

greetStrings(0) = "Hello"
greetStrings(1) = ", "
greetStrings(2) = "world"
greetStrings(3) = "!\n"

for(i <- 0 to 2)
print(greetStrings(i))



greetStringsval で宣言している.

val で宣言したものは,再代入できない.

ところが,上記のコード例のように, greetStrings の要素には代入できる.

なぜなら, greetStrings の要素への代入しても, greetStrings には再代入していないためである.

もちろん, greetStrings = greetStirngs2 のような,再代入はできない.

これをCのポインタでいうと,ポインタ変数に格納しているアドレスは書き換えられないけど,ポインタが指す先にあるデータ領域は書き換えられる,ということである.

Cのコードで書くとこうなる.







char *const str1 = (char*)malloc(sizeof(char)*4);
char *str2 = (char*)malloc(sizeof(char)*4);

strcpy(str1, "ABC");
strcpy(str2, "DEF");

str1[1] = 'G'; //OK
str1 = str2; //Error








さまざまな糖衣構文




先ほど示したScalaのコード例の中には,様々な糖衣構文が存在する.


  • 0 to 2(0).to(2) の糖衣構文.


  • greetStrings(i)greetString.apply(i) の糖衣構文.


  • greetStrings(1) = "Hello" greetStrings.update(1, "Hello") の糖衣構文.


  • 1 + 2(1).+(2) の糖衣構文.




このように,さまざまなものが,メソッド呼び出しに変換される糖衣構文(syntax suger)である.






おわりに




今回はコップ本の第3章「Scalaプログラミングの次の一歩」を読んだまとめ(前編)を書きました.

後編はいつになることか…

あんまりがっつり書くと時間がかかるので,次回からもう少しはしょりながら書こうかと思ってます.




--
My Emacs Files At GitHub

Gitでコミット時にdiffが出るようにする


はじめに




Gitでコミットするとき,コミットメッセージを書きますね.

そのときに,実際の差分を見たいと思うわけです.

コミット時に差分を表示する方法は簡単ですが,すぐ忘れそうなので書いておきます.






方法




コミットするときに, -v をつけるだけです.

つまり




$ git commit -v


とするだけです.






おわりに




上記の方法で,めでたく差分を見ながらコミットメッセージを書けます.




--
My Emacs Files At GitHub