新ブログへ移行

このブログも遅くなってきたので、新しいブログに移行します。

新しいブログは、こちら。

http://blog3.narimatsu.net/

新しいブログも、よろしくお願い致します。

スプラ2 フェス 「アクション対コメディ」

この週末スプラトゥーン2のフェス、「映画やドラマ、観るならどっち? アクション or コメディ」が行われた。私は「コメディ」で参加。いつもフェスでは、ボロ負けで、フェパワーも落ちる一方なのだが、今回は珍しく好調。 けっこう勝って、フェスパワーも1800超え、自分としては相当高いところまでこれたので、記念として残しておく。

フェスの結果は、人数で負けたものの、勝率はソロ・チームとも「コメディ」が勝って、勝利した。イイダとともに、けっこう連勝している。

謹賀新年2018

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

年末から正月は、仕事、趣味的なことは何もやらず、ひたすら minecraftとsplatoon2に耽っておりました。minecraftは、掘ったスライム・トラップにスライムが湧かないことに苛つき、新ワールドを始め、自動釣り機と天空経験値トラップで一気に環境構築を目指したものの、修理付きの釣り竿がなかなか出ず、蜘蛛を狩って糸を集める日々が続きました。

昨年末から、AtomやらJavascriptを、まともに使い始めたように思います。今年はNode.jsやElectronに手を出して何か作ってみたいと思っております。

本年も宜しくお願い致します。

Pro コントローラ追加購入

日々、スプラトゥーン2をやっていてProコントローラ左スティックの効きが悪くなってきた。移動時引っかかる感じ。まぁ寿命かな、ということで、WiiUのゲームパッドみたいに修理用部品が売っていないが探すがない。仕方が無いので,ちょっと高いがProコントローラを購入。今度はスプラトゥーン2エディションにしてみた。

物は近くの電気屋で普通に買えた。これも数ヶ月で壊れるだろう。それまでに修理部品が発売されると良いなぁ。

ESP8266と通信出来ない。

ESP8266のプログラム開発中にトラブルに遭遇。 それまで、普通に行えていたOTAでのプログラム書込ができなくなったのだ。pingにも反応しない。「宛先ホストに到達できません」と出る。arp -a の出力にターゲットのIPアドレスが無い。WireSharkで調べるとESP8266がarpに返事していない。

“esp8266 arp”でgoogle 検索。ESP8266には,ARP関連の問題があるらしい。 「しばらくするとARPに反応しなくなる」とか「複数のESP8266があるとWiFiルータのバグでARPに反応しなくなる」などという現象が報告されている。

私も複数のESP8266を同時に動作させている。WiFiルータがARPパケットを中継しなくなるのか? WiFi側の通信状況をモニタする方法がわからないので調べられない。ルータを再起動すると症状が消えたりする。

この問題を自力で解決するのは大変そうなので、対症療法に走る。手作業でARPテーブルにESP8266のMacアドレスを登録する。

ESP8266のMacアドレスがわからないと面倒なので、まず、シリアルポートとかに表示させる。IPアドレスは表示させているので、追加する感じ。プログラムとしては、次のようになる。

	uint8_t mac[6];
	WiFi.macAddress(mac);
	Serial.print("mac:");
	for(int i=0;i<6;i++)
		Serial.printf("%c%02x",i>0?'-':' ',mac[i]);
	Serial.println();

次にWindowsでARPテーブルに登録する。 arpコマンドがあるのだから、arp -s で設定できるはずだが、何故か出来ない。コマンド・プロンプトを管理者で起動してもダメ。

設定方法を検索して、「sakashita-net.jp: arp -sでARPエントリを追加しようとすると「ARP エントリを追加できませんでした: アクセスが拒否されました。」というエラーになる」というページを発見。バッチリ書いてある。

コマンド・プロンプトを管理者権限で起動し、次のコマンドでアドレスをARPテーブルに追加できる。

$ netsh interface ipv4 set neighbors "イーサネット" "192.168.0.110" "5c-cf-7f-89-88-d3"

“イーサネット”は、インターフェース名で,次のコマンドで表示できる。

$ netsh interface ipv4 show interface

とりあえず、これで開発を進められる。でも、この問題はちゃんと解決して欲しい。

favicon.icoを作ってくれる favico

岡山大学の乃村研究室が公開しているツール集 (GitHub – nomlab/tools: Useful home-brewed small tools) の中にある favico というプログラムが便利。これは favicon.icoをコマンド1発で作ってくれるツール。 Webサーバのログを見て favicon.icoがありません、というエラーに遭遇しても、このコマンドがあれば一発で作れる。 文字だけに限定されるデザインだが、自分で作るfaviconも、いつも、そんな感じなので、十分だ。もっと凝りたければ、普通のツールで作れば良いのだ。

例えば、

$ favico -c white -b green -f Takaoゴシック -o favicon.ico  '電'

