본문 바로가기

개발 공부125

OSI 7계층이란 OSI 7 계층 (OSI 7 Layer) OSI 7계층(OSI 7 Layer)에 대해서 알아보겠습니다. 탄생 배경 데이터를 주고 받기위한 규칙을 프로토콜 이라고 합니다. 하지만 이런 규칙이 통신 회사마다 다르다면 어떤 일이 일어나게 될까요? 예를들어 하나의 게임을 하기위해선 게임 개발 회사에서 지정한 장비만으로 게임을 해야할 것입니다. 단순히 메일을 주고받을 때 역시 상대방과 프로토콜을 맞추기 위해 많은 노력을 해야 할 수도 있습니다. 이러한 문제를 해결하기 위해 ISO(국제 표준화 기구)에서 데이터를 주고받기 위한 규칙인 프로토콜을 표준화해서 나온게 바로 OSI 7계층입니다. 출처:http://www.a24s.com/data/jeongbotongsinhakseub/jbts/contents/ch2-4.h.. 2020. 7. 16.
객체지향 연습하기 (Java) - 볼링 게임 점수판 - 마무리 객체지향 연습하기 (Java) - 볼링 게임 점수판 지난 포스트 에 이어서 점수 계산과 화면 출력에 대해 구현해보겠습니다. 자세한 코드는 깃 허브 에 저장되어 있습니다. 이제 본격적으로 점수 계산 기능을 구현하겠습니다. 10개의 Frame이 자신의 점수를 가지고 있고, 점수에 따른 Frame의 상태 즉, STRIKE, SPAIRE 인지 아니면 단순히 평범하게 점수를 획득한 Frame인지에 대한 값을 가지게 됩니다. 먼저 Score 객체를 수정하겠습니다. private int firstShot; private int secondShot; private int finalShot; 기존의 Score 객체가 가지는 상태 값입니다. int 형 변수를 3개 사용하고 있습니다. 이 3개의 변수는 점수라는 하나의 공통.. 2020. 7. 6.
객체지향 연습하기 (Java) - 볼링 게임 점수판 - 구현하기(2) 객체지향 연습하기 (Java) - 볼링 게임 점수판 지난 포스트 에 이어서 Frame 클래스를 인터페이스를 이용하여 추상화 시키는 작업을 진행하겠습니다. 자세한 코드는 깃 허브 에 저장되어 있습니다. Frame Interface public interface Frame { boolean hasTurn(); void deductTurn(); } 프레임은 공통적으로 투구의 횟수가 남았는지와 투구 후에 턴을 계산하는 메세지를 수신할 수 있습니다. NomalFrame public class NomalFrame implements Frame { private static final int NOMAL_FRAME = 2; private static final int TOTAL_PIN = 10; private int .. 2020. 6. 10.
객체지향 연습하기 (Java) - 볼링 게임 점수판 - 구현하기(1) 객체지향 연습하기 (Java) - 볼링 게임 점수판 지난 포스트 에서는 객체간의 메시지들을 생각해보고 객체가 외부에 공개하는 인터페이스를 통해 메시지를 어떻게 수신할지 간단하게 작성해봤습니다. 이번 포스트부터는 기능의 구현을 통해 객체 간의 협력이 어떻게 이루어지는지 살펴보도록 하겠습니다. 먼저 Pin 클래스를 구현해보도록 하겠습니다. 한 프레임에 볼링 핀은 총 10개가 세워지게됩니다. 플레이어가 공을 투구하여 세워진 10개의 볼링 핀을 맞추게됩니다. 물론 못 맞출수도 있겠죠. 그리고, 각각의 볼링 핀 구현이 아닌 최대 10개까지, 즉 0개 이상의 볼링 핀을 구현하기 때문에 Pin -> Pins로 클래스 이름을 변경하겠습니다. public class Pins { private static final in.. 2020. 6. 5.
객체지향 연습하기 (Java) - 볼링 게임 점수판 - 메시지 생각하기 객체지향 연습하기 (Java) - 볼링 게임 점수판 지난 포스트 에서 볼링 게임 점수판을 구현하기에 앞서 생각해야할 것들을 정리해봤습니다. 이번 포스트에서는 볼링 게임 점수판을 구현하기 위해 어떤 객체들이 있고, 어떤 메시지들이 필요한지 살펴보겠습니다. 다만 주의할 점은 설계는 구현 과정에서 변할 수 있다는 점과 구현 전에 생각해보는 설계에 너무 큰 공을 들이지는 않을 것이라는 점입니다. 먼저 볼링 게임 점수판에는 어떤 객체들이 있을지 생각해보겠습니다. 플레이어 첫번째로 볼링 게임을 플레이하는 플레이어가 있습니다. 플레이어는 투구를 해서 볼링 핀을 넘어뜨리게 됩니다. 지금 프로젝트는 볼링 게임 프로젝트가 아닌 볼링 게임 점수판 프로젝트이기 때문에 플레이어가 어떤 식으로 투구할지는 생략하겠습니다. 볼링 핀.. 2020. 5. 26.
객체지향 연습하기 (Java) - 볼링 게임 점수판 - 생각해보기 객체지향 연습하기 (Java) - 볼링 게임 점수판 객체지향의 사실과 오해를 읽고, 객체지향 패러다임을 좀 더 이해하고, 연습하기 위한 자바 프로젝트입니다. 프로젝트의 주제는 객체 지향 프로그래밍 연습하기 좋은 방법은? 이라는 글을 읽고 볼링 게임 점수판으로 결정했습니다. 틀린 점, 개선해야할 부분이 있다면 피드백 주시기 바랍니다. 아무래도 경험이 부족하다보니 '~~ 것 같습니다' 같은 표현이 많이 등장하는 점 양해부탁드립니다. 구현에 앞서 프로젝트에 대한 분석과 설계를 해보겠습니다. 가장 먼저 해야할 것은 볼링 게임의 점수가 어떤식으로 계산이 되는지 알아보는 것 입니다. 볼링 점수 계산법 위의 내용을 간략히 정리해보면 볼링 핀은 10개 이다. 프레임은 총 10번 진행된다. 플레이어는 한 프레임에 두번 .. 2020. 5. 19.
Git Hub - Issues & Projects로 프로젝트 관리하기 Git Hub - Issues & Projects로 프로젝트 관리하기 Git Hub에 있는 Issues Projects 기능을 이용해 프로젝트를 관리하는 법을 알아보겠습니다. 간략하게 용어에 대해 설명하자면 Issue(이슈)는 다양한 작업 이라고 생각하시면 됩니다. 버그 수정, 새로운 기능 추가, 개선 해야할 기능 등등을 이슈라고 합니다. 이런 다양한 Issue(이슈)를 기반으로 작업을 진행하게 됩니다. 이런 Issue(이슈)를 관리하는 도구를 이슈 트래커라고 부릅니다. JIRA Trello 등등 다양한 이슈 트래커들이 있습니다. 그 중에서 앞서 말한대로 Git Hub에 있는 Issues Projects 기능을 이용하겠습니다. 깃허브에 있는 repo중에 관리할 repo를 선택해 들어갑니다. Issues .. 2020. 5. 10.
스프링부트 JSON 응답처리와 예외처리 스프링부트 JSON 응답처리와 예외처리 저번 게시판 프로젝트를 하면서 느낀 부족한 점 중에서 예외처리 미흡 JSON Return 시에 공통된 포맷으로 리턴하지 못한점 이 있었습니다. 이 두문제에 대해 포스팅 해보겠습니다. 혹시 틀렸거나, 더 좋은 방법이 있다면 댓글 부탁드리겠습니다! 공통된 포맷으로 JSON 리턴하기. 요청에 대한 응답을 할 때, 요청마다 JSON 응답의 포맷이 달랐기때문에 클라이언트에서 요청마다 다른 처리를 했습니다. Return되는 JSON의 포맷이 통일되어있다면 api호출시 error처리에 대한 부분도 통일되게 할 수 있을 것 같습니다. 우선 return 하게될 JSON 포맷은 { data: { // 해당 요청의 결과가 들어가게 됩니다. } errors: { // 오류가 있다면 오류.. 2020. 4. 22.
이력서만들기 - GitHub Page 이력서 만들기 - GitHub Page 저는 그 동안 잡코리아, 사람인에 작성한 이력서를 이용해 구직 활동을 했습니다. 요즘 로켓펀치, 원티드 등 다양한 개발자 구직 / 구인 서비스가 늘어나면서 이력서 정리에 대한 필요성을 느꼈습니다. 저는 스펙이 낮은 편에 속하기 때문에… 좀 더 눈길을 끌만한 이력서가 없을까? 하는 생각을 하게되었고, GitHub Page 를 이용해 이력서를 작성하기로 했습니다. 이력서는 경력을 쌓아가면서 꾸준히 관리를 해야한다고 들었기 때문에 이번 기회에 포스트를 작성하면서 이력서를 만들어보기로 했습니다. 먼저 깃허브에 Repository를 생성합니다. 위 처럼 [내 아이디].github.io 라는 이름으로 저장소를 생성하면 깃허브 페이지 서비스를 이용할 수 있습니다. 이력서로 사용.. 2020. 4. 12.
고수의 발자취를 따라서 - 계층형 게시판 후기, 피드백 고수의 발자취를 따라서 - 계층형 게시판 후기, 피드백 2달 가량의 계층형 게시판이 마무리 되었습니다. 전체 코드는 Git Hub에 있습니다. 계층형 게시판 github 게시판 페이지 게시판 상세 페이지 게시판 삭제 후 페이지 허접하지만… 여차저차 마무리가 되었습니다. 그 전에 틈틈히 정리한 포스트는 게시판 조회에서 마무리했습니다. 점점 새로운 기술보다는 코드를 복붙하는 느낌이 강해졌기 때문입니다. 후기 정말 간단하게 구현해서 후기랑 피드백을 쓰기도 민망하지만 작은 일에도 스스로에게 피드백을 주고 개선하는게 중요하다 생각합니다. 사실 처음 시작했을때 마무리가 될지… 걱정이 앞섰는데 여자처차 마무리가 되어서 후련한 기분이 듭니다. 이것저것 기능을 더 붙일수도 있겠지만 초반에 완성 시키고자 한 기능에 대한 .. 2020. 4. 6.
고수의 발자취를 따라서 - 계층형 게시판(10) - 마무리 게시판 기능 구현 (4) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 게시판 기능 구현 - 게시글 조회 이제 본격적으로 게시판의 기능을 구현해보도록 하겠습니다. 먼저 게시글을 조회하는 기능을 만들겠습니다. 현재 계층형 게시판을 만들고 있기 때문에 저번 포스트 에서 만들어 놓은 쿼리를 수정하여 적용하겠습니다. WITH RECURSIVE CTS AS ( SELECT id ,title ,content ,depth ,parent_id ,author_id ,created_date ,modified_date ,CAST(id as CHAR(255)) lvl ,id as groupno FROM boards .. 2020. 4. 5.
고수의 발자취를 따라서 - 계층형 게시판(9) 게시판 기능 구현 (3) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 게시판 기능 구현 - 연관 관계 매핑 이제 본격적으로 게시판의 기능을 구현해보도록 하겠습니다. 기본적인 CRUD기능을 구현하기 전에 Entitiy의 연관 관계를 설정하겠습니다. CRUD란 Create Read Update Delete 의 앞 글자들을 따서 CRUD라고 부릅니다. domain 패키지 아래 위의 사진처럼 boards, images 패키지를 생성합니다. board 패키지 안에 Boards 클래스를 생성합니다. Boards (import 부분은 생략했습니다) 전체 코드는 Git Hub 에 있습니다. package c.. 2020. 4. 1.