Monday, December 03, 2012

2012年12月03日の日記

昨日(12月02日)の笹子トンネルの崩落事故で、会社の同期が亡くなった、らしい。
頭が疑問符だらけだった。
何故? 何故? 何故?
詳しいことを調べようとしたら、悲惨な現実しか分からなかった。
現実ってなんだ?
そいつとの付き合いは、そんなに長い訳ではない。
一緒に遊んだこともない。
年下だし、趣味や嗜好も全く 違うように感じていた。
しかし、気の置けない友人だと僕は思っている。
少ない時間でも共有した内容のほとんどを覚えている。
会社の独身寮の一番隅の部屋。
ディスプレイが壊れて3/4しか映らないノートパソコンで音楽を掛けていた。
音楽を鳴らす分には、困らないと言っていた。
Jazzが好きだった。
父親からサックスだかを譲ってもらったという話をしていた。
自作の灰皿を見せてもらった。中央にタバコの火を消せるように穴が窪んでいるデザインだった。
機能性はまずまずだが、 デザインセンスは余り良いとは感じなかった。
出身大学の方を第二の地元と言って、週末はほとんど第二の地元に帰っていたようだった。
僕も週末は彼女さんと会っていたから、休みに会うことはまずなかった。
それでも、平日たまたま仕事帰りで会ったとき、車を出して貰って一緒に焼きソバを食べに行った。
正直微妙な味だった。
僕が結婚した時、同期でお祝いをしてもらった時に来てくれていた。
あの時は、参加するのが遅くなって、余り話ができなかったのが、申し訳なかった。
今でも、時々思い出して悔やむ。
当時、付き合っている彼女は居ないと言っていたが、その後、彼女はできたのだろうか。
もし結婚したら、駆けつけようと勝手に思っていたよ。
時間、話した内容は書き出せる程度の量しかない。しかし、どれも悪い記憶ではない。
なぜ、僕はこんな事を書いているのだろう。
それらの記憶が、今後もう意味を成さない、ということが哀しいのか。

Wednesday, July 14, 2010

ペルソナ3影時間時計Flash版(DarknessTimeClock)を公開

前回、SVG と Javascript でザックリと作成した正式名称不明な「影時間に移行するときに現れる時計」の再現の Flash 版とケータイ待受(Flash Lite 1.1)版を作成しましたので公開します。

PC向け

ケータイ向け

ケータイ向けには、下のQRコードでアクセスください。

さて、次は Android アプリでしょうか?

Monday, March 08, 2010

Youtube でリピート再生するスクリプト repeat-play-script

 小ネタです。
 Youtube の動画をリピート再生するサイトやサービスはいくつかありますが、リピート再生のために別サイトに移動すると動画の再読み込みが発生することがあります。

 そこで、ページ遷移無しでリピート再生を可能にするスクリプトを作成しました。
 作成には以下の情報を参考にさせて頂きました。


スクリプト

javascript:(function(){_gel('movie_player').addEventListener("onStateChange","(function(newState){if(newState==0){_gel('movie_player').seekTo(0,true);}})");})()

 動画再生中に上記コードをアドレスバーに入力してください。
 スクリプトが適用され、現在再生している動画がリピート再生になります。
 ブックマークレットなどにすると便利かも(>>Youtube-repeat-play)。

技術後記

 内容としては、プレイヤの状態が再生終了になった場合、0秒にシークするだけ。
 IE7, Firefox3.6, Google Chrome で動作確認しております。
 その他のブラウザでも動作するはずです。

 リピート停止できない。リピート再生かどうか判断できない、など使い勝手の悪い部分はありますが(エラー処理もありません)、簡単にリピートさせるにはいいのではないでしょうか。

Saturday, November 07, 2009

【P3P発売記念】ペルソナ3影時間の時計を再現


 『ペルソナ3』及び『ペルソナ3ポータブル』劇中での「影時間に移行するときに現れる時計」を Web アプリとして再現してみました。
 劇中ではタルタロスに行く2~3秒しか表示されないビジュアルですが、非常に印象的でアプリで探していたのですが、なかったので自作しました。
 機能としては、通常のアナログ時計の機能のみです。


