전체 글

전체 글

    [VPN] IKEv2/IPSec VPN 개념

    기본 개념IPSec네트워크 계층(OSI 3계층)에서 패킷단위로 인증 및 데이터 암호화를 하는 프로토콜IPSec과 같이 나오는 SSL VPN은 어플리케이션 계층에서 데이터를 암호화 하는 기술IKEIPSec 연결을 구성할 요소(SA: 보안 설정 및 통신 규약)를 어떻게 설정할지 협상하는데 사용하는 프로토콜IKE는 버전에 따라 IKEv1 과 IKEv2 가 있는데 IKEv2 가 빠르고 안정적이여서 많이 쓰임ESPIPSec으로 통신하는 데이터 패킷을 암호화하여 전송하는 프로토콜 IKEv2 의 ExchangeIKEv2에서 Exchange 란 IKEv2 연결을 하는 서버-클라이언트 간에 주고받는 메세지 세트를 의미하며 총 4개의 Exchange가 있다.Exhange목적IKE_SA_INIT 터널 생성 시 암호 알고리즘..

    [Android Studio] Template not found: Dart File 에러

    [Android Studio] Template not found: Dart File 에러

    환경:- 안드로이드 스튜디오 버전: Android Studio Meerkat | 2024.3.1 Patch 1- Dart 플러그인 버전: 243.26753- Flutter 플러그인 버전: 85.2.3 이슈:안드로이드 스튜디오에서 dart, flutter 플러그인을 업데이트 한 후 dart 파일을 새로 생성시, 아래와 같은 에러가 발생찾아보니 Dart 플러그인 이슈인듯?https://youtrack.jetbrains.com/issue/IDEA-371045https://youtrack.jetbrains.com/issue/IDEA-371041플러그인이 새로 업데이트 될때까지는 New -> File 로 파일생성해서 직접 `dart` 확장자를 기입하도록 한다.

    [dart] sealed class 를 이용하여 Success, Failure 타입 클래스 만들기

    [dart] sealed class 를 이용하여 Success, Failure 타입 클래스 만들기

    freezed로 Success, Failure 클래스를 가질수 있는 union type의 Result 클래스를  작성하고part 'result.freezed.dart';@freezedabstract class Result with _$Result { const factory Result.success(T data) = Success; const factory Result.failure(Error e) = Failure;}when 함수를 이용하여 인스턴스의 타입이 Success 인지 Error 인지 판별하려고 하였으나,Result 클래스에 when 함수가 없었음. 알고보니 dart3 부터 sealed class 를 이용한 pattern matching을 제공하여,freezed에서 더이상 패턴매칭 함수(..

    [flutter] initState() 에서 context를 이용한 위젯 변경시 에러 발생

    [flutter] initState() 에서 context를 이용한 위젯 변경시 에러 발생

    Stateful widget 의 initState()에서 context를 이용하여 inherited widget을 업데이트하면 @override void initState() { super.initState(); ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("hello"))); }다음과 같은 에러가 발생된다.더보기When an inherited widget changes, for example if the value of Theme.of() changes, its dependent widgets are rebuilt. If the dependent widget's reference to the inherited wi..

    [Flutter] Constraints Rule (위젯의 크기와 위치는 어떻게 정해질까)

    플러터에서 레이아웃이 어떻게 구성되는지 이해하려면 위젯의 제약조건 규칙을 알아야함.Constraints (제약조건)Constraints go down. Sizes go up. Parent sets position.Constraints go down. -> 부모 위젯이 자식 위젯의 제약조건(위젯의 최소/최대 크기)을 결정한다.Sizes go up. -> 부모 위젯의 크기는 자식 위젯의 크기로 부터 결정된다.Parent sets position. -> 자식 위젯의 위치는 부모 위젯이 결정한다. 위젯의 크기와 위치가 정해지는 과정위젯은 부모 위젯으로 부터 제약조건(최소/최대로 가질수 있는 width, 최소/최대로 가질수 있는 Height)을 부여받는다.위젯은 각 자식 위젯으로부터 필요한 크기를 구한 후, 이를..

    안드로이드와 HTTPS 통신 -1-

    안드로이드와 HTTPS 통신 -1-

    안드로이드와 HTTP 통신HTTP는 클라이언트와 웹서버가 서로 통신하기 위해 사용하는 프로토콜임.HTTP는 평문으로 데이터를 주고받기 때문에 네트워크 보안 상 취약하다.이런 점으로 인해 안드로이드는 Pie(9) 버전부터 기본적으로 HTTP 통신을 허용하지 않음.그래서 안드로이드에서 HTTP 서버와 통신을 하려면AndroidManifest.xml 에 평문트래픽을 허용하도록 설정해줘야 함.// AndroidManifest.xml 안드로이드와 HTTPS 통신 1. HTTPS 프로토콜과 TSL(SSL) 핸드쉐이크평문으로 데이터를 주고받는 HTTP를 보완하고자SSL/TLS 프로토콜 기반으로 데이터를 암호화 한, HTTPS 프로토콜이 만들어졌음.HTTPS는 비대칭키 알고리즘으로 데이터를 암복호화함.데이터가 비대칭키..

    안드로이드 백그라운드 정리 (thread와 handler)

    안드로이드 백그라운드 정리 (thread와 handler)

    안드로이드의 메인스레드 안드로이드앱이 실행하게 되면 어플리케이션 동작을 위해 기본적으로 생성되는(by default) 스레드를 메인스레드라고 한다. 메인스레드는 컴포넌트를 동작시키고 ui를 그리는 일을 담당하며 이 때문에 UI스레드라고 불린다. (메인스레드 == UI스레드) 안드로이드는 앱의 ui를 하나의 스레드에서만 담당하는 원칙을 가지고있다. (싱글스레드 모델) UI 스레드는 단 하나 앱은 날이갈수록 복잡해지지만 UI를 담당하는 스레드는 단 하나다. 이때문에 이러한 싱글스레드 모델에서는 몇가지 규칙이 있다. 1. 메인스레드(UI스레드)를 블럭하지 말것 -> 시간 오래걸리는 작업은(다운로드,IO작업 등..) 메인스레드에서 하지말고 딴데서(다른 스레드) 해라 2. 안드로이드 UI는 오직 UI스레드(메인스..

    AndroidStudio - OpenCV 연동/Import

    Version OpenCV: 4.6.0 (2022.6.7 release) Android Studio: Android Studio Chipmunk (2021.2.1 Patch 1) Gradle: 7.0.3 Kotlin: 1.5.20 Java : OpenJDK 11 ※ 안드로이드 스튜디오는 최신버전(Chipmunk 이상)으로 업데이트 하면 연동하는데 수월합니다. ※ 설명은 맥북 기준이나 윈도우사용자가 봐도 무방합니다. 안드로이드용 OpenCV 모듈 다운받기 먼저 아래 링크로 들어가시고 Releases · opencv/opencv Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account o..