サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
tkawachi.github.io
今日 Functional Programming Principles in Scala で聞いた話が難しかったのでメモ。 Subtype 書き方として A <: B と書けば A は B の subtype であることを示す。 A >: B と書けば A は B の supertype、言い換えれば B は A の subtype であることを示す。 Subtype とは何か?というのは Liskov substitution principle というので定義されている。 「A <: B であれば、B型の値に対して出来ることならなんでもA型の値に対して出来る」ということらしい。 クラス階層で言えば、 A <: B というのは A が B の subclass または A == B ってこと。 Subtype の概念はクラス階層にとどまらない。 こんな型が定義されていたら、 class
Scala 2.10 から付いてくる Akka の Actor についてのお勉強メモ。 全然まとまっていないが晒しておく。 概念 Actor akka.actor.Actor。 メッセージを受けて処理をする人。 Mailbox Actorへのメッセージが溜まるところ。 Supervision Actor間の依存関係のこと。 Actorインスタンスはツリー構造になっている。 親が supervisor となる。 Actor が失敗したらどうするかは supervisor の actor が制御する。 親 actor が shutdown したら、その子どもは全て shutdown する。 タスクのまとまり毎にサブツリーを形成するようにすると良いらしい。 Actor Path Actorインスタンスにはツリー構造上の位置を表す文字列がついており、これを actor path と呼ぶ。 /, /
Scala での関数を自分なりに整理する。 ここでいう関数(以下、広義の関数)は 名前(引数) の形で適用できるものを指す。 途中で出てくるコードは Scala 2.11.4 の REPL で確認した。 間違いを見つけたら教えてほしい。 メソッドか、apply()をもつオブジェクトか 広義の関数には次の2つに大別される。 メソッド apply() メソッドをもつオブジェクト メソッドは def を使って定義される。 例えばこんな感じ。 scala> def f(i: Int): Int = i + 1 scala> f(10) res0: Int = 11 一方で apply() メソッドをもつオブジェクトはこんな感じ。 scala> object f { def apply(i: Int): Int = i + 1 } scala> f(10) res1: Int = 11 apply(
Scala の implicit のお勉強メモ。 なぜ implicit を使いたくなるか? コード片を見ただけではわからなくなるので、暗黙的な記述はあまり使わない方がいいんじゃないかと個人的に思うのだけど。 それでも便利な使い道があるから使われているみたい。 今自分が知っているところで次のパターンがあるみたい。 他の便利な使い方もきっとあるんじゃなかろうか。 既存のクラスを変更せずにメソッドを追加したいとき (pimp my library pattern)。 implicit な関数, implicit なクラスを使う。 型パラメータ情報を実行時に使いたいとき。implicit パラメータをつかう。 共通のインタフェースを持たないクラス群に、共通のインタフェースをあとづけするとき (CONCEPT pattern)。implicit パラメータをつかう。 pimp my library
というわけで Pythonによるデータ分析入門 の献本を頂きました。ありがとうございます。 大学時代の友人たちが翻訳しており、発売を楽しみにしていました。 早速レビューします。 著者 Wes McKinney さん Wes McKinney さん(@wesmckinn)は、AQRと いう投資運用会社でクオンツとして働いた経歴があり、その時に自分が欲しい ものを作り始めたのが pandas でした。今年、 DataPad というデータ可視化のサービスを行う会社 を San Francisco で立ち上げて CEO としてご活躍中です。 Blog では PyCon での pandas 関連の発表 資料を見ることができます。 紹介されているツール・ライブラリの役割分担 この本で紹介されている分析方法では、Pythonの各ライブラリ・ツールが以下 の役割を担っています。 pandas – 高速なデ
ScalaTestでMockitoを使うためのお勉強ノート Setup build.sbt に追加。 libraryDependencies ++= Seq( "org.scalatest" %% "scalatest" % "1.9.1" % "test", "org.mockito" % "mockito-core" % "1.9.5" % "test" ) テストで MockitoSugar を mixin し、以下の import 行を追加。 import org.mockito.Matchers._ import org.mockito.Mockito._ Mock作成 // ClassToMock のモックを作成 val m = mock[ClassToMock] 作ったモックはデフォルトで全メソッドコールに対して null を返す。 メソッドの戻り値としてnullではなくモッ
Principles of Reactive Programming 最初週の講義で言ってたこと。 忘れそうなのでメモ。 モナドであるためにはモナド則を満たさねばならない。 モナド則は以下の3つ。 Associativity: (m flatMap f) flatMap g == m flatMap (x => f(x) flatMap g) Left unit: unit(x) flatMap f == f(x) Right unit: m flatMap unit == m ちなみにすごいHaskell本でモナド則は次のように書かれている。 結合法則: (m >>= f) >>= g と m >>= (\x -> f x >>= g) が等価 左恒等性: return x >>= f と f x が等価 右恒等性: m >>= return と m が等価 flatMap を >>=
7 Patterns to Refactor Fat ActiveRecord Models という記事があり、読もう読もうと思いつつ1年くらい経ってしまった。 ようやく読んだので理解した内容を書いておく。 コード例は元記事のもの。 Rails で thin controller, fat model を心がけていると、model がマジで激太りしてヤバくなる。 実際に自分が仕事で書いている rails アプリも激太りしててヤバい。 この blog の筆者が作っている CodeClimate で C 判定をもらう程度には肥満体型になっている。 Mixinに抜き出さない! Model が太ってきた時に考えるのは ActiveSupport::Concern を使って感心事を抜き出して、Mixin にすることだと思う。 実際に手元のアプリでも models/concerns/ なんていうディレ
Play Framework 2.2.1 + Scala を触り始めて一週間くらいたった。 触りながら困った点(というか「疑問に思った」程度のものが多いが)をメモしていたので晒しておく。 雑なメモで無知を晒すのは恥ずかしいが、同じことではまる人がいるかもしれないもんね。 間違っているところがあったらコメントで教えてもらえると大変嬉しいです。 Play 関連 Q: app/assets/ と public/ の違いは? A: app/assets は CoffeeScript, LESS など preprocess するもの。public はしないもの。 Q: bindFromRequest すると Cannot find any HTTP Request here って出るよ。 A: Action の先頭に implicit request => を付ける。 Action { implic
Random forest といえば決定木を何本ももつアンサンブル学習で高い精度を持つ。 けど、どの説明変数が効いているかは説明が難しいものだと思いこんでいた。 ご近所のデータサイエンティストが R で効いている説明変数を出す方法を教えてくれたのでメモ。 ここでは R についてきている iris データセットを使う。 irisはアヤメの種類に関するデータセットで、1936年という大昔に フィッシャー が論文で使った歴史のあるデータセットでもある。 萼片 (sepal) の大きさ、花弁 (petal) の大きさ、アヤメの種類(species)が対になっている。 # iris dataset 読み込み > data("iris") > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7
AWS の IAM でユーザを作り、S3 bucket の特定の path 以下にのみアクセスを与えるということを設定したかったのですが、情報を見つけられず時間をつかってしまったので共有しておきます。 (参考: Giving a user permission to acceess just a folder within a bucket) 現状 AWS では bucket 数上限が 100, IAM ユーザ数制限が 5000 になっています。 利用者1人に 1 IAM ユーザを発行すると 5000 人で使えるわけですが、 bucket 毎に共有設定を行った場合は 100 共有までです。 同一 bucket 内で path を切り替えて共有した場合は bucket 数上限は関係なくなるので嬉しい、というわけです。 まず最初に S3 の IAM policy に関するAWS の公式ドキュメ
Microsoft 発の型付き JavaScript こと TypeScript が人気ですね。 typescript-rails という gem があったので、動くのか試してみました。 結論から言っておくと、他のスクリプトやライブラリを参照する TypeScript をコンパイルすることが今回はできませんでした。 $ rails new typescript-rails-test -T $ echo 'gem "typescript-rails"' >> Gemfile $ bundle $ bundle exec rails g controller test index create app/controllers/test_controller.rb route get "test/index" invoke erb create app/views/test create app
slash7 の Thomas Fuchs さんが自分たちのサービス Freckle で使っている有償サービス群を紹介している。 小さいチームでは自分のビジネスのコアに集中し、それ以外の部分に力を分散させるべからずというのはまさにその通り。 紹介されていたサービスは以下のとおり。 知らないサービスもいくつかあるなあ。 Travis Pro (ドキュメント) CI(継続的インテグレーション)サービス。 Open source 製品は Pro じゃない方が使える。 NewRelic 性能監視サービス。これは僕も使ってる。 Postmark メール配送サービス。メールを送るならマスト、らしい。メール受信もできるらしい。 同種のサービスは沢山ある。 例えばSendGrid。 Honeybadger Rails用のエラー管理ツール。 僕は Exceptional.io を使っている。 DocRapt
JavaScript(というか CoffeeScript)って90年代にブラウザ上で使われていた頃のイメージが拭えず、どうも気持ち悪くて逃げて回ってたんですが、事情があって最近は渋々書いてます。 JavaScripterの皆様にとっては何を今更だとは思いますが jQuery.Deferredを使って楽しい非同期生活を送る方法 を読んで Deferred 便利だな、と思ったので理解したところをメモしておきます。 利用シーン $.get() ってエラーハンドリングできないのか。使えないなー。と思ったとき 複数の AJAX リクエスト(などの非同期処理)を同時に開始して、全部終わったら何かしたいとき。 Deferred object キーになるのは Deferred object です。 状態 Deferred object は状態を持ちます。状態は3つのうちいずれか。 未解決(unresolv
Rails 3.2 のプロジェクトで作業していて JavaScript (CoffeeScript) でのローカライゼーションをしたくなりました。 調べてみたところ i18n-js が簡単につかえてよさそうな感じです。 まずは Gemfile に追加して bundle install 。 Gemfile
美的センスに乏しい私のようなプログラマにとってTwitter bootstrapが便利なことは言うまでもありませんが、知っている人には一見して「あ、Bootstrapだ」とわかるサイトになってしまいます。 これ自体は別に悪いことはないと思うのですが、他のサイトと見分けの付かないサイトになってしまうのは良くないですよね。 そこでbootstrap用のテーマを入れよう、となるわけです。 テーマを入れることで色・フォントなどが変更されるので、bootstrap臭が軽減されます。 bootstrap theme などで検索すると有償・無償を含めテーマを取り扱っているサイトが見つかると思いますが、今回は Bootswatch を twitter-bootstrap-rails と共に使う方法をメモします。 bootstrap-sass, sass-twitter-bootstrap, less-ra
仕事で Ruby を使うことになったので、家の Lion ちゃんにも ruby インストール しとこうと思ったらエラーになる。 rvm の version は 1.10.0。 $ rvm install 1.9.3 Installing Ruby from source to: /Users/kawachi/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)... ruby-1.9.3-p0 - #fetching ruby-1.9.3-p0 - #extracted to /Users/kawachi/.rvm/src/ruby-1.9.3-p0 (already extracted) Fetching yaml-0.1.4.tar.gz to /Users/kawachi/.rvm/arch
このページを最初にブックマークしてみませんか?
『tkawachi Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く