Slackのバージョンアップ情報が面白い
女の人が書いたんですかね。 記述の端々の言葉遣いに好感が持てます。 面白い取り組みですね。
awscli再インストール時のエラー対応
前回の記事でbrewでpythonを入れ直したのが影響なのか、awsコマンドが使えなくなりました。
/usr/local/bin/aws: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory
というエラーが出ていました。pipでコマンド確認したところ。pipのパスが通ってなかったので 再インストールしてみました。
sudo easy_install pip sudo easy_install --upgrade pip
awscliもインストールし直しました。
sudo pip install awscli
すると変なエラーが
DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only parti ally uninstall the project. Uninstalling six-1.4.1: Exception: Traceback (most recent call last): File "/Library/Python/2.7/site-packages/pip-9.0.2-py2.7.egg/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/Library/Python/2.7/site-packages/pip-9.0.2-py2.7.egg/pip/commands/install.py", line 342, in run prefix=options.prefix_path, File "/Library/Python/2.7/site-packages/pip-9.0.2-py2.7.egg/pip/req/req_set.py", line 778, in install requirement.uninstall(auto_confirm=True) File "/Library/Python/2.7/site-packages/pip-9.0.2-py2.7.egg/pip/req/req_install.py", line 754, in uninstall paths_to_remove.remove(auto_confirm) File "/Library/Python/2.7/site-packages/pip-9.0.2-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove renames(path, new_path) File "/Library/Python/2.7/site-packages/pip-9.0.2-py2.7.egg/pip/utils/__init__.py", line 267, in renames shutil.move(old, new) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move copy2(src, real_dst) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2 copystat(src, dst) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat os.chflags(dst, st.st_flags) OSError: [Errno 1] Operation not permitted: '/tmp/pip-iN62ln-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
sixがインストール済みだったのでエラーになったようです。
sudo pip install awscli --upgrade --ignore-installed six
としてsixを無視すると再インストールできました。 無事awsコマンドも使えてました。
MySQLでユーザ定義変数とcountを組み合わせて失敗した
MySQLでユーザ定義変数を使っていたときのお話です。
ユーザ情報に紐づくアカウント数に合わせて出力する形式を変更して解析しようとしてたのですが、 MySQLのユーザー定義変数をcase文で判断させようとしたところ挙動がおかしくなってしまいました。
ユーザ情報はusersテーブルに 紐づくアカウント情報はaccountsテーブルに登録してるとして、 ユーザ情報毎にアカウント情報の数を出力させて 5件以上アカウント情報が登録されているユーザは!!で強調するように出力しようとしたときに 一旦ユーザ定義変数に格納してcase文で条件分岐しようとして以下のようなSQL文を作成していました。
select u.id , u.name, @b:=count(a.id), case @cnt:=count(a.id) when @cnt >= 5 then concat('!! ', @cnt, ' !!') else @cnt end from users u inner join accounts a on a.user_id = d.id group by u.id;
出力はしようとしたcount(a.id)の値は何も表示されずに出力されてしまいました。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 9.4 ユーザー定義変数
には
SELECT ステートメントでは、それぞれの選択式は、クライアントに送信されるときにのみ評価されます。つまり、HAVING、GROUP BY、または ORDER BY 句では、選択式リストで値を割り当てられた変数を参照しても、予想どおりには機能しないということです。
と記載されているので、countで式評価したものを変数に入れるというのは難しそうです。 面倒ですが、 count(a.id)を何度も記載して出力結果を表示することで代用することにしました。 count(a.id) のような短さであればいいのですが、すごく長くなってしまった場合は一時変数に入れたくなりますね。
Amazon Musicが固まる
仕事しながらAmazon Musicで音楽聞いていますが、 MacBook Proで会社と自宅を行き来してるとスリープ起動、スリープ起動を繰り返すことになります。 なぜかCPUを食って固まることになってしまいます。
バージョンは以下の6.3.4.1269です。 随分前のバージョンでも同様な状態になるケースがあったのですが、 PCが熱暴走してるような感じになるので、困ったものです。
対処方法としてはAmazon Musicを閉じるのですが、普通に操作しても反応しないので、
アクティビティモニタから無理やり強制終了するとよいです。
brew install で Warning: python is outdated になり、nvimでWarningが発生する
brew install gawk
したときに
==> Deleted Formulae python3 ✔ llvm@3.8 mal4s mimetic nazghul picolisp ufoai voltdb ==> Processing python3 formula rename to python ==> Unlinking python3 ==> Temporarily unlinking python ==> Moving python3 versions to /usr/local/Cellar/python ==> Relinking python Warning: python is outdated! To avoid broken installations, as soon as possible please run: brew upgrade Or, if you're OK with a less reliable fix: brew upgrade python
python3が削除されてしまって python になってるんですかね。
vi hogehoge.txt
とvimで編集すると
function remote#define#FunctionBootstrap[1]..remote#host#Require[10]..provider#pythonx#Require, line 15 Vim(if):E475: 無効な引数です: Channel id must be a positive integer [deoplete] deoplete failed to load: Failed to load python3 host. You can try to see what happened by starting nvim with $NVIM_PYTHON_LOG_FILE set and opening the generated log file. Also, the host stderr is available in messages.. Try the :UpdateRemotePlugins command and restart Neovim. See also :CheckHealth. 続けるにはENTERを押すかコマンドを入力してください
となってしまって
何故かパスが外れたと勘違いしてしまい
brew install python3 Updating Homebrew... ==> Auto-updated Homebrew! Updated 2 taps (homebrew/core, caskroom/cask). ==> Updated Formulae pipenv Error: python 2.7.14_3 is already installed To upgrade to 3.6.4_4, run `brew upgrade python`
python3入れ直すとエラーになり、pythonでいれてねということなので
brew upgrade python
して
再度vimを起動
vi hogehoge.txt
エラーはでてなくなった。念のため
:CheckHealth
しておくと
Running healthchecks...
health#deoplete#check ======================================================================== ## deoplete.nvim - OK: has("nvim") was successful - OK: has("python3") was successful - INFO: If you're still having problems, try the following commands: $ export NVIM_PYTHON_LOG_FILE=/tmp/log $ export NVIM_PYTHON_LOG_LEVEL=DEBUG $ nvim $ cat /tmp/log_{PID} and then create an issue on github health#nvim#check ======================================================================== ## Configuration - OK: no issues found ## Performance - OK: Build type: Release ## Remote Plugins - OK: Up to date ## terminal - INFO: key_backspace (kbs) terminfo entry: key_backspace=^H - INFO: key_dc (kdch1) terminfo entry: key_dc=\E[3~ - INFO: $XTERM_VERSION='' - INFO: $VTE_VERSION='' - INFO: $SSH_TTY='' ## tmux - OK: escape-time: 0ms - INFO: $TERM: screen-256color health#provider#check ======================================================================== ## Clipboard (optional) - OK: Clipboard tool found: pbcopy ## Python 2 provider (optional) - INFO: Using: g:python_host_prog = "/usr/local/bin/python" - INFO: Executable: /usr/bin/python - ERROR: Command error (job=9): '/usr/bin/python' '-c' 'import neovim; print(neovim.file)' Output: Traceback (most recent call last): File "<string>", line 1, in <module>ImportError: No module named neovim - INFO: Python2 version: 2.7.10 - INFO: python-neovim version: unable to load neovim Python module - ERROR: Neovim Python client is not installed. Error: unable to load neovim Python module - ADVICE: - Run in shell: pip2 install neovim ## Python 3 provider (optional) - INFO: Using: g:python3_host_prog = "/usr/local/bin/python3" - INFO: Executable: /usr/local/bin/python3 - INFO: Python3 version: 3.6.4 - INFO: python3-neovim version: 0.1.13 (outdated; from /usr/local/lib/python3.6/site-packages/neovim) - WARNING: Latest python3-neovim is NOT installed: 0.2.4 ## Ruby provider (optional) - INFO: Ruby: ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17] - INFO: Host: /Users/hotoolong/.rbenv/shims/neovim-ruby-host - OK: Latest "neovim" gem is installed: 0.7.0 ## Node provider (optional) - INFO: Node: v8.9.4 - INFO: Host: /Users/hotoolong/.nvm/versions/node/v8.9.4/bin/neovim-node-host - OK: Latest "neovim" npm is installed: 3.5.2
エラーは出なくなった。brew install 時にはメッセージちゃんと見ておかないと嵌りそう。
neovim(nvim)でescの効きが悪いと思ったらtmuxの設定が影響していた
お題の通りですが、
以前からvimのInsert mode から抜けるのがすこし待つのが煩わしいと感じしていたのですが
何が原因でそのような症状になっているのかわかっていなかったのですが、
tmuxの影響だとわかりました。
tmuxのescape-timeがdetfault 500msになっていて、escキーの入力後に入力待になってしまっていました。 vimを使っている人にとってはかなり厄介な設定です。
.tmux.confの設定を
## esc の効きを良くする set-option -g escape-time 0
に設定することで解消されました。 長い間この現象には苦しめられていたのでストレスから解放されてスッキリした気分です。
tmux(1) - OpenBSD manual pages
tmux 2.1から設定されていたようです。
vimのxpは有効にしたいけどxでコピーは無効にしたい
かなり久しぶりのブログになりました。 ブログやめようかと思っていたのですが、続けることにしました。 どこまで続くのかわかりませんがよろしくお願いします。
日頃からvimというかneovimを使っています。 init.vimには
set clipboard+=unnamedplus
クリップボードにヤンクしたデータを連携できるのですが、 xとすると無駄に1文字がコピーされてしまって意図しない振る舞いになってしまうため
nnoremap x "_x
としてブラックホールレジスタに登録してたのですが、 このままであると、ノーマルモードでxpを使うと文字をひっくり返すことができなくて少し困っていまいた。
よくよく考えてみると xpはヤンクレジスタに登録してペーストするといいんじゃないかとおもい。
nnoremap xp "0x"0p