Ruby 2.0.0 p195 CSV.foreach がマニュアル見てんのに出来なかったわけがわかった

2013年6月27日 3:17:51


クラスのトップだけ見てた。
もうずーっと何時間も格闘してた。
ファイルパスを指定したあとに、エンコーディングを指定してやらなきゃだめだった。
問題なく動きましたわ!

dirf = "../tesutofairu.csv"
#ans = FileTest.exist?(dirf)
#print ans
tesuto = Array.new
CSV.foreach( dirf , encoding: "utf-8") do |row|
	tesuto    << row[0]
end

先月から格闘している VirtuMVP の件だが、やっぱり必要なかったw

2013年6月23日 1:59:53
マザーボードが H67 であっても、ディスプレイを2つ(オンボードとグラボに)繋ぐと QSV が発動される。 ディスプレイが2つないと無理ってわけだ。 この前の手順の通り、
  1. マザーボード(ASUS)の BIOS を起動する
  2. アドバンスモードへ
  3. なんだっけ「 詳細 」かな 項目に 「 ノースブリッジ 」ってやつ
  4. その中に 「Initiate Graphic Adapter」「iGPU Multi-Monitor」ってのがある
  5. 「Initiate Graphic Adapter」は関係ないと思うんだけど一応設定した。 値は、【 PEG/ IGD 】 意味は PciExpressのGraphicsとInternalGraphicsDevice ようわからん。
  6. 「iGPU Multi-Monitor」を有効にする
  7. 保存して退出し Windowsちゃんを起動
  8. そうすると「 デバイスマネージャー 」の「 ディスプレイアダプター 」が2つになる(はず)
  9. デスクトップを右クリックし、画面の解像度を選ぶ(Windows7)
  10. 「表示画面を拡張する」を選ぶ。そうすると2つ目のディスプレイにデスクトップが表示される(はず)
  11. この状態で Aviutl のプラグイン出力 QSV出力が実力を発揮されるようになる。
H67M/Bでグラボ積んでもQSVを発動させる

入力欄の追加に成功しても Ruby が処理できないなら意味がないよね!

