ヤルキデナイズド

Unclassified Articles on Software and IT

Safari に Flash Player をインストールできないときはオフラインインストーラを使うとよさそう

SafariFlash Player プラグインをアップデートしろとせっつくのでインストールしようとしたが、何度やってもエラーが出る。

f:id:uasi:20150130103810p:plain

いろいろ試してもダメだったので別のページからインストーラをダウンロードしたらあっさりインストールできた。

Adobe Flash Playerの配布 | Adobe

↑このページの “DMGインストーラーのダウンロード”(.dmg 直リンク)からダウンロードした。

今回インストールできなかったのはバージョン16だったが、バージョン12か13のときもインストールできず、その次のバージョンのベータ版をインストールした覚えがある。

Adobe のフォーラムのスレッドを見るに、管理者権限のないユーザーがオンラインインストーラを使うと発生する問題のようだ。ベータ版はオフラインインストーラなのでうまくいったということか。


環境:

いろいろ試してダメだったこと:

  • Safari 以外のアプリケーションもすべて終了
  • Flash Player プラグインをアンインストール
  • ディスクユーティリティでアクセス権を修復
  • インストーラをディスクイメージから取り出してデスクトップに置く(→実行するとダイアログが空になる不具合が出た)

インストールに失敗したときのログ( ~/Library/Logs/FlashPlayerInstallManager.log ):

2015-01-30 10:35:23 +0900 [I]  IM: ---------- log start ----------
2015-01-30 10:35:23 +0900 [I]  IM: All install checks pass
2015-01-30 10:35:23 +0900 [W]  IM: Unexpected umask value for process: 0
2015-01-30 10:35:23 +0900 [I]  IM: User does not have any processes that need to be closed.
2015-01-30 10:35:23 +0900 [I]  IM: [install started]
2015-01-30 10:35:23 +0900 [E]  RA: Unable to launch FPInstallHelper. Error = 'launch path not accessible'

2015-01-30 10:35:23 +0900 [E]  RA: 
Attributes for '/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/FPInstallHelper':
 {
    NSFileCreationDate = "2015-01-23 21:28:30 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 0;
    NSFileGroupOwnerAccountName = wheel;
    NSFileHFSCreatorCode = 0;
    NSFileHFSTypeCode = 0;
    NSFileModificationDate = "2015-01-23 21:28:30 +0000";
    NSFileOwnerAccountID = 0;
    NSFileOwnerAccountName = root;
    NSFilePosixPermissions = 2541;
    NSFileReferenceCount = 1;
    NSFileSize = 22784;
    NSFileSystemFileNumber = 31520882;
    NSFileSystemNumber = 16777220;
    NSFileType = NSFileTypeRegular;
}

2015-01-30 10:35:23 +0900 [E]  RA: 
Attributes for '/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T':
 {
    NSFileCreationDate = "2014-10-05 06:07:38 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 0;
    NSFileGroupOwnerAccountName = wheel;
    NSFileModificationDate = "2015-01-30 01:35:23 +0000";
    NSFileOwnerAccountID = 0;
    NSFileOwnerAccountName = root;
    NSFilePosixPermissions = 449;
    NSFileReferenceCount = 19;
    NSFileSize = 646;
    NSFileSystemFileNumber = 19103629;
    NSFileSystemNumber = 16777220;
    NSFileType = NSFileTypeDirectory;
}

2015-01-30 10:35:24 +0900 [E]  IM: [install failed: 30]
2015-01-30 10:35:24 +0900 [E]  IM: Install failed with error code: 30.
2015-01-30 10:35:24 +0900 [I]  IM: ----------  log end  ----------

.dev で終わる hostname のとき gem install が(ある条件で)失敗するようになった

追記:うまい要約を見つけたので貼っておく。


最近 .dev TLD が新設された影響か、 hostname が .dev で終わる手元のマシンで gem install するとコケるようになった:

$ hostname
foo.dev
$ sudo /opt/rbenv/versions/2.2.0/bin/gem install bundler --no-document
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.dev" port 443 (https://your-dns-needs-immediate-attention.dev/quick/Marshal.4.8/bundler-1.7.11.gemspec.rz)

具体的には次のいずれかの条件を満たす環境で再現する:

  • hostname が .dev で終わり、かつ /etc/resolv.conf の search フィールドが設定されていない
  • /etc/resolv.conf の search フィールドが dev を含む

