728x90

  불매운동에 동참하려 해도 SPC가 운영하는 브랜드가 생각보다 많아서 파악하기가 힘들었습니다. 게다가 대체품목도 찾아야 했는데, 예전 일본 불매운동처럼 정리된 곳이 따로 없더군요. 일단 알음알음 기사 보면서 모아봤습니다.

 

<SPC 브랜드 목록.>

<<텍스트>>

파리바게트 , 베스킨라빈스, 던킨도너츠

SPC삼립, 파리크라상, 패션5

빚은 , 샤니, 베이커리팩토리, 쉐이크쉑

에그슬럿, 라그릴리아, 피그인더가든, 퀸즈파크, 시티델리

베라, 라뜰리에, 그릭슈바인, 스트릿

디 퀸즈, 리나스, 한상차림, 잠바주스

파스쿠찌, 커피앳웍스, 티트라, 해피포인트, 더월드바인

<<이미지(로고)>>

SPC 브랜드

*출처 : "https://more-money-no-problems.tistory.com/3753"

 

<대체 상품|브랜드>

SPC 대체 브랜드

*출처: ""SPC 못먹겠다" 불매운동 확산…"가맹점주가 불쌍" 의견도"

SPC 대체 브랜드

*출처: "제빵공장 끼임사고에 분노한 누리꾼들 ‘SPC 불매’"

반응형
728x90

  10년 전에 갱신할 때만 해도 운전면허시험장까지 갔어야 했는데, 이번에는 인터넷으로 끝나버렸습니다.

 

  인터넷으로 신청하는 와중에, 전산화가 잘 된 나라의 위력을 느낄 수가 있었습니다. 금년 여름에 건강검진 받았었는데, 개인정보 조회 동의를 하니 건강검진 내용이 자동으로 조회되어서 적성검사가 자동으로 면제가 되니 너무나 편하네요.

 

  그래도 처음으로 인터넷으로 신청하자니 생각보다 신경 쓰이는 부분이 많아서 생각보다 오래 걸리긴 했습니다. 그래서 다음에 갱신할 때 편하게 할 수 있게 내용을 좀 정리해볼까도 생각해봤는데..., 다음 갱신은 10년 뒤가 되겠죠. 그 때쯤이면 시스템이 더 편리해지면 편리해졌지 불편해질 것 같진 않기도 하고, 그만큼 지금의 시스템이 또 완전히 바뀌어 있을 테니 지금 정리해봤자 아무런 소용이 없겠다는 생각도 들었습니다.

 

  정말 옛말에 10년이면 강산이 변한다 했는데, 현재도 그렇네요.

반응형

'' 카테고리의 다른 글

상속  (0) 2024.02.01
7천억 해먹고, 8천억 더.. 서민 등치는 '빌라왕국'  (0) 2022.09.04
시스템1의 지배  (0) 2022.05.01
728x90

"7천억 해먹고, 8천억 더.. 서민 등치는 '빌라왕국' [뉴스.zip/MBC]"

  전세사기에 당한 피해자들도 엄청나지만, 그 중 보증보험 들어 있는 건들은 다 나라돈으로 들어가게됨.

  1조 5천억원 가량의 세금이 이렇게 사기꾼들에게 낭비될 가능성이 높음.

  진짜 어질어질하다.

반응형

'' 카테고리의 다른 글

상속  (0) 2024.02.01
운전면허증 갱신 끝났다~~~!  (1) 2022.10.11
시스템1의 지배  (0) 2022.05.01
728x90

한국투자증권 OpenAPI를 사용하려고 코딩을 했는데, 정작 실행을 하자 [javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]라는 길고 긴 예외가 발생했습니다.

검색을 해보니 원인이 여러가지일 수 있다고 하는군요. 일단 순서대로 첫번째 것부터 진행해봤는데, 첫번째 걸로 해결이 되버렸습니다.

*해결책 링크 : [Java 에서 ValidatorException 등 인증서 관련 에러 해결 - keystore에 SSL/TLS 인증서를 import 하기]

링크의 내용을 그냥 따라하면 되는데, 다만 [6]번에서 keytool이 어디에 있는지 설명이 없어서 약간 해맸습니다. 혹시나 해서 자바 설치 폴더의 bin 폴더를 살펴보니 거기에 있더군요.(설정에 패스가 잡혀 있으면 문제 없겠지만, 저처럼 안 잡혀 있으면 해당 경로에 맞춰서 입력해주면 됩니다.)

