klim.log()

フロントエンドエンジニア見習いによる学習記録

HomebrewでVirtualBoxをアップデートしたら躓いた話

タイトルの通り、HomebrewでVirtualBoxをアップデートしようとしたらエラーと遭遇してしまったので、その様子と対応策をメモしておく。

環境

  • macOS Mojave
  • Homebrew 1.8.5
  • virtualbox 5.2.18,124319 (これを5.2.22,126460にアップデートしようとした)

叩いたコマンド

$ brew cask upgrade virtualbox

表示されたエラー

Welcome to the VirtualBox uninstaller script.

Warning! Found the following active VirtualBox processes:
 8802   501 VBoxXPCOMIPCD
 8804   501 VBoxSVC
 8838   501 VBoxHeadless
 8842   501 VBoxNetDHCP


We recommend that you quit all VirtualBox processes before
uninstalling the product.

And the following KEXTs will be unloaded:
    org.virtualbox.kext.VBoxNetFlt
    org.virtualbox.kext.VBoxDrv

And the traces of following packages will be removed:
    org.virtualbox.pkg.vboxkexts
    org.virtualbox.pkg.virtualbox
    org.virtualbox.pkg.virtualboxcli

The uninstallation processes requires administrative privileges
because some of the installed files cannot be removed by a normal
user. You may be prompted for your password now...

unloading org.virtualbox.kext.VBoxNetFlt
(kernel) Kext org.virtualbox.kext.VBoxNetFlt did not stop (return code 0x5).
(kernel) Kext org.virtualbox.kext.VBoxNetFlt can't unload - module stop returned 0xdc008017.
Failed to unload org.virtualbox.kext.VBoxNetFlt - (libkern/kext) kext (kmod) start/stop routine failed.
An error occurred durning 'sudo /sbin/kextunload -m org.virtualbox.kext.VBoxNetFlt', there should be a message above. (rc=3)
unloading org.virtualbox.kext.VBoxDrv
(kernel) Can't remove kext org.virtualbox.kext.VBoxDrv; services failed to terminate - 0xdc008018.
Failed to unload org.virtualbox.kext.VBoxDrv - (libkern/kext) kext is in use or retained (cannot unload).
An error occurred durning 'sudo /sbin/kextunload -m org.virtualbox.kext.VBoxDrv', there should be a message above. (rc=3)
Failed to unload one or more KEXTs, please reboot the machine to complete the uninstall.
Error: Failure while executing; `/usr/bin/sudo -E -- /usr/local/Caskroom/virtualbox/5.2.18,124319/VirtualBox_Uninstall.tool --unattended` exited with 1. Here's the output:

もう少し長くエラーが吐き出されていたけれど中略

原因

  • VirtualBox関連のプロセスで動き続けているものが残っていたため、アップデートできなかった模様

対応

  • VirtualBox関連のプロセス(VBoxXPCOMIPCD・VBoxSVC・VBoxHeadless・VBoxNetDHCP)を殺す
  • その後 $ brew cask reinstall virtualbox を叩く(upgradeでもいいかも)

macOSにインストールしている便利アプリ一覧

 某所でリクエストがあったので、macOS Sierraに入れているアプリで便利なものをピックアップしてリストアップ。

  • 副作用等が強そうなアプリは念の為除外した(OnyXとか)
  • 基本無料!
  • Homebrewでインストールできるものに関してはコマンドもご用意