1番目の条件は Ruby の Resolv ライブラリの挙動に由来する。 /etc/resolv.conf に search が設定されていないとき、 Resolv は hostname の TLD を search の値として扱うようになっている(resolv.rb の1010行目あたりを参照)。また RubyGems の名前解決の挙動とも関係する(この記事のコメントを参照)。

この問題を回避するには /etc/resolv.conf に適当な search hoge fuga を設定すればよい。ただし hoge fuga は dev を含まないこと。

search を設定できない事情があるなら hostname を変える。 TLD を含まないようにするかテスト用の TLD を使う。 RFC 2606 によれば、テスト用途に使える TLD は予約済みの4つのうち .test.example の2つである。このどちらかを使えばよい。

あるいは .x などの1文字の TLD が使えるかもしれない。仕様上は正しいが、これまでに1文字の TLD が登録されことはない。

参考:


ブコメ返信

(gem の source を FQDN にすればいいという指摘について) id:happy_siro こういうこと?

$ sudo /opt/rbenv/versions/2.2.0/bin/gem sources list
*** CURRENT SOURCES ***

https://rubygems.org./

だめっぽい。

$ sudo /opt/rbenv/versions/2.2.0/bin/gem install bundler --no-document
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.dev" port 443 (https://your-dns-needs-immediate-attention.dev/quick/Marshal.4.8/bundler-1.7.11.gemspec.rz)

Streem 言語の雑感

matz が Streem なるスクリプト言語をデザインしているということで、パッと見で思いついたことをメモしておく:

  • UNIX の pipe っぽいストリーム操作を中心に据えた言語
  • catSTDIN | STDOUT と書けるらしい
  • 型が欲しい
  • (Functional?) Reactive Programming と相性が良さそう
    • 時間的に変化するイベントを取り扱える?
  • 型が欲しい
  • 例外状態の伝搬をどう扱う?
    • UNIX pipe みたいに繋いだプロセスのどれかが異常終了したら全体の処理が失敗するのでは困る
  • 文字列とかいうリニアな記号表現で分岐したストリームを表現するのがまず難しい疑惑
  • いっそ Haskellneedle みたいに ASCII アートで書くのはどうだ
{-# LANGUAGE QuasiQuotes #-}

fNeedle :: (Int, Int, Int) -> (Int, Int, Int, Int)
fNeedle = [nd|
    }=={(+1)}=\==========================>
              \
    }===\     \             /============>
        \     \             /
    }=) \ (==={uncurry div}=/={negate}===>
        \
        \=={(*2)}========================>
|]

型が欲しい。

Yosemite で AquaSKK の入力モードが切り替わり続ける問題を適当に直した

追記:この修正が取り込まれたバージョンのバイナリはここから入手できる↓

AquaSKK(OS X yosemite対応版) - みずぴー日記


YosemiteAquaSKK を使うと、 Safari などに入力するとき入力モードが高速で切り替わり続けるバグが出ることがある。

理屈は分かってないがそれっぽい箇所を適当に直したらバグが直ったっぽいので一応メモしておく。他への影響は追っていないので知らない。無保証。

修正済みのフォーク:uasi/aquaskk · GitHub

修正点:platform/mac/src/server/SKKInputController.mm#L159-L169あたりを if (activated_) { activated_ = NO; ... } で囲む。

    } else {
        // 個々の入力モードを選択している場合
        SKKEvent param;

        // ex) "com.apple.inputmethod.Roman" => SKK_ASCII_MODE
        param.id = [menu_ convertIdToEventId:(NSString*)value];

        if(param.id != InvalidInputMode) {
            session_->HandleEvent(param);

            modeIcon_->SelectInputMode([menu_ convertIdToInputMode:(NSString*)value]);
        }
    }

    } else {
        if (activated_) {
            activated_ = NO;
            // 個々の入力モードを選択している場合
            SKKEvent param;

            // ex) "com.apple.inputmethod.Roman" => SKK_ASCII_MODE
            param.id = [menu_ convertIdToEventId:(NSString*)value];

            if(param.id != InvalidInputMode) {
                session_->HandleEvent(param);

                modeIcon_->SelectInputMode([menu_ convertIdToInputMode:(NSString*)value]);
            }
        }
    }

Safari 他でスワイプして戻る操作が効かなくなった問題が色々やったら直った

