nokの雑記

技術的な内容にしようと思ったけど無理でした。

seabornでの日本語フォントメモ

備忘録.

書いてる途中でめっちゃいい感じの記事を発見しました.ぜひこちらも参考にどうぞ qiita.com

tl;dr

  • seabornを使っている際にmatplotlib.pyplot.rcParamsをいじっていても日本語が豆腐化する件
  • seabornのimportでフォントの設定が殺されるので,その後にもう一度フォントを設定しなおす

環境:

  • Python 3.6.1 (mac x86_64 / Anaconda)
  • jupyter notebook (たぶん素のPythonでも同じだと思います)

まずはこんな感じのやつを実行してみます.

%config InlineBackend.figure_formats = {'png', 'retina'}

%matplotlib inline
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Meiryo'
plt.rcParams['font.size'] = 20

import seaborn

import numpy as np
---------------------------
fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(np.random.randn(10,10))
ax.set_xlabel("x軸")
ax.set_ylabel("y軸")

すると表示は…… f:id:nok0714:20180202131956p:plain

seabornスタイルにこそなっていますが,見事に豆腐化しています.試しにseabornのimport部分をコメントアウトしてみましょう.
カーネルを再起動して…(ちなみに再起動しない場合はfont.sizeが無視されます)

f:id:nok0714:20180202132145p:plain

表示されましたね.実はseabornをimportすると自動的に図がseabornスタイルになるのですが,この際matplotlibの設定を上書きしてしまうのです.
なので,以下の一連の部分を変更します.

plt.rcParams['font.family'] = 'Meiryo'
plt.rcParams['font.size'] = 20

import seaborn
↑↑↑↑↑↑↑↑これを,このように↓↓↓↓↓↓↓↓
import seaborn

seaborn.set(font=["IPAexGothic"], font_scale=10/6)

すると,このように!

f:id:nok0714:20180202133126p:plain

※seabornはfont.sizeを使うのではなくfont_scaleで調整するようです.

JBL Freeを買った

半端な値段で買うと逆に微妙なモノの好例かもしれない。

jbl.harman-japan.co.jp

耳たぶの直上に返しがないのでAppleのEarPodsが使えない(落ちる)マンなのでカナル型の完全ワイヤレスが充実するまで静観していたんですが、JBLが参入したとのことなので買ってみました。

JBL FREEの製品発売延期のお知らせ | ハーマンインターナショナル

まあいざ発売の前週だか2週前だかに突如延期して不穏な空気が漂っていたのですが、実際使ってみるともっとこう半年延期してもよかったのよって感じですね。

値段・付属品・質感など

  • 値段はAppleより若干安く、とはいえ万は超えてくる1.4から1.5万円のあたり。ソニーBoseよりは安いですね。
  • 付属品はイヤーチップ(S/M/L)と本体カバー(厚/薄)に充電用のmicroUSBケーブル、充電ケースです。
  • 質感はプラスチック~~~という感じですが、加工で多少なりとも高級感を演出しています。

機能

  • ケースから取り出せば携帯に接続
  • 右耳モノラルモード: 右のイヤーピース(左はマスターではないのでダメ)だけでモノラルのBTイヤホンとして動作させられます。意外と便利。でもバッテリが右のやつだけ痛みそう
  • 音声アシスタント対応: 右のイヤーピースにマイクが内蔵されており、同じく右のイヤーピースボタンをダブルクリックするとSiriやGoogleアシスタントを起動できます
  • 曲送り、戻し、再生、一時停止対応: 右イヤーピースで再生・停止を、左で曲送り・戻しを行えます
  • IPX5対応: ちょっとした雨や汗でも安心
  • 長いバッテリライフ: ここ結構いいとこなんじゃないかと思います。本体で4時間再生可能、充電ケースで4回満充電にできるのでつごう24時間もちます

