railsでbeforeunloadイベントが発生しないとき

■ 状況
railsでbeforeunloadイベントを使用して、ページ遷移時に警告を出そうとしたところ、aのリンクで意図した動作がしない。

■ 原因
railsでturbolinkを使っている場合、ページをリロードせずに画面を書き換えるため、beforeunloadイベントが発生しない。

■ 対策
対策としては以下のあたり。

  • turbolinkを使用しない
  • aのリンクにdata-turbolinks="false"を指定して、turbolinkを部分的に使用しないようにする
  • page:before-change のイベントを使用する
Posted at : 2018-02-22 22:27:31 / Category : rails

マイコンの割り込みをLinux上で再現する

マイコンの割り込みをLinux上でシグナルとスレッドを使って再現してみた。

大まかな処理は、マルチスレッドで制御のスレッドとマイコンの処理相当を行うスレッドの2つを作成、
制御側からマイコンの処理相当のスレッドをシグナルで一時停止させ、その間に割り込みハンドラを実行する。
フルのソースコードは以下を参照。

https://github.com/yasuharu/micon_int_on_linux/

まずマイコン側の処理。UARTの受信を意図したもの。
uart_rx_handlerが割り込みハンドラ、micon_mainがマイコン側のメイン処理。

 1void uart_rx_handler()
 2{
 3  static int     pos   = 0;
 4  static uint8_t buf[] = "test";
 5
 6  ringbuf_push(buf[pos]);
 7
 8  pos++;
 9}
10
11void micon_main()
12{
13  register_irq_handler(uart_rx_handler);
14
15  while(1)
16  {
17    if(ringbuf_length() > 0)
18    {
19      printf("%d\n", ringbuf_pop());
20    }
21  }
22}

メイン側の処理は、マイコン用のスレッドを作成し、一定期間ごとに割り込みを生成する。
割り込みの生成タイミングは、お好きなタイミングでどうぞ。

 1pthread_t thread_handle;
 2
 3int main()
 4{
 5  pthread_create(&thread_handle, NULL, micon_thread, NULL);
 6
 7  for(int i = 0 ; i < 5 ; i++)
 8  {
 9    sleep(1);
10
11    suspend_micon_thread();
12    do_irq_handler();
13    resume_micon_thread();
14  }
15}

シグナルはSIGUSR1とSIGUSR2を使用する。
SIGUSR1はマイコン側の処理をsuspend、SIGUSR2はマイコン側の処理をresumeするために使用する。
micon_thread内で以下の通り初期化する。

 1void micon_thread()
 2{
 3  struct sigaction sigusr1, sigusr2;
 4
 5  sigusr1.sa_flags   = 0;
 6  sigusr1.sa_handler = micon_thread_signal_usr1_handler;
 7  sigemptyset(&sigusr1.sa_mask);
 8  sigaction(SIGUSR1, &sigusr1, NULL);
 9
10  sigusr2.sa_flags   = 0;
11  sigusr2.sa_handler = micon_thread_signal_usr2_handler;
12  sigemptyset(&sigusr2.sa_mask);
13  sigaction(SIGUSR2, &sigusr2, NULL);
14
15  micon_main();
16}

今回のポイントは、以下のコードの部分。
suspend/resumeでマイコン側のスレッドを一時停止させる。
SIGUSRT1のハンドラ(micon_thread_signal_usr1_handler)内では、
sigsuspendを呼んで、SIGUSR2が発生するまで待つ。

割り込みハンドラはメインのスレッド、シグナルのハンドラはマイコンのスレッドと、
それぞれで実行しているコンテキストが違うことに注意が必要。
特にシグナルのハンドラのsigsuspendを実行する前に、割り込みハンドラが実行されないよう、
int_statusで処理待ちを行うようにしている。
(ちなみに、int_statusは本来であればmutexでロックが必要)

割り込みが発生したときの処理をまとめると以下の図になる。

