イヌツムリのメモ

学習したことのメモである。しかし、他の人が読んでもわかるように書こう。

あんまり変わんないけど、pythonで巨大数を速く作る

はじめに 最大値を求めるコードを書くときに、最大値を仮おきしたい。 その際、どのようにしたら高速に作れるか調べた。 結果、どの方法もあんまり変わらなかった。 もっと値を大きく設定した場合に差が出るかもしれないが、必要なさそうなので検証しない。 …

virtualboxにcentos8を入れたかったができなかったので久しぶりにvagrantに頼ってみた話

はじめに kernel driverをいじりたかったのでcentos8を入れることにした。 (弊社環境は未だにcentos6... 誰が自動化されていない環境でウン百台もアップデートするんだ...) centos8のisoを用いたインストールがterminalからできなかったので、 vagrantを使っ…

linux kernelのテスト方法

linux kernelのテスト方法 linux kernelの開発でテストしたかったので調べた。 まずは項目だけ。 そのうち、使い方等を追記したい。 静的コード解析 sparse smatch coccinelle 自動パッチ 自動テスト ktest kselftest LTP autotest テストインフラ kunit ユ…

pythonの多次元リストの罠にハマった

はじめに 久しぶりにpythonを触ったら、ハマった。 多次元リストを生成して、そのうちの1つ値を変更すると、 他の列の値も変更されてしまった。 初期化方法がまずく、1つの列をコピーして多次元リストとしていたことが原因だった。 リスト内包表記すれば、そ…

linux kernelドライバでタイマー割り込みを実現するのにhrtimerを使ったのでメモする

はじめに hrtimerはhigh resolusion timerの略。 従来のtimer_listより高解像度なタイマーを提供する。 もとのドライバソフトウェアでは、timer_list を用いたブロックデバイスを使用していた。 timer_list では割り込みできる最小単位がmili secであったた…

modprobe: ERROR: could not insert 'module_name': Exec format error

はじめに modprobeしたが、モジュールをロードできなかった。 問題を解決できなかったが、別アプローチでロードすることはできた。 事象 $ make -C /lib/modules/$(uname -r)/build M="drivers/module_name" modules # make -C /lib/modules/$(uname -r)/bui…

Virtualboxの仮想マシンとlinuxホストマシン間でpingが通らない問題

はじめに virtualboxにcentos8を入れたがpingが通らない問題が発生した。 NATを介してホストマシンから仮想マシンへ接続することはできた。 しかし、仮想マシンからホストマシンへ、ホストマシンから仮想マシンへブリッジを介した通信ができなかった。 くだ…

centos6上にvirtualboxでcentos8環境を作りたい

はじめに centos6上にvirtualboxでcentos8環境を作りたい。 正攻法でうまく行かなかったので、vagrantのちからを借りようとしたら うまくできなかったので、邪道な方法で解決した。 vagrantをインストール (curlを添えて) boxを追加 (curlを添えて) vagrant …

virtualenvでpython環境を作る on Centos7

はじめに python3を使いたいがcentos7はpython2.7だったりする。 新しい環境ごとにpython3環境を構築しているので、手順を記録する。 linuxコマンドがpython2.7を使っていたりするので、あんまり触りたくない。 そこで、virtualenvを用いて指定したバージョ…

何回目かのgit clone できない問題対応

Git

