2015年6月30日火曜日

[Chrome OS]USBブートでChrome OSを体感する!

以下の記事を参考に、Chrome OSを体感しています。

http://www.atmarkit.co.jp/ait/articles/1408/27/news046.html

WindowsでWebブラウジングするより断然いい!快適にストレスなく動作します!

2015年6月21日日曜日

[Elixir]ファイルへ文字列を書き込む

IO.binwrite() を使って、開いたファイルへ文字列を書き込む。

開くファイルはローカルにあってもなくてもよい。

■やること

hello ファイルを開き、world文字列を書き込む。

defmodule MyModule do
    def write( word ) do
        case File.open "hello", [:write] do          # 開く
            {:ok, file} -> writeStr( file, word )    # 書き込む
                           File.close file           # 閉じる
            {:error, posix } -> IO.puts posix
        end
    end

    def writeStr( file, word ) do
        IO.binwrite file, word
    end
end

MyModule.write( "world" )

[Elixir]ファイルを読み込む

File.read()を使って、ファイルの内容を読み込む。

ファイルの中身(hightemp_1.txt)
高知県 江川崎 41 2013-08-12
埼玉県 熊谷 40.9 2007-08-16
岐阜県 多治見 40.9 2007-08-16

ファイルの内容を読み込み、表示するソース

defmodule MyModule do
    def fileRead( path ) do
        case File.read(path) do
            {:ok, body} -> body
            {:error, reason} -> reason
        end
    end
end

IO.puts MyModule.fileRead( "./hightemp_1.txt" )

実行結果

PS C:\Users\tomohiko\Documents\19_elixir> chcp 65001
Active code page: 65001
PS C:\Users\tomohiko\Documents\19_elixir> elixir .\fileread.exs
高知県     江川崎     41      2013-08-12
埼玉県     熊谷      40.9    2007-08-16
岐阜県     多治見     40.9    2007-08-16

2015年6月19日金曜日

[Elixir]文字列をシャッフルする

Enum.shuffle()を使って、文字列をランダムにシャッフルする。

defmodule MyModule do
    def shuffle( str ) do
        :random.seed(:os.timestamp)   # これがないと、いつもシャッフル後の文字列が同じとなる。
        shuf = Enum.shuffle( String.codepoints( str ) )
        Enum.join( shuf )
    end
end

str = "abcde"
IO.puts MyModule.shuffle( str )
IO.puts MyModule.shuffle( str )

出力例

PS C:\Users\tomohiko\Documents\19_elixir> elixir .\test_shuffle.exs
adbce
dbeac

2015年6月13日土曜日

2015年6月12日金曜日

[Elixir]リスト内要素を標準出力する

Enum.each()を使用し、リスト内要素を標準出力する。
iex(8)> Enum.each( ["I", "am", "tomohiko"], fn(x) -> IO.puts x end )
I
am
tomohiko
:ok

[Elixir]リスト内要素を特定の文字列で結合する

Enum.join()を使い、リスト内要素を結合する。
iex(1)> Enum.join( ["I","am","tomohiko."], " " )   # 空白で結合する
"I am tomohiko."
iex(2)> Enum.join( ["I","am","tomohiko."], "-" )   # ハイフンで結合する
"I-am-tomohiko."
iex(3)> Enum.join( ["I","am","tomohiko."])         # ただ結合する
"Iamtomohiko."

2015年6月8日月曜日

[Elixir] 比較対象値とリスト内要素を比較し、少なくとも1つ一致するものがあれば、trueを返す。

Oracleのin比較演算子と同じことができないものかと調べたら、あった。
リスト内の各要素に対し、比較したい値と比較し、同じものがあれば、trueを返す。
なければ、falseを返す。

以下に例を示す。
iex(1)> n = 1
1
iex(2)> Enum.any?([1, 5, 6, 7, 8, 9, 15, 16, 19], fn(x) -> x == n end )
true
iex(3)> n = 2
2
iex(4)> Enum.any?([1, 5, 6, 7, 8, 9, 15, 16, 19], fn(x) -> x == n end )
false
2015/06/24 追記
こちらが普通かもしれない。
iex(1)> Enum.member?([1,2,3,4],3)
true
iex(2)> Enum.member?([1,2,3,4],5)
false

2015/07/08 追記
いや、これではないか。
iex(7)> 1 in [1,2,3]
true

2015年6月7日日曜日

[Elixir] 文字列の分割

文字列の分割 空文字除かない場合と空文字を除く場合を示す。
↓ソース
str = "Now I need a drink,"
IO.puts "ex. " <> str

IO.puts "trim なし"
words = String.split(str,[","," "])               # 空文字は除かない
Enum.each( words, fn x -> IO.puts x end )

IO.puts "trim: true"
words = String.split(str,[","," "], trim: true)   # 空文字は除く
Enum.each( words, fn x -> IO.puts x end )
↓実行結果
Active code page: 65001
PS C:\Users\tomohiko\Documents\19_elixir> elixir .\split_test.exs
ex. Now I need a drink,
trim なし
Now
I
need
a
drink
                # 空文字が出力される=空文字は除かれていない
trim: true
Now
I
need
a
drink

2015年6月6日土曜日

[Elixir]PowerShellを使って、UTF-8日本語表示を行う。


コマンドプロンプトでは、UTF-8の日本語表示がうまくいかなかったので、PowerShellでやることにした。
手順
  1. PowerShellを起動する。(スタート-プログラムとファイル検索欄に[powershell]と入力し、Enterキー) 
  2. chcp 65001 と入力し、Enter これで日本語表示できる状態となる。

[powershell]「ディスクがありません」とエラー表示される。


調べても出てこないし、エラーのとおり(ツタヤで借りた)DVDをドライブディスクへ挿入して、PowerShellをもう一度起動したら、うまく表示された。 なんじゃこりゃと思った。

[Elixir]文字列を逆順にする

任意の文字列を逆順にする。
iex> String.reverse("stressed")
"desserts"