SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|

2004-08-09(Mon) 南国の事情

  こういってはナンだが、南国に発展途上国が多い理由は明白である。いや別に言い訳するつもりはないが、現在ウチの居間のクーラーが壊れていて、なんにも手に付かんのである。ホント無理もないと実に実感する次第なのである。

  と、いうわけで、今日はアナログメータの特性を少し調べたくらいで作業終了である。あー、無駄無駄無駄無駄無駄。

  あ、そういえば、やっとパックマンの3回目のデモを拝むことができた。いやー、まだ完全に飽きたわけではないが、このゲームの深さには感服する。モンスターの動きといい、迷路のデザインといい、積み上げられた奇跡を感じるな。現代まで生き続けるだけのことはある。それはそうと、3回目のデモの意味がよくわからんのだが、これって深読みしてよいのだろうか。いや、なに、その、まぁ、気のせいか。

  それはそうと、ソレの第2弾はまだ注文してないのだが、実は先日見つけたこんなモノを一緒に買おうとしたところ品切れで、まだ注文することができないでいるのだ。つーか、日本ではまったく話題にもなっていないのがウサン臭いが、アッチでは品切れするぐらいなのだからやっぱりそれなりにスゴいアイテムなのだろう。1秒でスタンバイ、1〜5秒で触っても平気、ワイヤレスで、1,000円チョイ……そんじゃ今までのハンダゴテの立場はどうなるんだよ……って同情する間にも、早く入荷してくれー。


2008-08-09(Sat) 青い物を買う

  とりあえず

  画像の説明

  画像の説明

  画像の説明


2009-08-09(Sun) 複雑骨折を治癒

  さて、複雑骨折したSVXの内装だが、こりゃ簡単に治りそうも内装……なんてダジャレている場合でもない。一応、ビールのアルミ缶を切ってはみたが、既に補強する相手の強度がまるで期待できないので、ネジとかで止めるのは無理そうだ。あっさり、廃案。

  画像の説明

  順当にハナクソボンドで止めることにした。ちなみに、オイラがハナクソボンドを多用するのは愛用しているわけではなく、たまたま手持ちであるからだ。ホントはエポキシ系とかいうヤツのが頑丈らしいので、そういうのを使った方がいいかもしれない。ただ、いずれにせよ、当初のプラスチックの性質と同様、単なる堅さよりは、ちょっと粘っこい系の強度が必要なので、ボンドの中に針金を泳がせておく。針金は、はるか以前に購入した、ゴッツいジャンクダイオードの足を切ったもの。

  画像の説明

  おそらく、ヤケクソ然に見えるだろうが、まさにその通りである。いいの。どうせ、裏側になるんだから。そもそも、この内装、何だか知らんが裏側が赤い。いまさらハナクソの黄色が少し混じったところでどうということはない。

  画像の説明

  さて、ボンドをジャブジャブに使ったら、あとは放置。ちゃんとくっついたか心配で、触りたくてならないが、がんばって放置。ここ一番、中年力の見せ所である。では。


2011-08-09(Tue) まとめてWin作業

  先日、どうにか自製のPICプログラマrakipicを16F688に対応させることには成功したが、ちょっと追認したいことがあって、Windowsを立ち上げる必要が生じた。最近、滅多なことではWindowsを立ち上げないので、ついでに、追加購入したXBeeのセッティングも済ませておくことにする。

  実は、このループバックテストの成功の後、XBeeのマスタ側だけが、どうにも動作しなくなり、ファームウェアの更新をしようにもニッチもサッチもいかなくなってしまっていた。PCとのインタフェイスはそのままに、マスタ役をエンドデバイス役に挿し替えるだけで、エンドデバイス役はちゃんとX-CTUに応答するのに、マスタ側に戻すとウンともスンともいわないのだ。

  いや、厳密には「電源を入れると、13番のSTATE LEDが、速めに点滅する」し「X-CTUでBreak信号を送る都度、9600bpsで『OK<0D>』という応答がある」のだ。でも、それ以外の応答はなし。

  困り果ててDIGI社にメールしたが、2週間近く応答なし。催促したら、DIGI社からでなく、購入元の秋月からメールが来た。どういう契約になっているのかはしらんが、極めてカンにサワる対応である。メールアドレスを晒しておいて、メールを受けたんだから、自ら返事くらい寄越すのが筋ってもんではないのか、DIGI社め。印象悪いわ。

  ところが、再度、事象を確認しようと立ち上げたら、事象が起きなくなっていた。原因は、電源が不安定さにあったのかもしれない。単3電池を3.3Vに昇圧したものを供給していたのだが、マスタ側のみ突入電流が大きいのかしらん。レギュレータで3.3Vに降圧したものを供給する限り、特に問題なく動くようだ。

  画像の説明 画像の説明

  DIGI社に悪い印象を抱いているとはいえ、XBeeの代替となるパーツはそうはないから、ジタバタしても仕方ない。とりあえず、追加購入した2個のXBeeをエンドデバイスに仕立て上げる。巷ではDTRやRTSの接続が必須とされているようだが、そんなもんつながなくても、ちゃんとファームウェアを流し込めた。

  さて、そろそろテストばかりでなく、使えるガジェットをつくらなくてはな。


