본문 바로가기

개발

(35)
20221222_연습서버라도 비번 설정을 잘하자 1. 상황 한국인터넷진흥원에서 회사로 메일이 날라왔다. 우리 회사 아이피 중에 몇개의 포트에서 로그인 비번이 취약하여 개인정보 유출이 우려된다는 것이였다. 내가 회사 내부에서 연습용으로 만든 Linux 서버들이였다... 배포용 서버의 SSH, DB서버의 SSH의 비번을 너무 쉽게 했던 것이였다. 예전에 연습용으로 개발서버의 DB를 Dump했던적이 있던터라 가슴이 철렁했다. 멘탈이 터졌다... 왜 그랬을까... 다행히 조사결과 1) Dump를 하려고 했었지만, 용량이 너무커서 주요 테이블은 덤프 실패, 스키마만 덤프가 됬거나, 개인정보가 없는 아주 작은 테이블에만 정보가 있었다. 2)개발DB 덤프였던터라, 털리더라도 직원들의 정보였다.(물론 이것도 개인정보...) 3)어플리캐이션 정책상 서버에 개인정보를 ..
20221222_zsh: command not found: vue npm 으로 vue를 설치했건만... 당최 실행을 하지 못한다. vue 명령어를 찾지 못한 것이다. 이러한 사례는 많이 있었고,주로 환경변수를 설정해주라는 것이 포인트이다. vi ~/.zshrc 에서 export PATH=$HOME./.npm-packages/bin:$PATH 와 같은 식으로 적용해주라는 것이였다. 하지만 여전히 vue를 찾지 못했다. 그래서 terminal 창에서 직접 export PATH=~~ 식으로 직접 입력해보았음에도 되지 않았다. vue를 npm install,uninstall 을 여러번 반복해보았지만 여전히 되지 않았다. 그러던 중 한 에러 메시지에서 /Users/이름/~~~~(기억안남) 에 already install 되어있다는 메시지가 떴었다. 그 위치를 찾아가보니 vue가..
20221220_메일발송 오류시 재전송처리 수정하던 이메일 발송기능에서 첨부파일이 존재할 경우 에러가 터지는 상황이다. 상황) form으로 파일을 전송하고 파일은 AWS S3 에 저장한뒤, S3에 저장된 url경로를 String 으로 return 받는다. 이 경로에서 경로와 파일이름을 분리하고 로컬(?)경로+파일이름 으로 된 내용을 BodyPart객체로 반환해서(?) MultiPart 객체에 add한다. 이후에 sendmail에서 파일에 관한 에러가 나오고 있는데, 정확한 원인은 모르겠다. 일단은 빨리 처리를 해야하는 상황이라서 MailSend상에서 발생하는 exception을 catch하고 속성값을 정리하여 재발송을 하는 방식으로 진행했다. 조치) MultiPart 객체에 0번 index는 메일 content이고, 1번 부터가 파일 내용이다. ..
221216_Build를 성공했는데, 이전 버전이 작동한다???? 어제 발생했던 문제는, Teamcity로 배포를 해서 성공을 했음에도 최신 버전이 반영이 되지 않는 문제 이 문제를 해결하기 위해 다음과 같은 순서로 접근했었다. 1) Teamcity에서 Git-Branch 별 분류의 Pending Changes 를 클릭해 보류된 변경사항을 반영한 Run을 해보았다. 빌드를 해보아도 변한것은 없었고, 아무 의미도 없었다. 나중에 알게 되었으나, 이 부분은 해당 브랜치가 현재의 버전에 비해서 추가로 commit 한 변경 사항이 생기면, 변경해야 할/변경할 사항들을 의미한 것이다. 추가적인 버전이 생겼다~ 라는 의미 2) Docker 에서 docker ps 를 통한 컨테이너의 수명과 docker images 를 했을때 이미지의 수명이 같거나 비슷해야 하는데, 컨테이너는 최근..
Teamcity Pending Changes 이메일 이슈때문에 소스를 수정하고 로컬->개발->상용 서버로 빌드하는 과정을 거쳤다. 근데 개발서버까지 잘 이루어졌던 이메일 발송 기능이 상용서버에서 먹히지 않았다. 그래서 로그를 확인하려고 들어갔는데, 원하는 로그 기록들이 없었다. 그래서 취하려고 했던 조치는 1) 소스에서 logger.level 을 debug로도 바꾸어 개발서버에 배포 -> 저장된 로그 기록에는 변환가 없었다.. 2) mail 기능이 별도의 Thread 를 생성햐여 이용하는 방식으로 되어있어서, Runnable implements를 삭제하고, 일반 클래서로 만들었다. 그리고 error메시지 혹은 success!! 라는 문자열을 반환하여, errorCode와 message를 담는 result역할의 객체에 해당 메시지들을 담으라고 했다...
선배 개발자와의 대화 밥값을 하자 딴거 신경쓰지말고 회사에 도움되는 일 5000만원 받을때 5000만원치일을 하면 안됨. 회사는 2억의 돈을 벌어야 5천만원 급여를 줄수있는 구조임 회사의 모든 소스를 완벽히 파악하라. 사용자 입장에서의 흐름과 소스의 흐름을 일치시켜라. legacy코드라 무시하지 말자. 나보다 10-20년 오래 개발한 사람들이 짠 코드다. 내공이 다르다. Dirty코드라고 엎을 생각하지 말자. 그때 당시는 최선이였다. 다 이유가 있는거다. 엎어도 2년뒤면 Dirty코드된다. 연봉협상은 1년에 한번이 아니다 퍼포먼스를 내면 연봉협상은 깔끔. 아닌사람이 말이 많다. 프라이드가 있어야된다. 나도 회사를 선택할 수 있는 실력이 되어야 한다. 블로그에 경험 수기를 올리자. 러브콜 온다. 어줍잖게 사이드잡 하지 말자 야..
Teamcity와 docker Unmet requirements: docker.server.version exist docker.server.osType Contains linux 회사에 기존 프로젝트 중에 메일 기능이 오류가 있는 부분을 수정해달라는 요청을 받았다. 잘 되던 stmp 송신이 잘 되지 않았다. 모든 설정값들을 뒤집어 보기도 했지만, 원인을 알 수 없었다. 관리자 알림 메일기능이여서 Gmail 계정을 새로 파서 연동을 해보았고 잘 해결되었다. 이제 배포가 문제였는데, 이 프로젝트는 docker container로 DB와 애플리케이션이 배포되었고, CI/CD 툴은 Teamcity이다. 내 입장에서는 완전히 처음보는 도구들이였다. docker야 자주 들어보았지만, 기존 회사의 다른 프로젝트들은 Jenkins를 이용했었기 때..
SPRING 의존성 설정 ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); ApplicationContext : 어플리케이션에 설정파일을 불러오는 인터페이스이다. AnnotationConfigApplicationContext : Annocation 기반으로 하는 ApplicationContext의 구현체 중에 하나이다. 인자값으로 @configuration으로 설정한 클래스를 넣는다. 스프링 실행시 기본적으로 실행이 되어야 하기 때문에, main메서드에 추가해주면 될 것이다. @ComponentScan("com.fastcampus.springpractice") @Configuration public class Config { } 스..