Ruby

Jekyllで編集履歴リンクをつけてGitHubに飛ばす

世の中にはWeb上に公開した文書を”無断”で直すことを絶対に許さない人たちがいます。
そのせいで「削除」「[追記ここから]〜[追記ここまで]」みたいな変な文化もできています。

まるでバージョン管理がなかった時代のソースコードのような見づらさです。

そこで、有効なのが編集履歴の公開です。
履歴を公開していれば文句を言われる筋合いはないので、気軽に編集できるようになります。

で、本題。

Jekyll & GitHub Pagesでサイトを公開している場合、編集履歴はすでにWeb上で公開されています。
あとはそこにリンクを貼ればいいわけです。

例えば、
http://spritekit.jp/matome/2013/10/11/japanese-sites/
から
https://github.com/tnantoka/spritekit.jp/commits/gh-pages/_posts/2013-10-11-japanese-sites.md
に飛ばしたいときどうすればいいか。

Jekyllのドキュメントを見ると、page.pathというまさしくその用途の変数がありました。

page.path

The path to the raw post or page. Example usage: Linking back to the page or post’s source on GitHub. This can be overridden in the YAML Front Matter.

 

早速、

_config.ymlに

を追加して、

_layouts/post.htmlに、

と書いたらうまく動きました。

Jekyllをご利用中の方は是非。

Chromeでフォームにscriptタグ等を入力して送信すると”data:;”にリダイレクトされる

Rails 4.0.1、Chrome 31.0.1650.57 での開発中に遭遇した。

The XSS Auditor blocked access to ‘URL’ because the source code of a script was found within the request. The server sent an ‘X-XSS-Protection’ header requesting this behavior.

というエラーがコンソールに出て、画面は真っ白に。

エラーログにもある通り、理由はレスポンスヘッダに、

X-XSS-Protection: 1; mode=block

が含まれるようになったから。
参考:Ruby on Rails Security Guide — Ruby on Rails Guides

scriptタグだけじゃなく、iframeなどXSSを発生させそうな内容があるとChromeがはじく。
これらのタグの入力を許可したい場合は、

すればこの機能は無効になる。
CMSでHTML入力機能があるなどやむを得ない場合に。

そうじゃなければ、そもそもhtml_safeしなければいい。(エスケープされていればこの挙動にならないはず)

GitHub風のIdenticonを作るやつ

8月から、GitHubでGravatarを設定していない人は、Identiconが表示されるようになったんですね。
今更知りました。

で、さっそく僕も使おうと思ったら…

identicon

だ、ださい!

しかも

that are generated using a hash of the user’s ID.

とか書いてあるからたとえusernameを変えても一生背負っていかなければいけないっぽい。

これは嫌だということで、自分好みのGitHub風Identiconを作れるサービス(という程でもないけど)を作ってみた。

identiconshttp://identicons.herokuapp.com/

まぁ結局今のGravatarのままにすることにしたので、使ってないんですけどねw
久々に思いつきで手を動かしたらとても楽しくてストレス発散になりました。

Sinatra×Herokuはこういう用途に最適ですね。HTTPSでもアクセスできるし。とはいえどちらも全然わかってないので、もっと触んなきゃなぁ。

実用性0ですが、興味のある方は触ってみてください。

ソースはこちらです。

RubyMotionを1週間触ってみた印象

2013-2-5 未だに一定のアクセスがあるようなので念の為追記。

ここにあるのは、2012年5月時点(出たばっかり)で会社として全面的に採用するかどうか、という前提の話なので、もはや役に立つ情報ではありませんm(_ _)m
※ じゃあ非公開にしろよという話なんですが、僕自身このプレゼン資料のネガティブさを大変反省していて、忘れないように残しています。

当時から個人のおもちゃとしては十分おもしろかったですが、あれからRubyMotion自体もどんどん進化して、周辺環境も整っており、組織的な採用を検討する価値があるのではないでしょうか? Pixate とかとの親和性も高そう。(僕も再チャレンジしたいんだけど、お金と時間が足りない^^)

追記おしまい。


 

5-11に会社でオープンソースカフェに行ったんだけどその時にしゃべった。
新しい情報はないし、若干ネガティブなので見ても良いことはないと思う。
こういうしょうもない発表はもうしないぞ、という反省の意味も込めて貼っとく。

あ、当日は省略したけど、XcodeとRubyMotionで作った同じプロジェクト(超適当ブラウザ)は以下のGitHubに置いてある。
RubyMotionApps/TinyBrowser at master · tnantoka/RubyMotionApps · GitHub

その場であった指摘とか


  • インタラクティブにコンソールから操作とかできるのはメリットあるのでは?
    → 確かにその通り。資料に入れなかった僕のミス。ただ現時点ではそこまでメリット感じず。
  • gemでの拡張性
    → その反面Objective-Cのライブラリが一部しか使えないという制約もある。
  • Objective-Cを吐ける機能があったら良いよね!
  • 楽しければそれでいいじゃん!!

まとめ


元々僕はこういうツールは苦手。
でも会社にはRubyは書けるけどObj-Cは触れない人がいて、その目的になら使える?と考えたんだけど、まだ会社で使うのは無理かな、という印象。

いずれにしろできたばかりの現時点で評価を下すのは早いと思う。公開してすぐ判断下されたら開発側もたまらんだろうし。

ただ、余裕のない僕としてはこれ以上時間を投資できないと判断しました。
しばらくはウォッチの体制に入ります。

というわけでObjective-Cでの開発に戻ります、作るぞー。

RedcarエディタでRubyMotionの入力補完

ここ最近RubyMotionをいじってるんだけど、一番不便なのはXcodeのあのサクサクなオートコンプリートの恩恵を受けられないこと。
iOSのAPIは命名規則的に超長くなりがちなので空で打つのとか絶対無理。

そんな中、

RubyMotion Autocompletion – kattrali’s library

なるものを発見。これは使うっきゃない。

Redcar?


RedcarはRuby製のTextMate風テキストエディタらしい。(GPLなオープンソース)
JRubyで動作し、クロスプラットフォームなのがウリ。

早速入れてみよう。
installはgemで。
試した環境はrvmなruby1.9.2。

redcarコマンドでRubyMotionのプロジェクトとかを指定して開けばOK。

な感じ。

Redcar+RubyMotion


次に当初の目的であったRubyMotionのプラグインを入れる。

Redcar+RubyMotion by kattrali

redcarを終了して、

すればOK。
READMEに書いてある、rm ~/.redcar/cache/textmate-bundles.cache は不要だった。

これで、Redcarにcocoaメニューが追加される。

これは良い!


  • Save時にsyntaxエラーを表示してくれる
  • Control + Shift + Spaceで入力補完
  • Command+Rで実行(他にもいろんなrakeコマンドが実行できる)

などなど…。

Javaなので起動がちょっと重いけど、十分なメリットがある。

しばらくこれで開発しよう。

1 2 3  Scroll to top