/// BANGBOO BLOG ///
■22/4/23 11:00AM
Goo ana 4
Google Analytics 4 ガイド – アクセス解析ツール「Google Analytics 4」の実装・設定・活用のための情報サイト (ga4.guide)
GA4代替のアクセス解析ツール候補、あるいはユーザーのデータをどこに預けるべきか - makitani.com
トップページ - GA4 Quick.com (and-aaa.com)

Xゲーム千葉見に行ったが、時間の都合上すぐ引き上げた。なお練習走行をゲート隙間から見れたが、ババババとレブしてる爆音とともに、ヘルメットだけが左右にスー―っと移動しているのだけが見えた。ヘルメットだけが移動する様はシュールだなと思た。オワリ

[Click for image]

■なんかやってくれる系のWebサービス
Bard へようこそ (google.com)
Microsoft Bing の Image Creator
パープレキシティ
Bing
Chat GPT(文章生成)
誰でもブラウザで簡単にAI作曲。AIボーカルも入って1日5曲まで無料で作れるSongR BETA登場 | DTM (dtmstation.com)
Jasper(文章生成)
quillbot ai(文章生成)
StoryLab(文章生成)
Tweet Hunter(SNSコンテンツ作成)
Repurpose IO(SNSマルチ投稿)
Timely(ビジネス)
fireflies
Dream by WOMBO(画像生成)
removebg(背景削除)
petalica paint(絵を着色)
YouTube Summary with ChatGPT Chromeの拡張機能でYoutubeの音声を一瞬で文字起こし
ChatGPT内蔵の海外激ヤバサービスまとめ10選!! | 株式会社SaaSis

ASCII.jp:画像生成AI「Midjourney」の始め方・使い方 (1/3)
ASCII.jp:画像生成AI「Midjourney」でLINEスタンプを作ろう (1/3)
画像生成AI「Midjourney」の勘違いによる出力結果
ドラッグするだけで自由自在に画像編集できるAIツール「DragGAN」
雑コラをAIでリアルにする!|Katsushiro Koizumi (note.com)

■GPTプロンプト
ChatGPTに組織の価値観を読み込ませて、マネージャの代わりに論点出しさせる (newspicks.com)
ChatGPTに要件定義をお願いしたらハンパなかった | DevelopersIO (classmethod.jp)
Chat GPTの完全な上位互換!Bing AIの面白い使い方まとめ|梶谷健人 / Kent Kajitani|note
「ビジネスメールでも送信ボタンを押すだけ」情報伝達部分ってそんなにない
深津さん考案「深津式汎用プロンプト」でChatGPTが劇的に使いやすく
ChatGPTをより有効的に使う為のテンプレートがまるで呪文「検索エンジンでキーワードを捏ねるのと似てる」
新しい清涼飲料水の商品企画の例
ChatGPTをRHELの運用に使えるか? いろいろためしてみた。 - 赤帽エンジニアブログ (hatenablog.com)
婚活アプリでChatGPTに代筆させてる話 (hatelabo.jp)
コピペOK!ChatGPT×英語学習に使える「深津式プロンプト」 (thepast.jp)
ChatGPTに感情回路を埋め込んだら、やべぇ感じになった|深津 貴之 (fladdict)|note
 エヴァのMAGIシステムをGPT3で作ってみた|深津 貴之 (fladdict)|note
VSCodeにChatGPTの拡張機能を入れてコードレビューやバグを発見してもらう - Qiita
Chat GPT暗記ツール。覚えらない単語30個指定して「ショートストーリーを作って」
GPT-3 API を使って AI WAF を作る - まったり技術ブログ (motikan2010.com)
シェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくった
AIにコードまるごと解説してもらうと、界王拳100倍すぎる件
雑なプロンプトでも勝手に高品質になる
ChatGPTで競合調査やKPIの設定をやってみよう【海外記事メモ】|やました|note
ChatGPTにマインドマップを作ってもらったら理解速度が爆速になる件|Abiru|note
Swift未経験の医師が、ChatGPTを使って30分でiOSアプリを作った話|Shohei|note
【ChatGPT】個人的お気に入りプロンプトまとめ (zenn.dev)
【ChatGPT】これだけ覚えればOK?ゴールシークプロンプトが誰でも使えて最強すぎた|Masaki KANAI|note
AIに「お前のところの営業担当、マジでクソだ、二度と顔見せんな。替えろ」をメールの文章に変換してもらったら超実用的だった - Togetter
ChatGPTで無料で学べる『英会話AI』の作り方(神田敏晶) - 個人 - Yahoo!ニュース
ChatGPTを使ってDDLからER図をすばやく作成する - Taste of Tech Topics (hatenablog.com)
いいよ↓
話題の「ChatGPT」こんなに使えたら本当にすごい! 目からウロコの使い方を解説|GPTs活用事例も | 【レポート】Web担当者Forumミーティング 2023 秋 | Web担当者Forum (impress.co.jp)

