備忘録とか日常とかスマートフォン用の表示で見る備忘録とか日常とか学んだこととかを書きます。この広告は、90日以上更新していないブログに表示しています。2018-09-18pathlibとかいう優秀すぎる標準ライブラリ(python)python自分は今までpythonでファイル操作を行うときはos.pathとかglobとかを使っていたが、pathlibという優秀なものがあると聞いて使ってみた。python3.4以降なら使わない手はない。オブジェクトを生成して操作することになる。インスタンス生成時にファイルまたはディレクトリのパスを指定する。maxならPosixPathオブジェクトとなる。使い方はほぼ同じなので気にする必要はない。引数を指定しないとカレントディレクトリのリンクが自動的にパスに入る。p.home()上記メソッドは新たなパスが格納されたPathオブジェクトを返す。これに限らず、Pathオブジェクトのメソッドは新たなPathを返すため、文字列を直に操作する必要がなくなる。上記メソッドの出力はインスタンス生成時の引数に依らず、常に同じである。Pathオブジェクトならいつでもカレント、ホームディレクトリを呼び出せる。絶対パス取得まずは絶対パスを取得する。p.absolute()公式ドキュメントには書いてなかったが、p.absolute()でも同じことができるっぽい。内部では同じメソッドを呼び出しているのだろうか。コードの中身を見てないのでわかりません。p.is_absolute()True絶対パスならTrueを返す。ファイル名、拡張子の取得ファイルまでのパスがPathオブジェクトに入っているなら以下でファイル名を取得できる拡張子や、拡張子を除いた名前部分(stem)を取得することもできる。p.stem'aaa'ファイル、ディレクトリ削除、権限変更パスがファイルかディレクトリかでメソッドが変わる。p.cwd(755)ディレクトリが空じゃない場合はおとなしくshutil.rmtreeとかを使う。p.parentパス結合これが一番便利かもしれない。Pathオブジェクトでは/演算子がパスの結合として再定義されている。したパス内のファイル、ディレクトリを一覧表示・検索できる。検索に関しては、標準ライブラリのglobと使い方がほぼ同じである。いずれもメソッドの戻り値はジェネレータであることに注意する。p.glob('**/*.py')ファイルを開くPathオブジェクトにはファイルを開くメソッドも用意されている。テキストとして開くならこれで問題ない。当然だがパスはファイルが指定されている必要がある。'r')注意すべきは、Pathオブジェクトに対応していない外部ライブラリも存在するということ。ここによると、どうやらopenCVのcv2.imreadには対応していないらしい。そんな時は文字列にキャストしてからライブラリに渡せば問題ない。区切られた文字列が返されるため、windows環境では使用できない。windows用のメソッドがあるかと思いきや用意されていないっぽいので、環境に依存したくなければstr()を使うようにすべきか。以下のメソッドはTrueかFalseで判定を返す。p.replace(tgt)os.pathは潔く捨てるちょっとした作業用スクリプトを作るときにも便利なので、pythonを使っているならぜひとも享受していきたいメリットである。macOS)メモリレーショナルデータベースも触ったことのない人間がいきなりMongoDBを導入してみたのでメモ。macからそれぞれ行ってみた。公式ページには大体書いてる。2018/9/6時点ではv4.0.2が最新らしい。Editionで事足りるのでそちらを入れる。Enterpriseはセキュリティとかの機能がサポートされて有料になるらしい。インストール(windows)以下のURLにアクセス。64-bit)後はインストーラの指示に従ってインストール。ある意味らくちんかもしれない。Communityというソフトも入れるかどうか聞かれるが、これはクライアントGUIツールと呼ばれるものである。要はGUIでデータベースをいじれる。いうツールの使い方も覚えておくと後々便利かもしれない。参考↓dev.classmethod.jpインストールできたらpathを通す。--versionでバージョン表示されるか確認する。インストール(ubuntu)Ubuntu公式リポジトリのmongoDBはバージョンが古く、最新バージョンを取得するには一手間必要である。公式リポジトリ以外からパッケージを取得するためには、そのリポジトリを認証するための公開鍵をキーチェーンに取り込まなければならない。--versionとか打ち込んでバージョン情報が表示されるならインストールできてる。ちなみに最初に取得した公開鍵のことをGPGキーとか言ったりする。Guardという暗号化ソフトで生成されるらしいが詳しいことはわからないので気が向いたらまた調べる。一応参考サイト概要のみ↓tech.nikkeibp.co.jpGPGの使い方とか↓qiita.comインストール(mac)homebrewでさくっと。mongodbらくちんすぎる。手動で入れたい場合は公式からtarファイルを落とす。[OSX]と選択してtarファイルをダウンロード。ターミナルで以下のコマンドをたたき展開。mongodb-osx-ssl-x86_64-4.0.2.tgz展開されたディレクトリを適当な場所に移し、ディレクトリ内の/binにパスを通す。~/.bashrcに以下を追加。Bookというのが勉強になるらしい。githubでもtexソースが公開されてる。Book各言語への訳が有志で行われており、日本語ではMongoDBの薄い本という邦訳が有名っぽい。他に訳あったやろこの薄い本が検索上位に来ることが多いが、内容が古いらしいので以下の「MongoDBの手引き」のほうが良いかもgithub.comPDFは未作成っぽいのでmarkdownかepubで。ManualNoSQLの仕組み的な以下のスライドが参考になる。macOS)Tweet広告を非表示にするもっと読むコメントを書く2018-03-13Markdownが書きたいのでAtomとVSCodeを整備して比較するメモMarkdownを書くための環境設定などをメモする。普段はVSCodeを使っているが、github開発のAtomもmarkdownと親和性が高そうなので比べてみた。mでリアルタイムプレビューを表示できる。それに加えて拡張機能も豊富であり、以下のサイトで色々紹介されている。qiita.comとりあえず以下の拡張は便利だった。markdown-writer各種ショートカットが追加され、キーバインドなどを設定可能。この後のtool-bar-markdown-writerがもっと便利。tool-bar-markdown-writermarkdown編集時に、エディタ上部にtool-barが表示される。markdownの記法を覚えてなくてもGUIで直感的に扱えるようになる。テーブル整形とかも便利。tool-barとmarkdown-writerのパッケージが必要。markdown-pdfAtomはデフォルトでhtml出力には対応しているが、pdfなどで出力するにはこのパッケージが必要。コード部分なども綺麗に出る。pdfのデザインなどがデフォルトで綺麗なとこが最大の利点かもしれない。以下のはちょっと問題があった。markdown-scroll-syncプレビューをスクロールすると自動で該当するテキスト部分までスクロールしてくれる。機能自体は便利で良いのでが、自分の環境ではなぜか動作しなかった。Mac以外なら動くのかもしれない。markdown-toc目次を自動生成してくれるパッケージ。トピック名を変更しても上書き保存時に目次も変更してくれるのでよい。これで生成したhtmlやpdfのリンクは機能しない。プレビューのリンクも効いていない。ググってみて、先人がいたと思ったらなんかちょっと違った。take-she12.hatenablog.com日本語はidが生成されなくてリンクが正常にいかないらしいということはわかったが、英語でもリンクされない。Atom側の問題なのかもしれない。解決できる気がしないのでとりあえず放置。思ったらすごいのがあった。markdown-preview-enhancedプレビュー、TOC作成、プレビューとスクロール同期に加えてlatex数式埋め込みからPDF、html、ebook出力などめっちゃ多機能である。日本語はだめ)の三つは実現できる。princexmlの三つに対応している。princexmlは有償なのでよくわからない。残り二つについて試してみたpuppeteerNodeのライブラリ。今までNode.jsとかいうのに触れた機会がなく、基礎知識など皆無だがとりあえず使う方法だけメモしておく。Node.jsについての説明は以下だけ読んだ。qiita.comqiita.commacで導入するにはまずhomebrewを導入する。qiita.comその後nodeをインストールする。puppeteerとするとpuppeteerでのPDF出力が可能となる。ここまでやってから、どうやらnodebrewとやらがあるということに気がついたmmorley.hatenablog.comhomebrewではNode.jsのバージョン管理ができないらしい。今はよくわかんないので必要になってからでいいかな・・・PhantomJSPhantomJSとはwebkitベースのヘッドレスブラウザということらしい。サーバサイドとかウェブ系のことがわからなさすぎて辛い。例によってとりあえず使う環境は整えておく。いうよりこれはbrewで入れるだけ。phantomjs二通りでPDF出力を試したが、puppeteerはコード部分の背景が白くなってしまい、phantomJSはやたらフォントサイズが大きくなってしまうという結果になった。どっかをいじれば直せるのかもしれないが、とりあえずデフォルトではAtomのプレビューとPDFが綺麗で個人的には一番好き。VSCodeVSCodeもデフォルトでmarkdownプレビューに対応している。Vで同じ領域の別タブにプレビュー→自分で画面分割という手順を踏む必要があり、あまりスマートな感じがしない。以下のパッケージが非常に役に立つ。EnhancedMPE再び。デフォルトでは微妙なmarkdownプレビューを改善してくれる。Previewを表示でき、自動で画面分割してくれるので余計な操作はいらない。