Code Monkey home page Code Monkey logo

hatena-intern-exercise2015's Introduction

🐦 課題提出 (@haya14busa) 🐦

📎 課題を行った自分のGitHubのURL 📎

🎉 課題に関して工夫点 🎉

Scala

  • invalidなLTSVをパースする際に最初のエラーで止まらずに,scalazValidation を使用して全てのエラーを収集して返すようにした

JavaScript

  • 副作用のある関数(DOMに書き出すとか)と純粋な関数を分けて実装するよう意識した
  • 課題4 の検索クエリをLTSVのタブをスペースにしたバージョン(LSSV: Label Space Separeted Value) 形式で柔軟に検索できるようにした (user:frank status:200 など)
    • GmailとかGitHubの検索みたいな感じ

🙇 工夫したかったけど他のことしてて時間が足りず学業を優先してできなかった点 🙇

Scala

  • LTSVパーサ のパースメソッドの返り値型が今のところ scalaz の Validation 型か,エラーがあればthrowしちゃって返り値型はLogにしてあるが,ライブラリlikeに使うとすればscalazのValidation型で返すのは良くないハズなので標準のEither 型あたりに変更したい.
  • 現在のLTSVパーサは完全にLogクラスありきだけど,任意のcase classにマッピングしてパースできるようにしたい.
    • おそらく playframework の JSON からクラスにマッピングするときに使う Reads converters みたいなものを用意する必要がありそう
  • 可視化の課題が1つ実装しただけかつ創意工夫点がなさすぎる... 🙇
    • 工夫点があるとすれば Logクラスに依存しないグラフを作成するオブジェクトを別に作成した程度

JavaScript

  • LSSV形式のクエリだとスペースが使えない.よって req:GET /bookmark は使えないし, req:GET req:bookmark としても後ろのbookmarkで上書きしてしまう.
  • ECMAScript 2015 使いたかったけどtranspileして〜とかが既存のテストと合わせながらとかちょっと面倒そうでやめてしまった.
  • グローバル変数の汚染とかは今回の課題では気にせずにやった.

📅 課題にかかった大体の日数 📅

  • コミットログ的には4日程度
    • Scala: 3日+α
    • JavaScript: 1日

Hatena-Intern-Exercise

基本的な教材は Hatena::Textbook など

はじめに

※この項は全課題共通になります。はじめに目を通しておきましょう。

LTSV (Labeled Tab-separated Values) とはラベル付きのTSVフォーマットです。 LTSVの1レコードは、label:value という形式で表されたラベル付きの値がタブ文字区切りで並びます。

以下に LTSV の例を示します。

  • sample_data/ltsv.log
host:127.0.0.1	user:frank	epoch:1372694390	req:GET /apache_pb.gif HTTP/1.0	status:200	size:2326	referer:http://www.hatena.ne.jp/
host:127.0.0.1	user:john	epoch:1372794390	req:GET /apache_pb.gif HTTP/1.0	status:200	size:1234	referer:http://b.hatena.ne.jp/hotentry
host:127.0.0.1	user:-	epoch:1372894390	req:GET /apache_pb.gif HTTP/1.0	status:503	size:9999	referer:http://www.example.com/start.html
host:127.0.0.1	user:frank	epoch:1372694390	req:GET /apache_pb.gif HTTP/1.0	status:500	size:2326	referer:http://www.hatena.ne.jp/
host:127.0.0.1	user:frank	epoch:1372794395	req:GET /notfound.gif HTTP/1.0	status:404	size:100  referer:-

例えば、1レコード目の host の値は 127.0.0.1 であり、2レコード目の referer の値は http://b.hatena.ne.jp/hotentry になります。LTSV についてより詳しくは、以下を参照して下さい。

課題の提出方法について

課題の提出は、このリポジトリをForkしてそこにコミットしていってください。

課題はそれぞれ複数問あるので、問題ごとにコミットを分けてください(すべての回答を一つのコミットにまとめないようにお願いします)。コミットの粒度は1問1コミットでなくても、細かくコミットしていて構いません。

hatena-intern-exercise2015's People

Contributors

hakobe avatar haya14busa avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.