2023年3月2日木曜日

ChatGPTを英会話に使う



AIと幅広い対話を行うことができるChatGPTですが、英語教師の役割を担わせることも可能になっています。これを用いて英会話(チャット)による学習を行うことが可能です。
  • 最初に必要なプロンプトを入力します。コピペして使ってください。
    • 初心者
Let's think step by step.
You are an American English teacher.
Chat with me, a beginner English speaker.
Conversation continues up to 7 times.
You come up with the topic.
Conversation will be done in one sentence.
You correct and explain any grammatical errors.

Responses should be in three-line format in the following order, which is a constraint.
Correction: My message after you corrected it. First time none.
Reason: Your reason for the correction. First time none.
Message: Your message.At first you ask questions on topics other than greetings.

Translate the immediately preceding three lines into Japanese and add.
    • 初級
You are an American English teacher.
Chat with me, a beginner English speaker.
Conversation continues up to 7 times.
You come up with the topic.
Conversation will be done in one sentence.
You correct and explain any grammatical errors.
Your message should consist of at least 15 words per sentence.

Responses should be in three-line format in the following order, which is a constraint.
Correction: Proposed correction to my message. First time none.
Reason: Your reason for the correction. First time none.
Message: Your message.At first you ask questions on topics other than greetings.

      • 中級
    You are an American English teacher.
    Chat with me, a beginner English speaker.
    Conversation continues up to 7 times.
    You come up with the topic.
    Conversation will be done in two sentence.
    You correct and explain any grammatical errors.
    You explain if there is a more natural way to express yourself.

    Responses should be in three-line format in the following order, which is a constraint.
    Correction: Proposed correction to my message. First time none.
    Reason: Your reason for the correction. First time none.
    Message: Your message.At first you ask questions on topics other than greetings.
      • 上級
    You are an American English teacher.
    Please chat with me.
    Conversation continues up to 7 times.
    You come up with the topic.
    You explain if there is a more natural way to express yourself.

    Responses should be in three-line format in the following order, which is a constraint.
    Correction: Proposed correction to my message. First time none.
    Reason: Your reason for the correction. First time none.
    Message: Your message.At first you ask questions on topics other than greetings.
      • それ以上
    そのままChatGPTと会話するのが良いと思います。
    • あとはChatGPTが会話を続けてくれます。英語だけでなく分からない単語を日本語で使うと英語に修正してくれたりもします。

    2022年9月29日木曜日

    Stable Diffusionを使う(Arch Linux)

     メモ兼テンプレです。

    • 目的
      • stable_diffusion.openvinoの実行に必要な手順をまとめておく
    • 前提
      • Arch Linuxがインストール済みであること
      • 一般ユーザーを作成済みであること。ユーザー名はuserとする。
    • 手順
      • rootユーザーを開始してAUR利用に必要なパッケージをインストール
        • su
        • pacman -Sy base-devel git sudo
      • visudoを実行してuserがsudoを利用可能にする
        • visudo
          • 操作方法はviなので注意
        • 例として「root ALL=(ALL:ALL) ALL」の次の行に「user ALL=(ALL:ALL) ALL」を追加
        • 「:wq」で保存して終了
      • userにユーザーを変更
        • su user
      • 作業用ディレクトリをホームディレクトリに作成し移動
        • mkdir /home/user/work
        • cd /home/user/work
      • AURのpython38をインストール
        • git clone https://aur.archlinux.org/python38.git
        • cd python38
        • gpg --recv-keys B26995E310250568
          • 証明書を信用できない場合は使わないこと(自己責任です)
        • makepkg -si
      • rootユーザーに戻って必要なパッケージをインストール
        • exit
        • pacman -Sy python python-pip python-virtualenv
      • userユーザーになり作業用ディレクトリでstable_diffusion.openvinoをclone
        • su user
        • cd /home/user/work
        • git clone https://github.com/bes-dev/stable_diffusion.openvino.git
      • virtualenvを設定し開始する
        • virtualenv -p python38 env1
        • source env1/bin/activate
      • stable_diffusion.openvinoに移動してインストール
        • cd stable_diffusion.openvino
        • pip install --timeout 150 -r requirements.txt
      • stable_diffusion.openvino実行
        • python demo.py --prompt "karaage"
          • 実行結果はoutput.pngに出力されます。
      • virtualenvを終了
        • deactivate
    • 備考
      • AMDでは動かないとか動くとか(不明)
      • ※現時点では動作した
    • 生成サンプル(Penguin typing on a laptop)

    2022年7月6日水曜日

    GPUパススルー(Arch Linux)

     メモ兼テンプレです。

    環境

    • Arch Linux
    • Pentium Gold G6405(VT-d対応)
    • GeForce GTX 950(UEFI対応)
    • BIOSTAR H510MH 2.0(IOMMU対応)

    手順

    • IOMMUとVT-dを有効化
      • UEFIでVMXをEnable
    • カーネルパラメーター
      • intel_iommu=on
    • モジュールをロード
      • /etc/modprobe.d/vfio.conf
        • 注意点としてCPU由来のPCIeコントローラーを含めないこと
      • /etc/mkinitcpio.conf
        • MODULES=(... vfio_pci vfio vfio_iommu_type1 vfio_virqfd ...)
    • 仮想マシン作成
      • virt-managerにて作成
        • UEFIを選択
        • CPUモデルとしてhost-passthroughを選択
        • SPICEの削除は不要

    2022年6月17日金曜日

    ゲームボーイエミュレータを自作

    Rustでゲームボーイエミュレータを自作してみました。
    なかなか面白くCPUを中心に知識を深めるのにも役立ったので内容と共に紹介したいと思います。ソースコードはこちらにあります。


    まずはじめに

    実際のところ執筆時点ではゲームボーイエミュレータを自作する為に必要な資料は豊富に揃っている為に比較的容易に作ることが出来ます。ただそれらの資料は一部不完全であったりするので突き合わせて正しい方を選んでいく必要があります。その際に役立つのがGitHubに公開されている完成品のエミュレータで動作させるのもソースコードを見るのも役に立ちます。

    完成品と同じ処理を実装していくことで確実に作れる点は大きいです。


    概要を把握

    エミュレータを作る前にGAME BOYが、どんな機能で、どんな動きをするのか概要を把握しておくと楽になります。CPU、RAM、割り込み、時計、画面、サウンド、ゲームパッド、ゲームカートリッジなどが主たる物としてあげられますが、ざっくらばんでも絵にしておくと把握が楽になります。


    準備

    必要な資料や開発環境を整えておくと楽が出来ます。
    私の開発環境ではGitとRustとVimとSDL2を使用しました。他にもVisual Studio Codeなどもありますし使い慣れた開発環境を準備するのが良いでしょう。また完成品のソースコードの開発環境に合わせられると更に楽が出来ます。
    資料については関連サイトが豊富にあります。日本語ではGB Specなど、海外ではBGB homepageGameboy DevelopmentgbdevGame Boy Projectなどがあります。海外の方が詳細であることが多いです。

    その他にROMデータが必要になりますが、これはオープンソースのROMがお手軽に利用できます。なかにはテスト用ROMなどもあり使うと確認が楽になります。またデバッグ機能の充実しているエミュレータBGBや、必要な物がまとめられているGitHubのawesome-gbdevなどもあります。


    実装

    私の場合は概要把握の後は仕様書と完成品のソースコードを相互参照しながら実装していきました。ソースコードに不明点があれば仕様書を参照、テストROMで不具合があればソースコードの見直し、それでも不明なら仕様書を参照、それでも不明なら完成品のソースコードを修正してレジスタの内容を出力して開発品とdiffなど。
    ドキュメントには不備が所々ある様で基本的にはテストROMに合わせるのが良いようです。


    終わりに

    結果として部分的ですがサウンドの再生も可能になり比較的まともにプレイ可能になりましたので今後は吸い出し機を使って購入したカートリッジのデータをプレイしてみる予定です。
    自作したエミュレータでマリオやポケモンが動くのは感慨深いかもしれません。

    2022年4月27日水曜日

    GAME BOY エミュレータを作る(Rust)

    メモ兼テンプレです。

        GB Emuの作成にあたり参考資料についてまとめておく


    2022年2月19日土曜日

    SSHでポートフォワード(リモートからローカルへトンネリング)

    メモ兼テンプレです。

    ssh -R 8080:localhost:8081 -g -N user@192.168.1.1

    解説

    • -R 8080:localhost:8081
      • 192.168.1.1のポート8080への接続をlocalhostの8081にポートフォワード
    • -g
      • 外部からの接続を許可
    • -N
      • ポートフォワード向け便利オプション(コマンド実行なしのモード)
    • user@192.168.1.1
      • userで192.168.1.1に接続
    ※未検証

    SSHでポートフォワード(ローカルからリモートへトンネリング)

    メモ兼テンプレです。

    ssh -L 8081:192.168.1.123:8080 -g -N user@192.168.1.123

    解説

    • -L 8081:192.168.1.123:8080
      • ポート8081への接続を192.168.1.123:8080にポートフォワード
    • -g
      • 外部からの接続を許可
    • -N
      • ポートフォワード向け便利オプション(コマンド実行なしのモード)
    • user@192.168.1.123
      • userで192.168.1.123に接続

    2021年1月19日火曜日

    Android Studioでgit push(ssh)

    前提条件
    • Android StudioでProjectを作成済み
    • Projectのlocal repositoryを作成済み
    • gitサーバーを構築済み
    環境
    • Android Studio 4.0.1
    • Git 2.29.2
    • Arch Linux
    手順
    1. gitサーバーでbare repositoryを作成
      • git init --bare /home/username/git/repos/リポジトリ名
    2. Androidstudioでpush
      • メニュー>VCS>Git>Push
      • Define Remoteリンクを選択
      • リモートリポジトリ名とURLを入力してOK
        • master
        • ssh://username@0.0.0.0:/home/username/git/repos/リポジトリ名
      • Push

    2020年12月20日日曜日

    Raspberry Pi Zero WとArchLinuxでBulez(Buletooth)を使う

    環境

    • Raspberry Pi Zero W
    • ArchLinux ARM
    設定

    • /boot/config.txt(追記)
      • dtparam=krnbt=on
      • enable_uart=0
    • /boot/cmdline.txt(削除)
      • console=ttyAMA0,115200
      • kgdboc=ttyAMA0,115200
    • 再起動
    • pacman -S bluez bluez-utils
    • systemctl enable bluetooth.service
    • systemctl start bluetooth.service
    備考

    • bluetoothの設定にはbluetoothctlを使用

    2020年11月29日日曜日

    定形外郵便物の宛名ラベル

    定形外郵便物の宛名ラベルをスプレッドシートで作ってみました。
    使う人が居ればこちらからどうぞ。

    2020年9月3日木曜日

    英語のリスニングについて日本語での解説

    日本語が出来る人が英語のリスニングをする場合に心にとめておくと楽が出来る事柄。
    必須ではない。細かい事を知らなくても大抵は言葉を使えるようになる。

    • 基本的な英単語や文句くらいは、ある程度は覚えておくと楽
    • 発音が変わる
      • 「大きい」と書くと「おおきい」とは余り言わず、「おーきい」と発音する
      • 「こんにちは」と書くが「こんにちわ」と発音する
      • 「ロック・アンド・ロール」と書いてあると「ロッケンロール」になる
    • 意味が変わる
      • 「いけてる」が「かっこいい」と言う感じであったりする
      • 「クール」が「涼しい」ではなく「(性格が)かっこいい」であるとか
    • 発音が似ている言葉が色々とある(日本語からすると)
      • 正しい・右(right)と、あかり(light)は日本語で両方ともライトだが別の音
      • 曲線(curve)と「縁石」(curb)など色々
      • 英語は日本語より母音が多い
    • 文章全体などから判断したりする。
      • 「メンキョヲハッコウスル」は、「免許を発酵する」とは解釈しない
      • メール(mail)と雄(male)は英語では同じ音、同音異義語。
    • 発音の強弱も判断材料になる

    2020年8月26日水曜日

    複数の鎮痛剤の併用について(頭痛薬等)

    複数の頭痛薬の併用は基本的に出来ません。

    説明書に「他の解熱鎮痛剤、かぜ薬、鎮静薬、乗り物酔い薬を服用しないでください」と記載されていたりします。

    とはいえ、複数の鎮痛成分を持っている鎮痛剤は市販されています。

    代表例をいくつか記述しますが、その前に代表的な鎮痛成分をあげておきます。
    • 鎮痛成分(エテンザミドを除く)
      • アスピリン…アセチルサリチル酸である。バファリンなど
      • イブプロフェン…イブA錠など
      • アセトアミノフェン…ACE処方がある。ノーシン錠など
      • ロキソプロフェン…ロキソニンSなど
      • イソプロピルアンチピリン…サリドンA
    次に複数の鎮痛成分を持つ鎮痛剤をあげます。
    • サリドンWi…イソプロピルアンチピリン+イブプロフェン
    • セデス・ハイ…イソプロピルアンチピリン+アセトアミノフェン
    • バファリンプレミアム、ノーシンアイ…イブプロフェン+アセトアミノフェン
    • エキセドリンA錠…アスピリン+アセトアミノフェン
    他にもあると思います。
    ロキソプロフェンに関しては複合している市販薬は見当たりませんでした。

    2020年7月19日日曜日

    ArchLinuxでArduino

    環境
    • ArchLinux
    • Arduino(Nano V3.0、Atmel ATmega328-AU MCU、Amazon購入の互換品)
    • 公式IDE(arduino-1.8.13-linux64.tar.xz)
    設定
    • tar.xzを展開して、展開したarduinoを実行(root)
    • Tools->Board->Arduino Nanoを選択
    • Tools->Processor->ATmega328P(Old Bootloader)
    • Tools->Port->/dev/ttyUSB0
    備考
    • 仮想環境

    2020年6月5日金曜日

    Android Studioを利用中にマウスがきかなくなる。

    環境
    • Arch Linux
    • Openbox
    • alsamixer
    ※仮想環境

    現象
    • Android Studioを実行していると、マウスが反映されなくなる。
    • Xの再起動では対応できない。
    対処
    • 仮想タッチパッドを削除する事で解決した。

    2020年5月6日水曜日

    ArchLinuxインストール(LVM上でLUKS暗号化)

    作業メモです。インストール部分については省略。

    完成図
    vda                   254:0    0    20G  0 disk
    ├─vda1              254:1    0   512M  0 part  /boot
    └─vda2              254:2    0  19.5G  0 part
      ├─VGroup00-lvroot 253:0    0    15G  0 lvm
      │ └─cryptroot    253:2    0    15G  0 crypt /
      └─VGroup00-lvhome 253:1    0   4.5G  0 lvm
        └─crypthome     253:3    0   4.5G  0 crypt /home

    目的

    • LVMを使用してパーティションのサイズを変更可能とする
    • /を暗号化
    • /homeを暗号化
    • UEFI+GPT+GRUBを使用


    手順

    • パーティション(gdisk)

    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048         1050623   512.0 MiB   EF00  EFI system partition
       2         1050624        41943006   19.5 GiB    8E00  Linux LVM


    • 暗号化するパーティションの消去

    cryptsetup open --type plain /dev/vda2 cnt --key-file /dev/random
    dd if=/dev/zero of=/dev/mapper/cnt status=progress bs=1M
    sleep 5
    cryptsetup close cnt


    • Physical volumes、Volume groups、Logical_volumesの作成

    pvcreate /dev/vda2
    vgcreate VGroup00 /dev/vda2
    lvcreate -L 15G -n lvroot VGroup00
    lvcreate -l 100%FREE -n lvhome VGroup00


    • 暗号化

    cryptsetup luksFormat -c aes-xts-plain64 -s 512 /dev/mapper/VGroup00-lvroot
    cryptsetup open /dev/mapper/VGroup00-lvroot cryptroot

    ※/dev/mapper/VGroup00-lvhomeは別途暗号化


    • フォーマット

    mkfs.ext4 /dev/mapper/cryptroot
    mount /dev/mapper/cryptroot /mnt
    dd if=/dev/zero of=/dev/vda1 bs=1M status=progress
    mkfs.fat -F32 /dev/vda1


    arch-chroot後


    • パッケージの追加が必要
    pacman -S lvm2 grub dosfstools efibootmgr


    • /etc/mkinitcpio.confのHOOKにlvm2とencryptが必要
    HOOKS=(base udev autodetect modconf keyboard keymap block lvm2 encrypt filesystems keyboard fsck)


    • /etc/default/grubに追記が必要

    GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/mapper/VGroup00-lvroot:cryptroot
     root=/dev/mapper/cryptroot loglevel=3 quiet"

    GRUB_PRELOAD_MODULES="part_gpt part_msdos lvm"


    • /dev/mapper/VGroup00-lvhomeの暗号化

    mkdir -m 700 /etc/luks-keys
    dd if=/dev/random of=/etc/luks-keys/home bs=1 count=256 status=progress
    cryptsetup luksFormat -v -s 512 /dev/mapper/VGroup00-lvhome /etc/luks-keys/home
    cryptsetup -d /etc/luks-keys/home open /dev/mapper/VGroup00-lvhome crypthome


    • フォーマット

    mkfs.ext4 /dev/mapper/crypthome


    • /etc/crypttabに追記
    crypthome /dev/mapper/VGroup00-lvhome /etc/luks-keys/home


    2020年4月7日火曜日

    正常終了するまでダウンロードするスクリプト(sha256sum)

    メモ兼テンプレです。

    解説(設定する変数)
    • FILE
      • ファイル名
    • URL
      • ダウンロードファイルのURL
    • HASH
      • SHA256SUMのハッシュ
    • DLLOW
      • 最低ダウンロード速度(バイト)
    • DLMAX
      • 最高ダウンロード速度(バイト、K,M,Gが指定可能)
    その他
    • hash.txt
      • ここにハッシュとファイル名を追加していく。
    • 例外
      • ダウンロードをリトライしても同じファイルがダウンロードされる場合は終了します。

    2020年2月15日土曜日

    openboxでメニューの内容が表示されない(Arch Linux)

    作業メモです。下記で解決。

    pacman -S otf-ipafont

    単にフォントが入ってないだけなのかもしれない…

    2020年2月13日木曜日

    LinuxでWindows10のUSBインストールディスクを作る

    1. WindowsのISOイメージを取得する。
      • https://www.microsoft.com/ja-jp/software-download/windows10ISO
    2. 8GB以上のUSBディスクをNTFSでフォーマットする。
    3. WindowsのISOイメージをディスクイメージマウンタ等でマウントする。
    4. マウントしたディスクイメージの直下にある全てのファイルフォルダをUSBディスク直下にコピーする。
    • UEFI環境で起動とインストール完了まで確認。
    • WoeUSBというソフトもある(上手くいかなかった)

    2020年2月10日月曜日

    cURLでダウンロード

    メモ兼テンプレです。

    curl -L -Y 10240 -C - --limit-rate 10240K -k -o "FILE" "URL"

    解説
    • -L
      • リダイレクト対応
    • -Y 10240
      • 最低速度制限10KB/s
    • -C -
      • レジューム対応
    •  --limit-rate 10240K
      • 最高速度制限10MB/s
    • -k
      • SSL/TLS接続を検証しない
    • -o "FILE"
      • 出力ファイルパス
    • "URL"
      • ダウンロードパス
    その他
    •  --retry 10
      •  リトライ数の指定、なのだが、これを指定するとリトライ時に直近のダウンロードデータを破棄してしまう模様。なのでシェルスクリプトでラップして使った方が良さそう。

    ChatGPTを英会話に使う

    AIと幅広い対話を行うことができるChatGPTですが、英語教師の役割を担わせることも可能になっています。これを用いて英会話(チャット)による学習を行うことが可能です。 最初に必要なプロンプトを入力します。コピペして使ってください。 初心者 Let's think ste...