姫路IT系勉強会 2023.12

  • 開催日: 2023.12.16 13:15
  • 司会: wateさん
  • 参加人数: 参加者: ???名 (うち学生:0名)
  • HackMD: https://hackmd.io/YVdzoPWiTmu87IZsExJ_nQ
  • connpass: https://connpass.com/event/304501
  • ハッシュタグ:#histudy
  • 姫路IT系勉強会 Discordへ参加する
    • オンライン開催の場合はDiscordのボイスチャットを利用しています
    • Discordは無料プランに乗れる人数(10人以内)なので使っています。
    • 有料版でも$15/月程度なら払えなくもないですね。
    • Discord以外にも色々ありますので、人数が増えたら検討しましょう。
  • 姫路IT系勉強会 Slackへ参加する
    • 勉強会当日以外での質疑応答やメンバー同士のコミュニケーションに利用しています
    • Slackでの話の流れから、突発的に臨時イベントが企画されされるケースがあります

最近のニュース

お題

ここの下にお題(相談したいこと、発表したいことなどなんでも)お書きください。
※ 記載するお題は参加者一人につき1つだけ記載するようにお願いします。
### <ネタ>+(名前)の形式でお題を記載してください。

お題をここに書く(名前を書く)

(概要や背景などをここに書く)

自己紹介(近況報告?)

  • もはや話してる内容が1個のネタ

nginxでPOSTリクエストするとエラーが出るようになった(未解決:かねだ)

