多変量解析プログラムでのRプログラムの出力方法を修正しました。
他にも細かな修正を行いました。
Rコンソールに大量のvector dataを代入しようとするとデータ読み込みに時間が掛ってしまいます。
多変量解析では重大な問題です。
そこで、クリップボード経由でデータを読み込む方法と選択できるようにしました。
クリップボード経由でのデータ読み込みは、Windowsだけで利用できるので、ブラウザ側でOSを判断し(OSの判別を参考にしたサイト)、OSごとにデフォルトが変更されるようにしました。
意外と少ないコードで実現できました。
js-STARの使い勝手の良さは、レイアウトと操作手順が上から下へ一体化している点と必要な機能だけが表示される点だと考えています。今回の修正もそれが実現できました。
それにしても、新しい開発環境の「Sublime Text 2」はプログラマーにとっての神ソフトです。
よく使うのは、自作した関数へのジャンプです。
あいまいに覚えていても候補を絞り出せるところがGOOD!
Windowsではうまく動かない点もありますが、それでも開発効率が格段に上がったことは間違いありません。
これからもユーザ本位で開発していきます。
js-STAR 新機能開発版 a20130131
2013年1月31日木曜日
2013年1月27日日曜日
柏崎の教育を語る会が行われます
2013年2月16日に「柏崎の教育を語る会」が、新しく完成した柏崎市文化会館アルフォーレで開催されます。
テーマは、『ともに歩む地域の学校』
今年は、大人たちの話し合いに先立って、子ども会議を行うという初めての企画です。
柏崎の教育に関心のある方は誰でも参加できます。
みんなで力を出し合い、柏崎の教育について考え実行していきましょう!
2013年1月24日木曜日
テキストエディタ Sublime Text 2 を使ってみた
恋に落ちるエディタとして有名らしい「Sublime Text」をインストールしてみました。
海外製なのですが、プログラミングする人にはうれしい機能が満載といった感じです。
ちょっと使ってみましたが、これでソースのコーディングが速く正確になることは間違いないです。
日本語を使う上ではちょっとカスタマイズする必要があるので、メモします。
海外製なのですが、プログラミングする人にはうれしい機能が満載といった感じです。
ちょっと使ってみましたが、これでソースのコーディングが速く正確になることは間違いないです。
日本語を使う上ではちょっとカスタマイズする必要があるので、メモします。
- メニューの日本語化
「ゆーがいぶろぐ」で日本語化のためのデータが公開されています。
ダウンロードしたファイルを置く場所:
C:\Users\(あなたのパソコンのユーザー名のフォルダ)\AppData\Roaming\Sublime Text 2\Packages\Default - 日本語のインライン入力
「Web企画×スタッフブログ」に方法が掛れています。
2013年1月23日水曜日
2013年1月19日土曜日
FlagTest ブラウザ版を公開しました
Processingで作ったFlagTestをブラウザだけで動くようにしました。
processing.jsというライブラリを使っています。
processingで作ったコードがほぼそのままブラウザで動くようになるというすぐれもののライブラリです。
javascrptの超有名ライブラリjQueryの作者さんが作られているようです。
まだまだ情報が少なく、いろいろと迷ったところをメモします。
(1)processing.jsをダウンロードします。
現在(2013.1.19)のバージョンは、1.4.1です。
解凍するといくつかファイルがありますが、processing-1.4.1.min.jsというものを使いました。
(2)IEではバージョン9でも、canvasが使えないので、excanvas.jsをダウンロードします。
(3)もとになるHTMLファイルを書きます。
最終的には下記のようになりました。
flagtest_web.htmと同じ場所にdataフォルダを作って、そこに、processing-1.4.1.min.jpやexcanvas.jpや画像のpngデータなどを入れます。
(4)Processingで書いたコードをprocessing.jpで動くようにします。
flagtest.pjsというファイルにして、dataフォルダに保存します。
コードは下記のようになります。
■はまった点1
Processingとの違いは、下記を追加したところです。
/* @pjs
preload = "data/flag_1.png,・・・・
実際のコードで確認してください。
これで画像データを先読みしておきます。
これがないと画像が表示されません。
■はまった点2
/* @pjs で*(アスタリスク)と@(アットマーク)の間に半角スペースがないと動かなかった。
■はまった点3
preloadに変数としてファイル名を代入しようとしたら動かなかった。
下のようなコードはダメでした。
String FileList = "data/flag_1.png";
/* @pjs
preload = FileList
■はまった点4
ライブラリは使えないのではずします。
音は鳴りません。
■はまった点5
読み込んですぐは、ブラウザをクリックしないとキー入力を付けつけない。
明示的にブラウザをアクティブにしてあげないとダメみたいです。
Processing版ではスタートはスペースキーなのですが、マウスクリックに変更してあります。
void mousePressed(){
if(flg == -1){
flg = 0;
}
}
■はまった点6
オフラインだとIE9でも動作しない。
セニュリティ関係のためか、オフラインで動作しませんでした。
ネットにアップしたらちゃんと動きました。????
FlagTest ブラウザ版
processing.jsというライブラリを使っています。
processingで作ったコードがほぼそのままブラウザで動くようになるというすぐれもののライブラリです。
javascrptの超有名ライブラリjQueryの作者さんが作られているようです。
まだまだ情報が少なく、いろいろと迷ったところをメモします。
(1)processing.jsをダウンロードします。
現在(2013.1.19)のバージョンは、1.4.1です。
解凍するといくつかファイルがありますが、processing-1.4.1.min.jsというものを使いました。
(2)IEではバージョン9でも、canvasが使えないので、excanvas.jsをダウンロードします。
(3)もとになるHTMLファイルを書きます。
最終的には下記のようになりました。
flagtest_web.htmと同じ場所にdataフォルダを作って、そこに、processing-1.4.1.min.jpやexcanvas.jpや画像のpngデータなどを入れます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>FlagTest</title> | |
<meta charset="utf-8"> | |
</head> | |
<body> | |
<script type="text/javascript" src="data/processing-1.4.1.min.js"></script> | |
<!-- IE用 --> | |
<script type="text/javascript" src="data/excanvas.js"></script> | |
<script> | |
window.onload = function(){ | |
// canvas要素 | |
var canvas = document.getElementsByTagName('canvas')[0]; | |
// Proccessingのコードが書かれたscript要素 | |
var codeElm = document.getElementById('processing-code'); | |
// 上記要素の内容を取得 | |
var code = codeElm.textContent || codeElm.innerText; | |
new Processing(canvas, code); | |
}; | |
</script> | |
<canvas width="800" height="600" data-src="data/flagtest.pjs"></canvas> | |
</body> | |
</html> |
(4)Processingで書いたコードをprocessing.jpで動くようにします。
flagtest.pjsというファイルにして、dataフォルダに保存します。
コードは下記のようになります。
■はまった点1
Processingとの違いは、下記を追加したところです。
/* @pjs
preload = "data/flag_1.png,・・・・
実際のコードで確認してください。
これで画像データを先読みしておきます。
これがないと画像が表示されません。
■はまった点2
/* @pjs で*(アスタリスク)と@(アットマーク)の間に半角スペースがないと動かなかった。
■はまった点3
preloadに変数としてファイル名を代入しようとしたら動かなかった。
下のようなコードはダメでした。
String FileList = "data/flag_1.png";
/* @pjs
preload = FileList
■はまった点4
ライブラリは使えないのではずします。
音は鳴りません。
■はまった点5
読み込んですぐは、ブラウザをクリックしないとキー入力を付けつけない。
明示的にブラウザをアクティブにしてあげないとダメみたいです。
Processing版ではスタートはスペースキーなのですが、マウスクリックに変更してあります。
void mousePressed(){
if(flg == -1){
flg = 0;
}
}
■はまった点6
オフラインだとIE9でも動作しない。
セニュリティ関係のためか、オフラインで動作しませんでした。
ネットにアップしたらちゃんと動きました。????
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int cx=800, cy=600; //画面の大きさ | |
//旗画像の設定 | |
int flagMax = 40; | |
String[] flagImage = new String[flagMax]; | |
PImage img; | |
String imagePreLoad=""; | |
int flg=-1; //フラッグ | |
int ktimer; //固視点時間計測用 | |
int trl=1; //現在の試行回数(1から始まる) | |
int timer; //反応時間計測用 | |
boolean endflag = false; //終了フラッグ | |
int score = 0; //正解数 | |
int Qmax = 50; //問題数 | |
int randNum=0;//ランダムな旗番号 | |
int randRotate=0;//ランダムな回転角度 | |
int randScale=0;//正像と鏡像 | |
PFont fnt=createFont("FFScala", 32); | |
void setup() { | |
size(cx,cy); | |
colorMode(RGB, 255); | |
smooth(); | |
//旗データの作成 | |
for(int i=0;i<40;i++){ | |
flagImage[i] = "data/flag_"+(i+1)+".png"; | |
} | |
/* @pjs | |
preload = "data/flag_1.png,data/flag_2.png,data/flag_3.png,data/flag_4.png,data/flag_5.png,data/flag_6.png,data/flag_7.png,data/flag_8.png,data/flag_9.png,data/flag_10.png, | |
data/flag_11.png,data/flag_12.png,data/flag_13.png,data/flag_14.png,data/flag_15.png,data/flag_16.png,data/flag_17.png,data/flag_18.png,data/flag_19.png,data/flag_20.png, | |
data/flag_21.png,data/flag_22.png,data/flag_23.png,data/flag_24.png,data/flag_25.png,data/flag_26.png,data/flag_27.png,data/flag_28.png,data/flag_29.png,data/flag_30.png, | |
data/flag_31.png,data/flag_32.png,data/flag_33.png,data/flag_34.png,data/flag_35.png,data/flag_36.png,data/flag_37.png,data/flag_38.png,data/flag_39.png,data/flag_40.png | |
" | |
*/ | |
} | |
void draw(){ | |
background(128); | |
if (flg == -1){ | |
StartMessage(); | |
} | |
if (flg==0) { | |
//表示 | |
PlusDraw(); //固視点 | |
ktimer = millis(); | |
flg++; | |
} | |
else if(flg == 1) { | |
//表示 | |
PlusDraw(); //固視点 | |
ScoreDraw(); //スコアー | |
//1秒間呈示 | |
if(millis()-ktimer>=1000){ | |
flg++; | |
} | |
}else if(flg == 2) { | |
randNum = int(random(0,flagMax)); | |
randRotate = 20*int(random(1,18)); | |
randScale = int(random(0,2)); | |
//表示 | |
QnumDraw(); //問題番号 | |
Flag1Draw(); //旗 | |
Flag2Draw(); | |
ScoreDraw(); //スコアー | |
//反応時間計測 | |
timer = millis(); | |
flg++; | |
}else if(flg==3) { | |
//表示 | |
QnumDraw(); //問題番号 | |
Flag1Draw(); //旗 | |
Flag2Draw(); | |
ScoreDraw(); //スコアー | |
}else if(flg==4) { | |
flg = 0; | |
trl++; | |
if (trl>Qmax){ | |
flg = 5; | |
} | |
}else if(flg==5){ | |
//終了メッセージ | |
EndMessage(); | |
if(endflag){ | |
goodSnd.close(); | |
badSnd.close(); | |
minim.stop(); | |
super.stop(); | |
exit(); | |
} | |
} | |
} | |
//固視点 | |
void PlusDraw(){ | |
pushMatrix(); | |
translate(cx/2, cy/2); | |
fill(255, 255, 255); | |
textFont(fnt, 100); | |
textAlign(CENTER); | |
text("+", 0, 0); | |
popMatrix(); | |
} | |
//問題番号 | |
void QnumDraw(){ | |
pushMatrix(); | |
translate(0, 0); | |
fill(255, 255, 255); | |
textFont(fnt, 36); | |
textAlign(LEFT); | |
text("Question No. = "+trl, 30, 50); | |
popMatrix(); | |
} | |
//旗 | |
void Flag1Draw(){ | |
pushMatrix(); | |
translate(width / 4, height / 2); | |
img = loadImage(flagImage[randNum]); | |
image(img, -img.width/2, -img.height/2); | |
popMatrix(); | |
} | |
void Flag2Draw(){ | |
pushMatrix(); | |
translate(width * 3 / 4, height / 2); | |
//randScale=0のとき正像、scale(1, 1) randScale=1のとき鏡像、scale(-1, 1) | |
scale(1-2*randScale, 1); | |
rotate(radians(randRotate)); | |
image(img, -img.width/2, -img.height/2); | |
popMatrix(); | |
} | |
//スコア | |
void ScoreDraw(){ | |
pushMatrix(); | |
translate(cx/2, cy/2); | |
fill(255, 255, 255); | |
textAlign(CENTER); | |
textFont(fnt, 36); | |
text("Score = "+score, 0, 250); | |
popMatrix(); | |
} | |
//開始メッセージ | |
void StartMessage(){ | |
pushMatrix(); | |
translate(cx/2, cy/2); | |
noStroke(); | |
fill(255, 255, 255, 200); | |
rect(-300, -100, 600, 200); | |
fill(0, 0, 255); | |
textFont(fnt, 36); | |
textAlign(CENTER, CENTER); | |
text("一致ならば「J」キー、\n不一致ならば「F」キー\n(開始:マウスクリック)",0,0); | |
popMatrix(); | |
} | |
//終了メッセージ | |
void EndMessage(){ | |
pushMatrix(); | |
translate(cx/2, cy/2); | |
noStroke(); | |
fill(255, 255, 255, 200); | |
rect(-300, -100, 600, 200); | |
fill(0, 0, 255); | |
textFont(fnt, 36); | |
textAlign(CENTER); | |
text("YourScore = "+score+"\n(スペースキーを押してください)", 0, 0); | |
popMatrix(); | |
} | |
void keyPressed(){ | |
if (key == 'j' || key == 'f'){ //キーが j か f の時しか反応しない | |
if (flg == 3){ | |
flg++; | |
if(randScale == 0 && key == 'j'){ | |
score++; | |
goodSnd.trigger(); | |
}else if(randScale == 1 && key == 'f'){ | |
score++; | |
goodSnd.trigger(); | |
}else{ | |
badSnd.trigger(); | |
} | |
} | |
}else if((flg == 5) && (key == ' ')){ | |
endflag = true; | |
} | |
} | |
void mousePressed(){ | |
if(flg == -1){ | |
flg = 0; | |
} | |
} |
FlagTest ブラウザ版
2013年1月17日木曜日
2013年1月14日月曜日
心的回転ソフトを作ってみましたよ
心理学の実験に心的回転(メンタルローテーション)があります。
Processingを使ってソフトを作ってみました。
FlagTestというものです。
左に元の旗画像が表示され、右には正像か、鏡像が20度単位で回転されて表示されます。
正像か、鏡像かを判断します。
全部で50問出題され、下に正解数が表示されます。
実際にはすべての場合を尽くしたり、個々の反応時間を計測したりするのですが、ゲーム的したかったので、出題は全くのランダムで、スコアー制にしました。
下記のリンクからダウンロードできます。
ZIP形式で圧縮してあるので解凍してください。
flagtestフォルダを開くと、flagtest.appというフォルダがあるので、flagtest.exeを立ち上げてください。
Processingのソースも一緒に入っています。
ここからダウンロードしてください
Processingを使ってソフトを作ってみました。
FlagTestというものです。
正像か、鏡像かを判断します。
全部で50問出題され、下に正解数が表示されます。
実際にはすべての場合を尽くしたり、個々の反応時間を計測したりするのですが、ゲーム的したかったので、出題は全くのランダムで、スコアー制にしました。
下記のリンクからダウンロードできます。
ZIP形式で圧縮してあるので解凍してください。
flagtestフォルダを開くと、flagtest.appというフォルダがあるので、flagtest.exeを立ち上げてください。
Processingのソースも一緒に入っています。
ここからダウンロードしてください
2013年1月13日日曜日
RenameCopyTool ver2.0.0を公開しました
ひな形となるファイル(たとえば、成績-○○.xls)のようなファイルを共有フォルダに作っておいて、各自で入力したら、 成績-自分の名前.xls に直してね、なんてことをよくやるわけですが、共有フォルダなのであやまって元ファイルを変更されたりして困ることがあります。
そんなとき、あらかじめ、成績-佐藤.xls、成績-鈴木.xls、成績-高橋.xlsのようなファイルを作成しておいて、自分の名前のファイルを変更してくださいと言えば、失敗と手間を減らすことができます。
RenameCopyToolは、そんなことが簡単にできるソフトです。
よく使う文字列を登録しておいて利用したり、連番をつけることが簡単な操作でできます。
数年前に作成したものと機能的には変わっていませんが、WindowsXPまでしか動かなかったので、Windows7で動くように開発環境を変えて、一から作り変えました。
これで1つ自作ソフトを公開したので、今年の目標がちょっと進歩しました。
そんなとき、あらかじめ、成績-佐藤.xls、成績-鈴木.xls、成績-高橋.xlsのようなファイルを作成しておいて、自分の名前のファイルを変更してくださいと言えば、失敗と手間を減らすことができます。
RenameCopyToolは、そんなことが簡単にできるソフトです。
よく使う文字列を登録しておいて利用したり、連番をつけることが簡単な操作でできます。
数年前に作成したものと機能的には変わっていませんが、WindowsXPまでしか動かなかったので、Windows7で動くように開発環境を変えて、一から作り変えました。
これで1つ自作ソフトを公開したので、今年の目標がちょっと進歩しました。
2013年1月12日土曜日
無料で使えるaiベクターデータ集!シルエットデザイン
無料で使えるaiベクターデータ集!シルエットデザインが良さそう。
カッコいいシルエット素材があるとデザインが決まる!
ちょうどいい写真探して、イラレでトレースという作業はとても時間がかかる。
そんなときに使えるサイトです。
こういうサイトはありがたいです。
カッコいいシルエット素材があるとデザインが決まる!
ちょうどいい写真探して、イラレでトレースという作業はとても時間がかかる。
そんなときに使えるサイトです。
こういうサイトはありがたいです。
ブログにグラフを表示したいときはGoogleドライブが便利
2013年の目標の達成度をグラフ化してみました。
グラフは、Googleドライブのスプレッドシートを使っています。
グラフは、Googleドライブのスプレッドシートを使っています。
- 必要なテキストと数値を入力します。
- グラフにしたい範囲を選んで、メニュー>挿入>グラフ を選択します。
- グラフの種類を選びます。
- カスタマイズタブでタイトルを入れたり、軸の書式を変更します。
- 挿入ボタンを押します。
- できたグラフ選択し、右上の▼ボタンをクリックします。
- グラフを公開を選択します。
- インタラクティブなグラフか、画像を選びます。
- コードが生成されるので、コピーして貼り付けます。
インタラクティブなグラフにしておけば、スプレッドシートの数値を変更しただけでブログのグラフも自動的に変更されますね。
細かな修正はいまいちですが、簡単にグラフとして見せられれば、わかりやすいですね。
ホームページデザインを変更しました
2013年1月8日火曜日
2013年の目標
2013も1週間が過ぎましたが、今年の目標を立てました。
基本的にプライベートとしての目標です。
仕事と混じっているような部分もありますが、厳密に分けられません。
(プログラミングは仕事じゃなくて趣味だから・・・)
(1)定期的に運動する
今年で50歳になります。健康は財産の一部と考えて実践します。
目標は100日はトレーニングに行く。
(2)食事をゆっくりとる
食事が速いと妻に叱られます。
やんちゃな生徒を相手にしていたからという言い訳は通用しません。
消化器系にも負担がかかるでしょうから、ゆっくりよく噛んで食べるようにします。
(3)HPのデザインを変更する
今のデザインも長くなりました。当時のディスプレイに合わせて横幅が狭いです。
CSS3を使うことも一つの勉強と考えて、変更したいと思います。
(4)自作ソフトを公開する
js-STAR以外に自作ソフトを公開することがなくなりました。
もう一度、原点に立ち返って、自作ソフトを作りたいと思います。
目標は5つ。
(5)js-STAR解説本を執筆する
おかげさまで「フリーソフトjs-STARで かんたん統計データ分析
」はたくさんのみなさんから読んでいたたいています。
今度は今追加している新機能(多変量解析)についての解説本を書きたいと思います。
(6)教師のためのプログラミング講座を充実させる
昨年末に公開した教師のためのプログラミング講座ですが、
動画を充実させたいと思います。
目標は100動画。
(7)本を読む
ジャンルにとらわれず、いろいろな本を読みたいと思います。
目標は50冊。
(8)旅行に行く
国内でもまだいったことがないところがたくさんあります。
大人の休日倶楽部に入ったら、JRをたくさん使おうと思います。
目標は3回。
(9)ギターを練習する
最近めっきり弾かなくなってしまいました。
息子がバンドデビューしたと聞いては黙っていられません。
(10)芸術に触れる機会を多くする
美術館やコンサートなどに足を運びたいです。
目標は6回
基本的にプライベートとしての目標です。
仕事と混じっているような部分もありますが、厳密に分けられません。
(プログラミングは仕事じゃなくて趣味だから・・・)
(1)定期的に運動する
今年で50歳になります。健康は財産の一部と考えて実践します。
目標は100日はトレーニングに行く。
(2)食事をゆっくりとる
食事が速いと妻に叱られます。
やんちゃな生徒を相手にしていたからという言い訳は通用しません。
消化器系にも負担がかかるでしょうから、ゆっくりよく噛んで食べるようにします。
(3)HPのデザインを変更する
今のデザインも長くなりました。当時のディスプレイに合わせて横幅が狭いです。
CSS3を使うことも一つの勉強と考えて、変更したいと思います。
(4)自作ソフトを公開する
js-STAR以外に自作ソフトを公開することがなくなりました。
もう一度、原点に立ち返って、自作ソフトを作りたいと思います。
目標は5つ。
(5)js-STAR解説本を執筆する
おかげさまで「フリーソフトjs-STARで かんたん統計データ分析
今度は今追加している新機能(多変量解析)についての解説本を書きたいと思います。
(6)教師のためのプログラミング講座を充実させる
昨年末に公開した教師のためのプログラミング講座ですが、
動画を充実させたいと思います。
目標は100動画。
(7)本を読む
ジャンルにとらわれず、いろいろな本を読みたいと思います。
目標は50冊。
(8)旅行に行く
国内でもまだいったことがないところがたくさんあります。
大人の休日倶楽部に入ったら、JRをたくさん使おうと思います。
目標は3回。
(9)ギターを練習する
最近めっきり弾かなくなってしまいました。
息子がバンドデビューしたと聞いては黙っていられません。
(10)芸術に触れる機会を多くする
美術館やコンサートなどに足を運びたいです。
目標は6回
登録:
投稿 (Atom)