#チームの機能を作る

1 messages · Page 2 of 1

outer gorge
#

mongoはオブジェクトそのまま保存できるからjsとの相性がいいかも

distant ginkgo
#

わからないんだけど

#

fastifyみたいにサーバーを立ててポートリッスンする感じなのかな?

#

sqlって

#

全然違う?

outer gorge
#

そんな感じで合ってるんじゃないかな?

distant ginkgo
#

そうなのか

outer gorge
#

プロトコルがhttpじゃないだけで特定のポート指定して繋ぐのは一緒

distant ginkgo
#

おー

#

今botとhttpの機能を持ってるからそれにsqlの機能入れてもいいな

#

別に大きなプロジェクトではないし

outer gorge
#

ローカルで建てたやつをwebで見れるようにもしたいんだけど、

#

自分のDBの設定に自信がなくて不正アクセスされそうで公開を躊躇しちゃう

distant ginkgo
#

webで見れるっていうのは

#

普通にdbをwebでみるってこと?

outer gorge
#

ユーザーのログインページ作って自分のゲームデータ参照みたいな

distant ginkgo
#

あー

outer gorge
#

チョットコワイ

distant ginkgo
#

それ普通にサイトとして作って、dbから取得したものを載せるだけにはならないのかな

#

dbの実装がそこに出てしまう?ものなのか

#

-# 意図を理解していないかもしれない

#

crudのうちrしか許可しないから大丈夫なんじゃないのって思った

outer gorge
#

DB-API鯖-web みたいな構成ではあるんだけど、API鯖をもし外部に置くとしたらDBが外と通信することになるからその辺がかな

distant ginkgo
#

なるほど

outer gorge
#

