ましめも

技術系メモ

スノボで必要な用意

服装 レンタル可能な持ち物 - スキーウエア上下 - ニット帽、もしくはヘルメット - スノボ、スノボブーツ - ゴーグル (レンタルは曇りやすい) - スノボ用グローブ 持ち物 - 暖かい下着上下(ブレスサーモとか、なければヒートテックとか) - 長い靴下(スキー用…

ScalaのFutureについてのスライド書きました/つまらないシステム

つまらないシステム(1) - Scala の Future と ExecutionContext http://niconare.nicovideo.jp/watch/kn653 つまらないシステム(2) - Scala 書きやすすぎるFutureの罠 http://niconare.nicovideo.jp/watch/kn654 というスライドを公開しました。 Scala の Fu…

Scala の Future ってどうやって使うの?Promiseって何?

"Scala Future" で検索して出てくるFutureの解説は、Scala公式サイトのドキュメントを除いて大体こんな感じで紹介されてることが多い。 import scala.concurrent._ import ExecutionContext.Implicits.global Future { Thread.sleep(1000) println("hoge") }…

Future内でThread.sleepはするな

前回の記事(Scala ExecutionContextって何 / Futureはスレッド立ち上げじゃないよ - ましめも) で import scala.concurrent.ExecutionContext.Implicits.global とは何なのか、そもそも ExecutionContext とは ということについて解説した。おさらい Executi…

Scala ExecutionContextって何 / Futureはスレッド立ち上げじゃないよ

こういう人は、あとあと処理が詰まったり理解できない挙動が起きたりして困るので注意。 よくわからないけどコンパイル時に怒られるので import scala.concurrent.ExecutionContext.Implicits.global を書いている Future.apply は 「スレッドを立ち上げて非…

IntelliJ IDEAさんがplayの自動生成ファイルを認識してくれない

play2.3で自動生成するコード(ReverseRoutingやView)をIntelliJ IDEAが認識してくれないことがあるのでその解決方法をメモ認識されていない様子(Assets.atが赤い) 1) File -> Project Structure 2) Modulesを開き、targetの下を見る src_managed/main/contro…

お手軽Akka Schedulerとハマりポイント

