3日坊主アプリ開発 165〜185日目


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

3日坊主で終わらないために始めた3日坊主アプリ開発日記ですが、3日を大きく上回り、なんと164日続きました。

自分としては大記録です。
短い間でしたがみなさんありがとうございました。

・・・

・・

いやごめんなさい終わらないです。

ちょっと20日ほど、アプリで稼いだお金を使って別世界に行ってました。

アプリで稼いだお金は臨時収入なので、完全に自由に、勝手に好きなことに何にでも使えるのでとても嬉しいです。

もう稼いだ分、全部使い切っちゃったけど。

今日からまた開発頑張ります・・・

 

今日は対人戦用のテーブルが足りないことに気づいたので追加していました。
また、クライアントからサーバにアクセスする際のインターフェイスを考えていました。

別に仕事じゃないので、ちゃんと設計しないで行き当たりバッタリ実装の方が面白くて良いかな。

自分が楽しいことが続くコツだと思います。

・テーブル

[支配者テーブル]

内容:

争って勝ち取る15ステージの支配者情報を保持する。

カラム:

ステージID,ユーザID,連勝回数,勝利者コメント

・サーバアクセス

[支配者情報取得]

対戦ステージ選択画面用に、対戦ステージの支配者情報を取得する。

[対戦相手情報取得]

対戦ステージを選択後、対戦相手のロジック情報などを取得する。

[対戦結果送信]

対戦後、勝敗結果をサーバに送信する。

・・・だめだ、なんかER図とか書きたくなってきた。

  • 明日の予定

対人戦の実装 サーバ処理

3日坊主アプリ開発 164日目 DB設計


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • 今回の作業

対人戦の実装 17時間目(全20時間)
 

対人サーバのDBには、用意される15の対人ステージでの対戦内容や勝敗結果を格納します。また、対戦した結果、奪い合ったアイテム(ロジックパネル)の記録も保存し、万一不正をしたユーザがいたら、そのユーザを検知出来るようにします。

いくつかのテーブルを作ります。
それぞれのテーブルの内容とカラムは以下のようにします。

[対戦履歴テーブル]

内容:

対戦した内容を保持。後から対戦内容を再生できる。

カラム:

ステージID,対戦日時,1PのID,2PのID,1Pのレベル,2Pのレベル,1Pロジックデータ,2Pロジックデータ,勝敗結果,1P取得ロジックパネル,2P取得ロジックパネル

[ユーザテーブル]

内容:

ユーザが対戦した結果、今まで取得したすべてのロジックパネルを記録する。不正対策に利用する。

カラム:

プレーヤーID,識別ID,名前,パスワード,コメント,累積取得ロジックパネル

※パスワードは端末移動に利用

[ご褒美テーブル]

内容:

対戦で連勝したなど、特定の条件でプレゼントした履歴。

カラム:

プレーヤーID,取得条件,達成状況,取得ロジックパネル

 

これで大丈夫かな・・・

  • 明日の予定

対人戦の実装 18時間目(全20時間)

3日坊主アプリ開発 162〜163日目 添付メール


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • 今回の作業

対人戦の実装 15~16時間目(全20時間)
 

今回は、メールにファイルを添付するコマンドを調べました。

サーバはCentOS6です。

以下、忘備録です。

メール送信のための準備は済んでいるものとします。

 

uuencodeが必要になるため、予めインストールします。

# yum -y install sharutils

ファイルを添付してメールを送るコマンドは以下の通りです。

# uuencode ./test.png test.png | mail -s “uuencodeで添付するよ” メールアドレス

aオプションでも添付できます。

# echo “本文” | mail -s “こっちはaオプションだよ” -a test.png メールアドレス

これで添付メールが送れました!!

 

次に、メール送信を自動化します。毎日午前3時に、mysqlの特定データベースをダンプしてzip圧縮し、そのzipファイルをメールに添付して自動送信するようにしました。

/var/backup/mysqlディレクトリに一時的なバックアップファイルを置くことにします。
/var/backupディレクトリにメールを送信するスクリプトを作ります。
そしてcronでスクリプトをキックします。

具体的な内容は以下の通りです。

 

まずmysqlの接続情報ファイルを作成します。

# vi /var/backup/my.conf
—– ここから —–
[client]
user = ユーザ
password = パスワード
host = localhost
—– ここまで —–

次にスクリプトです。

# vi /var/backup/backup_mysql.sh
—– ここから —–
#!/bin/sh

# 保存期間
period=90
# 保存場所
dirpath=’/var/backup/mysql’
# ファイル名
filename=`date +%Y%m%d`

# ダンプ実行
# –single-transaction 一貫した状態をダンプ ※InnoDBのみ
mysqldump –defaults-extra-file=/var/backup/my.conf –single-transaction –databases データベース名 > $dirpath/$filename.sql

# 圧縮して元のsqlファイルを削除
zip -P パスワード $dirpath/$filename.zip $dirpath/$filename.sql
rm -f $dirpath/$filename.sql

chmod 700 $dirpath/$filename.zip

# 添付してメール送信
uuencode $dirpath/$filename.zip $filename.zip | mail -s “db backup” メールアドレス

# 保存期間を超えたら削除
oldfile=`date –date “$period days ago” +%Y%m%d`
rm -f $dirpath/$oldfile.zip
—– ここまで —–

一応、サーバ内に90日間保存しておくことにしました。90日を超えたファイルは逐次削除されますので、バックアップファイルが増加し続けることはありません。

最後に、毎日午前3時にこのスクリプトをキックして完了です。

# crontab -e
—– ここから —–
0 3 * * * /var/backup/backup_mysql.sh
—– ここまで —–

 

これで対人サーバがこの世から消し飛んでもバックアップデータがあるので安心です。

最悪1日巻き戻りますけど・・・

え?今回の作業は対人戦の実装じゃないのかって?

今回は対人戦を行うにあたって、各ユーザーのデータを格納するためのデータベースのバックアップ処理となります。

下準備の下準備みたいな感じです。
次からデータベース設計になります。

残り4時間しかない・・・

  • 明日の予定

対人戦の実装 17時間目(全20時間)

3日坊主アプリ開発 160〜161日目 アンインストール


    ∩∩
   (´・ω・)
   _| ⊃/(___
 / └-(____/
  ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • 今回の作業

対人戦の実装 13~14時間目(全20時間)
 

星のドラゴンクエストをアンインストールしました”記録”は3日でした。

え?アプリ開発日記じゃないのかって?

明日から頑張ります・・・

  • 明日の予定

対人戦の実装 15時間目(全20時間)