pythonでヒストグラムを正規化する

python でヒストグラムを正規化(面積を1.0にする)する方法です サンプルコード import numpy as np import matlplotlib.plt as plt data=[1,2,2,3,3,3,4,4,4,4] # 正規化されたヒストグラムを計算する hist, edges = np.histogram(data, density=True) w = e…

macOS に TexLive 2020 をインストールする

macOS の TeX環境を texlive2020 に更新したので手順をまとめます.この記事は以下のエントリを macOS と Tex Live 2020 に合わせて更新・加筆したものです. http://pyopyopyo.hatenablog.com/entry/2019/07/04/150000 http://pyopyopyo.hatenablog.com/ent…

pythonのヒアドキュメントと変数展開

python のヒアドキュメントの使い方をメモしますついでにpython-3.6で導入された f-strings を使って変数置換も行います x=123 y="ABC" tmp = f''' x is {x}. y is {y}. x is {x}. '''[1:-1] print(tmp) ポイント f"..." と文字列の先頭に "f"を付けると変数…

Linuxでディスプレイ解像度を自動切替する方法

Linuxでディスプレイ解像度を自動で切り替える方法です. ノートPCで外部モニタを使う場合 ノートPCでサスペンドから復帰後,解像度がおかしくなる場合 画面切替機(キーボードスイッチャ,パソコン切替器)を使っている場合 などに,毎回解像度を手動で設定し…

Pythonで文字列をDatetime型に変換する方法

Pythonで文字列を時刻に変換する方法です 時刻を表す文字列 時刻を表す文字列にはいくつかのフォーマット(書式)がありますISO8601の例 2020-06-14T13:04:46+09:00 RFC 3339の例 2020-06-14T04:04:46.000Z 2020-06-14T04:04:46.000000Z これらは全部同じ時…

Pythonでコマンドラインツール(CUIとかCLI)を作るときのTips

PythonでCUIとかCLIを作る際のTips です.下記の内容を順に書いていきます エラー表示を見やすくする 使い方の説明 実際のコード例 コマンドライン引数の処理 使い方の説明 実際のコード例 Tips は今後も追記していく予定です(最終更新: 2020-06-13) エラー…

Python で正規表現を使うときのエラー対策

