본문 바로가기

전체 글273

[JAVA] byte[] to File, File to MultipartFile (fin. byte[] to MultipartFile) 타 API 와 통신해서 AWS S3 에 업로드 할 일이 생겼다. MSA 에 맞춰서 다른 팀에서 S3 에 업로드하는 API 를 뚫어줬는데, 업로드 할 binary file 데이터 타입을 MultipartFile 로 만들어주셨다.. 그렇기에 내가 할 일이란 타 API 와 통신 -> byte array 겟! -> File 객체로 변환 -> MultipartFile 객체로 변환하는 것이었다. 여기서 중요했던건 ★ no disc , in memory(buff) ★ 에 초점을 맞췄다는 점이다. 왜냐면 통신해서 받은 데이터를 S3 에 업로드할건데 굳이 was 에 올릴 필요가 없었기 때문에 !! ( 사실은 일정 환경 이상에서 디렉토리 핸들링 권한이 없어서 was 에 저장 자체가 불가능했음.. ) (byte[] -> M.. 2020. 9. 9.
Caused by: org.apache.poi.POIXMLException: Strict OOXML isn't currently supported, please see bug #57699 Caused by: org.apache.poi.POIXMLException: Strict OOXML isn't currently supported, please see bug #57699 원인 : 엑셀을 xlsx 확장자로 저장하겠다고 눈에 바로 보인 Strict Open XML 스프레드시트 (.xlsx) 을 골랐었는데, 잘못된 선택이었다..ㅋ 해결 : Excel 통합 문서 (.xlsx) 2020. 8. 28.
[JAVA] List 반복문 안에서 객체 remove (feat.ConcurrentModificationException) List 를 돌면서 조건에 부합하는 객체는 해당 List 에서 제거를 해줘야 했다. 하지만 List(Collection.....😩) 를 루프돌면서 remove 하는 것은 쉽고 간단하지 않았고 ( 테스트 도중 빈번하게 ConcurrentModificationException 요 아이와 마주했다;ㅎ) 구글링에 나오는 아래 두 가지 방법을 했지만 뭔가.. 소스 읽기도 힘들고 이중으로 돌아서 NPE 아이가 올 때도 있어서 아예 메소드를 리팩토링했다. 1. while(it.hasNext()) {} 2. for (Iterator it = List.iterator(); it.hasNext();) {} 바로 JAVA8 이상에서만 사용할 수 있는 List.removeIf() !! https://docs.oracle.co.. 2020. 8. 6.
[MySQL] expression #1 of SELECT list contains nonaggregated column ### Cause: java.sql.SQLSyntaxErrorException: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column '{{내컬럼}}'; this is incompatible with sql_mode=only_full_group_by ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column '{{내컬럼}}'; this is.. 2020. 7. 16.
[Javascript] 자바스크립트 배열 값 중 최대값 찾기 화면단에서 최대값을 구해야하는 로직을 개발하고 있었다. 그러기 위해서는 배열로 관리하는게 편했고, 그래서 나는 자바스크립트 배열 값 중에서 최대값을 찾아야 했는데 까먹을까봐 포스팅을 한다. var arr = []; arr.push(10); arr.push(20); arr.push(30); Math.max(...arr); Math.max() 를 사용하되 그 핵심은 ... 이 부분인듯 하다 :) 2020. 7. 3.
[jQuery] .outerHeight() always return element 화면에서 버튼을 클릭했을 때 여백(margin) 을 제외한 높이를 구하기 위해 .outerHeight() 를 했는데 자꾸 해당 element 객체가 리턴되어 제대로 된 계산을 할 수 없었다. 구글링해도 답을 찾을 수 없었다가 콘솔에 날린 요 한 줄로 인해 원인을 찾았다. $.fn.outerHeight() CDN 으로 호출한 곳들 중 한 곳에서 저 function 이 있어서, 내가(울회사에서) 정의한 스크립트와 충돌이 있었던 것;; 덕분에 잘 해결했지만, 역시 개발은 원인은 찾으면 재밌는데 원인을 찾기 까지 애먹는 과정(삽질)이 힘들다.. 2020. 6. 22.
[R] R Console 에서 엑셀데이터 읽기 실패 (library(xlsx) 로드 실패) 에러 : package or namespace load fialed for 'xlsx' : .onLoad가 loadNamespace() 에서 'rJava'때문에 실패했습니다: 호출 : inDL(x, as.logical(local) , as.logical(now), ...) 에러 : 공유된 객체 'C:/Users/w_w01/Documents/R/win-library/4.0/rJava/libs/x64/rJava.dll' 를 로드 $ LoadLibrary failure: 지정된 모듈을 찾을 수 없습니다. R console 에서 엑셀데이터를 읽기 위해서 아래 명령어를 날렸는데 에러가 났다.. library(xlsx) 찾아보니 R console 에서 자바홈 경로를 찾을 수 없어서 발생한 에러였고, 즉시 Oracl.. 2020. 5. 24.
[Mybatis] update 문 parametertype 을 map 으로 받아 foreach 처리하는 방법 서비스를 하다가, 모든 유저의 이름을 '홍길동' 으로 바꿔야 할때. 그 객체를 Map 으로 가지고 있는 경우에 대해 포스팅하겠습니다. (위에서 언급한 '그' Map 객체) // Map 구조 (id:userName} 'hajs' = {'홍길동'}, 'user01' = {'홍길동'}, 'user02' = {'홍길동'}; 우선 Mapper 에서 param 을 Map 으로 전달해주고, void updateUserName(@param("userNameMap") Map userNameMap); xml 에서는 (아래처럼) update 문에 foreach 돌리면서 처리하면 된다. UPDATE user SET user_name = CASE WHEN user_id = #{userId} THEN #{user_name} EN.. 2020. 5. 18.
[Javascript] Object 객체에 .forEach() 가 안먹을 때 화면단 개발을 하면서 화면에 객체를 내릴 일이 생겼다. 이 과정에서 나름 화면에 노출되는 정보를 최대한 숨기겠다고 첫 번째 방식이 아닌, 두 번째 방식인 Object 객체로 내렸다. // 이렇게 내릴까? user = [ { 'id':'vvh-avv', 'name':'홈주' }, { 'id':'hajs', 'name':'하지수' } ] // 아니야 이렇게 내리자! user = { 'vvh-avv' : '홈주', 'hajs' : '하지수' } 근데 여기서 문제는.. user 를 돌면서 이름을 가져와야 했는데 ㅜㅜ 어느 때와 같이 .forEach() 를 했는데 안먹었다. 하지만 당황하지않고 다른 방법(.map() / .reduce()) 을 써봤는데도 안되더라. 😓 여기서 내가 간과했던 점은 Object 는 I.. 2020. 5. 14.