動かざることバグの如し

近づきたいよ 君の理想に

2021-01-01から1ヶ月間の記事一覧

Elixirでパイプ中にpryでデバッグしたい

環境 Elixir 1.x コード Elixirのパイプ演算子便利なんだけど、途中の変数変化を把握しづらい。そこでpryを使ってブレークポイントを仕掛ける。 defmodule Example do def pipe do 1..10 |> Enum.map(&(&1 * &1)) |> Enum.filter(&rem(&1, 2) == 0) |> (fn(x…

Elixirでファイルの読み書きまとめ

環境 Elixir 1.x 基本的な読み書き File.write/2 で書き込み、 File.read/1 で読み込みできる。 iex> File.write "sample.txt", "Hello" :ok iex> File.read "sample.txt" {:ok, "Hello"} 読み込んだときに2要素のタプルを返してくるのがポイント こういう…

ElixirでFizzBuzz

condを使う場合 defmodule FizzBuzz do def upto(n) do cond do rem(n, 15) == 0 -> "FizzBuzz" rem(n, 3) == 0 -> "Fizz" rem(n, 5) == 0 -> "Buzz" true -> n end end end for n <- 1..100 do IO.puts FizzBuzz.upto(n) end パターンマッチを使う場合 defm…

Elixirで関数呼び出し時にドットを付ける/付けないの違い

環境 Elixir 1.x 結論 無名関数の場合はドット(.)が必要 名前付き関数の場合は不要 違いについて 他の言語やったあとにElixirやってると以下のようなエラーをよく起こす。 iex(1)> add = fn a, b -> a + b end #Function<12.99386804/2 in :erl_eval.expr/…

Amazon Linuxでやるべき初期設定

aws

タイムゾーンの変更 JSTにする ln -sf /usr/share/zoneinfo/Japan /etc/localtime デフォルトユーザー削除 userdel ec2-user

PHPで文字列を1文字ずつ分割する方法が進化してた

php

令和最新版のPHPは一味違うぜ 概要 すごく昔に、PHPで文字列を1文字ずつの配列に変換する方法について記事を書いた。 thr3a.hatenablog.com このときはメモ程度だったが、実は今でもそこそこPVがある。 流石に令和だしPHP7どころか8も出たしなにかアップデ…

Elixir で配列をループしたいならEnum.each

Elixirで頻出する Enum.each/2 だが、書き方色々あって全然見れなかったのでメモ。 基本形 Enum.each(["one", "two", "three"], fn(x) -> IO.inspect(x) end) # 出力 # "one" # "two" # "three" 省略記法を使う Elixirでは無名関数を&を使って省略記法で書け…

Elixir マップの値を更新する方法3選

環境 Elixir 1.x やりたいこと 例えば、以下のようなMapがあったとする。 user = %{name: "Taro", gender: "man", city: "Tokyo"} ここのcityのTokyoの値を変更したり、あたらしくidのキーを追加したい。 存在するキーを更新する場合 パイプ文字を使った new…

Elixir &記法メモ

コード add_one = &(&1 + 1) # add_one = fn n -> n + 1 end IO.puts add_one.(44) &1 &2は 最初の引数、2番めの引数と対応する &(&1 + &2) は fn p1,p2 -> p1 + p2 endと同義

ElixirでTupleをListに変換する

久々にカテゴリ増やした気がする(怠慢 環境 Elixir 1.6 コード Elixirの教科書本ことプログラミングElixirの演習問題でわからなかったのでメモ プログラミングElixir 第2版作者:デイブ・トーマス発売日: 2020/12/14メディア: Kindle版 Tuple.to_list({1234,…

Ruby irbするとreadlineエラーになる件

環境 Mac OS rbenv + ruby-build 結論 readline入れろ brew install readline が、残念ながらこれだけだとライブラリのパスがruby-buildから見えないので、 RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" rbenv install 3.0.0 する…