カテゴリー別アーカイブ: ガジェット

ディスプレイの性能について備忘録

ディスプレイの性能について、知らないことが多そうだったので、自分が知らなかった事を中心にまとめておきます。

手元のディスプレイ自体はちょっと前に買い替えてしまったのですが、自分のディスプレイがどれほど高機能なのか知っておくことは大切です。

ちなみに私が買ったのはDell SE2717Hというモデルです。

Dell SE2717H

少し前に2万円ほどで購入したのですが、これを基準にディスプレイの性能を見ていきましょう。

もくじ

  • 中間階調について
  • ディスプレイのタイプごとの応答速度について
  • FreeSyncについて
  • フリッカーフリーについて
  • コントラスト比について
  • HDRについて
  • ガンマ特性とガンマ補正について

中間階調(GtoG)について

応答速度はかつて黒から白に切り替わるまでの速度が示されることが多かったのですが、現在は中間の色から中間の色まで切り替わるまでの速度が示されていることが多いようで、それを表す際にGtoG(Gray to Gray)という表記が使われています。

実際に私のディスプレイの応答速度も6ms(GtoG)という事で、中間色の切り替え速度が表記されていました。

この速度は平均値か最短値を示しているのですが、残念ながら私のディスプレイにはそこまで明記されていませんでした。

ディスプレイのタイプごとの応答速度について

最近のディスプレイは液晶が主流なので、液晶画面について書いておきます。

なお、ブラウン管とブラズマディスプレイは液晶に対して応答速度が非常に早く、表記する必要がないそうです。

液晶画面にはTN型、IPS型、VA型の3種類がありますが、中間色に対して早い応答速度を持つのはIPS型だそうです。

ただし、黒から白への切り替えが速いのはVA型、TN型となっています。

TN型、IPS型、VA型について

最近の廉価な液晶はだいたいIPS型かTN型な気がします。

個人的にはTN型はあまりよくないイメージがあり、VA型は高級品というイメージがあったのですが、ちゃんとした知識は無かったのでまとめておきます。

ただ、調べたところ少し情報が古いようなので、現状をちゃんと示しているかはわかりません。

方式 視野角 応答速度 GtoG コントラスト比 価格 Amazon商品数
TN 狭い 速い 遅い 高い 安い 241
IPS 広い 遅い 速い 低い 普通 1029
VA 普通 速い 遅い 非常に高い 高い 42

Amazonの商品数を見る限り、IPS以外の液晶はあまり数がありません。

もしかすると液晶画面はIPS液晶が主流になりつつあり、VAやTNは廃れつつあるのかもしれません。

ただしVA型は高価な製品も多くあったので、高性能ディスプレイでは用いられていそうです。

FreeSyncについて

私のディスプレイが対応しているようなのでメモ。

FreeSyncはAMDのグラフィックボードで使える機能で、「プロセッサーとモニター間の通信障害を解決し、画像のティアリングのない、安定した滑らかなゲ​ームプレイを簡単に楽しむことができる」らしいです。(公式サイトから引用)

ティアリングとは、モニターの書き換え時に起きる表示画像のズレが見えてしまう事です。

ゲームの際に用いられる機能のようなので、普段の作業にはあまり関係ないようですね。

フリッカーフリーについて

こちらも私のディスプレイが対応しているようなのでメモ。

フリッカーとは、バックライトの輝度を調節する際の方式が原因で発生するちらつきのことです。

フリッカーは目に負担をかけるので、それを発生させないような輝度の調整方式をフリッカーフリーといいます。

詳しくはわかりませんが、最近は対応しているディスプレイも多いのではないでしょうか。

コントラスト比について

コントラスト比については、輝度と深くかかわっています。

私のディスプレイはコントラスト比が1000:1で輝度が $300cd/m^2$ となっています。

コントラスト比は最大輝度(白):最小輝度(黒)を表しているので、私のディスプレイの最小輝度は $0.3cd/m^2$ となります。

