アレコレ・ティプス

これ便利だな〜と思ったことなど

Roblox で開発の勉強をはじめてみた

Roblox studio で開発の勉強をはじめてみた

まずは公式ページにいって Roblox Creator Hub

→ “制作” のタブ

→ ダウンロード

howtostart_robloxdev

installing_roblox_Dev

ダブルクリックでインストールできた

welcom_dev_roblox

ツアー をやってみよう!

tour_start

これをやれば、自分のRoblox の場所が作れるみたいだ!

  • カメラのコントロール方法
  • オブジェクトの追加

これら、設定したら、Roblox のアバターでプレイテストできるようになるみたいだ。

introduction_dev_roblex

Roblox の全てのプロジェクトは、必ず 場所情報(place) を 含む

今回の例では、 滑り台ゲームのカーニバルシーン

The aim of the game is to roll down the slide in a ball and hit the target.

今回のゲームの目的は、滑り台の上をボールを転がしていき、ターゲットに当てるものみたいだ

navigation_roblox_dev

まず開発カメラの制御から。

 

マウスのホールドを上下 グリグリ で拡大縮小できた!

次は、 "W" "A" "S" "D" キーで、どうなるか。試そう

wasd

 

E と Q で 視点を上下できた。

 

マーケットプレイスには、開発者自身がプレイスに追加できるアセットが含まれているようだ。

ツールボックスを使用して、Studio でアセットを見つけることができます。とのこと

Marketplace2

それでは ball とタイピングして検索してみよう

みつかった!

playtest

そして、これでプレイテストできるのか! 思っていたよりサクサク進むなあ

▶️のプレイボタンで開始だ!

テスト中にクライアントモードとサーバーモードを切り替えるには、アイコンをクリックすればいいようだ。

client_server

AIいわく

  • クライアントモードは、プレイヤー個々の端末で実行される処理で、ユーザーインターフェースや視覚的なエフェクトが含まれます。

  • サーバーモードは、ゲームサーバーで実行され、全プレイヤーに影響を与えるゲームロジックや状態管理を担当します。

この2つのモードを適切に使い分けることが、Robloxでのゲーム開発では非常に重要です。

とのこと

キャラが操作できた!

ここからゲーム作りがはじまる!

moving_charactor

ボールのところで Eボタンを押して開始かな

E_button

Eを押したら

ボールに乗ったw 予想外すぎるw

 

ride_on_the_ball

前に進む と 足場がなくて、この後 水ぽちゃ

どうやら、この編集モードを停止して、不足している 足場をつくるみたいだ。

slider1

停止ボタンかな

stop_button

parts_

“Parts” は、このブロックスタジオで基本的な項制要素

傾斜路を作るパーツを挿入してみよう

parts_selection tab

ローテートツールで回転できそうだ

rotate

回転できた!今度は Scale。 大きくできそうだな。

scale

ビヨンと 伸ばせた!

scale2

パーツのカラーの玉をひっぱることで、伸ばせる場所が変わった!

scale3

この時 視点の切り替えで苦戦したので、マウスを接続して、右クリック で引っ張って 視点制御した。カメラの向きを変更するには 右クリックがやりやすかった。

color_change

ランプの色を変更するってなんだろ?

傾斜路の 色が 変わった!

color_change2

“ramp” がわからなかったので、AIに訊いてみた。

ーーーーー

Roblox の開発環境における「ramp(ランプ)」は、通常、グラデーションを作成するためのオブジェクトやエフェクトを指します。特に、**色の遷移やスムージング(滑らかに変化する色の変化)**を管理するために使用されます。通常、ランプは次の2つのコンテキストで使われることが多いです。

  1. ライトランプ (Light Ramp):
    • ランプは、光の色や強さをスムーズに変化させるためのツールです。たとえば、昼夜の変化を表現したり、光源からの照明の変化を管理するために使われます。
    • ランプでは、複数の色が滑らかに遷移し、シーン全体の雰囲気を変えるのに役立ちます。これにより、プレイヤーがゲーム内でどのように光を感じるかが制御できます。
  2. マテリアルランプ (Material Ramp):
    • こちらは、特定のオブジェクトや表面に対する色や質感のグラデーションを設定するために使用されます。例えば、特定のオブジェクトが光源に近づくと、色が変化するなどの視覚効果を作り出すことができます。
    • これを利用することで、よりリアルな視覚的な効果を加えることができます。たとえば、物体が光に当たると色が徐々に変わる、などの効果を作り出すことができます。

これらの「ランプ」は、ゲーム内で色を変更するための手法として使われ、ゲームの視覚的な表現を豊かにするために活用されます。

