ぽっかめろん

ゲームとかプログラミングとか

#RECRUIT_CODE とかいうのを解いてみた

大体Q3に1時間30分ぐらい使った。そこまでは真面目にやってました。

感想

英単語を使う方が悪い。

latexmkを使ってみた

理系ならTeXを使いなさいという圧力を感じたのでlatexmkを使ってみた話です。

TeXのつらいところ

数年前に何度かTeXを使ってレポートを書いたんですが、

  • vimで書く → 何回タイプセットすれば良いのかわからなくて投げる
  • TeXShopで書く → なんだか挙動が怪しいし落ちる

ので発狂してWordを使ってレポートを書くようになってました。でもやっぱりTeXは見た目が良いし理系として使えた方がいいんじゃないかということで再度環境を整えました。使用エディタはMacVimです。

latexmkって何

Latexmk - TeX Wiki
latexのすごいmake

latexmkの設定

~/.latexmkrc を作って、以下の内容で保存。

#!/usr/bin/env perl
$latex        = 'uplatex -synctex=1';
$latex_silent = 'uplatex -synctex=1 -interaction=batchmode';
$bibtex       = 'upbibtex';
$dvipdf       = 'dvipdfmx %O -o %D %S';
$makeindex    = 'mendex %O -U -o %D %S';
$max_repeat   = 5;
$pdf_mode     = 3;

$pvc_view_file_via_temporary = 0;
$pdf_previewer = 'open -ga /Applications/Skim.app';

LaTeXのことはよくわからないのであちこちからコピペして作ったので内容の説明はできません。ただsynctexというものが使えるpdfビューワとして Skim | Home というものがあるらしく、それを導入してます。

vimの設定

.vimrcで、

autocmd FileType plaintex setlocal filetype=tex

if neobundle#is_installed("vim-quickrun")
  autocmd MyAutoCmd BufWritePost *.tex call quickrun#run() 
endif

let g:quickrun_config = {
          \ 'tex' : {
          \   "command" : "latexmk", 
          \   "outputter" : "error", 
          \   "outputter/error/error" : "quickfix", 
          \   "exec" : "%c %o %s", 
          \ }, 
          \ }

で、保存するとpdf出力されてワイワイ。Skim.appに更新を監視して読み込んでくれる機能があるのでプレビューもはかどります。

微妙なところ

latexmkにpvcという「texファイルの更新を監視してタイプセット、それで出来上がったpdfファイルを開く」というオプションが合ってすごいな〜^と思ってquickrunに登録したら、インサートモードが一定間隔でドゥンドゥン鳴るモードになってしまいました。理由はよくわからないです。

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すると

f:id:popkirby:20130204202025p:plain

どうやら、

#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 が気配りを効かせていたせいだった。

f:id:popkirby:20130204203454p:plain

GCDを利用しているライブラリで、GCDのオブジェクトに対してARCが適用されることに対する修正をまだしていないライブラリもそれなりに多い(と思う)から、-DOS_OBJECT_USE_OBJC を標準で付加してるんだと思う。

podspecの方で変えられるようなのでPull Requestを投げるならそっちのほうだろうなあ。

というわけで -DOS_OBJECT_USE_OBJC=1にしたら解決。

診断メーカーするの

発端

つくりました

https://gist.github.com/4226388

つかいかた

  1. consumer Key, consumer Secretを取得して書き換える
  2. Perlをインストールする
  3. cpanとかでNet::Twitter, Config::Simple, LWP::UserAgent, HTTP::Request::Common, Web::Scraperを突っ込む
  4. 実行して言われた通りに登録する
  5. たのしい診断

一回登録すると次回以降は勝手にツイートします。もう一度再設定したいなどのときは 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氏からリプライが

うまく行きました。さすがvimmerは格が違った

結論

autocmd Filetype markdown nnoremap <Space>qf  :QuickRun >file!%{expand('%:p:t:r')}.html -mode=n<CR>

ところで

この環境を整えてやろうと思ってたことが全然進んでないことは気にしない

Lionでhomebrewを使ってfontforgeをインストール

二回ぐらい詰まったのでメモ代わりに。

homebrewのインストール

https://github.com/mxcl/homebrew/wiki/installation
ここのスクリプトをおもむろにターミナルに貼付ける。

が、こけた。

解決策

Command Line Tools for Xcode をインストールする。
Mac Dev Centerに行って落としてくる。

Xcodeインストールしたときについてくると思ってたけどそんなことはなかった。

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の謎のコンパイル時間をスルーできて満足。