正規表現を使うときは,正規表現のエラーチェックをきちんと実装しておいたほうが安全です例外を使って実装すると次のようになります import re pattern = "^c++" prog = None try: prog = re.compile(pattern) except re.error as msg: print("error in reg…

Python でインストール済みのdebianパッケージを調べる方法

debian や ubuntu でインストール済みのdebパッケージの一覧を調べる方法です(pythonのモジュールの一覧ではなくて,linuxのdebパッケージの一覧です)コマンドラインなら $ dpkg -l 等になりますが、似たことをpythonで実装する場合は apt モジュールを使い…

ワンライナーで動画編集 (ffmpeg の使い方一覧)

動画編集に便利な ffmpeg でよく使うワンライナーをまとめます.このエントリは今後も随時更新する予定です. ffmpeg の基本 動画を MP4形式に変換する $ ffmpeg -i 入力動画のファイル名 出力動画.mp4 入力は "-i 入力ファイル名"で指定します.ファイル形…

pythonでWebスクレイピングする方法

pythonでウェブページ(ホームページ)にアクセスして,必要な文字列だけ抽出する方法です.いわゆる Web scraping です.いくつか方法がありますが,今回は python で lxml モジュールを使いました. サンプルコード サンプルコードです.python 3 で動作し…

MySQLでSELECT文の出力を CSVファイルに保存する方法

多くの場合,MySQLはファイル出力(つまりファイルの新規作成&ファイルへの書き込み)を許可していません.理由はファイル出力を許可するとセキュリティ上の問題が出てくるからです.MySQLを使う場合は,先ず mysqld に接続して,mysqld 上でクエリを実行す…

デスクトップLinuxのサウンドをラズパイで再生する方法

デスクトップLinuxの音声出力を,Volumio のようなサウンドサーバーに転送&再生する方法です.転送には pulseaudio を使います.たとえば サウンドサーバとして, Volumioで動いている raspbery PI (つまり debianベースのLinux) デスクトップとして, debi…

2つのpdfファイルを重ねて一つのpdfファイルとして保存する

原稿 A.pdf に,別ファイル B.pdf の内容を重畳させて,新しいファイル C.pdf として保存する方法ですpdf形式で文章や印刷データを扱っていると 各ページに,フッターやヘッダーを自動で追加する pdf形式で作成したポスターに印刷&裁断用のトンボを付ける …

SysV の runlevel と systemd のターゲットの関係

ランレベルとターゲット SystemV で runlevel と呼ばれていたものは ,systemd は target と呼ばれる.対応関係は以下のとおり SysV runlevel systemd の target 3 multi-user.target マルチユーザ.Xが起動しない (コンソールのみ) 5 graphical.target グラ…

TeX にSVGを貼る方法(2019年版)

TeXにsvgを貼る場合は一度 inkscape でファイルを変換する必要があります.詳しい手順は過去記事をごらんください.TeX に svg を貼る方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -svgパッケージを使うと,これを自動化できます \usepackage{svg}…

複数の静的ライブラリを結合する方法 (2019年版)

2つの static library, libX.a と libY.a を結合して libAll.a を生成する方法ですこの記事は 複数の静的ライブラリ (.a) を結合する方法 - pyopyopyo - Linuxとかプログラミングの覚え書き - の改訂版です Linux の場合 (方法1) ar scripts を使います. …

svnからgitへの移行方法

久しぶりにSubversionのリポジトリをgitに移行したので手順をまとめておきます subversion側の状況を確認する SVNでcheckout済みの作業ディレクトリにて,svn リポジトリのURLやパスを確認します $ cd SVNの作業 $ svn info URL: svn+ssh:///サーバ名/hogeho…

jupyter notebook が起動しない時の対処方法

jupyter notebook が以下のエラーを出して起動しない場合の対処法 File "*********/.local/lib/python3.7/site-packages/tornado/netutil.py", line 174, in bind_sockets sock.bind(sockaddr) OSError: [Errno 99] Cannot assign requested address 暫定的…

Debianが起動しない場合の復旧方法 (Bug#932935)

2019年7月28日に Debianが起動しなくなりました.原因は sid(unstable)と呼ばれる開発版のみに存在するバグです.バグレポートも出ています.症状としては,システムを再起動すると" logsave not found - requires manual a fsck "と表示されるだけでシステ…

macOS に Tex Live 2019をインストールする

macOS mojave の TeX環境を texlive2019 に更新したので手順をまとめます.2020年6月27日追記: Tex Live 2020版の記事を用意しました. pyopyopyo.hatenablog.com この記事は以下のエントリを macOS mojaveと Tex Live 2019 に合わせて更新・加筆したもので…

迷惑メール対策に負けない,exim4 の正しい設定方法

ラズパイやPC Linuxで構築したサーバ機では, ログの監視結果などをメール送信できると格段に使い勝手が向上します.しかし今のインターネットは迷惑メール対策がしっかりしています.例えば プロバイダのOutbound Port 25 Blocking SPFによる送信ドメイン認…

Linuxカーネルのソースコードを読む方法(その4: list.h 後編)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです. お題: list.h 前回の続き,リスト構造の実装です.前回のエントリはこちら http://pyopyopyo.hatenablog.com/entry/2019/06/30/150000 リストの…

Linuxカーネルのソースコードを読む方法(その3: list.h 前編)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです.今回のお題: include/linux/list.h 今回はカーネル内部で多用されているデータ構造の一つとして linked list の実装を読みました.主なファイルは …

USB接続のSSD/HDDのSMART情報を見る方法

HDDやSSDの健康状態はS.M.A.R.T情報を調べると確認できます.ところが外付けドライブなどでは少し工夫しないとSMART情報が見えない場合もあります. SMART情報が見えない理由 これは,PCとHDD/SSDとの接続に以下のような様々な組み合わせがあって CPU → SATA…

pipで入れたパッケージを一括更新する

python のパッケージをコマンド一行で最新版にアップデートする方法です コマンド 普段 sudo を使わずに,--user つけてpipを実行している場合 $ pip3 list --format freeze --outdated | while IFS='==' read pkg dummy; do pip3 install --user --upgrade …

PyGObjectのインストールエラーを回避する方法

pipコマンドで PyGObjectをインストールしようとすると $ pip3 install PyGObject以下のエラーが出る場合がある Package gobject-introspection-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gobjec…

Windowsのドライブ(vfat)で rsync を正しく使う方法

vfat形式のドライブ(USBメモリなど)や,sambaなどでネットワーク経由でマウントしたストレージに対して rsync を使う場合は,いくつかオプションつけないと rsync の本来の性能が発揮されません.rsyncの特徴,例えば差分コピーによる高速ファイルコピーな…

TeXでページ番号を左上に表示する

TeX

TeXでページ番号を左上に表示する場合は fancyhdr パッケージを使います fancyhdr の使い方 \usepackage{fancyhdr} \pagestyle{fancy} \rhead{\thepage} フッターのページ番号を消すにはさらに \cfoot{ } とします fancyhdrの仕組み fancyhdrパッケージを使…

Linuxカーネルのソースコードを読む方法(その2: kernel.panic)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです. 今回のお題: kernel.panic 今回はカーネル内部のエラー処理(カーネルパニック)の部分です.ソースコードのバージョンは linux-5.0.1 です. カ…

Linuxカーネルのソースコードを読む方法(その1)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです. 今回のお題: dmesg コマンド 今回は dmesg コマンドに関係する部分を読みました.printkや /dev/kmsg 等が関係する部分です.ソースコードのバー…