ーーーーー

そして、このパーツの配置 デフォルトでは、重力に応じて移動してしまうようなので、Anchor ボタンを押して移動しないように固定しよう。

Anchor_01

“ランプが完成したので、次はボールをカスタマイズします。Explorer には、ビルトインのサービスを含め、場所にあるすべてのものが表示されます。” とのこと

“Part” ってなっているのはたぶん自分の操作で生成・配置したものかな

エクスプローラーから、Part を選ぶと、生成したパーツの選択を切り替えできた!

で、最終的に “Ball” を選んだ。

select_ball

F を押すと、Ball パーツのところまで、カメラの視点移動ができた!

push_F

F を押すと、Ball パーツのところまで、カメラの視点移動ができた!

properties

プロパティ がここにあるのね。覚えておこう。

speed_up

Filter Properties のところで、“Speed” って単語で検索して、この玉のSpeedを上げてしまおう!

チートしてる気分だ😂






speed_up_2

スピード5倍にしてみた🤣

save

ここで大事。保存ね!

play_test

いよいよ Tour の最後 プレイテストだ!

5倍のスピードはいかに🤣

play_test2

www.youtube.com

 

案外 5倍のスピードでよかった😂

こういうアクションのゲームの開発が、こんなにシンプルにできるとは、、!



HAproxy BASIC 認証設定 version 2.6.7

HAproxy BASIC認証設定

(ブラウザで閲覧するユーザー向けのBASIC認証 HAproxy設定)

 

自分で書いたこちらの記事が古くなっていたので、

HAproxy で Basic 認証を使う際の パスワード文字列 エンコード - アレコレ・ティプス

改めて書きます。

 


 

主に3点 行う。

  1. パスワードを生成 エンコード
  2. ユーザー定義
  3. Backend に アクセス制限を定義

動作確認環境:

HAproxy docker コンテナ version 2.6.7

 


 

1、パスワード生成エンコード

mkpasswd コマンドが使えるLinuxマシンなどで以下コマンドを打つ。

printf "生成したいパスワードを半角英数で" | mkpasswd --stdin --method=sha-256

 

55zkY5oZnIhmM7wrJ$sRdh1DFp1zBHoyEHPwhcPSL5hBmGjqCqYAq5lDZvxkB

と sha-256 で エンコードされたハッシュが生成される。 これを以下で用いる。

2、ユーザー定義

haproxy.cfg など HAproxyで使っている設定ファイルを編集する。

"defaults"項目の定義後あたりに userlist 定義を行う。

## -------------------------------------------------------
## userlist
## -------------------------------------------------------
userlist user_group1
  user   usr1	password	$5$zkY5oZnIhmM7wrJ$sRdh1DFp1zBHoyEHPwhcPSL5hBmGjqCqYAq5lDZvxkB

( 先ほどパスワードからハッシュ生成したものを上記のように "password" の後に挿入する )

ーー

3、Backend に アクセス制限を定義

ーーー

"Backend"項目 に アクセス制限を追加 例

 

haproxy.cfg など HAproxyで使っている設定ファイルを編集する。

backend gui_server
        balance roundrobin
        acl auth_usr_ok http_auth(user_group1)
        http-request    auth if !auth_usr_ok
        server          gui_service     888.88.8.88:1881 check

http_auth のところでは 定義したユーザーグループ単位で指定できる。

これで、usr1 ユーザーで 設定したパスワードで、BASIC認証の設定ができた。

 


 

昔のバージョンでは、パスワードエンコードが、DES だったかもしれないが、現在 HAproxy の BASIC認証では、SHA-256 がデフォルトのようである。

23/02/20

ーーー

Solana チェーンで NFT MINT 。 Metaplex 。candy machine

Solana チェーンで NFT MINTしたい のでメモ

 

 

まずは環境構築編として、本記事のゴールは、candy-machine コマンドが打てるようになるところまで。

 

solana

 

  • Metaplex
  • MACOS ユーザー向け
  • brew インストール済み
  • yarn インストール済み

 

目次

 

metaplex

前提知識

こちらが詳しい

https://self-development.info/solana上でnftを発行する【candy-machine】/

Candy Machineは、Solana上でNFTを発行するためのツールです。 Metaplexによって、Candy Machineは開発・公開されています また、Metaplexは、最も速く、最も安いNFTエコシステムと呼ばれています。

 

環境構築

brew install git

git version

git version 2.32.1 (Apple Git-133)

ーーー

nodejs インストール (環境確認)

node --version

v16.15.0

