Keep on moving

あんまりまとまってないことを書きますよ

ConScriptについて誤解してた。

結論からいうと、ConScriptはリポジトリに置くか、publish-localしないと入りません。
ドキュメントはちゃんと読みましょうね >> とくに私orz

いろいろ

調子に乗ってhttpstatus Scala版でconscript対応版を書いてみたんだけど,githubに公開したのに
取得できないエラーが出た。

よくわかんなくて、下のようなことをつぶやいたら、

お二人の方に教えていただいた。


ありがとうございました。

余談

そもそもやりたかったのは、コマンドラインで簡単にScalaスクリプトを実行することだったんだけど
これも @-k さんにやり方を教わった、

ScalaスクリプトをWindowsのcmdファイルで実行する

Scalaスクリプトにcmdファイル(.bat)の記述を加えるだけで実行できる。
この書き方はman scalaでも出てくる

httpstatus コマンドで、HTTP のステータスコードをすばやくしらべる!(Scala版)

書いた。pull-requestお待ちしてます!

使い方

コード

Yet Another LTSV for Scalaを公開しました

@ さんのltsv4sをいじってて、もっとこんな機能が欲しいと思っていろいろ書きました。

リポジトリ

ライセンス

Apache 2.0
(オリジナルに準拠)

なんで既にあるのにLTSV用のライブラリなんて書いたの?

主に勉強用。あと Text::LTSVのライブラリドキュメント読んでて、欲しい機能を付け足したくなったため。

なにが違うの?

ダラダラ書くと

Text::LTSV の want_fields/ignore_fields欲しいなーと思った

want

      # Only want certain fields?
      my $p = Text::LTSV->new;
      $p->want_fields('hoge');
      $p->parse_line("hoge:foo\tbar:baz\n");

      # Vise versa
      my $p = Text::LTSV->new;
      $p->ignore_fields('hoge');
      $p->parse_line("hoge:foo\tbar:baz\n");

いちどMap[String, String]にしてから、いるやつ/いらないやつを削るよりも最初から
Mapに入れない方が無駄がないかなーと思ったため。
ltsv4sのScala-Parserに対して、手を入れる必要もあって結構つらかった。

parseエラーしたとき用にEither[,]で返すようにしたかった

何となく好みで。でも自分で使っててもEitherの扱いってめんどくさいので、
今後エラー時にexception返す/ 値はMap[]で返すって仕様に変えるかも。
毎回right.map(~~)って書くの結構キツい

感想

ltsv4sの実装がScala-persers使っててすげーキレイだなってのに感動したので
機能を追加してみたって感じです。
今後やりたいのはテストの追加/ ScalaChecke化などなどです。
あとは速度面の検証とかプロファイルとかを学んでみたいと思ってます。

ちなみに

まじめにお仕事に使いたいのであれば、ltsv4sとかltsv4jとかを使う方をお奨めします。

「すべての人に知っておいてほしい JavaScriptの基本原則」を読みました

「すべての人に知っておいてほしい JavaScriptの基本原則」のレビューをお手伝いしまして、
@ から献本をいただきましたので、書評をあげておきます。*1

著者の皆様、執筆/構成お疲れ様でした。ありがとうございます。

すべての人に知っておいてほしい JavaScriptの基本原則

すべての人に知っておいてほしい JavaScriptの基本原則


帯にも書かれているのですが「Webデザイナーが開発者と会話できるようになるための入門書」というのがコンセプトになっています。
扱っている内容は以下のようになっています。(開発者と会話できるようになるデザイナーのための入門書。『すべての人に知っておいてほしい JavaScriptの基本原則』発売|株式会社エムディエヌコーポレーションのニュースリリースから抜粋)

chapter 1 JavaScriptの基礎
chapter 2 組み込みオブジェクト
chapter 3 jQuery
chapter 4 スマートフォンでのJavaScript
chapter 5 高速化と効率化
chapter 6 挑戦! オブジェクト指向
chapter 7 Ajaxによる通信
chapter 8 HTML5と関連API

ここが気にいった

図の画像が多く、カラー化されている

文字だけで説明すると難しそうな印象になるのを和らげるために、図が豊富に使われています。
2-08でのイベントハンドラの実行順序の話題とか5-02スコープチェーンのような初心者にはわかりづらいところ
がきちんと図辞されて説明されてるのもかなりポイントが高いと思いました。

文法の話題から、HTML5など最新の話題もサポートされている

本書は200ページくらいのないようなのですが、基本的な文法の紹介、JSを使う上で必須のAjaxの説明、jQueryの使い方などの話題から
スマートフォンHTML5のような最新の話題を広く扱われています。
索引の用語を押さえておくことで、情報収集のとっかかりになるのもよく考えられています。

さらにJavaScriptの先の話を知りたくなったら

とにかくコードを書いてみるのがいいんじゃないでしょうかね。本書でも紹介されてるhttp://jsdo.it/http://jsfiddle.net/を使って
公開されてるものをforksしてJSのコードを書き換えながら遊んでみるのがいいと思います。

もっとアプリケーションを書いてみたくなったらJSの中級者向けの本を読んでみるといいと思います。
JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技:書籍案内|技術評論社とかとか*2

最後に

読んでて思ったのですが、初心者向けの本って題材の選び方/説明とか難しいですね。
著者のみなさま、mdnの編集者の皆様おつかれさまでした。

*1:人生初献本です。献本を受けるよりするほうが先でしたよっと。

*2:もちろんマーケティングです(キリっ

Akka IOでTCP Echo Server

@ さんの mumoshu: ScalaでMMOのサーバを書くための技術を読んで、
Akka IO
が楽しそうだなーと思ったので、ひとまずEcho Server書いてみた。

IO.Iterateeありとなしのやつを両方書いてみた。
コードの行数は大した事ないけど、どちらもマルチクライアントに対応してます。
フツーはforkしたり,Tread立ち上げたリする必要があるんですが、
Akka IOでは裏でAkka Actorが立ち上がって処理が行われます。
勘違いnon-blocking IOが行われる(詳しくはAkka IOのドキュメント参照)

コード

参考

ドキュメントによるとまだまだ開発中らしい


TODO

  • 速度比較必要。CPU利用率とか/使用メモリとか
  • UDP版って書けるの? java.nio.channels.SocketChannelなどを使用してるのでTCP専用

速度比較なんかは明日書く。