もう何回になるかわからないけど、いつも忘れるgit cloneできないときの解決法を記録する。 よくぶち当たるのが下記の問題 proxyの設定 proxyのせいでSSLエラー gitバージョンが古い proxyの設定 到達できないとき。 (たまにdnsの設定できてないとかいるけど…

CentOS6のサポートが切れたのでyumの設定を変更する

はじめに (2021/02/01更新) CentOS6の環境にyumでソフトをインストールしようとしたらできなかったので、 泣きながら設定を変更した。 vault.centos.orgを有効化 CentOS-*.repoの$releaseverの値を変更 vault.centos.orgを有効化 https://vault.centos.org/ …

型コンストラクタのエクスポート&インポート in Haskell

はじめに 独自プロトコルで通信するサーバを作っていたら、 独自プロトコルで定義している型コンストラクタをインポートできなくてハマったので記録する。 結論 Export.hs module MyProtocol (MyMsg(..), createMyMsg, sendMyMsg) data MyMsg = MyMsg MyHead…

何回やっても忘れるgitのリポジトリ作成fromローカルマシン

はじめに もう何回やったかわからない、ローカルマシンからのgitのリポジトリ作成。 しかし、また忘れたので今度こそメモする。 ローカルマシン: windows10 環境: vscode gitホストサービス: gitlab 手順 ローカルリポジトリの作成 ローカルリポジトリに追加…

Rustでmap関数を実装したかった

結論 納得いかん 引数の方を何でもにできなかった。 再帰関数を定義しようとすると、多重貸し出しになってコンパイルが通らなかった。 解決策を調査したい。 サンプルコード fn map<T>(f: Box<dyn Fn(T) -> T>, a: &Vec<T>) -> Vec<T> where T: Copy + std::ops::Add<Output = T> + std::ops::S</output></t></t></dyn></t>…

Rustで高階関数を使う

はじめに 高階関数は便利だ。 なので、rustでも使いたい。 よって、使い方を検証した。 下記にrust環境構築方法をまとめている。 dockerとvscodeでrust環境を構築する on Windows10 - イヌツムリのメモ 結論 引数になる関数をBoxでラップすると、関数を引数…

dockerとvscodeでrust環境を構築する on Windows10

はじめに windows10上で、rustのdocker containerを作成し、 vscode上で編集したrustのソースコードをビルドして実行するまでの手順を示す。 概要図を挿入したい 手順 rustのdocker imageを取得する rustのdocker containerを作成する vscodeのextensionをイ…

配列を引数にするより、イテレータを使うほうがbashらしい

はじめに bashで配列を引数に取るように書こうとすると難しいし、読みにくい。 なのでより簡単でbashらしい書き方を調べたので記録する。 (2021/02/01)追記 結論 結論、下記のようにwhile readすることで、変数名に引数が代入されて処理できる。 疑問: 複数…

VirtualBoxの仮想マシンを複数台まとめて起動する

複数起動したいとき dogsnailという名前を含む仮想マシンをすべて起動するには下記のようなコマンドで実現できる。 grep以前を調整すれば応用可能 vboxmanage list vms | grep dogsnail | cut -d" " -f1 | xargs -I{} vboxmanage startvm {} --type headless…

VirtualBoxの仮想マシンをまとめてexportする

スクリプト バックアップを取りたいが何回もexport何回もするのがめんどいので下記スクリプトを使う #! /bin/sh list=(`vboxmanage list runningvms | sed -e "s/^.*\"\(.*\)\".*$/\1/"`) for vm in ${list[@]} ; do vboxmanage controlvm ${vm} poweroff; v…

MACアドレスを変更せずにVirtualBoxの仮想マシンをインポートする

virutalboxでは仮想マシンをインポートするとmacアドレスが変わる。 しかし、インポートの際に、macアドレスを維持したいことが多々ある。 理由としては、macが変わってしまうと、/dev ~のファイルやらなんやら設定し直すことになってめんどいからである。 …

tex環境の構築onWindows

はじめに wordは嫌いだ。 編集しているうちに、挿入した画像がどこかおかしなところへワープしていく。 数式を挿入するのもだるい。 他人が編集したwordファイルの謎の線がどうやって書き込まれたのか分析するのが大変だ。 (線の入れ方もいろいろあってどれ…

virtualboxのマシンを圧縮する

圧縮手順 ゲストOS上 空き容量一杯に空のファイルを作成して、削除。 (なぜ、/dev/zeroを読み込んでzeroファイルを作ることで空き容量いっぱいにゼロフィルできるのかわからん) # dd if=/dev/zero of=zero bs=4k # rm zero $ vagrant halt ホストOS上 VBoxMa…

プロセスの一覧

ふつうはpsコマンドを使う。 なぜか使えない自体に遭遇した場合、/var/run を見れば起動しているプロセスを確認できる。 (なぜかわからないが遭遇したんや。。。) /proc 以下にpidの番号でディレクトリがある。 その下のfdディレクトリを除くと/var/runにシ…

virtualboxをCUIで操作する

2020/11/10 章: バックアップを取りたいが何回もexport何回もするのがめんどい のスクリプトがめちゃめちゃだったので正しく動くように更新 2020/11/10 章: 複数起動したいとき のコマンドがテキトーすぎて間違っていたので正しく動くように更新 2021/06/28 …