분류 전체보기

Server/Database

[MyBatis] UPDATE SET 1=1은 없을까? / 대신 trim을 사용해 보았다.

UPDATE 테이블_명 SET param1 = #{param1} , param2 = #{param2} , param3 = #{param3} , WHERE idx = #{idx} 이런 구조로 된 SQL문이 있었다. 당연히 마지막 ',' 때문에 에러가 발생한다. WHERE이 저런 상황이라면 1=1을 추가해주면 되던데 SET은 1=1을 할 수 없었다. ++ 1=1도 찾아보니 성능상 좋지 않다고 한다. 이때 SET에 trim이라는 것을 사용해 보았는데, 아래와 같이 사용하면 된다. UPDATE 테이블_명 param1 = #{param1}, param=2 = #{param2}, param=3 = #{param3}, trim의 옵션 prefix와 suffixOverrides는 이러한 기능이라고 한다. prefix ..

TIL

multipart/form-data PUT 말고 POST 사용하기

multipart/form-data로 전송하는 것의 '수정' 기능을 구현하는 중에 에러가 발생했다. PutMapping을 했지만 아무런 반응이 없어서 검색해보니, multipart/form-data는 PUT이 아니라 POST를 사용해야 한다는 것을 알게되었다. 참고 https://mangkyu.tistory.com/218

Kotlin

안드로이드 App Bundle API 수준 31 이상을 타겟팅해야 합니다. 해결방법

플레이스토어에 App Bundle 올릴 때 현재 앱이 30의 API 수준을 타겟팅하고 있지만, 보안 및 성능에 최적화된 최신 API를 기반으로 앱을 빌드하려면 API 수준 31 이상을 타겟팅해야 합니다. 앱의 타겟팅 API 수준을 31 이상으로 변경하세요. 라는 에러 메세지가 나왔다. 해결 방법은 1. Preference > Android SDK 에서 Android 12.0을 다운로드 2. bundle.gradle에서 compileSdkVersion 31, targetSdkVersion 31로 변경 3. AndroidManifest.xml에서 activity에 android:exported="true" 추가 출처 https://seahrin.com/entry/buildbox-%EC%95%B1-%EC%97..

Spring

[ERROR] Port already in use: 1099

mac > 터미널 lsof -i :1099 실행되고 있는 프로세스의 PID를 복사해서 아래의 명령어로 kill 해주면 됩니다. kill -9 PID

Vue.js/Nuxt

[Nuxt.js] google analytics 적용하기

whynot 플젝이 어느 정도 윤곽이 잡혀서 google analytics를 적용해보기로 했습니다. 프로젝트는 Nuxt 2버전을 사용하고 있어서 Nuxt 2 버전을 기준으로 따라 해 보면 아마 잘 될 것 같아요:) 라이브러리로는 nuxt/google-analytics와 vue-gtag가 있었는데, 측정 ID가 UA로 시작한다면 nuxt/google-analytics를 사용하고 G-로 시작하면 vue-gtag를 사용하면 됩니다. 저는 vue-gtag를 사용했어요! google analytics 사이트에서 스트림 생성 https://analytics.google.com/ 측정 ID를 프로젝트 아래의 코드(vue-gtag.js)에 추가 해준다. vue-gtag 설치 yarn add vue-gtag 저는 nux..

Kotlin

안드로이드 11 URL로 사진 저장, 다운로드 하는 법

안드로이드 11 아래 버전에서 아래의 코드로 사진 다운로드 할 수 있는 경로를 지정해주고 다운로드 할 수 있도록 되어 있었습니다. Environment.getExternalStorageDirectory().absolutePath 사진에 접근하기 위한 권한으로 아래 두개도 사용하고 있었구요 해당 코드로 사진 다운로드 기능을 잘 사용하고 있었는데, 안드로이드 정책이 변경되면서 아래와 같은 경고를 받았습니다ㅠㅠ 'getExternalStorageDirectory(): File!' is deprecated 해결방법은 기존 코드에서 분기점을 만들어주어 Q버전 위아 아래로 나누어 작성해주면 됩니다! fun download (urlStr: String) { val url = URL(urlStr) val fileNam..

Node.js

yarn add, yarn add --dev는 무슨 차이일까?

저는 npm과 yarn 중에 yarn을 주로 사용했습니다. 일을 배울 때 팀장님께서 npm 보다는 yarn을 쓰자고 하셔서가 이유였는데, 글을 적다가 문득 궁금해서 찾아보니 아래와 같은 점이 차이점으로 알려져 있네요. 1. npm은 패키지를 한번에 하나씩 순차적으로 설치하지만, yarn은 패키지를 동시에 가져오고 설치한다. (속도 측면에서 yarn이 더 빠르다.) 2. yarn이 보안 측면에 있어서 npm보다 안전한 것으로 알려져 있다. npm은 자동으로 패키지에 포함된 다른 패키지 코드를 실행하지만 yarn은 yarn.lock 또는 package.json 파일에 있는 파일만 설치한다. yarn의 공식문서에 따르면 yarn add는 npm install --save와 같고, yarn add --dev는 ..

Vue.js/Nuxt

Nuxt2에 vue-bootstrap 설치하기

지금 진행중인 프로젝트에 vue-bootstrap이 필요해서 설치해 보았습니다. ** vue 2.6 버전 기준입니다. 공식 문서에 따르면 Nuxt 버전 2.15.8 이상을 권장하고 있습니다. npm 과 yarn 둘 중 각자의 프로젝트가 사용하는 것을 기준으로 아래 명령어를 실행해줍니다. # npm npm install bootstrap-vue # yarn yarn add bootstrap-vue nuxt.config.js파일에 아래의 코드를 넣어줍니다. module.exports = { modules: ['bootstrap-vue/nuxt'] } 모듈에 추가해주면 boostrap.css와 bootstrap-vue.csss가 기본적으로 미리 컴파일 되는 것 같습니다. 만약 custom 하게 Scss를 사용..