latest log

酩酊状態で書いたエンジニアポエムです。酩酊状態で読んでください。

WebKit Internals API

WebKitデバッグビルドすると、UnitTest用と思われる隠しAPIが利用可能になります。

window.internals.xxx() を実行することで…

  • 一時停止できないはずのKeyFrameアニメーションを一時停止したり
  • 各種ハードウェア/ソフトウェアの状態を取得したり
  • メモリキャッシュ/ページキャッシュをクリアしたり
  • スタイルを強制的に再計算したり(リフロー)
  • GC 発生を知ることができたり(GC observe)

などが可能になるようです。

隠しAPIは250個以上あるようなので、寝れない夜に眺めると良いかもしれません。

2017年でSHA-1サーバ証明書が廃止されるため、2009年以前に発売されたガラケーの大半でSSL通信(ログイン,課金)ができなくなります。ご注意を

SHA-1サーバ証明書の発行禁止と2017年1月1日からの相互利用禁止に伴い、2009年以前に発売されたガラケーの大半でSSL通信(≒ログイン,課金)ができなくなります。こちらが機種ごとの対応状況の一覧です

SHA-2各種プラットフォーム対応状況

Node.js などのサーバサイドで判別する場合はこちらのリストを使うと良いでしょう。CERT_SHA1 とマークされている機種が SHA-2 に対応できない機種です。

つまり、2017/01/01 以降は、FlashLite1.x しか対応していないガラケーは存在しないものとして扱う事が可能になります 。残りは FlashLite2.0が少々, 大半はFlashLite3.0と3.1です。時代の流れですね。

参考資料

UserAgent.js と Spec.js にガラケーのサポートを追加しました

UserAgent.js に FeaturePhone 判別用のプロパティ FEATURE_PHONE を追加し、 Spec.js に 国内大手キャリアから発売された(2009年以降の) FeaturePhone のスペックカタログ追加しました。

FeaturePhone 用のスペックデータは、ブラウザ上からは使わず、サーバサイドで使う用途を想定しています。

FeaturePhone 用のデータが不要な場合は、以下のように、npm run minnpm run build の末尾似@fp を付ける事でごっそりと削れます。

{
  "scripts": {
    "min": "node ../WebModule/run/minify.js --verbose --strict --keep --pretty @fp",
    "build": "node ../WebModule/run/minify.js --verbose --strict --keep --release @fp",
  }
}

ところで、作業中に気がついたのですが、古いガラケーは既に修理不能になっています

  • 2008年以前の端末は既に修理受付が終了しており
  • 2009年の端末は半分以上で修理受付が終了しており
  • 2010/2011年の端末も2017〜2018年に受付が終了する予定

となっていました。

ちょっと壊れかけているけどだましだまし使っているような人は修理受付が終わる前に修理に出したほうが良いかもですね。

Change to npm unpublish policy

ポエムです。

npm unpublish --force kik and unpublished all my packages. いわゆる left-pad 問題の続報です。
npm が unpublish の運用ポリシーを変更するそうです。

The npm Blog

changes to npm’s unpublish policy

New policy

Going forward, if you try to unpublish a given package@version:

  • If the version is less than 24 hours old, you can unpublish it. The package will be completely removed from the registry. No new packages can be published using the same name and version.

  • If the version is older than 24 hours, then the unpublish will fail, with a message to contact support@npmjs.com.

  • If you contact support, they will check to see if removing that version of your package would break any other installs. If so, we will not remove it. You’ll either have to transfer ownership of the package or reach out to the owners of dependent packages to change their dependency.

  • If every version of a package is removed, it will be replaced with a security placeholder package, so that the formerly used name will not be susceptible to malicious squatting.

  • If another member of the community wishes to publish a package with the same name as a security placeholder, they’ll need to contact support@npmjs.com. npm will determine whether to grant this request. (Generally, we will.)

via http://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy

意訳すると

  • 公開から24時間以内であれば unpublish できます。再度同じ package@version で公開はできません(これは version番号を上げるとpublish可能になるという意味です)
  • 24時間経過後は unpublish に失敗します。support@npmjs.com にコンタクトを取ってください
  • サポートはパッケージの削除に伴う悪影響をチェックします
  • あなたは以下のどちらかを選択する事ができます
    1. パッケージの所有権を譲渡する
    2. 依存関係を変更するための手助けをする
  • package の全バージョンが unpublished となった場合は、その package名 は悪意を伴う差し替えが行われないように security placeholder package に置き換えられます
  • security placeholder package と同名の package を公開したい人は support@npmjs.com にコンタクトを取ってください、審査します

この問題についてはこんなことをツイートしてました

自分の過去のツイートを見直すと、今もそのままの部分と、口が悪いなぁ(言い方に気を配ってないなぁ…) という部分がありますね。140文字世界の呪縛。

これについてですが、WebModule では以下のようにして解決しています。

github にアカウントを持つ foo さんが、github にホストした apple.js リポジトリを、npm に publish しようとすると、foo.apple.js という npm名で publish することになります。これは WebModule の命名規則です。

雑感

対処療法的に unpublish にガードを入れる + 人力審査を行うという事のようです。 「npm には global namespace しかないためパッケージ名が衝突する」という課題はそのまま残るため、商標問題はサブマリン・リスクとして残り続ける事になりそうです。

あとこの変更は、何時から適用するんだろうか…

画面の回転をハンドリングする ScreenOrientationEvent.js を書きました

ScreenOrientationEvent.js 書きました。

  • 画面の回転方向を取得する
  • 画面の回転時のイベントでコールバックする
  • 画面の回転をロックする

なんてことができます。

モバイルなブラウザ(Chrome, Firefox, Edge, Safari)で動きます、PCでも動きますが余り楽しくないです。Safari だと画面ロックはできないです。