1. docker run에서 에러가 났을 때 환경 - 뭔가 아무 반응이 없는데, 프로그램이 제대로 돌아가지 않음 - docker logs를 통해 로그를 보았으나 여전히 이해가 가지 않을 때 해결법 - docker exec -it + Container ID + /bin/bash - 해당 명령어는 컨테이너 내부에 쉘 접근하는 방법이다 - 컨테이너 내에서 명령어를 실행해보면서 에러를 직접적으로 확인 해볼 수 있다 [링크] 2. docker build에서 에러가 났을 때 환경 - 1번과는 다르게 exec나 attach로 접근이 불가능하다 - Dockerflie을 실행해서 run까지 진행되게끔 변경 - 1번과 같이 docker exec를 통해 컨테이너 내에서 직접 명령어를 실행해볼 수 있다
환경 - Spring Security를 설치함 - Restful API이며 외부에서 axios로 로그인 api 호출 - 로그인 정보를 세션에 저장 - 로그인 api 마지막까지 세션에 정보가 저장되어 있음 - 그러나 로그인 정보를 가져오는 api에서 세션에 접근하니 값이 존재하지 않음 - 개발자도구 - Network탭을 통해 헤더에 Set-Cookie 부분에 노란색 warning 아이콘이 나타남 - warning 아이콘을 마우스를 가져다대니 Set-Cookie header didn’t specify a “SameSite” attribute 문구가 존재 해결법 1. axios를 호출할 때 withCredentials 옵션을 추가 [링크] [React] axios 의 withCredentials django ..
1. 비밀번호 암호화 - 단방향 암호화: DB 해킹과 소스코드 해킹에 성공해도 비밀번호가 무엇인지 알아낼 수 없다. 2. 로드밸런싱 - 여러 서버에 같은 프로그램을 실행되는 환경에서 접속자마다 부하를 방지하기 위해 적절하게 서버와 연결 시켜주는 서비스 3. git branch - 특정 홈페이지의 리뉴얼을 위해 소스코드를 개발 중 갑자기 라이브 서비스 중인 해당 홈페이지에 문제가 있다는 연락을 받았다 - 리뉴얼 개발 중인 소스코드를 또 다른 브랜치로 빼두고 main 브랜치로 다시 이동해 문제를 해결한다 4. CORS - RESTful API에서 api가 호출 가능한 도메인을 제한 - 특정 예제 프로젝트에서 무조건 오픈하는 방식으로 하는 경우가 있는데 실제 라이브서비스까지 생각한다면 자세히 조사해야한다고 생..
Spring Boot의 장점 - Java가 컴파일 언어라 문법 에러를 잡아줌 - Bean 개념(일종의 싱글톤같은 느낌이라고 볼 수 있다) ㄴ 코드 구조 단순화, 단위 테스트 단순화 - Java 관련 검색시 에러 해결법, 라이브러리가 많다 단점 - Java가 인터프리터 언어 입장에서 봤을 때 쓸데없다고 느껴지는 코드들이 있다 - 가벼운 프로젝트를 만들기에는 따져야 할게 많아서 코드양이 많아서 적합하지 않다 - 공부해야할게 많다 일단 이미 필자가 이 회사에 왔을 때 Python으로 간단하게 API를 만들 수 있는 Flask로 웹 개발까지 하는 구조였다. 생각보다 그렇게 큰 규모는 아니였음에도 개발자마다 개발하는 방식이 다르기 때문에, 구조가 중구난방으로 개발이 되었다. 또한 Python은 인터프리터언어이기 ..
필자가 다닌 첫회사는 모든 SQL문을 프로시저화 하는 회사였다. 충분히 납득이 가는 이유였다. 큰 쿼리는 줄수만 1000줄이 넘어가는 경우도 있었기 때문이다. 그러나 프로시저는 그래도 배포에 대한 부담감으로 다가왔다. 배포를 할때마다 변경한 프로시저를 일일이 수정해주는 방식으로 가야했기 때문이다.(게다가 배포 실수 가능성으로 인해 배포 전 백업까지도 해야했다.) 이 과정은 당연히 자동화되어있지 않았고 일일이 사람 손으로 해야했다. 자회사로 오게 된 이유, 쿼리 길이가 그닥 길지도 않았고 프로시저를 만드는 작업이 번거로운 면도 있었기에 쿼리를 소스코드안에 넣는 방식으로 작업을 진행했더니 배포가 훨씬 더 편리해짐을 느낄 수 있었다. 이런 식으로 방법을 바꿔보니 소스코드내 쿼리를 넣는 것에 대한 장점이 확 와..
요약 수동으로 빌드파일만 배포할 경우 문제점 - 빌드 파일이 많을 경우 빠뜨릴 수 있음 - 로컬에서는 되는데 배포하니 안될 수 있음 Docker - 서버 셋팅의 반복작업이 없음(Dockerfile에 작성 가능) - 로컬PC에서 서버와 같은 환경 테스트 가능 docker-compose - Docker 명령어 실행시 사용하는 옵션이 많은 경우 이를 파일화 가능 젠킨스 - 구축이 완료된 상태에서는 Build Now 버튼만으로 쉽게 배포가 가능 - docker와 함께한다면 구축 과정도 훨씬 간단해질 수 있음 - git과 연동하여 git push한 후 Build Now만으로 알아서 pull받고 빌드처리(docker에서)까지 마칠 수 있음 현업에 뛰어들고 나서 개발자로써 일을 하면서 가장 힘들었던 부분은 '배포'였..
리피터에 데이터들을 필터를 넣고 싶은데 처음 해보는 입장에서는 잘 모를 수 있다 DataTable table = ...DataRow[] list = table.Select("ID = 3");repeater.DataSource = list // ??? 이러면 될 것 같은데 안되서 필자 또한 고생이 많았다이럴 땐 DataView를 쓰면 된다 DataTable table = ...DataView view = new DataView(table);view.Filter = "ID = 3";repeater.DataSource = view // OK 여기에서 추가적으로 정렬도 가능하다 DataTable table = ...DataView view = new DataView(table);view.RowFilter = "..
PutMappingRequestBuilder pmrb = client.admin().indices().preparePutMapping(INDEX_NAME);pmrb.setType(TYPE_NAME);pmrb.setSource(json, XContentType.JSON);pmrb.get(); 아무래도 mapping 문자 값을 넣을 때 데이터 타입이 어떤지 입력을 해야되는 것 같다.이전까지는 다들 JSON을 사용하셨을 테니 XContentType.JSON을 넣어주면 된다.