処理

do_irq_handlerはこんな感じ。
int_statusを待つことだけ注意。

1void      (*irq_handler)(void);
2
3void do_irq_handler()
4{
5  while(int_status != 1);
6
7  irq_handler();
8}
Posted at : 2018-01-28 15:46:12 / Category : avr

ディープラーニングはじめてみた

とあるデータの予測をしたいため、ディープラーニングをはじめてみた。

経緯としては、今まではルールベースでの予測だったものの、あまり精度が伸びず。
ディープラーニングでうまくいかないか試行錯誤してみることにしてみました。

まずは手元のMacBookProにTensorflow + Kerasの環境を構築。
UbuntuのVM上で構築したので、pipでさくっと入って良い感じです。
Jupyter notebookを使いたかったけど、こちらはPython 2.7上に入れようとしたのが問題なのか、
依存関係が不適切になってしまい断念。まぁなくてもどうにかなるでしょう。

まずは試しにMNISTのデータセットのexampleを動かしてみる。

https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py

K520 GPUだと2秒かかる学習をi7-6700HQだと10秒ほど。約5倍…。
実際にモデルを組んでみて、どうにもならなければディープラーニング用のマシンを用意したほうが良いかも。

ひとまず動くところまでは確認できたので、モデルの作り方を検討しながら、Kerasの使い方を調べてみよう。

Posted at : 2018-01-14 20:39:34 / Category : none

あけましておめでとうございます

■ 2017年について

今年は家庭状況が大きく変わりました。
大変なことも多いけど、楽しいことも多く、元気にやってます。

このブログの主としている技術的なことに関していえば、
必要な時間を割くことができずアウトプットがほとんど出せませんでした。
本当に自分が楽しいと思えることをじっくりとやっていくことが大切、と
思えるようになってきたので、着実にやっていくことを心がけていこうと思います。

さて、2017年の目標に対しての到達状況を見てみましょう。

  • 世の中に貢献できる成果を2,3は出していきたい
    • アイディアはいくつか出せた。
    • ただ、アイディアを実現するための作業ができていない。時間的なものもあるけど、あれこれ考えていてうまくいっていない部分が多い。
    • 徐々にだけど考えていくうちに見えてきた部分もあるので、実現させる方向にシフトにしていきたい。
  • 英語をきっちりと喋れるようにしたい
    • 自分としては段々と成長していることが感じられている。
    • 単一の言い回しが多かったり、表現の幅が狭いのでもっと増やしていきたい。
  • 他分野の知識を習得したい
    • 経済、料理は本で学んだり実践したりできた。
    • 特に料理は面白い。外食とかすると「こんな味付けがあるんだ」とか食材の活かし方とか、あれこれ考えながら楽しめる点が良い。

トータルで見れば意外と進んでるのかなと。良かった良かった。

■ 2018年について

大きな方向としては、楽しく面白い一年にしていきたいです。
家庭と仕事とやりたいことと大変なことも多いけど、がんばっていきます。

そんな2018年の目標は以下の通りです。

  • 世の中に貢献できるアイディア
    • 昨年のアイディアから、特に実現することに重点を置いてやっていきたい。
    • アイディアから収益を得られることを目標としていきます。
  • 世界を相手に活躍できる足がかりを作っていきたい
    • 昨年の英語をうまく活かして、海外の人と交流したりつながりを持てるようにしていきたい。その上で世界を相手に活躍できるようにしたい。
    • 1年では難しいと思うのでまずは足がかりから検討していきます。
  • 研究の活動をしていきたい
    • 大学を離れてからはあまり仕事ばかりだったけど、形はどうであれ、研究につながるような活動をしていきたい。
    • 特に今朝の夢がそんな感じだったので、実現すると良いと思う。

あと、日記も全然書いていなかったので書いていこうと思います。

Posted at : 2018-01-01 11:11:07 / Category : none

