@lo48576 たしかrsync で case insensitive やろうとすると -y --delete-after とかいろいろ工夫せねばならなかった気がする https://superuser.com/questions/256751/make-rsync-case-insensitive
@lo48576 たしかrsync で case insensitive やろうとすると -y --delete-after とかいろいろ工夫せねばならなかった気がする https://superuser.com/questions/256751/make-rsync-case-insensitive
@lo48576 大文字小文字の扱いでまずトラブル起きそう…。手動で転送したABC.mp3 とm3uから読んだabc.mp3をrsync --delete がどう扱うか
@lo48576 A系列ならSDカードだろうからFATかexFAT、Android系列なら一応unix path全部使えるけどZ2以降は多分SDカードに転送したいですよね
@lo48576 それ以前に、出力先のファイルシステムでそんな文字が使えるのか非常に気になります。ウォークマンですよね?
bashスクリプトでのファイル名引数のエンコード、 \x00 を正しくエンコードする方法がなくて、OSのAPIが許容する文字コード設定によっては万全にはなれないって結論に自分の中ではなってた
@lo48576 それはどっちかというとコマンド実行時の引数を正しくエンコードする話なので、ファイル名パースの話とは割と別な気がするよ
#SubwayTooter ならぬ Subway Tweeter というアプリを昔公開してた。
といってもフルスタックの鳥アプリではなく、他アプリからACTION_SENDされたツイートを端末中に保存しておき、接続が回復したタイミングで自動的にファボ,RT,返信するというアプリだった。
当時の地下鉄は電波がなかったから、通勤時に停車駅でDLしたTLを走行中に読んで気になるツイートがあっても、その場ではアクションを取れなかったのだ。
今は都内の地下鉄で電波が届かない区間は非常に限られているので、Subway Tooterの方はそういう配慮は特にしていない。
@lo48576 ていうかそんな変なファイル名は誰も使わないんだから、そのままstat()できないファイル指定はエラーケースとして転送対象から除外すればいいんじゃ…?
@lo48576 正式な仕様なんてないから、そういった特殊文字を含むファイルをLinux上のアプリにをDnDしてからプレイリストを保存してどうなってるか確かめるしかないのでは。(Windows環境だとそもそもファイル名にそんな文字を指定できない) 当然アプリによって挙動が変化する可能性もある
このアカウントは、notestockで公開設定になっていません。
通知のバイブレーションのカスタマイズってAndroid O で仕様が変わるらしくてちょっと様子見したい感じが… https://developer.android.com/reference/android/os/VibrationEffect.html
#SubwayTooter への寄付でAmazonギフト券が届きました。送ってくれた方ありがとうございます。
@takke githubで普通に2.2.7のタグを取れます。対応ありがとうございます。 https://github.com/emojione/emojione/tree/v2.2.7
@takke #EmojionePicker なんですけど、現時点でMastodonが使ってるのEmojione はフリーライセンスだった2.2.7ですが、EmojionePicker で使ってるのは多分3.xですよね。 🤹 が男性と女性と分かれてるのは3.x以降の特徴だったりします。 マストドン向けということなら2.2.7あたりのサポートを検討した方がいいかも?
:man_juggling::woman_juggling::person_juggling: あれ。もしかして
@TamaX31 そんな人はコレをどうぞ https://mastodon.juggler.jp/@tateisu/1255192 SubwayTooter 0.7.3移行ならIME経由じゃなくてもマッシュルーム呼び出せるよ
@michan06 てーか、コンテントワーニングにタグ書いても認識されませんよね…
@karuichi MastoPaneの人がEmojione Pickerマッシュ作ってくれてたのでサクッと呼び出せるようにしてみましたん
@karuichi マッシュルームIME拡張ののことです。IMEなしでも呼び出せるようにしただけ
@michan06 モジュールの依存関係がよく分からないっていうかRDBも要るよ
そうだよなあ、プレミアムフライデーなんか推進するより「金曜日は友達と会おう」とかキャンペーンしたほうが絶対に経済効果でかいんじゃないかと思う
あ、ハッシュタグの自動補完でキャレット位置によってはうまく動かないバグがあるな…多分致命的じゃないから次のリリースで直す
v0.7.3
- アカウント追加時にインスタンス名に@が含まれてたらエラーを出す
- 投稿画面でハッシュタグの入力補完
- アプリ設定に「タブインジケータの色」を追加
- 投稿画面にマッシュルーム呼び出しボタンを追加。 Panecraft, Inc. の https://play.google.com/store/apps/details?id=com.mastopane.emojionepicker と合わせてお使いください
カタカナで始まるタグは入力変換中はひらがなだからsqliteのLIKEじゃマッチしないな…
TL中のStatusのTagのnameは小文字化されてるので、自分が投稿したデータに限りレスポンス中のリンクをみてタグを抽出するなどした
このアカウントは、notestockで公開設定になっていません。
#2chMate とかはIME経由せずにマッシュルーム呼び出すボタンがあったりしたよね。ウチのアプリでもやるかなあ
#MastoPane の作者さんがスマホ用のEmojione Picker マッシュルーム拡張を作ったみたい
https://play.google.com/store/apps/details?id=com.mastopane.emojionepicker
スマホの場合はIMEで絵文字入力できるんだからそれでいいじゃんと思ってたんだけど、需要はあるのかしらね。
IME拡張だから、対応IMEを使ってる人なら #SubwayTooter でも利用できるっぽいよ
あまり関係ないけどウチで絵文字入力の要望が来た時って「物理キーボード使っててIMEはExternal Keyboard HelperでOFF(null IME)にしてるからアプリに絵文字ピッカー載せてくれ」とかいう人からだった。日本だとIMEと物理キーボードを共存させるのが普通なんだけど、海外だとそのへんの事情から違うらしい。null IMEじゃマッシュルーム呼び出しも出来ないよな…
emojione pickerを頑張って作ったけどダウンロード数が 10 だったのでがっかりしてやる気失った:innocent:
Mastodon公式のBBS? に App と Translationのカテゴリができたみたい https://discourse.joinmastodon.org/c/apps https://discourse.joinmastodon.org/c/translation ただし現在何もトピックがない
@miyabi417 カラム設定でカラムごとに色を付けられるから、「今いるタブ」を強調表示するなら色変え以外の何かの方法になると思います
@miyabi417 アカウントごとに色分けはもうあるよ。アカウント設定で通称と色を設定するとカラムストリップのアイコンの下に色がつくよ。
tusky-apiを見よう見まねで弄ってるだけなんで、まずbabel-nodeというのが何か分かってない
@tacostea 自分で使うだけなら、私にDMしなくてもカスタム通知リスナをアプリに設定するだけで動きますよ
@Clworld 多分アプリ側の事情でそこは変わるんだから/registerに情報を削るオプションとか追加すると良いかな?今はまだ必要ないと思うけど、帯域が厳しいって人が出て来たらやってもいいかも
@Clworld 多分そう。ある程度眺めてたから分かった話ではあるけど。ただ、Streaming Listener自体は他の用途にも使える(と思ってる)ので、削るかどうかは検討が必要だと思う
@Clworld アプリまでFCMのデータメッセージが複数回来る可能性はあるんですが、FCMのデータサイズ4KBに収まらない場合が結構あるので通知データそのものは含まれてないんですよ。結局端末側が普通のAPI読み直してて、その起動トリガになってるだけなん
…オプション機能だからなくても別に困らないとはいえ、非常にケチ臭い&一般人置いてけぼりな方向に突っ走ってしまったなあ…
node.js マジ分からんし、見られて恥ずかしいコードしか書いてない自覚がある
自分で Streaming Listener を建てて、どのタンスでもSubway Tooter のリアルタイム通知を使えるようにする方法
https://github.com/tateisu/mastodon-streaming-listener/blob/master/guide2.md
#SubwayTooter #MastodonStreamingListener
カスタム通知リスナの設定を追加。自分で通知受信サーバを建てられる人向け
https://github.com/tateisu/mastodon-streaming-listener/releases/tag/v0.0.3
Sequelize ORM のモデル指定に index 指定を追加した
mstdn.jpのような301リダイレクトを返すサーバに対応した
接続エラー発生時に再 接続を
スケジュールしすぎる問題の修正
#mastodon -streaming-listener
開発当初から鯖缶向けクライアントを標榜していたが、まさかこんな展開になるとは予想してなかった #SubwayTooter
StreamingListenerを自分で建てた人は、サーバと
#SubwayTooter アプリに特殊な指定をすることでどのタンスでも自鯖のStreamingListener経由でリアルタイム通知できるようにした
StreamingListener で、Streaming API が mstdn.jp みたく 301 を返す場合にちゃんとリダイレクトするようにした
このアカウントは、notestockで公開設定になっていません。
@Clworld その場合でもアプリサーバ的には大量のソケット抱えずにすむとかWebSocket.ping() で無駄に帯域消費しないとかでありがたい話ではあるんですよ
ていうかWeb PushきたらListenerが陳腐化するのはまず確実だけど、いつ来るのか分からんしね…
@Clworld なるべくタンスの近くにListenerがあった方が効率的ですけど、少数が使うListenerなら別に問題ありませんからね。タンス管理者が動いてくれない場合でもユーザ側で動ける選択肢があるのは良いことなんじゃないかと。あと自分的には寄付してくれた人にも使ってもらうイメージ
@Clworld もしこんな感じの仕組みがあったら使いますか? https://github.com/tateisu/mastodon-fcm-sender/issues/2
どっちかというと特定ユーザだけどのインスタンスでも特定のListenerサーバに案内する仕組みがあればいいんだよな、自鯖勢としては
@Clworld アプリサーバから複数のListenerサーバをバランスして使えるような仕組みがあればマシになるんだろうけど、結局リソースがないと試すことすらできないので保留してる
node.js わからんので見様見真似でコード弄った。なんでDB操作系が軒並みPromiseなのにWebフレームワークだけ非同期しづらいExpressなんや。Koa 入れるにはnode.jsのバージョンから上げないとダメそうだし動作環境的に色々つらそうで諦めた。結果 202 Acceptを返して処理結果はAPI呼び出し側からは分からん感じになった
#SubwayTooter のリアルタイム通知は、タンス管理者が協力してくれたタンスでだけ有効です。 無料無広告のアプリで継続可能なのはこれが限界。 詳細はこちら https://github.com/tateisu/mastodon-streaming-listener/blob/master/guide.md
バグ修正です。
アカウント設定でアクセストークンを更新したらすぐにリアルタイム通知の登録更新を行う。 (以前のバージョンでも5-10分待てば更新されていました)
アカウント設定でアカウント削除したらリアルタイム通知の登録解除を行う。 (以前のバージョンでも3日待てばexpireしていました)
タブレットモードでカラムのリフレッシュマークが残ってしまう問題があった。制御の改善と、手動リロードでもリセットできるようした
otogamer.me 鯖が #SubwayTooter のリアルタイム通知に対応してくれましたー
@admin 何かサポートした方がいいです?それともdockerのトレーニングが必要?
バグ修正。アプリデータのインポート時に、リアルタイム通知に関連する項目を読み飛ばす
@Naf ありがとうございます。
https://github.com/tateisu/mastodon-streaming-listener
を設定/インストールし終わったら以下の情報を(DMで!)教えてください。
- 中継できる instance のURL
- listenerのAPI endpoint url ( register,unregister の二つ)
- jp.juggler.subwaytooter 用のapp secret
お知らせいただけましたら、こちらではアプリサーバに以下のような設定を行います
https://gist.github.com/tateisu/21438a22db9a3f6d77f91160d3e94953
アプリサーバへの設定が終わって最大3時間を過ぎたら、listenerのログに何か出てくると思います
そういや Sequelize への指定が雑でindex張られてないな… create unique index stream_listener_registrations_iat on stream_listener_registrations ( "instanceUrl","appId","tag" );
こんな感じで手動ではっといた
v0.6.9
- リアルタイム通知に関する動作の最適化
アプリサーバに書いてる中継サーバの接続先情報を全部ユーザに書かせることになるのか… サポートできない気がする
タグとアクセストークンとデバイストークンが同じでレスポンスが2xxか4xxなら3時間以内は通知登録を繰り返さないようにした
そういや「ユーザが中継サーバを選ぶ」仕組みがないのか。もしあれば自分だけ任意のタンスでリアルタイム通知とかできるんだな
Firebase Cloud Messaging の組み込み。 mastodon.juggler.jp インスタンスに限り、リアルタイム通知を試験実装しました
Streaming Listenerを動かしてもいいよというタンス管理者さんがもしいたら教えてください…
https://github.com/tateisu/mastodon-streaming-listener と
https://github.com/tateisu/mastodon-fcm-sender はなんとなく動く感じになったよ。次はアプリ側
プッシュ通知、正常フロー通せた―。今日は一日nodeのよく分からんモジュールと格闘してたなあ…
通知のアプリサーバ部分も書いて起動できるとこまで進めたhttps://github.com/tateisu/mastodon-fcm-sender (動作確認はまだできてない) 次はアプリ本体
つーかコレ、マストドンに埋め込めればストリーミング接続そもそも不要なんじゃないの…?
MastodonからモバイルアプリへのPush通知。アプリサーバがアプリ固有の情報を抱えるのは仕方ないとしてストリーミング受信する部分を独立させる仕組みを考えてみた。 https://github.com/tateisu/mastodon-streaming-listener (コードはまだ動作確認できてません) これからアプリサーバ部分書いてうちの鯖だけpush通知対応させてみる
このアカウントは、notestockで公開設定になっていません。
mastodonとは直接関係のない作業をしててWebフロントの設定を変えたらトラブル起こしてたという。
@Clworld 結局streaming API と Firebase messaging を中継する何かしらが端末の外側に必要になるんじゃないかな…
@Clworld いえ、あれはアプリ事に建てるものなのです。インスタンス側でたてても…あ、そうだ
SubwayTooter でも streaming とfirebase messaging の中継するサーバたてて、有料オプションでリアルタイム通知とか検討してはいるが、大半の人は今のpull通知でも十分だろうから需要ないだろうと思ってる
@Clworld tusky-apiサーバたててアプリをそれに対応させる。tuskyがやってる(が、安定はしていない
@fshin2000 ImgurがMashape使ってAPI利用者(アプリ作者)に課金とかしてましたね
あと全年齢向けPawooと Pawoo.R18を分けちゃうとか。 複数タンス対応アプリなんだから問題ないよね(笑顔
iOS向けのポルノは結局Webブラウザでやれって話だったし、某社はWebブラウザ上で動くアプリでも作ればいいと思うよ
v0.6.6
クラッシュ対策
アプリデータのインポート後にガイド表示が残ってしまうバグを修正
特定条件でアプリデータのインポートに失敗するバグを修正
Googleの音声認識エラー率が4.9パーセントに
http://thebridge.jp/2017/05/googles-speech-recognition-technology-now-has-a-4-9-word-error-rate
しかし日本の方言には対応できまいよ
@Yukiya FastScrollerが邪魔ならアプリ設定からオフできます。 フォロワー一覧などアカウントが表示されてるとこはフォローアイコン以外を押しても反応すると思います。
@kenyo 確認の有無はアカウント別に状態を覚えているので、サブアカだけ要確認とかその逆とかできます
プロフにこっそりAmazonほしい物リストを追加してみた。ギフト券しか置いてないけど…
v0.6.5
- クラッシュ対応
- 添付メディアの種類をサムネイルの端に表示する(image以外)
添付メディアと同じURLをアイコン表示したいと思ったが、リモートから来た場合はAttachment#text_urlがカラなので発言中のURLが添付メディアなのかどうか分からないのだった。
@aoki3kara Twitterと違ってマストドンの添付画像は8MBまでな上にサーバ側でリサイズや再圧縮がかかるので、画像保存勢としてはそこまで情熱を持てない…という気がします…
v0.6.4
- サムネイルに別の画像が表示されてしまうことがある問題の修正
- NGワードのチェックをTrie Treeで行って高速化
- ステータス中のURLの短縮表示
- アプリ設定に「添付メディアのサムネイルをクロップしない」を追加
人によっては「サムネイルをデフォルトで非表示にしろ」「サムネイルの表示サイズをもっと小さくしろ」とか言われるんだから本当にわからん
@nacika ああいやアプリのサムネイル表示のテストなんで気にしないでください
@aoki3kara 公式Webの場合はサムネイル枠は基本的に横長だったりするし、このへんは何に合わせてもパーフェクトにはならないよ
@aoki3kara 細いのは別にいいんでは。 全体が見たいという話しならfitCenterオプションを用意するだけで足りるのだし
@aoki3kara じゃあとりあえずサムネイル表示をcenterCropからfitCenterに変える設定は用意してみます
@aoki3kara パフォーマンスや戻るボタンの挙動など、Custom Tabs は一度お試しいただければと思います。作者的には不満がないという理由も理解いただけるかと…
@aoki3kara 感想を頂けることにはとても感謝しています。ありがとうございます。
@aoki3kara …ていうか、そのサムネイル表示は別に全体表示じゃないですよね?詳細表示したときは正方形じゃないのに正方形で表示されてるんだから。
@aoki3kara サムネイルを全体表示にする(サイズは別に変えない)だけなら ScaleType https://akira-watson.com/android/imageview_scaletype.html を centerCropから fitCenterに変えるだけなので、割と簡単にオプションで提供できると思います
@aoki3kara サムネイル表示はともかく、
SubwayTooter的には Chrome Custom Tabsを利用できる前提で実装しています。Chromeのパッケージ名指定でIntentを発行してダメなら仕方なく他のブラウザを起動してるだけです。Custom Tabs でも長押し保存なのは変わりませんが。
そして一番の問題は、添付メディアは別に画像に限った話ではないということです。今後も種類が増える見込みなのでアプリ内で頑張る方針は最初から持っていません
スクロール連動で畳むの、ストリーミング前提だと常時スクロール位置がてっぺんに張り付いてるんだからあまり意味ないかも?
カラム設定がポップアップじゃなくて張り出すのは正規表現フィルタのためだったりする。アニメーションはないが、公式Webの挙動とも揃ってる
SubwayTooterは「リッチなUI」とか「アニメーション」とかむしろ排除してるよな…サムネ画像の角丸も誰かがいきなりプルリクエスト投げてきたので対応した感じだし
@aoki3kara 画像付きの説明ありがとうございます。
SubwayTooterだと画面下部にあるのがカラムストリップなので基本的にみんな色をいじってる前提です。透過表示したらウチのアプリだと煩雑になりすぎます。
スクロール連動で畳むのはやってもやらなくてもいいけど、そういう要望はまだないですね。
カラーラベルに関しちゃ「通称と色」で文字列までいじれる&本文中のメンションに色がつく等ございますよ。
画像をアプリ内で表示しろってたまに言われるけど、実際には画像と動画と今後追加される諸々だからな。PDFとかオフィス文書とか添付される未来を想像するとアプリ内でがんばる方向は避けたい
@aoki3kara 速度比較したことないのですけど、作者的には現状で不満を感じてないですねー。仕組みの問題よりモバイル回線への不満の方が大きい…
@potpro scope と scopes っていう罠で結構はまりましたね… クライアント登録の時はscopes なのにアクセストークン取得時はscopeだったり
@aoki3kara Pawooにもテキストのコピーはもうあったはず。たしかタグをコピれなくてPawoo公式企画に乗れなかったからとか、そんな理由で急遽用意されてた
@aoki3kara あと、検索自体はマストドンの検索APIをべたに呼んでるだけなのです。
現時点だとユーザとハッシュタグと、ユーザの公開URL、発言の公開URLだけに対応してるみたいですが。
もしマストドンが全文検索対応したらアプリは何もしなくてもよいのです。
@aoki3kara subwayの表示カスタマイズ例 https://babuu.club/@cawoli/27672 MastoPaneはどの程度カスタマイズできるのかしら
@aoki3kara 保存もURLコピーもChrome Custom Tabs で出来てるよ
@takke Mastodonの検索APIをベタに呼んでるだけです。Mastodon側が全文検索対応するかどうかは未定。Eugenさんは「実装するにしてもホーム内などに制限するかも」って吠えてたような
なんでもかんでもアプリの中にって考えはSubwayTooterには全くないな。画像を見るのもChrome Custom Tabs 任せ
@aoki3kara 現状でもブラウザで検索した結果からステータスやアカウントのURLをアプリに飛ばせる動線があるし、あまりやりたいと思わないですね。他人のWebサービスに乗っかるのはAPIが提供されてから考えるべき。自前で検索サーバを用意する方向は無料無広告アプリでは取りづらい。
受け口は鯖のentyと一緒なんで、鯖に寄付してくれた人はわざわざ多重しなくてもっていうか多重できないはず?
@fjmr 受け口は鯖のentyと一緒なんで、鯖に寄付してくれた人はわざわざ多重しなくてもっていうか多重できないはず?
@fjmr Playストアのあれこれで、俺のプロフまでたどり着かないと寄付する先が分からないというアレ
#SubwayTooter そういやアプリに寄付してくれたのはまだ1人だけだったりします
v0.6.3
- タブレットモードでカラムを追加/削除した後に、リロードボタンを押してもカラムが更新されないことがある不具合の修正
割と前からあったバグだけどやっと直せた。。。?
v0.6.2
- クラッシュ対応
- 下書きから復元するときに長押しで下書きを削除
@compthink I've announse for eache release. https://mastodon.juggler.jp/tags/subwaytooter
maybe just it didn't feed to your instance.
@compthink Why have you seen an announcement nine days ago?
release history is here: https://github.com/tateisu/SubwayTooter/releases