본문 바로가기

웹개발

(14)
Spring 실행 환경변수와, 빌드할 때 어떤 환경의 resources 를 포함시킬지는 다르다. 저 두개는 다른 문제다 예를 들어 Intellij IDE 에서 active profile로 local 을 주면 gradle 로 스프링을 실행시킬 때 -Dspring.active.profile=local 과 같은 시스템 변수가 붙을 것이다. 하지만 만약 build.gradle의 sourceSet에 resources-dev만 포함시키도록 되어있으면 결과적으로 active profile에 따른 환경 분리를 할 수 없게된다.
Proxy를 할 땐 request 객체를 모두 복사하자. 케이스 바이 케이스지만 proxy를 할 때 request 객체의 정보를 생략하고 요청 자체만 proxy해서 문제가 발생했다. 필요한 정보가 무엇인지 파악해서 새로운 request에 해당 정보를 삽입하는 노하우가 필요하다.
takes 0 ms class sbt.internal.inc.MappedVirtualFile cannot be cast to class java.io.File (sbt.internal.inc.MappedVirtualFile is in unnamed module of loader sbt.internal.MetaBuildLoader @1d296da; java.io.File is in module java.base of loader 'bootstrap').. Scala Play라는 웹 프레임웤에 Quill을 사용해서 H2에 연결하려다 제목과 같은 에러가 발생했다. 여러 이유가 있을텐데, 적어도 내 경우는 h2 tcp 연결이 되지않는 문제였다. (정확한 원인을 파악하려고 코드를 뜯으려했으나.... Quill git lab에서 아직 리팩토링 덜됐으니까 보지말라고했다.) dataSource.url = "jdbc:h2:tcp://localhost/~/test;DB_CLOSE_DELAY=-1" 이 설정값을 dataSource.url = "jdbc:h2:mem:defaulth2;DB_CLOSE_DELAY=-1" 이렇게 바꿔주면 에러가 안난다. defaulth2는 데이터베이스 이름이니까 얼마든지 바꿔도 된다.
[React] Module not found: Can't resolve '@material-ui/core/Styles' in 'Project/src' Module not found: Can't resolve '@material-ui/core/Styles' in '/home/ubuntu/SMLM_frontend/src' Styles와 style은 다르다. vscode에서 작업할 때는 알아서 해당 파일을 찾아줬기 때문에 문제가 없었는데 ubuntu에서 작업할 때는 해당 모듈이 없어서 에러가 떳다. 깃은 대소문자를 체크하지 않기 때문에, git pull을 받았어도 git origin에 있는 파일과 대소문자가 다를 수 있다. 이를 꼭 체크해야한다는 걸 깨달았다.
redux-saga와 axios를 쓸 때 response가 null이 되는 현상 export const getPostsSortByLatest = ({ postsPerPage, pageNumber }) => client.get(`/boards/sort-by/create_datetime?page=${pageNumber}&page_size=${postsPerPage}`); export const getPostsSortByLatest = ({ postsPerPage, pageNumber }) => { client.get(`/boards/sort-by/create_datetime?page=${pageNumber}&page_size=${postsPerPage}`)} 위의 두 함수는 확연히 다르다. 문법적으로 {} 이거 하나 차이인데... 결과는 많이 다르다. 위의 함수를 호출하면 null이 나..
[Spring]Spring JPA의 1차 캐시는 얼마나 이득을 줄 수 있을까. Spring JPA는 1차 캐시를 사용한다. 1차 캐시는 EntityManager 단위로 생성되기 때문에 EntityManager와 함께 사라진다. 사용자의 Request마다 EntityManager가 생성되고, 그 요청을 수행하면 소멸되기 때문에 1차 캐시의 Life cycle은 Transaction과 일치한다. 즉 1차 캐시를 사용하면 하나의 Transaction 내에서만 이득을 볼 수 있다. 그 성능이 얼마나 좋은지 간단하게 테스트 해본다. 이런 식의 데이터가 약 500번까지 있다. 이번 실험에서 이 500개의 데이터를 조회함으로써 1차 캐시의 성능을 측정할 것이다 package hellojpa; import javax.persistence.EntityManager; import javax.pers..
R53의 메인 NS(네임 서버)에 다른 DNS를 넣었을 때 발생하는 일 SDP라는 학회에서 개발자로 활동하고 있다. 웹 어플리케이션을 개발하고 배포하던 중 DNS와 관련된 에러가 떴다. 자력으로 해결할 수가 없어서. AWS 오픈 카톡방에 계신 한 고수분께 도움을 구해서 해결했다.(ㅠㅠㅠ 친절하신 분...) 아래 글은 팀원들과 공유한 내용이다. ===== Route53 장애와 관련된 이야기 ===== 위의 것이 저희 원래 Route53(이하 R53이라 칭함) 설정입니다. sdpglobal.org의 NS가 ns4.wixdns.net 으로 되어있습니다. 이게 장애를 해결한 후 R53 설정입니다. 주목해야할 점은 sdpglobal.org 에서 유형이 NS(NameServer)로 된 행입니다. 지금은 awsdns로 정상 설정되어있네요. 저희는 Namecheap으로부터 sdpgloba..
[NodeJS] 로그 남기는 Winston, 그리고 morgan과 결합 프로그래밍을 하면서 장애가 나지 않는 게 가장 좋지만, 그럴 수는 없다. 분명 장애는 나기 마련이다!! 그럴 때 로그가 없다면... 좌절하고 말 것이다. 에러가 난 원인을 파악할 수 없기 때문에 당장 문제를 해결하기도 어려울 뿐더러 재발 방지도 힘들기 때문이다. NodeJS에도 Winston이라는 로그 모듈이 있다. 가장 많이 쓰인다. 프로젝트는 아래 프로젝트를 사용한다. 청소년이 참여적으로 문학을 하길 바라는 마음으로 만들고있는 프로젝트다. 관심있는 분은 함께 해 주시라! https://github.com/JaeMiGarden/MunhakMap JaeMiGarden/MunhakMap Contribute to JaeMiGarden/MunhakMap development by creating an acco..
[Spring] Annotation을 알아보자 - 2. Annotation은 어떻게 처리될까? 이번 글은 https://medium.com/@jintin/annotation-processing-in-java-3621cb05343a의 도움을 많이 받았습니다. 1. 우선 Class나 Methods, parameters 혹은 Annotation의 Annotation에 따라 Annotation Class를 만든다. 2. Annotation Parser Classes를 생성한다. 3. Project에 Annotation들을 추가한다. 4. Compile을 시작하고 Annotation parser가 Annotation을 관리한다. 5. 자동 생성된 클래스들이 build 폴더에 추가된다. 예를 들어봅시다. @Controller // Controller Annotation이 있으면 관련 객체를 생성해서 Spri..
[Spring] Annotation을 알아보자 - 1. 기본 개념과 직접 해보기 스프링에 입문한 Jay는 역시나 스프링 내부구조를 뜯어보는 것에 흥미가 생겼다. 이 글은 https://dzone.com/articles/how-annotations-work-java를 참고했다. DZone에 재밌는 글이 많다. (실력자 볼 때마다 두근거린다. 마치 2대 600치는 장미란 선수를 볼 때의 헬스 빌런의 마음이랄까) How Do Annotations Work in Java? - DZone Java Let's discuss what annotations are, how they work, how to write custom annotations (with example code), valid scenarios for annotations, and lastly, annotations and AD..