トップ «前の日記(2007-01-31 (Wed)) 最新 次の日記(2007-02-07 (Wed))» 編集

uDiary

海野秀之(うんのひでゆき)の外部記憶

Twitter (twilog) / RSS / アンテナ / ぶくま

2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|

2007-02-02 (Fri)

読めなくても、なんか心のなかでは読んでいる

HHKになぜλキーがないのかと和田先生を問い詰めてみたい (が、もちろんそんな勇気はない)

http://www.lingr.com/room/gauche/archives/2007/01/31

というのを見ていて思い出した。

小学生のころ電話級とったんですが、その試験勉強本にでてくるλという字の読み方がわからなくて、こころの中で「入る(はいる)」と読んでいた。

とくに支障はありませんでした。

[Web] Radium Software --- Identicon

おお、すてき。どれくらい素敵って、思いついたのが自分じゃなかったのがくやしいくらい、素敵。

例によって ja.reddit 経由。

ネットから(たまに)遮断されたいひとへ

% web off

で、ネットがみられなくできたらいいと思いませんか?

ってなわけで、 「WEBrick でプロキシサーバを作る(るびま)」 を参考に、たまに遮断できるプロキシサーバを書いてみました。

#!/usr/local/bin/ruby

# proxy.rb [offline]
#
# a http proxy server can shutout your request when set as offline.
#
# 2007/Feb/02 written by UNNO Hideyuki.

require 'webrick'
require 'webrick/httpproxy'
require 'uri'

empty_response_handler = Proc.new(){|req, res|
  res.body = <<EOS
<html><head><title>Web offline!</title></head>
<body style="margin-left:3em;">
<H1>It is now isolated from Web space.</H1>
<p>Enjoy your more <b>important</b> activity!<br/>
- proxy.rb written by UNNO Hideyuki.</p>
</body></html>
EOS
}

config = {
  :BindAddress => '127.0.0.1',
  :Port => 8080,
  :Logger => WEBrick::Log::new('logfile.txt'), # ←もちろん、てきとーに変えるべし
  :ProxyVia => false,
  # 親プロキシは必要に応じて
  :ProxyURI => URI.parse('http://hogehoge:8080/')
}

if ARGV[0] and ARGV[0] == 'offline'
  config[:ProxyContentHandler] = empty_response_handler
end

s = WEBrick::HTTPProxyServer.new(config)
trap('INT'){ s.shutdown }
s.start

お見せするほどの物じゃない気はしますが、~/bin/web はこんなの:

#! /usr/local/bin/ruby
# -*- mode:ruby -*-

PROXY='/home/ほげ/bin/proxy.rb'

def kill_proxy
  t = 0
  user=`whoami`.chomp
  while proxy_pid=`/bin/ps -u#{user} | grep proxy.rb`.slice(/^(\d+)/, 1)
    cmd="kill #{proxy_pid}"
    puts "[Stop] #{cmd}"
    system cmd
    sleep 0.5
    t += 1
    break if t > 100
  end
end

case ARGV[0]
when 'on', 'online'
  puts "Turn on to be online."
  kill_proxy
  system("#{PROXY} 2> /dev/null&")
  print "[Start Proxy] ", `sleep 1; /bin/ps -e | grep proxy.rb`, "\n"
when 'off', 'offline'
  puts "Isolated from Web space, enjoy!"
  kill_proxy
  system("#{PROXY} offline 2> /dev/null&")
  print "[Start Proxy with offline mode] ", `sleep 1; /bin/ps -e | grep proxy.rb`, "\n"
when 'kill'
  kill_proxy
else
  print <<EOS
web [on|online|off|offline]
  on  | online:  (re)start http proxy server with online mode.
  off | offlne:                              with offline mode.
  kill        :  kill the proxy.
EOS
  proxy_pid=`/bin/ps -e | grep proxy.rb`.slice(/^(\d+)/, 1)
  if proxy_pid
    puts "\nNow proxy is runnig with pid:#{proxy_pid}."
  else
    puts "\nProxy is not running now."
  end
end

あとは、使っているブラウザに http://127.0.0.1:8080/ をプロキシとして設定すれば、 おっけい。

こんなの欲しがってるの、ぼくだけ?

ちょっと修正: kill のあとに少し待った方がいいみたいなので、sleep ついか。 (0.5 という数字に意味があるのかどうか不明)


2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|
Categories 3imp | Card | Cutter | Dalvik | Euler | Football | GAE/J | Hand | Haskell | Re:View | Ruby | Scheme | TQD | Tiger | TigerBook読 | UikiTeXi | Verilog | Violin | Web | parconc | tDiary | お勉強 | エントロピー | ツン読 | | 将棋 | 政治について | | 模写してみよう | 確率論 | 設定など | 雑文 | 音声