かすみん日記

暇なときに何か喋ります

【Mac】ミュージックアプリで楽曲の表記が英語になる問題

MaciOSのどちらでも観測しているが、なぜかミュージックの表記が英語になるバグがある。

何年も前からずっとあるバグだが、ググっても当てになる解決法は見つからず、OSのアップデートでも改善される兆しがない。

ということなのだが、もしかしたら有効かもしれない方解決方法が一つ思い当たったので共有しておく。

Macの「システム環境」の「言語と地域」のところにある「優先する言語」の2つめに「英語」が設定されていたので、それを消す。

それからミュージックアプリで、英語表記になっている音楽にラブを付けると、途端に日本語表記に変化した。

ミュージックアプリを再起動すれば一括で直る、ということはなかった。よくわからん。

ダウンロードのやり直しでも変化はなかったが、ライブラリを一旦消して再度追加すれば日本語表記になった。

iOSの方では綿密に言語設定見直したりしていたがMacの方は見落としてた。

また英語表記に戻るかもしれないが、一旦はこれで大丈夫そう。

サブスク新規加入するならApple Musicはやめとけ。

以上。


追記:

やっぱりダメそう。英語表記に戻る。;;

【css】メニューやトップへ戻るボタンをコンテンツ内に固定する

f:id:geniusium:20210715195656p:plain

ヘッダーにある「ハンバーガーメニューアイコン」やフッターにある「トップへ戻るボタン」を、width を設定せず max-width のみを設定しているレスポンシブルなコンテンツ内の右端に固定する方法。

sample code

See the Pen by nakasu (@nakasu) on CodePen.

解説

header, main, footer の中に、max-width を設定した .wrapper を入れて中央寄せしている。

このときに、「メニュー」と「トップへ戻るボタン」を .wrapper 内で右端に寄せている。

.wrapper の外にははみ出ないのがポイント(両端)。

右寄せするときに right: 0; とするのではなく、親要素に

display: flex;
justify-content: flex-end;

を設定することで実現する。

固定は普通に position: fixed; で設定し、top あるいは bottom で固定位置を指定する。

leftright を指定するとコンテンツからはみ出るのでダメ。

たかが右寄せのために flex なんて使って良いのか疑問だが、他に方法が思いつかなかった。ググっても見当たらない。

他に良い方法があったら教えてください。

以上。

【sass】ギザギザを作る

ギザギザというかジグザグのスタイルを作った。

See the Pen zigzag by nakasu (@nakasu) on CodePen.

コード

zigzag というクラス名の要素の擬似要素 :before:after にジグザグを作る。

HTML:

<div class="zigzag">
  ジグザグ
</div>

scss:

@mixin zigzag($color, $height, $position) {
  @if $position != before and $position != after {
    @error "$positioin '#{$position}' must be either before or after.";
  }

  background-color: $color;
  position: relative;

  &:#{$position} {
    content: "";
    position: absolute;
    left: 0;
    height: $height;
    width: 100%;

    $deg: 30deg;
    $tan: 1 / 1.732;

    // $deg: 45deg;
    // $tan: 1;

    // $deg: 60deg;
    // $tan: 1.732;

    $box-h: 2 * $height;
    $box-w: $box-h / $tan;

    $is-before: if($position == before, true, false);

    @if $is-before {top: -$height;}
    @else {bottom: -$height;}

    $deg: if($is-before, $deg, 180deg - $deg);
    $ratio: if($is-before, 50%, 25%);

    background:
      linear-gradient($deg, $color $ratio, transparent $ratio),
      linear-gradient(360deg - $deg, $color $ratio, transparent $ratio);
    background-size: $box-w $box-h;
  }
}

.zigzag {
  @include zigzag(tomato, 10px, before);
  @include zigzag(tomato, 10px, after);
}

解説

zigzag というmixinを、ジグザグさせたい要素のスタイルにincludeする;

.zigzag {
  @include zigzag(tomato, 10px, before);
}

1つ目の引数が色、2つ目が高さ、3つ目が擬似要素名。

before だと上にジグザグ、after だと下にジグザグする。

ジグザグの角度を変えたい場合は、mixin zigzag の定義を直接編集する。

角度 $deg とその正接 $tan の値を書き換えてください。

不満点

sassは三角関数が使えないらしい。アホである。

なので、タンジェント $tan の値は自分で計算して用意した。

上のサンプルコードでは、ジグザグの角度は  30^\circ に固定してある。

 45^\circ 60^\circ のコードもコメントアウトして用意しておいた。

参考

kuzlog.com

developer.mozilla.org

MacのMusicアプリで自動再生「∞」を使う

