본문 바로가기

개발

(38)
2020 카카오 코딩 테스트 후기 2020 카카오 코딩 테스트를 봤다. 평소에 PS를 열심히 한 사람이라면 어렵지 않게 풀 수 있는 문제들이었다. 다만 TreeDP등 학교 수업 범위를 벗어난 감이 있는 알고리즘이 출제되었다. 백준 난이도로 치면 대략 골드 2 ~ 브론즈 5까지 다양한 난이도랄까 예상 컷트라인은 3.5~4솔인데 어찌될지 모르겠다. 앞으로 구현 연습을 많이해야겠다. 어떤 알고리즘을 사용해야할 지 감은 금방 오는데 문제 조건을 놓쳐서 구현이 복잡해지는 경우가 많은 것 같다 ㅠㅠ
2020 라인 코딩테스트 후기 문제는 평이했다. 1,2,3번 풀다가 시간이 좀 많이 남아서 6번을 풀었는데 이분 매칭으로 풀었다. 전반적인 난이도는 평이했고 총 4 제출이다. 어려운 알고리즘을 쓰는 문제도 없었는데, 시간이 부족해서 4번을 못푼게 너무 아쉽다 ㅠㅠ 진짜 10분컷 문제였는데 ㅠㅠㅠㅠ 라인은 테스트케이스를 모두 공개하지 않기 때문에... 제출 != Solve다. 그래서 불안한듯 ㅠㅠ 매 년 돌아오는 주 목요일에 결과를 발표했으니 슬슬 필기테스트를 준비해야겠다
CODE: 하드웨어와 소프트웨어에 숨어있는 언어, 찰스 펫졸드 재밌게 읽었다. 아주 원시적인 수준의 신호부터 --> 이진법 --> 트랜지스터 --> 메모리 --> OS 등을 거쳐서 마지막엔 데이터 전송에 대해서도 간단히 다룬다. 이 광활한 영역을 관통한다는 점이 참 흥미로운데 그 만큼 책이 두껍다. 토비의 스프링처럼 교과서에 비하면 두껍지않지만 교양서로 읽기 얇은 편은 아니다. 더군다나 교양서와 교과서 사이에 위치한 듯한 내용도 심심치않게 등장하기 때문에 마냥 속편하게 보기 쉬운 책은 아니다. 하지만 이 책을 다 읽으면 하드웨어에 대한 간략한 감이 생긴다. 그만큼 찬사를 받고 있기도 하다. 특히 컴퓨터공학 비전공자는 이런 로우레벨 지식을 접하기가 쉽지않다. 교과서는 너무 어려워서 독학이 힘들고 교양서는 너무 쉬워서 별 도움이 되지않는 경우가 많기 때문이다. 그 중간..
객체 지향의 사실과 오해 - 이건 띵작이야 객체 지향 프로그래밍(Object Oriented Programming)은 여전히 트렌드이고, 좋다는 걸 다들 안다. 그런데 OOP가 무엇인 지, 왜 좋은 지를 설명하는 건 생각보다 쉽지 않다. 이 책을 읽으면 객체 지향의 핵심이 무엇이고 이걸 쓰면 왜 좋은지 어렴풋이 알 수 있다. 저자는 서문에서 이 책을 '어쩌다 만들어진 책'으로 소개한다. 객체 지향에 대한 책을 쓰다가, 독자가 이해하기 어려울 용어를 정리하는 과정에서 탄생한 책이니까! 그래서 쉽다!!! 이 내용의 밀도에 비해 정말 술술 익힌다... 책 속에 등장하는 은유는 참 찰지다... 객체 지향 프로그래밍을 처음 접하는 사람에게 이 책만큼 권할 저서가 다시 나올까 싶을 정도다. 인상 깊은 구절을 내 나름의 언어로 옮기자면 컴퓨터의 모든 동작은 ..
Pintos Project(핀토스 프로젝트) 3 - Threads 이번에 할 프로젝트의 주인공은 Threads이다. Pintos Manual에는 제일 처음 등장하는 파트인데 울 학교에서는 제일 마지막에 했다. 이번에 일정상 Virtual Memory 구현 부분이 빠졌다고 들었는데, 그게 좀 아쉬워서 깃헙을 통해 Virtual Memory 테스트코드도 구해볼 생각이다. (OS는 내 사랑이니까!) 이번 프로젝트에서 Process나 Threads가 Priority에 맞추어 동작하도록 한다. 현재 PintOS의 thread는 RUNNING과 READY를 왕복하며 busy waiting을 한다. 아무것도 하는 일 없이 왔다~갔다~ 하면서 CPU를 낭비하고 있는 셈이다. CPU 낭비를 막기 위해 busy waiting 방식을 수정해서 더욱 합당한 waiting 방식을 구현한다. ..
Pintos Project(핀토스 프로젝트) 2 - User Program_File management 이전 프로젝트에서 사용자와 상호작용할 수 있는 System call 몇 가지를 구현했다. 이번 프로젝트는 File Management와 관련된 System Call을 구현한다. 원래는 이전 프로젝트와 이번 프로젝트를 함께 진행해야 하지만 난이도가 워낙 높은 프로젝트이다보니... 학교 측에서 둘로 나눈 것 같다.(감사합니다 선생님...흑흑) 이전에 구현한 System Call과 잘 연동되어야 하는 것은 물론이고 File Processing도 잘 되어야 한다. 예를 들면 한 File을 두 Program이 접근할 경우 Race Condition이 발생할 수 있으므로 이를 잘 처리해야 한다. 이 외에도 파일을 이용한 Operation에 관한 다양한 이슈를 해결하면서 File System Call을 구현한다. 무..
Pintos Project(핀토스 프로젝트) 1 - User Program OS 과목에서 악명높은 프로젝트가 핀토스 프로젝트다. 그만큼 열심히하면 배워가는 것도 많다. 지금부터 핀토스 프로젝트 소개를 하려고 한다. 기준은 서강대학교에서 제공하는 Manual과 Pintos Manual이다. * 0_2 프로젝트는 핀토스의 data structure를 구현하는 것이다. 공식 Pintos에서 요구하는 test는 아니고 서강대에서 만든 것 같다. (test를 일일이 만든 게 대단하다...) Data structre를 열심히 공부한 사람은 쉽게 할 수 있고, 난이도도 높지 않으니 알아서 잘 하시길 바란다. Pintos Project 1은 User Program을 짜는 것이다. 현재 Pintos는 아주 기본적인 기능만 갖추고 있다. 할 수 있는 게 없다. 예를 들면 Boot하고 실행하고 P..
Express + RabbitMQ 하려했다 왜 이랬는지 알 수 없다... Message Queue를 한번쯤 써보려고 했으나 공부할수록 뭔가 헛짓같았다. 지금 내 코드는 express.Router()를 이용해서 작성되어있는데 Message Queue(RabbitMQ)를 사용하려면 이걸 다 뜯어 고쳐야한다. 그렇다고 더 좋은 점이 있나 하면 그것도 아니다 로그 관리는 pm2로 할 것이라... p.s) RabbitMQ는 공신 문서가 굉장히 잘 되어있다. 나중에 또 정리하겠지만, 공식 문서를 따라하는 것만큼 좋은 것도 없을 것 같다.