본문 바로가기

분류 전체보기

(36)
[Flutter.250113] Hot restart, Hot reload 둘 다 Hot 하지만, 뭐가 다를까 둘 다 핫하다. Hot restart, 그리고 Hot reload  디버그 모드로 코드를 실행시키면, 저런게 뜬다. 저기서 번개 모양은 'Hot reload', 꼬부라진 화살표 모양은 'Restart'이다. 구글에 물어보았다. "플러터의 리스타트와 핫 리로드의 차이가 무엇이니?"구글이 다음과 같이 대표 답변을 주었다.   플러터의 핫 리스타트는 full restart, 아예 처음부터 다시 시작하는 것보다는 확실히 빠르다. 핫 리로드는 기존의 state를 보존하는 상태에서 구동되지만, 핫 리스타트는 앱이 보유한 기존의 상태를 모두 파괴하고, 전체 앱 코드를 다시 컴파일해서 새로운 default state에서 다시 시작한다.  검색 결과 아래로 조금 내려가니, 플러터 공식 문서도 있다. 제목은 'Hot re..
[Flutter.250110] 간단히 개념만 알아보는 Widget testing & Unit testing & Integration testing 플러터에는 테스팅 관련 공식 문서도 있다. https://docs.flutter.dev/cookbook/testing TestingA catalog of recipes showcasing testing your Flutter app.docs.flutter.dev  유닛 테스팅이 아마 가장 기본적인 테스팅 기법이 아닐까 싶은데, 작성한 클래스들, 특정 함수나 메서드와 같은 개별 단위를 'test' 패키지를 이용하여 테스트한다.  위젯 클래스를 테스트 하기 위해서는 'test' 패키지에 더해서 'flutter_test'를 활용할 수 있다.  테스트는 동일하지만, 각각의 테스팅 목적이 상이하다. 유닛 테스팅 같은 경우는 비즈니스 로직이 제대로 동작하는지 확인한다. 예를 들어 데이터를 받아와서, 사용할 enti..
[Flutter.250108] 다트의 네이티브 컴파일 기술 JIT AOT 다트의 JIT, AOT에 대해 더 알고싶었다. 키워드를 검색해보니 다음의 문서가 최상단에 노출되어서 읽기 시작하였다. https://dart.dev/overview Dart overviewA short introduction to Dart.dart.dev 다트의 컴파일러 기술은 우리의 코드를 다양하게 서로 다른 방식으로 동작할 수 있게 해 준다. 우선 크게 두 가지로 나뉘는데  1. 네이티브플랫폼모바일과 데스크탑 디바이스에서 동작하는 앱의 경우 다트는 머신 코드를 만들어 내기 위해 Just-in-time(JIT) compilation과 ahead-of-time (AOT) 컴파일러를 포함하고 있다.  2. 웹 플랫폼웹을 타겟팅 하는 애플리케이션의 경우, 다트는 개발 또는 프로덕션 목적으로 컴파일을 할 수 ..
[etc.240104] IaaS, PaaS, SaaS, BaaS, FaaS 약어가 너무 많다.얼마 전에는 어떤 친구가 어떤 단어를 말했는데 못알아들었다. 그.. 뭐 였는데.. 기억이 안난다. 사실 약어라는게 알고나면 별거 아닌데, 모르는 상태에서는 '뿌앵? 나만 몰라?' 하게 되는 그런 것이 있다.  그래서 오늘은 소프트웨어 서비스 관련해서 자주 마주칠 법한, 위 제목에 나열한 저 약어들을 간단하게 조금씩 살펴보려고 한다.  갑자기 생각난건데, 내가 전에 다니던 회사는 의료 소프트웨어 만드는 곳이었다. SaMD 이것도 있다. Sofrware as a Medical Device. 그냥 내가 친숙한 순서대로 작성하겠다. 우선 가장 먼저, 가장 흔하게 여기 저기서 마주치는 사스. SaaS. 알아봅시다.  1. SaaS (Sofware as a Service) 한국말로는 "서비스형 소..
[Flutter.250104] 어머머 벌써 새해라니 2025년이라니 다들 새해 복 많이 받으세요. 24년에는 3년 10개월인가 다닌 회사도 나와보고계속 해야지 해야지 해야지 했던 앱 개발 공부도 시작해보고운동은 원래 계획보다 많이는 못했던 것 같지만좋아하는 사람들과 즐겁게 잘 보낸 것 같다.  25년도 항상 그랬듯이 건강하고 즐겁게 잘 보내야지. 모두 건강하세요.건강해야 뭐든 씩씩하게 해 낼 수 있을테니까~
[Dart.241223] 크리스마스 전전날에 풀어보는 LeetCode 49번 Group Anagrams 왜 고생을 사서 하는가? 젊기 때문이겠지.. 끄응. 오늘은 리트코드 49번 문제를 풀어보았다. 사실 혼자서는 못 풀었고 구글과 여러 스택오버플로우 글과,, 챗 지피티와.. 이런 다양한 도구의 도움이 필수적이었다. 풀어야 하는 문제는 다음과 같다. 입력값과 출력값을 먼저 보여드리겠습니다.Input: strs = ["eat","tea","tan","ate","nat","bat"]Output: [["bat"],["nat","tan"],["ate","eat","tea"]] 입력으로 strs 안에 다양한 단어들이 나온다. 아웃풋으로는 그룹이 지어져 있는데 nat, tan은 같은 알파벳 종류로 구성이 가능한 친구들이다. 가족과 같은 것이지. 반면 bat 같은 경우는 a,t,b 가지고 구성할 수 있는 알파벳 단어가 ..
[Flutter.241217] 사진첩에 접근하기 위해서는 사전 허가를 얻어야 했다. 고작 ios 시뮬레이터면서! 이렇게 깐깐하게 굴다니! 라고 처음에 생각했다.하지만 3초 뒤에, 이렇게 사생활 보호를 중요시 여기는 애플 생태계에 속한 한마리의 앱등이인 내가보호 받는 느낌이 들었다. 애플의 도톰한 보호 아래에 시즌마다 지갑을 여는.. 그런 한 사람.. (근데 지갑 열었는데 돈 없음,.) 앱에서 사진첩 접근하려고 하면, 매번 앱이 꺼지는 것이다. 에러 메세지를 살펴보니 이런 말이 있었다. 영어였다.  더보기This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageD..
[Flutter.241212] 소중한 API key가 info plist 파일에 들어가 있는채로 커밋 되어서 만천하에 공개되었을 때 좌절하게 됩니다.요새 세상이 좋아져서, 제가 이런 무지몽매한 액션을 취하자 바로 메일이 날아왔습니다.  끄응. 로컬에 가서 이전 커밋으로 돌아가고, remote 또한 같은 상태로 바꿔줘야 합니다. 제가 한 커밋들의 tag를 알아야 그 자리로 돌아갈 수 있겠죠.. 그냥 git rest --HARD~1 이런 것 보다.. 정확히 어디로 돌아갈 지 알아보는게 좋을 것 같습니다.  git log --oneline 이렇게 하면 최신 커밋 순으로 쫘르륵 터미널에 출력됩니다.  adf03b4 ui: 기본 그리드 화면 만듦793ee3d (origin/feature/my-page, origin/develop, develop) add: 로그인폴더 이런 식으로요.  그래서 돌아가야 할 위치 태그를 확인합니다. adf03b4로..