時には立ち止まってみるのもいいよ

仕事の合間の息抜き&備忘録。最近息抜きと仕事の区別がついていない。

Windows10 のロック画面画像が変わらない件(解決)

知ってる人には今さら、かもしれませんが。

 

Windows10のログイン画面とかロック画面で、Microsoftのおすすめ画像がでる「Windowsスポットライト」というのがあるんですが、なんかのはずみで画像が切り替わらなくなってしまったのです。

Microsoft(JP)のフォーラムでも質問が出てますが何かイマイチな回答しか得られず。。

 

実害が無いので放っておきたかったんですが、どうにもそこの写真が気に入らなくて、いろいろ探したらわかりました。

 

ちょっと特殊なファイルを削除するので、いつものように自己責任でお願いいたします。m(_._)m

 

  1. スタートメニュー→設定(歯車アイコン)→「個人用設定」→「ロック画面」を表示
  2. 「背景」の設定を「画像」にかえる(スライドショーでもいいかも)
  3. C:\Users\poiuy56\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_XXXXXXXXXXX\Settings
    のフォルダを開いて、中にあるファイルを消す。
    ※ poiuy56のところは自分のユーザー名です
    ※ XXXXXXXXのところはランダムな英数字みたいです
  4. 「ロック画面」の設定で「背景」を「Windowsスポットライト」に戻す

 

まぁ想像するに、スポットライト画像を変更しないようにするロックファイルが保存されてて、そいつが何らかの原因で消すタイミングがなくなって、変更できないままになってるんじゃないかと。

 

元ネタはこちら↓

 

answers.microsoft.com

マストドン v1.4の悲劇 (CentOS7+非Docker)

流行ってんだか流行ってないんだかよくわからないマストドン

 

思うところあってインスタンスを立てようとしたらハマったのでメモ。

#Dockerな人たちはこういう問題は起こらないのかな?

 

まっしろ現象

ver1.4 にしたら↓こんなことになっちゃった人むけ。

画面真っ白。

f:id:poiuy56:20170619203934p:plain

 

原因

github.com

ここら辺の話が元で、要するに /home/mastodon/live/public を読めなくなるってことです。

パターンとしてはたぶん2つあって、

  1. nginxを使ってる → /etc/nginx/conf.d/mastodon.conf の設定 or /home/mastodonパーミッションの問題
  2. nginxを使ってない → これはどうしようもないけど RAILSの設定を変えれば回避可能

 

nginxを使ってる場合

v1.4になったあたり(たぶん)でproduction_guideの記述が変わってて、nginxの設定ファイルが以下のようになっています。

location ~ ^/(packs|system/media_attachments/files|system/accounts/avatars) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }

v1.4で静的なファイルが public/asset から public/packs とかにかわってるので、それの対応です。

 

古いproduction_guideの記述だとここの記述がなかったりパスが違ってたりして、その場合はnginxがrailsに丸投げしてて、rails側で静的なファイルを出していたようです。

 

で、v1.4に変わったときにrailsが静的ファイルを出さなくなったもんで、エラー(404)になると。

上のlocationがあると、railsに渡す前に nginxが静的ファイルを配信してくれるので、うまいことやってくれます。

 

locationちゃんと書いたけど動かねーよ!!

という人は私でした。

普通にadduser mastodon してたので、/home/mastodon の権限が0700になってて nginxからは見えなかったという初心者オチでしたよ orz

 

nginx使ってない場合

IISとか、別のサーバーからプロキシしてるパターンですね。

結局現象としては上と同じで、railsが静的ファイルを配信してくれないのが原因です。

 

おそらくセキュリティ的な問題とかでわざと静的ファイルを出さないようにしてると思われますので、以下の解決方法は推奨されないと思います。自己責任にてお試しください。

 

で、件のissueに回答している人のコメントから得た答えがこちら。

RAILS_SERVE_STATIC_FILES=true 

 これを .env.production に1行加えればよろしい。

 

これで静的ファイルを配信してくれます。めでたしめでたし。

 

 

Raspberry Pi 3 の電源は本当に2.5A必要なのか?

 

前書き

