せらぴんブログ

サークル「せらぴん」のうのはな透です。やっぱり眼鏡っ娘が好き!!

【Arduino】比較演算が極稀に失敗する不具合に遭遇した話

これはここ数年Arduinoでの開発をやっていて、一番不条理だと感じた不具合の話です。
単純な比較演算処理に失敗する――そんなことが起こり得るのか?
順を追って説明していきます。

ちなみに本件ではSparkfun社製Pro Micro(5V/16MHz、チップはAtmega32U4)を利用しています。
ATMega328系のArduinoで同種の不具合が発生するかは未検証です。

続きを読む

【Arduino】「I2Cを使ってるとdelay()が効かなくなったぞ?」となったら、それは二重割込みのせい

最近の業務は、Arduinoなどのマイコンファームウェア開発がメインになってます。
マイコンでは色々と低レベル*1なところに気を配らないといけないので大変です。
今回はそんな体験談を一つ。

*1:「機械部分に近い」の意

続きを読む

素人が3日でMMDモデル改造してみた

unohanat.hatenablog.com

さて、マイMMDモデルを作成することに成功したうのはな。
次にやるのは――


そう!
衣装の挿げ替えだ!!

というわけでブルナポ春菜モデルを作っていきます。

続きを読む

素人が一週間でMMDモデル作ってみた③

unohanat.hatenablog.com

前回は、血の滲むような思いをしながらモーフをつけたv.0.2.0モデルを作成しました。
v.0.2.0の段階でMMDモデルとして最低限の体裁は整ったので、
いよいよ公開用のv.1.0.0モデルの作成に着手していきます。

続きを読む

素人が一週間でMMDモデル作ってみた②

unohanat.hatenablog.com

さて、前回モデルv.0.1.0を作成して、とりあえず踊らせるところまでは来ました。
では次は前回放り投げた目線・表情・物理演算を改善したv.0.2.0モデルを作成していきます。

続きを読む

素人が一週間でMMDモデル作ってみた①

Blender楽しいですね(挨拶)

www.nicovideo.jp

というわけで、こちらのMMDモデルを制作した際の話をします。
今回はモデルv.0.1.0(非公開)作成完了まで。

続きを読む

Sinatraで肥大化したファイルを分割する

Sinatraを使ったPJ*1で、あまりにも一つのファイルに色々突っ込みすぎていたので、ファイル分割をメインとしたリファクタリングを実施した。
その際の備忘録。

ディレクトリ構成は長くなるので割愛。

やったこと

バッチファイル

  • cronで実行するバッチファイルがappディレクトリ直下に置かれまくっていたので、app/batchディレクトリを作ってそこに全部つっこむ
  • バッチファイル用の独立したライブラリファイルがあったので、新設するapp/src/modelsディレクトリに統合
  • バッチファイル内に独立したクラスが書かれていた💢ので、それもapp/src/modelsディレクトリに移行(バッチファイルは処理のみを書く)

モデルファイル

  • appディレクトリ内に2~3のモデルファイルが散逸していたため、app/src/modelsディレクトリを作ってそこに全部つっこむ
  • モデルファイルが肥大化(一番ひどいもので80KB!)していたため、1ファイル1クラス形式になるようファイル分割
  • 複数のサブクラスを抱えている肥大クラスがあったので、サブクラスをすべてファイル分割
  • それでも肥大だったため、さらに一部機能をモジュール化して別ファイルに退避

ヘルパー

  • app/src/helperディレクトリに移動
  • helper do~endを用いていたので、ヘルパークラス化

コントローラ

  • コントローラファイルが肥大化(合わせて45KB!)していたため、サブコントローラとしてファイル分割し、app/src/controllerディレクトリに移動

*1:まぁ要するに同人秘書なんだけど

続きを読む