2017年8月31日木曜日

historyの設定変更

コマンド履歴はちょくちょく見たりするので残しておきたい。
なので設定を変更します。

今回は全ユーザ共通のhistory設定にしたいので
”/etc/profile”の末尾に追加してみようと思います。

この設定方法はあまり良くない方法な気もしますが、
ローカル環境なので気にしなーい。
 【設定する内容】
  サイズを50000に変更、
  historyコマンド実行時のフォーマット変更、
  連続して同じコマンドを実行時、重複記録しない。

$ sudo vi /etc/profile
 以下を末尾に追加
   # Add
    HISTSIZE=50000
    HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S '
    export HISTCONTROL=ignoredups

ちなみにHISTSIZEはすでにあるので、それを変更してもいいかも。
(念のためコピーして元の設定はコメントアウトとかするのがベスト?)

これでほぼコマンド履歴が消えずに残ってかついつ実行したかがわかって便利!

そんな感じで以上です。

参考
・historyの設定
  bash を自分好みに設定する

2017年8月11日金曜日

「git status」で変更していないファイルが表示される

「git status」で変更したファイルを確認した際に、
変更していないはずのファイルも表示された。

「git diff」で変更内容を確認してみると以下の内容が。
old mode 100644
new mode 100755

よくわからないのでそのまんま検索してみた。

ファイルのパーミッションが変更されたのが原因らしい。
Linuxで作成してpushしたリポジトリをWindowsとの共有ディレクトリに移動した影響っぽい?

とりあえず以下のコマンドで無視する設定を入れたら解消されるみたい。
$ git config core.filemode false

LinuxとWindowsでファイルを共有したいので変更内容をpushすることにした。
あまりよろしくない気がする・・。もうちょっと調べよう。

追記:
Linuxにログインして共有したディレクトリからだと「old mode~~」が出る。
windowsからだと出ない。
git_bashで「ls -l」してみるとパーミッションも644のままっぽい。
git操作はLinux上からじゃなくてgit_bashから(windowsで)行うことにしよっかな。
そもそも共有ディレクトリ上に置いているのが問題だよねー。

参考
msysgit でファイルを変更していないはずなのに merge できない場合の対処



2017年8月4日金曜日

Erlangでfizzbuzzっぽいの書いてみた。

Erlangを勉強しだしてまだちょっとですが、
fizzbuzzっぽいの書いてみました。

今回書いたfizzbuzzのルール。
・3で割り切れる。
・5で割り切れる。
・3と5両方で割り切れる。
・数のリストを受け取りfizzbuzzした結果リストを返す。

ーコードーーーーーーーーーーーーーーーーーーーーーーー
fizzbuzz(L) -> fizzbuzz(L, []).
fizzbuzz([H|T], Result) -> 
    case {H rem 3, H rem 5} of
        {0,0} -> fizzbuzz(T, [fizzbuzz|Result]);
        {0,_} -> fizzbuzz(T, [fizz|Result]);
        {_,0} -> fizzbuzz(T, [buzz|Result]);
        {_,_} -> fizzbuzz(T, [H|Result])
    end; 
fizzbuzz([], Result) -> lists:reverse(Result).

ー実行結果ーーーーーーーーーーーーーーーーーーーーーー
1> c(test).
{ok,test}
2> test:fizzbuzz([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]).
[1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13,14,fizzbuzz,16]
ーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんな簡単な処理を書くのにも数時間かかった・・。
ちゃんと実践せずに本を読んでるだけじゃだめってことですね。
早く並列分散をガシガシ書きたい!

こんな感じで、今回は以上です。


追記:
出力バージョンも作ってみました。
ーコードーーーーーーーーーーーーーーーーー
%% 受け取ったリストに対して以下の処理を行う
%% 3で割り切れる場合は「Hello」を出力。
%% 5で割り切れる場合は「World」を出力。
%% 3,5どちらでも割り切れる場合は「Hello World」を出力。
%% すべてのリスト要素を処理したら「End」を出力。
fizzbuzz([H|T]) ->
    case {H rem 3, H rem 5} of
        {0,0} -> io:format("~p:Hello World~n", [H]),fizzbuzz(T);
        {0,_} -> io:format("~p:Hello~n", [H]),fizzbuzz(T);
        {_,0} -> io:format("~p:World~n", [H]),fizzbuzz(T);
        {_,_} -> io:format("~p~n", [H]),fizzbuzz(T)
    end;
fizzbuzz([]) -> io:format("End~n").

% 引数の数値nから1~nのリスト作成
make_list(MaxNum) -> make_list(1, MaxNum, []).
make_list(MinNum,MaxNum) -> make_list(MinNum, MaxNum, []).
make_list(I, Max, List) when Max >= I-> make_list(I + 1, Max, [I|List]);
make_list(I, Max, List) when Max =< I -> lists:reverse(List).

ー実行結果ーーーーーーーーーーーーーーーーーーーーーー
1> c(hello).
{ok,hello}
2> L = hello:make_list(30).
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
 23,24,25,26,27,28,29|...]
3> hello:fizzbuzz(L).
1
2
3:Hello
4
5:World
6:Hello
7
8
9:Hello
10:World
11
12:Hello
13
14
15:Hello World
16
17
18:Hello
19
20:World
21:Hello
22
23
24:Hello
25:World
26
27:Hello
28
29
30:Hello World
End
ok
4>
ーーーーーーーーーーーーーーーーーーーーーーーーーーー

「;」と「,」の使いどころがまだ理解できてないため、毎回コンパイラに怒られる。
あと、 io:formatとかもうちょいドキュメント(Erlang -- io)読まなきゃなぁ。

追記は以上です。