dorapon2000’s diary

忘備録的な。セキュリティとかネットワークすきです。

macをHigh Sierraにアップデートしたらoh-my-zshでタブ補完ができなくなった

1年ぶりのブログ更新になってしまいました。

ブログにまとめようとメモはたくさん残しているんですが、メモで満足してしまう感があります。

環境

さて、今のmacのターミナル環境はiterm2にzshとoh-my-zshを入れているのですが、気づかぬうちにタブ補完ができなくなりました。

1単語目ならコマンドの候補が、2単語目以降はファイルの候補が出てくるはずです。

タブを押してもボンボンというビープ音しか聞こえません。

自分のようなせっかちな人のために結論から述べると、High Sierraにアップデートしたことでoh-my-zshで謎の不具合が発生したことが原因です。

当初はzshからbashに切り替えてもタブ補完はできず、zshとoh-my-zshをアップデートしてもできず。

しかし、iterm2ではなくmacに初期搭載されているターミナルで試すとタブ補完できるということからiterm2に問題があるのだと思っていました。

High Sierraがiterm2のタブキーの機能を上書きしてしまったという当たりをつけて検索しても解決出来ませんでした。

結局放置してファイル名は長らくタイプしていました。

解決策

最近改めて検索したところ、oh-my-zshgithub issueに解決策が投稿されていました。

1nv3rse commented on 3 Dec 2016

I have solved it! in .oh-my-zsh/oh-my-zsh.sh, look at 14th line:

:${ZSH_DISABLE_COMPFIX:=true}

turn true to false, save it,then execute source ~/.zshrc ,restart your terminal,you will know some directory which are insecure,then execute chmod 755 <insecure-directory>, at last, back to .oh-my-zsh/oh-my-zsh.sh,the 14th line,turn false to true, and source ~/.zshrc

it will be solved!!!

github.com

まずホームディレクトリ以下にある.oh-my-zsh/oh-my-zsh.shの14行目をfalseにします。

 $ vim ~/.oh-my-zsh/oh-my-zsh.sh

.zshrcを再読込し、ターミナルを再起動します。

 $ source ~/.zshrc

すると次のようなメッセージがoh-my-zshから出ます。

Last login: Tue Feb 27 22:12:50 on ttys000
[oh-my-zsh] Insecure completion-dependent directories detected:
drwxrwxr-x    5 dorapon2000  admin    160  7  4  2015 /usr/local/Cellar/zsh/5.0.5/share/zsh
drwxrwxr-x  915 dorapon2000  admin  29280  7  4  2015 /usr/local/Cellar/zsh/5.0.5/share/zsh/functions
[oh-my-zsh] For safety, completions will be disabled until you manually fix all
[oh-my-zsh] insecure directory permissions and ownership and restart oh-my-zsh.
[oh-my-zsh] See the above list for directories with group or other writability.

[oh-my-zsh] Insecure completion caches also detected:
-rw-r--r--  1 dorapon2000  staff  1090  2 27 22:33 /Users/dorapon2000/.zcompdump-dorapon2000-MBA-5.0.5
[oh-my-zsh] Moving to "/Users/dorapon2000/.oh-my-zsh/cache/zcompdump-bad/"...

/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:81: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:95: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:102: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:115: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:125: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:135: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:144: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:150: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:153: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:156: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:159: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:169: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:172: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:174: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:188: command not found: compdef
/Users/dorapon2000/.oh-my-zsh/plugins/git/git.plugin.zsh:200: command not found: compdef

上のファイルパスが示されている2行に注目して、それらに対して権限を755にします。

 $ chmod 755 /usr/local/Cellar/zsh/5.0.5/share/zsh
 $ chmod 755 /usr/local/Cellar/zsh/5.0.5/share/zsh/functions

再び~/.oh-my-zsh/oh-my-zsh.shの14行目をtrueに戻せば.zshrcを再読込すればタブ補完が復活します!

 $ vim ~/.oh-my-zsh/oh-my-zsh.sh
 $ source ~/.zshrc

具体的な原因やなぜ復活するのかなどの疑問は塵となり海未の藻屑と化しました。

issueではタブキーをオーバーライドしてHigh Sierraのキー設定を上書きした方もいらっしゃるようです。

検索した当初は同じように悩んでる人がたくさんいると思ってたのですが、日本語記事は見当たらず、そんな人の助けになれば幸いです。

参考

stackoverflow.com

GF(仮)の小技

GF(仮)をやり始めてもう3年半程になりました。やりながら気づいた便利だと思うことやノウハウが結構あるので、初めてやる方やそうではない方でも役にたてばと思います。GFユーザーの中では当たり前に使われてるテクニックもあります。一応、wikiやGF公式には書かれていないようなことが多いので参考になるはずです。

前提

  • PC版(スマフォでは使えないものもあり)

時間短縮系

  • 無料キュピとスマイルキューピッドは1回押してブラウザバックすれば、キャッシュがあるのですぐ次の作業に移れる。
  • キュピチケはブラウザバック+再読込しないと使えず、画面下のタブを移動する必要があるため、同じキュピを連続で使うときは普通に画面に従ったほうが吉。1枚しかないときはブラウザバック+再読込。
  • 部活対抗戦を含むバトルはボタンを押して再読込すると再びバトル画面にもどる。バトルの結果はわからない。
  • 各イベントの「レターボックス」や「ブースチケット」なども再読込で先頭画面に戻る。
  • 多くのイベントでイベントアニメ(イベントOPやストーリーでゼリーを上げたあとのアニメ)を再読込で飛ばせる。
  • ぷちひろばやおでかけは画面上にマイページボタンがないため、ぷちガールちゃんトップ→マイページと2回ボタンを押さないといけない。マイページをブックマークにしているならば、ブックマークを押すほうがよい。
  • その日はじめてログインすると様々なPRやログインボーナスがあるが、ブックマークの連打ですぐ回避できる。

知識系

  • 前日の当日炭酸と当日ルンバーは午前3時にマイページへアクセスすることで失われる。正確には「出席簿の○○日連続ログイン」のページへのアクセス。それを回避できれば前日の当日炭酸ルンパーは使えるため、もし消費し忘れていたら、回避すればよい。(私はキューピッド画面をブックマークしている。)貯めた状態で無料キューピッドをすると、さらに貯まる。ただしログインはしたことにならないため、使い切ったらマイページにアクセスしないと連続ログインは途切れる。
  • デートをすれば進展度が2倍の量増える。進展度をあげたいガールだけを主選抜にした選抜をつくり、GF公式サークル(マイページ下方)の凸待ちのトピックで、その人達に3回バトルすれば進展度をすぐマックスにすることができる。登校でも可。
  • 体力ゲージを使うボタンは連続で押せないようになっているが、複数の端末でならその制限はないため、PCとスマフォでボタンを押し続けていれば2倍の速度で消費できる。
  • 選抜ボーナスはすべてLv.5以上にするようにするべき。弱いガールでも選抜ボーナスがLv.5になるように調整したほうが発揮値は高い。http://www52.atwiki.jp/vcard/pages/51.html
  • 主選抜ガールの声援効果は「自分の攻援力スーパー特大アップ」よりも「COOLの攻守大アップ」の方が最終的な発揮値は基本的に高い。http://www52.atwiki.jp/vcard/pages/141.html
  • 部活対抗戦の対戦相手はGFDBで部活検索すれば過去の順位などを確認できる。http://gfdb.info/
  • 部活対抗戦の選抜における獲得pt上昇率
    • 副選抜は声援Lv5以上でないとptはアップしない。
    • 副選抜は声援Lv10だと一人につき1.0%上昇する。
    • 主選抜は声援Lv1でも上昇し、0.1~4.0?%まで上昇する
    • 声援Lv10だとして、主全員&副1人の攻守大UP(約10%↑) > 属性大UP(約9%↑) >> 全体大UP(約5%↑) >> 自分自身スーパーUP(約3%↑)
    • 相手DOWN攻援UPと攻守UPは同じ。
    • 中〜特大UPは大UPとほぼ同じ。
    • 相性が悪くても1~2%しか落ちず、属性専用のデッキつくるより一番力を発揮できるデッキの方がいい。

GFの関連サイト

Sierraにバージョンアップしたらlatexコマンドが打てなくなった

今までOS X Yosemiteからバージョンアップせずに過ごしてきて、最近Sierraにバージョンアップしました。

特に不具合もなく好調だったんですが、platexコマンドを打とうとしてnot foundと出てしまいました。

とは言っても、今回は比較的簡単に問題解決しました。

前提

  • Yosemite -> Sierra
  • TeX Live Utility (MacTex-2014)

問題の部分

MacTexの公式サイトに載っています。

Sierra - MacTeX - TeX Users Group

要約すると、El Capitan以降でインストールする場所のパスが変わっていて、

MacTex-2014以前はそれに対応していないということです。

MaxTex-2016で上書きすれば、パスの書き換えをしてくれて問題も解決します。

ということで、MacTex-2016のダウンロードページ に行ったら下の方に、

リンクの書き換えだけなら"very small package FixLink.pkg"をインストールすればよいとありました。

MacTex-2016.pkgは2GBもあるので、私はこっちで済ませました。

