Weekly I Learned/2022's(7. ~ 12.) WIL

2022년 7월 4주차(7/25 ~ 7/29) Weekly I Learned "심기일전했었던 지난 한 주"

ikjo 2022. 8. 2. 01:02

지난 한 주 되돌아보기

지난 7월 3주차 주간을 휴가 주간으로 보내면서 당초 학습하고자 했었던 부분들이 많이 밀려 약간의 조급함과 함께 7월 4주차 주간을 보냈었던 것 같다. 또한 뭔가 하고싶은 공부는 엄청 많은데 나에게 주어진 시간은 한정적이다보니 이거 했다 저거 했다 다소 우왕좌왕 했었던 한 주였던 것 같다.

 

비록 하루하루를 완벽하게 보냈다곤 할 수 없었지만 나름대로 키보드를 놓치않고 꾸역꾸역 학습을 이어나갔었던 지난 한 주였다. 아울러 취업에 급급해서 기초를 소홀히 하기 보다는 기초를 튼튼히 하고싶었던 생각이 들기도 했다. 컴퓨터 과학과 알고리즘에 대해 집중적으로 학습을 이어나갔는데 이 과정이 나름대로 정말 재밌었던 것 같다. (하지만 뭔가 아주 중요한 스프링과 JPA를 놓치고 있는 건 아닌지 생각도 든다.. 😂)

 

오랜만에 다시 알고리즘의 세계로~

지난 한 주 휴가 주간을 보낸 이후에 오랜만에 다시 알고리즘 문제와 친해졌었던 한 주였다. 최근에 가장 많이 풀고 있는 문제는 단연 '백트래킹'과 관련된 문제이다. 아직 프로그래머스 레벨 2의 문제와 백준 골드 5~4 수준의 문제를 풀고 있는데, 우연인지 필연인지 뭔가 백트래킹을 이용하여 푸는 문제들을 자주 만나게 되는 것 같다. (알고리즘 스터디에서도 종종 등장)

 

7월 4주차 동안 풀었던 문제들 중에서 가장 인상깊었던 문제는 프로그래머스 레벨 2 '양궁대회'와 백준 골드 4 '스도쿠' 문제였다.

 

 

[프로그래머스] 양궁대회 - Java

문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.

ikjo.tistory.com

 

 

[백준 - 2580] 스도쿠 - Java

문제 설명 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총

ikjo.tistory.com

 

자바의 변수에 대해 얇고 넓게 샅샅이 뜯어보았다!

1주차 자바 스터디에서는 'JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가'라는 주제에 대해 다루어보았는데, 이번 2주차 자바 스터디에서 다루는 주제는 '자바 데이터 타입, 변수 그리고 배열'이라는 내용의 주제였다. 전반적으로 평상시에 알고있었던 부분이라는 생각이 들었기에, 마감기한 거의 직전에 과제에 착수했었다.

 

하지만 예상했던 것과 달리 생각보다 내가 모르는 내용들도 꽤나 있었다. 특히, 부분적으로는 알지만 부분적으로 모르는 부분들이 꽤나 많았기에 정리하는 시간은 점점 길어지게 되었다. 😭 결국 과제 제출기한 안에는 제출을 다하지 못했지만 그래도 나름대로 목표했었던 것대로 해당 주제에 대해 정리해볼 수 있었다.

 

 

Java의 변수에 대해 얇고 넓게 샅샅이 뜯어보자

목차 1. 변수란 무엇인가? 2. 변수의 선언 방법 3. 변수의 타입에 대해 알아보자 3-1. 프리미티브 타입 3-2. 레퍼런스 타입 3-3. 프리미티브 타입과 레퍼런스 타입의 차이 3-4. 래퍼 클래스 3-5. 명시적

ikjo.tistory.com

 

내용이 전반적으로 변수와 관련된 것들이기에 나의 경우에는 '변수'라는 테마로 글을 작성해보았으며, 작성 중 내용이 꽤나 길어져 내용을 분리할까 말까를 여러번 고민하다가 결국에는 나의 욕심으로 하나의 글로 정리하기로 결정했다. 🤣

 

해당 주제에 대해 정리하는 과정에서 자바 공식 문서들도 참고해보면서 그동안 머릿속을 떠돌아 다니고 있던 파편화된 지식들이 정리되는 기분이 들어 나름 만족스러웠다.

 

우아한 테크 세미나 & 테코톡.. 너무 재밌는데..?

그동안 유튜브 우아한 테크 채널에서 종종 올라오는 우아한 테크 세미나나 테코톡 영상들에 대해 별다른 관심을 갖지 않고있었는데, 마스터즈 코스를 하는 동안 해당 영상들을 챙겨보시는 분들이 많이 계셔 나도 관심을 갖게 되었다. 비록 마스터즈 코스 과정 중에는 보진 못했지만 마침 생각이 나 몇몇 영상들을 보게 되었다.

 

그 중에서 가장 재밌었던 영상은 2019년 6월 우아한테크세미나로 진행된 조영호님의 "우아한 객체지향"이라는 주제의 영상이었다. 이전에 "객체지향의 사실과 오해"라는 책을 보면서 그리고 마스터즈 코스 동안 프로그래밍을 하면서 OOP에 대해 자주 고민하곤했었는데, 이 영상을 보면서 뭔가 자극도 되고 앞으로 OOP에 대해 더 알아가고 싶다는 생각이 들었다.

 

