2007年 09月 25日

1から100までの数字を色を表わすとするとどういうアルゴリズムがいいんだろうなぁ。
小さいほど青で明度が低く、大きいほど赤で明度があがる? 彩度で雰囲気調整?

カラーピッカー


Photoshop では HSV の H を横に縦に出したやつ (たぶんもっともよくみる形のピッカー) しか使わないけど、実際どういう形が一番いいんだろうなぁ。いいっていうのは、直感的に選びたい色が選べるという意味で、だけど……



Windows 標準のカラー選択ダイアログもこれだった気がするけど、これは中間色がなんとなく選びにくい感じ。


これも上とあんまり変わらない。

やっぱ「あの色 (色相) の、こういう感じのトーン……」って選ぶからいちばんうえのっぽいのが一番使われているんだと思うけど、それにしてもこういう選びかたをさせるピッカーの形もいくつかある。

Painter の右にむいた二等辺三角形 (http://lowreal.net/2005/triangle-color-selector とほぼ同じだけど、正三角形ではない。等間隔になるように三角形の高さを底辺と合せてある) は結構好きだけど、ちょっと狭い感じがする。

http://www.ficml.org/jemimap/style/color/wheel.html こういうのもあるけど、意図がよくわからない。

ほかに色相環+そのなかに四角とかも見る。これは場所をとるのが欠点だけど、色相環がちゃんと環になっているのが好き。人気があるっぽいSAIもこれっぽい (もちろんピッカーの形で選ばれているわけではないだろうけど)。


あと関係ないけど、普通の人に「いい色」を選びとってもらうという用途で、別に全部の色を選ばなくていいんじゃね、というなら、例えば DIC カラーとかを参考にしつつ適当に抜いてくるとか、あるいは「日本の伝統色」とかジャンルわけでやるとかがいいのかなぁ。

curses のメモ

じぶんはターミナルをほぼ全画面表示させているので、横幅が結構ながい。
そんなんで、ときどき右側にちょっと表示させたいなぁってことがあったりするのでそれのサンプル。

#!/usr/bin/env ruby

require "curses"
class Curses::Window
	def puts(*msgs)
		write(msgs.map {|m| m.to_s.chomp + "\n" }.join)
	end

	def write(str)
		@data ||= ""
		@data << str

		setpos(0, 0)
		l = maxy - 1
		out = @data.split(/\n/).last(l).join("\n") + "\n"
		addstr(out)
		refresh
		@data = @data.match(/(.*\n)*.*\n?\z/)[0] 
	end

	def sync=(*)
	end
end

Curses.init_screen
begin
	win1 = Curses::Window.new(Curses.lines, (Curses.cols / 2).to_i, 0, 0)
	win2 = Curses::Window.new(Curses.lines, (Curses.cols / 2).to_i, 0, (Curses.cols / 2).to_i+1)

	Curses.refresh
	
	$stdout = win1
	$stderr = win2
	
	load(ARGV.first, true)

ensure
	Curses.close_screen
end

$stdout と $stderr を画面半分ずつわけて表示させてみる。引数に ruby スクリプトをとる。
うえのをてきとうに double.rb とかで保存して http://lab.lowreal.net/trac/browser/c/mendoi/proxy.rb を実行させると、左にのっとりされたファイル、右にスキャンしたファイルが表示される。

(画面ちっちゃくして撮影)

$0 == __FILE__ やってるスクリプトはうごかないけど、とりあえず proxy.rb だけこうしたかった (ちゃんとのっとりできてるかわかりにくかった)

@data をちゃんとつめないとだめだ
http://lab.lowreal.net/trac/changeset/877

Tumblr のログイン支援

http://svn.coderepos.org/share/lang/javascript/userchrome/tumblr-multi.uc.js
ステータスバーに tumblr のアイコンがでる。クリックすると今までログインしたことのあるユーザ名が一覧表示され、選択するとそのアカウントでログインしたうえでブックマークレット発動
ログイン情報はパスワードマネージャから拾ってくるので保存されてないとつかえない。

chokan クラックされた

Eval と SimpleReply 系を併用してつかってる人がもしいたらすぐ Eval のほうを無効にしてください。任意の IRC コマンドが放てます。

IRCNet にいた chokan は一旦落とし、Eval をロードしない状態でうごかしています。てら迷惑な chokan
もっとセキュアな eval を考え中

kill してとめて main screen turn on / got signal とかいうから、あれもしかして SSH で入ってシェル見てんのとか思ったりして tail -f /var/log/auth.log したりとか……
でもぱっとみは chokan 経由でしかやってなかったっぽいし、なんで signal でとめたのがわかったのかわからない……彼らからするとみえないはずなんだけどなぁ。chokan のログはとってなくて (表示させてるだけで、追ったときは screen のバックログ検索) ふかくおえない……

chokan は tiarra 経由でつないでて、chokan.rb を殺しても IRCNet 側的にはなにもおきない (これは CTCP で彼らはしってた)。Eval 経由ではソケットへの書き込みは $SAFE 的に一切できないはずだから (できるなら SimpleReply を経由しないだろう)、直接そこからどうこうしたってわけではないと思う……

直接 chokan に対してセッションをはれていたわけではないはずだから、SEGV させてうんたらってのはできないはず。SEGV させたら Eval がもう動かないし

  • chokan.rb から任意の IRC コマンドが発行できる状態になっていた
  • freenode と ircnet につないでいたが IRCNet 以外ではとくになんもなかった
  • 他のチャンネルいくつかにも強制 JOIN していた。すべて IRCNet
  • http/https/ssh/ircd 以外のポートはルータの時点で閉じてる。
  • SSH のログで最後にアタックがあったのは 16:00 で、.net ドメイン (全て失敗) クラッカーは .at .ch だった。
  • SSH はそれから先 publickey でのおれのログインしかない。

直接セッションはらせる方法もあることはあるか……
DCCCache つかって CTCP SEND 投げて chokan に直接接続させて、ほげほげ? できんの?
とおもったけど、接続がきた時点で日付とか nick をふくめてファイルを生成しているのになんもできないからこれは使ってないっぽい。