ただし、コントラスト比はあくまで比率なので、最大輝度:最小輝度が $400cd/m^2 : 0.4cd/m^2$ でもコントラスト比は1000:1となります。

コントラスト比は高いに越したことはありませんが、同じコントラスト比の場合は明るいディスプレイが欲しいか、黒がより黒いディスプレイが欲しいかで輝度を見てから選ぶ必要があります。

また、ダイナミックコントラスト比はあまりあてにならないので、標準コントラスト比と輝度からディスプレイを選ぶといいと思います。

HDRについて

HDRは高級ディスプレイで使える機能なので、現状はあまり気にする必要はないかもしれません。

HDRはHigh Dynamic Rangeの略で、ディスプレイに表示できない高コントラスト比の映像を映そうという試みの元誕生した手法です。

HDR自体には規格がいろいろとあるので、コントラスト比がどこまで上がるかはものによりますが、 $1000cd/m^2 : 0.1cd/m^2$ くらいのHDR対応ディスプレイは存在しているようで、ディスプレイによって映り方が大きく異なるようです。

正直HDR自体はまだまだ過渡期のようで、昔の規格とのすり合わせだったり、色の合成手法だったりでメーカーはかなり苦戦しているようです。

もしHDR対応ディスプレイを買うのであれば、なるべく信頼できるメーカーの製品を買うことをお勧めします。

DVIのデュアルリンクについて

あまり意識していなかったので知りませんでしたが、DVIにもシングルリンクトデュアルリンクという端子があるようです。

シングルリンクだとUXGA(1600×1200)までしか対応していないので、デュアルリンクを使うのが良さそうです。

手元の端子を確認したところ全てデュアルリンクだったので、気にすることでもないのかもしれませんね。。

ガンマ特性とガンマ補正について

ガンマ特性とは色と明るさの関係のことで、ディスプレイを明るくすると色が薄くなり、暗くすると色が濃くなることです。

これを補正するのがガンマ補正であり、色にムラが出ないよううまく調節する機能となります。

性能表にはあまり書いていませんが、製品を見分けるうえで重要なので、店頭でディスプレイの輝度を変えて確認するのがいいかもしれません。

Nintendo Switchがあっさり予約できた件

amazonのswitchの画像(直リン)

来月3日に発売が迫っているNintendo Switchですが、マイニンテンドーストアやAmazon、ヨドバシオンラインでは現在在庫なしとなり、予約ができない状態になっています。

私もオンラインストアの状況を見て予約は無理だろうと思っていました。

しかし、昨日家電量販店に寄ったところ在庫ありとなっており、あっさりと予約できてしまいました

これはおかしいだろうと思い自分の足で調べてみたところ、やはり私が予約できたのは偶然ではなく、店舗には予約枠がかなり残っていることがわかりました。

今回はその経緯とご報告を書かせていただきます。

Nintendo Switchは品薄になっている?

Nintendo Switchが予約を開始したのは1月の21日でした。

その時点でAmazonやヨドバシオンラインなどの予約分は完売となり、入手困難を叫ぶ人も多かったと思います。

現在でもAmazonの表示は品切れとなっており、転売屋が価格を釣り上げています。

スクリーンショット 2017-02-09 21.46.18

本来なら3万2千円前後で買えるものが4万越えとなっていますね。

私も購入を諦めていましたが、実際に店舗を見てからにしようと思い家電量販店に向かったのでした。

実際のところ在庫は潤沢。ヨドバシではカラー版も在庫ありに

冒頭にも書きましたが、店舗に行ってみると拍子抜けなくらいあっさりと予約ができました。

私が行った店舗は、横浜ビブレにあるソフマップです。

2月8日時点でも在庫ありでしたが、2月9日時点でも在庫ありとなっていました。

IMG_20170209_192513

ただし、予約できるのはグレーのコントローラー版のみでした。

私は元からグレーを買う予定だったのですぐに予約しましたが、他の店舗でもまだ売っているようです。

