読者です 読者をやめる 読者になる 読者になる

Memento memo.

Today I Learned.

ScalaのREPL環境 Ammonite-REPL を使ってみる

この記事を書いてる段階でScala歴5分くらいなのですが、デフォルトのREPL環境が微妙だったのでいい感じのScala REPLを探してきました。 シンタックスハイライトと補間が効くやつです。 Ammonite 日本語情報がほとんどないので流行っていないのかもしれない(…

zshmarks と prezto と peco でディレクトリ移動をいい感じにする

Zsh

N番煎じ感があるけど今まで設定してなかったのでやってみます。 zshmarks ディレクトリをブックマークして移動しやすくするやつです github.com 似たようなプラグインに https://github.com/mollifier/cd-bookmark なんかもあるのですが、zshmarksの日本語情…

最強の Datadog の構成管理ツール Doggy を使う

Datadog 自体には構成管理機能はついていないため、モニタリングやダッシュボードの設定を誰かが吹っ飛ばした場合に復旧できない問題がありました。権限をつけることはできますが、それでもヒューマンエラーは防げません。「構成をコード化し、gitで管理でき…

ここ一年くらいで読んだ技術書をまとめる(70冊くらい)

読んだというか積んでるだけの本もありますが、整理してみます。 途中で力尽きましたが超適当にコメントつけていきます。 あまりエッジの効いた本は読めてないので大体のプログラマ/エンジニアにはおすすめです。 ソフトスキル系 SOFT SKILLS エンジニアの人…

NumPyの配列操作 - 条件に合う要素のみフィルタする処理の理解

積ん読消化中で、以前買った機械学習入門本を読んでいます。 データサイエンティスト養成読本 機械学習入門編 (Software Design plus)作者: 比戸将平,馬場雪乃,里洋平,戸嶋龍哉,得居誠也,福島真太朗,加藤公一,関喜史,阿部厳,熊崎宏樹出版社/メーカー: 技術評…

「サーバ/インフラエンジニア養成読本 ログ収集〜可視化編」でFluentdがinstallできない問題

去年買って完全に積んでいた「サーバ/インフラエンジニア養成読本 ログ収集〜可視化編」を読み始めました。 最近お仕事で運用設計的なところ触ったりして興味湧いてきたのがきっかけです。 サーバ/インフラエンジニア養成読本 ログ収集〜可視化編 [現場主…

Neovimのpython_host_prog設定

新しくMBP買いました。Brewfile, dotfiles周りはある程度環境構築自動化できてるんですが、Neovim <=> python_host_progの連携とか何もしてないので少しずつscriptに落としていきたい。 とりあえずNeovimでPython呼べるようにshellを書きます。 zcheeさんの…

Ruby: Hash -> Structの変換

こんな感じで書けます def deep_struct(hash) foo = hash.values.map do |v| case v when Hash deep_struct(v) when Array v.map { |x| deep_struct(x) } else v end end Struct.new(*hash.keys).new(*foo) end OOPっぽく書きたければHash, Arrayに deep_str…

Hacktoberfest 2016 に参加してきた

Hacktoberfestなるものに参加して景品のTシャツを貰いました。あとステッカーも7枚ほど貰いました。 Finally, #hacktoberfest swag has just arrived! Thanks @digitalocean @github pic.twitter.com/nLrMdipoJ1— shotat (@shotat_jp) 2016年12月7日 Hackto…

サイバーマンデーのセールでPS4買って優勝した

サイバーマンデーが最高だった話です。技術ブログ要素ゼロ。 普通にPS4買う場合: 30,895円 PlayStation 4 ジェット・ブラック 500GB(CUH-2000AB01)出版社/メーカー: ソニー・インタラクティブエンタテインメント発売日: 2016/09/15メディア: Video Gameこの…

Docker と node_modules と Volume Trick

Rails & Node.jsの構成で Docker環境を作ろうとしたらハマったのでメモ 現象 npm installを実行する Dockerfileを記述 ... RUN mkdir /app WORKDIR /app # npm install ADD package.json /app/package.json RUN npm install ... カレントディレクトリを /app…

Redisの有効期限系コマンド

redis-cliから叩いた場合のコマンドです EXPIRE(key, seconds) 有効期限の設定(相対時間) # key-valueを適当に設定 > SET ice "I'm melting..." OK # 有効期限を10秒にする > EXPIRE ice 10 (Integer) 1 > EXISTS ice (Integer) 1 # 10秒以内 > EXISTS ice…

VimConf 2016 に参加してきました

Vim

vimconf.vim-jp.org VimConf 2016 に参加してきました。会場はmixiさんで、コーヒーが無限に飲めて最高でした。 vim-jpの中の人や普段お世話になっているプラグインの開発者の方と話せて楽しかったです。 印象に残った発表と感想書きます。全部は書けないの…

gemを作ってrubygems.orgでリリースする

作ったもの github.com slash-force というかっこいい名前のgemを書きました。 Railsで特定のURLへとアクセスしたときに末尾にスラッシュを付けて強制的にリダイレクトさせるだけのプラグインです。 こんな感じでgemをリリースできました。 slash_force | Ru…

Eslintでunderscoreから始まる変数をチェックさせない設定にする

defined but never used って怒られるやつです。 error '_jqXHR' is defined but never used no-unused-vars _xxx みたいにアンダースコアから始まる変数は未使用でもokな設定にしたい、と思い調べました。 以下のリンクが該当箇所でした。 eslint.org .esli…

Rubyのobject_idからobjectを取得する

備忘録です [1] pry(main)> hoge = "foo" => "foo" [2] pry(main)> hoge.object_id => 70163083352460 [3] pry(main)> ObjectSpace._id2ref(70163083352460) => "foo" yeah!

Elixir ApplicationをGAEにデプロイ

GAEの説明を見る限り、メジャー言語しか対応してなさそうに見えたのですが、 Docker (Custom Runtimes) を選択すれば何でも動かせるそうです。 EBSもGAEもDockerさえ使えばどんなRuntimeでも使える => Elixirも動かせる!!! ということでGAEにElixir製のbo…

Elixir製Hubot風BotフレームワークのHedwigでSlack Botを作る

Hubotに飽きたので、HedwigというElixir製のFWでbotを作ってみようと思い立ちました。 Hedwig github.com Adapter baseのHubotっぽいBotフレームワークです。Elixirです。 公式のAdapterでSlack対応してます。 Setup mixでprojectを適当に作ります。supervis…

Concurrent Rubyで並行処理プログラミング

Rubyで並行処理を書きたかったのですが、自前でスレッドセーフなプログラムを書ける気がしないのでgemを探して来ました。 Concurrent Ruby github.com Be an 'unopinionated' toolbox that provides useful utilities without debating which is better or w…

NeovimでGolangを書く環境を整える

Dockerの勉強を始めたのでGolangもついでにやります。 スターティングGo言語作者: 松尾愛賀出版社/メーカー: 翔泳社発売日: 2016/05/11メディア: Kindle版この商品を含むブログを見る GoのInstall & 環境設定 $ brew install go GOPATHを設定しないといけな…

npm installで依存関係エラーが出る場合の対処

eslint周りで色々installしていたら依存関係でエラーを吐いてどうにもならなくなりました。 結論としては、npmのversionを最新化したら直りました。 npm installが失敗した時に試したい3つのコマンド - Qiita にもありましたが、以下のコマンドで最新化でき…

Gemfileとpackage.jsonでみるバージョン指定の読み方

Semantic Versioning 2.0.0 セマンティック・バージョニング(SemVer)によると バージョンナンバーは、メジャー.マイナー.パッチとし、バージョンを上げるには、 APIの変更に互換性のない場合はメジャーバージョンを、 後方互換性があり機能性を追加した場…

プログラマのためのDocker教科書を読み始めた

Dockerを使いこなせないと会社で人権がないので プログラマのためのDocker教科書を読み始めました。 プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化作者: WINGSプロジェクト阿佐志保出版社/メーカー: 翔泳社発売日: 2015…

npm scriptsを並列実行する

npm-run-all を使う github.com 使い方 npm i --save-dev npm-run-all でinstallします。 直列・並列実行コマンドの run-s, run-p が使えるようになります。 package.jsonのscripts部を以下のように設定してみます。 "scripts": { "dev": "run-p stub watch"…

Node.jsのversionをプロジェクト毎に設定する

Rubyの場合は .ruby-version にバージョン指定すればプロジェクト毎にversion指定できるのですが、 Node.jsの場合どうすればいいのか分からなかったので備忘録。 大きく分けて2パターンありました。 avn を使う .node-version でversion指定すればディレクト…

Ruby Style Guide読んだ && 一部抜粋

github.com 普段はRubocopのおかげで概ねStyle準拠できているはず、と思ってたのですが、 改めてStyle Guideを読むと知見がたくさんありました。 以下、個人的に把握できてなかった箇所を抜粋しつつ、今後意識していきます。 andとorの使用は禁止 使うべき理…

Effective Ruby 第六章まとめ テスティング

Effective Ruby 第五章 メタプログラミング まとめ その2 - Memento memo. の続き。 Effective Rubyのテスティング章をまとめていきます。 MiniTestはRuby標準のテスティングライブラリで、 主要なコンポーネントは以下の3つです。 ユニットテスト スペック…

Elixir & Phoenix のLT資料

先日、Elixir & Phoenix布教をすべく、社内でLTをしてきました。社内LT会自体は毎週やっているので、個人的に最低月1回は発表するよう心がけています。 内容は超薄いのですが、とりあえず公開することが大事だと思うので資料upしました。SpeakerDeckデビュー…

GitHubのリポジトリを直接指定してgemをinstallする

自作gemとかOSSのgemのリポジトリとかブランチとかを指定して使いたい場合の解決策です。 リポジトリの .gemspec ファイル等は設定済み前提で。 Gemfile使う方法とGemfile使わない方法の2通りあります。 Gemfileを使う場合 普通に指定できます。以下のように…

Effective Ruby 第五章 メタプログラミング まとめ その2

Effective Ruby 第五章 メタプログラミング まとめ その1 - Memento memo. の続きです。 モンキーパッチの代わりとなるものを検討する モンキーパッチとは モンキーパッチとは、実行時にコアクラスを拡張したり挙動を書き換える(パッチを当てる)こと。Acti…

denite.nvimとag使い始めた

かの有名な暗黒美夢王ことShougoさん開発中のdenite.nvimを使い始めました。いつもありがとうございます。超速くていい感じです。 install方法とか詳細な説明は以下のエントリが詳しいので割愛。 qiita.com とりあえずdeniteの設定自体は :h denite に載って…

Ruby2.3系での"Missing frozen string literal comment"への対処

Missing frozen string literal comment Ruby2.3系でRubocopを実行したら Missing frozen string literal comment と怒られました。 ファイルの先頭に以下のmagic commentが必要とのこと。 # frozen_string_literal: true これによってRubyのStringリテラル…

Git Large File Storage (LFS)を使う

Git

会社のSlackでGit Large File Storage (LFS)なるものを知ったので適当に使ってみました。 git-lfs.github.com Git LFSとは? Gitの拡張です。 画像とか音声みたいなLarge File(BLOB)をGitで管理しようとめちゃくちゃ重くなってきます。 直接BLOBをいじらず…

Effective Ruby 第五章 メタプログラミング まとめ その1

Effective Ruby 第四章 例外 まとめ - Memento memo. の続きです。 第五章 メタプログラミングについての前半部です。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (4件) を見る モ…

翔泳社の技術書(電子版)が40%オフセールだったので色々買った

技術書は分厚くて持ち歩くのがしんどいので最近は全部電子版を買って読んでます。 翔泳社の技術書はKindle対応してるので最高です。 翔泳社の技術書のセールが始まったらしいので色々買いました。 個人的にメインはDDD本です。 www.amazon.co.jp 買った / す…

VegetaでPhoenixとRailsの負荷テスト

以前会社の同期とご飯を食べていた時、 HTTP負荷テストツールのVegetaというものを紹介してもらったので試してみました。 github.com GitHubのプロジェクトページを開くとイカしたサイヤ人の王子が目に飛び込んできます。 Golang製ツールで、CLIで比較的簡単…

PhoenixのChannelを使う

www.phoenixframework.org Phoenixのガイドを眺めていて一番気になったのがChannelだったので、上記の公式ガイドに沿ってChannelを使ってみました。結構端折っています。 プログラミングElixir作者: Dave Thomas,笹田耕一,鳥井雪出版社/メーカー: オーム社発…

Effective Ruby 第四章 例外 まとめ

Effective Ruby 第三章 コレクション まとめ - Memento memo. の続きです。 今回はRubyの例外についてです。 例外は、以下の2つの異なる言語機能をまとめたものだと考えられます。 エラーの説明 制御フロー raiseにはただの文字列ではなくカスタム例外を渡す…

The actor model in 10 minutes [日本語訳]

10分でわかるアクターモデルです。 Erlang, Elixir, Scalaあたりを触るときに理解すべき内容です。 元ネタ: www.brianstorti.com Introduction 我々のCPUは速くなりません。 CPUには今やたくさんのコアを積んでいますが、 全てのハードウェア資源を利用した…

PhoenixのTemplate Engineを Slime (Slim) にする

Slime PhoenixのデフォルトのTemplate Engineは erbライクなeexです。 RailsだとerbよりSlimを使うケースも多いと思いますが、 PhoenixでもSlimライクなTemplate Engineが存在しました。 その名もSlimeです。ロゴがスライムっぽいですね。 github.com 多分発…

Effective Ruby 第三章 コレクション まとめ

Effective Ruby 第二章まとめ その2 - Memento memo. の続きです。 第三章はコレクションです。コレクションをうまく扱えるかどうかはコードの可読性・保守性にダイレクトに効いてくる気がするので、言語ごとのクセを把握しておきたいです。 Effective Ruby…

Phoenix環境構築(Install・Server起動・ページの追加まで)

ElixirのWebフレームワーク Phoenixの入門 環境構築についてです。 公式Docの Up And Running · Phoenix Adding Pages · Phoenix に載っているものを簡略化 & 日本語化したものです。 Elixir Elixirについての詳しい概要はこちらの記事が参考になります。 qi…

Effective Ruby 第二章 クラス、オブジェクト、モジュール まとめ その2

Effective Ruby 第二章まとめ その1 - Memento memo. の続きです。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (3件) を見る 構造化データにはHashではなくStructを使う 新しいク…

Effective Ruby 第二章 クラス、オブジェクト、モジュール まとめ その1

いつぞやの続きです。 shotat.hateblo.jp Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (3件) を見る 一記事一章にまとめようとしたところ二章目から量が多くて詰んだので適当なとこ…

OSSへContributionする際のPull Request出す手順とか

最近PhoenixとかElixir面白そうだなーと思って勉強しているんですが、 PhoenixのCONTRIBUTING.md の説明がOSS Contribution guideとして分かりやすかったのでメモ。 github.com 詳細は、上記リンク読むとわかります。コマンドとかも載ってます。 要点をまと…

zsh promptをpureに設定した

Zsh

zshの見た目とか補完とかhighlightの設定とかもろもろ変えようと思ってたら pure がめっちゃしっくりきました。 github.com Most prompts are cluttered, ugly and slow. I wanted something visually pleasing that stayed out of my way. らしいです。 zsh…

Effective Ruby 第一章まとめ

最近仕事でJava、趣味でElixirを書いてるのですが、来週くらいから仕事でRuby書くっぽいのでRubyの復習を始めつつブログのネタにします。というわけでEffective Rubyを読み始めました。初見です。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社…

Vimのtabは使わなくて良いかも

Vim

Vimにはbuffer, window, tabという概念があります。 このへんの詳細は以下のエントリ等にまとまっていました。 cohama.hateblo.jp :tabnewコマンドでtabを生成することができます。が、僕は全く使いません。 複数ファイル編集時はWindow分割してbufferを適当…

Vim再入門 Operator, Motion, TextObjectの理解とドットコマンド

Vim

Vimを使う上で "."コマンドが重要です。 "."コマンドは直前の操作の繰り返しを行うコマンドです。 例えばdawコマンドはカーソル下の単語を削除する操作ですが、ここで"."キーを押下すると再び他の単語を削除することができます。 1単語を削除する、等の定形…

BEAM(Erlang VM)とは何の略語なのか

JavaのVMと言えばJVM、すなわち"Java Virtual Machine"です。 Erlang VMの主流なものにBEAMというものがあるのですが、何かのアクロニムなのでしょうか。 Wikipediaや日本語記事は見つかりませんでしたが、StackOverFlowで回答されてました。 stackoverflow.…