Category: 日記

DBMSを触りたい!①

こんにちは。今日は表題の通り、DBMSを触りたいと思います。今日中に習得して、今後自分のサービスにもどんどん適応していくぞ! 1. ローカル環境へMySQLを入れる まずは勉強のため、ローカル環境へMySQLを入れていきます。参考にしたサイトはここです。 1.1 インストール ここまでは特に問題なく進む感じです。ただし、ここで気になったのはPerlの文字。もし、今後Perlレスのシステムを作ろう!となったときにはMySQLは避けたほうが良いのかな?なんて思いました。オリジナルOSはなるべく少ない言語で動作させたいし、サービスだってなるべくメンテしやすいものにしたいからね。 以下のパッケージが新たにインストールされます: libaio1 libcgi-fast-perl libcgi-pm-perl libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-template-perl libmecab2 libprotobuf-lite23 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server mysql-server-8.0 mysql-server-core-8.0 2. MySQLを動かしてみる どうやらうまくインストールできたので、次はMySQLを動かしてみます。説明を読む感じ、パット見は内部で用意されたサーバに入って、コマンドなどで指示を送る方式のようですね。これは別にローカルでなくても同じ動作で作業できるのでマシンやOSを抽象化できていると言えるのかもしれません。 もとのサイトに習ってユーザを追加している様子が下記になります。今回は外に公開していないMySQLサーバということで、ユーザ名等も公開しています。IDENTIFIEDのあとにはパスワードを記入するそうです。また、コマンドの終端がわかるように “;”…

Chatgpt: 神だけど嘘をつく

仕事において、コンテナ内からGithubに対してssh接続をしたいケースが発生しました。その際、とりあえずChatGPTに聞いてみるのはどうかな?と思い早速使ってみました。結果的には嘘をついたりするので素直には解決しなかったのですが、まあこれはこれで非常に勉強になりました。特に弊部署には先輩と言える先輩がいないため、自然とこの子に聞くことが多くなるんだろうなと思う次第。 それでは本題に入ります。まず、ChatGPTくんは英語が得意なので英語で質問を入力することにしています。そうした方が精度もスピードも断然良いです。下記が会話になります。 上記に対するchatGPTくんの回答はこちら ここまでの会話で、「確かにホストと共有したボリュームにしてしまえば行けるじゃん」と納得してしまいました。このあとにぶつかる大きな問題にも気づかずに….。ちなみにこのときは英語の回答を読み間違えて、コンテナ間でもssh通信するのかな?と思い素っ頓狂な質問もしています。 ChatGPTくんすごい!と思う一方で、ここの6番の回答で「そういえば。。。」となりました。SSH関連のファイルは権限管理がとても厳密で600とか400じゃないと動作しないんじゃなかったかな?そういえばDockerコンテナ内のユーザはホストのルートでは無いから、600とかに指定されてしまうと書き込めないのでは? そしてChatGPTくんとの戦いが始まった。 ここで実際にChatGPTの言うとおりにコンテナを試しに作ってみて、SSHできるか試してみました。その際、known_listが更新できない(権限が無いため)という問題に早速ぶつかりました。下記がChatGPTくんとのやり取りです。 キャプションでは解説が難しいため、ここでは本文に問題点を書いていきます。まず、解決手順そのものは非常に妥当です。鍵が正しいかを確認し、その権限が合っているか確認する、この動きは間違っていないと思います。ただし、確認方法が今回の本題になります。コンテナの中から見ると確かに権限は合っています。しかし、これはコンテナのルートユーザを基準にした権限ではなく、ホストのルートユーザを基準としているため、コンテナのルートユーザには書き込み権限が無いです。つまり、この手順に沿って見ていっても解決できないのです。少しコーナーケースだと性能が落ちるのかも知れない・・・。 そんなこんなで、 こんな感じで解決していくことになりました。以降はDockerfile内にどうやって現在のユーザのホームディレクトリ(通常~や$HOME)を記載するかについて、質問しています。これはsshのデフォルト保存先が~/.ssh/であることに起因しています。 ちなみにこの回答、全くの嘘です。ひどい話です。全然これでは機能してくれないので注意。 尤もらしく書いているので騙されてしまいましたが、実際にやってみるとことごとく失敗します。そこで、ChatGPTくんに事実を伝えました。 ということで、docker buildコマンドには –build-argsオプションがあり、これで指定できる変数はDockerfileであらかじめARGで指定できるのでいかが?と返ってきました。確かにこれは使えそう!ありがとうChatGPT! 結果的には他の鍵がおいてある~/.ssh/を明示的に指定するのも怖かったので、build argを使用しない方法で実装することになった。ただ、知識がついたのでこういう試行錯誤のお供にChatGPTは最高だね!という結論にします。 これからもよろしく!ChatGPTくん。そして、ここまで読んでくださった辛抱強い皆様に感謝!

何故 時間が足りなくなるのか?

