サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
shakenbu.org
■ [zsh] ^ で上のディレクトリに移動するのは、入力がないときだけにする zsh を使っている方には、次のような設定を入れている方も多いと思います。 function cdup() { echo cd .. zle reset-prompt } zle -N cdup bindkey '\^' cdup これは ^ で上のディレクトリに移動できるようにする設定です。 普通に ^ を入力したいときは C-v ^ と入力するのですが、 テキストをコピペでターミナルに貼り付けたとき、テキストに ^ が混ざっていて意図しない結果になることが何度かありました。 この問題を改善するため、次のように変更しました。 function cdup-or-insert-circumflex() { if [[ -z "$BUFFER" ]]; then echo cd .. zle reset-promp
■ [Emacs] scratch バッファの便利な設定をまとめた scratch-ext.el を作りました scratch バッファの便利な設定をまとめた scratch-ext.el を作りました。 このファイルを読み込むと scratch バッファの kill は単にバッファの中身を消すだけにする。 scratch バッファをファイルに保存すると、新たに scratch バッファを作る。 scratch バッファを kill するか Emacs が終了する時点で、scratch バッファの内容を自動的にファイルに保存する。 一番新しいログをバッファに読み込む といったことができるようになります。 github で公開していますので、どうぞご利用ください。 https://github.com/kyanagi/scratch-ext-el 参考 *scratch* バッファを消さない
■ [Emacs]anything を導入 これまでEmacsではanythingを使っていなかったのですが、 ふと思い立ってanythingを入れてみることにしました。 (正確に言うと何度か手を出してみたことはあったがすぐやめてしまった) まだ触り始めたばっかりですが、とまどった点などを中心に書いておきます。 現在の設定は以下のとおり。 ミニバッファでC-hで文字を消せない 入力を修正しようと思って C-h を連打すると大変なことになってしまうので、 C-h は backward-kill-word に割り当て直しました。 最初 anything-map だけに設定していて、思い通りの動作にならずに迷いました。 ついでに C-w で単語削除できるようにもしてあります。 ウィンドウ表示 popwinと組み合わせようとしましたが、ミニバッファの履歴検索が動かなくなったので外しました。 このへ
■ [zsh]zsh の vcs-info を Cygwin で高速化する zsh には vcs-info というものがあり、これを利用すると Git や Mercurial のブランチ名などをプロンプトに表示することができます。 (例: http://d.hatena.ne.jp/mollifier/20090814/p1) しかし使ってみるとわかるのですが、Cygwin だと結構遅いです。 シェルのプロンプトが表示されるたびにちょくちょく待たされる感じになってしまい、かなりストレスを感じます。 どうにかならないものかと思っていたのですが、ひとまず実用上問題なさそうなところまで高速化できたので共有しておきます。 (私が Mercurial メインで使っているので、Mercurial を使う際の高速化が中心です。Git だとまだ改善の余地が多いかと思います) 第一に:使っていないバージョン
■ [Emacs]find-fileで *Completions* バッファに ../ と ./ を出さない C-x C-f (find-file) でファイルを開くとき、ディレクトリの先頭で補完を行うと補完対象の最初に ../ と ./ が表示されます。 これは邪魔でしかないので消せないものかと思っていたのですが、以下のように find-file-read-args を再定義することで除外することができました。
■ [Ruby]RubyKaigi2007 に参加 RubyKaigi2007 に参加しました。 「愛」重要 ノベルティがバッグなのはよかった 最近るりまのお手伝いから離れてしまっていたので、また作業をしていきたい Dave のスピーチがとてもすばらしかった スピーカーの Mac 率がとても高かった。自分もノート PC 買うときは MacBook にしようかなぁ。(いつになるかわからないけど) スタッフのみなさん、本当におつかれさまでした。
■ [Rails] Logger を設定した場合のログレベル Rails のログをローテートさせようとして、config/environment.rb に config.logger = Logger.new("#{RAILS_ROOT}/log/#{RAILS_ENV}.log", 50, 1024 * 1024) と書いた。 無事ローテートできてめでたし……と思っていたら、production 環境でも Logger#level が DEBUG になっている。 というわけで config.logger = Logger.new("#{RAILS_ROOT}/log/#{RAILS_ENV}.log", 50, 1024 * 1024) config.logger.level = Logger.const_get(config.log_level.to_s.upcase) とした。
■ [Emacs] consult-buffer + recentf のプレビューで、特定ファイルのみ自動プレビューしない consult-bufferではrecentfと組み合わせることで 「最近開いたファイル」を補完対象とすることができますが、このときこのファイルにカーソルを合わせると 自動プレビューがなされます。 これは便利なのですが、EasyPGを使って*.gpgファイルを開いていると、gpgファイルにカーソルが合わさった瞬間にパスフレーズ入力が要求され、操作を阻害されてしまいます。 gpgファイルは自動プレビュー対象としないようにするにはどうしたらよいか調べていたのですが、 以下のようにすることで解決できました。 (defun my/consult-preview-exclude-by-file-name (orig-fun name) (let ((excluded (and
■ [Plagger]EntryFullText で、URI::Fetch の NoNetwork を設定できるようにする Filter::EntryFullText はエントリの全文を取得します。 URI::Fetch の引数として NoNetwork に 3 時間を渡しているので、 キャッシュがあれば 3 時間はサーバへのアクセスは発生しません。 3 時間を過ぎた場合でも、If-Modified-Since 付きでアクセスするので 毎回ページをダウンロードしてくることにはならないのですが、 それでもエントリが 100 個あったとすると、 100 回のアクセスが発生してしまいます。 1 回取得したエントリは更新されないと仮定してよい場合、 NoNetwork の値を十分長く設定できると、サーバへのアクセスが発生しないのでよさげです。 というわけで、NoNetwork の値を設定できるよう
■ [Plagger]Subscription::Config の follow_link と Filter::EntryFullText の custom_feed_follow_* の違い Subscription::Config では follow_link でエントリとして取りこむリンクを設定できる。 一方、Filter::EntryFullText にも custom_feed_follow_link / custom_feed_follow_xpath という似たような設定がある。 http://wiki.shibuya.pl/?HowToEntryFullText ソースを見ながらこの違いを調べてみたところ、以下のような結論に達した。 Subscription::Config の meta->{follow_link} を見ているのは CustomFeed::Simple だ
■ [Plagger]Preprocess Plagger でログインが必要なページにアクセスするには、cookie のファイルを用意して global: user_agent: cookies: /path/to/cookie-file とすればいい。 しかし、ログインの寿命が短いページだと、このファイルを頻繁に作りなおさないといけない。 ということで、 plugins: - module: Preprocess config: command: /path/to/make-cookie みたいな感じでコマンドを用意すると、フィードの処理に先立ってコマンドが実行されるような 仕組みがあるといいんじゃないかと思った。 % /path/to/make-cookie; plagger すればいいというのはまぁそうなんだけど、plagger で完結できるというのはよさげ。 cookie をパイプ
■ [Plagger]assets_path の勘違い 範囲を限定してリンクを抜き出すというのは、#plagger-ja で教えていただいて Subscription::Config や Subscription::XPath で解決しました。 が…… それを動かすまでに、assets_path でおおはまり。 「ブロックプラグインごとに指定した assets_path では、モジュール名は補われない」 http://subtech.g.hatena.ne.jp/miyagawa/20060819/1155980135 ■ [Plagger]CustomFeed::Config の extract で先読みを使う CustomFeed::Config の extract に指定する正規表現で先読み (?=...) を使っているとうまく動かなかったので 対応しました。とりあえずちゃんと動いて
■ [Plagger]Plagger をインストールしてみた。 今さらながら、Plagger をインストールしてみた。 最初は Debian sarge のマシンに CPAN からインストールしようとしたが、 あれがインストールできないこれがインストールできないと2時間経っても インストール完了が見えてこなかったので、 あきらめて sid 環境に apt でインストールしたら5分で完了した。 変な気を起こさずに最初からこうしておけばよかった。 170個近い依存パッケージがずらっと出てくるのは壮観。 参考: Debian に Plagger をインストール 実は、インストールした後も YAML のインデントを間違えて10分くらい悩んでしまった。 sarge にも入れた sid 環境は apt で楽々入ったものの、 結局がんばって sarge 環境にも入れた。 何となくグローバル環境を汚したく
トップ 最新 追記 活動日誌 [Selenium] Selenium Generated by tDiary version 5.2.1 Powered by Ruby version 3.1.2-p20
ビット演算について考える機会があったので、結果をまとめておきます。 複数バイトの飽和加算 a と b は それぞれ 32 bit の unsigned long の変数で、これに 1 byte の 整 数が 4つまとめて入っているとします。これらについて、飽和加算をすることを 考えます。飽和加算とは、和が 0xff を越えたら結果を 0xff にするものです。 結果から先に出すと、次のような式になります。 tmp = ((a & b) + (((a ^ b) >> 1) & 0x7f7f7f7f)) & 0x80808080; // (1) mask = (tmp << 1) - (tmp >> 7); // (2) result = ((a + b) - mask) | mask; // (3) なぜこうなるのかについて解説します。 mask とは、オーバーフローしたバイトは 0xff
■ Amazon で表示される名前を変更する http://mxxi.hamachiya.com/2006/05/_amazon_xss.html ここで表示される名前は、Amazon の [アカウントサービス]→[名前、Eメールアドレス、パスワードを変更する]→[新しい名前] で変更可能です。 (前にどこかのサイトで似た話題を見て知ったんですが、どこだったかなぁ)
■ はてな認証 API のテスト はてなの認証 API が公開されていたので、早速テストしてみました。 テストページ ヘルプの通りで特に問題はありませんでした。 まず、入口となるページではてなへのリンクを貼ります。MD5 を計算する必要がありますが、 例えば ruby を使って以下のような感じで求められます。 % ruby -rdigest/md5 'p Digest::MD5.hexdigest("abcde01234abcde0" + "api_key" + "faff512ffa3a23c85efaaa4bf92f5839")' コールバック URL には http://shakenbu.org/yanagi/hatena-auth/hatena-auth.cgi を指定します。 その hatena-auth.cgi の中身は下のような感じです。 #!/usr/local/bin/r
■ [Selenium]Selenium で //input[@name='n' and @value='v'] と書くと IE でエラーになる件 このパッチで動くようになった。 Index: html-xpath/html-xpath-patched.js =================================================================== --- html-xpath/html-xpath-patched.js (revision 666) +++ html-xpath/html-xpath-patched.js (working copy) @@ -602,7 +602,7 @@ { var attribute = node.attributes[i]; var attributeValue = attribute.nodeValue
■ Rake Rake というものがあります。 Ruby で記述できる make みたいなものだそうで、 task :default => [:test] task :test do ruby "test/unittest.rb" end といった感じに書けるそうです。 なかなか面白そうだと思ったので、ちょっと触ってみようと思います。 あまり推敲していませんが、doc/rakefile.doc を訳してみたので掲載します。 なお、Rake は MITライセンスです。 ■ Rakefile フォーマット まず、Rakefile のための特別なフォーマットは存在しません。 Rakefile は実行可能な Ruby のコードを含んでいます。 Ruby スクリプトとして合法な記述は全て、Rakefile でも許されています。 Rakefile のための特別な文法が存在しないことを理解したので、 R
このページを最初にブックマークしてみませんか?
『shakenbu.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く