夏イベか告知され、7月のEOが復活した今みなさんいかがお過ごしでしょうか。
自分は1-5、2-5が終わり3-5と4-5が残り1回です。ここからが長いんですが。
5-5?いえ知らない子ですね今回は艦これと銘打ってますが半分は技術的なお話。こんな簡単なことを技術といっていいか知りませんが
なんとなく仕事でPythonを使いそうなので勉強も兼ねて艦これのダメージ計算機でも作ろうかと
現在あるダメージ計算機はよくできているので2番煎じ感半端ないですが
(あまり調べてないのでもうあるという突っ込みはありで)
機能要件としては
・特定の敵に対してのダメージ乱数を出す
・特定の敵から受けるダメージ乱数を出す
・ワンパン撃破できる確率を出す
・ワンパン大破になる確率を出す
・etc...他に何かあればいってくれれば可能な範囲で実現
まあダメージを出すのはいいんですけど自分が今どれくらいの確率を引いているのかってのはやはり知りたいところ。
また大和型のような装甲が一見堅そうに見える艦はイベント深海で出てくるような艦から中途半端に装甲を貫いて
ワンパン大破になる率が高いのではないか(それ以外は中破ストッパーが働くのではないかみたいな
すでに個別に出している人とかもいそうですけどね。
まあ開発の練習なので実装する機能は何番煎じでもいいでしょう。
とりあえず環境構築+DBの情報をJSONで返すところまでで来たので悪戦苦闘のメモを
開発環境は
・CentOS7
・MySQL5.6
・python2.7.5
・django1.8.2
・django REST フレームワーク3.5.1
・apache2.4
・mod_wsgi-3.4-12
CentOS7からいろいろ変わっているみたいで
サービスの再起動とかはsystemctlコマンドになっているみたいchkconfig的なこともできるっぽい
入れ方もより分かりやすくなってました。
以下の順番で手を動かしてみた
・djangoを自前のサーバで動かした時
・django REST Frameworkを使った時
・apacheのモジュールを使った時
基本的にはREST APIを作成してその情報を元に処理する感じで書こうかと。
仕事でもAPI作りそうな感じがするので
ぶっちゃけ入れ方とかはいろんなところで解説されているし今さら何ですが参考にしたところを載せます。
・MySQL
CentOS 7にMySQL最新版をインストールここに書いてある通りに入れたら入れられました
とりあえず的情報を格納するテーブルを作る。
mysql>CREATE database KanCore
mysql>CREATE TABLE enemy
(
id INT(11) NOT NULL auto_increment,
name VARCHAR(64) NOT NULL,
type VARCHAR(10) NOT NULL,
Lv int(3) unsigned NOT NULL,
hp int(3) unsigned NOT NULL,
fire int(3) unsigned NOT NULL,
torpedo int(3) unsigned NOT NULL,
antiaircraft int(3) unsigned NOT NULL,
defence int(3) unsigned NOT NULL,
equipment_type VARCHAR(10) DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE=innoDB DEFAULT CHARSET=utf8;
そのテーブル構造はないという突っ込みがありましたらどうぞ
データをこんな感じで入れる
INSERT INTO enemy (name,type,Lv,hp,fire,torpedo,antiaircraft,defence) VALUES('駆逐艦イ級','normal',1,20,6,15,6,5)
まああとでdjangoでモデルを定義するのでここでやらないでもいんですけどね。
既存のDBがあった場合にどうするかという参考になれば
・django
導入
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
sudo easy_install pip
sudo pip install django
確認
pip freeze | grep django
これでdjangoが使えるようになりました。
開発
djangoではプロジェクトとその中に複数のアプリを持つことができる。
1つのプロジェクトの中で共通の設定(どのDBを使うかなど)を決めておき
アプリごとで例えばアクセスするテーブルを変えるとかがいいのだろうか。
とりあえず適当にdjangoディレクトリでも作っておく
その中でプロジェクトの作成
django-admin.py startproject KanCore
KanCoreディレクトリの中にさらにKanCoreディレクトリが存在する。
共通の設定はこの中で行う。
|--KanCore
| |--KanCore
| | |--__init__.py
| | |--__init__.pyc
| | |--settings.py
| | |--settings.pyc
| | |--urls.py
| | |--urls.pyc
| | |--wsgi.py
| | |--wsgi.pyc
| |--manage.py
settings.pyの中にmysqlの情報を入れる
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'KanCore',
'USER' : 'root' ,
'PASSWORD' : 'mysqlpasswd',
'HOST' : '',
'PORT' : '3306',
}
※ユーザーとパスワードはmysqlにあるものを使う
djangoでmysqlを使うにはmysql-pythonが必要なので入れる
sudo pip install mysql-python
なんか自分が入れた時はエラーが出て入れるのに苦労したが肝心のエラーログを取り忘れてしまった。
おそらく.soファイルがないとか言われるのでシンボリックリンクを張ってやれば解決できた気がする
以下をmanage.pyがあるディレクトリで行う
python manage.py migrate
python manage.py createsuperuser
何か想像以上に長くなったので続きは次回