2017年9月18日

  • 2.4GHz帯のwifiがおかしい
    • 以前から調子悪いなと思ってて、5GHz帯を使うことで回避してる
    • この混信の多さ、根本的にどうにかならないのかなぁ。。。
  • 古いノートPCで5GHz帯にしか対応していないものがあり、余っていた子機で対応を検討
    • が、接続先のSSIDにスペース、パスワードに記号が入っていると登録できないって言われる…。そのSSID、Time Capsuleの初期値なんですけど
    • Web上の設定画面はJSでvalidationしてるから、適当にJS書き換えてみたけど、ファーム側でもvalidatiionしてるみたい。無理やり設定は無理だった
    • 結局、Time Capsule側でゲストネットワーク作って、それを上記要件満たすように変更
Posted at : 2017-09-19 06:05:50 / Category : none

ETF-JDRの分配金の課税

以下の2つのETFで分配金に対する課税が異なることに気付いた。

  • 1362 iシェアーズ 新興国債券ETF-JDR
  • 1583 iシェアーズ フロンティア株ETF-JDR(MSCIフロンティア100)

同じiシェアーズの外国株式だから、30% * 20.315% と思ってた。
これは誤り。以下のようになる。

そもそも、上記の税率は <現地国での課税> + <国内での課税> から求められる。
30%の部分はあくまでも米国で課税をされた場合。
また、iシェアーズのETFでもファンドの籍が異なるケースがある。

米国以外の場合、<現地国での課税>がなくなり<国内での課税>のみになるケースがある。
「1362 iシェアーズ 新興国債券ETF-JDR」の場合は、上記のケースにあたり、<国内での課税>のみになる。

※「<現地国での課税>がなくなる」の理由は、二国間租税条約に基づいて、居住国でのみ課税されることと推測しています。

ちなみに、NISAの場合は、<国内での課税>も非課税になるので、結果として0%になる。

以下の資料を参考にしつつ、内容に注意をして記載をしています。
本当に困っている場合は、この記事をあてにせず専門家に相談しましょう。

Posted at : 2017-09-17 09:48:28 / Category : money

2017年9月16日

料理の四面体を読了。
料理を火、水、空気、油の4要素で考えるとこうなるんだね。
各国の料理の共通性はわかりやすい。

https://www.amazon.co.jp/dp/B073DYQNC9/

午前は立川へ。
最近、日光の眩しさが気になってきて、サングラスを探しに行った。
普段も使えて、スポーツ(自転車)でも使えるのが欲しくて、いろいろと見て回る。
一つの候補はアディダスのかなぁ。その場では購入せず。
帰ってきて、オークリーのFlak Jacketというのも気になる。問題は値段。。。

Posted at : 2017-09-17 09:04:57 / Category : none

2017年9月11日

他の人が自分の日記を見てどう評価するか?ってことばかり考え始めると、
変に肩肘張ってしまって何も書けなくなってしまっていた。

ゆるっと、あったことをそのまま書いていくのが良いのかなぁ、と
とある人の日記を見ながら思ったりして、あれこれと書いてみようかなと。

先週一週間、休みを取って実家に帰って過ごしていた。
休日の濃密感に比べると、平日があっさりと過ぎてしまうことが多く、何かもの足りない…。
気づくともうこの時間なので、さっさと寝なければ。。。

Posted at : 2017-09-11 22:38:36 / Category : none

有料ゴミ袋の色

今住んでいる市の有料ゴミ袋の色(袋自体の色のこと)が以下のようになってるんです。

  • 燃えるゴミ : 緑
  • 燃やせないゴミ : オレンジ

これ、色が逆なんじゃないかなぁと思うんですよね…。
黄色 = 燃えるを想起してしまうような気がするんだけど、そんなことないのかなぁ。。。

Posted at : 2017-01-11 22:02:21 / Category : none

elecom WRC-1167GHBK-Sを使ったVPN接続がうまくいかない

