Subscribed unsubscribe Subscribe Subscribe

typesafe configの設定パスをscalaのコードで表現する

ScalaMatsuriの感想ブログです ScalaMatsuriでscala.metaの話を2つ聞いて面白そうと思ったので私もやってみました。 typesafe configをscala.metaとscalameta/paradiseのmacro annotationで設定パスを文字列ではなくscalaのコードで表現できるようにしたやつ…

Scalaで#map系メソッドで副作用を起こすとバグるやつ

遅延評価と副作用は相性悪いよねって話です。 Scalaでforeachではなくmapの中で副作用を起こすとたまに評価タイミングによるわかりづらいバグに遭遇することがあります。 次のコードはMap#mapValuesの中でscalikejdbcで書き込みを行おうとするコードです。 …

for式の中のEitherでifを使いたい

scala 2.12ではJava8対応の変更が多く、派手な変更は多くはありませんでした。そんな中でEitherがright-biasedになったのは割とキャッチーなのではないでしょうか。Eitherには今までflatMapなどのメソッドがなかったので、for式の中で使うときなど、いったん…

Scala関西 Summit 2016に参加しました

sbt再入門ということで、sbtの主にKeyとScopeについてデモを中心に発表させていただきました。 デモを中心にするのは自分としては挑戦のつもりだったけれど、やっぱり難しくて心残りなところもありました。 とはいえ発表中に実際にsbtを触りつつ話を聞いてく…

giter8 & sbt new

最近はactivator newを使っている人が多いんだと思いますが、5年くらい前?はgiter8というツールが使われていました。 giter8は一時期Typesafe Stackにも含まれるほどだったんですが、なぜか見捨てられてしまいます。 その後皆さんご存知の通りactivator new…

7つのクラスローダー 7つの世界

Playを触っていると謎のClassNotFoundExceptionが発生することがあります。 もしかしてそれはDEVモードだけで起きてはいないでしょうか? 先日、開発中のPlayアプリケーションで、ある依存ライブラリからClassNotFoundExceptionが発生するという現象にあたり…

インターフェースで副作用を分離する

techlife.cookpad.com この記事、わざわざgemを作ったりしていて、まあそのgem自体は便利そうだからいいと思うんですが、時刻以外の場合はどういうアプローチをしてるんでしょうか。そのたびにgemを作るんでしょうか。 そんなに悩まなくとも、オブジェクト指…

自宅仕事環境(2016/05)

PC MacBook Pro (Early 2013) 主にScalaをコンパイルするのに使用する。 キーボード PFU Happy Hacking Keyboard Professional2 Type-S 白/無刻印(英語配列)出版社/メーカー: PFUメディア: エレクトロニクス クリック: 21回この商品を含むブログ (3件) を…

ScalaMatsuri2016に行ってきた

「Steps to master the Play source code」というタイトルで発表させていただきました。 Play個別のセッションがなかったことと、どうせ関数型っぽいのが多いんだろうなと思って申し込みました。Playの初級者向けのPlayのソースコードの全体像とその変遷につ…

PlayのWebCommandsの使い方

Playのドキュメントを見るときに、公式サイトに行かなくても手元で http://localhost:9000/@documentation というURLにアクセスすればドキュメントサイトが見えるということはご存知でしょうか? これにはWebCommandsという仕組みで動いていて、ドキュメント…

アプリケーションに合ったExecutionContextを使う

scalaではFutureなどの裏側ではExecutionContextが動いています。ということはExecutionContextの使い方がいまいちだとFuture周りで問題が起きることになります。 よく起きる問題の1つとして、標準のExecutionContextがいまいちだった、というのがあると思い…

DIについてあれこれ

Dependency Injectionとはコンポーネント間の依存関係をプログラムのソースコードから排除し、外部の設定ファイルなどで注入できるようにするソフトウェアパターンである ってwikipedia先生が言ってました。 Scalaにおける最適なDependency Injectionの方法…

scala用のfixtureライブラリ作った

