どんぴしゃりの関数がある。
PHP: md5_file – Manual
http://php.net/manual/ja/function.md5-file.php
PHP: hash_file – Manual
http://php.net/manual/ja/function.hash-file.php
最近はウェブ系アプリ中心、あとWindowsアプリちょっと
どんぴしゃりの関数がある。
PHP: md5_file – Manual
http://php.net/manual/ja/function.md5-file.php
PHP: hash_file – Manual
http://php.net/manual/ja/function.hash-file.php
とりあえず特定ファイルのハッシュ値が欲しかったのでHashTabをインストールしてみた。Windowsのシェル拡張として動作する。エクスプローラでファイルをポイントして右メニューからプロパティを表示すると[ハッシュ値]タブが追加されてる。署名付きファイルでは[デジタル署名]タブも追加されてる。こうして見ると、ファイルのハッシュ値の表示はエクスプローラの標準機能としてあってもいいと思う。
HashTab
http://implbits.com/products/hashtab/
MS製のフリーウェアFCIVを使うと、もっといろんなことができるっぽい。だけどHashTabで用は足りたので試すには及ばず。リンクだけ。
Availability and description of the File Checksum Integrity Verifier utility
https://support.microsoft.com/en-us/kb/841290
Tech TIPS:Windowsでハッシュ値を利用してファイルの同一性をチェックする – @IT
http://www.atmarkit.co.jp/ait/articles/0507/30/news017.html
前回のエントリを参考にしつつ大容量HDDを物色。
容量は大きければ大きいほど良し。だけど、6TBドライブはまだユーザからのフィードバックが出揃っていないので購入には時期尚早かも。6TBでもHGSTなら信頼できそうかなと思ったものの、Amazonのレビューを読むと稼動音が結構煩いらしいので悩んだ挙句に見送る。
というわけで、選んだのはHGST製の4TBドライブ。
Amazon.com: HGST Deskstar NAS 3.5-Inch 4TB 7200RPM SATA III 64MB Cache Internal Hard Drive Kit (0S03664): Computers & Accessories
http://www.amazon.com/gp/product/B00HHAJRU0/ref=ox_sc_act_title_1?ie=UTF8&psc=1&smid=A2BGBM9RYIZHYZ
動画データの処理用に大容量ドライブが必要になった。どういう基準でどのブランド・製品を選ぶべきかわからないのでネットで調べたら、ストレージサービスを提供する会社が自社が採用したドライブの故障統計データを公開していたので覚え書き。
以下はGIGAZINEによる紹介ブログ。
ハードディスクの寿命傾向がストレージ会社が集めたデータから明らかに – GIGAZINE
http://gigazine.net/news/20131114-how-long-harddrive-survive/
2013年11月14日
ハードディスクはどこのメーカー製が一番壊れにくいのかが2万5000台の調査結果でついに明らかに – GIGAZINE
http://gigazine.net/news/20140122-hdd-survival-rate/
2014年01月22日
HDD約3万5000台を運用した実績からSeagate製品の圧倒的壊れっぷりが明らかに – GIGAZINE
http://gigazine.net/news/20140924-hdd-reliability-sep2014/
2014年09月24日
HDD4万台以上の運用データが公開され信頼できるハードディスクメーカーの傾向に変化が生じていることが判明 – GIGAZINE
http://gigazine.net/news/20150122-best-hard-disk-2015jan/
2015年01月22日
4万台以上のHDDを運用して得たモデル別故障率の「生データ」が公開されダウンロード可能に – GIGAZINE
http://gigazine.net/news/20150205-hdd-crash-raw-data/
2015年02月05日
– 再生ボタンをクリックすると動画冒頭が表示されるが先に進まない
– 画面中心にぐるぐる回るインジケータが表示されたまま
– 再生時刻は00:00のまま変化せず
– タイムスライダを僅かでもドラッグすれば再生が始まる
– Firefox 43.0.4 (たぶんバージョンに依存しない)
– MP4 H.265/AAC
– JWPlayer 7.2.4
– JWPlayerのオプション
– autostart false (デフォルト)
– primary html5 (デフォルト)
サーバーに依存するか?
– 複数のサーバーで試す (Nginx & Apache、ローカルでも)
– サーバーが変わっても同じ症状
動画ファイルに依存するか?
– ファイルサイズがおよそ8MBを超えると再生されない
– Firefoxの開発者ツールで調べたら
– サイズが小さい動画はJWPlayerロード時にダウンロード完了する
– 故に、再生時にはブラウザのキャッシュにある動画ファイルを再生している
– 再生開始時に動画のダウンロードを伴うケースに再生されないみたい
HTML5の代わりにFlashを使うとどうなるか?
– JWPlayerのprimaryオプションを”flash”に変更 (Flashが使える場合はFlash優先)
– すると問題は解決 (正常に再生スタートするようになった)
– Firefoxの動画プレイヤー(videoタグ)の実装に問題があるみたい
JWPlayer開発元はFirefoxをどう扱っているのか?
– JWPlayerが提供するCDNに動画をアップして再生してみる
– JWPlayerを右クリックすると「Flash Version 2.0」との表示。
– JWPlayer任せだと、FirefoxではHTML5ではなくFlashが優先的に使われるみたい
– FirefoxのHTML5ビデオ再生とJWPlayerには相性の問題あり
– 故に、FirefoxでJWPlayerを使うときはFlashを使うこと
– 以前にHTML5の動画再生中に飛んでくるイベントをダンプしたことがあった
– Google Chromeと比べてFirefoxのイベントは少なかったような記憶がある(うる覚え)
– JWPlayerで再生ボタンを押しても、Firefoxからの再生開始の通知が正しくされないのかも(あくまで予想)
以下に解説あり。
Adding Closed Captions | JW Player
https://support.jwplayer.com/customer/portal/articles/1407438-adding-closed-captions
JWPlayerがサポートする字幕ファイル形式はWebVTTとSRTの2種類。
WebVTT: The Web Video Text Tracks Format
https://w3c.github.io/webvtt/
SubRip – Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/SubRip
推奨はVTT形式。理由はHTML5標準で広くブラウザでサポートされていること。iOSのフルスクリーンではVTTであることが必須らしい。書き方はSubRipと大して変わらないので、SubRip形式があればVTT形式に直すことは容易そう。
WEBVTT
1 2 3 4 5 6 7 8 9 10 11 12 13 |
00:00:12.000 --> 00:00:15.000 What brings you to the land of the gatekeepers? 00:00:18.500 --> 00:00:20.500 I'm searching for someone. 00:00:36.500 --> 00:00:39.000 A dangerous quest for a lone hunter. 00:00:41.500 --> 00:00:44.000 I've been alone for as long as I can remember. |
少しのオプション指定の追加で割と容易にキャプションを追加できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var playerInstance = jwplayer("myElement") playerInstance.setup({ playlist: [{ file: "/assets/sintel.mp4", image: "/assets/sintel.jpg", tracks: [{ file: "/assets/captions-en.vtt", label: "English", kind: "captions", "default": true },{ file: "/assets/captions-fr.vtt", kind: "captions", label: "French" }] }] }); |
試してみたらいい感じだった。
ファイル名を変えればブラウザは違うファイルと認識してロードしてくれる。だけど、CSSを編集するたびにCSSファイル名を変えるのは手間。
そこで、以下のようにCSSのURLにクエリ文字列を付加しておくと、ファイル名は同じでもクエリ文字列が変わるとCSSが再ロードされるらしい。
1 |
<link rel="stylesheet" type="text/css" href="/css/style.css?123456" /> |
これを利用すれば、ページがロードされるたびにクエリ文字列を変化させることで、常にCSSをキャッシュさせないようにできそう。
1 |
<link rel="stylesheet" type="text/css" href="/css/style.css?<?php time(); ?>" /> |
CSSファイルやJavaScriptファイルを読み込むときの末尾にあるクエリー文字列は何のためにあるか: 小粋空間
http://www.koikikukan.com/archives/2011/08/29-015555.php
WordPressテーマのcssの末尾にクエリ文字を加えてキャッシュさせないようにする – かちびと.net
http://kachibito.net/wordpress/prevent-css-caching.html
ウェブサーバーとブラウザの設定はいじらない前提。すなわち、サーバー管理者やユーザに委ねずに制作者だけで可能な方法。
実際に試したわけじゃないけど、たぶん。ブラウザによって癖がありそうだけど。
1 2 3 |
<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> |
1 2 3 4 5 6 |
header("Content-Type: text/html; charset=文字コード"); header("Expires: Thu, 01 Dec 1994 16:00:00 GMT"); header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); |
ブラウザ のキャッシュを制御する/no-cache
http://tech.bayashi.net/pdmemo/browsercache.html
【php】ブラウザにキャッシュしてもらうhttpヘッダ at softelメモ
https://www.softel.co.jp/blogs/tech/archives/2311
CSSを変更してディプロイしてもページの体裁が変わらない。ブラウザでF5キーで強制リロードすると体裁が変わる。と、デザイナから報告あり。たぶんブラウザのキャッシュに関係した問題。
まずはHTMLのMETAタグにキャッシュ絡みの記述が無いか探すが見つからず。
次はHTTPレスポンスのダンプ。
http://example.com/css/styles.css
1 2 3 4 5 6 |
Cache-Control:"public, max-age=315360000" Date:"Wed, 10 Feb 2016 19:05:33 GMT" Etag:""56b913a1-b8c4"" Expires:"Thu, 31 Dec 2037 23:55:55 GMT" Last-Modified:"Mon, 08 Feb 2016 22:16:01 GMT" Server:"nginx/1.4.1" |
http://example.com/images/pic1.jpg
1 2 3 4 5 6 |
Cache-Control:"public, max-age=315360000" Date:"Wed, 10 Feb 2016 19:09:42 GMT" Etag:""56abfd63-e04d"" Expires:"Thu, 31 Dec 2037 23:55:55 GMT" Last-Modified:"Sat, 30 Jan 2016 00:01:39 GMT" Server:"nginx/1.4.1" |
Expiresの315360000秒(10年)は長すぎないか。試しにjQueryを調べる。
http://code.jquery.com/ui/1.10.3/jquery-ui.js
1 2 3 4 5 6 7 8 9 10 11 12 |
Access-Control-Allow-Origin:"*" Cache-Control:"max-age=315360000, public" Connection:"keep-alive" Content-Encoding:"gzip" Content-Type:"application/javascript; charset=utf-8" Date:"Wed, 10 Feb 2016 19:09:00 GMT" Etag:""54499a48-6a684"" Expires:"Thu, 31 Dec 2037 23:55:55 GMT" Last-Modified:"Fri, 24 Oct 2014 00:16:08 GMT" Server:"NetDNA-cache/2.2" Vary:"Accept-Encoding" X-Cache:"HIT" |
jQueryもExpiresは10年だった。だけどjQueryはバージョンごとに凍結されているから、キャッシュを更新する心配はなさそう。自前のコードの場合はそうはいかないよな。鯖管の独断でExpiresを設定された弊害が出てる感じ。クレームしよ。
HTTPヘッダチューニング Expiresヘッダについて | REDBOX Labo
http://blog.redbox.ne.jp/http-header-expires.html
Expiresヘッダーを活用してサイトの読込速度を上げてみる | スマートフォン&モバイルEC事例ノウハウ集|モバイルファーストラボ
http://www.aiship.jp/knowhow/archives/20552
Adobe Premiereを使って字幕を合成した動画を作成するにはどうするか。実際の作業予定は無いけど、気になったので調べておく。
YouTubeにはHow-Toビデオがいろいろあるけど、とりあえず以下の2つのワークフローに着目メモ。
Adobe Premiere Pro CC Tutorial | Importing Or Adding Closed Captions To Projects – YouTube
https://www.youtube.com/watch?v=SSsA89PRncw
1. テキストを起こす (Subtitle Workshop)
2. 字幕だけの映像トラックを作る (Lemony Subtitler)
3. 本編トラックに字幕トラックを合成する (Adobe Premiere)
Adobe Premiere Pro CC Tutorial | Importing Or Adding Closed Captions To Projects – YouTube
https://www.youtube.com/watch?v=SSsA89PRncw
1. 字幕データをSCCファイルで用意する
2. SCCファイルをインポートして合成する (Adobe Premiere)