2022 Masters Course/Web Backend Course

2022 마스터즈 코스(백엔드) 51일차 회고(2022. 3. 21.) - "앞으로 2주간의 페어와의 여정 시작"

ikjo 2022. 3. 21. 23:23

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

오늘부터 앞으로 2주간 페어와 함께 Web Back end 과정의 마지막 미션인 "웹 서버" 미션 과제를 수행하기 시작한다. 이번에 함께 하게 된 페어는 같은 백엔드 클래스 수강생이자 아울러 코드스쿼드(마스터즈 코스 과정) 면접 때 같은 조였던 Sammy 였기에 더욱 반가웠다.

 

오늘 Sammy와 함께 미션 1단계 과제를 수행하면서 깃, 자바 프로그래밍 등 내가 모르고 있었던 부분들에 대해 많이 알 수 있게 되어 굉장히 유익한 시간이었다. 다만 아쉬웠던 점은 어제 수면 시간이 매우 부족해 오늘 나의 집중력이 매우 낮은 상태였다는 점이었다.

 

이번 페어 프로그래밍을 할 때는 저번 페어 프로그래밍 때와 달리 페어 프로그래밍 하는 시간을 일정한 시간만큼만 정해놓고 나머지 시간은 각자 휴식, 개인적인 공부 등을 하기로 했다. 왜냐하면 페어 프로그래밍은 서로의 의사소통이 중요하기 때문에 그만큼 체력 소모도 크기 때문이다.

 

아무쪼록 앞으로 2주간 Sammy와 페어 프로그래밍을 하게 되는데, 항상 나의 확증 편향에 주의하고 나의 생각이 틀릴 수도 있다는 생각, 상대방의 생각이 맞을 수도 있다는 생각 등을 유념해야겠다. 아울러, 미션 자체도 중요하지만 팀원과의 호흡(팀워크)에 좀 더 집중하고자 한다. 이를 위해서는 무엇보다 나부터가 적극적이어야 하고 상대를 먼저 존중해야 할 필요성을 느꼈다.

 

 

학습 회고

  • 웹 서버 관련 미션 과제 풀이
    • 페어와 zoom 회의실에서 학습

 

오늘부터 2주간 페어와 함께 웹 서버 미션을 수행하게 되었다. 웹 서버 미션을 수행하기에 앞서 TCP 소켓 프로그래밍에 대한 기초를 배우기 위해 "자바의 정석"을 참고하여 TCP 소켓을 통한 서버 프로그램과 클라이언트 프로그램간 연결 그리고 간단하게 통신(클라이언트 요청, 서버 응답)하는 것을 코드 작성 등 학습해보았다.

 

TCP IP 서버 프로그램

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpIpServer implements Runnable {

    private ServerSocket serverSocket;
    private Thread[] threads;

    public TcpIpServer(int num) {
        try {
            serverSocket = new ServerSocket(7777);
            threads = new Thread[num];
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void start() {
        for (int i = 0; i < threads.length; i++) {
            threads[i] = new Thread(this, "Thread - " + i);
            threads[i].start();
        }
    }

    public void run() {
        while (true) {
            try {
                // 서버 소켓은 클라이언트의 연결 요청이 올 때까지 실행을 멈추고 계속 기다리다가
                // 클라이언트의 연결 요청이 오면 클라이언트 소켓과 통신할 새로운 소켓을 생성한다.
                Socket socket = serverSocket.accept();

                // 클라이언트의 요청에 대한 응답 준비
                OutputStream os = socket.getOutputStream();
                DataOutputStream dos = new DataOutputStream(os);
                dos.writeUTF("Hello!! This is Ikjo's WebServer!");

                dos.close(); // 응답 스트림 닫기
                socket.close(); // 클라이언트와의 연결 종료

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

TCP IP 클라이언트 프로그램

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class TcpIpClient {

    public static void main(String[] args) {
        String serverIp = "127.0.0.1";

        try {
            // 소켓을 생성하여 연결을 요청한다.
            Socket socket = new Socket(serverIp, 7777);

            // 서버의 응답 받기
            InputStream is = socket.getInputStream();
            DataInputStream dis = new DataInputStream(is);
            System.out.println(dis.readUTF());

            dis.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

 

 

좋았던 점

  • 오늘 페어로서 처음 호흡을 맞추었던 Sammy와 작업을 진행하면서 모르고 있었던 것들에 대해 많이 알아갈 수 있어서 유익했습니다 👍

 

 

아쉬웠던 점

  • 주말 동안 바뀐 수면패턴으로 인해 어제 밤에도 수면 시간이 매우 부족했기에 오늘 하루 집중도가 다소 떨어지는 하루였습니다. 😥

 

 

이전 보다 개선되었던 점

  • 이전에 1주일간 페어 프로그래밍 했었던 경험 덕에 오늘 좀 더 의식적으로(숙련되게) 페어와 호흡을 맞출 수 있었던 것 같습니다. 🐱‍🏍