2019-02-01から1ヶ月間の記事一覧
Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです. 今回のお題: dmesg コマンド 今回は dmesg コマンドに関係する部分を読みました.printkや /dev/kmsg 等が関係する部分です.ソースコードのバー…
組み込みLinuxのような少メモリの環境では気をつけないと rsync が原因でシステムがクラッシュする場合があります. クラッシュする理由はメモリ不足 rsync はファイルを転送する前に先ずファイルのリストを作ります.リストはメモリ上に一時保存されます.…
dmesg を実行するとエラーが出る場合があります $ dmesg dmesg: read kernel buffer failed: 許可されていない操作です これは,Linuxカーネルの設定でアクセス制限を掛けているためです. アクセス制限の設定 アクセス制限を外すには sysctl を使います./e…
Linuxの起動がものすごく遅い.10分ぐらい掛かる.そういう質問を受けたので原因調査の手順と解決法をまとめます. 起動時のログを見る方法 systemdにはシステム起動時のログを分析する機能があります.使い方も簡単まずは systemd-analyze を実行します $…
bash や sh のシェルスクリプトでエラーメッセージや警告メッセージをカラフルに色付けして表示するコードを公開します.スクリプトの雛形にどうぞ.なかなか便利です. スクリプトの雛形 #!/bin/bash # Colorize output only if stdout referers to termina…
C言語やC++の欠点の一つは,バッファオーバーフローやオーバーランが起こりやすいことです.それは欠点であると同時にC/C++の利点であると言う人もいます.つまり,メモリ関連のチェックを省略することで,省略した分C/C++はオーバヘッドが少ない高速なプロ…
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>…
その名も qrcode という python モジュールがあります qrcode というpythonのモジュール "qr" というコマンドラインのツール が用意されているので,簡単にQRコード(2次元バーコード)を生成するプログラムやスクリプトが実装できます インストール pip経…
iOSのブラウザ(Safari)はダブルタップでページの拡大縮小が出来ます.この機能を無効にするには,JavaScript で "touchend" イベントを横取りします /* ダブルタップによる拡大縮小を禁止 */ document.addEventListener('touchend', function (event) { even…