2月9日時点では、秋葉原のヨドバシカメラでも予約ができる状態でした。

こちらはうろ覚えですが、カラー版は売れ切れていたかもしれません。

また、横浜のヨドバシカメラも2月9日時点で在庫ありとなっています。

IMG_20170209_180203

こちらではカラー版も予約が可能でした。

私がこの日巡った家電量販店では、全ての店舗で在庫ありの状態になっていました。

品薄という情報が出回っていただけあって、この事実には驚きを隠せません。

転売屋やアフィサイトのデマが流れたか

本当のところは分かりませんが、Nintendo Switchが品薄と言われているのはデマが広がったせいではないかと感じます。

実際に店舗へ行ってみるとネットに流れる情報とは異なり、全く品薄ということはありませんでした。

こういう事態が起きたのはろくな取材もせずに虚偽の記事を量産するアフィサイトや、悪質な転売屋などがデマを流したためという可能性も考えられます。

私もそれに踊らされてしまったので偉そうなことは言えませんが、しっかりと情報を見極め、実際に見て判断する冷静さを身に付けたいものですね。。

PQI Air Card向けにSSL付きcurlをコンパイル(まとめ)

以前からPQI Air Card向けにcurlをコンパイルしてきましたが、かなりハマったため記事が数回に分かれてまとまりがなくなっていました。

今までの記事

そこで、今度届くPQI Air Penの予習も兼ねてcurlのコンパイルをいまいちどまとめて見ようと思います。

今回作ったファイルは、こちらに置いておきます。

