日記
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. 写真のような画像は画像生成AIもしくは念写によるものです.
2014-02-28
そろそろ確定申告しないといけないのだけど色々めんどう. まずは源泉徴収票を手に入れないとだけど,会社の給与明細とか参照するシステムのパスワード思い出せないし,リセットしてもらってログインできるようにしないとか...
2014-02-26
niconicoのAndroidアプリ,いままでプレミアム会員専用でしたがやっと 一般会員でも使えるようになりましたね.
niconico (ニコニコ動画/ニコニコ生放送) Google Play
ニコニコPlayer(仮)使ってる人も公式のアプリのほうも試してくれると,嬉しいようなそうでもないような.
2014-02-24
ここ最近ずっと眠い.
2014-02-23
金曜日に肉を食べながら,プログラミングいつ始めたのかを考えたのだけど,いつなんだろう...
自分のPCを手に入れてちゃんと書き始めたのは中2だけど,それまでも市立図書館とかでコンピュータ系の本は端から読んでいたし,小学生の時にBASICでLINEとかCIRCLE命令で画面に絵が出るの面白いな,くらいは触ったことあったから,その時にかな.
中学生のときに書いたプログラムを見つけた
HDD漁っていたら,本格的に(?)プログラム書き始めた初期(中学2年のとき?)に書いたプログラムが出てきたので晒してみる.
https://gist.github.com/binzume/9175060
BMPとかPICとかB1とかの画像ファイルを相互変換するプログラム.N88-BASIC.
10 WIDTH 80,25:CONSOLE 0,25,0,1:COLOR 7,0,,,2:SCREEN 3,0,0,1:CLS 3
20 DIM R(15),G(15),B(15),C(255):ON HELP GOSUB *HLP.:HELP ON
30 RESTORE *CDATA.:FOR I=0 TO 15:READ R(I),G(I),B(I):NEXT:GOSUB *COL.
40 *MAIN'------------------------- MAIN -----------------------------
50 MS$(0)="PROGRAMED K.KAWAHIRA"
60 MS$(1)="画像データをロード"
70 MS$(2)="画像データをセーブ"
80 MS$(3)="画面のクリア"
90 MS$(4)="RDS"
100 MS$(5)="終了"
110 MS=5:GOSUB *MENU:IF M=5 THEN PRINT"終了しました。":SCREEN ,0:END
120 ON M GOSUB *LO.,*SA.,*CLS.,*RDS:GOTO *MAIN
130 *LO.'------------------------- LOAD -----------------------------
140 MS$(0)="入力 ファイル":GOSUB *TYP.
150 GOSUB *FINP.:PRINT FI$;"の画像データをロードします。"
160 ON M GOSUB *BMLO.,*BELO.,*STLO.,*PCLO.,*COLO.:GOSUB *COL.
170 CLS:IF INP(225)<>127 THEN 170 ELSE RETURN
180 *SA.'------------------------- SAVE -----------------------------
190 CLS:MS$(0)="出力 ファイル":GOSUB *TYP.
200 GOSUB *FINP.:PRINT FI$;"に画像データをセーブします。"
210 ON M GOSUB *BMSA.,*BESA.,*STSA.,*PCSA.,*COSA.:RETURN
以下略
最終更新日時は,1997-09-27のようなのだけど,たぶんWindows使いはじめる直前.16年以上経って改めて見てみると,酷いコード...
ただ,当時の環境だとスクロールとか面倒だし,なるべく1行に詰め込んだほうが読みやすいと感じてた.一応サブルーチンは存在しているようにも見えるけど,構造化を意識していたわけではなくて,なるべくコーディング量を減らすために共通の処理を使いまわすくらいのことしか考えてなかったはず.
このときはWindows持ってなくて,ゲーム用の画像を作るために方眼紙を塗りつぶして手で16進データに変換して,DATA文をひたすら打ち込んでいたので,どこかで触ったWindowsのペイントが画期的に見えて書きました. 16色に減色した写真とかを98で見れるだけで面白かった.
この時期に書いたコードで手元にデジタルで残っているのはこれだけっぽい...
FILES "*.BAS
とあるディレクトリのFILESの結果が写った写真があったので,同時期に何を書いてたのかも思い出した.写真自体は2005年に久しぶりにPC-9801fxを起動してみたときに撮ったもの.このときデータも転送しておけば良かった...

