• PTR _services._dns-sd._udp.local.
  • A/AAAA [ソースアドレス].in-addr.arpa.

をやりたい。node 付属の dns で mdns クエリを行うとうまくいかなかった。mdns のライブラリを使うと以下のようになった。_services._dns-sd._udp.local. ひいたときにソースアドレスがなぜか取得できないので若干めんどうなことになっている……

//#!/usr/bin/env node

const mdns = require('mdns');

function getServiceWithBrowser(browser, timeout) {
	if (!timeout) timeout = 500;

	return new Promise(function (resolve, reject) {
		const ret = [];
		browser.on('serviceUp', function(service) {
			ret.push(service);
		});
		//browser.on('serviceDown', function(service) {
		//	console.log("service down: ", service);
		//});
		browser.start();
		setTimeout( () => {
			browser.stop();
			resolve(ret);
		}, timeout);
	});
}

function getAllServices(timeout) {
	return getServiceWithBrowser(mdns.browseThemAll(), timeout);
}

function getServiceForType(type, timeout) {
	return getServiceWithBrowser(mdns.createBrowser(type), timeout);
}

async function run () {
	const services = await getAllServices();
	const results = await Promise.all(services.map( (s) => getServiceForType(s.type)));
	const hosts = results.reduce(
		(r, i) => (
			i.forEach((i) => r.set(i.host, i.addresses)),
			r
		),
		new Map()
	);
	for (let [name, addresses] of hosts.entries()) {
		console.log(name);
		for (let address of addresses) {
			console.log("\t", address);
		}
	}
}

run();
  1. トップ
  2. tech
  3. LAN 内の mDNS に応答するホストを列挙したい

excite光をつかってたので、移行が楽な excite MEC光 という IPoE サービスにしてみました。IPv6 ネイティブかつ DS-Lite による IPv4 接続サービスです。

事前に調べてもさっぱりわからない点があったのでまずそれを検証しました。

ルーターの挙動

  • 貸与ルーター (Aterm WG1810HP) の挙動
    • LAN側は IPv6 ネイティブ接続されるのか? → される。ルーターがRA+DHCPv6 stateless をやってくれる。グローバルIPアドレスが割り当てされる。
    • LAN側の IPv4 アドレスはどうなるのか? → ルータで設定したプライベートIPアドレスがDHCPでくばられる。
    • これまで通りに IPv4 PPPoE セッションははれるのか?
      • レンタルルータだとそもそも設定がなくて貼れない。PPPoE 接続情報自体 excite からもらえない。

この Aterm WG1810HP(MF) は DS-Lite 対応品となっている。DS-Lite 対応ルーターなら他のものも利用可となっているが、このルーターは常に強制的にレンタルする必要がある。

強制レンタルはまぁ許せるけど、それならレンタル料金 (100円/月) を月額料金に含めて書けよと思う。

DS-Lite IPv4 で UPnP のポート解放はできるか

答: できない

DS-Lite では NAT が自宅内ルーターではなく VNE ゲートウェイ (AFTR) 側で行われる (CGN/キャリガグレードナット)ので、手動でポート解放というのが原理的に不可能。それでは UPnP には対応しているのか?という疑問

iijmio ひかりでも答えている。「IPoE接続サービスのDS-Lite方式でのIPv4サービスでは、UPnPによる外部ホストからお客様宅のコンピュータへの通信路確立は行えません。外部へのサービス公開が必要な場合、PPPoE接続を併用されるか、IPv6の利用をご検討ください。」

Mac

デュアルスタック

インターフェイスで IPv6 を有効にすればそれだけで IPv6 ネイティブで繋がるようになる。

なぜか設定でリンクローカルだけの割当になっている端末があったのが罠かった。

Android

デュアルスタック

ZenFone3 (Android 8.0.0)

無線LAN経由で IPv6 接続される。特に設定はなし。

PS4

IPv4 接続

NATタイプ: 2

Nintendo Switch

IPv4 接続

NAT タイプ: B

nasne

IPv4 接続

torne mobileアプリから自宅nasneへ直接接続する機能があるが、機能するか?

アプリから nasne 設定を開くと「通信モード」が表示される。これがNATの状況っぽい? これまでの PPPoE だと通信モードA だった。

IPoE/DS-Lite だとにした直後は通信モード Cで、視聴不可だったが、同一ネットワークから一度つないだら通信モードBになって見れるようになった。

  1. トップ
  2. tech
  3. IPv6 ネイティブ環境に移行 (IPoE + DS-Lite)

