전체 글 168

[TIL] 코드스쿼드 2022 백엔드 37~40일차 회고(8주차)

오늘은 무슨 일이? 이번주는 슬럼프가 왔습니다. 공부도 집중이 안되고, 책도 안읽히고, 회고도 귀찮았습니다...😓 책상에 무의미하게 앉아있는 시간이 길어지는것 같아서, 정규시간이 끝나고 나서는 집중이 도저히 안될때는 그냥.. 쉬었습니다.. 그래도 다행인것은 제가 코드 작성하는데는 흥미가 남아있어서, 미션은 조금씩 진행할 수 있었습니다. 또 여러 스터디를 하고있어서 하기 싫어도 강제로 공부를 하게되어, 스터디를 하기 잘했다는 생각이 들었습니다. 그리고 이번주에는 Jun과 오프라인 모각코를 했는데, 오프라인에서 만나게 되니 다양한 얘기도 하고 정보도 주고 받아서 재밌었습니다. 게다가 오랜만에 밖에 나와서 카페에서 공부를하니, 밖의 활기찬 분위기 덕에 저도 조금 힘을 얻었던 것 같습니다. 그렇게 주말에는 공부..

CPU 스케줄링

CPU 스케줄링이 필요한 이유 I/O bound job CPU로 연산을 수행하는 시간보다, I/O에 많은 시간이 필요한 작업 ex) 사용자와 상호작용하는 프로그램 CPU bound job 계산 위주의 작업 ex) 과학 계산 프로그램 등 만약 CPU bound job 위주로 스케줄링을 하게되면, I/O bound job은 연산을 못할 뿐더러, I/O 장치까지 연산을 못하게 됩니다. 그래서 적절한 균형을 유지하여, CPU와 I/O 장치를 최대한 효율적으로 사용하기 위해서 CPU 스케줄링이 필요합니다. CPU Scheduler 7 Dispatcher CPU Scheduler Ready 상태의 프로세스 중에서 CPU를 할당할 프로세스를 고르는 역할 CPU Dispatcher CPU Scheduler가 선택한 ..

운영체제 2022.03.01

[TIL] 코드스쿼드 2022 백엔드 36일차 회고(8주차)

오늘은 무슨 일이? 오늘 하루종일 일이 있어서 미션은 진행하지 못해 하루를 날린것 같아 마음이 급하네요 ㅠㅠ 이번주는 드디어 스프링을 들어가는데, 공부할것들이 아주 많아서 정신이 없지만 차근차근 해봐야겠습니다. 그리고 오늘은 알고리즘 스터디 킥오프 미팅을 했습니다! 이때까지 알고리즘을 해야하는데 생각만 하고 못하고있었는데, 감사하게도 제가 알고리즘 스터디 관심있다고 지나가며 말했던 것을 Ader가 기억하시고 먼저 제안해주셔서 감사했습니다.😊 알고리즘은 각잡고 공부해본적이 없어서 걱정이 되지만, 한번 열심히 해봐야겠네요..! 인상깊었던 점은? 드디어 스프링.. 기대도 되고 걱정도 되지만, 재밌을것 같습니다. 아쉬웠던 것은? 미션 진행을 하나도 못하고 지나가버린 오늘 하루😭

[TIL] 코드스쿼드 2022 백엔드 35일차 회고(7주차)

오늘은 무슨 일이? 오늘은 donggi와 함께 로또 프로젝트를 마무리 지었습니다! 사실, 처음에는 페어프로그래밍 자체에 익숙해지느라 미션을 어떻게 해쳐나갈지 큰 그림을 그리지 못한 것 같습니다. 그래서 일단 역할과 책임이 뭉쳐있는(?) 안좋은 코드라고 하더라도 동작하는 코드를 먼저 만들어보고, 점진적으로 코드를 개선해 나가야겠다고 생각했습니다. 첫날부터 검증이나 예외처리까지 다 하면서 미션을 진행하다 보니, 진행하다 보니 개선할 점들이 너무 많았습니다. 서비스 검증을 위해 빠르게 달린 스타트업의 기술부채를 아주 아주 살짝 맛본것 같은 느낌이었습니다. 그러나 다행인것은 첫날부터 많은 기능들을 구현해놓은 덕에, 그 후의 미션 요구사항 중에서 이미 구현된 것들이 있었고 그래서 리펙토링에 더 집중할 수 있었습니..

[TIL] 코드스쿼드 2022 백엔드 34일차 회고(7주차)

오늘은 무슨 일이? 추상화, Mocking 오늘 호눅스 수업에서는 Random 을 테스트 하는법에 대해 배웠습니다. Random 처럼 결과를 예측할 수 없는 모듈을 사용하는 로직을 테스트하기 위해서 여러가지 시행착오를 일부러 보여주셨는데요. Random 을 사용한 메소드를 테스트 하려고 보니, 여러번 테스트 해보는 방법 밖에는 없었습니다. 그래서 10번 100번 10000번 테스트를 해도 그 결과가 영 찝찝했습니다. 다른 방법을 찾으며 마지막에 알게된 방법은, 추상화와 가짜 객체(Mock Object)를 이용하는 것 이었습니다. 예측할 수 없는 모듈을 인터페이스로 추상화 하고, 해당 로직에서는 Random 대신 인터페이스를 참조하여 사용합니다. 그리고 해당 클래스에서 생성자에서 인터페이스의 구현체를 주입..

