M.2 の NGFF 形状 WiFi モジュールと繋ぐケーブル

最近の PC マザーボード上にある WiFi モジュール用は mini PCIe ではなく M.2 に変わりつつあるようです。このモジュールとアンテナまでを繋ぐケーブルが必要になるのですが、これが最近大変なことになっていました。

MHF4-080-SMA という WiFi モジュールとアンテナを繋ぐためのちょうどいい長さのケーブルは最近入手が難しいようです。amazon でも品切れしているようです。

しかし、つい最近別の商品ですが MHF4, SMA コネクタを両端に持つケーブルおよびアンテナのセットを販売してくれているのを発見しました。

これが無ければ、 WLN-M という Shuttle のほうから出ているものを購入しようかと思っていました。こちらならモジュールからアンテナまでセットです。しかもケーブルの長さが違うものが2セットほど入っているという充実ぶりです。

折角 M.2 スロットもあるので、 WiFi を USB で外付けするより内蔵してしまいたいという野望ですが、モジュールの入手よりもケーブルのほうに苦戦するという結果になりました。手元の USB 3.0 の 866 Mbps WiFi ドングルでは、 ピークで 400M ほどで通信が出来ていたので、これを Intel の M.2 WiFi モジュールの方に変えたらどのくらいの性能が出せるようになるか楽しみです。


Docker で Samba

最近 Docker によるコンテナに興味がわいて触り始めました。
これまでは仮想マシン推しだったのですが、環境の再構成や配布といった点でコンテナの方が都合が良さそうな場面も多く感じたことが理由です。

Docker とは

Docker が提供してくれる利便性については各所で説明されています。ここでは、 Docker はコンテナと呼ばれるものに環境ごとを閉じ込めて、実行させるものと考えています。
また環境を閉じ込めて実行させるものという点のみをみると、仮想マシンが提供するものと同じなのですが、コンテナの方は以下のようなメリットもあります。

  • 動作が軽量
  • コンテナサイズが小

こういった点から開発環境をコンテナで構築して使用するといった用途に使われたりします。環境が閉じているのでこれを実環境にデプロイでき、開発と実環境の差異によるトラブルも最低限になったりします。

初めてのコンテナ起動

ここでは CentOS 1708 をインストールした環境で初めてのコンテナを起動するまでを説明します。

インストール手順

CentOS 1708 の時点であっても、 yum(dnf) でインストールできるものは古いため以下のようにして新しいものをインストールするようにしました。

コンテナ起動

コンテナを作成してコンテナ内の Bash シェルを起動してみます。
以下のコマンドを実行すると、コンテナで bash が起動してそのシェルに接続されます。

起動したシェルから抜けるには、「Ctrl+P, Ctrl+Q」 と入力します。シェルを Ctrl+D で抜けると、コンテナで起動したシェルが終了するため、コンテナもまた終了状態となります。

環境を作る

こうやって作ったコンテナのなかで、必要なものをインストールして環境を整えていきます。このときに、何をやったのかをメモをとりつつ作業をするのをオススメします。
というのもコンテナにどのようなことを行って環境を作ったのかを設定ファイルのようなものに記述することによって、
その設定ファイル+αのものを配布するだけで、受け取った人が同じ環境を構築することができるようになるからです。この設定ファイルは Dockerfile と呼ばれます。
作ったコンテナのイメージをそのままエクスポートして、それを渡すと言うこともできるので Dockerfile の作成は必ずしも必要ではありません。

続きを読む


HLSL pow 関数の怪

pow 関数の挙動が昔と今で変わった!という話を聞いたので調査することにしました。

今回はスペキュラーの計算で使用している pow 関数の計算が妙なことになっているとのことだったので同じようにスペキュラの計算を行ってみることにします。なおインターネットで調べてみると、同じような症状に出遭っているような文面を見かけることができました。

傾き指向プログラミング / Direct3D 11のカリング設定
こちらの方では、「Specularの計算中powを使うのですが、これの結果がやたらとマイナスの値になるため、最終的に合算した色が真っ黒になるようです。」 と記述しています。
続きを読む


Draco を C++ と DirectX11 で触ってみる 後編

前回は draco のビルドと、サンプルのモデルデータをとりあえず読み込んで描画を行いました。今回は、モデルデータをコンバートする部分と、別のモデルデータの読み込みについて確認したいと思います。

コンバート

現時点において Draco をビルドすると ply, obj ファイルから drc ファイルを生成するコンバーターが付属しています。

使い方は以下のようになっていました。

MMDのモデルから変換する

MMDのモデル形式(PMD,PMX)から obj 形式を経由して変換してみました。PMDEditor で、 obj 形式でエクスポートすることが出来るようになっており、出力したファイルを draco_encoder に入力します.

続きを読む


Draco を C++ と DirectX11 で触ってみる 前編

Google の Draco が公開されています。これは 3D データ圧縮ライブラリでして、 Zip よりも効率よく圧縮ができるというのが特徴です。公開されたのは2017年1月ごろの話なので、ずいぶんと出遅れている状態ですがちょっと触ってみました。

効果的に使える場面は WebGL の環境だと思いますが、あえてデスクトップPC の DirectX11 でデータを描画するといったことを目標にします。前編では Draco の準備と初めてのモデルデータの読み込み、を行います。なお、 DirectX11 のプログラミングにおいて3角形は描画できるというという状態までは仕上がっているものとします。

続きを読む


WPF で描画結果を画像ファイルへ

GDI のメモリ DC で書いたオフスクリーンの内容で画像ファイルを作成するという方法はよく知られていると思います。これを WPF ではどうするのだろうと思って試してみました。

描画

まずは画像作成元となるものを作ります。 WPF では RenderTargetBitmap というクラスがあり、これを使うと保持している内容をビットマップとして取得が出来ます。
ただ、この RenderTargetBitmap に対して直接、直線や円を描く、というものではありません。Canvas オブジェクトを使って、Canvas に中身を描いて、この Canvas を RenderTargetBitmap にセットするというのが手軽に図形を描画する方法といえそうです。

続きを読む


Raspberry Pi でパケット遅延器

Raspberry Pi を使って、パケットの遅延器を作ってみました。
Linux なら2枚の NIC を使って簡単に作ることができます。これの Raspberry Pi 版となります。

USB-NIC を増設

Raspberry Pi 2/3 には1つの LAN ポートしかないため、2つめを追加する必要があります。
そこで今回 USB NIC を追加しました。手元にあったのが ESXi でも使うことが出来た LAN-GTJU3H3 だったのでこれを使用しました。
ちょうど Raspbian 2017-09 版でも装着したら、すぐに使えるという状態だったので手軽でした。


同様のチップを採用しているものも素直に動くのでは、と思います。

続きを読む


ソフトパーティクルの実装方法

テクスチャとして読み込むデプスバッファと、アウトプットマージャーにセットしたデプスバッファでデプステストを使っての事例として、ソフトパーティクルがお題に合致している感じだったので試してみました。
ようやく読み込み専用 DepthStencilView を意味あるものとして使えたかなと思います。

ソフトパーティクル

ソフトパーティクルとは、パーティクルに使用するビルボードとモデルや背景の境界部分をぼかすことによって、ハードなエッジを見せないようにするための技法です。
ハードなエッジとは以下のようなものです。ソフトパーティクルを無効化して描画したものになります。

続きを読む