[JavaScript] 미디어쿼리(Media Query) vs 유저 에이전트(User Agent) 모바일 디바이스 감지하기
·
Development/JavaScript
최근에 서비스 중인 웹 페이지를 모바일 디바이스에 맞게 변형하는 작업을 진행했다.기존 메인 페이지를 모바일 환경에 다 담지 못하므로, 모바일용 메인 페이지를 만들고,게시판도 모바일 디바이스에서 유연하게 사용할 수 있도록 UI를 전면 수정했다. 전반적인 디자인은 웹 디자이너께서 해주셨지만 이를 적용하는 건 나의 몫이었다😂웹 화면과 모바일 화면을 구분하기 위해서 사용한 방법은 미디어 쿼리(Media Query)였다.미디어 쿼리는 CSS에서 화면의 크기나 기기의 특성에 따라 다른 스타일을 적용할 수 있게 해주는 기능이다.즉, 화면의 크기에 따라 달라지는 "반응형 웹(responsive web)"을 만들 수 있다. 미디어 쿼리는 @media 으로 CSS에 작성하면 된다.@media (조건) { /* 조건을 ..
[QueryDSL] BooleanExpression과 BooleanBuilder의 모든 것
·
Development/Java
JPA, QueryDSL을 사용하는 프로젝트에서 BooleanExpression을 이용해서 where절을 자주 쓰곤 했는데,최근에 소스코드 보안점검을 해보니 '널(Null) 포인터 역참조가 발생할 수 있다'고 지적 받은 코드가 있어서BooleanExpression에서 널 포인터 역참조를 피하려면 어떻게 해야하는지,BooleanExpression과 BooleanBuilder는 어떤 차이가 있고 어떤 상황에서 써야하는지 알아보려고 한다.BooleanExpression과 BooleanBuilder는 QueryDSL에서 where절의 조건을 표현하는 조건 표현식이다. 사실 query문에 where문을 직접 입력해도 된다!query.where(qUser.age.goe(18));하지만 이렇게 쓰지 않는 이유는 조건..
[CSS] img 비율 유지하면서 크기 줄이기(!important)
·
Development/CSS
기존 웹페이지의 일부를 반응형으로 만드는 작업을 하고 있다..(이거까지 하게 될 줄 몰랐지)아무튼!CSS는 디자이너 분이 해주셔서 내가 건들일 없다고 생각했는데,테스트 페이지로 구조만 잡아주시고실제 소스코드에 적용하는 건 내가 하다보니까CSS를 수정하는 경우가 굉..장히... 많다(!!!) 게시판에 이미지를 업로드 한 경우이미지 크기를 반응형으로 맞추는 작업을 진행했다. 가로 길이를 줄이면 반응형으로 모바일 화면으로 전환되는데,이미지 크기는 변하지 않다보니 이렇게 튀어나오는 현상이 발생했다. .table-scrollable img { max-width: 100%; display: block; } 튀어나온 이미지를 해결하기 위해서 max-width를 조절해보았다.max-width를 100%로..
[QueryDSL] Expressions.dateTemplate로 SQL 구문 만들기
·
Development/Java
QueryDSL로 날짜별 생성된 데이터를 세는 쿼리를 구현했다.그런데 내가 생각한 것과 데이터 개수가 다르게 나오는 것이다...(왜그럴까)1. 문제 상황Tuple results = queryFactory.select(qStatsTable.regDt, qStatsTable.count()) .from(qStatsTable) .orderBy(qStatsTable.regDt.desc()) .groupBy(qStatsTable.regDt) .limit(1) .fetc..
[Apache POI] Iterator로 읽은 빈 셀 CellType.BLANK로 예외처리하기
·
Development/Java
Apache POI를 이용해서 엑셀 파일을 읽어오는 기능을 구현했는데,기능 개발을 할 때는 되다가 테스트를 하니 ResponseDto에서 값을 가져오지 못하는 에러가 발생했다.Dto에서 디버깅을 해보니 값은 들어있어서 xlsx에서 row를 iterator로 읽는 과정에서 문제가 있다고 판단했다.1. 문제 상황try (InputStream inputStream = file.getInputStream()) { Workbook workbook = new XSSFWorkbook(inputStream); Sheet sheet = workbook.getSheetAt(0); Iterator rowIterator = sheet.iterator(); rowIterator.next(..