VC++ 2013 で Web API にアクセスする
普段 C++ で Web API を扱うときは cUrl
を導入して使っていました。
しかし、VC++ 2013 では cUrl
はどうやら、あれこれしないとうまく動かないらしく、どうしようかなと思っていたところ C++ REST SDK
というものを見つけたのでメモ
導入
導入には NuGet
を用います。
- ソリューションエクスプローラー内のプロジェクト名を右クリックから
NuGet パッケージの管理
を選択 - 検索窓に
Casablanca
と打ち込み、リストからC++ REST SDK
をインストール
以上で導入は終了です。
使用方法
使用するには以下の 2 個のファイルを include すれば ok です
#include <cpprest/http_client.h> #include <cpprest/filestream.h>
using namespace web::http; using namespace web::http::client; ... http_client mHttpClient(L"http://xxxx"); mHttpClient.request(methods::GET).then([](http_response response){ printf("Status: %u\n", response.status_code()); }
これだけのコードで、指定した URL に Get してステータスを表示されることができます。
参考 URL
誰かが ssh でリモートログインしたのを通知する
異常検知的なことではなく、ただ単純に誰かがサーバに ssh でリモートログインした時、それを通知するものです
概要
- ssh を用いてリモートログインされた時、指定されたメールアドレスにログイン情報を送信する
環境
方法
ssh でリモートログインしたとき、/etc/ssh/sshrc
が実行されます。
そこで sshrc
にメール送信のスクリプトを記述します。
$ sudo vim /etc/ssh/sshrc
#! /bin/bash echo "$USER from $SSH_CLIENT at `date`" | mail -s "ssh notice" -aFrom:[送信元メールアドレス] [送信先メールアドレス]
設定後 ssh でリモートログインすると、以下のようなメールが送信されます
Raspberry Pi でアロマ加湿器の ON/OFF を制御する
概要
USB 機器の ON/OFF を Raspberry Pi の GPIO を用いて行う
用意するもの
- USB給電式のアロマ加湿器
基本的になんでもいいんですが、僕は以下の商品を買いました
車載用/USB対応 アロマ加湿器 NAGOMI HF-1217S-CG
- 出版社/メーカー: スリーアップ
- メディア:
- この商品を含むブログを見る
RasPi
リレーモジュール
こちらも基本的にはなんでもいいです。 今回は手元にこちらのモジュールを使用しました。
Arduino ARM、PIC、AVR DSPの電子用の5V 2チャンネル リレー モジュール シールド
- 出版社/メーカー: GAOHOU
- メディア: エレクトロニクス
- この商品を含むブログを見る
- USBコネクタ
USB 機器との接続用
USBコネクタ 1口タイプ <黒ベロ・2個セット><con-573-a>
- 出版社/メーカー: sapporo boueki
- メディア:
- この商品を含むブログを見る
- その他ジャンパー線など
あとで書く
// 詳しい配線等は後から追記します
Visual Studio で QT+OpenCV な開発環境を構築した
はじめに
もっとスマートに設定する方法がありそうなので、詳しい方教えてください...
目次
- QT Creator でプロジェクトを新規作成
- qmake コマンドで *.vsxproj ファイルを生成
- とりあえず VS2012 で開いてみる
- リンカー設定の修正
- 一旦諦め...
- とりあえず VS2013 で開いてみる
- NuGet から OpenCV をインストール
- 動作確認
QT Creator でプロジェクトを新規作成
QT Creator を起動し [新しいプロジェクト] を選択.
テンプレートは [アプリケーション]->[Qt Quick アプリケ−ション] を選択. その後の設定は特に変わったことをせず作成.
実行してみる.
当然動く.
qmake コマンドで *.vsxproj ファイルを生成
次に qmake
コマンドを用いて Visual Studio 用のファイルを生成する.
生成にはプロジェクトのルートディレクトリで以下のコマンドを発行すれば良い.
qmake -spec win32-msvc2012 -tp vc
実行すると、[プロジェクト名].vsxproj
と [プロジェクト名].vsxproj.filters
の 2 個のファイルが生成される.
とりあえず VS2012 で開いてみる
うん. とりあえず Visual Studio 2012 でプロジェクトを開いてみる.
そしてそのままビルドすると、以下のエラーが起こった.
エラー 1 error LNK1112: モジュールのコンピューターの種類 'x64' は対象コンピューターの種類 'X86' と競合しています。
調べてみると、リンカーの設定を変更すれば直るっぽいエラーのようだった.
リンカー設定の修正
修正には この記事(error LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。) を参考にし行った.
が、しかし何度設定をやり直してもエラーが消えなかった...
一旦諦め...
いくらやってもエラーが取れないので、ご飯を食べた.
とりあえず VS2013 で開いてみる
何を思ったか、同じプロジェクトを Visual Studio 2013 で開いてみた.
すると.... なぜか実行できるようになった !!
よくわからない.
NuGet から OpenCV をインストール
OpenCV の導入には NuGet を用います.
バージョン 2.4.8 がインストールされました.
動作確認
Web カメラ画像を取得し表示させてみます.
うまく動作しました.
要検証項目
- VS2012 でリンカーエラーが消えない点
- VS2013 ではなぜか正常に実行できる点
参考URL
munin で hddtemp_smartctl が上手く取得出来ない
hddtemp_smartctl が動かない
# munin-run hddtemp_smartctl Can't exec "-A": No such file or directory at /etc/munin/plugins/hddtemp_smartctl line 214. sda.value U sda.extinfo Command -A /dev/sda on drive sda failed: -1. The plugin needs to have read permission on all monitored devices. [ERROR] Command -A /dev/sda on drive sda failed: -1. The plugin needs to have read permission on all monitored devices. Can't exec "-A": No such file or directory at /etc/munin/plugins/hddtemp_smartctl line 214. sdb.value U sdb.extinfo Command -A /dev/sdb on drive sdb failed: -1. The plugin needs to have read permission on all monitored devices. [ERROR] Command -A /dev/sdb on drive sdb failed: -1. The plugin needs to have read permission on all monitored devices. #
The plugin needs to have read permission on all monitored devices. とのことだったので、パーミッション周りを弄っては、munin を再起動してって感じで試してみたのですがうまくいかず…
いろいろ弄った挙句、そもそも smartctl コマンドが無かったのが原因で上手く動作しなかったようです
smartctl をインストール
# aptitude install smartmontools
温度が正常に取得出来ました。
# munin-run hddtemp_smartctl sda.value 41 sdb.value 45 #
hoge
hogehoge
# sudo apt-get update