【Google Bard】伝説が始まりそうなヤバい使い方10選 | 株式会社SaaSis

■GPT系API利用
ChatGPT APIを使ったLineBotの作り方、人格の与え方まで
ChatGPTを使って自分のはてなブログとチャットするツールを作った - $shibayu36->blog;

■ChatGPTのハルシネーションChatGPTはクエリに最も一致すると思われる単語の文字列を予測することで機能するこれはロジックを検討したり、 吐き出している事実の矛盾を考慮したりする理由がない知らない、分かりませんとChatGPTは言わないことになる→幻覚を出してくる
避け方 自由記述式より多肢選択式。できるだけ情報を与える ロールを割り当てると、より多くのガイダンスが与えられることになるので良い 欲しいものと欲しくないものを伝える AI温度設定を高るとランダム性が高くなり創造的な幻覚的な返答の可能性が高まる
駄目なプロンプト「生産性について書いてください」適切なプロンプト「中小企業にとっての生産性の重要性についてブログ記事を書いてください」駄目なプロンプト「犬のハウス トレーニング方法について書いてください」 適切なプロンプト「プロのドッグトレーナーとして、3か月の新しいコーギーを飼っているクライアントに、 子大のハウス トレーニングに必要な活動についてメールを書いてください」駄目なプロンプト「落ち葉についての詩を書いてください」適切なプロンプト「落ち葉について、エドガーアランポーのスタイルで詩を書いてください」駄目なプロンプト「この記事を書約してください」適切なプロンプト「この記事の要約を500語で書いてください」適切なプロンプト「例)入力: 2023-04-02 T16:10:00Z3 日を追加し、次のタイムスタンプをMM/DD/YYYY HH:MM:SS形式に変換しますと下記になります。出力:  04/05/2023 16:10:00下記の入力に3 日を追加し、次のタイムスタンプをMM/DD/YYYY HH:MM:SS形式に変換して下さい。 入力: 2023-03-01 T11:10:00Z」
Comment (0)

■22/4/17 9:54AM
I drive or test driven
Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming.
TDD is dead. Long live testing. (DHH)

I need to hire new techniques to help me solve many of my problems during programming: The pain will fade. Farewell TDD, old friend.
RIP TDD from Kent Beck

そもそもテスト駆動開発の最後のところに、自分で考えてやれって書いてんなぁ、やらんでもええしって。そらそーやろ、自分で考えさせろや、やらんと分からんやろやらせろや

==============
終了ーーーーとなりそうだが変な常識
両方でドリドリになる、まとめて行こう

Assertするだけ?、何か一部しかテストでけへんの?
 テストをコード化するのはいい
 テストファーストとテストドリブンとユニットテストは違うらしいで
 javascriptとかテストできんの?

ビジネスをソフトウェアでするだけ
 ソフトウェアを捏ねくりまわしたいのではない

他人が使うソフトウェアなら必要、自分も使うソフトウェアなら不要では
 自分でも使うくらい有用なものであるか
 品質をどこで担保するか、機能だけなのかUXなのか
 スーパープログラマには本質の部分にもっと時間を使って欲しい、死ぬ方が早い
 あんまり機能をリファクターする機会がないかも

++++++++++
ソフトウェア開発アプリケーションを超シンプルにするとリリース回数が多くなる(質とスピードを上げるにはリリース回数)
アプリの分散と並列も可、競争力はオリジナリティ、政治力か真理性か
原体験、初期衝動は、グラスルーツかグルーピーか

==============

新しい(変化する)事は良いことみたいな感じでやってきたところもあるが、今時変化っつーたら怪しいわな。不要な変化を押し付けられたり、本当に変えるべきところを隠すために変化してたり。コンサバでええかもな

==============

リーダブルコードの要点整理と活用法をまとめた - Qiita
これはいいな
「良いコード」を書くために意識している17のTips まとめ (zenn.dev)
これも
すべての新米フロントエンドエンジニアに読んでほしい50の資料 - Qiita
知らん事結構ある、keep them simpleだが知っておかんとな、下とか
オリジン間リソース共有 (CORS) - HTTP | MDN (mozilla.org)
JSON Web Token(JWT)の紹介とYahoo! JAPANにおけるJWTの活用 - Yahoo! JAPAN Tech Blog
Overview - Chrome Developers