定期実行処理を簡単に行えるAkka Schedulerというものがある。Akkaはplay framework上から簡単に使うことができるので、バッチ処理等を行うのにとても便利。 Schedulerには次のようなメソッドが定義されている*1。 def schedule(initialDelay: FiniteDuratio…

playのRequest#remoteAddressで取れるのはIPアドレスではない

ちゃんと細かくドキュメントを読まず http://www.playframework.com/documentation/2.1.0/HTTPServer の書くままに設定してると痛い目にあう 突然カンマ区切りのIPアドレスがやってくる FugaLogging.write(id, "投稿しました", request.remoteAddress) こん…

play frameworkでPUT, DELETE, PATCH等のリクエストを<form>から受け取る

RESTfulなパスにしたいとき、<form>タグでmethod=PUT, DELETE等を送れない問題*1にぶち当たることがある。 全部POSTで送ればいいのだが、どうしてもPUTやDELETEを使いたいRESTful脳な人のための解決方法。 解決方法 Railsはこの願いを叶えるために_methodというパ</form>…

play framework 2.2でテスト用configを設定する

FakeApplicationで指定のconfigを読み込ませたい場合(例えばconf/test.conf)は次のようにすれば読み込むことができる。 "テストケース" should { "ふがほげ" in { running(new FakeApplication with DevSettings { def devSettings: Map[String, String] = M…

JSONをHTML/CSSで表現する part2

再チャレンジしていいかんじにコピペできる版を作った。http://mashijp.github.io/jsonhtml/ コピペ例 { "a": "fuga", "b": [ 1, 2, true ] } 実現方法 見えない文字列を挿入することによりインデントを実現…。結局泥臭い方法になっちゃったなあ。

JSONをHTML/CSSで表現する

突然JSONをHTML/CSSでいい感じに表現したくなったのでやってみた。 例 key1 value1 key2

UnicornでUnix domain socketを使う場合は絶対パスで指定しなければならない

listen 8080 # TCP listen "tmp/unicorn.sock" # Unix Domain Socketのつもり と指定するとそんなListenの方法ないよー、と怒られた I, [2013-06-26T09:22:21.178723 #11457] INFO -- : listening on addr=0.0.0.0:8080 fd=8 F, [2013-06-26T09:22:21.179525…

Githubからやってくるhookの内容メモ

Githubのhook https://help.github.com/articles/post-receive-hooksタグが作成され、pushされたときは { "ref": "refs/tags/testtag", "after": "a011d5d157f769b39b99d2c10333e936eeab6bed", "before": "0000000000000000000000000000000000000000", "crea…

Railsのprotect_from_forgeryは必ずしも外部からのリクエストから守ってくれない

Railsお勉強中。ためしにログイン不要な掲示板作ってる https://github.com/mashijp/railsboard外部からトピック作成やレス作成をできないように対策することを「CSRF対策」っていうのかと思っていたが、ログイン前提じゃないとCSRFじゃないらしい…知らんか…

Amazon CloudFrontを使ってみた

Amazon CloudFrontってなに http://aws.amazon.com/jp/cloudfront/ (語弊がありそうだけど)簡単に書くとキャッシュサーバ。 配信サーバ(Originと呼ばれる)のデータをキャッシュし、クライアントに効率的に配信する。日本やアメリカ、ヨーロッパなどにサーバ…

(自分用メモ) playのevolutionファイルの番号飛ばしはダメ

1.sql, 2.sql, 999.sqlというファイルを作っても、999.sqlは見てくれない(2.sqlまでしか実行してくれない) 連番になってないと実行しない。(1.sql, 2.sql, 3.sql...)ソース http://www.playframework.org/documentation/2.0.4/Evolutions (2.0.4だけど) http…

Play Framework 2.1のちょっとした新機能

実はPlay Framework 2.0.xのFormでは同じフィールド名で複数値を受け取ることができない。 <input type="checkbox" name="name" value="value1"> <input type="checkbox" name="name" value="value2"> <input type="checkbox" name="name" value="value3">例えば、上のようなフォームがあったとして、全てにチェックを入れても一つしか値は格納されない(多分name=value3しか入らない。もしかしたらvalue1かも)。正確に…

Playに対応!IntelliJ IDEA 12 Ultimate

IntelliJ IDEA 12 Ultimateをマヤ文明特価に乗せられてたくさん買った。 View編集が便利 インデントが適切にされる 前までは変にインデントされたり(されなかったり)してイライラしてたのが解消された! 入力補完が出る ちゃんとテンプレート構文をわかっ…

git pullやpushでリモートのブランチ名を指定するのが面倒

新しいブランチを作成し、originにpushし共有するとき。 git checkout -b newbranch #新しいブランチを作成し、ついでにcheckout #... コードの修正など git push origin newbranch #リモートに反映 問題点 pushしたあとpullすると(他の人が同じブランチで…

gitコマンド解説

自分で使ってるgitコマンドは、 git status git clone git checkout git branch git pull --rebase git rebase --continue git push git flowコマンド しかほとんど使ってないことに気づいた。(つまり、いつもgit flowコマンドに頼ってる) gitコマンドを一…

はじめてのscala-redis

import com.redis.RedisClientPool import com.redis.serialization.Parse.Implicits._ import com.redis.serialization._ object RedisTest extends App{ val clients = new RedisClientPool("localhost", 6379) clients.withClient(client => { client.set…

ThreadLocalのお勉強

ThreadLocalというものの存在を知ったので、Play Frameworkがマルチスレッドで動いており、スレッドが使い回されていることを実感できるテストをしてみた。 object Application extends Controller { val threadLocal = new ThreadLocal[Int] { override pro…

javadoc-sbtを使う方法

https://github.com/bartschuller/javadoc-sbt を使う方法build.sbtのかわりに… lazy val scalastudy = Project( id = "scalastudy", base = file("."), settings = Project.defaultSettings ++ javadoc.JavadocPlugin.javadocSettings ++ Seq( name := "hog…

Playで指定したアクションにリンクを貼る方法

<a href="@routes.Application.index">hogehoge</a>と書く。簡単なのはいいんだけど、どこにこのことに関するドキュメントあるんだろう…