VSCodeで簡単にペイン分割するショートカットを設定する

SublimeからVSCodeに乗り換え中なのだが、SublimeのOrigami拡張で行っていた楽ちんペイン分割をVSCodeでやりたくていろいろ調べた。

結論

f:id:riosu:20180808164108g:plain

デフォルトでできるがキーアサインがされていないので設定してあげれば良い

[
    {
        "key": "cmd+d",
        "command": "workbench.action.splitEditorRight"
    },
    {
        "key": "shift+cmd+d",
        "command": "workbench.action.splitEditorDown"
    }
]

Visual Studio Codeのファイルツリー(エクスプローラー)のフォントを変更する

VSCodeのファイルツリーのフォントが気に食わなかったので変更したのでメモしておく。 設定ファイルではエディターのFontFamilyは変更できるが、サイドバーのFontFamilyは変更できないようであった。

f:id:riosu:20180725230635p:plain:w300

vscode-custom-css拡張をインストールする

github.com

カスタムCSSを適応することができる拡張機能があるので、まずこれをインストールする。 VSCode拡張機能検索から、vscode-custom-css を検索し、インストール、再起動。

適応するカスタムCSSファイルを作成する

今回はファイルツリーのファイル名のフォントと、エディターで開いているファイル名のフォントを変更する。 下記の内容のファイルを ~/.vscode/css/tree.css として保存する

.sidebar .explorer-viewlet .label-name,
.editor .title .label-name {    
    font-family: "Monaco" !important;
    font-size: 11px !important;
}

vscode-custom-cssを有効化する

ユーザ設定に以下を追加する

    "vscode_custom_css.imports": [
        "file:///Users/semenov/.vscode/css/tree.css"
    ]

その後、Shift+Command+Pを押して、 Enable Custom CSS & JS を選択。そしてVSCodeを再起動する。 再起動後、「VSCodeが壊れているかも」というメッセージが出るか、問題ないので二度と表示しないようにしてOK。

以上でファイルツリーのフォントが代わっているはず。 ちなみにCSSを更新した後は、 Reload Custom CSS & JS を選択し、VSCodeを再起動する必要がある。

参考: 当該CSSセレクタを見つけたり、テストする方法

ヘルプ => 開発者ツールの切り替え をすると、Developer Toolsが出るので、普通のWeb開発と同じように目的のDOM要素を見つけてCSSを変更したりしてみると良い。

iTerm2で拡大時にOpen Command Historyが発火してしまう問題の対処

最近iTerm2を使っているときに、文字を拡大しようと「Command + Shift + +(;)」を入力すると、 拡大はされるのだが、同時にコマンドヒストリーが表示されるようになってしまった。 おそらく日本語キーボード固有の問題だと思うが、メモ。

対処方法

  1. iTerm2 -> Preferences -> Keys
  2. Key Mappings下部の「+」から新規登録
  3. 「Command + ;」のアクションを 「Ignore」 に設定
  4. 「Command + Shift + +」のアクションを 「Select menu item "Make Text Bigger"」に設定

これでうまく動くようになった。以上。

Logicoolのメディアキーが効かない問題の対処法

Logicoolのキーボードについていたり、マウスのキーにアサインすることができるメディアキー。 再生/一時停止や次の曲へ進むなどの動作をプレイヤーがアクティブじゃない時にも実行することができる優れもの。

これが自分の環境だと動かなかったのだが、下記のサイトに書いてあるやり方で治すことができた。

www.omgchrome.com

私の場合はGooglePlayを今は使わなくなっていたので削除した。 一点注意として削除したあとに、Chromeのプロセスを一旦終了させなければ上手く動作しなかった。

よかったよかった。

macOS SierraでKeychainに新規WiFiパスワードが登録されない問題の解決方法

本題の通り、Sierraにて新しいWiFIに繋げた時、そのパスワードがキーチェーンに登録されず、毎回パスワードを求められる現象が発生したときの対処法。 昔のバージョンでは Keychain First Aid なるものがあったが、最近のバージョンには搭載されていない。

解決策

Keychainが壊れているようなので、Keychainフォルダを削除(移動)させて、全て初期化する。 (その前にiCloud連携を切っておいたほうが良いかもしれない)

