みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Python

Pythonパッケージの更新をRSSで追跡する

世の中Twitterなど様々なサービスがありますが,みーはRSSを使っています. Webサービスを運営する上で,使用しているパッケージの更新がないかを定期的に調べるのが面倒なので,よい方法はないかと試行錯誤した結果,PyPIのRSSを使うことにしました. 積極…

abs()の解説記事の違和感

Python入門|絶対値を求めるabs関数の使い方 という記事に,Pythonで絶対値を得る方法が解説されていました. 一般的な絶対値の求め方は対象となる数値を二乗した後に平方根を求めることで±記号を取り除きます。 そんな面倒なことをしなくても,負の数ならば…

Heroku のデータベースのプランを変更する

Heroku postgresのデータベースのプランを変更する方法は以下のドキュメントにとても詳しく記載されているのですが,少し困ったことがあったので整理してみます. Upgrading the Version of a Heroku Postgres Database | Heroku Dev Center 上記の記事を補…

Pythonで一括代入する時の注意

Pythonでは複数の変数に一括して値を代入することができます. a = b = 1 print(f"{a}, {b}. id={id(a)}, id={id(b)}") b = 2 print(f"{a}, {b}. id={id(a)}, id={id(b)}") これをPython3.8で実行すると, 1, 1. id=4347452064, id=4347452064 1, 2. id=4347…

Pythonのジェネレーター内包表記にハマった

バグの原因が分かるまでに2時間もかかったので,自分への戒めの記事です. 話を簡単にするために,4つのフルーツの名前を扱うプログラムを例に用います. fruits = set(["apple", "banana", "mango", "orange"]) print(sorted(fruits)) これをPython3.8で実…

PythonのEnumが遅い

みーが今作成しているPythonのソフトウェアが徐々にもっさりしてきたので,cProfileで原因を調べてみると,どうやらEnumがボトルネックになっていることが分かったので,Enumの速度についていろいろと検証してみました. 環境 Python 3.8.1 iMac Late 2015, …

Unicodeのマイナス記号を集めた