おおざっぱにいうと

  • 家庭内のルーター(B4)で IPv4 パケットを IPv6 にカプセル化 (IP IP tunnel)
  • IPv4 ネットワーク接続点 (AFTR) でカプセル化を解き、アドレス変換 (NAT) をして外にアクセスする

だけ。

細かいところで疑問点があったので RFC6333 を見てみた

AFTRのNATの挙動

RFC6333 の B.1.2. Translation Details あたりにAFTR のNATとしての挙動が書いてある。

  • B4 は IPv4 パケットを、AFTR 向け IPv6 パケットにする
  • AFTR は IPv6 パケットから IPv4 パケットをとりだす
  • AFTR はB4グローバルIPv6アドレス・プライベートIPv4アドレスと、グローバルIPv4アドレス・ポートなどをマッピングする
  • AFTR はパケットのIPv4ヘッダを書きかえて IPv4 ネットワークで送信する
  • AFTR はやってくるパケットの宛先グローバルIPアドレス・ポートをもとに、マッピングテーブルから送信すべき B4 IPv6 アドレス・プライベートIPv4アドレスなどを得る
  • AFTR はパケットのIPv4ヘッダを書きかえて、IPv6 パケットにして B4 へ送信する
  • B4 は IPv6 パケットから IPv4 パケットをとりだす
  • B4 は IPv4 パケットを LAN に送信する

NATテーブルは例は RFC6333に書いてあるので引用しておく。結局一番知りたいのはこれだった。

        +------------------------------------+--------------------+
        |         Softwire-Id/IPv4/Prot/Port | IPv4/Prot/Port     |
        +------------------------------------+--------------------+
        | 2001:db8:0:1::1/10.0.0.1/TCP/10000 | 192.0.2.1/TCP/5000 |
        +------------------------------------+--------------------+

            Dual-Stack Lite Carrier-Grade NAT Translation Table

B4側のプライベートIPv4アドレスは勝手に決めていいのか

だいたいいいけど、 DS-Lite では 192.0.0.0/29 が予約されているので、ルーターのLAN側のDHCPでこのレンジが払出されないようにしないとまずいっぽい。

DS-Lite ルーターがデフォルトで 192.168.10.0/24 とかになっているのはこのへんの事情なんだろう。

  1. トップ
  2. tech
  3. DS-Lite の挙動の理解

スペック

  • Wi-Fi は 802.11ac(2.4 GHz / 5 Ghz)1x2 MISO Wi-Fi
  • イーサネット (ACアダプタにある) は 100Mbps

MISO は Multi Input Single Output。ダウンロードだけ2本のストリームという意味っぽい?

802.11ac 最低だと1ストリームあたり86.7Mbpsなので、2本だと 173.4Mbps。実際 Chromecast Ultra がどこまで対応しているのか謎。

スペック的には実は Wi-Fi のほうが高いが、Wi-Fi は AP と接続している端末が増えるほど遅くなるのでなんともいえない。専用の AP を立てられて、電波が空いてるなら Wi-Fi のほうが早い可能性がある。

ちなみにうちでは有線LAN接続してる。

  • 既存のインターフェイスを妨げない
    • 今まで使えるものはそのままにする。アクチュエーターが既存の操作の邪魔をしないこと
    • 「生活」に持ちこむ学習コストを最小限にする。少しずつ便利にする
  • 必要ないならインターフェイスを変えない
    • 今までと似た体験にする。アフォーダンス (形の意味) を変えない
    • 必要がないならインターフェイスを追加しない (ゼロクリックを動くことを目指す)
  • それ手でやればよくない?
    • 意味がないことを自動化しても意味がない。家族にも便利であること

インターフェイスの罠としては「定期的に音声で通知する」みたいなのは意外と使えない。というのも、人間だんだん慣れてきて、同じ音が定期的に鳴っていても聞こえなくなるため。視覚に訴えるほうがいいのかも?

  1. トップ
  2. tech
  3. おうちハックで必要なこと

自分が加害者にならないという自信がある発言をよくあって、それが不思議。その発言自体が加害的なのに、法律的には罪にはないから、マウントが成立する。他人に倫理観を問う人は倫理観がないパターンと感じる。