実際に使ってみて

  • Amazonのレビューにも散々書かれているが左イヤーピースの接続が頻繁に落ちる。結構イライラ。いったん切れるとなかなか戻ってこない
  • (1/26追記) 電子レンジに負けて左イヤーピースが切れる切れる
  • 音質も期待したものとはちょっと違う。イヤーチップの関係だとは思うが、他のカナル型とはあからさまに違う音場。よく言えば広い、悪く言えばスカスカか(他社イヤーチップがほしいですね)
  • (1/26追記) 他のイヤーチップにしたら雲泥の差でした。現在はfinalのEタイプ(ソニー用軸)を使っています。
  • JBLといえば中低音!なイメージだがそんな感じの音ではない。ボーカルやギターが前に出た感じの音。

すべてを総合すると△になってしまいます。特に接続がブチブチなのがいただけない。
完全ワイヤレスは雨後の筍のごとく製品が出ているので、たくさん買ってみていいものを探すのが楽しい気もするが……というか これについては「えっまさか他のやつもこんなにブチブチ切れるの?」って思うくらい切れる。

あとこれを書くと特定されそうなんですが、イヤーピースのボタンが不良で一度交換してもらいました。クリック感が全然ないやつだったので……

↓一応Amazonのリンク

Ubuntuで拡張子関連付けがうまくいかないのでupdate-desktop-databaseをしたけどコケる

Sublime-textがOpen withのリストに出てこないので登録できないものかと思って調べていたらこんなページが。

askubuntu.com

これ幸いと回答を見ると、解決手順が2つにわかれています。

  1. /usr/share/applications/sublime_text.desktop~/.local/share/applications/sublime_text.desktopにコピー
  2. sudo update-desktop-databaseを実行

これらのうち、1番目についてはすでに~/.local/share/applications/sublime_text.desktopにファイルがあったので省略し、2を実行したらこんなエラーが。

$ sudo update-desktop-database 
Error in file "/usr/share/applications/evince-previewer.desktop": "" is an invalid MIME type ("" does not contain a subtype)
Error in file "/usr/share/applications/evince.desktop": "" is an invalid MIME type ("" does not contain a subtype)

2つのファイル(両方ともevinceなるものに関連)でエラーが出ているようです。これも調べるとちゃんと情報が出てくるんですね。先駆者すごい。

ubuntuforums.org

こちらを見ると、ファイル内に邪魔なセミコロンがあってエラーが出るようです。該当のファイルを開いてみるとこんな感じで、ちょうどカーソルの位置に邪魔なセミコロンがあります。これを消したら2のコマンドが通るようになりました。

f:id:nok0714:20171103170314p:plain


ちなみに~/.local/share/applications/sublime_text.desktopはランチャーにロックしたときに自動で生成されるものだったので中身がめちゃくちゃでした。結局1のコピーをやり直しましたとさ。

AnkerのSoundCore Boostを暫く使っての所感

発売後すぐに買いました。

tl;dr

  • ここが良いよ
    • 触り心地のよいラバー&布筐体
    • 意外と便利なBassBoost
    • 値段の割に良い音質
    • 防水
  • もうひと声欲しかったポインツ
    • 曲送り/戻しに専用のボタンはない
    • AUXポート、USBポートの蓋が開けづらい
    • BassBoostは良い方向にも悪い方向にも働く
    • 防水だからって風呂で使ったりすると布部分が……
  • これ仕様?それとも不具合?
    • 満充電にならない

Amazonのリンクはこちら↓

買った背景

 BluetoothスピーカーはSony SRS-X1を使っていたのですが、もう少し音に余裕が欲しいなあと思って新しいものを探していました。ステレオ再生ができるのも条件ですね。

