静的サイトジェネレーターについて調べた(1)
仕事で久しぶりにサイトのコーディングに勤しむことになったので、
最近流行っていると耳にした静的サイトジェネレーターとやらに挑んでみた。
静的サイトジェネレーターとは?
静的サイトジェネレータとは、静的サイトを効率的に制作するためのツール。 好みの言語で開発して納品用に HTML / CSS / JavaScript といった形式に変換してくれる。
これはいいですね。
gulpやgruntやらに取り残された私やそこのアナタにとっても、救世主になってくれそうです。
さあ、はじめよう。
まあ使ってみないと正直わからないところがあるので、
いろいろあるなかで「Hugo(http://gohugo.io/)」を選択して使ってみたいと思います。
読み方はヒューゴであってるのかな?プロレスラーみたいですね
いまをときめくGo言語製で、色んな所をみたところ最も早いとのこと。
(この時点でなにが早いのかはわかっていないがおそらくビルド)
インストール
brew install hugo
Homebrewをいれてとっとこインストールしましょう。
サイトの初期化
適当なディレクトリに移動して、以下のコマンドを叩きます。
hugo new site サイト名
すると、サイト名のディレクトリが生成され、中には以下のファイルが含まれています。
・archetypesフォルダ
・contentフォルダ
・dataフォルダ
・layoutsフォルダ
・staticフォルダ
・themesフォルダ
・config.toml
config.tomlファイルの編集
ファイルの中身は、以下のようになっています
baseurl = "http://replace-this-with-your-hugo-site.com/" languageCode = "en-us" title = "My New Hugo Site"
このままではアレなので、自分の環境に合わせましょう
baseurl = "公開するサイトのURL" languageCode = "ja" title = "公開するサイトのタイトル"
とりあえず今日はここまで。
Swift - Swift2.0でもstringByAppendingPathComponentが使いたい
StringをNSStringに変換してあげれば使うことができます。
NSString(string: "hoge").stringByAppendingPathComponent("fuga") => hoge/fuga
参考:
Swift - Dictionaryを保存する
サーバーからのレスポンスをキャッシュしたい時なんぞに、
こういったことが必要になることがあります。
NSDictionaryをNSDataに変換
NSDictionaryをplistに変換しても良かったのだけれど、
何故か私が渡すDictionaryでは、writeToFileがfalseを返すばかりで失敗するため、
いろんなところを参考にして、NSDataに変換して保存する方法をとった。
まあplistだと中身を見ることができてしまうので、バイナリに変換するのがいいんでないかなと思います。
NSKeyedArchiverをつかってアーカイブ・アンアーカイブ
NSKeyedArchiverをつかってNSDictionaryをバイナリに変換します。
// アーカイブ let data = NSKeyedArchiver.archivedDataWithRootObject(dictionary) // アンアーカイブ let dictionary = NSKeyedUnarchiver.unarchiveObjectWithData(data)
NSFileManagerで任意のディレクトリに保存
あとは仕様にそった場所にNSFileManagerクラスで保存してあげればよい。
iOS - シュミレーター内のアプリディレクトリを確認する方法
NSFileManagerなんかでアプリ内ディレクトリに保存したものを確認したい時は、
以下のディレクトリを確認すれば良い。
/Users/(ユーザー名)/Library/Developer/CoreSimulator/Devices/(シュミレーターID)/data/Containers/Data/Application/(udid)
Developerフォルダ
Developerフォルダは不可視になっているので、
ターミナルで行きたい場所までcdして、$open . でファインダーを開いてやるとよいです。
その他
シュミレーターIDが分からなければWindow > Devicesを確認すれば問題なし。 udidはどこをみたらいいのかイマイチわからないため、 フォルダ内Snapshotsの中身をみて判断するしかなさそうです。
UIKit - tintColorについて調べた
本を読んでいたら、tintColorについて発見があったのでメモ。
単にUIの色を変えるという認識でした。
親のビューのtintColorを変更すると、子のビューのtintColorが変更される
let parentView = UIView() let stepper = UIStepper() stepper.tintColor = UIColor.yellowColor() // 黄色を設定 parentView.addSubview(stepper) parentView.tintColor = UIColor.blueColor() // 子供すべてのtintColorが青色に変更される
さらに、tintColorにnilを代入すると、親のtintColorがあてがわれる。
let parentView = UIView() parentView.tintColor = UIColor.redColor() let stepper = UIStepper() stepper.tintColor = UIColor.greenColor() stepper.tintColor = nil //親の赤色がtintColorに設定される
tintColorを変更すると、変更したビューではtintColorDidChangeがコールされる
さらにtintColorを変更するとコールされるメソッドもあった。
let parentView = MyView() parentView.tintColor = UIColor.redColor() class MyView: UIView { override func tintColorDidChange() { print(tintColorを赤色に変更した) } }
まだまだ知らないことがたくさんありますね〜。
絶賛ブランクを埋めるために、以下の本を読んでUIKitについて学び直してます。
小手先のテクニックではなくて、UIKitについてしっかり書かれているので学びがとても多いです。
CoreGraphics - CGRect, CGPointが短形内にあるかどうかを調べる
短形A、ポイントAが短形Bの範囲内にあるかどうか、
調べるには以下のメソッドを使うようだ。
// 短形を調べる場合 CGRectContainsRect(rect1: CGRect, _ rect2: CGRect) -> Bool // ポイントを調べる場合 CGRectContainsPoint(rect: CGRect, _ point: CGPoint) -> Bool
知らなんだ。
Swift - 文字列の計算式を計算する
"3+5/2"のような文字列の計算式の答えを求めるには、以下のように書きます。
let expression = NSExpression(format: $計算式文字列$) let result = expression.expressionValueWithObject(nil, context: nil) as? NSNumber
resultには、正確な計算式であれば答えとなるNSNumberが、計算式でなければnilが返ってきます。
Javascriptのevalのようなものですね。
"5/3"が計算式だとすると数字は全てIntなので、小数点の答えは出ません。
小数点まで求めるのであれば、計算式内の数字を正規表現かなにかで、
”X.0”としてやればDouble型になるので、小数点の答えも出るのではないかと思います。
参考: