2023-01-01から1年間の記事一覧

ラズパイからメールを送信する方法(2024年版)

Raspberry Pi から Gmail のメールサーバーを経由してメールを送信する方法です.ラズパイで稼働しているサーバの監視用途,たとえばcrontabのエラー,セキュリティの警告などをメールで通知する用途を想定していますOSはdebian系を使っているものとして,ex…

時刻合わせで ntpd の代わりに systemd-timesyncd を使う方法

サーバーの時刻合わせといえば昔は ntpd 一択でしたが今は systemd の timesyncd もあります両者の違いは以下の通りです ntpd 高機能 NTPサーバーを構築するなら ntpdを使うしかない systemd timesyncd クライント動作のみ.NTPサーバーの構築はできない 軽…

NVIDIA のGPUのクロックを固定する方法

NVIDIAのGPUの動作クロックを固定する方法です。デフォルト設定のGPUは動作クロックが200MHzぐらいから2000MHz(2GHz)ぐらいまで随時変動します。動作クロックが10倍変わると、ベンチマークのスコアも10倍変わります。CUDAや3D描画の性能測定を行う場合はま…

Linuxコンソールのスクリーンセーバーの設定方法

コンソールのスクリーンセーバーの設定方法です 標準コマンドで設定する方法 10分後に画面表示をOFFにする場合は以下のコマンドを実行します setterm -blank 10 数字の単位は「分」です. 0を指定すると,スクリーンセーバーはOFF,つまり画面が常に表示され…

稼働時間が100年を超えたSSD

