カテゴリー「プログラミング」の87件の記事

2017.03.27

JavaScriptでマイクロ秒単位の定期処理を実行するnpmをリリースした

ここ数週間の懸案であった「JavaScriptで複数のインターバルタイマーでひとつの処理を動かすと、(擬似的に)1ミリ秒未満の間隔で定期処理を実行できる」というモジュールをリリース。

思った以上の爆速具合に驚いて土曜の深夜に小躍りしたが、よくよく考えてみればJavaScript的に当然の動きなので、要するに需要がないということでは?というやり場のない不安に打ち勝ったのよ。

勢いで、v1.0.0にしたけど、このモジュール単体のブラウザでの動作確認ができてないね。 あとユニットテストも書いてない。またそのうち。

その他、別リポジトリのREADMEの恥ずかしいtypoを修正。穴があったら埋めておかなきゃ・・・


  • 運動: ロード6キロ。西風強かった。筋トレ&ストレッチも粛々と。慣れてきたので腹筋を1セット増やした。このフェーズで時間がかかるようになって、まるごと辞めちゃうことになる。気をつけなくては。
  • 今日の出来事: スキー場で雪崩発生。登山訓練中の高校生・教員死亡/韓国元大統領に逮捕状。/長男の家賃無事振込。

2017.03.16

MZTをデータレコーダーから読込可能になりました! - MZ-700フルJavaScriptエミュレータ

もはやライフワーク的になってきた MZ-700フルJavaScriptエミュレータで、やっとモニターのロードコマンドでMZTファイルを読み込めるようになりました。

20170317_075317

従来より、MZTファイルを画面にドロップすれば、メモリに直接(JavaScript側から)書き込んで、即座に実行できていましたが、今回データレコーダーの読み込み処理を真面目にエミュレートして実現ということですね。

ドロップされたMZTファイルのデータを、一旦カセットテープ上に記録される仮想的な磁気信号に変換して、データレコーダーのエミュがそれを読み取るっていう、世紀の二度手間w

さらに、本来は所定のメモリを書き換えて磁気信号の出力時間、読み取り時間を制御できるはずですが、そこまでキチンとやっていないので、めっちゃ遅いですw

なので、まったく実用的でない(笑)!

保存側は少し前にできてましたが、読み込み側は必要に迫られていなかったこともあり、ダラダラやってました。CLI版がなんとか形になったので、真面目にNEWMON7の逆アセンブルソースを解析して、ユニットテストを書いたら、あっさり間違いに気がつきました。ユニットテストはやっぱり大切。趣味だからっていい加減にしていると時間を無駄にしてますね。

npmの黒画面版でもちゃんと動作してますな。

20170305_220836


  • 運動: ロード6キロ。よる自転車はトライアスロン氏の後ろについてノンストップ。久しぶりに喉をやられた。
  • 今月の我慢: ヤフオクでMZ-700とMZ-1500の実機が出ていて、ふわっとポチッと行きそうになったが我慢した。

2017.03.05

黒画面で動くMZ-700

JavaScriptによるMZ-700エミュレータに、コマンドラインで動作するNode.Js CLI版を追加実装。エミュレーションのデバッグ用として必要に迫られて作ったんだが、冷静になると、なかなかイカれたものになっていたので、、、(笑)

npm mz700-js を グローバルにインストール(npm install -g mz700-js)すると、mz700-cliコマンドが利用できるようになりまする。

MZTをコマンドラインで指定したら読み込めます。各種コマンドを使って画面表示したり、キー入力したり、レジスタを確認したり、ブレイクポイント張ってみたり詳細はnpmのREADMEを。

最低限の機能しかないので実用的とは言い難いけど、それはそれでまたおいおい。

一応ワンダーハウスが動いていたので、作った本人が驚いてるw

20170305_214303


実装にあたって、モジュール化とか大事ねと実感。 素早くリリースしたいがために慌ててその辺を適当にやってると、後々困ることになる。反省を込めて。

土日二日間、これに費やしたが、まあ、満足だ。


  • 運動: 6キロラン。7分半から5分までのビルドアップ大成功。曇りがちだったけど、花粉対策にアイウェア必要かな。

