力指向グラフを調べていたら Barnes-Hut のアルゴリズムを Processing で書いているサイトがあったので C#に書き直して WPFアプリケーションに移植してみた(*´ェ`)
参考サイト先にも書かれている通り、初期の配置を考えないとごちゃごちゃになってしまう(*゚ェ゚*)
参考サイト
Barnes-Hutのアルゴリズムについて
今後は最適化と高速化したい(*´ェ`)
力指向グラフを調べていたら Barnes-Hut のアルゴリズムを Processing で書いているサイトがあったので C#に書き直して WPFアプリケーションに移植してみた(*´ェ`)
参考サイト先にも書かれている通り、初期の配置を考えないとごちゃごちゃになってしまう(*゚ェ゚*)
参考サイト
Barnes-Hutのアルゴリズムについて
今後は最適化と高速化したい(*´ェ`)
Visual Studio 2012 Update 3 から Update 4 へバージョンアップすると
Update 3
Version 11.0.60610.01 Update 3
から Update4 へバージョンアップすると
Version 11.0.61030.00 Update 4
になった。
Visual Studio 2012 Update 2 から Update 3 へバージョンアップすると
Update 2
Version 11.0.60315.01 Update 2
から Update3 へバージョンアップすると
Version 11.0.60610.01 Update 3
になった。
Surface Pro に Visual Studio Professional 2012 をインストール出来た(*´ェ`)
初回実行時に問題「Visual Studio 2012 のバージョンは、ご使用のバージョンの Windows と互換性がありません。」が発生したけれど Microsoft Visual Studio 2012 更新プログラム(KB2781514)をインストール後、問題なく起動した(*´ェ`)
そしてUpdate 2 を適用して、こちらも問題なく起動した(*´ェ`)
RTM版
Version 11.0.50727.1 RTMREL
からSP2へバージョンアップすると
Version 11.0.60315.01 Update 2
になった。
Visual Studio 2010 は見送ってたけれど Visual Studio Professional 2012 は買っちゃった(*´ェ`)
Surface Pro にインストールできるかな…∑(*゚ェ゚*)
OpenTKを使って何かアプリを作ろう(*´ェ`)
2Dの画像を読み取り3Dデータにして書き出してみよう(*´ェ`)
書き出された3DデータはWavefront OBJ形式でLightWave3Dに読み込んでアニメーションさせてみた(*゚ェ゚*)
2D画像のピクセルを正方形の3Dのブロック状にするだけで
アプリに表示される3DビューはX-Y-Z軸回転と視野角、拡大縮小機能が付いてる、おまけみたいなもの(*´ェ`)
その3DビューにOpenGLを使って3Dモデルを表示させているのだ(*´ェ`)
書き出されたWavefront OBJ形式のファイルはPhotoShopでも読み込めたりする(*´ェ`)
“今日を含まない”指定した日数で取り出すか
“今日を含む”指定した日数で取り出すか指定できるようにした(*´ェ`)
-t オプションを付けると today で“今日を含む”
-y オプションを付けると yesterday で“今日を含まない”
#!/bin/bash
######################
#
# option : -t[--today]|-y[--yesterday]
#
# version : Charlie
# author : foloro
#
######################
#使用方法
function usage() {
echo "使用方法 : $0 -t|-y 日数" 1>&2
}
#引数の数をチェック
if [ $# -ne 2 ]; then
usage
exit 1
fi
#引数のオプションをチェック
if ! [ $1 == "-t" -o $1 == "-y" -o $1 == "--today" -o $1 == "--yesterday" ]; then
usage
exit 1
fi
#引数の日数が数字かチェック
if [ `expr "$2" : '[[:digit:]]*'` -eq 0 ] > /dev/null ; then
usage
exit 1
fi
#引数の過去の日数をチェック
if [ $2 -lt 1 ]; then
echo "日数は1以上の値で指定してください" 1>&2
exit 1
fi
#日付を配列に格納する
DAYNUM=$2
case $1 in
"-t" | "--today" )
for (( i = 0; i < $DAYNUM; i++ ))
do
DAYS[i]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done
;;
"-y" | "--yesterday" )
for (( i = 1; i <= $DAYNUM; i++ ))
do
DAYS[i-1]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done
;;
* )
usage
exit 1
;;
esac
searchQuery=${DAYS[0]}
for (( i = 1; i < $DAYNUM; i++ ))
do
searchQuery="$searchQuery""|""${DAYS[$i]}"
done
grep -E $searchQuery
使い方
シェルスクリプトをcutlogday.shという名前で作成して
Apacheのアクセスログがspecial-forces.jp-access_log-yyyymmddで“今日を含む”過去10日間のログが欲しい場合
cat /var/log/httpd/special-forces.jp-access_log* | ./cutlogday.sh -t 10 > matometa.log
もしこのシェルスクリプトをパイプなしで実行した場合
./cutlogday.sh -t 10
標準入力となる(*´ェ`)
Version Delta へ続く。
Apacheのアクセスログから“今日[実行日]を含まない”指定した日数分を取り出すシェルスクリプトがあれば便利だなと思って作ってみた(*´ェ`)
というより必要だったのだ(*´ェ`)>
イメージにするとこんな感じ
Apacheのアクセスログは月別に保存されている。
#!/bin/bash
######################
#
# version : Alpha
# author : foloro
#
######################
#引数の数をチェック
if [ $# -ne 3 ]; then
echo "使用方法 : $0 過去の日数 入力ファイル 出力ファイル"
exit 1
fi
#引数の過去の日数をチェック
if [ $1 -lt 1 ]; then
echo "日数は1以上の値で指定してください"
exit 1
fi
#引数の入力ファイルが存在するか
if [ -f $2 ]; then
echo "ファイルが存在しません"
exit 1
fi
#変数に引数の日数、入力ファイル、出力ファイルのパスを格納する
DAYNUM=$1
INPUTFILE=$2
OUTPUTFILE=$3
for (( i = 1; i <= $DAYNUM; i++ ))
do
DAYS[i-1]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done
searchQuery=${DAYS[0]}
for (( i = 1; i < $DAYNUM; i++ ))
do
searchQuery="$searchQuery""|""${DAYS[$i]}"
done
echo $searchQuery
cat $INPUTFILE | grep -E $searchQuery > $OUTPUTFILE
使い方
シェルスクリプトをcutlogday.shという名前で作成して
Apacheのアクセスログがspecial-forces.jp-access_log-yyyymmddで過去100日間のログが欲しい場合
./cutlogday.sh 100 /var/log/httpd/special-forces.jp-access_log* matometa.log
とすれば、matometa.logに指定した今日を含めない過去100日分のログが書き出されている(*´ェ`)
という風に使おうと思っていたらどうもスマートじゃない気がする(*´ェ`)
友達から“UNIXという考え方”という本を薦められて買って読んだらピンと来た∑(*゚ェ゚*)ピコン!
そして書き直したコードがこっち
#!/bin/bash
######################
#
# version : Bravo
# author : foloro
#
######################
#引数の数をチェック
if [ $# -ne 1 ]; then
echo "使用方法 : $0 過去の日数"
exit 1
fi
#引数の過去の日数をチェック
if [ $1 -lt 1 ]; then
echo "日数は1以上の値で指定してください"
exit 1
fi
#日付を配列に格納する
DAYNUM=$1
for (( i = 1; i <= $DAYNUM; i++ ))
do
DAYS[i-1]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done
searchQuery=${DAYS[0]}
for (( i = 1; i < $DAYNUM; i++ ))
do
searchQuery="$searchQuery""|""${DAYS[$i]}"
done
grep -E $searchQuery
使い方
シェルスクリプトをcutlogday.shという名前で作成して
Apacheのアクセスログがspecial-forces.jp-access_log-yyyymmddで過去10日間のログが欲しい場合
cat /var/log/httpd/special-forces.jp-access_log* | ./cutlogday.sh 10 > matometa.log
こうゆうことなのだ∑(*゚ェ゚*)
でも過去2日間のログを取り出すだけで過去何ヶ月ものログを開いているのは無駄な気がする(*´ェ`)
Version Charlie へ続く。
各パーティクルを男性(青色)、女性(赤色)に分けてランダムウォークさせ、同じ座標であれば結婚して線を結び色を変える、男性は緑色、女性はピンク色(*´ェ`)
何のひねりもないアイコンを作ってパーティクルに割り当てた(*´ェ`)
既婚者と同じ座標になっても何も起きないので何か起こしたほうがいいのか(*゚ェ゚*)
フィールドは上下左右ループになっているので線が無駄に長くなってしまうので壁を作ってフィールド内に閉じ込めよう(*´ェ`)
既婚者の線がある一定以上になると離婚ということにしてもいいかもしれない(*´ェ`)
実装予定
・結婚してから一定以上経つと子供を産むようにする、子供は両親の情報を受け継ぐ
・フィールドは壁でくくる
・寿命を与える
・既婚者同士の距離が一定以上離れると、性格の不一致により離婚する