Windows환경에서 Rust빌드시 아래와 같은 에러가 발생
the msvc targets depend on the msvc linker but `link.exe` was not found
아래의 명령어로 GNU방식으로 변경해준다.(실제 Windows환경이지만 리눅스 GNU개발하는 환경으로 셋팅)
rustup default stable-x86_64-pc-windows-gnuWindows환경에서 Rust빌드시 아래와 같은 에러가 발생
the msvc targets depend on the msvc linker but `link.exe` was not found
아래의 명령어로 GNU방식으로 변경해준다.(실제 Windows환경이지만 리눅스 GNU개발하는 환경으로 셋팅)
rustup default stable-x86_64-pc-windows-gnuJava에서 Optional이라는 기능이 존재합니다.
그런데 제대로, 문제없이, 읽기 좋은 소스로 작성하려면 생각보다 조금 신경 써야할 부분들이 있습니다.
- 실제 프로덕트 코드에서 개발자들이 실수하는 경우를 많이 봤음 << 중요, 실수가 잦다면 코드 퀄리티를 관리해야하는 관리자 입장에서는 프로젝트 컨벤션으로 사용 금지로 해야할 수도 있음
그리고 개인적으로는 fast-fail형태가 맞다고 생각하기에 파라미터 검사(데이터 검사)를 앞쪽에서 잘 해야한다고 생각합니다.
이후 코드는 최대한 읽기 좋게 작성하고, 성능을 생각하면 불필요하게 컴퓨팅 파워를 쓰는 코드 자체를 없애는게 맞다고 생각합니다.(임베디드 개발했던 경험을 떠올려봐도.... 컴퓨터에게 불필요한 일 자체를 시키면 안됨)
검색해서 메모 목적으로 몇가지 참고 내용을 작성해둡니다.
Java Optional의 API Note를 보면 Optional을 개발한 Brian Goetz도 의도한 형태로 사용하지 않는 경우가 많아서인지 Note까지 작성해뒀습니다.(사실 언어 설계자가 의도한데로만 사용하도록 개발/설계해뒀으면 하는 아쉬움이..)
1. Java Optional API Note

2. 기타 참고 링크들
| apple in app purchase(IAP)를 API로 가져오기 (0) | 2022.09.08 |
|---|---|
| java 11 vs 17 performance (0) | 2022.09.02 |
| 간단한 월 달력 생성 프로그램 (0) | 2022.05.10 |
| Java의 java.time.LocalDateTime 관련 몇가지 사용 예 (0) | 2022.04.15 |
| java stream을 이용한 정렬 (0) | 2022.01.10 |
twitch drops 서비스를 개발하기 위한 내용을 간단히 정리합니다.(메모 목적이라서 생략된 부분이 많습니다.)
이미 원신(링크) 등에서 사용하고 있어서 참고하였습니다.


| 이미지 리사이징 관련 정리(ing) (0) | 2023.05.09 |
|---|---|
| headless CMS 정리 - 작성 중 (0) | 2022.08.05 |
| 개발 직군 Roadmaps (0) | 2022.04.27 |
| 채용시 나의 기준 (0) | 2021.11.05 |
| 이메일을 이용한 업무처리 방법(논리적인 메일 커뮤니케이션 방법 등) (0) | 2021.08.10 |
아직 Jsp를 쓰는 프로젝트에서 Maven multi module 프로젝트를 셋팅했는데, JSP를 못 찾는 문제가 발생했습니다.
IntelliJ Working directory에 $MODULE_WORKING_DIR$ 를 셋팅해주면 문제가 해결됩니다.
- 참고 링크
샘플