外観

 黒いです。上面下面はラバーとなっていて、側面は布張りです。中々触り心地が良いので所有欲を満たせます。大した価格ではないんですが。
 コントロールは上面に位置しています。電池残量のインジケータ、電源ボタン、BassUpボタンにはLEDが仕込まれています。ボタン類は順に電源、音量マイナス、再生、音量プラス、BassUpとなっています。
 側面には一カ所突起というかタグ様になっている部分があります。ここを引くと外部入力(3.5mmジャック)、充電用microUSBポート、給電用USBポートがこんにちはします。給電用USBポートがあるということはつまりモバイルバッテリとして動作することを意味します。プレイヤーのバッテリが怪しくても安心!正直使わん……。あとこの蓋が結構硬いので開けづらい。

 最初は物凄く籠もった音を出していたので「は?」と思ったのですが、しばらく再生を続けていたらそれなりによく抜ける音になりました。価格からしたら十分な音質だと思います。
 多分この価格帯にはよくあるボーカルをちょっと押し出した感じの音です。ついでにギターとスネアドラムの音も押し出されてます。曲単位で相性の良い悪いがあるようで、かなり綺麗に鳴る曲と籠もった音になる曲に分かれます。
 外観のところでボタンの存在については触れましたがこのスピーカ、BassUpなる機能がついています。名前の由来でもありますね。BassUpボタンを押すと低音域が強調されます。ドムドムうるさい感じになるわけではなく、自然に持ち上げるような挙動です。うおおベースが聞こえるううう。ただし曲によっては効果はまちまちで、オンだと不自然にドラムが強調される曲もあります。必要に応じてオンオフした方が良いでしょう。

機能

 SRS-X1を使っていて非常に便利だったのでNFCの存在がありがたいですね。ただしNFCの動作についてはSRS-X1と異なっていて、電源オフの状態でNFCポートに端末を近づけても電源が入りません。そのまま接続に失敗します。個人的にはこの仕様がけっこう不満です。タッチするだけで電源オン&接続の動きをしてほしかった。
 SRX-X1と同様にスプラッシュプルーフ程度の防水性能があるので、お風呂でも使えます。ただ布部分が水を吸うと乾かすのが面倒です。音も籠もります。
 ここはSRS-X1と大きく違うのですが、曲送り/戻しは再生ボタンの2度押し、3度押しで対応します。専用のボタンがほしかったなあ。

その他

 しばらく使っていて気づいたのですが、充電してもなぜか満充電になりません。満充電だ!と思ってケーブルを抜いて起動すると,4つある電池残量LEDが3つ点灯した状態でスタートします。 どのAC-USBアダプタを使っても同じ挙動になってしまうので、故障かと思ってサポートに連絡し交換してもらいましたが、交換機も同じ挙動だったのでもう仕様だと思います。
 動作そのものに異常はないのでこれ以上クレーマーみたいなことをするつもりはありませんが、精神衛生によくない……

Macでplist経由の自動起動を切ろうとした話

td-agentを使っていたのですが,自動起動させたくないので設定を見直したらちょっとハマった話.
たぶん他の.plistでも効くと思われます.

よもやま

td-agent.plistの場所はこちらでした.

/Library/LaunchDaemons/td-agent.plist

起動と停止はこちら.
(起動)sudo launchstl load /Library/LaunchDaemons/td-agent.plist
(停止)sudo launchstl unload /Library/LaunchDaemons/td-agent.plist

本題

まずはファイルを見てみましょう.こんな感じ.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>td-agent</string>
  <key>ProgramArguments</key>
  <array>
    <string>/opt/td-agent/usr/sbin/td-agent</string>
    <string>--log</string>
    <string>/var/log/td-agent/td-agent.log</string>
    <string>--use-v1-config</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/opt/td-agent</string>
</dict>
</plist>

自動起動をしないときはRunAtLoadの下にある<true/>から<false/>にしたらOKと思ったら,ダメでした.
実は上の方に記述されているKeepAliveが<ture/>の場合,システムはこのデーモンをなんとか起動し続けようとするらしいです(killしてもすぐに復帰するとか).

なので,KeepAliveとRunAtLoadの<true/>を両方とも<false/>にしたら解決しました.