라벨이 algorithm인 게시물 표시

2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

프로그래머의 초식 - 디자인 패턴이란??

1980년대 중반 소프트웨어의 사용 범위와 규모가 폭발적으로 늘어나게 되면서 소프트웨어를 구성하는 프로그램의 논리는 점점 더 복잡한 실타래처럼 꼬여갔다. C 언어로 대표되는 기존의 ‘절차적’ 언어가 그런 변화를 감당하기에 역부족이라는 사실은 누구의 눈에도 분명했다. 이와 같은 상황에 등장하여 사태를 단숨에 제압한 존재가 바로 ‘객체’였다. 객체가 제공한 ‘코드의 재사용(reusability)’과 ‘다형성(polymorphism)’이라는 약은 중병을 앓던 소프트웨어의 세계에서 놀라운 효능을 지닌 처방이 되었다. 객체의 ‘약’맛을 본 프로그래머들은 세부적인 알고리즘의 구현에 점점 덜 구애받게 되었다. 세부적인 논리보다는 요구사항(requirements)을 분석한 결과에 따라서 객체를 정밀하게 설계하는 일이 더 중요하게 되었기 때문이었다. 하지만 모든 약이 그렇듯이 객체도 모든 병에 대한 만병통치약이 될 수는 없었다. 객체의 개념과 장단점을 정확하게 파악하고 있는 프로그래머에게 객체는 분명 약이 되었지만 그렇지 않은 프로그래머에게는 오히려 ‘독’이 되기도 했던 것이다. 객체지향의 창시자, 와드 커밍햄과 켄트 벡 1987년에 객체지향 언어인 ‘스몰토크(Smalltalk)’를 이용해서 소프트웨어 설계 작업을 하던 와드 커닝험(Ward Cunningham)과 켄트 벡(Kent Beck)은 막바지에 이른 작업의 완성을 위해서 소프트웨어를 이용하게 될 사용자들이 직접 설계를 끝내도록 맡겼다. 이 때 커닝험과 벡은 스몰토크에 익숙하지 않은 사용자들이 잘못된 설계를 하는 것을 방지하기 위해서 스몰토크 언어를 이용한 설계에서의 몇 가지 핵심적인 내용을 간추린 ‘패턴(pattern)’을 정리해서 교육시켰다. 교육의 결과는 만족스러웠다. 커닝험과 벡은 이 경험으로부터 객체지향 언어에 있어서 디자인 패턴의 중요성을 처음으로 깨닫게 되었다. 그리하여 그들은 1987년에 열린 OOPSLA(Object-Oriented Programming, Sy...

GOF 디자인패턴을 이용한 Java Web Architecture

이미지
GOF 디자인패턴을 이용한 Java Web Architecture (부제 : Java Web Project Series 1) 1.   서론 2.   Mediator 3.   Command 4.   Factory Method 5.   Singleton 6.   Abstract Factory 7.   Strategy 8.   결론 작성자  : 안승규 작성일  : 2003.06.18 버  전 : 1.0 1. 서론 자바 프로그래밍을 최초로 배울 때 프로그래머들은 자바 클래스를 만들어 객체를 생성하고 해당 객체레퍼런스로 메소드를 호출하여 자신이 원하는 결과값을 얻는다 . 즉 자바클래스는 객체지향언어의 특징 중 단순히 캡슐화를 나타낼 뿐이며 모든 비즈니스로직은 하나의 혹은 두개의 메소드로 전부 처리한다. 심지어 하나의 메소드가 몇백라인이 되는 메소드들도 있으며 이를 유지보수 한다는 것은 정말 경이로울 수 밖에 없다. 에러가 없는 프로그램은 잘 작성된 프로그램인가 ? 결국 프로그램은 결과값으로 그 가치를 평가하는가? 대부분의 관리자들은 프로그래머를 평가할 때 납기와 에러율을 가지고 평가한다 . 이 두가지 요소는 프로그래머에게 가장 중요한 요소라는 것에 반기를 드는 사람은 없을 것이다. 그러나 정말 이 두 가지만으로 프로그래머를 평가해야 하는가? 좀 더 멀리 내다보는 관리자라면 해당 프로그램의 주인이 바뀐다 하더라도 쉽고 정확하게 관리될 수 있는 요소를 추가해야 할 것이다. 왜냐하면 모든 프로그램은 유지보수를 하게 되어 있으며 이는 유지보수시에 투입되는 인건비와도 관련이 되기 때문이다. 또한 프로그램변경시에 에러율을 얼마나 줄일 수 있느냐도 간과해서는 안된다. 그렇다면 에러율도 적고 유지보수도 편한 그러한 프로그램은 어떻게 만들 수 있는 것일까 ? 굳이 그 해답을 찾으라고 한다며 디자인...