[TIL] 코드스쿼드 2022 백엔드 33일차 회고(7주차)

오늘은 무슨 일이? 조금씩 익숙해져가는 페어 프로그래밍 이번주는 쭉 페어프로그래밍으로 미션을 진행하고 있는데, 몇달치 말을 이번 2일에 다 한것같은 느낌이 들었습니다. 월요일에는 휴식없이 쭉 달려서 피로가 많이 누적되었고, 화요일은 빨리 구현하고싶은 마음에 페어를 배려하지 못했습니다. 그래서 오늘은 스크럼을 마치고, donggi와 그라운드 룰을 다시 정했습니다. 20분 마다 드라이버, 네비게이터 바꾸기(하던 중이라도 얄짤 없이 교체) 2시간 마다 30분 혹은 식사시간 되면 바로 휴식하기 드라이버와 네이게이터의 역할을 분명하게 정의 드라이버 : 간단한 변수명이나 짧은 로직, 커밋 메세지 등은 드라이버의 재량에 맡김 네비게이터 : 더 넓은 시야로 바라보며 조언(네이밍 컨벤션, 메소드 분리, 객체의 역할과 책..

프로세스 관리

프로그램의 실행 주소 변환(Address translation) : 가상 주소를 실제 주소로 변환하는 행위 프로세스가 생성될 때는 물리 주소(Physical memory)에 생성되는데, 실제로 CPU는 가상 메모리(Virtual memory)를 통해 접근하기 때문에 주소 변환(Address translation)이 필요함 프로세스의 주소 공간(Process Address space) stack : 함수 내에서 사용되는 변수들 data : 전역 변수, 배열 등 code : 기계어 코드(main 함수, 사용자 정의 함수 등등) 커널 주소 공간의 내용 code 영역 코드 영역에는 시스템콜로 인터럽트가 발생했을 때 어떤 함수들이 실행되어야 하는지와 커널 함수들이 저장됨 ex) data 영역 PCB : 프로세스들..

운영체제 2022.02.23

[TIL] 코드스쿼드 2022 백엔드 31~32일차 회고(7주차)

어제는 무슨 일이? 어제부터는 donggi와 페어프로그래밍을 하게 되었습니다! CS10때 같은 조가 된적도 있었고, 평소 디스코드에서도 종종 모각코를 하고 있어서 어색하진 않아서 좋았습니다ㅎㅎ 얘기 나누다 보니, 저와 같은 경상도 출신이란걸 알게되어 뭔가 더 반가운 느낌이 들었네요😁 CS10 과정의 마지막주에 페어프로그래밍을 잠시 연습한적이 있었는데, 이번에는 본격적으로 하게되어서 걱정반 기대반이었는데요. 다행히도 donggi와 잘 맞아서 같이 변수명 하나까지도 같이 고민하면서 열정을 불태웠습니다..!👨‍💻 이렇게 페어프로그래밍을 하다 보니, 혼자 코드를 작성할때는 무의식적으로 작성했던 것들을 모두 상대가 이해할 수 있는 말로 풀어서 설명해야했고, 자연스레 내가 아는것을 말로 설명하는 연습을 많이 하게되..

[TIL] 코드스쿼드 2022 백엔드 30일차 + 주말 회고(6주차)

오늘은 무슨 일이? 코드스쿼드의 웹백엔드 Java 클래스 1 주차가 끝이 났습니다. 이번주 미션부터는 구현 내용을 PR 하면, 코드 리뷰를 받을 수 있었습니다. 본격적으로 리뷰를 받기 시작하니, 스스로 어떤 부분이 부족했었고 개선해야 하는지 명확하게 알 수 있어서 좋았는데요. 이번주 리뷰를 받았던 내용 중에서 가장 신경써서 반영하려고 했던 부분이 있었습니다. 클래스를 필요할 때 분리하기 이때까지는 저는 초반부터 클래스를 최대한 한가지 역할만 하도록, 유현한 변경이 가능하도록 쪼개면서 미션을 구현해 나갔습니다. 이러한 저의 기존 방식은 장단점이 있었는데요. 장점 클래스가 한 가지 역할만 하고 있어서, 추후 리펙토링을 하기 쉬움 변경에 유연한 구조로 만들었기 때문에, 미션 진행 중 요구사항이 변경될 경우 변..

[TIL] 코드스쿼드 2022 백엔드 29일차 회고(6주차)

오늘은 무슨 일이? 이번주에는 미션 진행 보다는, 스스로의 객체지향적인 코드를 작성하기 위한 접근방식에 대해 계속 고민했었습니다. 그리고 호눅스의 미리 나누기 보다는, 나중에 필요할 때 나누는것을 선호한다는 코멘트도 계속 머리속에 멤돌았습니다. 그러다 보니 프로젝트의 구조가 이전의 제 스타일처럼 잘게 나눠져있지 않고, 오히려 응집도가 높은 코드가 만들어졌습니다. 그러다가 종종 같이 객체지향과 서로의 코드에 대해 리뷰를 나눴던 동료가 연락이 왔습니다. 제가 이번주는 유독 힘이 없어보이고, 코드도 예전과 많이 달라서 혹시 무슨일이 있는건지 걱정해서였습니다. 그런데 저는 일단 제 표정과 코드를 보고 걱정해서 연락을 해주는 동료가 있다는 사실에 기쁘기도 하고 정말 고마웠습니다. 그것도 잠시, 제가 스스로의 상황..