일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 완전탐색
- Android
- 비동기 처리
- Java
- Render object tree
- Kotlin
- 알고리즘
- dart
- 거리알고리즘
- 자바
- element tree
- 프리즈드
- Lazy
- flutter
- 초기화
- 코틀린
- dfs
- Widget Tree
- 플러터 동작
- 플러터
- 싱글톤
- Singleton
- 프로그래머스
- 앱아이콘 변경
- IOS
- 자료구조
- 에러
- linebreak
- 재귀
- zwj
- Today
- Total
목록분류 전체보기 (80)
모바일 개발하는 자바리안의 메모장
메인 함수에서 WidgetsFlutterBinding.ensureInitialized() 함수를 사용하는 경우가 많다. 지금까진 해당 함수를 직접 작성할 일이 없어 그냥 지나치다가 이번에 새로운 프로젝트를 시작하며 해당 함수의 역할을 알게되었다. 해당 함수는 시작점인 main() 함수에서 비동기 처리 코드를 사용하기에 앞서, 미리 flutter 엔진과 widget을 바운딩 처리해준다. 우선 아래 코드를 실행할 경우 발생하는 코드를 보자 : void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { MyApp({super.key}) { init(); } @override Widget build(BuildContext context) { r..
해당 키워드가 붙는 생성자는 새로운 인스턴스를 만들지 않고 하나의 인스턴스만을 사용하게 된다. class ClassA { static final ClassA _classA = ClassA._internal(); factory ClassA() { return _classA; } ClassA._internal() { } } 기본적인 싱글톤 패턴 코드이다. 자 이제 해당 class의 객체 2개를 만들어 비교해보자. ClassA classA1 = ClassA(); ClassA classA2 = ClassA(); debugPrint((classA1 == classA2).toString()); // true 다른 2개의 객체의 주소값이 같음을 확인할 수 있다. 만약 새로운 인스턴스도 생성해줘야 할 필요가 있는 cl..
면접때 꽤 자주 등장하는 질문, HTTP와 HTTPS의 차이는 무엇인가? 자신있게 말할 수 있었던 건 끝의 S가 Secure라는 거 정도였기에 이번 기회에 좀 더 깊이있게 이해해보고자 한다. HTTPS는 앞서 언급한 바와 같이 Htper Text Transfer Protocol Secure 의 줄임말이며 암호화를 지원한다. 포트는 443을 사용하며(HTTP는 80) 클라이언트, 서버가 아닌 제 3자가에게 정보가 노출되지 않도록 아래와 같은 2개 암호화를 지원한다 : 1) 대칭키 암호화 : Client, Server 모두 동일한 키를 사용하여 암호화, 복호화 진행 2) 비대칭키 암호화 : 공개키, 개인키 한쌍을 사용하여 암호화, 복호화 진행 암호화하는 과정에서 Session Key가 사용되는데 해당 Key..
flutter build 커멘드로 ipa 파일을 생성하려면 Xcode 13이 필요하다하여 OS 업데이트를 마친 뒤, Xcode 업데이트를 하는데,, 로딩 인디케이터가 몇시간이 지나도 없어지질 않는다. 찾아보고 찾아보다 착아낸 솔루션은 아래와 같다 : 1. 아래 경로에 있는 cache directory 제거 open ~/Library/Caches/com.apple.appstore 2. 앱스토어 에이전트 강제 종료 pkill -9 -f appstoreagent 이렇게 앱스토어로 설치하는 방법을 버리고, 직접 다운로드 받아 설치하면된다. 아래 애플 개발자 페이지로 들어가 Xcode13을 찾아 설치하면 끝. https://developer.apple.com/download/all/
그냥 자주보는 익숙한 상태 코드만 알고 있었는데(100, 400대 코드,,), 총 5개 클래스로 구성된 상태코드에 대해 좀 더 자세히 알고, 기억해보자는 취지로 HTTP 상태 코드를 정리해본다. 1xx - Informational 현재 받은 요청을 처리하는 중인 상태로 어떤 상태인지에 대한 정보를 나타내는 클래스이며 대표적인 코드는 다음과 같다 : - 100(Continue) : 현재 진행 중에 별 문제는 없으며 클라이언트에게 "너꺼 처리 해주려고 작업중이니까 쓸데없이 재시도 같은거 하지말고 기다려라" 라고 알려주는 상태 - 101(Switch Protocol) : 클라이언트가 헤더를 통해 Upgrade 요청을 했을 때, 요청한 것에 따라 서버가 프로토콜을 바꿔준다는 것을 알려주는 상태. Websocke..
Flutter 앱을 실행해보니 아래와 같은 PlatformException이 발생했다. PlatformException (PlatformException(Exception encountered, deleteAll, java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor android.content.SharedPreferences.edit()' on a null object reference at com.it_nomads.fluttersecurestorage.FlutterSecureStoragePlugin.deleteAll(FlutterSecureStoragePlugi..
디버깅 모드로 실행했을 땐 문제가 없던 앱이, apk파일을 설치하여 실행할 경우 아래와 같은 Exception이 발생했다 : E FlutterLoader: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “~~~~~~”],nativeLibraryDirectories= [/~~~~~~-KZuzqfrkWcDtvMA1osi-jA==/lib/x86, /~~~~~~-KZuzqfrkWcDtvMA1osi-jA==/base.apk!/lib/x86, /system/lib]]] couldn’t find “libflutter.so” 게다가 특정 디바이..
Flutter 의 비동기 로직 처리에 사용되는 대표 키워드 Future, await, async에 간략하게 정리해보려한다. 아래 코드는 dart.dev 에서 비동기 처리의 잘못된 예를 보여주기 위해 제공해 준 코드다 : String createOrderMessage() { var order = fetchUserOrder(); return 'Your order is: $order'; } Future fetchUserOrder() => Future.delayed( const Duration(seconds: 2), () => 'Large Latte', ); void main() { print(createOrderMessage()); } 우선 비동기 처리를 선언하는 Future 키워드를 살펴보자. 있다가 다 처..
https://programmers.co.kr/learn/courses/30/lessons/42883# 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 와 이건 dfs로 모든 조합 구해서 풀면 되겠다! 하고 풀었다가 좌절한 문제.. 고수님들의 설명을 참고하여 그리디 알고리즘을 사용하여 더 간결하고 직관적인 코드로 답을 찾을 수 있었다.. number의 첫번째 숫자부터 순서대로 Stack에 넣어준 뒤, 다음 인덱스의 숫자를 확인 할 때, 그 숫자가 마지막에 넣은 숫자보다 큰지 확인 후 바꿔주며 삭제된 숫자의 개수를 카운트해준다. 이렇게 카운트된 값은 삭제할 숫자 개수, k보다 작은지 비교해주기 위해 사용한다. 상기 그리디한 작업을 반복하며, number의 길이 - k 길이를 유지해주며 s..
https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 다 됐다 싶었으니, 몇몇 실패 케이스 때문에 시간이조금 소요됐다. (디버깅이 상당히 어려웠..