hyudai28 / ft_irc

0 stars 0 forks source link

PRIVMMSG簡易実装 と 前回のフィードバックの反映:デバッグ、joinの命名、スネークケースの修正 #38

Closed velvelhype closed 1 year ago

velvelhype commented 1 year ago

やったこと

デバッグは printDebugMsgRed printDebugMsgYellow みたいなのを作って色分けして出してみた

やってないこと

スネークケースの修正が中途半端かもしれない

velvelhype commented 1 year ago

issue URL

27

対応内容・対応背景・妥協点

Privmsg適当にやった

やったこと

irssi --nick kamori1 irssi --nick kamori2 みたいな感じでクライアントを複窓開いて、相互通信ができるようにした

やってないこと

全体的にリファクタが必要になっている ・userデータの取り扱い方 ・コマンドのデータの取り扱い方 などが不細工だと感じる

やってないこととして ・やりとりはできるけど、前回のキャッシュが残っていて変な感じ

レビュー観点

一応ここまでの機能を一区切りとして、 ・テストの開発 ・デバッグ ・リファクタ ・次に取り組むべきことをチームで共有する ことがしたい

hyudai28 commented 1 year ago

これ動かなくね...?

fujishit commented 1 year ago

レビュー遅れてすまん、確認した!

俺の環境は接続後すぐabortするからほぼ動作確認不能 一応少し確認できたのはあるから問題書く

仕様として正しいのか不明な部分

余談

色々調べてみてからもう一回報告しにきます。

velvelhype commented 1 year ago

std::vector<std::__cxx11::basic_string >::size_type これ俺の環境でダメだったw

dockerとかで適当に環境作る?

velvelhype commented 1 year ago

まだまだバグっているけども・・・ 一応一個なおした記念に まだout_of_rangeとか出るからそれに取り組んだり、あるいは権限周りやったりする予定

velvelhype commented 1 year ago

対応したつもり:

対応してない:

→ warning結構対応した(してもらった) 今unusedになってるのは、コマンド(cap, userとか)だけど、いずれ作り込んだら使うはずなので放置

velvelhype commented 1 year ago

だいぶエラーは減ってきている感じするので、軽く動作確認してくれると嬉しいっす user -> nick -> join -> privmsgの順番で、rfc通りの機能を持たせることを目標にやる デバッグ中にout of vectorでたらそれ対応する感じで進めていきます

しばらくチャンネル周りのコマンドからやっていくので、 commands/ServerQueriesAndCommandsあたりやってくれると嬉しいっす、サーバー周りは俺苦手だろうし

fujishit commented 1 year ago

動作確認。

動作全然問題なさそう。めっちゃいいね! かなりIRCみ出てきてる。

自分の名前が*になってるのって多分仕様だよね?ちょっとわからんちゃわからん。

バグについて

PC: /ft_irc$ ./ft_irc 
server start
new connection -> [4]
=MSG RECEIVED======
CAP LS
NICK test1

from : 
===================
terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check: __n (which is 2) >= this->size() (which is 2)
Aborted (core dumped)
PC: /ft_irc$ 
14:57 -!-  ___           _
14:57 -!- |_ _|_ _ _____(_)
14:57 -!-  | || '_(_-<_-< |
14:57 -!- |___|_| /__/__/_|
14:57 -!- Irssi v1.2.2-1ubuntu1.1 - https://irssi.org
14:57 -!- Irssi: The following settings were initialized
14:57                        real_name 
14:57 -!- Irssi: Looking up localhost
14:57 -!- Irssi: Connecting to localhost [127.0.0.1] port 6667
14:57 -!- Irssi: Connection to localhost established
14:57 -!- Irssi: Connection lost to localhost

原因不明ゴミバグ wsl, irssi, vscodeのターミナルっていう環境で、接続順に関係なく接続できないことがある。受け取りがコマンドを受け取れてないから失敗してるっぽいけど意味が分からん。

velvelhype commented 1 year ago

動作テストサンキューー

→自分の名前が*になってるのって多分仕様だよね?ちょっとわからんちゃわからん。 そういや放置してた 複数クライアントで試すと一人目だけそうなるんだよなー nickやるときに調べるわ

→バグ報告りょ これ俺も稀によくあるわ nickとか、認証で起きてそう 調査する

→原因不明ゴミバグ サーバーが失敗したときに、クライアントに”失敗しました”って送ってないからかなと思っている これからserver側からのレスポンスを実装していくからその過程で治るといいなって感じ

fujishit commented 1 year ago

あざす、最後の奴に関してはpollの俺が作った処理あたりが悪い可能性もありそうなんで少し調べてみる。

真ん中のabortだけなくなったらいったんマージできそうだね

velvelhype commented 1 year ago

そうね まずnick, userやるから、その過程で解消できたらいいな

fujishit commented 1 year ago

37

これ同じような奴まだある。 接続だけしてほっとくと死ぬ

server start
new connection -> [4]
=MSG RECEIVED======
CAP LS
NICK test1
USER me me localhost :me

from : 
===================
capUser done (done nothing actually)

=MSG RECEIVED======
MODE * +i

from : test1
===================
=MSG RECEIVED======
WHOIS test1

from : test1
===================
=MSG RECEIVED======
PING localhost

from : test1
===================
new connection -> [5]
=MSG RECEIVED======
CAP LS
NICK test1

from : 
===================
terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check: __n (which is 2) >= this->size() (which is 2)
Aborted (core dumped)

二人だと死なないような気がする

velvelhype commented 1 year ago

問題点:無意識スネークケースが多すぎる 修正する

ーーーーーーーーーーーーーーーー 複数コマンドをできるように実装した、結構変更がデカくなった かなり影響が出た

commandから std::vector  commandsにして、userクラスに持たせた コマンドクラスじゃなくて、userクラスがcommandsをパースしたり、掃除したりするようになった

コマンド実行部分をファイル分けしたり、 パースのやり方をクリーンなものにしたり、 cap lsのくそ気持ち悪い処理をクリーンにしたり

初期から気持ち悪かった commands->get_command みたいな命名を直して、

tryCommandsを tryCommands {  for(コマンドの数だけ)  tryCommand(cmd, user) } みたいにすることで、変数名が長くなるのをやめたり、見やすくしたりした

結構綺麗になったと思う

fujishit commented 1 year ago

動作確認。 全然問題なさそう、何回か試したけど今のところクラッシュしてない。

動作自体も〇でいいんじゃないでしょうか

velvelhype commented 1 year ago

さんきゅーー とりあえずマージする