분류 전체보기 71

물 흐르듯 사용가능한 화면이란

사용자 경험은 개발자가 1순위로 고려해야하는 사항이지만 그만큼 가장 어려워하는 것 중 하나이다.보통의 개발자는 개발자의 관점에서 생각하고 본인의 방식대로 표현한다.개발자의 관점에서 개발된 프로그램이라…우리는 누구를 위한 프로그램을 만들고 있는걸까?우리는 사용자를 최우선으로 생각해야한다.물론 보안, 깔끔한 코드, 최적의 쿼리 등등 고려해야할 것은 많지만 사용자가 사용하기 어렵게 만들면 결코 그 프로그램은 성공할 수 없다.목으로도 날 수 없는 프로그램이라는 것이다!! 오늘은 어떤 화면을 개발하면서 직관적인 플로우에 대해 많은 고민을 해보게 되었다.예를 들어 어떤 상품에 가입하기 위해서는 설문을 반드시 진행해야한다고 하자.이전 설문 결과가 있으면 그 결과를 그대로 가져다 쓸 수도 있고, 없으면 새로 설문을 ..

PAD + MOD

오늘은 Oracle의 여러가지 키워드에 대해서 알아보려고 한다. 최근 유지보수 개발 요청이 들어와서 코드를 뜯어보던 중 전반적인 아키텍쳐가 이상한 것을 깨닫고 전체 구조를 뜯어보는데 몇날며칠을 썼다. 그리고 저번주에 그 근본적인 원인을 찾았는데 그 원인은 바로 테이블 구조였다. 우선 PK가 이상하게 설정되어 있었다.PK는 Primary Key의 준말로 우리말로는 기본키 라고 불린다.기본키는 그 조합이 유일해야한다.그런데 이 테이블은 기본키의 조합이 유일하지 않게 설계되어 있었다.그래서 나는 유일한 값을 만들기 위해 일련번호 컬럼을 하나 추가하게 되었다. 나는 일련번호의 타입을 VARCHAR2(15)로 설정했는데날짜(YYYYMMDD, 8) + 구분코드(_, 1) + 브랜치(지점)코드(___, 3) + 숫..

SQL 2026.02.03

Good Code, Clean Code

최근에 클린 코드라는 책을 읽기 시작했다.영어 공부도 할 겸 원서로 읽느라 읽는데 시간이 좀 걸리지만 굉장히 유익한 책이라는 생각이 든다. 요즘 본격적으로 개발을 하면서 꽤 많은 코드를 쓰고 있다.매번 어떻게 코드를 쓰는 것이 좋을지 고민하는 데에 많은 시간과 에너지를 들이고 있다.그래서! 좋은 코드란 뭔가? 를 알아내기 위해 열심히 책을 읽고 있다! 이 책에는 굉장히 많은 위인(?)들이 나온다.그 중에 몇가지 내 마음을 울린 글을 가져왔다. 1. 잊혀져가는 코드의 중요성 이 책의 초반에는 요즘 개발의 현실에 대해 꼬집는다.요즘은 코드가 아닌 모듈과 요구사항에 대한 중요도가 더 강조되고 있다.개발자라면 아는 유명한 짤을 보면 무슨 말인지 단박에 알아차릴 것이다. 요구사항만 맞추면 코드가 어떻게 짜..

개발 공부 2025.12.16

빈 그릇 테이블, DUAL

오늘은 DUAL이라는 테이블에 대해 알아보려고 한다.DUAL은 나에게 그리 익숙한 문법이 아니었다.그래서 처음에는 부끄럽지만 DUAL이라는 테이블이 도대체 어떤 테이블인지 한참 찾았었다........도대체 얼마의 시간을 쓴건지...그러나!!! 그런 시간이 있기에 배움의 가치를 더 크게 느낀다고 생각하기로 했다.럭키비키 마인드로~★☆ 여러분은 그 시간을 아꼈으면 하는 마음에서 오늘의 주제는 DUAL로 잡아봤다.쿼리를 쓰다보면 FROM절 없이 SELECT만 쓰고 싶을 때가 있다.예를 들면 그냥 파라미터 값을 그대로 리턴하는 SELECT 문 같은거!그럴 때 유용하게 쓸 수 있는 것이 DUAL 테이블이다. DUAL은 쉽게 말하면 1x1 크기의 가상 테이블이라고 볼 수 있다.즉, 단 하나의 행과 단 하나의 컬럼..

SQL 2025.12.16

두 테이블을 비교하여 값 갱신하기, MERGE 사용법