S.M.A.R.T.のログを見ていたら、Power-On hours(稼働時間)が100年を超えたSSDが見つかりました。smartctl を実行すると $ sudo /usr/sbin/smartctl -a /dev/sda レポートが出力されます smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-12-amd64] (loc…

PC復旧作業用にブータブルUSBを作成する方法(2023年版)

データ修復やPCの復旧作業用に,起動可能なUSBフラッシュドライブを用意する方法です. ventoy 現時点(2023年)で一番使いやすいのは ventoy です。 open source つまり無料 インストールが簡単 ISOイメージをコピーするだけでISOイメージから起動できる IS…

シェルスクリプトでターミナルの大きさを調べる方法

bashなどのシェルでターミナルのサイズを取得する方法をまとめます おすすめは tput コマンド tputコマンドを使うのが無難です tput cols でターミナルの横幅 tput lines でターミナルの高さ となります.単位はどちらも文字数です 別解1: $COLUMS と $LIN…

debian(sid)のgrub2にバグがありLinuxがブートしなくなる件

debian(sid)を使っていたら,grub2のバグを踏んで,サーバが起動しなくなりました.顛末をまとめます. バグの内容 apt-get dist-upgrade すると,grub2が壊れて,システムが起動しなくなります! バグは修正済みです 影響を受けるバージョンはGRUB2 2.12か…

C/C++でshellのように"~"や環境変数を展開する方法

bashなどの shell では "~/*" "$HOME/*" はホームディレクトリ以下のファイル名に展開されます.これをC/C++で実装する方法です 実装 wordexp(3) を使います #include <wordexp.h> #include <stdio.h> int main(int argc, char *argv[]) { wordexp_t exp; int flags = 0; int ret</stdio.h></wordexp.h>…

EmacsでmarkdownのTOCを自動生成/自動更新する方法

markdownの目次(Table of contents, TOC)を自動更新する方法です 自動更新する方法は 外部コマンドで随時TOCを更新する方法 gitのhookを使って外部コマンドを自動更新する方法 エディタのプラグインを使う方法 などがあります最後の方法としては,Emacs なら…

Emacsでカーソル下の文字コード(コードポイント・バイト列)を表示する方法

M-x describe-char を使うとカーソル下の文字コード(コードポイント・バイト列)を16進数で確認できます.表でまとめると C-u C-x = M-x describe-char 詳細表示 C-x = M-x what-cursor-position ミニバッファに簡易表示 です.滅多に使わないので,私は M-…

Emacsのperl開発環境(2023年版)

今時 perl なんて使う人がいるんでしょうか?そう思ってたら自分がperlを書く羽目になったのでEmacsのperl環境を更新しました.設定をまとめます lsp-mode lsp (Language server)を設定します.lsp-modeを使います. 手順1: cpan 経由で Perl::LanguageSer…

スピーカーの音質を測定する方法

ピンクノイズを再生して,スマホのアプリで音のスペクトルを確認することで,音の再現性をグラフでチェックします.簡易的ですが,音の違いがグラフで比較でき,便利です.以下,方法をまとめます. /usr/bin/speaker-test (alsa-utils) alsa-utils というパ…

時系列データをグラフでプロットして、アニメーションとして保存する方法

グラフをアニメーション(動画ファイル)で保存する方法ですgnuplotを使います gnuplot の do for 構文 "do for" を使うと簡単にアニメーションが作れます.とりあえずsinカーブをアニメーションさせる例です do for [i=0: 60] { plot sin(x + i/10.*pi) } …

3月1日の一日前を計算する方法

いろんな言語・コマンドラインで,日付の足し算・引き算をする方法をまとめます.例として,3月1日の1日前を計算を考えます.この計算は,うるう年があるので面倒です.たとえば 2021年3月1日の前日は 2月28日 2020年3月1日は前日は 2月29日 となりますが…

CPU(論理プロセッサ)の個数を確認するコマンド(Linux, macOS)

LinuxやmacOSで論理プロセッサの個数を確認する方法をまとめます nproc コマンド(Linux, macOS) GNUの coreutils がインストールされている場合は nproc コマンドが利用できます.macOSでもcoreutilsをインストールしておけば nprocコマンドが使えます. $ …

autotools で make check を実装する方法(その4):XPASSとXFAIL

前回までのエントリの続きです make checkで実行されるテストケースの結果には,ラベルが付きます.わかりやすいのは,成功(PASS)と失敗(FAIL)です.他にもSKIPやERRORがあります.わかりにくいのはXPASSとXFAILです.以下,その意味を説明していきます…

autotools で make check を実装する方法(その3):valgrind を組み込んでメモリリークを検出する

前回のエントリの続きです メモリリークの検出ツールである valgrind を使って、メモリリークに関するテストを自動化します.autotools や make check に関する基礎情報は前回のエントリを参照してください.本エントリでは差分だけ記載します. make check …

autotools で make check を実装する方法(その2)

前回のエントリの続きですmake check で 必要なプログラム・ライブラリのビルド テストケースの実行 を自動で行う方法をまとめます.autotoolsの使い方,make checkに関する基本的な情報は前回のエントリにまとめているので,本エントリは差分だけをまとめま…

autotools で make check を実装する方法(その1)

今更ですが autotools で make check を実装する方法をまとめます. make check の仕組み 手順1: テスト用プログラムを用意する 手順2: Makefile.am で テスト用プログラムを指定する 手順3: configure.ac の記述 手順4: autoreconf -vfi の実行 make check …

matplotlib でグラフの軸ラベルを一つにまとめる方法

matplotlibでグラフをプロットするときに、複数の軸ラベルを一つの共通の軸ラベルにまとめる方法です例えば以下のグラフには X軸にラベル(ABC)が二つありますが,これを と一つにまとめます. 方法 軸ラベルの指定は set_xlabel()を使いますが import matp…

Pythonで方程式を解く

pythonで方程式を解く方法です 一次方程式を解く 一次方程式 を について解きます import sympy x = sympy.symbols('x') eqn = sympy.Eq(5*x + 3, 0) ans = sympy.solve(eqn) print(ans) 出力は [-3/5]で,答えは です 連立一次方程式を解く 連立一次方程式 …

gitでtagを変更する方法(ワンライナーで一括変更)

gitでtagの名前を変更する方法をまとめます 簡単な例 応用としてbashのワンライナーで複数タグを一括変更する例 の二つを紹介します 簡単な例 変更前のタグを old 変更後のタグを new リモートのリポジトリを origin とすると,oldをnewに変更するコマンドは…

LinuxでShiftJISの文字化けを直す方法

最近のLinuxはシフトJIS(SJIS)をサポートしてない場合があります. その場合,moreやless,vimでシフトJISのファイルを開くと文字化けします.Windowsで作成したソースコードやテキストファイルが文字化けする場合は文字コードだけでなく,LinuxがShiftJIS…

pandasでDataFrameの差分をハイライト表示する方法

pythonのpandas でデータの差分を確認する方法です2つのDataFrameをセル単位で比較し、値が一致しないセルをハイライト表示します import pandas as pd def style_diff(col, target=None, props=''): if col.name in target.columns: t = target[col.name] …

Pythonで簡単な構文解析器を実装する方法(pyparsing の使い方)

Pythonで構文解析を行う方法です.BNFを書いてがっつり実装する場合は Lark などを使いますが,このエントリでは簡便な方法として pyparsing モジュールの使い方を紹介します.ログファイルから特定のデータだけを抜き出す,といった用途ならpyparsingで十分…

Emacsのlsp-modeが起動しないバグ

Emacsのlsp-modeが起動しないバグとその解決方法です 不具合の内容 以下のエラーメッセージを出して,lsp-modeが起動しなくなります. Invalid Image type: 'svg' 解決方法 init.el などに以下の1行を追加すると回避できます (add-to-list 'image-types 'sv…

Mac で winmail.dat を開く方法 (Linuxでも開けます)

メールに添付された winmail.dat を開く方法は二つあります方法1) gmail で開く 方法2) tnef コマンドで変換するgmailにメールを転送すると,googleのシステムがいい感じに変換してくれます(笑).何も考えたく無い場合は gmailを使いましょう. 以下の…

Pythonでバイト列の種類を自動判別する方法

file-magic を使うとバイト列の種類(mime_type)が自動判別できますpipでインストールできます pip install file-magic 使い方 import magic magic.detect_from_content(バイト列) 例えば gzip のバイト列を渡すと FileMagic(mime_type='application/gzip', e…

zip/unzipコマンドの使い方

基本 ディレクトリ dir を圧縮, output.zip に保存 zip -r output.zip dir/ 圧縮ファイルが output.zipとして保存されます ディレクトリ dir を圧縮, パスワード付きで ,output.zip に保存 zip -e -r output.zip dir/ パスワード付き圧縮ファイルが outpu…