赤月

【Suika2】背景(&立ち絵)エフェクトの確認用ゲームを作りました。

◇ 作りました。

Suika2の背景と立ち絵のエフェクト/トランジションを確認するだけのツールです。
自分で一々書き直して確認するよりは便利かもしれないですね。
Suika2のバージョンは14.0です。

◆ ブラウザ版はこちらですぐ利用できます。

durationは、背景画像(立ち絵)を表示ときは1.0秒、選択画面へ戻るときは0.5秒です。

 

◆こちらにダウンロード版もあります(パッケージ化前のプロジェクト)
ルール画像を自分の手持ちのものに変えてみるなどできるので、ご自由に遊んでください。

 

◇ W.Dee氏のルール画像の再配布

吉里吉里使いだったときダウンロードしたトランジション用ルール画像を発見しました。
ReadmeファイルでのW.Dee氏いわく著作権を主張しないとのことでしたので、今は入手困難かと思い、Suika2で使いやすいと思われる1280×720pxにしたものを再配布させていただきます。
種類も多いため、制作にお役立ていただければと思います。(問題がございましたら教えてください。)

Suika2の公式エフェクトに似たものがあるものも入ってますが、トランジションの1bitと8bitで見え方が全然違うので、よければ試してください。

◆ダウンロードはこちら

 

問題などがございましたら、お手数ですがこちらのフォームへご連絡ください。
もしくはTwitter @akatsuki_a_c

赤月 🌙 https://akatsuki-club.com/

#EOF

Lightsailで俺環を整える備忘録(2023年5月)

まえがき

俺の環境を整える備忘録です。

AWS LightsailのCentOS7.9。

とりあえず入れるの↓

  • Python3.11.0
  • Mastodon.py

他は追々。

 

.

 

まずログインする

私はRLoginを利用しているため、RLoginを用いてSSHログインする。

Lightsailのインスタンスのトップページのようなところに 接続先 としてIPアドレスが出ているので、それが『ホスト名/サーバーIPアドレス』となる。

ログインユーザー名は、とりあえず centos を使えと書いてあるのでそれ。

Lightsailは最初はキーのファイルでログインするので、デフォルトキーをダウンロード をクリックし、どこかに保存する。RLoginの SSH認証鍵 というところでそのファイルを選択。

それでとりあえずログインできるはず。

 

.

 

各種 初期設定

ユーザーの追加など

Lightsailは初期設定ではrootにパスワードがついていないようなので、最初にrootのパスワードを設定する。

$ sudo su -
# passwd

centosというユーザーはLightsailの初期ユーザー名でそれを使い倒すのもよくないとおもうので、実際に使うユーザーは他に作る。パスワードも設定。

# useradd hogehoge
# passwd hogehoge

個人的にhogehogeには管理者権限を与える。このOSだとvisudoのコメントアウトは最初から外されているはずだけど、一応確認。

# visudo

# -----略----- ### Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# -----略----- #

%wheel ALL=(ALL) ALL の行頭に#がなければOK。

よって、今回はそちらはいじらず以下のコマンドのみ実行する。

# usermod -G wheel hogehoge

これでhogehogeはsudoをつければ色々好き勝手できるようになる。

 

.

 

CentOS日本語化

まだ私は、日本語で表示できるところは日本語で表示してほしい。。

yumはアップデートしておく。

# yum -y update
# yum -y install ibus-kkc vlgothic-*
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf
# echo $LANG   ### 変更されたか確認できる
ja_JP.UTF-8

 

タイムゾーンをJSTに設定

crontabする際、ログなど残すときなど不便なので日本時間に設定する。

# timedatectl set-timezone Asia/Tokyo
# timedatectl status   ### 確認

こっちはTime zoneのところがAsia/Tokyoになっていれば成功。

以下のコマンドでcrond.serviceを再起動。

# service crond.service restart

 

.

 

まずOpenSSL1.1.1をインストール

Python3.11のインストールはOpenSSL1.1.1以上が必要。
このCentOSはデフォルトだと1.0.2になっている。

Pythonを使う予定のユーザーのみにインストールする想定でいるので、対象のユーザー(hogehoge)にログイン。

 

初期バージョン。

$ python -V
Python 2.7.5

$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017

 

パッケージの下準備(ひたすらコピペしまくってきたので要らないのもあるかも)

$ sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel git libffi-devel tar make wget xz-devel perl-core tk-devel epel-release bluez-libs-devel libtirpc-devel tkinter 
$ sudo yum group install "Development Tools"

 