社会が自分を配慮してくれないのに、自分が社会に配慮する必要はあるのか? 誰だって後ろ盾というか、味方がゼロだったらヤケになるのではないのか?

自殺者を迷惑と叩くような人も同じようなパターンなんだろうと思う。自分がそうならないという不思議な自信があるんだろう。

被害者にならないためにはということよりも、加害者にならないためにはということに興味がある。人間の行動は自動的であるので、そういう状況に追いこまれたら、そういうことになる。直接的に加害されて反抗したら正当防衛になるけど、間接的なら罪になる。広く薄く加害する人に対して、合法的にできることはなにもない。

被害にあわないためには目立たないこと、というのも同意できない。自分への被害は防げるかもしれないけど、他人への被害は減らない。加害を減らすことに繋がらない。社会的なリスクが減らない。社会に対する行動なので、社会で対応しないといけない。個人の問題じゃない。

評判が良いので買ってみた。コストパフォーマンスとセットアップが楽なのがウケているもよう。

とりあえず以下の点は微妙

  • 解像度足りてない
    • 10年ぐらい前の映像を見ている気分。1ピクセルが普通に視認できてしまう。
  • 中央以外ではレンズ収差を顕著に感じる
    • 倍率色収差が一番気になる。周辺部で色がずれる現象
    • 白で文字が表示されることが多いけど、かなり気になる
    • 綺麗に見えるスイートスポットが案外狭いので、結構頭を動かさないとだめ
    • コントラストがそれほど高くない映像コンテンツなら比較的気にならない
  • 頭を動かしたとき画面端のオブジェクトが変形して動いているように感じる
    • 人間は動いてるものに敏感なので気になることがある
  • 視野が狭い
    • 思ったよりは広かったけど、やっぱ狭いなと思う

VRデバイスとしてはトラッキングに違和感を感じることもないし、かぶるだけなのは便利。やっぱ画質が悪いので、それほど感動的なデバイスとは思えなかった……

リアリティというか、現実の再現度でいうと残念ながら4Kや8Kのほうがいいなと思った。視野とかは我慢できるけど、今後は十分なピクセル密度になるまで待ちだなという感じ。

VRの種類

映像だと、ステレオ画像の3D VRコンテンツは少ない。360° 2D の VR コンテンツが多い。この2つの違いはかなり大きい。けど、事前に明確にそうと書いてないことが多いような気がする。

3D VR コンテンツは 2D と比べると没入感が比べものにならない。この点が意外だったのでおもしろい。

電気工事士2種の技能試験の練習

とりあえず問題1を通しで時間を計りながらやってみた。35分ぐらいでおわった。試験時間が40分なのギリギリだ。まぁ初めてやった割には時間内に終わったのは良いほうと思いたい。

複線図書いて、色の指定まで書くけど、実際に施工してみるとこの色の組合せだとやりずらいとかがわかって良かった。

例えば今回は連用取り付け器具で 1.6-2C を2本と渡り線を使うわけだけど、1つ目の器具に 1.6-2C を接続するほうが楽なので、そういう配色にしないといけない。今度から気をつける。

あと、こういう 1.6-2C が2本みたいなパターンだと接続するときにどっちがどっちがわかりにくく、もどかしい。

接続コネクタのストリップ長さがわからなくて少しロスした。よく見ると凹みで示されているけど、ボディが透明なのでわかりにくい。

ランプレセプタクルは問題なくできたかな。のの字曲げは楽しいので試験に出るといいなー


今回は鞍馬寺を通らず、叡山鉄道貴船口駅から直接貴船神社へ。ただ、貴船口から貴船神社まで2kmほと登るので地味に遠い。朝7時ぐらいについたのでバスも走ってない時間で、普通に歩いた。

基本的にはやはり鞍馬寺を通って貴船神社まで行って、降りてくるほうが楽しめると思った。雨が降るという予報だったので早めに予定をこなす意図があった。




しばらくすると貴船神社本宮



もうすこし登ると結社、そのさらに奥に奥宮









山奥にあるけど、人気の観光スポットのひとつではあるので、可能なら早朝が良い。御苑近くのホテルに泊ってたが5時起きして出町柳まで1時間ぐらい散歩して叡電に乗った。

この日はちょうと下山して京都駅につくごろに激しい雨が降りはじまったのでそのまま新幹線で帰った。

  1. トップ
  2. photo
  3. 貴船神社

