javascript+canvas

canvas-tetrisのソースを眺めながら、5x5の格子の色をランダムに変えてみた。sでスタートとストップを交互に繰り返す

canvas-test

整数の乱数値を取りたい時にはrandomしてfloorする

Math.floor(Math.random() * 255)

ループさせたい場合にはsetIntervalで止めたい時にはclearInterval。この例ではrunning = !runningでトグルさせてる。

if( running ){
  clearInterval( drawLoop )
  var r = Math.floor(Math.random() * 255);
  alert("stopped ");
}else{
  drawLoop = setInterval(drawMap, 50);
}
running = !running;

以下、全コード


<!DOCTYPE html>
<html>
<head>
  <title>Canvas Test</head>
</head>
<body>
  <h1 style='text-align:center'>Canvas Test</h1>
  <div style='text-align:center'>
    <canvas id='game' style='border:solid 2px #aaa;'>
      Your browser does not support the &lt;canvas&gt; element.<br>
      Please use a normal browser. Hint: Safari, Chrome, Firefox.
    </canvas>
  </div>
<script type="text/javascript" charset="utf-8">
  var SQ      = 25;   // square side in pixels
  var HCOUNT  = 5;   // horizontal width in squares
  var VCOUNT  = 5;   // vertical width in squares
  var WIDTH   = SQ * HCOUNT;
  var HEIGHT  = SQ * VCOUNT;
  var BGCOLOR = '#fff';
  var canvas = document.getElementById('game');
  canvas.width = WIDTH;
  canvas.height = HEIGHT;

  var ctx = canvas.getContext('2d');

  function line( fromx, fromy, tox, toy ){
    ctx.beginPath();
    ctx.moveTo( fromx, fromy );
    ctx.lineTo( tox, toy );
    ctx.stroke();
  }

  ctx.strokeStyle = '#999';
  ctx.lineWidth = .5;

  function drawMap() {
    // clear map and draw grid
    ctx.clearRect( 0, 0, WIDTH, HEIGHT );
    var currentSquare, w, h, i;

    // this loop draws the current map state
    for( w = 0; w < HCOUNT; w++ ){
      ctx.save();
      ctx.translate( w * SQ, 0 ); // Move the canvas horizontally
      for( h = 0; h < VCOUNT; h++ ){
        ctx.save();
        ctx.translate( 0, h * SQ ); // Move the canvas vertically
        var r = Math.floor(Math.random() * 255);
        var g = Math.floor(Math.random() * 255);
    var b = Math.floor(Math.random() * 255);
    ctx.fillStyle = "rgb("+r+","+g+","+b+")";
        ctx.fillRect( 0, 0, SQ, SQ );
        ctx.restore();
      }
      ctx.restore();
    }

    for( i = 1; i < WIDTH; i++ )
      line( i*SQ, 0, i*SQ, HEIGHT );
    for( i = 1; i < HEIGHT; i++ )
      line( 0, i*SQ, WIDTH, i*SQ );
  }

  var running = false, drawLoop;

  document.onkeydown = function(e) {
    var key = e.which;    

    if( key === 83 ) { // s - stop (pause)
      if( running ){
        clearInterval( drawLoop )
        var r = Math.floor(Math.random() * 255);
        alert("stopped ");
      }
      else{
        drawLoop = setInterval(drawMap, 50);
      }
      running = !running;
    }    
  }
</script>
</body>
</html>

Clinical Pharmacokinetics and Pharmacodynamics: Section III

Therapeutic Regimens

ProductName Clinical Pharmacokinetics and Pharmacodynamics
Malcolm Rowland,Thomas N. Tozer
Lippincott Williams & Wilkins / ¥ 5,925 ()
在庫あり。

  • Chapter 9 Therapeutic Window
  • Chapter 10 Constant-Rate Input
  • Chapter 11 Multiple-Dose Regimens

Table 10.6の生理学的なパラメータが変化したときにpharmacokineticなパラメータがどう動くかというあたりは参考になったというか、流量のバランスを考えるとまぁそうだよなと。

canvas-tetris

