본문 바로가기

BackEnd

(47)
[모던자바인액션] 동작 파라미터(Behavior Parameter) 동작 파라미터를 아십니까? 프로그래밍 시 사용하는 "동작"은 아래와 같은 것을 의미합니다. a와 b를 곱하는 함수가 있다고 해봅시다. def multiply_numbers(a, b): result = a * b return result 이 함수는 파라미터로 받은 곱하는 "동작"을 하는데용, a와 b의 값에 따라서 multiply_numbers 함수의 결과 값은 달라지게 됩니다. 이때, a와 b를 동작 파라미터라고 하는 거잖슴~ result1 = multiply_numbers(2, 3) # a=2, b=3을 전달하여 2 * 3 = 6이 반환됨 result2 = multiply_numbers(5, 7) # a=5, b=7을 전달하여 5 * 7 = 35가 반환됨 이렇게 말이져. a와 b의 값에 따라 resul..
NonNull 사랑...사...사...랑... 그냥 좋아합니다. @NonNull은 사용자에게 null 체크 잘하십쇼 하고 알려줄 수 있는 어노테이션입니다 보통 사용할 수 있는 용도는 아래와 같습니다 Record component / 함수의 파라미터 / 생성자의 파라미터 요렇게 쓸 수 있습니다 public void doSomething(@NonNull String input) { // input은 null일 수 없음 // 여기서 안전하게 input을 사용할 수 있음!! } @NonNull을 안 쓰면 아래와 같이 했겠쥬? 사실 씨쟁이는 아래의 코드가 더 익숙하지만 😒 파라미터만 보면 if 문 만들어야 직성이 풀리는 편. public void doSomething(String input) { // input은 null이면 아니된다.. if( input == null ) {..
SQLD 시험 후기 (누구인가? 누가 안 어렵다 했는가?🤔) 추석 연휴에 스터디 카페에서 썩어가는 나 공부할겸 일할겸 집 근처 스카에 왔는데 일이 생각보다 할게 많아서 원하던 공부를 못해서 조금 속상하다 그래서 짧게 자격증 후기나 남겨야겠다. 시험 전 마음가짐 필자는 지난 구구데이 때 SQLD 시험을 봤습니다 한달 전쯤 접수하고 준비를 바로 하려고 했는데, 신기한게 접수하고나서부터 야근의 늪에 빠져 공부할 시간이 없었다. 그리고 준비 기간 때 잘못 생각했던게, 인터넷에 검색만해도.. 취득하기 쉽다고 하고 전공자라면 2주정도면 쌉가능이라고 하길래 2주전부터 하면 되겠지~~ 했다 ... 그러면 안됐다 시험 한 3일전부터 야근 + 벼락치기 공부를 하며 기도메타 전략을 세웠다. 시험을 보고 오 망했는데 생각이 들었고, 11월에 재시험 보려고 마음 놓고 기다리고 있었는데 ..
Intellij) JUnit5 설정할 사람 괌 요즘 일하면서 내가 제일 신경 쓰고 있는 것은 히스토리를 잘 남기는 것이다 모든 일은 누구나 할 수 있다는 것을 깨달았지만 코드마다 있는 사연은... 그 사람밖에 알 수가 없다는 것이다 🥹 왜 그렇게 생각하게 됐냐구요? 저도 그러고 싶지 않았습니다 그래서!! 테스트 코드를 여느때와 다름없이 작성하던 중... 기존에는 JUnit4 버전으로 사용하고 있었는데 다른 담당자가 테스트 코드 실행 시 빠르게 내용을 파악하시면 좋겠다고 생각이 들었다 결론부터 먼저 말하자면.. 테스트 코드를 실행했을 때 아 이런 테스트~를 쉽게 파악하길 원했다 그러기 위해서는 @DisplayName 같은 어노테이션 사용이 필요했고, 이를 사용하기 위해서는 JUnit 버전을 업그레이드 해야했다 1. JUnit5 의존성 추가 (1) bu..
Error) java: class, interface, or enum expected 해결 File-Settings-Editor-File Encodings Path 추가해서 에러가 난 디렉터리 또는 파일에 Encoding 설정을 해주면 됩니다 그래도 안된다면 새로 파일을 추가하고 코드를 복붙하는게 가장 빠릅니다. 저 같은 경우에는 로그나 코드에 인코딩 설정을 바꿨는데, 저런 에러가 생기더라구요 한글이 깨지는 현상이 생겨서 해결하려다가 에러를 만나게 된; 원인은 BOM(Byte Order Mark) 이라는 것이 생겨서 그렇습니다. 유니코드의 인코딩 방식에는은 빅엔디안(BE)과 리틀엔디안(LE)이 있습니다. 둘의 차이는 바이트를 읽는 순서의 차이인데, 이 것을 파일에 명시하기 위해 앞에 인코딩별 BOM 값을 살짝 넣어 놓습니다.
🌸 startsWith()/endWith() 문자열의 시작과 끝 startsWith()와 endWith()는 함수명으로 유추해볼 수 있듯이, 문자열에 대해 특정 문자로 시작하는지/끝나는지를 확인할 수 있는 함수 입니다. 아래는 간단한 예시 입니다. String str = "@@myId"; System.out.println(str.startsWith("@")); // true System.out.println(str.endWith("@")); // false 이런 식으로 특정 문자열에 대한 확인을 할 수 있습니다. 회원가입 하려는 사용자가 유효하지 않은 문자열을 사용하지는 않는지, 시작/끝 문자열에 있으면 안되는 문자열이 있는지 등등 확인할 때 활용될 수 있겠네욤 startsWith() Syntax public boolean startsWith(String chars)..
@JsonProperty와 @JsonNaming 클라이언트와 연동 규격을 정의하며, JSON 형식을 변경하게 되었습니다. 원래 사용하던 연동 방식은 카멜 케이스 (Camel Case) 방식이었는데, 연동에 있어 최대한 빠르게 서비스를 하기 위해서 다 소문자로 변경해달라는 요구사항이 있어서 @JsonProperty를 사용해서 변경했습니다. 기존에는 REST API 메시지를 받을 때 @RequestBody를 사용해서 처리하고 있었어서 변수 이름을 바꾸는건 비효율적이었다 💦 🕒 JSON 명명 규칙 3가지 표준은 아니지만 아래의 3가지 스타일로 많이 사용한다. Pascal camelCase snake_case 만약 내 이름을 표현하기 위한 네이밍을 하고 있다면 // Pascal MyName // camelCase myName // snake_case my_n..
Java의 Hash 알고리즘 MessageDigest 요즘 핫한 보안 문제 ❗ 이번에 신규 개발하는 기능에도 보안을 위해 사용자의 정보가 담긴 내용은 암호화를 하기로 했답니다. Java에서 Hash 값 생성을 할 때 많이 쓰는 클래스는 MessageDigest인데, 오늘은 이 친구를 정리해보겠습니다. 🔐MessageDigest https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html MessageDigest (Java Platform SE 7 ) This MessageDigest class provides applications the functionality of a message digest algorithm, such as SHA-1 or SHA-256. Message dig..