덕분에 잘 실행되어서 계속해서 개발해봐야겠습니다.

반응형
728x90

지난 번 구글 애드센스 수익금이 안 들어오는 문제가 있어서 고생을 했지만, [애드센스 지급 문제 해결 도구]를 통해 드디어 수익금이 들어왔습니다.

이제 다 해결된 줄 알았는데…

어째선지 들어온 금액이 영수증에 있는 금액보다 적습니다.

하나 해결한 줄 알았는데 또 문제가 생기네요.

이 문제도 확인하는데 생각보다 시간이 걸려서, 차후 참고용으로 정리해봅니다.


우리은행 해외송금 확인하기

현재 우리은행의 외환계좌는 송금을 받는데도 건당 5,000~10,000원의 수수료를 가져간다. 문제는 외환계좌에서는 수수료를 제한 후의 금액만 표시되기 때문에 신경 안 쓰면 수수료가 나가는지도 모를 수 있다.

수수료를 확인하려면 아래와 같이 별도의 메뉴를 확인해야 한다.

  1. [앱] → 우하단 햄버거메뉴 → 금융거래 → 외환환전 → 해외송금 → [해외송금 받기]
  2. 조회기간 입력 후 [조회]버튼
  3. 조회된 건에서 아래 화살표 버튼 누르면 수수료 확인 가능.

우리은행 해외송금 수수료 절약하기

송금이 오면 지급대기 상태가 된다. 지급대기 상태인 건을 [계좌입금]버튼을 눌러서 받으면 수수료가 5천원이다. 그런데 이걸 직원이 직접 처리하면 수수료가 1만원이 된다. 그렇기 때문에 직접 처리하면 수수료를 50%나 아낄 수 있다.

하지만 언제 도착하는지 알 수도 없는데, 계속 앱을 붙들고 있을 수도 없는 노릇이다. 그럴 때 사용할 수 있는 [송금도착 통지 서비스]가 있다. 서비스를 신청해야 한다고 하는데, 서비스 수수료가 무료라고 하니 팍팍 신청하자.(단, 나중에 바뀔 지도 모르니 신청 전에 나오는 설명문을 확인 바람.)

신청 방법은 아래와 같다.

  • [앱] → 우하단 햄버거메뉴 → 금융거래 → 외환환전 → 해외송금 → [송금도착 통지 서비스]
반응형
728x90

이번에는 @ControllerAdvice입니다. 개인적으로 가장 효율적인 방법이라고 봅니다.


@ControllerAdvice

ControllerAdvice가 모든 컨트롤러에서 발생한 예외를 맡습니다.

예제

<web.xml>

	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

<dispatcher-servlet.xml>

<bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver"></bean>

<ControllerAdvice 클래스>

@ControllerAdvice
public class ExampleAdvice extends ResponseEntityExceptionHandler {
	/**
	 * 로그.
	 */
	private static final Log LOG = LogFactory.getLog(ExampleAdvice.class);

	@ExceptionHandler(Throwable.class)
	public String handleException(final Exception e, Model model) {
		LOG.error("Throwable 예외 기록.", e);
		model.addAttribute("msg", "오류 발생 시 메시지 추가 테스트입니다.");
		return "/cmmn/egovError";
	}

	@ExceptionHandler(ExampleForbiddenException.class)
	public String handleException(final ExampleForbiddenException e, Model model) {
		LOG.error("ExampleForbiddenException 예외 기록.", e);
		model.addAttribute("msg", "오류 발생 시 메시지 추가 테스트입니다.");
		return "/cmmn/egovError";
	}
}

장단점 설명

Controller에 Advice를 줄 용도로 만든 클래스에 [@ControllerAdvice]어노태이션을 붙인다. 클래스 내의 오류 처리 메서드에는 [@ExceptionHandler]어노태이션을 붙인다.

[@ExceptionHandler]어노태이션이 붙은 메서드가 동작하게 하려면 [ExceptionHandlerExceptionResolver]를 반드시 설정해야 한다.(Spring 3.1 이후에 DispatcherServlet에 기본으로 설정되어 있다고 하는데, 동작하지 않을 때는 명시적으로 설정하자.)