mbed USBMIDI で Lightroom 用の MIDI インターフェイスを作る | tech - 氾濫原 の続きで、実際に使えるものを作りました。まぁもう作ったの一ヶ月ぐらい前なんですが……

回路図

機械式インクリメンタルロータリーエンコーダー (スイッチ付き)を19個、Gateron 緑軸スイッチ (Cherry MX 互換スイッチ) 7 個を使います。ロータリーエンコーダーはA相・B相・スイッチと3接点あるので 19 * 3 + 7 = 64 接点あります。キリのいい数字ですね。

ロータリーエンコーダーのA相・B相も単にスイッチとみなせるので、ダイオードを使ったキーマトリクスを構成し、16bit I2C GPIO (MCP23017) 1つを使って順次全て読み出します。その際、同一エンコーダーのA相B相は同時に読めるようにマトリクスの配線に注意します。

USB を繋げるメインのマイコンは LPC11U35 です。

基板

上段にある8個のエンコーダーは色別の色相・輝度・彩度に対応することを想定しています。その上にある3つのスイッチはレイヤー切り替えを想定して、エンコーダーの数を仮想的に3倍に増やしています。

かなり配線が面倒ですが、この回路では特にシビアなところはなく、繋がってさえいれば動くと思われるので FreeRouter で自動配線したものをほとんどそのまま使っています。ジャンパとして配線しやすいように、via の位置を多少変更したぐらいです。

切削で基板を作る都合上、片面基板+ジャンパとしたいため、FreeRouter 上ではtopのコストを100ぐらいに設定しています。なので、かなり無理に遠まわりしている配線が多々あります。それでもジャンパは34個ぐらいあるので面倒ですね。

製造は CNC 切削です。6時間ぐらいかかりました。

ファームウェア

基本は I2C GPIO のキーマトリクスを読むだけですが、ロータリーエンコーダーのデコード処理が入っています。

とても安いタイプのロータリーエンコーダーを使っているのですが、どうも挙動がおかしくて綺麗に相を得られないことがあります。これで困った結果、以下のようなロジックになっています。

  • エンコーダー1クリックで4パルス発生するので、相対値として LR に送るときに 1/4 する
  • 相が綺麗に発生しないので、不正なステートになったら「前回の値」が繰替えされているとみなす

これで割とうまくいったように思います。しかし完全に不良品みたいな、正相と逆相が常に対応して発生するエンコーダもあって、安物は厳しいですね。こういうのは捨てるしかない。ロータリーエンコーダーはちゃんとしたのを買ったほうがいいことは分かってるつもりなんですが、ちゃんとしたのはやはり高いですね。

ケース

基板設計時から Fusion360 でモデリングしつつすすめていたので、KiCAD 側から再度基板データを出力して Fusion360 でインポートし、ケース設計に役立てました。

モデルは 3D プリンタで出力しました。下側は一発でいい感じにできたのですが、上側がなかなかうまくいかず3回ほど出力しなおしています。

コスト概算

安く作ることではなく欲しいものを作るのが目的なので、あまりコストは大事ではありませんが以下の通りかかります。

  • ロータリーエンコーダー 19個
    • 単価42円
  • スイッチ 7個
    • 単価35円
  • MCP23017
    • 110円
  • 生基板 250x150
    • 500円
  • LED 3個
    • 単価15円
  • キーキャップ7個
    • 単価70円
  • フィラメント 200g
    • 600円
  • M3 15mm ビス
  • M3 ナット
  1. トップ
  2. tech
  3. Lightroom 用ハードウェアの自作

しばらくエレコムのカメラバッグを普段使いとして使っていた。けど会社の行き帰りにしか使わないので、カメラを入れて運ぶことは全くなくて全然意味がなかった。容量がかなり小さいのと、肩ストラップがすべり落ちてくるのが不愉快だった。

エレコム off toco 2styleバックパック リュックサック カメラ収納機能付き グレー DGB-S023GY - エレコム(ELECOM)

エレコム(ELECOM)

4.0 / 5.0

結局、替えレンズを持ち歩かないみたいな場合には、カメラバッグより容量大きめのちゃんとしたバッグにインナーケース入れる程度のほうが便利だと思う。

[コールマン] ウォーカー33(ヘリンボーン) - Coleman(コールマン)

Coleman(コールマン)

5.0 / 5.0

ということで、コールマンのウォーカーというのを買ってみた。