何かわかる人いれば情報頂けるとありがたいです

  • 特定のページからのみ、POSTを受け付けてくれない(500エラー)
  • ログを見てみると『open() “/var/lib/nginx/tmp/client_body/0000000001” failed (13: Permission denied),』
  • /var/lib/nginx/tmp/client_body/は当然ながら/var/lib/nginx/tmp/まで777にしても解決せず…
  • エラーが出るページはVue.JSで書かれている
  • Apacheだとエラーは出ない
  • 質問
    • よくわからないのですが、0000000001 ってなんですか?
      • なんなんでしょうね…(;^_^Aとりあえずそんなファイルは存在しません
      • わからないので touch 0000000001してみたら?どうなります。
  • 参考資料
  • Redhat系の場合SELinuxでひっかかる可能性もあるので、1回SELinuxを無効にしてみては?
    • 【NGINX】エラー is forbidden (13 Permission denied) の対応方法 - ゲームエンジニアの雑記ブログ: https://eng.shibuya24.info/entry/ngin/permission_denied
    • SELinuxってわかったあとはもうすこし切り分けた方がいい。
      • SELinuxの設定が…
    • WSLなどのコンテナだと関係ないよね。
  • nginx起因だと思われる、PHP関係ないよね。
    • nginxの設定をみなおすのがよさそう
  • Proxmoxも最近さわれてなくて
  • PHP-fpmの設定は大丈夫?
    • debianでPHPとPHP-fpmの設定がわかれていてこまったことがあった。
    • debianはPHPが3つにわかれている。注意してください。
  • Rubyしかさわれませんという人がいてこまった。
    • Docker勉強したいっす!とかいう人もいたり
    • 根本部分じゃなくて1stホップだけで語るとおかしい話になるよね
  • どうやっておしえたらいい?
    • 大学で教えるにも時間制限がある
    • 基礎のない人がいて困る
    • 大学は、必須じゃないからとか
    • 専門だから、脱落する人がいてもしかたがない。
    • 向き不向きがある。プログラムが誰でもできるわけではない
    • きっかけを与えることが大事。最初はやるきなくても、あとからプログラミングに入門することもある。
  • 原因きりわけは重要
    • よくわからないで放置する人はプログラミングが向かないんじゃ
  • コーダーとプログラマーは違う
  • 入門レベルはおことわりとはいってある。
    • 丁寧に対応してほしければ、マンツーマンの学習コースとかありますよ。
    • のびる人はほっておいても勝手にすすむからよい。たまにみるだけでいい。
  • Pythonやっているなら、OpenAIの登録とかしてRAGアプリを開発すればいいのかもしれない
    • 登録はネックになる。

小ネタいろいろ(のがた)

忙しいので小ネタをつらつらと書いてみた。

Webアプリの授業をFlaskからbottleにしたい

  • Flaskが悪いのではなく、Flaskがまともで教育用には大きすぎる気がしてきた
    • 最初はbottleを敬遠してたけど2年やって逆にこれぐらい小さいほうがいいような感じがしてる
    • あと、TailwindCSSやhtmxでFlask/bottleを呼び出すとかも入れたいな
  • TypeScriptでやろうとしていてらく
    • サーバー側もフロントも同じシンタックスでかける
      • peightpをつかうとLispシンタックスでPHPがかけるよ。
  • [HTMX](https://htmx.org/
  • )いいよね
    • JavaScriptをすてたんだけど、これだったらタグにかけばいける
    • Alpine.jsというのもある。
    • 属性として書けるほうがいい。はいりやすい。
      • HTML First
      • あれもこれもとなると初心者や初学者には辛い
  • jQueryをもう教えたくないなぁ。若い人には。
    • 若い人からはもう読めないのでは?
    • おっと、sedの悪口はここまでだ
  • JSX?
    • 書き方が非常にややこしい。
      • XML->YMLとかどんどんかきかたを簡単にしようとしているのに先祖帰りか?
  • JSの人はJSのことしか考えない
    • JSの人はJS以外をみない。
    • 基本自分のわかるところしかみない。
    • 運用を考えていないし、サーバーのことも考えない
    • 基本をおさえてからにすれば、いいんですけどね。
    • サーバーサイドとフロントの違いが理解できていない。
    • ラップしているから入りやすくなるけど、その中身までは理解できていない。
    • ファイルベースルーティングからかわってきた
      • 表現と実態がずれるかわかりにくいと文句をいう
      • ルーティングがなにかを理解していない。
  • 入りはどうでもいいけど、なにかを極めたほうがいいと思う。
    • JSは変更が激しいので、腰をすえて学ぶには向いていないと思う
  • bootstrap4
    • 設計の古さがあってきびしい
    • ブラウザの進化に、大きめのフレームワークがついてこれなくなる。
    • フルスタックはきびしい
    • で、耐えられなくなってシンプルに戻る。
    • 1つのことをシンプルにやれ
      • Emacsはおおきいけどね?
  • Unleash JavaScript’s Potential · UnJS
    • Unix哲学的に小さいパーツを組み合わせる感じで
    • 自分で使う部分を適宜組み合わせる
    • 初学者にはどれから手を付ければ・・・になりがち
      • 小さく選定するのもテクニック
  • やるまえに調べるというのはいいかもしれないが弊害はある。
    • 調べきれないようなおおきいものもある
    • 見わたせる範囲でできるといいんじゃない。
      • よし、わかった。言語仕様がたった50ページのR4RS (Scheme Lisp)しよう
      • ANSIで規格化されている安心感があるよね。
        • ANSI Common Lispだよね!
  • https://hono.dev/getting-started/nodejs
    • これくらいでいいと思う例
    • Python使わないならこれをベースにすればいいのかもしれない。

Python入門授業で使えるPythonのゲームフレームワークさがし

  • 初学者には「動いた」というフィードバックが必要なことを痛感中
    • となるとゲーム?と考えて授業の作り直しを検討中
    • 小さいものになるとpyxelPygame zero
      • 良さそうなものありますか?Pythonの授業なんでPythonしばりです

ProxmoxのLXCは、普通の仮想マシンのように使うのは厳しい

  • NavidromeというGoで書かれた音楽サーバーがあります
    • これを動かそうとしていたけど、ProxmoxでDockerは面倒くさい
    • 「じゃ、ワンバイナリだしLXCでセットアップするか」とAnsibleを書いてた
    • ユーザーでsystemd自動起動をセットアップしたら動かない。なぜ?と調べたら非特権コンテナだと動かないそう
      • LXCはsystemd周りは、いろいろ制限がわかった次第。当然といえば当然だけど
    • 結局、特権コンテナを作り直してシステムから自動起動するようにしたけど、LXCを普通の仮想マシンのように考えてたらハマるので注意したほうがいいですよ
    • ProxmoxでDocker置くだけで動いたらいいんだけどねー
  • Linuxを理解していないとはまるよね。
  • 以前は全部特権で動くようなDockerばっかりだっただ
  • 最近は非特権のDockerやpodmanがね
  • コンテナは便利だけど、それだけじゃない。便利だけどはまりポイントある。
Apple Silicon の macbookしかなくなってきてつらい
  • もうLinuxかおう。
  • ARMのmacBookのDockerはポータビリティないんじゃないの?
  • VSCode
    • dev containerだとどこにはいっているかわからない。
    • dev containerだと本当にターミナルがどれかがわからなくなる。
    • プロンプトにホスト名をだそう
    • ついでにブランチ名も出そう
  • あきらめてターミナル立ち上げてsshではいろう。
効率化しようぜ

RyzenのAPUでStable Diffusionを動かした

  • Linux ROCm経由でのRyzen 5600G GPUによるStable Diffusion WebUIの利用 #Linux - Qiita: https://qiita.com/asfdrwe/items/1ca2d07777415f399a3b
    • GPUより遅いけどCPUより早いし、ROCmがわりと使えるのがわかったのでお試しにはいいかも

CALM2(CyberAgentのLLMモデル)でLangChainしようとしたら思いの外面倒だったはなし(sperkbird)

  • 会社でLLMの話がいっぱい出るので、じゃあ家で試すかとCyberAgentLM2-7b-chatを動かしてみています
    • CPUでも動くけど遅すぎるので専用マシン組みました(RTX A5000搭載機)
      • ボーナスの時期に新しい領域に手を付けるとこうなります
  • 素の状態で試しにDiscordBotを作ったらすんなり動いたので、RAGしてみたいのでLangChain経由で動かすかー>地獄の始まり、になった
  • まずはMemory機能を実装して継続的に応答できるようにしようとした
    • LangChainのMemoryとCALM2の応答の相性がめっちゃ悪い
    • 頑張ってLangChainのコードを追いかけてMemoryに残すデータをどういじったらまともな応答するかを調べて実装してた
    • ネットで調べても出ないのでこれQiitaとかZennの記事にできるやつなのでは・・・?<イマココ
  • とりあえずLangChain経由で過去情報を見ながらやり取りができるようになったのでこれからRAG周りの実装予定
  • ↓のYouTubeは参考になります。
  • Speakerbirdは会社では前提を説明したうえていつもどおり趣味であそんでいます。
  • よくできる説明だけど、その説明をした場合、説明にでてくる単語をひろって勝手に解釈して質問が大変になることがある。
  • できることだけいった方がいいこともある。夢がひろがりすぎる。
  • 非IT系の会社はできるできないにしか興味がない
  • 売っているRAGアプリを買えばいいんじゃないか
  • 最終的に全部自前でJarvisみたいなやつ作りてぇ!
  • ボイスボックスで応答してくれるのはいいかもしれない
  • インプットをどうするか、意味のある応答をしてくれるLLMを生成するのが難しい。
  • 精度のよいAIを求めるなら、有料のAPIの方がいい
  • パラメーターを増やすと、メモリが必要になってグラボがたいへんなお値段になる。

AppVeyorでchocolateyパッケージを再生成させようとするとエラーにはまっている(223n)

-Encoding
ターゲット ファイルのエンコードの種類を指定します。 既定値は unicode です。

このパラメーターに使用できる値は次のとおりです。

ascii ASCII (7 ビット) 文字セットを使用します。
bigendianunicode ビッグ エンディアンバイト順で UTF-16 を使用します。
default システムのアクティブなコード ページ (通常は ANSI) に対応するエンコードを使用します。
oem システムの現在の OEM コード ページに対応するエンコードを使用します。
stringunicode と同じです。
unicode リトル エンディアン バイト順で UTF-16 を使用します。
unknownunicode と同じです。
utf7 UTF-7 を使用します。
utf8 UTF-8 を使用します。
utf32 リトル エンディアンバイト順で UTF-32 を使用します。
choco -v;
Caption        : Microsoft Windows Server 2012 R2 Datacenter
OSArchitecture : 64-bit
Version        : 6.3.9600
Name                           Value
----                           -----
PSVersion                      5.1.14409.1018  

(小ネタ)前回あった、ファイル共有問題が一段落?しました

  • 前回まで

    • プロバイダーから情報開示請求が届く
    • 調べてみると届いた時点で詰んだ状態に
    • 請求相場は1作品33万、複数作品77万
    • 1件開示請求が来た時点で、同一企業の別作品、別企業から追加で請求が来る可能性が高い
    • 裁判、刑事に発展した場合子どもたちにも大きな影響が
  • ファイル共有で開示請求された問題が一段落しました。

  • 話して良いのか悩む結末になりました。

  • 事実上の踏み倒しが可能

    • ひろゆき?

(小ネタ、前回のネタです)手元のドキュメントをOpenAIで自然言語検索させるものを(もりや)

  • Flowiseを使ったドキュメント検索の作例があったのでやってみました

    • GPT3.5系でも十分な精度がでるので案外使える
    • ドキュメントの数でトークンがアホほど増えるので万能ではない
    • どのドキュメントから引用した、が分からない
    • 日付別で複数のドキュメントがある場合、優先度を変えれない
  • OpenAIAPIのEmbedとChromaDBを単独で使用すると色々問題解決出来る

    • ChromaDB側でベクトルデータにmeta情報を内包出来る
    • metaを絞り込み対象にすることで
      • 日付の絞り込み、部署、グループで絞り込み等が実現できる
    • Chat形式にしなくていいなら、自然言語ベースのファイル検索・文書検索が出来る
    • ベクトルDBの検索が非常に高速なので、検索自体は物凄く早い
    • 作る必要のある機能がかなり多いので、実際にサービスで維持するが面倒になると思います。

(小ネタ)非IT会社でITの話をするしたとか(sperkbird)

  • OJTをやるときにテクニカルより、思想?方針共有から始めてみたらいいかも
  • イベントを企画したので座談会形式でやったら予想以上に受けが良かった
    • 社員のITリテラシー向上のためにイベント実施するときにセミナー形式だとめんd(ry・・・
    • ある程度ネタは出すけど参加者間でも話してもらったらいいじゃん
      • 姫路IT系スタイルに近づけて実施するかー
      • いきなり参加者に喋らせるの厳しいかな?と思ってたけど案外好評だった

(小ネタ)MS Edgeのアップデートで急にもろもろ変更入って問い合わせ地獄になった話(sperkbird)

  • MS Edgeがアップデートでデフォルト自動HTTPS試行するようになってる?
    • HTTPのページでも一旦HTTPSで繋いでみてNGならHTTPにもどるやつ
    • CASEとか使ってるとCASEがHTTPSエラーをHTTPS 200/OKで返事する
    • エラー画面がユーザーに表示される
      • なんかページ見えないんですけど!!
  • 完全に相性問題だけどやめてくれぇ(By情シス)
  • 最近、読んだ本。会社が理不尽なことをしてるので失われた30年が起こったという話

もりやさんのYouTube動画が2万再生

告知

イベント名(開催日時)

(イベントの概要をここに書く)

  • 1月はオフライン開催なので開催後に新年会やりましょう!
    • いつもやってますが、名目上・・・