[Click for image]

Comment (0)

■22/3/30 7:59PM
GCP runs off functions pubsub on scheduler
run:言語自由、リクエストタイム60分functions:リクエスト9分、関数をデプロイ
  gke auto pilot mode:制限がなくなる
Cloud Run で作るサーバーレス アーキテクチャ 23 連発 - これのときはこう! (zenn.dev)
■RUNhttpリクエストでコンテナを呼び出すGoogle Cloud Run を使うまで - Qiita

■ハンズオン(run)
クイックスタート: ビルドとデプロイ  |  Cloud Run のドキュメント  |  Google Cloud
クイックスタート: Cloud Run に Python サービスをデプロイする  |  Cloud Run のドキュメント  |  Google Cloud
基本はFlaskのhttp responseを返すコードである必要があるみたいだ
 Scheduler手動 > Pubsub > Eventarc > Cloud runのでキックで実行がいいローカルやterminalなどで作成しcmdでレジストリに入れるが、~/unco で下記作成 Dockerfile .dockerignore main.py
コンテナイメージにパッケージ化しContainer Registry にアップロード gcloud auth application-default login
 gcloud run deploy (対話型でデプロイまでできるが、SAはデフォルトになる)
 gcloud builds submit --tag gcr.io/bangboo-run/unco (ビルドのみ、手動でコンソールでSAを指定しデプロイする)
  gcloud builds submit --pack image=gcr.io/bangboo-run/unco ならDockerfile不要らしいコンソールでデプロイ(trigger/permission)-新ver更新のときTagを付けなおす? 設定allow all traficとAllow unauthenticated invocations、権限allUsersにCloud Run Invokerではブラウザでも上手行く 設定allow all traficとrequire auth(IAM)、権限allAuthenticatedUsersにCloud Run Invokerのとき  IAMが要るのでターミナルから  curl https://unco-zp2aehj5rq-an.a.run.app/ ではIAM要求の場合は駄目  curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://unco-zp2aehj5rq-an.a.run.app/ で上手行く 設定allow internal traffic onlyとrequire auth(IAM)、権限allAuthenticatedUsersにCloud Run Invokerのとき  ターミナルはinternal trafficでないから  curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://unco-zp2aehj5rq-an.a.run.app/ でも駄目インターナルでIAMを使うにはどうする?(同セグメントvpcからcurl bearer、vpc scかpubsubかEventarcだけ、terminalやschdulerは駄目) →IAMを使うならallow all traficでいいのでは、allusersにinvokerを付与しなければいいし
 →怖ければ同セグメントにVMを立ててそこからキック、あるいはScheduler手動 > Pubsub > Eventarc > Cloud runがいい
runのデフォルトのSAは別のrunでも同じSA実行として使い回されるので、別途作成したものを指定したい デプロイをコンソールで実行するとサービスアカウントを指定できる(runのPermissonでそのSAにinvokerを付ける)ブラウザ+IAMをrunで使うにはIAP
 global ip、ドメイン、DNS、証明書、設定allow all traficとrequire auth(IAM)、権限各メールidにinvokerLBはバックエンドにserverless network end groupを選べばいい

/// IAP
IAPを使う場合はトリガーをAllow unauthenticated invocationsにする
 現行だけだそうだが、IAPに全委任するために必要となっている
 つまりIAPはLBが必要なため、Allow internal taraffic and from cloud load balancingとのコンビでトリガー設定をする権限はCloud runのallusersが付き個別のinvokerは不要となり、必要なものはIAP上で付与をする IAP上のWeb app userに Allautheticatedusersを入れると、識別できる誰でも入れてしまう
 アクセスを許可したいユーザのみ個別でweb app userをIAPで付与することIAP で保護されたリソースへのアクセスの管理  |  Identity-Aware Proxy  |  Google Cloud

上は古いのか嘘で特定のユーザだけCloudRunを利用させてたいなら:
 (run)認証ユーザ+(run)内部トラフィックとLB経由+IAPのwebuserの設定が良い
 Cloud Run での IAP の有効化  |  Identity-Aware Proxy  |  Google Cloud Cloud runでIAPを使用するIAP用隠れSAの権限:  プリンシパル: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com  ロール: Cloud Run invokerAllUsersでなく、上記のIAP用隠れSAに権限を振ればよい
