Toconangoのブログ

プログラミングのユルフワ備忘録です。間違った記載等ありましたらご連絡頂けますと幸いです。

Sublime Text 3よく使うショートカット、設定など

ショートカット

  • ctrl + p ファイル名検索
  • ctrl + r シンボル検索
  • ctrl + shift + r プロジェクト内でシンボル検索
  • F12 タグジャンプ
  • shift + ctrl + k 行ごと削除

その他の操作

  • カーソルのある行ごとコピペ、カットできる
  • ctrl押しながら選択で複数選択できる

シンタックスエラー確認(PHP)

Tools > Build System > New Build System で、

{
    "path": "/usr/local/bin:$PATH",
    "cmd": ["php", "-l", "$file"],
    "selector": "source.php"
}

と記載してPHP.sublime-buildという名前で保存

Tools > Build System -> PHP を選択

  • ctrl + b でphpビルド、シンタックスエラー確認ができる

  • 作成した設定ファイルは下記に保存されてる

Mac /Users/ユーザ名/Library/Application Support/Sublime Text 3/Packages/PHP.sublime-build

追記

Windowsの場合

{
    "path": "C:\\php",
    "cmd": ["php", "-l", "$file"],
    "selector": "source.php"
}

設定ファイル C:\Users\ユーザ名\AppData\Roaming\Sublime Text 3\Packages\User\PHP.sublime-build

Vagrant Error 'Failed to mount folders in Linux guest.'

環境

エラーの内容

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3`,dmode=777,fmode=777 vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant`,dmode=777,fmode=777 vagrant /vagrant

The error output from the last command was:

mount: unknown filesystem type 'vboxsf'

ゲストOSにGuest Additions をインストールする必要があるようです。

こちらの記事*1 *2 *3を参考にしました。

ゲストOS(CentOS)にmake,gcc,kernel-devel,wgetをインストール

$ sudo yum install -y make
$ sudo yum install -y gcc
$ sudo yum install -y kernel-devel
sudo yum install -y wget

ゲストOS(CentOS)で、Guest Additions をインストール

リムーバブル媒体(media)のマウントポイント(/media)にGuest Additions 用のディレクトリを作成

$ sudo mkdir -p /media/VirtualBoxGuestAdditions

GuestAdditionsのisoをダウンロード(ローカルのVirtualBox 4.3.28 合わせる)

$ cd /media
$ sudo wget http://download.virtualbox.org/virtualbox/4.3.28/VBoxGuestAdditions_4.3.28.iso

isoをマウントする

$ ll
total 56880
-rw-r--r--. 1 root root 58241024 May 13  2015 VBoxGuestAdditions_4.3.28.iso
drwxr-xr-x. 2 root root     4096 Jun 23 12:20 VirtualBoxGuestAdditions
$ sudo mount -t iso9660 -o loop VBoxGuestAdditions_4.3.28.iso VirtualBoxGuestAdditions/
mount: /dev/loop0 is write-protected, mounting read-only

マウントされているか確認

$ df
Filesystem                      1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00  38765936 1234024  35539620   4% /
devtmpfs                           239636       0    239636   0% /dev
tmpfs                              250548       0    250548   0% /dev/shm
tmpfs                              250548    8508    242040   4% /run
tmpfs                              250548       0    250548   0% /sys/fs/cgroup
/dev/sda2                          487634  121116    336822  27% /boot
tmpfs                               50112       0     50112   0% /run/user/0
tmpfs                               50112       0     50112   0% /run/user/1000
/dev/loop0                          56876   56876         0 100% /media/VirtualBoxGuestAdditions

Guest Additions をインストール