WRC-1167GHBK-Sを使って、L2TP over IPsecをすると接続に失敗する。
パケットをキャプチャしてみると、最初の通信の段階でリクエストに対する、応答が返ってきておらず、タイムアウトしているようにみえる。
試しに、L2TP over IPsecに使用している500番ポートをポートフォワーディングすることで、VPN接続できることが確認できた。

同一の環境でルータの違いだけで問題の有無が変わっているので、
L2TP over IPsecのフォワーディングがうまくできていないんじゃないかなぁ…。
elecomに直接問い合わせをしてみようとは思ったけど、
簡単なサポートを目的とした電話サポート窓口しかないみたいなので、諦めることにした。

Posted at : 2017-01-09 21:06:37 / Category : none

おみくじ

初詣でおみくじを引いた結果、今年は吉でした。
自分の芯を持つように、とのことで、何か仕事上で心当たりのありそうな…
苦労はあるけども頑張りましょう、ってところかなー

Posted at : 2017-01-05 22:35:47 / Category : none

あけましておめでとうございます。

あけましておめでとうございます。
昨年一年の振り返りとともに、今年の抱負を考えてみました。

昨年について

トータルとしては、仕事とプライベートと良い一年であったと思います。
特に仕事の方は、いろいろな問題があったものの、問題を解決しながら少しづつでも前に進められています。

ただ、その一方で悩みは多い一年でした。
一つは、明確な目標がない課題に対して、モチベーションをどう保っていけばよいか、わからなくなってしまいました。
ここで言う「課題」は新規のアイディアや個人のプロダクトのことです。
結果としてだらだらと無為に時間を過ごすこととなり、思うように成果が残すことができませんでした。

まだはっきりとした答えにはたどり着けていないけども、一つには明確な道筋を立ててみること。
もう一つは、ダメかもしれないと手を止めるのではなく、ある程度は思い切りをもって(やる気がなくても)やってみること。
今のところはトピックレベルですが、はっきりとした答えが出たら、考えをまとめてみたいです。

もう一つは、自分の意見の伝え方や理解力に対して、未熟さが見えてきました。
例えば、人が2,3歩先を考えていることに対して、自分自身が1歩先までしか考えらていない点です。
また、理解はできていたとしても、それをうまく整理して相手に伝えられるかどうか、という点もあります。
いろいろな人と話しているとヒシヒシと感じることが多く、昨年は悩まされました。

ただ、今までは他の人と考えていることが違うことにすら、気づけてすらいなかった点なので、
そこを起点として考えると良くはなっていると思います。
今後も試行錯誤しながら、もっと伸ばしていけるかどうかが重要な点ですね。

今年について

以上のような昨年の状況も踏まえて、今年は以下のことを抱負にします。

  • 世の中に貢献できる成果を2,3は出していきたい ** アイディアだけではなく、それを実現するプロセスも含めて検討・実施していきます
  • 英語をきっちりと喋れるようにしたい ** まだ長々と会話するのには難しいので、もっと英語力を強化していきます
  • 他分野の知識を習得したい ** 主に経済、哲学などが気になっており、書籍などをもとに知識を習得していきます

またこの日記について、ここ数年は更新頻度が落ちていましたが、今年は書く頻度をあげて行きたいです。
これは、モチベーションを保っていく意味でも重要なことだと思っています。
一つでも多く実現できるように頑張っていきます。

今年も一年よろしくお願いいたします。

Posted at : 2017-01-01 23:17:55 / Category : life

雪の関東は倒竹ばかりです

24日の電車の運行状況はこんな感じでした。
倒竹ってそんなに起きるものなの。。。?

image

Posted at : 2016-11-26 12:16:19 / Category : none

USB 3.1 to HDMI 変換コネクタをどう実現するか?

