전체카테고리 468

Google의 검색 자동완성에 대해..

Google 검색창의 특징은 다음과 같다. 1) 작성중인 초성은 검색포함. (초성만 나열했을때는 영문으로 인식) 2) 자동완성(=자동추천) 제공 3) 고유명사, 인물의 경우 이미지도 같이 노출 4) 검색 History도 제공하며, 검색일치하는 내용 또한 제공 각 구현 현황에 대해 다음과 같이 확인되었다. 1), 2) 아래 autoComplete API로 검색한 결과 JSON 타입으로 다음과 같은 Suggestion이 발생했다. suggestqueries.google.com/complete/search?output=toolbar&hl=ko&q=김ㄱ 2) 초성 자동완성 시 무언가의 알고리즘을 추천이 뜨는것으로 보아, 애초에 검색된 Word List에 Weight(가중치)가 있을 것이다. 예를들어 "김ㄱ"은 ..

Programming/기타 2023.10.14

SQL Injection 에 대한 대응

공통 API 서버를 개발할때 Request로 넘어오는 Parameter의 자료형, 데이터크기, 데이터 형식을 사전에 Exception처리를 할 수 있도록 해야 좋다. 데이터형식은 정규화 할수 있다면 표현식을 사용하면 좋다. 예) if (stringValue != null && stringValue.matches("^[a-zA-Z]{2}[0-9]{3}$")) { System.out.println(stringValue + " is a ProductCode."); return "MessageCode"; } else if (stringValue != null && stringValue.matches("^[a-zA-Z]{2}-[a-zA-Z0-9]*-[a-zA-Z0-9]*$")) { System.out.printl..

Programming/기타 2023.10.13

JPA 사용법

Hexagonal Architecture, Clean Architecture가 뜨면서 JAVA와 Python에도 어플리케이션의 Repository, Entity 정의가 필요해지고 있다. Git 주소 : https://github.com/armyost/jpaJoinSample GitHub - armyost/jpaJoinSample Contribute to armyost/jpaJoinSample development by creating an account on GitHub. github.com JPA는 Entity, Repository가 필요하다. Repository는 일종의 Entity에 대한 연산을 위한 인터페이스 이다. JPA가 필요한 이유는.. 요즘에는 워낙 다양한 데이터저장소가 있다보니 다양한 타..

Programming/Java 2023.10.11

Refresh Token에 대한 고찰

What Is a Refresh Token? Refresh token은 새로운 Access Key을 받아오기 위한 별도의 key이다. What Is the Purpose of a Refresh Token? Refresh token이 존재하는 이유는 access token의 짧은 주기 때문이다. 짧은 주기로 User Experience가 나빠질 가능성이 있으므로, 상대적으로 수명이 긴 Refresh token을 제공 이 Refresh Token을 어느 Layer에서 관리해야할지에 대한 고민들을 하고 있다. Client가 관리해야 할지, 서버에 저장해야 할지 고민하고 있다. 관련해서 한 포스팅을 보고 정리하고자 한다. ※ 관련포스팅 : https://tecoble.techcourse.co.kr/post/20..

Programming/기타 2023.09.25

MSA API 호출 성능개선 방안 - Redis 활용

기존의 Spring에서도 공통코드, 메뉴코드와 같이 데이터 변경이 잘없는 호출은 SpringCache를 활용하였다. 이 컨셉을 계승하여 MSA에 적용하는 사례를 소개코자 한다. 그리고 Redis Cache로 외부 Cache 저장소를 사용할 것이다. Github 소스코드 https://github.com/armyost/ApiRedisTemplate GitHub - armyost/ApiRedisTemplate: This is api call template with redis cache This is api call template with redis cache. Contribute to armyost/ApiRedisTemplate development by creating an account on GitH..

Programming/기타 2023.09.18

Kubernetes 내에서 Network 경로 규칙 알기

네트워크 경로는 Network Poilicy와 kubeproxy를 잘 분석해야 한다. Services, Load Balancing, and Networking 쿠버네티스 네트워크 모델 1. Kubernetes imposes the following fundamental requirements on any networking implementation (barring any intentional network segmentation policies): 쿠버네티스는 발생하는 모든 내트워크에 대해 아래와 같은 네트워크 요구사항을 부가한다. - pods can communicate with all other pods on any other node without NAT 파드는 다른 모든 파드와 NAT 없이 통신..

PaaS/기타 2023.09.14

SpringSecurity로 OAuth 인증인가 구현. Kakao 소셜인증을 서버로..

아래는 OAuth 2.0 표준을 따라 UserInfo Endpoint에서 사용자 정보를 가져오는 예제입니다. ※ 대부분의 Posting에는 Token Payload를 JWT Claim을 통해서 데이터를 복호화 하는 방법이 소개되어 있습니다. Git 주소 https://github.com/armyost/Oauth2Sample/tree/main GitHub - armyost/Oauth2Sample: This is OAuth2 Authentication sample with SpringSecurity This is OAuth2 Authentication sample with SpringSecurity - GitHub - armyost/Oauth2Sample: This is OAuth2 Authenticatio..

Programming/Java 2023.09.12

Spring Security Filter Chain 설명

Spring Security는 인증,인가에 대해 개발자가 필요한 로직을 대부분 구현해 놓았다고 보면 된다. 웬만한 인증인가에 필요한 로직이 다 있음. 따라서 적극적으로 사용하는 것이 문명의 혜택을 누리는 것이라 생각한다. https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/builders/HttpSecurity.html 필터설명 SecurityContectPersistenceFilter SecurityContexRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함. LogoutFilter 로그아웃 URL로 지정된 가상URL에 대..

Programming/Java 2023.09.06

SpringFramework 에서 Redis 를 활용한 Session Storage 분리

- SpringSession & Redis관련 Bean 생성 ※ SpringSession 라이브러리는 Clustered Session 제공을 위해 Servlet에 비종속적인 Session LifeCycle 관리 라이브러리 ※ 스크립트 위치 : /src/main/resources/egovframework/spring/context-*.xml - RedisTemplate Bean 생성 ( Template의 경우 커스텀한 설정이 필요할 수 있어 JAVA Config로 정의함) @Configuration public class SessionConfig { private LettuceConnectionFactory redisConnectionFactory; @Autowired public SessionConfig..

Programming/Java 2023.09.06

Redis cli 커맨드 모음

# localhost:6379접속 redis-cli # 원격접속 redis-cli -h redis01.armyost.com -p 6379 # 정보보기 info # help help # 모니터링 monitor # key목록 보기 keys * # 값 입력 String : set {key 이름} {value} List : lpush {key 이름} {value} Set : sadd {key 이름} {value} Hash : hset {key 이름} {value-key} {value-value} # key를 통하여 값 출력 String : get {key 이름} List : lrange {key 이름} {start} -{end} ( ex. lrange test_list 0 -1 ) Set : smembers {..

PaaS/기타 2023.09.01