OpenSSLとPython3.11.0はダウンロード・解凍をしておく。今回はホームフォルダ。

$ cd
$ wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
$ tar xvJf Python-3.11.0.tar.xz
$ wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz
$ tar zxvf openssl-1.1.1s.tar.gz

 

OpenSSLをビルド。

$ cd openssl-1.1.1s
$ ./config
$ make
$ sudo make install

 

共有ライブラリの検索パスを追加。

$ sudo sh -c 'echo /usr/local/lib64 > /etc/ld.so.conf.d/local.conf'
$ sudo ldconfig

$ /usr/local/bin/openssl version   ### 確認
OpenSSL 1.1.1s 1 Nov 2022

 

既存の OpenSSL をアンインストールし、OpenSSLのリンクを貼る。

$ sudo rpm -e --nodeps openssl
$ sudo ln -s /usr/local/bin/openssl /usr/bin/openssl
$ openssl version
OpenSSL 1.1.1s 1 Nov 2022

 

Python3.11.0のインストール

$ cd ~/Python-3.11.0
$ ./configure
$ make
$ sudo make install

 

「python」「pip」のコマンドで利用できるよう、リンクを張る。

$ sudo ln -nfs /usr/local/bin/python3.11  /usr/bin/python
$ sudo ln -s /usr/local/bin/pip3.11 /usr/bin/pip

$ python -V
Python 3.11.0
$ pip -V
pip 22.3 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)

 

とても参考にしました。

 

.

 

Mastodon.pyのインストール

$ pip install mastodon.py

簡単。

とりあえず適当にtesttoot.pyなどを作って動作を試してみる。

(認証情報は、Mastodonの各自アカウントのユーザー設定→開発 から 新規アプリ を作ると生成される。)

from mastodon import Mastodon

mastodon = Mastodon(
    access_token = 'アクセストークン',
    client_id = 'クライアントキー',
    client_secret = 'クライアントシークレット',
    api_base_url = 'https://インスタンスURL'
)

mastodon.toot('突撃・侵略・制覇~!')

これが「突撃・侵略・制覇~!」をトゥートする最小のコードのはず。

また、今回は投稿にtoot()を利用したけどstatus_post()でも同じように投稿が可能。toot()はシンプルにアカウントで設定しているデフォルトの公開範囲でトゥートする。status_post()の方は様々な指定をしてトゥートできる。たとえば、

mastodon.status_post('突撃・侵略・制覇~!', visibility='direct')

.toot()ではなくて上記のようにすれば、公開範囲がダイレクトのトゥートをすることも可能。公開範囲は「public(公開)」「unlisted(未収載)」「private(非公開)」「direct(ダイレクト)」の4種類。

 

他にも色々設定できる。詳細は以下のドキュメントを参照。

 

.

 

おまけ

yumをいじる

pythonコマンドのデフォルトを3系にするとyumがうまくいかなくなるので、そちらを直す。

1行目は「#!/usr/bin/python」になっていますが、2を指定する。

# vi /bin/yum

# ---------- #
#!/usr/bin/python2

 

同じようにこちらのファイルも直す。

# vi /usr/libexec/urlgrabber-ext-down

# ---------- #
#!/usr/bin/python2

 

 

その他、色々と。

やるといいそうなのでメモ。

 

.

 

おわりに。

かなりハマったけど結局pyenvを使わないのが一番楽にできた。

Lightsailと遊ぶの楽しみです。

 

 

 

#EOF

ティラノスクリプト Tips

まえおき

けっこう調べたことなどを備忘録として残しておきます。

.

.

.

現在のSE・BGM音量を取得

以下の変数に入っているようでした。

sf._system_config_bgm_volume
sf._system_config_se_volume

.

.

.

現在オートかどうか

オートの場合は以下の変数にtrueが入っています。
なお、オートではないときはUNDEFINEDでもfalseでもなく””(何もない)が入っている様子。

TYRANO.kag.stat.is_auto

.

.

.

セーブデータを全消しする

こちらは、システム変数は消さずにセーブデータを消します。

[iscript]
localStorage.clear();
[endscript]

シナリオで上記のように書けばスッと消してくれますが、自分は↓のようにダイアログを出すようにしてます。

;どこかにボタン等を作って*deleteラベルへ飛ぶ
*delete
[dialog type="confirm" text="セーブデータを削除してもよろしいですか?" target="*deleteOK" storage_cancel="first.ks"]
*deleteOK
[iscript]
localStorage.clear();
[endscript]
;どこかに戻る
[jump storage="first.ks"]