2015-08-09(Sun) 遠征してタミヤグランプリ出走

  今日は、3度めのタミヤグランプリ出場。この日のため、ガキのRAYBRIG NSXをさんざんイジっては、毎週のように走らせてきたので、期待がかかる。今回は掛川なので、名古屋からはかなりの遠征。早朝5時半前に出発し、7時過ぎに到着と、2時間弱を要した。

  今回はガキがジュニアグランプリ、オイラがバギーグランプリに出場する。しかしながら、あまり装備を揃えていないので、バッテリーは先日壊れた1本以外に、青が2本、黒が2本のみ。現在、仮運用中の自作の4本同時充電機に、秋月の昇圧モジュールを装着、現地で充電する作戦を採る。

  画像の説明 画像の説明

  まずは、ジュニアの練習走行。青バッテリ。いきなりコースを間違えて、さらにコースを間違える。ガキも迂闊だが、もうちょっと見た目ハッキリとコースがわかるようにして欲しかったところ。

  画像の説明

  次にオイラの練習走行。青バッテリ。初のジャンプ台ということで、存分に前転や横転をかましまくる。大丈夫なのか。

  ドライバーズミーティングを挟んで、午前の予選はオイラが先。青バッテリ。車も車だから、あきらかに遅い。オマケにヘタ。接触。コースアウト。挙句にジャンプで顔から着地し、エポキシでガッチリ修復したつもりだった左のフェンダー部分が再び裂け、目玉が飛んだ。あーぁ、気合入れて修理したのに、がっかり。結果は、まぁ、想定通りだが、順当に最下位を獲得。

  フェンダーは裏からガムテープで応急修理したが、目玉は治せない。ウケを狙って、黒いガムテープでアイパッチを作って付けてやる。

  画像の説明

  ガキの午前の予選。黒バッテリ。トルクチューンモータ、スリックタイヤ装備。2ヶ月いっぱいかけてオーバステアを調整してきたのだが、まだリアの挙動に不安定さが残る。その中では、割りといい走りをしたものの、またまた何度もコースを間違える。にもかかわらず、暫定Aメイン10位と中の上……喜んでいいのか悪いのか。

  昼は目の前に出店したカレー。手軽で悪くなかった。

  画像の説明

  オイラの午後の予選。青バッテリ。ジャンプのコツがつかめてきた。単に、まっすぐ、ゆっくり、だ。遅いながらも順当に走る。結果、ドベ2で予選通過。ヘボながら、決勝も走ることができる

ガキの午後の予選。黒バッテリ。コースを間違えることはなかったが、明らかに途中から挙動がおかしくなった。トリムが激しくズレているのに無理に走らせているような……終わってマシンを見ると、例によって前のドッグボーンがない。こりゃ、勝負にならん。Bメイン4位に転落。念願のAメイン入りはならず。痛恨。

  ガキには、普通に速いのだから無理に攻めるな、とアドバイスしつつも、今のマシンはステアがピーキーすぎる状態なので、扱いづらいのは確か。タミヤのヘボプロポなので、まるで調整とかできないし……ちょっと条件が悪すぎるか。

  さて、オイラの決勝。ガキの使用後の黒バッテリ。割りと順当に走りつつも……あ、あれ? いきなり激烈なドアンダーになったぞ。荷重移動を加えても曲がらない……終わってマシンを見ると、左前のダンパーシャフトが抜けてた。結果はBメインのドベ2。まぁ、でも順当な結果だ。

  画像の説明

  最後に、期待のかかるガキの決勝。黒バッテリ。いっちゃ悪いが、Bメインは烏合の衆。普通に走れば余裕で優勝を狙える……が、いきなり1コーナーで最下位に……かと思えば、そこから1周もしないうちにトップに返り咲き! 実況がガキのトップを叫んだ! 前回と同じ展開だ! よっしゃー! ……と思った矢先、また、途中から挙動がおかしくなった。午後の予選と同じく、トリムが激しくズレているのに無理に走らせているような……ハデに芝生に突っ込んだりしつつ、それでも2周くらいさせているところでコースアウト、マシンを戻そうとしたマーシャルが……バッテンポーズ! 終わった……マシンを見ると、やはり前のドッグボーンがなくなっていて、リアのアップライトの上が折れていた。二次災害だ。あかん……ブツかるのが悪いとはいえ、ドッグボーンじゃレースにならん。

  涙目のガキをなだめつつ、反省会。まぁ、光る走りもなかったわけではないし、気を取り直し、次に向けて再始動だ。トリとなるハデなエンジンカーの決勝レースを観戦し、元気をもらいつつ撤収。

  帰りにステーキガストで肉を食って帰路へ。帰省渋滞に巻き込まれそうになったので、三ヶ日で高速を下りたがこれが正解だった。自宅には9時半過ぎに到着。

  正直、ヒドいレースだったが、帰途で十分に睡眠を取り、自宅でカミさんに熱っぽく結果を語るガキの目には、再び炎が宿っていた。こりゃ、さすがにもう少し投資せざるを得んかな……。

