投稿

nfs4のサーバー機能をコンテナで実現する方法

記事の更新日:2026/09/30 評価を加筆 1.概要 この記事は2023年に記述した記事です。最近はクラウドベースのfuseが主流でnfsは以前のようには利用されなくなっていると感じています。しかし、イントラネット内部ではsmbとnfsは現在でも多数利用されていると考えて、備忘録に残すことにしました。 Dockerを利用してnfs4のサーバー機能をコンテナで実現する方法を調べました。参考資料を参照してdocker-composeで起動できて、クライアントからファイルのread/writeができるようにしました。クライアントはDockerを可動させているubuntu-20.04 Desktopです。/home/usernameにディレクトリを作成し、これをnfs4のコンテナから共有設定します。この内容を記述します。 私の評価は以下の通りです。 (1) nfs環境はファイル共有環境として利用されてきました (2) mountして、VMwareの共有ストレージで良く利用をしていました (3) 現在はクラウドストレージの利用が広がり、fuseを利用することが多くなりました (4) それでもnfsはローカル環境で利用できる有効な技術で学習する価値があります 2.詳細 (1) nfs4サーバー環境構築 (a) ubuntu-20.04にdocker, docker-composeを導入 $ sudo apt -y install docker.io $ sudo apt -y install docker-compose $ sudo usermod -aG docker $(whoami) $ docker --version $ docker-compose --version PCを1度再起動します (b) uid=1000, gid=1000のusernameに/home/username/nfsディレクトリを作成 $ mkdir /home/username/nfs (c) Dockerfile、docker-compose.yml作成して、コンテナ起動 Dockerfile作成 FROM itsthenetwork/nfs-server-alpine RUN mkdir /nfsshare RUN chown 1000.1000 /nfsshare docker...

VirtualBox-7の新機能のunattended installationは止めたほうが良い

記事の更新日:2026/09/30 評価を加筆 1.概要 この記事は2023年に経験した内容を記載したものです。VirtualBox 7は、現在も利用されているので必ず役立つ記事だと思って、備忘録として残します。また、VMware WorkStation Proも少し試験をして違いを追記しています。 VirtualBoxを利用して仮想マシンを作成する機会があり、VirtualBox-7の利用で苦労したので、その内容を記載します。利用したのはVirtualBox 7.0.6 r155176で、VirtualBox-7の新機能のunattended installationで苦労しました。既定値はこの機能を利用する設定ですが、ubuntu-20.04仮想マシン作成はお勧めしません。ubuntuの導入経験が豊富であっても、Skip unattended installationにチェックを入れて仮想マシンを作成するほうが良いでしょう。 私の評価は以下の通りです。 (1) VirtualBoxは無償で利用できる仮想環境で、Windowsで利用されています (2) 仮想マシンの自動導入をサポートしますが、日本語環境では正しく動作しません (3) これを回避するために、Skip unattend installationを選択します (4) VMware WorkStation Proが無償提供されました、今後、利用は広がると思います 注意事項 Windowsの利用にあたっては、Microsoftが定める使用許諾契約(EULA)を遵守する必要があります。ライセンス違反(不正なプロダクトキーの利用、規約外の商用利用など)は違法行為となるため、必ず正規のライセンスを取得・確認した上で操作を行ってください。 2.詳細 (1) Ubuntu環境にVirtualBoxを導入して、Windows仮想マシンを作成 VirtualBoxを利用してWindows11の仮想マシンを作成してみました。利用したのはVirtualBox 7.0.6 r155176で、ubuntu-20.04を導入した環境です。既定値はこの機能を利用する設定ですが、windows11仮想マシン作成もお勧めしません。Windows11の導入経験が豊富であっても、Skip unattended installationにチェ...

Linux kernelで気がついたことの記録