macOS Big Sur 11.2でMusicアプリを利用していたが、iOSの方にある自動再生の「∞」アイコンを見つけられなくて困っていた。

Appleのユーザガイドを見ると、UIがCatalinaのものと同じだった。

support.apple.com

ユーザガイドではmacOS Big Sur 11.0からこの機能が使えるみたいな書き方がされているが、どうやらMacでこの機能が使えるのはmacOS Big Sur 11.3以降に付帯するMusicアプリかららしい。

現在(2020-06-28)ではBig Sur 11.4が最新OSであるので、これにアップデートする。

すると、MusicアプリのUIが変更されて、自動再生「∞」機能が使えるようになる。

support.apple.com

ユーザガイドが少し不親切だったので、一応このことをメモしておく。

以上。

なぜxargsが必要か【シェルスクリプト】

間違い探し

まずは hello という内容のファイル a.txt を作成しておく。

% echo hello > a.txt
% cat a.txt
hello

ここで、ファイル名 a.txt をパイプで与えて、結果的に cat a.txt を実行するようにしたいとする。

以下のようにコマンドを実行した。

% echo a.txt | cat
a.txt

あれれ、a.txt の中身の hello じゃなくて、単に文字列 a.txt が表示されてしまったぞ。

パイプの左側のコマンドの標準出力を、パイプの右側のコマンドに標準入力として与えているはずだが、なぜ。

答え合わせ

パイプで左から右に渡している「もの」は、標準出力を「箱(ファイルのようなもの?)」に入れたものになっている。

つまり、出力である「文字列」を「箱」に入れて、「箱」ごとパイプの右へ渡している感じだろうか。

一方、普段 cat a.txt などのようにしてコマンドラインで与えている引数は、「文字列の入った箱(ファイル)」ではなく、単なる「文字列」である。

パイプの左側の標準出力を「文字列」としてそのまま右側に渡したいのであれば、それを「箱」から出してあげなければならない。

そして、それをしてくれるコマンドが xargs である。

つまり、下記のように修正すれば良い。

% echo a.txt | xargs cat
hello

こうすると、ちゃんと a.txt の中身を cat コマンドで表示できた。

具体例と説明?

と言われても、いまいちわからん。結局何が違うのか。

xargs があるのとないので、出力がどう違うか、いくつか見てみる。

まず準備。

% echo hello > a.txt

% ls
a.txt

% cat a.txt
hello

いくつかサンプル。

% echo a.txt | cat 
a.txt

% echo a.txt | xargs cat
hello

% echo a.txt | echo     


% echo a.txt | xargs echo
a.txt

% cat a.txt | cat
hello

% cat a.txt | xargs cat
cat: hello: No such file or directory

% cat a.txt | echo     


% cat a.txt | xargs echo
hello

echo a.txt | cat -> a.txt

まず echo a.txt | cat では、a.txt という「文字列が入った箱」が引数として cat に渡される。

これは、a.txt という内容のファイルを cat に渡しているのと同じ意味である。

つまり、 a.txt が出力されることになる。

echo a.txt | xargs cat -> hello

echo a.txt | xargs cat では、a.txt という「文字列」が引数として cat に渡される。

これは、cat が引数として与えられた a.txt という名前のファイルの中身を表示するので、hello が表示される。

echo a.txt | echo -> ""

echo a.txt | echo を実行すると何も表示されない。

これは、a.txt という文字列が入った箱を echo に渡していることになっている。

echo は引数の「文字列」を表示するコマンドなので、「箱」を渡しても何も起きない。つまり、何も表示されない。

echo a.txt | xargs echo -> a.txt

echo a.txt | xargs echo では a.txt が表示される。

これは、「箱」から出した a.txt という「文字列」が echo に渡されるので、a.txt が表示される。

cat a.txt | cat -> hello

cat a.txt | cat を実行すると、a.txt の中身である hello が表示される。

パイプの左側の cat a.txthello が出力されるが、それをまた「箱」に入れ直してからパイプの右側の cat に渡す。

なので、右側で再び「箱」から中身を取り出して hello が表示される。

cat a.txt | xargs cat -> ERROR

cat a.txt | xargs cat では、エラーが表示される。

hello を「箱」に入っていない「文字列」としてパイプの右側の cat に渡すので、「hello というファイルなんてないぞ」と怒られる。

cat a.txt | echo -> ""

cat a.txt | echo を実行しても何も表示されない。

これも、パイプの右側の echo に「文字列」ではなく「箱」を渡しちゃってるので、表示するものがないためである。

cat a.txt | xargs echo -> hello

