こんにちは、 私は マイケル ヘクト、
そして 私は ここ 今日 に 話す に あなた について 輸入 バイナリ データ で ジャンプ 使用して 日本語: JSL。
私は の上 その チーム それ 開発する その ソフトウェア のために JMP、 そして さあ 得る 開始しました。
ジャンプ できる 輸入 たくさん の 違う ファイル形式、
すべて から プレーンテキスト に エクセル スプレッドシート。
いつ それらの は 輸入 の中へ JMP、 彼らは 表示されている に あなた として a データ テーブル
それ あなた できる それから 使用 のために さらなる分析 と 全て の JMPの 機能。
しかし 何 もし そこには a データ タイプ それ あなた できない 輸入?
ジャンプ しない 知る どうやって に する それ。
で これ 場合 勉強、 病気 なれ 見ている で その JPEG 画像 形式
それ は かわいい 一般 の間で 全て デジタル カメラ そして スマートフォン。
私は もちろん みんなの おなじみ と それ。
で 事実、 あなた かもしれない なれ と言って、
待って a 分、 I 考え ジャンプ できる 開ける JPEG、
そして で 事実、 それ できる 開ける a JPEG。
しかし いつ それ する、 あなた 得る 一つの 画像 のように これ。
しかし そこには もっと で それ JPEG よりも ただ その 画像。
のために 例、 もし I 得る 情報 の上 これです、
I 見る 何 親切 の デバイス その 画像 だった 撮影 と、 何 レンズ だった 使用済み、
そして 平 その GPS 座標 の どこ I だった 立っている いつ I 取った その 写真。
今、 どうやって できる 私たちは 得る それ データ 輸入 の中へ ジャンプ?
良い、 私たちは できる する それ を通して JSL、
どれの 病気 得る に で ただ a 分。
しかし もし 私たちは 開ける これ ファイル で a 文章 エディタ、 私たちは 見る それ その ない 人間 読める 文章。
その a シリーズ の バイト それ は 表示されている として これら 印刷できない 文字、
そして 私たちは 電話 それ バイナリ データ。
その データ それは 外 その 範囲
の 普通 アルファベット 文章。
それ もっている a 構造、 けれど、 そして その データ は ロックされた 内部 そこには。
もし のみ 私たちは できる 決定する どうやって に 解く それ。
に する それ、 私たちは 必要 に 知る
その 仕様 この データ は 敷設された 外。
で その 場合 の JPEG、 それは 定義された による a 仕様
Exifと呼ばれる または 交換可能 画像 ファイル 形式、
そして 私たちは できる ダウンロード その スペック のために それ。
その a 書類 それは された 約20年間、
そして その で 使用 による 全て その デバイス それ 生産する JPEG。
ない のみ ハードウェア デバイス のように カメラ、
しかし 平 フォトショップ 置く メタデータ で a JPEG で これ エクシフ 形式。
に アクセス それ から JMP、
私たちは 必要 に 使用 a 日本語 物体 知られている として その ブロブ または バイナリ 大きい 物体。
これ は ただ a 日本語 物体 それ 保持する a 順序 の バイト。
のように その 名前 言う、 それ 順序 の バイト できる なれ 大きい。
私たちは できる 実は 作成する a ブロブ ロードすることで コンテンツ
の どれでも ファイル の上 あなたの 難しい ディスクを挿入する 使用して これ 負荷T 内線 ファイル 関数。
通常、 それ だろう 戻る その コンテンツ の a ファイル として 文章、
しかし もし 私たちは 追加 これ ブロブ キーワード として a 2番 パラメータ、
それから その 関数 返品 a ブロブ。
私たちは できる 取る 1つ ブロブ そして サブセット a その一部
の中へ 別の ブロブ 使用して BLOBピーク のように あなた 見る ここ。
これ は 服用 50 バイト から b、 起動 で オフセット 100。
今 その オフセット のために BLOB は 常にゼロから始まり、
それで その 初め バイト で その ブロブ は 一つの オフセット ゼロ。
今 私たちは できた する 両方 の それらの 単一の関数呼び出しでの操作
による 通過 その オフセット そして 長さ パラメータとして
に その ブロブ キーワード いつ 私たちは 電話 低い 文章 ファイル。
もし あなた 見る ここ それ 言う、 開ける その このパスのファイル、
スキップ 100 バイト で そして 50バイトを読み取り、 そして 戻る それ として a ブロブ。
一度 私たちは 持っている a ブロブ、
私たちは できる 変換する それ に a キャラクター 弦 使用して その ブロブ に チャー 関数。
ここ だった 服用 b2 そして 変換する そのバイト の中へ a キャラクター 弦、
仮定 それ それらの バイト は で その " 「us-ascii」文字セット。
もし 私たちは しない 特定 a 文字セット、 ジャンプ 想定している その UTF-8 .
私たちは できた また 考慮する それ ブロブ
に 含む a シリーズ の 数値 価値観、 全て の その 同じ タイプ そして サイズ。
使用 ブロブ に マトリックス ここ、 だった 服用 b2,
どれの 私たちは 読む で そして セット 長さ 50 バイト、
そして 通訳 それ として 一つの 配列 の 署名なし 整数、
それぞれ の どれの は 二 バイト 長さ。
私たちは すべき 得る 戻る a マトリックス と 25 数字 で それ。
今 それ 4番目 パラメータ、 その 弦 "大きい、"
言う それ それらの 署名なし 整数 は 大きい エンディアン 形式、
意味 その 初め バイト は その ほとんど 重要な、
は その 端の最も高い部分、
そして それから 続いて による その 最低 一部 の その 終わり。
私たちは できた また 特定 その 弦 少し に 特定 リトルエンディアン 形式。
バイナリ ファイル 持っている
両方 の これら 種類 の 表現 の 整数 そして 他の 数字。
で 事実、 その エクシフ 形式 用途 両方 ビッグエンディアン そして 小文字のe 激しい。
さあ 取る a 見て で これら 操作 で アクション。
私は 行く に スイッチ 以上 に JMP、
そして私は 行く に 開ける これ デモ スクリプト ここで、D エモ 番号 1.
今 私たちは 見る いくつかの の その コード 私たちは ただ 見た で。
ここ 私たちは は 読み込み中 a 文章 ファイル、 これ ファイル 名前 ビーチ.j ペグ。
これ は その 同じ ファイル それ I 使用済み で 私の スライド。
その 右 ここ そして あなた できる 見る それ。
あなた できる また 見る それ それは大きさがある の について 3.4 自分。
いつ I 走る これ 1つ ライン の コード
そして ログ、 それ 伝える 自分 それ
bは 割り当てられた a ブロブ 345,000の そして その他 バイト、 または 3.4 自分。
それ しない 見せる 自分 全て それらの バイト、 しかし I できる 見る どうやって 大きい それ は。
I できる 得る それ 長さ 使用して その 長さ関数、
ただ のように あなた 使用 のために キャラクター 文字列。
しかし いつ I 使用 長さ の上 a ブロブ、 それ 与える 自分 戻る その 番号 の バイト。
I できる
得る a サブ ブロブ の その 初め 六 バイト
で b 使用して BLOB ピーク。
良い する それ ここ、
そして I 見る a ブロブ の 六 バイト だった 割り当てられました。
I できる 実は 見て で その 価値 もし I 欲しい による ただ
提出する その 名前 の その 変数。
I できる 見る ここ は それらの 6バイト で これ 「ascii-hex」形式
FF-D8-FF-E1、 そして その他。
I できる 取る これら 六 バイト そして 変換する 彼ら に a マトリックス、
そして 私は 行く に 変換する 彼ら に a マトリックス の 二 バイト 符号なし整数
または ショートパンツ で ビッグE 激しい 形式。
与えられた それ そこには は 六 バイト ここ、
I すべき 終わり 上 と a マトリックス の 三つ 数字。
いつ I 走る これ、 もちろん 十分、 そこには 私の 三つ 数字。
私たちは できる 見る それらの 三つ 数字 で ヘックス
ただ 確認する と これ 少し 4つ ループ それ I 書いた、 それで さあ する それ。
そこには 彼らは は、 ただ 同じ として 前に、 FFD8、FFE1、 0982年。
それで 今、 さあ 見て で その 次 4つ バイト 続く それらの 六 で その ファイル、
そして 良い 得る 彼ら で a サブ ブロブ すべて 彼ら自身
それで それ 私たちは できる それから 変換する で に a キャラクター 弦 使用して ブロブ に チャー。
いつ I 走る これ、 わかります その キャラクター 弦 " 「Exif」。
あなた 5月 持っている 気づいた で スライド
表示中 その バイナリ ファイル コンテンツ
それ それ 少し 弦 だった 上 そこには 上部付近、
そして その 一部 の その エクシフ ファイル 仕様と 識別する それ として そのような。
さあ 行く 戻る に スライド。
それらの 機能 は 強力です。
彼らは させて 私たち する 何 私たちは 必要 に する に 操作する そして 読む データ から a ブロブ、
しかし 彼らは a 少し 面倒な に 使用。
さあ 書く 私たちの 自分の ユーティリティ に 作る 彼ら a 少し もっと 扱いやすい。
私は 行く に 始める と a Read Valueと名付けた関数
そして それ かかる a ブロブ そして それから いくつかの オフセット そのBLOB内では、
そして それから その 数値 タイプ 読みたい そして その サイズ の それ タイプ。
その 行く に 読む 1つ 価値 外 の その ブロブ。
I 合格した 私の ブロブ そして オフセット そして サイズ の中へ BLOBピーク、
得る 戻る a サブ ブロブ の ただ それらの バイト、 そして それから 電話 ブロブ に マトリックス
通過 で その タイプ。
I 使用 その 同じ サイズ、
それで その サイズ の その ブロブ そして その サイズ の 一つの 要素 は その 同じ。
I すべき 得る 戻る a マトリックス の 1つの値
そして I 合格 で "大きい" なぜなら 私は ただ いつも 行く に 使用 ビッグエンディアン 形式。
しかし I しない 欲しい に 返す マトリックス。
I 欲しい に 戻る それ 1つ 価値、 それで I 引く それ 外 の その マトリックス そして 戻る それ。
これ は と呼ばれる のように それで。 I 電話 読み取り値、 I 合格 で b.
I 読む 1つ 符号なし整数 起動 で オフセットゼロ
そして その 二 バイト 長さ そして I 得る 戻る それ 値 FFD8。
そこには a 問題 と これ コードですが、 そして それは で これ パラメータ b.
B は それ ブロブ それは 3.4 に で サイズ。
その 問題 は それ JSL、 いつ 通過 a ブロブ に a 関数、
いつも パス それ による 価値、 意味 それ 作る a コピー の それ。
のために 毎 シングル 番号 I 欲しい に 引き抜く の 私の ブロブ 使用して これ 関数、
それ 意思 作る a コピー の それ 3.4 に
ただ 引く 外 二 バイト、 または 4つ バイト あるいは何でも、 そして それから 投げる それ 離れて
いつ 関数 戻ります。
それは 非効率的、 無駄な、 そして おそらく 本当に 遅い、
それで 私たちは しない 欲しい に する それ。
どうやって できる 私たちは 得る その周り それ?
良い、 その代わり の 通過 それ として a パラメータ、 さあ 置く それ で a グローバル。
良い 作る a グローバル それ 私たちは 負荷 BLOBを使用すると、
そして それから 私たちは できる 電話 その 関数
そして それは ただ 参照する に その グローバル その代わり の a パラメータ。
で 事実、 私たちは できる 作る a 束 の グローバル。
私たちは できる 記録 その 長さ の その ブロブ に オフセット
に どこ 私たちは は 現在 処理 データ で その ブロブ、
そして 多分 平 のために その エンディアン。
その 問題 と グローバル、 けれど、
は それ 彼らは は で その グローバル シンボルテーブル、
そして 彼らは かもしれない 干渉する と 他の コード それ あなた 持っている。
で 事実、 私たちは のように に 書く 私たちの 輸入 コード として 何か それ できる なれ 使用済み
による 他の クライアント、
そして それらの クライアント かもしれない 持っている 彼らの 自分の 変数 による これら 名前、
または 彼らは かもしれない なれ 使用して 他の コード 図書館 それ だろう 干渉する。
どうやって する 私たちは 得る その周り それ?
良い、 私は 終わり それ による 作成 a 名前空間。
I 電話 私の 名前空間 " EXIFパーサー
今、 その代わり の グローバル、 I 置く 彼ら 全て として 変数 私の名前空間内で、
そして 今 彼らはNだ エイムスペース グローバル と それ 接頭辞。
前に I 電話 私の 関数、 I 必要 に 初期化する 彼ら。
病気 負荷 その 「ビーチ.jpeg」 ファイル の中へ その EXIF P アーサー ブロブ、
病気 記録 その リンク。
病気 始める オフ 私の オフセット で その とても 始まり で ゼロ、
そして 病気 セット その エンディアン に "大きい、"
そして それから I できる 変化 私の 関数、 簡素化 それ a 少し のように これ。
今、 私は 実は 置く 私の 同じ名前空間内の関数の値の読み取り
として 一部 の その EXIF パーサー 名前空間。
今、 全て I 必要 に する は 合格 a タイプとサイズ。
BLOBピーク 今 用途 その グローバルBLOB それは 保存された で その 名前空間、
その 地球規模の流れ オフセット 私たちが読んでいるのは
そして ブロブ その マトリックス 平 エンディアンを使用する。
それで 私たちは できる それをパラメータ化すると、 私たちは できる 変化 それ。
一度 私は 取得 その 結果 I 欲しい、
病気 インクリメント その オフセット による その バイト数
私たちは ただ プロセス、 そして それから 病気 戻る それ として 前に。
さあ 見る 何 それ 見た目 のように で アクション。
見てみましょう で デモ 2
そして ここは 私の 名前空間。
ここ は 私の グローバル で それ 名前空間。
こちらは その 読み取り値 関数、 ただ のように 私たちは 見た。
私は 得た いくつかの もっと 機能。 私は 置く 一つの EXIFパーサー
こちらは Read ShortはRead Valueを引き起こします。
しかし それ いつも パス 署名なし 整数 の 二 バイト。
同様に、 読む 長さ 読む そして 署名なし 整数 の 4つ バイト。
私は また 得た 読む アスキー あなたがそれを渡す a サイズ で バイト
そして それ 作る a サブ ブロブ の それ 多くの バイト
で その 現在 オフセット から その グローバルBLOB、
そして それから 原因 ブロブ に 充電 に 変換する それ の中へ a 弦。
その 使用して その 「us-ascii」文字 セット、
なぜなら それは その 文字セット それ その エクシフ 仕様 言う
すべて その キャラクター データ 用途。
それから ただ のように と 読み取り値、 それ 増分 に オフセット 過去 その バイト
それ だった すでに 加工済み そして 返品 その 弦。
さあ 提出する 全て の これ コード
それで それ それらの もの は 全て 定義された そして それから 私たちは できる 試す に 使用 彼ら。
初め、 良い 初期化する 私たちの EXIF P アーサー グローバル、
そして それから 病気 読む その 初め 三つ ショートパンツ から その ファイル ただ のように 私たちは した 前に。
しかし 今、 私は 行く に 電話 ショートを読んでください。
だった 起動 それ オフ で ゼロ、
それで 私は 行く に 電話 それ 三つ 回 で これ ループ。
それ 意思 読む で それぞれ 連続した 短い、
前進 オフセット として それ 行く、 そして印刷する 彼ら 外 ただ のように 前に。
そこには 彼らは は。
今、 私たちの オフセット は 座っている で オフセット6 ただ 過去 その 最後 もの それ 読む。
I できる ASCIIコードを読む のために 4バイト そして I 得る 戻る それ 同じ 弦。
わかった、 それで さあ 行く 戻る に スライド。
今、 私たちは 持っている いくつかの ツール 私たちは できる 使用 に 始める 建物 私たちの EXIF パーサー。
私たちは 必要 に あなた の中へ その 仕様
に 見る 何 する その EXIF データ 形式 そして これ JPEG ファイル 見て のように。
良い、 で その トップ レベル、 それ 見た目 何か のように これ。
それ 始まる と 二 バイト、 どれの は 何ですか と呼ばれる その 始める の 画像 マーカー。
私たちは すでに 見た それらの 二 バイト。
彼らは その 価値 FFD 8.
もし あなたの ファイル しない そこから始めましょう、 その ない a JPEG。
それから そこには a シリーズ の ブロック の データ、
そして それぞれ ブロック 始まる と 二 バイト、 どれの は a マーカー、
それから 二 バイト、 どれの は a サイズ、
そして それから いくつかの データ どれの は しかし 多くの バイト その サイズ の そこには だった。
今 その サイズ また 含まれるもの 自体、 それで 本当に その データ は サイズ マイナス 二。
あなた できる 見る そこには、 は a さまざまなブロックタイプが定義されており、
しかし いくつかの の 彼ら は オプション、 いくつかの の 彼ら できる なれ 繰り返します。
その もの それ 私たちは ケア について は APP1 そして APP2.
それは どこ その EXIF データ 意思 なれ。
それから そこには a 束 の その他 それ 私たちは しない ケア について。
最終的に、 私たちは 見る 1つ と呼ばれる 始める の スキャン または SOS。
いつ 私たちは 打つ それ、 私たちは 知る それ その 次 一部 の その ファイル
意思 なれ その 実際の 画像 データ、 どれの は その ピクセル。
いつ 私たちは 打つ それ、 私たちは できる 停止。
それから 後 その 画像 データ は 終わり の 画像。
私たちは 必要 一つの アルゴリズム に 読む これ データ。
こちらは 何 良い 使用。
初め、 良い 読む その 初め 二 バイト、
見る もし それ マッチ その 始める の 画像マーカー、
そして それから 私たちは 知る 私たちは 持っている a JPEG。
それから 良い 持っている a その間 ループ、whileループ内で
それぞれ 時間 を通して、 良い プロセス a シングル ブロック。
に する それ、 私たちは 意思 保存 その 現在 オフセット 位置、
読む その 二 バイト のために その 次 マーカー、
そして もし それ マーカー は SOS、 私たちは できる 壊す 外 の その ループ。
次、 私たちは 読む その 二 バイト のために その サイズ。
今 私たちは 持っている 全て その 情報 私たちは 必要 に プロセス その ブロック。
何でも それ これには、 良い する それ。
それから 私たちは できる スキップ 過去 その データ で ブロックを処理するケース
しなかった 変化 私たちのオフセットは全く しかし 良い 明示的に オフセットを移動する
に 何でも それ だった で その 始まり の その ループ、
プラス その 二 バイト のために その マーカー、 プラス その 価値 の その ブロック サイズ。
いつ 私たちは 得る 外 の その ループ、
私たちは どちらか 走った 外 の データ で その ブロック に プロセス または 私たちは 打つ それ SOS マーカー、
それで だった 終わり。
さあ 見る 何 それ 見た目 のように。
デモ 3 もっている これ コード。
あなた 見る、 私たちは 持っている 私たちの 名前空間、 そして 全て これ は その 同じ として 前に。
私は 行く に 走る それ ただ に 確認する すべて は 定義されました。
今、 だった 追加する a 新しい 関数、
どれの 私は また 置く で その 名前空間、
そして その と呼ばれる EXIFパーサー:EXIFデータRawを取得、
そして 私は 通過 で その パス に その ファイル、 そのJPEG ファイル それ 私たちは 欲しい に プロセス。
今、 私は 定義された 一つの 連想的 配列 ここ それ 地図 それらの 魔法 マーカー コード
に 彼らの 略語 そうすれば 印刷 彼ら 外 の上 その ログ。
I 負荷 上 私の
エクシフ パーサー グローバル のように 前に、
のみ 今 私は 通過 で その ファイル パス それ I だった 与えられた、
そして それから I 始める 通訳 何 その データ は。
初め、 I 見て で その とても 初め 短い
そして 作る もちろん それは始まりです の 画像 マーカー。
もし ない、 I ただ 戻る なぜなら その ない a JPEG ファイル。
私は 行く に 書く に その ログ それ I 見た それ で オフセット ゼロ。
それから ここは 私の その間 ループ に 歩く を通して それらの ブロック。
で その トップ の その ループ、
私は 行く に リセット 私の エンディアン に "大きい、" なぜなら いくつかの の その ブロック、
いつ 私たちは プロセス 彼ら、 意思 持っている 彼らの 自分の エンディアン
そして 変化 それ に 少し。
私たちは 欲しい に 知る それ その エンディアンとは 大きい で その ループの頂点
なぜなら その ブロック 構造 いつも 用途 ビッグエンディアン データ。
それから 私は 行く に 保存 何でも その 現在 オフセット は、
そして それから 私は 行く に 読む その 次 マーカー。
その a 短い、 そして 私は 見て に 見る もし その 等しい に SOS、
どれの は それ 魔法 番号。
もし それ は、 I できる 壊す 外 の その ループ 後 伐採 それ I 見た それ。
次、 病気 読む その 二 ブロックサイズのバイト、
そして それから I 意思 プロセス その ブロック。
今、 で これ 例、 私の 処理 構成 の 書き込み a メッセージ に その ログ、
それで 病気 する それ。
それから 私は 準備ができて に スキップ 過去 その ブロック。
I する それ による 変化 私の オフセット に なれ 何でも それ だった で その 始まり、
プラス その 二 バイト のために その マーカー、 プラス その ブロック サイズ。
いつ I 壊す 外 の その ループ、 I リセット 私の グローバル と 私は 終わり。
さあ 定義する それ 関数 による 提出する これ。
私は走ります スクリプト、 そして それから I それを呼ぶことができる 通過 で 「ビーチ.jpg」
見てみましょう 何 私たちは 得る。
それ 印刷された 外 に その ログ。
それ オフセット ゼロ、 そこには 始める の 画像、 それから それ オフセット 二、 そこには APP1、
そして それ もっている これ サイズ 2,466 バイト。
それから 私たちは 得る APP2、 どれの もっている について 3万 の データ。
それは ほとんど の それ 右 そこには。
それから 私たちは 持っている a 束 の ブロック それ 私たちはあまり気にしていません
しかし 最終的に、 私たちは 見る SOS それで 私たちは 壊す 外 の その ループ。
それは 全て 働く 良い。
さあ 行く 戻る に スライド。
今、 私は 行く に スキップ 先に で 処理 いくつかの の これ ファイル 形式
ただ のために その 酒 の 時間。
しかし もし あなた ダウンロード その 紙 それは 関連する と これ 話す、
その 満杯 コード は そこには そして 多くの もっと 詳細。
I 非常に 推薦する それ あなた する それ、
しかし 私は 行く に あなたに与える a 風味 の それ ここ。
何 私たちは する 次 は 私たちは プロセス それぞれ の それらの ブロック それ 私たちは 持っている 読む、
そして いくつかの の 彼ら 私たちは できる 無視する。
私たちは 欲しい に フィルター 外 その ブロック それ する ない 含む 過剰 データ。
それから その もの それ する、 私たちは 必要 に する その 自分の 解析。
何 私たちは 発見した いつ 私たちは 見て の中へ その Exif仕様
は それ これら ブロック 含む 彼らの 自分の データブロックのセット
と呼ばれる 画像F と ディレクトリ または IFD。
それから それらの 含む 個人 メタデータ 情報
と タグ 言って 何 その データは
そして それから 何 形式 その で、 そして それから その データ 自体。
私たちは 欲しい に 集める 全て の それらの もの 一緒に の中へ これら リスト。
そこには なれ リスト の リスト の リスト、 a 幾分 複雑 データ 構造。
しかし その リスト データ 構造 は 非常に一般的
そして ジャンプ そして できる 所有 全て 種類 の データ、 それで それは 何 私たちは 欲しい に 使用。
それは 持っている それらの メタデータ アイテム タグ付けされた
と これら 数値 価値観 それ 私たちは 電話 その 生 タグ、
しかし 私たちは 欲しい に 交換する それらの
と 実際の 人間 読める ラベル それ 識別する 何 彼らは は。
さあ 見て で これ そして JMP、 そして 病気 見て で デモ4 .
今、 で これ ポイント、
I 持っている 撮影 全て 私の コード で その 「EXIFパーサー」 名前空間
そして 置く それ の中へ その 自分の ファイル。
今 デモ4 は a クライアント の 私の コード、 どれの は 「EXIF Parser.jsl」
I できる ただ 含む それ。
今、 その 関数 それ 取得する その データ、
I できる 電話 それ 通過 で その 名前 の その JPEG ファイル。
今 私は 延長 これ 関数 で ここ 実際に プロセス それらの ブロック、
そしてそれを壊す 下、 フィルター 外 その もの それ は ない EXIF
全て その もの 私たちは ただ 話した、 そして 与える 私たち 戻る それ データ 構造。
さあ 走る これ そして 見る 何 私たちは 得る。
良い、 私たちは 得る a 多く の 数字、 いくつかの 文字列。
あなた 見る、 これ は で リスト 内で ここにリストします、
そして そこには 一つの 一番外側 リスト、
そして それから それ 含む 違う アイテム どれの は リスト。
それぞれ の それらの 持っている これら ペア の 価値観。
そこには a 番号 どれの は その 生 タグ、 そして それから その 価値。
これ 自分の a 弦。 これ 1つ は また a 弦。
これ 自分の a 番号。 これ 自分の a マトリックス。
その データ できる なれ 違う 種類、 しかし その タグ は 全て 数字。
何 私たちは 欲しい に する 次 は 変換する それらの 数字 の中へ 人間 読める アイテム。
で 事実、 これ 全体 リスト、
私たちは 欲しい に 変換する それ の中へ 一つの 連想的 配列 それ インデックス その データ による キー。
その 初め もの 私は 行く に する
定義する a マッピング から これら 数字 に 人間 読める キー 私たちは 欲しい に 使用。
それは で これ 長さ 連想的 配列 右 ここ。
今、 私は 実は 使用して その ヘックス キーの値、
なぜなら それは どうやって 指定されている で その Exif仕様、
そして それ 作る それ より簡単に に フォローする 平行 いつ あなたは 見ている で その スペック
そこには a 束 の それらの、
そして 私は 行く に 始める で その 一番下から始めて、上を目指します。
下 ここ で これ 関数、 ラベル 生 データ。
I 合格した で これ 全体 データ 構造 私たちが戻ってきた 解析 その ブロブ。
こちらは その 意味 の ラベル 生 データ。
私は 行く に 戻る
a リスト として 私の 結果、
それで 私は 行く に 歩く を通して その リスト として 私の 入力 そして 使用 それ
に 建てる 上 その 結果 リスト。
I 使用 これ のために それぞれ 構築する、 どれの は a 新しい モダンな JMP関数
それ 散歩 を通して a リスト、 そして のために それぞれ 要素 の その リスト、
それ 引っ張る それ 外 の中へ これ 変数 生 exifは、 病気 合格 に これ 関数。
それから I 欲しい に 追加 それ に 私の 結果。 I する それ 使用して これ 入れる の中へ ライン。
私は 挿入する それ に その 終わり の 結果、 そして I 持っている に 使用 評価 リスト に 克服する
何か それ ジャンプ は やっている に なれ 役立つ と リスト 創造。
また、 そこには もっと 詳細 について これ もの で その 紙。
その 価値 ダウンロード中 そして チェック中 の中へ。
しかし のために ここ、 だった ただ 行く に 見て で その 電話 に ラベル EXIF、
そして それは 右 上 ここ。
ラベル EXIF は 行く に する a 似ている もの
どこ その 行く に 歩く を通して それぞれ の これら タグ 価値 ペア。
その代わり の 戻る a リスト、 それは起こっている に 戻る 一つの 連想的 配列。
ここ、 私たちは は 結果の初期化 に なれ 一つの 仲間 配列。
それは 何 これ トークン 手段。
その 一つの 空の 連想的 配列、 そして それから 良い 戻る それ で その 終わり。
良い また 使用 のために それぞれ に 歩く リストを通して、
そして 私たちは 知る それ それぞれ 生 アイテム は 行く に なれ a リスト の 二 要素。
私たちは 得る その 初め 要素、
どれの は その 生 タグ、 そして 2番 要素は その データ。
私たちは 単に 建てる 上 私たちの連想 配列 による 追加する
一つの アイテム キー付き による その 生 タグ と その 価値 の その データ。
かわいい 単純、 を除外する 私たちは 欲しくない その 鍵 に なれ その 生 タグ。
私たちは 欲しい に 変身 それ 使用して 私たちの 見上げる テーブル。
それは 何 得る タグ する、 そして それは 定義された 次 上 ここ。
それ 単に かかる その タグ id 私たちは 合格 で、 改宗者 それ に 16進数。
これ 意思 与える 私たち 戻る 4文字の 16進数 弦。
私たちは 必要 その 右 ほとんど 4つ そこからの文字、
そして それから 私たちは 見て それ 上 で 私たちの もし タグ 配列 上 ここ。
私は 行く に 提出する 全て これ コード
に 定義する それ、 そして それから いただきます 電話 ラベル 生 データ。
こちらは その 結果。
あなた できる 見る それ その 似ている に 前に、 を除外する 今、
その代わり の その 一番上 レベルリスト、 それ しない 持っている 別の リスト、
それ もっている 一つの 連想的 配列。
これ トップ ほとんど もの は a リスト の 関連する 配列。
これ 初め 1つ 私たちは できる 見る それ その 生のキー 何でも その 番号 だった、
得た 変換された に 日付T する そして そこには その 価値 そして それで の上。
しかし 私たちは 気づいた その 2番 1つ 見た目 のように それ もっている タグ
それ しなかった 得る 変換された。
なぜ は それ?
良い、 その なぜなら これ 鍵 ExifIFD もっている として その データ。
実は、 別の イスラエル国防軍 はい、 これ は a 再帰的 データ 構造
それは 定義された で 条項 の 自体。
もし 私たちは 欲しい に ラベル その もの ここの中に、
私たちは 持っている に 変化 私たちの コード に 再帰的にラベルを付ける、
そして 良い 得る に それ で a 分。
しかし 前に I 離れる これ、 I 欲しい に 見せる それ 私は 行く に 実は
組み合わせる これら 二 手順 の中へ a シングル 関数 それ I 電話 得る EXIF データ、
どこ I 初め 得る その 生 エクシフ データ 外 の その ブロブ、
そして それから I ラベル それ、 そして私は 戻る その 結果 の それ。
さあ 定義する そして 走る それ、
そして それ すべき なれ 全く同じ として 何 私たちは ただ 見た。
もちろん 十分、 それ は。
私は 行く に 近い これ そして 行く 戻る に スライド。
うん、 スキップ 先に また、
として I 言及された、 私たちは 持っている に する 私たちの ラベリング 再帰的に。
として I 言及された、 いくつかの エントリー メタデータ内 または IFD
持っている として 彼らの データ 別の IFD。
それ 手段 私たちは 持っている に 電話 私たちの ラベリング ルーティーン 再帰的に。
その 方法 それ I する それ、
は に 使用 これ 日本語 建てられた で 再帰、 どれの 通話 その 現在 に 関数、
そして あなた できる 合格 で 別 パラメータ のために その 再帰的 電話。
そこには もっと 詳細 の上 それ で その 紙、
どれの 私は もちろん あなたは すでに ダウンロード済み で これ ポイント。
今、 その 1つ もの に なれ わかっている の
それは いくつかの の これら 埋め込み IFD、 ほとんど の 彼ら 使用 その 同じ 見上げる テーブル
それ 私たちは すでに 定義、
しかし いくつかの の 彼ら 持っている 彼らの 自分の 見上げる テーブル。
私たちは 持っている に 作る もちろん だった 通過
その 正しい 見上げる テーブル 独自の定義を持つ の タグ
に 私たちの 再帰的 電話 として だった 行く を通して その 違う レベル の 再帰。
それから 一度 私たちは 持っている a 完全に ラベル付き データ 構造 戻る、
私たちは できる 抽出する ピース から それ を取得するには もの だった 興味がある で。
私たちは できる 走る それ 以上 a 全体 一連の画像
そして 集める 全て それ データ の中へ a データ テーブル または いくつかの 他の 形式。
さあ 見て で それ で ジャンプ。
良い 引く 上 デモ 5、 どれの ここ 私は
巻かれた 全て の それ 再帰的 ラベリング の中へ 私の 得る EXIF データ 関数。
私は 行く に 含む 私の 名前空間 コード そして それから 走る それ 関数。
今 だった 取得 戻る
私たちの 完全に ラベル付き
データ 構造。
あなた できる 見る それ 今 このEXIF ID ラベルが入っています。
そこには は これ 大きい ブロック の データ の 数値 もの、
そして 私たちは 見て そして 私たちは 見る それ それは これ もの と呼ばれる メーカー 注記。
メーカー 注記 は a 特別 拡大 に その Exif仕様
それ 許可する その メーカー の a 特定の デバイス、 で これ 場合 、 りんご、
その メーカー の 一つの iPhone 12, に 埋め込み 彼らの 自分の 独自の データ。
で いくつかの ケース、 a カメラ メーカー かもしれない 明らかにする 何 彼らは 埋め込み そこには。
で 他の ケース、 人々 持っている 選別 の
推測した で それ そして 来る 上 と 彼らの 最高 推測。
それは その 場合 と りんご。
そこには いくつかの もの それ は 知られている そして 他の もの それ ない 知られています。
あなたは 見る a 多く の これ は ただ タグなし。
しかし いくつかの もの 私たちは できる 見る、 加速ベクトルと実行時間、
そして その他 で そこには。
ともかく、 だった 行く に それをほとんど無視する
そして 見て で 何 これ もの 含まれています。
I できる 見る それ その 一つの 連想的 配列 で それ 初め 要素、
そして それは どこ ほとんど の その もの I 欲しい に 取引 と
私は 行く に 引く それ 外 の中へ その 自分の 変数 右 ここ。
それは 14 要素、 それで 私たちは できる 見る 何 それらの は、 何 彼らの キー は
のように それで。
そこには は それらの キー。
もし 私たちは 欲しい に 引く 何か 外 のように "モデル、"
I できる する それ 単に による exif1の「モデル」に添え字を付ける
そして I できる 見る その iPhone 12 プロ。
I できる する その 同じ もの に 得る その 日付 時間、 そして そこには それ は。
しかし これ は で その 日付 時間 形式 それ その エクシフ 仕様 定義します。
それは ない a 形式 それ JMPは、
しかし I できる 使用 JMPの で フォーマット機能 に 変換する それ の中へ 何か
使用して これ 形式 パターン オプション、 どれの は a モダンな 日本語 もの
それ しましょう 指定してください その パターン の その 日付 時間 データ、
そして ジャンプ 意思 変換する それ に a 数値 日付時刻、
どれの それ 認識する として そのような、 そして フォーマット それ のために その ログ。
それ 働いた。
今、 私は また 興味がある で その GPS 座標、
そして それは で これ GPS IFD 一部 の その EXIF。
それ は 1つ の それらの それ は 自体 一つの IFD。
さあ アクセス それ、 そして それから 私たちは できる 見る 何 それ 含まれています。
それ もっている 情報 について その 高度、
差分、 画像 方向、 緯度、 経度、 そして スピード。
何 私たちは ケア について は その 緯度 経度、 どれの は これら 4つ もの。
そこには 緯度、 そこには 経度、
そして それから 彼らは 持っている これら 関連する 参照 価値観。
私たちは 必要 全て 4つ の それらの に 計算する その 座標。
さあ 始める と その 緯度。
良い 引く それ 外 の中へ その 自分の 変数、 そして 私たちは 見る その a リスト の 三つ 要素。
もし 私たちは 見て で 何 それらの 三つ 要素は、
私たちは 見る それ そこには は 3つのベクトル と 二 数字 で それぞれ 1つ。
その エクシフ 仕様 参照 に これら として 有理数、 そして それ 用途 彼ら a 多く。
しかし 何 私たちは 欲しい は 実際の 数字 その代わり の これら 有理数、
分子 、分母。
私たちは できる 変換する 彼ら 使用して これ 変身 それぞれ 関数、
どれの ループ 横切って これ リスト そして 各要素を処理する
後 パッティング それ の中へ a 地元 変数 r.
私たちは 欲しい に プロセス それ による 分割する
その 分母 の中へ その 分子、 そして それから 変身 それぞれ ビルド a 新しい リスト
の それらの 結果 そしてそれを置く で 私たちの 変数、
それ いる、 のように あなた 見る そこには。
今 これら 三つ 数字 は その 度、 分、 そして 秒、
しかし 私たちは 欲しい に 組み合わせる 彼ら 全て の中へ a シングル 価値 のために ジャンプ に 使用。
私たちは 持っている に 追加 彼ら 一緒に、 スケーリング それぞれ 成分 適切に。
する それ そこには そして 私たちは 得る
その 価値。
今、 もし それは で その 北部 半球、 だった 大丈夫。
しかし もし その で その 南部 半球、 それ ニーズ に なれ ネガティブ。
もし 私たちは 見て で それ 「GPSL」 態度R もし、"
その どちらか N または S、 どれの 伝える 私たち もし その S、 私たちは 必要 に 否定する それ。
私たちは できる する その 同じ もの のために 経度。
その 経度R もし 意思 なれ どちらか E または で。
E は ポジティブ 東 価値観 そして W は ネガティブ 西 価値観。
ここ 私たちは 見る 私たちは 持っていた に 否定する
その 経度 なぜなら それ だった で その 西。
もし 私たちは ごみ それらの 二 数字 外、 私たちは できる 使用 JMPの 建てられた で フォーマット のために
緯度 そして 経度、
そして 私たちは できる 確認する それ 彼らは マッチ
何だ 発見 できる 引く 外 の その ファイル として それらの 座標。
私たちは できる 見る それ その 北 そして 西、 それで その で 北 アメリカ。
今 私は 行く に スキップ に デモ6 , どこ 私たちは 置く 全て これ 一緒に。
私は 行く に 使用 それ コード に 情報を引き出す
外 の a 全体 束 の 写真。
で これ フォルダ、 I 持っている 16 の 彼ら、
そして 彼らは 写真 それ 私は 撮影 で 前の ジャンプ 発見 サミット
で ヨーロッパ の上 年 戻る 私たちが 使用済み に する 彼ら で 人。
それは 置く 全て その 情報 それ 発見 の中へ a データ テーブル。
私は 行く に 走る これ そして ここは 私たちの データ テーブル、
そして 私たちは できる 見る それ 私は 捕らえられた その 名前 の その 画像 ファイル
そして その タイムスタンプ。
あなた できる 見る それ 行く から 2016 に 2018年、
そして その 緯度と経度 NGO は 北 そして 東、 それで それは ヨーロッパ。
I できる 平 見る その 進行 の 私が持っていた様々なiPhoneモデル
横切って それらの 年 そして どうやって 彼らの レンズ 改善された 以上 時間。
私は セット これ 上 それで それ I できる 行を選択
そして クリック これ 得る 情報 表スクリプト、 そして それ 開く a ウィンドウ のために 自分
それ ショー 自分 その 写真 メタデータ のために それ
それ 私は 捕らえられた。
I 平 持っている a ボタン ここ Googleマップを表示、
それで I できる クリック それ、 そして アップポップ a グーグル 地図 の それ 位置。
その 右 そこには と その 赤 マーカー。
I できる 私がzかどうか確認する 叔父 で これは その ヒルトン アムステルダム。
それは どこ 私たちは 持っていた その 会議 で 2016年。
それ 全て 思われる に 仕事 良い、
I n これ 場合、
私は 行く に 追加 その 写真 彼ら自身 に 私の データ テーブル として 一つの 表現 カラム。
それは 何 これ 追加 写真 テーブル スクリプト そうします。
のために 大きい コレクション、 I だろう ない 欲しい に する それ
なぜなら、それは実際には 作る a コピー それらの写真の の中へ その データ テーブル。
しかし のために 16, その 大丈夫。
のために 数千 または 平 数百、 あなたは おそらく ない 欲しい に する それ。
しかし その また セット 私の 新しいコラム に なれ a ラベル カラム。
今 I できる 走る これ エクスプローラ スクリプト どれの 開く
a グラフ ビルダー の それらの 緯度 そして 経度。
I できる 見る いくつかの ポイント ここ。 こちらは アムステルダム。
そこには a 写真 私たちは ただ 見た そしてここに いくつかの もっと。
それは 絶対に アムステルダム。
これら は ブリュッセル。 はい、 それは ブリュッセル。
以上 ここ、 私たちは 持っている フランクフルト。
それ 年、 私たちは 得た に 行く に その いいね
スーパーカー 博物館。
それ だった かわいい きちんとした。
以上 ここ 私たちは 持っている プラハ。
私は 行く に 使用 その 拡大鏡 に ズームイン の上 プラハ a カップル の 回。
A t これ ポイント 私たちの 詳細な 地球 背景 は ない 本当に 助ける 私たち 多くの
それで 私は 行く に スイッチ 通りへ 地図 サービス。
私たちは できる 見る、 はい、 それは 絶対に プラハ、
そして ここ は どこ 私たちは 乗った その 歴史的 通り 車 プラハ城まで
ここ は いくつかの ジャンプ 出席者 交差点 その プラハ城へ続く橋。
I できる 見る ジョン 秋 そこには で その 距離。
以上 ここ、 私たちは 持っている a とても ニース 受付 それ 私たちは 開催 で その 市営 ホール。
こちらは 自分 チェック中 その 時間
の上 私の りんご 時計 に対して その クロック に 作る もちろん それ その 右。
それ 全て 思われる に なれ やっている 何 私たちは 欲しい。
で 結論、 I 欲しい に 触る の上 その もの それ 私たちは 学びました。
私たちは 学んだ について その 日本語 物体 ブロブ、
どれの は a 良い 道具 に 持っている の上 あなたの 道具 ベルト
のために 操作する 任意 バイナリデータ。
私たちは 使用 それ に 建てる 上 a 少し 応用 のために 輸入 ファイル。
平行 その 方法、 私たちは 学んだ いくつかの もの 名前空間について そして 日本語 再帰、
専門化された リスト 取り扱い、 そして いくつかの モダンな 日本語 もの のように 変身 それぞれ、 のために それぞれ。
で アイン それらの もの は 覆われた で 多くの もっと 詳細 で その 紙。
しかし ほとんど 重要なのは、
I 考える は それ 私たちは 見た a 場合 勉強 方法の 取る a 難しい 問題
のように a 複雑なファイル形式
そして 壊す それ の中へ 小さなサブタスク それ 私たちは できた 征服する。
それは a スキル それ 私たちは 全て 持っている そして 必要 に 作る 使用 の で 私たちの プロ 仕事。
しかし I 考える その 多くの 回 役立つ に
観察する 誰か それ以外 やっている それ そして拾う ヒント そして ツール そして テクニック
それ 私たちは できる それから 使用 で 私たちの 自分の 仕事。
今 I 欲しい に 振り向く それ 以上 に あなた
に 取る これら ツール そして 使用 彼ら に 輸入 そして 書く その コード に 作成する あなたの 自分の
バイナリ ファイル そして 解決する あなたの 自分の 問題。
感謝 あなた とても 多くの。