http://red-one.appspot.com/kagejikan_clock.svg


 ブラウザ上から上記 URL にアクセスするか、下記コードを利用してください。
<iframe src="http://red-one.appspot.com/kagejikan_clock.svg" />

動作について

 実装は、SVG + Javascript です。SVG は Illustrator で作成し、Javascript は手打ちで対応しました。
 動作確認は Firefox, Chrome で行いました。
 不具合等ありましたら連絡ください。

Monday, July 20, 2009

アイコン・セット - Gray_Panel


個人用に作成したアイコンに+αして公開します。
サイズは今のところ、32x32pxのみ。
需要があれば、他サイズや、更に+αなどして順次公開していこうかと考えます。

以下から、閲覧及びダウンロード可能です。
Created by Akanasu (@live.jp)
ライセンスは一応、Creative Commonsに準ずるものとしますが、特に規定は定めません。個人の判断でダウンロードしてください。

Adobe Illustratorで作成しました。
Illustrator用の.aiファイルも以下に置きます。
色調整、サイズの調整などにお使いください。


ご意見・ご感想をお聞かせください。

Thursday, April 16, 2009

CrunchPadについての続報

CrunchPadの続報ということで前回に続いて動きを追ってみます。

(前回記事参照: レッド ■ ワン: red-one: CrunchPadは素晴らしいと思う


しかし、今回の発表はリーク情報を受けてとなっている為、正式な発表ではなく詳細な仕様等は現時点では判明していません。
従って、自身も曖昧かつ希望的観測を持ってしか語ることができません。

外観について

 画像を見る限りではかなりの薄型化が実現されている模様。
厚さ3.3センチあったB版のどうにもモッサリした外観と比べ、メタリック仕様でよりスリムによりスタイリッシュなデザインになっているのでは?
これは普通に置いてあっても違和感はないですね。
というか縦置き・斜め置きに対応したスタンドが何気に秀逸。

ソフトについて

 OSはカスタム・メイドLinuxということで、100MBまでスリム化されています。
UIとなるブラウザはWebkitベースで決まりなのか……。
OSと相まってユーザのカスタマイズ性はほぼ無しと言えるでしょう。
自由にアプリの追加すら出来ないのではないかと危惧してしまいます。

ここまで

 デザインがこなれた感じになって安心しました。
加速度センサも装備されて無意味に高機能化しているなぁ、と。加速度センサより(ソフト)ボタン切替の方が良いと思うのだが。
正直、iPod touchとの住み分けを考えてしまうと、余り新規性も有用性も乏しいかな。
フルブラウザで大画面なのがユーザに優しいということくらいか。

今後、利用形態や利便性を考えると重さが重要なファクタになりそう。
現時点で言えることは、自分が買ったら本当にdrawr用マシンになることくらい。 専用クライアントでも作ってみようかしら。

しかし、Gizmodeのこの記事は酷くないか(TechCrunchがタッチタブレット端末を出したよ! : Gizmodo Japan(ギズモード・ジャパン), ガジェット情報満載ブログ)。『原文』とあるものとも全く違うし。

Wednesday, February 11, 2009

Blogger ブログの要約記事をトップページに表示するアイディア

久々の Blogger ネタ、でもアイディアだけ。

テンプレートの変更を考えていまして、トップページの表示をなるべく簡素にしたいと思い、タイトル(と記事の要約)のみの表示へ変更する予定です。
記事の要約のみを表示して、「続きを読む」リンクなどを設置する方法は以前からあり、こちらで詳しく解説されています。


ただし、この方法は(今までのものを含め)全ての記事内容をそれ専用に編集しないとなりません。

そこで、アイデアというか思いつき。
Blogger ブログで配信しているフィードにはサマリィ(要約:この場合は最初の数百文字程度)だけを抜き出したものがあります。
詳しくは、こちらを。

自分のブログを例に挙げれば、
http://redone-on.blogspot.com/feeds/posts/summary

なんですが。
このサマリィをブログのトップページに貼り付ければOKなのではないか、と。

思いつく方法・その1


Blogger には幸いにも登録フィードをブログに貼り付けるフィード・ウィジェットがあります。
これを用いてサマリィを表示すれば、と思ったのですがフィード・ウィジェットはデータをキャッシュに取っていて表示が更新されるのが(異様に)遅い。
折角記事を書いても、トップページの更新が1日と遅れる状況は避けるべき。

思いつく方法・その2


JSONフィードのコールバックを使う。
http://redone-on.blogspot.com/feeds/posts/summary?alt=json-in-script&callback=AAA

AAAという関数で受け取って、記事タイトル、リンク、サマリィを表示する。
問題としては、Javascriptオフの環境ではトップページがまっさらになってしまうこと。


最善の方法としては、Bloggerチームがフィード・ウィジェットの登録フィードをユーザの任意のタイミングで更新にされるように改善してもらうのがよいのですが……。
なんとも、他人任せな解法。

Thursday, January 29, 2009

この度、Akanasu と改めます

 この度、当ブログ筆者のHNを改めまして Akanasu (または、Akanasu.c)とします。
 以前から他サービスへの登録アカウント名などは Akanasu としてきて、ユーザ情報等も徐々に変更していたのですが、当ブログでの著者名もここでいい機会ですので一新したいと思います。

 変更に至った経緯としては、jyunというアカウント名が一般過ぎて取得しにくいこと。また、同名や似た名前の方が多いことなどが挙げられます。
 他には、元々本名を捩った名前で気恥ずかしいというのもある。
 まぁ、分不相応で飽きたと言えば手っ取り早い。

 因みに『あかなす』とは、

トマト
出典: フリー百科事典『ウィキペディア(Wikipedia)』

トマト(学名Solanum lycopersicum)は、ナス科ナス属の植物。赤茄子(あかなす)、蕃茄(ばんか)、小金瓜(こがねうり)などとも言う。多年生植物で、その果実は食用として利用される。トマトは、緑黄色野菜の一種である。
トマト - Wikipediaより。

 日本っぽく、かつ日本人名ぽくなく、自分に関係するものとして選びました。
「好きな料理は?」と聞かれて「トマト!」と即答するくらいトマト好きです。
(好きな料理が思い浮かばないのもアレですが)

 多少混乱をもたらすかもしれませんが、皆様よろしくお願いします。

Sunday, January 25, 2009

CrunchPadは素晴らしいと思う

Long Tail World のSatomi氏のこの記事から密かに動向を伺っていた200ドル・タブレットPC。


プロトタイプだが、一応の動作をするものができたらしい。
通称『CrunchPad』と命名されているらしい。
全く素晴らしいプロダクトだ。

因みに、
  • 重さ3ポンド≒1.36[kg]、厚み1.3インチ≒3.3[cm]
である。

昨年中頃から始まった(らしい)プロジェクトも半年足らずでちゃんとした形にするバイタリティは見習うべきものがあります。
ただし、個人的に気になる点も多々あるのが実情。

残念な点

  • ブラウザ(UI)がWebkitベース。当初はFirefoxベースと謳っていた。Firefox(XUL)ベースならば、購入後もクライアント側でカスタマイズができる
  • 厚さが1.3インチ≒3.3[cm]。3センチは厚い。動画を見た限りでは、実際手に取る分には持ちやすそうだが、鞄に入れて持ち運ぶにはスペースを取り過ぎる
  • タッチパネルIF。動画を見て推測するには、マルチタッチではない模様。マルチタッチでないと文字入力は(更に)辛くないかな。
    恐らく、マルチタッチに対応していないから持ち手が画面に触れないようにフレームも幅広になっているのでは?
    今後のアップデートに期待


素晴らしいプロダクトではあるが、現段階でのデヴァイスの印象としては本当にネット閲覧だけ、という感じ。例えば、ブログ記事(長文)を書くことすら想定していなさそう。

外出先でちょっとしたメモを取る……とは使えなさそう。 文章を入力するよりも手書きメモを取る使い方ができれば良いなぁ。

全体の印象としては、少し中途半端なできになってしまっていることに残念である。
# まあ、200,300ドルで購入できるなら即買いしますが……!
ユーザ層や使用場面などは、どういう風に設定しているのだろうか。
室内で使う? 外出先で使う? ギークな青年が使う? ガジェット好きなスーツ? ネット初心者の年配の方?

何処に重点を置くかということが問題であって、必ずしも安価に固執する必要はないと思う。
# 安価であれば、それはそれで購買意欲にも繋がるが……
# 安価なのは十分条件であって、必要条件ではないでしょ。
まあ、これまで作るのに資金も余り掛かっていないと言っているので、試作もそんなに回数を重ねていないのでしょう。
これから本格的な練り直しとよりベターなプロダクトへの挑戦を試みて欲しい。

蛇足駄文

あと、ニーズとはあるものではなくて作るものではないのかな。
Apple の iPod 然り、iPhone 然り。
少なくとも CrunchPad はニーズを作ることができた(ブログ上のコメントなどで明白でしょ)。 あとは提案するニーズに沿う物を作り出せるかどうかだと思う。
その自信がないなら、まず会社化は無理でしょう。

Monday, January 19, 2009

年末年始の悲交々

年末年始と、誰かに呪われてるのではないかというくらいに立て続けに病気に掛かりまして、PCはおろかケータイのディスプレイを見ることすら気分が悪くてできない状態でした。
やっと、体調も元に戻ったので停止していたネット活動を再開したいと思います。
まずは、当ブログのデザインを作り直ししたいと思っていたので、その為の準備に取り掛かります。

Tuesday, December 16, 2008

Firefox の新規blankページをカスタマイズ

カスタマイズと言ってもスタイルを適用するくらいですが。


できること

 背景色の変更や画像の表示ができます。
こちらのページ(FireFoxの空白ページを彩る「Dark Firefox」: DesignWorks)にあるようなものを全く一切の拡張機能なしで実現する方法を提案。
対応: Fx2 ~
(画像表示に対応しているのは2.0からでした)
一部拡張機能と競合します。Speed DialAuto Dial などをインストールした状態では効果はありません。

ユーザスタイルシートの利用

 具体的なやり方については、Fxのユーザスタイルシートを使います。

サンプルコード

@-moz-document url("about:blank") {
html {}
body {
margin: 0;
width: 100%;
height: 100%;
background: #000000
center no-repeat fixed;
background-image: url(chrome://branding/content/icon64.png); /* For Fx2 */
}
x:-moz-broken,
body {
background-image: url(./icon64.png); /* For Fx3 */
}
}
画像を配置する場合は、Fx3 ではchrome:// 以下にアクセスできない替わりにユーザスタイルシートからの相対パスが使えるので、<Profileのディレクトリィ>/chrome に画像をバンバン置きましょう。
Fx2 の場合は、相対パスが使えない替わりに chrome:// にアクセスできるので browser.jar の中に入れてしまいましょう。
表示サンプル

テキストを表示させる

 スタイルシートのみのカスタマイズですので、ページのコンテンツそのものは書き換えられないのですが、テキストを表示したい、というときは :before 擬似要素や :after 擬似要素を用いることでテキストの表示ができます。
@-moz-document url("about:blank") {
body {
margin: 0;
width: 100%;
height: 100%;
font-family: Verdana, Helvetica, sans-serif, Arial;
}
body:before {
content: "about:blank";
font-size: 140px;
font-weight: bold;
color: #ccccccc;
cursor: default;
}
html:after {
content: "Designed by Akanasu.c";
display: block;
height: 30px;
margin-top: -50px;
text-align: right;
font-size: 30px;
font-weight: bold;
color: #555555;
cursor: default;
}
}

表示サンプル

応用として

 html 要素と body 要素にそれぞれ別の背景画像を指定することでちょっと複雑な表現も可能です。

参考

Saturday, November 29, 2008

イタリア旅行してきました

もう、半月ほど前の話ですがイタリアへ旅行に行きました。

日程は2008年11月03日~10日(月)。10日は飛行機移動だけだったので(現地9日夜に発、日本10日夜着)、実質的に1週間・6泊8日旅行でした。
30人程度の団体ツアー。割合は新婚が7割、定年(間際)夫婦が2割、その他1割といったところ。

行程はだいたい以下の通り。

  1. ミラノ
  2. ヴェネツィア(2泊)
  3. フィレンツェ
    • オプションでピサ
  4. ローマ(2泊)
    • オプションでカプリ島

4日5日は、イタリアでも珍しく雨、の予報でしたが丁度観光に回っているときには雨に降られず、なかなか良い天気でした。夜中には、雷雨が激しかったですが。
少々寒い気もしましたが、帰ってきた日本ほどではなかった。
1週間ネットの無い生活でしたけれど、移動移動の連続でそんなことを気にすることもなく。移動中はほとんど寝てたしね。
7日間で撮った写真は、400枚以上。
ただ見直して見るとこれでも少ないと思う。落ち着いてアングルを決めて取れなかったから、余り良いショットが少ない、という結果。
おしい。
こういう遣り残しがあるから、また行きたいということになるのだろう。
内容としては、1週間に色々詰め込みすぎました。自由時間があっても何もできないよ、と話し合ったのですが、買い物をする時間も(決められた時間、場所以外)ない状態は良くはない。

飛行機のアップダウンと書類手続きがなければ、何度でも行きます。
定住してもいい。
長く住み着くには不便だと思うけれども。

Monday, September 29, 2008

横スクロールのサンプルページ

Javascript で横スクロールするスクリプトのサンプルを以下に掲載.
CSS オン,Javascript オンの環境でアクセスしてください.

Monday, September 01, 2008

横スクロールするスクリプト ~横長デザインの為に~

追記 at 2008.Sep.04
Firefoxで Ctrl + PgDn(or PgUp) 時にタブ移動と共にスクロールしてしまう不具合修正.
その他に,
  • Shift, Ctrl, Altキー押下時の処理を追加.
  • Home, End キーに対応

上記対応のコード修正. 同様にソースファイルも修正しました.
追記 at 2008.Sep.02
修正ミスを修正.
  • Safariでスクロールイベントが動かない不具合

コードも修正. ソースファイルも修正しました.

 実験的に横長デザインに変更しようかと思いまして,ユーザビリティを考慮して,まずマウススクロール時に横スクロールするスクリプトを実装してみました.

参考

マウスホイールで横スクロール


function handle(delta) {
if (delta < 0) {
// 下方向にまわした場合の処理
} else {
// 上方向にまわした場合の処理
}
window.scrollBy(-delta*120, 0);
}

/** Event handler for mouse wheel event.
*/
function wheel(event){
var delta = 0;
if (!event) { /* For IE. */
event = window.event;
}
//Shiftキー Ctrlキー押下時
var altK = typeof event.modifiers == 'undefined' ? event.altKey : event.modifiers & event.ALT_MASK;
var ctrlK = typeof event.modifiers == 'undefined' ? event.ctrlKey : event.modifiers & event.CONTROL_MASK;
var shiftK = typeof event.modifiers == 'undefined' ? event.shiftKey : event.modifiers & event.SHIFT_MASK;
if (shiftK|ctrlK) { return true; }


// テキストボックス上では通常のスクロール動作
var isTextArea = false;
var target = event.target||event.srcElement;
if (target && target.nodeName.match (/input|textarea/i) && target.type.match (/textarea/i)) {
isTextArea = true;
}
if (isTextArea) {
return true;
}

if (event.wheelDelta) { /* IE/Opera. */
delta = event.wheelDelta/120;
if (window.opera) { delta = -delta; }
} else if (event.detail) { /* Mozilla case. */
delta = -event.detail/3;
}
/** If delta is nonzero, handle it.
* Basically, delta is now positive if wheel was scrolled up,
* and negative, if wheel was scrolled down.
*/
if (delta) {
handle(delta);
}
if (event.preventDefault) { event.preventDefault(); }
if (event.returnValue) { event.returnValue = false; }
return false;
}

/** Initialization code.
* If you use your own event management code, change it as required.
*/
if (window.addEventListener) { window.addEventListener('DOMMouseScroll', wheel, false); }
//else if (window.attachEvent) { document.attachEvent('onmousewheel', wheel); }
window.onmousewheel = document.onmousewheel = wheel;

リンク先のコードをいくらか修正したものです. 修正箇所は一々説明しません.
あと,テキストボックス上では横スクロールしないようにしています.

PageDown, PageUp キー押下時に横スクロール


function KeyShirtcuts(event) {
if (!event) { /* For IE. */
event = window.event;
}
// Altキー Ctrlキー押下時
var altK = typeof event.modifiers == 'undefined' ? event.altKey : event.modifiers & event.ALT_MASK;
var ctrlK = typeof event.modifiers == 'undefined' ? event.ctrlKey : event.modifiers & event.CONTROL_MASK;
if (altK|ctrlK) { return true; }


var isTextArea = false;
var target = event.target||event.srcElement;
if (target && target.nodeName.match (/input|textarea/i) && target.type.match (/textarea/i)) {
isTextArea = true;
}
if (isTextArea) {
return true;
}
switch (event.keyCode) {
case 33 : //PgUp
window.scrollBy(-document.documentElement.clientWidth, 0); break;
case 34 : //PgDw
window.scrollBy(document.documentElement.clientWidth, 0); break;
"case 35 : //End
window.scrollTo(window.scrollMaxX|document.body.scrollWidth, 0); break;
case 36 : //Home
window.scrollTo(0, 0); break;

default: return true;
}
if (event.preventDefault) { event.preventDefault(); }
if (event.returnValue) { event.returnValue = false; }
}
if (window.addEventListener) { window.addEventListener('keydown', KeyShirtcuts, false); }
else { document.attachEvent('onkeydown', KeyShirtcuts); }

IE では'keypress'イベントで PgDn, PgUp キーは拾ってくれないようなので'keydown'イベントで.
同様に,テキストボックスにフォーカスがあるときは横スクロールしないようにしています.

vscroll.js

 参考までに上記のスクリプトを纏めてファイル化したものを以下に置きます.

補足

 Fx1.5-3.0, IE6, Opera, Safari3.0 at WinXP にて動作確認しております.
 ブログデザイン自体は記事毎に横並びにする予定ですが,実際に上記のコードを使用する場合は縦方向のスクロールが必要になった場合の考慮をする必要があります.
 基本,長文を読ませる(自分のような)ブログには向いてない.
 ちなみに,デザインはコチラを参考にする予定. >>NonSociety: Julia

 ちなみの因みに,あくまで予定

Saturday, July 05, 2008

(本当の駄文)  僕は

ヒトより絵がうまくなりたい

誰よりも絵がうまくなりたい

美的感覚を研ぎ澄ませたい


どんなツールも使いこなしたい

むしろ ツールなんて要らない


ボーナスも給料も残業代も要らない

ただ 本物の能力が欲しい




耳が聞こえなくなってもいい

二度と喋れなくなってもいい

色彩だけは失いたくない

Thursday, June 26, 2008

CSS3: Target 擬似クラスを実装するスクリプト sfTarget.js を(勝手に)作り直し

CSS3 の Target 擬似クラスというものを IE,Opera に実装するスクリプトです.
Target 擬似クラスについてはこちらを参考に.


# ざっくり説明しようと思ったら意外と難しかったので省きます.
# リンク先を見てちょ

CSS3 で定義されている Target擬似クラスは IE と Opera では実装されていません. 上記エントリィ内でも Javascript で実現するスクリプトが紹介されてますが,スクリプトが読みづらい+意味不明な処理が多いので抜本的に作り直してみました.

sfTarget.js: IE,Opera に Target 擬似クラスを実装するスクリプト

JS ファイル
 コメントを削ったちょい軽量版です.


HTML に埋め込む際は head 要素内に以下の1行を挿入してください.

<script type="text/javascript" src="http://akanasu.googlepages.com/sftarget.js"></script>

ソースコード

function sfTarget () {
var cls = 'sftarget'; //クラス名
if (document.location.hash) {
var id = document.location.hash.substring(1);
var elm= document.getElementById(id);
if (elm) { elm.className += ' '+cls; }
}
for (var i=0; i < document.links.length; i++) {
if (document.links[i].hash == '') { continue; }
document.links[i].attachEvent('onclick', function (event) {
//前Target要素からクラス削除
if (document.location.hash) {
var id = document.location.hash.substring(1);
var elm= document.getElementById(id);
if (elm) { elm.className = elm.className.replace(' '+cls, ''); }
}
//Traget要素にクラス追加
var id = event.srcElement.hash.substring(1);
var elm= document.getElementById(id);
if (elm) { elm.className += ' '+cls; }
});
}
}
if (window.attachEvent) { window.attachEvent('onload', sfTarget); }


CSS 指定方法に関して

 因みに,CSS の指定方法としては

div.sftarget,
div:target {
/* (IE?), Opera ではここのスタイル指定は無視されます */
background: #0ff;
}

のようにグループ化して書けませんのでご注意ください.

div:target {
background: #0ff;
}
div.sftarget {
background: #0ff;
}

と,同じスタイルでも分けて記述しましょう.
理由としてはこちらの「説明」部分に詳しく説明されています.


:target が対応していないからですね.

リファレンス


Tuesday, June 10, 2008

記念日が一つ増えました

本日,6月10日は『時の記念日』らしいです.

  • 時の記念日(日本)
    日本書紀」の天智天皇10年4月25日(新暦6月10日)の項に、「漏刻を新しき台に置く。始めて候時を打つ。鐘鼓を動す。」とあることから。
    大正9年に制定。
6月10日 - Wikipedia より引用

本日,午前中に区役所へ行き婚姻届を提出してきました.

 これからの時を今から刻みはじめる

Thursday, June 05, 2008

Processing Works#2 Cherry Blos.

Processing.js 作品.
マウスイベントとJavascriptを使用した作品です.
マウスで線を描いてください.

Cherry Blos.


size(400, 400);
int cnt=0; //Counter
float trs(float s) {
return 3.5*sqrt(s);
}
boolean fnc(float s, float r) {
if (s<5) {
return s+5 > r;
}
return s*s*4/75+26/3 > r;
}
void setup() {
background(230);
strokeWeight(35);
stroke(180, 120, 0, 80);
}
void mousePressed() {
point(mouseX, mouseY);
}
void mouseDragged() {
int dx=pmouseX-mouseX, dy=pmouseY-mouseY;
float s=sqrt(dx*dx+dy*dy);
s=trs(s);
strokeWeight(35-s)
line(pmouseX, pmouseY, mouseX, mouseY);

float r=random(3,35);
if (fnc(s, r)) {
noStroke();
fill(240, 180, 180, 180);
ellipse(pmouseX+40-random(80), pmouseY+40-random(80), r, r);
}
}
var btn=document.getElementById('button-09-clear');
if (btn) { btn.onclick=function () {setup();} }

Sunday, June 01, 2008

Processing.js で1週間遊んでみた: Processing Works#1

情報元:

Processing.js がすごいのか Canvas タグがすごいのか,とりあえず遊んでみた.

random dot

int max=100;
Particle prt = new Particle[max];
size(200, 200);
frameRate(5);
int cnt, st;
void setup() {
cnt=0;
st =0;
background(0);
noStroke();
prt[cnt] = new Particle();
prt[cnt].paint();
}
void draw() {
background(0);
if (cnt < max) {
cnt++;
prt[cnt] = new Particle();
} else if (st < prt.length) {
prt[st].reset();
st++;
} else {
st=0;
}
for (int i=st; i<cnt; i++) {
prt[i].paint();
}
for (int i=0; i<st; i++) {
prt[i].paint();
}
}
class Particle {
int x, y;
int c;
float dev;
float al;
float r;
Particle() {
dev=0.9;
this.reset();
}
void reset() {
al=100;
x=(int)random(width);
y=(int)random(height);
c=(int)random(255);
r=random(5, 60);
}
void paint() {
if (8<al) {
al-=dev;
}
fill(c, 255, 255, al);
ellipse(x, y, r, r);
}
}

イベント関係

 マウス位置の取得にはスクロール位置が考慮されていないので,修正する必要がある.
 ソースコードを読むと Canvas 上のマウス位置の取得には,event.clientX(or clientY)[element].offsetLeft(or offsetTop)が使われているのだけれど,clientX は表示領域の XY 座標,offsetLeft は body のトップからの位置座標になるためスクロール量を別途加算します.
   p.mouseX += window.scrollX || document.body.scrollLeft || document.documentElement.scrollLeft;
p.mouseY += window.scrollY || document.body.scrollTop || document.documentElement.scrollTop;
processing.jsファイルの1612行の次から上記2行を追加しよう. ただし,スタイルシートでbody {margin:0; padding:0;}のように指定しないと IE6 で座標がずれてしまうことを確認したので注意.

Ball Shower, Dark - Stained Glassic -

size(200, 200);
//背景
background(120);
//noStroke();
strokeWeight(1);
stroke(0, 200);
for (int i=0; i<80; i++) {
int r = random(5, 60), c = random(255);
fill(random(255), 255, c, 100);
ellipse(random(width), height-(c/255)*height, r, r);
}
strokeWeight(1);
for (int i=0; i<height; i++) {
stroke(0, 255*i/height);
line(0, i, width, i);
}

描画関係

  • テキスト表示は Fx.3 より対応.
    Firefox は一応1.5から Canvas タグに対応とされていますが,Fx.1.5 ではイベント関係からなのか正常に動作しないスクリプトもあります.
  • 現在,ellipse(円・楕円描画)には,楕円の幅と高さを指定できるのだが,幅と高さが同値でないと図形が描画されない.
    つまり,円しか描画できない
  • あと,IEでは円に枠線(stroke)を指定しても枠線は描画されない.
  • 円弧(arc)の枠線に余計な線が付加される.

Ball Shower, Dark

size(200, 200);
//背景
background(120);
noStroke();
for (int i=0; i<80; i++) {
int r = random(5, 60), c = random(255);
fill(random(255), 255, c, 100);
ellipse(random(width), height-(c/255)*height, r, r);
}
strokeWeight(1);
for (int i=0; i<height; i++) {
stroke(0, 255*i/height);
line(0, i, width, i);
}

不満点

  • グラデーションがない.地味にピクセルやラインで色を変えて描く方法しかない
  • 切抜き,トリミング,描画範囲のマスク掛けなどがほしい
 最低でもこの2点がサポートされなければ,グラフィックアートを作るのは難しい…….

Rays Mix


size(200, 200);
//背景
background(120);
strokeWeight(1);
for (int i=0; i<height; i++) {
stroke(0, 255*i/height);
line(0, i, width, i);
}
CRay rays = new CRay[20];
for (int i=0; i<rays.length; i++) {
rays[i] = new CRay(i);
rays[i].paint();
}
class CRay {
int a;
int x0, y0, x1, y1;
int r;
int idx;
CRay(int _i) {
idx = _i;
a = (int)random(6);
r = random(1, 3);
strokeWeight(r);
switch (a) {
case 0:
x0=0;y0=random(height); x1=random(width);y1=0;break;
case 1:
x0=0;y0=random(height); x1=width;y1=random(height);break;
case 2:
x0=0;y0=random(height); x1=random(width);y1=height;break;
case 3:
x0=random(width);y0=0; x1=width;y1=random(height);break;
case 4:
x0=random(width);y0=0; x1=random(width);y1=height;break;
case 5:
x0=width;y0=random(height); x1=random(width);y1=height;break;
}
}
void paint() {
stroke(255, idx*5+50);
line(x0, y0, x1, y1);
}
}

補足・注意

 グラデーション描画は Canvas タグではサポートされているので,Canvas のデバイスコンテキストを取得するか,Processing.js を自分でいじるかすれば可能です. けど,これって反則気味?

Saturday, April 26, 2008

コメント投稿に確認用文字列 comment verification の入力を必須にしました

最近,コメントスパムが多いので(一時的に)コメント投稿画面に verification (入力確認用の文字列・または音声)を表示するようにさせていただきました.
コメント投稿に一手間掛かってしまいますが,投稿時に表示される文字列を併せて入力してください.

従来通りユーザ登録等の制限はございません.
あくまで機械のボットと区別するためのものですので何方でも気軽にコメントを残してください.

以上です.

Template Design. 2008 Jyun.