$ sudo /media/VirtualBoxGuestAdditions/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.28 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                   [  OK  ]
Building the shared folder support module                  [  OK  ]
Building the OpenGL support module                         [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions              [  OK  ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.

OpenGL でエラーが出ていますが、とりあえず無視…

Guest Additions が有効か確認する

$sudo mount -t  -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3`,dmode=777,fmode=777 vagrant /vagrant
$sudo mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant`,dmode=777,fmode=777 vagrant /vagrant

どうやら大丈夫そうです。

再度vagrant up したら今度はエラー出ませんでした。

かなり怪しい解決方法ですが、以上です。

MySQL Workbench エクスポートで Error 'SQL Error: 1142'

Workbenchでデータのエクスポートを行ったところ、下記のエラーが出ました。

解決方法をメモしておきます。

環境

エラーの内容

Unhandled exception: Error querying security information: Error executing 'SELECT * FROM mysql.user WHERE User='areadbuser' AND Host='danmaketdb.cg1q7zxhwf2x.ap-northeast-1.rds.amazonaws.com' ORDER BY User, Host'
SELECT command denied to user 'areadbuser'@'10.0.1.129' for table 'user'.
SQL Error: 1142

こらら*1*2の記事を参考にしたところ、vesion 6.3.4 にダウングレードすればなおるようです。

vesion 6.3.7をダウンロードでなおります。

ダウンロードはこちらから -> MySQL :: Download MySQL Workbench (Archived Versions)

以上です。

Homebrew Cask で古いバージョンのパッケージを作成、インストールする

MySQL Workbench 6.3.4 をHomebrew でインストールしたかったのですが、

caskroom/versionsにもパッケージが存在していないかったため、自分で作ることにしました。 *1

いくつかの記事を参考にしました。 *2 *3

Githubに/homebrew-versionsリポジトリ作成

cd $(brew --prefix)/Library/Taps/caskroom/homebrew-versions
git remote add <GitHubのユーザ名> https://github.com/<GitHubのユーザ名>/homebrew-versions

Cask のためのトークン(Caskファイルの名称など)を生成

下記のサイトから、6.3.4 のdmgをダウンロードします。

MySQL :: Download MySQL Workbench (Archived Versions)

展開するとMySQLWorkbench.appというファイル(厳密にはディレクトリ)があります。

Caskファイル名を提案してくれるツールがあるので、

展開したappを引数にして実行します。

$ "$(brew --repository)/Library/Taps/caskroom/homebrew-cask/developer/bin/generate_cask_token" \
    '/Applications/MySQLWorkbench.app'
Proposed token:               mysqlworkbench
Proposed file name:           mysqlworkbench.rb
Cask Header Line:             cask 'mysqlworkbench' do

WARNING: the file '/usr/local/Library/Taps/caskroom/homebrew-cask/Casks/mysqlworkbench.rb' already exists. Prepend the vendor name if this is not a duplicate.

すでに名前が重複しているという警告がでます。

そこで、末尾に"-634"をつけてmysqlworkbench-634.rbというファイル名でCaskファイルを作成します。

既存のCask ファイルをコピー

新規作成の場合は、

$ brew cask create アプリ名

で、$(brew --repository)/Library/Taps/caskroom/homebrew-cask/Casks/配下にファイルが作られますが、

今回は、過去バージョンのパッケージを作るため、

$(brew --repository)/Library/Taps/caskroom/homebrew-versions/Casks/配下にファイルを作成します。

下記の通り、既存ファイル$(brew --repository)/Library/Taps/caskroom/homebrew-cask/Casks/mysqlworkbench.rb

別名のmysqlworkbench-634.rbで、$(brew --repository)/Library/Taps/caskroom/homebrew-versions/Casks/配下にコピーします。

$ cd $(brew --repository)/Library/Taps/caskroom/homebrew-versions

$ cp ../homebrew-cask/Casks/mysqlworkbench.rb ./Casks/mysqlworkbench-634.rb

新規Caskファイルmysqlworkbench-634.rbを編集

元ファイルmysqlworkbench.rbを変更して、mysqlworkbench-634.rbを作成します。

変更点は以下の3つです。

  • 最初の cask の行 -> mysqlworkbench-634
  • version の行 -> 6.3.4
  • sha256 の行 -> チェックサムの再計算値

チェックサムは以下のように再計算します。

$ shasum -a 256 ~/Downloads/mysql-workbench-community-6.3.4-osx-x86_64.dmg
af214391dfc9c6bdb7640bf286732ce7d4500721906d9a0ad3b107db8f15e57a  /Users/username/Downloads/mysql-workbench-community-6.3.4-osx-x86_64.dmg

コピー元ファイルmysqlworkbench.rbの内容

cask 'mysqlworkbench' do
  version '6.3.6'
  sha256 '81732bddff9e9d6b71cc565e4d3b4636e0e47db5b344aaef4b7e20c83177d94a'

  url "https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-#{version}-osx-x86_64.dmg"
  name 'MySQL Workbench'
  homepage 'https://www.mysql.com/products/workbench'
  license :gpl
  gpg "#{url}.asc",
      key_id: '8c718d3b5072e1f5'

  app 'MySQLWorkbench.app'

  zap delete: [
                '~/Library/Application Support/MySQL/Workbench',
                '~/Library/Preferences/com.oracle.mysql.workbench.plist',
                '~/Library/Preferences/com.oracle.MySQLWorkbench.plist',
                '~/Library/Saved Application State/com.oracle.mysql.workbench.savedState',
                '~/Library/Saved Application State/com.oracle.MySQLWorkbench.savedState',
                '~/Library/Caches/com.oracle.mysql.workbench',
              ]
end

新規作成したmysqlworkbench-634.rbの内容

cask 'mysqlworkbench-634' do
  version '634'
  sha256 'af214391dfc9c6bdb7640bf286732ce7d4500721906d9a0ad3b107db8f15e57a'

  url "https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-#{version}-osx-x86_64.dmg"
  name 'MySQL Workbench'
  homepage 'https://www.mysql.com/products/workbench'
  license :gpl
  gpg "#{url}.asc",
      key_id: '8c718d3b5072e1f5'

  app 'MySQLWorkbench.app'

  zap delete: [
                '~/Library/Application Support/MySQL/Workbench',
                '~/Library/Preferences/com.oracle.mysql.workbench.plist',
                '~/Library/Preferences/com.oracle.MySQLWorkbench.plist',
                '~/Library/Saved Application State/com.oracle.mysql.workbench.savedState',
                '~/Library/Saved Application State/com.oracle.MySQLWorkbench.savedState',
                '~/Library/Caches/com.oracle.mysql.workbench',
              ]
end

インストールできるか確認

$ brew cask install mysqlworkbench-634.rb 
==> Downloading https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.3.4-osx-x86_64.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask mysqlworkbench-634
==> Moving App 'MySQLWorkbench.app' to '/Applications/MySQLWorkbench.app'
🍺  mysqlworkbench-634 staged at '/opt/homebrew-cask/Caskroom/mysqlworkbench-634/6.3.4' (1347 files, 29M)

成功したら、以下の通りチェックして、passed となればOKです。

$ brew cask audit mysqlworkbench-634 --download
==> Downloading https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.3.4-osx-x86_64.dmg
Already downloaded: /Users/onoeiko/Library/Caches/Homebrew/mysqlworkbench-634-6.3.4.dmg
==> Verifying checksum for Cask mysqlworkbench-634
audit for mysqlworkbench-634: passed

Caskファイルの変更をプルリクエストする

せっかく作成したので、他の人にも使ってもらえるよう、

Githubでプルリクエストをします。

# Gitリポジトリ
$ cd $(brew --repository)/Library/Taps/caskroom/homebrew-versions

# 新規ブランチ作成
$ git checkout -b 'mysqlworkbench-634'

# コミット
$ git add Casks/mysqlworkbench-634.rb 
$ git commit -v

コミットメッセージを入力します。

(過去のプルリクエスト*4などを参考に、適当なメッセージを入力してください。)

Add MySQL Workbench 6.3.4
    
# Please enter the commit message for your changes. Lines starting
(以下略)

コミットしたら、

GitHub にログインして,caskroom/homebrew-versionsをフォークし、

作成したブランチをプッシュします。

$ git push <ユーザ名> mysqlworkbench-634

※ パスワードはGithubの設定ページ*5から発行したトークンを使用します。(トークン作成にあたって、チェック項目がありますが、とりあえず全部チェックしときました。。)

※ pushでfatal: repository 'https://github.com/<ユーザ名>/homebrew-versions/' not foundと出る場合、参考記事*6の記載の通り、remoteをリセットすると解決するかもです。

プッシュが完了したら、

caskroom/homebrew-versionsからプルリクエストを送信します。

確認、Mergeしてもらうまで待ちましょう。

以上です。

追記

古いバージョンは明示的な理由がないと追加しないということで、Mergeしてもらえませんでした。。

古いバージョンを追加する場合は、追加理由をコミットメッセージか、プルリクエストのコメントに記載したほうが良さそうです。

MySQL Workbench 'mysqldump Version Mismatch'

Workbenchでデータのエクスポートを行ったところ、下記のエラーが出ました。

解決方法をメモしておきます。

環境

エラーの内容

/Applications/MySQLWorkbench.app/Contents/MacOS/mysqldump is version 5.7.9, but the MySQL Server to be dumped has version 10.0.17.
Because the version of mysqldump is older than the server, some features may not be backed up properly.
It is recommended you upgrade your local MySQL client programs, including mysqldump to a version equal to or newer than that of the target server.
The path to the dump tool must then be set in Preferences -> Administrator -> Path to mysqldump Tool:

ローカルのmysqldump Toolのバージョンがサーバーと合っていないことが原因のようです。

サーバーの version 10.0.17. ということで、ローカルにMariaDBをインストールします。(Homebrewを使っています。)

ローカルにMariaDBをインストール

$ brew install mariadb   

==> Downloading https://homebrew.bintray.com/bottles/mariadb-10.1.14.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring mariadb-10.1.14.yosemite.bottle.tar.gz
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To have launchd start mariadb now and restart at login:
  brew services start mariadb
Or, if you don't want/need a background service you can just run:
  mysql.server start
==> Summary
🍺  /usr/local/Cellar/mariadb/10.1.14: 573 files, 131.6M

Workbenchのmysqldump Tool のパスを設定する

インストールが完了したら

MySQLWorkbench -> Preferences -> Administrator -> Path to mysqldump Tool:

に、

/usr/local/Cellar/mariadb/10.1.14/bin/mysqldump

と入力すればOKです。

以上です。

こちらの記事を参考にしました。

MySQL Workbench 6.3.5でData Exportに失敗する場合 – Subsonic Systems