2017.02.19

ジェットでターボなブースター

金曜日、コストコ行った奥さんが、でかいチーズケーキを御購入。 ちびっこ家族は消費するのに四苦八苦。 子どもたちが喜んで食べるだろうとのあてが完全に外れ、この二日間はチーズケーキをおかずにチーズケーキを食べるといった食の崩壊。

さすがにヤバイとランに出た。 2月以降、自然に1キロ6分ペースで走れるようになってきたが、3キロぐらいでどうしようもなく辛くなり、ペースを落とす。すこし休憩したあと楽になったので最後の1キロは5分ペースでつじつま合わせた。

右足の血流が悪い気がする。事故とか怪我とか全部右足ばかりなのだが、関係あるのかな。

神社で水仙が咲き乱れていた。

残りの時間はMZ-700のエミュレータをいじくり回す。

昨夜、ひょんなことから、エミュレーションが倍ぐらいの速度で動作している現象を確認した。 定周期タイマー処理が二重に動くと2倍2倍。てことで、インターバルタイマーを複数使えば速度の向上できるんじゃね?とやってみたら大成功。

ただし、Chromeだけでした。Edgeは速度に変化があまりなく、Firefoxは画面が乱れて妙な動き。

ChromeのWebWorkerのコンテキストで、複数のインターバルタイマーを動かすと爆速になる。オーバーヘッドが限りなくゼロに近いような感じ。エミュレーションの速度が体感10倍以上にブーストされてる。

ワーカーのコンテキスト内ではシングルスレッドのはずだけど、ちょっと普通じゃない速さだった。


  • 運動:平均ペース1キロ6分の6キロラン。デスクで筋トレ、ストレッチ。

2017.02.13

「タイニーゼビウスfor MZ-700」を自作エミュで動かす試み開始した

「Tiny XEVIOUS for 700」を、自作のMZ-700エミュレータで動かそうとしてみたが、Z80の未定義命令が使われていて動かなかった。16ビットのインデックスレジスタIXを、上位と下位のIXH、IXLレジスタとして扱う命令のようだった。

その他、OUT命令直後に停止している不具合発見。このバグは数ヶ月放置していたみたい。リファクタリングのあとの確認漏れ。

不具合治して、未定義命令を追加実装したけれど、完全には動作してません。

ということで、その要因として考えられることを列挙せよ↓

  • バイナリは古旗さんのサイトからダウンロードし、アドレス解析後、勝手にMZTヘッダをくっつけた(自作エミュはMZTしか読み込めない)ので、どこかで間違いが発生している可能性あり。
  • もしかしたら、オリジナルのモニタープログラム 1Z-009A でないと動かないのかもしれない。
  • バンク切り替えが、今まで動かしたプログラムで使われていないことが判明したので、その辺がちょっと怪しい気がする。
  • 今回対応した未定義命令の正確なフラグの動きが、実は不明。
  • IレジスタやRレジスタ、割り込み関係のエミュレーションが甘いので、そのへんもヤバイかな。

うーん、確認すべきこと、いっぱいあるねえ・・・しばらくこのテーマで楽しめそうだな。

作者の古旗さん、作成当時はマイコン歴3年目の高校3年生ということですが、既にZ80の未定義命令を使っていたんだ!という事実に凄みを感じた。自分はその時高校2年?未定義命令なんて存在すら知らなかったからなあ。


  • 運動:ロードで6キロ。筋トレ&ストレッチは、昨日のランの筋肉痛がちょっとあるため自粛した。

2017.02.11

SVGを複数解像度のPNGに変換、全部入りのICONファイルを作成するお手軽ツール(WEBアプリ)を作りました

SVGからマルチアイコンを作成するのが見つからなかったので怒りに任せて作りました。

元の画像を、サーバーに送信しているっぽいのも、少し気持ちが悪いので、ブラウザだけで動作するようにしています。

機能増強や見た目の調整は、おいおい。


  • 運動:なし。

2017.02.07

SVGをCANVASに描くCANVG