結論から言ってしまうと、以下で書いているのは、RasPi3でもUSBには2.5Aも必要ないんじゃないか、という趣旨の記事です。が、当然使用環境などによって動作条件は変わってきますので、動作に問題がでたり故障したりしても補償できませんので自己責任でお願いします。

 

で、本題

Raspberry Pi 3が2月末に本国でリリースされてから、ようやく技適が通って日本国内でも販売が開始され、ボクのところにも先日実機が届きました。

 

で、本国リリース時からネット上で「電源容量は2.5Aを推奨」とか言っていたので、基本的にビビリな自分はあらかじめ

 

 

 こんなのを購入していたわけです。

 で実際に起動して測ってみると、

RasPi2もPi3も、消費電流は大して変わらんゾ?

という結果に。

具体的に言うと、有線LAN接続でBTも使わない状態で、

  • Raspbianを起動してGUIが立ち上がってる状態で5.1V/0.23~0.25Aくらい
  • ウインドウをグリグリ動かすと、Pi2で0.30~0.35, PI3でも最大0.40Aくらい
  • omxplayerでのFullHD H.264 MP4動画再生はどちらも0.30A以下。

てな感じでした。

これって、普通に1AのACでいけるんじゃないでしょうかね。。

 

ソースは?

2.5A必要!っていう話の元の記事ってたぶん↓これかなと。

www.raspberrypi.org

ここに書かれている文書を引用すると、

All of the connectors are in the same place and have the same functionality, and the board can still be run from a 5V micro-USB power adapter. This time round, we’re recommending a 2.5A adapter if you want to connect power-hungry USB devices to the Raspberry Pi.

の部分じゃないかと思うんですが、拙い英語力で理解した感じでは

USBに大消費電力のデバイスを差したい場合は2.5Aのアダプタを使うと良いよ

 

と言っているだけのような気が。

この記事のコメントで、Raspi公式のひと?(コメント欄にロゴが付いてる)の曰く、

There is only one recommended power adapter, the 2.5A Raspberry Pi power adapter. But the power consumption is based on 1A to the processor plus 0.3A to the WiFi plus 1.2A to the USB

These are peak values only but of course you can easily get close to those numbers playing software decoded video for example (youtube on chromium!)

だそうなので、まぁ確かに2.5Aを推奨はしていますが、普通に使う分には全然ヨユーじゃないのか、と思う次第です。

 

USBカメラでキャプチャしながらOpenCVで画像解析とか、そういうのだと影響あるかもしれませんね。

 

 

 

AndroidStudio 1.4 + JNI

AndroidStudio1.4でJNIをつかう方法の覚書。

1.3版を書いてる間に1.4がリリースされたのでその辺の記述も。

ってほとんど同じですけd。

 

元ネタはこちら→

Experimental Plugin User Guide - Android Tools Project Site

 

 

1. experimentalなプラグインが必要。

NDKをつかうためのプラグインはGradle2.5が必要なので、その辺も含めて設定をいろいろいじります。何かダウンロードしてインストールする、というわけではありません。

Gradle2.5 + NDK r10e + SDK Build Tools 19.0.0以上が必要です。

  • {PROJDIR}/gradle/wrapper/gradle-wrapper.propertiesファイルを編集して、distributionUrlをgradle-2.5に変更する
    変更後)
      distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-bin.zip
  • {PROJDIR}/build.gradleのクラスパスを変更する
    変更後)
      classpath 'com.android.tools.build:gradle-experimental:0.2.0'
  • {PROJDIR}/.idea/gradle.xmlにgradleHomeオプションがあれば、消す。
    変更前)
    <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.4" />
    ※これに気が付くのにえらい時間がかかった。。
2. Gradle Scripts の変更

元ネタサイトのまとめを適当に日本語化すると、こんな感じ。

  • プラグイン名を"com.android.model.application"に変更する
  • 設定は model {} で囲む
  • ほとんどのプロパティは = で記述する(以前はスペースのみ)
  • Collectionへの追加は += で記述する(proguardんとこの話)

