| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- InitialVector
- 프론트엔드
- commit
- 소스트리
- Java
- Spring
- Git
- 어싱크어웨이트
- cleancode
- 자바스크립트
- FrontendDevelopment
- JavaScript
- ES6
- LineString
- push
- 스테시
- JPA
- 깃
- 디펄트파라미터
- 클린코드
- 이에스6
- 커밋메시지정정
- SpringBoot #JSON
- asyncawait
- 스프링기토
- #프로그래머스 #코딩 #자바 #리스트자르기
- ProgrammingPattern
- InvalidKeyLength
- webdevelopment
- #DB #마리아DB #mariaDB #varch #char #데이터베이스
- Today
- Total
목록전체 글 (70)
David의 비하인드 코드 | 왜(Why)에 집중하는 개발 기록
안녕하세요, 기술의 토대를 다지는 테토남입니다.최근 업무 중 AES256 암호화를 적용하다가 발생한 "Invalid IV length" 에러와 그 해결 과정을 공유하려 합니다. 이론과 실무의 간극에서 오는 혼란을 이 포스팅 하나로 정리해 보시죠.1. 사건의 발단: "분명히 맞게 넣었는데 왜 에러가 나지?" AES256 암호화를 위해 협력사(요청자)로부터 KEY와 IV값을 전달받았습니다.Java // 전달받은 값 (예시)String base64IV = "U29tZUlWVmFsdWUK..."; 이 값을 그대로 AES256 인코딩을 진행한 결과는java.security.InvalidAlgorithmParameterException: Wrong IV length 에러였습니다.2. 문제의 원인: 포장지(Base6..
개발을 하다 보면 여러 개의 조건을 처리해야 하는 복잡한 분기문을 마주하게 됩니다. 이때 단순히 생각나는 순서대로 조건을 나열하면 예상치 못한 버그를 마주할 수 있습니다. 오늘은 논리적 결함을 방지하는 **'안전한 조건문 배치 원칙'**에 대해 정리해 봅니다.### 1. 핵심 원칙: "좁은 범위(Specific)에서 넓은 범위(General)로"가장 중요한 규칙은 조건이 더 까다롭고 구체적인 것을 가장 위에 배치하는 것입니다.❌ 위험한 코드 (일반적인 조건을 상단에 배치)JavaScript // A가 참이면 무조건 실행됨if (A) { console.log("일반적인 케이스 처리");} // A, B, C가 모두 참이어도 위에서 이미 걸러지기 때문에 이 코드는 절대 실행되지 않음 (Dead Code..
안녕하세요! 기술의 토대를 다지는 테토남입니다.자바스크립트에서 비동기 로직(async/await)을 작성할 때, 의도대로 순서를 보장하고 에러를 우아하게 처리하는 것은 매우 중요합니다. 오늘은 비동기 함수의 실행 시점을 제어하는 법과, 함수를 더욱 유연하게 만드는 기본 매개변수(Default Parameter) 패턴을 실무적 관점에서 정리해 보겠습니다.1. 주요 구현 기능비동기 순차 실행: await를 사용하여 데이터 로딩과 요리 과정 등 단계적 프로세스를 직렬로 배치.실시간 UI 피드백: 데이터 준비가 완료되는 즉시 처리하여 사용자에게 상태를 공유.기본 매개변수 활용: 함수 호출부의 복잡도를 낮추고 로직의 재사용성을 극대화.2. 핵심 동작 원리① 실행 시점의 제어 (await)비동기 작업의 결과물을 '..
안녕하세요! 기술의 토대를 다지는 테토남입니다.자바스크립트에서 비동기 로직(async/await)을 작성하다 보면, 코드의 실행 흐름을 어떻게 제어할지 고민하게 됩니다. 단순히 데이터를 가져오는 로직 한 줄이라도, 이를 **즉시 실행 함수(IIFE)**로 처리할지, 아니면 명명된 함수로 정의하고 호출할지에 따라 코드의 품질이 달라집니다.오늘은 이 두 가지 패턴의 차이점을 실무적 관점에서 정리해 보겠습니다.1. 방식 A: 즉시 실행 함수 패턴 (IIFE)IIFE(Immediately Invoked Function Expression)는 정의와 동시에 실행되는 구조입니다.코드 구조:JavaScript(async () => { const result = await fetchData(); consol..
안녕하세요! 기술의 토대를 다지는 테토남입니다. 자바스크립트의 구조 분해 할당은 객체나 배열에서 데이터를 추출할 때 코드를 획기적으로 줄여주는 강력한 도구입니다. 하지만 실무에서는 API 응답 데이터의 키(Key) 이름이 코드 컨벤션과 맞지 않거나, 동일한 이름의 변수가 충돌하는 경우가 빈번합니다.오늘은 구조 분해 할당 시 **별칭(Alias)**을 사용하여 변수명을 직관적으로 바꾸고, 코드의 가독성을 높이는 패턴을 살펴보겠습니다.1. 주요 구현 기능별칭을 활용한 변수 재정의: name: userName 구문을 통해 API 데이터의 범용적인 name 키를 로컬 스코프에서 의미 있는 userName으로 매핑.데이터 관리 효율화: 여러 객체(user, adminUser)에서 동일한 구조의 데이터를 추출할 때..
안녕하세요! 기술의 토대를 다지는 테토남입니다.자바스크립트 프로젝트를 진행하다 보면 함수 선언 방식에 따라 코드의 실행 결과가 달라져 당황하는 경우가 생깁니다. 특히 '호이스팅(Hoisting)'은 코드의 가독성과 유지보수성에 직결되는 중요한 개념입니다.오늘은 일반 함수와 화살표 함수가 호이스팅 메커니즘에서 어떤 차이를 보이는지, 그리고 실무에서 어떤 선언 방식을 지향해야 하는지 정리해 보겠습니다.1. 주요 차이점 요약함수 선언문(Function Declaration): 함수 전체가 메모리에 먼저 로드되어 선언 전 호출이 가능.함수 표현식(Arrow Function): 변수 선언 방식(const, let)을 따르며, 초기화 전 호출 시 에러 발생.TDZ(Temporal Dead Zone) 영향: 화살표 ..