===
dockerfileに記載FROM google/cloud-sdk:latest
 PythonモジュールでなくOS側にインストールする必要がありコンテナ化のDockerfileに記載できる
 /// BANGBOO BLOG /// - k8s にDocker記載があるFROM python:3.9-slimENV PYTHONUNBUFFERED TrueENV APP_HOME /appWORKDIR $APP_HOMECOPY . ./#RUN pip install --no-cache-dir -r requirements.txtRUN pip install Flask gunicornCMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
 python requirements.txtでは google-cloud-bigqueryはインスコできるがsdkは無理  main.pyに from google.cloud import bigquery  Dockerfileでイメージでgoogle-cloud-sdkが入ればPythonのsubprocessでgcloud cmdが打てる  Dockerのベースイメージを FROM google/cloud-sdk:latest にして   RUN apt-get update && apt-get install -y \    python3-pip   RUN pip install --no-chache-dir -r requirements.txt  Cloud API client library for pythonを使うにはrequirements.txtに   google-api-python-client

Dockerfileの動作はCloud buildのhistoryで見れるRUN which gcloudRUN echo $PATHRUN who

Cloud runのpython動作はloggingで見るPython 用 Cloud Logging の設定  |  Google CloudGoogle Cloud Logging Python v3.0.0 スタートガイド | Google Cloud Blog
OSの実行ユーザとコンテナ内のユーザを合わせないとファイル読み込み等ができない permission deniedになる Cloud runのそれぞれのユーザが誰なのか分からない(上記でわかるが) Dockerfileに RUN chmod -R 777 /app と入れてしまう
===Cloud Run のトリガーを作成する  |  Eventarc  |  Google Cloud
runとscheduler/pubsubの連携は eventarc triggerの設定が良さそう
これはAudit logに既定のものが記載されると発火されるというもの 設定したrunのサービスのトリガー項目に  google.cloud.scheduler.v1.CloudScheduler.Run.Jobを設定(スケジューラ手動実行ならこれでも連携する)
  google.cloud.pubsub.topic.v1.messagePublishedを設定 (Pubsub経由のEventArcなら)
 色んなAPI有効が必要 クイックスタート: Pub/Sub メッセージを使用してイベントを受信する(Google Cloud CLI)  |  Eventarc
Schedulerとの連携に使う場合、手動実行でAudit logに記載され動くが、cron定期実行ならAudit logがなく動作しない事が分かった
 internal trafficなら Scheduler > Pubsub > Eventarc > Cloud run

■Scheduler
 get で https://run-service-name-.kuso.run.app 0 7 * * 1 毎週月曜の6時 Auth headerに add OIDC token runのサービスにinvokerを付けたSAを指定 5回リトライ/最大リトライ0sで制限なし/バックオフ最小180s最大1h/期間倍5回
  サービスアカウントにCloud service agentロールが必要

===■Run jobs
runはジョブならFlask不要で簡易。だがEventarc-Schedule連携がまだGAでなくできないので単発手動実行用。Cloud Run Jobs を解説する by Kazuu Shinohara | google-cloud-jp (medium.com)クイックスタート: Cloud Run で Python ジョブをビルドして作成する  |  Cloud Run のドキュメント  |  Google Cloud
Procfile作成web: python3 main.py

pipしたいものは requirements.txtに書く
 バージョンは google-cloud-bigquery · PyPIで調べるgoogle-cloud-bigquery==3.3.2
main.py作成コードを書く from google.cloud import bigquery
gcloud auth application-default login run job実行とコンテナのプロジェクトを合わすなら gcloud config set project bangboo-runs 下記は通常不要なようだ
 gcloud auth configure-docker
Buildpackを使用してコンテナをビルド Cloud buildデフォルトサービスアカウントにGCSバケット権限必要 123456@cloudbuild.gserviceaccount.comgcloud builds submit --pack image=gcr.io/bangboo-runs/run_data_to_bq bangboo-runsのコンテナレジストリにrun_data_to_bqができている
Cloud runでジョブを作成gcloud beta run jobs create job-run-data-to-bq \    --image gcr.io/bangboo-runs/run_data_to_bq \    --task 1 \    --set-env-vars SLEEP_MS=10000 \    --set-env-vars FAIL_RATE=0.5 \    --max-retries 0 \    --region asia-northeast1(gcloud beta run jobs create --helpで見るとenv-varのハンドルは何もないのでコードでエラースローする必要がありそう、そこでスリープとか使ってエラーを吐くと、リトライはしてくれそう。taskを複数にすると同時に何個も動く)
ローカルでテストdocker run --rm -e FAIL_RATE=0.9 -e SLEEP_MS=1000 gcr.io/bangboo-runs/run_data_to_bq
Cloud runでジョブを実行gcloud beta run jobs execute job-run-data-to-bq

