본문 바로가기

전체 글93

[Android] Cannot fit requested classes in a single dex file Cannot fit requested classes in a single dex file Android나 Flutter 개발을 하다보면 잘 컴파일되던 소스코드가 갑자기 "Cannot fit requested classes in a single dex file"이라는 메시지와 함께 컴파일 오류를 내는 경우가 있다. 원인 안드로이드 공식 문서에는 다음과 같이 쓰여있다. 앱 및 앱이 참조하는 라이브러리에서 메서드가 65,536개를 초과하면 앱이 Android 빌드 아키텍처의 제한에 도달했음을 알리는 빌드 오류가 발생합니다. 개발에 실수해서 생기는 오류는 아니고 그냥 프로젝트에 포함된 총 메소드의 갯수가 65,536개가 넘어가면 발생하는 오류이다. (메소드 수는 라이브러리 내부의 메소드까지 포함한 수치) 위의 .. 2019. 11. 26.
[C#] 확장 메소드 (Extension Methods) 확장 메소드 (Extension Methods) C#에서 이미 만들어진 클래스에 메소드를 추가하는 방법에 대하여 알아보자. 확장 메소드란? 프로그래밍을 하다보면 이미 만들어진 클래스에 새로운 메소드를 추가해야 할 때가 생긴다. 직접 만든 클래스라면 메소드를 추가하여 수정이 가능하지만, 남이 만든 클래스(라이브러리, C# 기본 제공 클래스 등)는 소스코드를 수정할 수 없다. 대표적인 대안으로 부모클래스를 상속하여 자식클래스에서 메소드를 추가해 확장하는 방법이 있는데, 이는 메소드가 추가될 뿐인데 상속을 유발하기 때문에 프로그램 설계상 가장 좋은 방법은 아니다. C#은 상속을 하지 않고도 이미 만들어진 클래스에 새로운 메소드를 추가 확장할 수 있는 방법을 제공하며, 이를 확장 메소드(Extension met.. 2019. 11. 21.
[Javascript] 세미콜론 자동 삽입과 중괄호 위치 버그 세미콜론 자동 삽입과 중괄호 위치 버그 자바스크립트의 세미콜론 자동 삽입에 의해 나타날 수 있는 현상인 중괄호 위치 버그에 대해 알아보자. 세미콜론 자동 삽입 프로그래머가 세미콜론(;)을 삽입하지 않은 채 행을 종료하면, 자바스크립트에서는 코드가 실행될 때 행의 마지막에 세미콜론을 자동 삽입한다. // 예시 1 var number = 100 // 예시 2 console.log(number) 위 코드 두 줄은 각각 행의 마지막에 세미콜론을 붙이지 않은 코드이지만 실제로는 동작한다. 세미콜론을 넣지 않고 number 변수에 100을 할당하는 코드이다. 실제로 number 변수의 값을 조사해보면 100이 할당된 것을 확인해 볼 수 있다. console.log 함수를 이용해 number 변수의 값을 다시 한 번.. 2019. 11. 10.
[Alibaba cloud] ECS 생성하기 ECS 생성하기 알리바바 클라우드 환경에서 ECS(Elastic compute service) 인스턴스를 생성해보자. 참고로 ECS란, AWS의 EC2와 동일한 역할을 하는 서비스이다. 작성 환경 2019년 10월 31일 작성. 알리바바가 웹을 업데이트 할 경우 UI가 다르게 보일 수 있음. ECS 생성 ECS 인스턴스를 생성하는 과정은 크게 6가지로 분류된다. 지역 선택 -> 하드웨어/운영체제 등 기본설정 -> 네트워크 설정 -> 계정 보안 설정 -> 그룹핑 -> 금액 결제 지역 선택 (리전) 물리적으로 인스턴스가 위치할 지역을 선택하는 과정이다. 메뉴에서 Elastic Compute Service를 클릭한다. 화면 위쪽을 보면 국가/지역을 선택할 수 있는 목록이 있다. 생성하고 싶은 지역을 클릭한다... 2019. 11. 2.
[MySQL] auto_increment 값을 재설정 하는 방법 ▶ 주제 : auto_increment 값을 재설정 하는 방법. MySQL에서 auto_increment 속성이 지정된 column을 수정하는 방법에 대해 알아보자. ▶ 간단 auto_increment 설명 auto_increment 속성은, row 데이터가 저장될 때 지정된 column에 대하여 자동으로 값을 증가시키는 속성이다. 만약에 어떤 table의 A라는 column에 auto_increment가 지정되어 있다면, 첫 번째로 저장된 row의 A는 1이고 두 번째로 저장된 row의 A는 2가 될 것이다. auto_increment의 자세한 설정 방법은 아래 사이트에서 확인 바람. MySQL :: MySQL 8.0 Reference Manual :: 3.6.9 Using AUTO_INCREMENT .. 2019. 10. 23.
[Javascript] 문자열 replace와 replaceAll ▶ 주제 : 문자열 replace와 replaceAll. 자바스크립트에서의 문자열 replace 처리 동작과 replaceAll 하는 방법을 알아보자. ▶ 문자열 replace 문자열 replace 기법은 주어진 문자열의 내부에서 패턴 A에 해당하는 부분을 문자열 B로 교체하는 방법이다. 'aaa?bbb?ccc' 이라는 문자열에서 ?을 @로 교체(replace)한다고 했을 때 'aaa@bbb@ccc'로 변경된다고 이해하면 된다. 겨우 이런 것 가지고 글을 쓰는 이유는 Javascript에서의 replace 함수가 다른 메이저 언어들의 replace 함수와 동작이 다르기 때문이다. ▷ Javascript의 replace : let str = 'aaa?bbb?ccc'; console.log(str.repla.. 2019. 10. 20.
[프로그래밍 이론] 반각문자 @와 전각문자 @ ▶ 주제 : 반각문자 @와 전각문자 @ 반각문자와 전각문자에 대해 알아보고 실제 프로그래밍 상황에서 어떤 문제가 발생하는지에 대해 알아보자. ▶ 상황 다국어를 지원하는 모바일 앱을 개발 및 테스트 하던 도중 일본어 환경에서 회원가입이 되지 않는 문제가 발생하였다. 정규식을 통해 이메일 형식 아이디를 입력받게 구현되있었는데, 제대로 입력했음에도 정규식이 통과하지 않는 것이었다! ▶ 원인 위의 상황이 발생한 원인은 일반적인 자판의 반각 골뱅이표시(@)와 일본어 자판의 전각 골뱅이표시(@)가 서로 다른 문자이기 때문에 반각 골뱅이표시만으로 이메일 형식을 검사하는 정규식에 통과하지 못했던 것이다. 즉, 두 골뱅이표시를 나타내는 유니코드가 각각 다르다. 완전히 다른 문자라는 것이다. (이 글을 보고있는 환경에 따.. 2019. 10. 10.
[C#] string + string 과 StringBuilder.Append() 차이 ▶ 주제 : 문자열을 더할때 자주 쓰이는 string + string 연산과 StringBuilder 클래스의 Append 함수 연산의 차이를 비교해보자. ▶ 문자열을 더하는 방법 C#에서 문자열을 더하는 방법은 여러가지가 있지만 가장 잘 알려진 방법은 아래와 같은 방법일 것이다. string result = "hello" + "world"; // "helloworld" 문자열과 문자열을 더하기 기호로 이어붙이는 방법이다. 단순하게 표현할 수 있어서 C# 이외에도 대부분의 언어들이 지원하고 있는 기능이다. 두 번째로 알려진 방법은 StringBuilder 클래스의 Append 함수를 이용하여 builder 객체에 문자열을 이어붙인 후 꺼내는 방법이다. var builder = new StringBuild.. 2019. 9. 23.
[Flutter] Windows 10에 Flutter 개발환경 설치하기 Windows 10에 Flutter 개발환경 설치하기 윈도우 환경에서 플러터 앱을 개발하는 방법을 알아보자 작성 환경 OS : Windows 10 IDE : Android studio 3.5 이상 (또는 Intellij IDEA 2019.1.2 이상) 작업 순서 1. Intellij IDEA 또는 Android studio 설치 2. Flutter plugin과 SDK 설치 3. Android SDK 설치 Intellij IDEA 또는 Android studio 설치 Flutter 어플리케이션을 제작하기 위한 IDE를 설치해야한다. 이 글에서는 Android studio로 셋팅할 것이다. Download link : https://developer.android.com/studio 2019. 9. 15.
[Flutter] Mac에 Flutter 개발환경 설치하기 ▶ 주제 : Mac에 Flutter 개발환경 설치하기. ▶ 작성 환경 ▷ OS : Mac ▷ IDE : Android studio 3.5 이상 (또는 Intellij IDEA 2019.1.2 이상) ▶ 작업 순서 ▷ 1. Intellij IDEA 또는 Android studio 설치 ▷ 2. Flutter plugin과 SDK 설치 ▷ 3. Android 개발환경 설정 ▷ 4. iOS 개발환경 설정 ▶ 1. Intellij IDEA 또는 Android studio 설치 Flutter 어플리케이션을 제작하기 위한 IDE를 설치해야한다. 보통은 Android studio나 VS Code를 사용한다. 참고로 말하자면 Android studio에서도 Flutter iOS 앱 개발이 가능하니 혹시나 개발이 안될거.. 2019. 8. 31.
[Node.js] PayloadTooLargeError: request entity too large PayloadTooLargeError: request entity too large. Node.js에서 PayloadTooLargeError가 발생하는 경우와 해결법에 대하여 알아보자. 발생 원인 보통 express를 이용하여 Node.js에서 웹 서버를 구축할 때 const app = express(); ... app.use(express.json()); // 혹은 bodyParser.json() app.use(express.urlencoded()); // 혹은 bodyParser.urlencoded() ... request의 내용을 파싱하여 라우터가 이용할 수 있도록 위와 같이 두 가지 파서(body-parser 패키지에 있음)를 등록하게 된다. PayloadTooLargeError가 발생하는 원인은.. 2019. 8. 11.
[Node.js] .env 환경변수 ▶ 주제 : .env 환경변수 Node.js에서 프로그래밍에 필요한 값들을 서술할 수 있는 .env 환경변수 파일에 대하여 알아보자. ▶ 예시 Node.js에서는 프로젝트 디렉토리에 .env라는 이름의 파일이 존재하면 환경변수처럼 소스코드로 가져와서 사용할 수 있다. .env 파일의 내용은 key=value 형태로 써야하며 문장의 맨 앞에 #를 붙이면 주석을 쓸 수도 있다. # This is sample .env MESSAGE=hello NUMBER=1234 .env을 이용하기 위해서는 프로젝트에 dotenv 패키지를 설치해야한다. var express = require('express'); var router = express.Router(); require('dotenv').config(); rout.. 2019. 5. 24.
반응형