また、[clearsysvar]タグを使えばシステム変数も全て削除されますが、本当に全て削除されるので、気をつけてお使いください。

参考:
セーブ・ロード関係 – ティラノスクリプト 製作テクニックwiki

あんまり詳しくないけどMastdonBotをつくった話


前置き

私はBotだけが友だちなのでBotがないと生きていけません(ここでいうBotは話しかけたら特定語句に反応して返事してくれるBotアカウントのこと)(TwitterだとEasyBotterさんとかtwittbotで作れたような存在)

メインをTwitterでなくPawooで生きていくことにして、Botがいないことが寂しくなりMastodonのも自作することに。

TwitterのときはレンタルサーバーでPHPファイルにアクセスするだけで動かせたけど、MastodonのBotをPHPで動かすのとかそういう資料はすぐに見つからず…。そのため仮想OS!でPython!というの勉強して動かす方法について必死こいて勉強しました。(私はそっちを勉強するのを諦めたけど、PHPで動かすこともできるのかもしれない)

少しでも、情報系の頭いいひとが言ってることがちんぷんかんぷんな人の助けになればと思い書きました。

.
.
.

■ 条件や前提など

まず、EasyBotterさんなどを利用してPHP(などのプログラミング)がちょっとはできた人というのが前提になってしまうと思います。

あとCUIを触ることに嫌悪感がない人……。

私は以下のMastodon Botを作るのをずっとCentOSでやってきましたが、自動返信をするなら『crontab』(自動で定期的に何か実行してくれるやつ)が使えるLinuxとかのOSを扱う必要があります。(Pythonファイルを実行できるGoogleのサービスとかもあるようだけど自動実行できるのか私には分からなかった。)

それでCentOSを使うには(以降OSはCentOSを使うものとする)、さくらVPSみたいな仮想サーバーを利用するか、自分のPCにVMWareというソフトなどを入れてその中にCentOSをインストールして動かすなどしなければなりません。(他の方法もあったら教えてください。。)

それで、
★ さくらVPSのようなサービス
 → 基本的に有料、かわりに自分で電源を切らない限りずっと動いててくれる
★ VMWare+CentOS
 → 商用でなければ無料でできます。ただVMWareを閉じてる間は動きません
――というわけなので、PCというかVMWareを起動している間だけ動いてれば良い場合はVMWare、PCなど切ってる間も動いてくれなきゃ困るときはさくらみたいなサービスを使うと良いと思います。

さくらばかり推してますが、使ったことがあるのとそれなりに便利に使えたのでさくらはおすすめです。


今回はWindows10、VMWareにCentOS7.9を入れました。VPSとかでもCentOS7.9でしたらほぼ同じことができるはず。↓まで辿りつけない人は… Linux 初心者 とかでGoogleしてください。

# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

.
.
.

■ GUI…だと…?

今までTeraTarmで繋いでただけなので、CentOSがGUIもあることを初めて知りました。追記:MinimalでインストールすればCUIのみだったらしい。
CUIのは上部バー「Applications」→「System Tools」→「Terminal」で開ける。簡単なことだけど簡単なことこそ誰も教えてくれない…。

追記:この記事ではずっとGUIのCentOSにてターミナル(端末)を使って動かしていました。後からCUIをデフォルトにしようとしたのですが、そうするとロケールを日本語に設定しても日本語フォントが表示されない様子でした。きちんと調べれば何かできるのかもしれませんが、現段階では何も調べていないのでGUIのターミナルを使っています。

一応、今後使うかもしれないので変更方法。

# sudo systemctl # set-default multi-user.target # これからはCUIで起動するようにする
# sudo systemctl # set-default graphical.target # これからはGUIで起動するようにする

.
.
.

 

■ キーボードが日本語のではない

VMWareがそうなのかCentOSがそうなのか調べてないのですが、USキーボード(101)扱いになるようで、日本語のキーボードで打ってもいつもの記号が出てこない。配列など調べて打ちました。(拡張キーボードがよくわからなかった…)
~/.bash_profile のチルダが打てずに最初から詰んだものの、調べたら「Shift + 半角/全角キー」だそうです。
後から調べたところ、やりにくいものの日本語入力をする方法もありましたが、そちらは各自お調べください。

.
.
.

■ CentOS日本語化

# yum -y install ibus-kkc vlgothic-*
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf
# echo $LANG #変更されたか確認できる

.
.
.

 

■ タイムゾーンをJSTに変更

