カーソル位置とかリージョンで選んだ範囲をブラウザで開けるやつです。
C-u
つけると --rev
になるのがおしゃれポイントです。
以上です。
Slick の lifted embedding で FOR UPDATE する
mechairoi/slick-for-update-sample · GitHub
Slcik の lifted embedding で 無理やり FOR UPDATE
できようにするサンプル
slick-for-update-sample/Driver.scala at master · mechairoi/slick-for-update-sample · GitHub
みたいに PostgresDriver を継承した MyPostgresDriver を作って,
import MyPostgresDriver.simple._ class CoffeesForUpdate(tag: Tag) extends Coffees(tag) with ForUpdateTable val coffeesForUpdate = TableQuery[CoffeesForUpdate]
val q = for { c <- coffeesForUpdate if c.price < 9.0 s <- suppliers if s.id === c.supID } yield (c.name, s.name) q.list
のように書くと
select x2."COF_NAME", x3."SUP_NAME" from "COFFEES" x2, "SUPPLIERS" x3 where (x2."PRICE" < 9.0) and (x3."SUP_ID" = x2."SUP_ID") for update of x2
みたいにちゃんとFOR UPDATE
するクエリが吐かれる。
FOR UPDATE
は DBMS によって文法が結構違うのでリポジトリのは PostgreSQL でしか使えない。
Docker を使って Haskell を Heroku の cedar stack 用にコンパイルする
Heroku で Haskell を動かす方法は http://daimatz.hateblo.jp/entry/2013/02/09/164531 のように buildpack を使うとデプロイ時に Heroku のホストでビルドできて便利です。しかしビルド時間が15分までで Yesod などを使っていると間に合わず、手元で Ubuntu 10.04 向けのバイナリを作って push などする必要があります。Ubuntu 10.04 で開発してる人はもうあまりいないと思いますので、最近流行っている Docker を使って cedar stack 向けにビルドできるようにしてみました。
ビルドに使う Docker image は cedar 用のものに ghc と cabal-install をインストールして作りました。
サンプルプロジェクトは
- https://github.com/mechairoi/docker-heroku-cedar-ghc-demo
- http://docker-heroku-cedar-ghc.herokuapp.com/
にあります。デプロイするには READMEに書いてある通り、docker
とか heroku
コマンドをインストールして、リポジトリをクローンして
git clone https://github.com/mechairoi/docker-heroku-cedar-ghc.git
Heroku の アプリケーションを作って、
heroku create --stack=cedar
ビルドしてpush すれば
make build git checkout -b deploy git add -f dist/build/heroku-haskell/heroku-haskell git commit -m "build" git push heroku deploy:master
デプロイできると思います。Yesod でも deploy/Procfile に従って package.json などを配置して Makefile を修正すれば動くはずです。
make build の中身は
sudo docker run -v ${PWD}:/workspace -t mechairoi/heroku-cedar-ghc /bin/bash -xc 'cd /workspace/ \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config sandbox --sandbox=/workspace/.heroku-cabal-sandbox init \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config install --dependencies-only \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config configure \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config build --builddir=./dist-heroku \ && strip --strip-unneeded ./dist-heroku/build/heroku-haskell/heroku-haskell'
のようになっていて、Docker のホスト側をマウントして cabal sandbox を作ってるので2回目からはパッケージのダウンロードもなくビルドできます。Vagrant と違って起動も早いし Docker 便利ですね。
kyoto.js #5 で Emacs から WebSocket で Google Chrome を操作する拡張について発表しました。 #kyotojs
先日開催された Kyoto.js #5 で LT をしてきました.
crxel
Emacs から Google Chrome を操作する crxel というライブラリを作っているので発表しました. 今回の発表ではこのライブラリを使ったデモとして
- Emacs から Google Chrome のタブを Anything で切り替える anything-chrome-tabs.el と,
- Emacs のカーソル下のシンボルをバックグラウンドで google 検索する google-eldoc.el
を紹介しました. google-eldoc.el は全く役に立たないのですが, Emacs の操作にフックして Google Chrome を操作できると何か便利なことができそうな気がしています.
Motivation
Emacs には既に swank-js という Emacs から javascript の repl などが使えて javascript を使ったページを便利に開発できるものがあります. これは node.js で立てた WebSocket サーバに, ページ中の javascript から接続しておいて, Emacs から node.js のプロセスに送信した文字列をページ内で eval
することで実現しています.
今回作った crxel もほぼ同じ仕組みで, javscript の コードはほとんど swank-js から流用させてもらっています. crxel は Emacs で直接 WebSocket サーバを立てている点と, Emacs から Google Chrome を操作することを目的にしている点が swank-js と異なっています.
Anychrome って Google Chrome 拡張を作っています
id:hitode909 さんに手伝ってもらいました。ありがとうございます。
概要
こちらをインストールすると追加されるかわいいトマトのアイコンを押すと、開いてるタブと履歴からインクリメンタルに選んでアクティブにしたり開いたりできます。
今はタブと履歴から選ぶしかできませんがそれなりに便利なので公開します。(上のようにタブをたくさん開く人には特に)いずれ anything.el のように同じインタフェースでブックマークや Web 上のリソースなど色々な候補から選んで操作できるようにしたいです。
ChromeMigemo に対応していて一緒にインストールするとタブを探すときに migemo が使えます。
使い方
キーボードでしか操作できません。
C-n, ↓ | 下の候補 |
C-p, ↑ | 上の候補 |
C-m, RET | 一つ目のアクションを実行 |
C-i, TAB | アクションを選択 |
C-g | キャンセル |
C-x | マーク |
さらに
トマトのアイコンをマウスで毎回クリックするのは困難ですのでキーボードから直接(むりやり)起動する方法を用意しています。拡張機能のオプションページに表示される HTML か AppleScript をファイルに保存して、実行する(開く)だけで Anychrome を起動できます。 Mac なら Spark で AppleScript の実行をショートカットに割り当てるとどこからでも呼び出すことができて便利です。