昔作ったscalikejdbcのfixtureプラグイン、これ別にPlayのプラグインにすることはなかったなーとちょっと思ってたんですが、最近実際困りはじめたので、Playに依存しないfixtureライブラリが欲しくなったので作りました。 https://github.com/tototoshi/scal…

Playに依存しないコードを書く

フレームワークの便利さとコードの柔軟性とのバランスの話。 PlayにはいわゆるMVC的な機能の他にいろいろと便利っぽいモジュールが付いていますが、 実際そいつらを使っていると依存関係や柔軟性の面でちょくちょく困ることがあります。 最近何度か困ったの…

Play2.4のプラグインシステムにある欠陥について

私の理解が正しければ、Play2.4のプラグインシステムにはプラグインの起動順が制御できないという大きな欠陥があります。Play2.3以前はplay.pluginsファイルに優先度を記述するというイケてない感が漂うやり方ではありましたが、問題なく制御することができ…

Scala関西 Summit 2015 でflyway-playについて話しました

先週大阪行ってきました。 内容としては、flyway-play、というかFlywayの紹介っぽくなってScala成分薄めになりました。

ビアバッシュメモ

ピザの量 人数÷3枚 LまたはXL(3000-3500円くらい) クアトロ3種類 飲み物 カクヤス ビール、人数×1.5本 (350ml缶) お茶、お茶、炭酸、非炭酸 当日注文だと冷えてないので前日までに注文できると良い。 お金 最初に集める。 1人1000円だと足りない。1500円…

Typesafe が社名変えたがってる話

mixi 社はいつモンスターストライク社に変わるんだろうという冗談を言っていたら、なんと Typesaefe 社が社名を変えたいと言い始めました。最初エイプリルフール的なものかと思いましたが、冗談じゃないようです。冗談じゃないよ。 May 18, 2015 | What’s in…

WEB+DB Press 86 に PHP での画像処理についての記事を書きました

PHP

4/23 発売の WEB+DB Press Vol.86 に PHP での画像処理についての記事を書きました。 画像をこねくり回すという内容ではなく、Web アプリで画像を扱うときに気にするべきことを広く浅くカバーしようという内容です。基本的な Imagick (imagemagick) の使い方…

Slick のコードを生成する sbt プラグインを作りました

Slick コードを生成のイブラリがあり、公式のほうにいくつか使い方のサンプルがありますが、毎回コピペするのもなあと思って sbt プラグインにしました。今のところ Slick 2.1.0 に依存しています。Slick 3.0.0 が出たらそれ用のバージョンも出そうと思いま…

退職しました

ピクシブを退職しました。 主に健康上の理由です。 (在宅勤務もさせてもらって、おかげさまで最近やっとよくなってはきましたが。) 退職はしましたが、4月からはフリーランスっぽい感じで仕事を続けます。 ピクシブに転職したのは、なんか楽しそうと思った…

個人/社内 Maven Repository を作る

オープンソースの Scala ライブラリは sonatype を経由して Maven Central にデプロイするのが定番となっています。Maven Central のアカウントを持っていない、とかクローズドにしておきたい、などの理由から自前で Maven リポジトリを持ちたくなることがあ…

Flyway プラグインを Play 2.4 対応しました

flyway/flyway-play Play 2.1-2.3 向けにサードパーティプラグインとして play-flyway を開発してきましたが、少し前に Flyway の GitHub Organization に加えてもらい、めでたく公式モジュールとなりました。groupId も com.github.tototoshi から org.flyw…

Ansible を使ってみた感想

ここ数日 Ansible を触ってみてた。 MoinMoin Wiki のセットアップとか試しにやってみた。 tototoshi/ansible-playbook-moinmoin · GitHub Chef の代替というよりも Chef + Capistrano/Fabric という感じ。 インストールが楽。設定ファイルもほとんどなし。 …

IntelliJ IDEA を無料で使う方法

IntelliJ IDEA は Community Edition であれば無料で使えますが、 Ultimate Edition になると大体初期2万+維持費1万/年くらいの課金をする必要があります。 機能比較 これをどう見るかは人によると思いますが、自分は Scala はほとんど Emacs で書いてし…