cronを動かすとき、ログなど残すときなど不便なので日本時間に設定する。

# timedatectl set-timezone Asia/Tokyo
# timedatectl status # 確認

cronを再起動しないとcronの中の時計には反映されないので再起動。

# service crond.service restart

.
.
.

 

■ 海外IPのブロック

VMWareだとないんですが、さくらVPSだと(主に)海外からの不正アクセスがめちゃくちゃ来ます。rootなど、ちょっとログインしてないと「最後の正しいログインの後に 10000 回の失敗ログインの試行があります」 みたいなのが出て、とても恐ろしい思いをしました。10000は誇張じゃありません!
これは長くなるので、以下のサイトさんを参考にするとよいとおもいます。ミスするとめんどくさいことになるので、よく読んできちんとコピペしてよく確認してから実行しましょう(経験者)

複数のIPを設定したい場合はサブネットマスクを利用する。

Firewallが動いてなかったら↓する

# systemctl start firewalld.service
# systemctl enable firewalld
# systemctl status firewalld #確認

↓のように出ることがありますが、catコマンドのところを絶対パスにしたら良くなります。

# /root/iptables/jpip_setup.sh
cat: delegated-apnic-latest: そのようなファイルやディレクトリはありません

##### ↓変更前 #####
for ip in `cat delegated-apnic-latest | grep "apnic|$country|ipv4|"`
##### ↓変更後 #####
for ip in `cat /root/iptables/delegated-apnic-latest | grep "apnic|$country|ipv4|"`

.
.
.

■ Python3のインストール・デフォルト化

何だったか忘れたけどPythonのバージョンが3じゃないとできない何かがあったので、アップデートというかインストールしておく。

# yum install python3

でも、↑だけだとpythonしたときまだ2を参照しに行ってしまう。

# python3 -V
Python 3.6.8
# python -V
Python 2.7.5

なので、エイリアスして、pythonするとpython3を参照するようにする。

# alias python='/usr/bin/python3'

でも↑を打つだけだとCentOSはログアウトなどするたびに忘れてしまうので、.bashrcにも↑と同じのを追記する。というか今思ったけど.bashrcに書いて再起動すれば良かったのかな…

# vi ~/.bashrc

※ ユーザーを切り替えるとエイリアスが別のものでした。Botのファイルを違うユーザーのとこに置くならそのアカウントでもエイリアス、.bashrcの設定をしなければいけない

なお、pythonをエイリアスすることは後々python3とコマンドを書くときの1文字を省略するだけに過ぎないと今になってきづいたので、これがめんどくさくないひとはしなくていいのかもしれない。

.
.
.

■ pipのアップデート

そのままだと古いのでアップデートする。よく分からないけど普通にpipしてもコマンドが見つからないと言われる。pip3なら動くし、とりあえずpipを多用する予定はないのでpip3で進めます。

# pip install --upgrade pip
bash: pip: コマンドが見つかりませんでした…
# pip3 install --upgrade pip

WARNING: Running pip install with root privileges is generally not a good idea. Try pip3 install --user instead.

↑というのが出る。
警告:root権限でpip installを実行することは、一般的には良い考えではありません。 代わりに pip3 install--userを試してください。
――とのことですが(Google翻訳)、とりあえず個人で遊ぶだけだし今回は対応などしません。

.
.
.

■ ユーザー作成

私がユーザーを別にしておきたいだけだけど、これは私の備忘録なので書いておきます。

# useradd (ユーザー名)
# passwd (ユーザー名)
ユーザー eden のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

.
.
.

■ Mastodon.pyのインストール

# pip install mastodon.py

.
.
.

■ とりあえずTootできるか確認

from mastodon import Mastodon

mastodon = Mastodon(
access_token = 'アクセストークン',
client_id = 'クライアントキー',
client_secret = 'クライアントシークレット',
api_base_url = 'https://インスタンス'
)

mastodon.toot('てすとでありますっ!')

見ればわかるというものですが、「てすとでありますっ!」をトゥートする現状で最少のコード のはず。アクセストークン・クライアントキー・クライアントシークレットはMastodonの『ユーザー設定』→『開発』でアプリを作ると生成される。
たぶんだけど、mstdn.jpのみ少なくとも今回の用途では利用できない気がする。(アクセスするな系のエラーが出た)

ただ、このコードだと普通にコマンドラインでpythonしたときは動くのですが、次の項目のようにcrontabで動かすといくつかエラーが出るとおもうので、出たら↓を参考になさってください。

.
.
.