테코톡에도 정말 좋은 영상들이 많이 있었다. 테코톡은 우아한 테크코스라는 부트캠프의 수강생들께서 본인이 학습하신 것들을 본인만의 방식으로 설명해주시는 영상인데, 도움이 되는 영상들이 굉장히 많았다. 그 중에서도 히히님의 OSI 7 Layer라는 주제가 가장 인상깊었고 마침 이번에 OSI 7 계층의 개념을 정리하고있었는데 그 과정에서 많은 도움을 받을 수 있었다.

 

OSI 7 계층, TCP, TCP/IP 4 계층을 정리해보다!

7월 4주차는 네트워크를 학습하는 데 많은 시간을 썼던 것 같다. 마스터즈 코스 거의 초창기 시절 호눅스의 마스터 클래스 강의에서 OSI 7 계층과 TCP/IP 4 계층에 대해 잠시 짚고넘어간 적이 있었는데, 당시에 CS 지식이 너무 부족해서 이해하기 어려운 부분이 있었고 언젠가 꼭 정리해보고 싶다는 생각이 들었다.

 

그래서 이번 기회에 해당 내용들에 대해서 정리하고자 했고 그 과정에서 유튜브 최희준 교수님의 강의와 조성호님의 강의 그리고 앞서 언급했던 히히님의 테코톡 영상들이 학습하는데 많은 도움이 되었다.

 

 

OSI(Open Systems Interconnection) 7 계층

OSI 7 계층이란? OSI 7 계층은 국제표준화기구(ISO)에서 개발한 표준 네트워크 모델로서 네트워크 통신이 일어나는 과정을 7개의 계층으로 나눈 것이다. 이는 이질적인 시스템(하드웨어, 소프트웨어

ikjo.tistory.com

 

 

TCP(Transmission Control Protocol, 전송 제어 프로토콜)

TCP TCP(Transmission Control Protocol)는 IP 네트워크의 두 컴퓨터 간의 연결 지향 통신을 위한 전송 계층 상 호스트 간 프로토콜인데, 이때 가상 포트를 사용하여 두 컴퓨터 간의 물리적 연결을 재사용 할

ikjo.tistory.com

 

 

TCP/IP 4 계층

TCP/IP 4 계층이란? TCP/IP란 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합을 의미하는데, TCP/IP를 통해 통신하는 과정은 크게 "응용 계층, 전송 계층, 인터넷 계층, 네트

ikjo.tistory.com

 

이 내용들을 다루면서 배우는 것들이 정말 많았고 네트워크 공부가 정말 재밌게 느껴졌다. 내용을 정리한 이후에 그동안 읽지 못하고 있었던 "그림으로 공부하는 IT 인프라 구조" 책도 봤는데 내용 이해가 쏙쏙되는 재미도 있었다. 마스터즈 코스 수강 이전에는 이 책 내용을 보고 너무 어려워 좌절했었던 기억이 있다. 😂

 

다시 시작된 운영체제 공부..!

한동안 과제 준비하랴, 휴가 보내랴, 알고리즘 문제 풀이하랴 등등 여러 우선순위들에 밀려 운영체제 학습에 소홀히 하고있었다. 비록 많이 학습하진 못했지만, 이전에 학습했었던 것들을 가볍게 복습하고 프로세스와 스레드 등을 학습하는 시간을 가졌다.

 

사실 그동안 운영체제 공부하는 것이 다소 꺼려졌었던 게 뭔가 운영체제 책을 보면서 내용들을 이해하는 건 재밌는데, 그 내용들을 하나하나 다 정리하려고 하다보니 학습하는 게 점점 꺼려지는 마음이 들었다. 정리하는 것도 생각보다 많은 리소스를 소요하기 때문에 일단은 정리 보다는 현재 읽고 있는 책을 완독하는 것을 목표로 하고자 한다..! 💪

 

(번외) 기초 체력을 튼튼히 한다는 생각으로 학습하기!

앞서 7월 4주차 이번 한 주는 다소 우왕좌왕하는 마음이 있었다고 했다. 운영체제, 네트워크, 데이터 베이스, 자바, 자료구조, 알고리즘, 스프링, JPA 등등 아무래도 앞으로 해야할 것들이 굉장히 많은데 현재 학습 진도를 나가는 게 영 시원치 않았기 때문이라고 생각이 든다.

 

뭔가 빨리 프로젝트를 진행해서 이력서를 채운 다음 원서를 내면서 알고리즘 문제 풀이도 열심히 하면서 구직 활동을 해야겠다는 생각도 들지만, 한편으로는 컴퓨터 과학이나 프로그래밍에 대해 기초 체력을 튼튼히 하고싶다는 생각이 들기도 한다. 사실 취업을 하고나면 개인 공부하는 시간이 지금보다 월등히 낮아질수밖에 없다고 생각한다. 개발자이기 전에 '직장인'으로서 회사 업무를 수행하는데 상당히 시간이 소요될 수밖에 없다고 생각하기 때문이다.

 

나의 경우 컴퓨터 공학 전공생이 아닌만큼 이 기초에 대한 니즈를 더욱 크게 느끼곤 한다. 개발자로서 앞으로 10년, 20년 개발하기 위해서는 무엇보다 기초가 튼튼해야겠다는 생각이 든다. 물론, 앞으로 계속 주구창창 기초 공부만 하면서 시간을 보낼 수는 없겠지만, 어느 정도는 이러한 시간을 충분히 만끽하고 싶다는 생각이 들었다.