apacheのmod_cacheのテストにて

apacheのmod_cacheのテストにてうまくがキャッシュが効かない。なんでかなぁぁ??と思ってると、、、

「ブラウザのリロードはキャッシュされない」

のが原因でした、、、。


以下のヘッダがリロード時のサーバサイドでのキャッシュの使用を抑制しています。

Cache-Control	max-age=0

ってか、2年ほど前にも同じ事で悩んが記憶がおぼろげに、、、

osxでterminalの表示名(タイトル?ラベル?)を簡単に変えたい!!!

サザエさんの声で)


さて、みなさん大好き俺俺DIYのお時間です。

osxで開発していると思わずターミナル(私はiterm2派)を沢山開けすぎて困ってしまう事って無いでしょうか?


ない??

そんな貴方は"うんま、んっんっ"(サヨウナラの意)。


私はしょっちゅうです。
witchを呼び出してみても

6.Shell
firefox(実際にはページタイトル)
4.Shell
3.Shell
2.Shell
5.Shell
1.Shell
chrome(実際にはページタイトル)
7.Shell


ひどい有様です。これじゃ魔法使いにはほど遠いですよね(実際は一つ前のウィンドに戻る事が多々なのでそこまでひどくはないです)。


そんな貴方に俺俺DIYの凡人、人呼んで「コピーアンドペースト錬金術」のtipsをご紹介。


以下の内容のファイルをパスの通った所において、実行権限をちょちょいと付与しましょう。私は"tl"って名前にしています(Terminal Labelの略w)。

#!/bin/bash

if [ "$#" -eq 0 ];then
  echo "usage tl name "
else
  echo -en "\033];$1\007"
fi


そして以下のコマンドを実行。

bash$ tl hogehoge


なんということでしょう。


ターミナルの表示名が"hoge"に早変わり。witchを呼び出しても

6.hogehoge
firefox
4.Shell
3.Shell
2.Shell
5.Shell
1.Shell
chrome
7.Shell


と見やすくなっているではないですか。これで貴方も魔法使い的なものに一歩近づきましたね。





はい、最近見始めました、ビフォーアフター(去年は嫁の大河熱に負けて録画できなかった)。途中まで普通に記事を書いた所でどうしてもやりたくなりました。すみません。これに懲りず、次は「おはようございます。」から始める記事を書いてみたい、、、、。

ってか実はこれって簡単なやり方があるのかな、、???あとbashもわからず適当に書いてるからもっと良い書き方があれば教えて欲しいな〜。

railsのrake db:seedにてclosed MySQL connectionってなエラーがでる

うーん。seed内でループばりばり&生sqlで書きたいのでconnection.executeを使いたいってなシチュエーションにて"closed MySQL connection"ってなエラーが発生する。
バッドノウハウかもしれないが一応備忘ということで。

loop do
  query = "INSERT INTO HOGEHOGEHOGEHOGEHOGE"
  ActiveRecord::Base.connection.execute query
  #=> closed MySQL connection
end

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

loop do
  query = "INSERT INTO HOGEHOGEHOGEHOGEHOGE"
  con = ActiveRecord::Base.retrieve_connection
  con.execute query
  con.close
end

rails3.2で発現しているのでrails3.2からconnectionがスレッドセーフがウンチャラカンチャラに絡んでるんだろうけど追いかける気がしないので以上。

rubyにて短縮URLの様な処理をしてみる(数値を出来るだけ短い文字列で表現したい)

基本は以下のURLのものです。デコードが無かったので作ってみました

http://blog2.terawarosu.com/2011/03/ruby-1064.html

# coding: utf-8

class NumberShorter
  def self.decode(st,seed=nil)
    seed ||= ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a + ["-","="]
    st.gsub(/./) do |s|
      ret = seed.index(s)
      ret = ret.to_s(8)
      ret = '0' + ret if ret.size == 1
      ret
    end.to_i(8)
  end

  def self.encode(number,seed=nil)
    seed ||= ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a + ["-","="]
    s = number.to_s(8).to_s
    s = "0#{s}" unless s.length % 2 == 0 
    s.gsub(/\d\d/){|s| seed[s.to_i(8).to_s(10).to_i]}
  end
end

if __FILE__ == $0
  seed = ('0'..'9').to_a + ('a'..'z').to_a + ('A'..'Z').to_a + ["-","="]

  [(0..20000),(5000000000..5000000100),(10000000000000000..10000000000001000)].each do |range|
    range.each do |i|
      #puts '=' * 80
      #p i
      encoded = NumberShorter::encode(i,seed)
      #p encoded
      decoded = NumberShorter::decode(encoded,seed)
      #p decoded
      raise 'unmatch' unless i == decoded
    end
  end
end

irbにてreload!を使いたい!

irbを使っていてついreload!って打っちゃいますよね〜〜〜。

このやり方だと問題あるのかもしれませんが、、、、うちでは動いていますよ。

ちなみに私はrbenv派です。

.irbrcに以下をぺたっと

unless defined?(reload!)
  def reload!
    $LOADED_FEATURES.each do |f|
      next if f =~ /\.rbenv/
      load f if f =~ /\A.+\.rb\z/
    end
  end
end

もっと良い方法があると思うのですが、、、、教えてください。

gemでのraindropsのインストールでトラブル

snowleopardな環境でgem install raindropsが以下な感じでこける

shell$ gem install raindrops -v '0.8.0' --no-rdoc --no-ri
Building native extensions.  This could take a while...
ERROR:  Error installing raindrops:
	ERROR: Failed to build gem native extension.

        /Users/paco/.rbenv/versions/1.9.3-p0/bin/ruby extconf.rb
checking for mmap() in sys/mman.h... yes
checking for munmap() in sys/mman.h... yes
checking for mremap() in sys/mman.h... no
checking for getpagesize() in unistd.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_thread_io_blocking_region()... yes
checking for GCC 4+ atomic builtins... no
checking for atomic_ops.h... no

libatomic_ops is required if GCC 4+ is not used.
See http://www.hpl.hp.com/research/linux/atomic_ops/

Users of Debian-based distros may run:

  apt-get install libatomic-ops-dev
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/Users/paco/.rbenv/versions/1.9.3-p0/bin/ruby
	--with-atomic_ops-dir
	--without-atomic_ops-dir
	--with-atomic_ops-include
	--without-atomic_ops-include=${atomic_ops-dir}/include
	--with-atomic_ops-lib
	--without-atomic_ops-lib=${atomic_ops-dir}/lib

http://www.hpl.hp.com/research/linux/atomic_ops/download.php4よりソースを引っ張ってきて(めんどくさいので最新版を)以下の感じでコンパイル

CC=gcc-4.2 ./configure 
make
make install

でライブラリを入れたのちもう一度コマンドを打ってみたらgemが入った(動作確認を取ってないから動くかはまだ見検証)