が、いくつか限定条件があって、

  • buildTypes, productFlavors, signingConfigs は android{} ブロックの外に出す
  • android {}ブロックの中にネストされている項目には with キーワードをつける
  • プロパティ値として設定できるのは direct types のみ。
    ※ minSdkVersionとかproGuardFilesの話だと思います。
  • buildTypeやproductFlavorを作成するには create メソッドを使う必要がある。
    ただしrelease buildTypeのような既存のものは名前を指定するだけで使える。
  • dependencyのtestCompileコマンドは使えないようだ。
    ※ AndroidStudio1.4でやるとdependenciesにtestCompileが追加されますが、エラーで通りませんでした。よくわからんのでコメントアウト(^^; いいのか?

 

で、デフォルトのプロジェクトを書き換えたbuild.gradleがこちら。

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.0"

        defaultConfig.with {
            applicationId = "jp.poiuy56.project"
            minSdkVersion.apiLevel = 19
            targetSdkVersion.apiLevel = 23
            versionCode = 1
            versionName = "1.0"
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles += file('proguard-rules.pro')
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
}

 

ここらで一度Gradleを同期してみて、ビルドが通るか確認します。

Gradle-2.5 が読まれていれば、 {PROJDIR}/.gradle/2.5 が出来上がってファイルが配置されてるはずです。

 

3. Gradle Scripts (NDK用の追加設定)
  • {PROJDIR}/local.propertiesにndk.dirを追加。
    SDKLocationで設定すると追加されます。
    ndk.dir=C\:\\android-ndk-r10e
    sdk.dir=C\:\\android-sdk-windows
  • {PROJDIR}/app/build.gradle に android.ndk ブロックを追加
    android.ndk {
    moduleName = "jni-sample"
    CFlags += "-UNDEBUG"
    ldLibs += ["android","log"]
    stl = "stlport_static"
    }
4. JNIソースを追加する
  • appから右クリックで new -> Folder -> JNI Folder でjniフォルダを作成
  • jniフォルダに .c とかを置けばOK

後は普通にJNIですね。nativeメソッドを含むjavaクラスを作って、javahでヘッダ生成、んで中身を実装してjniフォルダに配置すれば、うまくやってくれます←

 

JNIのモジュールを複数に分けたりフォルダを分けたりする方法がよくわからんので今後の課題です。

 

 

 

ソフト屋さんがblueninjaをさわってみてます

前回の続きです。

 

 

TOSHIBAのBSPが入手できました。

思ったよりは早かったですが、署名を送り返す(メールで)作業が面倒ですねぇ。。

わざとかもしれませんが。

 

さて、無事BSPを入手できるようにはなりましたので早速環境を整えましょう。

AppLite | 東芝 セミコンダクター&ストレージ社

ここからTZ1000のBSPを入手します。アカウント登録後ライセンス許諾に署名して送り返すと、BSPがダウンロードできるようになります。

が、

f:id:poiuy56:20150826085934p:plain

なぜかChromeでは1回目のサインインがはじかれます。パスワードはお忘れではないです。

もいっかいやると入れるんですけど。

 

で、ライセンス許諾云々が完了していると、BSPやドキュメント類のダウンロードページが開くようになります。

 

現在(2015/8/26)BlueNinja開発環境として必要なBSPのファイルは、

  • TZ1000 BSP non OS Version for MDK-ARM

ですが、東芝サイトでは最新版が更新されていますので、一つ古いバージョンを取得する必要があります。

f:id:poiuy56:20150826090741p:plain

 

余談ですが、最初「新しいほうがいいじゃね?」と思ってLatestVersionをダウンロードしたら、関数のI/Fが変わっててビルドが通りませんでしたorz 人間の業ですね(ちがう

 

ダウンロードしたZIPファイルの中にある、「TOSHIBA.TZ10xx_DFP.1.31.1.pack」を、Cerevoのスターターガイドにあるように配置してインストールスクリプト(.BAT)を実行すると、おおむね準備完了です。

f:id:poiuy56:20150826091710p:plain

インストールしたらC:\Cerevo\CDP-TZ01B\に一式ファイルがコピーされます。

 

start.shell.batを起動すると、必要な環境変数を設定してコマンドプロンプトが開きますが、このBATファイルは

  • MinGW / MSYS のPATHはすでに通っている
  • GitはC:\Program Files (x86)にインストールされている

のが前提になっていますので、必要に応じてstart_shell.batファイルを書き換えましょう。#って、こんな記事を読んでる人は気づくと思いますけど。。

 

ようやく、環境がでけたので、とりあえずはサンプルをビルドしてみます。

 

start_shell.batを起動後、gitからソースを入手→makeします。

C:\Cerevo\CDP-TZ01B> cd \

C:\> mkdir work

C:\work> git clone https://github.com/cerevo/BlueNinja_BLE_EXAMPLE

Cloning into 'BlueNinja_BLE_EXAMPLE'...
remote: Counting objects: 125, done.
remote: Total 125 (delta 0), reused 0 (delta 0), pack-reused 125 Receiving object
Receiving objects: 100% (125/125), 132.63 KiB | 0 bytes/s, done.
Resolving deltas: 100% (48/48), done.
Checking connectivity... done.

 

C:\work> cd BlueNinja_BLE_EXAMPLE

C:\work\BlueNinja_BLE_EXAMPLE> make

  なんかいっぱい出る

C:\Cerevo\CDP-TZ01B\tools\bin\arm-none-eabi-objcopy -O binary blueninja_ble_example.elf blueninja_ble_example.bin

C:\work\BlueNinja_BLE_EXAMPLE>

うまくいけば、blueninja_ble_example.elfと.binができあがりです。

 

 

 

 

ソフト屋さんがblueninjaをさわってみた

IoTブームの流れで、CEREVOさんから出たblueninjaってーのが気になったので買ってみました。紆余曲折あってちょっと届くのが遅れたけどまぁよくあること。

 

ニュース記事はここらへんとか。

pc.watch.impress.co.jp

 

で、開発環境の資料が見たかったんだけど、現物しか入ってないんです。しくしく。

  • Blueninja本体
  • ブレイクアウトボード
  • バッテリ(初回?限定オマケらしい)
  • ネジ
  • 保証書

保証書に「詳細な情報はオンラインドキュメントを参照」とのことで。

BlueNinja ドキュメント - Cerevo

 

うん。わからん。

ソフト屋さんにはよくわからん用語がいっぱい。

 

実はこのドキュメントはもうちょっと後で必要な話で、開発環境については「スターターガイド」ってのを見ないといけなかったのでした。

BlueNinja スターターガイド - Cerevo

 

ここに、開発環境のつくり方が丁寧に書いてあるので、それにしたがって実行します。

おおざっぱに段取りだけならべると、以下のような感じです。

  • USBで接続する
  • mbedドライバをインストール :USBシリアルで見えるようになる
  • MinGW(msys)をインストール :コンパイルに必要
  • Git for Windowsをインストール :ソースなどの入手に必要
  • BitbucketからBlueNinja BSP (Board Support Package)を入手
  • KeilからARM.CMSIS.3.20.4.packを入手
  • 東芝からTZ1000のBSP(TOSHIBA.TZ10xx_DFP.1.31.1.pack)を入手
  • インストール用BATを実行

 

が、しかし、、

 

東芝からのBSP入手がまだできていません。。

(8/25追記:入手できました)

スターターガイドには、ログインしたら自分でダウンロードできるような感じで書いてあるのですが、2015/08/21現在では東芝のサポート宛てにメールを投げて、ライセンス確認&サインが必要なんだそうです。

 

とりあえず、仕方がないのでメールを投げたところで、今日はここまで。。。

#きっと週末は返事が来ないだろうから、続きは来週かなぁ。。

 

→ つづきはこちら

Raspberry PI 2 + Windows10 IoT Core でアプリ開発

前回、RasPI2に Windows 10 IoT Coreをインストールして、なんじゃこりゃぁってなって、VS2015でアプリが作れるらしいぞ、ってなって、今回に至ります。

 

繰り返しになりますが、Windows10 IoTだけでは何もできないので、アプリを作ってインストールする必要があるわけです。で、VS2015の出番と。

 

VS2015のインストールは、まぁ適当にすればOK.(をぃ

 

まずは、プロジェクトの作成

Windowsユニバーサル」というのが、RasPI2で動くいわゆるマルチプラットフォーム用のプロジェクトです。とりあえず、C#で作成。

f:id:poiuy56:20150803204059p:plain

VS2015のインストール時にユニバーサルアプリの機能をインストールしていなかった場合は、ここで追加インストールするか選択肢が出てきて追加することができます。

 

フツーにプロジェクトを作成しますが、ここで気を付けないといけないのが2点。

  • プラットフォームの設定をARMにしておく
  • ターゲットをリモートにしておく。+認証は無しに設定。

前者は、思わず「ユニバーサルちゃうんかい!」と独りツッコミを入れたところです。

後者のリモートターゲットのIPアドレスはもちろんWindows10IoTCoreが動いているRasPI2のIPアドレスです。

f:id:poiuy56:20150803205140p:plain

また、設定しておくと後々都合がよさそうのが

  • パッケージ名

です。デフォルトではGUIDのような長ったらしい16進文字列なのですが、後でビルドしたパッケージを削除したり起動したりするのに名前を付けておくとわかりやすいです。

f:id:poiuy56:20150803210458p:plain

さぁ、ビルド&実行だ。

ん?プログラム書いてませんね。。

何かつくろうとおもったんですが、ストアアプリ書いたことが無くて、XAMLが分からんくてあきらめました←

ということで、スケルトンのままです。動くことが確認できればよろしい。

 

普通にビルドして、リモートデバッグで実行すると。。。

f:id:poiuy56:20150803211041j:plain

おー。うごいた。って面白くも何ともないですね。デフォルトのアプリが隠れちゃってます。

 

で、ここでハタと気が付くわけです。「これって、どうやってプロセス管理やらインストールやらするんだ??」

 

管理はPowerShell!なんだろうけど、Webでもいろいろできる。

先の疑問をGoogle先生に問いかけてみると、どうも開発PCからPowerShellでリモート接続してコンソールコマンドでごちゃごちゃやるのが正当らしいです。

が、PowerShellってどうも苦手。。で、実は今までずっとスルーしていた「Windows IoT Core Watcher」をいじってたら、

f:id:poiuy56:20150803212444p:plain

ネットワーク上のRasPI2が勝手に検出されていて、しかも右クリックすると "Web Browser Here" っていうメニューが。

『ひょっとしてブラウザで管理できるんじゃね?』

ってことでクリックすると、ブラウザに飛んでRaspi2の8080ポートへ接続しました。

ユーザー名とパスワードを聞かれるので、PowerShellでログインするときの設定でユーザ名="Administrator",パスワード="p@ssw0rd"を入れてみたら、ビンゴでした。

f:id:poiuy56:20150803213251p:plain

上の画面は"AppX Manager"となっていて、いわゆるパッケージ管理画面と思われます。先ほどVS2015の設定で「パッケージ名を設定しといた方が便利」っていってたところの設定ファイルが実は”Package.appxmanifest"っていう名前で、こことつながってるわけですね。

”Installed apps"のところに"TestApp1_1.0.0.0_arm_xxxx"っていうパッケージ名が見えていますが、このTestApp1がVS2015で設定した名前です。その後ろはバージョン番号とプラットフォーム名、あとは開発環境か開発者IDか、そんな感じでしょう。

 

AppX以外にも、プロセス一覧やデバイス一覧、今はまだ使えないWiFiBluetoothの設定画面もここにあります。興味のある方は8080ポートにつないで覗いてみてください。

 

でも、バッテン出すだけじゃぁねぇ。。。

RasPIのテストアプリといえば「Lチカ」ですが、限りなくソフト屋さんの自分は敢えてグラフィック周りを。っつーてもやっぱりスケルトンのみですが。

 

VS2015のプロジェクト新規作成で、C#ではなくてC++からWindowsユニバーサルアプリを選ぶと、「DirectXのアプリ」が作れたりします。

f:id:poiuy56:20150803214637p:plain

こいつをひな形にしてビルド&実行すると、プロジェクト作成画面のサムネ画像のような四面体がグリグリ回ってFPSが表示されます。RasPI2で!

RasPIでDirectX11とかが動くのって不思議な感じですね。

 

まぁ、でもしかし、こんな単純なCubeですが15FPSくらいです。遅いです。

raspbianのOpenGLデモに比べれば、ハエが止まりそうです。

 

Web管理からデバイスドライバの一覧っぽいのも見えるんですが、ディスプレイドライバが "Microsft Basic Display Driver" ってなっていて、どうもアクセラレーションは特に効いてなさそうな雰囲気です。

 

が、無線関係も含めてまだ改善はされていきそうな気配なので、今後に期待したいところです。