Nuxt.js asyncDataを使ってAPIアクセスしたらconnect ETIMEDOUTになった
結論
DNSの名前解決に失敗している
入力、レイキャスト、イベント送信を処理する機能
EventSystemが開始されると、同じGameObjectに接続されている BaseInputModuleを検索し、それらを内部リストに追加します。更新時に、接続されている各モジュールはUpdateModules呼び出しを受け取り、モジュールは内部状態を変更できます。各モジュールが更新された後、アクティブなモジュールでプロセス呼び出しが実行されます。ここで、カスタムモジュール処理を実行できます。
using UnityEngine.EventSystems;
とライブラリを呼び出す
//現在のイベントシステムを取得 EventSystem es = EventSystem.current;
//現在のインプットモジュールを取得 EventSystem es = EventSystem.current; BaseInputModule bim = ev.currentInputModule;
// 選択中のGameObject EventSystem es = EventSystem.current; GameObject obj = es.currentSelectedGameObject;
//初期状態にで選択したいオブジェクトを設定 EventSystem es = EventSystem.current; es.firstSelectedGameObject = gameObject;
このモジュールはコントローラー/マウスの入力が思い通りに動作するように設計されています。入力に反応して、ボタンの押下、ドラッグ、それに類似の動作のイベントが送信されます。
このモジュールはマウス/入力デバイスが移動するとき、ポインターイベントをコンポーネントに送信します。そして、Graphics Raycaster と Physics Raycaster を使って、現在、どの要素が指定したポインターデバイスによって指されているかを計算します。目的に応じて、これらのレイキャスターを設定して、シーンのある部分を検証したり無視したりすることが可能です。
モジュールは Input ウィンドウを通して追跡された入力に応答して移動のイベントと 送信/キャンセルのイベントを送信します。これは、キーボード入力とコントローラー入力の両方に使用できます。追跡された軸とキーはモジュールのインスペクターで設定可能です。
プロパティ 機能
Horizontalは横軸、Vertical は縦軸
Submitが決定、Cancelがキャンセル
Input Actions Per Secondが連打可能かどうかの設定
Repeat Delay 連打具合の許容値
メインPCをAppleシリコン搭載の最新PCであるMacBookPro16に置き換えました
Unityを使ってみた感想です。
定量的なレビューじゃなくて、感想です。
比較対象は2021年に組み立てた自作PC(30万円くらい)
CPU: 第三世代 Ryzen9 3950
GPU: Radeon RX6700XT
メモリ: DDR4 64GBメモリ
本体で30万円ほど
ディスプレイやキーボードを含めたら40万円ほど。
それでもM1Maxの方が高いです。
UnityのAppleシリコン対応版の最新は、記事作成時点で
2021.2.16f1
Unity Visual Effect Graph を使おうとすると
M1の方はビジュアルエディタがちょっともっさりしてる
エフェクトのプレビューがカクついたり
安定性や、重い処理はやっぱりデクストップPCの方が快適ですね。
本格的にやるときはデスクトップで、技術検証とは軽く作るときはM1Maxで
みたいな使い方になりそう
特に問題なし!!
どっちも速い。特に不便を感じない!
ゆえ合って、SSL証明書が必要になりました。
QNAPで動いているQTS(QNAPの独自OS)はLinuxの独自拡張OSのようで
SSHログインしてLinuxのように操作できます。
以下、設定方法です。
設定ファイルはここにあります
more /etc/config/apache/extra/apache-ssl.conf
記述中のこのあたりの部分を変更していく感じです。
SSLCertificateFile "/etc/stunnel/stunnel.pem" #SSLCertificateKeyFile "/etc/config/apache/server.key" #SSLCertificateChainFile "/etc/config/apache/server-ca.crt" #SSLCACertificatePath "/etc/config/apache/ssl.crt" #SSLCACertificateFile "/etc/config/apache/ssl.crt/ca-bundle.crt" #SSLCARevocationPath "/etc/config/apache/ssl.crl" #SSLCARevocationFile "/etc/config/apache/ssl.crl/ca-bundle.crl"
必要なファイルを
/etc/config/apache/ 以下に設置します
必要なファイルは以下の3つです。
ALPAH SSLとか安くてオススメです。
(Let's Encriptでもいいけど3か月ごとに更新するのがちょっとリスキー)
apache-ssl.confのSSLの設定を以下のように修正
#SSLCertificateFile "/etc/stunnel/stunnel.pem" SSLCertificateFile "/etc/config/apache/web.crt" SSLCertificateKeyFile "/etc/config/apache/server.key" SSLCertificateChainFile "/etc/config/apache/server-ca.crt" #SSLCACertificatePath "/etc/config/apache/ssl.crt" #SSLCACertificateFile "/etc/config/apache/ssl.crt/ca-bundle.crt" #SSLCARevocationPath "/etc/config/apache/ssl.crl" #SSLCARevocationFile "/etc/config/apache/ssl.crl/ca-bundle.crl"
httpd-ssl-vhosts-user.confも同じようにSSLの設定を以下のように追加
既存の
SSLCertificateFile "/etc/stunnel/stunnel.pem"は消しちゃいます
SSLCertificateFile "/etc/config/apache/web.crt" SSLCertificateKeyFile "/etc/config/apache/server.key" SSLCertificateChainFile "/etc/config/apache/server-ca.crt"
こんにちは、のすけです。
===
去年書いて眠ってたので出しときます。
この記事で作成したPCはもう1年稼働中。いい感じです。
ただ最近はVRはしてませんorz
===
PCの温度管理は大切!なんて記事を8年前?に書いて、今でも結構みられているのですが。
その時のPCが2010年に制作したCore i7 2600K(SandyBridge)を積んだ
これです。
今話題?のVRが無性に気になってしまい。
こちらの11年前のPCに思い切って GTX 1660 Superを買って
強引にくっ付けて、さらに
VIVEのCOSMOS Eliteなんてのを買って、動くか試しました。
で、結果。
なんと、、、
動いたw
2010年のPCで動くんかいぃ!!
すげえな2600K。全然カクツキも感じない。
ただ、一つ問題が。。。
どうやらSandyBridgeってUSB3.0に正式対応してないらしくて
ただ、たまたまマザボがUSB3.0を搭載していたから奇跡的にCOSMOS Eliteがうごたわけなんだけど
起動が5回に1回動けばいい方で、結構な割合で起動しないことが多かったんだよね。
原因としては頭につけるガチャピンみたいなヘッドマウントディスプレイと
PCを接続するUSB3.0の相性が悪いようだった。
ということで、11年ぶりに思い切ってPCを一新することにした。
構成はこうだ!
CPU: Ryzen9 3950x 16コア32スレッド
メモリ: TEAM DDR4 3200Mhz PC4-25600 32GBx2枚
SSD: CFD販売 SSD 1TB 内蔵 M.2-2280(MVMe) 接続 PCIe Gen4x4
マザボ: MSI MPG B550 GAMING CARBON WIFI マザーボード ATX
電源: Thermaltake TOUGHPOWER GRAND RGB -850W
CPUクーラー: Corsair H115i PRO RGB 水冷CPUクーラー [Intel/AMD両対応] FN1150 CW-9060032-WW
グラボ:GIGABYTE ギガバイトRadeon RX 6700 XT EAGLE 12G
合計30万円くらい。
まずCPUが一気に16コアにグレードアップ!!
すでに5950Xも発売されてて、こっちを買いたかったんだけど、¥65,890で圧倒的に3950xが安かった。
5950Xは10万超えててちょっと。。
3950xでも十分に速い。全てのコアを使い切ったことが今まで一度もナイ。
よくわからないけど、Unity開発もするから潤沢に64GBにした。これで困ったことは一度もない!
ゲーミングPCらしいカラフルなライトアップで綺麗。
動作も安定してて素晴らしい。
こんにちは、のすけです。
クレジットカード決済プラットフォームStripeの新しいバージョン。と言っても数年前のアップデートですが
によって、機能がいろいろ拡充されてますよね。
ただ機能が多過ぎてドキュメントを読んで仕様を理解するのも一苦労。
その中で、便利なサブスクの機能なのですが
かなり柔軟に料金設定ができるのですが、既存のシステムにもサブスクの管理がある場合
重複して管理しなくてはならなくなります。
例えば他の決済プラットフォームも併用している場合には、仕方なく、自社システムにも
サブスク管理の仕組みを作って、Stripeのサブスクといい感じに連動させる必要があるかと思います。
それで、サブスクの入会、退会はどうやって検出したらいいの?
という問題にぶち当たるのですが。
そこはStripe、イベントをhookする仕組みが用意されています。
着信する Webhook を使用してリアルタイムで更新を取得する | Stripe のドキュメント
ただ、いっぱいイベントあるんですよね。。
サブスクの登録、キャンセルはどのhookを使えば、、、
サブスクが登録された時、このイベントが走ります
ですのでこちらをhookするのが正攻法かと思います。
ただ、自社のサブスク管理システムとの連携の際に、
契約されたサブスクがどのサブスクかを識別するためには、あらかじめ登録時に
metadataに識別のためのプランidなどを仕込んで置く必要があります。
ただ、Stripeの管理画面の商品設定画面ではproduct(商品)やprice(価格)にはメタデータをあらかじめ設定できるのですが
サブスク契約(sub_xxxx)は契約時に作成されるので
事前にメタデータを仕込むことができないっぽです。
なので、やり方としては
登録は例えばコーディング不要のStripe既存のcheckout sessionの仕組みを使う場合
どうすればいいのかと言うと
checkout.session.create時に
subscription_dataというパラメータを設定できるので、そこのmetadataに
自社のサブスクを識別する識別子を設定しています。
これで、例えば'invoice.payment_succeeded'をhookして、渡されたJSONデータをパースすると
どのサブスクか判別できます。
Stripeでの支払いの際には(トライアルの¥0決済含む)必ず発行されるイベントに
invoice.payment_succeeded'があります。
こちらをhookすることでサブスクの登録と継続決済の検出ができるのでいいかなと思います。
なぜなら、billing_reasonという項目にサブスクの状態が入っているからです
登録時には"subscription_create"が、継続決済時には"subscription_cycle"が入ってくるので
こちらを識別する方法があります
このイベントは、サブスクリプションが変更されるたびにトリガーされます。
たとえば、クーポンの追加、割引の適用、インボイス項目の追加、プランの変更はすべて、このイベントを発生します。
この変更検知では、サブスクの継続支払いをだけを綺麗にhookできないです。
関係ない設定変更でも検出されてしまうので、何の変更なのかを吟味する必要があります。
個人的には使いづらいので、私はこちらは継続決済の検出には使ってません。
これは普通にサブスクがキャンセルになったら発動します。
適切に検出してキャンセル手続きをしましょう。
サブスクの無料トライアル期間はStripe管理画面からはできません。
登録しようとすると、レガシー機能で非推奨ですなんて出て、実際反映されません。
なのでAPI経由で設定が必要です。
これもStripe既存のcheckout sessionの仕組みを使う場合
どうすればいいのかと言うと
checkout.session.create時に
subscription_dataというパラメータを設定できるので、そこのtrial_period_daysというのがあるので
そこに日数を設定してやればOKのようです
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 3f; //移動スピード // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { float x = Input.GetAxis("Horizontal"); //左右方向のキー取得 float z = Input.GetAxis("Vertical"); //上下方向のキー取得 float addX = speed * x * Time.deltaTime; float addZ = speed * z * Time.deltaTime; transform.GetComponent<Rigidbody>().MovePosition(transform.position + new Vector3(addX, 0, addZ)); transform.LookAt(transform.position + new Vector3(addX, 0, addZ)); } }