バナーナナブログ

宮城県仙台市より、日々思ったことを綴っていくウェブログです。

Slackのfiles.upload APIを使ってファイルを簡単に連携する

AWS等のクラウドサービスでサーバ内で作業をしていて、ファイルをローカルに落としたい、なんてことありませんか?
セキュアなファイルを取り扱うなら考えることは多くなるかと思いますが、雑に扱っていいものは手軽に操作したいですよね。

ということで、slackを使って簡単にファイルを連携する方法を自分のために書き残します。

準備するもの

  • Slackのワークスペースおよび投稿先のチャンネル
  • 適当なサーバ(curlコマンドが使えるもの)
  • 「楽をしたいんだ」という強い気持ち

Slackのアプリ作成

先ずは、Slackでアプリを作成します。
https://api.slack.com/ にアクセスします。 f:id:smdbanana:20200127114833p:plain 「Start Building」を押下します。

f:id:smdbanana:20200127115009p:plain 「Create a Slack App」のダイアログが出るので、アプリ名とワークスペースを指定します。
設定出来たら「Create App」を押下します。

f:id:smdbanana:20200127115344p:plain アプリが出来上がったら、「Permissions」を押下します。

「OAuth & Permissions」の画面に遷移するので、下の方にある「Scopes」に移動します。 f:id:smdbanana:20200127115401p:plain 「Add an OAuth Scope」を押下し「files:write」を選択します。

f:id:smdbanana:20200127115616p:plain Scopeの追加が出来たら上のほうに移動し、「Install App to Workspace」を押下します。

f:id:smdbanana:20200127115751p:plain 確認を求められるので内容を確認して許可してください。

許可が完了したら「OAuth & Permissions」の画面に戻ってきます。 f:id:smdbanana:20200127115911p:plainBot User OAuth Access Token」が表示されていると思うので、これを控えておきます。

Slack API側の設定はこれで終わりです。

Slackにファイルアップロードしてみる

APIの使い方は以下のURLを参考にしてください。 api.slack.com

curl -F file=@dramacat.gif -F "initial_comment=Shakes the cat" -F channels=C024BE91L,D032AC32T -H "Authorization: Bearer xoxa-xxxxxxxxx-xxxx" https://slack.com/api/files.upload

公式のサンプルはこのように書かれています。

こちら、必要な情報は最低限は以下の3つです。

  • file : アップロードするファイル
  • channels : アップロード先のチャンネル(チャンネル名でもIDでもいい)
  • Authorization : 先ほど取得したトークン(xoxb-… のアレ)

この3つです。

curl -F file=@./現場猫.jpg -F channels=#ファイル置き場 -H "Authorization: Bearer xoxb-331136042544-922838692336-RZvdQlvAauobg1qdJToDjizk" https://slack.com/api/files.upload

このようにcurlのパラメータを指定してみました。
結果は以下の通り。

f:id:smdbanana:20200127121320p:plain アップロードできました。

これで、共有したいファイルはコマンド叩けばいつでも共有できますね。

私からは、以上です。

5連個体値の取得ロジックの意味がわからなかった話

こんにちは。
表題の件なのですが、ポケモン剣盾で6Vメタモン乱数に挑戦していた前回

 

smdbanana.hatenablog.com

 4日目のメタモン捕獲→3Vであることを確認→「5連続になりません…
になることの多いこと多いこと。

今となってようやく理解したのは私の頭がポンコツなだけで、皆々様が丁寧に仕組みを説明して下さっています。 

note.com

 こちらとか非常にわかりやすい。

自分なりに咀嚼した説明を自分のために残しておきます。

 

一言で言って、
V固定4番目の算出を正しく理解してなかった

これに尽きます。
何を思ったか、「V固定されていない個体値1-3の3番目だけを8で割った余りがV固定4に割り当てられる。」と理解したのが全ての元凶。
(そんなことはどの記事でも言っていない)

正しくは、個体値1-3を順に「値÷8の余りをV固定4に割り当ててみる」。個体値1,2で再計算になり、個体値3で割当OKならパズル可能。
というものでした。

V固定位置へのマッピングは以下とのこと。

個体値÷8の余り マッピング
0 H
1 A
2 B
3 C
4 D
5 S
6 再計算
7 再計算

夜綱さんの例で出されている
3V個体 : 31-1-16-31-7-31
4V個体 : 31-31-16-31-7-31

この場合、3V個体を見ると

No 乱数用途 3V個体 備考
1 V固定1 H  
2 V固定2 C  
3 V固定3 S  
4 個体値1 1 1/8の余りは1→Aに割当
5 個体値2 16 16/8の余りは0→Hに割当
6 個体値3 7 7/8の余りは7→再計算

で、これは

No 乱数用途 4V個体 備考
1 V固定1 H  
2 V固定2 C  
3 V固定3 S  
4 V固定4 A 3V時の個体値1が1→VをAに振る→OK
5 個体値1 16 3V時の個体値2を使用
6 個体値2 7 3V時の個体値3を使用

