続・Dottyによる変更点
Scalaの入門書を書きました
Scalaの入門書がないない言われ続け早n年. この度「Scalaをはじめよう―マルチパラダイム言語への招待―」というScalaの入門向けの本を書きました. 2/16に発刊となりました.
最初は「Scala Tour」という同人誌として執筆し, α版をC92, 正式版を技術書典3にて頒布していたのですが, 技術書典3で頒布していた際にインプレスR&Dさんからお声がけいただき, 商業誌として世に出すことになりました. 同人版ではまだまだ粗が多かったため, 商業化にあたって大幅なリファクタリングを行いました.
章立ては以下のようになっており, 同人誌の時代の薄さを受け継ぎ たった86ページ となっています. 分厚い入門書はやってられない…という人でも取り組みやすいかと思います. ページ数は少ないものの, Scalaのほとんどの基本的な構文, 躓きやすい/勘違いしやすいポイントを読みにくくならない程度に詰め込みました. 前から順に読んでいくことでテンポよく知識を吸収できるように構成しています.
第1章 Scalaの世界へようこそ 第2章 Scalaの環境を作る 第3章 Hello Worldを噛み砕こう─エントリポイント・メソッド・式と文・ブロック式 第4章 FizzBuzzしてみよう─for式・if式といった基本的な制御構文 第5章 オブジェクト指向で多角形を扱おう─クラスやトレイトといったオブジェクト指向に関わる構文 第6章 FizzBuzzを作ってみよう─パラメータ多相・コレクション・関数 第7章 安全第一─エラーハンドリング・Option・Either 第8章 らくらく非同期処理 ─Future 第9章 またFizzBuzzしてみよう─IO・JSON・implicit・テスト
これらの章に加えて, 実用的なベストプラクティスや関数型理解の足掛かりになるようなコラムもあります.
著者 | 伊藤竜一 |
発行 | インプレスR&D |
価格(電子版) | 1,600円(税別) |
価格(印刷版) | 1,800円(税別) |
サイト | プレス, 紹介ページ, サンプルコード(GitHub) |
コピペ円滑化のためサンプルコードはGitHubでも公開しています.
なお一般的な書籍とは異なり, 印刷版はオンデマンド方式のため普通の本屋さんでは購入することができません. 以下のストアをご利用ください.
- 印刷版
- 電子版
最後に, 商業化するにあたりScala関西の阿部亜沙美さん(@aa7th), 粕谷大輔さん(@daiksy), 国平清貴さん(@Kuchitama) (50音順) にレビューをして頂きました. 急な依頼にも関わらず快く引き受けてくださりありがとうございました.
同人版について: 同人版のScala Tourは紙の本の在庫限りで販売を続けています. が, 商業版は多くのアップデートを含むため, 同人版の購入はお布施程度にお考えください. なお, 今後も同人サークル「かいていどうくつ」としてほそぼそとScalaに関係する同人誌を書いていけたらと考えています.
散々既出で今更だけどmacOSデフォルトのgrepがめちゃ遅だった
(あまりに内容が雑なのでポエム扱いで)
そこそこデカいファイルを扱っていたら気になったのでメモ. 一時期 grepが10倍速くなった と話題になったりしてましたが自分のユースケースでは最大2,000倍程度の速度差がありました (記事の内容とは関係ない部分のようですが).
TL;DR;
続きを読む`docker exec -it` を便利にしたかった
Dockerコンテナ弄りにはみんな大好き docker exec -it
(まさかSSH使ってませんよね…?).
docker exec -it $container_name $shell_name
とすることでコンテナ内に入ってインタラクティブシェルを使うことが出来ます.
ただし基本的にコンテナ内には素のシェル環境しかありません (ツライ). コンテナ内で作業をするとは言えあくまでコンテナは使い捨て. いちいちコンテナ内にzsh, vimやtmuxの自前環境を用意するのは大変で環境も汚してしまうという問題がありました.
…というわけでローカルに用意しておいた設定をコンテナ内に自動的に持っていく docker exec -it
用のラッパーが出来上がりました.
使い方やサンプルはリポジトリを参照してください. 大体はSSHでリモートに設定ファイルを持っていくというコンセプトの sshrc に倣っています.
エイリアスを無視してコマンドのフルパスを取得するだけ
例えば .bashrc
や .zshrc
で ls
の利便性を上げるために alias ls='ls -G'
といったようにエイリアスを張っているとします.
この状態で ls
コマンドのフルパスを取得するため which ls
や type ls
を実行するとフルパスではなく ls: aliased to ls -G
のようなエイリアス情報が出てきててしまいます.
which -a ls
や type -a ls
のようにオプションを渡すことで ls: aliased to ls -G; /bin/ls
とエイリアス・フルパス全ての情報を取得できますがフルパスのみ欲しい時にはちょっとばかし不便です.
解決策
$SHELL -c 'which ls'
もっといい方法がありそうだけど見当たらなかった (完)