【メモ】WindowsのWSLのOSイメージのバックアップ・リストアを行うバッチファイル

以前のエントリでWSLOS(ディストリビューション)イメージをバックアップ・リストアするという内容で書いていました。

過去エントリ参考

uepon.hatenadiary.com

最近、開発したアプリの入ったイメージを複数台のPCにリストアをすることになったので、その内容をバッチファイル化しました。

以下のリポジトリに入れてあります。なお、省略時のDefaultパスが*C:\wsl_images*となっている部分もあるので、管理者権限のcmdなどで実行を行う必要があるかもしれません。(バッチファイル内で権限のチェックをしています)

バッチファイルのあるリポジトリ

github.com

もう切断で困らない!GitHub Codespacesタイムアウト設定方法

前回はGithub CodespacesNode-REDから、Ollamaを経由してLLMにアクセスし、テキスト生成をするといった内容を書きました。

uepon.hatenadiary.com

この講義を行った際に、学生からも作業中にサーバがタイムアウトがされてしまい、作業が中断してしまうという相談を度々受けました🙇🙇🙇特にワークショップやハンズオンセッションでは、この予期せぬ切断が学習の妨げになることも考えるとちょっと見逃せない問題です。

先の記事を書くにあたって参考にさせていただいた、IBM Championの知り合いから「Codespacesの接続時間は伸ばせますよ」という話を聞いて調べてみると、 実は、GitHub Codespaces のタイムアウト時間は最大240分まで延長可能とわかりました。本記事では、Node-REDに限らずGitHub Codespacesでの開発作業を快適に進めるために、タイムアウト設定のカスタマイズ方法について書いてみます。

方法としては、リポジトリ内の設定ファイルとして記述する方法と個人設定で行う方法は2つありますが、 後者のGitHub個人設定を変更する方法だけ行えば大丈夫です。急いでいる方向けのリンク

方法 - リポジトリ内の設定ファイルで記載する方法 - GitHubの個人設定を変更する方法

続きを読む

Node-REDでAIと対話!GitHub Codespacesで作るLLMアプリケーション入門

「AIと簡単に対話できないかな?」「Node-REDでもLLMを使えたら面白いのに」

そんな思いを持っていた方もいるのではないでしょうか?今回はNode-REDOllamaを組み合わせて、誰でも簡単にAIとの対話システムを構築する方法をまとめてみました。

開発環境にはGitHub Codespacesを使うので、面倒な環境構築は必要ありません。普段お使いのブラウザだけで、すぐにAIアプリケーションを作れます。また、Node-RED初心者の方でも、画面上でノードを組み合わせるだけで実装できる手軽さが特徴です。

Node-REDの開発環境をGitHub Codespacesで構築する方法に関しては以下のエントリで紹介しています。

uepon.hatenadiary.com

以降ではNode-RED開発環境の起動からOllamaへのアクセスまでを記載しています。

今回はこちらのエントリを参考にさせていただきました🙇🙇🙇

www.1ft-seabass.jp

続きを読む

【メモ】Pythonのf文字列の実力がすごい

Pythonのバージョン3.6から導入されているf文字列f-string:フォーマット文字列)は普通は便利なので普段遣いしていますが、色々と知らない機能があったのでメモ。

テキストの配置と整形

プログラムで標準出力に途中結果を表示することはあるかなと思いますが、そんなときに以下のような区切りの表示をすることはないでしょうか。自分はよくあります🙄

#######実行表示########

ただ、これをつくるのって結構面倒だし、開始時・終了時で挟もうものなら、長さがズレていると気持ち悪くなります。最近面倒なので以下みたいな感じにすることも多いです。それでも面倒です🙃

実行表示###############

実はこの対応がf文字列でできるということを最近知りました。しかも、、左右や中央に文字を寄せることもできるという。

以下のようにします。

  • 右寄せ:f"{text:>20}" (20文字分のスペースで右寄せ)
  • 左寄せ:デフォルト、またはf"{text:<20}"
  • 中央寄せ:f"{text:^20}"
  • 空白部分を特定の文字で埋める:f"{text:#>20}"

たとえば、以下のような事ができます。

text = "Hello"

# 中央揃えの場合
print(f"{text:#^20}")  # #######Hello########

# 左揃えの場合
print(f"{text:#<20}")  # Hello###############

超便利!😎

日時のフォーマットもf文字列で

datetimeオブジェクトを様々な形式で表示指定できるようです。 自分はいつもだと以下のような感じにしていましたが

from datetime import datetime

now = datetime.now()
# strftimeを使用
print(now.strftime('%Y年%m月%d日 %H:%M:%S'))

f文字列だと以下のように記述できるようです。少しタイプ量は減るかな。

f"{datetime:%d/%m/%Y}"のように記述します。

from datetime import datetime

now = datetime.now()
print(f"{now:%Y年%m月%d日 %H:%M:%S}")

フォーマットのメモ

こんな書き方もできるみたい。

print(f"{now:%Y}年{now:%m}月{now:%d}日 {now:%H}:{now:%M}:{now:%S}")

デバッグ用の変数表示

print()を使用して変数を使用する場合、表示する変数の名前も書かないと行けないので面倒でした。

例えばこんな感じ

a = 10

#これまでの自分の認識
print(f"a={a}")
# 出力結果は
# a=10 

# 他にも以下のような書き方ができます。
# 従来の%演算子を使用
print("a= %d" % a)

# str.format()を使用
print("a= {}".format(a))

地味に面倒🙄実はこれもf文字列をつかうことで以下の様にかけます。

※ただしPython3.8以上でないとこの使用方法は使えないのでご注意を!

a = 10

print(f"{a=}")
# 出力結果は
# a=10 

=を使用して変数名と値を同時に表示できるのでした。圧倒的に楽だ!😎

他にも以下のような事もできます。 - 例:f"{a + b=}"`で`a + b=15のように表示 - 式の評価結果も同様に表示可能 - スペースを入れて可読性を向上させることができる

数値のカンマ入れ

f文字列では桁区切りの文字を入れる事もできます。特にカンマ区切りにしてほしいとかいうのかなり面倒でそのために関数を作っていたのですが、それが不要になりました。

こんな感じでf"{number:,}"で桁区切りを表示できます😎

カンマ(,)以外にもアンダースコア(_)を区切り文字として使用可能です。

アンダースコアの例:f"{1000000:_}"→ 1_000_000

print(f"{1000000:,}")
# 出力結果
#1,000,000

おわりに

f文字列、便利すぎる…😎😎😎

【Git/GitHub】リポジトリの依存関係を引き継がない!GitHubでリポジトリを完全複製する方法

自身のGitHubリポジトリをバックアップして新しいリポジトリとしたいことはたまにあるかなと思います。計画性のない私とってはよくあります。漠然とforkすればいいのかなと思っていました。

機能的にはこれでもいいのですが、forkの場合には厳密にいうと以下のような点で注意が必要です。

厳密には複製先(新)のリポジトリには複製元(旧)のリポジトリの依存関係が維持されています。ということで、依存関係をなくしてコピーを行うにはどうしたらいいかということを調べてみたところ今回の内容に行き着きました。

続きを読む
/* -----codeの行番号----- */