Anacondaもpyenv|venvも使わずにPythonのデータ分析環境を構築する (macOS)
最近、データ分析の関係で少しPythonを使うようになったので、改めて環境構築について考えてみた。
ネット上の情報を漁ってみると概ねAnaconda一択というのが最近のトレンドの様子。確かにWindowsならAnaconda一択だろうし、自分自身、色々と説明するのが面倒だから、初心者に教えるときはとりあえずAnaconda入れておけと言ってしまう。
とはいえ、モジュールのインストールにはpipがあるし、仮想環境を使いたいならvenvを使ってしまえばいい。そもそも、今どき開発目的であればdockerなりvagrantなりを使って丸ごと分離してしまう方が筋が良く、データ分析用途であれば手元に最新のPython3環境があれば事足りる。MacでAnacondaを入れようとするとシステムPythonやHomebrew Pythonとの衝突を気にする必要があって、その解決のためにpyenvを入れてみたりと、物事を余計に複雑にしているような気がしないでもない。
ということで、生Pythonを使ってnumpy、pandas、Jupyterのような基本的なデータ分析環境をmacOS上に構築してみた。生Pythonとは言ってもシステムPythonは触りたくないし、グローバル環境もみだりにいじりたくはない。そういった条件で環境を構築したときに、現代的にはどの程度作業をsimplifyできるだろうか、というのがこの記事のモチベーション。
OpenSSLでオレオレ認証局(CA)とオレオレ証明書を作る
- 2016-05-29
- カテゴリ: Client Side
- タグ: Tips OpenSSL Linux 車輪の再発明
OpenSSLを使って久しぶりにオレオレ認証局(CA)を立ち上げようと思ったら方法を完全に忘れていて苦労したので、整理してメモ。方法を検索すると、CA.plを使ったり使わなかったり、CA.shを使ってみたり、openssl.cnfを編集したりしなかったりと、いろいろ流儀があるようなので、その辺も含めて整理する。なお、環境はMac、OpenSSLは0.9.8系。
公開鍵証明書発行の手順
まずはおさらい。公開鍵証明書を発行する手順は次のようになる。
- 証明書のユーザーは、秘密鍵を生成する。コマンドで言えば、
openssl genrsa -aes128 -out newkey.pem 2048
など。 - 証明書のユーザーは、生成した秘密鍵を使って証明書署名要求(CSR; certificate signing request)を生成する。コマンドで言えば、
openssl req -new -key newkey.pem -out newreq.pem
など。 - 証明書のユーザーは、生成した証明書署名要求を認証局(CA; Certificate Authority)へ送信する。
- 認証局は、受信した証明書署名要求に自らの秘密鍵で署名し、公開鍵証明書を生成する。コマンドで言えば、
openssl x509 -req -CA ca.pem -in newreq.pem -out newcert.pem
やopenssl ca ...
など(詳細は後述)。 - 認証局は、生成した公開鍵証明書を証明書のユーザーに送信する。
「なぜこんなに面倒なのか。CAが秘密鍵と公開鍵証明書のペアを生成してユーザーに送ればいいじゃないか。」と言いたくなるが、これは鍵配送問題に対処するため。秘密鍵を送るためには暗号化通信が必要で、そのためには秘密鍵が必要で、その秘密鍵を送るためには(以下略)となってしまうため、秘密情報であるユーザー・認証局それぞれの秘密鍵はそれぞれのマシンの外に出ない仕組みになっている。ユーザーと認証局の間の通信経路がたとえ傍受されていても秘密鍵は流出しない。
もちろん、認証局を使わずに自己署名のオレオレ証明書を生成するだけだったら、openssl req -new -x509 -keyout newkey.pem -out newcert.pem
などのコマンドで簡単にできる。今回はオレオレ認証局を立てたうえで、その認証局で署名したオレオレ証明書を濫発することが目的なので、面倒だけど認証局を立ち上げる。
コマンドの結果を画面とパイプの両方に渡す方法
- 2015-02-16
- カテゴリ: Client Side
- タグ: Tips Linux Zsh
コマンドの結果を画面とパイプの両方に流す方法をいくつか調べたのでメモ。
やりたいのは、以下のような処理でpbcopy
に渡った標準出力を、画面からも確認すること。
find . -type f | pbcopy
なお、pbcopy
は標準入力をクリップボードに送るOS Xのコマンド。
KeeperでKeePass 2.xのファイルを読むためのXSLファイルを更新しました
Keeperを使ってKeePass 2.xのデータをiPhoneで読む / LiosK-free Blog
KeePassのエクスポート画面 (File -> Export) を起動したら、↑の図のようにFormatにTransform using XSL Stylesheetを選び、エクスポートするファイル名としてkeeper.txtを指定します。
iPhoneで使っていたKeeperがいつのまにかカスタムフィールドに対応していたので、KeePassファイルのエクスポートに使うXSLスタイルシートを修正しました。
カスタムフィールドのkey-valueペアはJSONオブジェクトの配列として第7カラムに収まる仕様になったようなので、今まではメモ欄にまとめられていたKeePassのカスタムフィールドを一部JSON化して放り込むように改良しました。
JavaScriptでJIS丸め
- 2012-01-03
- カテゴリ: Client Side
- タグ: Tips JavaScript メモ
前回、ExcelでJIS丸め等々を実装したので、余勢を駆ってJavaScriptでも実装したのでメモ。
ECMAScriptの仕様書によると、JavaScriptのMath.floor(), Math.ceil(), Math.round()は負の無限大(-∞)や正の無限大(+∞)に丸める実装になっているので、ゼロに近づける一般的な切り捨て、ゼロから遠ざかる一般的な切り上げ、ゼロから遠ざける一般的な四捨五入もメモ。
MS Excelで端数処理 2: ワークシート関数で切り上げ・切り捨て・四捨五入・JIS丸め
- 2011-12-12
- カテゴリ: Client Side
- タグ: Tips Excel Windows
[追記 ()] FLOOR/CEILING関数の仕様がExcel 2010で変わっていたようで、記事で紹介されている数式のいくつかはExcel 2007以前のExcelでは動作しないことがわかりました。まとまった時間ができたときに情報をアップデートします。
前回の記事「MS Excelで端数処理 1: Excelの端数処理関数」から既に1ヶ月以上経ってしまった。標準的な端数処理 (切り捨て・切り上げ・四捨五入の類) は実装が終わっているので、とりあえずまとめ。
今回まとめているのは、丸め対象の数値を与えられればそれだけで丸め計算ができるものだけ。つまり、確率的丸めやディザリングのように乱数を使ったり、交互丸めのように状態変数を使うものは除外。
先に言ってしまうと、最近接偶数丸め(いわゆるJIS丸め)の数式以外は大しておもしろくもない数式になってしまったので、最近接偶数丸めの数式を知りたいだけの人は、末尾のまとめまで読み飛ばしてしまってもいいかも。
MS Excelで端数処理 1: Excelの端数処理関数
- 2011-11-06
- カテゴリ: Client Side
- タグ: Tips Excel Windows
Excelで四捨五入をしたいときは、
=ROUND(A1,0)
と入力します。
というような無内容なことを書きたいのではなくて、端数処理 - Wikipediaに載っているような各種の端数処理をExcelで実装するにはどうすればよいかという話。複数の丸め方をパッと試してみたくなることが結構あるので、各端数処理の数式をまとめておく感じ。
zshでGitのブランチ名をプロンプトに表示する
zshのプロンプトに、Gitのブランチ名を表示させたくなった。
ちょうど、↓の図のような感じに。
bashではgit-completion.bashで定義される__git_ps1
を使って、例えば↓のような感じで書いていたけど、
# Show git branch name if [ -n "$(type -t __git_ps1)" ]; then PS1='\u@\h \w$(__git_ps1)\n\$ ' fi
zshではvcs_infoという関数を使って実現するらしい。
vcs_infoはGitに限らず、各種のVCS (Version Control System)に対応しているようなので、一度設定しておけばCVSやSubversion、Mercurialなんかにも対応できるようだ。
詳細は続きで。
iPhone用KeeperでKeePass 2.xのファイルを読むためのXSLTを更新しました
[追記 (2013-03-10)] Keeperがカスタムフィールドに対応したので、XSLスタイルシートを修正して、改行を含まないカスタムフィールドはKeeperでもカスタムフィールドとして扱えるよう修正しました。この記事内のXSLスタイルシートは最新版に差し替えられています。
Keeperを使ってKeePass 2.xのデータをiPhoneで読む / LiosK-free Blog
KeePassのエクスポート画面 (File -> Export) を起動したら、↑の図のようにFormatにTransform using XSL Stylesheetを選び、エクスポートするファイル名としてkeeper.txtを指定します。
iPhone用のKeeperがいつのまにかURLフィールドとアプリ内ブラウザに対応していたので、KeePassのエクスポートに使うXSLスタイルシートを仕様変更しました。
今まではメモ欄に詰め込んでいたURLをURLフィールドに表示するように独立させました。