like | tweet | | BabelHealth | Health 2.0 API | Health 2.0 JAPAN |

Eyes JAPAN Blogej-blog

1997年からほぼ毎日更新!会津大学発のベンチャー企業、株式会社Eyes, JAPANによるBlog.
コンピュータ、ネットワーク、Hi-Tech Gadget、魔法の様な技術などのGeekなネタから会津のローカルネタまで。

2010/5/31

solarsystem.png

When did it start?

Its all started one day, when one of my friend sent me a link with a demo of css3 and its implementation in webkit based browsers:
http://neography.com/experiment/circles/solarsystem/

I was impressed with the fact, that its finally became possible to make animation in a script-like style and make browser do the rest.
After surfing the net for a while I found some interesting examples and demos using css3.

The Cube

Check this link for a demo: http://www.fofronline.com/experiments/cube-3d/
In this demo you are allowed to move 3d cube with arrow keys. Impressive, isn’t it?

3d-cube.jpg

Though, as its still in an under development state, you should directly point to the scripts your want use to process you css3 code:

<link rel=”stylesheet” type=”text/css” href=”http://sources.fofronline.com/css/experiments.css” />

<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js”></script>

How to use it?

First design style layout in a css3 way. In the code snippets below you might find properties starting with -webkit:


#experiment {
-webkit-perspective: 800;
-webkit-perspective-origin: 50% 200px;
}

#cube {
position: relative;
margin: 0 auto;
height: 400px;
width: 400px;
-webkit-transition: -webkit-transform 2s linear;
-webkit-transform-style: preserve-3d;
}

That were general properties for the cube. But cube consist of 6 faces and it also necessary to set styles for them. Below is a general settings for face of the cube.

.face {
position: absolute;
height: 360px;
width: 360px;
padding: 20px;
background-color: rgba(50, 50, 50, 0.7);
font-size: 27px;
line-height: 1em;
color: #fff;
border: 1px solid #555;
-webkit-border-radius: 3px;
}

Please note, that it is now possible to set colors in a rgba way, i.e. red, green, blue and alpha channel. If alpha channel value can be set in a range from 0 to 1, where 0 is absolutely transparent, and 1 is non-transparent. In this case value is 0.7, so as a result you can see the cube, but at the same time you can see through it as well.

Next it is necessary to set faces positions:


#cube .one {
-webkit-transform: rotateX(90deg) translateZ(200px);
}
#cube .two {
-webkit-transform: translateZ(200px);
}
#cube .three {
-webkit-transform: rotateY(90deg) translateZ(200px);
}
#cube .four {
-webkit-transform: rotateY(180deg) translateZ(200px);
}
#cube .five {
-webkit-transform: rotateY(-90deg) translateZ(200px);
}
#cube .six {
-webkit-transform: rotateX(-90deg) rotate(180deg) translateZ(200px) ;
}

That’s it for styles. Now cube you made a cube, but you can only see it from one viewpoint. To see all faces it might be necessary to rotate it. In this case its can be done with a Javascript. It listens to keydown event, changes values accordingly and then use $(‘cube’).style.webkitTransform to submit new coordinates so that cube would rotate.


<script type=”text/javascript”>
var xAngle = 0, yAngle = 0;
document.addEventListener(‘keydown’, function(e)
{
switch(e.keyCode)
{

case 37: // left
yAngle -= 90;
break;

case 38: // up
xAngle += 90;
break;

case 39: // right
yAngle += 90;
break;

case 40: // down
xAngle -= 90;
break;
};
$(‘cube’).style.webkitTransform = “rotateX(“+xAngle+”deg) rotateY(“+yAngle+”deg)”;
}, false);
</script>

Now the code, which describes graphical part and actual behavior of the object, is complete to some extent, and the only thing to do is to initialize object, i.e. define the div containers with necessary content and corresponding object references as show below:


<div id=”experiment”>
<div id=”cube”>
<div class=”face one”>
One face
</div>
<div class=”face two”>
Up, down, left, right
</div>
and etc.

Other Examples

Similar to previous example – Mulitcubes

multi-3d-cube.jpg

Space galaxy
space.jpg

