profile
No pain, no gain
post-thumbnail

리팩토링

이전까지 서버 통신을 기준으로 그 생각만 했기 때문에 상당히 러프하게 구현에 초점을 맞춤Package만 나눴지 사실상 Activity가 서로 얽히고 얽힌 상당히 복잡한 구조...Activity가 View 전환, Data 처리 등 상당히 많은 Task를 안고 있음, 지금

어제
·
0개의 댓글
post-thumbnail

정규화(Normalization)

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 함정규화의 기본 목표는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것임정규화된 결과를 정규형이라고 하며, 정규형은 기본 정규형, 고급 정규형으로 나뉨기본 정규형 : 제

2일 전
·
0개의 댓글

[아이템 29] 이왕이면 제네릭 타입으로 만들라

위 클래스는 원래 제네릭 타입이어야 마땅함, 여기서 이 클래스를 제네릭으로 바꾼다고 해도 현재 버전을 사용하는 클라이언트에는 해가 없음, 오히려 지금 상태에서의 클라이언트는 스택에서 꺼낸 객체를 형변환해야 하는데 이때 런타임 오류가 날 위험이 있음먼저 일반 클래스를 제

3일 전
·
0개의 댓글

[아이템 28] 배열보다는 리스트를 사용하라

배열과 제네릭 타입에는 중요한 차이가 두 가지 있음배열은 공변(Covariant)임, Sub 가 Super 의 하위 타입이라면 배열 Sub\[] 는 Super\[] 의 하위 타입이 되고 함께 변함제네릭은 불공변(invariant)임 서로 다른 타입 Type1 과 Typ

3일 전
·
0개의 댓글
post-thumbnail

SQL Injection

보안상의 취약점을 이용하여, 임의의 SQL문을 주입하고 실행되게 하여 DB가 비정상적인 동작을 하도록 조작하는 행위임이용자의 입력값이 SQL 구문의 일부로 사용될 경우, 해커에 의해 조작된 SQL 구문이 데이터베이스에 그대로 전달되어 비정상적인 DB 명령을 실행시키는

3일 전
·
0개의 댓글

SQL - JOIN

둘 이상의 테이블을 연결해서 데이터를 검색하는 방법, 연결하려면 테이블들이 적어도 하나의 컬럼을 공유하고 있어야함이 공유하고 있는 컬럼을 PK 또는 FK값으로 사용 예시 테이블A 테이블B 테이블교집합, 공통적인 부분만 SELECT 됨(내부 조인), 두 테이블 조인할 때

2022년 5월 10일
·
0개의 댓글
post-thumbnail

키(Key) 정리

