Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[✍️ Dev Log] 정송이 / 2021-05-25

オープン
#152 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

@lovelysi0113 がすでに取り組んでいます。

2021年5月25日 から。

  • #137 @lovelysi0113 による — マージ済み
  • #144 @lovelysi0113 による — マージ済み
  • #145 @lovelysi0113 による — マージ済み
  • #146 @lovelysi0113 による — マージ済み
  • #147 @lovelysi0113 による — マージ済み
  • #148 @lovelysi0113 による — マージ済み
  • #149 @lovelysi0113 による — マージ済み
  • #151 @lovelysi0113 による — マージ済み

評価

この issue はまだ評価されていません。

説明

@lovelysi0113/기록은 성장의 밑거름 ❄️ Dev Log
오늘은 어떻게 프로젝트에 기여했나요?
  • #96 #123 socket.io 이벤트 함수 파일 분리 성공
    • chat 기능 관련 함수들을 controller/workspace/chat.ts에 정리
    • kanban 기능을 구현할 파일 controller/workspace/kanban.ts에 세팅
  • #127 middeware 보완
    • 프로젝트 확인-멤버 확인하는 middleware는 chat 뿐만 아니라 workspace의 다른 기능에도 사용됨
    • middleware 이름을 chatChecker에서 workspaceChecker으로 변경
    • workspaceChecker가 필요한 라우터에 middleware 설정(use() 메소드 사용)
  • #139 Rooms 테이블의 entity 설계
    • 프로젝트 내 채팅방 목록을 저장하는 테이블
    • Projects 테이블과 1:N 관계로 연결
  • chat 기능에서 채팅방을 관리하는 기능 구현
    • #123 routes, controllers 세팅
      • 각 기능 별로 method, path, parameters 설정
      • middleware authChecker, memberChecker 추가
    • #141 post /workspace/:projectURL/chat 요청 로직 작성
      • 새로운 채팅방 생성
      • 새로운 채팅방 이름이 중복되는 값이면 에러 처리
    • #143 post /workspace/:projectURL/chat/:room 요청 로직 작성
      • 현재 채팅방의 이름 수정
      • 이때에도 수정하는 채팅방 이름이 중복되는 값인지 확인
    • #142 delete /workspace/:projectURL/chat/:room 요청 로직 작성
      • 채팅방 삭제
      • Rooms 테이블에서 해당 채팅방 이름 삭제(remove() 사용)
    • #140 get /workspace/:projectURL/chat 요청 로직 작성
      • 현재 프로젝트 내에 존재하는 채팅방 목록 조회
      • createdAt: ASC 순서(= 채팅방 생성 순서)로 정렬
    • respose data로 채팅방 목록을 보내줌
      • 데이터베이스에서 채팅방 목록을 검색하는 함수 getRoomsList를 작성하여 각 로직에 적용
  • #150 get /workspace/:projectURL 요청 로직 작성
    • ...하려고 했으나 이미 전에 만들어둔 로직이 있었음..! (5일 전의 나 대단하다!)
    • 그래서 새로 만들지 않고 #112 get /project/:projectURL를 조금 보완하여 사용
    • 프로젝트 정보 + 전체 멤버 정보 조회
    • response data에서 members 데이터를 id에서 데이터 가공없이 전체 데이터로 바로 보내줌
  • #37 API 문서 점검 및 보완
    • workspace - chat 기능 관련 API 작성
    • example 업데이트
  • #81 스키마 디자인 점검 및 보완
    • Rooms, Chats 테이블 추가 및 정리
오늘의 프로젝트에서 힘든 점은 무엇인가요?
  • 일요일(5/23)에 엄청 고생했던 socket.io의 이벤트들을 각각 다른 파일에 분리하는 작업을 드디어 성공했다!
    일요일에는 막막하기도 하고 검색해도 원하는 정보를 얻을 수 없어서 많이 힘들었는데.. 월요일(5/24)에 chat 기능을 구현하고 코드를 정리하면서 socket.io에 대해 많이 이해하게 되었고 어떻게 사용하는지에 대한 감을 잡을 수 있었다.
    그래서 오늘 다시 파일 분리를 도전해보았는데 성공한 것이다! 와아!

    여러 방법을 시도하면서 알아낸 것은 다음과 같다.

    1. io.on('connection')은 다른 함수 안에 들어가있으면 안된다. io.on('connection')으로 socket 연결 요청이 오는지 항상 대기하고 있어야 하는데 socket.ts가 아닌 다른 파일로 들어가게 되면 항상 대기가 불가능해진다. (import로 불러온 함수는 계속 실행시키기 어렵다. 즉, 처음 1번만 실행되서 socket 연결 요청을 기다리지 않게 된다)
    2. app.set('io', io)을 사용하여 io를 원하는 라우터로 넘겨줄 수 있다.
      io를 사용하려는 라우터에서 app.get('io')로 해당 io를 불러올 수 있다.
    3. use() 메소드를 사용하여 이벤트 함수를 실행하기 전 middleware를 추가할 수 있다.
      이 middleware는 socket 연결할 때(즉, io.on('connection')이 실행될 때) 최초 1번 실행된다.
    // socket.ts
    import socketChat from './controllers/workspace/chat';
    const chatIo = io.of('/chat');
    app.set('chatIo', chatIo);
    chatIo.use(workspaceChecker);
    chatIo.on('connection', (socket: Socket) => {
        socketChat(socket);
    });
    
    // controllers/workspace/chat.ts
    const socketChat = (socket: Socket) => {
        const chatIo = app.get('chatIo');
        socket.on('event', () => {
            // 기능 구현
        });
    };
    export default socketChat;
    
내일은 프로젝트에 기여하기 위해 무엇을 해야 하나요?
  • chat 기능
    • 클라이언트와 연결하여 테스트 진행
    • 이미지 업로드 기능 구현
  • refresh token 기능 구현(새로운 access token 발급 받기)
  • 추가적으로 구현할 기능 찾기(고민 + 회의)
主要言語
TypeScript
スター
9
フォーク
3
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

codestates/Reciper-server のほかの issue

codestates/Reciper-server の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。