[http://wp.sakaki333.com/wp-content/uploads/2017/01/curl_pqi.tar.gz]

バイナリとライブラリをコピーするなりして使っていただけると幸いです。

環境

  • ubuntu 16.04 64bit(VM)
  • こちらの記事でsshやbusyboxなど導入済みのPQI Air Card

準備

まずはコンパイラを準備します。コンパイラは32bit向けのものを使うため、32ビットバイナリが動くようにしておきます。

$ sudo apt-get install lib32z1

作業ディレクトリを作っておきます。

$ mkdir -p ~/pqi/bin
$ mkdir ~/pqi/source
$ cd ~/pqi

コンパイラは、ここから取得します。

$ wget https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ mv arm-2010q1 arm-dev
$ export PATH=$PATH:~/pqi/arm-dev/bin

arm-でタブを打って、補完が効くか確かめます。

$ arm-none-linux-gnueabi-[TAB]
arm-none-linux-gnueabi-addr2line  arm-none-linux-gnueabi-g++        arm-none-linux-gnueabi-gprof      arm-none-linux-gnueabi-readelf
arm-none-linux-gnueabi-ar         arm-none-linux-gnueabi-gcc        arm-none-linux-gnueabi-ld         arm-none-linux-gnueabi-size
arm-none-linux-gnueabi-as         arm-none-linux-gnueabi-gcc-4.4.1  arm-none-linux-gnueabi-nm         arm-none-linux-gnueabi-sprite
arm-none-linux-gnueabi-c++        arm-none-linux-gnueabi-gcov       arm-none-linux-gnueabi-objcopy    arm-none-linux-gnueabi-strings
arm-none-linux-gnueabi-c++filt    arm-none-linux-gnueabi-gdb        arm-none-linux-gnueabi-objdump    arm-none-linux-gnueabi-strip
arm-none-linux-gnueabi-cpp        arm-none-linux-gnueabi-gdbtui     arm-none-linux-gnueabi-ranlib

依存ライブラリをコンパイル

コンパイラができたので、まずはzlibをコンパイルします。

$ cd ~/pqi/source
$ git clone git://github.com/madler/zlib.git
$ cd zlib
$ git checkout -b work_1.2.8 v1.2.8
$ export CC=arm-none-linux-gnueabi-gcc
$ ./configure --prefix=$HOME/pqi/bin/zlib
$ make 
$ make install

次にopensslをコンパイルです。

$ cd ~/pqi/source
$ wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz
$ tar xf openssl-1.0.2j.tar.gz
$ cd openssl-1.0.2j
$ ./Configure dist --prefix=$HOME/pqi/bin/openssl
$ make CC="arm-none-linux-gnueabi-gcc" AR="arm-none-linux-gnueabi-ar r" RANLIB="arm-none-linux-gnueabi-ranlib"
$ make install

curlをクロスコンパイル

$ cd ~/pqi/source
$ wget http://curl.haxx.se/download/curl-7.37.1.tar.gz
$ tar xf curl-7.37.1.tar.gz
$ export ROOTDIR="${PWD}"
$ cd curl-7.37.1/
$ export CROSS_COMPILE="arm-none-linux-gnueabi"
$ export CPPFLAGS="-I${HOME}/pqi/bin/openssl/include -I${HOME}/pqi/bin/zlib/include"
$ export LDFLAGS="-L${HOME}/pqi/bin/openssl/lib -L${HOME}/pqi/bin/zlib/lib"
$ export AR=${CROSS_COMPILE}-ar
$ export AS=${CROSS_COMPILE}-as
$ export LD=${CROSS_COMPILE}-ld
$ export RANLIB=${CROSS_COMPILE}-ranlib
$ export CC=${CROSS_COMPILE}-gcc
$ export NM=${CROSS_COMPILE}-nm
$ export LIBS="-lssl -lcrypto"
$ ./configure --prefix=${HOME}/pqi/bin/curl --target=${CROSS_COMPILE} --host=${CROSS_COMPILE} --build=x86_64-pc-linux-gnu --with-ssl --with-zlib
$ make
$ make install

前回はエラーが出たりもしましたが、今回はすんなりと通りました。

ちなみに生成されたディレクトリは以下のようになっていました。

├── bin
│   ├── curl
│   └── curl-config
├── include
│   └── curl
│       ├── curl.h
│       ├── curlbuild.h
│       ├── curlrules.h
│       ├── curlver.h
│       ├── easy.h
│       ├── mprintf.h
│       ├── multi.h
│       ├── stdcheaders.h
│       └── typecheck-gcc.h
├── lib
│   ├── libcurl.a
│   ├── libcurl.la
│   ├── libcurl.so -> libcurl.so.4.3.0
│   ├── libcurl.so.4 -> libcurl.so.4.3.0
│   ├── libcurl.so.4.3.0
│   └── pkgconfig
│       └── libcurl.pc
(略)

容量を減らすためにstripしておきます。

$ cd ~/pqi/bin/curl/lib
$ arm-none-linux-gnueabi-strip libcurl.so.4.3.0

これでもともと2.5MBだったライブラリが2.1MBくらいに減りました。

ファイルのコピー

さて、前回はman以外は全部コピーしていましたが、よく考えたら普通にヘッダーとか要りませんよね。

てことで、コピーするのはバイナリとライブラリだけにします。

さらに、前回はシンボリックリンクのライブラリをFAT32に置けるようにフルコピーしていましたが、今回は読み込んでくれそうな名前にリネームして1つだけ置くことにしました。

手元のLinuxのcurlがlibcurl.so.4を参照していたので、それに合わせてリネームします。

$ cp ~/pqi/bin/curl/bin/curl* /path/to/pqi/DCIM/122_TREK/usr/bin/
$ cp ~/pqi/bin/curl/lib/libcurl.so.4.3.0 /path/to/pqi/DCIM/122_TREK/usr/lib/libcurl.so.4
$ ls /path/to/pqi/DCIM/122_TREK/usr/bin
curl curl-config
$ ls /path/to/pqi/DCIM/122_TREK/usr/lib
libcurl.so.4

PQI Air Cardを再起動させた後にSSHして、curlを実行してみます。

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 root@(PQI Air CardのIPアドレス)
# curl
curl: try 'curl --help' or 'curl --manual' for more information
# curl -k "https://raw.githubusercontent.com/github/gitignore/master/Java.gitignore"
*.class

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

無事にできているようですね!

前回の反省も含めて色々と改善してみましたが、設置するファイルも減って満足です。

まだまだ勉強不足かと思いますし、ご指摘あれば何なりと言ってください!

Nintendo Switchが最高に欲しいと思った件

この記事は大学の課題で書いていますが、普段の記事と同い位置付けで書いています。

今回は授業でも取り上げる人がいましたが、Nintendo Switchについてです。授業では否定的な意見が多かった気もしますが、本稿では逆に肯定的な立場から書いています。

アウトライン

  • 問い:Switchってどうなの
  • 主張:主張したい。最強のポータブルゲーム機であると。
  • 論証:ジョイスティックに自由なプレイスタイル。価格も性能も十分。

Switchってどうなの

先日行われた任天堂の発表会、私は心から待ち望んで待っていました。以前から情報はいくつか出ていましたが、新作のハードであるNintendo Switchのお披露目が行われたのです。次々と発表される機能やSwitch向けの新作タイトルのムービーに私はいたく感激し、必ずやSwitchを買おうと心に決めたのでした。

しかし、世間的には冷ややかな反応も散見され、いまいちSwitchの魅力が十分に伝わっていないのではとも思います。そこで、批判的な人の心を変えることはできずとも、買おうか悩む人に魅力を伝えられれば本望と思い立ち、このような記事を書くに至りました。

主張したい。最強のポータブルゲーム機であると。

さて、私が声を大にして主張したいのは、Switchはポータブルゲーム機としては間違いなく最強だということです。私は今までスマホやタブレット、3DSなど、様々な条件でモバイルでのゲームプレイを試してきました。

しかし、特にアクションゲームや自由度の高いゲームについて、まともにプレイできたのはVitaだけでした。そのVitaでさえ、性能不足で表現の幅が限定されており、限界が見えてきている状況です。

そんな時に現れたのがSwitch。Switchはモバイル端末としては性能が高く、操作性も良いので、忙しくて大きな時間が取れない状況でも最高のゲーム体験ができるはずです。

ゲームが好きだという人や、スマートフォンのゲームとはまた違ったゲームをしてみたいという人には、かなり有力な選択肢になるのではないでしょうか。

ジョイスティックに自由なプレイスタイル。価格も性能も十分。

具体的にSwitchが最高であるポイントは2つあります。1つはモバイルながらジョイスティックや物理ボタンが付いていること。もう1つは性能が高く価格も安いことです。

ジョイスティックや物理ボタンは、アクションゲームなど高度な操作が求められる場面では必須と言っても過言ではありません。さらにSwitchにはフルサイズのコントローラと同等のボタンもありますので、操作は圧倒的に快適になるでしょう。

また、性能については憶測の域を出ませんが、Tegra X1というプロセッサを使っていればかなり速いはずです。SwitchにはTVモードとモバイルモードがあり、モバイルでは性能をかなり落とすという話もありますが、そもそもモバイルでは画素数が落ちる分負荷も下がるので問題ありません。

さらにPlaystation4が低価格で高性能なように、専用機は価格対性能比が高くなる傾向にあります。値段も3万円なので、高性能なモバイル機器としてはかなり安めだと言えます。

おわりに

いろいろと書きましたが、Switchの一番素晴らしいところは「ゲームの可能性が広がる」ことだと思います。任天堂がこんな面白そうなデバイスを出してくれて、私はすごく嬉しいです。

ゲームという娯楽は最高に楽しいです。Switchに限った話ではありませんが、是非ともたくさんの人に最高のゲーム体験をして欲しいと願ってやみません。

MacBookを買ってみて思ったこと

この記事は授業の課題として書いていますが、普通の記事と同じ位置付けで書いています。

アウトライン

  • 問い:MacBookは使いやすいのか
  • 主張:ハードは最高だがOSはそれなり。でもやっぱり良い
  • 論証:ユーザー中心のものづくり。それが行き過ぎるところも・・・?

問い:MacBookは使いやすいのか

まず正直に書くと、私はAppleがあまり好きではありません。製品もすごく良いし、技術も相当だと思います。しかしあの会社、色々と独占的すぎて好きになれませんでした。そんな私が初めてApple製品であるMacBookを買い、実際にしばらく使ってみて、本当に使いやすいのかを確かめてみました。

私はどちらかと言うとWindowsやLinuxに傾倒している人間なので、比較的少数派なレビューが書けるかと思います。

主張:ハードは最高だがOSはそれなり。でもやっぱり良い

さて、実際にMacBookを使ってみて思った事は、ひたすらハードが最高だと言う事です。私が買ったのは12インチMacBook(2016)のcore m3モデルでしたが、見た目が最高にかっこいいです。しかも薄くて軽いし、バッテリー持ちもとても良い(これはOSの影響もありますが)。MacBookに買い換えてからは機動性も上がり、作業できる時間や幅が広がりました。

キーボードは調べた限り賛否両論でしたが、これも慣れてしまえばとても気持ち良いですね。とにかく、ハードは最高です。

一方で、MacBookのOSであるMacOSは比較的普通という印象でした。これは別に他が良いと言うわけではなく、WindowsやLinuxでできる事が普通にできて、プログラミングなどの仕事にもそこそこ使えて、操作性も他と同じく悪くないと言う意味です。

論証:ユーザー中心のものづくり。それが行き過ぎるところも・・・?

全体的に、Appleはユーザーを中心に考えてものを作るのが上手だと感じました。「こういうものを作るぞ!」という機能中心のものづくりではなく、使っていてこうだったら便利だろうなという考えを中心に設計を行なっているからこそ、こうした最高のハードが生まれているのではないかと思います。

一方で、OSの部分は少しお節介というか、ユーザーを枠にはめすぎているように感じる節もありました。フォントが綺麗だったりバッテリー管理が上手だったりと魅力も多いですが、あえて選ぶほどでもないという印象です。

とはいえ、総合的にMacBookは相当最高なので、一度は使ってみるといいかもしれません。

(847文字)

PQI Air Card用のcurlバイナリ

新しい記事を書きました

これまでいくつかの記事でPQI Air Card向けにCurlをクロスコンパイルする記事を書きましたが、いちおう作ったバイナリをアップロードしておきます。

https://drive.google.com/file/d/0B-3u42eq1U4WRkhFZlR3MlBSSEE/view?usp=sharing

なお、とりあえず動けばよかったのでstripやファイルの整頓などをちゃんと行っていません。

実機に入れ直して動くかなどもきちんと確認していないのでいろいろと申し訳ないのですが、とりあえずcurl関連で作ったファイルを入れておきました。autorun.shでリンクするなどして使っていただければと思います。

何か問題などありましたら、コメントなど残していただけるととても助かります。

【課題】スマートウォッチは何が便利なのか

この記事は大学の課題として作成していますが、普段の記事と同じ位置付けで書いています。

あらすじ

大学の授業の課題も7回目に入り、本格的にネタ切れになってきました。

正直言うと今回も提出期限は金曜日なので、25時間オーバーということになります。すみません・・・

ネタ切れというか、背伸びして堅苦しいことを書こうとしすぎてる感が否めませんので、今回は緩い話題を書いていきたいと思います。

アウトライン

  • 問い:スマートウォッチって便利なの?
  • 主張:通知が見れるだけで思った以上に便利
  • 論証:LINEやメール、Twitterなどは確認できるだけで十分

では、書いていきたいと思います!


スマートウォッチって便利なの?

Apple Watchを代表とするスマートウォッチは、最近のIoTデバイスの身近な代表例の1つです。

しかし実際に買うとなると、どういう場面でどれくらい便利なのか、いまいち実感が湧かずに躊躇する方も多いかと思います。

そこで私が実際にスマートウォッチを購入し、どのような場面で便利なのかを調べてみました。

今回購入したのはMotorolaのMoto 360というスマートウォッチです。

img_20161115_085118

通知が見れるだけで思った以上に便利

さて、実際に使ってみて便利だと感じたのは、何といっても通知が来ることでした。

スマートウォッチを購入する前は通知が見れることはたいしたメリットではないと思っていましたが、実際に使ってみると通知が見れるだけでスマホを開く回数が大幅に減っていることに気付きました。

おかげで(恥ずかしながら以前はやっていた)歩きスマホもほとんどしなくなり、端末の電池持ちも良くなりました。

スマートウォッチにはこの他にも心拍計やナビ機能などといろいろ付いていますが、今のところ一番便利なのは通知機能に他ならないと思います。

LINEやメール、Twitterなどは確認できるだけで十分

ではなぜ、通知が見れるだけでスマホを開く回数が減ったのか。

考えてみると、私は以前まで何気ない時間にスマホを開いて通知を確認したり、SNSの返信をしていたと思います。

しかし、そのブツ切りの短い時間では、作業効率はお世辞にも良かったとは言えませんでした。

スマホを取り出して、ロックを解除して、操作をして、再びポケットにしまう。

ちょっとした時間にこなすにはあまりにも作業量が多すぎます。

スマートウォッチを使い始めてから、ふとした瞬間に通知を確認し、作業内容を考え、あとでまとめてこなす、という流れが身に付いたように思えます。

ちょっとした時間に見れるのがスマートウォッチ最大の利点だと認識させられました。

いかがだったでしょうか。世間的にはまだまだ普及していないスマートウォッチですが、個人的にはなかなかオススメです!

(860文字)

Windows10とUbuntu16.04でBluetoothデバイスを共有

タブレットでUbuntuとWindowsをデュアルブートして使っているのですが、Bluetoothキーボードをデュアルブートで使っていると取り回しがとても悪いですよね。

共有できる方法を調べて、少し工夫するとうまくいったのでメモを残します。

こちらの記事を参考にさせていただきました。

環境

  • Ubuntu 16.04 64bit
  • Windows 10 Insider Preview Build 14931
  • Microsoft Wedge Mobile Keyboard

手順

※ Markdownのコードブロックがうまく動かなかったので、変な書き方になってしまいました。すみません・・・

  1. まず、普通にUbuntuでペアリングした後に普通にWindowsでもペアリングします。
  2. その後、ここからPsToolsをダウンロードします。
  3. 展開したら管理者権限でコマンドプロンプトを開き、展開したディレクトリに移動します。
  4. 次のコマンドを実行します
    PsExec.exe -s -i regedit.exe
  5. レジストリエディタが起動するので、次の場所を探してください。(元記事だとControlSet002でしたが、私の環境だとControlSet001にありました)
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\B THPORT\Parameters\Keys\xxxxxxxxxxxx(BluetoothアダプタのMACアドレス?)
  6. ペアリングしたデバイスのMACアドレスが名前となったレジストリキーの値をメモします。
  7. Ubuntu側で以下のファイルを管理者権限で開きます。
    /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY(ペアリングしたいデバイスのMACアドレス)/info
  8. LinkKey項目内のKeyをメモしたものに編集します(大文字&スペース無し)
    [LinkKey]
    Key=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(メモしたリンクキー)
  9. 再起動します

これで、Bluetoothデバイスが複数OSで使えるようになっているはずです。

リンクキーを共有できれば、Bluetoothデバイスを複数環境下で使えるんですね。

PQI Air Cardのowncloud同期スクリプト書いてみた

何度目になるかわかりませんが、PQI Air Cardネタです。

以前からPQI Air Cardで自動同期する方法を模索しており、前回まででPythonとcURLをクロスコンパイルして導入しました。

なお、用途としてはデジカメの撮影画像やPS4のスクリーンショットなどを自動的にowncloudに同期したい、という感じです。

せっかくPythonとCurlを導入したので、今回は自動同期のスクリプトをPythonで書いてみることにしました。

流れ

  1. ネットワークに接続されるまで待機
  2. curlでowncloud側のファイル一覧を取得
  3. 対象のファイルがowncloudに存在しなければ送信

2と3はcurlコマンドで実現可能ですので、subprocessからcurlを呼ぶことで全て任せました。

send_picture.py

#!/usr/bin/env python2.7
# -*- coding:utf-8 -*-

import os, subprocess, json, time, urllib

path = os.path.abspath(os.path.dirname(__file__))

if subprocess.check_output("ps").count("python") > 1:
print "Another sync process is running."
exit(0)

while "192.168" not in subprocess.check_output("ifconfig"):
time.sleep(3)

with open(path + "/config.json", "r") as f:
configs = json.loads(f.read())
for index, config in enumerate(configs):
for key, value in config.items():
configs[index][key] = value.encode("utf-8")

with open(path + "/suffixes.json", "r") as f:
suffixes = json.loads(f.read())

def list_owncloud_pics(config):
precmd = "curl -k -X PROPFIND -u {username}:{password} \"{url}\""
cmd = precmd.format(**config)
print cmd
raw = subprocess.check_output(cmd, shell=True)

def is_file_name(elem):
for suffix in suffixes:
if elem.endswith(suffix):
return True
files = list(filter(is_file_name, raw.replace("<", "/").split("/")))
return list(map(lambda f: urllib.unquote(f), files))

def push_file(config, picture):
precmd = "curl -k -X PUT -u {username}:{password} \"{url}/{picture}\" --data-binary @\"{destination}/{picture}\""
cmd = precmd.format(picture=picture, **config)
print cmd
subprocess.call(cmd, shell=True)

def backup(config):
uploaded = list_owncloud_pics(config)
dirpath = config["destination"]
files = os.listdir(dirpath)
for picture in files:
if True not in map(lambda suffix: picture.endswith(suffix.encode("utf-8")), suffixes):
continue
if picture in uploaded:
continue
push_file(config, picture)

while True:
for config in configs:
backup(config)
print "sleeping..."
time.sleep(10)

config.json

[{
"url": "https://yourowncloud.com",
"username": "username",
"password": "password",
"destination": "/path/to/your/picture_dir"
}]

suffixes.json

[".JPG", ".jpg", ".PNG", ".png", ".jpeg"]

なぐり書きしたプログラムなので非常にお粗末で申し訳ないですが、一応私の環境では動作しているのでお許しください。。

注意点として、まずPQI Air Cardではこれを走らせる事しか考えていないので、複数起動防止としてpsでPythonプロセスが走っているかチェックを行っています。

また、ifconfigで192.168..の文字列が出力されるかでネットワーク疎通のチェックを行っているので、環境によっては普通に動きません・・・

エラー処理も全く書いていないので、失敗するとプログラムが止まります。

当方ではautorun.shとcronで毎分起動することでなんとか運用していますが、暇があればもう少し改良したいですねぇ〜

試してみた

Linuxのowncloudをインストールした環境で、自動同期を試してみました。

PS4のスクリーンショットのディレクトリをconfig.jsonに登録してしばらく待ってみると、ちゃんとPQI Air Card内の画像が手元のPCにダウンロードされているのが確認できました。

screenshot-from-2016-10-17-18-42-26

これで、ようやく家でも出先でも快適なSDカードライフが送れそうです…

PQI Air CardにSSHする

これまで何回かPQI Air Cardに関する記事を書いてきましたが、SSHにもちょっとした工夫が必要なので書いておきます。

普通にSSHしようとすると、

$ ssh user@ip
Unable to negotiate with ip port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

となり拒否されてしまいます。

これはPQI Air CardのSSHが使っている暗号化の方式が古いことで起きるエラーなので、ローカルから接続する場合は許容するようにしてしまいましょう。

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@ip