[카카오 테크 캠퍼스 3기 회고] 카태켐과 함께 내가 얻게 된 것들
·
카테캠 3기
올해 4월부터 11월까지 길다면 길고 짧다면 짧을 카카오 테크 캠퍼스 3기가 막을 내렸다. 처음 카테캠에 참여했을 때는 11월이 올까 싶었는데,, 이렇게 순식간에 찾아올줄은 정말 몰랐다. 올 한해동안 나의 개발 라이프 전부였던 카태켐에 대해 회고를 해볼까 한다. 카테캠에 참여했던 이유되돌아보면 내가 왜 카테캠에 참여했는지가 먼저 떠오르는 것 같다. 생각하보면 '스스로가 개발자로서 자신이 없어서' 카테캠에 지원했던 것 같다. SW 복수전공을 했지만 문과 비전공자 출신이기도 하고, 개발 공부를 비교적 늦게 시작했기에 주변에 뭔가 삐까뻔쩍하고 잘해보이는 개발자 친구들에게 기죽고있었던 것 같다. 당시 나는 '내가 개발자가 될 수 있을까?' 라는 질문을 스스로 계속 했었다. 그러던 중 카카오 테크 캠퍼스라는..
[스프링 프로젝트에 GitHub Actions 적용하기] 0. 배경 설명
·
DevOps
CI/CD 도입 배경프로젝트에 GitHub Actions를 적용하기로 했다.이 결정의 가장 큰 이유는 매번 코드 변경 사항을 AWS에 배포하는 것이 귀찮기 때문이다..또 프론트와 협업을 하면서 프로젝트를 진행하고 있는데 프론트분들이 mock 데이터를 사용할 수도 있지만 배포를 미리 진행해서 개발이 완료된 API에 대해서 직접 API 호출을 해보며 문제를 빠르게 파악하자는 목적도 있었다.이전에 배포를 진행해본 경험이 있는데, 그 때는 GitHub Actions와 같은 CI/CD 툴을 사용하지 않았었다.당시 GCP를 사용해서 Compute Engine에 인스턴스를 만들고 해당 인스턴스에서 github에 올려둔 프로젝트 소스 코드를 전부 땡겨와 인스턴스에서 docker comopse를 통해 스프링 서버를 올렸..
[운영체제] 9. 페이징 메모리 관리
·
운영체제
메모리 관리 기법 중 페이징 메모리 관리 기법에 대해 더 자세히 알아보자. 페이징(Paging)이란?프로세스의 주소 강간을 0번지부터 페이지로 불리는 고정 크기로 나누고 물리 메모리 역시 페이지와 동일한 크기로 분할하여, 프로세스와 각 페이지를 물리 메미로의 임의의 페이지에 분산 할당하는 메모리 관리 기법이다. 여기서 물리 메모리 페이지 크기의 메모리 블록을 프레임(frame), 페이지 프레임(page frame) 등으로 부른다. 즉 프로세스의 메모리를 분할해서 관리한다는 것이고 메모리를 참조하려면 각 페이지의 위치를 기록해두어야 할 것이다. 그래서 프로세스마다 페이지 테이블이 존재하고 이를 통해 물리 프레임에 매핑된다. MMU 장치는 페이지 테이블을 이용해 논리 주소를 물리 주소로 변환하며,프..
[운영체제] 8. 메모리 관리
·
운영체제
메모리 계층 구조 https://camuscoding.tistory.com/8 [운영체제]1-2 운영체제의 태동지난 포스팅에서 운영체제가 무엇인지 알기 위해 운영체제의 개념에 대해 알아보았다. 그럼 이 운영체제는 어떻게 생겨나게 된 것일까?  1.  고정 프로그램 컴퓨터 시대 - 1940 년대이 당시 컴camuscoding.tistory.com운영체제에 대해 공부하며 '메모리'를 꾸준히 언급해왔고, 메모리 없이 운영체제를 설명하는 것은 불가능할 것이다. 폰노이만의 내장형 프로그래밍 개념부터 지금까지 메모리는 CPU와 함께 컴퓨터를 이루는 필수적인 부품으로 자리잡았다.  이제부터 그 메모리가 무엇인지에 대해 알아보도록 하겠다.  메모리란 CPU가 실행할 프로그램 코드와 데이터를 저장하는 물리 장치를 의미한..
[운영체제] 7. 교착상태
·
운영체제
교착상태란?교착상태라는 말은 프로그래밍 이외에서도 자주 사용되는 말이다. 차가 막혀서 도로에서 이러지도 저러지도 못하는 상황이라던가, 협상의 진전이 없는 상황이라던가 다양한 모습으로 교착상태를 떠올려볼 수 있다.  운영체제에서 교착상태는 자원을 소유한 스레드들 사이에서 각 스레드이 다른 스레드가 소유한 자원을 요청해 모든 스레드가 무한정 대기하는 상황을 말한다.  이는 다중프로그래밍의 고질적인 문제점이라고 할 수 있다. 운영체제는 스레드들에게 자원을 할당해줘아 햐는데 스레드는 하나의 자원만 필요한 것이 아니기 때문이다.   T1부터 T5까지 다섯 개의 스레드가 5개의 CPU에서 동시에 실행되면서 자원을 한개씩 소유하고 있다고 해보자. 그런데 이 상황에서 다른 스레드가 가진 자원을 요청하게 된다면 이때 교..
[Spring MVC] 스프링 MVC 패턴 정리
·
Spring
* 해당 포스팅은 김영한 강사님의 스프링 MVC 강의 1편을 보고 정리한 것입니다.  MVC 패턴이란? MVC는 Model, View, Controller를 줄인 말이다. 그럼 Model, View, Controller는 또 뭘까?  Model- 뷰에 출력할 데이터를 담아둔다. 모델은 뷰에게 필요한 모든 데이터를 담아서 전달해주고 이 덕분에 뷰는 비즈니스 로직이나 데이터 접근에 신경쓰지 않고 화면 렌더링에 집중할 수 있다.  View- 모델에 담겨 있는 데이터를 사용해서 화면을 그리는 일에 집중한다.  Controller- HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담아두는 역할을 한다. 즉 HTTP 요청을 받고 파라미터를 검..
[운영체제] 6. 스레드 동기화
·
운영체제
스레드 동기화는 왜 필요한 것일까?간단히 말하면 다수의 작업이 공유 데이터에 접근하면 공유 데이터가 훼손될 수 있기 때문이다. 그리고 여기서 다수의 작업이란 프로세스의 작업을 수행하는 스레드라고 할 수 있다. 따라서 공유 데이터에 대한 스레드들의 동시 접근을 해결하는 것이 스레드 동기화의 목표라고 할 수 있다. 스레드 동기화를 위한 가장 간단한 해결 방법은 한 스레드가 공유 데이터 사용에 사용을 마칠 때 까지 다른 스레드가 공유 데이터에 접근하지 못하도록 막는 것이다.  공유데이터 훼손 문제 그런데 사실 이렇게 말로만 공유데이터가 훼손된다고 하면 뭐가 어떻게 훼손된다는건지 직접적으로 이해하기 쉽지 않다.  여기 sum = sum + 10이라는 연산을 수행하는 코드가 있다. 이를 기계 명령으로 보면 mov..
[프로그래머스] 유연 근무제 자바 풀이 (JAVA)
·
알고리즘
https://school.programmers.co.kr/learn/courses/30/lessons/388351  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 해당 문제에 주어진 인자는 총 3개이다. 각 직원들의 목표 시간(희망 출근 시간)이 들어있는 schedules 배열,직원들의 출근 시간이 들어있는 timelogs 이중 배열,그리고 시작 날짜인 startday 정수. (월요일 = 1, 화요일 = 2, ... 일요일 = 7) 이 문제의 목표는 직원들이 '주말을 제외'한 날에 목표시간 + 10의 시간보다 일찍 출근했는지를 알아내고목표시간보다 일찍 출근한 직원들의 수를 반환하는 것이다...