분류 전체보기

필자가 한참 취준생으로 바빴던 시절, 취업공고로 자주 걸려있던 문구가 있다.필수 기술: Mybatis 그 당시에 JPA만 사용해봤던 나였기에 머리위로 물음표가 떠올랐다.Mybatis가 뭔데? 지금이야 Mybatis를 다루는 회사를 다니고 있기도 하고 여러번 만져봤기에 익숙해지긴 했지만 그 당시에는 미숙했다.JPA에 대한 감각이 무뎌지고 있기도하고 과거의 무지함에 대한 반성에 대한 의미로 Mybatis와 JPA의 개념에 대해 다시한번 확고히 짚고 넘어가려고한다. Mybatis, JPA가 무엇이냐!데이터 베이스 접근 계층을 구축해주는 프레임워크다.즉, 자바 프로그램과 데이터베이스 사이를 이어주는 다리 역할을 수행한다.Mybatis와 JPA의 본질적인 기능은 완전히 동일하지만, 데이터를 어떻게 바라보는지에 대..
· JSP
자바 스프링과 JSP를 사용하는 환경에서 기존에 사용되던 자바스크립트를 수정하던 중, 문제가 발생했다.기존에 사용하던 고객분께서 캐시데이터를 삭제하지 않으면, 변경된 자바스크립트가 반영되지 않는 문제였다.관련해서 문제를 알아봤는데, 결과부터 말하자면 브라우저의 정적자원 캐싱 메커니즘이 문제라고한다.브라우저는 매번 서버에서 용량이 큰 JS, CSS파일 등을 받아오면 속도가 느려지기 때문에, 한 번 받은 파일은 컴퓨 로컬 저장소에 저장하고 사용한다고 한다.때문에, 파일명이 동일할경우 과거버전과 수정 후 버전을 브라우저에서 인식하지 못하는 문제가 발생한다. 해결방법은 생각보다도 간단하다.자바스크립트를 호출할때, 자동으로 바뀔 수 있도록 인자값을 넣어주면 된다. 예시) /* 날짜를 통해 버전명을 동적으..
· 기타
웹서핑을 하던 중 재밌는글을 발견했다. https://ko.javascript.info/ninja-code 닌자 코드 ko.javascript.info 위 사이트에서는 '닌자'(고위 개발자)가 되는 방법이 적혀있는 사이트인데,개발자가 가져서 안될 버릇들을 반어법을 사용해 재미있게 풀어놓았다. 유머성이 짙은 글이지만, 실무에서도 도움이 될 만한 내용이 가득하니, 한번쯤 들어가서 읽어보면 좋을 듯 하다.
Spring에서 의존성을 구현할때에는 크게 3가지 방법으로 나뉜다. 1. 필드 주입@Controllerpublic class AutoTestingController extends CommonController { @Autowired private PsyItemVerIF psyItemVerIF; }- 필드에 있는 변수에 @Autowired를 붙여 리플렉션을 통해 의존성을 주입하는 방법이다. Spring은 컨테이너에서 @Autowire가 붙은 서비스타입의 빈을 찾아 의존성주입을 시킨다. 짧고 간단하게 의존성주입을 할 수 있지만 final을 붙일 수 없어 불변성을 보장할 수 없고, private를 통해 직접적으로 접근할 수 있 어 객체지향의 캡슐화 원칙을 위반한다.(유지보수 및 보안성 위험) 대부..
· 클라우드
이제, 태그지정까지 마쳤으니 지정된 컨테이너를 Gcloud에 Push시켜주어야한다. docker push gcr.io/YOUR_PROJECT_ID/spring-app:latest 성공적으로 push를 마쳤다면, 다음과 같은 명령어로 클라우드 배포를 할 수 있다. gcloud run deploy 도커의 이미지명 --image 태그한 이미지명 --allow-unauthenticated --add-cloudsql-instances slq인스턴스명 Cloud가 정상적으로 실행됐다면 CloudRun의 로그를 통해 프로젝트가 보내오는 로그를 받아올 수 있다.
· 클라우드
이제, 클라우드의 설정을 마쳤으니 이번에는 프로젝트를 컨테이너화 시키기 위해 프로젝트의 Docker설정이 필요하다.우선, 자신이 원하는 경로에 맞춰 Docker 파일을 생성시켜주어야 하는데, 필자같은 경우에는 다음과 같은 경로로 설정했다. 그리고서는 Docker파일 및 sql설정을 위한 docker-compose.yml를 작성해주자. DockerfileFROM ubuntu:latestLABEL authors="autohrs"ENTRYPOINT ["top", "-b"]# OpenJDK 17을 기반으로 사용FROM openjdk:17# 작업 디렉터리 설정WORKDIR /app# 현재 프로젝트의 JAR 파일을 컨테이너로 복사COPY build/libs/*.jar app.jar# 8080 포트 노출EXPOSE ..
· 클라우드
이번에는 저번에 만들었던 북길 프로젝트를 클라우드 배포하는 과정을 포스팃할 생각이다.필자의 경우에는 프로젝트를 컨테이너화 시킬때에는 Docker를 활용했으며, cloud run을 통해 프로젝트를 배포할 생각이다.우선, 프로젝트를 컨테이너화 시키기전에 프로젝트를 가동시킬 클라우드의 설정이 필요하다. https://cloud.google.com/?hl=ko https://cloud.google.com/?hl=ko cloud.google.com 구글 클라우드 사이트에 들어가고, 콘솔에 들어간뒤 새로운 프로젝트를 만들어줘야한다.프로젝트ID는 후에 자주사용되며, 프로젝트명이 프로젝트 ID의 생성에 영향을 끼치기 때문에 프로젝트명을 직관성있게 만들어주는게 좋다. cloud run은 서버리스 컨테이너로, 다른 클라우..
· 기타
프로젝트를 진행하던 도중 또 다른 문제가 발생했다. 0 ? #strings.substring(book.des, 0, (book.des.length() > 400 ? 400 : book.des.length())) + (book.des.length() > 400 ? '...' : '') : ''} + '\', \'' + ${book.discount} + '\', \'' + ${book.ISBN} + '\', \'' + ${book.img} + '\')'">북마크위의 코드와 같이 button을 눌렀을 때 인자값을 영역으로 넘겨주려다가 book.des에 ' '나 ()등 특수기호들이 들어가 스크립트가 정상적으로 작동되지 않았다. 후에 인터넷 서핑 및 서적을 통해 찾아보니 위와..
eatingmouse
'분류 전체보기' 카테고리의 글 목록