본문 바로가기

분류 전체보기196

[Android] 안드로이드 구성 요소 * 해당 내용은 공부하면서 알게된 사실을 정리했습니다. 틀린 부분이 있거나 문제가 있다면 댓글로 알려주세요! +) 메인 스레드 생성 시점 : 애플리케이션 실행 하는 순간 -> UI 요소 갱신, 변경 일반 스레드 생성 시점 : 시스템이나 사용자에 의해 이후에 생성 4대 요소(Component)란 - Activity - Service - Broadcast Receiver - Content Provider 그 외에 Intent, view, Fragment 등이 있음 액티비티(Activity) - UI 화면을 나타냄 -> 즉 사용자가 앱을 실행 했을 때 보게 되는 인터페이스 화면 구성 요소를 가지고 있음 - 하나의 애플리케이션은 여러 액티비티를 가질 수 있음 - 액티비티의 생성은 메인 스레드이며 여기서 액티비티.. 2020. 8. 17.
[Android, Kotlin] 데이터 클래스와 기타 클래스 Do it! 코틀린 프로그래밍 책을 참고 및 인용 하여 작성 되었습니다. 책에 없는 주관적 내용이 있을 수 있습니다 DTO를 사용하는 이유 DTO는 일종의 표준과 같은 약속 -> 전송하거나 받고자 하는 어떤 요소든 데이터를 쉽게 다룰 수 있음 뷰란 mvc모델에서 뷰란 사용자와 상호작용을 수행함 모델이란 mvc모델에서 모델이란 데이터의 표현을 위해 생성 데이터 클래스의 선언 코틀린에서는 데이터 클래스를 제공함 - 주생성자는 최소한 하나의 매개변수 - 주생성자의 모든 매개변수는 val, var - abstract, open, sealead, inner 키워드 사용 불가 데이터 클래스가 자동 생성하는 메서드 data class Customer(var name: String, var email: String) .. 2020. 8. 9.
[Kotlin 20200805] 프로퍼티 초기화 06_1 프로퍼티 접근 프로퍼티와 필드의 차이점 자바의 경우 클래스 내에서 선언한 변수를 '필드'라고 하고 코틀린에서는 '프로퍼티'라고 칭함. 프로퍼티의 경우 접근 매서드인 getter와 setter를 기본적으로 가지고 있기 때문에 자바의 필드와 다른 명칭을 사용하는 것. 코틀린에서는 각 프로퍼티에 대해 접근 메서드를 자동으로 생성하며 주 생성자에 의해 매개변수를 정의할 수 있으므로 간단하게 코딩할 수 있다는 장점이 있다. class ClassName(var a: String, var b: Double) // 클래스 정의와 함께 주 생성자에서 매개변수를 정의함 코틀린에서의 접근 메서드 - val 로 선언한 프로퍼티는 getter만 가능. 값 바꾸는 것 불가하기 때문에 - var은 내부에서 접근 메서드가 .. 2020. 8. 5.
[Kotlin 20200804] 객체 지향 프로그래밍 - 인터페이스 참고 및 인용 도서 : Do it! 코틀린 프로그래밍 인터페이스에서 참조 - 인터페이스 참조하는 클래스 -> 인터페이스 가이드에 따라 내용 구현 - 다중 상속은 불가능 하지만 다중 인터페이스 지정은 가능 - 여러 인터페이스에 의해 메서드나 프로퍼티 명이 중복되는 경우 -> 앵글 브래킷()을 사용 open class A { open fun a() = println("class a and method a") fun b() = println("class a and method b") } interface B { fun a() = println("interface a method a") fun c() = println("interface b method b") } class C : A(), B{ override.. 2020. 8. 4.
스코빌 지수 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 프로그래머스의 코딩테스트 연습에서 카테고리를 잘 보면 사용해야 하는 자료 구조가 적혀 있다. 이번에 하게 된 것은 힙(Heap) > 더 맵게 이다. 작은 수와 그 다음 작은 수를 사용해서 연산을 하고 다시 리스트에 넣어서 최소값 기준에 대한 조건만 맞추면 되겠다 싶었으나 효율성에서 과감히 아웃당했다. 그렇다면 왜 여기서 '힙'을 제시한 걸까? 스택 구조를 사용하면 안되는 걸까? def solution(scovile, k): answer = 0 w.. 2020. 8. 3.
[Kotlin 20200803] 객체 지향 프로그래밍 해당 내용은 Do it! 코틀린 프로그래밍 책을 공부하며 인용 및 정리한 것입니다. 저의 개인적인 견해나 의견이 포함되어 있습니다. 코드는 되도록 책을 보고 응용해서 작성했습니다. 05_3 상속과 다형성 상속의 장점 : 상위 클래스의 있는 내용을 하위 클래스에서 다시 구현하지 않아도 됨 다형성 장점 : 하나의 이름으로 다양한 기능을 수행할 수 있음 상속과 클래스의 계층 - 파생 클래스(하위 클래스)에서는 기반 클래스(상위 클래스)와 다른 프로퍼티와 메서드만 추가하여 사용해도 됨 - 코틀린의 최 상위 클래스 Any 클래스 -> 상위 클래스를 명시하지 않으면 Any 클래스를 상속 받음 - 코틀린에서 상속할 수 있는 클래스를 선언하려면 open 키워드 사용. open 키워드를 적지 않을 경우 기본 클래스로 선.. 2020. 8. 3.
[Kotlin 20200802] 객체 지향 프로그래밍 - 클래스와 객체 참고 및 인용 도서 : Do it! 코틀린 프로그래밍 및 개인적인 견해 코틀린은 함수형 프로그래밍, 객체 지향 프로그래밍을 지원한다. 객체지향 프로그래밍은 순차적으로 수행되는 절차적 프로그래밍과 다르게 복잡한 프로그램을 작성할 수 있다. 05_1 클래스와 객체의 정의 객체 지향 프로그래밍 개념 1. 추상화(Abstraction) : 특정 클래스 만들 시 기본 형식을 규정하는 방법. 목표로 하는 대상에 대해 필요한 만큼 속성과 동작을 정의하는 과정 2. 인스턴스 : 클래스를 만든다고 객체가 메모리에 존재하지 않음. 클래스로부터 생성한 객체를 인스턴스라 하며 인스턴스를 생성해야 프로그램 메모리에 객체가 존재하게 되는 것 3. 상속 : 부모 클래스의 내용을 자식 클래스가 물려받는 것을 말하며 부모 클래스의 속.. 2020. 8. 3.
[Kotlin 20200730] 프로그램 흐름 제어 인용 및 참고 서적 : Do it! 코틀린 프로그래밍 조건문 if문과 if~else문 if (조건식) { // 만일 수행하는 문장이 하나인 경우 블록 구문인 중괄호 생략가능 } else { } val answer = if (a > b) a else b 와 같이 한줄에 표현 가능하며 변수에 할당할 수 있음 블록의 표현식이 길어질 때 - 조건문 블록 표현 길어지면 중괄호로 - 변수에 if문을 할당할 경우 블록의 마지막 표현식이 변수에 반환되어 할당 val answer = if () { // 마지막 문장이 반환되어 answer이라는 변수에 할당됨 } else if문으로 조건문 중첩 readLine() : 콘솔로 부터 문자열을 입력받는 함수 입력받은 값의 기본 자료형은 String(문자열 타입) !!. : no.. 2020. 7. 30.
[Kotlin 20200729] 함수형 프로그래밍 공부 람다식과 고차 함수 호출하기 - 기존 기본형 변수 : 할당 값은 스택에 저장됨. 인자로 전달하는 경우 값은 복사 되어 전달 - JVM 은 포인터 주소 연산 없음 -> 값을 복사하여 객체 전달. 이때 복사되는 값은 객체의 주소 값에 의한 호출 - 함수가 다른 함수의 인자로 전달 되는 경우 -> 인자로 전달되는 함수는 즉시 수행하여 값을 전달(값으로 처리되기 때문) - 인자로 전달되는 시점에서 실행 됨 - 람다식 함수의 즉시 실행 - 매개변수에 직접 람다식을 함수 호출 형태로 작성해 줌 ex) val sum = a(lambda()) val lambda: () -> Unit = {} 이름에 의한 람다식 호출 - 실제로 호출할 때 실행 - 변수명에 람다식 자체가 매개변수에 복사됨 (즉시 실행 안하고 전달만 하려.. 2020. 7. 29.
자원 고갈 공격 SYN 플러딩 (SYN Flooding) 소프트웨어 개발 보안 설계시 고려해야 하는 자원 고갈 공격 중 SYN 플러딩이 있다. 이는 TCP 프로토콜의 구조적인 문제를 이용하여 공격을 시도한다. SYN 플러딩에 의해 시스템 자원이 고갈 되면서 정상 요청에 대해 대응하지 못하게 된다. 우선 이에 대해 자세히 알기 위해서는 위에서 말한 TCP 프로토콜의 구조적인 동작 원리를 알아두면 이해가 쉽다. 정상적인 클라이언트-서버와의 연결 웹 페이지가 있다고 하자. 이때 클라이언트가 정보를 얻기 위해 웹 페이지로 접근한다. 즉 쉽게 말해 클라이언트란 서비스를 요구하는 쪽이다. 서버는 이 웹 페이지를 통해 정보나 서비스를 클라이언트에게 제공한다. 클라이언트는 우리가 직접 마주하고 있는 단말 기기나 컴퓨터라 생각하고 서버는 서비스를 제공해주는 업체의 컴퓨터라 생.. 2020. 7. 27.
물리테이터 저장소 설계 물리적 공간 데이터가 기억 장치에 저장이 될 때 주소를 가지게 되는데 이때 이 기억 영역을 물리적 공간이라 함 +) 주소의 종류 1. 논리 주소 : 물리 주소의 상대적인 개념. 물리적인 주소와 다르게 사용자가 부여한 사용자 관점의 주소로서 실제 주소와 구분됨 2. 물리 주소 : 기억장치에 저장된 데이터에 접근할 때 사용되는 주소. 실제 메모리 공간을 말함 3. 상대 주소 : 상대적인 주소로서 절대 주소와 상대적이 개념. 고정된 절대 주소를 사용하는 것이 어려 울 때 사용함 4. 절대 주소 : 실제 주소 해시 해시 함수는 임의의 데이터를 넣었을 때 고정된 길이의 데이터로 매핑하며 이를 사용한 해시 자료구조는 key와 value에서 key를 고정된 길이의 해시 값으로 매핑한다. 정렬이 필요 없으며 이 해시값.. 2020. 6. 15.
Could not locate device support Files 해결하기 xcode보다 휴대폰 버전이 더 높아서 생기는 문제입니다. xcode 업데이트 하면 좋겠지만 부득이하게 저처럼 업데이트를 할 수 없다면 아래 방법으로 시도해 봅시다 우선 안내 문구를 살펴보면 iOS 13.3.1 support file이 필요한 것을 알 수 있습니다. 아래 링크로 들어가 주세요 https://github.com/filsv/iPhoneOSDeviceSupport filsv/iPhoneOSDeviceSupport Xcode iPhoneOS DeviceSupport files (6.0 - 13.3). Contribute to filsv/iPhoneOSDeviceSupport development by creating an account on GitHub. github.com 이곳에서 안내 문구에.. 2020. 2. 25.