AndroidのStatusBar, NavigationBarの高さを持つView群 "android-inset-views" をOSSとして公開しました

Androidにおける StatusBar, NavigationBar 部分にあたる領域分の高さを持つCustom view郡を “android-inset-views” をOSSとして公開しました。
仕事で必要になったモノを汎用的に焼き直したものです。

github.com

以下のコンポーネントが含まれます:

  • StatusBarInsetFrameLayout
  • BottomNavigationBarInsetFrameLayout

想定する用途

android:fitsSystemWindows="true" を指定したり、android:windowTranslucentStatusandroid:windowTranslucentNavigationandroid:statusBarColorandroid:navigationBarColorなどを指定し、StatusBar, NavigationBar 領域 (いわゆるinsets) までコンテンツを広げている際、状況によって領域分のpaddingを持ったり、特別カラーを変えたいなどのシーンがよく発生します。

多くの場合は自前でlistenし計算したものを直接setLayoutParamsするなどしていることが多いかと思いますが、これを利用することでより簡単に実現できるようになります。

License

Apache License 2.0 です。

今後の予定

  • CoordinatorLayoutに対応したい
  • 趣味ではXamarinをよくやるので、Bindingを作りたい

BookStackというOSSを日本語化しました

BookStackというセルフホスティング用Wikiソフトウェアに日本語翻訳を提供し、この度Beta v0.17.0としてリリースされました。

Contributeの背景としましては、仕事で「オンプレミスで利用できる社内情報共有ツールが欲しい」という発注があったためです。
たとえばCrowiなどを候補に入れていたのですが、非エンジニア系の事務所であったために少し要件とズレてしまい、学習コストが低く直感的に利用できるものを探した結果、BookStackがみごとマッチしたという形になります。

BookStackは、

  • WYSIWYGが利用できる
  • ゲストへの公開を含めた、ユーザごとの詳細な権限管理ができる
  • 編集や権限変更等の履歴が記録される

などの特徴を持ち、MITライセンスで提供されているWikiソフトウェアです。

ポリシーベースのキャッシュ管理ライブラリ "Repoli" をOSSとして公開しました

データを永続性メモリ / 揮発性メモリに記録したり、ポリシーベースでよしなに取得し直したり消したりできるライブラリ “Repoli” を作ったので、取り急ぎ公開しました。
仕事用に作ったモノを汎用的に焼き直したものです。

github.com

主な用途としてはAPIリクエストのキャッシュを想定しています。
JavaやAndroidのプロジェクトで利用できます。

対応プラットフォーム

  • coreのみで一般的なJavaプロジェクトで利用できます。
  • rxjava1はRxJava1.x用にバインドしたものです。
  • realmはAndroid用にRealmとの繋ぎ込みをしたIStorageの実装を同梱しています。

使い方

こちらのテストコード が実際の利用に近いので、こんな感じで書けば使えます。
早めに設計のUMLを公開用に焼き直すので、しばしお待ちを。

ライセンス

Apache License 2.0です。

てきとうにサクッとDNSサーバを立てる using Docker

macOSでやった。Docker (docker-compose) を使う。

この前作ったコレを使うと何も考えずにできる。

github.com


使い方。
当該リポジトリをcloneしてくる

$ git clone https://github.com/S64/dockerfile-dns.git
$ cd dockerfile-dns

同梱のdocker-compose.example.ymlを元に、docker-compose.ymlをつくる。

$ cp docker-compose.example.yml docker-compose.yml # .gitignoreで無視してるので安心して

以下のようにして立ち上げられる。

$ ./up_daemon.sh

または、これでそのまま立ち上げられる。

$ docker-compose up # --force-recreate --build -d
# docker-machineを使ってる場合は `docker-compose $(docker-machine config yourmachinename) up`

以下で停止できる。

$ ./down_daemon.sh

または、これでそのまま停止できる。

$ docker-compose down # --rmi local
# docker-machineを使ってる場合は `docker-compose $(docker-machine config yourmachinename) down`

解決したいドメインの追加はdocker-compose.ymlを編集すればできる。/services/dns/extra_hosts/*の位置にFQDNを書く。たとえば以下のように。

...
      - 8.8.4.4
    extra_hosts:
      - "example.dev:93.184.216.34"
      - "yourawesomedomain.local:192.168.0.1"
    cap_add:
...

上流のDNSサーバは/services/dns/dns/*で追加できる。

...
    restart: always
    dns:
      - 8.8.8.8
      - 8.8.4.4
      - 192.168.0.1
...
    extra_hosts:

標準ではdockerデーモンと同時に自動起動するので、手動で立ち上げるようにしたければ/services/dns/restart"no"変える。

...
      - "53:53/tcp"
    restart: "no"
    dns:
...

疎通 / 解決チェック。ローカルマシンで見る場合は

$ nslookup example.dev 127.0.0.1
# docker-machineなら nslookup example.dev $(docker-machine ip yourmachinename)

LAN内の他マシンから見る場合は、まずこちらの記事を参考に自分のIPアドレスを取る。

blog.s64.jp

いちおうこんな感じ。

# on macOS
$ ipconfig getifaddr en0 # 使ってるネットワークif

んで、他のマシンからnslookupする。

$ nslookup example.dev 192.168.0.xxx # さっき取ったIPへ試す

DNSサーバは53番ポートを使うので、もし上手く行かない場合はこちらをチェック。

blog.s64.jp

特定のGitリポジトリだけ名義を変える

仕事で生徒の演習やる時に使った。
会社は実名+会社メールアドレス、プライベートはハンドルネーム+個人メールアドレス、みたいに使い分けたい時に便利。

git init済みのディレクトリで

git config --local user.name 'リポジトリ限定ユーザ名'
git config --local user.email 'mylocalusername@example.com'

という風にやればいい。

リポジトリローカルな設定を消して元に戻したい (globalのを使いたい) 場合は

git config --local --unset user.name
git config --local --unset user.email

すればいい。