전체 글 113

JUnit in action 독서 회고 (1부)

총평: 글 읽는 것 자체가 힘들다. 그래도 그냥 읽어야지 뭐.1부 JUnitJUnit 시작하기JUnit을 처을 들어본 것은 아니다. 하지만 JUnit 기술서적은 처음 읽는다.전문파악을 위해 ‘이런 개념들이 있구나’ 정도로 1회독 이후 실습 예정.머리말 읽을때부터 졸음이 쏟아져서 곤욕을 치렀지만, 4장 읽었을 때쯤 JUnit에 대한 흥미가 생겼다.JUnit의 핵심 기능 이해하기@Test @DisplayName @Disabled @BeforeAll @AfterAll @BeforeEach @AfterEach 정도의 어노테이션만 생각나고 다른 내용들은 그냥 흘려들음.내용이 건축학개론같은 느낌이어서 한번에 이해하려했다간 평생 못읽을 것 같다.글만 읽고 절대 이해 불가능.JUnit의 아키텍처3.1.1 첫 번째 이야..

생각정리/회고 2025.02.18

2025-02-06 React, useEffect()

요 몇일 React 찍먹 중.현재 주요 관심사는 리액트 훅.use., use.., use… ?? React Hook 네이밍 규칙 같은데?알고 보니 customHook 만들 때도 이 규칙을 지켜야 하는 암묵적(?) 룰이 있는 듯.jQuery 할 때 제일 중요하게 봤던 함수는 $(document).ready(function() { ~ })이 함수 = HTML 로드(document 준비) 완료되면 실행말하자면 onload 같은 거.근데 onload 없는 페이지가 거의 없다 보니, 몸으로 체득한 느낌.이런 백그라운드 덕분에 React에서 가장 먼저 관심이 간 훅이 useEffect.렌더링이 기본 전제인 React에서 생명주기(Mount, Update, Unmount)를 다 활용할 수 있는 훅이라는 게 참 매력적..

2025-02-05 리액트, 기본 소양으로 가져가도 될 것 같음.

리액트, 기본 소양으로 가져가도 될 것 같음.3년 차쯤이었나…?리액트가 프론트엔드 라이브러리로 유행이라는 소식에 실무에서 써보고 싶었지만,당시 SI 환경에선 jQuery가 킹오브킹. 실무랑 학습은 차이가 있을 수밖에 없어서 언젠간 리액트를 써보겠다는 마음으로 틈틈이 공부했음.결론? 흐지부지.그래서 리액트 흉내 내보겠다고 공통 코드 정리, 컴포넌트화, 마운트 같은 걸 이것저것 시도해봄. 나름 유용하게 쓰긴 했는데… 오래된 일이라 잘 기억은 안 남.아직 공부 중이라 잘 모르지만, 리액트의 props와 state 기반 렌더링 개념이 꽤 마음에 듦. 실무에서 jQuery 쓸 땐 SPA 구현하려고 99.9% Ajax만 써서 고통받았는데,리액트는 기본 전제가 리렌더링이잖아?물론 fetch 같은 데이터 호출은 use..

2025-02-04 컴포넌트, 생명주기(lifecycle), 렌더링, 리액트훅

이제서야 리액트가 이해되기 시작했다.첫 리액트 강의를 처음 들었을 때는 컴포넌트, 생명주기(lifecycle), 렌더링, 리액트훅 같은 기술적 용어들이 너무 어렵게 느껴졌다. useState, useRef, useEffect 처럼 자주쓰이는 훅은 그냥 쓰임세를 외웠다. 커스텀 리액트 훅은 생각도 하지 못했다.생명주기를 기준으로 리액트의 전반적인 쓰임새를 파악하고나니 리액트가 좀 더 괜찮은 라이브러리로 느껴지기 시작했는데 특히 리액트 컴포넌트 생명주기 개념이 가장 인상적이었다.리액트 컴포넌트 생명주기에는 mounting, updating, unmounting 3가지 이벤트가 있는데 첫 리액트강의때 전혀 이해하지 못했던 useEffect는 각각의 이벤트 때마다 특정 작업을 할 수 있도록 도와주는 리액트 훅정..

2025-02-01 리액트 스터디 메모