** nodejs が インストールされていない方は、 LTS である version 16.xx.xx をインストール

ーーーー

npm インストール

npm install -g npm

npm -v

8.12.1

(これより新しければ問題ないかも)

ーーー

yarn インストール

自分の環境では、別用途で nodejs を使用していたため、念の為 --ignore-dependencies オプションを採用

brew install yarn --ignore-dependencies

情報はこちらが詳しい

https://qiita.com/niwa1903/items/fb1d37c180d6cbc696c8

--ignore-dependenciesをつけておくと、複数nodeの依存関係を無視させることができる。

 

yarn -v

1.22.19

ーーーー

typescript と 実行ツール ts-node を グローバルにインストール

npm install -g typescript

npm install -g ts-node

ーー

ts-node -v

v10.8.1

タブ補完 されなくてもインストールされている。

ーーー

MACOS M1チップのマシンは以下コマンドも必要

brew install pkg-config cairo pango libpng jpeg giflib librsvg

brew_install_00

結構長い

ーーー

 

Metaplex のインストール

 
cd ~
(作業ディレクトリは問題のある開発環境以外は、どこでもよいかも)
 
git clone https://github.com/metaplex-foundation/metaplex.git ~/metaplex
 
インストール完了したら、
metaplex がインストールされていることが確認できる。
 
ls ~/metaplex
 

ARCHITECTURE.md DISCLAIMER.md LICENSE docs rust

CHANGELOG.md Dockerfile README.md js

 
ーーー
この配下に 依存関係をインストールして補完。
環境準備 作業としてはこれで終わりか。
 
yarn install --cwd ~/metaplex/js/
 

yarn_metaplex_js_env


ーーー
 

ここで Candy マシンのコマンドが動くか確認

 

ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts --version

 

0.0.2

 

すごいそっけない。けど動いた!

ここで candy-machine コマンドが実行できることをよく確認しておくこと。

version の番号が返ってこなければ、インストール作業のどこかでミスがある。

ーーー

続編へ

ラズパイに Go言語 をインストールする。

Raspberry pi へ Go lang をインストール

ラズパイは、armv6 の go パッケージを使うため、

そこの部分だけ公式ドキュメントの通りにいかないので、一応 備忘録。

インストール環境

Raspberry pi 3B+

まず ラズパイ にインストールする go 言語のファイルを 以下サイトで確認

https://golang.org/dl/

f:id:asuki_y:20210903134610p:plain

go top

 

ラズパイは、 ARMv6 で 調べる。

f:id:asuki_y:20210903134637p:plain

go lang package list

 

2021/9/3 の最新安定版 go1.17.linux-armv6l.tar.gz  を扱う

右クリックで ダウンロードURLをコピーしておく。

 

ラズパイ ターミナル操作

sudo rm -rf /usr/local/go

( さきほどコピーした ダウンロードURL で wget )

wget https://golang.org/dl/go1.17.linux-armv6l.tar.gz

sudo tar -C /usr/local -xzf go1.17.linux-armv6l.tar.gz

vim ~/.bashrc

90行目あたり、あたり触りのないところに追加。

< 記述内容 >

( ・・中略・・ )

#export GCC_COLORS= ***省略

# Go言語のPATH  以下 1行を追加しておく
export PATH=$PATH:/usr/local/go/bin

# some more ls aliases
( ・・省略・・ )

sources ~/.profile

これで準備完了!

動作するか確認する

go version

go version go1.17 linux/arm

この結果が帰ってくればインストール OK

 

ーーー

適切なパッケージを 選ばないと go version コマンドを使ったときに、

ーーー

go version

-bash: /usr/local/go/bin/go: バイナリファイルを実行できません: 実行形式エラー

ーーー

となる。

ラズパイにインストールするパッケージは、 armv6 のものを選ぼう。

 

 

ラズパイに NodeRED version 2 を インストールする方法 2021 年 秋 版

Raspberry pi  に NodeRED 2.0.x をインストールさせる。

https://www.i-cafe.info/wp/wp-content/uploads/2020/03/Node-RED.png

2021/9/1 現在、これまで使っていた、以下 スクリプトが 使用できなくなっていたため。

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

 

上記スクリプトでは、いろいろエラーで落ちる。

一部エラー内容は記録をとれなかった。

 

( ラズパイへの NodeRED version 2 インストール 成功に至るまでに躓いたエラー内容 )

ーーーー

