전체 글
샤오미 45w충전기 구매 및 사용 후기
Dell Latitude 5175 충전을 위해서 중고로 어댑터를 구매하였다. 미개봉 제품이여서 마음놓고 구매하였다. 박스는 되게 조금하고, 구성품도 간단하다. 구성품은 USB C-type과 어댑터 딱 두개이다. 중국제품이기 때문에 110v로 되어있다. 그래서 돼지코로 함께 구매하여 사용해야 한다. 제품 테스트결과 정상적으로 충전이 되는것을 확인했다. 국내에서도 판매가 되는 제품이면 좋을텐데 중국에서만 판매하기 때문에 구매하고 싶으면 직구로 구매해야 한다. 이 제품은 닌텐도 스위치에서도 사용할 수 있어서 많이들 구매한다고 한다. 2만원주고 구입했는데 괜찮은것 같다.
애플 매직마우스2 구매후기
애플 매직마우스2를 여자친구가 생일선물로 사주었다. 맥북을 키보드 연결해서 데스크탑처럼 집에서 사용을 하는데 그때 트랙패드에 스와이프 기능사용에 제약이 되어서 필요했었는데 정말 고마웠다. 구매는 현대백화점 지하 1층의 ashop에서 구매하였다. 가격은 99,000원. 구성품은 라이트닝 케이블, 설명서 그리고 마우스이다. 충전하는 부분이 바닥에 있어서 조금 불편하긴 하지만 한번 충전하면 오래가기 때문에 그렇게 거슬릴 것 같지는 않다. 마우스 높이가 낮기때문에 처음사용하는 지금은 조금 불편하지만 그래도 트랙패드 기능을 사용할 수 있어서 좋다. 연결은 bluetooth로 간단하게 연결하여 사용할 수 있다.
프로그래밍 코드 작성 시 주요원칙 (SOLID)
단일 책임 원칙 (Single Responsibility Principle) SRP -> 객체는 오직 하나의 책임만을 가져야한다. -> 객체에서 책임이라고 한다면 객체의 역할을 의미한다. 좋은 설계란 => 기본적으로 시스템에 새로운 요구사항이나 변경이 있을 때 가능한 한 영향 받는 부분을 줄여야 한다. 프로그램의 요구사항은 계속해서 변경되기 마련이다. 이를 위해서 항상 변경이 가능하도록 조치가 되어있어야 하며, 이런 시스템이 변화에 잘 적용되도록 설계되어 있는지 확인 하는 것을 회귀 테스트(regression)라고 한다. 개방폐쇄원칙 (Open-Closed principle) OCP - 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. 리스코프 치한원칙 (LSP) - 자식클래..
피터 코드의 상속 규칙
상속의 오용을 막기위해 상속의 사용을 엄격하게 제한한다. 하위에 존재하는 규칙중 하나라도 만족하지 못한다면 상속을 하지 않아야한다. 1. 자식 클래스와 부모 클래스 사이의 '역할 수행' 관계가 아니어야 한다. -> 요리사는 사람이라는 범주를 상속해서는 안된다. -> 요리사라는 것은 사람이라는 속성의 하나이다. 2. 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 없어야 한다. -> 엄마라는 객체는 누군가의 딸이라는 객체가 될 수 있다. -> 이런 속성 변경이 잦을 경우에는 객체의 변환 작업이 필요해서 해서는 안된다. 3. 자식클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다. 4. 자식클래스가 단진 부모클래스의 일부 클래스의 기능을 재사용하기 위한 역할로 클래..
Java8 인터페이스의 정적 메소드
인터페이스의 정적 메소드 Java 8 부터는 인터페이스에 정적 메소드를 추가할 수 있다. 원래부터 인터페이스에 정적 메소드를 추가하면 안되는 이유는 없었으나, 단지 추상 명세로서 변하면 안된다는 인터페이스의 정신에 어긋 나는 것으로 여겨져 금지되어 왔다. 지금 까지는 일반적으로 인터페이스와 동반하는 클래스들에 정적 메소드를 두었다. 하지만 이제는 사용이 가능하다.
Java8 인터페이스 default Method (디폴트 메소드)
인터페이스의 디폴트 메서드 Java8에서 추가된 람다식을 제외하고도 편리한 기능이 추가되었다. 그 중 하나가 인터페이스의 default 메소드이다. Java8에서는 interface에 default 키워드를 통해 메서드를 구현할 수 있다. 또, 이를 구현하는 클래스는interface의 메서드를 @Override 할 수 있다. Default 매서드 구현 방법은 다음과 같다. 123456789101112131415161718192021222324252627282930// getName이라는 default 메소드 선언public interface WedulInterface { default String getName() { return "wedul"; }} // getName이 없는 DTO 클래스 생성publ..
Java8 변수 유효 범위
변수 유효 범위 종종 람다 표현식에서 해당 표현식을 감싸고 있는 메서드나 클래스에 있는 변수에 접근하고 싶은 경우가 있다. 예를 들어 repeatMessage(String text, int count) 같은 메소드가 있고 repeatMessage("Hello", 1000);를 통해 호출하였다고 가정하여 보자. 1234567891011121314public static void repeatMessage(String text, int count) { Runnable r = () -> { for (int i = 0; i { While( count > 0 ) { count--; // 캡쳐 변수는 변경되는 값을 포함할 수 없다. System.out.println(text); Thread.yield(); } }; ..
Java8 생성자 레퍼런스
생성자 레퍼런스 생성자 레퍼런스는 메서드의 이름이 new라는 점을 제외하면 메서드 레퍼런스(Class::Method)와 유사하다. 12345678910111213141516171819202122232425262728// 생성자 레퍼런스에서 사용될 클래스 WedulObjectpublic class WedulObject { private String name; private WedulObject(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } // 생성자 레퍼런스public static void main(String ar..
Java8 메서드 레퍼런스
메서드 레퍼런스 - 메서드 레퍼런스는 이름과 동일하게 메서드를 대상으로 한 람다식의 간략형이며, 메서드 참조를 나타내는 예약어로서 (::)를 사용한다. 다시 말해서 메서드 레퍼런스는 말 그대로 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불 필요한 매개 변수를 제거하는 것이 목적이다. - 메소드 참조의 예와 그에 대한 람다식은 다음과 같다. 기본 구조 String::valueOf x -> String.valueOf(x) Object::toString x -> x.toString() x::toString () -> x.toString() 왼쪽은 메서드 레퍼런스이고 오른쪽은 람다식이다. 메서드 레퍼런스의 3가지 형태 :: 연산자는 객체 또는 클래스와 메서드 이름을 구분하며, 세 ..
Java8 기초 설명
Java8과 Java7은 많은 부분이 바뀌어서 이제 Java8을 모르는 사람은 다른사람들과 협업하기 어려워 질 수도 있다. 작년에 공부하였던 부분을 다시 복습 할겸 포스팅을 진행한다. Java8이 도입되면서 많이 변경된 부분이 함수형 프로그램이 가능하도록 되었다는 것이다. 그것의 중심에는 람다식 표현식이 있다. 람다 표현식(lambda expression) - 람다식 이란? 단순히 정의하면, 프로그래밍에서 식별값 없이 실행 할 수 있는 함수 표현 방법, 함수를 변수에 할당, 파라미터로 전달하는게 가능 이미 많은 언어에서 지원하고 있다. Ruby, C#, Python,,,,, 그러나 자바는 함수형 프로그램 언어가 아니 여서 기존에 사용할 수 없었다. - 함수형 인터페이스(functional interfac..