Android:Float値を扱えるカスタムSeekBarPreference

Float値を扱えるカスタムSeekBarPreferenceを作った.

GIF

動機

AndoridXのSeekBarPreferenceAPI)はSeekBarPreference#getValue/setValueIntしか受け付けない.Float型を扱えて,かつ値のフォーマット文字列を指定できるPreferenceクラスを自作した.

実装

SeekBarPreference for Float with value formatter · GitHub

\[ twitter やめ方 ] [検索]

近況について書こうかなと思いましたが一日目から暗い記事もアレなんで別のネタを書きます.

争い,自分にとってはどうでもいいこと,その情報は自分にとって有益なものなのか?私はただゲラゲラ笑っていたいだけなのに.そんなこんなでTwitterをやめることにしたわけですが,情報中毒患者の自分は情報を取り入れないと気がすみません.というわけでSlackを活用しましょう.

Advent Calendarを登録しておくと新しい記事を勝手に拾ってきてくれるスクリプトを書きました.OUCC Slackの #advent チャンネルに qiita.com 又は adventar.org のURLを投げると一定時間毎に新たに登録された記事を確認し,投稿してくれます.これでみんなもっとSlackを使ってくれるようになるかな.

みんなTwitterをやめよう

2016年12月4日 追記 ソースコードを公開しました github.com

SlackにownCloudの更新通知をする

github.com

このアプリを利用すれば良いのだが,ownCloud 8に対応していないし,ownCloudの内部にパッチを当てる必要があって,使いづらい.自力でownCloud 8に対応させるかと思っていたら,もっといい方法を見つけた.

f:id:yuntan_t:20160209084243p:plain

「アクティビティ」画面で左下の歯車アイコンを押すとRSSフィードのURLが取得できる.

f:id:yuntan_t:20160209084541p:plain

SlackのApp DirectoryRSSというアプリがある.定期的にRSSを取得して更新があればchannelに流してくれる.更新間隔は指定できないぽい.

f:id:yuntan_t:20160209084752p:plain

簡単だった.

Visual Studio Codeのすゝめ (Golang寄り)

OUCC Advent Calendar 2015 5日目の記事です.

VSCodeの紹介

Connect(); 2015でVisual Studio Code v0.10.1 beta(以下VSCode)が発表されました.

www.publickey1.jp

プレゼンテーション中にリポジトリを公開したそうです.ちょーかこいいですね.ダウンロードはこちらから.

0.10.1における新機能はこちらにまとまっていますが,この中で特に注目したいのが拡張機能のサポートですね.Marketplaceには発表後にどんどん拡張機能が公開されています.

Go言語拡張

数ある拡張機能の中でも特に注目を集めているのがGo言語の拡張ですね.Connect();でも紹介されています.

www.publickey1.jp

Go言語をサポートと聞いて「シンタックスハイライト程度でサポートしたというのはちょっと…」なんて思っていたのですが,ちゃんとコード補完,定義にジャンプ,リネームもサポートされています.これは拡張機能の開発者のツイート.

そしてなんと

http://i.giphy.com/3oEduO9Rx6awkds4es.gif

デバッグもちゃんとサポートされています.それまでGoを書くのにViMを使っていたのですが,デバッガが使えるというので乗り換える気になってしまいました.VSCodeはデバッガのインタフェースが組み込まれているのがViMatomに対する優位点ですね(ViMatomでもデバッガを使おうと思えば使えるのだけど).

拡張の機能の紹介(軽く)

インストール方法とかセットアップ方法はREADMEにあるとおりなので省略します.go getで関連ツールをインストールする必要がある点に注意してください.

まあ普通に候補・補完・スニペット,シンボルをマウスホバーで詳細表示,定義にジャンプ,シンボルリネーム等効きます.編集時にリアルタイムでコード解析しエラーを表示してくれます.C#で開発してるみたいな感覚ですね(伝わりにくい感想).まあでもここまでならViMでできます.

デバッグ機能の紹介

VSCodeの目玉,デバッグ機能です.デバッグにはdelveを使用しています.なのでdelveのインストールが必要になります.現状Windowsはサポートされていません(delveが現状Windowsに対応していないからですが,開発中のPullreqが建っているのでそのうちサポートされるでしょう).Linuxではgo get github.com/derekparker/delveするだけなのですが,Macでは色々とややこしそうです.Building · derekparker/delve Wikiを見ましょう.

delveコマンドが使えるようになったら次にlaunch.jsonを書きましょう.VSCodeのデバッグペインを開いてサイドバー右上の歯車アイコンをクリックします.READMEにも例はありますが,こんな感じです.

