Apple が新しいプログラミング言語 Swift を2014年の WWDC で発表しました。言語仕様自体は色々なモダンプログラミング言語のいいとこ取りのような感じです。独特な仕様もいくつかあるのでおぼえがきしておきます。

なお、Swift で作成したアプリは iOS8 と OS X Yosemite がリリースされた時点で審査に入れるようです。

Xcode6 Beta4 で Swift コンパイラでの minimum target が iOS7 と OS X10.9 に制限されました

Introducing Swift

※ Xcode6 Beta4 を元に記載しています。

Titanium Alloy で SNS 認証 (OAuth) をアプリ側で行う方法のまとめです。

iPhone や Android だと、アプリスキーマ (例: snsnet://twitter)を使ってブラウザのリンクからアプリを立ち上げることができます。 この仕組を使って、アプリ内でブラウザを立ち上げるのではなく、アプリのブラウザを使って OAuth 認証を行い、アプリに戻ってくるということができるようになります。

ここで紹介するやり方は、iPhone と Android の両方で使える方法ですが、一部ブラウザ側の画面を閉じるためにサーバサイドが必要になります。 また、Facebook は認証後の戻りURL (redirect_url) にアプリスキーマを利用することができませんので、Facebook 連携を行うのもサーバサイドが必要です。

まぁ、Facebook に関しては、Titanium にすでにモジュールが組み込まれていて、簡単に認証を行えるようになっているので、わざわざアプリのブラウザを使って認証を行う必要もないんですけど。。

Passenger で Rails アプリを動かすときに、assets:precompile 済みの gz ファイルを返すようにする apache の設定方法例のメモ。

いただき物です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<VirtualHost *:80>
   # ...
   <LocationMatch "^/assets/.*$">
     # Some browsers still send conditional-GET requests if there's a
     # Last-Modified header or an ETag header even if they haven't
     # reached the expiry date sent in the Expires header.
     #Header unset Last-Modified
     #Header unset ETag
     FileETag Size
     # RFC says only cache for 1 year
     ExpiresActive On
     ExpiresDefault "access plus 1 year"

     SetEnv no-gzip

     RewriteEngine on
     #RewriteLog /tmp/rewrite.log
     #RewriteLogLevel 15
     # Make sure the browser supports gzip encoding before we send it
     RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b
     RewriteCond %{REQUEST_FILENAME}.gz -f
     RewriteRule ^(.+) \$1.gz [L]
   </LocationMatch>

   <FilesMatch \.css\.gz$>
       ForceType text/css
       Header set Content-Encoding gzip
   </FilesMatch>

   <FilesMatch \.js\.gz$>
       ForceType text/javascript
       Header set Content-Encoding gzip
   </FilesMatch>
</VirtualHost>
タイトル
インフラデザインパターン ~安定稼動に導く127の設計方式
著者
株式会社NTTデータ (著), 杉原 健郎 (著), 吉田 一幸 (著), 岩崎 賢治 (著), 三浦 広志 (著), 吉田 佐智男 (著)
出版社
技術評論社
Amazonで購入する

本書は、インフラの技術者たちがあみ出した設計方式を概念化・抽象化して名前をつけたインフラのデザインパターンを紹介するものです。 プロジェクトマネージャ、システム企画や導入の意思決定を行う人、インフラの設計や評価を行う人のために技術書になっています。

本書の特徴として次の点があげられます。

  • 全てのデザインパターンは特定の製品に依存していない
  • 要件定義や基本設計などの上流工程で使うことを意識して構成されている

本書には、パターンの特徴を把握しやすいように簡潔な図がそれぞれのパターンに用いられています。 プロジェクトに必要な要点からインフラの設計が導き出せるようになっています。

127のパターンが挙げられていて、インフラのパターンにそんなにあるのがびっくりですが、一通りパターンを抑えるだけでも結構なボリュームになります。 が、それだけインフラ設計は細かく、大事なポイントを抑える必要があるということです。 インフラ設計を担当するエンジニアにオススメの一冊です。

GitHub Pages を Naked Domain(サブドメインをつけない hamasyou.com みたいなやつ)で運用する場合の手順です。

GitHub Pages をサブドメイン(www.hamasyou.com みたいなやつ)で運用する場合は、DNS サービスの CNAMEhamasyou.github.io に設定すれば問題ないのでこの記事は読む必要がありません。

hamasyou.com はムームードメインで取得していますので、ムームードメインを元に説明します。が、ムームードメインに限らず、Apex Alias を設定できない DNS サービスを使うときの参考にしてください。 なんでこんな事をメモするかというと、GitHub Pages を独自ドメインで運用する際に Apex Alias を使わないと 302 Found のステータスコードが返ってきて、SEO 的に嫌なのと Facebook のシェアで404 Not Found が出てしまう からです。

Fix 302 Redirect Response For GitHub Hosted Site

別に 302 Found がでても構わないっていうひとは GitHub Pages のヘルプを参考にしてやってみてください。

Setting up a custom domain with Pages - GitHub Help

アイデアを思いついたときに Web サービスを作ってスタートアップする手順メモです。Rails 編としていますが、たぶん別のバージョンは書かないでしょう。。

手順は思いついた順(というか、前に作ったサービスの手順)で書いていますので、抜け漏れとかあると思いますがコメントあればよろしくおねがいします。

ちなみに、最近作ったサービスはこちら。よかったら使ってみてください。

Web上のメディアのすべてにヤジを飛ばすサービス - 野次る

タイトル
サーバサイドJavaScript Node.js入門
著者
清水俊博 (著), 大津繁樹 (著), Jxck (著), 小林秀和 (著), 佐々木庸平 (著), 篠崎祐輔 (著), 高木敦也 (著), 西山雄也 (著)
出版社
アスキー・メディアワークス
Amazonで購入する

本書は、「Node って何?」という人から「Node の中身はどうなっているの?」を知りたい人のために幅広く網羅的に書かれています。

  1. Node の基本から順番に理解していきたい
  2. Node を使ってすぐに Web アプリケーションを作ってみたい
  3. Node の内部構造を理解したい

これらのモデルケースに合う人にオススメの書籍です。