//tips
//基本情報理解
分割統治法は、そのままでは解決できない大きな問題を小さな問題に分割し、その全てを解決することで、最終的に最初の問題全体を解決するというもの。
対象のデータが多いなど規模の大きな問題を、相似的な構造を持つ小さな部分問題に分割し、部分問題が大きい場合は再帰的に同じ分割手順を繰り返して問題のサイズをどんどん小さくしていく。
値の比較・交換の少ない高速なソート(整列)アルゴリズムとして知られるマージソートやクイックソートがそれにあたる。
クイックソートは、データ列から適当に基準値を決め、これより大きいグループと小さいグループに分けるという手順を、分けた小さなグループに対しても再帰的に繰り返していく。
基数ソートは、「比較によらないソート」のアルゴリズムの一つ。
挿入ソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの最も基本的な手法の一つで、未整列の要素を一つずつ、整列済みの列の適切な位置に挿入していくもの。
選択ソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの最も基本的な手法の一つで、未整列の要素の中から最大あるいは最小のものを選択し、整列済みの列の末尾に追加していくもの。
プログラムレジスタ(プログラムカウンタ)はCPU内部にあるレジスタで、主記憶上に配置されている命令の中で、次に実行すべき命令のアドレスを保持している。
レジスタとは、マイクロプロセッサ(MPU/CPU)内部にある、演算や実行状態の保持に用いる記憶素子で、下記のような種類がある。
プログラムカウンタ(PC)
– 現在実行しているプログラムの番地を格納するレジスタ
– 参照されると自動的に内容が「+1」される
– プログラムの流れの制御を実現
• 命令レジスタ(IR)
– 主メモリから読み出した命令を一時記憶
• メモリアドレスレジスタ(AR)
– 主メモリに対してこれから操作するアドレスを格納するレジスタ
– 主メモリ装置はここを参照して指定されたアドレスにアクセス
• メモリデータレジスタ(MR)
– 主メモリから読み出されたデータを格納する
– 主メモリに書き込むデータを格納する
http://www.vision.is.tohoku.ac.jp/files/8214/9663/4924/8th-2.pdf
平均アクセス時間はキャッシュメモリにデータが存在しない確率NFPを用いて、
(1-NFP)×キャッシュメモリのアクセス時間+NFP×主記憶のアクセス時間
キャッシュのアクセス時間 x ヒット率 + キャッシュ対象の記憶装置のアクセス時間 x (1 - ヒット率)
で算出できる。
CPUが必要とするデータがキャッシュメモリにない場合、メインメモリにアクセスする。
このとき、必要なデータがキャッシュメモリにある確率をヒット率あるいはアクセス確率といい、キャッシュメモリにない確率はNFP(Not Found Probability)と呼ばれ、これはヒット率の余事象で表す。
キャッシュにあればそこまでのアクセス速度のみでいいが、キャッシュにない場合もあるので、その場合は記憶装置に取りにいく時間も含めて考える必要がある。
//unity/shopify
cart.CheckoutWithNativeWebView部分でNotImplementedException: The method or operation is not implemented.というエラーが発生してしまっているので、まずカート自体に問題ないかデバッグで調べる。
Shopify.Unity.Cartがデバッグとして吐き出されたのでエラーの要因になっているわけではなさそう。
NotImplementedException 例外は、特定のメソッド、get アクセサー、または set アクセサーが型のメンバーとして存在していても実装されていない場合にスローされるものなので、もしかしたらshopifySDKのインストールまたは参照ファイルのバージョンに違いがあるのかもしれない。
Debug.Log("First line item's variant id is: " + cart.LineItems.All()[0].VariantId);
First line item's variant id is: Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0VmFyaWFudC80MDYzNzQ0MDAzMjk3NQ==
きちんとアイテムのidも取れている。
After creating an instance of Cart and adding items to it, you can use the CheckoutWithWebView method to start a web view that contains the checkout for the cart.
カートを作ってそこにアイテムを追加した後ならCheckoutWithWebView がやはり使えるよう。
CheckoutWithWebView takes in 3 callback parameters:
CheckoutSuccessCallback is called when the user has completed a checkout successfully.
CheckoutCancelCallback is called when the user cancels out of the checkout.
CheckoutFailureCallback is called when an error was encountered during the web checkout. The callback will pass an instance of ShopifyError describing the issue.
cart.CheckoutWithWebView(
success: () => {
Debug.Log("User finished purchase/checkout!");
},
cancelled: () => {
Debug.Log("User cancelled out of the web checkout.");
},
failure: (e) => {
Debug.Log("Something bad happened - Error: " + e);
}
);
こちらで試すときちんと遷移が成功。
ただページ自体はThis store isn't taking orders right now.となっているのできちんと課金してショップを開かなければいけないのか。
Shop自体はオンラインで公開していることが確認できた。
100万円のシャツの在庫を増やして再度確認。
https://nakiunity.myshopify.com/59985166543/checkouts/3b69becc6f37121857558432158322b6?key=dcb20efe1de36b9f2901537266839c42
のurlにアクセスし、再度This store isn't taking orders right now.と出てきているので、販売するための許可などが必要なのかもしれない。
色々探してみるとshopifyのSDKに自販機のサンプルシーンがあることを発見した。全てスクリプトは外れていたが、マシンとして完成しているので上記の問題が解決できない場合はスクリプトの組み合わせを行い実際の挙動を探ってみても良さそう。
https://forum.unity.com/threads/is-there-a-go-to-solution-for-selling-physical-products-from-inside-unity.817932/
https://qiita.com/pitao/items/0d2fffac3c5a3579ff95
Shopify自体の設定を見直すか。