適当に書いた雑多なBASICプログラムを入れていた場所っぽい. その場限りのプログラムのつもりだったのでファイル名酷い... 途中,通常のBASICからMS-DOS版のBASICにコンバートしてるのでファイルの更新日時は作った順番とは違います.
M.BAS
Wizardry風迷路.SHARPのX1にあった3D迷路を,試しにN88-BASICで書いてみたやつ. X1ちょっと触った後にN88-BASICを触ったら塗りつぶし処理が高速で感動したので,調子に乗ってカラーにした. たぶんここにあるやつの中だと一番古い.

LIFE.BAS
BASICからマウス使ってみるのを試すついでに書いたライフゲーム.70行くらいで書いたはず.

これも写真があった. 自信ないけどグライダーガンが生成されるパターンの初期配置に見える.
MORU.BAS
テキストをモールス信号にしてBEEP鳴らしたり,マウスで入力したモールス信号からテキストに変換したりできた気がする.
BMP, BMP3, BMPLO.BAS
gistで晒したやつ.
SL.BAS, SS.BAS, SL2.BAS
StartupLogo. Windows使い始めてから書いたやつ.上記のBMP3.BASを呼び出して,Windowsのlogo.sysをアニメーション付きで再生して,PC-9801でもWindows95気分を味わうためのもの.
BASIC時代後半は,特定行番号に空のサブルーチンを用意しておいて,実行時にMERGE命令でプログラムを動的リンクするとか怪しいこと普通にやってしまってた気がする.
MML, CN
わりとファイルが大きいのだけど,なんなのか分からない. MMLを楽譜表示して編集するプログラムを書こうとしたことあるので,MMLはそれの残骸かなあ.
他
写ってないけど,別のフォルダにわりと真面目に書いたプログラムがある.覚えてる範囲でメモ.
ARIS.BAS
アリを増やして巣が成長していくのを見るシミュレーションゲーム.とてもシュール.初めてのグラフィカルなゲームで,KINGYO.BASの前に書いた.
VRAM上のグラフィック自体が巣の形状データだったので,プログラムを一旦止めて,描画命令実行して巣をいじるとかできた. ただ,FDにVRAMのデータも含めて全部保存してたので,セーブ&ロードが遅かった. かなりいい加減な内容だけど,家族以外に初めて触ってもらったゲームな気がする.
KINGYO.BAS
金魚を育てるシミュレーションゲーム.後からHSPに移植したコードは手元にあるはず.そのあとC++で書きなおして未だに[[/software/winscr 公開して放置している]]. 初めてPC雑誌とかに載ったりしたソフト. BASIC版だけの機能として,水槽の設置場所を選べた.例えば野外に置いておくと猫にやられるイベントとか発生したり冬に凍って全滅する.野外に置いてはいけない.HSP版では冷凍保存できるようになった.
POLY.BAS
自作3Dポリゴンモデラ&ビューアー.中学生の時のものなので行列計算理解できずに書いて恐ろしい実装になってる.いったん極座標系にしたデータを生成したりするのだけど,アーク・タンジェントすら知らず,二分探索とニュートン法もどきで無理やりなにかした覚えがある.微分も知らなかったのでニュートン法もまともに使えてないはず.
3面図と任意視点のビューを切り替えながら操作できるようにはなってたけど,射影変換とかできてないし,イマイチな出来だった. 隠面消去も実装しようとしたけどBASICでまともな速度になるアルゴリズムを思いつかなくて,事前にいくつかの方向に沿って面をソートしたデータを作って,それをヒントに何かするという意味不明なものを書こうとして,どうなったのか覚えてない.
名前思い出せない
ドラクエ風RPGっぽいゲーム.中学校の友人と出しあったしょうもないネタをひたすら実装したもの.
BASICのコード領域が足りなくて,DATA文から画像データやマシン語プログラムを読みつつ,次々に別のBASファイルを読んでいく.なんでBASICで書いてしまったのか理解できない.よく思い出せないけど,VRAM上のデータをBASICのDATA文に変換するプログラムとか書いて生成した気がする.
このあたりで,x86アセンブラやC言語の勉強始めたけど,結局WindowsのHSPに.
N88-BASICの前にも,X1で書いたのがあるはずだけど,そっちはあまり力作っぽいのは思い出せないなあ. 簡単なお絵かきツールと,テキストベースの双六ゲームくらいか.
2014-02-21
肉食べた.
2014-02-20
今日も面接あるので早めに会社へ.
2014-02-19
面接あるので午前中から会社へ.
2014-02-15
引きこもる日.
2014-02-09
出かける予定だったけど,雪のこってるし引きこもる日に変更.
最近,楽天銀行の残高とか取得するスクリプトが動かなくなってたので直す. 楽天カード結構使ってるのだけど,基本的に残高減ると自動的に別口座から補充する運用なので,スクリプトが止まってると引き落としが失敗する可能性があって危ない.
普通に生活している限り支出が収入を上回ることはそうそうないので,一切お金のことを気にしないで生きていたいのだけど,もう少しどうにかならないのか... あとは財布の中の現金もオートチャージされる仕組みが欲しい.
2014-02-05
眠い...
2014-02-03
少し早めに会社に.
さくらの BASE Storageβを試す
VPSでお世話になっているさくらが,Amazon S3互換のさくらの BASE Strageβを始めたらしいので少しだけ触ってみる. VPS上に色々大き目のファイルも置いてるので,よさそうなら移行を考えることにしよう.
まず,ドキュメントどこにあるのかわからない.S3互換のAPIが使えるということだけわかる.
S3は以前にちょっと使ったことがあるくらいなので,色々間違ってるかも.
まだβだからなのか,Webのコントロールパネルまともに動いてない気がする. きっとそのうち便利になるに違いない.
とりあえずrubyから触る.
試しにローカルのhello.txtをアップロード.そもそも,エンドポイントとかも良くわからないので適当.
gem install aws-sdk
require 'aws-sdk'
s3 = AWS::S3.new(
:access_key_id => 'kawahira-test',
:secret_access_key => '****コントロールパネルで取得したキー****' ,
:s3_endpoint => 'b.storage.sakura.ad.jp',
:use_ssl => false
)
bucket = s3.buckets['kawahira-test']
object = bucket.objects['helloi.txt']
object.write(Pathname.new('hello.txt'))
いきなりSSL証明書のエラーが出たので,とりあえずaws/core/client.rbを読んでuse_sslをfalseにした.
これでOKなはずで,実際object.readもできるのだけど,コントロールパネル上にファイルが現れない.
あと,ネームスペースをパブリックにしてpublic_urlを取得しても,ブラウザでアクセスできないように見える.なんでだろう.
2014-02-02
明日は昼から面接(面接官の方)なので髪切ろうと思ってたのだけど忘れてた.
昨日書いたPMXのパーサをモーフと物理演算に対応したり. モーフはわりと面倒だったけど,物理演算の方はPMDとほとんど同じ. 剛体の座標がボーンからの相対座標から絶対座標になっていたのに気付かず少し嵌ったくらい. 特定のモデルで試して,とりあえず動いた状態なので多分まだ使い物にはならないです. 時間と気力があればちゃんと書き直す予定.githubのリポジトリのoculusブランチには入れておいた.
2014-02-01
木曜,家に帰ってから,6時間寝る→6時間活動するというサイクルで過ごしてたせいですでに日付の感覚がない.
PMXのパーサ書いたりする日
最近はMMDのモデルもPMXになりつつあるようなので,MikuMikuDroid用にPMXのパーサ書いてみたりする. モーフと物理演算以外はとりあえず読めるようにした. 内部的にはPMD相当の情報しか処理してないので,PMXで追加された情報はとりあえず捨てている.



