10月
16
2011
2

【解決】iOS5 にすると 128kbps AAC に変換した曲が鳴らない件

各所で報告が上がってましたが、iOS4 から iOS5 にアップデートした iPhone で、128kbps AAC に変換していた音楽が再生されないバグがあるようです。

少ないサンプルで想像した原因なので確証はないですが、すべての曲という訳ではなく、そもそも iTunes でエンコードしたアルバムは大丈夫で、昔 mp3 に落としていたアルバムをそのまま iTunes に取り込んだケースなどが怪しいようです。
さすがにすべての曲がアウトなら Apple だって気づいているでしょう。

肝心の復旧方法ですが、iPhone 本体の操作ですべての曲を削除した上で、再度 iTunes 上から同期したら復旧しました。128kbps AAC 変換の設定は有効なままで構いません。

曲の削除は、ミュージックアプリでアルバムを表示し、右フリックして消していくのが手っ取り早いかと思います。前述のとおり、iTunes で取り込んだアルバムは大丈夫そうな感じがするので、消す奴と消さないやつを選別すると復旧時間を短縮できます。
とは言え、曲数によってはかなり時間がかかるので USB 接続&時間があるとき推奨です。

影響の大きなバグなので、遠からず修正されるとは思いますが、お急ぎの方は試してみる価値があるでしょう。

言うまでもありませんが、実行は自己責任で。

– 以下雑感 –

あれですかね、iOS5 で導入される「iTunes で購入していない曲であっても iTunes で購入していたことにして、複数の iOS デバイスでクラウドから曲を再生できる」っていう日本じゃ絶対許されないサービスのために、ハッシュ値かなんかを生成してて、それが誤動作したとかですかね?

ハッシュ値と言うより、曲ごとの特徴量を計算してるんでしょうか。だってよく分からないエンコーダで作られた曲も、iTunes Store 上の曲とマッチさせる話なので。
エンコーダによって問題があったりなかったりだとすれば、その辺が怪しいかもーなんて思います。

Written by Otchy in: Technology | タグ: ,
10月
04
2011
2

画像まとめページを自動でサムネイル・スライドショー化するブックマークレット

縦に長く画像のリンクが大量にあるようなページで、ページに含まれている画像を全てサムネイル一覧にまとめて、そのサムネイルの内容をスライドショーのように表示する事が出来るブックマークレットです。
下のリンクをブックマークバー等にドラッグしてクリックすると利用出来ます。

とりあえずこのページで試してみる場合は、そのまま “imageview” をクリックしてみて下さい。

imageview

javascript:(function(d){var%20s=d.createElement('script');s.src='http://www.otchy.net/js/imageview.js';d.getElementsByTagName('head')[0].appendChild(s);})(document);

動作

下記のように、サムネイル画像の img 要素があってそれに大きい画像がリンクしているような部分をページ上から抜き出して、サムネイル一覧を生成します。
<a href=”***.jpg”><img src=”***_mini.jpg” /></a>
HTML のロードが完了していない時は、HTML のロードが完了するまで待ってから動作します。

サムネイル一覧を作成する時、いったんページの最下部まで自動的にスクロールする事で、GIGAZINE のように、画像が遅延ロードされるページでも全ての画像を取得出来るように配慮しています。

サムネイル一覧から任意の画像をクリックすると、その場で大きな画像が開きます。
画像の上でクリックしたり、矢印キーの左右で、画像を切り替える事が出来ます。

画面キャプチャ

こういう感じの画像まとめ、よくありますよね。

ここでブックマークレットを実行すると読み込みが始まり、読み込みが完了するとサムネイル一覧が作成されます。

サムネイルから画像を選択すると、その場で拡大表示されます。

対象ブラウザ

Google Chrome 14 と、Firefox 3.6 で動作確認しています。恐らく、Firefox 4+ と Safari 4+ あたりでは動作すると思われます。
IE に関してはほとんど未確認ですが、IE6 は動作しません。IE7、IE8 もたぶん動作しません。IE9 はもしかしたら動作するかも知れません。

(追記)
利用者の方から Firefox 7 と IE9 で正常動作するとの報告をいただきました。ありがとうございます。

Written by Otchy in: Development | タグ:
10月
04
2011
2

複数のバージョンの jQuery を共存させる方法

古いアプリをメンテしてて、元々の jQuery のバージョンが 1.0 だの 1.1 だのだとすごく残念な気持ちになりますね。やっぱり、最新の jQuery でサクサク書きたいものです。
バージョンを上げてしまえればいいんですが、動作確認の手間まで考えると、そこまでやる時間もない。いま、ちょっとこの画面だけ手直し出来ればいいんだけど…という場合は、複数のバージョンの jQuery を共存させてしまいましょう。

jQuery には $ の競合を避けるための jQuery.noConflict という function が用意されていますが、これに引数で true を渡すと、window.jQuery オブジェクトの競合も避けるように動作します。

ですので以下のように書けば、複数のバージョンの jQuery が共存出来ます。
現実的にやる事はないと思いますが、onload を追加する事で、3つでも 4 つでも共存可能という事です。

<script>
$(function() {
    var func = function() {
        // 実際に動作させたい部分
        var $16 = jQuery.noConflict(true);
        alert($.fn.jquery);  // old version
        alert($16.fn.jquery);  // ver 1.6
    }
    // 使いたいバージョンの jQuery を用意し、load イベントを設定
    var s = $('<script>').attr('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js').load(func).get(0);
    // IE の場合は script の onload が発生しないので onreadystatechange で検知
    s.onreadystatechange = function() {
        if (this.readyState == 'loaded' || this.readyState == 'complete') {
            func();
        }
    }
    // jQuery.append だと load イベントが発生しない(?)ようなので、生 DOM で head に script を追加
    $('head').get(0).appendChild(s);
});
</script>
Written by Otchy in: Development | タグ: ,

Powered by WordPress | Aeros Theme | TheBuckmaker.com