본문 바로가기

Homo Coding

(15)
데이터 양과 비즈니스 로직의 복잡도 흔히들 데이터 양이 많으면 비즈니스 로직이 복잡해진다고 생각할 수 있다. 하지만, 데이터의 양과 비즈니스 로직의 복잡도는 그리 관계가 없다. 오히려 데이터 내의 개념들의 양과 더 깊은 관계가 있다. 가장 단순하게 게시판 글을 생각해봐도 그 내용이 한없이 길어도 단순히 내용만을 보여준다면 비즈니스 로직은 그리 복잡할 것은 없다. 하지만, 그 게시판의 글의 내용에 대한 의미들을 분석해서 나름대로 체계적으로 보여준다면 이는 이를 어떻게 보여주어야 하는 개념들만큼 복잡도가 증가하며 그 개념들 간의 관계까지 고려한다면 기하급수적인 비즈니스 로직이 생겨날 수 밖에 없다. TodaysArt 2008 - 16n _ ƒ5³ by Haags Uitburo 게시글을 서론, 본론, 결론의 형태로 묶음 단위를 생각해서 화면에 ..
기준의 법칙 군대를 다녀온 사람은 익히 잘 알 것이다. 기준의 중요성을. 아니, 군대식으로 통제되던 시절의 중고등학교 시절을 나온 사람들도 충분히 알 수 있을 것이다. 일련의 단체를 일렬로 정렬한다는 자체가 얼마나 어려운 것인지를. 우르르 몰려나온 사람들을 정렬하는 것은 기준을 세우는 것이다. 기준이라는 소리에 모두가 경청하고 오와 열을 맞추고 앞뒤의 간격을 적당하게 유지시키는 노력들을 개인에게 부여한다. 만일 기준의 상체나 하체가 다른 각도로 서있으면 전체의 줄이나 열이 삐딱하게 되는 것을 아침 조례 시간에 경험해본 사람들은 알 것이다. We brake for nobody! by leg0fenris SW 개발시에도 기준은 상당히 중요하다. 그것도 제일 처음에 어떠한 형태로 해당 산출물이 만들어졌는지에 따라서 이후의..
방어적 프로그래밍 시스템에서 데이터는 다양한 경로를 통해서 내외부로 흘러들어가며, 이는 해당 데이터를 처리하는 코드의 견고성과 건전성을 해치는 원인되기도 합니다. 특히, AS-IS 시스템을 TO-BE 시스템으로 전환하는데 있어서 데이터 마이그레이션과 같은 작업은 적게는 수백개에서 많게는 수천개에 달하는 테이블의 매핑으로 인해서 수많은 오류 데이터를 낳게 됩니다. 이는 AS-IS와 TO-BE의 매핑이 그리 간단하고 쉬운일이 아니기 때문에 발생할 수 있는 오류들 중에 가장 큰 비중을 차지하고 합니다. His Hand by h.koppdelaney 일반적으로 어느 특정 경로를 통해서 입력과 출력의 대상이 되는 데이터를 처리하는 코드는 정해진 비즈니스 규칙에 의해서만 동작하도록 만들어져 있기 때문에 이와 같이 다른 경로를 통해서..
프로그래밍 초보자가 알아야 하는 9 + 1 가지 지금와서 보면 초보 시절에 별것 아닌 것으로 많은 시간과 많은 밤들을 보내면서 나름 프로그래밍의 세계에서 매력아닌 매력에 빠지곤 했었습니다. 지금의 초보자들을 보면서 지난 프로젝트들을 되돌아보고 저 역시 저질렀거나 하지 말았으면 하는 것들에 대해서 한번 생각을 해보았습니다. so I went for a walk to a place that I know. by Sanctu 이는 비단 프로그래밍에 갓 입문한 사람 뿐만 아니라, 다른 프로그래밍 언어를 처음 접할 때에도 적용되는 내용 같습니다. 1. 프로그래밍의 최대의 적은 Copy & Paste이다. IT에서 일어나는 작업들은 모두 사람의 힘을 배가시키기 위함이고, 이를 위해서는 최대한 자동화를 시켜주는 것이 그 목적일 것입니다. 따라서, 프로그래밍이라는 작..
런타임 계열 예외와 checked 예외 자바에서 예외(Exception)은 크게 checked 예외와 unchecked 예외로 나뉘어진다. checked 예외는 코드에서 명시적으로 try-catch-finally 예외 처리를 해야하는 것을 의미하며, unchecked 예외는 그럴 필요가 없는 것을 의미한다. checked 예외에서 try-catch로 예외를 처리하지 않는 경우에는 메소드에 throws 절을 추가해야 한다. 자바에서 checked 예외는 java.lang.Exception 을 상속받는 형태이며, unchecked 예외는 java.lang.RuntimeException을 상속받는 예외이다. checked 예외이든 unchecked 예외이든 두가지 모두 동일한 기능을 수행한다. 따라서, 어느 것이 더 낫다라고 말할 수는 없다. 하지..
예외에 대한 비용 아래 내용은 http://blog.dynatrace.com/2011/04/12/the-cost-of-an-exception/ 를 번역한 부분입니다. 최근에 예외 비용에 대해서 dynaTrace에서 더 많은 토론이 있었다. 고객과 같이 일할 때 고객이 알지 못하는 많은 예외들을 매우 자주 발견하곤 한다. 이러한 예외를 없앤 후에, 코드는 이전 보다 상당히 더 빨라진다. 이는 코드에서 예외를 사용하는 것은 심각한 성능 오버헤드를 가지고 온다는 가정을 만든다. 아마도 예외를 사용하는 것을 피하는 것이 더 낫다라고 생각할 수도 있다. 예외가 에러 상황을 처리하는데 중요한 뼈대를 이루기 때문에 예외를 피하는 것은 좋은 방법이 아닌 것처럼 보인다. 무엇보다도 이는 예외를 던지는 비용에 대해서 더 자세히 들여달 볼 ..
Antlr 을 활용한 복잡한 문자열 파싱 일반적으로 문장(sentence)은 여러 개의 단어(word)들로 구성된다. 또한, 단어의 순서를 조합함으로써 서로 다른 의미의 문장을 표현하게 된다. 이러한 문장을 읽어들여서 해당 의미를 인식하려면 최소한 문장을 구성하는 구조에 대해서 이해하고, 그 구조 안에 있는 단어들이 어떠한 의미로 사용되는지를 파악해야 한다. 단순한 문장의 경우, 일반적으로 문자열로 읽어들여서 하나의 구조에 맞는지를 검사하여 해당 단위 요소로 분해하여 이를 의미를 부여하면 된다. 예를 들어, SQL 구문의 경우 "SELECT column1, column2 FROM table_name"과 같은 문장은 SELECT, FROM과 같은 키워드를 중심으로 그 안에 어떤 정보가 들어가는지를 정해서 해당 문장을 읽어들여 테이블명과 컬럼명을 ..
비즈니스 로직의 거대화와 테스트 방법의 변화 IT의 사용이 증가하면서 그 넓이(오프라인 업무의 온라인 업무화) 뿐만 아니라, 그 깊이(다양한 유형의 온라인 업무화)까지도 상당한 영역까지 구현의 범위가 넓어지고 있습니다. 따라서, 시스템의 구현에 대한 테스트는 그 입력과 예상되는 출력의 검증 뿐만 아니라, 다양한 경우의 조합(다양한 입력 변수들)을 통한 테스트가 비즈니스적으로 예상하는 형태로 결과값이 얻어지는지에 대한 테스트도 상당히 중요해지는 것 같습니다. 예를 들어, 금융권의 상품들은 다양한 옵션들이 추가되면서 다양한 상품들이 나타나고, 이에 대한 수익율이나 이자율, 환급율과 같은 결과치들이 상품으로써 팔릴 만한 가치인가를 결정하려고 하는 요구들이 강하게 나타나며, 특히, 파생상품의 경우들은 그 결과를 허용오차 범위 내에서 미리 예상할 수 있는 ..

반응형