のようになるので新たな個体値が見えないから連続した個体値は取れない→NGとなる、です。

 

次。成功する場合。

夜綱さんの例で出されている
3V個体 : 31-0-13-31-9-31
4V個体 : 31-31-16-31-7-31

この場合、3V個体を見ると

No 乱数用途 3V個体 備考
1 V固定1 H  
2 V固定2 C  
3 V固定3 S  
4 個体値1 0 0/8の余りは0→Hに割当
5 個体値2 13 13/8の余りは5→Sに割当
6 個体値3 9 9/8の余りは1→Aに割当

で、これは

No 乱数用途 4V個体 備考
1 V固定1 H  
2 V固定2 C  
3 V固定3 S  
4 V固定4 再計算 3V時の個体値1が0→VをHに振る→再計算
5 V固定4 再計算 3V時の個体値2が13→VをSに振る→再計算
6 V固定4 A 3V時の個体値3が9→VをAに振る→OK
7 個体値1 16 新たに検出した個体値
8 個体値2 7 新たに検出した個体値

となるので新たな個体値が2つ見えたので5連続個体値取得OKとなる、です。

 

3V個体から5連個体値取れるかどうかは、以下で求められる。
個体値1が再計算になる確率は 5 / 8 (被りの3パターン+6,7再計算の2パターン)
個体値2が再計算になる確率は 5 / 8 (上に同じ)
個体値3が再計算にならない確率は 3 / 8 (被らない3パターン)

なので、5連個体値が取得できる確率はおよそ15%程度、ということだったんですね。

 

Webでパズル可能かどうかチェックするために、js使って簡単に実装してみました。

 

f:id:smdbanana:20200108132025p:plain https://www.smd877.com/poke/puzzle_check.htmlwww.smd877.com

そのうち消すかもしれませんが。

すごく単純に作ってます(自分で組むのなんて10年以上ぶりだわ)。

途中で飽きてるのが分かると思う。

ソースはgistに置いてるので好きに使ってください。

gisted67e8e11a7f7ef84f447424cb4f1568

 

じゃね。

ポケモン剣盾で6Vメタモン乱数に挑戦したよ

どうも。

皆様年末年始いかがお過ごしでしょうか。

この数日でポケモンソードシールドの乱数を取り巻く環境が激変しましたね。

細かいことはよくわかっていませんが、公開されたツールを使ってみて6Vメタモンを出せるか挑戦してみました。

f:id:smdbanana:20200104233509j:plain

結果から言うと、出せました。

あくまで私自身が6Vメタモンを出すために行った手順を備忘録として残すものなので第8世代の乱数の仕組みや他のターゲットポケモンの対応方法などは書かないし答えられないと思います。

また、詳しい仕組みを理解しないまま実践していること、以下使う言葉や認識が間違っている可能性は往々にしてあるので、ゆるい目で見てもらえればと思います。

使ったツール

使わせて頂いたツールは以下の通りです。皆様感謝。

xoroshiro-inverse

https://github.com/pattirudon/xoroshiro-inverse

シード値検出のために利用しました。

使ったバージョンは以下のコミットIDです。
f892bc1b72ba5f7235ea487794d007caeed53458

1-Star Seed Searchのv1.02からも3Vから検出することができるようになったようですが、私はこちらを使いました。

xoroshiroinverse補助ツール

その名の通りxoroshiro-inverseの補助ツール
リンク先が製作者の ぼんじり( ꒪⌓꒪) さんのdropbox共有フォルダなのでここにはリンク貼りません。ご容赦を。
使ったバージョンは1.05でした。

RaidFinder

https://github.com/Admiral-Fish/RaidFinder
シード検出したらそこから目当てのパラメータを探すツール。
githubにタグ付けされているv1.3.3を利用しました。

 

シード値を検出する

ストーンズ原野Lにねがいのかたまりを投げて、レア柱を出します。(メタモン確定)

いまどの位置にいるかを調べるため、xoroshiroinverse補助ツールを起動します。

柱の前で一旦セーブします。(分かり易くするため、日付は2020/01/01に変えておく。)

セーブ地点から時渡りを使い、1/4に進めたら「3V」のメタモンを一度捕獲します。(星5だと4V以上確定なのでだめだと思う)

正確な個体値を確認するため経験アメで100レベルにし、「性格」「個性」「特性」とHABCDSの各個体値をメモ。

(個体値はポケ徹さんを使うか、最新の補助ツールに実装されたみたいなのでそちらをご利用下さい。)

補助ツールの「4日目 個体値(2v or 3v)パラメータに入力に使用する個体」の欄に個体値を入力し、「4v個体とパズルが可能です!」となれば続行。かなりの確率で「5連続になりません…」になるはず。

f:id:smdbanana:20200105081435p:plain

なりません」の場合はリセットして時渡りで数日進めるか柱を立て直して下さい。(8割位の確率でなりませんになるらしい。)

可能です」なら、セーブせずゲームリセットし、日付を2020/01/01に戻してゲーム再開。

