오늘 바보처럼 로컬에서 작업하고 푸시까지 했는데 사실 잘못된 커밋이었다는 걸 깨달았다... 여러 번 이런 적이 있었고, 그때마다 어찌저찌 돌아가긴 했는데 이번엔 정말 내가 완벽하게 이해한 상태에서 되돌릴 수 있어서 뿌듯했다. 앞으로 같은 문제가 터지면 제대로 해결할 수 있을듯. 그래서 정리해둔다! 우선 정확한 상황을 말해보자면, 1. 원격 : 정상(0) + 잘못된 커밋 1개 올라가 있는 상태 2. 로컬 : 1의 상태(정상(0) + 잘못된 커밋 1개) + 잘못된 merge까지 있는 상태 이랬다. 그래서 로컬이 원격보다 2 커밋 앞에 있던 상태. 그리고 따로 브랜치가 분리된 상태는 아니었다. 단순히 강의들었던 내용 기록목적이라 그냥 main브랜치에서 작업하고 있었다. 그래서 되돌리기 위해 해야 할 일은 1...
오늘 아주 감사하게도 면접을 볼 기회가 있었는데... 속상했다. 완벽하게 설명을 할 줄 아는 게 진짜 아는거다. 그때까진 안다고 말할 수 없는거다. 어줍잖게 알고 있는 게 제일 위험하다는 걸 아는데 그 어줍잖게 아는 걸 극복하는 게 힘들다. 더 공부를 해야겠다고 생각이 들었다. 1. 클라이언트를 구현할 때 Http프로토콜로 했을텐데, RestAPI를 사용했는지, 웹소켓을 사용했는지? - 이 질문은 내가 질문을 잘못 이해했던 것 같다. RestAPI를 잘 모르기도 했고. 그렇지만 RestAPI와 웹소켓의 차이는 알고 있었다. RestAPI같은 경우는 클라이언트가 서버에 요청하고 서버가 응답하고 통신이 끝나지만, 웹소켓은 특정 포트를 통해 연결을 계속 하고 있어서 실시간으로 양방향통신을 할 수 있다. 내가 ..
지금까지 DB를 이용해서 한 프로젝트는 총 세 번이었다. 세 번의 프로젝트를 하면서 '객체지향이 그렇게 좋다고 노래를 부르면서 왜 객체지향적인 장점을 나는 느낄 수 없는걸까? 객체는 단순히 테이블의 데이터를 전달하는 것 아닌가?'하는 생각이 들었다. ('하나의 객체 안에 멤버변수로 또 다른 객체가 있다면 데이터베이스에서는 어떻게 처리를 해줘야 하나?' 등.) 세 번의 프로젝트 중 두 번은 직접 JDBC API를 사용했고, 한 번은 myBatis를 사용했다. 좀 더 객체지향적으로 애플리케이션을 설계해보고 싶은 욕심을 느꼈고, 마침 그때 를 보고 나와 같은 고민을 한 개발자들이 있고(역시...!) JPA라는 ORM 프레임워크를 알게 되었다. 그래서 JPA를 공부하기 전에 내가 왜 JPA를 배우려고 하는지, ..
사실 어제 어떤 회사에 면접을 보러 갔었는데, 운영체제, 네트워크 등을 혼자 공부했다고 하니 슬라이딩 윈도우가 뭔지 아냐고 물어보셨다. 하하... 난 그자리에서 처음 들어봤다. 컨텍스트 스위칭이나 뮤텍스, 세마포어, 커널 등을 물어보셨다면 대답할 수 있었을텐데 슬라이딩 윈도우라니요... 그래서 찾아봤다. 아래의 링크에 따르면 두 개의 네트워크 호스트간의 패킷의 흐름을 제어하기 위한 방법이라고 한다. TCP처럼 데이터 전달을 보증하는 프로토콜에서는 패킷 하나 하나가 정상적으로 전달되었음을 알리는 확인 신호(ACK)를 받아야 하는데, 만약 패킷이 중도에 잘못되었거나 분실되어 확인할 수 없을 때 해당 패킷을 재전송해야 한다. 슬라이딩 윈도우는 일단 윈도우(메모리 버퍼의 일정 영역)에 포함되는 모든 패킷을 전송..
www.youtube.com/watch?v=5oTlFJ0llNw 위 영상을 보면 많은 트래픽을 효율적으로 처리하는 방법을 이야기하다가 CDN에 대한 이야기가 나온다. stateless한 서버의 경우, 서버를 따로 빼고 CDN을 적용해놓고 Application layer에는 Storage쪽으로 가기 전에 캐시 등을 구성하는 일반적이고 보편적인 구성이 있을수도 있다고 하시는데 문득 CDN이 궁금해졌다. 위키백과에 검색해보니 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템이라고 한다. 인터넷 서비스 제공자(ISP, Internet Service Provider)에게 직접 연결되어 데이터를 전송하므로, 콘텐츠 병목을 피할 수 있는 장점이 있다. CDN의 목적은 높..
초당 트랜잭션 수를 말한다. 아래의 글에 따르면 서비스 성능의 기준이라고 한다. 이용자 수가 늘어남에 따라 TPS가 늘어나다가 정체되는 순간이 오는데 이때 과도한 트랜잭션을 처리하느라 응답시간이 길어진다고 한다. 더 자세한 내용은 아래의 링크 참조. brunch.co.kr/@leedongins/27 TPS 지표 이해하기 모니터링 | 많은 초창기 스타트업들은 성능에 관심이 없습니다. 제품 만들기도 바쁜데 성능이 무슨 의미가 있을까 생각이 들죠. 당장 서비스에 사용자가 몰리면 아마존 오토스케일이 해결해 줄 brunch.co.kr
매번 프로젝트를 할 때마다 느끼는건데, '과연 이걸 구현할 수 있을까?', '못하면 어떡하지?' 싶은 기능들을 어찌저찌 잘 구현해가고 있다. 오늘은 프로젝트를 하면서 구글링을 했었지만 만족할만한 결과가 없어서 혼자 이 코드 저 코드 봐가며 완성한 기능을 정리하려고 한다. 혹시 비슷한 기능을 만들 누군가에게 도움이 되기를. (제 방법이 제일 효율적이라거나 그런 것은 아닙니다. 저는 이렇게 구현했고, 혹시 다른 더 좋은 방법이 있다면 알려주시면 감사하겠습니다.) 우선 상황을 설명하자면 이랬다. 위 화면은 숙소정보 상세조회화면이다. 아래의 리스트는 리뷰리스트인데, 저 리스트의 제목을 누르면 그 리스트의 내용이 보여야 한다. 보여야 하는 내용에는 리뷰의 이미지들도 포함되어 있는데, 테이블구조상 리뷰와 리뷰이미지..
오늘 플젝하다가 ajax로 jsp에서 json형태로 데이터를 보내고, 그 데이터를 자바에서 받아서 비즈니스 로직을 실행한 결과를 다시 json형태로 jsp에 넘겨줘야하는 일이 있었다. 자바단에서는 json으로 보내기 위해 HashMap에 보낼 데이터를 넣어놓은 상태였는데, 이걸 어떻게 json으로 바꿔서 보내줘야하나 하는 문제가 있었다. 그래서 막 구글링하다가 Gson을 이용하는 방법이 있길래 그걸로 구현했는데, Gson이 정확하게 뭔지 몰라서 정리한다. github.com/google/gson google/gson A Java serialization/deserialization library to convert Java Objects into JSON and back - google/gson gith..