$ sudo npm install -g --unsafe-perm node-red

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/kelektiv/node.bcrypt.js/releases/download/v5.0.1/bcrypt_lib-v5.0.1-napi-v3-linux-arm-glibc.tar.gz 
node-pre-gyp WARN Pre-built binaries not installable for bcrypt@5.0.1 and node@14.8.0 (node-v83 ABI, glibc) (falling back to source compile with node-gyp) 
node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/kelektiv/node.bcrypt.js/releases/download/v5.0.1/bcrypt_lib-v5.0.1-napi-v3-linux-arm-glibc.tar.gz

 

ーーーー

 

環境

Raspbian GNU/Linux 10 (buster)

Linux raspberrypi 5.10.52-v7+ #1441 SMP Tue Aug 3 18:10:09 BST 2021 armv7l GNU/Linux

nodejs 14.8.0

npm 6.14.7

いつもの準備

apt-get update

apt-get upgrade 

 

インストール方法

mkdir node_inst

cd !$

wget https://unofficial-builds.nodejs.org/download/release/v14.8.0/node-v14.8.0-linux-armv6l.tar.gz

tar xvzf ./node-v14.8.0-linux-armv6l.tar.gz

cd ./node-v14.8.0-linux-armv6l

rm CHANGELOG.md LICENSE README.md

sudo cp -R * /usr/local/

インストールされた nodejs のバージョン確認

node -v

ーーーー

sudo apt install node-pre-gyp

sudo npm install -g --unsafe-perm node-red

ーーー

サービス化

cd /etc/systemd/system/

sudo vim  ./nodered-pi.service

 

( 記載内容 )

[Unit]
Description=node-red-pi
After=udev.target
After=syslog.target
After=network.target
After=remote-fs.target
[Service]
ExecStartPre=/bin/sleep 3
Type=simple
## サービス起動 フルパス 絶対パスで。
ExecStart=/usr/local/lib/node_modules/node-red/bin/node-red-pi

Restart=always
RestartSec=4
User=pi
Group=pi

##作業ディレクトリを定義 ( ここ重要 )
WorkingDirectory=/home/pi/.node-red/
[Install]
WantedBy=multi-user.target

 

ーーーー

sudo systemctl  daemon-reload 

サービス 停止状態であることを確認

sudo systemctl  status nodered-pi.service

NodeRED デーモン起動

sudo systemctl  start nodered-pi.service 

sudo systemctl  enable nodered-pi.service 

起動状態に異常がないかを確認

journalctl -u nodered-pi.service -f

問題なければ ctrl + c で リアルタイムログの監視を停止

ーーー

これで インストールでき、NodeRED 2.0.5 が 正常に起動できた。2021/9/1 

 

便利だったスクリプトが使えなくなったのが痛いですね。

そのうちあのスクリプトもバージョンアップすれば、このようなやり方をせずとも、すんなり、実行できればいいですね。

 

参考記事に感謝🙏

Raspberry Piにnode.jsをインストトールする方法 – あきらのぶろぐ

iOS14 で クラウドを使わない 電話帳 連絡先 を移行・復元する方法

 なんとかできたので、記録。
連絡先データだけ復旧したい場合とか、クラウドを一切使いたくない場合は、便利かも。
 
キーワード
vCard , vcf , iOS , iPhone ,  iOS14 , 連絡先 , 電話帳 , MyContactsBackup , クラウド , クラウド不使用 , アドレス帳 , 移行 , バックアップ , 復元
 
 

できた環境

復元先 iOS 14.6  /  iPhoneSE ( 2020 )

(かつても使ったことがあるアプリなので、おそらく iOS14.6 以前のものでも可能かも)

ーーー

( 復元元は、iPhoneSE (初代) だったが vcfファイル vCard データがエクスポートできればおそらくどれでも可 )

macOS Catalina 10.15.7

chrome ブラウザ 2021/8/12 時点最新 (バージョン: 92.0.4515.131)

ーーー

扱うデータ

vCard 、 vcf データ。

使うアプリ

MyContactsBackup Pro (無償バージョンでも可能かもしれない)

!注意点!

促されるが 不要なので、このアプリからメール送信機能を一切使わない。


連絡帳データのバックアップ

まずは、バックアップ元 iPhoneを操作して連絡先データをバックアップする。

  • MyContactsBackupPro をインストール。
  • アプリを開く。
  • 緑色の " Backup " ボタンを押して 連絡先データをバックアップ

 

以上でバックアップ完了。

