본문 바로가기
728x90

전체 글155

Normalization (정규화) 정규화 잘못 설계된 관계형 스키마를 더 작은 속성의 묶음으로 쪼개어 바람직한 스키마로 만들어가는 과정 삽입 이상, 삭제 이상, 갱신 이상 등과 같은 이상 현상을 해결하기 위해, 저장공간 최소화와 같이 성능을 향상시키기 위한 과정 정규형 (NF, Normal Form) 제1정규형 모든 도메인이 원자 값으로만 되어 있는 정규형 모든 속성 값이 원자 값으로만 되어 있는 정규형 릴레이션의 모든 속성이 단순 영역에서 정의 ex. 취미를 나타낼 때 {”이름”: ”수달”, 취미: “게임, 코딩, 골프”} 가 아닌 {”이름”: “수달”, “취미”=”게임”}, {”이름”: “수달”, “취미”=”코딩”}, {”이름”: “수달”, “취미”=”골프”} 제2정규형 1NF를 만족 부분 함수적 종속성 제거 (→ 완전 함수 종속으로.. 2023. 2. 17.
ERD (Entity Relationship Diagram) ERD 개체, 속성, 관계, 관계 타입을 그림으로 표현하는 설계 방법 요구사항을 기반으로 작성되며 시스템(OS 등)에 영향을 받지 않는다. 관계형 구조로 표현할 수 있는 데이터를 구성하는 데에는 유용하지만 비구조화된 데이터를 표현하는 것은 어렵다. 예제와 표현법 2023. 2. 17.
데이터베이스 기본 용어 DataBase 공동으로 사용될 데이터를 저장장치에 저장해 항상 사용할 수 있도록 운영하는 데이터 구조화어 저장되는 데이터의 모음 테이블의 모음 DBMS(DataBase Management System): 데이터베이스 통합 관리 시스템 (쿼리문을 사용해 데이터 삽입, 삭제, 수정, 조회 등을 수행할 수 있음) 데이터베이스 구조 용어 Entity (엔터티) 독립적으로 존재하는 여러 속성을 지닌 명사 이름(식별자)가 같지 않아야 한다. 약한 엔터티와 강한 엔터티 : 다른 엔터티에 의존해야만 존재할 수 있는 엔터티 (= 약한 엔터티) ex. 방과 건물 (방은 건물 안에만 존재할 수 있기 때문에 약한 엔터티, 건물은 강한 엔터티) Relation (릴레이션) 정보를 구분해 저장하는 기본 단위 관계형 데이터베이스.. 2023. 2. 17.
intellij에서 ktlint를 사용해 Kotlin 컨벤션 준수하기 컨벤션과 ktlint 대화를 할 때 최소한의 단어만 있다면 어느정도 의사소통은 가능합니다. 하지만 맞춤법, 문법과 같은 것들이 추가되면 더 많은 양의 내용들을 문장에 담을 수 있습니다. 반대로 맞춤법, 문법과 같은 것들이 지켜지지 않는다면, 읽기 싫고 잘못 이해되기 쉬운 문장이 됩니다. 마찬가지로 코드를 통해 개발자의 의사를 명확하고 이해하기 쉽게 전달하고자 한다면 국어에서의 맞춤법 문법과 같은 컨벤션(규칙)을 지켜줘야 합니다. 아래의 kotlin 언어의 규칙, git commit 메시지의 규칙 등과 같은 것들이 있습니다. https://kotlinlang.org/docs/coding-conventions.html#control-flow-statements Coding conventions | Kotli.. 2023. 2. 7.
strategy pattern (전략 패턴) strategy pattern (전략 패턴) (= policy pattern, 정책 패턴) 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고, 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 객체들이 할 수 있는 행위에 대해 전략 클래스를 생성하는 패턴 인터페이스를 사용해 기본 행위를 정의한 후 객체의 행위를 변경하고싶을 때 직접적으로 행위를 수정하는 것이 아닌, 객체에서만 행위를 변경해 유연하게 확장하는 패턴 결론: 변경시 대응에 용이하도록 변경이 잦은 행위를 추상화하는 것 * 컨텍스트 : 상황, 맥락, 문맥. 어떠한 작업을 완료하는데 필요한 모든 관련 정보. 예제 코드 1 (Kotlin) 장바구니에 물건을 담은 후 각 카드(전략)로 결제했을 .. 2023. 1. 27.
factory pattern (팩토리 패턴) factory pattern (팩토리 패턴) 객체를 사용하는 코드에서 생성 부분을 떼어내 추상화한 패턴. 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴. 장점 낮은 결합도 상위 클래스와 하위 클래스가 분리되므로 낮은 결합도를 가진다. 확장성 및 유지보수성 증가 객체 생성 로직이 분리되어 수정 시 한 곳만 수정할 수 있다. 예제 코드 (Kotlin) * String의 equals 옵션 ignoreCase : true로 설정할 시 문자열의 대소문자를 구분하지 않고 비교한다. * abstract class (추상 클래스) : 미완성 클래스, 이 자체로 인스턴스화될 수 없는 클래스. * abstract : 상속을 받는 곳에.. 2023. 1. 25.
singleton pattern (싱글톤 패턴) singleton pattern (싱글톤 패턴) 하나의 클래스가 하나의 인스턴스만 가지는 패턴. 하나의 클래스를 이용해 여러번 인스턴스화를 시켜 여러 인스턴스를 가질 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스만 만드는 것입니다. 장점 인스턴스 생성 비용 감소 한 번 생성하여 여러 모듈이 공유해 사용하기 때문에 생성 비용이 줄어드는 장점이 있다. 단점 의존성 상승 여러 모듈이 같은 데이터를 공유해 사용하기 때문에 의존성이 상승하는 단점이 있다. DI(Dependency Injection, 의존성 주입)을 통해 결합도를 낮출 수 있다. 메인 모듈이 직접 하위 모듈에 의존성을 주지 않고, 중간에 의존성 주입자를 두어 메인 모듈이 간접적으로 의존성을 주입하는 방식 (Factory.. 2023. 1. 20.
디자인 패턴 및 프로그래밍 패러다임 디자인 패턴이 생겨난 이유와 장점 개발을 하다보면 이전에 사용했던 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 코드(해결책)을 그대로 복붙하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않다고 판단하여 다른 방향의 구현을 고민하기도 합니다. 디자인 패턴은 재사용이 가능한 설계를 하도록 돕습니다. 따라서 클래스의 명세, 객체 간의 상호작용, 유지보수, 문서화 등을 개선할 수 있습니다. 디자인 패턴 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어둔 것 즉, 일종의 솔루션 아키텍처 패턴 MVC : Model / View / Controller의 기능을 수행하는 계층으로 나누어 관리하는 방법. MVP MVV.. 2023. 1. 20.
우아한테크코스 5기 모바일 안드로이드 선발 과정 전체 정리 서론 소중했던 우테코 5기의 선발 과정을 잊지 않기 위해, 혹시라도 추후에 지원하시는 분들께 도움이 될까 싶어서, 우테코 지원 과정과 이를 통해 배운 점, 모바일 첫 기수 합격 과정 등의 정보를 적어보고자 합니다! 선발 과정 및 일정 서류지원 : 2022.10.17. 10:00 ~ 2022.10.24. 10:00 프리코스 : 2022.10.26. ~ 2022.11.22. (매주 수요일 오후 3시 과제 공개, 화요일 과제 마감일) 1차 합격자 발표 : 2022.12.14. 15:00 최종 코딩테스트 : 2022.12.17. 13:00~18:00 최종 합격자 발표 : 2022.12.28. 15:00 1. 지원 (자소서) 고등학교/대학교 전공을 포함하여 프로그래밍 교육 이력을 작성해 주세요. (200자 이내).. 2023. 1. 17.
728x90