만약 특정 컨트롤러에서만 독자적인 오류 처리가 필요한 경우, 해당 컨트롤러 내에 예외 처리 메서드를 작성하고 [@ExceptionHandler]어노태이션을 붙이면 된다. ControllerAdvice의 [@ExceptionHandler]보다 컨트롤러 내의 [@ExceptionHandler]가 우선된다.

장점 : 전체 컨트롤러에서 발생하는 오류를 처리해주는 기능을 클래스 하나로 해결할 수 있다. 오류 로그를 남겨도 좋고, 다른 추가 처리를 해도 좋다. 특정 컨트롤러에서만 독자적인 오류 처리가 필요한 경우 분리시킬 수 있는 것도 장점.

단점 : 별달리 없다.

총평 : 가성비가 좋다. -_-)b

참고

반응형
728x90

이번에는 ExceptionResolver 관련 간단한 정리입니다. 미리 준비되어 있는 ExceptionResolver가 몇 종류 있는데, 개인적으로는 ExceptionHandlerExceptionResolver만 쓸 줄 알아도 충분하다고 봅니다.


ExceptionResolver

DispatcherServlet에 ExceptionResolver를 선언하여 에러 발생 시 해당 ExceptionResolver가 처리하게 하는 방식이다.

예제

<web.xml>

	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

<dispatcher-servlet.xml>

<bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver"></bean>

<Controller 클래스>

	@ExceptionHandler({ IllegalArgumentException.class, ExampleException.class })
	@ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "Some parameters are invalid")
	public void onBadRequestException(final RuntimeException exception) {
		LOG.error("!오류 핸들러가 실행!", exception);
	}

[ExceptionHandlerExceptionResolver]는 예외 발생 시 [@ExceptionHandler]어노태이션이 붙은 메서드가 처리하게 한다.

장단점 설명

ExceptionResolver 클래스는 추상클래스[AbstractHandlerExceptionResolver]를 상속받거나, 인터페이스[HandlerExceptionResolver]를 구현하여야 한다. 두 경우 모두 메서드[resolveException]가 구현되어야 한다.

메서드[resolveException]은 다음과 같은 특징이 있다.

  • 인자로 Exception을 받는다. 예외를 로그에 남기는 등의 처리가 가능하다.
  • 반환형이 ModelAndView다. 이를 통해 출력할 뷰를 제어할 수 있다.

장점 : 로그를 남기는 등 추가 처리가 가능하다.

단점 : 별달리 없다.

총평 : 미리 지원해주는 ExceptionResolver가 몇 종류 있어서, 알아보고 사용하면 된다. 없으면 직접 상속받거나 구현한 클래스를 사용하면 된다. 다만 개인적으로는 ExceptionHandlerExceptionResolver와 @ControllerAdvice 연계가 가장 가성비가 좋다고 생각한다. @ControllerAdvice에 대해서는 다음에 설명한다.

참고

반응형
728x90

구글 애드센스에서 수익금이 지급되었다고 메일이 왔었습니다.

메일 수신한 날짜에서 5영업일 이내에 수익금을 수령하지 못하면 은행에 문의하라고 되어 있는데, 지금까지 수익금이 들어오지 않은 적이 없어서 크게 생각하지 않았습니다.

그런데 정말로 입금이 안 됐습니다!

일단 은행에 문의를 했습니다. 하지만 은행에서는 입금 기록은 물론 반송 기록도 없다고 합니다.(입금이 들어었다가 무언가의 문제로 입금이 거부된 경우 기록이 남는다고 함.)

확실하진 않지만, 최근에 본인확인이 재요청이 와서 그걸 해결하는데 시간이 좀 걸렸었습니다. 아마도 그 기간이 겹쳐서 그런 문제가 생긴 것이 아닌가 싶습니다.

그러면 결국 구글 애드센스에 직접 문의를 해야 한다는 것인데, 이 문의방법을 좀 찾기가 어려워서 시간이 꽤 걸렸습니다.(생각보다 문의 방법을 찾기 어려운데다 필요한 정보를 내가 일일이 찾아서 입력해야 해서 생각보다 시간 소요가 꽤 됨.) 앞으로도 이런 일이 또 있을 가능성이 있어, 다음 번엔 좀 더 빠르게 처리할 수 있게 일단 처리 과정을 기록으로 남겨놓습니다.

이하는 내용을 간략하게 하기 위해 높임말은 생략합니다.