canvas要素とjavascriptで書かれたテトリス。あとできちんとソースを追いかけてみる。

canvas-tetris

今日の畑(101114)

少しラディッシュを抜いてみたが、まだ小さい

1289725042

ほうれん草と春菊はなかなか大きくならないなぁ。

1289725049 1289725055

一方そら豆とスナップエンドウは順調に育っている。

1289725061 1289725067

またクッキー焼いた

土曜日は料理の日ということでお菓子づくり。で、クッキー焼いた。さらに今回はレーズンも入れてみた。

1289716289 1289716283

前回よりは手際よく出来た。

1289716302 1289716296

よくよく考えてみたら、お菓子じゃなくて、もうちっと時間かけながら作るヤツやればいいじゃないかと。煮豚とかのコトコトヤル系とか、だし醤油、塩辛みたいな日持ちして酒の肴になるものもつくろう。

鈴木屋に行ってきた

入りづらそうだけど鈴木屋気になるって書いたら、オフれば?っちゅことでオフった。一度は台風でながれたけど、昨日なんとかいけた。主催なのに(家庭の事情で)遅れてしまいすいませんでした(あと、オープンと同時に一杯になったそうなので席取りありがとうございました。)。

ちなみに、やべー遅れたーとか言いながら三島からタクシーにとびのったものの、あとから出た電車のほうが先に田町駅に着いたというミスをしたけど、タクシー業界にお金を落としたということでビバ三島。

1289714198

こぶくろと豚カルビ。ちなみに、ホルモンとか旨かったんだけど食べるのに夢中で撮ってない。辛口のタレがマジうま。

1289714195 1289714202

堪能した。満足。

1289714200 1289714204

今回4人(@nekomaru,@manashoe,もう一人は僕の隠れフォロワーN)でオフったけど、会ってみたら知り合いだったとか、知り合いでつながっているとかそんな関係だった。twitter楽しいねということで。 で、アカウントすら持っていないNはGalaxy S買ってアカウントもとるとか言うてたけどどうかな?ゴールデンウィークにベアードビールで飲んだ時も似たようなこと言ってたしなぁ?と書いておこう。

あと、帰り道で@cannaに遭遇。お仕事お疲れさまでした。

次回はここらへん攻めたいなということで。

「離散数学への招待」がおもしろい

上巻読み終えたけど、この本はグラフ理論のさわりをおさえるのにちょうどいい難易度だ(難しすぎず、かといって平易すぎもしない)

ProductName 離散数学への招待〈上〉
J. マトウシェク,J. ネシェトリル
シュプリンガー・フェアラーク東京 / ¥ 2,835 ()
在庫あり。

  • 第2章 組合せ的数え上げ
    • 2.1 関数と部分集合
    • 2.2 置換と階乗
    • 2.3 二項係数
    • 2.4 評価 ―― 入門編
    • 2.5 評価 ―― 階乗関数
    • 2.6 評価 ―― 二項係数
    • 2.7 包除原理
    • 2.8 クローク係嬢の問題
  • 第3章 グラフ理論入門
    • 3.1 グラフの概念 ―― 同型
    • 3.2 部分グラフ,連結成分,隣接行列
    • 3.3 次数列
    • 3.4 オイラー・グラフ
    • 3.5 オイラー回路を求めるアルゴリズム
    • 3.6 オイラー有向グラフ
    • 3.7 2-連結性
  • 第4章 木
    • 4.1 木の定義と特徴づけ
    • 4.2 木の同型
    • 4.3 グラフの全域木
    • 4.4 最小全域木問題
    • 4.5 ヤルニークとボルーフカのアルゴリズム
  • 第5章 グラフを平面に描く
    • 5.1 平面や曲面の上の描画
    • 5.2 平面的グラフの中の閉路
    • 5.3 オイラーの公式
    • 5.4 地図の色分け ―― 四色定理

1.4

X Yを任意の集合とする。直感的には、関数fとはXの各元にYの元を一つだけ割り当てる何かである

という記述とその次のページからの関数合成とp.36の関数合成の集合のイメージでHaskellの関数合成のイメージがかなり強く沸いた。

