엄밀히 이야기 하면 PHP 만 싫어하는게 아니고 동적 언어를 원래 싫어하는데...특히 PHP 는 개인이 홈페이지 만들려고 설계를 체계적으로 하지 않고 즉흥적으로 막 만든다는 느낌이 너무 강해서 싫어합니다. 아래 내용은 저번주에 저희 회사에서 저희 파트원 3명이 한 이야기인데...이런 언어로 억 단위 사용자가 이용하는 사이트를 개발한다는게, 어쩔 때에는 좀 짜증날 때가 있습니다. PHP 에서 DB 질의 결과($row)을 담은 변수를 return 한 뒤 이를 if 에서 empty() 로 결과가 있는지 비교하는데, 기존에는 항상 결과가 1개 이상 있는 것이었는데 이번 패치로 결과가 한 건도 없는 경우가 발생합니다. 결과가 없을 때 true 인가요, false 인가요? 정답은 PHP 공식 문서에 있습니다. ht..
이 글은 https://okky.kr/article/538711 에서 제가 답변한 내용을 기반으로 작성되었습니다. 해당 이미지는 링크의 게시물에서 가져왔습니다.원글의 작성자께서 문제가 있다고 판단되시면 원글에 이의를 제기해주시면 확인 후 조치를 취하겠습니다. Eclipse 의 Maven 편집기를 사용하면 pom.xml 을 바탕으로 Dependency Hierarchy 을 간편하게 확인할 수 있습니다. 여기서 중복되는, 혹은 충돌하는 라이브러리를 제거할 수도 있습니다. 하지만, JetBrains 의 IntelliJ 을 실행해서 pom.xml 을 열어보면 이러한 기능이 눈에 띄질 않습니다. 그래서 충돌이 발생하는 라이브러리가 존재할 경우 확인이 쉽지 않고 이를 제거하기 위해서도 수작업을 해야 합니다.하지만,..
보통 많은 운영 환경에서 Web Server(정적인 파일 서비스)와 WAS 을 연동해서 서비스하는 경우가 많습니다. Tomcat 으로 서비스되고 있는 환경에서조차 내부에 경량 Apache HTTPd 가 내장되어 있기 때문에 별도의 Web Server 없이도 괜찮은 속도로 정적인 파일을 서비스 할 수 있지만, 몇 가지 이유(납득되는 것도 있고, 그렇지 않은 것들도 있지만) 때문에 여전히 기존 방식을 이용하는 곳도 많습니다. 개인적으로 생각할 때 가장 납득이 가는 경우는 "파일 업로드" 기능 때문입니다. 업로드된 파일을 다시 사용자가 내려받아야 할 경우라면 파일 원본 그 자체를 잘 보관하고 있다가 다른 영향 없이 다시 다운로드가 가능해야 합니다. 물론 파일 다운로드 시 권한 체크를 정교하게 한다거나 다운로드..
Java 가 Web 개발에서 두각을 나타내면서 WAS(Web Application Server) 라는 용어를 널리 사용하게 만들었습니다. 처음의 의도와 달리 WAS 을 지칭하는 의미는 점차 확대되었고, Java 에서는 Apache Tomcat(이하 Tomcat) 이라는 WAS 가 널리 보급되면서 온라인 상에 유통되는 대부분의 WAS 에 관한 것은 Tomcat 일 정도가 되었습니다. Tomcat 은 Java 로 만들어져 이식성이 좋고, Full Spec 의 J2EE 을 지원하진 않지만 Spring Framework 의 탄생으로 인해 J2SE Servlet 지원 만으로도 Enterprise 급의 프로그램을 개발할 수 있게 되면서 현재까지 널리 사용되고 있습니다. 그래서 Java 에서 Web Page 개발에 ..
Spring 에서 제공하는 RestTemplate 을 이용하면 다른 URL 을 호출하고 결과를 받아오는 코드를 쉽게 작성할 수 있습니다. 기존에는 Apache Commons 의 http 을 많이 이용했으나, Spring 에서 제공하는 RestTemplate 의 사용빈도가 점점 늘어나고 있습니다. 그런데, RestTemplate 을 기본 설정대로 사용하는 경우도 있지만, 추가적인 설정이 필요한 경우가 있습니다. 크게 두 가지라고 생각되는데, 하나는 HttpClient 설정을 별도로 하기 위한 것이고, 다른 하나는 로깅 때문입니다. 어떻게 이 두 가지를 적용하는지 알아보겠습니다. 먼저 설정을 하기 위해 @Configuration 애노테이션을 이용해 Class 을 하나 만듭니다. 그리고 그 안에 RestTem..
Spring MVC 에서는 REST API 을 지원하기 위해 Jackson 라이브러리를 이용하여 response 을 Json 형태로 변경하여 제공하는 기능을 포함하고 있습니다. 또한 @RequestBody 을 이용해 @RequestMapping 으로 선언된 method 의 매개변수로 Json 으로 된 body 을 POJO 로 받을 수도 있습니다. 이러한 처리를 위해 Spring 은 Json 혹은 XML 등의 여러 형태의 값을 자동으로 처리하기 위해 MessageConverter 을 등록해두는데, HttpMessageConverter 인터페이스를 구현한 것을 개발자가 상속받아 변경하여 사용할 수 있습니다. Jackson 은 MappingJackson2HttpMessageConverter 을 제공하는데, 이..
Spring Boot 에서 Json 을 처리하기 위해 Jackson 라이브러리가 기본적으로 의존성 관계를 가지고 내려받게 되어 있습니다. 이를 Gson 으로바꿔서 사용하는 분들도 계시겠지만, Jackson 은 성능이나 기능에서 훌륭한 편이기 때문에 그대로 사용해도 좋습니다. Spring Boot 의 application.properties 에서 Jackson 의 설정을 아래와 같이 일부 할 수 있습니다. [출처] https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html # JACKSON (JacksonProperties) spring.jackson.date-format= # Date fo..
Spring 에서 @Async 을 이용해서 쉽게 비동기 method 을 만들 수 있습니다. 대략 다음과 같이 method 정의를 먼저 할 수 있을 겁니다. @Async public CompletableFuture async(String param1, int param2) { return CompletableFuture.completedFuture(param1 + " : " + param2); } 그리고 이를 다음과 같이 사용할 수 있겠죠. CompletableFuture result = service.async("status", 100); 하지만, 이렇게 그냥 사용할 경우 @Async 는 SimpleAsyncTaskExecutor 을 기본 TaskExcutor 로 이용하기 때문에 async method ..
2019/01/21 - [Programming/기타] - 페이징(Paging)에 대한 이해 - (2) ROW NUMBER 을 이용한 게시물 가져오기 이번에는 MySQL 이나 PostgreSQL 등에서 사용하는 LIMIT 와 MS SQL Server 의 예전 페이징 기법인 TOP 에 대해서 알아보겠습니다. 먼저 LIMIT 는 게시물을 가져오는데 최적의 방법을 제공합니다. 하지만 동일한 LIMIT 라는 이름이라도 사용방법은 사실 좀 다릅니다. 앞선 글에서 ROW NUMBER 을 이용하는 방식에서 설명 드렸듯이 순차적으로 내용을 정렬한 뒤 여기에 번호를 붙여서 번호 범위를 이용해서 게시물을 가져온다고 하였습니다. 하지만, 이렇게 번호를 붙이는 것은 LIMIT 와 같은 기능을 가지고 있지 않을 때의 이야기입니다..
2019/01/21 - [Programming/기타] - 페이징(Paging)에 대한 이해 - (1) 페이지 번호를 생성하자. 이번에는 DBMS 에서 ROW NUMBER(오라클의 rownum, SQL Server 의 ROW_NUMBER(), MySQL 의 변수를 이용한 번호 등)을 이용한 게시물 가져오기에 대해서 설명하겠습니다. ROW NUMBER 는 쉽게 말해 출력되는 결과물에 순차적인 번호를 달아주는 기능입니다. 필요할 때 언제든지 번호를 달아달라고 시스템에 요청을 하면 사용자에게 보내줄 데이터에 번호를 달아주게 되죠. 문제는 이 번호를 달 때 정렬이 되어 있지 않다면 번호를 엉뚱하게 달 수도 있고, 번호를 단다는 것 자체가 시스템에 부하를 줘서 정말 많은 게시물을 가지고 있는 경우 특정 영역의 게시..
- Total
- Today
- Yesterday
- 프로젝트 규모
- NoSQL
- proxmox
- 내장 WAS
- git
- OracleJDK
- messages.properties
- KDE
- docker
- Redmine
- 워드프레스
- Nas
- Phabricator
- paging
- 엘지
- SI
- 시니어 프로그래머
- Spring MVC
- jooq
- manjaro
- 외장 WAS
- java config
- 클라우드플레어
- Spring Boot
- RestTemplate
- boot
- couchbase
- 도입기
- 페이징
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |