OpenGL複数ビューの切り替え

OpenGL描画の際、ビューごとに

が設定する。

ビュー切り替え時に、アクティブになるウィンドウのデバイスコンテキスト、レンダリングコンテキストを引数にwglMakeCurrent()を実行する必要がある。

Youtube APIのはまり事

自作のYoutubeプレーヤーを作成してたら、API経由の動画制御ができずにはまる。起動時の動画読込はできるが、下記問題事象が起きていた。

  • プレーヤーオブジェクトにメソッドが定義されておらず例外発生
  • 動画読込後に呼び出されるはずのonYouTubePlayerReady()も呼び出されない

どうやらWebサーバー上で実行されないといけなかった。ドキュメントにもそう書いてある。

注: Flash Player ではローカル ファイルとインターネット間での呼び出しが制限されているため、これらの呼び出しをテストするには、Web サーバー上でファイルを実行する必要があります。

Webサーバーから呼び出したらうまく実行できた。が、小さい画面で常に最前面表示にして、別作業したいと思っていたけどWebサーバー経由かと思うと、、、これからどうするか悩む。

<html>
<head>
<link rel="stylesheet" href="./js/themes/base/jquery.ui.all.css">
<link rel="stylesheet" href="../demos.css">
<script src="./js/jquery-1.5.1.js"></script> 
<script src="./js/ui/jquery.ui.core.js"></script> 
<script src="./js/ui/jquery.ui.widget.js"></script> 
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
	/////////////////////////
	// player settings
	/////////////////////////
	var playerAreaId = "playerArea";
	var playerId = "ytplayer";
	var params={ allowScriptAccess: "always" };
	var atts={ id: playerId };
	var options = "enablejsapi=1&playerapiid=" + playerId + "&border=0&autoplay=1&loop=1";	// default options
	
	var youtubeUrl = "http://www.youtube.com/v/";
	var currentVideoId = "";  // 任意のビデオID
	
	/////////////////////////
	// methods
	/////////////////////////
	function makePlayer(playerAreaId, options){
		var url = youtubeUrl + currentVideoId + "&" + options;
		swfobject.embedSWF(url, playerAreaId, document.body.clientWidth, document.body.clientHeight, "8", null, null, params, atts);
	}
	
	/////////////////////////
	// initial page settings
	/////////////////////////
	$(function(){		
		// play default movie
		makePlayer(playerAreaId, options);
	});
</script>
</head>
<body>
<!-- player -->
<div id="playerArea"></div>
</body>
</html>

P2P

概要
オーバーレイネットワーク
  • IPネットワーク上に、特定ニーズに合うノード同士のネットワーク
  • コンテンツタイトル、検索キーワードでピア特定⇒オーバーレイネットワーク(OLN)
  • キーに対応するデータを持つピアを探す。
  • キーとデータをペアで結びつけた情報は「インデックス情報」
  • インデックスのことを「key-valueペア」とも言う
  • 通常データは、データを持つピアのIPアドレス
  • インデックス情報の管理がアプリケーションとしては重要
  • 放送用P2Pマルチキャスト ⇒ オーバーレイマルチキャスト or アプリケーションレイヤマルチキャストと呼ぶ
メリット
  • スケーラビリティ

VBAでファイルダイアログを利用する

エクセル、ワードから起動するのではなく、VBプロジェクトのフォームからファイルダイアログを起動したい場合、フォームにコモンダイアログコントロールを貼り付ける必要がある。貼り付け後、コードにCommonDialogを利用することができる。
コモンダイアログコントロールがファイルダイアログに貼り付けられていない場合、ランタイムエラーが発生する。

1. ツールボックスに「Common Dialog」を追加

ツールボックス上で右クリック。「Additional Controls...」を押下。下ダイアログで「Microsoft Common Dialog Control, version6.0」にチェックをつけてOKボタンを押下。

ツールボックスに「Common Dialog」が追加されている事を確認。

2. フォームに「Common Dialog」を貼り付け
ツールボックスの「Common Dialog」をフォームへドラッグ。フォームに「Common Dialog」アイコンが追加されていることを確認。ちなみにフォーム起動時には、このアイコンは表示されません。


3. フォームのコードに「CommonDialog1」を利用したファイルオープンのためのコードを追加
例:

Private Sub OpenDocFileButton_Click()
    CommonDialog1.Filter = "Word Files(*.doc; *.docx)|*.doc; *.docx|" & "All Files(*.*)|*.*|"
    CommonDialog1.FilterIndex = 1
    CommonDialog1.FileName = ""
    CommonDialog1.InitDir = App.Path
    CommonDialog1.ShowOpen
       
    DocFilePathText = CommonDialog1.FileName
End Sub

上界 / 下界 / タイトバウンド

アルゴリズムの計算量などに利用する表現。下記の表現のうち、f(n)の最高次項のみ考慮する。

上界(upper bound)

全てのn >= n0に対して、0 <= g(n) <= cf(n)であるような正の定数c, n0が存在するならば関数g(n)は高々オーダーf(n)であるといい、記号O(f(n))で表す。
このとき関数g(n)の上界はO(f(n))

下界(lower bound)

全てのn >= n0に対して、0 <= cf(n) <= g(n)であるような正の定数c, n0が存在するならば関数g(n)は少なくともオーダーf(n)であるといい、記号Ω(f(n))で表す。
このとき関数g(n)の下界はΩ(f(n))

タイトバウンド(tight bound)

全てのn >= n0に対して、0 <= c1f(n) <= g(n) <= c2f(n)であるような正の定数c1, c2, n0が存在するならば関数g(n)は少なくともオーダーf(n)であるといい、記号Θ(f(n))で表す。
このとき関数g(n)のタイトバウンドはΘ(f(n))