AndroidのAccountManagerをとりあえず動かすところまで
あらすじ
- Androidでアカウントに関連する情報をアプリ内に持ちたくない
- Android側でAccountManagerという仕組みを用意してくれている
- しかし、説明を読んでもイマイチピンとこなかった
- 実際に動きを確認できるところまでサンプル作ってみた
参考
- Android Security 安全なアプリケーションを作成するために 11.2章
- Android におけるアカウント管理 – Gunosy Tech Blog
- AccountManagerを利用する - Qiita
- AccountManagerでアカウントを管理する - Qiita
AccountManagerの概念
AndroidSecurity安全なアプリケーションを作成するために P267より抜粋
環境
- Android Studio 1.5.1
- Minimum SDK API 19: Android 4.4(KitKat)
- Emulator Nexus 5 API 19 Android 4.4.4, API 19
動くもの
- こんな感じで動く
ハマり
AccountManager
Authenticator
ともにサンプル通り作ってみようと思ったらエラーの切り分けができなかった
空の Authenticator
を作って、とりあえず登録できる口だけ用意する事で一気通貫通す事ができた!
Golangで作ったスクリプトをbrew install&brew updateできるようにする
Contents |
あらすじ
Golangでスクリプトを作ったので、バイナリにしてhomebrew
でインストール/アップデートできるようにしてみた。
細かく色々できるけど、とりあえず今回は最小で。
参考
環境
- MacOS X El Capitan 10.11.3
- go version go1.5.3 darwin/amd64
- ruby 2.1.4p265
要件
ブツ
まずはブツを作った。
引数にディレクトリ与えたら、最下層のファイルを直前のディレクトリ名にリネームするっ的なスクリプト。こちらは特に意識する必要はない。
なんとなく動くようになったら、go build
して作ったファイルをGitHubのReleasesからv0.1
として追加した。(割愛/今回は配布先のPCにgoコマンドがない前提なので、実行ファイルをそのまま配る)
- 実行ファイルのUrlを覚えておく
https://github.com/gosyujin/bulkrenamer/releases/download/v0.1/bulkrenamer
- sha1のハッシュ値を取っておく
Homebrew用設定
Formulaの作成
brew create
で作れるみたいだけど、とりあえず手打ち。
リポジトリの名前はhomebrew-APPNAME
とするルール。今回はbulkrenamerなのでhomebrew-bulkrenamer
リポジトリを作った。
ファイルはAPPNAME.rb
。今回はbulkrenamer.rb
class Bulkrenamer < Formula
desc "BulkRenamer"
homepage "https://github.com/gosyujin/bulkrenamer"
head "https://github.com/gosyujin/homebrew-bulkrenamer.git"
version "v0.1"
url "#{homepage}/releases/download/#{version}/bulkrenamer"
sha1 "5e3ac6469395aae60a00c61f45b5343207cca330"
def install
bin.install Dir['bulkrenamer']
end
end
sha1で比較とか他にも色々できるが、ひとまず
-
url
はツールの場所 -
version
はFormulaのバージョン。バージョンアップ時に使う
だけ。
インストールとアップデート
Homebrewでインストール
tap
してinstall
でいける!
$ brew tap gosyujin/bulkrenamer
==> Tapping gosyujin/bulkrenamer
Cloning into '/usr/local/Library/Taps/gosyujin/homebrew-bulkrenamer'...
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
Tapped 1 formula (25 files, 16.8K)
$ brew install bulkrenamer
==> Installing bulkrenamer from gosyujin/bulkrenamer
==> Downloading https://github.com/gosyujin/bulkrenamer/releases/download/v0.1/bulkrenamer
==> Downloading from https://github-cloud.s3.amazonaws.com/releases/52855923/178f416a-dfc8-11e5-9f9c-fc48ca5e1c98?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJM
(略)
🍺 /usr/local/Cellar/bulkrenamer/v0.1: 2 files, 7M, built in 8 seconds
$ bulkrenamer -v
BulkRenamer ver.0.1
Homebrewでアップデート
homebrew-bulkrenamerを更新してbrew update
してもらう。
今回は配布ファイル変えずにバージョンだけ上げてみた。
- v0.2になっているのは一回試した後だから
- 本来の流れ的にはブツ(bulkrenamer)を更新してreleasesに新しいバージョンを登録後、この操作を行う
brew update
$ brew update
Updated Homebrew from 468adbc to 215cb53.
Updated 3 taps (caskroom/cask, caskroom/versions, gosyujin/bulkrenamer).
==> New Formulae
dropbox-uploader gnu-complexity
==> Updated Formulae
cromwell mitmproxy
dcd nss
dmd planck
gosyujin/bulkrenamer/bulkrenamer ✔ rust
libpagemaker
brew outdated
で更新があるツールの確認。
$ brew outdated
gosyujin/bulkrenamer/bulkrenamer (v0.1, v0.2 < v0.3)
go (1.5.3 < 1.6)
openssl (1.0.2f < 1.0.2g)
brew upgrade
$ brew upgrade bulkrenamer
==> Upgrading 1 outdated package, with result:
gosyujin/bulkrenamer/bulkrenamer v0.3
==> Upgrading gosyujin/bulkrenamer/bulkrenamer
==> Downloading https://github.com/gosyujin/bulkrenamer/releases/download/v0.3/bulkrenamer
==> Downloading from https://github-cloud.s3.amazonaws.com/releases/52855923/c0686154-e21b-11e5-92d2-6d76b5ceb265?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJM
(略)
🍺 /usr/local/Cellar/bulkrenamer/v0.3: 2 files, 7M, built in 8 seconds
El Capitan上に古いpumaをインストールすると失敗する
あらすじ
El Capitan上に bundle install
で古い puma
を入れようとしたらエラーになった。
環境
- Mac OS X El Capitan 10.11.3
- Ruby 2.1.4p265
解決策
EL Capitanに古い 2.14
より低い puma
を入れるには --with-opt-dir
でopensslのパスを指定する必要がある。
$ bundle config build.puma --with-opt-dir=/usr/local/opt/openssl
$ cat ~/.bundle/config
---
BUNDLE_BUILD__PUMA: "--with-opt-dir=/usr/local/opt/openssl"
指定しないとエラー。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/ataka/.rbenv/versions/2.1.4/bin/ruby extconf.rb
checking for BIO_read() in -lcrypto... yes
checking for SSL_CTX_new() in -lssl... yes
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling http11_parser.c
compiling io_buffer.c
io_buffer.c:119:21: warning: passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
return rb_str_new(b->top, b->cur - b->top);
^~~~~~
/Users/ataka/.rbenv/versions/2.1.4/include/ruby-2.1.0/ruby/intern.h:704:29: note: passing argument to parameter here
VALUE rb_str_new(const char*, long);
^
1 warning generated.
compiling mini_ssl.c
In file included from mini_ssl.c:3:
/Users/ataka/.rbenv/versions/2.1.4/include/ruby-2.1.0/ruby/backward/rubyio.h:2:2: warning: use "ruby/io.h" instead of "rubyio.h" [-W#warnings]
#warning use "ruby/io.h" instead of "rubyio.h"
^
mini_ssl.c:4:10: fatal error: 'openssl/bio.h' file not found
#include <openssl/bio.h>
^
1 warning and 1 error generated.
make: *** [mini_ssl.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/ataka/github/test/vendor/bundle/ruby/2.1.0/gems/puma-2.13.4 for inspection.
Results logged to /Users/ataka/github/test/vendor/bundle/ruby/2.1.0/extensions/x86_64-darwin-15/2.1.0-static/puma-2.13.4/gem_make.out
調査ログ
2.14.0
以降は修正されているので、特に指定せずともインストール成功する。 2.13.9
と 2.14.0
のdiff。
PyLadiesTokyo #8でSphinxハンズオンのTAをしてきた #sphinxjp
あらすじ
さる1/16に開催されたPyLadies TokyoにてSphinxのハンズオンが開催されたのでTAしてきました。
Sphinx hands-on in PyLadies Tokyo Meetup#8 !! #sphinxjp #PyLadiesTokyo pic.twitter.com/hfwwMZb6hA
— sphinx-users.jp (@sphinxjp) 2016, 1月 16
振り返りKPT
Keep
- PyLadies Tokyo – Official Site は、現在別のCMSで構築されているがこれを機会にSphinxに乗り換える案が出ているようです!ナイスですね
Problem
- 特に大きな問題もなく、もしもの時のために小さい電源タップを持参すると助かる時があるかも?
Try
- ハンズオン質問あるあるみたいなものがまとめられるといいかも
- ハンズオン資料( sphinxjp / handson — Bitbucket )とかSphinx-Users.jpのサイトを見てくと書いてあったりするけど
ハンズオンあるある
エディタ編
- 半角スペース、全角スペース、タブを可視化できるエディタだとエラーに気づきやすい…かも!?
- 不意に混同するとハマっちゃう
アウトプット編(html)
- テーマ、適用されてない?
- (1.3以降の)デフォルトテーマである
alabaster
はそういう見た目なのだ - ブラウザの横幅を変えるとメニューバーが目に見えて変化するのでわかりやすい
- (1.3以降の)デフォルトテーマである
-
default
があるのになんでデフォルトがこれじゃないの?(定番になりつつある質問)- Sphinx 1.3からデフォルトテーマは
alabaster
になった - あわせてデフォルトテーマ
default
はclassic
に名称変更されたが、互換性維持のために残っている - Sphinx 1.3でテーマを
default
に設定してmake html
するとalabaster
使いなよと警告が出る - Sphinxの更新履歴 — Sphinx 1.3.2 ドキュメントによると1.3b3でそうなった様子
- Sphinx 1.3からデフォルトテーマは
$ make html
(略)
WARNING: 'default' html theme has been renamed to 'classic'. Please change your html_theme setting either to the new 'alabaster' default theme, or to 'classic' to keep using the old default.
(略)
golangでニコ動の動画をパトロールするツール「nicony」を作った
あらすじ
年末年始にかけてgolangをまたさわってみた。半年以上触ってないと全部忘れてる。
作ったもの
デモ
できること/やりたいこと
学んだこと
- コマンドオプションのパース(
flag
パッケージ) - 標準以外のロガー(
seelog
cihub/seelog)- ログレベル分け、ローテートとかできるやつを探してみた
- ファイル操作など(
os
,path
パッケージ) - 構造体フィールドタグ(Goのencoding/xmlを使いこなす - Qiita)
- goqueryでWebページのスクレイピング(Big Sky :: Go言語で jQuery ライクな操作が出来る goquery を試した。)
- ニコニコAPIの仕様を少し
あとやりたいこと
- 我流で書きまくってるから、goのお作法を知ったらそっちに寄せる
- テスト作る
とりあえず(30分位で作った)ロゴがあるとテンション上がる。ロゴ駆動開発。
SphinxCon JP 2015 で雑用してきた #sphinxjp
目次
あらすじ
さる11/24にSphinxCon JP 2015が開催されました。
今年はそっこうで枠が埋まったので、発表枠ではなくなんかあった時にフォローに回れるよう雑用枠で参加。(去年は発表枠もらってた SphinxCon JP 2014 で発表してきました #sphinxjp - kk_Atakaの日記)
connpassに資料、Toggeterに当日の様子がまとまっています。
個人的には、鹿野さんの基調講演でまとめられていたドキュメントの歴史がSphinxに限らずものすごく貴重だと思った。
昔に遡れば遡るほど知らない名前の技術が使われており、またそれが少なからず後世のツールに影響があるというのを知っておくと色々楽しい。
振り返りKPT
雑用枠的な振り返り。
Keep
- 1枠あると安心、雑用枠
- スタッフ/発表者は当日諸々の作業に追われる事態も想定して、1人暇な人が待機してるとリカバリ効いていい感じ
Problem
- オープニングにちょっと手間取った
- 会場が開場する前に到着している人が結構多くて入り口でワチャワチャしてて肩身が狭かった…
- 開場が遅れそうな場合は「開場するまで近場で時間つぶしてて」ってアナウンスするとよかったかも
- 主催/発表者/お手伝いの人は何時までに、参加者は開場アナウンス出てから入れるとスムーズだけどうまくいくかな?
- 会場の飲食、電源、WiFi情報の周知
Try
- デリバリー業とスイーパー業をもくもくとやってた
- ゴミの分別とかは予め極めておく
- クロージングと平行して、忘れ物チェックとゴミはゴミ集め場に
- 今回忘れ物はなかったみたい
- SphinxCon 2016開催決定!?
#sphinxjp SphinxCon 2016開催の暗示だ! pic.twitter.com/h3KVQR7oWv
— ごしゅじん (@kk_Ataka) 2015, 11月 24
以下、自分で見直す用
「ドキュメントシステムはこれを使え2015年版」鹿野桂一郎(@golden_lucky)さん
「Sphinxで電子書籍を書こうと色々やってみた」@momijiameさん
- speakerdeckをはてなに貼れん。。。
「SphinxでMarkdownを使う(仮)」@r_rudiさん
- speakerdeckをはてなに貼れん。。。
「Sphinxで手軽に作るドキュメント」@usaturnさん
「Sphinxで社内勉強会(Git)の資料を作ってみた」@takuan_oshoさん
「APIドキュメントの話」@tk0miyaさん
「All docs lead to Sphinx」洪民憙さん
- speakerdeckをはてなに貼れん。。。
Sphinxワークショップ@関西で事例紹介とハンズオンTAをしてきた #sphinxjp
あらすじ
さる10/31に開催された Sphinxワークショップ@関西 にて事例紹介とハンズオンTAをしてきた。
ので振り返りメモ。PyConJPのkptは活かされたのか。
スライド
#sphinxjp ワークショップ@関西で、 @kk_Ataka の事例紹介中 pic.twitter.com/LWPFjZLKyf
— Takayuki Shimizukawa (@shimizukawa) 2015, 10月 31
振り返りKPT
Keep
Problem
- MacのDisplayPort忘れた
- 持ち物チェックリストに追加しよう
- 移動時間をちゃんと見積もるべし
- 帰り際のドタバタ。危うく帰れなくなる所だった(一応、みんな無事に帰れた)
やばい新幹線ぎりぎりかも
— ごしゅじん (@kk_Ataka) 2015, 10月 31
新大阪着いた瞬間セブンセンシズに目覚めないとまずい
— ごしゅじん (@kk_Ataka) 2015, 10月 31
@kk_Ataka 新幹線逃した!
— Takayuki Shimizukawa (@shimizukawa) 2015, 10月 31
Try
- 歴史的経緯も気にしてみよう
- 質問であったのが、「Sphinxのhtmlテーマのデフォルトはなんで
default
じゃないの?(alabaster
なの?)」というもの- Sphinx 1.3からデフォルトテーマは
alabaster
になった - あわせてデフォルトテーマ
default
はclassic
に名称変更されたが、互換性維持のために残っている - Sphinx 1.3でテーマを
default
に設定してmake html
するとalabaster
使いなよと警告が出る - Sphinxの更新履歴 — Sphinx 1.3.2 ドキュメントによると1.3b3でそうなった様子
- Sphinx 1.3からデフォルトテーマは
- 質問であったのが、「Sphinxのhtmlテーマのデフォルトはなんで
$ make html
(略)
WARNING: 'default' html theme has been renamed to 'classic'. Please change your html_theme setting either to the new 'alabaster' default theme, or to 'classic' to keep using the old default.
(略)
その他の感想
- 今回のワークショップ参加者の方は「Officeつらくてなんとか改善したい」派が多かった印象
- 「ポーギーに話す」の正式名称および出典がわかった
「自分の考えてる事を熊ちゃんに話して整理する」って手法、ググり方がわからなくて正式名称にたどり着けなかったんだけど今日清水川さんに正式名称教えてもらえた #sphinxjp - ポーギーに話す https://t.co/Y6I8yvo9NQ
— ごしゅじん (@kk_Ataka) 2015, 10月 31
その中にMITでは学生が教官を患わせる前に一度テディベアに説明しなければならないという話が載っている。
大学も熊もあってた。ただ、熊は熊でもテディベアだった。
ちなみに、今までググってたキーワード群を「熊」->「テディベア」に変えると(「大学 熊 話す」を「大学 テディベア 話す」)、上記のサイトが1ページ目に上がってきたのでもう半歩足りなかったみたい。
ググるにも発想力とアドリブが求められる。ハマると全然引っかからない