Isometric cube
isocube.jpg

and many-many other examples you can find here:
http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/

As you have seen, this is very interesting and promising approach, which has all chances to change the face of the Internet in a long-run.

投稿者 denvazh : 22:26 | コメント (0) | save to del.icio.us

2010/5/28

沢

金子君のエントリを見るたびに、彼のスキルには圧倒されるばかりです。一方私はというと、サーバ構築や管理のスキルは全くありません。勉強しようかなと思ったこともあるのですが、いまいち興味が沸きませんでした。というのも、「そもそもサーバ作って何するのよ?」という疑問に答えられなかったためです。実際私がプログラムを書くのは、あくまでプログラムを書くことによって利益を (金銭的な意味に限らず) 得たいからなのです。

そこのところのモチベーションは彼にとってどうなってるのだろう、と長いこと疑問に思ってたので、ある日尋ねてみました。すると、「サーバを管理するためにサーバを管理している」という答えが返ってきました。一見トートロジーのようですが、よくよく聞いてみると、この言葉は彼にとって2つの意味を持っているようです。
その前にこれだけは言っておきますが、先の文章は論理学的に見ても修辞的に見てもトートロジーではありません。

まず一つ目が、「サーバ管理を効率的に行うためにサーバ管理を行っている」という意味です。彼は複数のサーバを管理していて、それらを常にネットワーク越しに連携させているため、一台のサーバの管理を効率化させることとは、他の全てのサーバの管理を効率化させることにつながるそうです。

もう一つは、「サーバ管理をしたくてサーバ管理を行っている」という意味です。彼には「食欲」「睡眠欲」などと同様に「サーバ管理したい欲」というものがあり、それに従ってサーバを管理しているようです。

どちらの意味にしても、凡人がおいそれとたどり着ける領域ではなさそうです。しかし、「好きこそ物の上手なれ」という言葉があるように、このような姿勢が彼の技術力を裏付けているのでしょう。彼の態度から私が学ぶべきものは多いと感じました。

担当: 田山 (一方プログラマの美徳は「プログラムを書かないためにプログラムを書く」だったりするわけですが) ()

投稿者 tayama : 19:40 | コメント (0) | save to del.icio.us

2010/5/27

今まで自宅ではテーブル(兼こたつ)の上でノートパソコンを使っていたんですが、この方式は食事したりテーブルの上で作業したいときにパソコンに邪魔になってしまいますしノートPCをその度しまうのも面倒でした。
デスクトップPCがあるのでそっちの方で作業すればいいのですがサーバ用に購入したPCなのでグラフィック性能が非力すぎて使い物になりません。

なので社員さんの方式を参考にノートPCをデスクトップの所まで持っていきデスクトップのディスプレイに映像出力して使うようにしました。
やはりノートPCのディスプレイより画面が大きいので作業がしやすいし入力端子の切り替えでノートPCとデスクトップPC画面を簡単に切り替えられいいですね。
残る問題はマウスとキーボードを使うPCを切り替える度に差し直さなくてはいけないところですね。
これは「USB 切替器」と言うものがあるらしくこれを使えば簡単に接続するPCを切り替えられるみたいです。
あとノートPC用のスタンドも欲しいですが意外に高くても買うか迷ってます。

緑川 (予定を立ててるときが一番楽しい)

投稿者 midorikawa : 17:56 | コメント (0) | save to del.icio.us

2010/5/26

私はサーバ管理やデスクトップ用途などで、ある決まった処理を何度も行いたい場合や、処理を自動化したいといった場合には決まって「シェルスクリプト」を使ってきました。
シェルスクリプトとは、簡単に言ってしまうとプログラムです。
各UNIXコマンドに精通していればそれらを組み合わせて簡単なプログラムを書くことが出来ます。
UNIX好きな人ならばシェルスクリプトは日常的に使っていて、その便利さも良く分かっていることかと思います。

さて、そんなシェルスクリプトですが、私の場合今まで多くの処理を行うのに不自由ないくらい活躍してきました。
しかし、プログラムの規模が大きくなってくると次第にその「限界」に気がついてしまうような気がしました。
今日は私が感じたシェルスクリプトの「限界」について書いてみたいと思います。