mediatombでDLNAサーバを構築

ubuntuサーバを立て出したのは、立ち読みしておもしろそうで、そのまま購入した日経Linuxのせいです。

日経Linux(リナックス) 2016年 10月号 [雑誌]

日経Linux(リナックス) 2016年 10月号 [雑誌]

一通りサーバの設定も終わったところで、 「07 MediaTombでDLNAサーバーを構築」をやってみました。DLNAサーバというのは家電、ゲーム機、スマフォで動画や音楽を共有するためのサーバらしいです。MediaTombがそのためのサーバーソフトです。本の説明では非常に簡潔に書かれているのですが、全く一筋縄にはいかず、最後の最後で諦めました。一応たくさんの資料を読んだのでまとめておいて、もし誰かの参考にでもなればと思います。


前提

流れ

  1. mediatombのインストール
  2. mediatombの設定
  3. mysqlの設定
  4. ブラウザで共有するファイルを選択
  5. DLNAクライアントで動画を確認

mediatombのインストール

$ sudo apt-get install mediatomb

mediatombの設定

設定ファイルは2つあります。

  • /etc/default/mediatomb
  • /etc/mediatomb/config.xml

手作業でも設定できますが、本ではコマンドですべて設定してしまっています。 私もそれに従いました。

# 共有設定用のweb画面(管理画面)にアクセス可能にする
$ sudo sed -i -e ’s/enabled=“no”/enabled=“yes”’ /etc/mediatomb/config.xml

# ネットワークデバイス名を確認
$ ip link
...
2: wlp3s0b1: <BROADCAST, ...

# 外部からアクセス可能にする (2つ目のINTERFACE=の部分は先程のデバイス名を入れる)
$ sudo sed -i -e ’s/INTERFACE=“lo”/INTERFACE=“wlp3s0b1”' /etc/default/mediatomb

# システム起動時の自動起動を設定 (本ではsystemctlを使用)
$ sudo sysv-rc-conf mediatomb on

# ユニバーサルプラグアンドプレイライブラリを更新
$ wget http://bugs.launchpad.net/ubuntu/+source/libupnp/+bug/1571199/+attachment/4638260/+files/libupnp6_1.6.19+git20160116-1_amd64.deb
$ sudo dpkg -i libupnp6_1.6.19+git20160116-1_amd64.deb

# 再起動
$ sudo reboot

本ではこれでhttp://localhost:50500/にアクセスすれば管理画面が開くとなっていますが、なりませんでした。

$ sudo cat /var/log/mediatomb | tail
…
ERROR: You enabled both, sqlite3 and mysql but only one database driver may be active at a time!

起動時に失敗しているらしくログを見てみると、sqlitemysqlが両方onになっているから片方にしろということでした。

$ sudo vi /etc/mediatomb/config.xml
…
-<sqlite3 enabled=“yes">
+<sqlite3 enabled=“no">
...

sqlite3だけnoにしてmysqlを有効にしました。 しかし再びエラー。

$ sudo cat /var/log/mediatomb | tail
…
ERROR: error in configuration, transcoding profile "oggflac2raw" could not find transcoding command ogg123 in $PATH

次はogg123というコマンドがないということなので、vorbis-toolsをinstallします。

$ sudo apt-get install vorbis-tools

三度目のエラー

ERROR: error in configuration, transcoding profile "vlcmpeg" could not find transcoding command vlc in $PATH

似た感じですが、結構悩まされました。結論から言えばvlcは例のVLCのことで、それをinstallするだけで済みます。

$ sudo apt-get install vlc

mysqlの設定

mediatombについて調べていると、mysqlの設定はしなくてもうまくいくっぽいのですが、私のところでは四度目となるエラーがログに記されてました。

ERROR: The connection to the MySQL database has failed: mysql_error (1045): "Access denied for user 'mediatomb'@'localhost' (using password: NO)"

仕方ないので、mysqlにmediatombというユーザを作ってmediatombというデータベースを割り当てます。

$ mysql -u root -p
mysql > create database mediatomb;
mysql > create user ‘mediatomb’@‘localhost' identified by ‘media tomb’;
mysql > grant all privileges on mediatomb.* to ‘mediatomb’@‘localhost’;
mysql > flush privileges;
mysql > exit;

# データベースの雛形作成
$ mysql -u mediatomb -p mediatomb < /usr/share/mediatomb/mysql.sql

デフォルトではmysqlのパスワードはないもので設定されているので、パスワードをconfig.xmlに追加しておきます。

$ sudo vi /etc/mediatomb/config.xml
...
<mysql enables=“yes”>
  <host>localhost</host>
  <username>mediatomb</username>
 +<password>mediatomb</password>
  <database>mediatomb</mediatomb>