build.sbt の変更を検知する sbt プラグインを作りました

git でブランチを切り替えたらうまくビルドできなくなって困ったけど、build.sbt が変わっているのに sbt の reload をするのを忘れていただけだった、ということがたまに起こります。これを防ぐために、.sbt や project/.scala が変更されていたら警告を表…

Flyway は複数人での開発に向かないという誤解について

“データベースマイグレーションについて考えないといけないことや諦めないといけないことが結構あるでよ” http://t.co/BYna6w5luj 期待して記事見たが、複数人開発時におけるバージョン番号の衝突について説明がなかったのが残念。紙面が限られてるししゃあ…

play-json で snake_case な json を camelCase な case class にマッピングする

play-json を使えば json を case class にマッピングすることは簡単にできますが、json のキーがそのまま case class のフィールドに対応するため、snake_case な json API を case class にマッピングするためには、case class のフィールドも snake_case …

PHP のトレイトに気をつける

PHP

普段 Scala でトレイトを使いまくってるけれども PHP にも 5.4 からトレイトが入った。 trait の良いところは多重継承のできない言語で多重継承っぽいことができることだ。 use, use とつけていけば、いくらでも追加できる。DRY に書けてよいことだ。 対して…

漏水工事した

9月、入院エンジョイしてたら漏水が発覚して引っ張りだされました。 自宅が漏水してるらしく一時外出…— Toshiyuki Takahashi (@tototoshi) September 9, 2014 うち(3階)からの漏水で2階の部屋の天井が落ち、1階の駐車場まで雨漏りしていました。 自分だけで…

Play 2.4 の Module の作り方と Plugin からの移行について

Play 2.4 では今までの Plugin の仕組みが deprecated となり、 新たに Module という仕組みが導入されています。 Module はこれまた新たに導入された Runtime Dependency Injection の上に乗っかっています。 Play では Guice をデフォルトの DI 実装として…

sbt でファイル変更をフックしてコンソールをクリアしつつコンパイルする

Scala Advent Calendar 2014 の 12 日目です。 sbt で ~compile でファイル変更をフックしてコンパイルは皆さんよくやってると思いますが、 ~ ;eval "\u001B[2J\u001B[0\u003B0H" ;compile とにするとコンソールをクリアしつつコンパイル続行するのでちょっ…

Heroku で JDK のバージョンを指定する

Heroku でサポートされている JDK は 1.6, 1.7, 1.8 です。 今ではデフォルトは 1.8 ですが、古いアプリではどうやらそのまま 1.6 が使われているようです。 JDK のバージョンを指定したいときには system.properties というファイルを使います。 java.runti…

scala-csv 1.1.0 をリリースしました

https://github.com/tototoshi/scala-csv scala-csv 1.0.0 ではパーサーをパーサーコンビネータで実装していましたが、巨大なファイルをパースしたときにパフォーマンスで問題があったので、パーサーコンビネータをやめて var をふんだんに使った実装に書き…

Play で Scalate を使う

play-scalate っていう名前のプラグインはいろんな人が書き散らかしてて github 検索するとボロボロ出てくるんですが、ついうっかり仲間に加わってしまいました。 https://github.com/tototoshi/play-scalate build.sbt に設定すれば libraryDependencies ++…

