サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
qiita.com/kunichiko
みたところ Raw File Sizeの合計値がちょうど APKファイルのサイズになっているので、おそらく、Raw File Sizeの正しい説明は以下の通りです。 Raw File Size Raw File Size はエンティティ(対象ファイル)がAPKファイル(Zipアーカイブ)内で占めるサイズを表します 以上を踏まえ、さらに詳細を調べます。そもそも beforeも afterも、Unzipped File Sizeはほぼ同一です。にもかかわらず、APKのファイルサイズが倍近いのはなぜでしょうか? その秘密は unzip -v コマンドを実行してみるとわかります。 beforeの方は圧縮率 68%で、3割強くらいのサイズになっていますが、一方で afterの方は圧縮率 0%、つまり、 無圧縮状態でZipファイルにアーカイブされています。 これはなぜなのでしょうか? 何のためにこうい
ご好評いただいたGoogle Spreadsheet を簡易 Webサーバーとして動かして、手軽にWebHookを受け取る方法 の具体的な応用例として、iOS の Auto-renewable Subscriptionsの購読ステータスの状態変更を Google Spreadsheetで受け取ってみたので、その顛末をご紹介します。 iOS の Auto-renewable Subscriptionsの購読ステータスの状態変更が、サーバで受信できるようになりました 恥ずかしながらWWDC 2017をちゃんと調べきれていなくて知らなかったのですが、iOS の Auto-renewable Subscriptionの購読ステータスの状態変更が、サーバで受信できるようになりました。長い間これができなくて困っていたのですが、ようやく少し改善しました(とはいえまだまだ Google Playの方が扱い
Google Spreadsheet を簡易 Webサーバーとして動かして、手軽にWebHookを受け取る方法GoogleAppsScriptWebhook 外部のサービスからの通知を WebHookで受け取ってちょっとした処理をしたいことってたまにありませんか? たとえば、アプリのクラッシュログを解析するFabricの Crashlytics には、新しいクラッシュが発生したり特定の閾値を超えると WebHookで通知してくれる、つまり特定の URL にPOSTを発行してくれる機能があります。 これを上手く使うと、下の図のように「新しいクラッシュが発生したら Backlogなどのチケット管理サービスに自動登録」といったことができそうです。 もちろんCrashlyticsから BacklogのAPIは直接叩けないので、このように WebHookを使ってこちらのサーバを叩いてもらい、そのサー
はじめに Xcodeのバージョンも 8になり、社内プロジェクトの方も Swift3化を進めているのですが、色々とトラブっています。特に困っているのが Objective-Cと Swiftが混在する環境でのエラーオブジェクト(NSError、Error)の扱いです。 時間がなくてちゃんと体系的にまとめきれていないのですが、自分自身の問題整理と覚書も兼ねて、現状でわかっていることをまとめてみました。 SwiftのErrorと、Objective-Cの NSError 少し前提を話します。 まず、Swiftの世界ではエラーは Error という抽象的な型(プロトコル)で扱います。このプロトコルは Swift2までは ErrorTypeという名前でしたが、Swift3で Error に名称が変更されました。より一般的な名前が与えられたということですので、役割が昇格したと言えます。 一方、Objec
はじめに 2016年7月までの間に Windows 10に無償アップグレードした方も多いと思いますが、再インストールしたい場合もあると思います。 私の場合は、BootCampパーティションにインストールされた Windows 8.1 があったのでそれを Winsdows 10にしておきました。しかし、後になってやっぱり 「Parallelsの仮想環境に入れておけばよかった」と思い、再インストールを行ったのですが、ライセンス認証がうまくいかず、MSサポートのお世話になりました。 以下、覚書を兼ねて私の体験をメモしておきます。 BootCamp → Parallels 本来であれば BootCampパーティションをそのまま吸い上げて Parallelsの仮想ディスク化できるはずなのですが、「ERROR: Failed to import the virtual machine.」というエラーが
MP4の動画ファイルの構造を調べたりいじったりしてみたかったのですが、その際に使ったツールなどをメモとして残しておきます。作業環境はMac (OS X El Capitan) です。 あらゆるファイルを16進ダンプする hexdumpを使う方法 OS X標準の hexdumpコマンドでできます。 > hexdump target.bin 0000000 0a 69 6e 74 20 6d 61 69 6e 28 29 20 7b 0a 09 70 0000010 72 69 6e 74 66 28 22 48 65 6c 6c 6f 20 57 6f 72 0000020 6c 64 22 29 3b 0a 7d 0a 0000028 > hexdump -C target.bin 00000000 0a 69 6e 74 20 6d 61 69 6e 28 29 20 7b 0a 09
Objective-Cがメソッドをどのように呼び出しているのかについて気になったので、実装レベルまで追いかけてみました。 参考サイト まず最初に、先人たちが書いた情報源がいろいろありますのでメモを兼ねて残しておきます。 Apple公式 Objective-C Runtime Programming Guide Objective-C Runtime Reference 有志 Understanding the Objective-C Runtime objc_msgSend Tour Objective-C vs Swift message dispatch クラス拡張とカテゴリの違いの話。 Objective-Cのメソッド呼び出しは動的である まず忘れてはいけないのは、 Objective-Cのメソッド呼び出しは動的だ ということです。 動的 と言っているのは「メソッド呼び出しによって実
RSAの公開鍵暗号や電子署名の仕組みを使ったプログラムを書く必要があり、そのときにいろいろと調べたので、忘れないうちにまとめておきます。 書いているうちに量が多くなってしまったので、幾つかのエントリに分割して投稿します。(まだリンクがないものは執筆中です) 公開鍵暗号と電子署名の基礎知識 これを知らないとそもそも以下のエントリの意味がわからない、という基礎知識を切り出しました。 RSA暗号の全体像 公開鍵暗号や電子署名の具体的な仕様の一つが RSA暗号です。デファクトスタンダードと言っても過言ではありません。 RSAの仕様は膨大で多岐にわたっていて全体像が把握しづらいので、要点をまとめてみました。 OpenSSLコマンドによる公開鍵暗号、電子署名の方法 OpenSSLのコマンドを使って公開鍵暗号や電子署名を行う方法をまとめました。 OpenSSLは RSA暗号を実際に実装したライブラリやコ
CoreDataにおける大量データ更新の問題点 CoreDataはいわゆるO-Rマッパーフレームワークで、Mac/iOSアプリでは使っている方も多いと思います。 DBなどの永続化ストアをオブジェクトとして扱えるのでとても便利なのですが、高機能である代償としてどうしてもパフォーマンス上不利になってしまう点があります。 その代表例が一度に大量のデータを更新する処理、いわゆる「バッチ更新」です。 O-Rマッパーでデータ更新をする場合、通常はまずいったんメモリ上のオブジェクトして具現化し、オブジェクトのプロパティを変化させて、それをもう一度DBに書き戻すことになります。 通常はこれで問題ないのですが、「10,000件のメールすべてに既読フラグをセットする」というような処理を考えると非常に非効率なことが起こります。 SQLであれば、 とするだけで、MAILテーブルのすべての行のREAD列を1に変更す
PKCS #12 個人情報交換ファイルとは 個人情報交換ファイル は PKCS #12 Personal Information Exchange Syntax Standard という規格で定義されたファイルです。 PKCS #12という規格は、英語版Wikipediaによると以下のように説明されています。 See RFC 7292. Defines a file format commonly used to store private keys with accompanying public key certificates, protected with a password-based symmetric key. PFX is a predecessor to PKCS #12. 訳してみます。 RFC 7292を参照。パスワードベースの対象鍵による保護のもと、秘密鍵をそれと
RSAの公開鍵暗号技術を利用するためには、鍵や証明書のファイルを扱う必要があるため、そのファイルフォーマットについて理解しておく必要があります。 実際、いろんな拡張子が登場するので、それぞれの意味を理解していないとすぐにわけがわからなくなります。そんなときのために備忘録をまとめてみました。 ファイルの拡張子の注意点 .DERと .PEMという拡張子は鍵の中身じゃなくて、エンコーディングを表している デジタル暗号化鍵やデジタル証明書はバイナリデータなのですが、MD5のハッシュ値のような単なる 値 ではなく、データ構造をもっています。.DERや .PEMはそのデータ構造をどういうフォーマットでエンコードしているかを表しています。そのため、.DERや.PEMという拡張子からそのファイルが何を表しているのかはわかりません。暗号化鍵の場合もあるし、証明書の場合もあります。 .DER 鍵や証明書をAS
OpenSSLのコマンドを使って電子署名を生成する方法は、OpenSSLコマンドによる公開鍵暗号、電子署名の方法 で解説しました。 そのコマンドで生成された sign.sig というファイルの中身は一体なんなのでしょうか?というのをまとめたのがこのエントリです。 電子署名に関する仕様 RSA暗号の全体像で解説したように、公開鍵暗号に関する仕様は PKCSという規格群にまとめられています。 電子署名のフォーマットも PKCS #1に規定があります。PKCS #1は RFC 3447として公開されているので、無料で読むことができます。 また、PKCS #7にも電子署名に関する記述がありそうです。こちらはまだちゃんと読めていませんが、どうやら、署名自体を元のドキュメントに添付する方法などについて規定しているようです。 ですので、電子署名のフォーマットについては、まずは PKCS #1を見るのが先
class TestClass { class func test() -> Bool { return Int(count() - 1) >= 0 } class func count() -> UInt { return 0 } } 上記のようなコードなのですが、実行すると、以下の場所で、EXC_BAD_INSTRUCTION (code=EXC_i386_INVOP, subcode=0x0) という実行時エラーが発生してクラッシュします。 これはシミュレータで実行しているので i386の例外になっていますが、実機(ARM)の場合も同様のEXC_BREAKPOINT (code=1, subcode=0x100011111) のような例外が発生します。 原因究明 よくわからないので、アセンブラレベルで一体何が起こっているのか見てみました。XcodeのDebugメニューからDebug
公開鍵暗号をプログラムで扱う方法のまとめシリーズの終盤戦。ようやく実際のプログラム上で公開鍵暗号を使う話に入ります。 対象範囲 暗号化にもいろいろありますが、このシリーズでは、RSAに公開鍵暗号、電子署名だけをターゲットにしています。とはいえ、他の暗号化方式を使いたい方にも有用な情報はあると思います。 基本知識 非対称鍵による暗号や署名についての基本的な概念の理解を持っている必要があります。最低限以下の知識は必要です。 公開鍵とは何か 秘密鍵とは何か 証明書とは何か 公開鍵暗号は共通鍵暗号と比べてどういう特徴があるか 電子署名とは何か ダイジェスト値、ハッシュ値、ダイジェスト関数、ハッシュ関数とは何か 自信のない方は公開鍵暗号をプログラムで扱う方法のまとめシリーズを最初から読んでみてください。 iOSの暗号化フレームワーク iOSでは Security Frameworkというものが用意さ
本エントリは公開鍵暗号をプログラムで扱う方法のまとめの一環で、OpenSSLコマンドを使ってRSAの公開鍵暗号や電子署名を行う方法をまとめています。 知識の前提 公開鍵暗号と電子署名の基礎知識 ある程度の基礎知識があることを前提としていますので、自信のない方は 公開鍵暗号と電子署名の基礎知識 を先にお読みください。 RSA鍵、証明書のファイルフォーマットについて 諸々の操作で鍵や証明書のファイルが出てきますが、それらのファイルのフォーマットについてある程度の理解がある必要があります。自信のない方は RSA鍵、証明書のファイルフォーマットについて を先にお読みください。 環境 OpenSSLがインストールされているコンピュータが必要です。macOSや Linux等の UNIX系コンピュータであればほぼ最初からインストールされているとおもいます。Windowsの場合はデフォルトではインストール
RSA暗号とは 公開鍵暗号と電子署名の基礎知識で解説したように、RSAというのは公開鍵暗号の具体的な仕様です。 RSAという名前は発明者の3人の名前の頭文字からつけられています。歴史的なところはRSA暗号に関するWikipediaのエントリを参照してください。 RSA暗号の仕様 RSA暗号の仕様を管理している人は誰? RSA暗号は1983年にアメリカで特許が取られていて、RSAセキュリティという会社(現在はEMCコーポレーションに買収されている)がその権利を持っていましたが2000年に特許が切れています。 RSAセキュリティ社がRSAの普及を進めていく中で、PKCSという規格群を制定しました。PKCSとは、Public Key Cryptography Standards の略で、公開鍵暗号のやり方やファイルフォーマットなどを規定しています。 なので、基本的にはPKCSを読めばRSA暗号に
とくに、英語の decryption を日本語でなんと呼ぶかは人によってまちまちです。 復号 と呼んでいる人もいるのですが、復号は decode の訳語として使いたいので、このエントリでは 平文化 を使います。 公開鍵暗号とは 玄関の鍵は閉めるときも開けるときも同じ鍵を使います。金庫の鍵も普通はそうです。では 金庫に貴重品を詰めて送ってもらう時はどうでしょう? 金庫を閉める鍵と開ける鍵が同じだと、金庫にものを詰めてもらう相手にその鍵を渡す必要があります。その鍵を郵送で送ろうとしたら、途中で誰かに見られて複製を作られてしまうかもしれません。大事なものを送るために鍵をかけようとしているのに、同じ労力をかけて鍵を受け渡さなければいけないとなると本末転倒です。 これは、暗号通信でも同じことが言えます。 そこで、暗号通信において 閉めることしかできない鍵 と 開けることしかできない鍵 のペアを使うこ
このページを最初にブックマークしてみませんか?
『@kunichikoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く