Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
xuwei-k / scalaz-stream.md
Last active June 24, 2021 01:09
Scalaz-Streamの基本的なクラスや概念まとめ

Scalaz-Streamの基本的なクラスや概念まとめ

  • versionは0.7a

scalaz-streamが依存してるライブラリ内のclass

  • scalaz-streamではなくscalaz-concurrentにあるクラス
  • scalaz-streamは、これと Task にかなり依存してるので、まずはこれらを理解することが重要
@tototoshi
tototoshi / future.scala
Created March 26, 2015 03:54
Future.successful と Future.apply
import scala.concurrent.Future
// def successful[T](result: T): Future[T] を使った場合
// result を評価する時点でブロックされるので
// a b c の順に表示される
println("a")
val f1 = Future.successful { Thread.sleep(1000); println("b") }
println("c")
// def apply[T](body: ⇒ T)(implicit execctx: ExecutionContext): Future[T]
@hiroyuki-sato
hiroyuki-sato / gist:ec502a7e37ae488e4256
Last active September 3, 2020 15:51
Embulk組み込みアウトプット覚書

Embulk組み込みアウトプット覚書

ここに記載している情報は間違えている可能性があります。ご注意ください。

元ネタ なんちゃって個人情報をembulkで使う

Embulkアウトプットプラグイン覚書

設定例

def foo(str)
result = str.scan(/(\*|\+|&|\||\d+)/).flatten
while result.size != 1
result = hoge(result)
end
result.first
end
def hoge(ary)
%w(| & + *).each do |op|
data = [
# [ id, input, expected ],
[ 0, "4*5+6&7|8", "44" ],
[ 1, "15*5", "75" ],
[ 2, "15+5", "20" ],
[ 3, "15&5", "5" ],
[ 4, "15|5", "15" ],
[ 5, "30*15*5", "2250" ],
[ 6, "30*15+5", "600" ],
[ 7, "30*15&5", "150" ],
@saboyutaka
saboyutaka / kana01.rb
Last active August 29, 2015 14:13
kana01 ペアプロ
input = [
# [ id, input, expected ],
[ 0, "4*5+6&7|8", "44" ],
[ 1, "15*5", "75" ],
[ 2, "15+5", "20" ],
[ 3, "15&5", "5" ],
[ 4, "15|5", "15" ],
[ 5, "30*15*5", "2250" ],
[ 6, "30*15+5", "600" ],
[ 7, "30*15&5", "150" ],
# 優先順位は変わらないので、優先順位にそってメッソドを再定義する
# メソッドが入れ替わっているので、式内の演算子も置換で入れ替える。
#
# ↑優先順位高
# | ビット or
# & ビット and
# + 加算
# * 乗算
# ↓優先順位低
#
#!/usr/bin/env ruby
BIT_OR = '\|'
BIT_AND = '\&'
ADD = '\+'
MULTIPLATION = '\*'
input = ARGV[0]
[BIT_OR, BIT_AND, ADD, MULTIPLATION].each do |operator|
@descico
descico / presto-code-split.md
Last active August 13, 2017 01:50
Presto の話。ただし最近ほとんど触っていなかったので情報は古いので注意せよ。

Split を worker Node に割り当てる処理について

  • やっているのは NodeScheduler のcomputeAssignments のようだ。
  • locationAwareScheduling と isRemotelyAccessible() によって処理は分岐する、と考えておいて良い
  • ここでしばしば紹介される minCandidates パラメータが登場する。コードを読む限り、これ、「Split を処理する Node の候補をいくつ選ぶか」というだけであるっぽい。
  • 少なくとも minCandidates の数だけ Node を選び、その中から現在持っているタスクが少ない Node を選んでいるのである。
  • だから、 minCandidates は別に並列度とは関係ないわけで、結果的にパフォーマンスに寄与するかどうかは微妙な感じもある。
  • "max number of workers to run a stage in parallel (default: 10) " という説明は誤りなのではないか、という話。
  • この minCandidates が node-scheduler.min-candidates であることも確認済みである。
  • 指摘もあったが誰も反応していない https://groups.google.com/forum/#!msg/presto-users/Ft71bkwElkQ/v85ROXC82hIJ
@everpeace
everpeace / Why People Want Microservices.md
Last active November 8, 2022 10:37
マイクロサービス化が進む背景について考えてみた

マイクロサービス化が進む背景について考えてみた

最近マイクロサービスって流行ってますよね。バズってると言ってもいいくらい。

個人的には、「マイクロサービスって結局何なの?」とか、「SOAと何が違うわけ?」とかいう議論は苦手です。

でも「なんでみんなマイクロサービスで作りたいのか?なんでマイクロサービスで作られるサービスが多いのか?」にはすごく興味があるんです。

僕は今、シリコンバレーにある日系SIerの小さな子会社で駐在員をやっていますが、このエリアに居ると、とにかく最近、

「サービス全体が、独立した小さなサービスの集合で構成されるようになってきている」