fetus-hina / stat.ink Goto Github PK
View Code? Open in Web Editor NEWhttps://stat.ink/
License: MIT License
https://stat.ink/
License: MIT License
トップページですがずらずらと戦績が並んでいてもちょっと判りづらいところがあるので、
1)アクティブなプレイヤー一覧
直近1時間以内の投稿があったプレイヤーのみ、各プレイヤーの最新の投稿のみを表示。
2)最新の投稿
従来の表示
という感じにしてはどうでしょうか。
フェスは連戦で同じブキを連続してカウントしやすい状況が生まれるのでタッグバトル同様に味方チームの全無視が必要
ナワバリバトルではウデマエ(ex: A)は表示されないので
Web 上では必ず ? になってしまう。 ? の場合は表示しないほうがよい
普通に集計しちゃってるのでグラフがまっすぐ
https://stat.ink/u/Marine00/stat/gachi
Had a look through messages/ja/app.php
where there are a lot of corresponding English and Japanese sentences and phrases. I wanted to suggest some translations/phrasings for the English version of the site. Please see my suggested changes here:
https://gist.github.com/frozenpandaman/5b44ded588725094f576/revisions
In "Excluded: Posted Player, All Players(when Private Battle), Posted Player's Team Member(when Squad Battle or Splatfest Battle)", I wasn't sure what "posted player" meant, so I did not make any changes to that phrasing.
Sorry for not fixing these & just submitting a PR myself – not sure exactly what files besides just app.php I'd needed to have changed. Please let me know if I should do this or if you need anything else from me.
何か質問があれば、日本語もいいです。ありがとうございます!
さんざんわかりづらいといわれているのでいい加減に
TZを含められるようにvalidatorを変えるところから必要、たぶん
トップページを見るといま出ているのがいつのプレイ記録かわかりづらいので、可能ならプレイ時間からの経過時間でグループわけして表示してほしい。
イメージ:
直近10分
[記録] [記録] [記録] [記録] [記録] [記録]
[記録] [記録] [記録] [記録] [記録] [記録]
1時間以内
[記録] [記録] [記録] [記録] [記録] [記録]
[記録] [記録] [記録] [記録] [記録] [記録]
3時間以内
[記録] [記録] [記録] [記録] [記録] [記録]
[記録] [記録] [記録] [記録] [記録] [記録]
今日中(yyyy/mm/dd)
昨日 (yyyy/mm/dd)
yyyy/mm/dd
...
トップページでスクリーンショットを並べて表示する場合は、
どのプレイヤーの記録が一見わかりづらいので、
プロフィール画像が左下に出るようにしてはどうか。
イメージ
■■■■■■■■■■■■■■
■■■■■■■■■■■■■■
■■■■■■■■■■■■■■
□□□□□■■■■■■■■■■■
□□□□□■■■■■■■■■■■
□□□□□
rank_exp
rank_after
rank_exp_after
cash_after
かな
次バージョンではフェス中に称号が表示された場合に追加キーとして送信します。
fest_rank はスプラトゥーン英語版だと性別によってキーがぶれるので、とりあえず
下記マップにおける男性名の値を送信します。
今回のフェスでは時間がないので、とりあえずこの仕様で決め打ちです。
50 return {
51 '0': {'ja': 'ボーイ', 'en': 'boy', },
52 '1': {'ja': 'ガール', 'en': 'girl', },
53 }[r]
50 return {
51 '0': {'ja': 'ふつうの', 'boy': 'Fanboy', 'girl': 'Fangirl', },
52 '1': {'ja': 'まことの', 'boy': 'Friend', 'girl': 'Friend', },
53 '2': {'ja': 'スーパー', 'boy': 'Defender', 'girl': 'Defender', },
54 '3': {'ja': 'カリスマ', 'boy': 'Champion', 'girl': 'Champion', },
55 '4': {'ja': 'えいえんの', 'boy': 'King', 'girl': 'Queen'},
56 }[r]
以下、手元の IkaLog が生成しているマップのサンプルです。
{'agent': 'IkaLog',
'agent_version': 'd31122b',
'cash_after': 1831500,
'death': 3,
'death_reasons': {'carbon': 2, 'herocharger_replica': 1},
'end_at': 1444387827,
'fest_gender': 'girl',
'fest_rank': 'Friend',
'image_judge': '(PNG Data)',
'image_result': '(PNG Data)',
'kill': 2,
'level': 43,
'lobby': 'fest',
'map': 'shionome',
'rank_in_team': 2,
'result': 'win',
'rule': 'nawabari',
'start_at': 1444387642}
次のバージョンで色情報の送信に対応します。
(たぶんフェス中は所属チームをこの色情報で見分けられます)
'his_team_color': {'hue': 228, 'rgb': [4, 33, 159]},
'my_team_color': {'hue': 22, 'rgb': [205, 76, 2]},
hue はHSV色空間の色相値 (0~360度)、 rgb RGB 値を示します。
色はキャプチャ環境にて誤差があるので±5度ないしは10度の
誤差を見込んでください。
また赤のような色は0付近と360付近にありますので注意が
必要です。
参考 http://www.peko-step.com/html/hsv.html
{'agent': 'IkaLog',
'agent_version': 'd31122b',
'cash_after': 1838591,
'death': 7,
'death_reasons': {'heroroller_replica': 1,
'nzap89': 1,
'splatroller_collabo': 1,
'sshooter_collabo': 4},
'end_at': 1444390848,
'fest_gender': 'girl',
'fest_rank': 'Defender',
'his_team_color': {'hue': 228, 'rgb': [4, 33, 159]},
'image_judge': '(PNG Data)',
'image_result': '(PNG Data)',
'kill': 1,
'level': 43,
'lobby': 'fest',
'map': 'shionome',
'my_team_color': {'hue': 22, 'rgb': [205, 76, 2]},
'rank_in_team': 1,
'result': 'lose',
'rule': 'nawabari',
'start_at': 1444390656}
こういうやつが4回走るので死ぬほど遅い。
一回にまとめると早くなる(かも)
SELECT MAX("weapon"."key") AS "key", MAX("weapon"."name") AS "name", MAX("subweapon"."key") AS "sub_key", MAX("subweapon"."name") AS "sub", MAX("special"."key") AS "special_key", MAX("special"."name") AS "special", COUNT(*) AS "count", SUM("battle_player"."kill") AS "total_kill", SUM("battle_player"."death") AS "total_death", SUM(CASE WHEN "battle"."is_win" = TRUE AND "battle_player"."is_my_team" = TRUE THEN 1 WHEN "battle"."is_win" = FALSE AND "battle_player"."is_my_team" = FALSE THEN 1 ELSE 0 END) AS "win_count", SUM(CASE WHEN battle_player.point IS NULL THEN 0 WHEN battle.is_win = battle_player.is_my_team THEN battle_player.point - 300 ELSE battle_player.point END) AS "total_point", SUM(CASE WHEN battle_player.point IS NULL THEN 0 ELSE 1 END) AS "point_available" FROM "battle_player" INNER JOIN "battle" ON "battle_player"."battle_id" = "battle"."id" INNER JOIN "lobby" ON "battle"."lobby_id" = "lobby"."id" INNER JOIN "weapon" ON "battle_player"."weapon_id" = "weapon"."id" INNER JOIN "subweapon" ON "weapon"."subweapon_id" = "subweapon"."id" INNER JOIN "special" ON "weapon"."special_id" = "special"."id" WHERE ((((((((("battle"."rule_id"=1) AND ("lobby"."key" <> 'private')) AND (NOT ("battle"."is_win" IS NULL))) AND (NOT ("battle_player"."weapon_id" IS NULL))) AND (NOT ("battle_player"."kill" IS NULL))) AND (NOT ("battle_player"."death" IS NULL))) AND ("battle_player"."is_me"=FALSE)) AND (("lobby"."key"='standard') OR (("lobby"."key"='fest') AND ("battle_player"."is_my_team"=FALSE)))) AND (NOT ("battle_player"."point" IS NULL))) AND ((("battle"."is_win" = battle_player.is_my_team) AND ("battle_player"."point" > 300)) OR (("battle"."is_win" <> battle_player.is_my_team) AND ("battle_player"."point" > 0))) GROUP BY "battle_player"."weapon_id"
ユーザ多すぎてメモリ不足っぽい。まあこれだけいればね、みたいな。
移動平均(10)をもう少しどうにか
f4b0a83 での修正漏れ。たとえば https://stat.ink/u/Joy/310170
さあどうしたもんか
そんなに必要ない気はするけど hasegaw さんはたぶん欲しい
認識率は絶対100%にはならないので、はやくつくる必要がある
色が濃いところは白くしないと見えない
Issue 複数にわけると多くなりすぎるのでまとめてひとつのIssueとします。
1)Excel のオートフィルタ風に絞り込み・ソート
ルール▼ マップ▼ ブキ▼ 結果▼ 殺▼ 死▼ 日時▼
▼ 部分をクリックすると「昇順」「降順」「(ソートしない)」の選択、
特定値の選択が可能なイメージ
殺・死・日時は昇順・降順の選択だけでもいいかも
3)テーブルの「死」と「日時」の間に K/D Raito を表示
K/D Raito = 殺数 ÷ 死数 を %1.2f ぐらいで 例( 3K2D → 1.50 )
1.0 以上なら緑色文字など
1.0 イカなら赤色文字などがみやすそう
できればソート可能な項目に加えてほしい
4)結果 を色で見分けられるようにする
バトル結果ページ同様、結果は緑色・赤色背景とする
5)ブキ絞り込みでは、使ったことのないブキは表示しない
もしくは、ブキ選択に使った数を (10) などで出すとか
DB構造や負荷との兼ね合いでしょうが。
https://twitter.com/NintendoEurope/status/652378121124114432
footerがcontainerの中に入ってしまっている
Pythonではユーティリティクラスは作らずにモジュールに関数を並べていくほうが自然なやり方です。
https://stat.ink/u/fetus_hina/70
たぶん表示だけだと思われるけどまだDB覗いていない
1950p かな
たぶん棒グラフにしたりすると解決するはず。
Kill / Death を別々にして、さらに勝ったときと負けた時で比較できるとおもしろいかもしれない
落ちた人は最初から andWhere
ではじいちゃっていいかも
増えてきたので手を打っておかないと死ぬ
現状のテーブルは何試合のデータか持っていないので無改造(viewだけ)では無理
Draw Ranked Battle Event (EXPRERIMENTAL)
has an extra 'R' – should be "EXPERIMENTAL" :)
IkaLog Slack, l10n channel:
three of the NA titles, "fiend", "defender" and "champion" apply to both genders, so you might not be able to do that
優先度低
短時間にイベントが重なるとどんどん右上に伸びていく仕様になっているので、場合によっては上に突き抜ける(右側は時間軸の関係でアイコン一個分しか外に出ない)。
これはまずいので、アイコン位置を管理して下から埋められるなら埋めるようにする必要がある。
1)
各グラフには勝数・負数、合計数を整数値で記述する。
2)期間による絞り込み
チェックボックスで下記からの選択で期間絞り込み。
・最新ニュース以降※
・ひとつ前のニュース以降※
・3時間以内
・6時間以内
・今日 (yyyy/mm/dd)
・昨日 (yyyy/mm/dd)
・yyyy/mm/dd
・....
※ガチマッチだと、このタイミングでゲームルールが変わるので、このタイプの期間選択が
あるととてもうれしい
https://twitter.com/yasu2704/status/659779144318775296
stat.ink 上で試合開始時刻がデータとして無い時があって、1つ前の試合で正常に終了処理(試合終了判定失敗?)行われなかった時か、前の試合終了時の処理が全て終わる前に次の試合が始まった時? あくまで憶測だけど #IkaLog
https://twitter.com/yasu2704/status/659780096723562496
開始時刻がデータとしてないからstat.ink のdata-periodの値が-1になって、多分処理的には前回から数値が変わるとボーダーが入るようになってるんだろうけど、-1になることで上下にボーダーが入る現象が起きてるっぽい?
https://stat.ink/api/v1/battle?id=25227
{
"id": 25227,
"url": "https://stat.ink/u/yasu2704/25227",
/* ... */
"period": -1,
"agent": {
"name": "IkaLog",
"version": "d528a86",
"custom": null
},
"start_at": null,
"end_at": {
"time": 1446130908,
"iso8601": "2015-10-29T15:01:48+00:00"
},
"register_at": {
"time": 1446130908,
"iso8601": "2015-10-29T15:01:48+00:00"
}
}
コピペミス
{
"key": "bamboo14mk2",
"name": {
"en_US": "mboozler 14 Mk II",
"ja_JP": "mboozler 14 Mk II"
},
"type": {
"key": "main",
"name": {
"en_US": "Main Weapon",
"ja_JP": "メインウェポン"
}
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.