고장 및 결함을 줄이고 '무사고, 무고장, 무불량' 을 목표로 하는 활동을 중심으로 합니다.
이는 일본의 도요타에서 시작, 전 세계로 확산된 방식입니다. 이를 지탱하는 기둥 중 하나가 5S 이며 소프트웨어라는 공장을 빗대어 표현할 수 있겠습니다.
5S
1. 정리 Seiri ▶조직
적절한 명명법 등과 같은 방법을 사용하여, 클래스, 메서드, 변수 등 무엇이 어디에 사용되고 위치해 있는지 알아야 한다. ( NHN Academy 당시 학장님 말씀으로 '저는 개발 당시 대부분 변수 이름 짓는 것에 시간을 보냈습니다. 그만큼 심사숙고하여 이름을 지어야 합니다.' 라고 하셨다. )
2. 정돈 Seiton ▶ 단정함
물건마다 제자리가 있다. 코드 또한 누구나 예상할 수 있는 위치에 알아야 한다.
3. 청소 Seiso ▶ 정리
TODO와 같이 주석이 달린 코드가 처리되었다면, 지워야 한다. 불필요한 쓰레기는 작업공간을 혼란스럽게 만든다.
4. 청결 Seiketsu ▶ 표준화
그룹 내의 스타일을 정하고 따라야 한다.
5. 생활화 Shutsuke ▶ 규율
관례를 따르고, 자신의 코드를 돌아보며 변경할 수 있는 마음을 가져야 한다.
'도요타' 자동차 처럼 소프트웨어도 엔진오일 등 자동차 상태를 매번 체크하고, 부품을 교체하여 고장을 미리 방지한다.
즉, 우리가 만드는 소프트웨어 또한 주기적인 코드리뷰와 불필요한 코드를 과감히 제거하고, 교체하는 등 지속적인 리팩터링을 통해 만들어가야 한다.
"더블클릭은 상관없어~" 하고 잘 알아보지도 않고 G502 hero 벌크제품을 2022년도 쯤에 구매해서 사용했습니다. 얼마 지나지 않아서 더블클릭 증상이 찾아왔습니다. 오랫동안(3일) 컴퓨터를 사용하지 않거나 종료하지 않절전모드만 자주 사용하면 종종 더블클릭에 당첨되고 합니다.
근데 최근에 문제가 터졌습니다. 이제 클릭이 되지 않습니다.... 오른쪽 마우스 클릭이 오락가락합니다.
여러 해결 방법을 찾아보았습니다. 1. 잔류 전기가 남아 그렇다 선을 뽑고 막 클릭해서 방전 시켜라 2. 스위치 부품이 녹슬어서 그렇다. 스위치를 바꿔라 3. 마우스 클릭하는 부분 틈사이로 바람을 불어주면 된다.
모두 임시 방편일 뿐 다시 돌아왔고 결국에 클릭이 되지않는 상태가 되어버렸습니다. 그래서 수리점에 맡길려다가 아두이노, 라즈베리파이 조금 봤다고 자신감이 생겨 이참에 분해해서 수리 하자. 바로 진행해 보았습니다.
Flutter 개발시 API Key나 다른 것을 숨겨야 할 상황이 생긴다. 이 때 우리는 환경변수를 사용하여 보안성을 높일 수 있다. 이번에는 .env 파일을 통해 git과 같은 코드 업로드 시 보안을 높이고 또한 앱 배포시에도 리버스 엔지니어링으로 부터 더욱 안전할 수 있게 난독화까지 할 수 있도록 하겠다.
● API Key를 숨기지 않더라도 Naver, AWS 등 여러가지 API 서비스는 제한 횟수로 관리하는 방법이나 단기에 많은 요청시와 같은 비정상적인 호출이 실행되었을 때를 서비스를 제공하는 곳에서 관리해주기 때문에 어느정도 보장되지만, 그럼에도 악용하는 방법은 무궁무진 하므로 보안성을 최대한 높이는 것이 좋다.
● API Key 뿐만 아니라 숨겨야 하는 다른 데이터를 난독화를 통해 보안성을 높일 수 있다.
.env File 사용하기
.env
플러터 프로젝트 루트 디렉터리 (Flutter Project Root Directory)에 .env 파일을 생성하고 key를 적으면 된다.
NAVER_ID_KEY = '발급 받은 키값'
Add Package
난독화와 환경변수 .env file에 적은 값들을 가져오기 위해 다음 패키지를 추가 해 주자.
다음과 같은 오류는 google.android.gms.service가 충돌해서 발생하는 오류이다. Naver Map API 사용하는 경우 대부분 자신의 위치 기반으로 geolocator를 사용하고 둘 다 google.android.gms.service.location를 사용하기 때문에 발생한다.
충돌지점은 20.0.0버전의 이후와 이전으로 20.0.0 버전으로 넘어가는 과정에서 에러가 발생한다고 한다.
Flutter를 사용하다보면 이 에러를 심심치 않게 볼 수 있다. Flutter와 dart는 자주 쓰이는 언어에 비해 터무니 없이 역사가 짧다. 때문에 다양한 상황에 따른 가이드라인이 많이 부족할 수 밖에 없으며 한국어 관련 문서, 블로그는 더 찾기 힘들다.
그런 상황에서 다른 분들은 삽질 하지 않았으면 한다. 먼저 다음과 같은 오류는 Flutter .yaml - Package 와 Android의 Kotlin 버전이 맞지 않아서 이다. binary version은 1.9.0인데 1.5.1으로 예상된다. 아니면 1.9.0인데 1.7.1로 예상된다.
그렇다면 kotlin과 Package 버전을 맞춰주면 해결 되는 문제이다. 실제로도 그렇다. 하지만 Package 가 어느 kotlin의 어느 버전으로 사용하고 있는지 확인 하는 것보단 프로젝트의 Android 버전을 확인하는 것이 쉽기 때문에 사람들은 이 코드를 많이 봤을 것이다.Flutter 프로젝트 root 경로/android/build.gradle 물론 단순한 Package 하나의 문제인 경우 위 코드로 해결된다. 하지만 특정 Package 를 사용해야 하고 그것을 포함한 여러 Package 를 사용해야 하는 경우 요구(권장)하는 Kotlin 또는 Package 가 지원 가능한 Kotlin의 버전이 서로 맞지 않기 때문에 다음과 같은 오류가 발생할 수 있다.
다음과 같은 경우 BuildTree를 통해 어떤 Package 의 버전이 다르고 최종적으로 어떤 버전으로 Build되었는지 알 수 있다. BuildTree에서 확인하여 버전이 다른 Package 를 업데이트 시켜줌으로써 해결할 수 있다.