とある文字列を処理していて,検索してもヒットしないマイナス記号があったのでUnicodeを調べたところ,Unicodeにはたくさんのマイナス記号が存在することが分かりました*1. m = [ 0x05BE, 0x1806, 0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2212…

windowsでwslを使って快適なanacondaの環境を整える

Windows Subsystem for Linux (WSL) が便利になってきたので,Windowsで開発がしやすくなりました.Anacondaの環境を整えてみます. 環境 Windows 10 Home WSL Ubuntu 18.04 LTS Anaconda 2020.02 for Linux WSLのインストール WSL Ubuntu 18.04 LTSをインス…

Pythonで生存分析

Pythonで生存分析の練習をしながら統計の理解を深めるための記事です.この記事を読めば,統計のreview論文1つとPythonを用いた統計処理が追えるようになっています. Critical Care 2004, 8:389-394に書いてあることを適宜訳しながらPythonで検証します. …

dindからdoodへ

Docker-in-Docker (dind) を使わないでという記事を見つけた. Using Docker-in-Docker for your CI or testing environment? Think twice. dindを使おうと思っているなら,もう一度考え直すのだ.dindはDockerそのものの開発のために作られたものなのだ.di…

lifelinesで解析してみた

JupyterでKaplan-Meier 曲線を書いてみました. 使用したデータは German Breast Cancer Study Group 2 です. datasets — lifelines 0.24.1 documentation 項目 GBSG2 function | R Documentation horTh : hormonal therapy, a factor at two levels no and…

VS CodeでAnacondaのJupyter Labを快適に使う

Jupyterを使うには,Jupyterサーバーを立ち上げて,クライアントとしてブラウザーを使うのが標準です. これはこれでよくできているのですが,やはりVS Codeに慣れていると,いろいろと不自由なことが多いです.試しにVS Codeでipynbファイルを開いたら,Jup…

シングルトンを実装する

シングルトン とは,そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのことであり,アプリケーション全体で1つの共通データがあればよい,という時に重宝します. シングルトンが必要になったので作ってみました. 通常のクラ…

Pythonの組み込み定数について

以下は一見不可解なコードだが,Pythonでエラーせず実行される. def a(): ... assert id(a()) == id(None) assert id(1 == 1) == id(True) assert id(1 == 0) == id(False) assert id(...) == id(Ellipsis) シングルトンの組み込み定数 Pythonにはシングル…

Rust 対 Python

Pythonだと100分かかる処理があったので,Rustで書き直したら4秒で処理できるようになった. その処理を実装するのに,Pythonだと10日しかかからなかったが*1,Rustだと30日かかった*2. 実装するのが大変だったが,処理速度が1500倍にパワーアップして感動…

PyO3でRustのメモリが開放されるのを確認する

Rustで作成したPython用のクラスがPythonのタイミングで自動的にメモリ開放されるかを確認してみました. 環境 Windows 10 Pro 64bit CPU : Core i3-7100U CPU @ 2.40GHz Memory : 12.0 GB rustc 1.42.0-nightly (2020-01-17) cargo 1.42.0-nightly (2020-01…

RustとPythonの連携

PythonからRustを呼び出すために,PyO3を使用します. 環境 RustでPython用のClassを作成 Cargo.toml lib.rs Pythonのlistを扱う lib.rs tuple を含む list を扱う lib.rs exceptionを使う lib.rs 環境 Windows 10 Pro 64bit CPU : Core i3-7100U CPU @ 2.40…

RustとPythonのベンチマーク比較

計算速度が重要なソフトウェア開発のために,Rustを勉強しています.Pythonと比較し速度を体感するために,簡単にベンチマークしてみました. 環境 CPU 3.2GHz Core i5 Memory 24GBytes macOS Mojave rustc 1.42.0-nightly Python 3.7.4 64bit 素数判定 Carg…

コピーするときの動作

変数aに文字列「これはテストです.」があり,これを変数bにコピーする,という動作には3つの選択肢があります. aとbが同じオブジェクトを参照する そんなややこしいことはするなとエラーにする オブジェクトを複製する aとbが同じオブジェクトを参照する …

GitLab private repositoryにある自作Pythonパッケージをpipでインストールする

自分で作成したPythonパッケージをGitLab上のプロジェクトで管理していて,これを別のプロジェクトで使用する方法を紹介します. 環境 MacOS 10.14.6 Python 3.8 GitLab 前提条件 trieという名前のプロジェクトが,private repositoryとしてGitLabに存在する…

ネストされた括弧と正規表現

ネストされた括弧を扱おうと正規表現を調べましたが,Pythonの標準のreには,(?R)など再帰が扱えないことが分かり,代わりにregexを使えばよさそう*1ということは分かりましたが,わざわざ正規表現を使わなくてもよいのではと思い,シンプルに書いてみました…

サーバーとクライアントで使用する言語の選択

この記事は,みーの個人的な意見であり,各言語には一長一短あることをご理解頂いた上でお読みください. みーが今まで扱った言語は,Java, Python, C, JavaScript, ActionScript, HSP, UnityScriptなどがありますが.現在はPythonとJavaScriptを多用してい…

疫学研究の統計に関するunittest

最近,疫学研究の勉強をしています.疫学研究はR言語で解説されていることが多い印象ですが,Python好きのみーとしては,Pythonで統計処理したいので,Pythonで疫学研究を行うことにしました. 代表的な統計計算をPythonで行えるかをUnittestにしました.問…

josler-sync

josler-syncは,日本内科学会が運営している研修システムであるJ-OSLERの入力を,退院サマリーのデータをもとに自動で行うソフトウェアです. 患者IDや性別,年齢などの事務的なデータをJ-OSLERに手入力するのが非常に面倒なので作成しました.内科専門研修…

Unicode normalizeのメモ

Unicode 正規化形式を示す "NFC","NFD","NFKC","NFKD" の違いをよく忘れるので,メモします. import unicodedata >>> unicodedata.normalize("NFD",",") ',' >>> unicodedata.normalize("NFC",",") ',' >>> unicodedata.normalize("NFKD",",") ',' …

Python-docxで1行に左揃えと右揃えを混在させる

Python-docx はPythonでワード文書を出力できるライブラリです.ワードのみ許可される事務所類を自動生成するのに便利です. 1行に左揃えと右揃えを混在させる方法が分かったのでメモします. TabStopという便利な機能がワードにあります*1.TabStopはタブの…

HxPat公開

特許の分類検索を補助するサービスを作成してみました. Vue.js, Djangoの練習を兼ねています.3日間で完成に至ったのは,Vue.jsがよいライブラリであるおかげです. hxpat.herokuapp.com ICPやFIなど特許分類を用いた検索に有用なツールだと思います.使っ…

EOFError: marshal data too short

Pythonで1つのプロジェクトに対して複数の環境で編集すると, EOFError: marshal data too short というエラーが出ることがある.これは.pycファイルが原因のようで,pycacheディレクトリの*.pycファイルを削除することで解消される. 毎回削除するのは面倒…

Selenium3のChromeDriverでpdfをダウンロードする

Chromeにはpdfを表示するための機能が搭載されており,ChromeDriverでpdfにアクセスしても表示するだけでダウンロードされない.いろいろな拡張機能を無効にすることで,pdfをダウンロードできるようにする. 環境: MacOS 10.12.4, ChromeDriver 2.29 (Chrom…

Selenium 3 をPythonで使う

最近Seleniumがversion 3になったようで,pythonのpipでインストールしてもそのまま使えなかったので,自分用にメモ. 環境 MacOS 10.12 Python 3.5.2 Selenium 3.0.2 Firefox 50.1.0 インストール sudo pip3 install selenium Mozillaのgeckodriverをダウン…