키(Key)는 데이터베이스에서 조건에 맞는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(Attribute)임여기서 튜플은 각각의 행, 속성의 모임으로 아래와 같이 표의 형태로 이해하면 됨유일성을 만족하는 키, 예를 들면 {학

2022년 5월 10일
·
0개의 댓글
post-thumbnail

SQL vs NoSQL

SQL, NOSQL을 알아보기 앞서 데이터베이스에 간단히 알아보자면데이터베이스는 데이터의 모음을 말함, 컴퓨터에 저장되는 조직화된 데이터 모음이라고 할 수 있음이렇게 데이터를 조직화하면 데이터에 의미가 생기고 대량의 데이터를 효율적으로 관리할 수 있게됨이런식으로 데이터

2022년 5월 10일
·
0개의 댓글

[아이템 27] 비검사 경고를 제거하라

제네릭을 사용하기 시작하면 수많은 컴파일러 경고를 보게 될 것임비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등대부분의 비검사 경고는 쉽게 제거할 수 있음, 아래의 예시를 볼 수 있음이처럼 할 수 있는 한 모든

2022년 5월 8일
·
0개의 댓글

[아이템 26] 로 타입은 사용하지 말라

클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라고 함제네릭 클래스와 제네릭 인터페이스를 통틀어서 제네릭 타입이라고 함각각의 제네릭 타입은 일련의 매개변수화 타입을 정의함먼저 클래스(혹은 인터페이스) 이름이 나오고 이어서

2022년 5월 8일
·
0개의 댓글

개선사항 정리

이전에 가장 고민했던 부분이 Kotlin으로 코드 개선 및 구조에 대해서 개선사항이 명확했었음, 그리고 지금은 구현에 초점을 맞췄지만 만약 실제 출시하는 앱이라는 가정이라면 구현하고 돌아가는데 문제는 없더라도 의외에 에러에 맞딱드릴 수 있을 것 같았음현재 구현한 것을

2022년 4월 30일
·
0개의 댓글

[아이템 25] 톱레벨 클래스는 한 파일에 하나만 담으라

소스 파일 하나에 톱레벨 클래스를 여러 개 선언하면 위험할 수 있음, 한 클래스를 여러 가지로 정의할 수 있으며 그 중 어느것을 사용할지는 어느 소스 파일을 먼저 컴파일하냐에 따라 달라지기 때문에그리고 Utensil 와 Dessert 가 한 파일에 아래와 같이 각각 정

2022년 4월 30일
·
0개의 댓글

[아이템 24] 멤버 클래스는 되도록 static으로 만들라

중첩 클래스란 다른 클래스 안에 정의된 클래스를 말함중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야 하며, 그 외의 쓰임새가 있다면 톱레벨 클래스로 만들어야함중첩 클래스의 종류는 정적 멤버 클래스, (비정적) 멤버 클래스, 익명 클래스, 지역 클래스가 있는데 이 중

2022년 4월 30일
·
0개의 댓글

[아이템 23] 태그 달린 클래스보다는 클래스 계층구조를 활용하라

두 가지 이상의 의미를 표현할 수 있으며, 그 중 현재 표현하는 의미를 태그 값으로 알려주는 클래스가 있음, 아래와 같이 예를 볼 수 있음위와 같은 태그 달린 클래스는 열거 타입 선언, 태그 필드, switch문 등 쓸데없는 코드가 많음여러 구현이 섞여서 가독성도 나쁘

2022년 4월 27일
·
0개의 댓글

[아이템 22] 인터페이스는 타입을 정의하는 용도로만 사용하라

인터페이스는 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할을 함달리 말해, 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는 것임, 인터페이스는 오직 이 용도로만 사용해야함이 지침에 맞지 않는 예로

2022년 4월 27일
·
0개의 댓글

[아이템 21] 인터페이스는 구현하는 쪽을 생각해 설계하라

자바 8 전에는 기존 구현체를 깨뜨리지 않고는 인터페이스에 메서드를 추가할 방법이 없었음, 인터페이스에 메서드를 추가하면 보통은 컴파일 오류가 나는데 추가된 메서드가 우연히 기존 구현체에 이미 존재할 가능성은 아주 낮기 때문임자바 8에서는 기존 인터페이스에 메서드를 추

2022년 4월 27일
·
0개의 댓글

[아이템 20] 추상 클래스보다는 인터페이스를 우선하라

자바가 제공하는 다중 구현 메커니즘은 인터페이스와 추상 클래스임, 이렇게 두 메커니즘은 모두 인스턴스 메서드를 구현 형태로 제공할 수 있음둘의 가장 큰 차이는 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다는 점임자바는 단

2022년 4월 16일
·
0개의 댓글

[아이템 19] 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라

아이템 18에서는 상속을 염두에 두지 않고 설계했고 상속할 때의 주의점도 문서화해놓지 않은 외부 클래스를 상속할 때의 위험을 경고함(외부란, 프로그래머의 통제권 밖에 있어서 언제 어떻게 변경될지 모른다는 뜻임)메서드를 재정의하면 어떤 일이 일어나는지를 정확히 정리하여

2022년 4월 16일
·
0개의 댓글
post-thumbnail

파일 시스템(File System)

파일 시스템은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말임파일 시스템은 하드 디스크나 CD-ROM 같은 실제 자료 보관 장치를 사용하여 파일의 물리적 소재를 관리하는 것을 가리킴저장매체엔 수많은 파일이 있어서 이런

2022년 4월 12일
·
0개의 댓글

[아이템 18] 상속보다는 컴포지션을 사용하라

상속은 코드를 재사용하는 강력한 수단이지만 최선은 아님, 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 됨이는 만약 패키지 경계를 넘어 다른 패키지의 구체 클래스를 상속하는 일은 위험함(여기서 상속은 클래스가 다른 클래스를 확장하는 구현 상속을 말함, 클래스가 인

2022년 4월 9일
·
0개의 댓글