mikutter で "だれそれについて" を開くと "ふぁぼが取得できませんでした (undefined method `[]' for nil:NilClass)" を吐く件のメモ
ただのメモ
$ grep -r count_favorite_by . ./core/plugin/profile/profile.rb: user.count_favorite_by.next{ |favs| ./core/user.rb: def count_favorite_by
user.rb
127 # ユーザのメッセージが今までお気に入りにされた回数を返す 128 def count_favorite_by 129 Thread.new { 130 open("http://favstar.fm/users/#{idname}"){ |io| 131 m = io.read.match(/<div[\s]+class='fs-value'[\s]*>[\s]*([0-9,]+)[\s]*<\/div>[\s]*<div[\s]+class='fs-title'[\s]*>[\s]*Favs[\s]*Received[\s]*<\/div>/) 132 @value[:favouritesby_count] = m[1].gsub(",", "").to_i } } end
なぜfavstarなんぞを叩いている……
profile.rb
305 user.count_favorite_by.next{ |favs| 306 w_faved.text = favs.to_s 307 }.terminate(_("ふぁぼが取得できませんでした")).trap{ 308 w_faved.text = '-' }
とりあえず
profile.rb
305 w_faved.text = '-' 306 # user.count_favorite_by.next{ |favs| 307 # w_faved.text = favs.to_s 308 # }.terminate(_("ふぁぼが取得できませんでした")).trap{ 309 # w_faved.text = '-' }
user.rb
128 # def count_favorite_by 129 # Thread.new { 130 # open("http://favstar.fm/users/#{idname}"){ |io| 131 # m = io.read.match(/<div[\s]+class='fs-value'[\s]*>[\s]*([0-9,]+)[\s]*<\/div>[\s]*<div[\s]+class='fs-title'[\s]*>[\s]*Favs[\s]*Received[\s]*<\/div>/) 132 # @value[:favouritesby_count] = m[1].gsub(",", "").to_i } } end
Youtubeで動画に使用されているコーデック(映像・音声それぞれ)の判別をする方法
概要
ブラウザ上から、現在再生している動画の映像と音声のコーデック(ついでに解像度とかも)を判別する方法です。
動画のフォーマット番号を見るお話です。
[2017/11/08 追記] なんかWikipediaの記述が消えてたので、同等の記述を記事に足しました。
前置き
Youtubeで動画や音声に使用されているコーデックが何なのか気になったことはありませんか?
私はありませんでした。そう。あのOpusが既に使われているということを見聞きするまでは。
コーデックが何なのか確かめるためには、生の動画データにアクセスできないと無理だと思っていませんか?
私は思っていました。そう(ry
手順
例示画像は記念すべきOpusが使われていると教えてもらった動画です。
動画を右クリックします。
詳細統計情報をクリックします。
なんか出てきます。映像部分がWebMでVP9で1080pなのはもうこの時点で書いてありますけど、見なかったことにして先に進みます。
矢印のところの数字を見ます。248/251と書かれていますね。これがフォーマット番号です。
YouTube - Wikipedia の
Comparison of YouTube media encoding options のところを見ます。
[2017/11/08 追記] Wikipediaの記述消えてます。 YouTube内で4Kで検索して一番最初に出てきたのが Zion National Park. Autumn - 4K Nature Documentary Film - YouTube だったので、これの Format Code を書いておきます。4K動画なら、たぶん全フォーマット網羅してるでしょ? ってことで。
format code extension resolution note 139 m4a audio only DASH audio 66k , m4a_dash container, mp4a.40.5@ 48k (22050Hz) 249 webm audio only DASH audio 76k , opus @ 50k, 32.86MiB 250 webm audio only DASH audio 95k , opus @ 70k, 43.32MiB 140 m4a audio only DASH audio 132k , m4a_dash container, mp4a.40.2@128k (44100Hz) 171 webm audio only DASH audio 151k , vorbis@128k, 69.07MiB 251 webm audio only DASH audio 169k , opus @160k, 83.91MiB 160 mp4 256x144 DASH video 113k , avc1.4d400c, 24fps, video only 278 webm 256x144 144p 126k , webm container, vp9, 24fps, video only, 56.18MiB 133 mp4 426x240 DASH video 264k , avc1.4d4015, 24fps, video only 242 webm 426x240 240p 270k , vp9, 24fps, video only, 115.75MiB 243 webm 640x360 360p 521k , vp9, 24fps, video only, 223.46MiB 134 mp4 640x360 DASH video 648k , avc1.4d401e, 24fps, video only 244 webm 854x480 480p 995k , vp9, 24fps, video only, 418.93MiB 135 mp4 854x480 DASH video 1374k , avc1.4d401e, 24fps, video only 247 webm 1280x720 720p 1992k , vp9, 24fps, video only, 865.87MiB 136 mp4 1280x720 DASH video 2539k , avc1.4d401f, 24fps, video only 248 webm 1920x1080 1080p 3410k , vp9, 24fps, video only, 1.49GiB 137 mp4 1920x1080 DASH video 4694k , avc1.640028, 24fps, video only 264 mp4 2560x1440 DASH video 10984k , avc1.640032, 24fps, video only 271 webm 2560x1440 1440p 11569k , vp9, 24fps, video only, 4.90GiB 266 mp4 3840x2160 DASH video 23644k , avc1.640033, 24fps, video only 313 webm 3840x2160 2160p 24086k , vp9, 24fps, video only, 10.62GiB 17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k 36 3gp 320x180 small , mp4v.20.3, mp4a.40.2 43 webm 640x360 medium , vp8.0, vorbis@128k 18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k 22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)
[2017/11/08 追記ここまで]
248番 が コンテナがWebM、解像度1080p、コーデックVP9、
251番 が コンテナがWebM、コーデックがOpus、ビットレートが160kbps
であると分かります。
(Wikipediaの記事の脚注にもあるように、このビットレートは実際のものとは異なります。)
だいたいの動画は、
映像が133, 134, 135, 136, 242, 243, 244, 247, 248
音声が140, 251
あたりな気がします。
余談
比較的新し目の動画で、720p以上の解像度を再生すると、VP9が使われていることが多く、思っていたよりWebMが普及しているんだなぁ、という感想を抱きました。世の中MP4だと思っていたので。
まぁそんなことよりOpusですよOpus。VP8とVP9に比べて知名度ないでしょ。自分も知りませんでしたもん。しかもなぜかわりと使われているし。世の中MP3とAACしかないと思ってましたよ。
Opusはいいぞ。
Android版スクフェスのストレージ使用量
端末の空き容量をわりと切実に圧迫するスクフェス、ちょっと減らせたりしないかなぁ、と思って、ちょろっと初期化してみました。
2016年1月8日に試しました。のんたんスコマ中です。
初回ダウンロード終わった時点
初回ダウンロード終わった時点で 850MB(スクショ忘れました)。
追加ダウンロードデータ:
楽曲データ: 16MB
この時点でダウンロードされてなかった曲は、ミはμ'sicのミ、好きですが好きですか、もしもからきっと、永遠フレンズ、WAO-WAO Powerful day!、Step! ZERO to ONE、思い出以上になりたくて、でした。
サイドストーリー: 277MB
メインストーリー:414MB
やっぱりフルボイスだとサイズが大きいですね。
まとめ
ストーリーを読み返さないなら、一度初期化すれば400MB〜500MBくらいは端末の空き容量が増やせます。 900MB以内で収まりますね。
蛇足
追加ダウンロードデータサイズ的に、たぶん楽曲は128kpbsと推測できます。
マカロン曲とかが内部でどうなっているのか分からないので、とりあえず90曲分の楽曲データが入っているだろうと考えると、
(128 kbps) * 2 min * 90 = 172.8 megabytes
なので、アプリ本体の60MBと180MBを初回がダウンロード終わった時点の850MBから引くと、だいたい600MBくらい残りますね。
カード枚数が774枚、全部の画像データ1500枚ちょい、R以上はスキル発動ボイス、これは最初からダウンロードされてますね。
とか考えていくと、ちょっと楽しい気分になります。
おしまい。
Amazonのコンビニ受け取りで、認証メールが届かないときに、バーコードで受け取る方法(ローソン限定)
Amazonのコンビニ受け取りって、コンビニに早朝に届いてても、認証キーのメールが昼過ぎまで来ないですよね。
ネット上を検索すると、ロッピーを使って受け取る方法はたくさん出てきます。
Amazonにおいては、認証キーは注文番号 123-1234567-1234567 の最後の7桁だ、ということはわりと有名な話で、
これと荷物の問い合わせ番号(トラッキングナンバー)をロッピーで入力すれば受け取れる、というのがよくある話です。
しかし、最近のローソンはバーコードで受け取るほうが、サインも要らないし(本人確認とか何もないので心配ではありますが)、かんたんです。
というわけで、バーコードを生成してしまおうという話です。
https://pickup.lawson.jp/bcd/vw.php?JN=12341234123412341234&NN=1234567&CP=001
の、JN=のところに日本郵便の問い合わせ番号(トラッキングナンバー)を、NN=のところに注文番号の最後の7桁(認証キー)を入力して、 それをブラウザで開けばバーコードが出てくるので、それを使って受け取りましょう。
ちゃんちゃん
DreamSpark に登録しようとすると you are not born yet! と言われる件
DreamSpark の学生アカウントを取ろうとするときに、生年月日入力UIをどう操作しても you are not born yet! というエラーが出まして、過去の日付しか指定できないのになにを言っているんだ……
解決方法: マイクロソフトアカウントのほうで生年月日を登録してから、データが反映されるまでしばらく待つ
ブラウザのインスペクタを使っていろいろ確認して、あーなんとなくこれかなー、と、マイクロソフトアカウントの生年月日が未登録だったので登録したりしたわけですが、どうにもならないのでサポートに投げたら、それはもうやったわ! みたいな返信が来ました。
仕方ないので自分でなんとかするかー、とりあえず現状を確認して……あれ、できた。
マイクロソフトからはメールの内容を転載するな引用するなと言われましたので、この内容から察してください。
……なんでこんなに分かりづらいエラーメッセージにしたんだろう。
mikutterでのTwitterの自分宛リプライの特殊仕様の対応
毎回忘れるので備忘録
mikutter/core/message.rb
— ゆーいちろー@Opusはいいぞbot (@Yuichiro_S) April 7, 2015
217行目を
define_source_getter(:replyto){ |this, result|
と書き換えると https://t.co/nesv6WaUqb みたいなのがちゃんと表示できる
Twitterでは自分宛のリプライは@つけてなくてもin-reply-toで繋げられるが、mikutterのmessage.rbは@がないと replyだと認識しないので、手元では
define_source_getter(:replyto, /@[a-zA-Z0-9_]/){ |this, result|
を
define_source_getter(:replyto){ |this, result|
と書き換えて雑に対処して使っている。
Nexus7 1st gen (2012) で Stock ROM (rootless) と CyanogenMod を MultiROM で共存させたメモ; ストレージがなぜか 6GB になる現象の対処メモ
Nexus7 1st gen (2012) で Stock ROM (rootless) と CyanogenMod を MultiROM で共存させたメモ
概要
今回は、ホスト cm11 で、ゲストに Stock ROM の 4.4.4 とか 5.1.1 とかを入れたい感じでした。
結局どうしたか
fastboot で Stock ROM の boot, system, userdata を焼いて、TWRP でバックアップ、バックアップから MultiROM で Add ROM しました。
boot.img と system.img から flashable zip を作ろうとするのは労力の無駄っぽい。
こっから詳細
ハマりポイントとしては、Google から提供されている Stock ROM が fastboot で焼くイメージしかなくて、カスタムリカバリから焼ける flashable zip じゃないという点です。
flashable zip を作る方法としては、ググると出てくるのは
Stock ROM で root を取ってからがんばる
root 取ったら Stock ROM である意味が個人的になかったのでナシでした。Android Kitchen でがんばる
2013 年に更新が止まっているせいか、それっぽいzipを生成してくれるけれども MultiROM patched TWRP がエラーを吐くので諦めました。
Nexus7 1st gen (2012) で、ストレージがなぜか 6GB になる現象の対処
概要
いくら Multi ROM だからってストレージ足りなくなるなんておかしい、と思ったら、なぜか 6GB になっていた。32GB モデルなのに。
どうやら珍しくはない現象らしい。解決したので適当に情報をまとめる。
結論
フルワイプでなおる