サーバにあるログを解析して、解析した結果をメールで管理者宛に送信するようなスクリプトを書いたときでした。
ログの中にはIPアドレスが書かれている部分があり、IPアドレスの部分を抽出してその統計を取るためにある関数を定義しました。
その関数では主にIPアドレス (111.222.333.444の様な整数をピリオドで区切った形式) を処理対象にしていて、最終的な関数終了時にIPアドレスをreturnするようなものにしました。
そして書いたスクリプトを実行してその関数を呼んでみると、以下の様なエラー文が返ってきました。

bash: return: 111.222.333.444: numeric argument required

エラー文を読めば分かるかと思いますが、この場合だとbashになりますがreturn文は整数しか受け付けてくれないようでした。
IPアドレスの形式は先ほど述べたように、整数をピリオドで区切った形式なのでシェルスクリプト内では文字列になります。
いろいろ試してみると、「0.1」のような小数や、配列なども受け付けてくれませんでした。
この問題が発覚してから私は行き詰まってしまいました。
調べてみたところPerlやRuby, Pythonと言ったスクリプト言語だとreturnは整数のみでなく様々な型のものを受け付けてくれるそうです。
小さいことですがこの問題を知って、この処理にはスクリプト言語を使った方が良いのかな、と思ってしまいました。
私はシェルスクリプトはすばらしいと思いますし、実際に色々な場面で使っていますが最近は用途によってはスクリプト言語を使うことも増えてきました。
しかしながらシェルスクリプトはただのプログラムではなく、「小さなものを組み合わせて大きな処理を行う」といったUNIXの哲学が良くあらわれているものなので、それを忘れないためにも今後も使っていきたいと思っています。

担当: 金子 (実はもう少し書きたいことがあったのですが長くなってしまったのでまたの機会に)

投稿者 kaneko : 23:14 | コメント (0) | save to del.icio.us

2010/5/25

皆さん、ビデオゲーム (TVゲーム) はお好きでしょうか。
私はかなり好きな方で、休みの日などは一日中やっていることもあったり。
さて、「ビデオゲーム」というと、どうしても格の低い趣味と見なされがちですが、実際にいろいろなソフトをプレイしてみると、いろいろと学ぶ・考えるべき点が見つかります。

特に面白いのがユーザインターフェイス (UI) における工夫です。
ゲームでは「アイテムの選択」や「データの記録」などを何度も繰り返し行うため、これらの操作でユーザにストレスを感じさせるような設計は極力避けなければなりません。
そのためには、項目の配置, 画面遷移, カーソルの移動の仕方, 処理時間の短縮などあらゆる箇所に気を配る必要が出てきます。

例えば、メニューを開くとウィンドウが画面外からスライドインしてくる場合を考えてみましょう。
注意深く設計・実装されたソフトでは、ウィンドウが定位置に止まる前であっても、ユーザはその上でカーソルを動かすことができるようになっています。
逆に、こうした工夫がないゲームでは、ユーザはメニューを開くたびに1~2秒程度操作を中断しなければなりません。
その程度の待ち時間はたいしたことがないように思えるかも知れませんが、メニューを開く頻度を考えると、プレイ時間全体に対する損失の割合はかなり大きなものになります。

他にも、データの読み込みをバックグラウンドで処理することでシーン切り替えの際のロード時間を短縮する手法など、ユーザに対する「気配り」が見え隠れする部分が多々あります。
ゲームとして長く遊ばれるかどうかは、「ストーリー」や「映像の美しさ」や「システムの斬新さ」だけでなく、こうした開発者の「気配り」の深さ・細かさによって決まることが多いようです。

こうしたユーザのストレスを低減する様々な工夫は、ゲーム以外のソフトウェアやウェブサイトを作る際にも応用できます。
「良いデザイン」に行き詰ったときは、気分転換もかねてビデオゲームをやってみてはいかがでしょうか。

担当: 成田 (バイオハザードで学ぶ英会話)

投稿者 narita : 20:30 | コメント (0) | save to del.icio.us

May 2010
M T W T F S S
« Apr   Jun »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

お問い合わせ
採用情報