3.3

次数列定理って面白いなと調べたら、Havel-Hakimiアルゴリズムというらしい。perlで書いてあったので、pythonでかいてみた。

def hakimi(deg):
    deg.sort()

    n = len(deg)
    m = deg[-1]

    if m == 0:           return True
    if m < 0:            return False
    if m > 0 and n == 1: return False

    new_deg = []
    for i,v in enumerate(deg[:-1]):
        if i+1 < n-v:
            new_deg.append(v)
        else:
            new_deg.append(v-1)
    return hakimi(new_deg)


if __name__ == "__main__":
    print [1,1,1,2,2,3,4,5,5]
    print hakimi([1,1,1,2,2,3,4,5,5]) # True
    print [2,2,2]
    print hakimi([2,2,2]) # True
    print [3,3,3]
    print hakimi([3,3,3]) # False

4

木の章もおもしろかった(符号化アルゴリズムとか)。

クラスカルのアルゴリズムやヤルニークとボルーフカのアルゴリズム(プリムのアルゴリズム)は読みなおした。そっちに興味がわくようだったら、最短経路の本がより深いのでよいかも。

5

4色定理はいわんとしていることは分かるが証明の過程をきちんと理解しているとは言いがたい。確か図書館に四色定理の本が置いてあったので今度借りてみるかな

ProductName 四色問題
ロビン・ウィルソン
新潮社 / ¥ 2,310 ()
在庫あり。

紀土 Sibata's

いわせさんで購入。紀土の純米吟醸

両方共に表ラベルとのこと

1289479211

1289479218

キリリ度強めでしっかりした味わいなのは紀土らしい。燗つけたとしてもぬるめのほうが美味いな。

「起業のファイナンス」を読んだ

先週のIBISに持って行って新幹線とホテルで読みきった。

IBIS開催中に起業して何期目かの学生時代の同窓と飲んだのだけど、この本とほとんど同じ主張をしてたのでおもろかった。会話のなかでビジネスモデルが大体どのくらい固まっていればいいのかが感触としてつかめたので有意義な飲みだったかな。あとはまぁ、今関わっているプロジェクトというかシガラミから同時に解放されそうなので、今後の人生を考えるに色々惹かれたという部分もあるけど。最近は意識的に会社とは疎な結合をしているというのもあるな。製薬業界どうなんだろうねぇ。イノベーティブな人材流れてきてないんじゃないかなぁ(特にIT)

さて、本の内容は「起業した人だったら当たり前に思うようなことを書いてある」のであろうと思うが、それを見落とさずに分かりやすく記述しているのがいいのだと思う。大体、会社がオープンイノベーションとか成果主義とかフラットな組織とかいって、組織を中央集権的なものとして機能するよりは個々人がセルとしてゆるくつながったものと捉えるような方向に進んでいるから、その目指すところは擬似起業だよね?と思うのであれば起業を考えてない人でも是非手に取るといいと思う。

ProductName 起業のファイナンス ベンチャーにとって一番大切なこと
磯崎 哲也
日本実業出版社 / ¥ 2,310 ()
在庫あり。

  • リターンが見込めない人に、お金がでるわけもないし、出してはいけない
  • なぜ株式で資金調達するかというと、それはベンチャー企業のリスクが高いから
  • 法人化するのは、まだ赤字か利益が出てない段階が望ましい
  • イケてるベンチャー、イケてるソーシャルグラフ
  • 事業計画書
  • 経営は数字だけでは出来ないが、経営の結果は必ず数字
  • 予言の自己成就
  • DCF法
  • クリフとべスティング
  • 上場時の時価総額はどれくらい必要か

Clinical Pharmacokinetics and Pharmacodynamics: Chapter 8

Response Following a Single Dose

ProductName Clinical Pharmacokinetics and Pharmacodynamics
Malcolm Rowland,Thomas N. Tozer
Lippincott Williams & Wilkins / ¥ 5,925 ()
在庫あり。

Explain why duration of response is often proportional to the logarithm of dose; and when it is, calculate both the minimum-effective dose and the effective half-life.