とコマンドを入力すると、というような画像ファイルを作ってくれる。

使い方は、引数無しで起動すると表示される。サイズ、色、フォントなどが指定できる。

$ favico
Usage: favico [-s size] [-c color] [-b bgcolor] [-f font] -o FILENAME STRING
Example: favico -s 64 -c white -b blue -o N.png 'N'
         favico -s 64 -f '/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc' -o nom.png '乃'

使えるフォント名が謎だったが、 favicoは Imagemagickのconvertコマンドを起動するshellスクリプトなので、以下のコマンドで自分の環境で使えるフォントの一覧を表示できる。

$ convert -list font | grep Font:

こんな便利なツールを公開して頂いてありがとうございます。>乃村さん

スプラトゥーン2の日々

あいかわらずスプラトゥーン2で遊んでいる。

うでまえは、あまり上がらないので最近はギア揃えを目標に遊んでいる。揃ったギアで新たな戦い方を探すのも面白い。ギア集めるには、お金も必要なのでバイト、サーモンランも真面目にやっている。これも、なかなか難しくて面白い。最近追加されたガチ・アサリは、まだ勝ち方がよくわからに。いろいろ試していこう。

スイッチの録画機能で撮ったガチホコの画像を貼る。ギリギリのところで、うまくローラーを回避してタッチダウンできた。遡って録画できる機能は便利だ。

aitendoのサーマルプリンタ・ユニットを衝動買い

aitendoのサーマルプリンタ・ユニットを買ってしまった。このサーマルプリンタは、aitendoのサイトでちょくちょく見る気がするのだが、すぐに在庫切れになる。見かけた時、在庫僅少だったので注文したら買えてしまった。価格は送料含めると4千円ジャスト。

使う当ては無い。展示会等で、なにか面白いプリントアウトができれば良いかもしれない、とか考えている。 

届いたブツを調べると、コネクタ付きケーブルや感熱ロール紙も付属して便利だ。接続はTTLレベルのシリアル通信、9600baud,電源は 5~9V, 電流は0.8~1.5Aで瞬間で2A流れることもあるらしい。中国語FONT内蔵。

とりあえず、USBシリアル変換モジュールでも繋いでPCから印刷、てなところか。いつやるか? 正月の課題かな。

秋月電子で0.96インチOLED発売

秋月電子で0.96インチOLEDが発売されたことをtwitterで知る。I2C接続タイプで値段は580円。

aitendoやAliExpressで入手可能だが、aitendoは在庫数量が不安。AliExpressだと到着まで3週間ぐらい待つことになる。秋月で買えれば、いつでも使える感じがする。

この0.96インチOLEDは、コントローラがSSD1306で使いやすい。接続はI2Cで簡単だし、ライブラリも沢山公開されている。画素数が128x64dot,表示が鮮明で、凄い表現力。使う側のセンスが問われる。 

ちなみに私が使っているものは、速度にこだわってSPI接続タイプ。AliExpressで購入した。
動画表示をやりたかったのでI2C接続に不安を感じたのだ。 
続きを読む… »

esp8266-arduinoでSD::remove()が固まる件

fsHandlerを作成している際、表記の問題に遭遇した。
原因は、SD.hの108-109行

  // Delete the file.
  boolean remove(char *filepath);
  boolean remove(const String &filepath) { 
    return remove(filepath.c_str()); }

remove(filepath.c_str())でremov(char *filepath)が呼び出されそうだが、
filepath.c_str()の型は (const char *)つまり書換不可文字列。これを (char *)書換可文字列として関数に渡すわけにはいかない。

不幸なことに String型にはconst char *型引数1つだけのコンストラクタがある。このコンストラクタにより、const char *型の文字列はString型に変換され、remove(const String &filepath)、つまり自分自身を呼び出し続けることになるのであった。

SD::exists,mkdir,rmdirも全く同じなので、固まるはず。

ちなみに、version 2.4.0-rc1では修正されている。

  boolean remove(const char *filepath);
  boolean remove(const String &filepath) { 
    return remove(filepath.c_str()); }

回避策は簡単、(char *)にキャストすれば良い。

  SD.remove((char *)path.c_str());  

気持ち悪いのは我慢.

けもの足

この数日、とても寒い。仕事をしていても足元が冷えるので、けもの足、ではなく極暖 足が出せるロングカバーを購入した。1,737円。

最初、ズボンタイプの足温器を探したのだが、1万円前後と結構高いし、レビューを見てると問題もありそうなので、他を探したところ、このロングカバーを見つけた。値段も安いし、レビューでも良さそうな感じなので買ってみた。

今日、届いたので、装着してみたところ、良い感じ。寒くない。歩ける。恥ずかしがらなければの話だが。

見た目がケモノというか、動物のヌイグルミっぽい。けものフレンズ・タイアップ商品とか出せば売れるのではなかろうか。