2016年12月13日追記:この問題は jiTouch の One-Fix Two-Slide-Down/Up, One-Fix-Press Two-Slide-Down/Up ジェスチャーを使ったとき起きることが分かった。[jiTouch のサポートページ(http://www.jitouch.com/support/)に問題が起きたときの対処法がいくつか書いてあるが、根本的な解決策は今のところないため、これらのジェスチャーを使わないほうがよさそうだ。(追記ここまで)

SafariXcode の画面で、左右スワイプして戻る/進むと戻りかけのまま画面が固まってスクロールを受け付けなくなる問題が Mavericks でときどき起きていた。体感では10〜20回に1回の割合。さっき Yosemite にアップグレードしたら百発百中で発生するようになったので Apple の品質管理も地に落ちたもんだと思っていたが、あんまり騒いでる人がいないので偶発的なバグかもしれないと思った。で色々試したら直った。以下手順。

  • システム環境設定の「トラックパッド」を開く
  • 「スクロールとズーム」タブで「スクロールの方向:ナチュラル」をオフ
  • 「その他のジェスチャ」タブで全部の項目をオフ
  • スワイプを試してみてうまく動くのを確認し、オフにした項目をオン

元々オフになっている項目があったらオンにしてからオフにするとうまくいくかもしれない。試してないが。

f:id:uasi:20141018222145p:plain

f:id:uasi:20141018222153p:plain

補足、先に試して効果がなかったこと:

  • PRAM リセット
  • 「ページ間をスワイプ」の設定だけ切り替え/オンオフ

Twitter の画像 URL に :orig をつけると元画像が取得できる(できない場合もある)

Twitter にアップロードされた画像は、ある程度の大きさを超えると自動的に縮小される。しかし画像の URL に :orig をつけて https://pbs.twimg.com/media/XXX.jpg:orig にすると元の画像を取得することができる。ただし元画像があまりに大きいと :orig をつけても縮小された画像が返ってくる。

元画像を取得するには

f:id:uasi:20150303173229p:plain

タイムラインに表示された画像を右クリックして「イメージを新規タブで開く」を選ぶ。ブラウザによってはメニュー名が異なる(「新しいタブで画像を開く」など)。

新しいタブで開いた画像の URL は https://pbs.twimg.com/media/XXX.jpg:large という形式になっている。 :large の部分を :orig に変えて開き直す(:large がついていない場合は単に :orig を付け足す)。これで元画像が取得できる。

元画像が取得できる条件

画像の横幅が一定の大きさ以下なら元画像が取得できる。横幅が上限よりも大きくなると上限値まで縮小される。上限は URL 末尾のオプションの有無で変わってくる。

2015年10月10日追記: 最近 :orig のサイズの上限が変更されたようだ。Twitterの画像の:origで投稿時原寸の画像が降ってくるお話 - neotaso’s blogによれば :orig をつけることで6400×3840ピクセルの画像も原寸で表示されるとのこと。

URL 末尾のオプション 横幅の上限
なし 横600ピクセルまで
:large 横1024ピクセルまで
:orig 横2048ピクセルまで 上限なし?

縦幅にも上限がある。横幅は上限に収まるが極端に縦長な画像の場合、縦の上限値まで縮小される。

URL 末尾のオプション 縦幅の上限
なし 縦1200ピクセルまで
:large 縦2048ピクセルまで
:orig 縦2048ピクセルまで 上限なし?

GitHub 風の絵文字の名前で絵文字入力できる SKK 辞書つくった

GitHub Markdown では :+1: で👍を出すとか :smile: が😄になるとかそういうことができる。SKK でも簡単に絵文字を入力したかったので絵文字辞書を作った:

https://github.com/uasi/skk-emoji-jisyo

▽モードに入って smile と入力すると😄を出せる。

その他に使える絵文字は Emoji cheat sheet を参照のこと。ただし Unicode に収録されていない絵文字は出ない。辞書に入ってるのは870文字。

辞書はこれでダウンロードできる:

curl -O https://raw.githubusercontent.com/uasi/skk-emoji-jisyo/master/SKK-JISYO.emoji.utf8

AquaSKK 向けのインストール方法は README に書いた。他はよろしくやってほしい。

ところで Mac で Ctrl+Cmd+Space を押すと絵文字入力パレットが出てこれはこれで便利。使うとよい。

😊😊😊

PS: emot gem 使うと名前と絵文字の Map が取れて便利。