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

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に移行したので手順をまとめておきます2020/11/30 追記.加筆したエントリ http://pyopyopyo.hatenablog.com/entry/2020/11/30/154224 を新しく用意しました. subversion側の状況を確認する SVNでcheckout済みの作業…

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:dmesg)

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

ラズパイのような少メモリ環境で安全にrsyncを実行する方法

組み込みLinuxのような少メモリの環境では気をつけないと rsync が原因でシステムがクラッシュする場合があります. クラッシュする理由はメモリ不足 rsync はファイルを転送する前に先ずファイルのリストを作ります.リストはメモリ上に一時保存されます.…

dmesg のアクセス制限を外す方法

dmesg を実行するとエラーが出る場合があります $ dmesg dmesg: read kernel buffer failed: 許可されていない操作です これは,Linuxカーネルの設定でアクセス制限を掛けているためです. アクセス制限の設定 アクセス制限を外すには sysctl を使います./e…

Linuxの起動が遅い原因の調査方法(その1)

Linuxの起動がものすごく遅い.10分ぐらい掛かる.そういう質問を受けたので原因調査の手順と解決法をまとめます. 起動時のログを見る方法 systemdにはシステム起動時のログを分析する機能があります.使い方も簡単まずは systemd-analyze を実行します $…

シェルスクリプトでエラーメッセージに色をつける

bash や sh のシェルスクリプトでエラーメッセージや警告メッセージをカラフルに色付けして表示するコードを公開します.スクリプトの雛形にどうぞ.なかなか便利です. スクリプトの雛形 #!/bin/bash # Colorize output only if stdout referers to termina…

コンパイラのAddressSanitizerを使ってバッファ オーバーフローを退治する

C言語やC++の欠点の一つは,バッファオーバーフローやオーバーランが起こりやすいことです.それは欠点であると同時にC/C++の利点であると言う人もいます.つまり,メモリ関連のチェックを省略することで,省略した分C/C++はオーバヘッドが少ない高速なプロ…

iostream や std::stringでprintfのような書式指定を行う方法 (C++11版)

C++11を使うと綺麗に実装できます まず format() というテンプレート関数を作ります.C++11で新しく導入された,可変引数テンプレート,および std::snprintf() を使います. #include <string> #include <cstdio> #include <vector> template <typename ... Args> std::string format(const std::string</typename></vector></cstdio></string>…

QRコード(2次元バーコード)を生成するスクリプト・プログラムの作り方

その名も qrcode という python モジュールがあります qrcode というpythonのモジュール "qr" というコマンドラインのツール が用意されているので,簡単にQRコード(2次元バーコード)を生成するプログラムやスクリプトが実装できます インストール pip経…

iPhone/iPadでダブルタップのズームを禁止する方法

iOSのブラウザ(Safari)はダブルタップでページの拡大縮小が出来ます.この機能を無効にするには,JavaScript で "touchend" イベントを横取りします /* ダブルタップによる拡大縮小を禁止 */ document.addEventListener('touchend', function (event) { even…