2008年12月
2008年12月28日
私はこれまでネタ不足だったり環境の準備に手間取って、今まで開発オフではまともに開発を進められたためしがなかったのだが、今回はちゃんとネタがあったので、それの実装に取り組んでいた。
テーマは「ブラウザで動く時刻表管理ソフト」。今回出来たのはカーソル操作、キー入力のベースの部分である。またjQuery(JavaScriptでよく行う処理などを容易に行うためのライブラリ)の基本を知ることが出来たのは大きな収穫だった。
YouTubeで見る
終了後はTwitter道民部の忘年会。初めてお目にかかった方も多くいて、来年も多くの方と交流していきたいと感じた。
道民部の皆様、来年もよろしくお願いします。
2008年12月24日
食べてみて美味しかったけど、Web上にほとんど情報がないので記事を書くことにした。それくらいお勧めである。先日、研究室の同期が名寄に行ってきたときに、研究室へのおみやげとして買ってきてくれたお菓子「なよろ生サブレ」。
何が生かというと、まず生地は完全に焼いて硬くなっているのではなく、少し柔らかい状態になっている。研究室の他の人は「カントリーマアム」とも表現していた。ただ生地自体はカントリーマアムと比べれば非常に薄い。
また中には生チョコが挟まれている。なので、全体としては非常に柔らかい。
作っているのは、名寄市中心部の菓子店「喜信堂」。インターネットショップも設けられているのだが、なよろ生サブレはなかった。これだけ良い商品なので、紹介ページを是非作っていただきたいところである。
http://www.kishindo.co.jp/
2008年12月21日
以前、ハロウィン前に公開して一部の方から好評をいただいた「かぼちゃミク」(初音ミクの髪などの青色をかぼちゃ色にしたもの)。冬至が近いということで、そのときのプログラムをRuby+RMagickに移植したものを公開してみる。
RMagickのインストールは若干面倒なので、多分このあたりを参照すればよいでしょう(私は試していませんが)。
- Windows: RMagickをWindows環境にインストール - Lazy Technology
- LinuxでAPTが使える場合: RMagickをインストール - ゆっくり*ゆっくり
- Linuxでrpm/yumが使える場合: CentOS4.5にRMagickをインストール - プログラマ 福重 伸太朗 〜基本へ帰ろう〜
肝心のコードはこちら。<gist.githubでコードを入手>
require "rubygems"
require "RMagick"
module Magick
class Pixel
def get_hsv
r = red; g = green; b = blue
if r > g
max = ((b > r) ? b : r); min = ((g > b) ? b : g)
else
max = ((b > g) ? b : g); min = ((r > b) ? b : r)
end
# Hue 色相(0-360)
if max == min
# 未定義
h = 0
else
if max == r
h = 60 * (g - b) / (max - min)
elsif max == g
h = 60 * (b - r) / (max - min) + 120
else
h = 60 * (r - g) / (max - min) + 240
end
end
h += 360 if h < 0
# Saturation 彩度(0.0-1.0)
s = ((max == 0) ? 0 : ((max - min)*QuantumRange.to_f/max)/QuantumRange)
# max == 0 のときは未定義
# Value 明度(0.0-1.0) : max/(RGBそれぞれの最大値)に等しい
[h, s, max.to_f/QuantumRange]
end
def Pixel.from_hsv(h, s, v)
range = (h / 60).to_i
diff_h = h - 60 * range
p = (v * (1.0 - s)) * QuantumRange
q = (v * (60 - s * diff_h) / 60) * QuantumRange
t = (v * (60 - s * (60 - diff_h)) / 60) * QuantumRange
v *= QuantumRange
case range
when 0; Pixel.new(v, t, p)
when 1; Pixel.new(q, v, p)
when 2; Pixel.new(p, v, t)
when 3; Pixel.new(p, q, v)
when 4; Pixel.new(t, p, v)
else; Pixel.new(v, p, q)
end
end
end
end
include Magick
img = ImageList.new("kabochamiku-src.png")
for y in 0...img.rows
for x in 0...img.columns
h, s, v = img.pixel_color(x, y).get_hsv
if h > 120 && h < 240 && v >= 0.3
h -= 180
h += 360 if h < 0
img.pixel_color(x, y, Pixel.from_hsv(h, s, v))
end
end
end
img.write("kabochamiku-out.png")
ミソなのは、髪の色かどうかの判断を、色をHSVに変換して表現していることである。HSVのメリットは、色を三原色の強さでなく「色の種類」「鮮やかさ」「明るさ」といった要素で表現しているので、例えば光の強さの変化などに影響されにくい形で条件式を書けることである。
RMagickには、HSVに似たHLSという形式での色表現が事前に組み込まれているのだが、これの挙動がどうもおかしいため、上記コードでは改めてHSVでの色の値を取得するメソッドを定義している。
変換元の画像"kabochamiku-src.png"として、以下の画像を使うとする。
このプログラムを実行した結果出力される画像"kabochamiku-out.png"は以下のようになった。かぼちゃっぽくなった。
※2009.3.14追記
ふと思い立って、gist.githubに貼り付けておきました。
2008年12月15日
今日の昼のTwitterでの話より。
最近、PCを持ち運び先でもインターネットに繋げられれば便利だと思い、いろいろと調べていた。
私の理想は
- 普通の携帯電話(=通話、インターネット利用などが可能)であって、なおかつPCを繋いだ通信が出来るもの
- 現在の携帯は解約する前提
↑非常に重要。頻繁にはPCを繋がない(が、使うときは思い切り通信する)ということと、2台持つほどお金に余裕がないということがあるので。
- 現在の携帯は解約する前提
- 通信エリアがそこそこ広い
- 北海道内の利用が中心なので、ちょっと田舎に行くと使えないのでは困る
- ただ、エリア外では携帯としての通信だけ出来るのでもよい
- データ通信料定額制の利用が可能
- 月額料金は基本料金、通信定額料金等の合計で7,000円以下(ここは多少妥協の余地あり)
というものなのだが、調べてみると流石に厳しい。
- [イーモバイル]
- データ通信料は定額だが、北海道内だと通信エリアはかなり狭い。厳密にいうと、イーモバイルのエリア外ではドコモのネットワークで通信できる(ローミング)が、その場合は通信料が完全従量制になる(定額には出来ない)。
- [ウィルコム]
- データ通信料は定額だが、北海道内だと通信エリアはかなり狭い(イーモバイルほどではないが。ただ北海道内各地で使うことを考えると厳しい)。
- [
NTTドコモ、ソフトバンクモバイル] - PCを繋いだ場合の通信料金は完全従量制。
- [au、NTTドコモ]
- 通常の携帯の場合、PCを繋いだ場合の通信料金は完全従量制。ただし特定機種に限り、au・NTTドコモともに通信料の上限が月最大13,650円となる(NTTドコモは2009年4月1日より)。
auの回線でPCで通信が出来るデータ通信カード(通信料は定額で月最大3,600円)もあるが、携帯としては利用できない。NTTドコモについては、データ通信定額を行う契約をした端末を通常の携帯としては使わない選択もでき、その場合は料金が安くなる(バリューコースで月最大9,765円)。
イーモバイルがドコモローミングのエリアでデータ通信定額制を実施する(割増料金がかかってもよいので)か、au or NTTドコモがPCでのデータ通信定額にも対応した携帯機種(もっと安く)を出してくれれば、即座にでも乗り換えるのですが。是非お願いします…。
【追記】(2009.01.23)
NTTドコモもデータ通信定額サービスがありました(中線が原記事からの削除部、下線が原記事からの追加部です)。お詫びして訂正します。
【追記】(2009.02.03)
auおよびNTTドコモで、通常の携帯でデータ通信を行っても定額になるサービスがありました(中線が原記事からの削除部、下線が原記事からの追加部です)。重ねてお詫びして訂正します。