小さな気づきを得たのでここに日記という形のメモを残します。 今回気づいたのは「娯楽に時間を費やしすぎると、あっという間に時間がなくなる」ということです。「何を今更」と思うかも知れないですが、やはり経験に勝る学習は無しということで、解説します。 気づいたのは、日曜日の夜に実家から帰宅する途中でした。週末に実家に帰ったのですが、あっという間に月曜日になっていることに気づきました。それで、今週末にやったことを振り返って、この時間経過が妥当かどうか考えてみました。しかし!ほとんど碌なことをやっていないことに気づきました。というか、家族ぐるみでポケモンGoをやっただけ・・・。非常にもったいなかったと感じました。 さらに掘り下げて考えてみると、ここ最近は落ち着きつつありますが、少し前は仕事が忙しく、職場の人間関係(というか上司1人だけ)で悩んでいて、私生活がボロボロになっていたことを思い出しました。そして、計画性のない生活に慣れきってしまっていて、時間の使い方が下手になっているのではないか?と仮説を立てました。そして、時間を効率良く使う方法について再検討することにしました。 まず、「時間を最も効率良く消費する」ことに対する定義から考え治すことにします。森羅万象は物理法則に従っていますので、私を含む人類も時間効率を最適化して生きていると雑に仮定します。すると、「時間を無駄にした」と感じる原因は、「自分が無意識で考えている時間効率の関数」と、「理性での評価関数」が異なっていることで、無意識の関数で最適化すると理性での評価が良くなくなるという表現が成立するのではないか?と雑に考察できます。 では、考察をもとにして解決策を考えた結果ですが、まずやるべきことは「理性での評価関数」をしっかり理解することだと思いました。ブログを書くことは10点/h、Pythonでコードを書くことは30点/h、英語の勉強は5点/h、C++でコードを書くことは25点/h、自分の脳内ストーリを考えるのは5点/h、バドミントンクラブに行くことは40点/h・・・など、何かしら自分の達成感の持てる事象の得点/時間の効率を理解しておくこと。これが大切なのだと感じました。 とすると次にやるべきことは、自分の得点効率表を書き出してまとめることなのでしょうね。とはいえ、今自分のすべての得点表をかける気はしないので、ちょくちょく更新をかけていくことが大切なのでしょうね。 それでは最初に戻って。今回気づいたのは「娯楽に時間を費やしすぎると、あっという間に時間がなくなる」ということでした。これは、無意識の評価関数において、娯楽(ゲーム)は満足度/時間の効率が非常に良い一方で、自分の理性から見ると得点が低い選択になっているのではないか?なので、自分の理性の評価式を理解して、係数の大きくなる行動を選択することによって、時間効率を上げる≒何もせずに時間が減るという事象を減らすことができるのではないか?という話でした。 しかし、こんな時間まで起きていることは理性的ではないですね。明日からはこの前心療内科からもらった不眠治療の薬を飲んで寝なければ。それでは、また次回!

サイトを移行しました

こんにちは。RockinWoolです。タイトルの通り、これまでGithubPages+Hugoで構築していたサイトをロリポップ+WordPressへ移行してみました。正直難易度はGithubPagesでやっていた頃のほうが高かったので、今はだいぶ楽に感じます。一方でカスタマイズ性が高いので、よりよいサイトにしていくためには勉強が必要だなと感じました。約一年ぶりの更新(なぜかubuntuからhugoで生成したサイトをGitHubPagesへ反映できないバグがあったため)になりましたが、今後ともよろしくお願いします。次回は書き溜めていたYoctoの話、Pythonの話、C++の話等を順番に書いて行こうと思います。まずはPythonかな・・。

ゼロ作OSその1&Atcoder2回目

2021/11/07こんばんは。RockinWoolです。 今日から適当にミカノス本を進めていこうと思います。 ちなみに、昨日の記事を投稿しようとしたら、見知らぬエラーが大量に出てきたためこの記事に習って解決しました。なお、これ以外にも他のテーマをgit submoduleに加えていたようで、こちらの記事を参考にsubmoduleを初期化して対応いたしました。 mikanosその1(p28~) ネタバレしないように感動した内容を語っていくと その後AWSにバイナリファイルチェック用環境を整えて行きました。 なお、ubutu20.04のイメージを使用しています。 Atcoder開始A問題 作業中にAtcoderが始まってしまったので、こちらも挑戦。 ところが、この作業中にローカルのWindowsPCにg++等が存在しないことが判明! 仕方がないので脳内コンパイラでA問題を解いてみました(AC) 四捨五入の関数とか知らなかったので愚直に実装。intにキャストすると切り捨てられることを想定して前もって0.5足しておけば良いのでは?となりAC。 AtcoderB問題 B問題は手元にpythonの実行環境ならばあったのでpyuthonで実装。 pythonならば同じ文字列でもset型でキャストしてしまえば統合されるので、簡単に実装できた。 ということで、今回はAtcoderのB問題まで溶けたところで終わりにします。 なお、次回はAWSにchrome remote desktop入れてQemuを動作させるところまで頑張ろうと思います。 ご閲覧ありがとうございます。

久しぶりにhugo環境を整えた話

2021年11月某日お久しぶりです。RockinWoolです。(本当に久しぶり過ぎて実名で挨拶しそうになりました。)今回は新たにゼロからのOS自作入門を購入したので、それをレビューしたいと思います・・・と行きたかったのですが、そもそもhugoでブログを描くのが久しぶりすぎたので、まずはhugoのセットアップ作業を実況していこうと思います。明日以降はOS自作入門の方もちゃんと進めていきます。 1. hugoの再インストール 何故かhugoがWindowsに入っていないというエラー文が表示されたため、再度セットアップ作業を行います。hugoのインストールに関してはこのサイトを参考にして進めました。なお、PATH設定後はVSCodeを再起動しないとターミナルに反映されない点に注意です(一敗)。 2. 新しい記事の投稿 新しい記事は以下のようなコマンドを入力して作成しました。 3. OS自作の準備(p28ハローワールド) この本ではLinuxを用いてOS自作を行うため、自分のWindows環境をそのまま使うとミスる可能性が高いかなと思いました。そこで、AWSのEC2で適当なUbuntu20.04の仮想マシンを作成して使ってしまおうと思ったのですが!なんと自分Windowsを久しぶりに起動して更新した関係で、モバイルWifiの3日で10GB制限を大幅に超えてしまっていて(19.8GB)通信制限がかかっており、まともに使えない!ということで本日はここまでにいたします。 また明日もがんばるぞー!!