毎回、lengthでオブジェクトの有無の判定するのは冗長なので、専用の関数をJQueryに追加します。 “exists, notExists関数を #JQuery に追加 #JavaScript” の続きを読む
選択されたオブジェクトをスクロールの一番上に表示 #JavaScript
スクロール内のオブジェクトについて、選択されたオブジェクトをスクロールの一番上に表示します。
初期表示時に、特定の位置まで自動スクロールを行いたかったので、作りました。
JQueryを利用しています。 “選択されたオブジェクトをスクロールの一番上に表示 #JavaScript” の続きを読む
WordPressにダークテーマのGistを埋め込む(子テーマ)
巷でダークテーマが流行しそうなので・・・
子テーマを使って、WordPress公式の「Twenty Sixteen」テーマのレイアウト微調整と、Gistのダークテーマ化を行いました。
適用はwordpressのplugins直下に、twentysixteen-childフォルダを作成し、下記の2つのファイルを配置します。
その後、ダッシュボードでテーマを「Twenty Sixteen Child」に変更してください。
Hello world!
WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください !
Gistサンプル
Twitterプラグインサンプル
Wordpreeのテーマ、Bootstrap使いたくて、Understrapとか色々と試してみたけど、公式テーマを
カスタマイズした方が、PageSpeed Insightsのスコアが高い。
公式テーマが優秀💦— 古賀広隆 (@kght6123) May 27, 2018
Homebridgeプラグイン開発環境構築メモ
Homebridgeのプラグインを作成するために、開発環境を構築した時のメモです。
Macにhomebridgeをインストールし、VSCode-InsidersをIDEとして使います。
プラグインのプログラム手法に関しては別途、公開予定ですが、
この時に作成したプラグインは下記のGitHubに公開しているので、参考にしてみてください。
環境設定
Macにデバッグ用にhomebridgeをグローバルにインストール
$ sudo npm install -g --unsafe-perm homebridge
$ homebridge # 起動確認、Ctrl+Cで停止
$ mkdir ~/.homebridge; cd ~/.homebridge
$ curl -L -o ~/.homebridge/config.json https://raw.githubusercontent.com/nfarina/homebridge/master/config-sample.json
$ cp config.json config.json.org; code-insiders config.json
# usernameを修正(英小文字は英大文字にする)、MACアドレスの形式なのでMacのWiFiのアドレスを入力するが、被らなければ良い。
# accessoriesとplatformsの中身は空に
$ homebridge # 再度、起動確認
homebridgeの開発・デバッグ用設定を作成
$ cp -R .homebridge .homebridge-dev # 既存設定をコピー
$ cd .homebridge-dev; rm -R accessories; rm -R persist # 前回起動時のキャッシュを削除
$ code-insiders config.json # username,port番号を変更、開発したPluginの設定を追加
$ homebridge -D -U ~/.homebridge-dev -P ~/develop/nodejs/homebridge-sample/ # 開発用に起動する時のコマンド例、-Uは設定、-Pは読み込むPluginフォルダ指定
プラグインプロジェクト作成
プラグインプロジェクトのフォルダを作成
$ mkdir ~/develop/nodejs/homebridge-temper; cd ~/develop/nodejs/homebridge-temper
$ typings init # 型定義一覧を初期化
$ typings install dt~node --global --save # nodeの型定義を追加
# 型定義をGithubからインストール(正常)、homebridgeの基礎となるライブラリの型定義。型定義はhomebrideとだいたい同じ。
$ typings install github:KhaosT/HAP-NodeJS/index.d.ts --global --save # hap-nodesの型定義を追加
VSCodeのデバッグ設定
jsconfig.json修正
プロジェクトフォルダのjsconfig.jsonに、allowSyntheticDefaultImportsをtrueで追加
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"allowSyntheticDefaultImports": true
}
}
homebridge設定のconfig.jsonをデバッグ用にコピー
$ mkdir config; cp ~/.homebridge-dev/config.json config/config.json
$ code-insiders config/config.json # homebridge用のデバッグ設定追加
プロジェクトフォルダの.vscode/launch.jsonを下記の様に修正
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "homebridge",
"stopOnEntry": false,
"args": [
"-D",
"-P",
"${workspaceRoot}",
"-U",
"${workspaceRoot}/config"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": null,
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"console": "internalConsole",
"sourceMaps": false,
"outFiles": []
},
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858,
"address": "localhost",
"restart": false,
"sourceMaps": false,
"outFiles": [],
"localRoot": "${workspaceRoot}",
"remoteRoot": null
},
{
"name": "Attach to Process",
"type": "node",
"request": "attach",
"processId": "${command:PickProcess}",
"port": 5858,
"sourceMaps": false,
"outFiles": []
}
]
}
GalaxyNote8のSideSyncをリモートデバッグに使う
GalaxyNote8のSideSyncをリモートデバッグに使います。
準備
Qi対応の無線充電器(おすすめ)
WiFiは充電時のみ常時接続 設定⇨接続⇨WiFi⇨詳細設定⇨スリープ中にWi-Fi接続を維持⇨「充電時」にする
IPは静的取得とし、固定する。(もしくはルータ側でMacアドレス指定のIP固定にする) 設定⇨接続⇨WiFi⇨接続中のWiFiネットワークをロングタップ⇨ネットワーク設定を管理⇨IP設置を「静的」にして任意のIPアドレスを入力 (デートウェイやDNSはそのままで良いはず)
SideSyncをNote8とMac(PC)にインストール Mac版のインストールには癖がある、システム環境設定⇨セキュリティとプライパイシー⇨プライバシー⇨アクセシビリティ⇨鍵をクリック⇨SideSyncを許可
PCとNote8のSideSyncを起動し接続設定をすませておく
ADBのリモートデバッグ設定をUSBで接続して行う
$ export PATH=$PATH:_Users_kogahirotaka_Library_Android_sdk_platform-tools # AndroidSDKのツールをパスに追加
$ adb tcpip 5555 # PCのポート待機を設定、5555〜5585まで?
$ adb connect 192.168.10.88:5555 # Note8に5555で接続
- USBを抜いて、下記のコマンドで端末が存在するか確認
$ adb devices # デバック端末リスト表示(確認用)
接続方法
Qiの上にNote8を置く(WiFi接続)
MacのSideSync起動(基本的に自動起動)
adb tcpipとadb connectで接続
$ adb tcpip 5555
$ adb connect 192.168.10.88:5555
- adb shellでNote8のSideSync起動
$ adb shell monkey -p com.sec.android.sidesync30 -c android.intent.category.LAUNCHER 1 # SideSync起動
- 使い終わったら、adb disconnectで切断
$ adb disconnect # PCポート切断
$ adb usb # USBモードへ
BroadLink RM3 Mini 初期設定メモ
通称、黒豆。miniintheboxから激安で購入。
国内で販売されている「eRemote mini」と本体は同じ、国内版は値段が高いし、標準アプリは全く使わないので、回避。汗
初期設定する環境はTinkerBoard(TinkerOS)とする。Debian系ならほぼ同じ?と思われる。
- Python control for Broadlink RM2 IR controllers (python-broadlink)のインストール
- Git clone
$ sudo apt-get install git
$ git clone https://github.com/mjg59/python-broadlink.git
$ cd python-broadlink
- Command line interface for python-broadlinkの設定
- Python2.7系が既にインストール済みなので、OK(3系は動かないっぽい)
$ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
- 2系を明示的に呼ぶコマンドもある
$ python2
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
- 2系のdev版が必要なのでインストール
$ sudo apt-get install python2.7-dev
- PIPのインストール
$ curl -kL https://bootstrap.pypa.io/get-pip.py | python
$ sudo python -m pip install --upgrade pip # pip自身の更新
- 外部ライブラリのインストール(devel版のインストール後に行うこと)
$ sudo python2 -m pip install configparser
$ sudo python2 -m pip install netaddr
$ sudo python2 -m pip install pycrypto
- PIPでbroadlinkモジュールを追加
$ sudo pip install broadlink
これで、CLIツール(python-broadlink/cli)が使える
- RM3 miniのネットワーク接続設定
下記、GitHubのREADMEを拙い英語力で翻訳したもの。この翻訳結果を元に黒豆のネットワーク接続設定を行う。
Setup a new device on your local wireless network:
ローカルワイヤレスネットワークで新しいデバイスをセットアップする
- Long press the reset button until the blue LED is blinking quickly.
- 青色のLEDがすばやく点滅するまでリセットボタンを長押しします。
- Long press again until blue LED is blinking slowly.
- 青色のLEDがゆっくりと点滅するまでもう一度長押ししてください。(なる)
- Manually connect to the WiFi SSID named BroadlinkProv.
- BroadlinkProvという名前のWiFi SSIDに手動で接続します。
- Run setup() and provide your ssid, network password (if secured), and set the security mode.
- setupを実行し、ssid、ネットワークパスワード(保護されている場合)、およびセキュリティモードを設定します
- Security mode options are (0 = none, 1 = WEP, 2 = WPA1, 3 = WPA2, 4 = WPA1/2)
- セキュリティモードのオプションは、(0=なし, 1=WEP, 2=WPA1, 3= WPA2, 4=WPA1 / 2)
2~3. 黒豆を電源に接続しリセットボタンを押して、APモードに設定。(1は省略)
4.はBroadlinkProvという名前のSSIDにWifi接続して設定。
$ sudo iwconfig wlan0 essid BroadlinkProv # WiFiのBroadlinkProvに接続
$ sudo iwconfig # WiFiの接続状況を表示
- 5~6. は下記のPythonスクリプトを実行。(有線LANを抜いて、TinkerBoardのターミナルで直接実行)
$ cd python-broadlink # git cloneしたpython-broadlinkに移動
$ python2 # Python2を対話モードで実行。下記を入力する。
>>> import broadlink
>>> broadlink.setup('ASUS_RT-AC88U_24G', 'lovesaorihime', 3)
>>> exit()
- 黒豆のデバイス情報を表示して保存
broadlink_discoveryを実行し、ローカルネットワーク上の黒豆のデバイス情報を表示し、ファイルに保存する。
- デバイス情報の表示
$ cd python-broadlink/cli # git cloneしたpython-broadlink/cliに移動
$ ./broadlink_discovery
discover
###########################################
RM2
# broadlink_cli --type 0x2712 --host 192.168.10.166 --mac ecda5834ea34
Device file data (to be used with --device @filename in broadlink_cli) :
0x2712 192.168.10.166 ecda5834ea34 ## この部分をファイルに保存
temperature = 0.0
- デバイス情報の
0x2712 192.168.10.166 ecda5834ea34
をファイルに保存する
$ mkdir ~/bb/device # 任意の場所へ移動
$ echo "0x2712 192.168.10.166 ecda5834ea34" > ~/bb/device/2FBedRoom
- 赤外線リモコンの信号を送受信
LIGHT_ONファイルに信号を保存。
下記のコマンド実行後に黒豆に向けて保存したいリモコン操作をする。保存したデバイスファイル指定
$ ./broadlink_cli --device @/home/linaro/bb/device/2FBedRoom --learnfile ~/bb/ir/LIGHT_ON_OFF
- デバイス情報(type,host,mac)指定
$ ./broadlink_cli --type 0x2712 --host 192.168.10.166 --mac ecda5834ea34 --learnfile /home/linaro/bb/ir/LIGHT_ON_OFF
LIGHT_ONファイルの信号を送信。
送信したい信号を保存したファイルを指定する。保存したデバイスファイル指定
$ ./broadlink_cli --device @/home/linaro/bb/device/2FBedRoom --send @~/bb/ir/LIGHT_ON_OFF # 対象の黒豆をデバイスファイル指定
- デバイス情報(type,host,mac)指定
$ ./broadlink_cli --type 0x2712 --host 192.168.10.166 --mac ecda5834ea34 --send @/home/linaro/bb/ir/LIGHT_ON_OFF # 対象の黒豆をtype,host,mac指定