OpenRTBの萌えどころ

※重要※ 書いた人の意見であって所属する組織の見解ではありません

なんやかやでこの移ろうアドテクRTBトレンドを追いかけているがんばり、3.0を出し切ったがんばり評価できる反面、利用者として思うところもあるのですが...

OpenRTB仕様を読み物として読んだ時の個人的な萌えポイントは...

フィールド名のふんわりさ、これに尽きます!

読んだことない方で気になる方はこちら


whbcatexpdirbidfloorcur...

CamelCaseでもsnake_caseでもない、略すこともある。この感じ。(なおfloorは3.0で flrになります)

burlとかbcatみたいに、同じレベルのprefix(この場合b = block)続く時は1文字に略すのかな〜と思いきや、adid(Ad ID)adm(Ad Markup)とか、2文字もあるんだねうんうんok まったく問題ないよ! かーらーの! adomain(Advertiser domain)

d 1個どこいったー

でも、嫌いじゃないんですよね。

これはもしかしたら、「ある程度内容をわかりつつ(protoみたいな作戦じゃないシリアライズも考慮されるわけで)フィールドサイズも削りたい。でもjson前提で仕様作るのはおかしいわけだけど何か一つの言語の推奨するアレに揃えるのもおかしい 😫うおーーーみんなで😫好き勝手いいやがってーーー」 の末なのか?とかを妄想して楽しくなるわけです(※ちゃんとIABの議事録読んではいない。気が向いたらちゃんと追います🌟

この感じ、JWTを最初に読んだ時の萌えに近いです。

あっこれで「ジョット」って読ますのね(カッコE↑) しかも何かと3文字っ😍 3文字じゃあもう訳わからなくなってさえ貫くこの感じ萌え!というのに近い

しかし利用する側としてフィールド名は全くなんでも問題ないのだけど、Goとかだと言語仕様的なアレで gen-goしちゃうと無残にも func (m *BidResponse_SeatBid_Bid) GetImpid() float64 みたいなのにされてしまうのだーーー。使う方もgolintにさんざん「だからさ ID みたいのはIdでもidでもなくIDにしようよっていってるやん」と調教されてるんで なんもうれしくなくて不憫😭

かーらーの!

pmp.private_auction

ぷらいべぇと おーくしょん に あんだーすこあ いれちゃったよぉ

※ 諦めか?! その後けっこうちらほらアンダースコア入る

あっ🤭 でもま待てよ🤔🤔

private ってフィールド、当時もしかして一部言語の予約語だからあえて回避したんすかね? そうなんすかね??

この苦労は泣け...!!

ないよ! そしたらそこは... pricua これだろ!(←これはない

※なお3.0ではそのままの Item.private になりました⭐︎


そんな萌えポイント盛りだくさんのOpenRTB、2系からの

My Favorite Field Name Ranking Top 3〜〜

1位!!! fd

Final Decision! ファイナルディシジョン👨‍⚖️ 語感がかっこいい!!

なお3.0(というか現在の)Complex supply chainsの流れで削られました〜〜

2位!! tmax

:vim:

ぽくもあるし...

あなたの健康を守りますっぽくもある語感がなんとなく好き

3位! adm

最初、心の中でアダムって読んでましたww 神話的!

中身を理解してからのこのフィールドなんでもありか〜〜感。ついになんでもありフィールド登場か〜〜

と、思いきやアドマークアップだからネ! とくにHTMLと言ってるわけじゃないし〜〜 XMLマークアップだしぃ〜 JSONも! っていやいやそれマークアップじゃなくない! やっぱりなんでもありかい!

※3.0ではAdCOMっていう概念が導入されました

isucon8予選のはんせい

http://isucon.net/

去年初めてひとり参加してみたんだけど「これは仕事したことある人と3人でやればわりといけるかな?」と思っていたところ、社内の人にさそってもらったのでチームで参加してみました(タジーに誘われたメンツなので tar.gz 。チーム名だけは良かった)

でも追試でfailするし、failしなくても40位とかなので全然だめだ〜

はんせい点

  • 環境準備とかビルド環境でもたもたしてたら、午前中おわっちゃった
  • 一人がgetEventsを見始めたときに、じゃそれ以外で潰せるところ潰しますって2時間くらい使っちゃって、時間のふりかたダメだった
  • goでやったんだけど、ごめん私急いでgo書く力無かったわw 変なところで躓いちゃった(perlのコードきれいだったし、perlでやればよかったw

かんぜんになめてましたね。アプリの動作把握とコード書く速度の遅さ認識して凹んだ

問題はおもしろかった!

時間が勝負の世界で楽しむ余裕なかったけど、仕事はもう少し余裕あるスケジュールが組めることが多い(仮)ので実世界で遭遇したらきっと楽しい

ポータルやベンチマーカーもしっかりしてるし、これにタダで参加できるのがすごい。

buildersconのはんせい

builderscon tokyo 2018 にて、去年に引き続きVOYAGEGROUPとしてのランチスポンサーセッションとしてこれをやらせてもらいました

ajito.fm

はんせい点

  • メンバーが完全に皆同じチーム内の近いメンバーで、会話のコンテキストがたかすぎたw
  • useするだけで突然死しちゃう件とか、おもしろネタを話し損ねた
  • tieの説明はむずい

しかしbuildersconのランチスポンサーは、ある意味「お金で視聴者を一定時間拘束できる」すごいコスパ良いスポンサー枠。 たぶんこの事実そろそろバレちゃうので来年はもっと取り合いになりそう

This OTP Life なくなってた

ここ半年くらいアドテクやってまして、ざっくり go 80% perl 20% erlang 20% くらい書いてます(あ、あとphpも5%くらい(100%超🤔

erlang/OTP は初めてでふわふわ書いていますがとりあえず今日はjiffy 表現のカッコにようやっく慣れてきました。list of mapとかだとパニック(正解は、map使えば良い。

{[{feeling, [{[{text, <<"fumu">>}, {face, <<"(-_-)">>}]}, {[{text, <<"wow">>}, {face, <<"(@o@)">>}]}]}]}

さてerlangといえば前から http://thisotplife.tumblr.com/ っていうサイトが好きでfeed登録してた。erlコミュニティ有志で更新されていた、おもしろgifにワンフレーズつけたもの。そのシニカルなerlangジョークが好きで、なんとなくerlangerlangエンジニアに「現実的で強いものを書ける奴」という好印象持ってた

そういえば最近更新ないな?とおもったら数年前にサイトごとなくなっていた;;

archive.orgに残っていた在りし日のThis OTP Life https://web.archive.org/web/20170818011748/http://thisotplife.tumblr.com

気になったのでひさびさにfreenodeつないで #erlounge で聞いてみたら

  • たしかtumblrのアップロードが1MB制限でつらくなったからやめた
  • いまは上限上がっている、再開してみようかな
  • あっ クローズしてしまっていた復活できないわww

みたいなかんじだった

erlang書く前からerlangにいい印象持ててた。メンテしてくれてありがとう」的なことを言えたから良かった。

投稿の中でも特に覚えていたのがこれ! ircでやりとりしたMononcQcの作品でもある

”Hot Code Loading”

server_starter みたいなのをつかったhot deployの一種か?くらいに思ってたけどerlangやってみて本当の意味がわかったw いまのところうちではやる機会は(幸い)無いけどそういう環境/状況も人生一回くらい味わってみたいw

Nintendoもつかったことあるらしい!

medium.com

1901/12/13 20:45:51以前のAsia/Tokyoの結果は環境によって違うことがあるのでようちゅうい

goのtime.Timeのゼロ値は0001-01-01 00:00:00 +0000なのだけど、JSTでログ出力するコードのテストの結果がディストリビューションによって違うってのがあった

https://play.golang.org/p/stkTNMsByNc

maccentosでは

0001-01-01T09:00:00+09:00

ubuntuや、go playgroundでは

0001-01-01T09:18:59+09:18

この9:18というのは、LMTというもので日本の場合は +9時間18分48秒

まあ、日本標準時が利用される前は日本標準時は無いのだから厳密にはLMTであるべき、なのはまあわかる。おなじgoのバージョンでも環境によって違うのはなんでだ?

tzdata

違いは、読み込まれたzoneの数が違う

&time.Location{
    name:"Asia/Tokyo",
    zone:[]time.zone{
        time.zone{name:"LMT", offset:33539, isDST:false}, // ubuntuではこれがあるがcentosでは無い
        time.zone{name:"JDT", offset:36000, isDST:true},
        time.zone{name:"JST", offset:32400, isDST:false},
        time.zone{name:"JST", offset:32400, isDST:false},
    }

goのtime読んでみると、単にtzdataをロードしているだけの模様で、そのロードされる /usr/share/zoneinfo/Asia/Tokyo の内容がそもそもディストリで違った

maccentos

$ cat /usr/share/zoneinfo/Asia/Tokyo | xxd
0000000: 545a 6966 3200 0000 0000 0000 0000 0000  TZif2...........
0000010: 0000 0000 0000 0003 0000 0003 0000 0000  ................
0000020: 0000 0009 0000 0003 0000 000d c355 3b70  .............U;p
0000030: d73e 1e90 d7ec 1680 d8f9 1690 d9cb f880  .>..............
0000040: db07 1d10 dbab da80 dce6 ff10 dd8b bc80  ................
0000050: 0201 0201 0201 0201 0200 007e 9000 0000  ...........~....
0000060: 008c a001 0500 007e 9000 094a 4353 5400  .......~...JCST.
0000070: 4a44 5400 4a53 5400 0000 0000 0000 545a  JDT.JST.......TZ
...
  • zone情報3個
  • JCST, JDT, JSTの3個

ubuntuなど

$ docker run -it ubuntu bash
# apt-get update; apt-get install tzdata xxd

# cat /usr/share/zoneinfo/Asia/Tokyo | xxd
00000000: 545a 6966 3200 0000 0000 0000 0000 0000  TZif2...........
00000010: 0000 0000 0000 0004 0000 0004 0000 0000  ................
00000020: 0000 0009 0000 0004 0000 000c 8000 0000  ................
00000030: d73e 0270 d7ed 4be0 d8f8 fa70 d9cd 2de0  .>.p..K....p..-.
00000040: db07 00f0 dbad 0fe0 dce6 e2f0 dd8c f1e0  ................
00000050: 0301 0201 0201 0201 0200 0083 0300 0000  ................
00000060: 008c a001 0400 007e 9000 0800 007e 9000  .......~.....~..
00000070: 084c 4d54 004a 4454 004a 5354 0000 0000  .LMT.JDT.JST....
...
  • zone情報4個ある
  • LMTあり

ふむ?

zic

tzdataの元ネタであるOlson databaseから、2018eをダウンロード。ディストリについてくるzicでtzdataにコンパイルしてみる

$ wget https://data.iana.org/time-zones/releases/tzdata2018e.tar.gz
$ tar zxvf tzdata2018e.tar.gz
$ zic -d /tmp asia
$ cat /tmp/Asia/Tokyo | xxd

→ ソースは同じだが、各ディストリ付属のzicによって作成されるtzdataバイナリが違う事が判明!(centosmacの /usr/sbin/zic だとLMTが無い

zic自体もコンパイルしてみる

$ wget https://data.iana.org/time-zones/releases/tzcode2018e.tar.gz
$ tar zxvf tzcode2018e.tar.gz
$ make zic
$ mkdir -p /tmp/hoge
$ ./zic -d /tmp/hoge | asia
$ cat /tmp/hoge/Asia/Tokyo | xxd

macやcentでもzone4個、LMTが出現!!

たぶん何か影響があって、ディストリビューションでzicをカスタマイズしている模様。

なんか古いテストコードが動かなくなる、とかそういうのがあるのかな? 深追いはしていない

けつろん

日付のテストで、すごい古いのを扱う場合、LMTの扱いがある。

perlDateTime::Timezone みたくolson databaseを抱え込むタイプのライブラリと、goのtimeのようにライブでtzdataを読みに行くタイプのライブラリがあるとおもうのだけど後者の場合はようちゅうい

goはこんなかんじにした

// ログ出力JST固定なのでtzdataのロードはやめて、fixedzone利用
tz := time.FixedZone("Asia/Tokyo", 9*60*60)

// あとねんのためtime.Timeのゼロ値は出力前のnilチェックでepochtimeにしてしまうことにした
    if t.IsZero() {
        t = time.Unix(0, 0)
    }

というのをyowcowさんとごにょごにょした

dutiで拡張子の関連付け上書きする

お正月あたらしいmacbook 新規でセットアップした

  • treeとかそういうのは brew
  • CotEditorとか app store から入れているものは mas で(masコマンド自体もbrewで入る)
  • それ以外、Dropboxとかiterm2とかは brew cask
  • defaultsとかの設定も全部shellでやれるようにしていたのでだいぶ楽

新たに、 duti というのをおぼえた。(duti コマンド自体もbrewで入る)

「私は! xmlを! ○○エディタで開きたかったのに! なぜXCodeが立ち上がるの!!! ばかー」とか、「うおお、.sh まちがって開いてなんか実行走っちゃったああ」みたいなのを防げる

こういうのを用意しておいて、諸々セットアップの後に実行

duti -s com.coteditor.CotEditor .txt all
duti -s com.coteditor.CotEditor .csv all
duti -s com.coteditor.CotEditor .tsv all
duti -s com.coteditor.CotEditor .xml all
duti -s com.coteditor.CotEditor .html all
duti -s com.coteditor.CotEditor .js all
duti -s com.coteditor.CotEditor .css all
duti -s com.coteditor.CotEditor .sh all
duti -s com.coteditor.CotEditor .pl all
duti -s com.coteditor.CotEditor .php all
duti -s com.coteditor.CotEditor .go all

いまの設定がどうなっているかはこれでわかる

duti -x txt

photoshop入れてるけどpsdファイルもいったんpreviewでみたいなって人も、こういうので快適になる

duti -s com.apple.Preview .pdf all
duti -s com.apple.Preview .psd all
duti -s com.apple.Preview .png all

ひるね姫

あ〜おもしろかった!!

レンタルはじまってます

…考察記事があまりひっかからないのと「なんかよくわからなかった」的な感想がおおくて😤という深夜テンションで感想⤴

「君の名は」以降呪縛的な、あと地方出身の女子高生が主人公というのもあって比較されがちだけど方向性はちがう。予告編みてファンタジー的なものを想像してたら、それもちょっと違う。どっちかというと社会派。東のエデン攻殻機動隊SACを手がけた監督なのでそりゃそうだ。思ってたのと違った的な感想がちらほらあるのはその辺かな。

  • ここからややバレ
  • ここからさらにややバレ
  • ここからさらにバレ
  • じみにわかってない
続きを読む