전체 글
-
Raft 아이템 정리게임/Raft 2020. 12. 6. 01:24
그릴 한번에 여러개의 음식을 조리할 수 있다. 그물망 떠내려가는 아이템을 붙잡을 수 있다. 나는 이 그물망들을 배 사방에 깔아놓고 어느 방향에서든 걸리게 설계했다. 수신기 이름이 수신기 맞나...? 하여튼 초기 스토리 진입을 위한 필수템이다. 위 아이템을 설치하고 작동하면 레이더에 저렇게 표시가 잡히는데, 파란색이 스토리를 위한 목적지고 초록색은 대형섬으로 진짜크다. 사용법 1. 배터리를 준비한다. 2. 높은 곳에 안테나 3개를 설치해야 한다. 기둥을 이용해 최소 2층에 설치해야 신호가 잡힌다. 3. 안테나를 높은 곳에 설치한다고 잡히는 게 아니다. 안테나 3개 각각의 거리와, 각 안테나와 수신기 사이의 거리도 조금 벌려있어야 제대로 작동한다. 4. 옆에 장치에 써있는 4자리 숫자가 바로 스토리 목적지다..
-
Task PropertyC# 2020. 12. 5. 18:37
코드 리팩토링을 진행하면서, 내 과거의 코드가 굉장히 창피했다. C#을 1년간 썼으나, 늘어나는 건 그저 수많은 if문과 while문,,, Thread.Sleep이 다였다. 소켓통신을 통해 메세지를 주고받는데, 이걸 Request/Response 형식의 API로 구현했다. 메세지를 Send한 뒤 기다리는 과정에서 While문을 통해 그저 기다리며 해당 메세지를 수신 시 Return하는 형식으로 구현했었다. 코드 리팩토링을 하는 과정에서 TAP를 알게 되었고, 이제 정리해보려 한다. TAP 우선 비동기 프로그래밍을 다루는 것은 굉장히 중요하다. 가령 프로그램 내에서 용량이 제법 큰 파일을 다운로드 한 후 처리하는 작업이 있다고 하자. 동기적으로 프로그래밍을 한다면 파일을 다운로드할때까지 무작정 기다린 후 ..
-
Raft 기본게임/Raft 2020. 12. 2. 21:38
요즘 Raft라는 게임에 빠졌다. 친구들이랑 하면 더욱 재밌다. 나만의 배 만들기! 게임 시작 가장 처음 시작하면 나오는 화면이다. 나는 갈고리 하나만 가진 채 시작한다. 갈고리 하나로 시작해 바다의 쓰레기를 주워가며 큰 배를 만드는 게임이라고 보면 될것같다. 화면 최하단에 갈고리와 빈칸들이 보인다. 숫자 1을 누르면 해당 칸의 아이템을 쓸 수 있다. 이제 1번을 누른 뒤 바다쓰레기들을 줍겠다. 이걸 하나하나 줍줍하다 보면 나중에 뗏목이 멋진 배로 변한다. 간혹 쓰레기중에 저런 통이 떠내려오는데, 저건 꿀템이다. 안에 여러가지 아이템이 들어있다. 바다에 떠다니는 아이템 1. 야자나무 잎 2. 판자 3. 플라스틱 4. 통 (안에 패키지로 쓰레기들이 들어있음) 4-1. 로프 4-2. 돌 4-3. 스크랩 4-..
-
단위 테스트 작성잡기술 2020. 12. 2. 20:55
현재 내가 맡은 프로그램은 WPF 를 이용해 구현되었는데, 기존 소스는 굉장히 UI와 Model간 의존도가 컸다. 무슨 말이냐 하면 단순히 버튼 하나를 새로 만드는 과정에도 수많은 절차의 과정이 여기저기 묶여있어, 확장하기 굉장히 어려웠다. 그래서 UI와 Model 코드 의존성을 줄여나가는 과정이 필요했다. 여기에 도움이 됐던게 단위 테스트였다. Visual Studio에선 단위 테스트 기능을 잘 제공해주기 때문에, 어렵지 않게 작성할 수 있었는데, 단위 테스트를 사용함으로서 코드를 분리해 나갈 수 있게 됐다. TDD(Test-Driven Development) 코드를 의식의 흐름대로 짜다보면, 난 A 함수가 잘 동작하는지만 테스트 해보고 싶지만 해당 테스트를 위해선 애플리케이션을 구동해서 로그인 절차를..
-
개발 협업 도구잡기술 2020. 11. 26. 00:08
입사한지 1년 3개월이란 시간이 흘렀다. 돌이켜 보자면 긴 시간이었고, 이뤄낸걸 보자니 짧은 시간인 것 처럼 느껴진다. 내가 가르쳐줄만한 건 없지만, 벌써 후배도 생기고 (항상 신경써주고 고마운 사람들이다) 여러 일들이 있었다. 하지만 여자친구는 없었다. 직장은 판교에 위치해 있는데, 출근하기전 이곳에 내자리가 있다는것 자체로 기뻤다. 하지만 직방을 통해 가격을 알아보며 내 집은 없다는걸 깨달았다. 그래서 현재 야탑부근에 방을 구해 살고있다. 야탑에서 판교로 가는 교통편이 잘되어있어 이곳에 거처를 마련했다. 하여튼 입사하고 내가 개인적으로 느낀 점들을 두서없이 일기처럼 적으려고 한다. 프로그램 빌드과정 신입으로 처음 익혔던것은, Jenkins 였다. 회사에서 파는 제품(프로그램)이 있을 것이다. 우리가 ..
-
NBP(네이버 비즈니스 플랫폼) SW개발 면접 후기일상 2019. 7. 18. 14:56
지난 7월 4일, NBP 코딩 테스트를 뚫고 기술면접 보러 갔다. 결론은 불합격! 우선 코테는 문제가 영어로 6문제 나왔다... 드래그도 안 댐 그래서 영어가 약한 나는 메모장에 영어를 옮겨 쓴 뒤 아예 통 번역해서 다시 긁어왔다. 창피하네 하튼 그렇게 6문제 중 5문제를 제대로(?) 풀고 합격할 수 있었다. 어쨌든 판교 크래프톤 타워로 면접 오라고 메일을 받았다. 갔다. 한 20명 남짓 있는 거 같았다. 근데 이틀 동안 진행했으니, 한 3~40명 되려나? 잘 모르겠다 그냥 가벼운 마음으로 자소서에 적은 프로젝트 기반으로 준비했다. 자소서에 있는 거 하나도 안 물어봤따... 코테 리뷰 생각도 안 했는데, 갑자기 물어봐서 정신이 멍해졌다. 내가 어떻게 풀었는지 까먹어버렸다~~ ㅋㅋㅋㅋ그래서 기억이 안 나는..
-
8. 경사 하강법 종류AI/딥러닝 2019. 7. 14. 07:35
저번에 Gradient Descent 알고리즘에 대해 다룬 적이 있습니다. 기본적으로 다뤘던 알고리즘은(SGD : Stochastic Gradient Descent ) Cost function의 형태가 convex하지 않고 복잡할 경우, local minimum에 빠져 엉뚱한 결과를 내는 경우도 존재합니다. 그래서 이번엔 이를 개선시킨 Gradient Descent 알고리즘들을 소개하려고 합니다. Exponentially Weighted Moving Average 우선 Moving Average가 무엇인지 알아볼까요. 말 그대로 '이동 평균'입니다. 보통 Moving Average는 현재 1~n까지의 데이터가 있으면, 현재 n부터 데이터의 특정 시점까지의 평균을 의미합니다. 그런데 Exponentiall..
-
7. 역전파(Back propagation)AI/딥러닝 2019. 7. 14. 05:22
지난 시간에 사용한 인공 신경망입니다. Layer 1 g1 weight = (2, -2, 0) g2 weight = (1, 3, -1) g1 = x1*w11(1) + x2*w12(1) + x3*w13(1) g2 = x1*w21(1) + x2*w22(1) + x3*w23(1) s1 = sigmoid(g1) s2 = sigmoid(g2) Layer 2 f weight = (3, -2, -1) g3 = s1*w1(2) + s2*w2(2) + s3*w3(2) f = sigmoid(g3) x1 x2 g1 g2 f y 0 0 (2*0) + (-2*0) +(0*1) = 0 sigmoid(0) = 0.5 (1*0) + (3*0) + (-1*1) = -1 sigmoid(-1) = 0.269 (3*0.5) + (-2*0...