アプリ一覧

  • AppCleaner

    • macOSにインストールしたアプリを削除する際に、関連するゴミファイルごと削除してくれるやつ
    • brew cask install appcleaner
  • CheatSheet

    • コマンドキーを押下し続けることで、アクティブなアプリのショートカット一覧をポップアップ表示してくれるやつ
    • brew cask install cheatsheet
  • HyperSwitch

    • アプリの切り替えをキーボードショートカットで行う際、アプリごとではなく起動しているウインドウごとに切り替えてくれるやつ
    • brew cask install hyperswitch
  • MacDown

    • Markdownエディタ
    • brew cask install macdown
  • Marp

    • Markdownでスライドを作成できるやつ
    • brew cask install marp
  • Simplenote

    • macOS, iOS, Windows, Android...っといったように、複数のプラットフォームで使えるオンラインメモサービス
    • Evernoteのようなサービスではあるものの、名前の通りシンプルさが売りで、複数の端末で同じメモを参照・アップデートしたい人にはこちらがオススメ!
    • Simplenote

      Simplenote

      • Automattic
      • 仕事効率化
      • 無料
    • brew cask install simplenote
  • QBlocker

    • 基本的にCtrl+Qにアプリ終了が割り振られているが、Ctrl+Wと間違ってしまうケースが多い
    • そこで、Ctrl+Qを長押しすることでこの効果を発動するようにするやつ
    • brew cask install qblocker
  • SplitScreen

    • 表示しているウインドウサイズを、ディスプレイの左半分・画面全体・右半分に切り替える事ができるアプリ
    • キーボードショートカットはそれぞれ、Ctrl+h, Ctrl+j, Ctrl+l
    • 有料
    • Split Screen

      Split Screen

      • TaxSmart Technologies Pvt. Ltd
      • ユーティリティ
      • ¥840
  • Theine

    • macOSのディスプレイスリープを一時的に無効にするアプリ
    • 任意のタイミングで切り替えるだけでなく、無効にする時間を指定できたりもする
    • Theine 2

      Theine 2

      • IXEAU UG (haftungsbeschraenkt)
      • 仕事効率化
      • ¥480
    • brew cask install theine
  • The Unarchiver

    • zip等の圧縮ファイルを展開するためのアプリ
    • 7z等の新しい拡張子にも対応
    • Windowsから送られてきた圧縮ファイルが文字化けしている・展開できないというトラブルを軽減できる
    • The Unarchiver

      The Unarchiver

      • MacPaw Inc.
      • ユーティリティ
      • 無料
    • brew cask install the-unarchiver

それでは皆様よきMacライフを!

UserScriptをお気に入りのエディター/IDEで編集する方法 @Tampermonkey

前回も書いたが、最近はUserScriptを書いている。 実行環境はだいたいTampermonkeyなのだが、この拡張内のJavaScriptエディターがやや貧弱な点が気になった。設定からいくらか利便性を向上させることはできるが、やはり使い慣れたツールには敵わない。

klim0824.hatenablog.com

そこでUserScriptを使い慣れたエディターやIDEで書きたいと感じたのだが、その方法が分かったのでブログにまとめておくことにする。

TL;DR

  1. Tampermonkeyの ファイルの URL へのアクセスを許可する のチェックを入れる。
  2. TampermonkeyにラッパーとなるUserScriptをインストールし、ローカルにあるUserScriptを@requireする。
  3. ローカルにあるUserScriptを、好きなエディター/IDEで編集する。

動作確認

拡張機能画面の設定で ファイルの URL へのアクセスを許可する にチェック

Chrome拡張機能の管理画面から Tampermonkey詳細 と進む。

f:id:klim0824:20180805051658p:plain

ファイルの URL へのアクセスを許可する にチェックを入れる。

f:id:klim0824:20180805051718p:plain

Tampermonkeyの設定で スクリプトによるローカルファイルへのアクセスを許可する: の項目を確認

Google Chrome拡張機能ボタンにある Tampermonkeyアイコンダッシュボード設定 とクリック。

f:id:klim0824:20180805004424p:plain

f:id:klim0824:20180805004523p:plain

全般 カテゴリーの 設定のモード新参者 から、 上級者 に変更(初心者 はダメ)。

f:id:klim0824:20180805004551p:plain

セキュリティ カテゴリーが現れるので、上から3行目の スクリプトによるローカルファイルへのアクセスを許可するExternals (@require and @resource) となっていることを確認する(すべてのローカルファイル でも目的は果たせるが、不必要にガバガバ設定にする理由はない)。

f:id:klim0824:20180805051747p:plain

設定を変更したら、保存ボタンを忘れずにクリックすること!

f:id:klim0824:20180805051838p:plain

下拵えはここまで。

TampermonkeyにラッパーとなるUserScriptをインストール

いよいよ本題。

Tampermonkeyに以下のコードをインストールする。ここにはメタ情報しか記述されていないが、これは単なるラッパーなので本体は別に存在させる。