</mysql>

ここまでやって、やっとエラーは出なくなります。

ブラウザで共有するファイルを選択

http://[server-ipaddr]:50500/にアクセスできます。

ログイン画面はconfig.xmlで指定したユーザー名とパスワードでログインできます (デフォルトはmediatomb:mediatomb)。

左上に [ Database | Filesystem] とあるので、Filesystemを選ぶとサーバの中身が木構造になって表示されます。音声ファイルや動画ファイルのところまで辿り、右の+ボタンを押すと共有されます。共有されたファイルやディレクトリはDatabaseで確認できます。私はなぜか画面を更新しないと確認できませんでしたが。

こちらのサイトで詳しく説明されていました。 How to Add Content to MediaTomb

以上でサーバ側の設定は完了です。

補足

config.xmlにmimetypeを追加

<extension-mimetype ignore-unknown="no”>
...
 +<map from="mp4" to="video/mp4"/>
</extension-mimetype>

config.xmlで日本語設定

<import hidden-files=“no”>
 +<filesystem-charset>UTF-8</filesystem-charset>
 +<metadata-charset>CP932</metadata-charset>
 +<playlist-charset>UTF-8</playlist-charset>

私はこの設定をしても文字化けが直りませんでした。

ubuntuにおけるvlcmpeg

公式サイトによると、vlcmpegはデフォルトだと動かないらしいです。参考にしていたどの日本語のサイトにもなってなかった話でよくわかりません。

<agent command=“vlc”...
-vcodec=mp2v
+vcodec=mp1v 

DLNAクライアントで動画を確認

macで見られるDLNAクライアントには、なんとVLCがありました。

と喜ぶのもつかの間、VLCのローカルネットワーク - ユニバーサルプラグ & プレイに共有ファイルが表示されるはずが、なにも表示されません。サーバのIPアドレスなどを設定しなくていいのかと疑問に思うも、VLC 2.* は、なにもしなくても表示されるようです。ただ、一部で表示されないような不具合もあるようで*1、もしかしたらこれにあたるのかもしれません。サーバ上のログは何もエラーを吐いていませんでした。


VLCは諦めてこちらも無料のKODIと呼ばれるソフトをダウンロードしました。かなり豪華なUIに驚きます。

さっそくDLNAサーバに繋いでみると、ちゃんと登録した共有ファイルの一覧が見れます。見たい動画をプレイリストに登録して、いざ視聴。が、残念ながらここで終わりです。視聴できませんでした。サーバ側はまったくエラーを吐いていません。 mac側のログを見てみると次のようになっていました。

$ cat ~/Library/Logs/kodi.log| tail -n 30
...
07:12:35 T:140735217373952  NOTICE: DVDPlayer: Opening: http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4
07:12:35 T:140735217373952 WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
07:12:35 T:4704055296  NOTICE: Creating InputStream
07:12:35 T:4704055296   ERROR: CCurlFile::Stat - Failed: Couldn't connect to server(7) for http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4
07:12:35 T:4704055296   ERROR: CCurlFile::FillBuffer - Failed: Couldn't connect to server(7)
07:12:35 T:4704055296   ERROR: CCurlFile::Open failed with code 0 for http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4
07:12:35 T:4704055296   ERROR: Open - failed to open source <http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4>
07:12:35 T:4704055296   ERROR: CDVDPlayer::OpenInputStream - error opening [http://192.168.150.50:50500/content/media/object_id/3619/res_id/0/ext/file.mp4]
07:12:35 T:4704055296  NOTICE: CDVDPlayer::OnExit()
07:12:35 T:140735217373952   ERROR: Playlist Player: skipping unplayable item: 0, path [upnp://e0c9f427-1f7a-42b5-9bcd-077b774c87fd/3619/]
07:12:35 T:140735217373952  NOTICE: CDVDPlayer::CloseFile()
07:12:35 T:140735217373952  NOTICE: DVDPlayer: waiting for threads to exit
07:12:35 T:140735217373952  NOTICE: DVDPlayer: finished waiting
07:12:35 T:140735217373952  NOTICE: CDVDPlayer::CloseFile()
07:12:35 T:140735217373952  NOTICE: DVDPlayer: waiting for threads to exit
07:12:35 T:140735217373952  NOTICE: DVDPlayer: finished waiting

Failed: Couldn't connect to server(7)
ここが一番の原因っぽいのですが、調べても私と状況が違うものばかりでてきて、結局力尽きました。(vcodec=mp1vの場合、mp2vとするとまた別のエラーが出ます)

余力があれば、いつか使えるようにしたいですね。

参考

mysql関連

vlc関連

kodi関連