(トンネル繋いでれば大した心配事ではないかもだけど

distant ginkgo
#

この場合db設定じゃなくてapiの設計を心配するべきじゃないのか...?いやそこまで本格的な物を作ったことがないからわからん!

#

sqlインジェクションって意味ならdbの設定?ともいえるのか

outer gorge
#

インジェクションはAPI鯖の実装次第かな

distant ginkgo
#

ふむ

outer gorge
#

多分もし公開するならBDSとの通信に使ってる内部用APIと公開する外部APIで分けるべきよな~

distant ginkgo
#

何創ってるんだ、面白そうだな

outer gorge
#

内部のはdbと通信するためのhttp鯖だけど、保存してる各種IDとかもそれで取れちゃうから公開するのは良くないかも(

distant ginkgo
#

apiって単語の指すものってもしかして結構広義?

#

基本的に外部と通信するものをapiというものだと

#

おもってた

outer gorge
#

RestAPIって単語もあるしhttpで何かやりとりしてたらAPIになるんじゃないかな?

distant ginkgo
#

あー、内部とはいえhttpで通信してるからか

outer gorge
#

外部が物理的に外部なのかプロセス単位で外部なのかにもよるし

distant ginkgo
#

um

outer gorge
#

作りたいものはあっても時間と労力の問題がでかすぎるなぁ

distant ginkgo
#

時間は確保できたとしても労力がやばい!

#

大ai時代

outer gorge
#

4人くらいに分身したい

distant ginkgo
#

だけど結局まあまあ自分で描く

distant ginkgo
#

ちょっとfastifyとか弄ったおかげでアドオン側でラッパーを作ってスキーマの概念を導入できた

#

便利だ

distant ginkgo
#

通信部分をアドオンに実際に書いてみたら
とんでもないことになってしまった
またリファクタリング必要そうだなあああああああああああああああああああああ!!!!!!!!!!!

outer gorge
#

w

distant ginkgo
#

わらえないw

distant ginkgo
#

とりあえずチームを作ったらディスコにもチャンネる作られたりするようにした

#

後何詰めようかな~

distant ginkgo
#

finallyつかうばめんでてきたなあ

#

botのほうだけど

#

操作は失敗してもdbからは消すっていう動きになった

distant ginkgo
#

やっぱりやめた

#

Promise.allSettledにした

#

Promiseはおもしろいメソッド多いな

distant ginkgo
#

serveradminには.envみたいなことをできるものがあるんだね

#

serversecretsとvariables

distant ginkgo
#

こんな感じ

distant ginkgo
#

サーバーソフトの不具合のために停滞中

#

はやく!!!!!!

distant ginkgo
#

今更namespaceという概念を知った

#

tsの

distant ginkgo
distant ginkgo
#

既存コード

#

いらない

#

捨ててしまおう~

#

大リファクタリング行う

distant ginkgo
#

鬼!!!!!!!!!リファクタリング中!!!!!!!!!!!!!

#

featureパターンに沿うなど、コードの意義を問いただすなど

distant ginkgo
#
export const noArgs = <T extends {new (...args: any[]): {}}>(constructor: T) => {
  return class extends constructor {
    myProperty = "value";
  };
};

引数ない場合の賢いデコレータ定義(らしい)

#

<T extends {new (...args: any[]): {}}>(constructor: T)
がクラスコンストラクタを指すらしい

#

newする際(?)に可変長引数を受け取ってオブジェクトを返すー>クラスコンストラクタ

#

(rest params)

distant ginkgo
#

忘れてたけど成功したか否かはとれるんだった
これ大事だ

distant ginkgo
#

デコレータ作って使ってみた
いい感じ...?(変わってるか?)

distant ginkgo
#

常にプロジェクトをprivateにしてるんだけど俺よりできる人に見てほしいな

#

アドバイスもらいたい

distant ginkgo
#

終わんねえ ; ;

ruby ruin
#

作業終わるまで耐久配信!?

distant ginkgo
#

!?

#

配信すると引き締まるから好きなんだよな

distant ginkgo
#
@CustomBlockComponent({name: "tr:..."})
export class ... implements BlockCustomComponent {
  private _OrbToXp(player: Player, mainhand: ContainerSlot, orb: ItemStack) {
    let amount = player.isSneaking ? 10 : 1;
    if (amount === 10 && orb.amount < 10) {
      amount = 1;
    }
    if (orb.amount < amount) return;
    player.addExperience(OrbToExpRate * amount);
    if (orb.amount === amount) {
      mainhand.setItem();
    } else {
      orb.amount -= amount;
      mainhand.setItem(orb);
    }
    Sound.play(player, amount === 10 ? XpTableSounds.converted10 : XpTableSounds.converted);
  }

  private _XpToOrb(player: Player) {
    let amount = player.isSneaking ? 10 : 1;
    const {xpEarnedAtCurrentLevel, totalXpNeededForNextLevel} = player;
    if (amount === 10 && player.getTotalXp() < OrbToExpRate * 10) {
      amount = 1;
    }
    const totalXpToSubtract = OrbToExpRate * amount;
    if (player.getTotalXp() < totalXpToSubtract) return;
    const diff = xpEarnedAtCurrentLevel - totalXpToSubtract;
    if (diff < 0) {
      player.addExperience(-xpEarnedAtCurrentLevel);
      player.addLevels(-1);
      let newDiff = totalXpNeededForNextLevel + diff;
      while (newDiff < 0) {
        player.addLevels(-1);
        newDiff = player.totalXpNeededForNextLevel + newDiff;
      }
      player.addExperience(newDiff);
    } else {
      player.addExperience(-totalXpToSubtract);
    }
    player
      .getComponent(EntityComponentTypes.Inventory)!
      .container.addItem(new ItemStack("tr:xp_orb", amount));
    Sound.play(player, amount === 10 ? XpTableSounds.converted10 : XpTableSounds.converted);
  }

}

今思えば非効率なコードを掲載

distant ginkgo
#

biomeを使うか...

#

長引いてきたからいったんリフレッシュするか

ruby ruin
#

まだ作ってる?

distant ginkgo
#

ぬあ

#

一応暇な時やってるよ