記事の更新: 2026/09/04 1.概要 この記事は、kernel 5.19に関して調べたことを記事にしていました。今回、記事の見直しをして、今後、発生したLinux kernel関連で気づいたことを記載することに変えました。具体的には、予想していないLinux kernelの変化の備忘録です。 2.詳細 (1) kernel 5.19 kernel-5.19に関して、調べた時に気がついたことを記載します。ubuntu-22.04.2は、5.19.0-38を利用していました。このkernel versionは微妙なバージョンで、何れ、kernel-6.xに変わる気がします。5.19から6.0への移行期に感じた特有の違和感について記述をします。 The Linux Kernel Archivesを調べると 5.19が存在しません。kernel-5.15がversion-5の最新です。 そこで、ネット検索をしてkernel-5.19に関して調べると、参考資料を見つけました。 Linus Torvaldsは7月31日、最新のLinuxカーネル「Linux 5.19」公開を発表した。 ..... なおTorvalds氏は次期版(5.20)について、 「大きな数字に混乱するのではという心配を感じ始めたので、 6.0と呼ぶことになりそうだ」と記している。 しかし、The Linux Kernel Archivesはversion-6に進んでしまっています。 微妙なkernel versionのようです。 さらに昔のことですが、kernel-2.6.40の次は、kernel-3.0.0と発言したことも思い出しました。この時はkernel-2.6はkernel-2.6.39.4などのように4つの数字で表現されていて、これを3つの数字で表現するように直したものだと思います。 リーナス氏のコメントから「バージョンアップの基準が視認性にある」気がします。 (2) kernel 6.8 Ubuntu 22.04はkernel 6.5を利用していました。当時、Ubuntu 24.04はkernel 6.8でした。 その頃にopenSSHで問題が発覚して、Ubuntu 22.04のkernelもkerenl 6.8に変わり、Ubuntu 22.04とUbuntu 24.04のkernel ...

ubuntu/LinuxMintでmouseとtouchpadを切り替えて利用する方法

記事の更新日:2026/07/03  1.概要 この記事は2023年の記事です。NotePCでは必ず設定しているので気にすることがなくなりましたが、UbuntuとLinuxMintでは設定方法が異なり、備忘録として残すことにしました。 ubuntu-20.04のNotePCを利用する場合、キーボード操作をしている時に、touchpadに触れてしまい思わぬ場所に入力することがありました。mouseを接続時に設定でtouchpadを無効化すると良いのですが、面倒な上に、NotePCの電源を落とし、mouseを取外すとtouchpad操作ができなくなります。このことに気づかずに次回利用する時、touchpadが動作せず、mouseを探してしまいます。以前から対策がないかを探していたのですが、対応策の記事を見つけたので紹介します。 2.詳細 (1) ubuntuの場合 私は2台のNotepc上で、ubuntu-20.04.6(20.04.5から自動更新)を利用していますが、この設定を組み込んで問題なく利用しています。ubuntuの場合はコマンドですがとても便利です。 mouse接続時にtouchpadを無効化し、mouse取外し時にtouchpadを有効に戻す gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled-on-external-mouse 上記設定をもとに戻し、常にtouchpadを有効にする gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled 一度、コマンドを実行して設定することでmouseとtouchpadは自動切り替えになります。戻すことは普通ありませんが、戻すコマンドを実行して設定が戻ることの確認もしました。 (2) LinuxMintの場合 標準で設定方法が組み込まれていて楽です。 設定 => マウスとタッチバッド => タッチパッド選択 => 入力中はタッチパッドを無効化On LinuxMintの場合、MacOS並にタッチパッドを利用できます。上記設定場所のスクロール方法を2本指でスクロールを設定します。私は便利に利用しています。 最初、to...

ChatGPTとGeminiを比較!AIブラウザ「Atlas」から考えるAIの限界とプログラミングの未来

記事の更新日: 2026/08/08 1.概要 この記事は2023年3月に最初にchatGPTについて記述しました。今回見直しで2026年7月にGeminiにも同じ質問をして4年半の進歩を知る機会になりました。 「AIはいつか、人間のプログラマの仕事をすべて奪ってしまうのだろうか?」そんな疑問を胸に、まずは話題のChatGPTに「チューリング・テストに合格できるか」というシンプルな質問を投げかけることからスタートしました。さらに後発のGeminiとの比較や、最新のAIブラウザ「ChatGPT Atlas」の動向を追う中で、一つの結論に達しました。 本記事では、実際の検証手順と共に、「AIは優れたアシスタントになり得ても、開発の本質には人間の努力が不可欠である」という理由を、楽器演奏のステップに例えて分かりやすく解説します。 2.詳細 (a) chatGPT MicrosoftまたはGoogleのアカウントを持っている前提です。 Firefoxにて、下記URLにアクセスします。 https://chat.openai.com/ Verify you are human をクリックします。 Welcome to ChatGPT Log in with your OpenAI account to continue では、Log in を選択します。 ここでは、Continue with Googleをクリックします。 Google にログインの画面に変わるので、 ログイン情報を入力します。 ログイン認証が完了すると、 ChatGPT This is a free research preview. の画面が表示され、nextを選択します ChatGPT How we collect data の画面が表示され、nextを選択します ChatGPT We'd love your feedback! の画面が表示され、Doneを選択します ChatGPTのchat入力画面になります。 画面下部の入力フィールドに、質問を入力すると回答を得られます。 「chatGPTはチューリング・テストに合格ですか」を入力して質問します。 「完全に合格できない」と回答します。説明記述は納得できる内容なので、試してみてください。 (b) Gemini 比較のため、今、同じ質問をGemi...

