tkhrsskの日記

技術ネタなど

はじめてのCMake

まずはcmakeをインストール

Macの場合

https://cmake.org/download/dmg形式をダウンロードして、インストール

コマンドラインを通すには、 sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --installGUI版を起動し、メニューの Tools -> How To Install For Command Line Use で説明が出てくる。

UbuntuLinuxの場合

apt-get -y install cmake

何もしない makeの作成

とりあえず空ファイルの CMakeLists.txt を作って、UNIX Makefileを作ってみる。

$ touch CMakeLists.txt
$ cmake -G "Unix Makefiles"

-GはGeneratorの指定。あらかじめ使える種類は決まっている。--helpを参照。

上記実行後、以下のファイルが出来上がっている。

CMakeCache.txt
CMakeFiles
CMakeLists.txt
Makefile
cmake_install.cmake

make allとかが動く状態になっている。

Hello World

Hello Worldを実行するCのプログラム用のCMakeを作ろう。 ソースフィルは、hello.c。実行ファイルは、helloにしよう。

CMakeLists.txtに以下の記述をする。

project (Hello C)
add_executable(hello hello.c)

projectの二番目以降は言語を指定。C++だったらCXX。複数なら空白区切で並べる。 で、先ほどと同じように cmake後にmakeすれば もう出来上がり。

$ cmake -G "Unix Makefiles"
$ make
Scanning dependencies of target hello
[ 50%] Building C object CMakeFiles/hello.dir/hello.c.o
[100%] Linking C executable hello
[100%] Built target hello
$ ./hello
Hello CMake!

add_executable の 引数に、ソースファイルを増やしていけば、複数のソースからビルドできるようになる。

add_executable(hello hello.c hello2.c hello3.c)

cmakeに対するバージョンを要求することもできる。

cmake_minimum_required (VERSION 2.8)

ディレクトリ構成

buildというディレクトリを作って、そこからcmakeを叩くのが定石らしい。

rm -rf build
mkdir build
cd build
cmake -G "Unix Makefiles" ..
make

といった感じでスクリプトを組む。

コンパイルオプション

CMakeLists.txtに以下の記述をする。

set(CMAKE_C_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS "-Wall")

make verboseするには

set(CMAKE_VERBOSE_MAKEFILE TRUE)

GStreamerで遊ぶ

環境準備(Mac)

brew install gstremer
brew install gst-plugins-bad
brew install gst-plugins-good
brew install gst-plugins-base
brew install gst-plugins-ugly

gst-launch ワンライナー

Macのカメラ映像を、画面に表示。

gst-launch-1.0 autovideosrc ! osxvideosink

autovideosinkではなぜか表示されなかった。OpenGLの緑背景の画面が出るだけ。

しまうま (白いところがゼブラストライプになる)

gst-launch-1.0 autovideosrc ! zebrastripe ! osxvideosink

f:id:tkhrssk:20170305000754p:plain

色相反転

gst-launch-1.0 autovideosrc ! videobalance hue=1 ! osxvideosink

回転、反転

gst-launch-1.0 autovideosrc ! videoflip method=clockwise ! osxvideosink
gst-launch-1.0 autovideosrc ! videoflip method=horizontal-flip ! osxvideosink

fileを再生

gst-launch-1.0 filesrc location=test.mp4 ! decodebin ! videoconvert ! osxvideosink
gst-launch-1.0 filesrc location=test.m4a ! decodebin ! audioconvert ! autoaudioink
gst-launch-1.0 filesrc location=test.png ! pngdec ! imagefreeze ! videoconvert ! osxvideosink

パケットから再生

gst-launch-1.0 tcpclientsrc host=127.0.0.1 port=5050 ! decodebin ! videoconvert ! osxvideosink

マイク取り込みして再生

gst-launch-1.0 -v -m autoaudiosrc ! audioconvert ! audioresample ! autoaudiosink

音声可視化

gst-launch-1.0 -vv audiotestsrc wave=pink-noise ! synaescope ! videoconvert ! osxvideosink
gst-launch-1.0 -vv autoaudiosrc ! wavescope ! videoconvert ! osxvideosink
gst-launch-1.0 -vv autoaudiosrc ! spectrascope ! videoconvert ! osxvideosink
gst-launch-1.0 -vv audiotestsrc freq=880 ! spectrascope ! videoconvert ! osxvideosink

f:id:tkhrssk:20170304235152p:plain f:id:tkhrssk:20170304235126p:plain f:id:tkhrssk:20170304235229p:plain

demux

gst-launch-1.0 filesrc location=xxx.m4a ! decodebin ! audioconvert ! tee name=t ¥
 t. ! queue ! autoaudiosink ¥
 t. ! queue ! spectrascope ! videoconvert ! osxvideosink ¥
 t. ! queue ! wavescope ! videoconvert ! osxvideosink ¥
 t. ! queue ! synaescope ! videoconvert ! osxvideosink

manualをみる

gst-inspect-1.0 audiotestsrc

その他

プラグインの検索

gst-inspect-1.0

ファイルの詳細を表示

gst-discoverer-1.0 -v ファイル名

gst-typefind-1.0より詳細なメタ情報が取得できる。

