WordPressのテーマ開発の環境を整えたお話
タイトルの通り、WordPressのテーマ開発をする機会が発生してるので、どんな環境にしたのかを備忘録的にまとめておきます。
どんな環境?
自動化にgrunt、テスト環境にVagrant
テーマ自体は_sを元に作っていくことに
gruntについて
http://gruntjs.com
いろいろと自動化してくれる凄いもの
今回は grunt-init のテンプレートとして megumiteam/iemoto を使いました。
元からいろいろと入っていて便利なので気が楽で良かったです。
grunt-contrib-watchの追加
ただファイル監視が元には無く、毎回gruntを叩くのも面倒なので別に grunt-contrib-watch を追加しました。
Gruntfile.js中のgrunt.initConfigに渡すオブジェクトに
watch: { options: { livereload: true }, scss: { files: ['sass/*.scss'], tasks: ['compass', 'cssmin'] }, js: { files: ['js/foobar_theme.js'], tasks: ['jshint', 'uglify'] } }
を追加、あとは書いてある通りにloadNpmTasksを呼ぶように。
あとは LiveReloadのページからSafari拡張を入れておく。
vagrantについて
http://www.vagrantup.com
vagrant up で環境が出来る凄いやつ
環境構築スクリプトをまとめたようなものがあちこちで配布されているので、今回はそれを利用しました。
miya0001/vagrant-chef-centos-wordpress · GitHub、通称VCCWを git clone して Vagrantfile ほぼサンプルコピペして終わり。
これだけでかなり凄い感じの環境ができて凄いなと思いました(語彙力不足)
CocoaPodsでMKNetworkKitを入れようとしたら詰まった話
MKNetWorkKitという便利なライブラリがあるらしいけど、CocoaPodsでいざインストールしてCommand-Rすると
どうやら、
#if NEEDS_DISPATCH_RETAIN_RELEASE @property (nonatomic, assign) dispatch_queue_t reachabilitySerialQueue; #else @property (nonatomic, strong) dispatch_queue_t reachabilitySerialQueue; #endif
の部分でエラーが起きているらしい。ただiOS 6.0以降だと dispatch_queue_t に対してもARCが有効なはずなのになんでだろうと思っていたら、
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000 // iOS 6.0 or later #define NEEDS_DISPATCH_RETAIN_RELEASE 0 #else // iOS 5.X or earlier #define NEEDS_DISPATCH_RETAIN_RELEASE 1 #endif
という感じでARCが有効かどうかしらべてるけど、dispatch_queue_t 自体は OS_OBJECT_USE_OBJC が1であるかどうかで ARC に対応させるか決めてるらしい(<os/object.h> あたり)。
ということは OS_OBJECT_USE_OBJC が 0 になってるということだけど、どうしてだろうと思ったら CocoaPods が気配りを効かせていたせいだった。
GCDを利用しているライブラリで、GCDのオブジェクトに対してARCが適用されることに対する修正をまだしていないライブラリもそれなりに多い(と思う)から、-DOS_OBJECT_USE_OBJC を標準で付加してるんだと思う。
podspecの方で変えられるようなのでPull Requestを投げるならそっちのほうだろうなあ。
というわけで -DOS_OBJECT_USE_OBJC=1にしたら解決。
診断メーカーするの
発端
@popkirby_st 毎日一定時刻に診断メーカーで任意の名前(複数)の診断を行い、診断結果をツイートするっていうプログラムとかない?
2012-12-06 22:05:51 via ツイタマ to @popkirby_st
つかいかた
- consumer Key, consumer Secretを取得して書き換える
- Perlをインストールする
- cpanとかでNet::Twitter, Config::Simple, LWP::UserAgent, HTTP::Request::Common, Web::Scraperを突っ込む
- 実行して言われた通りに登録する
- たのしい診断
一回登録すると次回以降は勝手にツイートします。もう一度再設定したいなどのときは config.ini をゴミ箱へシュートして下さい。
繰り返しについては頑張ってcronすればいいんじゃないでしょうか。よくわからない。
大変だったとこ
form-dataをform_dataにtypoしてたのを直すとこ
感想
Web::Scraperになにかすごいものを感じた。
Perlを勉強してみるのもいいかなあと思いましたまる。
補足
そのうち再登録とかに対応したい
WindowsならStrawberry Perlとかいうの使えばいいんじゃないでしょうか。よくわからない。
quickrunを使ってmarkdown形式のファイルをHTMLで出力する
割とmarkdown使ってHTMLファイル作成する機会が増えたのでマッピングしようと思ったらしばらくかかったので備忘録。
マッピングしよう
autocmd Filetype markdown nnoremap <Space>qf :QuickRun >file -mode=n<CR>
……
名前指定どうするんだろう?
ヘルプファイル
オプションは名前と値の組で、
-オプション名 値
で指定します。
マッピングしてみる
autocmd Filetype markdown nnoremap <Space>qf :QuickRun >file -mode=n -name=<CR>
……
ファイル名どうやって指定するんだろう?
テクニックバイブル
Vimエディタのコマンドラインで%を指定すると、コマンド実行時に%が可憐とファイルのパスに置き換わります。この機能と、ファイル名修飾子と呼ばれる機能を利用すると、編集中のファイルのファイルパスから、拡張子抜きのファイル名や、ファイルのフルパス、拡張子、などの情報を抜き出せます。
マッピングリトライ
autocmd Filetype markdown nnoremap <Space>qf :QuickRun >file -mode=n -name=%:p:t:r<CR>
quickrun: outputter/file: Specify the file.
✌('ω')。o(????????????)
ヘルプを探す
コマンドラインオプションにモジュール名を指定する際に、オプションの値を指定する
ことができます。オプションはモジュール名の後に任意の記号を続け、その記号でオプ
ションを区切ります。各オプションは name=value の形式で指定します。
リトライ
autocmd Filetype markdown nnoremap <Space>qf :QuickRun >file:name=%:p:t:r -mode=n<CR>
Output to "p" (6502 bytes)
oh......
<expr>で展開すればよくね!?
autocmd Filetype markdown nnoremap <expr> <Space>qf ":QuickRun >file:" . expand('%:p:t:r') . '.html -mode=n<CR>'
成功!ただ見た目がかっこわるい……
これを書いているとthinca氏からリプライが
@popkirby_st :QuickRun >file!%{expand('%:p:t:r')}.html -mode=n でも多分大丈夫です。(未確認)
2012-07-09 01:21:48 via OpenTween to @popkirby_st
うまく行きました。さすがvimmerは格が違った
結論
autocmd Filetype markdown nnoremap <Space>qf :QuickRun >file!%{expand('%:p:t:r')}.html -mode=n<CR>
ところで
この環境を整えてやろうと思ってたことが全然進んでないことは気にしない
Lionでhomebrewを使ってfontforgeをインストール
二回ぐらい詰まったのでメモ代わりに。
fontforgeのインストール
無事homebrewのインストールが済んで、フォントを揃えようと思ってfontforgeをインストールすることに。
$ brew install fontforge
が、こけた。
原因
長々とエラーメッセージが出るが、原因は
giomime.c:68:10: fatal error: '/Developer/Headers/FlatCarbon/Files.h' file not found #include </Developer/Headers/FlatCarbon/Files.h> ^ 1 error generated. make[1]: *** [giomime.lo] Error 1
/Developerが存在しないことが原因。前はXcodeインストールすると/Developer以下にいろいろ突っ込んでたから決め打ちしてたんだと思う。
解決策
App StoreからインストールしたXcodeのDeveloperフォルダはXcode.appの中にあるそうなので、
$ sudo ln -s /Applications/Xcode.app/Contents/Developer /Developer
再び、brew install fontforgeでうまくいった。
それにしてもhomebrewは変に依存関係複雑にしてこなくていいですねー。
MacPortsの謎のコンパイル時間をスルーできて満足。