Development
-
[실용주의 프로그래머] 1장. 실용주의 철학Development/개발 관련 도서 2018. 5. 28. 14:09
실용주의 프로그래머(The Pragmatic Programmer)1. 실용주의 철학(A Pragmatic Philosophy) 이 장에서는 문제에 어떻게 접근해야 하는지에 대한 철학을 알려준다. 1. 고양이가 내 소스코드를 삼켰어요 내가 한 일에 대해선 책임을 져라. 프로그램이 안 돌아가면 변명하지 말고 대안을 찾아야 한다.본인의 실력에 대해 자부심을 가질 필요가 있다. 그런만큼 실수를 인정할 필요도 있다. Tip 3. 어설픈 변명을 할 바엔 대안을 제시해라. 코드를 버려야하나? 리팩토링 가능 여부를 분석 뭘 구현해야하지? 프로토타입 구현으로 먼저 구조를 살펴봄 테스팅, 자동화도 도입해야할 요소 SE시간에 배웠던 것들을 다시금 강조한다. 그리고 나도 충분히 못할 수 있다. 그러면 부탁하고 묻고 하는 것에..
-
[실용주의 프로그래머] 서론Development/개발 관련 도서 2018. 5. 28. 13:34
실용주의 프로그래머(The Pragmatic Programmer) Preface (실용주의 프로그래머는 서론부터 이 책의 팁이 나오기 때문에 특별히 싣게 되었다.) '끝장나는' 프로그래머가 되고싶은가? 그렇다면 실용주의 프로그래머가 되도록 노력하면 된다. 실용주의 프로그래머의 주요 특징? 얼리어답터다. 신기술을 받아들이는데 적극적이어야 하는 성향을 지니면 좋다. 캐묻기를 좋아한다. '왜?'의 중요함. 모르면 검색할 줄 아는 적극성. 비판적인 사고의 소유자다. 인과관계를 확실히 짚을 줄 아는 사람이 되면 좋다. 현실적이다. 내가 마주하는 문제가 어렵나/쉽나, 그로 인해 시간이 얼마나 걸리나를 바로 파악할 수 있는 사람을 말한다.설령 오래 걸린다 해도 얼마만큼 붙잡고 해결할 것인지까지 견적을 내보고 집요하게..
-
[수정중] 헤드퍼스트 디자인 패턴 [13]Development/디자인 패턴 2018. 1. 9. 19:06
헤드퍼스트 디자인 패턴[13] 패턴과 함께하는 행복한 삶 패턴: 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다. 컨텍스트: 패턴이 적용되는 상황문제: 컨텍스트 내에서 이루고자 하는 목적해결책: 누구든지 적용가능하되, 제약조건 내에서 목적을 달성할 수 있는 일반적인 디자인. GoF Design Patterns를 보면 패턴 카탈로그에 의해 패턴들이 정의되어 있다!Intent: 패턴 이름Motivation: 패턴이 만들어지게 된 부분Applicability: 어디 적용가능한지?Structure: 구조... 클래스간 관계를 다이어그램으로 표현Participant: 이 디자인에 포함된 클래스와 객체에 대한 설명Collaborations: 각 participant 간 패턴내에서 어떻게 서로 도움을 주는지 설명..
-
[수정중] 헤드퍼스트 디자인 패턴 [11]Development/디자인 패턴 2018. 1. 9. 19:06
헤드퍼스트 디자인 패턴[11] 프록시 패턴 프록시: 자신이 대변하는 객체와 그 객체에 접근하고자 하는 클라이언트 사이에서 작업을 처리. gumball 프로그램의 위치, 현황, 현재상태에 대해 원격으로 모니터링하고싶다! 원격 프록시를 통해 구현!프록시: 진짜 객체를 대신함. -> 실제 객체인 것 처럼 행동하지만 실제로는 네트워크를 통해서 진짜 객체와 데이터를 주고받음.원격 프록시: 원격 객체에 대한 로컬 대변자 원격 객체: 다른 JVM의 힙에있는 객체(다른 주소공간에서 돌아가고 있는 원격객체) 로컬 대변자(Local Representative): 다른 원격 객체에게 메소드 호출을 전달해주는 역할을 맡음
-
[수정중] 헤드퍼스트 디자인 패턴 [10]Development/디자인 패턴 2018. 1. 9. 19:05
헤드퍼스트 디자인 패턴[10] 스테이트 패턴 상태를 나타내는데 유용한 패턴. 사용자가 어떤 행동을 하는 것에 대해 적절한 행동을 취하게 하도록 돕는다. state machine을 구현하는 방법: 상태를 모은다. (책의 예시에선 4가지 상태가 있음) 현재 상태를 저장하기 위한 인스턴스 변수를 만들고 상태값을 정의한다. 각 상태마다 정수를 부여, 현재상태를 저장하는 인스턴스 변수도 생성 이 시스템에서 일어날 수 있는 모든 행동을 정의. 행동들에 대해 상태가 변하는 것을 알 수 있음. -> 뽑기 기계에 대한 인터페이스 state machine 역할을 하는 클래스를 생성. 메소드 내에서는 조건문에 따른 다양한 상황에 대한 처리가 가능. 책의 첫번째 예제의 단점! 전혀 객체지향적이지 않은 소스코드! OCP를 지키..
-
[수정중] 헤드퍼스트 디자인 패턴 [9]Development/디자인 패턴 2018. 1. 9. 19:05
헤드퍼스트 디자인 패턴[9] 이터레이터 & 컴포지트 패턴 책의 예제로 이해하자. 아침메뉴 식당과 팬케이크 식당이 합쳐졌다! 식당메뉴 표시와 메뉴 구현이 원래 두개였고, 각각의 요리요소를 저장하는 컬렉션도 다르다. 이걸 한번에 하려면?-> 바뀌는 부분을 캡슐화하라!-> 객체 컬렉션의 형식이 다르기 때문에 반복작업을 하는 방법이 달라지는 부분이다. 소스로 이해하는게 더 빠를 듯 싶다! 373페이지의 클래스 다이어그램으로부터 이해! java.util.Iterator를 사용 createIterator가 정의된 인터페이스 Menu를 새로 불러옴. -> 구상 Iterator 클래스를 만들어서 리턴할 책임을 넘김 PancakeHouseMenuIterator는 그냥 ArrayList의 Iterator를 형태에 맞게 오..
-
[수정중] 헤드퍼스트 디자인 패턴 [8]Development/디자인 패턴 2018. 1. 2. 16:21
헤드퍼스트 디자인 패턴[8] 템플릿 메소드 패턴 공통점을 뽑아내서 코딩해보자! 커피와 홍차를 만드는 클래스가 있다고 가정하자. 이 둘의 만드는 법은 각각 다음과 같다. 그리고 이 둘의 공통점을 찾아보자. 커피 만드는 레시피 물을 끓인다 끓는 물에 커피를 우려낸다 커피를 컵에 따른다 설탕과 우유를 추가한다 홍차 만드는 레시피 물을 끓인다 끓는 물에 차를 우려낸다 차를 컵에 따른다 레몬을 추가한다 prepareRecipe까지 추상화할 수 있다! prepareRecipe 같은 것이 템플릿 메소드! 우려낸다 / 첨가물을 추가한다는 하나로 합칠 수 있는 기능이다. 이런것들은 서브클래스에 의존한다. 물끓이고 음료를 컵에 붓는건 걍 여기서 구현한다. 템플릿 메소드에서는 알고리즘의 각 단계들을 정의하며, 그 중 한개 ..
-
[수정중] [001] JavaFX란?Development/JavaFX 8 2018. 1. 2. 01:21
자바fx는... 자바를 만든 썬 마이크로시스템즈에서 개발하고 배포한 소프트웨어 플랫폼이다. GUI 라이브러리로 스윙을 대체하기 위해 만들었다. 자세한 사항은 위키페디아나 해외 웹을 보시길 바란다. 추후 설명은 단순한 자바fx 기반 프로그램을 통해 어떤 구조로 짰는지, 어떻게 구성되는지에 간략히 설명하고자 한다. 이 후 글에서 만드는 프로그램은 다음과 같은 간단한 구조를 가지고 있다. 이 앱은 아울러 JavaFX 8에서 수행된다. 상세한 설정은 글 아래의 링크를 참조하기 바란다. 해당 링크에서 e(fx)clipse와 SceneBuilder를 설치한다면 이해하기 더욱 수월할 것이다. /*ATM * 화면 1 * 1.계좌등록 , 2. 로그인, 3. 종료 * 계좌등록 화면은 예금주/계좌번호/비밀번호/초기번호를 입..