전체 글
이모저모 방방곡곡 두루두루 개발지식 저장소
-
2023-12-11 1. 상황 최초 터미널에서의 root 사용자에 대한 접속을 시도하려면 아래와 같은 형식으로 알림이 나오게 된다. 이는 현재 root 사용자에 대한 최초 비밀번호 설정이 되어 있지 않아서 생기는 것이다. $ su:Sorry 2. 해결방법 해결방법은 간단하다. $ sudo -s 위의 명령어를 통해 root 권한으로 셀을 실행한다. passwd로 루트 계정의 비밀번호를 변경한다. $ passwd root 이후 다시 su / sudo와 같은 root 권한 요청 시에 문제없이 실행된다. 메인 이미지 출처 : 사진: Unsplash의Lucía Garó
[Mac] 터미널 root 사용자 활성화 하는 방법2023-12-11 1. 상황 최초 터미널에서의 root 사용자에 대한 접속을 시도하려면 아래와 같은 형식으로 알림이 나오게 된다. 이는 현재 root 사용자에 대한 최초 비밀번호 설정이 되어 있지 않아서 생기는 것이다. $ su:Sorry 2. 해결방법 해결방법은 간단하다. $ sudo -s 위의 명령어를 통해 root 권한으로 셀을 실행한다. passwd로 루트 계정의 비밀번호를 변경한다. $ passwd root 이후 다시 su / sudo와 같은 root 권한 요청 시에 문제없이 실행된다. 메인 이미지 출처 : 사진: Unsplash의Lucía Garó
2023.12.11 -
2023-12-10 1. 방법 https://brew.sh/ Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 위의 url 로 접속을 한다. install homebrew 에 위치한 명령어를 복사한후 Terminal 을 실행 시킨뒤 해당 명령어를 실행시킨다. 2. Terminal 관련 참고 https://support.apple.com/ko-kr/guide/terminal/apd5265185d-f365-44cb-8b09-71a064a42125/mac Mac에서 터미널 열기 또는 종료하기 Mac에서 터미널은 macOS에 명령어 라인 인터페이스를 제공합니다. support.apple.com 메인 이미지 출처 : 사진: Unsplash의Cl..
[Mac] 맥에서 HomeBrew 설치방법2023-12-10 1. 방법 https://brew.sh/ Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 위의 url 로 접속을 한다. install homebrew 에 위치한 명령어를 복사한후 Terminal 을 실행 시킨뒤 해당 명령어를 실행시킨다. 2. Terminal 관련 참고 https://support.apple.com/ko-kr/guide/terminal/apd5265185d-f365-44cb-8b09-71a064a42125/mac Mac에서 터미널 열기 또는 종료하기 Mac에서 터미널은 macOS에 명령어 라인 인터페이스를 제공합니다. support.apple.com 메인 이미지 출처 : 사진: Unsplash의Cl..
2023.12.10 -
2023-12-09 1. 설치 flutter_dotenv 라이브러리를 사용할 거며 설치방법은 아래와 같다. pubspec.yaml 설정 파일에 아래와 같이 의존관계 작성 후 저장한다. # 버전은 자신에게 맞는 것으로 설정한다. dependencies: flutter_dotenv: ^5.1.0 2. 사용법 우선 자신의 App root 경로에 .env 파일을 생성한다. 그 후 자신이 사용하고자 하는 환경 변수 값을 key=value 형태로 작성한다. URL=https://www.naver.com/ ENV=local # This is a comment pubspec.yaml 의 assets 에도 아래와 같이. env 정보를 작성한다. assets: - .env main.dart 파일에도 앱 실행전 .env 파..
[Flutter] config(.env) properties/환경변수 설정 알아보기(flutter_dotenv)2023-12-09 1. 설치 flutter_dotenv 라이브러리를 사용할 거며 설치방법은 아래와 같다. pubspec.yaml 설정 파일에 아래와 같이 의존관계 작성 후 저장한다. # 버전은 자신에게 맞는 것으로 설정한다. dependencies: flutter_dotenv: ^5.1.0 2. 사용법 우선 자신의 App root 경로에 .env 파일을 생성한다. 그 후 자신이 사용하고자 하는 환경 변수 값을 key=value 형태로 작성한다. URL=https://www.naver.com/ ENV=local # This is a comment pubspec.yaml 의 assets 에도 아래와 같이. env 정보를 작성한다. assets: - .env main.dart 파일에도 앱 실행전 .env 파..
2023.12.09 -
2023-12-08 1. 방법 아래 톱니 모양의 시스템 설정을 클릭한다. 마우스를 검색한다. 자연스러운 스크롤을 On 설정이 되어 있는것을 Off 처리로 바꾼다. 메인 이미지 출처 : 사진: Unsplash의NEOM
[Mac] 맥 마우스 휠 반대방향 변경하기2023-12-08 1. 방법 아래 톱니 모양의 시스템 설정을 클릭한다. 마우스를 검색한다. 자연스러운 스크롤을 On 설정이 되어 있는것을 Off 처리로 바꾼다. 메인 이미지 출처 : 사진: Unsplash의NEOM
2023.12.08 -
2023-12-07 1. listview 명시적으로 지정된 만큼 스크롤 가능한 선형 위젯 배열을 만든다. 이 생성자는 하위 수가 적은 목록 보기에 적합핟. 목록을 구성하려면 실제로 표시되는 하위 항목만이 아니라 목록 보기에 표시될 수 있는 모든 하위 항목에 대해 작업을 수행해야 하기 때문이다. 즉 10000개의 항목들을 리스트로 만들어야 한다면 10000개를 모두 리스트에 그려야 하기 때문에 비효율적일 수 있다. https://api.flutter.dev/flutter/widgets/ListView-class.html ListView class - widgets library - Dart API A scrollable list of widgets arranged linearly. ListView is t..
[Flutter] listview 와 listview.builder 차이점2023-12-07 1. listview 명시적으로 지정된 만큼 스크롤 가능한 선형 위젯 배열을 만든다. 이 생성자는 하위 수가 적은 목록 보기에 적합핟. 목록을 구성하려면 실제로 표시되는 하위 항목만이 아니라 목록 보기에 표시될 수 있는 모든 하위 항목에 대해 작업을 수행해야 하기 때문이다. 즉 10000개의 항목들을 리스트로 만들어야 한다면 10000개를 모두 리스트에 그려야 하기 때문에 비효율적일 수 있다. https://api.flutter.dev/flutter/widgets/ListView-class.html ListView class - widgets library - Dart API A scrollable list of widgets arranged linearly. ListView is t..
2023.12.07 -
2023-10-25 1. Asynchronous programming(비동기 프로그래밍) 비동기 작업을 통해 프로그램은 다른 작업이 완료되기를 기다리는 동안 작업을 완료하는 것을 의미하며, 다음은 몇 가지 일반적인 비동기 작업의 예제이다. Fetching data over a network.(데이터를 가져올 경우) Writing to a database. (DB 데이터를 기록할 경우) Reading data from a file. (파일에서 데이터를 읽을 경우) . . . 2. 예제_1 [ async와 await ] 우선적으로는 아래는 잘못된 비동기 함수의 호출 예제이다. 다트패드에서 해당 코드를 복사 후 실행을 해보면 실제 2초의 딜레이 없이 바로 출력값이 나오는 것을 확인할 수 있다. String c..
[Dart] Asynchronous programming(비동기 프로그래밍): futures, async, await (w.Flutter)2023-10-25 1. Asynchronous programming(비동기 프로그래밍) 비동기 작업을 통해 프로그램은 다른 작업이 완료되기를 기다리는 동안 작업을 완료하는 것을 의미하며, 다음은 몇 가지 일반적인 비동기 작업의 예제이다. Fetching data over a network.(데이터를 가져올 경우) Writing to a database. (DB 데이터를 기록할 경우) Reading data from a file. (파일에서 데이터를 읽을 경우) . . . 2. 예제_1 [ async와 await ] 우선적으로는 아래는 잘못된 비동기 함수의 호출 예제이다. 다트패드에서 해당 코드를 복사 후 실행을 해보면 실제 2초의 딜레이 없이 바로 출력값이 나오는 것을 확인할 수 있다. String c..
2023.12.06 -
2023-12-05 1. Named constructors 다트에서는 하나의 클래스 내의 여러 개의 생성자를 만드는 것을 허용한다. 각 생성자들은 자신만의 고유한 이름을 가지게 되는데 이게 Named constructors이다. 2. 방법 사용방법은 간단한다. 아래의 예제를 보자. void main() { var p1 = Point.origin(); print("${p1.x} / ${p1.y}"); //0 / 0 } class Point { double x, y; // Basic constructors Point(this.x, this.y); //Named constructors Point.origin() : x = 0, y = 0; } Named constructors는 예제와 같이 Class 명과 명..
[Dart] 다트 Named constructors 알아보기 (w.Flutter)2023-12-05 1. Named constructors 다트에서는 하나의 클래스 내의 여러 개의 생성자를 만드는 것을 허용한다. 각 생성자들은 자신만의 고유한 이름을 가지게 되는데 이게 Named constructors이다. 2. 방법 사용방법은 간단한다. 아래의 예제를 보자. void main() { var p1 = Point.origin(); print("${p1.x} / ${p1.y}"); //0 / 0 } class Point { double x, y; // Basic constructors Point(this.x, this.y); //Named constructors Point.origin() : x = 0, y = 0; } Named constructors는 예제와 같이 Class 명과 명..
2023.12.05 -
2023-12-04 1. 정의 동일 object에 대하여 일련의 해당 object 의 메소드/필드 접근 시 좀 더 유연하게 코드를 작성할 수 있게 해주는 일종의 코드 표현법이다. 2. 사용법 아래는 공식 문서의 예제 코드이다. var paint = Paint(); paint.color = Colors.black; paint.strokeCap = StrokeCap.round; paint.strokeWidth = 5.0; 위의 코드는 paint 인스턴스 변수의 설정값을 변경해주는 코드이다. 해당 코드에 Cascade notation 문법을 적용해 보자 var paint = Paint() ..color = Colors.black ..strokeCap = StrokeCap.round ..strokeWidth =..
[Dart] 다트 Cascade notation 문법 알아보기2023-12-04 1. 정의 동일 object에 대하여 일련의 해당 object 의 메소드/필드 접근 시 좀 더 유연하게 코드를 작성할 수 있게 해주는 일종의 코드 표현법이다. 2. 사용법 아래는 공식 문서의 예제 코드이다. var paint = Paint(); paint.color = Colors.black; paint.strokeCap = StrokeCap.round; paint.strokeWidth = 5.0; 위의 코드는 paint 인스턴스 변수의 설정값을 변경해주는 코드이다. 해당 코드에 Cascade notation 문법을 적용해 보자 var paint = Paint() ..color = Colors.black ..strokeCap = StrokeCap.round ..strokeWidth =..
2023.12.04 -
2021-12-27 1. 정의 Null safety 란 특정한 변수에 접근했을 때 해당 변수에 값이 할당되어 있지 않아 예상치 못한 null 에러가 발생하는 것을 말하는 것이다. 해당 에러는 보통 존재하지 않는 값에 접근하여 발생하는 에러로 " null dereference error " 라고 불려진다. Null safety를 지원하는 언어는 Dart 외에도 여러 가지가 있으면 예를 들자면 코틀린이 있다. 2. 문법 그러면 어떤 식으로 사용되는지 확인해 보자. 아래는 공식 문서에서 제공하는 예제 코드이다. 지정한 변수 타입 앞에? 를 사용함으로써 해당 변수는 null을 할당할 수 있게 정의할 수 있다. String? name // Nullable type. Can be `null` or string. S..
[Dart] 다트 Null safety 문법 알아보기2021-12-27 1. 정의 Null safety 란 특정한 변수에 접근했을 때 해당 변수에 값이 할당되어 있지 않아 예상치 못한 null 에러가 발생하는 것을 말하는 것이다. 해당 에러는 보통 존재하지 않는 값에 접근하여 발생하는 에러로 " null dereference error " 라고 불려진다. Null safety를 지원하는 언어는 Dart 외에도 여러 가지가 있으면 예를 들자면 코틀린이 있다. 2. 문법 그러면 어떤 식으로 사용되는지 확인해 보자. 아래는 공식 문서에서 제공하는 예제 코드이다. 지정한 변수 타입 앞에? 를 사용함으로써 해당 변수는 null을 할당할 수 있게 정의할 수 있다. String? name // Nullable type. Can be `null` or string. S..
2023.12.03 -
2023-12-02 1. 방법 자신의 깃허브 저장소 우측 상단에 있는 프로필 클릭한다. 이후 나타나는 사이드 바에서 Settings를 클릭한다. 전환된 페이지에서 Organizations 항목을 클릭한다. 이미 생성된 조직이 있으면 아래와 같이 보인다. New organization을 클릭해 새로운 조직을 생성한다. 최초에 Team옵션이 기본으로 선택된 것처럼 보이지만 Free 만 사용해도 private 저장소를 제한없이 만들어 관리할 수 있기 때문에 Free를 선택한다. (언제든 업그레이드할 수 있으니 걱정 안 해도 된다.) 이후 자신의 조직 이름과 연락받을 이메일 정보를 작성한 후 해당 조직이 어디에 종속될지 선정한다. 기업의 고유한 계정이 있으면 A business or institution을 선택..
[GitHub] 깃허브 조직(Organizations) 계정 생성하는 방법2023-12-02 1. 방법 자신의 깃허브 저장소 우측 상단에 있는 프로필 클릭한다. 이후 나타나는 사이드 바에서 Settings를 클릭한다. 전환된 페이지에서 Organizations 항목을 클릭한다. 이미 생성된 조직이 있으면 아래와 같이 보인다. New organization을 클릭해 새로운 조직을 생성한다. 최초에 Team옵션이 기본으로 선택된 것처럼 보이지만 Free 만 사용해도 private 저장소를 제한없이 만들어 관리할 수 있기 때문에 Free를 선택한다. (언제든 업그레이드할 수 있으니 걱정 안 해도 된다.) 이후 자신의 조직 이름과 연락받을 이메일 정보를 작성한 후 해당 조직이 어디에 종속될지 선정한다. 기업의 고유한 계정이 있으면 A business or institution을 선택..
2023.12.02 -
2023-12-01 1. 이슈 One or more plugins require a higher Android SDK version... InAppWebView를 사용하여 코드 수정 후 빌드 중에 위와 같은 에러가 발생했다. 이는 현제 사용하는 플러그인이 안드로이드에서 사용하기 위해서는 추가적인 Android SDK 버전업이 필요하다는 에러이며, 이를 올려주어야 한다. 2. complieSdkVersion build.gradle 에 complieSdkVersion 은 아래와 같이 flutter.compileSdkVersion으로 되어 있을 것이다. [자신이 설치한 플러터 경로]\packages\flutter_tools\gradle\flutter.gradle 에 작성된 설정값을 따르게 된다. 하드 코딩으로..
[Flutter] flutter.compileSdkVersion 위치 확인 및 변경 (One or more plugins require a higher Android SDK version 해결)2023-12-01 1. 이슈 One or more plugins require a higher Android SDK version... InAppWebView를 사용하여 코드 수정 후 빌드 중에 위와 같은 에러가 발생했다. 이는 현제 사용하는 플러그인이 안드로이드에서 사용하기 위해서는 추가적인 Android SDK 버전업이 필요하다는 에러이며, 이를 올려주어야 한다. 2. complieSdkVersion build.gradle 에 complieSdkVersion 은 아래와 같이 flutter.compileSdkVersion으로 되어 있을 것이다. [자신이 설치한 플러터 경로]\packages\flutter_tools\gradle\flutter.gradle 에 작성된 설정값을 따르게 된다. 하드 코딩으로..
2023.12.01 -
2023-11-30 1. 이슈 발생 Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: XXXXXX > 65536 위와 같은 이슈가 발생하였는데 오류의 내용은 하나의 dex file은 65536을 넘길 수 없으니 당신의 앱이 main-dex list를 허용하라는 이슈이다. 우선 dex file이 뭔지 알아보자. 2. dex file? Android 애플리케이션(APK) 파일에는 DEX(Dalvik Executable) 파일 형식의 실행 가능한 바이트코드 파일이 포함되어 있으며, 여기에는 앱을 실행하는 데 사용되는 컴파일된 코드가 포함되어 있다. 즉 자신의 앱을 실행시키기 위한 바이트코드 덩어리..
[Android] dex file 과 multiDexEnabled 알아보기 (Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: XXXXXX > 65536 해결)2023-11-30 1. 이슈 발생 Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: XXXXXX > 65536 위와 같은 이슈가 발생하였는데 오류의 내용은 하나의 dex file은 65536을 넘길 수 없으니 당신의 앱이 main-dex list를 허용하라는 이슈이다. 우선 dex file이 뭔지 알아보자. 2. dex file? Android 애플리케이션(APK) 파일에는 DEX(Dalvik Executable) 파일 형식의 실행 가능한 바이트코드 파일이 포함되어 있으며, 여기에는 앱을 실행하는 데 사용되는 컴파일된 코드가 포함되어 있다. 즉 자신의 앱을 실행시키기 위한 바이트코드 덩어리..
2023.11.30 -
2023-11-29 1. 원인 비동기로 동작하는 코드에서 BuildContext를 사용해서 해당 문제가 발생하게 된다. 이는 widget의 비동기 동작 후에 정확인 mounted 되었는지 확인이 필요하며, 이후에 BuildContext를 호출해서 사용하라는 에러이다. 2. 해결 방법 해결 방법은 간단하다. 자신이 사용하는 비동기 함수에서 BuildContext 사용 전 mounted 가 되어있는지 확인하면 된다. 아래는 간단한 예제이며, if (!context.mounted) return; 를 통해서 현제의 context가 mounted 여부를 확인 할 수 있다. void foo(BuildContext context) async { await someFuture(); if (!context.mounted..
[Flutter] Don't use 'BuildContext's across async gaps. Try rewriting the code to not reference the 'BuildContext' 해결방법2023-11-29 1. 원인 비동기로 동작하는 코드에서 BuildContext를 사용해서 해당 문제가 발생하게 된다. 이는 widget의 비동기 동작 후에 정확인 mounted 되었는지 확인이 필요하며, 이후에 BuildContext를 호출해서 사용하라는 에러이다. 2. 해결 방법 해결 방법은 간단하다. 자신이 사용하는 비동기 함수에서 BuildContext 사용 전 mounted 가 되어있는지 확인하면 된다. 아래는 간단한 예제이며, if (!context.mounted) return; 를 통해서 현제의 context가 mounted 여부를 확인 할 수 있다. void foo(BuildContext context) async { await someFuture(); if (!context.mounted..
2023.11.29 -
2023-11-28 1. 패턴 Getter 아래는 getter를 사용한 패턴이다. get 키워드를 이용해 직사각형의 넓이를 추출하는 간단한 예제이다. class Rectangle { final int width, height; Rectangle(this.width, this.height); // This computed property is treated like a function // that returns a value. int get area => width * height; } Setter 아래는 Setter 를 활용한 패턴으로 Point 클래스로 x와 y와 받아 중앙값을 구한다. class Rectangle { final int width, height; Rectangle(this.width,..
[Flutter] Class(model) getter setter 패턴 알아보기 (w.Dart)2023-11-28 1. 패턴 Getter 아래는 getter를 사용한 패턴이다. get 키워드를 이용해 직사각형의 넓이를 추출하는 간단한 예제이다. class Rectangle { final int width, height; Rectangle(this.width, this.height); // This computed property is treated like a function // that returns a value. int get area => width * height; } Setter 아래는 Setter 를 활용한 패턴으로 Point 클래스로 x와 y와 받아 중앙값을 구한다. class Rectangle { final int width, height; Rectangle(this.width,..
2023.11.28 -
2023-11-27 1. 자동완성/변환 Ctrl + Space: 코드 자동 완성 Ctrl + Shift + Space: 스마트 코드 완성 (현재 컨텍스트에 맞게 자동 완성 제안) Alt + Enter: 빠른 동작 및 오류 수정을 위한 제안 보기 Ctrl + Shift + Enter: 문장 완성 및 자동 줄바꿈 Ctrl + Shift + U: 대/소문자 변환 Ctrl + R (또는 Cmd + R): 바꾸기 Ctrl + Shift + F6 (또는 Cmd + Shift + F6): 변수 이름 변경 2. 검색/이동 Ctrl + F (또는 Cmd + F): 찾기 Ctrl + Shift + N: 파일 또는 디렉터리 검색 Ctrl + Shift + F: 전체 프로젝트에서 텍스트 검색 Ctrl + Shift + Alt..
[Intellij] 인텔리제이 단축키 모음2023-11-27 1. 자동완성/변환 Ctrl + Space: 코드 자동 완성 Ctrl + Shift + Space: 스마트 코드 완성 (현재 컨텍스트에 맞게 자동 완성 제안) Alt + Enter: 빠른 동작 및 오류 수정을 위한 제안 보기 Ctrl + Shift + Enter: 문장 완성 및 자동 줄바꿈 Ctrl + Shift + U: 대/소문자 변환 Ctrl + R (또는 Cmd + R): 바꾸기 Ctrl + Shift + F6 (또는 Cmd + Shift + F6): 변수 이름 변경 2. 검색/이동 Ctrl + F (또는 Cmd + F): 찾기 Ctrl + Shift + N: 파일 또는 디렉터리 검색 Ctrl + Shift + F: 전체 프로젝트에서 텍스트 검색 Ctrl + Shift + Alt..
2023.11.27 -
2023-11-22 1. 설정 우선 자식의 애플리케이션 최상단에 font를 폴더를 생성한 후 사용할 font 파일들을 넣어준다. your_app/ fonts/ Raleway-Regular.ttf Raleway-Italic.ttf RobotoMono-Regular.ttf RobotoMono-Bold.ttf 이후 pubspec.yaml 에 아래와 같이 font 파일의 위치와 스타일등을 지정해 준다. flutter: fonts: - family: Raleway fonts: - asset: fonts/Raleway-Regular.ttf - asset: fonts/Raleway-Italic.ttf style: italic - family: RobotoMono fonts: - asset: fonts/RobotoMo..
[Flutter] 플러터 font 적용하기2023-11-22 1. 설정 우선 자식의 애플리케이션 최상단에 font를 폴더를 생성한 후 사용할 font 파일들을 넣어준다. your_app/ fonts/ Raleway-Regular.ttf Raleway-Italic.ttf RobotoMono-Regular.ttf RobotoMono-Bold.ttf 이후 pubspec.yaml 에 아래와 같이 font 파일의 위치와 스타일등을 지정해 준다. flutter: fonts: - family: Raleway fonts: - asset: fonts/Raleway-Regular.ttf - asset: fonts/Raleway-Italic.ttf style: italic - family: RobotoMono fonts: - asset: fonts/RobotoMo..
2023.11.22 -
2023-11-21 0. 구조 현재 디렉토리 구조는 아래와 같다. 1. 방법 flutter: uses-material-design: true assets: - assets/logo/ assets: - assets/logo/ pubspec.yaml 에 위와 같은 형식으로 자신의 정적 파일 경로를 추가 한다. 반드시 들여쓰기는 위의 코드와 같이 맞춰주어야한다. 2. 사용법 코드로 해당 정적 파일을 불러올때는 아래와 같은 형식으로 이미지 정보를 불러오면 된다. Image.asset( 'assets/logo/google_logo.jpg', // Google 로고 이미지 height: 24.0, // 이미지 높이 조절 ), 3. 참고링크 https://docs.flutter.dev/ui/assets/assets-..
[Flutter] 플러터 assets /images 추가 방법2023-11-21 0. 구조 현재 디렉토리 구조는 아래와 같다. 1. 방법 flutter: uses-material-design: true assets: - assets/logo/ assets: - assets/logo/ pubspec.yaml 에 위와 같은 형식으로 자신의 정적 파일 경로를 추가 한다. 반드시 들여쓰기는 위의 코드와 같이 맞춰주어야한다. 2. 사용법 코드로 해당 정적 파일을 불러올때는 아래와 같은 형식으로 이미지 정보를 불러오면 된다. Image.asset( 'assets/logo/google_logo.jpg', // Google 로고 이미지 height: 24.0, // 이미지 높이 조절 ), 3. 참고링크 https://docs.flutter.dev/ui/assets/assets-..
2023.11.21 -
2023-11-20 1. 정의 factory 생성자는 매번 새로운 인스턴스를 생성하여 리턴할 필요가 없는 경우에 사용할 수 있는 키워드이다. 즉 factory 키워드를 사용하면, 캐시 되어 있는 인스턴스나 해당 클래스의 하위타입을 리턴할 수 있다. 2. 예제 아래는 Dart 공식 문서에 있는 Logger예제이다. class Logger { final String name; bool mute = false; // _cache is library-private, thanks to // the _ in front of its name. static final Map _cache = {}; factory Logger(String name) { return _cache.putIfAbsent(name, () => ..
[Flutter] Factory keyword 알아보기 With.Dart2023-11-20 1. 정의 factory 생성자는 매번 새로운 인스턴스를 생성하여 리턴할 필요가 없는 경우에 사용할 수 있는 키워드이다. 즉 factory 키워드를 사용하면, 캐시 되어 있는 인스턴스나 해당 클래스의 하위타입을 리턴할 수 있다. 2. 예제 아래는 Dart 공식 문서에 있는 Logger예제이다. class Logger { final String name; bool mute = false; // _cache is library-private, thanks to // the _ in front of its name. static final Map _cache = {}; factory Logger(String name) { return _cache.putIfAbsent(name, () => ..
2023.11.20 -
2023-11-18 1. 원인 Spring를 빌드하다 보면 아래와 같은 WARN 이 뜨는 경우가 있다. JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해당 부분을 살펴보자. OSIV(View의 Open Session)는 그림과 같이 View 계층이 프록시 초기화를 트리거할 수 있도록 지속성 콘텍스트를 열어두도록 강제한다. 쉽게 표현하자면 JPA의 영속..
[Spring] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해결 방법2023-11-18 1. 원인 Spring를 빌드하다 보면 아래와 같은 WARN 이 뜨는 경우가 있다. JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 해당 부분을 살펴보자. OSIV(View의 Open Session)는 그림과 같이 View 계층이 프록시 초기화를 트리거할 수 있도록 지속성 콘텍스트를 열어두도록 강제한다. 쉽게 표현하자면 JPA의 영속..
2023.11.18 -
2023-11-17 1. 원인 기본적으로, Android 9 (API 레벨 28)부터는 usesCleartextTraffic가 기본적으로 비활성화되어 있다. 이는 보안 상의 이유로, HTTPS(SSL/TLS)를 통한 암호화된 연결을 사용하도록 권장하기 때문인데, 안드로이드 9 이상의 버전에서는 기본적으로 암호화되지 않은 트래픽이 차단되며, NetworkSecurityConfig를 사용하여 명시적으로 허용할 수 있다. 2. 방법 방법은 간단하다. AndroidManifest.xml 로 들어가 설정 정보를 변경해주면된다. 아래와 같이 application 단에서 android:usesCleartextTraffic="true" 설정 정보를 추가해 주면 된다. 메인 이미지 출처 : 사진: Unsplash의NEOM
[Flutter] Cleartext HTTP traffic to Site not permitted 이슈 해결2023-11-17 1. 원인 기본적으로, Android 9 (API 레벨 28)부터는 usesCleartextTraffic가 기본적으로 비활성화되어 있다. 이는 보안 상의 이유로, HTTPS(SSL/TLS)를 통한 암호화된 연결을 사용하도록 권장하기 때문인데, 안드로이드 9 이상의 버전에서는 기본적으로 암호화되지 않은 트래픽이 차단되며, NetworkSecurityConfig를 사용하여 명시적으로 허용할 수 있다. 2. 방법 방법은 간단하다. AndroidManifest.xml 로 들어가 설정 정보를 변경해주면된다. 아래와 같이 application 단에서 android:usesCleartextTraffic="true" 설정 정보를 추가해 주면 된다. 메인 이미지 출처 : 사진: Unsplash의NEOM
2023.11.17