본문 바로가기
[Effective Java] 타입을 정의할 때만 인터페이스를 사용하자. [Effective Java] 타입을 정의할 때만 인터페이스를 사용하자. - 인터페이스를 구현한다는 것은 해당 클래스가 해당 인터페이스의 "타입" 이 될 수 있다는 것을 의미. 따라서 인터페이스는 인스턴스로 할 수 있는 일을 나타내야 하고, 다른 목적으로 정의하는 것을 옳지 않다. - 상수 인터페이스(constant interface) 가 인터페이스의 기본 목적에 어긋난다. 메소드를 갖지 않고, 외부에 제공하는 상수 값을 갖는 static final 필드만을 갖는다. 이렇게 하지 말자!! 상수 인터페이스는 인터페이스를 "형편없이" 사용하는 예이다. 상수 인터페이스는 네임 스페이스를 줄이는 역할도 한다. - 상수를 외부에 제공하고 싶다면 다음의 방법을 사용하는 것이 좋다. 만일 어떤 상수가 기존 클래스나 .. 2016. 11. 8.
[Effective Java] 추상 클래스보다는 인터페이스를 사용하자. [Effective Java] 추상 클래스보다는 인터페이스를 사용하자. - 인터페이스(interface)와 추상클래스(abstract class)는 비슷하지만 다르다. 추상 클래스는 구현된 메소드를 포함할 수 있는 반면 인터페이스는 그렇지 못하다. 추상 클래스로 정의된 타입을 구현하는 클래스는 반드시 추상 클래스의 서브 클래스가 되어야 한다. 인터페이스를 구현하는 클래스의 경우 인터페이스에 정의된 모든 메소드를 구현하기만 하면 된다. 자바는 단일 상속만을 허용하므로 추상 클래스로 타입을 정의할 때 심한 제약이 따른다. - 인터페이스는 추상 클래스에 비해 변경과 적용이 쉽다. - 인터페이스는 믹스인(mixin)을 정의하는 데 이상적이다. 믹스인은 클래스가 자신의 본래 타입에 추가하여 구현할 수 있는 타입으.. 2016. 11. 7.
[Effective Java] 클래스와 그 멤버의 접근성을 최소화하자. [Effective Java] 클래스와 그 멤버의 접근성을 최소화하자. - 잘 설계된 모듈과 그렇지 않은 것을 구분 짓는 가장 중요한 잣대는, 모듈 자신의 내부 데이터 및 그 외의 상세한 구현 부분을 다른 모듈로부터 어느 정도로 숨기느냐에 달려 있다. - 모듈은 자신의 API 를 통해서만 다른 모듈과 상호작용한다. 정보 은닉(information hiding) 또는 캡슐화(encapsulation)이 그것이다. - 정보 은닉은 시스템을 구성하는 모듈들 간의 결합도를 낮추어(decoupling) 모듈 별로 개발, 테스트, 최적화, 사용 및 수정이 가능하도록 한다. 또한 이렇게 하면 병행 개발 ( parallel development ) 를 할 수 있어 시스템 개발이 빨라진다. 모듈을 더 빨리 파악할 수 있.. 2016. 10. 17.
[iOS Study] 저장, 읽기, 앱 상태 [iOS Study] 저장, 읽기, 앱 상태 출처 : 아론 힐리가스의 iOS 프로그래밍 -여기서는 iOS 에서 파일 시스템을 통해 읽고 쓰는 데 필요한 개념과 기법을 배운다. -아카이빙은 iOS 에서 모델 객체를 저장하는 가장 흔한 방법 중 하나이다.객체의 아카이빙은 그 객체의 프로퍼티들을 모두 기록하고 파일시스템에 그 내용을 저장하는 것을 포함한다.언아카이빙(unarchiving)은 아카이브한 데이터로부터 객체를 다시 만든다. -인스턴스들을 아카이브하고 언아카이브해야 할 클래스들은 NSCoding 프로토콜을 반드시 따라야 하며, 두 필수 메소드 encodeWithCoder: 와 initWithCoder: 를 구현해야 한다. -encodeWithCoder: 메시지를 받으면, 전달된 인자인 NSCoder .. 2016. 3. 7.
[iOS Study] 카메라 [iOS Study] 카메라 출처 : 아론 힐리가스의 iOS 프로그램 -UIImageView 는 contentMode 프로퍼티에 따라 이미지를 표시한다.이 프로퍼티는 이미지뷰의 프레임 안에서 이미지를 어디에 위치시키고 어떻게 크기를 조절할지를 결정한다.UIImageView 에서 contentMode 의 기본값은 UIViewContentModeScaleToFill 이다.이 값은 이미지 크기를 이미지뷰의 bounds 와 정확히 일치하게 조절한다. 이미지가 원본과 같은 종횡비로 표시되도록 하려면 Aspect Fit 으로 설정해야 한다. -소스 파일을 옵션 - 클릭 하면 보조 편집기로 소스가 열린다. -xib 에서 소스파일로 컨트롤 - 드래그 하면 바로 IBOutlet 이나 IBAction 을 연결할 수 있다... 2016. 2. 23.
[iOS Study] UINavigationController [iOS Study] UINavigationController 출처 : 아론 힐리가스의 iOS 프로그래밍 -각 설정은 세부 페이지를 가지고 그 세부 페이지는 또 관련된 하위 페이지를 가진다.이러한 형태의 인터페이스를 드릴 다운 인터페이스(drill-down interface)라 한다. -앱에서 여러 정보 화면을 나타낼 때 UINavigationController 가 그 화면들의 스택을 관리한다.각 화면은 UIViewController 의 view 이고, 그 스택은 뷰 컨트롤러의 배열이다.UIViewController 가 스택 꼭대기에 있을 때 그 컨트롤러의 view 가 보여진다. -UINavigationController 의 인스턴스를 초기화할 때 그 인스턴스에 UIViewController 를 전달해줘.. 2016. 2. 22.
[iOS Study] 델리게이션과 텍스트 입력 [iOS Study] 델리게이션과 텍스트 입력 출처 : 아론 힐리가스의 iOS 프로그래밍 -UITextField 인스턴스는 사용자가 텍스트를 수정할 수 있게 해준다. -UIResponder 는 UIKit 프레임워크에 존재하는 추상 클래스이다.다음 세 클래스는 UIResponder 의 하위 클래스이다. UIView, UIViewController, UIApplication UIResponse 는 이벤트를 제어하는 메소드들을 정의한다.이벤트에는 터치 이벤트, 흔들기와 같은 모션 이벤트, 재생/정지와 같은 원격 제어 이벤트 등이 있다.하위 클래스들은 이런 이벤트에 응답하기 위해 각각에 따라 이들 메소드를 재정의한다. -UIWindow 는 다른 이벤트들에 응답할 객체를 가리키는 퍼스트 리스폰더 (first re.. 2016. 2. 19.
[쏘카/프리우스] 프리우스를 시승해봤습니다~ [쏘카/프리우스] 프리우스를 시승해봤습니다~ 쏘카의 이벤트를 통해서 도요타의 "프리우스" 를 시승해보았습니다. 집 주변인 고대에 있는 프리우스는 고대생들이 다 찜했는지 예약시간이 나지 않아 다른 지역을 알아보았고, 경희대에서 새벽 12시 30분~5시 30분까지 5시간의 대여를 득탬!! 쏘카에서는 아직도 이벤트를 하니 여러분도 이벤트를 통해 프리우스 5시간 무료시승에 도전해보세요.( 8월 25일 기준 현재는 이벤트 종료 ㅠ ) 도요타의 프리우스는 이렇게 생겼습니다. 사실 차의 스펙같은 것은 그렇게 크~게 신경쓰는 편이 아니라 스펙을 자세히 적지는 않을게요. 다만 시승 후 느낌에 대해서는 철저히 ㅋ 처음 프리우스를 접한것은 이 뒤태인데, 엉덩이가 참 큼직하니 머슴 엉덩이 같다는 느낌도 받고, 뭔가 로보트같다.. 2015. 8. 25.
[linux] iptables( 방화벽 ) command tutorial linux, iptables( 방화벽 ) command tutorial. iptables ( 방화벽 ) 3가지 chain 존재. INPUT, OUTPUT, FORWARDINPUT 은 Linux 서버로 들어오는 것OUTPUT 은 Linux 서버에서 나가는 것.FORWARD 는 Linux 서버의 로직을 거치지 않고 바로 OUPUT 으로 나가는 것. -N : 새로운 chain 만들기-L : chain 규칙 보여주기-X : 비어있는 chain 없애기-P : chain 규칙 바꾸기-F : chain 에 있는 모든 규칙 지우기. -A : chain 에 새로운 규칙 추가 ( 맨 아래 추가 )-I : chain 에 규칙 삽입하기 ( 맨 앞 추가 )-R : chain 끼리 규칙 교환-D : chain 에 있는 규칙 제거.. 2014. 2. 17.
반응형