- 投稿日:2020-11-20T19:51:33+09:00
MacOS(Catalina)でHeimdallを使いたい
そのままだとcatalinaに対応していないので、パッチを当ててビルドします。
libusb,qt5,cmakeが必要なので、インストールしていない場合はbrewでインストールします。
brew install libusb brew install qt5 brew install cmakeビルドとインストール
git clone https://gitlab.com/BenjaminDobell/Heimdall.git cd Heimdall wget https://gitlab.com/BenjaminDobell/Heimdall/-/merge_requests/468.diff git apply 468.diff mkdir build cd build cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DQt5Widgets_DIR=/usr/local/opt/qt5/lib/cmake/Qt5Widgets .. make sudo cp bin/heimdall /usr/local/bin参考
- 投稿日:2020-11-20T18:28:42+09:00
Homebrewを複数ユーザーで使おうとすると、パーミッションエラー
すでにHomebrewをインストールして使っていたMacに新ユーザーを追加して、そちらでもHomebrewを使おうとしたら、パーミッションエラーが起こった。
せっかくなので、対処法とともに残します。
環境
- MacBook Pro (13-inch, 2020)
- macOS Catalina 10.15.7
- 新ユーザーは管理者として作成している
経緯
brew install
でパーミッションエラー発生
brew install
でパッケージをインストールしようとしたところ、パーミッションエラーが出た。エラーメッセージでは
sudo chown -R $(whoami) /usr/local/Cellar
を実行するようにアナウンスされる。が、これだとオーナーを新ユーザーに変更するだけなので、現行ユーザー側で
brew install
などを実行しようとすると、きっと同じエラーが発生する。現状のパーミッション
/user/local
ディレクトリと、その配下の各ディレクトリの所有者は、下記の通り。
ディレクトリ パーミッション ユーザー グループ /user/local drwxr-xr-x root wheel /user/local/配下 drwxr-xr-x 現行ユーザー admin /user/local/Cellar drwxr-xr-x 現行ユーザー admin /user/local/Homebrew drwxr-xr-x 現行ユーザー admin 対応
新ユーザーは管理者として作成しているので、adminグループに属している。しかし、
/user/local/
配下の各ディレクトリにはadminグループへの書き込み権限が無かった。そこで、adminグループへの書き込み権限を与える。
$ sudo chmod -R g+w /user/local/*これで、ひとまず
brew install
は完了できた。brew doctor
の内容も、概ね問題なさそう。
/usr/local
自体への権限付与はできなかった「Homebrew 複数ユーザー」などで検索すると、
/usr/local
自体のグループと書き込み権限を変更しようとする記事がいくつかあった。$ sudo chgrp admin /usr/local $ chmod -R g+w /usr/localしかし、実行しようとするとエラーになってしまった。
~ $ sudo chgrp admin /usr/local chgrp: /usr/local: Operation not permittedHomebrewの再インストールでも解決できるようだが、すでにインストール済みのパッケージの再インストールも必要になるので、あまりやりたくなかった。
なので、この方法は見送った。
残る問題
都度、権限のメンテナンスが必要そう
どちらかのユーザーで新しいパッケージをインストールすると、
/user/local/Cellar/パッケージ
,/user/local/Homebrew/配下
の権限がまた変わってしまうので、なにか書き込み必要なときには、再度上記コマンドの実行が必要そう。そもそもホームディレクトリにインストールしたい
本当は、各ユーザーのホームディレクトリにHomebrewをインストールしたい。以下の記事あたりが参考になりそう。
- 投稿日:2020-11-20T18:11:50+09:00
ガンダムっぽいカラースキーム@vim
つくってみた
vimの、ガンダム(っぽい)カラースキーム。
vimのロボット操作感アップ!?
hnsol/vim-deep-space
→ガンダム THE ORIGINっぽいかんじで(darkのみ)
hnsol/vim-one-g
→キュベレイっぽい感じで(light/dark)インストール
通常のプラグイン管理ツールなどで。
vim-plugの場合
Plug 'hnsol/vim-deep-space' set termguicolors set background=dark colorscheme deep-spacePlug 'hnsol/vim-one-g' set termguicolors set background=dark colorscheme one
- 投稿日:2020-11-20T17:11:41+09:00
M1 Macの開発環境
MacBook Pro (M1)でのメモです。インストールできるかどうか状況確認メモです。
自分がよく使うものを中心に。なるべくARMネイティブになるように。PowerPC->x86->x86_64とユニバーサルバイナリを挟んで対応してきたMacPortsはこういう過渡期に強いです。
編集リクエストウェルカムです。
現在の状況
※上流の言語がまだサポートしていないもの(Go製のもの)はまだリストに入れていません(例: Hugo)
IDE/エディタ
状況 アプリ バージョン arch インストール メモ(記録日) ✔︎ Visual Studio Code exploration arm64 insider build 11/24更新: Insiderページの右下のARM64 Experimentalを選べばARMネイティブ ✔︎ Vim 8.2.1719 arm64 MacPorts 11/21 NeoVim 0.4.4 arm64 MacPorts 11/22: ビルド失敗 Emacs 27.1 arm64 MacPorts 11/21: ビルド失敗 ✔︎ Emacs 27.1 x86_64 バイナリインストーラ 11/23 ✔︎ GoLand 2020.2.3 universal(x86_64/i386) 公式サイト 11/20: x86_64向けGoを検知してビルド&実行までできた ✔︎ Visual Studio for Mac 2019 x86_64 公式サイト 11/24 Eclipse 2020-09 x86_64 公式サイト 11/24: JDKが選べるが、arm64JDKを指定するとエラー CLIツール/パッケージマネージャ
状況 アプリ バージョン arch インストール メモ(記録日) ✔︎ MacPorts 2.6.4 universal(x86_64/arm64) Big Sur版 11/20 ✔︎ CMake 3.18.5 arm64 MacPorts 11/20: なにかの依存で入った ✔︎ Ninja 1.10.1 arm64 MacPorts 11/24 ✔︎ TexLive 2020 arm64 MacPorts 11/21: +fullでインストール。途中texlive-fonts-extraでめちゃ時間かかる ✔︎ the_silver_searcher 2.2.0 arm64 MacPorts 11/20 ✔︎ Doxygen 1.8.20 arm64 MacPorts 11/22 ✔︎ Graphviz 2.40.1 arm64 MacPorts 11/22 ✔︎ jq 1.6 arm64 MacPorts 11/22 ✔︎ word2vec 20170716 arm64 MacPorts 11/22 ✔︎ mecab 0.996_0 arm64 MacPorts 11/22 プログラミング言語
状況 アプリ バージョン arch インストール メモ(記録日) ✔︎ Python 3.8.6 arm64 MacPorts 11/20 Python 3.9 arm64 MacPorts 11/20: ビルド失敗 Python 3.9 arm64 ソースビルド 11/20: ビルド失敗 ✔︎ Python master arm64 ソースビルド 11/25 ✔︎ Ruby 2.6.3p62 arm64 MacPorts 11/20 ✔︎ Ruby 2.7.1p83 arm64 MacPorts 11/21 Node.js 12 arm64 MacPorts 11/20: icuのビルドで失敗/upstreamの12への修正まち Node.js 14 arm64 MacPorts 11/20: icuのビルドで失敗/upstreamの14への修正まち ✔︎ Node.js 14.15.1 x86_64 公式サイト 11/20 ✔︎ Node.js master arm64 ソースビルド 11/25 ✔︎ PHP 7.4.12 arm64 MacPorts 11/21 ✔︎ Perl 5.26 arm64 MacPorts 11/20: なにかの依存で入った ✔︎ Perl 5.28 arm64 MacPorts 11/21: TexLiveの依存で入った ✔︎ Perl 5.30 arm64 MacPorts 11/21: TexLiveの依存で入った Go 1.15.5 arm64 ソースビルド 11/20: 途中で止まる Go master arm64 issueの手順でビルド ビルドはできたがこのコメントの署名ではダメ。きちんとやるにはお布施が必要? ✔︎ Go 1.15.5 x86_64 公式サイト 11/20 ✔︎ Java 8/11/13/16-ea arm64 Azul Zulu 11/21 ✔︎ Lua 5.3.5 arm64 MacPorts 11/22: neovimの依存で入った Erlang 23.1 arm64 MacPorts 11/23: 途中で止まる Erlang 23.1 arm64 ソースビルド 11/23: configureで止まる ✔︎ Erlang master arm64 ソースビルド 11/23 DB/サーバー
状況 アプリ バージョン arch インストール メモ(記録日) ✔︎ PostgreSQL 11.9 arm64 MacPorts 11/21 ✔︎ MariaDB 10.5.7 arm64 MacPorts 11/21 ✔︎ MongoDB 4.4.2 arm64 MacPorts 11/21 Redis 6.0.6 arm64 MacPorts 11/22: ビルド失敗 ✔︎ Redis snapshot arm64 ソースビルド 11/24 ✔︎ Apache2 2.4.46 arm64 MacPorts 11/22 ✔︎ Nginx 1.19.4 arm64 MacPorts 11/22 ✔︎ ZeroMQ 4.3.3 arm64 MacPorts 11/22 ✔︎ DBngin Build 30 x86_64 公式サイト 11/22: redis起動しない。その他OK デスクトップアプリケーション
状況 アプリ バージョン arch インストール メモ(記録日) ✔︎ Google Chrome 87.0.4280.67 universal(x86_64/arm64) 公式サイト 11/20 ✔︎ Slack x86_64 AppStore 11/20 ✔︎ Kindle x86_64 AppStore 11/21 ✔︎ KeePassXC 2.6.2 x86_64 公式サイト 11/20 ✔︎ iTerm2 3.4.1 universal(x86_64/arm64) 公式サイト 11/20 ✔︎ HandBrake 1.4.0-beta1 arm64 GitHubのインストーラ 11/23 ゲーム/グラフィックス
状況 アプリ バージョン arch インストール メモ(記録日) ✔︎ Unreal Engine 4 4.25.4 x86_64 Epic Game Launcher 11/20:初回起動とシェーダービルドはファンがめちゃ回るのでAirユーザーには辛そう。一度起動すると高速。 ✔︎ Godot Game Engine 3.2.3 x86_64 公式サイト 11/20: 署名されてないので右クリックで注意ダイアログを開いて強制オープンが必要 Godot Game Engine 3.2.4 beta 2 universal(x86_64/arm64) 公式サイト 11/21: 起動せず ✔︎ Blender 2.90.1 x86_64 公式サイト 11/21 Blender arm64 MacPorts 11/21: 依存パッケージのopenimageioがamd64非対応でインストール不可 ffmpeg arm64 MacPorts 11/22: arm64非対応 ✔︎ ffmpeg ソースビルド arm64 MacPorts 11/24 gimp arm64 MacPorts 11/22: 依存パッケージのffmpegがインストール不可 inkscape arm64 MacPorts 11/22: 依存パッケージのlibrsvgがインストール不可 ✔︎ Figma x86_64 公式サイト 11/25 ✔︎ draw.io desktop 13.9.9 x86_64 公式サイト 11/25: electron-builderが対応になったらPR出したい 他の方のレポート
DTMステーション
音楽系のアプリの動作レポート。ゲームやグラフィックスはシェーダーやGPUによるところが多く、そこの変換のロスがないため、効率良く動作しますが、同じクリエイティブ系でも音楽はそうはいかないため、ネイティブアプリが出揃うまではパフォーマンスのペナルティは大きいようです。ただ、iOSアプリの活用など、新しい可能性も秘めているので、将来が楽しみですね。
西川和久の不定期コラム
CrossOver 20でWindowsアプリを動かす。日本語フォントもIMEも問題なしとのこと。
細かいメモ
バイナリの確認
どっちのバイナリか?はfileコマンドで調べている。32bit/64bit共存時代はアクティビティモニタで見えた気がしたが、今回は違いはない。スクリプト言語製のものはランタイムを調査。
11/22: コメントで指摘いただきましたが、アクティビティモニタの表示項目のアーキテクチャを有効にするとみれます
MacPortsはportコマンドはスクリプト。
% file /opt/local/bin/port /opt/local/bin/port: a /opt/local/libexec/macports/bin/tclsh8.5 script text executable, ASCII textそいつのランタイムのtclはユニバーサル。かっこいい。
% file /opt/local/libexec/macports/bin/tclsh8.5 /opt/local/libexec/macports/bin/tclsh8.5: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64] /opt/local/libexec/macports/bin/tclsh8.5 (for architecture x86_64): Mach-O 64-bit executable x86_64 /opt/local/libexec/macports/bin/tclsh8.5 (for architecture arm64): Mach-O 64-bit executable arm64Docker
がんばるよ表明
https://www.docker.com/blog/apple-silicon-m1-chips-and-docker/
Go
2021/2リリースの1.16に多数のissueが登録されている。ビルドはできるようになった模様。例年12月にでるbeta1でバイナリダウンロードできるようになるかな。
https://github.com/golang/go/issues/38485
issueコメントでクロスビルドの方法が紹介されていて、この通りにやると確かにビルドは成功し、go versionとかgo envは動くが、pkg/tool以下のコンパイラとかリンカが署名がうまくできずにコードのコンパイルはできない状況。
Electron
https://www.electronjs.org/blog/apple-silicon
11/17リリースの11.0でM1対応完了済み。VSCode/Slackがネイティブになる日も近い?
Java
https://adtmag.com/articles/2020/11/12/azul-supports-apple-silicon.aspx
Azul Systemsが16以降に対応し、その後8/11/13にバックポート済みで、15にもバックポート予定。
macOSのJavaのダウンロードはAzulのページから行えます。このリンクはJDK11のarm版です。ここからzipファイルをダウンロードして展開します。ここの中の
zulu-11.jdk
フォルダを/Library/Java/JavaVirtualMachines
フォルダに配置します。こんな風になるように。% ls /Library/Java/JavaVirtualMachines zulu-11.jdk
macOSはこのフォルダに配置されたJavaのJDKを認知して、/usr/bin以下のjavaコマンドやjavacコマンドはここに置かれたJDKにフォワードしてくれます。バージョンを見ると今置いたJDKの情報が出てきます。
% java -version openjdk version "11.0.9.1" 2020-11-04 LTS OpenJDK Runtime Environment Zulu11.43+1007-CA (build 11.0.9.1+1-LTS) OpenJDK 64-Bit Server VM Zulu11.43+1007-CA (build 11.0.9.1+1-LTS, mixed mode)なお、このJDKをJetBrains製のIDEの実行ランタイムに設定することはできますが、起動しなくなりました。もし失敗して起動しなくなった時は、
/Users/[ユーザー名]/Library/Application Support/JetBrains/GoLand2020.2
のgoland.jdk
というファイルを削除すると、デフォルトJDKで起動するように戻ります。焦って再インストールしても復元されませんのでお気をつけください。Node.js
Node.js会長によると、このPRでM1対応はOKということになっているらしい。今のところmasterブランチのみで、12.20リリース候補ブランチとか14.xとか他のブランチにバックポートはされていないぽい。
Qt
作業中
https://bugreports.qt.io/browse/QTBUG-85279
Erlang
MacPortsはうまくいかなかったが、ソースビルドならできるという話を聞いたのでトライ。ウェブサイトにある23.1のコードはだめだったが、githubから落とした最新であればいけた。
$ git clone https://github.com/erlang/otp.git $ cd otp $ export MACOSX_DEPLOYMENT_TARGET=11.0.1 $ export ERL_TOP=`pwd` $ ./otp_build autoconf $ ./configure --prefix=/opt/local/erlang $ make $ sudo make installMacPortsとかと混ざらないように、/opt/local/erlangに入れるようなコマンドになっています。/opt/local/erlang/binをパスに通せばOK。
- 公式サイトの説明
- いものやま。: gitリポジトリからビルドの説明
- Erlang/OTP ソースコードインストールのススメ: より詳しい説明。というか、ここをみろ。
Erlangはちょっと前にJITを装備して速度が数倍になるというアップデートがあったのですが、これへの対応はまだとのこと。
Erlang/OTP の ARM 向け JIT は AsmJit が ARM 向けに対応しているので、そのうち入ると思っている。なんで、サーバも ARM になっていくってのもありそう。
— V (@voluntas) November 21, 2020それでもネイティブで動かせば高速とのこと。
うぉぉぉ Dialyzer が早いぞ Apple M1 。
— V (@voluntas) November 22, 2020MacPorts
MacPortsはarm64版のバイナリをダウンロードしたり、ないものはビルドしてインストールしてくれる。よきよき。bzip2みたいなのはバイナリがあるので瞬間で終わる。
---> Fetching archive for bzip2 ---> Attempting to fetch bzip2-1.0.8_0.darwin_20.arm64.tbz2 from https://kmq.jp.packages.macports.org/bzip2 ---> Attempting to fetch bzip2-1.0.8_0.darwin_20.arm64.tbz2.rmd160 from https://kmq.jp.packages.macports.org/bzip2 ---> Installing bzip2 @1.0.8_0 ---> Activating bzip2 @1.0.8_0 ---> Cleaning bzip23箇所問い合わせにいってバイナリがなければソースを落としてきてビルドする。ビルド中、全然CPUファンが回らない不思議体験。
---> Fetching archive for xxhashlib ---> Attempting to fetch xxhashlib-0.8.0_0.darwin_20.arm64.tbz2 from https://kmq.jp.packages.macports.org/xxhashlib ---> Attempting to fetch xxhashlib-0.8.0_0.darwin_20.arm64.tbz2 from http://jog.id.packages.macports.org/macports/packages/xxhashlib ---> Attempting to fetch xxhashlib-0.8.0_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xxhashlib ---> Fetching distfiles for xxhashlib ---> Attempting to fetch xxhash-0.8.0.tar.gz from https://kmq.jp.distfiles.macports.org/xxhash ---> Verifying checksums for xxhashlib ---> Extracting xxhashlib ---> Configuring xxhashlib ---> Building xxhashlib ---> Staging xxhashlib into destroot ---> Installing xxhashlib @0.8.0_0 ---> Activating xxhashlib @0.8.0_0 ---> Cleaning xxhashlib一度、icuのビルドがおかしくなったが、プロンプトに出てくる説明の通りに、port clean icuしたら治った。
- 投稿日:2020-11-20T17:02:22+09:00
matplotlibインストール時のpolyfitエラー
matplotlibインストール時にエラーが出た
OSはMacOS BigSur。
python versionは3.6.10。
何も考えずに「numpy, pandas, matplotlib」をインストールしようとしたら、下記エラーが出た。pip install matplotlib RuntimeError: Polyfit sanity test emitted a warning, most likely due to using a buggy Accelerate backend. If you compiled yourself, see site.cfg.example for information. Otherwise report this to the vendor that provided NumPy. RankWarning: Polyfit may be poorly conditioned ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.対処法
インストールされたnumpyのバージョンが新しすぎる。らしい。
1.18を入れると動く。pip install numpy==1.18 pip install matplotlib
- 投稿日:2020-11-20T15:40:12+09:00
コマンドラインから大量のpngとjpgを圧縮する
ウェブサイトで画像を使用する時に、
サイズの重い画像を軽量化することはよくあると思います。TinyPNG
でも、このwebサービスでは以下のような問題がありました、
・web版だとアップロードした画像の行方(データを抜き取られてる可能性もなきにしもあらず)
・無料版だと、1ファイルづつアップロードするのが面倒
・大量のファイルをディレクトリを維持したまま一括で処理したい。という思いがありました。
一番良いのは、ツールを買ってしまうことです。
ケチってもいいことはありません。
金で解決出来るものはどんどんしてしまいましょう!ただ、エンジニアの端くれということもあり、
これからもそこそこ使いそうな処理なので、PC内で自分で自動化してしまおうということで、調べてみました。調べたところ、以下のライブラリを使うのが良さそうです。
ライブラリ
pngquant (png用)
https://pngquant.org/
(tinypngの内部処理にも使われているらしい)インストール
brew install pngquant使い方 (他にもオプション有り)
pngquant --ext .png --force -v .test.png (圧縮 / 出力ファイル名そのまま / 強制上書) pngquant --ext .png --force -v *.png (圧縮 / 出力ファイル名そのまま / 強制上書 / カレントのjpg全部)jpegoptim (jpg用)
https://github.com/tjko/jpegoptim
インストール
brew install jpegoptim使い方 (他にもオプション有り)
jpegoptim test.jpg (圧縮) jpegoptim test.jpg test2.jpg (圧縮 / 複数) jpegoptim --strip-all test.jpg (圧縮/メタ全部消す) jpegoptim --strip-all --max=90 test.jpg (圧縮 /90% / メタ全部消す) jpegoptim --strip-all --max=90 *.jpg (圧縮 /90% / メタ全部消す / カレントのjpg全部)使いやすいようにカスタマイズ
ここまでの情報はネット上にたくさん出てくるのですが、
再帰ディレクトリ的に処理をする
という方法がなかなかうまくいきませんでした。
例えば、
pngquant --ext .png --force -v img/*/*.pngimg/aaa.png → NG
img/hoge/bbb.png → OKこの書き方だと、部分的に無視されてしまいます。
pngquant --ext .png --force -v img/*.png img/*/*.png img/*/*/*.pngimg/aaa.png → OK
img/hoge/bbb.png → OK
img/hoge/huga/ccc.png → OKこの書き方だと、一見良さそうですが、もっと階層がある場合にカバーできません。
そして、特定のパターンの階層にファイルが無いとエラーになってしまいました。
色々調べた結果が、こちら。
https://stackoverflow.com/questions/9647920/recursively-batch-process-files-with-pngquant
find . -name '*.png' -exec pngquant --ext .png --force -v {} \;xargsの方が速いらしい
https://qiita.com/legitwhiz/items/e609537fb6226081f5b5find . -name '*.png' | xargs pngquant --ext .png --force -vnpm scriptsに使いやすいようにまとめておく
これで、pngとjpgがディレクトリそのままで圧縮される。
大量のファイルだと止まるかもしれない(未検証)。"scripts": { "optim": "npm run optim:png && npm run optim:jpg", "optim:png": "find . -name '*.png' | xargs pngquant --ext .png --force -v", "optim:jpg": "find . -name '*.jpg' | xargs jpegoptim --strip-all --max=90", },
- 投稿日:2020-11-20T12:22:29+09:00
MySQLで"Can't connect to local MySQL server through..."って出た時の対処法
"Can't connect to local MySQL server through..."って出た時の対処法
環境
- MacOS : Catalina - 10.15.7
- MySQL : 8.0.22 for osx10.15
起きたこと
1、Djangoのサーバが動かない
とある用事でMacBookを再起動させたあとにDjango触ろうとした時のお話。
xxx@yyy $ python manage.py runserver
を叩いてローカルにサーバを立てようとしたら、
django.db.utils.OperationalError: (1130, "Host '10.0.2.2' is not allowed to connect to this MySQL server")
って出てきた。書いてある通り、MySQL関係のエラーっぽい。
2、MySQLに入れない
MySQLを確認したいので下記コマンドを打つが、
xxx@yyy $ mysql -u root -p
って入力したら、
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
とエラーを吐かれてMySQLが使えなかった。
原因
結果として、原因は再起動と同時にMySQLのサーバが止まってしまっていたこと。
そこで、
xxx@yyy $ mysql.server restart
を叩くことで解決した。
xxx@yyy $ mysql -u root -p
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>いけた。
比較的簡単に解決してよかった。