Trailing closure - 후행 클로저
·
languages/swift
struct widget: Widget { let kind: String = "widget" var body: some WidgetConfiguration { IntentConfiguration(kind: kind, intent: ConfigurationIntent.self, provider: Provider()) { entry in widgetEntryView(entry: entry) } .configurationDisplayName("My Widget") .description("This is an example widget.") } } 스위프트로 위젯 익스텐션을 추가 중 특이한 문법을 발견했다. IntentConfiguration(kind: kind, intent: ConfigurationInten..
[코딩테스트 cheatsheet] 서로소 집합 (Disjoint set)
·
ps, cp/코딩테스트 cheatsheet
개념 서로소 집합 : 공통 원소가 없는 두 집합 서로소 집합 자료구조 : 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조 스택, 큐가 pop, push 연산을 사용하는 것 처럼 서로소 집합은 union, find 연산을 이용함 find - 속한 집합이 어떤 집합인지 찾기 union - 두 개의 집합을 합치기 싸이클인지 구하기 find해서 같다면 cycle 다르면 union 코드 # find - 부모 찾기 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] # union 두 집합의 부모를 비교, 더 작은 쪽을 부모로 대입 def union_par..
Effective Dart 읽어보기 1 - Style
·
languages/dart
https://dart.dev/guides/language/effective-dart Effective Dart Best practices for building consistent, maintainable, efficient Dart libraries. dart.dev 두 가지 중요한 주제 Be consistent - formatting, casing 과 같은 것들은 주관적, 정답이 없음, 일관되게 짜는 것이 도움이 된다. Be brief - Dart는 많은 기능이 있다. 간결하게 작성하자. Identifiers UpperCamelCase, lowerCamelCase, lowercase_with_underscores 세가지가 쓰임 UpperCamelCase - class, enum, typedef, t..
[담타 - 리팩터링] 필요 없는 주석 제거
·
프로젝트 - 담타/리팩터링
성격 때문인지 실력 때문인지 주석을 잘 못지우겠다. 차라리 기능에 대한 부가 설명을 써놓은 주석이라면 좋겠지만, 내 주석은 거의 DateTime standardDate = DateTime(year, month); // print('standard date ${standardDate}'); int totalDays = daysInMonth(standardDate); // print('totalDays : ${totalDays}'); 이런 print 디버깅을 사용하고 잠시 주석처리 해놓은 것이거나 // child: Center( // child: Badge( // // shape: BadgeShape.square, // // borderRadius: BorderRadius.circular(10), // //..
[담타 - 리팩터링] 테마 및 컬러 관리
·
프로젝트 - 담타/리팩터링
자주 쓰이는 값을 한번에 관리하기 위해 혹은 틀리면 안되는 값을 조금 더 엄격하기 위해 상수를 사용한다. 내 프로젝트에서는 아래와 같이 관리했는데, common 폴더에 theme.dart 를 만들고 appTheme 클래스를 이용해서 상수를 설정해주었다. 앱 내의 색이 들어가는 모든 것들에 대해 변수를 만들어주고 거기서 또 할당해주었다. 이렇게 한 이유는 색이 들어가는 모든 것들에 각각의 변수를 주어서 하나의 파일에서 모든 색을 수정할 수 있게 하고 싶어서였다. // /common/theme.dart class appTheme { static const Color mainGreen = Color(0xFF111111); static const Color white = Colors.white; static c..
IOS splash screen 캐싱 문제
·
ios
flutter_native_splash 패키지를 이용하여 스플래시 스크린을 만들었다. 근데 앱을 배포하고보니 흰 화면이 처음에 1초간 뜨고 스플래시 스크린이 보여졌다. 이미 해결해버려서 영상은 없지만 이것은 flutter의 문제가 아닌 ios에서의 고질적인 문제라고 한다. https://developer.apple.com/forums/thread/105790 First used launch screen file is f… | Apple Developer Forums For our app the only way to "fix" this was to delete the app from device, restart device, then install app again - but of course this w..
내 인생 최고의 책
·
etc.
살면서 책을 그리 많이 읽은 건 아니지만 내게 많은 영향을 준 책이 있다. 그건 바로 탈무드 아마 중학교 3학년 때였던 것 같다. 1교시를 시작하기 전에 책 읽는 시간이 30분 정도 있었는데 학급문고에 있던 아주 낡은 탈무드 책을 무슨 이유에서인지 몇 번을 읽었던 기억이 난다. 성인이 되어 여러 탈무드 책을 봤지만, 글자가 작아서 그런걸까, 그때의 느낌은 나지 않았다. 내가 봤던 탈무드는 글자도 큼직해서 읽기 편하고 정말 어린이에게 교훈을 주는 느낌이었는데.. 그때 봤던 같은 책을 찾기 위해 여러 번 검색해 봤지만, 탈무드 책이 너무 많아 도저히 찾을 수가 없었다. 내가 기억이 나는건 - 책 사이즈가 작은편이고 글씨가 컸던 것, - 명작 시리즈 같은 것 중 하나고 책 왼쪽에 줄이 그어져 있던 것, - 출..
새해는 특별하니까
·
etc.
저번주에 파이어베이스 애널리틱스를 보는데 무슨 일인지 사용자 수가 평소보다 늘었다. 평소에 일 평균 사용자 유입은 20명 정도지만 1월 1일, 2일은 50~60명 정도 되었다. 200 초반을 유지하던 DAU도 1월 3일에는 300명을 기록했다. 무슨 일이지? 입소문을 탔나? 추천 앱에 떴나? 확인해봤지만 특별한 이유를 찾을 수는 없었다. 혹시 차트에 올라갔나? 199 등에 위치했다.. 이게 무슨 일인가 싶어 생각해보니 새해였다. 새해를 기념으로 금연해보려는 사람이 많구나.. 새해를 특별하게 생각한 지도 오래된 것 같다. 그냥 한 살 먹는구나 이상하게도 올해에는 해돋이를 보고 싶어서 왜목마을에 다녀왔다. 어렸을 때 정동진으로 해돋이를 보러간 기억이 어렴풋이 나는데 그저 피곤하기만 했을 뿐.. 가면서 내심 ..
안드로이드 splash screen 중복 문제 해결하기
·
frameworks/flutter
splash screen 과 launch screen 은 같은 말이다. 앱이 켜질 때 로고 등을 보여주는 화면인데, 이 때 서버에서 정보를 받아올 수 있고 내부적으로 데이터를 로드할 수도 있다. 따로 설정하지 않으면 플러터에서는 흰 화면을 보여준다. 우리는 flutter_native_splash 패키지를 이용해서 굉장히 간단하게 구현할 수 있다. ios 나 안드로이드 12 버전 이전에서는 잘됐으나 안드로이드 12부터 조금 바뀌었다고 한다. 그래서 안드로이드 12 이상에서는 아래와 같이 두 번 나왔다. 이것을 이해하려면 안드로이드에서 splash screen의 동작원리에 대해 이해할 필요가 있다. 우선 앱이 켜지는 과정을 보면 안드로이드 앱이 실행 -> 플러터가 첫 프레임을 그리는 순서이다. 안드로이드에서..
git clean -fdx 하고 잠못자기
·
프로젝트 - 담타/etc.
스플래시 이미지 추가는 되게 간단하네? 추가하고 앱 배포하고 자야지 하다가 git clean -fdx와 함께 잠 못 잔 이야기 스플래시 스크린 추가하기 flutter_native_splash 패키지를 사용한다. 앱이 실행되고 플러터를 로드하는 동안에 빈 시간을 네이티브 단에서 채워준다고 보았다. 플러터 내에서 스플래시 스크린 위젯을 만들어서 표현하면 절대 채울 수 없는 부분이다. yaml 파일을 업데이트하고 명령어를 입력하면 끝이다. # 생성 flutter pub run flutter_native_splash:create # 삭제 flutter pub run flutter_native_splash:remove # 수정시에는 삭제 후 생성한다. 단 안드로이드 12에서는 메커니즘이 약간 바뀌어서 뭔가 더 해..