May 9, 2024
Pubsub
■pubsub
アプリで簡単にPubsubにパブリッシュや、サブスクもできるので、アプリ間の連携にPubsubが使える
• 非同期処理(画像処理とか重めのもの
• IDの種類 (message id, subscription id, topic id, ack id, project idあたりがアプリでは使われるっぽい
※ack idはpull時のみでPushのときはhttpステータスコードが200でackとなる
トピック(メッセージのパブリッシュ先)
• スキーマ/外部アクセス許可/リテンション/GCS/バックアップの設定がある (Push/Pullの設定はない)
• パブリッシュ側のベストプラクティス (JWT)
サブスクライバのPushとPull (PushはEndpointが必要、デフォルトはpull)
• at-least-once (少なくとも1回) 配信を提供します
• 同じ順序指定キーを持ち、同じリージョンに存在している場合は、メッセージの順序指定を有効にできます
• サブスクライバーが31日間未使用、またはサブスクリプションが未更新の場合、サブスクリプションは期限切れ
pushはhttpsが必要?
• push エンドポイントのサーバーには、認証局が署名した有効な SSL証明書が必要でhttps
• Cloud run でEvent Arcを設定するとサブスクが自動作成されrunのデフォルトhttpsのURLが使われるが、これはPullよりPushで安定した
• CronバッチならPullで安定するのでは?大量リクエストはPull向きとある(Pullは失敗処理込みの話かも知れん)
トピックのリテンション:デフォルトなし、最小値:10分、最大値:31日
サブスクのリテンション:デフォルト値:7日、最小值:10分、最大値:7日
pubsub ack期限(Ack Deadline)
•デフォルト60秒> 設定10分>ack延長で最大1時間まで伸ばせると思われる
•exactly onceを設定しなければ期限の延長は保証されない
•ack期限を過ぎる、あるいはNackを返す場合、メッセージは再配送される
•ack応答期限の延長は99パーセンタイル(上位1%の値よりも小さい値のうち最大の値)で
modifyAckDeadlineを返し、延長してもMaxExtension (ack期限を延長 する最大値) 60minまでと思われる
メッセージの再試行を強制するには
•nack リクエストを送信
•高レベルのクライアント ライブラリを使用していない場合は、ackDeadlineSeconds を0に設定して modifyAckDeadline リクエストを送信する
•pullなら設定できる。他には、Cloud Dataflowを組み合わせる(プログラムコードでDataflowを使う感じかり、あるいはmessageについているunique idを利用して、KVS を用いたステート管理をして自前で重複を排除する
•再配信は、メッセージに対してクライアントによる否定確認応答が行われた場合、または確認応答期限が切れる前にクライアントが確認応答期限を延長しな かった場合のいずれかか原因で発生することがある。
※exactly onceはエラーでも再配信でPubsubパニックしないようにしたいために使うものではない?
pubsubはトピックにPublishされたメッセージをDataflowに引き継げる
•Apache Beamのウィンドウ処理とセッション分析とコネクタのエコシスエムがある
•メッセージ重複の削除ができる
•pubsub>dataflow>BQやGCS: この流れでログ等をストーリミングで入れ込める
BQサブスクリプション (PubSubはBigQuery Storage Write API を使用してデータを BigQueryテーブルに送信、GCSサブスクもある)
サブスクライバーApp側のコードでのフロー制御によりちょっと待てよのトラフィック急増対応
デッドレタートピック (配信試行回数が見れる)やエラーでの再配信
• Pub/Subサブスクリプションにデッドレタートピックを設定しておくと、一定の回数再送信が失敗したメッセージの宛先がデッドレタートピックに変更され貯められる
メッセージのフィルタ、同時実行制御により多いメッセージに対応
Pubsubをローカルでエミュレートする
pubsubのスナップショットやリテンション
トピックにリテンションを設定しスナップショット作成> 過去のサブスクしたメッセは見えなさそう
サブスクにリテンションを設定しスナップショット作成> 過去のAckしたメッセは見えなさそう
スナップショットでどう使うのか?
キューがたまっているときに撮るものと思われる。またシーク時間のポイントを設定する意味がある
スナップショットとシークを使いこなして特定期間の再実行を行う機能
スナップショットで再実行する
シークは指定時間か最後のスナップショット以降のサブスク再実行(実際pushでrunが再実行された)
Pubsubにどんなメッセージが入ってきているか確認する方法
pull形式ならAckしなければpullボタンで拾い見れる (トピックでパブリッシュしてサブスクでPull し見る)
トラブルシュートはログを見るかデッドレタートピックかGCSバックアップを見る?
デッドレターキュー(ドロップしたものの確認と救済?)
サブスクでDLQのONしデッドレタートピックを設定し転送する>GCSにもバックアップできる
DLTでメッセージ(実行済みOR未実行)の再生
データ形式:スキーマを使うか、スキーマなしならdataで取得できる
from google cloud import pubsub_v1
from avro.io import DatumReader, BinaryDecoder
from avro schema import Parse
project_id="your-project-id"
subscription id="your-subscription-id"
subscriber pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(project_id, subscription_id)
avro_schema = Parse("""
{
"type": "record",
"name": "Avro".
"fields": [
{
"name": "ProductName",
"type": "string",
"default":""
},
{
"name": "SKU",
"type": "int",
"default": 0
}
}
def callback(message):
print(f"Received message: {message}")
reader = DatumReader(avro_schema)
decoder = Binary Decoder (message.data)
avro_record = reader.read(decoder)
message_id=message.message id
message.ack()
print("Message ID: (message_id}")
product_name = avro_record['ProductName']
sku= avro_record['SKU']
print("Product Name: (product_name}")
print("SKU: (sku}")
subscriber.subscribe(subscription_path, callback=callback)
def callback(message):
print("Received message: (message)")
data message data
message_id=message.message_id
message.ack()
print("Date (data)")
print("Message ID: (message_id)")
Posted by funa : 12:00 AM
| Web
| Comment (0)
| Trackback (0)
April 27, 2024
HELM
helmはコマンド一発だが生k8sはマニフェストファイルの数だけkubectl apply(delete)を繰り返す必要がある
helm upgrade chart名 -f 環境毎yamlファイル
文法覚えるより繰り返した方がええんじゃない
helmはテンプレートフォルダ以下がマニフェスのようなもの
ループ処理が記述可、関数が使える、関数を作れる
helm create <チャート名>
templates/ マニフェスト (テンプレート)
env/ 自分で作成するが環境毎に異なる値の入る変数を記述
┣dev.yaml
┣prd.yaml
values.yaml 繰り返す値等 (dev/prd.yamlが優先され上書きされる)
helm upgrade-install <release名> <Helmチャートの圧縮ファイル名>
●●helmテンプレートの文法 (.ファイル名.親.子で表す、.はルートオブジェクト、Valuesはvaluesオブジェクト、$変数:=値、ymlインデントはスペース2つ)
●templates/deployment.yaml
{{ $env := Values.environment }}
{{ $serviceAccountName := Values.serviceAccountName }}
image: {{ .Values.deployment.image }}:{{.Values deployment.imageTag }} //nginx:latest
serviceAccountName: {{ $serviceAccountName }}-{{ $env }} //sample-sa-dev
↑
●values.yam
deployment:
image: nginx
imageTag: latest
serviceAccountName: sample-sa
●env/dev.yaml
environment: dev
●●helmテンプレートのループ (range~end)
●templates/es.yaml
spec:
nodeSets:
((- range .Values.es.nodeSets }}
name: {{ .name }}
config:
node.attr.zone: {{ .zone }}
{{- end }}
↑
●values yami
es:
nodeSets:
- name: node-a
zone: asia-northeast1-a
- name, node-b
zone: asia-northeast1-b
●●helmテンプレートのIF (if-end)
●templates/ingress.yaml
((- if .Values.ingress.enabled -))
apiVension: networking k8s.io/v1
kind: Ingress
{(- end }}
●env/prd.yaml
ingress:
enabled: true
●env/dev.yaml
ingress:
enabled: false
●●helmテンプレートの複数値 (toYaml、nindentは関数)
●templates/ingress.yaml
metadata:
annotations:
{{- toYaml .Values.ingress.annotations | nindent 4 }}
●values.yaml
ingress:
annotations:
kubernetes.io/ingress.global-static-ip-name: sample-ip-name
kubernetes.io/ingress.class: "gce-internal"
●●その他
中括弧内側の前後にダッシュ {{--}} をつけることができ、前に付けた場合は前の半角スペースを、 後ろにつけた場合は改行コードを取り除く
hoge:
{{- $piyo := "aaa" -}}
"fuga"
/* */で囲まれた部分はコメント構文
{{-/* a comment */ -}}
●●_helpers.tpl https://qiita.com/showchan33/items/e95d3a6370e7c123962a
helm create [チャート名]で自動でtemplates ディレクトリに_helpers.tplが作成されるが、 partialsやhelpersと呼ばれる共通のコードブロック (defineアクションで定義されtemplateアクションで呼び出される)や、ヘルパー関数などが定義される。
_アンスコ始まりのファイルは、他のテンプレートファイル内のどこからでも利用できるという共通部品。 これは内部にマニフェストがないものとみなされる。
values.yamlが差し替え可能な変数、ローカル変数が定義したTemplateファイル内でのみ使える変数 _helpers.tplはチャート内で自由に使える変数
●templates/_helpers.tpl
{{- define "deployment" -}}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: {{.name }}
name: {{ .name }}-deployment
spec:
replicas: {{ .replicas }}
selector:
matchLabels:
app: {{ .name }}
template:
metadata:
labels:
app: {{.name}}
spec:
containers:
- image: {{ .image }}
name: {{ .name }}
{{- end -}}
●values.yaml
nginx:
replicas: "1"
name: nginx
image: docker.io/nginx:1.25.1
httpd:
replicas: "3"
name: httpd
image: docker.io/httpd:2.4.57
●deployment-nginx.yami
{{ include "deployment" .Values.nginx }}
GKEクラスタを作成しておく?
kubectlでArgo adminとシークレット作成?
brew install argocd
Argo cd設定ファイルリポジトリのclone
argocd cluster add <context name>
argocd repo add <repo url> --ssh-private-key-path ~/.ssh/id_rsa
argocd-configuration に設定を追加
argocd-insallation に設定を追加
argo cd上からinstallationをsyncする
argocd login --grpc-web --sso dev-argocd.dev.bb.com
===
ArgoはSettingsにリポジトリ、クラスター、プロジェクト、他にUserの設定
アプリ設定でhelmのパス等を指定(Argo内部でhelm upgradeでなくkubectrl applyに変換しでやってもらえるお作法:helmコマンドのインストール不要でArgoでhelm文法が使える)
Posted by funa : 11:27 PM
| Web
| Comment (0)
| Trackback (0)
March 29, 2024
Audio I/F
Posted by funa : 10:32 PM
| Gadget
| Comment (0)
| Trackback (0)
March 9, 2024
漬物石mpc > モンキーロックジェイルブレイク
mpc live ii retro
時間無いし漬物石になるだけだがもう売ってないのが余計に欲しい、mpc1000は黒だったが(15年位前!!)、やっぱり思い入れ(30年前!!)のmpc2000とか3000とかの色の方がインテリアにいいなぁ、くそッ(ミニマムで必要十分でコレで良いんだよ、ツマミとか少ない方が覚える事がすくなくてな、PCベースでもいいと読んでたのが裏目だな->One(+)の方が質感が好みだが赤かakaiだけに!?)
/// BANGBOO BLOG /// - Net CorruptionBeatsはフリーやん
製品情報:MPC Beats:AKAI professional (akai-pro.jp)- 三>preference
samplerのInやMidi I/Oが設定できる
- trackの編集
トラックmodeでどのトラックを編集するか決めてHomeで曲データ編集
トラックにタイプがありドラム/キーボード/プラグイン/Midi/Clip/CVがあり選択できる
ドラムにはパッド打撃やサンプルがアサインされている
プラグインは音階のヤツがアサインされている(キーボードやMidiも鍵盤がでる)
- 音変更
トラックにプログラム(音セット)がアサインされていてプログラム変更で一括変更する
パッドに音をドラッグで個別変更
- chopの利用
Q-links>Chop>Chop to>Manual/Thredshold/Regions/BPMで
マニュアルだと:
ExtractNewSamplesでNewProgramで新プログラムが良さそう
パッドを順におしてアサイン
マウスで位置調整やダブルクリックで分割数を増減し調整
単音だと:
Padで音を選ぶ>Extract(場所調整や長さを変えるにはコレ)
- Midiキーボード
手持ちのキーボードがusb midiでPCに接続するだけ
- Audio I/O不要
Samples窓にファイルをドラッグすればwav/mp3等を使える
- Sampleのピッチ/スピードの変え方は?
1)Sampleエディット画面でPitchShiftやTimeStretch
2)16levelなら:
Padで音を選ぶ>16level,Type=tune,original padで基本の高さを選ぶ>16Padにアサイン
- テンポを合わす
Sampleを流してTapを叩くとグローバルテンポがSampleに合うもので設定できる
サウンドコントロールパネル>録音>オーディオI/Fのプロパティ>聴く>このデバイスを聴く にするとオーディオI/Fで入れた音をPCのOSだけで聞ける
Posted by funa : 02:48 PM
| Gadget
| Comment (0)
| Trackback (0)
February 20, 2024
駐輪禁止
モダンか何か知らんが、豚玉かイカ玉で十分じゃ
Prohibition of parking bike in Kobe
■リンは腎臓に悪い
1)茹でて湯は捨てる
2)大豆などの植物性食品からたんぱく質を摂取する
(大豆の有機リンはフィチン酸で人間の腸からは吸収されない、肉や魚はリンが多い)
Posted by funa : 10:03 PM
| Bike
| Comment (0)
| Trackback (0)
December 8, 2023
竹書房 stardust
裁判で「ツッコんでもうた、ボケやのにっ」てボケる
そしてデブキャラで復活、笑われるキャラっていうのが俺の見立て
==========
■ユダヤの商法 藤田田
合理、契約、ケチ、疑い深い、信用、仕事お金至上
金を巻き上げる/お金は奪い合い
取引額を倍々に増やし現地を耕した後に進出して直売りに変更等エグイ
日本の大企業の社員は自分の力を過大評価し世界では通用しない
食を楽しむ
宗教上休みをきっちり取るし、食を楽しむやイイ女を囲ったり楽しんでる
風呂でシッカリ体を洗い清潔
金持ち、女と口、好きなものより苦手なものを売った方が割り切れる
ターゲットは金持ち/女性を狙う等、これは確実に見習いたい
田さん陳さん東大でGHQに通訳アルバイトし19に弟子入りし銀座のユダヤ人になった
買い切りかリピート購入/サブスクか、買い切りは長く続ける商売でなく店を畳んで違う商品をやる
広告投資管理7割:年間に支払う平均金額(1年LTV)>客一人獲得に掛かる広告費上限(CPO)
■確率思考の戦略論
客引きもバンカーも運転手も世界各国で同じ雰囲気>法則がある
ブランドに対する好意度:preference=ブランドイクイティ+価格+製品パフォーマンス
プレファレンスが高いものはより高頻度で購入される=>シェア
人はそれぞれのカテゴリのEvoked setを持ってる:エビス50黒ラベル30一番搾り20
プレファレンスに基づいたエボークトセット持ち、その中のカテゴリーの購買回数分だけサイコロを振って選んでいるだけ
Preference好意度(ブランドイクイティ+価格+製品パフォーマンス)+Awareness認知+Distribution配荷
年間購入者の全世帯に対する割合=認知率x配荷率x過去購入率xEvokedSet率x年間購入率
年間売り上げ=総世帯数x1年間に買う人浸透率x平均購入回数x平均購入金額
シェア=参入順位xプレファレンスx宣伝費比率x間合い年数
どれだけ競合に比べて宣伝できているかが大きい
次回購入タイミング=平均購入回数xプレファレンス とかデータ化、確率見ていく
差別化して先鋭化しても自社を選んで貰えるとは限らない
差別化でターゲットを絞ってマーケットが小さくなる危険性
ベストセラー>観光大使/政府/首相>人を巻き込みPRに
コーラは原液販売に注力し現地生産フランチャイズにし配荷拡大した
商品棚をその店/客のプレファレンスに合わせ配荷の質を改善
都合が悪くなるとルールを変えてでも勝とうとする西洋人
スポーツマンシップは油断させるプロパガンダでしかない
サイコパス:感情が意思決定の邪魔にならない>選ぶストレス無しに最適判断できる
+人心掌握(
※勝ち馬しか人は選ばない、第一想起にどう入るか、高くても良い大量の広告を打つ
オペを遅くしてでも行列を作る、先着サイコロ無料話題をつくる、ライトが明かる過ぎるとか目立つ店構え
====
多変量解析
消費者の行動を左右する要素は様々だが、「絞り込むと本質的には3つ程度しか残らない」
最も重視すべきは「プレファレンス(相対的好意度)」。次にどれだけ知ってもらえているかという「認知」、その後、消費財であれば製品の手に取りやすさを示す「配荷」、テーマパークであればパークまでの「距離」が続く。企業が重視しがちな品質や技術力といった「パフォーマンス」の優先順位は低い。「新機能を搭載しただけでは、消費者に響かない」。相対的好意度、認知、配荷のどれかが足りないと、どんなにいい製品も埋もれてしまう。
商圏
テーマパーク業界の失敗例を調べ全国で閉園になった約50の遊園地を見ると、すべて需要を上回る投資をしていました。 需要は商圏の大きさやその人口を調べると分かります。明らかにお金を使ってはいけないところに投資をしていたのです。
可視化
思考力に強みを持つ人を「T(=Thinking)型」、人とつながる力や伝える力が強い人を「C(=Communication)型」、人を率いて動かす力を強みとする人を「L(=Leadership)型」として、3つに分類し可視化。可能性の高い分野に資源を集中。
====
国の大学教育の目標人材「思考力、判断力、俯瞰力、表現力の基礎の上に、幅広い教養を身につけ、高い公共性、倫理性を保持しつつ、時代の変化に合わせて積極的に社会を支え、論理的思考力を持って社会を改善していく資質」
↓
1)分野を超え先端の学問を学び時代の変化に合わせて積極的に社会を改善していく人材
2)高度な教養と専門性がある人材
3)高い実務能力がある人材
米海軍で屈指の潜水艦艦長による最強組織の作り方
リーダシップ:価値と潜在能力を伝え刺激する(協力を支配で操る)
担当者の方がが細かいところまで詳しく知っている
権限を与えるとは支配と同じ
目標と裁量は両立するか
リーダの技量が組織の業績か、メンバーの技量ではないのか
疑問:活かすには命令でなく創意工夫で実務を行った方が良いのではないか
結果:残留率up、組織状態better
要るもの:権限だけでなく自由を与える
やる事:mtgでなく確認会(聞く方の準備や参加が必要)、命令でなく確認し許可取り
●やったこと
委ねるリーダーシップ
権限を与える
命令を避ける
命令するときは、乗員が異を唱える余地を残す
やるべきことを確認する
会話をする
上官と部下が学びあう機会を設ける
人を重視する
長い目で考える
いなくなっても困らない存在を目指す
訓練の回数より質を重視する
正式な命令以外でも、会話を通じて情報交換する
つねに好奇心を持つ
意味のない手順や工程をすべて排除する
監視や検査を減らす
情報を公開する
●やらなかったこと
命じるリーダーシップ
権限を握る
命令する
命令するときは、 自信を持って絶対だと明言する
やるべきことを説明する
会議をする
上官が部下を指導する機会を設ける
技術を重視する
目の前のことを考える
いなくなったら困る存在を目指す
訓練の質より回数を重視する
明瞭簡潔な言葉のみを使用し、 正式な命令以外の言葉を交わさない
つねに疑いを持つ
手順や工程の効率を改善する
監視や検査を増やす
情報を公開しない
-支配からの解放
┣支配構造の遺伝子コードを見つけ出して書き換える
┣態度を変えることで新しい考え方をもたらす
┣早めに短く言葉を交わし、仕事の効率を高める
┣ 「これから~をします」という言い方を導入し、命令に従う だけだったフォロワーを自発的に行動するリーダーに変える
┣解決策を与えたい衝動を抑える
┣部下を監視するシステムを排除する
┗思っていることを口に出す
-優れた技能
┣直前に確認する
┣いつどこでも学ぶ者でいる
┣説明するな、確認せよ
┣同じメッセージを絶えず繰り返し発信する
┗手段ではなく目標を伝える
-正しい理解
┣ミスをしないだけではダメだ、優れた成果をあげよ
┣信頼を構築し部下を思いやる
┣行動指針を判断の基準にする
┣目標を持って始める
┗盲目的に従うことなく疑問を持つ姿勢を奨励する
■OODA
Observe(観察)、Orient(状況判断、方向づけ)、Decide(意思決定)、Act(行動)
OODAは過去の経験に捉われることなく現状にあった行動をとるためのもの
Observeでは先入観を持つことなく公平かつ客観的に行うことを推奨
変化を観察しスピーディな分析をし判断して進めるので生存率が高い
場当たり的、個人の判断が多い、中長期計画に適していない、仮説が弱い、ミッションバリュービジョン共有の欠如で統率問題
PDCA
目標設定から始まるので、目標が明確になり、ブレずに取り組みやすい
安定した環境での品質管理や一定期間かける取組などに適している
品質管理や生産管理用フレームワークの状況や前提が変わらない中で最適解を見つけるのに適している
簡易としてはPDR、Prep=準備、Do=実行、Review=復習検証
====
ティーチング:正解や解決に必要なノウハウを教える
コンサルティング:相手の問題を解決するための提案をし共に解決していく
カウンセリング:悩みや不安を解決するためにサポートする
Posted by funa : 11:16 PM
| Column
| Comment (0)
| Trackback (0)
October 31, 2023
GCP Network Connectivity
●共有 VPC
同組織のプロジェクトのホストプロジェクト(親)のVPCをサービスプロジェクト(子)に共有
●VPC ネットワーク ピアリング
異なる組織間の接続(双方のVPCでコネクションを作成する、内部IPで通信する、サブネットは重複しないこと、2ホップ制限で1:1=3つ以上の場合は古メッシュでコネクション作成要)、k8sサービスとPod ipをVPCピアリング経由する利用法もある
●ハイブリッド サブネット
Cloud VPN/Interconnect等が必要、オンプレルータとCloud RouterをBGPでつなぐ、オンプレとGCPをつなぐ
●Cloud Interconnect
DCと専用線で閉域網接続、Cloud VPNより低レイテンシ/帯域安定
●Cloud VPN
オンプレとIPsec VPN接続、アドレス帯の重複だめ、Cloud VPN側でBGPIP設定やIKEキー生成をしオンプレルータ側でそれらを設定する
●内部範囲
VPCで使うIPをCIDRで定義しIP範囲の使用方法を事前に決定しておく、IPが勝手に使われたりしない等ができる
●限定公開の Google アクセス(Private Google Access)
外部IPを持たないGCE等はデフォルトのインターネットゲートウェイ0.0.0.0を経由してGoogle APIにアクセスする、VPC>Routesで見れる
●オンプレミス ホスト用の限定公開の Google アクセス
CloudVPNやInterconnectを経由してオンプレから内部IPを利用してGoogleAPIにアクセス、GCP側ではCloudDNSで特定のドメインのAレコードを入れる、選択したドメインのIPアドレス範囲を静的カスタムルートでVPC内のプライベートIPからルーティングできるように設定する、オンプレにはCloudRouterからドメインのIPアドレス範囲をBGPでルーティング広報する、VPNやInterconnectがないと0.0.0.0でGoogleAPIにアクセスするがこれだとRFC1918に準拠しない199.33.153.4/30などのIPを使う必要がありルーティングが複雑化したり、オンプレを通る場合があり通信は慎重に設計をすること
●Private Service Connect
「限定公開の Google アクセス」の発展版、オンプレをNATでVPCに接続、内部IPでGoogleAPIにアクセスできる、PSCエンドポイントを介して内部IPで公開できる、NATされ内部IPの公開先での重複OK
●プライベート サービス アクセス
VPCペアリングを併用してサービスプロデューサをVPCに接続し内部IPで次のようなサービスに内部IPでアクセスできるようにする(Cloud VPNまたはInterconnectを付け足せばオンプレからも可)、Cloud SQL/AlloyDB for posgre/Memorystore for Redis/Memcached/Cloud build/Apigee等の限られたもの
●サーバーレス VPC アクセス
サーバレスからVPC内リソースにアクセスするためのコネクタ(通常は外部IP通信になるがコレだと内部IPでVPCにルーティングされる、/28のサブネットを指定)、例えば既存のcloud runサービスを編集しても付けられず初期構築時のみ設定できる
●外部 IP アドレスを持つ VM から API にアクセスする
IPv6をVMに設定し限定公開DNSゾーン設定をすればトラフィックはGCP内にとどまりインターネットを通りません
●CDN Interconnect
Cloud CDNもあるが他社のCDNに接続する、Akamai/Cloud flare/fastly等々
●Network Connectivity Center
ハブとなりCloudVPN/InterconnectをメッシュしGCP/オンプレ含め通信させる、Googleのバックボーンでユーザ企業の拠点間を接続できる
●ダイレクト ピアリング
GoogleのエッジNWに直接ピアリング接続を確立し高スループット化、Google workspaceやGoogleAPI用だが普通は使わずInterconnectを使う
●キャリア ピアリング
ダイレクトピアリングの高度な運用が自社対応できない等でサービスプロバイダ経由でGoogle workspaceなどのGoogleアプリに品質よくアクセスする
Google CloudのVPCを徹底解説!(応用編) - G-gen Tech Blog
●トンネル系の下記は色々権限が要りそうで候補
Compute OS login/IAP-secured tunnel user/Service account user/viewer/compute.instance*
■IAPトンネル
export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128
gcloud compute start-iap-tunnel --zone asia-northeast1-a gce-proxy001 3128 --local-host-port=localhost:3128 --project=gcp-proxy-prj
でコマンドを打てばIAP踏み台トンネルを通って外部に通信できる
■踏み台コマンド
gcloud compute ssh --projet gcp-prj-unco --zone asia-northeast1-a gce-step-svr
でSSHログインしそこからcurl等で操作する
=============
なぜレッドオーシャン化する前にサービスを グロースできなかったのか? - フリマアプリ編 - (フリル)サービスを急拡大させる意思決定が遅く競合に遅れ
競合出現後も経営方針を大きく変えなかった
勝利条件はユーザ数で機能差ではなかった
パワープレーでいかにプロモーションばら撒いて認知広げて第一想起をとるかだった
先行者優位で過ごせる期間は短い
スタープレイヤーの採用、手数料無料化、TVCM等PLを超えた手法があった、BS経営すべきだった
成長のキャップが創業者の能力になっていた
有能な人材:耳の痛いことを言ってくれる人材を経営チームに採用しても良かった
CTOが開発をし、組織運営の雑務をし、採用もやっていた
CEOは机の組み立てをするな。CTOはPCの購入をするな
役割の変化に素早く適用し権限移譲を行い、やるべきことをやれる状況を作る
あるいは必要な組織を大きくすることに注力する、例えば開発組織を大きくする
戦時のCEO、皆に戦時であることを伝える、企業文化に背く意思決定も行う
研究や教育等、やった方が良さそうな耳障りの良いタスクも拒否する
どうやったら市場で勝てるかの戦略
↓
IPOとか目指さなければConfort zoneを見つけてじっくりまったりビジネスを継続させる手もある
メルカリやPay2をみた結果論、このやり方も古いというかアレ
Posted by funa : 10:57 PM
| Web
| Comment (0)
| Trackback (0)
April 23, 2023
Bay Bay Bay
ebayはSellerからオファーがあり値引きしてくる。破壊力あるな。ただ購入が面倒だった。
ebayでの問題
1)日本には送ってくれない場合がある
2)日本に送ってくれるが住所が日本語だと売主でキャンセルされる
決済での問題
3)クレカ会社で支払いを止められている場合がある
4)Paypalで各種証明書が必要で止められている場合がある(クレカ認証も要るはず
5)google payでの決済ができない(クレカ側で止められているのでは?
↓
対処
↓
1)米国転送住所 shipito.com が使える
オレゴン倉庫は消費税が掛からないが有料で月10ドル
calの10%弱の消費税が掛からず送料も安くなるので一時契約する
ebayに米国住所を登録するには米国電話番号が必要
skypeで毎月300円で発行ができるので一時契約する(MSのoutlookメールID)
shipito.comに送付されたら日本に転送依頼をする
2)ebayの送付先住所(米国)は英語にする(日本に送付可ならコレなくてもいい)
念のため日本の個人情報住所も英語にする(日本に送付可でもココは英語がいいかも)
念のためebayの言語設定を英語、場所を米国にする(上か下ナビにあるはず)
その後に購入・決済手続きする方がいい
3)クレカサイトのFAQで支払いできない時等で検索して対処
4)Paypalは各種証明書を登録する。クレカ認証は確か少額課金で検証されるはず
5)知らん
shipitoで送料見積もると安かったが、実際に荷物が届くと梱包が大きくかなり高い
米国内転送でshipitoでまとめて荷物一つで送ろうと思ったが、直接日本に送ってくれる相手なら直接の方が安いかもしれず良く考えよ
Posted by funa : 09:12 PM
| Column
| Comment (0)
| Trackback (0)
March 15, 2023
GMT(Greenwich Mean Time)
■セイコーPROSPEX SPEEDTIMER Solar Chronograph SBDL097(ペプシ)
腕時計のベルト調整方法(Cリング式) - YouTubeCリングが内側下側に入っており無くし易いので気を付ける
6時方向を短くした方がバランスが良い
バックル微調整はバネ棒なので縮めてズラす(バックルから外さない方が面倒がない)
クロノグラフはストップウィッチで秒針が12時のままが正しい
スプリットセコンド付
上ボタンでスタート、下ボタンでラップ、下ボタンで続き
上ボタンでストップ、下ボタンでリセット
FとEでソーラー充電上体を表示
竜頭1段出しで日付、2段目で時刻調整
ソーラ充電電池の寿命は10年とメーカで謳われている、交換は三~四千円で、機械かクォーツの方がいい?
■セイコー5 SPORTS SKX Sports Style GMT SSK001K1
SBSC001の海外モデルでブレスレットの中3連がミラー艶出し
各部の名称と主なはたらき (seikowatches.com)ベルト調整はCリング無しの割ピン仕様
午後8時から午前4時は日付の調整を行わないこと(朝昼夕方に合わせる、反時計回りは駄目)
竜頭1段目にして反時計回りで前日の日付にセットし、
竜頭2段目にして時計回りで時刻合わせ
竜頭0段目:ぜんまい巻き上げ(時計回り、回しすぎない方がいいらしい)
竜頭1段目:日付合わせ(反時計回り)・GMT24時針合わせ(時計回り)
竜頭2段目:時刻合わせ
日本時間の24時間針として使う場合
ベゼルを時差分ずらすと2か国の時刻が分かる
GMT針は24時間針で日本時間で、ベゼルを9時始まりにしてUTCの設定が良い
+0900 JST9:00のときUTC0:00、UTCだけどcoordinated universal time
デュアルタイム針として使う場合
ベゼルを時差分ずらすと3か国の時刻が分かる(日本時間の長短針/盤面の24時間/ベゼルの24時間)
機械式は面倒、嵌めていないと止まる、時間がズレる、でもソコがカワイイかも
クォーツ+ソーラは100倍便利だが、機械の相棒一本がいいかもな
伝統のUI/ユーザビリティとか、機能美とか様式美に行きつく
■セイコーNH35A サブマリーナ
スピードタイマー、GMTとくれば、次はサブマリーナでしょ。ベゼルが酸素ボンベの量を表す、潜水開始時に分針をベゼルの0を合わせると何分経ったか分かる、ベゼルは逆回転しないので誤って廻っても分数が加算されるだけ
時間合わせは5Sportsと同じ、ねじ込み式リューズで先に緩める
ブレスレットのネジは精密ドライバ1.4mmが良かった、小さいとナメるよ
グライドロック:ブレスレットの微調整は動く方をパキっと持上げて好きな位置迄スライドさせて押し込む
フルスペック!!
Superior grade 904 stainless steel construction
Sapphire crystal with clear anti reflective undercoat
Ceramic bezel insert
Solid link bracelet with screw pins and solid end links
Case size is 40mm, lug width 20mm
■セイコー5 SPORTS Skz209 7S36-01E0(Blue atlas Landshark)
トリッキーなガジェットでヤバいな。回転式コンパスチャプターリング(方位計)、200m water resistant、7S36自動巻き、デイデイト表示、回転式ダイバーズベゼル、ねじ込み式リューズ
方位計の使い方1)時計を水平にして時針を太陽の方向に合せる。この時、時針の指す方向と、12時の中間の方向が南
2)回転ベゼル(方位計)を回しSを南の方角に合せると、おおよその全方位がでる
※緯度や季節によってはズレが生じることがある
日付は「午前0時」ごろ、曜日は「午前4時」ごろ送るようになっている
午後8時から午前4時は日付の調整を行わないこと(朝昼夕方に合わせる、反時計回りは駄目)
竜頭1段目にして反時計回りで前日の日付、時計回りで前日の曜日にセットし、
竜頭2段目にして時計回りで時刻合わせ
竜頭0段目:ぜんまい巻き上げがない
ベゼルが回らないとき(そもそも反時計回りにしか回らない)
アルカリ電解水を入れ何度かやって汚れを取る(不要な部分に浸み込まないように)
シリコンスプレーを吹く(ベゼルに吹くと若干色が戻り艶がでる)
残るはエクスプローラー/デイトかくらいか、知らんけど、圧倒的にレディーがいいなロレックスデイトジャスト、28mmで濃縮されてる感じで、39/36と28でお揃いとかええけどな。バンド種類の名前:Oyster/Presidential/Jubilee
Posted by funa : 09:27 PM
| Gadget
| Comment (0)
| Trackback (0)
February 11, 2023
HSTS/CORS/CSPOAuth/OpenID/SAML/XSS/CSRF/JSOP/SSO/SSL/SVG/JWT
JSのfetch,xhr/iframe/canvas/WebStorage,IndexedDBでクロスオリジンは危険
Access-Control-Allow-OriginレスポンスヘッダでCORS(cross origin resource sharing)許可を判定できる
CSP(Content-Security-Policy)レスポンスヘッダあるはmetaタグで許可するJSを判定できる
=========================
2022-04-06
SAML
SSOのログイン状態を保持する認証プロバイダー(IdP)を使い各アプリ(ServiceProvider)でSSOを実現する
SSOの仕組みにはエージェント方式、リバースプロキシ方式、代理認証方式など
ユーザはWebサービスにアクセス
WebサービスからSSO認証プロバイダーサーバにSAML認証要求をPostする
SSO認証プロバイダーサーバでSAML認証を解析、ユーザに認証を転送
ユーザはそれでWebサービスにログインする
SAMLはログイン時にユーザー情報をチェック、OAuthはユーザーの情報を登録
OAuthはアプリケーションを連動させるAPIで有効なアクセストークンかを見る
アクセストークンには「いつ」「どこで」「なんのために」作られたのか分からない
OpenIDはIDトークンを使い「いつ」「どこで」「なんのために」作られたのか分かる
OAuth 2.0、OpenID Connect、SAMLを比較
OAuth 2.0:新しいアプリケーションに登録して、新しい連絡先をFacebookや携帯電話の連絡先から自動的に取得することに同意した場合は、おそらくOAuth 2.0が使われています。この標準は、安全な委任アクセスを提供します。つまり、ユーザーが認証情報を共有しなくても、アプリケーションがユーザーに代わってアクションを起こしたり、サーバーからリソースにアクセスしたりすることができます。これは、アイデンティティプロバイダー(IdP)がユーザーの承認を得て、サードパーティのアプリケーションにトークンを発行できるようにすることで実現されます。
OpenID Connect:Googleを使ってYouTubeなどのアプリケーションにサインインしたり、Facebookを使ってオンラインショッピングのカートにログインしたりする場合に使用されるのが、この認証オプションです。OpenID Connectは、組織がユーザーを認証するために使用するオープンスタンダードです。IdPはこれを利用して、ユーザーがIdPにサインインした後、他のWebサイトやアプリにアクセスする際に、ログインしたりサインイン情報を共有したりする必要がないようにします。
SAML:SAML認証は、多くの場合に仕事環境で使用されます。たとえば、企業のイントラネットやIdPにログインした後、Salesforce、Box、Workdayなどの多数の追加サービスに、認証情報を再入力せずにアクセスできるようになります。SAMLは、IdPとサービスプロバイダーの間で認証・認可データを交換するためのXMLベースの標準で、ユーザーのアイデンティティとアクセス許可を検証し、サービスへのアクセスの許可/拒否を決定します。
OAuth、OpenID Connect、SAMLの違いとは? | OktaOath: idpがトークンを発行、Webサイト間でユーザを認識し3rdからでも個人情報を使えるようになる
OpenID(OIDC): idpとJWT(トークン)で認証するOauth系のSSO、Oauthの拡張でログインが3rdからもできるようになる
SAML: idpで各アプリやAD間をXMLメッセージにより認証管理しSSOを実現
OpenIDとSAMLが同じような機能
SAMLはユーザ固有の傾向で大企業SSOが多い、OpenIDはアプリ固有の傾向でWebサイトやモバイルアプリが多い
SAMLよりOIDCの方が新しくSPAやスマホと親和性が高い
SaaSとしてOpenIDはOktaのidp、SAMLはPingFederateのidpがメジャー
=========================
2016-01-03
■XSS対策、CSRF対策、脆弱性チェック
情報処理推進機構にチェックリスト有
https://www.ipa.go.jp/security/vuln/websecurity.htmlXSS対策
フォーム送信後の確認画面ではHTMLエスケープ等でサニタイズされた内容の結果を表示
DBへのクエリについてはプレースホルダやエスケープ等でSQLインジェクションを防ぐ
target="_blank"はXSSになるので危ない、rel="noopener noreferrer"を付ける
https://b.hatena.ne.jp/entry/s/webtan.impress.co.jp/e/2020/03/13/35510 https://laboradian.com/test-window-opener/CSRF対策
前ページでhidden値を入れる
他
クッキーに具体的なものは入れない、CookieにHttpOnly属性、HTTPS通信ではsecure属性
エラーメッセージを表示しない
不要なファイルは削除
XMLの外部実態参照は禁止、サーバ上でコードが実行される
→libxml_disable_entity_loader(true)で止める、xmlをアップロードさせない/使用しない、JSON使う
PDFからHTTPリクエストが発行される
→PDFをアップロードさせない
------
//SQLインジェクション対策
\ " ' を\エスケープ
$sql = "UPDATE users SET name='.mysql_real_escape_string($name).'WHERE id='.mysql_real_escape_string ($id).'";
//クロスサイトスクリプティング対策
表示時には<>&"をメタ文字へ変換
echo htmlspecialchars($_GET['username'], ENT_QUOTES);
$ent = htmlentities($ent, ENT_QUOTES, "UTF-8"); //100個の文字を変換
//クロスサイトスクリプティング対策
別サイトからのポストを弾く
refferを送信しないリクエストもある(別サイトのリファラを弾き、nullもしくは適切ページからを許可する)
セッションIDで判断する
//DOS対策
2重ポスト
IPと日付で2重ポストを防ぐ(同IPのポストがx秒以内を弾く)
========
■JSONP
scriptタグを使用してクロスドメインなデータを取得する仕組みのことである。
HTMLのscriptタグ、JavaScript(関数)、JSONを組み合わせて実現される
GoogleAnalyticsのクッキーは1stパーティでサイト側がオーナでありGoogleがオーナーではない
サイト側のJSでクッキーが作成されるようなっている
クッキーが送信される相手はどこか?が重要でGoogleでなくサイト側に送信される
アクセス履歴は別途データをGoogleに送信しており、クッキーはセッション管理に使用される
■SSO
色々な方法がある、SAMLや、サイトにエージェントを組み込み+SSO認証サーバ等
ロジックを確認しないと詳しくは分からない
=========
■SSL
CAはサーバに証明書(署名)を発行
====
クライアントが接続要求
サーバが証明書(署名とRSA公開鍵を含む)を送る
クライアントが証明書を検証(
どっち?
1)署名をルート証明書のチェーン(RSA公開鍵)で複合化しドメインを確認
該当のルート証明書(RSA公開鍵)がブラウザにないと該当CAに要求?
CRLやOCSPで失効について問合せができるようだがRSA公開鍵の要求は出来なさそう
(ルート証明書はブラウザにある結局オレオレ証明書に違いない:厳密な審査の上で組込まれている)
2)クライアントが公開鍵をサーバに送りRSA秘密鍵で暗号化し送り返すとクライアントが複合化してRSA秘密鍵が正しい事を確認
)
クライアントが共通鍵(セッションキー)を生成し公開鍵で暗号化し送る
サーバが秘密鍵で共通鍵を複合
以降共通鍵暗号で通信
※ホンマか??
====
ホスト(ドメイン)を持って接続要求をし、暗号化通信後にパスやクエリパラメータを送るので、詳細は暗号化され守られている
Posted by funa : 01:46 AM
| Web
| Comment (0)
| Trackback (0)