バイス一覧

gst-device-monitor-1.0

Excel VBAアドインの作り方 サンプル

ThisWorkBookに、ワークブック読み込み時の処理(Workbook_Open)追加。

Option Explicit

Private Sub Workbook_Open()
    Dim bar As CommandBar
    Dim button As CommandBarButton
    
    DeleteCommandBar
    Set bar = Application.CommandBars.Add(Name:="ツールバー名", Position:=msoBarTop)    
    Set button = bar.Controls.Add(Type:=msoControlButton)
    button.Style = msoButtonIconAndCaption
    button.FaceId = 172
    button.Caption = "キャプション名"
    button.OnAction = "サブルーチン名"
    Set button = Nothing
    
    bar.Visible = True
    Set bar = Nothing
End Sub

Private Sub Workbook_AddinUninstall()
    DeleteCommandBar
End Sub

Private Sub DeleteCommandBar()
    On Error Resume Next
    Application.CommandBars("ツールバー名").Delete
    On Error GoTo 0
End Sub

FaceIdについては、下記を参照

Office TANAKA - Excel VBA Tips[FaceIdの図について]

DeleteCommandBarでは、ツールバーが無いときの削除処理のエラーハンドリングを無効化。

作成したアドインは、xlam形式で、%USERPROFILE%\AppData\Roaming\Microsoft\AddIns に保存。

アドインのタイトルや説明は、エクスプローラー上で、ファイルのプロパティから編集。AddInsフォルダに入ると編集できないようなので別の場所で変更してから格納する。

【追記】 インストールは下記スクリプトを用意しとくと楽。

qiita.com

雑記メモ 通信いろいろ

通信いろいろ Wikipediaコピペ

Bluetooth - Wikipedia

2.4GHz帯を使用

最大実効速度

バージョン 非対称型通信時 対称型通信時
1.x 下り723.2kbps/上り57.6kbps 432.6kbps
2.x 下り723.2kbps/上り57.6kbps 432.6kbps
2.x+EDR 下り2178.1kbps/上り177.1kbps 1306.9kbps
3.x 下り723.2kbps/上り57.6kbps 432.6kbps
3.x+EDR 下り2178.1kbps/上り177.1kbps 1306.9kbps

転送速度

規格 転送速度
3.0 + HS (802.11 PAL) 24Mbps
4.0 Bluetooth Smart (Low Energy) アプリケーションスループット:260kbps
データレート:1Mbps
4.2 Bluetooth Smart Data Packet Length Extension アプリケーションスループット:650kbps
データレート:1Mbps
5 データレート:2Mbps, 1Mbps, 125kbps

ユニバーサル・シリアル・バス - Wikipedia

USBの比較

規格名 仕様発行日 最大データ転送速度 最大伝送距離 給電能力 (5V)
USB 1.0 1996年1月 12 Mbit/s --
USB 1.1 1998年9月 12 Mbit/s --
USB 2.0 2000年4月 480 Mbit/s 5m 500 mA
USB 3.0 2008年11月 5 Gbit/s 3m 900 mA
USB 3.1 2013年8月 10 Gbit/s (gen 2) 1000 mA

転送速度

モード 通信速度 備考
Low Speed(LSモード) 1.5 Mbps
Full Speed(FSモード) 12 Mbps USB 1.1まではこの速度が最大
High Speed(HSモード) 480 Mbps USB 2.0で新設
SuperSpeed(SSモード) 5 Gbps USB 3.0で新設
SuperSpeed+(SSモード) 10 Gbps USB 3.1で新設

Wifi

Wi-Fi - Wikipedia

Wi-Fi規格 周波数帯 速度
IEEE 802.11a 5GHz帯 最大リンク速度54Mbps
IEEE 802.11b 2.4GHz帯 最大リンク速度11Mbps
IEEE 802.11g 2.4GHz帯 最大リンク速度54Mbps
IEEE 802.11n 2.4GHz帯および5GHz帯 最大リンク速度600Mbps
IEEE 802.11ac 5GHz帯 最大リンク速度6.9Gbps
IEEE 802.11ad 60GHz帯 最大リンク速度6.8Gbps

Markdown Wiki crowi

crowi

いけてるmarkdown wiki webアプリ。

起動方法

dockerが使える環境で下記をたたくだけ。

$ git clone https://github.com/kajiken/docker-crowi.git
$ cd docker-crowi
$ git clone https://github.com/crowi/crowi
$ docker-compose up

蛇足 Docker for Windows

今回、Docker for Windowsの最新版をいれてみたが、 かなり楽になっていた。。。

  • 公式ページからインストーラをダウンロード
  • インストール
  • Docker quickstart Terminal を開く → これで、VirtualBoxVM起動とdockerコマンドがたたけるMINGW64が起動する。 docker-machineもdocker-composeも入っている。

ただし、Win7 32bitはだめみたいです。

VMを頻繁に使っている頃はあまり意識していなかったけど、 久々に構築しようとしたときに、VMの準備がいらないのはかなり楽。

VMをポートフォワーディングしてサーバとして外部公開したり、 外部マウントするとかは、後でまとめておきたい。