| spring boot admin 적용시 client호출에 인증처리를 위한(actuator) 방법 (0) | 2020.08.28 |
|---|---|
| Spring boot 에서 JSP의 제약 (0) | 2019.05.26 |
| spring boot 핫스왑 적용방법(with springloaded) (0) | 2019.04.16 |
| spring boot embedded tomcat 사용시 특정 주기마다 느려지는 원인파악 디버깅 메모 - 1 (0) | 2016.07.04 |
| 파일업로드 Rest full 기능 샘플 소스 (0) | 2016.06.28 |
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.util.Locale;
/**
* 월 달력 생성기
*
* @author
*/
public class Test {
public static void main(String[] args) {
final int addMonth = 2; //2개월 후 데이터 생성
DateTimeFormatter fmtMonth = DateTimeFormat.forPattern("yyyyMM");
DateTimeFormatter fmtDay = DateTimeFormat.forPattern("yyyyMMdd");
//대상 월
DateTime now = DateTime.now();
String strTargetMonth = now.plus(Period.months(addMonth)).toString(fmtMonth);
DateTime dt = DateTime.parse(strTargetMonth, fmtMonth);
int startDay = dt.dayOfMonth().getMinimumValue();
int endDay = dt.dayOfMonth().getMaximumValue();
String strDay;
String dayOfWeek;
//boolean isHoliDay = false;
for (int i = startDay; i <= endDay; i++) {
strDay = strTargetMonth + StringUtils.leftPad(Integer.toString(i), 2, "0");
dayOfWeek = DateTime.parse(strDay, fmtDay).dayOfWeek().getAsShortText(Locale.KOREA);
System.out.println(String.format("%s | %s", strDay, dayOfWeek));
}
}
}| java 11 vs 17 performance (0) | 2022.09.02 |
|---|---|
| Java Optional에 대한 생각 (0) | 2022.07.12 |
| Java의 java.time.LocalDateTime 관련 몇가지 사용 예 (0) | 2022.04.15 |
| java stream을 이용한 정렬 (0) | 2022.01.10 |
| 대용량 처리시 부하분산을 위한 데이터 분할 처리(간략) (0) | 2021.12.10 |
| 크롬에서 fiddler로 트래픽 캡쳐가 안될때 (0) | 2021.01.25 |
|---|---|
| 스크린 캡쳐 프로그램 ShareX- 무료 (1) | 2020.09.12 |
Spring에서 예외 핸들링 중 특정 예외에서 어떤 경우에는 json으로 응답하고 어떤 경우에는 유저에게 에러 페이지를 보여줘야하는 경우가 존재합니다.
이런 경우 간단히 처리하는 예제 소스입니다.(더 좋은 방법이 있을 수 있지만 고민이 필요)
/**
* 최상위 예외(Exception) 처리
* - 에러로그를 남겨서 담당자에게 이메일 발송(logback에 설정 됨)하여 알 수 있도록 하기 위함
* - 유저에게 에러 페이지를 보여주기 위해서 ModelAndViewDefiningException를 사용(DispatcherServlet에서 view 처리됨)
*
* @param ex
* @return
*/
@ExceptionHandler(Exception.class)
public ResponseEntity<Object> RootException(Exception ex) throws ModelAndViewDefiningException {
errorLog("RootException", ex);
log.debug("exception class ===> {}", ex.getClass().getSimpleName());
if (CommonUtil.isAjaxReq(HttpRequestUtil.getCurrentRequest())) { //ajax라면 json으로 응답
RtnVO rtnVO = new RtnVO();
rtnVO.setErrorCd(ErrorCd.SYSTEM_ERROR.name());
rtnVO.setMsg("서버 에러가 발생했습니다. 담당자에게 문의하세요");
return new ResponseEntity<>(rtnVO, ErrorCd.SYSTEM_ERROR.getStatus());
}
ModelAndView mav = new ModelAndView();
mav.setViewName("forward:/error/serverError"); //ajax 요청이 아니라면 유저에게 에러메시지 페이지를 보여줌(/error/serverError는 에러 페이지 랜더링용 공용 URL)
throw new ModelAndViewDefiningException(mav);
}
참고로 DispatcherServlet.java에서 ModelAndViewDefiningException 처리가 되어있다.

| JPA N+1 문제 해결과 관련 Spring Data JDBC에서 기능 추가 예정과 관련 (0) | 2023.09.01 |
|---|---|
| spring custom valid 어노테이션으로 업로드 파일의 확장자 및 유효성 검사 (0) | 2023.07.31 |
| mysql + mybatis + Spring 조합에서 데이터 존재하는지 판다는하는 소스와 쿼리(성능 감안) (0) | 2022.04.08 |
| 자주 사용하는 Spring valid관련 내용들 - 메모 (0) | 2022.04.05 |
| logback file appender 설정 (0) | 2021.08.26 |
내부 개발자들의 intelliJ 교육 목적으로 작성한 내용의 요약입니다.
java Stream을 intelliJ를 이용해서 디버깅하는 방법입니다.
샘플 소스
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
/**
* 내부 개발자 교육
* - 참고: https://www.youtube.com/watch?v=BeJu9bMPLGU
*
* @author
*/
public class StreamDebuggerExample {
public static void main(String[] args) {
int[] result = IntStream.of(10, 87, 97, 43, 121, 20).flatMap(StreamDebuggerExample::factorize).distinct().sorted().toArray();
System.out.println(Arrays.toString(result));
}
private static IntStream factorize(int value) {
List<Integer> facors = new ArrayList<>();
for (int i = 2; i <= value; i++) {
while (value % i == 0) {
facors.add(i);
value /= i;
}
}
return facors.stream().mapToInt(Integer::intValue);
}
}
아래는 해당 디버깅 기능을 간단히 동영상으로 녹화한 내용입니다.
| 자주쓰는 intellij 단축키(intelliJ VS Eclipse) (0) | 2020.02.12 |
|---|---|
| intellij에서 builder 등을 포맷터 적용시 줄 바꿈에 대해서 wrap처리(Chained mehtod calls 'Wrap') (0) | 2019.09.06 |
| intellij에서 maven을 사용할 때 어떤 dependencies인지 검색하고 싶을 때 (0) | 2019.09.06 |
| intelliJ 개발을 위한 기본 셋팅(캐릭터셋 등) 및 자주 사용하는 플러그인 등 (0) | 2019.06.13 |
| intelliJ에 golang 개발환경 셋팅(windows) (0) | 2019.06.09 |