おはやし日記

テーマ……バイク←プログラミング←旅

AlertDialogとSnackbarの合わせ技

課題

ダイアログの中でSingleChoiceItemsをクリックした時にSnackbarをDialogの上に出したい

現状

だいたいこんな感じ

String[] strings = new String[]{"hoge", "fuga", "piyo"};
new AlertDialog.Builder(this)
                .setTitle("Before")
                .setSingleChoiceItems(strings, -1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Snackbar.make(findViewById(R.id.coordinator), strings[i]+" was selected", Snackbar.LENGTH_SHORT).show();
                    }
                })
                .setNeutralButton("閉じる",null).show();

f:id:o-treetree:20210410042841p:plain

ダイアログの中のアイテムを押した時、Snackbarは出るがDialogの下にある

解決

androidDialogSnackbar

f:id:o-treetree:20210410043722p:plain

アイテムを押すと、Dialogの中にSnackbarが出ます。ちなみにSnackbarにアクションを設定しておけば直接押すことができます(以前のようにDialogの下に出てると、Dialogを消さないとSnaackbarのボタンに触れなかった)。

Snackbarが出る時にDialogがちょっと膨らんで動くが妥協範囲内。

ポイント

そして

  1. 自作したViewをinflateで設定(final View v
  2. AlertDialogをdialog = ....create()までする
  3. SingleChoiceItemsOnClickListenerで出すSnackbarは先ほど設定したvに紐づける
  4. vの中のボタンandroid:id="@+id/dialog_button"のonClickでdialog.dismiss()をするようにする
  5. dialog.show()

おわり

Snackbarをスワイプした時にログに下記のエラーが出るが、一応動いているのでヨシ!

E/ViewDragHelper: Ignoring pointerId=0 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because  ViewDragHelper did not receive all the events in the event stream.
E/ViewDragHelper: Ignoring pointerId=-1 because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because  ViewDragHelper did not receive all the events in the event stream.

ダーツライブ200s購入!設置の備忘録

ダーツライブ200sを買いました!

www.dartslive.com

ゼロボード(↓)と迷ったのですが、どうせ買うなら自動計算してくれる方を、と思って奮発して200sにしました。

www.dartshive.jp

とりあえず設置したので色々メモしておきます。

なお、突貫工事で設置したため雑にひっかけただけになっています。真面目に取り付けたい方は参考程度に読んでください。

買ったもの

www.amazon.co.jp

幅60cmのを買いましたが、スペースに余裕があるなら90cmあったほうがいいかもです

以下、取り付けのために買ったもの。すべて東急ハンズ

  • 防振パッド 10x50x50(5cm角)¥74 x2
  • 防振パッド 10x75x75 ¥104 x2
  • キレイに曲がるステン板 96mm ¥82 x4 参考: モノタロウ
  • ステンキャップM4x10 ¥242
  • ステンキャップM4x20 ¥242
  • ステンナットM4 ¥132
  • ステンワッシャM4 ¥148

突っ張りパーテーションの設置

とりあえずパーテーションを設置してしまいました。これはプラスドライバー1本あれば大丈夫でした。

200sを引っ掛けるヤツ作成

ステン板を曲げてループにしてボルトで留め、下の方にもボルトをつけます(ナットでステン板を挟み込むようにする)。下の飛び出たボルトにボードを掛けます

パーテーションに取り付け

200sに、ボルト取り付け位置が原寸大で書いてある紙があるので、それでいい感じの高さにつけます。

いい感じにつけたと思ったけど、4つの固定点のうち2つか3つしかちゃんとかかってないです……

200sを取り付け

頑張ってボードをひっかけます。机に乗って上から覗き込みながらやりました

あと、そのままだとガチャガチャするのでタオルを挟みました。

ちょっとプレイした感想

刺さりは良い。まあ新品だし。

音はあんまり気にならないかな。自分がドンカンなだけかもしれませんが……

オンライプレイ、案外人がいてイイですね。

寸法とか

横 570mm, 縦 530mm

200s下部からブル中心まで 265mm。つまり、ひっかけて固定するのができなかったら高さ1435mmのところに置けばいいということです。

まあ、木の板等にネジ埋め込んでやるのが一番ちゃんとしていいんですけどね

写真

f:id:o-treetree:20210405221641j:plainf:id:o-treetree:20210405221653j:plain
防振パッド・天井側

f:id:o-treetree:20210405221705j:plainf:id:o-treetree:20210405221719j:plain
フックの図・写真

まとめ

本体以外の設置費用は5783円でした。まずまずって感じですね。全部で28500円くらいなので、休日の快活ダーツ3時間1000円として29回分ですね。5~6ヶ月分で元が取れるかな。おしまい。

4月。特に変化なし。

こんにちは。

フリーターなので新生活もクソも無いです。

4/1

毎月1日は映画が安いので、シンエヴァを見に行きました。3回目かな?

ポップコーンとジュースを買って、飲み食いしながら観ました。一度やってみたかったので。

飲食販売が映画館の収益に占める割合が高いらしいので、応援の気持ちも込めて。

当日空き席見て端の方に陣取りました。周りを(あまり)気にせず観れるのは、これはこれで面白いと思った。

その時に映画館のスタッフを見ていて思ったコレ↓は、なかなか自分の本質をついている気がした。

遊園地のスタッフはちょっと陽キャすぎるかな……なんかちょうどいい仕事ないかね

旅行計画

12月に四国に行く計画を立てています。バースデイきっぷが使えるので。楽しみ。

バースデイきっぷで乗れる区間を全制覇するのが目標です。

電工二種

一回取ろうとしたらコロナで延期になって、春の受験料を秋に振り替えたの忘れてて受験料をドブに捨てたので、リベンジです。

かけいぼあぷり

鋭意開発中。

https://github.com/oha-yashi/MoneyControl_public

最低限の機能は安定して動いているので、拡張していきたいですね。

まとめ

まだしばらくはダラダラと生きながらえるつもりでいる。おしまい。

mstdn.jpのアプリケーションのユーザー認証

メモ。

アプリの登録

  • client_name -> アプリ名
  • scopes -> アプリの権限。複数あるとき空白区切りでいいらしい
curl -X POST \
 https://mstdn.jp/api/v1/apps \
 -F 'client_name=ohaToot' \
 -F 'redirect_uris=urn:ietf:wg:oauth:2.0:oob' \
 -F 'scopes=write'

レスポンス

{"id":"602156","name":"ohaToot","website":null,"redirect_uri":"urn:ietf:wg:oauth:2.0:oob","client_id":"CLIENT_ID","client_secret":"CLIENT_SECRET","vapid_key":"VAPID_KEY"}

CLIENT_IDCLIENT_SECRET等は実際それぞれの値が返ってくる

アプリケーションの認証

https://mstdn.jp/oauth/authorize
?client_id=CLIENT_ID
&scope=write
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&response_type=code

にブラウザでアクセスする。

  • scope -> OAuth Scopes - Mastodon documentationにあるアプリの権限
  • redirect_url -> 自分でサーバー持ってればそのURLにしてどうこうできるらしいが、できないのでこの変なやつにしておく

f:id:o-treetree:20210319220107p:plain
認証画面

「承認」を押すと、認証コード(authorization code)が出てくる

f:id:o-treetree:20210319220356p:plain
認証コード

redirect_urlに自前のサイトがないのでここが手動コピペになる

アドレスバーを見るとhttps://mstdn.jp/oauth/authorize/native?code=AUTHORIZATION_CODEになっているのでそこでどうにかできるかもしれない。知らんけど。

アクセストークンの取得

  • scope -> アプリケーションに付与した権限内で。
curl -X POST \
https://mstdn.jp/oauth/token \
-F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
-F 'grant_type=authorization_code' \
-F 'code=AUTHORIZATION_CODE' \
-F 'scope=write' 

レスポンス

{"access_token":"ACCESS_TOKEN","token_type":"Bearer","scope":"write","created_at":1616159761}

API利用

ようやく色々できるようになった

トゥート投稿statuses - Mastodon documentation

curl -X POST \
https://mstdn.jp/api/v1/statuses \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-d 'status=ほげ' \
-d 'visibility=unlisted'

レスポンスはなんか長いJSONが返ってくる。

{"id":"105916667149699590","created_at":"2021-03-19T13:21:22.245Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"unlisted","language":"hi","uri":"https://mstdn.jp/users/ohys/statuses/105916667149699590","url":"https://mstdn.jp/@ohys/105916667149699590","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eほげ\u003c/p\u003e","reblog":null,"application"............

投稿成功。

AndroidアプリでHTTP通信(POST)

こんにちは。前にcurlでhttpリクエストが出来たので、今ハマっているアンドロイドアプリでも出来ないかと思い、いろいろ調べて実装してみました。

内容は、マストドン(mstdn.jp - mstdn.jp)への定型文のトゥートです。

下準備

APIを叩くときに必要なアクセストークンをゲットします。

  1. マストドンのどこか(自分はmstdn.jpで試しましたが他でも同様と思います)でアカウントを取得する
  2. メニュー→開発→新規アプリと進む
  3. アプリ設定
    • アプリの名前を入れる
    • ウェブサイトは空白でいい。リダイレクトURLもデフォルトのurn:ietf:wg:oauth:2.0:oobでいい
    • アクセス権はwrite:statusesがあれば十分
    • 送信、を押すと新しいアプリが登録される
  4. クライアントキー、クライアントシークレット、アクセストークンが発行されます。とりあえずアクセストークンが必要なものです(使える期間についてはよくわからん)

ここをアプリ内で処理するのが理想ではあります

続きを読む

投汁そば(とうじそば)を食べました

現在旅行中です

旅行のことはさておき(?)1日目の夕飯で「投汁そば」を食べました。

お店は松本駅すぐの みよ田 松本店 です

注文したのは投汁そばセット(スペシャル)¥2200(税込)です

グルメな人間ではないので雑な感想ですが書いていきます

f:id:o-treetree:20210312030616j:plain

最初に出てきた前菜です。手前の3つ並びは左から

  • 葉わさびの(確か)和え物

    ほうれん草に似てるが、ほうれん草だと思って食べるとめちゃくちゃツーーーンとくる

  • イカときゅうりの……(忘れた)

    うまい

  • 焼き味噌

    初めて食べたんですけど、甘くておいしい

後ろの肉は馬刺しです。

う〜む、よく分かんなかったです。もっちゃりした肉、という感じ

次、メインの投汁そばです

f:id:o-treetree:20210312031413j:plain

投汁そばとはなんぞや

「投汁そば」とは野麦峠で有名な旧奈川村(現松本市)に古くから伝わる郷土料理です。ふつふつと沸いているきのこや山菜などの野菜がいっぱい入った出汁の中に、冷水でキリッと締めたそばをまるでしゃぶしゃぶの様に温めて、フーフーして食べる、まさに寒い信州ならではの、美味しいそばの食べ方です。
汁の中に投じるということで「投汁そば」。普通のかけそばと比べ、つゆに浸かっている時間が短いので伸びていません。そしてなんといっても温まります。何せ摂氏100度のそばですから。
メニューの説明書きより

なるほど頭のいい食べ方です

f:id:o-treetree:20210312032130j:plain

こんな感じで、ざるにそばを入れて2~3分鍋に放り込み、きのことかと一緒にお椀によそって食べます

一度熱いのをフーフーして食っても、かけそばなら時間経過で残りが冷めてしまうのに投汁そばなら次もアツアツなのが良いですね(そう書いてあるだろ)

そばを食ったら、残りはそばの実で雑炊にします

f:id:o-treetree:20210312033242j:plain

卵でとじてあります

そばの実は…………やっぱよく分かんない……そばの味がするのかなと思ったけどそもそもそばの味ってなんだろってなった……

最後にせいろそばでシメです。

感想

松本といえば蕎麦、らしいので蕎麦を食いました。投汁そば、面白かったです。家でもやれる食べ方だと思うので試したいですね(本当にやるんかお前)

おしまい。

【後ろの方ネタバレあり】シン・エヴァンゲリオン劇場版

どうせネタバレ考察はガチ勢がすぐにも出すでしょうし、自分も内容を飲み込めてないので特には書きません

ネタバレ無し

7時の回でした

チケット発券して、パンフを買いました。グッズコーナーは入場規制のため一人一つカゴを配ってました

それをもらったのでせっかくだから、ステッカーとクリアファイルを買いました

長かった

最後の方腹減ってた

最後はマスクの中で開いた口が塞がらなかった

神妙な面持ちで、次上映回を待つオタクの横を通って帰りました(てか今からバイトなんだけど)

やっぱしここからネタバレ感あります

ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

以下ネタバレあり

上映後すぐ

まあ、破とQでひっちゃかめっちゃかにしたのを、TV版からひっくるめて終わりに持ってったなって感じ

忘れ去られたと思われたネブカドネザルの鍵も出てきたし、良かったですね?

箱根以外に新たな聖地が誕生しましたね。宇部新川です笑

遠いな

【以上、3/8 10:07】

2ちゃんネタバレスレとか見たりしたあと

庵野エヴァを終わらせるための映画」だったなって感じ。まあ別に自由にしてもらって構わないし、ストーリー的にもオチたなって感じなので満足。

CGは相当大変だっただろうなと思った。インフィニティやらなんかよく分からん集合体とかあったし。

パリのシーン、パソコンがPanasonic製でしたね。たぶん。さすがの耐久性というべきか

トウジとか生きてて良かったね。ヴィレの下部組織?のKREDIT(だっけ?)が配給とかしてるそうで。結構人類生きてんじゃん

アヤナミレイ(仮称)が『ポカポカ』してきたあたりはほんわかパートでしたね。

アスカが寝込んでるシンジの口にブチギレながらレーションを突っ込もうとするシーン、やたらアクション感ある画で笑った

ミサトさんとかもなんか人間味を取り戻しました。良かった。シンジがピンク髪とかサクラから銃を向けられてるシーン、ミサトさんがかばって打たれるんだろうなと思ったらそのとおりでした

マイナス宇宙って、ナニ?w

なんか厨二臭い横文字ばっかりでしたね。「こっちはスーバーエヴァンゲリオンだ!」「こっちにはハイパーエヴァンゲリオンがいるぞ!!」「それならこっちはエクストリームエヴァンゲリオンを出す!!!!!」みたいな空気感があった

最後の宇部新川は、何なんすかね、「すべてのエヴァが消えた」世界ということなんでしょうけど。宇部新川は確かシン・エヴァのポスター(線路のポイントのやつ)もそこで、ついでにいうと庵野監督の地元なんですよね

精神世界(ゴルゴタオブジェクト)に入ったあたりからは出たなオメー笑みたいなのの連続でしたね。赤い水中に浮かんでたり、夕焼け電車のシーンとか、原画だけで見せるとか、セットの中で戦うとか。

エヴァのない世界にする、というのを『ネオン ジェネシスNEON GENESIS(新世紀))』と表現していて、まあよく思いついたなとは思いましたが、アニメ版から全部をひっくるめておしまいにするんだというメッセージがバチバチに伝わってきましたね。

旧劇と新劇は別世界(カヲルくんはループしてる)なのかな?うーん分からん笑

まだパンフ読んでないし。

【ここまで、3/8 16:07】

プライバシーポリシー ・お問い合わせはこちら