1. Scala + Finagle の魅力 日本 Scala ユーザーズグループ (ScalaJP) 株式会社ユビレジ ソフトウェアエンジニア 水島 宏太
![Scala + Finagleの魅力](https://cdn-ak-scissors.b.st-hatena.com/image/square/59ac2da7d2ceeace401fa00fcae41f906025aa84/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fscala-mizushima-120430011527-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
こんにちは、CA ProFit-Xという広告サービスを開発している塚本です。 今回も弊社で行っているAdTech Scala Meetupの様子をご紹介します。そろそろ何回目か分からなくなってきました。今回のテーマはFinagleでした。 Finagle (フィネーグル) はTwitter社が開発しているRPC用のフレームワークです。Webサービス/Webアプリケーション フレームワークと捉えても良いかもしれません。 我々アドテクスタジオではほとんど導入実績が無いため、語れる人は少ないのですが、幸いこの前のアドテクハックで利用された方がいらっしゃったため、発表していただけました!アドテクハックはアドテクスタジオで開催している社内向けハッカソンです。詳細は以下の記事を御覧ください。 アドテクハッカソン「第二回アドテクハック」を開催しました。 もろもろFINAGLE 一人目はhuyさんのもろも
2017-03-06 / scala しばらく考えている疑問がいくつかある: データや API はどう書かれるべきだろうか? そのデータは Java や Scala ではどう表現されるべきか? そのデータは JSON などのワイヤーフォーマットにどう変換することができるか? そのデータをどうやってバイナリ互換性を崩さずに進化させることができるか? case class の限界 Scala でデータ型を表現する慣用的な方法は sealed trait と case class だが、バイナリ互換性を保ったままフィールドを追加することができない。簡単な Greeting という case class を例に取って、それがどのようなクラスとコンパニオンオブジェクトに展開されるか考察してみよう: package com.example class Greeting(name: String) {
パターンマッチは便利すぎてこれを覚えてしまうと他の言語でも欲しくてたまらなくなりますね。 Scalaのパターンマッチは、実はユーザーが独自のパターンを定義することが可能になっています。 extractor(抽出子)によるパターンの拡張 簡単な例を紹介します。java.util.Date型のオブジェクトを年月日に分解してパターンマッチさせたい、とします。こんな利用イメージです。 scala> new Date match { | case DateOf( y,m,d ) => println( "%d年%02d月%02d日" format( y,m,d ) ) | case _ => | } 2010年07月09日 "case DateOf( y,m,d) => ..."の部分で、Date型を年月日に分解しているわけです。ふつーにやろうとすると、DateOfというケースクラスを作ってimpl
2016年1月5日現在において、JSONを受け取り、返却するWeb APIを書くときに、人が作った規格に乗って楽をしようぜと考えた。 その過程で調べた、JSON Schemaについてメモ書き。間違ってたらツッコミよろ。 概要 JSONの構造を記述する規格。構造の記述そのものもJSONで書かれる。 Draft v4現在では、JSON Schemaは以下の3つの規格の総体を指す。 JSON Schema Core JSON Schema Validation JSON Hyper-Schema そもそも提案された初期のJSON Schemaは、JSON Schema Core+JSON Schema Validationとほぼ同じ領域をカバーしていた。整理・発展の上3仕様に分割された。よって、JSON Schema Core+JSON Schema Validationにあたるものを単にJSO
5. • その暗号技術がどのぐらい安全かを表す大雑把な指標 • nビットセキュリティは2 𝑛 回攻撃が必要 • 1回あたりの攻撃コストはあまり気にしない • 𝑂 2 𝑛 という表記 セキュリティビット 𝑛 直線 :𝑂(𝑛) 3次関数 : 𝑂(𝑛3 ) 指数関数 : 𝑂(2 𝑛) 𝑂(log 𝑛) 5 / 21 6. • 第二原像計算困難性(弱衝突耐性) • 𝑚1に対して𝐻 𝑚2 = 𝐻 𝑚1 となる𝑚2 ≠ 𝑚1が分からない • 同じじゃなくてもいいから何か一つ見つけるのが困難 • 𝑂(2 𝑛 )回トライ ; nビットセキュリティ • 衝突困難性(強衝突耐性) • 𝐻 𝑚1 = 𝐻(𝑚2)となる𝑚1 ≠ 𝑚2を見つけるのが困難 • 𝑂(2 𝑛/2 )回トライ ; 𝑛/2ビットセキュリティ • 第二原像を見つけるのは単なる衝突より2
「おかえり、生物学的兄」 少女の形をした何かがそう言った。帰宅した僕を出迎えたそれは僕の妹なのだった。ただいま、と言いかけた僕の口を胡乱(うろん)げな同意が上書きした。 「お、おう……」 「不自然な発話だったかしら」靴のかかとに指をかけた僕を見下しながら、妹は続けた。「この観境においての言語標識は、過度に失礼ではない表現に自動調整されているはずだけれど。それともこう言ったほうがよかったかしら。〝おかえりなさい、生物学的お兄ちゃん〟」 今のでわかるように、妹は最近変なのだ。やたらと難解な言葉を含む翻訳調の文体で喋るようになってしまった。まだ高校生であるとはいえ、厨二病という時期でもないだろうに。 妹が言う〝生物学的〟とは、〝血の繋がりがある〟という意味だろうか。そうでなければややこしいので、出来ればそうであってほしい。〝観境〟というのは、ここが仮想空間であるという意味だろうか。それはややこし
型階層と呼ばれる世界では、日夜様々な種族が覇権を争い、絶え間なく戦争が続いていた。 その中で、異彩を放つ者たちが存在する。 種族ではなく思想にて繋がる異端、Monad。 Monad信徒は教義を広めるべく活動していたが、その際に使われる教典の解説書は数多く、常人には理解できないものだった。 わけがわからない、理解しがたい――そうして人々は抵抗して死に、あるいは洗脳されていく。 そんな情勢の中、人々の思いを代弁するかのごとく、Monadを攻撃するものがいた。 彼の名は――Monad Buster。
デブサミ2017で発表予定の資料です。 http://event.shoeisha.jp/devsumi/20170216 2017/02/14 ver1.0 公開Read less
This probably never happened in the real-world yet, and may never happen, but let's consider this: say you have a git repository, make a commit, and get very very unlucky: one of the blobs ends up having the same SHA-1 as another that is already in your repository. Question is, how would Git handle this? Simply fail? Find a way to link the two blobs and check which one is needed according to the c
産業医科大学医学部医学科卒業。専門は産業医学実務。産業医実務研修センター、ジョンソン・エンド・ジョンソン統括産業医を経て、現在医療法人社団同友会 春日クリニック 産業保健部門 産業医 。現在日系大手企業、外資系企業、ベンチャー企業、独立行政法人など約30社の産業医業務に従事 「電波がバリ3」のハイパフォーマーは疲れなくても当然 ー長時間労働問題がしきりに取り沙汰されています。大室さんはどのように感じていらっしゃいますか。 バブルのころ、「24時間戦えますか」と栄養ドリンクのCMが一世を風靡しましたが、そんなキャッチコピーがコンプライアンスを通った時代だったということですよね。ほんの30年前でさえそうだったのですから、時代の移り変わりによって常識が変わっていくことが示唆されているということです。 今、私たちは当たり前のように満員電車に揺られ、終電間際に帰宅していますが、その常識は30年後の人
κeenです。ここのところRustの開発ツール回りでリリースが続いてセットアップが楽になってるようだったので最新の情報をお届けします。 とりあえず私は既存の環境があるので一旦全て破棄してから再度セットアップしてみます。 Rustのインストール rustup.rs - The Rust toolchain installerがリリースされたので以下で一発です。 $ curl https://sh.rustup.rs -sSf | sh そして をシェルのrcファイルに書き加えたらOKです。 今のシェルにも反映するには同じく上記のコマンドを打ちます。 周辺ツールのインストール cargoがあるので楽ですね # コードフォーマッタ $ cargo install rustfmt # 補完、定義ジャンプなど $ cargo install racer まあまあ時間がかかります。 エディタ(Emac
自分は本の草稿に誤字脱字探しをしつつ好き勝手言う係としてちょっとだけ手伝った。せっかくなので宣伝してみる。 この本はコード読みブログやアーキテクチャ解読ブログをまとめたような体裁になっている。といっても各章バラバラではなく、本としての連続性はある。そして OS というものを包括的に解説するかわりに Android の特徴的なところ、たとえば GUI フレームワークや VM のランタイムなど、をつまみ食いしている。これは正しいアプローチだと思う。伝統的な OS の話をしだすと Android ってだいたい Linux だからね。Android に限らず、この「伝統的な OS の上にあるプラットホームのレイヤ」の中身を説明した本は少ない。 そこが面白い。 この本の欠点は文章がけっこう slippery なところ。悪い意味でブログぽいというか同人誌ぽい。ただそれは「支える技術」シリーズに共通する
オープンソースからハイスクールフリート、The Beatlesまで何でもありの自称エンターテインメント日記。 最近TransifexとかLaunchpad (のRosetta)とかPootleなどなどを採用し、オープンソースソフトウェア(OSS/FLOSS)の翻訳がWebでできるようになっています。 同時にWebの翻訳サービスも多数存在し、どんどん精度が上がってきています。 ではWeb翻訳の結果をOSS翻訳に突っ込めばいいのではないかというと、それは違います。Web翻訳にも当然利用規約があり、そのようなことは禁止されてることが多いです。世の中すべてのサービスのライセンスを確認するのは不可能ですが、概ねその傾向にあるのは事実でしょう。具体的にはExcite翻訳の利用規約だと第6条で明記されています。 OSSの翻訳にするということは、そのOSSのライセンスに従うということで、それは > 私的利
かつて日本で働いていた時にすごい英語の達人たちに英語の習得法を聞きまくったことがあって、それで判明したのは「みんなが知っているけど目を背けていた真実」だけだった、という話。 「これから海外で働こう」と考えた当時の私は日本企業に勤務していてお世辞にも英語ができる、なんてレベルではなかった。ただラッキーなことにその当時、所属していた開発チームの隣には海外営業チームがいた。たまたま席が隣だったのだ。そこの海外営業チームには当然ながら、とても英語のできる人達が在籍していた。 今、シンガポールのスタートアップで働いている目線から言うと非常に変なのだが、なんとその「海外営業部」の所属メンバーは全員が日本人だった。まーそれはいいとして、当初の私はその部署で英語がやたらできる人を7人ピックアップして、ひとりひとりランチに連れ出し「どうやって英語をマスターしたのか?」と聞いてまわった。元々そんなに社交的では
http://martinfowler.com/bliki/TechnicalDebtQuadrant.html ここ数ヶ月の間に、 技術的負債 に関する投稿がいくつかあった。設計上の不備の中で、技術的負債と呼ぶべきものは何か? 逆に、そう呼ぶべきでないものは何か?といった疑問が挙げられていた。 その一例が、アンクル・ボブの投稿「a mess is not a debt(散乱は負債ではない)」だ。 彼の意見は、次のようなものである。 良い設計方法を知らない人が書いた単に汚いだけのコードを負債と呼ぶべきではない。 長期的な持続性はなくても、 リリースなどの短期的な利益を生み出す設計指針をあえて選択することがあるが、 技術的負債はそのような特別な場合に使うべきである。 要するに、負債を抱えれば早めに価値を生み出すことができるが、 負債はできるだけ早く返済する必要がある。 だが私は、 設計の不備
class Animal { kind: string } class Dog extends Animal { dog_type: string } function showDogType(dog: Dog) { console.log(dog.dog_type) } // 代入不可のコンパイルエラーになってほしい const someAnimalFunc: (animal: Animal) => void = showDogType // 実際はここでランタイムエラー someAnimalFunc(new Animal()) このコードがコンパイルエラーにならず, 実行時エラーになってしまうことについて. TL;DR 型システムの健全性 (型の矛盾が生じないこと) vs 利便性のトレードオフから, 現在の TypeScript は健全性を諦めている 関数型はパラメータについて biv
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く