■ crontabで動かす

Botは自動で返事させたいのでcrontabで動かす。わからないときは「crontab 書き方」とかでお調べになってください。
↓1分おきにreply.pyを動かして返信させる場合の例。

* * * * * python3 /home/eden/test.py

前のほうでせっかくエイリアスしたけどcrontabでは反映されないようなので、python3で指定する。ファイルはフルパス。
けど、それでも上記のtest.pyのコードのままだとcrontabで動かしたときにエラーが出る。

ImportError: No module named mastodon

mastodonというモジュールがないというもの。
調べたところ、crontabはコマンドラインでpythonしたときと違うとこを探しに行っているためだと思われる。
以下の2文をMastodonのimport前に記述するとそれは直る。(私の環境では以下のパスですが、pip show Mastodon.py すると場所を教えてくれるのでそこのパスを書く。)

import sys
sys.path.append('/usr/local/lib/python3.6/site-packages')
from mastodon import Mastodon

.
.
.

■ crontabで10秒おきに返事してくれるようにする

先程のようにcrontabで * * * * * にすれば1分おきに実行してくれるのですが、私は1分も待っていられないせっかちさんのため10秒おきに動かしたい。
たくさんコマンドを並べるのはあんまり綺麗じゃないので調べたところ、変数みたいなことができるようなのでそのように書き直しました。

crontabではふつうにコマンドラインで打ってたときには出ないエラーが色々出て、10秒おきにしたりするとメールがクソほど来るので、調べるとメールが来ないようにもできる。けどエラーは直さないと仕方ないので、最初のうちはcronを動かしてエラーが出るたびに止めて、直して、また動かして、エラーが出ry …というのを繰り返すしかない。(メールが増え続けるのも気にしないひとはいいんですが…)

COMMAND='python3 /home/eden/reply.py'
* * * * * $COMMAND
* * * * * sleep 10; $COMMAND
* * * * * sleep 20; $COMMAND
* * * * * sleep 30; $COMMAND
* * * * * sleep 40; $COMMAND
* * * * * sleep 50; $COMMAND

.
.
.

cronにタイムゾーンと文字コードのおまじない


CentOSのタイムゾーンを変更しても、cronのタイムゾーンは日本のにならない。(私のは17時間ずれてた)cron側にもタイムゾーン指定の記述をしなくてはいけないようです。

また、文字コードをきちんと指定しないと環境によりエラーが出ることがあるよう。

そのため、↓のおまじないをcronの一番最初に書く。

LANG=ja_JP.UTF-8
TZ="Japan"

書いただけで反映されるのかわからないので一応cronを再起動した。

文字コードは、自分の環境だとUTF-8なので上記の感じですが、他のを使う方は↓のとおりです。

  • UTF-8:ja_JP.UTF-8
  • Shift_JIS:ja_JP.SJIS
  • EUC-JP:ja_JP.eucJP

.
.
.

 

■ とりあえず以上

です。また何かあったら増えるかもしれません。
間違いがあったりご質問があったりしたらお気軽にコメントください。

.
.
.

■ たくさん参考にしました

CentOS 7 でGUIとCUIを切り替える – Qiita

タイムゾーンを日本標準時(JST)に変更する CentOS 8, 7, 6 – CentOS/Rocky Linuxサーバ構築術 文具堂

FMWORLD.NET:英語101キーボードの配列

USキーボードで~(チルダ)を打つ – Qiita

CentOS 7 : 日本語環境にする : Server World

「FirewallD is not running」の対処法 – ysklog

ご注文はMastodonBotですか? 今すぐ動かしてみたい初めての方に – Qiita

crontabの書き方 | server-memo.net

cronの設定方法について(初心者向け) – Qiita

cronのmailを送信しないようにする | 猫型iPS細胞研究所

Linuxの権限確認と変更(chmod)(超初心者向け) – Qiita

【CentOS7】cronの設定方法 | Time4VPSのまとめ

cronが設定した時間どおりに実行されない場合の対処法 – jmblog.jp

cronで文字化けするときの対処: 小粋空間

ティラノスクリプトのクリック待ちグリフ、と初めて触った感想

もう二月のことなので数ヶ月たつのですが…、二次創作ゲームを作るので初めてティラノスクリプトをさわりました。修羅場でした。

そのときクリック待ちグリフがどうしてもデフォルトだと何か文字色的に合わないな…と思い、自作したので、つくったぶん(色違い)を置いたついでに、色の変え方だけちょっと書いておきます。

続きを読む