{
    "version": "0.1.0",
    "configurations": [
        {
            "name": "Launch syaro",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "main.go",
            "stopOnEntry": false,
            "env": {
                "SYARODIR": "build"
            },
            "args": ["sample"]
            // "cwd": "build"
        }
    ]
}

programにはpackage main宣言をした(つまりmain関数を含む)ファイル又はパッケージのディレクトリを指定しましょう.stopOnEntryは現状効果がありません.envargscwdはそれぞれ,実行されるプログラムの環境変数,引数,ワーキングディレクトリを指定しますが*1delveがワーキングディレクトリの変更をサポートしていないのでcwdは現状効果がありません*2

実際にデバッグしている様子がこちらです.デバッグしているのはサーバーアプリケーションです.デバッグコンソールにログが流れ込んでくる様子*3ブレークポイント,コールスタック,変数の確認,ステップ実行機能が確認できますね.*4

youtu.be

この記事では紹介しきれませんでしたが,VSCodeはnodejs(TypeScript/JavaScript),C#での開発もサポートしています.これからも拡張機能の充実によりサポートされる言語は更に増えると思われます.VSCodeはAtomより一歩進んだコーディング環境が欲しい!という欲求を叶えてくれることでしょう.

番外 | JSON RPC 2

delveとの通信にはJSON-RPC 2.0という規格が用いられている.node(VSCode)からdelveのプロセスをヘッドレスモードでspawnして通信するだけ.json-rpc2パッケージを使えば簡単に通信できる.おそらくブラウザでも使用できるだろう.gRPCは今のところブラウザで使えないからなぁ…

HaskellでGoのtimeパッケージの模倣

Haskellで定期実行をしたいと思い,HaskellのスレッドシステムとSTMについて その1 — ありえるえりあとか見ながら書いた.

gist.github.com

先のリンクの記事にもあるようにメインスレッドで待ってやらないと終了するので,chanを使って待たせた.Goのchanと同じ考えで,chanの受信待機するとスレッドが止まると思いこうした.

ところで,GoのtimeパッケージにはAfterTickという関数がある.どちらもchan Timeを返し,これを用いて定期実行を以下のように実行できる.Haskellでも同じことができないかと考えた.

gist.github.com

Haskelltimersパッケージがあるが,こちらはIOを受け取るもののようだ.

参考

LaTeXで迷うこと・間違えること

どうでもいいっちゃどうでもいいことなんだけど

www.johndcook.com

ここに書いてあるのは

1. Quote

"Yes."

{"Yes."}

ではなく

``Yes."

{``Yes."}

2. 微分

{d}の前に空白を作る.{dx}はひとまとまりに見えるようにする.

dx  dy = r  dr  d\theta

{dx  dy = r  dr  d\theta}

ではなく

dx \, dy = r \, dr \, d\theta

{dx \, dy = r \, dr \, d\theta}

3. sinとかlogとか関数名

{\LaTeX}で定義されているものを使う.

\sin 2u = 2 \sin u \cos u

{\sin 2u = 2 \sin u \cos u}

4. inline math

文中の記号はinline mathで書く.

Given a matrix $A$ and vector $b$, solve $Ax = b$.

Given a matrix {A} and vector {b}, solve {Ax = b}.


といったところ.2は知らなかった.

で,それ以外にもだな


5. 括弧のでかさ

display mathで縦に長い式を括弧で囲むとき

\left(\int_0^1 x /, dx \right)

{ \displaystyle \left(\int_0^\infty x \, dx \right)}

てなかんじに\left(\right)で囲まないとかっこわるい

6. 微分記号の{\mathrm{d}}は斜体にしない

上の式でもやってる間違いなんだけど{\mathrm{d}}を斜体にしてはならない.斜体にならないようにするには

\mathrm{d}x

{\mathrm{d}x}

のように,\mathrmを使う.

TODO: じゃあ{\partial}は?

7. ネイピア数,虚数の記号は斜体にしない

{\mathrm{e}}とか{\mathrm{i}}も斜体にしてはならない.

8. 上付き,下付き

よく

10^12

て書いて

[tex:{1012}]

になっちゃうことがある.ちゃんと{}で囲む

10^{12}

{10^{12}}


これ以外にもありそうだけど

ところで,6,7については斜体にするのが間違いということでいいんだろうか?最初に上げたブログでは

Jeremy: I believe that is the European convention. My American eyes are accustomed to ‘d’ set in math italic.

という投稿者コメントがみられる.それからローマン体(イタリックにしない)を使うには\textを使えだとかネイピア数は\operatorname{e}にしろというコメントもある.

{\LaTeX} めんどくせぇ…

参考