최근에 새로운 개념을 만나지 못해서 블로그를 못쓰고 있었는데 오랜만에 새로운 먹잇감을 발견했다!오늘은 MERGE 사용법에 대해 알아보려고 한다. 오늘 아래와 같은 코드를 보게 되었다.MERGE INTO TABLE TUSING (SELECT #COL1# COL1, #COL2# COL2, #COL3# COL3, #COL4# COL4 FROM DUAL ) SON ( T.COL1 = S.COL1 AND T.COL2 = S.COL2 AND T.COL3 = S.COL3 )WHEN MATCHED THEN UPDATE SET T.COL1 = S.COL1, T.COL2 = S.COL2, T.COL3 = S.COL3, ..

SQL 2025.12.11

기본중의 기본, 문자열 비교

오늘은 아주 기초적이지만 그렇기에 많이들 놓치는 부분에 대해 알아보려고 한다! 오늘 있었던 일화를 먼저 이야기하고 시작하겠다.나는 아래와 같이 코드를 짜고 있었다.if (StringUtils.equals("Y", request.getField("YN")) { ~~~~~}...if (request.getField("USER_INFO") == "13") { ~~~~~} 그런데 코드를 작성하다보니 "YN"값이 NULL인 상황이 있을 수 있다는 것을 파악하고는 책임자분께 여쭤봤다.과장님, 만약에 request에 YN이라는 필드가 없으면StringUtils.equals("Y", request.getField("YN")) 은 false가 되나요? 아니면 이 코드에서 에러가 터지나요? 이 질문에 대한 답은 false..

백엔드/Java 2025.12.03

숨길 땐 알고 숨기자!

우리는 데이터베이스에 다양한 정보를 저장한다.아이디와 비밀번호, 이름, 전화번호, 주소, 등등여기서 이름, 전화번호, 주소와 같은 개인정보나 비밀번호와 같이 알려지면 안되는 정보는 데이터베이스에 그대로 저장해서는 안된다. 최근 업비트가 대규모 해킹되는 일이 있었다.이외에도 너무나 많은 해킹 사건이 일어나고 있고 우리는 이걸 막을 원천적으로 막을 힘이 없다.그렇다면?우리 내부로 들어와도, 우리의 정보를 털어가도 알아볼 수 없게 만들자!이게 이번 게시물의 주제이다. 이건 내가 종사하고 있는 금융권에만 해당되는 일이 아니다.학생들이 개인 프로젝트로 만드는 수많은 서비스들에도 해당되는 이야기이다.숨겨야하는 정보는 최대한 완벽하게 숨기는 것이 중요하다. 여기서 은근히 많은 사람이 모르는 상식을 하나 짚고 넘어..

개발 공부 2025.12.01

코드 관리

오늘도 미미하지만 중대한 실수를 저질렀다!!!!!!오늘의 실수 주제는 '코드 관리' 이다.내가 말하는 코드 관리는 SVN, Git과 같은 형상 관리 도구(버전 관리 시스템)에 관한 이야기가 아니다. 대학교 소프트웨어공학 수업에서 Waterfall 방식 대비 Agile 방법의 장점에 대해 많이 배웠다.Agile의 가장 큰 장점은 유지보수 비용이 적게 든다는 점이었다.Waterfall 방식은 요구사항 정의 → 분석 → 설계 → 개발 → 테스트 → 배포 → 유지보수 순으로 진행된다.요구사항 정의부터 배포까지의 단계가 더 많지만 비용 자체는 유지보수가 압도적이다.요건대로 개발했음에도 유지보수할 것은 끊임없이 생긴다. 그렇다면 Agile 방식을 선택하면 되잖아!!!실무에서 Agile을 사용하는 기업은 그리 많..

개발 공부 2025.11.26

버전 관리를 하자!

얼마 전부터 리포트 관련 개발을 하고 있다.Clip Report 라는 툴을 사용해서 crf 문서를 만들고 웹 사이트에서 출력 버튼을 누르면 해당 crf 파일을 띄우게끔 한다. 나는 유지보수를 하고 있기 때문에 새로운 문서를 만들기 보다 기존에 있던 문서를 수정하여 반영하는 일이 더 많다.기존 문서를 수정할 때 나는 크게 두 가지 방식을 선택할 수 있다. 1. 기존 문서 파일을 변형한다.2. 기존 문서 파일은 그대로 두고 새로운 문서를 만들어 새로운 파일로 코드를 연결한다. 어떤 수정을 하는 것인지, 수정의 규모가 어떻게 되는지, 그 팀의 개발 규칙 등에 따라 선택하는 방식이 달라질 수 있겠지만,나는 2번을 압도적으로 지지한다! 왜일까?우선, 나는 금융권 종사자임을 밝힌다.우리나라에서 금융권은 굉장히 ..

개발 공부 2025.11.25

라이브러리 import의 중요성

며칠동안 골머리를 앓던 문제를 해결했다.문제의 원인은 라이브러리를 적절히 import하지 않았다는 것이다! 개인 프로젝트나 부트 캠프 등에서는 주로 Springboot와 React를 사용했다.현 회사에서는 Nexacro와 Nexcore라는 프레임워크를 쓰고 있다.딱 봐도 생소해보이지만 실제로 사용해보니 Springboot, React와 별반 다르지 않았다. 나는 Nexacro로 프론트엔드 개발을 하면서 발생한 에러를 잡지 못해서 며칠간 고생을 했다.오늘 드디어 에러의 가장 큰 원인을 찾았다. 개발을 해본 사람이라면'라이브러리를 import하지 않고 해당 라이브러리의 함수를 가져다 쓰려고 하면 당연히 에러가 나지! 이걸 누가 몰라?' 라고 생각할 것이다. 맞다.이건 기본 중의 기본이다.그러나 너무나 기본..

백엔드 2025.11.19
반응형