2013年6月13日 0:54:39
! 間違いだらけなんでかくしました (´・ω・`)
ruby がわかってきた今、変なことばっかりしてることに気付きました。
なぜ定数なのか。
変数名の決まりさえも当時はわかってなかったてことですね
この更新日を見ての通り、追加に成功してから数日経っているw
もー、うまくいかずだめかと思った。
でも、動いた。
独学である。うっひょー!

javascript の DOM button click で table の中身に form の入力欄を追加することに成功した

2013年6月10日 14:47:16
既存の入力フォーム以外に1行ずつ項目を追加していきたい。
どうしていいものかわからなかったので、まず、テンプレからコピー作戦でいこうと思った。

しょうがないので 別ウィンドウ でサンプルを作ったぜフォー!

よって、1行追加するためのテンプレートを作成する。

<section class = "none">
<table>
	<tbody>
	<tr id="template">
		<td name="通し番号"><input type="text" value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
		<td><input type="text"  value=""></td>
	</tr>
	</tbody>
</table>
<//section>


上記が1行で追加されるテンプレ。
section class = none は、display: none; にしてテンプレを表示しない設定にしています。
name = 通し番号 は通し番号を振っているので数を数える。
表示しないなら tr から記述してもいいのではと思うが、 table から記述しないと table に属していないとみなされ id を取得できない。
で、その後、ボタンをクリックしたときにテンプレを最後に追加するように javascript する。

function addInputbox ( n ) {
	var tooshiBangoLen = document.getElementsByName("通し番号").length;
//	alert(tooshiBangoLen);
	var templateTr = document.getElementById("template");
//	alert(templateTr);
	var addTableTr = templateTr.cloneNode(true);
	var idName = "tabletest";
	var tableId = document.getElementById(idName);
	var newaddTR =  tableId.appendChild(addTableTr);
}

通し番号は +1 して代入したいところだが、実はテンプレート自体も name = 通し番号 の名前が付いているので+1する必要はない。正しい数はむしろ-1
var addTableTr = templateTr.cloneNode(true);
templateTr をコピーします。(true)は、子もコピーするかしないか。trueする falseしない。
var tableId = document.getElementById(idName);
var newaddTR =  tableId.appendChild(addTableTr);
既存の table の tbody に id=tabletest を設定しています。
table id=tabletest ではなく tbody id=tabletest に設定するのがポイント
tbodyの最後に、appendChild(コピーしたオブジェクト)を挿入。

しかしこれだけではただ、入力フォームが追加されただけで、POST送信できない。
さらに属性を設定していかなかいと意味がない
appendChild ~の次の行に追加する

var tableId = document.getElementById(idName);
var newaddTR =  tableId.appendChild(addTableTr);
// 1列目 通し番号
newaddTR.childNodes[1].childNodes[0].name = "addt" + tooshiBangoLen;
newaddTR.childNodes[1].childNodes[0].value = toBanLen;
// 2列目 商品コード
newaddTR.childNodes[3].childNodes[0].name = "addc" + tooshiBangoLen;
newaddTR.childNodes[3].childNodes[0].value = "";
// 3列目 商品名
newaddTR.childNodes[5].childNodes[0].name = "adds" + tooshiBangoLen;
newaddTR.childNodes[5].childNodes[0].value = "";
	※以下略
newaddTR は新しく追加されたオブジェクト。
childNodes[x] は順番に子供に番号が振られている
td とか
で、いろいろ

alert(newaddTR.childNodes[0].tagName)
とかやったりして、tdがどの数字になっているのか割り出した。
すると奇数、1、3、5が Table の TD を指しているのがわかる。
そこでさらに

alert(newaddTR.childNodes[1].childNodes[0].tagName)
これで 新しく追加されたオブジェクトの [1] の [0] が input であることがわかった。
あとは簡単。.name = で POST 用に名前を付ける。
.value = には連番振っているので toBanLen

ruby CGI の GET で送った値を利用する。ファイルのコピー貼り付けをやったぜ

2013年6月5日 21:47:53

#!C:/Ruby200-x64/bin/ruby.exe
# encoding: utf-8

print "Content-Type:text/html\r\n\r\n"

require "cgi"
require "csv"
require "FileUtils"
cgi = CGI.new
t   = Time.now
tY  = t.year
tM  = t.month
tD  = t.day
tH  = t.hour
tm  = t.min
tNo    = cgi.params["tNo"]
toriNo = cgi.params["toriNo"]
tM     = "%02d" % tM  if tM  < 10
tD     = "%02d" % tD  if tD  < 10
tH     = "%02d" % tH  if tH  < 10
tm     = "%02d" % tm  if tm  < 10
DateName    = "#{tY}#{tM}#{tD}"
TimeName    = "#{tH}#{tm}"
LogFileName = "#{tNo[0]}_#{toriNo[0]}"
cPath = "../htdocs/T1/temp-UriageTable#{tNo[0]}.csv";
pDir  = "../htdocs/tempLog/#{DateName}"
FileUtils.mkdir_p(pDir)
dirf = "#{pDir}/tempLog#{LogFileName}_#{TimeName}.csv"
FileUtils.copy( cPath , dirf )
if FileTest.exist?(dirf)
	print 1
else
	print 2
end


#!C:/Ruby200-x64/bin/ruby.exe
# encoding: utf-8

print "Content-Type:text/html\r\n\r\n"

require "cgi"
require "csv"
require "FileUtils"

ruby の初期設定
今回は CSV をいじるわけではないので csv はいらない。
ファイルのコピペは FileUtils が必要。

t   = Time.now
tY  = t.year

t に日付と時間が代入される。上記の通り各種メソッッドで数値として代入される。

cgi    = CGI.new
tNo    = cgi.params["tNo"]
toriNo = cgi.params["toriNo"]

params で GET の値をゲットできる。
送付方法は test.rb?send=2&okuru=1
cgi.params["send"] ==> 2
cgi.params["okuru"] ==> 1
となる。
あ、そうだ、ちがうわwwwwwwwwww
配列です。
send = cgi.params["send"]
send = ["2"]
send[0] = 2
こうなります。配列から取り出す必要があるようだ。
なんでいかないのかと思ったら配列でしたわ。

FileUtils.mkdir_p(pDir)
FileUtils.copy( cPath , dirf )
if FileTest.exist?(dirf)
	print 1
else
	print 2
end

FileUtils.mkdir_p( 記載されているパスのディレクトリを全て作成します。 )
FileUtils.copy ( コピー元の path , コピー先の path )
いろいろやってるのは、日付のフォルダを作って、ファイル名を時間によってきめてるだけです。
コピーが成功したら true されるのかと思って print 1 if FileUtils.copy( cPath , dirf ) ってやったんだけど
print 1 は実行されなかったので、コピー先が存在するかどうかの if文 でやってみました。
というか エラー として別に値が飛ぶのかしら。まー、コピーミスとかまずないので、これでおk。
あとは、前回の 「cgi を ruby にして ajax? の DOM みたいな感じ」記事をご覧いただきたい。

PHP の csv ファイルの中身を消す(0にする)

2013年6月5日 16:11:26
ファイルそのものを消すわけじゃない。
ファイルの中身を消す。

setlocale(LC_ALL,'ja_JP.UTF-8');
$dir    = "temp.csv";
$handle = fopen( $dir , "w+" );
ftruncate( $handle, 0 );
fclose( $handle );

青森県民が誇る工藤パンの「イギリストースト」

2013年6月3日 22:26:19
なぜか無性にこのパンが食いたくなる。
ふとパンコーナーに立ち寄ったらチョコクリームバージョンが出てた。
工藤パン イギリストースト チョコクリーム
おもわず手に取ってしまった。
味は想像通りの変化球なし。
だが、ノーマルのこのパンは相変わらずの至高の味。
工藤パン イギリストースト
なんなんだろうな、この絶妙のバランス。
おやつになるし、昼飯には食えるし。
画像はあえてでっかくしてやった