* vite로 새 프로젝트 만들기
npm create vite@latest* 삼항연산자 * 불리언은 렌더링되지 않음.* ?? (null 병합 연산자): null 또는 undefined일 때만 뒤에 오는 값을 반환함.* || (OR 연산자): 앞에 falsy 값이 들어오면 뒤의 값을 반환.* 리스트 렌더링 * 배열 안의 각 문자열을 태그로 감싼 새 배열을 렌더링함.* filter * truthy 또는 falsy를 반환하는 함수를 매개변수로 받음. * 배열의 요소 중 참을 반환하는 요소들로 새 배열을 생성.* CSS Module * 스타일 충돌 없이 컴포넌트 디자인 가능. * CSS 파일명에 module 추가 (ButtonA.module.css). * 임포트 시 자바스크립트 객체로 사용 가능.

어느덧 8년차 개발자가 되었습니다.

제목 그대로 어느덧 8년차 개발자가 되었습니다.2016년 12월에 국비교육학원 수료했을 때의기쁨이 엊그제같은데 세월 참 빠릅니다. 당시 선생님께서 하신 말씀이아직도 생생히 기억납니다. "적어도 3년은 무슨일이 있어도 존버해라!" 욕도 많이먹었고 심지어해고도 수차례 당했지만존버마인드 하나로 버텼습니다.그랬더니 이제서야 보이지 않던 것들이눈에 보이기 시작했습니다.가치, 비전 같은거 말이죠.(선생님 이 은혜 잊지 않겠습니다.) 정규직으로 3년정도 일했을 때 였습니다.디지털노마드를 꿈꾸며 프로그래밍을 배웠는데 일반 직장인과 별다른게 없었습니다. 그래서 온라인 쇼핑몰에 관심을 가지게 됬고프로그래밍은 뒤로 재껴두었습니다. 8년이 된 지금, 결론부터 말씀드리자면-1,000만원 손해와 물경력을 얻었습니다. 무조건적인 ..

생각정리/회고 2025.01.08

[프로젝트 회고] 4개월 단기 프로젝트를 마치고...

기간 : 2023.12.18~ 2024.4.17 요약 : 내적 성장이 이루어졌던 1년 같은 4개월 프로젝트, 목표가 생겼다. 시작 시스템환경 전자정부프레임워크, jsp, jquery 으로 알고 갔지만 프로젝트 구축을 직접했다. 스타트업 회사와 유사한 분위기. 업무 프로세스라는 것은 기대할 수 없고 오로지 경험을 통해서 '일'을 해야만 했다. 주니어 개발자때 꼼꼼하지 못해서 욕먹었던 것들이 지금에서야 빛을 발하는 기이한 경험을 했다. 중간 예상은 했지만 노마드코더 리액트 스터디를 중단할 수 밖에 없었다. WBS의 재정비와 동시에 재택근무가 가능해졌다. 코로나 이후로 처음이다. 일정의 빡빡함보다 부족한 지식때문에 심적부담을 많이 느꼈다. 끝 계획에 없던 요구사항이 들어왔는데 거절할까 말까 수십번 고민했다...

생각정리/회고 2024.04.20

Spring boot 3.2.x 버전에서 Spring Security 기본틀 구현

최신 릴리즈 버전인 3.2.x로 스프링 시큐리티를 구현한 포스트가 너무 없다. 이 때문에 해당 프로젝트 초기에 심적부담이 매우 컸던 기억이 난다. 우여곡절 끝에 프로젝트를 마무리했지만 스프링에 대한 지식의 흔들림이 느껴졌다. 이것이 '임포스터 증후군'의 시작 아닐까 싶다. 정상적으로 작동한다고 외면할 일이 아니라 스프링에 대한 전반적인 재학습이 필요함을 절실히 느낀다. 김영한 선생님 강의 충동구매 ㄱㄱ java 17 spring boot 3.2.x 1. SecurityConfig package com.org.mgt.common.config; import jakarta.servlet.DispatcherType; import lombok.RequiredArgsConstructor; import org.spr..

Spring 환경에서 네이버 클라우드 플랫폼(NCP) 파일서버 연동 구현 (Feat. AWS S3)

Azure에서 NCP으로 교체하는 요청이 있었다. 파일서버 연동은 처음이라 공식홈페이지의 샘플코드를 보면서 작업을 했지만 도통 뭔소린지 알 수 없어 꽤나 걱정이 많았던 작업이었다. 약 1주정도 무한 구글링을 하면서 필요한 지식들을 조각조각 모아서 테스트를 성공적으로 마쳤다. 너무 큰 고통을 받고나니 Spring과 AWS에 대한 공부가 많이 필요하다는 것을 느꼈다. java 17 Spring boot 3.2.x 1. build.gradle 설정 implementation 'com.amazonaws:aws-java-sdk-s3:1.12.638' 2. 클래스 구현 package com.org.mgt.common.util; import com.amazonaws.SdkClientException; import c..