【Mac】ミュージックアプリで楽曲の表記が英語になる問題
Mac、iOSのどちらでも観測しているが、なぜかミュージックの表記が英語になるバグがある。
何年も前からずっとあるバグだが、ググっても当てになる解決法は見つからず、OSのアップデートでも改善される兆しがない。
ということなのだが、もしかしたら有効かもしれない方解決方法が一つ思い当たったので共有しておく。
Macの「システム環境」の「言語と地域」のところにある「優先する言語」の2つめに「英語」が設定されていたので、それを消す。
それからミュージックアプリで、英語表記になっている音楽にラブを付けると、途端に日本語表記に変化した。
ミュージックアプリを再起動すれば一括で直る、ということはなかった。よくわからん。
ダウンロードのやり直しでも変化はなかったが、ライブラリを一旦消して再度追加すれば日本語表記になった。
iOSの方では綿密に言語設定見直したりしていたがMacの方は見落としてた。
また英語表記に戻るかもしれないが、一旦はこれで大丈夫そう。
サブスク新規加入するならApple Musicはやめとけ。
以上。
追記:
やっぱりダメそう。英語表記に戻る。;;
【css】メニューやトップへ戻るボタンをコンテンツ内に固定する
ヘッダーにある「ハンバーガーメニューアイコン」やフッターにある「トップへ戻るボタン」を、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
で固定位置を指定する。
left
や right
を指定するとコンテンツからはみ出るのでダメ。
たかが右寄せのために 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
の値は自分で計算して用意した。
上のサンプルコードでは、ジグザグの角度は に固定してある。
と のコードもコメントアウトして用意しておいた。
参考
MacのMusicアプリで自動再生「∞」を使う
macOS Big Sur 11.2でMusicアプリを利用していたが、iOSの方にある自動再生の「∞」アイコンを見つけられなくて困っていた。
Appleのユーザガイドを見ると、UIがCatalinaのものと同じだった。
ユーザガイドではmacOS Big Sur 11.0からこの機能が使えるみたいな書き方がされているが、どうやらMacでこの機能が使えるのはmacOS Big Sur 11.3以降に付帯するMusicアプリかららしい。
現在(2020-06-28)ではBig Sur 11.4が最新OSであるので、これにアップデートする。
すると、MusicアプリのUIが変更されて、自動再生「∞」機能が使えるようになる。
ユーザガイドが少し不親切だったので、一応このことをメモしておく。
以上。
なぜ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.txt
で hello
が出力されるが、それをまた「箱」に入れ直してからパイプの右側の 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
でなんか警告が出るようになっちゃったときの備忘録。
環境
- macOS big sur
% 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
これでもう警告は出なくなった。
参考
【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
- PDF Viewer Pro by PSPDFKit
- 無料
- PDF Expertとほぼ同じだが、トリミング機能がない。
- その代わりに、書き込みがこっちの方が少し便利。
- Goodnotes 5
- これはPDF viewerじゃなくて、独自ファイル形式のノートアプリ
- PDFには書き込み機能があるがゴミカスなので、そもそもPDFに直接書き込むのは諦めた方がいい
- viewerとしてはゴミだが、書き込みに関してはこのアプリが至高(相対的に)
- ガッツリ書き込みたいPDFがあるなら、諦めてGoodnotesに読み込んでしまうのがベター
アクロバットは情弱か金持ち。以上。