cat a.txt | xargs echo を実行すると hello が表示される。

パイプの左側の出力である hello を「箱」に入れずに「文字列」として右側の echo に渡しているので、hello は表示される。

おわりに

私もよくわからなくて困っていたら、xargs を付ければ良いとTwitterで教えてもらった。

なぜ xargs が必要なのかはわかったが、パイプのデフォルトで xargs を付けてくれればいいのにと思っている。

なぜパイプを通すときに、標準出力の「文字列」を「箱(ファイル? 配列?)」に入れる必要があるのだろうか。

あと便宜上「箱」と書いてきた「もの」の名前を知っている人がいたら教えて欲しいです。

man xargs のマニュアルとかでは「string」と「argument」という言葉が出ていたが、「string」はこの記事でいう「文字列を箱に入れたもの」に対応していて、データ構造的に配列っぽいものだと思うのだが、文字列と呼んでいいのかわからない。

そもそも「ファイル」が一体何者なのか知らない。

まあそんな感じですた。

【Ruby】warning: already initialized constant

jekyll server でなんか警告が出るようになっちゃったときの備忘録。

環境

% ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin20]

% rbenv -v
rbenv 1.1.2

% gem -v
3.0.3

% bundle -v
Bundler version 2.2.20

% jekyll -v
jekyll 4.2.0

症状

gem install したときに、なんかconflictしてるけど上書きしてもええか?と聞かれてyesと言ってしまったら、警告が出るようになってしまった;

% jekyll server
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils/version.rb:4: warning: already initialized constant FileUtils::VERSION
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:105: warning: previous definition of VERSION was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1267: warning: already initialized constant FileUtils::Entry_::S_IF_DOOR
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1284: warning: previous definition of S_IF_DOOR was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1540: warning: already initialized constant FileUtils::Entry_::DIRECTORY_TERM
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1577: warning: previous definition of DIRECTORY_TERM was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1595: warning: already initialized constant FileUtils::OPT_TABLE
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1635: warning: previous definition of OPT_TABLE was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1649: warning: already initialized constant FileUtils::LOW_METHODS
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1694: warning: previous definition of LOW_METHODS was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1656: warning: already initialized constant FileUtils::METHODS
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1701: warning: previous definition of METHODS was here
...

対応

該当gemをアンインストールすればいいらしい;

% gem uninstall fileutils
Successfully uninstalled fileutils-1.5.0

その後アップデート;

% gem update --default
Updating installed gems
Updating fileutils
Fetching fileutils-1.5.0.gem
Successfully installed fileutils-1.5.0
Done installing documentation for fileutils after 0 seconds
Done installing documentation for fileutils after 0 seconds
Updating mimemagic
Successfully installed mimemagic-0.4.3
Done installing documentation for mimemagic after 0 seconds
Done installing documentation for mimemagic after 0 seconds
Gems updated: fileutils mimemagic

他にもいくつかのgemで同様の警告が出ていたので、全てアンインストール;

gem uninstall logger
gem uninstall etc
gem uninstall strscan
gem uninstall forwardable

gem update --default

これでもう警告は出なくなった。

参考

stackoverflow.com

github.com

【iPad】Mendeley/Zoteroのモバイルアプリがサ終してたので代替

千年ぶりに論文読もうと思ったらMendeleyのiPadアプリがサ終してた。

みんなZoteroに移行したらしいけど、Zoteroもモバイルアプリ無いんだが?

PaperShipという非公式?アプリでMendeleyやZeteroにログインできるので、これで代替すればよさそう。

AppStore: https://apps.apple.com/jp/app/papership-mendeley-zotero/id631980748

やはり学問はオワコン。

おまけ

ちなみに、わたちのiPadおすすめPDF viewerは以下の通り:

  • PDF Expert
    • 無料版はDocuments
    • トリミング(余白除去)とダークモードが使える
    • 2ページ表示ができる
    • スクロール表示ができる
    • クラウドとの連携もスムーズ
  • PDF Viewer Pro by PSPDFKit
    • 無料
    • PDF Expertとほぼ同じだが、トリミング機能がない。
    • その代わりに、書き込みがこっちの方が少し便利。
  • Goodnotes 5
    • これはPDF viewerじゃなくて、独自ファイル形式のノートアプリ
    • PDFには書き込み機能があるがゴミカスなので、そもそもPDFに直接書き込むのは諦めた方がいい
    • viewerとしてはゴミだが、書き込みに関してはこのアプリが至高(相対的に)
    • ガッツリ書き込みたいPDFがあるなら、諦めてGoodnotesに読み込んでしまうのがベター

クロバットは情弱か金持ち。以上。