728x90
orElseorElseGet의 차이점은 메서드가 실행되는 시점입니다.
String email = userRepository.findById(id)
        .map(User::getEmail)
        .orElse("Unknown");
위 코드에서는 orElse를 사용하여 "Unknown"을 반환하도록 설정하였습니다. 만약 orElseGet 을 사용한다면 아래와 같이 작성할 수 있습니다.
String email = userRepository.findById(id)
        .map(User::getEmail)
        .orElseGet(() -> {
            logger.warn("User email is not found. Returning default email.");
            return "unknown@example.com";
        });
위 코드에서는 orElseGet 을 사용하여, Optional 객체가 비어있을 경우에만 로그를 출력하고, "unknown@example.com "을 반환하도록 설정하였습니다.


내저장소 바로가기 luxury515

728x90

2022년 12월, GPT3.5 기반 ChatGPT의 베타버전이 공개되었다.

오늘은 chatGPT 라는 놈을 체험해보았다.

챗봇과 대화형식으로 원하는 코드를 말하면 그에 맞는 코드를 작성해준다. 아직 베타버전이라서 그런지 여러가지 문제점(코드 작성중에 에러 남 ^^ 테스트 하고 계시는 코드덕후들이 상당할듯. 밥줄이 끊기게 되었으니... 닭 튀겨야 하나 ...)들이 많지만 그래도 상당하다.

아 , 물론 이것말고도 내가 알고 있는 코딩봇이 또 있다. 바로 git에서 만든 copilot 라는 녀석인데 유튜브 "코딩애플" 님의 숏츠 영상으로 처음 들었다. 음 개발자가 개발자를 팀킬하는 상황까지 왔다.

얘들아 아직도 코딩인강듣고있니? ^^

 

 

728x90

최근 중국의 모든 웹사이트들은 모두 회색으로 되어 버렸다.

처음에는 나의 6개월밖에 되지 않은 m1 맥북 모니터가 맞탱이 간줄 알았지만 알고 보니 중국내의 높은 분이 돌아갔다고서 모든 웹페이지가 회색으로 처리 되었던것이다.

아마도 최근 몇년동안 있는 서거한 인물중에 가장 큰 인물이라 그런가 보다. 하지만 개발자인 나는 그것보다 어떻게 나라의 모든 포탈포함해서 모든 국내사이트들을 이렇게 빠짐없이 "빠른 시간에 바로 회색으로 처리 되었을까?" 하는 의문을 가지게 되었고 비교적 효과적으로 처리할수 있는 방법을 알아냈다.

방법1:

<style type="text/css">
html {
  filter:grayscale(100%);
  -webkit-filter:grayscale(100%);
  -moz-filter:grayscale(100%);
  -ms-filter:grayscale(100%);
  -o-filter:grayscale(100%);
 filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
  -webkit-filter:grayscale(1)
}
</style>

filter는 필터를 의미한다. filter:gray는 페이지에 그레이스케일 필터를 붙여서 html의 모든 내용이 흑백이 된다. 그러나 이 필터는 chrome과 safari 브라우저에는 먹히지 않기 때문에 아래에 -webkit-filter: grayscale(100%)이라는 문구가 있다. 이 형식은 webkit 커널을 사용하는 브라우저 전용으로 FILTER: gray;와 비슷하다.

 

방법2:

아래 코드는 css 의 제일 상단에 넣을가.

<style>
 html {
 filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
 -webkit-filter: grayscale(100%);}
</style>

혹시 표준 웹사트가 아니라서 css 코드가 안먹히는경우가 있다.

그려면 아래 처럼 입력해라. 아래 코드는 익숙하지?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

설마 요즘 플래시 쓰는 웹사이트도 있을까? 하는 마음에 아래코드도 미리 작성해놨다.

<param value="false" name="menu"/>
<param value="opaque" name="wmode"/>

 

마지막으로 아래코드를 최종 참고해서 작성해보면 될것 것다.

html{
    -webkit-filter:grayscale(100%);
    -moz-filter:grayscale(100%);
    -ms-filter:grayscale(100%);
    -o-filter:grayscale(100%);
    filter:grayscale(100%);
    filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
    filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)
}

끝!

728x90

  • 시스템 셋팅

AWS CLI 설치 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-macos.html

AWS 인증용 profile 셋팅 : profile 명 exkr-kms

$ aws configure --profile exkr-kms
AWS Access Key ID [None]: AKIAJHQMLLDJRWODVZBQ
AWS Secret Access Key [None]: 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
Default region name [None]: ap-northeast-2
  • KMSManager 사용법

aws/KMSManagerExample.java

  1. KMSManager 초기화
KMSManager kmsManager = KMSManager.getInstance(); 
kmsManager.init((String) System.getProperties().get("exkr.kms.alias"));
  1. 사용자별(uid) cipher 생성
String cipher = kmsManager.createCipherWithUID(uid);
  1. uid와 cipher로 암호화
String encrypted = kmsManager.encryptWithUID(uid, plain, cipher);
  1. uid와 cipher로 복호화
String decrypted = kmsManager.decryptWithUID(uid, encrypted, cipher);

서비스 프로퍼티 암호화 : 실행 옵션 exkr.kms.cipher 사용하여 암/복호화

예제 소스들 ~~~~

예제 프로젝트

1. resources/META-INF/spring.factories  추가 
org.springframework.context.ApplicationContextInitializer=com.example.springapiexample.init.DecryptPropertiesContextInitializer

2. resources/application.properties 에 예제 프로퍼티 추가
exkr.test={cipher}743QDr/oHPyshILBgJURgXfqyUe4ZHgpKDx2qRwVR1k=

3. curl -si localhost:8080/greeting  호출시 exkr.test 복화화되어 출력 '안녕하세요!'포함한 문자열 
{"id":1,"content":"Hello, 안녕하세요?! with World pwd"}
~~~

끝!

+ Recent posts