본문 바로가기

분류 전체보기

(116)
갑자기 데이터의 흐름이 보인다...!? 평소처럼 작업을 하는데 어느정도 문법이나 툴에 익숙해졌기 때문일까? 보다 효율적으로 일하려고 이미 작업한 것은 복사하고, 비슷한 부분은 수정하고 하면서 진행을 해봤다. 여태까지는 최대한 익숙해지려고 복붙 보다는 생각하면서 조금이라도 적어보려고 했지만, 이제는 딱 보면 어떤 데이터가 어디에 담겨있는지 상상이 갔다. 상당히 놀랐다. 여태까지는 이 경우에는 데이터가 어느 라인에 있겠지 이런 것은 머리가 아팠는데 자연스럽게 그런 것이 보였다. 그래도 자만은 금물! 이런 생각에 최대한 작업을 마무리하고 테스트까지 만들어서 돌려봤다. 놀랍게도... 한 방에 통과한 테스트가 8개 중 6개였다. 나머지 2개도 연관된 객체를 잘못 설정해서 그런 것이어서 그런 것이었다. 바로 수정하니 완성! 그리고 그 작업을 하고 살짝 ..
드디어 암복호화 기능을 사용해봤다 프로젝트에서 여태까지 암복호화 기능을 적용하지 않았다. 그러다가 최근 표준이 정립됐는지 암복호화 기능을 추가하라는 공지가 내려와서 적용을 해봤다. 내가 생각했던 방식은 spring security에서 적용한 것처럼 인터셉터가 도중에 값을 가져가서 암복호화를 진행해서 로직 파트에서는 신경쓰지 않는 방식이었다. 프로젝트에서 적용한 방식은 다소 달랐다. 실제로 controller에 해당하는 영역에 암호화, 복호화에 관련된 코드를 작성했다. 퇴근하고 검색해보니 알았는데, SHA256.java, BCrypt.java를 활용하는 방식과 매우 흡사한 것 같다. 참고한 블로그는 다음과 같다. 패스워드 암호화하기 - MyBatis 이용하기 [SPRING] 패스워드 암호화하기 -Mybatis 이용하기 0. SHA256.j..
SQL을 표현하는 방식은 통일해야 하는가? SQL은 오랫동안 쓰인 기술치고는 표준화된 표현 방식이 없는 요상한 기술이다. 표현 방식이라는 건, 기술적인 이야기가 아니라 말 그대로 SQL 문체(?)를 이야기하는 것이다. SELECT 뒤에 오는 컬럼을 아래에 적느냐 옆에 적느냐 이런 차이도 있고, 쉼표를 끝에 적느냐 맨앞에 적느냐, 쉼표를 맨 위 컬럼의 바로 아래에 적느냐 아니면 컬럼의 두 칸 앞에 적느냐, 이런 자잘한 문체들 말이다. 이 문제에 대해서 깊이 생각한 적은 없었다. 일반적으로 DB Tool에서 제공하는 자동완성 기능을 최대한 활용했다. 그런데 오늘 DB Tool에서 제공하는 문체는 지양하라는 말을 들었다. 회사에서 SQL을 작성하는 방식으로 작성하라는 말이었다. 쉼표는 컬럼 앞쪽 두 칸, 소괄호는 윗 컬럼과 맞추고, SELECT 부터 ..
낯선 프레임워크를 접하며 든 생각 비주류 프레임워크는 다양하다. 대부분 특정한 목적을 달성하기 위하여 대중성을 포기한 대가로 목적을 달성하는 것에 초점을 둔 프레임워크다. 한국에는 특히 이런 프레임워크가 상당히 많다. HTML, CSS 대신 컴포넌트 단위로 드래그 & 드롭 형식으로 화면을 꾸미는 프레임워크가 특히 상당히 많다. 아마도 디자인이라는, 개발자에게는 낯설 수밖에 없는 영역을, 디자이너에게 의존하지 않고 해결하기 위한 도구로 보인다. 더불어 숙련도 낮은 개발자 혹은 유지보수 관리자가 특정한 화면을 개발하기 위한 목적도 있다고 본다. 이런 프레임워크는 깊이 파고들 이유가 전혀 없다. 하나의 제품에 불과하며 보편성을 갖추고자 노력하지도 않는다. 단지 자신의 제품을 소모하는 물주 몇몇을 붙잡고 그들의 입맛에 맞는 제품을 유지할 뿐인 ..
개발자에게 의사소통은 두 번째로 중요하다 개발자에게 의사소통은 필수다. 개발자에게 가장 중요한 것은 일단 개발 실력이다. 다른 모든 것을 잘해도 개발을 못한다면 일단 개발자라고 말할 자격이 없다. 개발자라는 사람이, 주식을 너무 잘해서 주식으로 돈을 벌고, 강의를 너무 잘해서 강사로 유명하다면... 애당초 개발자라고 말할 이유가 없다. 증권맨이거나 유명강사라고 하겠지. 그렇다면 해당 요소를 제외한다면, 실질적으로 [개발자]에게 있어서 가장 중요한 것은 무엇일까? 나는 의사소통이라고 생각한다. 철학적인 의미나 이상적인 개발자의 모습을 말하는 것이 아니다. 실질적으로 의사소통이 안되면 개발이 너무 힘들고 실질적으로 내가 무엇을 했는지 남에게 인지시킬 방법이 없다는 것을 서서히 느끼고 있기 때문이다. 1. 외부인과 의사소통 혼자서 기반을 다지고 완성..
Java transient 사용하는 이유가 뭘까? 심심해서 눈에 띈 Exception 클래스를 하나하나 까보다가 특이한 것을 발견했다. transient 처음 보는 용어였다. 클래스도 아니고 접근제어자도 아닌데 떡하니 적혀있다. private transient Object backtrace; 이런 식으로 말이다. 정말 특이한 녀석이라서 궁금증이 생겨서 찾아봤다. 생각보다 결론은 간단하다. 직렬화 과정(Serialize)에서 특정한 정보를 배제하여 null 값을 출력하도록 하는 녀석이다. 비밀번호 같은 민감한 개인정보를 노출할 우려가 있다면 직렬화시 배제하도록 명령하는 것이다. 따지고 보면 접근제어자 느낌인데 그런 놈은 배운 적이 없다. 신기방기. 직접 사용처가 보고 싶다면, Exception 클래스를 찾아보면 된다. 예시는 다음과 같다. public c..
체계적인 코드 네이밍의 장단점과 요약 가독성만을 위한 코드네임을 짓는 것이 아니라, 보안까지 신경쓰면서, 대규모 인원이 공통적인 작명법을 짓게 하려면 체계적인 코드 분류 방법이 필수적이다. 체계적인 코드 네임 작명법을 규정한다면 장점은 다음과 같다. 누가 작성해도 균일한 코드 네임을 산출한다. 코드를 보지 않고도 규칙에 의거하여 내용물을 유추할 수 있다. 규칙에 의한 관리가 가능해져서 하나의 업무로 분류할 수 있다. 반면에, 단점도 분명하게 존재한다. 단어만 보면 아무런 의미가 없으므로 이해하기 힘들다. 관계자도 분류표를 확인하며 읽지 않는 이상 이해할 수 없다. 코드 체계가 변경되어야 한다면 기존에 작성한 코드를 마이그레이션하는 것이 큰 비용으로 다가온다. 즉, 간단하게 이야기하자면 이것이다. 소수의 관리자가 대규모 인원을 관리해야 할 때..
자바독을 간단하게 알아보자 (JavaDoc) 자바를 사용하면 주석을 자연스럽게 활용하게 된다. 그런데 주석에도 종류가 있고 그 중에는 JavaDoc이라고 불리는 주석도 존재한다. /** * * */ 이런 형태로 작성된 주석을 JavaDoc, 자바 문서화라고 부른다. 실제로 저런 클래스, 메서드 위에 자바독 어노테이션과 함께 작성하면 해당 내용을 HTML로 바꿔서 자동으로 문서로 제작해준다. 문서화가 필수인 기업용 어플리케이션에서는 자주 사용하는 기능이다. 자바독 어노테이션에서 알아두면 좋은 어노테이션은 다음과 같다. serializable 관련된 어노테이션은 자주 안 쓰는 것 같아서 배제했다. /** * * @author : 작성자 * * @deprecated : 지원 중단 * * @exception : 예외 처리 * * @param : 매개변수 ..
친구랑 술을 마셨다 편의점에서 술과 안주를 사니 친구와 이야기 할 거리가 생긴다. 편하게 생각나는 대로 말을 해도 내가 이렇게 할 말이 많았나 싶다. 생각보다 나는 잡생각과 걱정이 많은 성격이었던 것이었네. 초등학교에서 만난 친구를 아직까지 만난다. 그리고 가장 편하다. 왜 사회에서, 대학에서 만난 친구는 오래 못 갈까? 잡다한 의문이 드는 밤이다.
Delphi가 무엇인고? 프로젝트에 사용하는 언어가 무엇인고 찾아보니 델파이라고 한다. 처음 듣는 언어다. 대체 무엇인고? 찾아보면 객체 지향의 파스칼 기반 프로그램 언어를 사용하는 개발 환경. 데이터베이스 응용 프로그램 개발에 사용된다. 라고 하는데... 말만 봐서는 뭔지 하나도 알 수가 없다. 어차피 주로 사용되는 언어도 아닐 것이고 미래가치가 뛰어난 것도 아니니 간단하게만 알아봤다. 데이터베이스 중심 개발언어다. 속도가 상당히 빠르다 이미 금융권에서 상당한 부분이 델파이로 구축되어 있어서 그 분야에서 사용한다. 즉, 금융권에서 코어 파트를 담당했던 구식 언어라는 뜻이다. 지금 프로젝트에서는 델파이를 걷어내고 자바로 바꾸려는 작업이 진행되는 것 같다. 문법을 보면 무엇인가 알쏭달쏭하다. JSTL 느낌이 나면서, DB 툴에서나..