2018年7月25日水曜日

iOS PUSH通知証明書を更新する

どうも、俺です。

 1年毎にやってくるPUSH通知証明書の更新ですが、毎回手順を調べるのも面倒なのでメモ。
 全体の流れは、

  1. 証明書署名要求を作成
  2. Apple Developer Programで証明書を作成
  3. .p12ファイルを作成
  4. .pemファイルを作成
です。

【手順1: 証明書署名要求を作成】

キーチェーンアクセス.appを起動し、メニューの
「キーチェーン」→「証明書アシスタント」→「認証局に証明書を要求...」をクリック。

・ユーザーのメールアドレスを入力...適当なメアド
・通称 ... 何でもOK
・CAのメールアドレス ... 空白
・ディスクに保存 ... チェック
・鍵ペア情報を指定 ... チェックしない
で、「続ける」をクリックし、保存先を決めてファイルを保存。

CertificateSigningRequest.certSigningRequest というファイルが生成されます。


【手順2: Apple Developer Programで証明書を作成】

Apple Developer Programにログイン。
メニューにある「Certificates」→「All」をクリック。


画面右上にある「+」ボタンをクリックし証明書作成を開始する。

次の画面で、「Production」内にある「Apple Push Notification service SSL (Sandbox & Production)」にチェックを入れ「Continue」をクリック。
※開発版の場合は「Develop」内にある「Apple Push Notification service SSL (Sandbox)」にチェックを入れる。



次の画面で、PUSH通知証明書を更新するアプリのApp IDを選択し「Continue」。



次の画面はそのまま「Continue」をクリック。



次の画面で、先ほど生成した CertificateSigningRequest.certSigningRequest を選択し「Continue」。



すると、証明書が作成されるので「Download」をクリックし保存する。


【手順3: .p12ファイルを作成】

手順2で作成した証明書ファイルをダブルクリックし、キーチェーンアクセスに登録します。

次にキーチェーンアクセス上で、登録した証明書を「右クリック」→「"Apple Push Services: XXX.XXX.XXX"を書き出す...」をクリックして適当なディレクトリに保存します。
パスワードが必要な場合は設定して下さい。次の手順4で利用します。

すると、証明書.p12のようなファイル名でファイルが書き出されます。
ファイル名は半角英数で aps_prod.p12 のように変えておいたほうが良いです。



【手順4: .pemファイルを作成】

多くのPUSH通知証明書更新について書かれたサイトは、
手順3で作成した「.p12ファイルをサーバーにあげて使って下さい」、とあるのですが、
一応、.pemファイルを作ってそれをサーバーにUPする手順も書いておきます。
(...というか、その方法でしかやった事がない)

ターミナルを開き、手順3で作成した.p12ファイルがあるディレクトリまで移動し、
以下のコマンドを叩きます。

$ openssl pkcs -in aps_prod.p12 -out aps_prod.pem -nodes

これで、.pemファイルが生成されます。
※手順3でパスワードを指定していた場合は、パスワードを問われます。



手順は以上。
作られたaps_prod.pemをサーバーにアップしてPUSH通知が届くかテストして作業完了です!


以上でぇぇぇぇぇぇぇす。

2018年7月11日水曜日

SQLiteのコマンドラインを見やすくしちゃう

どうも、俺です。

SQLiteのコマンドラインって見にくいですよね。
そこで見やすくする方法についてメモ。


$ vim ~/.sqliterc

.header on
.mode column

これでOKです。


または、SQLiteのコマンドライン内で直接、
$ sqlite3 hoge.sqlite

sqlite> .header on
sqlite> .mode column

これでもOKです。


以上でぇぇぇす。

2018年4月23日月曜日

PostgreSQL TIMESTAMP型のDEFAULTS値に小数点以下を表示させない

どうも、俺です。

PostgreSQLのテーブル定義で
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

という定義をすると、
created_atカラムに値を指定せずINSERTすると
2018-04-23 16:12:23.13289

秒の後に小数点が入ります。


小数点を入れずに、年月日 時分秒 というフォーマットにするには
created_at TIMESTAMP NOT NULL DEFAULT DATE_TRUNC('second', now() :: timestamp)

という定義にしておけばOKです。


以上でぇぇえぇす。

2018年4月20日金曜日

動画をパラパラアニメに変換するサービスを5日で作りました

どうも、俺です。

 やれライブ配信だ、やれ動画広告だ、と騒がれがちな昨今ですが、
 動画ファイル(.mp4 .mov)をパラパラアニメに変換するサービスを作りました。







パラパラ動画です。


変換したい動画ファイルを選択し、
フレームレート(fps)と再生速度、出力フォーマット(gif または webp)を選んでアップロードすれば、
見事なパラパラアニメが完成します。

aPNGにも変換できるようにしてるんですが、
如何せん変換後のファイルサイズがバカでかいので、取りやめました。
仕事の合間に作ったので結構日数かかりました。

素のPHP + TwitterBootstrap3 + SQLiteです。
ページデザインはこれ以上オシャレにできませんToT

「ブログにパラパラ画像を載せたい!」というような場面で是非活用してもらえればうれしいです。



以上でぇぇぇす。

2018年4月19日木曜日

今さらながら、Let's EncryptでSSL対応 + 自動更新

どうも、俺です。

今日は、随分前からWeb界隈でもてはやされているLet's Encryptの導入と自動更新設定についてメモ。

環境はCentOS6.9。たぶんCentOS7系でも一緒だと思う..。
Apache 2.4。

(1) certbotをダウンロード

$ wget "https://dl.eff.org/certbot-auto"

// certbot-autoを適当なPATHへ持っていく
# mv certbot-auto /usr/local/bin

// certbot-autoに実行権限を付与
# chmod +x /usr/local/bin/certbot-auto

(2) SSL証明書を作成

※注意 :この時点で対象サーバーにドメインが当たっていないと以下のコマンドは失敗します。

# certbot-auto certonly --webroot -w /www/path/to/public -d example.com --email info@example.com

うまくいくと
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-07-18. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
が表示されます。

(3) 証明書の確認

$ ls /etc/letsencrypt/live/example.com

README  cert.pem  chain.pem  fullchain.pem  privkey.pem


  • cert.pem ... 証明書
  • chain.pem ... 中間証明書
  • fullchain.pem ... 証明書と中間証明書とを一緒にした証明書
  • privkey.pem ... 秘密鍵

(4) Apache(2.4系)の設定

対象の.confファイル内に以下を記述。
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

※2.2系の場合は以下も記述。
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

(5) Apache再起動

# /usr/local/apache2/bin/apachectl restart

(6) Let's Encrypt 自動更新設定

Let's Encryptの証明書は3ヶ月で有効期限が切れます。
そのためcronで自動更新させましょう。
# vim /etc/crontab

30  5  *  *  1  root /usr/bin/certbot-auto renew -q --no-self-upgrade --post-hook "/usr/local/apache2/bin/apachectl restart"

↑毎週月曜AM5:30に更新コマンドを叩いています。
更新ができるようになる30日前になったら、証明書が更新されます。
-qオプション ... 出力なし。
--no-self-upgrade ... プログラムの新バージョンへの自動更新をしない。




以上でぇぇぇえぇぇす。

2018年4月3日火曜日

"〜〜" not found using pkg-configのエラーが出る

どうも俺です。

Linux上で何かのプログラムをインストールしようとして、
$ ./configure
ERROR: libwebp >= 0.2.0 not found using pkg-config

のようなエラーが出る場合、pkg-configとやらが悪さをしている可能性があります。

その場合は、
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

で解消する場合があるのでお試しあれ。
以上でぇぇえぇぇぇす。