TIL에 해당하는 글 39

  1. 도커 삽질 기록 2024.03.19

    회사에서 로컬로 테스트를 진행할 때, 준비되어야 할 서버(DB, nginx 등)가 많아서 도커로 관리하고 있었다. 이번에 파이썬으로 실행하는 프로그램도 하나 추가돼서, 원래는 도커를 켜 주고 파이썬은 로컬 컴퓨터에서 파이참으로 프로그램을 켜야 했다. 파이썬 서버를 기존 도커 서비스에 추가해서 합쳐 만들려고 했다! 1. 우분투 이미지를 가져와서 생성한 컨테이너에, rabbitMQ와 파이썬을 설치하고 프로그램을 실행하는 이미지를 .tar로 추출해서 기존에 세팅된 서버 도커에 이미지로 불러와 함께 실행 이미지, 컨테이너, 도커파일, docker-compose 등이 뭔지 도커에 대해 기본적인 정보를 익힌 후 Dockerfile을 만들기 시작했다. 우분투 컨테이너를 베이스로 시작함 rabbitMQ설치와 파이썬 설..


  2. 도커(Docker) 기본개념 2024.03.12

    도커란? Go로 개발된, 앱을 개발하고 배포하고 운영하기 위한 오픈 플랫폼이다. 인프라로부터 앱을 분리하여 소프트웨어를 빠르게 제공할 수 있도록 한다. 도커를 이용하면 앱을 관리하는 것과 같은 방식으로 인프라를 관리할 수 있다. 컨테이너? Runnable instance of an Image, an isolated environment for your code. 앱이 구동되는 환경까지 포함하여 실행할 수 있도록 하는 기술이다. 도커API 또는 CLI를 이용해 생성하고, 실행하고, 중단하고, 옮기거나, 삭제할 수 있다. 컨테이너는 가볍고, 앱을 실행하기 위한 모든 필요한 것을 가지고 있어 호스트에 설치된 것에 의존할 필요가 없다. 이처럼 느슨하게 분리된 환경에서 앱을 패키징하고 실행할 수 있도록 해 준다...


  3. 한글단어 자동완성 삽질(용두사미 주의) 2024.01.22

    결국 라이브러리 써서 해결했고, 자동완성 기능을 만들면서 알게된 점을 간략하게 정리한 글입니다. 업무로 검색시 정해진 특정 단어들에 한해 자동완성을 구현해야 했다.길고 긴 삽질 끝에 결국은 라이브러리를 이용했지만.. 기록삼아 삽질 내역을 남겨 본다. 우선 "조말론" 이라는 단어를 자동완성시키고 싶다고 했을 때,"조말론"은 물론이고 조ㅁ, 좀, 조마, 조말ㄹ,.. 등해당 단어가 완성되기 위한 모든 중간 과정 단어들을 타이핑했을 때도 "조말론"을 자동으로 완성하고 싶었다. 1. 입력된 키값을 개별로 저장하여 join으로 합쳐 비교하기단순하게 키값이 입력될 때마다 ㅈ,ㅗ,ㅁ,ㅏ,ㄹ,.. 등의 배열을 만들고 합쳐서 정규식으로 비교하려고 했다.결론만 말하면, join("")은 사용할 수 없다... 당연하지.....


  4. ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'A' which is not functionally dependent on columns in GROUP BY clause; 2023.11.29

    이번에 MySQL 버전을 업그레이드하면서 잘 되던 API가 작동하지 않는 이슈가 발생했다. 에러 로그를 보아하니... 문제가 발생한 쿼리는 아래와 같았다. SELECT C.id, C.type FROM PROJECT INNER JOIN GROUP B ON A.group_id = B.group_id INNER JOIN MEMBER C ON C.member_id = B.user_id WHERE A.project_id = #{value} GROUP BY C.id ORDER BY A.reg_date DESC 그리고 에러 메시지는... Cause: java.sql.SQLSyntaxErrorException: Expression #1 of ORDER BY clause is not in GROUP BY clause a..


  5. java.lang.IllegalArgumentException: 이 쿠키를 위해, 유효하지 않은 도메인 ... 2023.11.07

    개인 맥북으로 재택근무를 하다가 사무실에서는 발생하지 않았던 에러가 떴다. 분명 사무실에서는 잘만 테스트 하고 있었는데... 검색해 보니 이번에 톰캣 버전을 올리면서 정책이 바뀌었고, .(dot)으로 시작하는 도메인으로 쿠키를 생성할 수 없게 되었다. 그래서 아래처럼 되어 있던 context.xml 파일에서 sessionCookieDomain 옵션을 지웠고 해결함. WEB-INF/web.xml WEB-INF/tomcat-web.xml ${catalina.base}/conf/web.xml 참고한 블로그(클릭시 새창으로 열립니다.)


  6. java.rmi.server.ExportException: Port already in use: #### 2023.11.07

    평소처럼 업무를 하다 점심 먹고 들어와서 잠자기해뒀던 맥북을 깨웠는데 뭔가.. 평소처럼 일어나지 않았다. 종료했다가 켠 것처럼... 그러면서도 정말 맥북을 종료했다가 켰을 때같지는 않았다. 원래 켜져있던 창들을 복구하듯 잠자기 이전의 프로그램들(기본 시작 프로그램 아님)이 켜졌고, 기본 시작 프로그램도 함께 켜졌다. 아무튼 다시 로컬 서버를 열어서 하던 일을 마저 하려는데... 터미널에 이런 말이 찍히면서 실행이 되지 않았다. 포트를 이미 사용중이라니~.~ 아무래도 맥북에 뭔가 이상이 있었고, 그것 때문에 실행되어 있던 VSCode며 인텔리제이가 강제종료된 듯했다. IDE상에서는 프로세스가 종료됐지만, 실제로는 종료되지 않아서 포트를 계속 물고 있던 것이 원인이었다. 해결방법은 간단하다. 강제종료된 프로..


  7. 구분자로 데이터를 전송받을 때 데이터 유실 2023.10.24

    어떤 프로그램 속에서 데이터를 구분자로 구분하여 하나의 String으로 받아 오는 부분이 있었다.하지만 꽤 많은 데이터를 가져올 때 어느 시점부터 모든 데이터를 가져오지 못하고,가져오지 못한 데이터는 undefined로 노출되는 문제가 있었다. 이름|이름|이름|이름|...|undefined|undefined 이런식으로. https://jaejade.tistory.com/102 [MySQL] GROUP_CONCAT length 제한작업 중에 group_concat을 활용하여 객체를 요소로 갖는 배열 형태를 반환하게끔 했는데 길이 제한 때문에 텍스트가 잘리는 이슈가 발생했다. 구글링 해보니 group_concat은 1024 문자가 기본값이라고jaejade.tistory.com 이 문제때문이었음!그래도 MyS..


  8. SSLHandshakeException: PKIX path building failed 2023.08.11

    위와 같은 에러메시지가 뜬다는 건 SSL 보안 등록이 되어 있지 않다는 뜻이다. 브라우저가 아니라 자바 서버에서 https 요청을 보내 주려면 인증서를 추가해야 한다. 자바에서는 아래 경로에서 인증서를 저장해 사용하고, keytool 이라는 명령어로 관리할 수 있다. 인증서 저장소 경로 : ${JAVA_HOME}/lib/security/cacerts 현재 등록된 인증서 조회하기 : keytool -list -v -keystore ${JAVA_HOME}/lib/security/cacerts 1. 인증서 파일을 keystore에 import한다. keytool -import -keystore ${인증서 저장소 경로} -file ${인증서파일 경로} -alias ${alias이름} 예시) keytool -im..