Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#152 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@lovelysi0113 ci sta già lavorando.

Dal 25/5/2021.

  • #137 di @lovelysi0113 — integrata
  • #144 di @lovelysi0113 — integrata
  • #145 di @lovelysi0113 — integrata
  • #146 di @lovelysi0113 — integrata
  • #147 di @lovelysi0113 — integrata
  • #148 di @lovelysi0113 — integrata
  • #149 di @lovelysi0113 — integrata
  • #151 di @lovelysi0113 — integrata

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

@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 발급 받기)
  • 추가적으로 구현할 기능 찾기(고민 + 회의)
Lingua principale
TypeScript
Stelle
9
Fork
3
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di codestates/Reciper-server

Tutte le issue di codestates/Reciper-server

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.