============
■Flask
Flaskへようこそ — Flask Documentation (2.0.x) (msiz07-flask-docs-ja.readthedocs.io)
とほほのFlask入門 - とほほのWWW入門 (tohoho-web.com)
Flaskの基礎 - 闘うITエンジニアの覚え書き (magata.net)from flask import Flask #モジュール読み込みapp = Flask(__name__) #Webアプリ作成@app.route("/", methods=["GET","POST"]) #エンドポイント設定(ルーティング)def index():if __name__ == '__main__': #Webアプリ起動  app.run(debug=True)
request.form.get('name', None) 第2引数にデフォルト値入れられるらしい

============
■functions
コンソールでコード書いてもデプロイエラーになると入力分が消える糞
 テキストで書いてコンソールにペーストしてやった
 開発環境はローカルにすべきだろうな
 【Python】Cloud Functions ローカル環境で開発 デプロイ | のい太ろぐ (noitalog.tokyo)
 Cloud Functionsのローカル開発環境にFunction Frameworkを使用する (rhythm-corp.com)functionsもhttpで初めに実行される関数はFlaskのflask.Requestオブジェクトを受取る
 PubsubトリガーとかEventarcトリガーもあるようだ
  pubsubトリガーならinetrnal traffic onlyでOKだが、httpsはall traffic必要requirementsは必要?標準ライブラリならimport文を本体に書いていれば良い
 pprint.pprintでエラー、requirementsの場合PyPIで調べてバージョンも書こう一時ファイルは/tmpというDIRであるがメモリーに保持されるテストでJSONを書く場合はキッチリ書く(文字はダブルクォート等){"test" : "aaa"}functions invoker等のIAMはプロジェクトレベルではなく各functionsに対しての設定が必要そうfunctionsのデプロイ時にinternal traffic や allow all trafic等の変更ができる
名前の変更や連携変更はfunctions再作成が必要で面倒

functions では gcloud cmdが打てない、SDKがないから クライアントライブラリでは? > 非力そう、、cloud runならSDKでDockerしgcloud cmd打てる
 Cloud クライアント ライブラリ  |  Cloud APIs  |  Google Cloud

Functionsはデフォルトで環境変数を持っていてimport os > os.getenv()で取得できる環境変数の使用  |  Google Cloud Functions に関するドキュメントENTRY_POINT 実行される関数、GCP_PROJECT 現在のGCPプロジェクトIDとか

■pubsub
GCP - Pub/Sub サービス概要 - Qiitatopicという入れ物 メッセージがpublish投入される(コンソールでも作れるのでinternal trafficのトリガーにできる) subscriptionでTopicのデータ取得状況を管理 subscriptionからsubscribeでメッセージの取得メッセージは重複する仕様 Topicにメッセージを入れると勝手に紐づけられたアプリが動く  フィルターがあり条件を設定をできるがTopicを沢山作ればいいのでは サブスクのpullはメールボックスみたいな入るだけ  functionsのpubsubで作った指定のTopicにメッセージが入れば動く サブスクのpushも送信メールボックスみたいで送る  functionsのhttpで作ったエンドポイントに送られる
 pullは謎に上手く行かなくなる?pushの方が安定かも  でもトラフィックの種類でpullならinternal traffic OK   pubsub pull -> functions:pull なら internal traficでもOK   pubsub push -> functions:push は http なので internal traficダメ functionsのデプロイ時にinternal traffic や all等の変更もできる例えばRunのTriggerでEventarcをPubsubで設定すれば指定のTopicに勝手にサブスクを作ってくれる

pubsubを使うときはrunとかfunctionsとかインスタンス1つの方がいい べき等性の構成がなければバッチが勝手にリトライされ同時処理が起こる等で面倒pubsubのリトライ無しで、returnで何とかhttp200レスポンスを返す pythonだとmain()でエラーでもtry-exceptで投げてreturnを返すとhttp200になる ackを返す時間デフォ10sであり処理が長いと駄目、-600sと長くするといい
pubsubはbase64ででコードするのにimport base64pubsubはjsonでデータを持っていてimport json
Comment (0)

Navi: <  3 | 4 | 5 | 6  >
-Home
-Column [126]
-Europe [9]
-Gadget [76]
-Web [122]
-Bike [4]

@/// BANGBOO BLOG ///