// ==UserScript==
// @name         wrapper_script_in_tempermonkey
// @namespace    wrapper_script_in_tempermonkey
// @version      0.1
// @description  wrapper in tempermonkey
// @author       You
// @match        http://*/*
// @grant        none
// @require      https://code.jquery.com/jquery-3.3.1.slim.min.js
// @require      file:///Users/[account]/your/project/path/script_in_local.js
// ==/UserScript==

// メタ情報以外は不要

@require の箇所が本コードの肝である。 @require 部分の最後に file:/// で始まる、ローカル内に保存する(した)UserScriptのパスを記述する。 また、jQueryといった外部ライブラリをCDN経由で利用したい場合、ローカルのUserScriptのパスよりも先に読み込んでおく。

ローカル内にUserScriptを用意

Tampermonkeyにインストールしたコード内の @require のパスに合わせて、ローカルにUserScriptを配置する。これがUserScriptの本体であり、このファイルをお気に入りのエディター/IDEで編集するとOK!

// ==UserScript==
// @name         script_in_local
// @namespace    script_in_local
// @version      0.1
// @description  local
// @author       You
// @match        http://*/*
// @grant        none
// ==/UserScript==

// メタ情報は無くても構わない

(function () {
    'use strict';

    console.log('hoge');
    $('p').css('color','red');

})();

サンプルHTMLとUserScriptを発動させた結果

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>sample-html</title>
</head>
<body>
    <p>Sample HTML</p>
</body>
</html>

f:id:klim0824:20180805051906p:plain

参考URL

Tampermonkey内のスクリプトエディターを快適にする方法

最近はUserScriptを書いている。Tampermonkeyに内蔵されているエディターで少し書いてみたが、この拡張の設定画面を覗いてみると色々とこのエディターの機能を調整できるようだったので、本記事でご紹介。

動作確認

Tampermonkeyの設定

Google Chrome拡張機能ボタンにある Tampermonkeyアイコンダッシュボード設定 とクリック。

f:id:klim0824:20180805004424p:plain

f:id:klim0824:20180805004523p:plain

全般 カテゴリーの 設定のモード新参者 から、 初心者 上級者 に変更。

f:id:klim0824:20180805004551p:plain

こうすることで、エディターの設定画面が現れる。

カラーテーマを変更する

エディター カテゴリー最上部の テーマ から以下の7種類が選択できる。

  • 既定
  • Solarized
  • Monokai
  • MDN-like
  • Eclipse
  • RailsCasts
  • ZenBurn

f:id:klim0824:20180805004632p:plain

筆者は Monokai 派。

キーバインドを変更する

エディター カテゴリー3行目の キー割り当て から以下の4種類が選択できる。

f:id:klim0824:20180805004651p:plain

筆者は Sublime Text 派。

変更を保存する(重要)

エディター カテゴリー最下部の 保存 ボタンをクリックする。 Tampermonkeyの設定によっては項目の値を変更した時点で自動保存される箇所もあるが、ここではきちんと保存ボタンをクリックすること!

f:id:klim0824:20180805004721p:plain

保存ボタンを押すとTampermonkeyの再起動が求められる。

f:id:klim0824:20180805004737p:plain

Tampermonkeyの再起動が済んだら設定が反映されて、エディターのテーマやキーバインドが変更されている。

今回はここまで。

関連

klim0824.hatenablog.com

WordPressローカル環境ツール「Local by Flywheel」のセットアップが途中でコケる【解決済】

local.getflywheel.com

環境

症状

  • Local by Flywheelの初回起動時にセットアップ画面が表示されるが、3番目のLocal Imageからプログレスバーが動かない。

解決方法

  • Local by Flywheel 2.3.0 (Pre-release)をインストールする。
    • 2.3.0をインストールする前に、Local by Flywheel 2.2.4をアンインストールすることにした。AppCleanerを用いて関連ファイルを含めてアンインストールした。
    • また、VirtualBox内に生成されているlocal-by-flywheelという名前の仮想マシンも削除した。
      • /Users/[account]/.docker/machine/machines/local-by-flywheel も残っていたら削除。

参考URL