Skip to content

Instantly share code, notes, and snippets.

@yudai
yudai / gist:6f8f44ac878c41eaf7dc
Last active November 7, 2023 08:35
Google v. Oracle API著作権裁判

Oracle v. GoogleのAPI著作権裁判の話

OracleとGoogleの判決文を斜め読む」を読んで裁判の経緯は理解できたものの、判決の詳細があまり理解できなかったので判決文を自分で読んだ。法律的な難しさはあまりなく、技術的な論点と関係する条文および過去の判例などが非常にわかりやすく解説されており、判決の根拠もたとえ話を交えて書かれているなど非常に読みやすい印象を受けた。

全体の内容としては比較的単純で「あらゆるプログラムのコードは著作権で保護される。ただしFair Useによる合法的な利用に関しては差し戻し審で審議せよ」という事のようだ。実は「API」という言葉は一切判決文には出てこないため、内容を良く読む必要がある。

17 U.S.C. 102(b)を巡るGoogleの主張

#include <unistd.h>
#include <curses.h>
char *sl[] = {
" o o o",
" o ",
" o ____ ",
" -- |OO| ",
" _||__| | ",
" | | ",
@tatsuhiro-t
tatsuhiro-t / bench-backend.conf
Last active August 4, 2017 17:24
HTTP/2 server benchmark Jan 2015
listen: 3001
http2-max-concurrent-requests-per-connection: 1024
max-connections: 15000
num-threads: 1
hosts:
localhost:
paths:
/:
file.dir: /path/to/htdocs
package main
import "fmt"
func main () {
// 見つめ合う
fmt.Println("おっくせんまん!おっくせんまん!!")
defer fmt.Println("ジャパン!!!");
}
@mala
mala / gist:5268998
Last active December 15, 2015 13:39
データをpostMessageで受け渡すセッション限りのトークン取得(取得しない)フロー

一瞬popup + 以降iframeでproxyするようなもの。XHR level2いらないのでやや動作環境が広がる。

  • クライアント側ボタンクリックで window.open + ランダムなid(これをclient_id相当にする)の名前をつけてiframe埋め込み
  • popup windowにiframeの名前をpostMessageで送る
  • サーバー側: popup windowはiframeに対してpostMessageで返信(event.source.frames.xxxx)、api-domainのoriginであることを確認、cookieで認証してランダムなidとセットで使えるトークン発行
  • トークン保存はmemcachedなど揮発性のストレージで良い。使っている限り期限が延長される。最長期限があってもよい(あったほうがよい)
  • ログアウトとセットで破棄されるようになっていると良い
  • iframeはポップアップwindowからメッセージを受け取る。ランダムなid + トークンを使ってAPIにアクセスする。
  • iframeは親windowからメッセージを受け取る。あとはpostMessageでproxyしてXHRのリクエスト、レスポンスをやり取りする。
  • iframeは親windowからのメッセージであることをevent.originを使って検証する
802 名前:おさかなくわえた@kzk_moverさん 投稿日:2013/03/07(金) 16:42:24 ID:s2RHsW2o
上に割引券についての話がありましたけど
私は@repeatedly先生の割引チケットの券を捨ててしまって後悔した立場でした
ガールズバーのでしたけど
かなり近所のガールズバーの券がまさに大量(数種類も集めてて机一つめいっぱい使って)という感じでした
入社2年目ぐらいから「こんなにあるんだからもうもらってこないでよ」と@repeatedlyに言い続けたのですが
毎回全然行動してくれずに言葉を濁す@repeatedlyにキレてしまい
留守中に業者を呼んで引き取ってもらえるものは引き取ってもらいました

msgpackの変更案について-3

概要:

  • 現行のRaw型をString型として読み替える。
    • 現行の FixRaw, raw 16, raw 32 は、FixString, string 16, string 32 になる
  • Binary型を新設する。
  • バイト列はBinary型で保存する。そうでなければString型で保存する。

背景

@tk3
tk3 / basic_auth.rb
Last active December 10, 2015 07:30
ngx_mruby: basic authentication
def basic_auth
r = Nginx::Request.new
realm_name = r.var.realm_name
if r.headers_in["Authorization"].nil?
r.headers_out["WWW-Authenticate"] = %Q(Basic realm="#{realm_name}")
return Nginx::HTTP_UNAUTHORIZED
end
auth = r.headers_in["Authorization"]