About this site
Entries @ recently
December 27, 2021RubyでGPS受信機ちょっとすごいロガーのツールの一部を切り出して、RubyでGPSの測位処理ができるようにしてみました。githubにコードを公開しています。 Rubyのgemとしているので gem install gps_pvt
で入れることができます。native extensionを含むgemなのでインストール中にコンパイルが走ります。Windowsの方はビルド環境(Ruby installer for Windowsでいうところのwith Devkit版でのRuby導入)が必要になります。 gemインストール後は gps_pvt RINEX_nav RINEX_obs
とすると、測位結果がずらずらとCSVで出力されます。単独測位、スナップショットでの解なので、実用性はあまりないです。これをベースに何か発展的なことをしたいという人向けのツールです。詳しくはReadmeを見てください。 プログラム的な話をすると、native extensionを作るためのextconf.rbが凝った作りになっています。shared libraryを複数生成する必要があるので、内部でMakefileを別名で複数生成し、それらを起動するMakefileを最後に生成しています。 22:20 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/954 September 15, 2020boost::math::distributions
[Computer]
boost::math::distributions便利ですね。いろいろな確率分布があります。Rubyから使えるようにしたかったので、SWIGでラップしてみました。 Rubyからだと require "BoostDistributions.so"
BoostDistributions::Normal::new.quantile(0.5) # => 0 のように使えます。RubyGemにしたいと思っています。 23:20 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/953 May 08, 2019E-MailRelay本体更新(ver 2.0)に伴う対応
[Computer]
随分昔の話ですが、E-MailRelayというSMTP Proxyを使って、自前のメールアドレスフィルタを作ったことがありました。随分更新をさぼっていて最近最新のものに置き換えてみたついでに、昔のスクリプトを改善してみました。 発端はshebangです。Windowsのバッチファイル(.bat)に他のスクリプト言語を埋めこめるなんて素敵! ということでやってみました。 E-MailRelayで実行するスクリプトには、ちょっとした癖があって、終了コードで動作を変えています。そのため上記参考にした記事のものだけでは不十分で2行目の exit /b %ERRORLEVEL%
が肝となりました。こうすると、終了コードが正しくE-MailRelay本体に帰っていきます。 23:51 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/952 November 29, 2018RinRuby (Ruby gem for R)
[Computer]
プログラミング言語Rubyと統計に強いRをブリッジさせるRuby gemのRinRubyというものがあるのですが、ここ数か月でかなり手を入れさせてもらいました。github上でコードが公開されているのでforkをしてPull requestsをして、ということをやっていましたが、fork元に取り込まれていない機能もあったりしますので、僕のforkもご参照いただければと思います。現在のところfork側にしかない機能は以下のとおりです。
# fork版をインストールするには以下のコマンドで…
gem install specific_install # 初回だけ必要 gem specific_install https://github.com/fenrir-naru/rinruby.git dev-fenrir もともと自分が使うためにかなり手を入れたのですが、Pure Rubyで動きインストールが簡単ですので、お奨めしてもよいかなと思い、記事を書きました。Travis-CIとAppVeyorでテストしていますが、色々なRubyのバージョン(2.3以降でテストしていますが、1.9以降でも動くと思います)やjRubyでも動いています。Windowsでもテストを通しています。またローカルではRuby on cygwinとWindows Rでも実績があります。 今後ですが、コードが肥大化しているので気が向いたらリファクタリングをするつもりです。その他にも問題等あるようであれば、githubのIssuesに残していただけると嬉しいです。 23:28 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/951 August 18, 2018RSpecでのexample間共用のインスタンス生成
[Computer]
Rubyのコードをいじっていて、とうとうRSpec(テスト)を書く羽目になったのですが、そこでのメモです。 こういうときは、全テスト前に実行されるbefore(:all)(←before(:context)のエイリアス)ブロックでインスタンスを生成すれば事なきを得そうですが、さらに事情が複雑で、インスタンスの生成方法を共通化したいというのがありました。常套手段としてはRSpecの外でFactory patternでも作ってそれを中で使えばよいのでしょう。だがしかし、未定義変数アクセス時に遅延評価によって変数内容を生成するRSpecの機能のlet(あるいはそのエイリアスのsubject==let(:subject))を利用してみることにしました。 そういうことで、いろいろ試してみました(別タブで見たほうが良いかも)。 spec/target_spec.rb にケースが6つ書いてあります(左側のアイコンを操作するとファイルを切り替えられます)。それぞれこんな感じです。
上の実行ボタンを押してみてください。特に[4]が意外で、インスタンス変数に代入しようとすると before(:all)で作ったものと、それぞれのテストケースの前で実行されるbeforeとで、違うものを見てしまっているようです。[5]もbefore(:all)とはスコープがことなるようで、一時変数にアクセスした際に怒られています。 [6]を使うと回避できました。インスタンス変数そのものではなく、中身についての変更でごまかしてあります。ということで[6]で目的を達成しました。おそらくバッドマウハウでしょうが…。 11:58 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/950 August 10, 2018夏休みの工作: ソースコード公開先日のタッチでLEDが光る工作ですが、大したことしていませんがgithubにソース等置いておきました。 水面下ではこそこそ工夫をしています。例えば、スリープにこまめに入れて、電池の延命をはかってあります。また実運用に移る前にDEBUGを定義してコンパイルすると、UART経由で静電容量のデジタル値を読めるようにしてあります。閾値を決めるのに役に立ちます。 そしてソース公開にあたって一番気合を入れたのが、上記(実体)回路図だったりします(笑)。 23:44 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/949 August 06, 2018夏休みの工作: タッチセンサ全然更新をしていませんが、生存しています。最近、夏休みの工作で、触れると反応するスイッチを試していました。使っているマイコンは(毎度お馴染みの)Silicon Laboratories C8051F996です。 こんなバラック配線で実験をしていました。 そして、これを、こうじゃ、ということでミニカーに組み込んでみました。なかなか好評です。CR2032電池で動いています。 詳細は次回に書こうと思います。→書きました。 23:58 fenrir が投稿 : 固定リンク
|
![]() ![]() このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/948 |
最近のはてブられ
スポンサード リンク
かてごり~別
Aero & Astro (98)
Computer (183) Embedded System (306) Info (14) Mountain (43) Movable Type (28) Movie & Animation (20) Music (9) Photo (47) Site Management (46) Timely (135) Tips (68) ついったー
ぶろぐぴーぷる
|