テスト駆動開発を利用したfibonacciのPythonコード作成

記事の更新日:2026/09/30 評価を加筆 1.概要 本記事は2023年の記事です。TDD(テスト駆動開発)の開発手法を利用して私はプログラムを作成するようになりました。そのきっかけはKent Beckの書籍です。Kent BeckはアジャイルのXP手法の提唱者であり、UnitTestの最初の開発者です。プログラム作成方法を変えた原点なので、備忘録に残すべきと考えました。 開発手法としてKent BeckのTDD(Test-Driven Development)を活用しています。参考書籍ではJavaを利用してfibonacci関数をTDDで開発する手法が紹介されています。ここでは、Pythonを利用してJava版と同じことを最初に実施します。 次に再帰呼出しの問題点を指摘して、再帰呼出しを利用しない方式へTDDで改良します。改良した結果、大きなfibonacciの計算ができるようになります。 TDDはテストコードを作成し、そのテストコードがパスするコードを作成するという作業を続けて、目的とするコードを作成する手法です。アジャイル(XP手法)の1つであり、スクラムなどの開発でも幅広く利用されている方法です。テストコードはUnitテスト方式で作成します。UnitテストはKent Beckが最初にjunitを開発し、様々な言語に波及しました。 私の評価は以下の通りです。 (1) プログラム開発は、開発コードとテストコードをセットで作成します (2) TDDはテストコードを先に作り、開発コードをテストがパスするように作ります (3) テストコードが存在することで、開発コードの修正リスクも減少します (4) TDDは様々な開発言語に適用できるので、活用してください 2.再帰呼出による詳細説明 fibonacci数列は、0,1,1,2,3,5,8,13,.....と継続する数列で、先行する2つの数値を足した値が、次の数値になる無限に続く数列です。初期値と次の値は、0と1になっています。 2.1 【Red】環境のセットアップとテスト失敗(ステップ1〜2) (1) testcode(TestFibonacci.py)を作成 import unittest from fibonacci import Fibonacci class TestFibonacci(unittest.T...

3目並べを利用したAlphaGoの学習 tensorflow-1編

1.概要 この記事は2023年の記事です。3目並べをプログラムすることでAlphaGoの学習をすることが目標でした。Tensorflow-1.0を利用した最適解の計算手順は当時とても苦労をしたので備忘録として残すことにしました。 AlphaGoの勉強過程で3目並べを学んでいます。前回までプログラムロジックを作成していましたが、今回から3目並べの全ての組合せデータを利用してAIでプログラミングに勝てるかを試します。DeepLearningとしてtensorflowの1.xと2.xの両方を試してみます。 DeepLearningでは、3目並べのフィールドを3×3のイメージと考え、手書き文字認識の手法を応用します。本記事では、以下の3つのステップを順に実装していきます。 (1) minimax法の解析を利用して学習用入力データを作成 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 (3) tensorflowのモデルを利用して実際に対戦 追加部分には、Tesnsorflowをnvidia GPUを利用するために工夫した内容を追記しています。 ・CUDA-10.0を利用する方法 ・nVIDIA Container Toolkitを利用する方法 ・miniconda3を利用する方法 2.詳細 (a) 概要 3目並べのフィールドを3☓3のイメージと考えて、手書き文字認識の手法を利用します。最初に利用する環境はtensorflow-1.15です。入力データはminimax法で活用したすべての手順(9!=362880)の組み合わせの中から勝負が決まった時点の3目並べのフィールド情報と結果(勝ち、負け、引き分け)を利用します。 tensorflowで利用できる形式に変換し、学習をしてモデルを作成し、モデルを利用して3目並べの対戦をします。元情報がminimax法で解析した情報なので、tensorflowによる学習結果がminimax法まで到達できると最高の結果です。大まかな手順は以下の通りです。 (b) 詳細 (1) minimax法の解析を利用して学習用入力データを作成 dlmakedata.pyを作成します。この中で利用するtictactoe.pyはmontecarlo版を利用します。 titactoeのコードは本ブログのTictactoe like...