終日右耳が聞こえにくかった。めまいのリスクは感じないが、歩行時に角を曲がるとグラリ。周囲の世界の輪郭が、ぼんやりしているような、そんな感じ。午後、少しましになったが、定時を過ぎて再びおかしく。「暗くなるとヤバイかも?」と思ってしまったのが原因か。結局、残業なしで帰宅。

SVGをCANVASに描くcanvgを試す。描けるけれど、XHRで同期してSVGを読み込んでいるようなので、メインスレッドを結構ブロックしているようだ。Chromeでは「同期的にXHRを使うのは、ユーザーエクスペリエンスに悪い影響がある」と警告。なんとかしてみようとフォークしたけど、体調悪いのでまた今度。


  • 運動:ロードで6.5キロ。

2015.02.09

「うまく動かん」がそのうち何とかなるだろう

メッチャ寒くて、昼間に雪降ってたな。

仕事終わって職場を出てすぐ、平衡感覚がかなりおかしくなっていて、元町5丁目商店街をフラフラ歩く。 まっすぐ歩くのが難しい状態で「うーん倒れたほうが楽かな?」くらいに思ったけど、世間様をお騒がせしては申し訳ないので、頑張って歩いた。駅に着くころにはどうにかこうにか。

帰り間際、利用させてもらっているオープンなライブラリに、スカみたいなバグ(それ基本やん?みたいな)があって、アタマをひねったのがアカンかったかな。オープンソースなんで、全部がきっちりしてるとは思わんけれど、用意されてるユニットテストのほとんどが通らないとか、そんなもんかい>オープンソース

とりあえず邪魔くさいので業務方面ではライブラリには触らず、別の場所で対策を施したけど、そのうち気楽に治してあげようかなと。ま、英語がネックなのだが(笑)

最寄の駅に着いた時点でも空が多少明るい。

夕焼け小焼けがブレブレだ。

2月の夕方ってこんな感じやったかな。はよあったかくなってほしいな。


今日の運動:池上さんの番組見ながら、爪先立ちをワンセット。どんどん筋力が落ちているのがちょっと怖いぞ。

マジメな話、このフラフラ。寒さなのか、低気圧なのか、それとも昨日からちょっと食事量を減らしてみたせいか。どれも可能性があるようなんだが、、、ヤッパリわからん>メニエール

2014.06.25

[VC++] 四捨五入

LinuxからVisual Studio 2010 の VC++へ持ってきたソースで「round() 関数がない」とかで、コンパイルエラー。ヘッダファイルを探してみても確かに無い。

正直、そんな標準関数あったっけ?と思ったけど、Linuxでは問題なく通っているようだ。

調べると、round()C99で追加されたが、Visual Studio 2010の VC++がC99に完全準拠していない (と、Stack Overflowに書いてあった)

なので、同サイトで紹介されていた以下の関数を定義して解決。

//四捨五入
double round(double r) {
    return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}

余談ですが、マイナス値の四捨五入って、実生活であまり使うことがないからか、結果がハッキリわかりませんね。

追記:VS2013以降では対応していると書いてあります

2014.06.23

[CSS3] 背景画像のサイズ指定

CSS3で、で背景画像のサイズ指定が出来るとはじめて知った。⇒ background-size

背景画像のサイズ指定はbackground-sizeauto, containcover、または横と縦の長さを指定。縦は省略可能。省略時の既定値はauto

縦横指定値は、ピクセル値(px)、文字に対する比率(em)、コンテナに対するパーセンテージ('%')のほか、auto

containcoverは、画像のアスペクト比を保持したまま、コンテナ内にうまく収まるように調節されるのだが、画像とコンテナのアスペクト比が違う場合、containは、画像がコンテナ外にはみ出す可能性があり、coverは逆に繰り返される可能性がある。

背景画像に対してコンテナが横長

auto
100% auto
auto 100%
cover
contain

背景画像に対してコンテナが縦長

auto
100% auto
auto 100%
cover
contain


都議会の「セクハラやじ」の報道ですけど、どうしても「セクハラおやじ」と読んでしまいますねー。

より以前の記事一覧

2017年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
フォト

Google AdSense

銀の弾丸

無料ブログはココログ