本日のツッコミ(全1件) [ツッコミを入れる]

とおりすがり [残念でしたね。これをバネにまた次のステップへ…。]


2024-08-09(Fri) Maveの力を借りて、今、必殺の、メール送信ッ!

  世はAI流行りであるが、AIへの関わり方もイロイロで、スマホで語りかける関わり方もあれば、ゼロから学習させる関わり方もある。以前にやった画像認識は、既存のモデルを使っているからその中間か。で、いまは仕事で、客からの問い合わせに対する回答文の自動作成に取り組んでいる。半ば遊びでもあるのだが。

  日本語で既存の生成AIに問い合わせる形なので、HTTP経由でAPIを叩いているだけであり、技術レベルとしては上記の画像認識よりも浅い。しかし「客からの問い合わせ(メール)に応答し」さらに「客からの『再』問い合わせ(メール)にも応答する」となると、メールのハンドリングだけで地味に大仕事である。キチンとメールを蓄積しておき、キチンとスレッド単位でメール本文を引き出せなくてはならない。軽く「メール本文」て言うけど、エンコード方式はひとつじゃないし、マルチパートだったりするしで、容易ではない。

  そこに絶好なのが自作のメーラである「Mave」だ。メールの着信を検知したら、そのメッセージIDを元に、過去のメールをスレッドの頭から順に取り出すことができる。

mail0 = folder.get_mail_by_message_id(message_id)
mail0.folder.thread_sqs(mail0.sq).each {|sq|
	mail = mail0.folder.get_mail(sq)
	mailbody = ''; 	mail.body_each {|line|
		mailbody << line
	}
  :

  我ながら、悪くないコードだ。sqってのは各メールのシーケンス番号。これだけのコードで、過去の問い合わせの経緯をまとめることができる。

  で、本題。まとめた経緯をAIに渡し、自動作成させた回答文をAIから受取り、どうする? 客に返す……のはちょっと早すぎる。当面は回答作成担当者へのサジェスチョンに使うのがせいぜいだ。が、どっちにしろ、回答文はメールで送ることになる。どうやって?

  以前に書いたライブラリを使おうと思ったが、そこでふと思いついた。外からMaveのメール受信機能を拝借してメールをpopするmave_fetchコマンドがあるのだから、逆に、外からMaveのメール送信機能を拝借してメールをsmtpするmave_sendコマンドがあってもいいんじゃないかと。

  そうすれば、改めて送受信アカウントなどを設定する必要もなくなるし、勝手に「送信済み(Sent)」フォルダにメールが残るし、勝手に「電子署名(S/MIME)」にも対応することになり、いいことづくめだ。

  で、書いてみたら、紆余曲折の末、実質は以下だけで済んでしまった。我ながら、無駄がないにも程がある。書いてあるまんまだ。

Encoding.default_external = 'UTF-8'
begin
	mave = MaveController.new({:CONFIGS => @configs})
	header = {}
	header['Subject'] = 'テストメール'
	header['From'] = '送信元 <from@example.com>'
	header['To'] = '送信先 <to@example.com>'
	header['X-Mave-Store-Folder'] = 'Outbox'
	mave.generate_mail(header, [], ['テスト'])
	mave.send_mail_smtp
	mave.kill_mave
rescue
	print($!.message + $/)
end

  画像の説明

  あとはこれを、生成AIとやりとりするコードの後に足すだけだ。はい、これにて、今回の盆栽の剪定作業は終了。いやぁ、盆栽って本当に楽しいもんですねぇ。ではまた。