ESP8266WebServer用ファイルシステム・表示ハンドラ

ESP8266 Arduinoでは特にWebServerのライブラリが気に入っている。

これを使うとESP8266を使った機器をブラウザから、とても簡単に操作・参照できる。サンプルプログラムも、よくできていて、独自機能の追加も簡単だ。

ESP8266WebServer葉にSDメモリーや内蔵ROM内のファイルシステム(SPIFFS)をWeb経由で参照、アップロードなどできるハンドラを使って使用してきたのだが、次に作るプログラムで、また使いたくなったので、ライブラリ化を行いGitHubで公開した。

h-nari/FsHandler: arduino library to access spiffs/sd via webServer

ブラウザでアクセスするとこんな感じ。

最終的な製品で、ファイルシステムを全て公開して良いのか、ということは置いて置くとして、開発段階では大変便利。ファイルの中身が簡単に見れるし、アップロードも簡単。

まだ、いろいろ問題はあるかもしれないが、とりあえず公開。

F-PLUG復旧

Debian更新後、bluetooth接続電力計 F-PLUGからデータを取得できない。しばらくはデータを取れていた気がするが、取れなくなった。

未インストールのライブラリを疑うが、みつからない。調べるうち、F-PLUGをWindows10で動かすにはファームウェアの更新が必要という情報を発見。windows10で使用しているわけではないが、Debianアップデート後使えなくなったので、これが怪しい。ファームウェアをアップデート。

アップデートにはWindows8以前のマシンが必要とある。前に使っていたThinkPadを引っ張り出すが電源が入らない。1年半使っていなかったので仕方ない。ネットにはCMOSバックアップ電池を一度外してやると復旧する、という情報が多数。ブラウザで手順を見ながら、バッテリー、9つの小さいネジ、キーボードとパームトップを外す。電池のコネクタを抜き30秒放置。キーボード、パームトップ、ネジ、バッテリーを元に戻して、電源スイッチを入れる。無事起動。

起動したのは Windows 7だった。バッテリーがだめになっているそうで充電が全く行なわれない。バッテリーは3,000円ぐらいで買えるらしい。どうするか、ちょっと悩む。買えば数年使えそう。でも、どうせ使わない…

Windows7で、F-PLUGのファームウェアを更新。Windows上のソフトとの接続を確認。しかし、Linuxとは、接続できない。

その後、Debian側のbluetooth関係のコマンドが変わったことや、ペアリングをやっていないことに気がき、いろいろ試しているうち接続できた。何が原因だったのか結局わからない。

bluetooth接続の電力計は便利。もっと欲しい。RATOCのREX-BTWATTCH1しか見つからない。Linuxに接続できないかと、改めて調べたら、Armadilloに接続している例を発見。これはいけるかもしれない。試してみたい。

Amazonで4,976円。買うか?

IPv6開通

なんかIPv6が開通したようで、プロバイダのasahi.netのIPv6接続確認ページで接続されていると出るし、nslookupで調べると v4のアドレスに加えてv6のアドレスが表示されるものも出てきた。

それなら、自分のところのサーバーも外部からIPv6で接続できるようにしたい。asahi.netでは固定IPアドレスサービスに入っているけど、v6のアドレスも固定されているのだろうか。調べると使えないらしい。

IPv6接続機能で固定IPアドレスは利用できますか?(IPv6及びIPv6接続機能)|会員サポート|プロバイダ ASAHIネット

近い将来 v6でも固定アドレスがサポートされることを期待しよう。

AutoHotKeyでIME制御

Windowsを使っていて不満なのは、かな漢字変換のOn/Off切り替え。「半角/全角」キーを押せば良いのだが、このキーがブラインドタッチ(タッチ・タイピング?)しずらい。

以前は、日本語化EmacsでIME制御も出来ていたのでCtrl-Oに割り当てて満足していた。ところがIME制御ができるEmacsが手に入らなくなった。この場合Ctrl-OにはEmacs独自の入力メソッドの切り替え機能になり、WindowsのIMEとは別のものなので、とてもややこしいことになっていた。とても使いにくい。

昔は、Unix/Linu上のemacsでwnnやら使って、幸せにかな漢字変換できていたのに、何なのだろうと思う。

というわけで、このことは、かなり長い間、悩みのタネだったのだが、今回 思い切って AutoHotKeyでIMEのOn/Offを切り替え、この機能をCtrl-Oに割り当てることで、emacsだけでなく、Atomやブラウザでも日本語入力が楽になり幸せになった。Windows10ではIMEがどの状態に切り替えられたのかわかりやすくなったのも嬉しい。

参考にした記事は、今日もどっこい生きている: IMEのOn-OffをAutoHotkeyで行うで、2009年、8年も前の記事。

AutoHotKeyは、長いこと使っているが、何が出来て何ができないのか、まださっぱりわからない。