JAVA에서 이미지의 메타데이터에 접근할 수있는 표준 라이브러리는 현재 없다.(JAVA8 기준) 하지만 외부 라이브러리를 통해 편리하게 메타데이터를 가져올 수 있다. 아래 링크를 참고하자. https://drewnoakes.com/code/exif/ 링크를 참조하면, directory와 tag라는 것을 통해 이미지의 메타데이터에 접근할 수 있음을 확인할 수 있다. 다만 주의해야할 것이 있는데, Exif는 JPEG파일에서만 제공된다는 점이다. 아래 예제는 File Class 형태의 이미지파일에 대한 모든 메타데이터를 출력하는 예제이다. Metadata metadata = ImageMetadataReader.readMetadata(file); for (Directory directory : metadata...
이런 간단한 문제로 며칠을 헤맸다는 사실이 매우 창피하지만, 같은 실수를 반복하지 않기 위해 삽질로그를 남긴다. Spring boot & thymeleaf로 다중 파일업로드를 처리하려면, 몇가지 간단한 절차만 수행하면된다. 1. .properties 설정 2. html 개발 3. java 개발 1. .properties 설정 설정을 하지 않아도 상관 없지만, application.properties 파일을 열어 아래와 같이 추가해주면 좋다. multipart.maxFileSize=5MB multipart.maxRequestSize=5MB 최대 허용 파일 크기를 5MB로 넉넉하게 잡은 것이다. Default값은 1MB이다. 2. html 개발 (화면 개발) 태그를 이용하여 개발하면 된다. 다중 파일업로드를..
나만의 웹 앱을 만들면서 클라우드를 활용해보고 싶어서, AWS를 가입해보기로 했다.(아마존 웹 서비스(영어: Amazon Web Services; AWS)는 아마존닷컴이 제공하는 각종 원격 컴퓨팅 서비스(웹 서비스)이다. 출처: 위키피디아 해당항목) 가입은 상당히 간단하다. 먼저 AWS 홈페이지에 접속한다. (https://aws.amazon.com) 홈페이지에 들어가서, 우측 상단의 무료 계정 생성하기를 클릭한다. 아마존 웹 서비스는 가입 후 1년간(750 시간) 프리티어 서비스를 제공한다. (일정 사용량 미만이라면 사용료를 받지 않는다.) 750시간이면, 1년동안 내내 켜놔도 되는 넉넉한 시간이다.(두개 이상의 제품을 사용한다면 이야기가 달라지겠지만...) 위와 같이 이메일을 입력한 후, "새 사용자..
Spring Boot에서 Mockmvc를 활용하여 단위테스트를 수행하는 도중.. JUnit을 만들고나서 난관에 봉착했다. (참고: 인텔리J에서 JUnit생성하는 법) 분명히 의존성 추가도 잘했는데.. @SpringApplicationConfiguration 어노테이션을 인식하지 못하는 것.. 아래 그림을 참고하면 된다. 한참을 구글을 찾아 헤매다가 해답을 발견한 것이.. Spring Boot 1.4부터 등장한 @SpringBootTest 어노테이션이다. 벌써 결론부터 내버렸지만, 좀 더 자세히 설명을 하자면... 123456@RunWith(SpringJunit4ClassRunner.class)@SpringApplicationConfiguration(TestApp.class)@IntegrationTestp..
부제: 인텔리J에서 JUnit 생성하기. 인텔리J에서 단위테스트 수행하기. Spring에서 효과적인 단위테스트 수행을 위해서는 JUnit을 사용하면 좋다. 이 포스팅에서는 Intelli J(인텔리 J)에서 JUnit을 생성하는 법을 알아보도록 하겠다. 1. build.gradle 파일에 의존성 추가 위 그림과 같이 의존성을 추가한다. 2. JUnit 생성 테스트할(JUnit을 생성할) 컨트롤러로 이동하여, Class Name에 커서를 올린 후 Alt+Enter를 누르면 위 그림과 같이 메뉴가 등장한다. Create Test를 누르면 아래와 같은 창이 팝업된다. 필요한 SuperClass가 있으면 기입하거나, generate하고 싶은 메소드를 체크하여 하단의 OK를 누르면 JUnit이 생성되는 것을 확인할..
1. 옴닉의 반란 - 오버워치 스토리의 과거 이야기(솔저 76와 리퍼가 모리스, 레이예스였던 시절)을 토대로 한 아케이드 게임이 추가되었습니다. - 신규 스킨, 하이라이트 연출, 감정표현, 스프레이, 아이콘이 추가되었습니다. 2. 경쟁전(점령전에서도 점령이 얼만큼 진행되었는지를 기준으로 승부) - 하나무라, 볼스카야 인더스트리 등의 맵에서 무승부가 많이 줄어들 것으로 보이네요. (2칸까지 먹었는데도 못뚫었을 때 허탈함이 많이 줄어들듯..) 3. 영웅 3.1 루시우 - 공격력 25% 증가, 투사체속도 20% 증가 - 우클릭으로 적을 밀칠 때, 수직방향이 고려되어 밀려남. - 루시우의 노래 범위 30m → 10m - 치유의 노래 치유량 30% 증가, 자가 치유량 25% 감소 - 벽 탈 때 이동속도 20% 증..
기술면접에 대비하여 정리한 내용 중, 하나의 포스팅으로 제작하기에는 내용이 짧거나, 상세히 작성이 어려워(나의 능력부족) 포스팅으로 작성하지 못한 질문 모음. 1. Servlet에 대해 답변해 보세요. Servlet: 자바 플랫폼에서 웹 앱을 개발할 때 사용하는 핵심기술. 컨트롤러와 뷰의 역할 분담이 가능해진다. 자바 API를 모두 사용할 수 있으며 다양한 서버 환경에서 실행 가능하다. 스레드를 기반으로 한다. Servlet Container: Servlet을 서버에서 실행하기 위한 서버 프로그램(서버는 서블릿 자체를 직접 실행할 수 없기 때문). JVM을 내장하고 있다. 2. 서블릿의 라이프 사이클에 대해 설명하세요. init(): 컨테이너는 서블릿 인스턴스를 생성한 다음 init() 메소드를 호출한다..
TDD(Test Driven Development) 관련 내용 정리 테스트의 중요성 버그는 일찍 발견할 수록 (시간적, 경제적)비용이 적게 든다. 게다가 내가 직접 버그를 발견한 경우가 아니라면(예를들면, QA가 발견할 경우) 비용은 더욱 커지게 된다. 내가 만든 소스코드라도 한참이 지난 후에 다시 보면 코드의 동작 의도가 잘 보이지 않기 때문이다. 한편, 테스트를 중요시하지 않는 개발자는 프로그램을 완성한 후 힘들게 문서를 작성하고 주석을 단다. 하지만 이는 시간이 지나면 낡은 내용이 되어버린다.(문서화와 주석달기가 중요하지 않다는 뜻이 아니다.) 반면, 잘 작성된 단위테스트는 특정 라인의 코드가 어떤 역할을 하는지 나타낼 수 있다. TDD에 대한 개요 테스트 주도 개발(Test Driven Devel..
1. 신규 영웅 추가: 오리사(돌격) - 탄창수가 많고 집탄율이 괜찮은 무기를 지녔으며, 방벽스킬과 함께 괜찮은 체력을 가지고 있어서 사실상 필수픽이 되어가고 있는 라인하르트의 역할을 조금은 나누어 가질 수도 있을 것 같네요. 2. 맵(66번 국도) - 공격팀이 화물을 첫번째 체크포인트까지 밀었을 때, 추가 시간이 60초 더 증가했습니다. 66번국도는 1차 체크포인트에서 2차체크포인트까지 거리는 그리 멀지 않지만, 수비측에서 공격할 수 있는 루트가 다양해서 공격측이 좀 힘겨운 맵이었던 것 같은데... 공수 밸런스가 좋아질 것 같습니다. 3. 영웅 3.1 아나 (공격력 80 → 60) - 이번 4시즌도 사실상 아나 위주의 메타라서 그런지 또 너프가 됐습니다. 체력이 200인 영웅을 이제는 4방에 죽일 수 ..
기술면접에 대비하여 정리한 내용 중, 하나의 포스팅으로 제작하기에는 내용이 짧거나, 상세히 작성이 어려워(나의 능력부족) 포스팅으로 작성하지 못한 질문 모음. 1. DB에서의 Commit와 Rollback 이란? Commit: 하나의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산 Rollback: 하나의 트랜잭션 처리가 비정상적으로 종료되어 DB의 일관성을 깨뜨렸을 때, 모든 연산을 취소(Undo)시키는 연산. 같이보면 좋은 글: 트랜잭션에 대하여(클릭) 2. DBMS에 대해 설명해보시오. 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용프로그램이다. 3. PK, FK, E..