先程と同じ手順で1/4に進めて、今度は「4V」のメタモンを捕獲します。

ここでブレイク

後で使うRaidFinderを使うとわかりますが、他の穴はそれぞれのポケモンの振り分けに対しメタモン穴は全部メタモンです。

f:id:smdbanana:20200105082704p:plain

殿堂入り後は星3以上確定ですが、個体リストの出現パターンは「メタモン3-4★」と「4-5★か5★」の2種類しかありません。(フラグは6だけど2種類しか個体バリエーションがない)
なので星3でパズル可能だとしても、もう1種類のパターンが5Vの場合はその先に進めません。諦めてリセット時渡りで乱数位置を変更してください。
ブレイクおわり

 

運良く1/4捕獲メタモンが4Vなら1匹目と同様個体をメモします。メモした個体値を補助ツールの「4日目 個体値(3v or 4v)個体値パズル用の個体」の欄に入力。入力すると「5連個体値」が補完されます。

f:id:smdbanana:20200105084050p:plain

ここまで出来たら再度リセット。そして日付を2020/01/01に戻す。

ソフト起動したら今度は1/5に時渡りしメタモン捕獲→個体値メモ。

同じくリセット&日付戻す→ソフト起動→1/6に時渡り→メタモン捕獲→個体値メモ。

リセットは忘れずに。

これで5日目と6日目の個体情報を入れます。できるだけVは少ない方がいいので3V粘れそうなら粘ること。私は一度5日目も6日目も4Vで入力したところ5時間ほど検索したあと「見つかりませんでした」と言われました。

メモした個体のV固定数や個体値、パラメータ情報を入力します。

私はこんなパターンでした。

4日目 星3 おとなしい あばれることがすき じゅうなん
9-31-31-18-27-31

4日目(パズル用) 星5 すなお あばれることがすき かわりもの
14-31-31-31-21-31

5日目 星3 わんぱく うたれづよい じゅうなん
0-19-31-31-20-31

6日目 星4 おとなしい あばれることがすき じゅうなん
28-31-14-27-31-31

「EC最下位bit」は不明のままでOKと思います。

メタモンのため特性は「通常特性の何れか」、性別のチェックはつけない、夢特性はとりあえずチェックつけずに検索しました。

入力が終わったら検索実行。。。

。。。

。。

数時間後、1日目のSeedが出たことを確認しました。

f:id:smdbanana:20200105085536p:plain

「1日目のSeed: EA9CA4E58DC2E61F」出ましたね。

これでシード値検出はおわりです。

 

目当ての個体と出会う

RaidFinderを起動したら、以下を入力します。

  • Den : 58: Stony Wilderness
  • Seed : 先ほど取得したシード値(今回の場合 EA9CA4E58DC2E61F)
  • Initial Frame : 1
  • Max Result : 100 (とりあえず)
  • Rarity : Rare
  • Species : メタモン 3-4★ か4-5★

Filtersは一旦全検索とした状態でGenerateを押すとリストが出ます。

f:id:smdbanana:20200105090647p:plain


 Frameの4,5,6が先ほどメモしたものと一致するはずです。

確認できたら、今度は目当ての個体を検索します。私は6Vメタモンを出したいので

FiltersでHABCDSを「31-31」にするだけにしました。性格や色違いもこだわりたければフィルタしてください。とんでもない消費量になると思いますが。。

私の場合、検索結果はこのようになりました↓

f:id:smdbanana:20200105091134p:plain

消費量1000以内です。まあ現実的な数字ではあります。

消費を多くする必要があるので、レイドバトルを使った新時渡りを使うのがベストでしょうが、私はニンテンドーネットワークに契約してないサブアカの方で検証してたのでこれが行えず、、地道に時渡りしていました。

怖いので3か月進むごとにセーブ。セーブしたらその地点が間違ってないかメタモン捕獲→チェック→リセットを繰り返しました。

これで、目当てのフレームの3つ前になるところまできたらセーブします。私は特性びびりなので5つ前でセーブしました。

あとは対象の日に進め、レイド募集→仲間に捕獲してもらう→リセット→以降ループで6Vメタモンの乱獲の図が出来上がり。

f:id:smdbanana:20200104233509j:plain

いやぁ、ポケモンって楽しいなあ!

ポケットモンスター ソード -Switch

ポケットモンスター ソード -Switch

  • 作者: 
  • 出版社/メーカー: 任天堂
  • 発売日: 2019/11/15
  • メディア: Video Game
 
ポケットモンスター シールド -Switch

ポケットモンスター シールド -Switch

  • 作者: 
  • 出版社/メーカー: 任天堂
  • 発売日: 2019/11/15
  • メディア: Video Game
 

スイッチライトがあれば一人で乱獲もできるんだよなぁ。 

Nintendo Switch Lite グレー

Nintendo Switch Lite グレー

  • 作者: 
  • 出版社/メーカー: 任天堂
  • 発売日: 2019/09/20
  • メディア: Video Game
 

私からは、以上です。