mv ~/Library/Keychains ~/Library/Keychains.bak 
sudo mv /Library/Keychains /Library/Keychains.bak
=> 再起動

駄目だった方法

  • macOSの上書きインストール
  • 新規キーチェーンの作成とデフォルト設定
  • キーチェーンのメニューから行う初期化

CentOS6でG3258のIntel HD Graphicsドライバが認識されない問題

録画環境を前回の記事の通りに作った。 次はTSファイルをエンコードする環境を構築する。 画質にそこまでこだわりはないので、QSVを使ってH264に圧縮する。 その過程でグラフィックドライバが認識されないという問題にぶち当たったので解決法を乗せる

riosu.hateblo.jp

環境

M/B: H97-PLUS
CPU: Pentium Dual-Core G3258 BOX
OS: CentOS release 6.9

*注 もちろんCPUがQSV対応でないとそもそも駄目である

ドライバ導入

yum install xorg-x11-drv-intel.x86_64 xorg-x11-drv-intel.x86_64-devel
reboot

認識されない

lshwを使って確認してみたところドライバが認識されていない (lshwはyumで導入した yum install lshw

% sudo lshw -c video
  *-display UNCLAIMED
       description: VGA compatible controller
       product: Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 06
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list
       configuration: latency=0
       resources: memory:f7800000-f7bfffff memory:e0000000-efffffff(prefetchable) ioport:f000(size=64)

UNLCAIMEDになっている。ドライバが認識されていない場合上記の表示になるらしい。 この状態ではVAAPIが利用できない。

解決方法

grubで起動するときに渡されているオプション nomodeset が悪さをしているらしい。 /boot/grub/menu.lst を編集して nomodeset を削除する。

vim /boot/grub/menu.lst
[before]
kernel /vmlinuz-2.6.32-696.1.1.el6.x86_64 ro root=/dev/mapper/vg_hoge-lv_root nomodeset rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_hoge/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_hoge/lv_swap rd_NO_DM rhgb quiet

[after]
kernel /vmlinuz-2.6.32-696.1.1.el6.x86_64 ro root=/dev/mapper/vg_hoge-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_hoge/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=vg_hoge/lv_swap rd_NO_DM rhgb quiet

この後リブートしたらちゃんと認識される。

% sudo lshw -c video                                                                                            [main]
  *-display
       description: VGA compatible controller
       product: Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 06
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:27 memory:f7800000-f7bfffff memory:e0000000-efffffff(prefetchable) ioport:f000(size=64)

悪戦苦闘しつつドライバ導入まで成功したが、VAAPIは簡単には動かなかった。その記事はまた別途書く予定。 ざっくりいうと、libva/intel-vaapi-driver/libva-utilsの最新版をソースからビルドすればうまくいった。

PX-W3PE+CentOS6+recpt1+Chinachu γで録画環境構築

今までWindows上でEpgDataCap_Bonを使って録画環境を構築していたが、自宅サーバLinux系一本にまとめたかったので更改することにした。 TVチューナーとしてPX-W3PEをしている関係でOSに縛りがあったので、普段利用しないCentOS6を入れたがとりあえず動いている。

OSの選定

PX-W3PEはRedhat系のドライバしか公開されていないので、とりあえずインストールしようとしたUbuntuの導入は断念。 また、Kernel 3.x系 (CentOS7等)では動作しないという情報もあり、CentOS6.9を導入することにした。

lab.planetleaf.com

ドライバの導入

CentOS6.9のインストールは割愛。フィーリングでインストール

ドライバファイルは現在公式サイトからはリンクが貼られない形になっている模様。 直リンクではダウンロードできるので、下記Wikiに貼り付けてあるURLからダウンロード www22.atwiki.jp

インストール方法は下記サイトを参考にした。またBCASカードリーダについても下記サイトを参考に。 quail.mydns.jp

recpt1の導入

上記サイトにも記載されているが、巷に出回っているrecpt1はPX-W3PEに対応してない。 そのため foltia ANIME LOCKER に付属しているものを利用するか、PX-W3PEに対応したrectp1のソースを探し、コンパイルする必要がある。

それらしきリポジトリを発見したので使わせてもらっている。 github.com

導入方法はリポジトリ内のドキュメント参照

px_drv/px_drv.md at main · project-pp/px_drv · GitHub

arib25の導入とテスト

例によって下記サイトを参考にさせていただいた。 quail.mydns.jp

いろんなサイトにrecpt1の動作確認コマンドが乗っているが、PX-W3PEの場合は上記サイトの通りに、デバイスを指定してあげないとうまく動作しなかったので注意

recpt1 --device /dev/asv52202 --sid hd 24 10 ~/test.ts

mirakuru/chinachuの導入

基本的に公式Wikiを参考にすれば問題なし。いくつか補足する。 github.com

nodeのバージョン

CentOS6ではyumで入るノードのバージョンが必須環境であるnode6.5.0より下なため、自前で6.5.0以上7.0.0以下のものを入れる必要がある。 うろ覚えだが、nを使ってこんな感じに入れる

$ yum install epel-release
$ yum install nodejs npm
$ npm install -g n
$ n 6.5.0
$ yum remove nodejs npm
$ node -v
v6.5.0

mirakurunのtunersコンフィグ

sudo /usr/local/bin/mirakurun config tuners

 name: PXW3PX-S1
  types:
    - BS
    - CS
  command: recpt1 --device /dev/asv52200 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PXW3PX-S2
  types:
    - BS
    - CS
  command: recpt1 --device /dev/asv52201 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PXW3PX-T1
  types:
    - GR
  command: recpt1 --device /dev/asv52202 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

- name: PXW3PX-T2
  types:
    - GR
  command: recpt1 --device /dev/asv52203 <channel> - -
  decoder: arib-b25-stream-test
  isDisabled: false

mirakurunのチャンネル設定

下記サイトを参考にした。ただし、mirakuru@2.1.0以上にはチャンネルスキャン機能があるので、そちらを利用するほうが良さそう www.jifu-labo.net github.com


これにて録画環境の構築完了。 この後、CentOS6でQSV(VAAPI)を使ったエンコード環境を作ろうと奮闘するのだが、それは別記事にて。

Node+Express+Mongodbでのログイン認証機能の実装

最近、Node+Express+MongoDBという環境でのログイン機能を実装する機会があったので、残しておきます。
MongoDB

必要モジュール

mongoDBを利用するために以下の3つをpackage.jsonに追加し、インストールします

  • connect-mongo : セッションをMongoDBに保存するために利用
  • mongoose : MongoDBと接続してfindしたりsaveしたり
  • crypto : sha1ハッシュを計算するために利用

コード

必要部分のコードをまとめてみました。解説はそのうちするかも。

仮想HIDドライバvmulti (1) : コンパイルからインストールまで

仮想HIDデバイスドライバとして有名らしい「vmulti(Virtual Maltiple HID Driver)」について、日本語の情報が一切引っかからなかったので備忘録として書いていきます。今回はVisual Studio 2012でのコンパイル方法と、OSへのインストール方法をまとめてみました。どなたかのためになれば幸いです。

vmulti(Virtual Maltiple HID Driver)で何が可能なのか

以下のデバイスの入力をエミュレートすることができます。

  • マルチタッチ
  • マウス
  • ディジタイザ
  • キーボード
  • ジョイスティック

例えば、このドライバに対して「マウスを相対位置指定で(100, 100)に移動させてくれ」とリクエストを投げると、実際にマウスドライバの動作をエミュレートしてくれて、マウスがちゃんと移動します。
マクロをドライバレベルで動作させたりする用途にも利用できると思います。

Windows Driver Kit(WDK)のインストール

注意: Visual Studioをインストールしていない場合は、先にVisual Studioをインストールしてください。
(そうしないと、Project作成画面にWDKが表示されません)

Windows Driver Kit Downloads

ソースのダウンロード

Google Project Hostingからソースをダウンロード/チェックアウトします。

下記ページからzipでも落とせます
/ - vmulti - Virtual Multiple HID Driver - Google Project Hosting

ソースは以下の4つのプロジェクトを含んでいます。

  • vmulti: vmultiドライバ
  • hidkmdf: Hid miniport to be used as an upper layer for supporting KMDF based driver for HID devices. (よくわからん)
  • vmulticlient: vmultiドライバにアクセスするための静的ライブラリ
  • testvmulti: 上記の静的ライブラリを用いて、実際にドライバを使ってみるテストアプリケーション

ソリューションを開く(vmulticlient, testvmulti)

ダウンロードしたzip内にあるソリューションファイル(vmulticlient.sln)を開きます。
Visual Studio 2012で開くと、アップグレードを要求されるので、OKしておきます。

このソリューションにはvmulticlientとtestvmultiのプロジェクトが入っています。
vmultiとhidkmdfは別ディレクトリにプロジェクトファイルのみが存在します。

vmultiとhidkmdfをVisual Studioで開き、コンパイルする

ファイル → 開く → Conver Sources/Dirs...
vmulti: ./vmulti/sys/sources
hidkmdf: ./vmulti/hidmapper/sources

一度これを行うと、それぞれのディレクトリにプロジェクトが作成されます。
これを、vmulticlientなどのソリューションに追加することで、ひとつのソリューション内で全て開発できます。

vmulti/hidkmdfのコンパイル

それぞれのプロジェクトでビルドすれば以下のファイルが生成されます。

  • vmulti.sys
  • vmulti.inf
  • hidkmdf.sys

ビルドするときは、動作対象のWindowsバージョンとx64/x86を適切に選択しましょう。

vmulticlient/testvmultiをコンパイルする

普通にそのままビルドしても私の環境だとできなかったので、プロパティを少々変更しました。

windows.hが開けない

fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory

プロジェクト → プロパティ → 構成プロパティ → C/C++ → 全般
にある「追加のインクルードディレクトリ」に以下を追加

$(WindowsSDK_IncludePath)

excpt.hが開けない

fatal error C1083: include ファイルを開けません。'excpt.h': No such file or directory

上記と同様に「追加のインクルードディレクトリ」に以下を追加

C:\Program Files %28x86%29\Microsoft Visual Studio 11.0\VC\include

ドライバのインストール

64bitOSを利用している場合、デフォルトだとドライバに署名がないとインストール出来ません。
自己署名をすることで回避可能だと思うのですが、うまく行かなかったので、苦肉の策として採用した、OSのテストモード化の方法と、自己署名作業を途中まで記しておきます。
いつか、自己署名が出来たら更新します。

テストモード

テストモードにすることで、未署名ドライバを動作可能です。ただしセキュリティ的によろしくありません。

bcdedit /set TESTSIGNING ON

その後、ドライバをインストールします

devcon.exe install vmulti.inf djpnewton\vmulti 

自己署名

下記の方法でうまく行かなかったため、なにか間違っていると思われます。
どなたかご教授いただければ幸いです。

makecert

証明書を作成します。

makecert -r -n "CN=LocalSign" -ss LocalCertStore -sr LocalMachine -pe

mmc

作成した証明書を登録します。

  1. プログラムを指定して実行「mmc.exe」
  2. ファイル → スナップインの追加と削除 にて「証明書(コンピュータアカウント)」を追加
  3. LocalCertStore/証明書/LocalSignが存在するか確認する
  4. LocalSignを「信頼されたルート証明書」と「信頼された発行元」にコピー

inf2cat

カタログファイルを作成します

c:\Program Files (x86)\Windows Kits\8.0\Tools\x64> inf2cat /driver:"c:\tmp\vmulti" /os:7_x64

signtool

署名します

signtool sign /s LocalCertStore /n "LocalSign" /t http://timestamp.verisign.com/scripts/timestamp.dll vmulti.cat
signtool sign /s LocalCertStore /n "LocalSign" /t http://timestamp.verisign.com/scripts/timestamp.dll vmulti.sys
signtool sign /s LocalCertStore /n "LocalSign" /t http://timestamp.verisign.com/scripts/timestamp.dll hidkmdf.sys

devcon.exe

ドライバをインストールします

devcon.exe install vmulti.inf djpnewton\vmulti 

うまくインストール出来たかどうかやエラーなどは以下のログファイルに出力されています。

c:\Windows\inf\setupapi.dev.log