우측 상단의 (?) 아이콘을 클릭하면, [애드센스 지급 문제 해결 도구]라는 게 있다. 그걸 클릭한다.

[지급되지 않음]을 선택하고 [계속]을 누른다.

이 부분이 조금 헷갈리는데, 일단 지급되었다고 메일이 왔었으므로 [지급됨 상태가 표시되지만 받지 못했습니다.]를 선택했다.

[지급 내역을 추적하고 싶다면 이 양식을 작성하여…]부분의 링크를 누른다.

[EFT 또는 은행 송금 결제를 추적하기 위한 SWIFT 코드 사본 요청]이라는 새 창이 열린다.

[결제 번호]라는 걸 입력하라고 나오는데, 이건 다시 지급 메뉴를 확인해야 한다. 메뉴의 [지급]-[결제 정보]로 들어간다.

[거래] 항목이 보인다. 클릭한다.

송금되었단 항목을 클릭한다.

새 창이 열리면서 지불영수증이 뜬다.

[지급/결제 번호]를 찾을 수 있다. 이 번호를 [EFT 또는 은행 송금 결제를 추적하기 위한 SWIFT 코드 사본 요청] 창에서 입력하면 끝!

반응형
728x90

그 전부터 에러페이지 관련하여 한 번 정리하고 싶었는데, 이번에 마침 관련 업무를 할 일이 있었어서 나눠서 정리해보려 합니다.

어노태이션[@ResponseStatus]

예외 클래스 자체에 응답 상태 코드를 선언하여, web.xml의 에 매핑하는 방식이다.

예제

<예외 클래스>

@ResponseStatus(value = HttpStatus.FORBIDDEN)
public class ExampleForbiddenException extends RuntimeException {

	//…이하 생략…
}

위와 같이 예외 클래스에 응답코드를 선언해두고, 처리 로직에서 해당 예외를 던진다.

<처리 클래스>

	@GetMapping(value = "/example/error/throwExampleForbiddenException.do")
	public String throwException(final HttpServletResponse response) {
		if (true) {
			throw new ExampleForbiddenException("@ResponseStatus가 HttpStatus.FORBIDDEN으로 설정되어 있다.");
		}

		return "/example/fakeView"; // 여기는 실행되지 않는다.
	}

<web.xml>

	<error-page>
		<error-code>403</error-code>
		<location>/WEB-INF/jsp/example/error/forbiddenError.jsp</location>
	</error-page>​

장단점 설명

장점 :

  • 쉽고 간단하다. (예외에 응답 상태 코드를 지정하여, 바로 매핑된 에러 페이지를 바로 연결하면 끝)
  • ExceptionResolver가 없어도 동작한다.
  • ExceptionResolver의 종류에 따라서는 @ResponseStatus를 이용하기도 한다.

단점 : 로그 남기기 등의 추가 처리를 일원화하기 어렵다.

총평 : 오류가 나도 해당 정보를 확인할 수 없다는 점 때문에 단독으로 쓰일 일은 별로 없다.

참고

반응형
728x90

이번 주 업무 중에 자바스크립트에서 정규식(정규표현식)을 조금 복잡하게 짜야 하는 것이 있어, 그 동안 써먹은 표현식으로는 한계에 부딪혔습니다.

그래서 기존에 안 쓰던 표현식을 찾아서 여기저기 돌아다니고 있었는데…

정규표현식을 시각화해서 보여주는 사이트가 있더군요.

"regular expressions 101"

간편하게 테스트를 할 수 있는 것은 물론이고, 어떻게 동작하여 결과가 나오는 것인지까지 설명을 해줍니다. 사용한 표현식에 대한 해설도 첨부되어 있구요.(영어라는 게 문제지만…)

화면 왼쪽의 ‘FLAVOR’ 영역에서 ‘ECMAScript (JavaScript)’를 선택하고 사용하는 것만 잊지 않으면 사용법이 어려운 사이트는 아닙니다. 그리고 그 선택락을 보면 알 수 있지만, 자바스크립트 외에도 다른 언어의 정규표현식도 테스트해 볼 수 있습니다.

사용법이 어려운 사이트는 아니지만, 감이 잘 안 오시면 다음 사이트의 사용례를 보시면 쉽게 이해가 가실 겁니다.(스크롤을 내리다보면 중간중간 나오는 스샷으로 감을 잡을 수 있습니다.)

반응형

+ Recent posts