僕は発展途上技術者

HTMLカラーコードで表された色を濃く(暗く)する Javascript

任意に指定された HTML カラーコードで表された色と、それを少し濃くした色とのペアを取得するという必要にせまられた。これを実現する Javascript のコードを探したのですが、適当なものがみつからなかったので自分で書いてみました。


エントリー末尾の Javascript コードを読み込み、


darken('ff0000', 0.8)


のように darken 関数を呼んでください。2つ目の引数は濃くする度合いで、1に近いほど濃くする度合いは弱く、0に近いほど度合いが強くなります。


以下、実際どのように濃くなるかの例です。


  ff0000

  darken('ff0000', 0.8) = cc0000


  ffccff

  darken('ffccff', 0.8) = cca3cc


» Miscellaneous : True Color Darkening and Lightening / The JavaScript Source


のコードを参考にしました。


上記は逆数を取ったりとちょっとややこしいことをしているのですが、#ff0000 のような原色をうまく変換してくれなかったので、


» Darken and lighten color? - Usenet Forums




To lighten, increase RGB values by 10% each. To darken, decrease RGB values by

10% each. Maybe replace 10 with whatever the "certain amount" is.


(RGBの各色を10%ずつ増やせば色を薄く、10%ずつ減らせば色を濃くできる)


という発言を参考にして書き直しました。


不備があったり、もっと良い方法がありましたら、コメントなどでお知らせください。



世界中のどこからでもラジコンを遠隔操作 - JokerRacer

あとで読むフレッシュリーダーを開発されたサイドフィードの赤松さんに誘っていただき、一ヶ月ほど前から参加しているプロジェクトなのですが、これがかなり良い感じで進行しています。


いろいろ説明するより見てもらった方が早いです。



Linux サーバーを積んだラジコンを無線経由でインターネットに接続し、iPhone から操作!


車の前面に搭載されたカメラからリアルタイムに配信される動画が映し出されているので、ネットにつながりさえすればラジコンが世界中のどこにあっても、また操作する側も世界中のどこにいても可能なのです。(理論的には、という話ですが。。。)


ラジコンのスピードに比べて、オンボードカメラから映し出される動画から感じられる体感速度が超高速に感じられ、テンションがあがります。


速く数台を表で走らせ、競争したい!


詳しい情報は、以下のリンク先にあります。


» Joker Racer - remote drive our real racing car


» iPhone からラジコンを操作してみる : a++ My RSS 管理人ブログ


長野新幹線に乗っている間に Rails プラグインを作ってみる

東京 - 長野間は約1時間40分。その間に Rails プラグインを作り、公開して、ブログまで書けるかやってみました。


作るプラグインはとても簡単。


帳票などの機能を作っていると、日付や時刻を年度で考えなければならない、ってときがあります。

そこで、DateやTimeクラスを拡張し、fiscal_yearというメソッドを追加して、



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

=> 2008

>> Date.new(2009, 4, 1).fiscal_year

=> 2009


のように年度を返すようなことをやっていたのですが、これをプラグイン化してみました。


13:24 東京駅出発。


パソコンをリュックから取り出し、準備万端。


上野駅到着。


script/generate plugin fiscal_year


でプラグインのひな形を作成。


う、emobile つながらない。ま、いいや。とりあえずすでに config/initializers 以下に置いて利用していたコードをコピーします。


ほとんどコピペですむので早くもプラグイン完成。



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

NoMethodError: undefined method `fiscal_year' for Tue, 31 Mar 2009:Date

from (irb):1


ありゃ NoMethodError。


init.rb に



require 'fiscal_year'


と書き忘れてました。



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

=> 2008

>> Date.new(2009, 4, 1).fiscal_year

=> 2009


OK。ほぼ完成。


README を書く。


大宮駅でやっと emobile つながった。


github にレポジトリを作り、表示された以下の指示の通りに実行。



mkdir fiscal_year

cd fiscal_year

git init

touch README

git add README

git commit -m 'first commit'

git remote add origin git@github.com:champierre/fiscal_year.git

git push origin master


git push origin master で、公開準備も整った。


写真をぱしゃり。


20090403135648.jpg


サンプルアプリから、githubに置いたプラグインをインストールして実行してみる。



script/plugin install git://github.com/champierre/fiscal_year.git


テストを書き足す。


» The Complete Guide to Rails Plugins: Part II | Ruby on Rails for Newbies


を参考に。


A surprisingly large number of plugins have no tests at all.


と揶揄されている。僕は書くぞー。


なんの進展もないまま高崎に着いちゃった。


山がみえてきた。トンネルも多いし、これはやばい。emobile 切れそう。


軽井沢につくころ、ようやくテストが通った。


テストの冒頭に書く



require 'test/unit'

require 'test/test_helper'

require File.dirname(__FILE__) + '/../lib/fiscal_year'


あたりでつまづいていた。


レポジトリに再度プッシュ、サンプルアプリからもう一回プラグインをインストールして、テストまで通るか試す。



% script/plugin install git://github.com/champierre/fiscal_year.git

Initialized empty Git repository in /Users/ishihara/rails/sample/vendor/plugins/fiscal_year/.git/

remote: Counting objects: 19, done.

remote: Compressing objects: 100% (15/15), done.

remote: Total 19 (delta 1), reused 0 (delta 0)

Unpacking objects: 100% (19/19), done.

From git://github.com/champierre/fiscal_year

* branch HEAD -> FETCH_HEAD

% cd vendor/plugins/fiscal_year

% rake test

(in /Users/ishihara/rails/sample/vendor/plugins/fiscal_year)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:lib:test "/Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/fiscal_year_test.rb"

Loaded suite /Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader

Started

..

Finished in 0.00118 seconds.


2 tests, 2 assertions, 0 failures, 0 errors


ok。完成。


残り時間は急いで、このエントリーの下書きを書く。酔いそう。


エントリーも完成。


15:04 長野駅到着。


FiscalYear プラグインは以下で公開しています。


» champierre's fiscal_year at master - GitHub


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