- 投稿日:2019-11-28T23:31:19+09:00
MacのCmdキー(右)をメタキーにしたい
Emacsを使い始めたんですが、メタキーの場所を右のCmdキーにしたいと思います。
- Karabiner-Elementsをインストール
- Karabiner-Elementsを立ち上げ右⌘Cmdを⌥ Optionに割り当てる。
- VScodeの場合は、setting.jsonに以下を追加して⌥ Optionをメタキーにする
setting.json"terminal.integrated.macOptionIsMeta": trueおわり
みなさんはメタキーをどこにしてますか?
- 投稿日:2019-11-28T15:02:25+09:00
openssl1.0系がbrewから消えたことでrailsでエラーが発生する時の対処法
openssl1.0系がbrewから消えたことでrailsでエラーが発生する時の対処法
次のようなエラーが発生する場合の対処法です。
Library not loaded: /opt/local/lib/libssl.1.0.0.dylib (LoadError)
openssl1.1系にアップデートされた状態で、postgresqlのバージョンが古いとエラーが発生します。
対処法としては、
brew upgrade postgresql
でpostgresqlをアップデートしたら直りました。参考までに、openssl1.0系がbrewから消えた原因のHomebrewのコミットはこれです。
https://github.com/Homebrew/homebrew-core/commit/0349a7ca76f483483c6d5c1d4cfe6b458dee2665
- 投稿日:2019-11-28T14:00:58+09:00
pythonでtqdmを使って進捗を可視化する
どうもテルルです
今回はpythonで処理の進捗を可視化したいときに便利なモジュールを発見したので
紹介したいと思います
環境
Mac OS Catalina 10.15.1
python 3.7状況
pythonを使っててcやc++と比べて遅い割に機械学習やスクレイピングをするときに
結構時間がかかる思い処理ってあると思うんですよ。
そう言った処理を走らせてるときに何も表示されないと待っていても苦痛なので
今回は進捗を可視化するモジュールを触っていこうと思います
インストール
pip install tqdmいつも通りpipコマンドで打ち込みます
進捗バーを表示させる
使い方は簡単でtqdmにイテレータブルなオブジェクトを引数で渡すだけです
from tqdm import tqdm from time import sleep for i in tqdm(range(100)): sleep(0.1)これを実行してみるとターミナル上に進捗を表すプログレスバーが出ました
100%█████████████████████████████████| 100/100 [00:10<00:00, 9.67it/s]これだけでも全然便利なのですが、他にも機能があるみたいなので
紹介していきます
説明文を追加
from time import sleep from tqdm import tqdm pbar = tqdm(range(10)) for i in pbar: pbar.set_description("Progress") sleep(1)set_descriptionの引数に説明文を引数で与えることで説明文を追加できます
Progress: 100%|███████████████████████| 10/10 [00:10<00:00, 1.00s/it]
- 投稿日:2019-11-28T12:36:38+09:00
MacでローカルのWebリソースを表示するためにApacheを起動する
やりたいこと
Macのローカルフォルダに置いたちょっとしたウェブページやスクリプトを、いつでもどのブラウザでも気軽に表示したり動かしたりできるようにしておきたい。
方法の検討
- HTMLファイルを直接ブラウザで開く→スクリプトをちゃんと動かせないからだめ
- VSCodeのLive Server→常にVSCodeを起動してないとだめなのは嫌
- VMとかDockerとかでローカルディレクトリをマウントしてWebサーバー起動→そこまでするほどのことじゃないしかえって面倒
最近のmacOSにあらかじめ入っているApacheを使うのがよさそう。
やること
Apacheを自動起動するようにする
毎回手動でApacheを起動するのも面倒なので、OS起動時に一緒に動くようにする。
これなら毎度何もしなくても、URLを叩けばいつでもローカルのリソースを表示できる。自動起動対象になっているかは以下のコマンドで確認する。
$ sudo launchctl list | grep httpd 5029 0 org.apache.httpdこのように1行出力されれば、自動起動対象となっているので、このままでよし。
出力がない場合は以下のコマンドで自動起動の対象に設定する。$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plistOSを再起動してApacheが起動できていればOK。
$ ps -ef | grep httpd 0 134 1 0 8:45AM ?? 0:00.84 /usr/sbin/httpd -D FOREGROUND 502 389 134 0 8:46AM ?? 0:00.01 /usr/sbin/httpd -D FOREGROUND 502 790 134 0 8:47AM ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND 502 792 134 0 8:47AM ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND 502 793 134 0 8:47AM ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND 502 3006 2956 0 12:11PM ttys003 0:00.00 grep httpd $ sudo apachectl status Go to http://localhost:80/server-status in the web browser of your choice. Note that mod_status must be enabled for this to work.なお以降のプロセスでApacheの設定を変更した場合は、以下のコマンドで再起動して設定を反映させる。
$ sudo apachectl restartユーザー個別のホームディレクトリを準備する
Apacheが起動してる状態で http://localhost にアクセスすると、いちおう 'It works!' の表示は出る。
でもデフォルトでは/Library/WebServer/Documents/
がドキュメントルートになっていて、ユーザーフォルダを参照することもできず、使いづらい。
このためユーザー個別のホームディレクトリを準備する。ホームディレクトリは
/Users/username/Sites
とする。
以前のmacOSでの「Web共有」機能のために用意されていたフォルダで、この名前にしておくと何かと便利。
(リソースを全部この配下に置く必要はなく、見たい場所のシンボリックリンクを張ればよい)
最近のmacOSにはそもそもフォルダがないので、作る。Finderで見ると、以前の名残で専用のアイコンで表示される。
表示確認用ファイルを準備する
上で作ったホームディレクトリに、JavaScriptファイルとそれを読み込むHTMLファイルを用意する。
check.jsexport function check() { alert('check ok!'); };check.html<html> <head> <script type="module"> import {check} from './check.js'; check(); </script> </head> <body> </body> </html>このHTMLを単にブラウザで開くと、オリジン間リソース共有 (CORS) とみなされて、jsファイルを読み込むことができない。
ブラウザの開発者ツールには以下のようなエラーが出る。
(なお上記サンプルコードは、
<script src="check.js">
での読み込みはCORS制約外で実行できてしまうため、importを使っている)無事Apacheが設定できれば、htmlとjsは同一オリジンとなるため(要は普通に1つのWebサーバーに置いた状態)、このスクリプトが実行できるはず。
「ユーザー専用ディレクトリ」モジュールを設定する
上で用意したホームディレクトリを見れるようにするため、Apacheの設定ファイル
/etc/apache2/httpd.conf
で「ユーザー専用ディレクトリ」モジュールを使えるようにする。まずはモジュールの読み込みをする記述を確認する。
以下が#
でコメントアウトされていたら、#
を削除して記述を有効にする。LoadModule userdir_module libexec/apache2/mod_userdir.so次に「ユーザー専用ディレクトリ」設定ファイルを取り込む記述を確認する。
以下が#
でコメントアウトされていたら、#
を削除して記述を有効にする。Include /private/etc/apache2/extra/httpd-userdir.confで、実際に↑のファイルの中身を見る。
だいたいこんな感じになってる。httpd-userdir.conf# Settings for user home directories # # Required module: mod_authz_core, mod_authz_host, mod_userdir # # UserDir: The name of the directory that is appended onto a user's home # directory if a ~user request is received. Note that you must also set # the default access control for these directories, as in the example below. # UserDir Sites # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # Include /private/etc/apache2/users/*.conf <IfModule bonjour_module> RegisterUserSite customized-users </IfModule>
UserDir Sites
と書いてあれば、/Users/username/Sites
がユーザーのホームディレクトリと認識されて、 http://localhost/~username でアクセスできるよ、とのこと。また、このあとユーザー個別の設定ファイルを作るのだけど、それを読み込む設定になってるかを確認する。
以下が#
でコメントアウトされていたら、#
を削除して記述を有効にする。Include /private/etc/apache2/users/*.conf(なお↑にprivateとあるのは、etcが
/etc -> private/etc
とリンクされてるため)ユーザー個別の設定ファイルを設定する
↑の設定にあった通り、個人の設定ファイル
/etc/apache2/users/username.conf
を作成する。
※root権限で作成・編集することファイルの中はこんなかんじ。
username.conf<Directory "/Users/username/Sites/"> Require all granted </Directory>これでホームディレクトリへのアクセスが可能になる。
Apacheを再起動して http://localhost/~username/check.html を表示すると、JavaScriptが実行される。あとはSites配下にリソースを放り込むなり、シンボリックリンクを貼りまくるなり思いのままに。
細かい設定
ドキュメントルートの変更
自分しか使ってないMacでいちいち ~username をURLに入れるのは嫌な場合。
個別の設定ファイルでドキュメントルートを上書きする。username.confDocumentRoot "/Users/username/Sites/" <Directory "/Users/username/Sites/"> Require all granted </Directory>Sitesが嫌なら任意の別のディレクトリにすることもできる。
username.confDocumentRoot "/Users/username/web/" <Directory "/Users/username/web/"> Require all granted </Directory>Apache実行ユーザーの変更
Apacheの実行ユーザーは _www なので、自分のリソースに閲覧権限がないと(770とか440とか)表示・実行できない場合がある。
(もちろんリソースファイルの権限を変える方法もあるけど)
この場合も個別の設定ファイルでUser/Groupを指定すればよい。username.confUser username Group staff DocumentRoot "/Users/username/web/" <Directory "/Users/username/web/"> Require all granted </Directory>参考文献
macOS に標準インストールされている Apache httpd の自動起動を解除する方法
オリジン間リソース共有 (CORS)
Get Apache, MySQL, PHP and phpMyAdmin working on OSX 10.10 Yosemite
- 投稿日:2019-11-28T11:21:30+09:00