Programmer/Etc
-
암호화 확장자, 인코딩, 표준 관계 정리Programmer/Etc 2022. 5. 26. 23:25
PKI 암호화의 일반적인 개념은 개발자라면 당연히 알고 있을 것이다. HTTPS 서버 설정에서 DRM 등 여러 분야에서 이 개념을 사용한다. 다만, 실무에서는 개념만으로는 충분하지 않다. 실제로 접하게 될 다양한 파일의 확장자와 형식, 내용을 알고 있어야 한다. 확장자와 형식, 내용에 대한 개별적이고 단편적인 정보는 검색하면 찾을 수 있다. 문제는 이렇게 공부하면 외워야 하는 정보의 양만 많아지고 쉽게 잊어버린다. 전체 목록과 각각의 관계를 알면 이해도 쉽고 잘 잊어버리지 않는다. 아쉽게도 한눈에 볼 수 있도록 설명한 문서를 찾지 못하였다. 그리하여 확장자, 인코딩, 표준을 한 눈에 볼 수 있도록 표 하나에 정리해서 공개한다. .DER .PEM .CRT .CER .KEY .P7B .P7C .PFX .P1..
-
프로젝트 초반에 완벽한 설계에 공들이 필요가 없는 이유Programmer/Etc 2014. 3. 19. 10:38
프로젝트 초반에 설계에 많은 시간과 공을 들이는 것에 대해서 부정적으로 생각한다. 혹시나 오해하는 분이 계실까봐서 미리 말하자면, 설계가 필요없다는 것은 아니다. 프로젝트의 과정을 간단히 말하면 "설계-구현-테스트"의 반복이며 각각의 비중은 같다. 즉, 설계와 테스트의 단계 역시 구현과 동일하게 중요하다. 하지만, 아래 설명할 몇가지 이유로 프로젝트 초반에 설계를 결정지으려고 하기보다는, 프로젝트 초반에는 대략적인 스케치로 시작해서 프로젝트 전반에 걸쳐 반복 작업을 통해서 구체화하여야한다. 프로젝트 전반에 걸쳐서 설계는 수시로 변할 수 밖에 없다. 그 이유를 몇가지 나열하자면, 프로젝트를 수행하면서 프로젝트에 대한 이해가 넓고 깊어진다. 프로젝트의 배경 지식과 더불어 개발의 지식과 경험도 늘어간다. 프로..
-
쉬우면서 다양한 기능을 제공하는 UIProgrammer/Etc 2013. 6. 27. 19:55
100가지의 기능을 사용자가 손쉽게 사용할 수 있게 하려면 어떤 방법이 좋을까? 첫번째 접근으로 모든 기능을 사용자가 마음껏 사용할 수 있도록 UI를 제공한다. UI에 100가지가 넘는 컨트롤이 덕지덕지 붙은 모양이 된다. 그간의 경험으로는, 사용자 경험에 대한 생각없는 개발자가 UI까지 맡는 경우 종종 이러한 사태가 발생한다. 이러한 UI는 일반 대중들이 처음에 사용하기에 매우 어렵다. Pilot's Seat of Space Shuttle Endeavour by jurvetson 두번째로는 중요한 10가지 기능만을 엮어서 UI와 함께 제공한다. 나머지 90가지는 아깝지만 폐기한다. 일반 대중을 생각한다면, 위에 것보다는 낫지만, 기능 상의 한계가 존재한다.일반 대중의 개개인이 생각하는 주요 10가지의 ..
-
테스트 주도 개발 - 둘째날Programmer/Etc 2013. 5. 7. 18:21
최대한 빨리 테스트에 통과하는 코드를 작성하는 방법 중에, 캐스팅의 남용이 있다. 돌아가고 나면 이러한 코드를 적절한 자리로 옮기거나 다형성을 사용하여 불필요한 캐스팅을 제거한다. 지난 번 포스팅한 글을 다시 불러와서 갱신해보자. 최종 목적은 잘 돌아가는 깔끔한 코드의 작성이다. 이를 위해서 아래 과정을 반복한다.최대한 빨리 테스트에 통과하는 코드를 작성하는 것이 목적이다. 스텁 구현, 상수를 사용한 하드 코딩, 복사&붙여넣기 신공, 캐스팅을 마구 남용한다.리펙토링을 통해서 스텁을 채우고, 상수와 중복을 제거하고, 캐스팅을 제거하기 위한 적절한 코드 옮김이나 다형성을 사용한다. 외부 프로토콜은 같으면서 내부 구현이 다른 객체를 정의하는 방법을 소개했다. 저자는 Money와 비슷하게 동작하지만 합을 나타내..
-
테스트 주도 개발 - 첫째날Programmer/Etc 2013. 5. 6. 16:17
최종 목적은 잘 돌아가는 깔끔한 코드의 작성이다. 이를 위해서 아래 과정을 반복한다.최대한 빨리 테스트에 통과하는 코드를 작성하는 것이 목적이다. 스텁 구현, 상수를 사용한 하드 코딩, 복사&붙여넣기 신공을 마음껏 발휘한다.리펙토링을 통해서 스텁을 채우고, 상수와 중복을 제거한다. 무엇을 어떻게 개발할지보다 무엇을 테스트할지를 먼저 생각한다. 논외지만 흥미로운 이야기팩토리 생성자를 사용하면 클래스의 사용과 클래스 구조 간의 의존성을 제거할 수 있다. 대표적으로 리펙토링 과정에서 불필요해진 하위 클래스의 제거가 가능해진다.