RFC 的には text/* のデフォルトエンコーディングは ISO-8859-1

以下のような、日本語のデータを text/csv という Content-Type で返す Play アプリケーションで、 GET /test controllers.Application.test package controllers import play.api._ import play.api.mvc._ import play.api.libs.iteratee.Enumerator import…

テンプレートエンジン Night で Scala のテンプレートエンジンの紹介をしました

テンプレートエンジンNight on Zusaar テンプレートエンジン Night という不穏なイベントで Twirl を中心に Scala のテンプレートエンジンの紹介をしました。 Scala を知らない or そんなにやってない人向けの発表です。 スライドにはあまり内容詰め込んでな…

Scala 2.11.3 が生まれる前に死んでしまった話

↓に関して、https://gitter.im/scalajp/public で盛り上がってた内容をまとめました。 Scala2.11.3がでたけど絶対使っちゃダメです - scalaとか・・・ なぜこんなことになってしまうのだろう(未調査) https://github.com/skinny-framework/skinny-framewor…

Slick でテーブル定義のコードを自動生成する

Slick 2系では experimental 扱いではありますが、コード生成の機能が含まれていて、 めんどうなテーブル定義のコードを自動生成することができます。ちょっとやってみましょう。 テスト用のテーブル、こんな感じです。 slickcodegenexample=# CREATE TABLE …

ScalaJP の Gitter がオープンしました

ScalaJP のメーリングリストでも流れていますが、 Gitter という Github と連携して使えるチャットサービスを利用して、Scala の日本語チャットルームができました。(kawachi さんが作ったのかな?)すでに 60 人くらい参加しているようです。 https://gitter.…

ScalaMatsuri の運営に参加した感想

ScalaMatsuri の運営やってみての感想を書いておきます。そろそろ振り返りのミーティングもあるし。 ScalaMatsuri は体調のせいでほぼ参加できなかったので感想ありません(悲)。 ScalaMatsuri の意義について 今年 400 人も集まってしまったのは、オダスキー…

退院しました

退院ヤッター! 普段あまり医療のお世話にならずニュースとかだけで医療に接していると、すごいなあ最近の医療は進歩しているなあと思うけれど、実際入院して見るとそうでもないですね。腸の状態とか内視鏡入れなくてもわかるようになってて欲しいとか思うけ…

入院しています

9/1から入院しています。 各方面ご迷惑をおかけしております。申し訳ありません。 ゴールデンウィークのころからお腹の調子が悪く、腹痛と下痢、血便で困っていました。近所の病院(代々木病院)に通っていたのですが、なかなか改善せず、代々木病院も全然話を…

YAPC 2日目に行ってきました

YAPC初めて行きました。 1日目も行きたかったんだけど、諸事情(2つ前のエントリ参照)により来週から入院することになってしまい、ドタバタしたため行けませんでした。2日目も午後から参加です。PHP のやつ聞きたかったけど残念。 一番良かったのは Github の…

「メンテナンス大変なのでサービス閉じたいです」

Web サービスの会社にはイケイケなサービスの陰に隠れて、かつてイケイケだったけど今はイケテナイサービス、とか、ぶっちゃけ最初っからあんまりやる気なかった☆サービス、これどこで拾ってきちゃったのサービス、などなど、惰性で続いちゃってるようなサー…

WEB+DB Press 82 に PHP の記事を書きました

PHP

WEB+DB PRESS Vol.82作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河…

Feedly と Github timeline を twitter に流すようにした

Feedly を Twitter に流す 昔は Google Reader があったころは RSS をチェックしていたんだけれど、Google Reader が終了して Feedly を使うようになってからは見ることがほとんどなくなった。別に Feedly が気に入らないのが理由ではなく、その頃にはもう T…

Python/Flask と Backbone.js で Markdown エディタを作った

Atom はまだいまいちだし、Sublime Text は使ってると金を要求してくるし、emacs はそろそろ引退かな。Markdown 書くのに Mou とかは便利だけど、長い文章を書いてるとだんだんもっさりしてくる。と、普段使いのテキストエディタをどれにすればいいかここの…

Scala.js が sbt プロジェクト以外でも使えるようになっていた

Scala.js 0.5.0 では standalone 版が配布されるようになりました。 http://www.scala-js.org/news/2014/06/13/announcing-scalajs-0.5.0/ これで sbt プロジェクトでなくても Scala.js が使えるようになりました。 以下の URL で配布されています。 http://…

PHP の file_get_contents は get どころか post も put も delete も upload もできる

PHP

stream_context_create と組み合わせて使います。 手元でてきとーに動かしてた REST API とかで試してます。 get 普通ですね。 array( 'method'=> 'POST', 'header'=> 'Content-type: application/json; ch…