개발관련 (15) 썸네일형 리스트형 [Flutter] 소스코드 안의 긴 String을 깔끔하게 만드는 방법 오늘 Flutter로 작성한 소스 코드를 리팩토링하면서 긴 String을 만나게 되었다. 예전에 작성한 나의 앱에도 긴 String이 있는 경우가 있었는데, 소스코드 속에 넣어놓으니 상당히 지저분해보여서 정리하고 싶었던 기억이 있다. 일반적으로, 이용약관이나 개인정보처리방침 문자열 같은 것을 앱 소스코드 상에 포함시키는 경우에 이런 일이 자주 발생할 것 같다. 깔끔하게 만드는 방법을 알아보자. 1. 지저분한 코드 - Widget 클래스 내부에 static const 상수로 포함시키는 방식 일단 적당히 Widget 클래스 안에 static const 상수로 긴 스트링을 넣어놓은 모습이다. 스크린샷을 위해서 중간의 텍스트를 5~6줄 정도로 생략을 하였으나 원래는 100줄 이상되는 문자열이기 때문에 상당히 가.. Google AdSense Site Verification 실패 시 해결 경험 웹사이트에 구글 애드센스를 사용하여 광고를 달기 위해서 구글 애드센스에 승인 신청을 넣으려고 하는데 site verification에 실패했다. 큰 문제는 아니였지만, 원인을 찾느라고 약간의 시간은 소비했다. 실패하는 이유에는 여러가지 이유가 있을 수 있겠지만 필자의 경우에는 http -> https 리다이렉션을 안 해주고 있어서 http로 요청을 보내고 http 요청에 대해서는 404를 내려주고 있었다. http -> https 리다이렉션을 하도록 수정하니 해결되었다. 아마도 글을 읽는 사람들은 필자와는 다른 원인으로 site owner verification이 실패할지도 모르겠다. 안나 카레리나의 구절이 떠오른다. "행복한 가정은 비슷한 이유로 행복하지만, 불행한 가정은 모두 저마다의 이유로 불행하다.. AWS에서 NAT Gateway의 비용을 낮춰보자! 너무나도 비싼 NAT Gateway 저번달 AWS 비용을 보니... 청구된 요금이 크게 올랐다. 원래는 VPC가 1개 있었는데, 필자가 VPC를 2개를 더 만들면서 각각의 VPC에 NAT Gateway를 두면서 비용이 크게 올랐다. 필자는 개발환경과 운영환경을 VPC를 나누어서 구분하고 있는데, VPC 내부에는 public subnet과 private subnet을 나누어서 사용하고 있다. Private subnet 내의 ec2 인스턴스에서는 NAT gateway가 없으면 외부로 인터넷 접속을 할 수 없기 때문에, NAT gateway를 만들어야 하고 그래서 NAT gateway를 써왔다. Private subnet을 두는 이유는 보안을 위해서이다. 외부에서 접근하면 안 되는 서버나 데이터베이스 등은 p.. MySQL은 대소문자를 구분할까? 정답은 OS에 따라 다르다. SQL문을 작성하다보면 궁금증이 발동할 때가 있다. 데이터베이스명과 테이블명, 함수들을 대문자로 작성한 경우도 있고, 소문자로 작성한 경우도 있어서 헷갈리는 경우가 생기게 된다. 작성한 SQL을 실행시켜보면 대소문자의 구분없이도 잘 작동하는 경우도 있고 대소문자가 다르면 작동을 안하는 경우도 있다. 도대체 왜일까? 결론부터 말하자면, SQL문의 키워드(SELECT, INSERT 등)는 대소문자 구분을 안하고, 데이터베이스명, 테이블명, 트리거명은 OS의 파일시스템이 대소문자를 구분하는지에 따라서 대소문자를 구분할 때도 있고 안 할 때도 있다. Unix계열과 Linux 등의 운영체제에서는 파일시스템이 대소문자를 구분하기 때문에 데이터베이스명, 테이블명, 트리거명에서도 대소문자 구분을 하게 된다. Windo.. Chrome Lighthouse 소개 - 개발한 사이트의 성능, 접근성, PWA, SEO를 체크해보자! Chrome Lighthouse 소개 및 사용방법 Chrome에는 Lighthouse라는 개발자용 도구가 있습니다. 이 도구를 이용하면 웹사이트의 성능, 접근성, PWA(Progressive Web App) 지원 여부, SEO(Search Engine Optimization) 등의 관점에서 잘 만들어져있는 사이트인지 체크할 수 있습니다. 거기다가 해당 사항들을 개선할 수 있는 방안까지 친절하게(?) 알려줍니다. 아마도 구글 등의 검색엔진에서 검색 결과를 보내주기 위해서 인덱싱을 할 때, 잘 만들어져있는 사이트인지 여부도 확인한다고 들은 것 같은데요(확실하지는 않습니다만, 검색엔진에 노출이 되고 싶은 많은 사이트들이 빠른 로딩을 위하여 서버 사이드 렌더링을 채택하는 것을 보면 영향이 있는 듯 합니다... .. AWS CLI 자동완성 기능 설정하기 AWS를 사용하다보면 CLI를 쓰면 보다 편할 때가 많다. (스크립트로 자동화시키기도 편하고, 웹의 관리콘솔에서 클릭하는게 피곤할 때가 있어서..) 하지만 CLI의 모든 명령을 외우기는 쉽지 않다 자동완성 기능을 사용하면 좋을텐데, AWS CLI 설치 직후에 자동으로 자동완성 기능이 활성화되지는 않는다. 자동완성 기능은 다음 과정을 거쳐서 설정할 수 있다. AWS CLI가 컴퓨터에 설치되어있는 것을 전제로 하고 있습니다. AWS CLI 설치 방법은 AWS 공식 문서를 참고하여 설치할 수 있습니다. https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html 최신 버전의 AWS CLI 설치 또는 업데이트 - AWS C.. 현재 사용하고 있는 컴퓨터 Public IP (공인 IP) 알아내는 방법 클라우드 환경에 서버를 배포하고 있다가 컴퓨터 IP(public ip)를 알아낼 필요가 생겨서 구글 검색에서 이것저것 찾아봤는데, 굉장히 좋은 거를 알아내서 소개한다. https://checkip.amazonaws.com/ 아마존 AWS에서 제공해주는 서비스 같은데 해당 주소에 접속하면 본인의 IP 주소를 바로 알려준다. 브라우저로 접속을 해도 되고 curl로도 쉽게 알아낼 수 있어서 굉장히 편하고 스크립트 등에서 사용하기도 굉장히 편할 것 같다. ❯ curl https://checkip.amazonaws.com xxx.xxx.xxx.xxx 지금까지 구글 검색 창에 my ip 이런 걸 검색해서 광고가 잔뜩 달린 웹사이트 등에 들어가서 알아냈는데... 훨씬 심플하고 좋은 걸 찾아버렸다. 다른 사람에게도 유.. Dart 언어의 타입 시스템 요약 Dart 언어는 타입 시스템을 가지고 있다. Dart 언어는 type safe하다. 이걸 다른 말로는 sound type system을 가지고 있다고 한다. Type system이 sound하다는 것은 expression이 static type과는 다른 type으로 evaluate되지 않는다는 것이다. (예를 들자면, a라는 변수가 정적 분석 때는 int라고 분석됐는데, 런타임에 String이라던지하는 상황) Dart는 sound type system을 만들기 위해서 static type checking과 runtime check를 수행한다. 모든 값들은 type을 가져야하지만, type annotation은 type inference가 있기 때문에 필수적이지는 않다. Sound type syste.. [Dart] Dart 언어의 Built-in types 관련 정리 최근 Flutter로 작업을 하다가 Type 관련하여 에러가 났는데, 이해가 부족한 부분이 있다고 느끼게 되어 작업을 완료한 후, 나름 한가해진 지금(?) Dart의 Type 관련하여 공부를 해보고자 한다. 1. Built-in types https://dart.dev/language/built-in-types 을 보고 정리한 내용이다. 읽으면서 흥미로운 부분만 언급하였다. 자세한 내용은 문서를 직접 보기를 바란다. - Numbers (int, double) - Strings (String) - Booleans (bool) - Records ((value1, value2)) - Lists (List, also known as arrays) - Sets (Set) - Maps (Map) - Runes (R.. PyCharm 예전 버전 UI로 되돌리는 방법 최근 오랜만에 Python으로 간단한 스크립트를 짤려고 PyCharm을 받아서 열었는데 UI가 너무 많이 바뀌어있어서 적응이 안 돼서 PyCharm 대신 VSCode로 작업을 한 경험이 있다. 찾아보니 2022년 말쯤에 JetBrains에서 새로운 UI를 선보인 것 같은데 역시 기존 UI가 익숙한 유저들은 혼란이 오기 쉬운 듯 하다. 나도 예전 UI가 더 익숙하기 때문에 되돌릴려고 찾아보니 다음과 같이 되돌릴 수 있다. Settings (Cmd + ;)로 이동 -> Appearance & Behavior > New UI > Enable new UI 체크 해제 후 IDE 재시작 예전 UI로 돌아오니 고향(?)에 온 기분이 든다. 본인에게 편한 UI를 선택해서 사용하도록 하자. 이전 1 2 다음