バックアップした連絡帳データの取得

  • 右下 歯車のマークを押して、Settings 画面へ。
  • Type は、 vCard であることを確認。
  • WI-FI MANAGEMENT の Server を ON
  • URL が表示される。 192.168.xxx.xxx:8080 など
    • ( クラウドを使わないローカルエリアアクセスである )
  • 手元の WI-FI 環境の Macbook のブラウザからその URL へ アクセス

  • Wi-Fi Download を クリック

 

  • vcf ファイル = vCard データ = 連絡帳データをダウンロードし、取得。
 
このデータから復旧する。

以上で、バックアップしたデータ、vcfファイル ( vCard データ ) の取得が完了。


新しい端末で、vCardデータから連絡帳を復元

新しい iPhone に MyContactsBackup Pro をインストール。

新しい iPhoneMacBook を つなげる。

 
Finder で 接続状態を確認
 

場所:自分のiPhone名 : "ファイル" タブをクリック
すると、インストールされたアプリ一覧が出るので、
 

 
MyContactsBackupPro が  リストに上がっていることを確認
 

 

ここで、先ほど取得した vcf ファイルを MyContactsBackupPro の配下へドラッグアンドドロップ

 
以下のようになる。
 

 

 
vcfデータのコピーが完了したら、 新しい iPhoneを操作。
( ケーブル接続したままでOK )
 
アプリ : MyContactsBackupPro を開く。
 
右下 歯車マークをタップして、Settings 画面へ。

( この際に決して、緑のバックアップボタンを押さない )

 

 
Type : vCard であることを確認

 
 
緑色のボタン " In App vCard Restore " をタップ! これは復元ボタン。

 

 
そうすると、さきほどドラッグアンドドロップした vcf データ の存在を確認できるので、そこをタップ。
 
3つ選択肢が出るので "Restore" を選択
 

 

 

 
すると、復元先の指定として、" 連絡先 " アプリが選択できるので、" 連絡先 " を選択。

 

 
すると、自動で 「 連絡先 」 アプリが開き、、
 
「 xxx件すべての連絡先を追加 」 と出るので、右上の「 保存 」 文字をタップ
 

 
これにて完了!
何年も昔から使っているこのアプリがまだ使えていてよかった。
 

HAproxy  BASIC認証 REST API 用 と ブラウザ GUI 認証で 処理を切り分ける

HAproxy の BASIC 認証で、REST API 用 に適した処理の 記述 と ブラウザから ユーザー パスワードを手入力させるBASIC 認証では、適した書き方が違うようなので、処理を書き分けた。
 

 
 

( 動作環境メモ )
 
Ubuntu 18.04.4 LTS
HA-Proxy version 1.8.8-1ubuntu0.11 2020/06/22
 

 
 
 
## ( 上段 global のコンフィグ等は 略します。 )
## -------------------------------------------------------
## userlist
## -------------------------------------------------------
userlist 管理者_user
  user   管理者     password   ハッシュ化したパスワード
userlist panpy_user
  user   一般usr   insecure-password   パスワード平文    
 
# ---------------------------------------------------------------
# フロントエンドを定義
# port : 80  で待ち受け
# ---------------------------------------------------------------
frontend http-in
 
        bind    *:80
 
        # forntend 内に BASIC認証を記述しない。
        # backendの定義で記述し、BASIC認証の処理を用途で分ける。
 
        # DashBoard GUI
        acl url_gui        path_beg    /gui
        use_backend        gui_servers    if    url_gui
 
        # API SERVER 
        acl url_api        path_beg    /api
        use_backend        api_servers    if    url_api
 
        default_backend        get_away
 
# -------------------------------------------
# バックエンドを定義
# -------------------------------------------
backend gui_servers
 
#       GUI用のBASIC認証処理
        acl auth_一般_ok http_auth(panpy_user)
        http-request     auth if !auth_一般_ok
        server        gui-app        127.0.0.1:1880 check
 
backend api_servers
 
#       REST API用のBASIC認証処理
        acl auth_管理者_ok http_auth(管理者_user)
        http-request    deny unless auth_管理者_ok
        server        api-svr        127.0.0.1:1881 check
 
# -------------------------------------------
# Good-bye
# -------------------------------------------
backend get_away
    http-request deny
 
# -----------------------------------------------
# 上記、漢字のところは適宜 半角英数に修正すると使えるかと思います。
 
 
ーーー
 
ポイントは、
 
・フロントエンド定義のところで BASIC認証を記述しない。
・バックエンド定義のところで、BASIC認証を記述する。
 
こうすることで、 それぞれに意図したBASIC認証が動作してくれるようになりました。
 
HAproxy は、フロントに立たせると、 NodeRED のセキュリティを高めてくれたり相性いいと思うので、どんどん積極的に組み合わせて 使っていきたい!
 
 

 
参考: