前まで webp のアップロードはできなかった気がするんだけど、最近試したらできるようになっていた。

Google Photos はいつからかブラウザによって webp が落ちてくるように変わったけど、そのタイミングでアップロードも変わったのかな?

ちなみに JPEG 2000 や JPEG XR はあいかわらずアップロード不可能

  1. トップ
  2. tech
  3. Google Photos の webp 対応

いままでハマったことがなかったのだけど、ついにハマってしまった。
補助グループ権限もつけてくれるsetuidgidのようなもの - (ひ)メモ を読んで、どうするかな〜と思いつつsetusergroupsを試してみたが、Unix::Groups がデフォルトで入っておらずちょっと困ったので python で以下のようにした。

#!/usr/bin/python

import os
import sys
import pwd

if len(sys.argv) < 3:
    print >> sys.stderr, 'Usage: setusergroups user program'
    sys.exit(1)


pw = pwd.getpwnam(sys.argv[1])
pw_name = pw[0]
pw_uid = pw[2]
pw_gid = pw[3]
pw_home = pw[5]

os.environ['HOME'] = pw_home
os.initgroups(pw_name, pw_gid)
os.setgid(pw_gid)
os.setuid(pw_uid)
os.execvp(sys.argv[2], sys.argv[2:])

エラると例外で落ちてトレースバックがでて十分なので特にエラー処理してな

備考

ハマったのは Raspberry Pi の pi ユーザで i2c を触るようなデーモンを作るケースで、この場合 pi ユーザに i2c グループ権限がついてないとダメなのでこういうのが必要になる。

依存なしでどうにかしたかったのは、cpanm が ansible の Core Modules に入ってなくてめんどかったから

  1. トップ
  2. tech
  3. daemontoolsのsetuidgidが補助グループ (supplementary groups) 権限をつけてくれない問題 (python)

ありがとうございました。

聞いたトークで印象に残ったもの

OSS は Windows で動いてこそ楽しい - builderscon tokyo 2016

mattn さんが思ったより全くオッサン感なくてビビった。。。挨拶しようと思ったけどできなかったので、いつか(いつ?)挨拶したい。発表もおもしろかった。

動け!Golang 〜圧倒的IoTツール開発へようこそ〜 - builderscon tokyo 2016

IoTツール開発は生産管理ツールについてで、ものすごく貴重な話だと思った。懇親会でももうちょっと聞いたりした。

The Open Beer Server - theory and the implementation - builderscon tokyo 2016

今回のゲラゲラ枠っぽいが、ものすごい金かかっててやばかった……

C 言語で行う Web フロントエンドプログラミング - builderscon tokyo 2016

Emscripten の話とか。ブラウザって VR もサポートする予定なのか!と思った。あと Emscripten が頑張って OpenCL を WebGL に変換するとか知らなかった。

「片手間JavaScripter」にも知ってほしい、Vue.jsで実現するMVVMパターン、Fluxアーキテクチャとの距離 - builderscon tokyo 2016

Flux 触ったことなかったのでわかりやすかった。

そろそろプログラマーもFPGAを触ってみよう! - builderscon tokyo 2016

FPGA の話とても聞きやすくて解りやすくてよかった。

一から始めるJavaScriptユニットテスト - builderscon tokyo 2016

JS のテスト、闇雲にググっても萎えるだけなので、こういうまとまった資料ってほんとまじで大事

  1. トップ
  2. tech
  3. builderscon tokyo 2016 で「 Bluetooth キーボードの作りかた」を喋りました