MacBookPro Late 2016を買ったので、USB 3.1 to HDMI変換コネクタを買おうと思い
Amazonを見てたところ、不安定という記載を見かける。。。
そもそもの話、USB 3.1からHDMIってどう実現すれば良いのか?

USB 3.1の規格を調べてみると、Alternate Modeとしてサポートされるものとして以下のものがある。

  • DisplayPort
  • Thunderbolt 3
  • MHL
  • HDMI

HDMIがサポートされるからバンザイ、って思うのは気が早くて、
どうもサポートしている機器が少ないように見える。
(規格の策定が遅れて、サポートしてくれるベンダーが少なかったのかなぁ。。。)
また、MacBookProの仕様を見ると、DPは記載があるもののHDMIは記載がない。

となると、DPからHDMIに変換していると思うんだけど、これもまた話がややこしい。
DP++であれば直接HDMIの信号を出すことができるけれども、
USB 3.1のAlternate Modeを使った場合、DP++が使えない。
そうなると、いわゆるDPのActive Cableを使ってHDMIに変換する方法と同等のことをする必要がある。

以上から想像としては、以下のような接続になっているのかな?

USB 3.1 <- using Alternate mode -> DP <- DP-HDMI transmitter -> HDMI

元の話に戻ると、不安定な状況が起きているのは、DP-HDMI transmitterが問題なのかな…。
あるいは、MacBookProが出しているDPの帯域がおかしいか?
後者だったらファームウェアで直すことはできると思うけど、対応するかどうかだろうなぁ。

Posted at : 2016-11-23 18:09:45 / Category : none

Robotic Art in Ginzaへ

先週末、銀座での用事にあわせて、ふらーっと見に行ってきました。
FA用のアームロボットをキリンに見立てたりして、
何かシュールだけどやりたいことはよくわかる(笑)
部品見ながら「あ、これは…」って思うときだよね。

image

Posted at : 2016-11-08 21:34:16 / Category : life

友人のバーへ

昨日、友人の(正確に言うと友人が働いている先の)バーへ行ってきました。
場所は銀座、なかなか普段は近寄りづらい場所にあります(笑)
ただ、そういう場所にあるからこそ、雰囲気を大切にしている感じはしました。
友人もそこで楽しそうに働いていることだし、良い感じにお酒も出してくれるし、ぜひまた行きたいな。

Posted at : 2016-11-06 21:33:28 / Category : life

鳥取砂丘

帰省の時に行った鳥取砂丘
ポケモンやってる人がちらほらといた

image

Posted at : 2016-08-28 15:52:43 / Category : none

Vulkan on Mac/iOS using MoltenVK

MoltenVKなるMac/iOSでVulkanを動かすためのフレームワークがあった。

MoltenVK – Molten
https://moltengl.com/moltenvk/

早速使ってみて、特に問題なく動いている。すごい…。
技術的にはMetalの上にVulkanを実装している。
その発想はなかったけど、確かに原理的にも納得が行くね。

Khronosのサンプルプログラムを動かすためには、少し手をいれる必要があるみたい。
diffとって見た感じだと、SPIR-Vのローダの部分が違うぐらい?

Posted at : 2016-08-28 09:24:54 / Category : none

夏休み

先週一週間はお休みをもらって、実家に帰省していました。
僕と奥さんのほうとそれぞれの実家でゆっくりと過ごしました。
親戚に会ったり、地元の友人とあったり、BBQしたり、釣り行ったり…結構、いろいろとやったかも(笑)
しっかりと休めたし、休み明けからのお仕事と個人的な活動と、がんばろう。

Posted at : 2016-08-21 17:23:17 / Category : life

地方の再生と集約

一方の視点は衰退しつつある地方をもっと観光などで盛り上げよう、
もう一方の視点は維持コストを考えると集約したいと考える。
どっちが正しいのか、何とも言えないところだけど、
少なくとも後者の視点が足りてなかった自分に反省。。。

Posted at : 2016-08-14 18:28:20 / Category : life