혹시라도 IntelliJ를 설치하지 않았다면 아래 링크를 참고해서 설치해보자. Mac 에서 IntelliJ 설치하기 : [Mac] Mac에서 IntelliJ 설치하기 1. IntelliJ를 실행하자 2. New Project 클릭 3. 왼쪽에서 부터 Java 클릭 → Java SDK 1.8 버전 선택 → Kotlin/JVM → Next 순으로 클릭 코틀린은 자바랑 상호작용 할 수 있고 자바 라이브러리도 사용할 수 있어 JVM에서 실행 가능하다. JAVE_HOME 경로 기본설정이 되어 있는 JDK를 선택해주자. 본인은 무료인 OpenJDK 1.8 버전을 이용중이다. 4. 프로젝트의 경로 선택 → 프로젝트 이름을 입력 → Finish 5. 프로젝트가 생성된 화면이 나타날 것이다. 프로젝트 이름 밑에 src ..
개발을 하다보면 변수를 선언할때 초기에 값이나 상태를 정의하기 어려워 null로 선언하는 경우나, 필요한 시점에 초기화를 해야하는 경우가 있을것 이다. 자바와 같은 고전적인 언어들은 변수가 선언된 후 초기화되지 않으면 기본값으로 초기화 되거나 값이 할당되지 않았다는 표시로 null 값을 가지게 된다. 하지만 코틀린은 변수 선언 당시에 초기화를 할 것을 권고하고 있으며, 실제로도 변수 선언 당시에 초기화를 하지 않거나 nullable 타입으로 만들어주지 않으면 컴파일 에러가 발생한다. nullable 타입으로 선언해도 코틀린에선 null 초기화 사용을 추천하고 있진 않다. 그럼 초기에 선언해서 사용하는 변수가 아니라 늦게 초기화를 해야하는 경우는 어떻게 해야할까? 코틀린에선 늦은 초기화, 초기화 지연을 할..
코틀린은 자바와 다르게 Null 타입을 Nullable과 Non-Nullable 로 구분하며, 기본적으로 객체를 Non-Nullable 타입으로 보장하기 때문에 null을 사용해야하는 상황에는 null 체크를 포함하는 연산자를 사용해줘야 한다. Nullable 변수로 속성이나 함수를 사용할때는 null 체크를 안 하면 NullPointerException이 발생하게 된다. java에서는 null 체크를 할때 주로 if문이나 equals 구문을 사용했지만, 코틀린에서는 Nullable 연산자로 좀더 쉽게 Null 체크가 가능하다. Nullable types Null 객체를 선언할때 변수 타입 옆에 ? 를 붙이면 Null 사용이 가능하도록 할당할 수 있고, ?가 붙지 않으면 Non-Nullable로 Null..
APK란 회사에서 어플을 출시하게 되었다. 내가 만든 앱이 어플로 나와 정식 서비스가 된다니 기분이 도키도키하다.그래서 내려온 지시사항이 프로젝트 APK 파일을 추출해달라고 한다. 네? 그게모죠? 어떻게 하는거죠?라곤 말할수 없어서 열심히 구글링해서 APK 파일을 추출해 전달했다.다음에도 추출법을 까먹지 않기위해 글을 쓴다. APK란 안드로이드 애플리케이션의 확장자로, Android PacKage의 줄인말이다.안드로이드 OS에서는 앱을 설치하기 위해서 APK 파일을 사용하고 있다. APK 파일은 Zip 형식의 압축파일로 되어 있으며인증을 위해 서명(Sign)이 추가되어 있다. 참고 : https://m.blog.naver.com/PostView.nhn?blogId=blurayha&logNo=1101781..
반응형 홈페이지와 WebView 본인은 회사에 다니면서 많은 홈페이지를 제작했다.백엔드 개발자라 비록 디자인 영역에는 취약하지만 디자인이 홈페이지를 제작하는데 얼마나 중요한지는 매번 느끼는 바이다.보기좋은 홈페이지가 사용하기에도 좋은건 당연하니깐 !! 요즘 홈페이지는 대부분 반응형 홈페이지로 만들어지는데반응형 홈페이지란 pc뿐 아니라 다양한 디바이스에서도 사용자의 해상도에 따라 레이아웃을 보다 유연하고 강력하게 관리할 수 있도록 설계된 웹사이트이다.즉, 간단히 말해 반응형 홈페이지는 폰에서도 pc 홈페이지처럼 매끄럽게 화면에 잘 나타나게 하는 유용한 홈페이지다. WebView는 이런 반응형 웹사이트를 안드로이드 디바이스에서 띄워줄수 있는 기능이다.WebView를 이용하여 홈페이지를 앱내에서 호출하여 반응..
* 안드로이드 에러 종류 : Error:Execution failed for task ':app:preDebugAndroidTestBuild'. * 안드로이드 에러 내용 : Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/texst-apk-dependency-conflicts.html for details. ..
* string class를 못 쓰는 상황일때, 직접 string 구조를 작성하시오.(아래 코드는 실행은 되지만 최적화 부분이 미완성인 코드 입니다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 1..
* 연산자 함수를 만들지 못하는 연산자의 종류(오버로딩 제한) c++의 모든 연산자들이 오버로딩의 대상이 되는 것은 아니다. 다음과 같이 오버로딩이 불가능한 연산자들도 있다. . 멤버 접근 연산자 .* 멤버 포인터 연산자 :: 범위 지정 연산자 ?: 조건 연산자(3항 연산자) sizeof 바이트 단위 크기 계산 typeid RTTI 관련 연산자 static_cast 형변환 연산자 dynamic_cast 형변환 연산자 const_cast 형변환 연산자 reinterperet_cast 형변환 연산자 연산자에 대해서 제한하는 이유는 c++의 문법규칙을 보존하기 위해서다. 만약에 위의 연산자들까지 오버로딩을 허용해 버린다면, c++의 문법규칙에 어긋나는 문장의 구성이 가능해지고, c++을 보다 혼란스러운 언어로..
* 연산자 함수 연산자(operator)는 간결하게 의미를 전달할 수 있는 편리한 기호이다. 일반적으로는 연산자 기호를 사용하는 편이 함수를 사용하는 것보다 이해하기 쉽다. sum = x + y + z; →연산자 사용 sum = add(x , add(y , z)); →함수 사용 연산자 함수는 객체를 가지고 연산을 도와주는 함수이다. 객체들 끼리 연산을 할 수도 있고, 객체와 데이터들이 연산을 할 수도 있고, 데이터와 데이터들이 연산을 할 수 도 있다. 연산자는 이미 정의되어 있는 하나의 개체이기 때문에 원래의 의미를 재정의 하여 의미를 고치면 사용할 수 없다. 연산자 함수는 개발자가 직접 제공을 해줘야 사용이 가능하다. 함수를 호출하면 언제든지 연산을 수행한다. * 연산자 중복 연산자 중복이란 여러 가지..
* 프렌드(friend) 클래스의 전용 멤버 변수들은 내부 데이터를 저장하고 있고 이것은 일반적으로 외부의 접근으로부터 은닉된다. 전용 멤버 변수들에 접근 할 수 있는 것은 멤버 함수 뿐이었다. 하지만 c++은 지정된 함수나 클래스에 한하여 내부 데이터에 접근할 수 있게 해주는 프렌드(friend)라는 기능을 제공한다. 즉 프렌드를 사용하면 프렌드로 지정한 하나의 클래스의 모든 멤버 함수는 내부 데이터를 참조할 수 있다. 내가 만약 하나의 클래스를 프렌드로 설정하면 클래스 안의 개체들이 접근지정자가 무엇이든 모든 것들을 쓸 수 있다. 하지만 그 클래스는 나에게 접근할 수 없다. 프렌드를 쓰는 이유는 주로 코드의 확장을 위함에 있다. 예를 들면 문법적으로 멤버 함수가 아닌 일반 함수가 클래스의 내부 데이터..