평화로운 개발 인생에 또 구글이 정기적으로 시련을 준다. "앱이 Android 14(API 수준 34) 이상을 타겟팅해야 함"이라는 경고 메일이다.구글 플레이는 매년 새 앱과 업데이트에 대해 타겟 API 레벨 최소 요구치를 올린다. 대응하지 않으면 업데이트 자체를 올릴 수 없다.기본적으로 손봐야 할 코드수정할 위치는 android/app/build.gradle 이다.compileSdkVersion : xxxtargetSdkVersion : xxxAndroid 14 대응이라면 이렇게 변경되어야 한다.compileSdkVersion : 34targetSdkVersion : 34두 가지 선택지여기서 우리는 2가지 선택을 해야 한다.1. build.gradle 파일을 직접 수정할 것인가?2. 거기에 박혀 있..
챗지피티가 처음 나왔을 때, 엉뚱한 소리를 많이하고, 알려준것을 수정하면서 작업하는 것보다,그냥 직접 작성하는게 빨라서 잘 안 사용했었는데,최근 챗지피티 ChatGPT 4o가 나오고 나서는, 아주 맘에든다,구글 검색보다는, 지피티에 의존을 많이하게 되었고, 엉뚱한 소리를 하면, 메뉴얼을 던져주고 알려달라고하면 제대로 알려준다. 그래서 자연스럽게 코파일럿에 관심을 갖게되었는데, (참고로 필자는 AWS 에서 제공되는 것을 사용했었음)무료 체험 기간 맛보기를 해보니 편함 쉽게 말해서 값어치를 하기엔 좀 아직... ? 그러던중에 ollama를 알게 되었는데,LLM을 로컬로 설치하여 불러오는 방식이다, 언어 모델이 여러개 있는데 가장큰것은 몇십기가 이긴하지만, 적당한 선에서 설치해서 사용해보니, 와우 .... 몇..
회사 통계 시스템에서 이상한 이슈가 등록된 적이 있다. 같은 화면을 새로고침하는데 일정 확률로 다른 값이 나온다는 제보였다.처음에는 프런트엔드에서 데이터 취합을 잘못하는 줄 알았다. 그런데 백엔드에서 같은 쿼리를 반복해서 돌려보니 결과값이 실제로 달라졌다.의심했던 것들리드 레플리카를 여러 대 쓰는데 복제 지연으로 싱크가 안 맞는 문제쿼리 자체의 문제캐시나 기타 문제원인: paginate에 ORDER BY가 없었다결론부터 말하면 paginate를 쓸 때는 order by를 반드시 해줘야 한다.SQL 표준상 ORDER BY가 없는 SELECT는 행 순서를 보장하지 않는다. 이건 버그가 아니라 명세다. DB는 가장 빠르게 가져올 수 있는 순서로 반환할 자유가 있다.그런데 paginate()는 내부적으로 LIM..
개발을 몇 년 하다 보면 오히려 기초를 대충 넘어가게 된다. HTML 태그도 그렇다. 화면에 똑같이 보이니까 아무거나 쓰게 되는데, 사실 각각 의미가 다르다.예전에 정리해뒀던 메모를 다시 꺼내 보충한다.이탤릭체: em vs i : 강조하고 싶은 부분을 이탤릭체로 표시 : 단순히 이탤릭체로 표시둘 다 화면에서는 기울어져 보인다. 차이는 의미가 있느냐다.은 emphasis, 즉 문장에서 강세를 두어 읽어야 할 부분이다. 스크린 리더는 이 부분의 억양을 실제로 다르게 읽는다. "나는 오늘 간다"와 "나는 오늘 간다"는 의미가 다른데, 그 차이를 마크업으로 표현하는 것이다.는 강조가 아니라 결이 다른 텍스트를 나타낸다. 학명, 외국어 단어, 배 이름, 생각을 나타내는 문장 같은 것이다.<!-- 강조: 읽을..
Flutter GetX 패키지를 사용하고 있는데, 그중에 모듈을 자동으로 생성해주는 get_cli를 잘 사용하고 있다.그런데 어느 날 갑자기 아래와 같은 에러가 나왔다.Synchronous waiting using dart:cli waitFor and C API Dart_WaitForEventis deprecated and disabled by default. This feature will be fully removedin Dart 3.4 release. You can currently still enable it by passing--enable_deprecated_wait_for to the Dart VM.See https://dartbug.com/52121원인Dart가 동기 대기(waitFor) ..
AirPrint를 지원하지 않는 구형 프린터를 아이폰·아이패드에서 바로 인쇄할 수 있게 만드는 방법이다. 리눅스 서버에 CUPS를 올려서 프린터를 공유하면 된다.설치1. 개발자라면 누구나 가지고 있는 개인 서버에 CUPS를 설치# cups installapt install cups# setting cups vim /etc/cups/cupsd.conf2. 접속하기localhost:6313. 프린터 설치 및 공유 프린터로 지정하기고생했던 부분: /admin 접근 권한localhost:631/admin 에 접근하면 인증을 요구하는데, 어떤 계정으로 로그인해야 하는지가 명확하지 않다.# 리눅스 계정 을 lpadmin 그룹에 넣기sudo usermod -aG lpadmin 위 명령어를 입력하면 리눅스의 계정의..