ポケットが多い割にはかなり軽いうえに容量が大きい。そして中身を入れてないときはそんなにかさばらないので電車に乗るときも邪魔になりにくい。

さらにはチェストストラップとヒップベルトもついてる。チェストストラップは揺れ防止によく使うし、ヒップベルトは重量物を入れると便利。一通り充実した機能がある割には安いし最高な気がする。


ちなみにカメラバッグとしては相変らず Lowepro フリップサイドトレックBP 450AW 使ってて、そこそこ満足。カメラの収納と持ち歩きには最高。かなり重くしても全く肩が疲れない。これはこれでカメラ以外の収納が少ないという問題はあるけど、物理的にどうしようもない。

最近モデルチェンジしたっぽい? アマゾンで売ってないかもしれない。

Lowepro カメラリュック フリップサイドトレックBP 450AW 12.9L グレー/ダークグリーン 370168 - ロープロ(Lowepro)

ロープロ(Lowepro)

5.0 / 5.0

「ぼくのふね」はだいぶ弾けるようになってきたかなあ。油断すると人差し指が迷子になるけど、なんとか通しでひける。もうちょい練習する。

  1. トップ
  2. piano

キラキラインターネットはこないのは確実だなあと思った。

ブックマークレットとかGreasemonkeyとかにすごく大きい可能性と期待を抱いていて、こういう DIY を前提としたウェブサービス (例:LDR) にも期待してて、きっと理想 (未来予想ではない) はこういうほうだと思って期待はもっていたけど、案の定というかなんとかいうか、ブックマークレットもGreasemonkeyも実質滅びている。

作る人・作れる人が増えることが一番良いと思ってるけど、大多数の人は作ることに興味がない。

プログラミングが義務教育になってからの世界だと違うだろうか? 違わないと思う。

ブログを続けるには!?みたいなブログ記事を読むと、その感覚がよくわからなくて不思議な気持ちになる。もしかすると「筋トレを続けるには!?」みたいなノリなのかもしれない。つまり、なんらかの目的(PV? 承認? 広告収入?)があって、その手段であるブログを書くこと自体は面白くないことだという認識なのかもしれない。「1日n記事書く」みたいなノルマを課してる人もいるみたいだし、やっぱ筋トレなのかも。まぁその手のブログって感覚があわなすぎて面白くないんだよな……

とにかく初心にかえろうという感じ。

プラチナ(PLATINUM) プレピー クリスタル PSQC−400 細字 #4 クリスタル│万年筆 万年筆本体 - プラチナ万年筆

プラチナ万年筆

5.0 / 5.0

プラチナ万年筆 万年筆インク吸入器 コンバーター コンバーター-700#9 - プラチナ万年筆

プラチナ万年筆

4.0 / 5.0

プラチナ万年筆からプレピー万年筆という300〜450円の万年筆が出てて激安。この手のものの走りといえば PILOT の kakuno があるが、それの半額以下という価格設定になっている。もはやコンバーター(任意のインクを使うためのパーツ)のほうが高い…… インクカートリッジも1つ付属しているので、もちろんコンバーターなしでも普通に買ってすぐ使える。

(Amazon のリンクを貼ってるけど文房具はヨドバシのほうが安いし正確なので買いやすい。)

しかし書き味は全く問題なくて、すらすらかける。というか自分の試した限りだと kakuno よりよかった。この価格帯はあたりはずれがあると思うので一概にはいえないけど、あたりはずれがあるとしたら1本あたりの価格が安いのは余計にありがたいポイントだと思う。

さらにスリップシール機構というインクが乾きにくいキャップになっているのが大きなポイント。万年筆は1ヶ月ぐらい放っておくと乾いてしまって使えなくなるんだけど、乾くまでの時間を大幅に長く、1年程度にしてくれる。ときどきしか使わないけど万年筆を使いたいみたいなユースケースなら、この機能がついてないと厳しい。

完全な透明軸であるクリスタルモデルは細字(F)しかないけど、軸に色がついてるタイプはほかにたくさん出ている。クリスタルモデルは軸への印字が少し少ないのもポイントで、デザイン的に邪魔に感じにくい。

対 kakuno での比較だと負けてるポイントがひとつもないと思った。

  • 安い
  • スリップシール機構

ゲルインクボールペンとか水性ボールペンのほうが総合的には便利だけど、書き味は万年筆のほうが本当に良いんだよなぁと思う。まぁ筆記用具あんまり使わないんだけど