이미 소장하고 있다면 판매해 보세요.
|
1장 핵심 원칙
1.1 복잡성 관리 1.2 모듈화된 컴포넌트 1.3 대규모 웹 애플리케이션을 위한 열 가지 원칙 2장 객체지향 2.1 OOP 기초 2.2 왜 객체지향을 선택하는가? 2.3 UML 클래스 다이어그램 2.4 웹 페이지 모델링 2.5 코드 구현하기 2.6 모듈화 달성 2.7 객체지향 PHP 2.8 객체지향 자바스크립트 3장 대규모 HTML 3.1 모듈화된 HTML 3.2 HTML 태그 3.3 XHTML 3.4 RDFa 3.5 HTML 5 4장 대규모 CSS 4.1 모듈화된 CSS 4.2 위치 조절 기법 4.3 레이아웃과 컨테이너 4.4 다른 기법 5장 대규모 자바스크립트 5.1 모듈화 자바스크립트 5.2 DOM 활용하기 5.3 이벤트 관련 작업 5.4 애니메이션 작업 5.5 예제: 체인 셀렉션 리스트 6장 데이터 관리 6.1 동적 모듈 6.2 데이터 관리자 6.3 SQL을 소스로 사용하는 데이터 6.4 XML을 소스로 사용하는 데이터 6.5 웹 서비스를 이용해 데이터 가져오기 6.6 JSON 형식의 데이터 6.7 쿠키와 폼 7장 대규모 PHP 7.1 모듈화 웹 페이지 7.2 페이지 관련 작업 7.3 모듈 관련 작업 7.4 레이아웃과 컨테이너 7.5 특수 고려사항 8장 대규모 Ajax 8.1 브라우저와 Ajax 8.2 서버 작업 8.3 MVC와 Ajax 9장 성능 9.1 캐시와 성능 9.2 자바스크립트 관리 9.3 자산 분산시키기 9.4 사이트 통계 이용 9.5 모듈화 테스트 10장 애플리케이션 구조 10.1 모듈화 구상 10.2 컴포넌트 구성 10.3 구조와 유지보수 INDEX |
|
1997년에 오라일리와 함께 처음 책을 집필했다. 첫 책 내용은 데이터 구조와 알고리즘에 관한 실용적 지침이었다. 딕스트라Dijkstra, 호어Hoare, 커누스Knuth와 같은 초기 컴퓨터 분야의 거장들이 처음으로 데이터 구조와 알고리즘에 관한 실용적 지침이라는 주제를 정립했다. 이 책의 주제를 업무에 적용하는 측면에서 얼마나 빠르게 변하는지 직접 경험했다. 야후!에서 웹 개발자로 일하면서 세계에서 가장 큰 웹 애플리케이션 중 하나를 만들었는데, 이 주제를 다듬는 작업에 참여하는 행운도 거머쥐었다.
웹 개발자라는 직업은 대단히 흥미롭다. 엔지니어와 마찬가지로 UX(사용자 경험)디자이너와 밀접하게 일하면서 때로는 우리 자신이 디자이너로 변신한다. 웹 개발자는 추상적인 웹 디자인 모델을 실제로 구현하는 과정 내내 사용자 경험이 나빠지지 않도록 보호하는 사람이다. 그러나 때로 웹 브라우저의 열악한 환경에서도 좋은 성능을 발휘하도록 좋은 코드를 작성해야 할 때도 있다. 최근에는 다른 종류의 소프트웨어 개발만큼이나 웹 개발도 힘들다는 사실을 엔지니어도 인지하기 시작했다. 이 책은 웹 개발에 적용할 수 있는 여러 가지 훌륭한 소프트웨어 공학 기법을 제공한다. HTML, CSS, 자바스크립트, 서버 쪽의 스크립트 언어 등과 같이 서로 다른 언어를 활용한 개발과 관련 기법을 제공한다. 이들 언어와 라이브러리 활용법, 소프트웨어 공학 접근 방법 등을 다루는 책은 시중에서 쉽게 구할 수 있다. 그러나 이 책은 다양한 언어와 관련된 실제 기법을 문서화한 첫 책이다. 이 책에서 소개하는 기법은 웹 애플리케이션 컴포넌트의 재사용성, 유지보수성, 안정성을 높인다.---저자 서문 중에서 역자는 2003년 2월에 벤처회사에 입사하면서 개발자의 길을 걷기 시작했다. 여느 개발자와 마찬가지로 밤을 지새우며 버그를 발견하고 해결하기를 반복했다. 개발 일정과 시간이 넉넉히 주어지는 경우가 드물다 보니 문제가 발생했을 때 차분하게 분석하고 생각할 시간이 부족하다고 느끼는 순간이 많았다. 사실 코드를 수정해서 문제를 해결하려면 고려할 사항은 정말 많다. 코드 수정에서 오는 부작용은 없는 것인지, 객체지향 언어라면 객체지향의 개념을 잘 적용하고 디자인 패턴을 잘 활용하여 코드를 수정한 것인지, 다른 개발자를 배려해 주석은 적절히 추가했는지, 코드의 가독성을 고려해서 변수명을 적절하게 결정했는지, 변수의 범위는 제대로 설정했는지 등 끝이 없다. 촉박한 일정에 쫓기며 문제를 해결하다 보면 코드는 임시 방편의 해결책으로 도배되고, 시간이 지나면 유지보수가 불가능한 지경에까지 이를 수 있다. 역자도 그러한 경험을 했지만, 아직도 임시방편으로 수정한 코드 탓에 고생하는 개발자가 많을 것이라 생각한다. 이러한 점에서 이 책은 개발자에게 희망적인 내용을 다룬다. 프로그램의 규모가 커질수록 코드가 복잡해진다. 복잡성을 제대로 제어하지 못한다면, 프로그램은 결국 머지 않아 브레이크가 고장난 자동차가 무작정 질주하는 상황처럼 위험에 놓일 수 있다. 요즘은 이공계를 기피한다는 얘기를 많이 듣는다. 사실인지 모르겠지만, 배우자 직업으로도 별로 선호하지 않는다고 한다. 아마, 많은 이들이 개발자의 삶을 눈치챈 모양이다. 학생이 이공계를 기피한다는 얘기는 회사를 설립해 개발자를 고용하는 입장이 아니라면, 개발자가 걱정해야 할 문제는 아니다. 오히려 반대로 희망적인 소식 중 하나다. 신입 개발자 부족 현상은 개발자 생태계를 교란시켜 기존 개발자의 가치가 올라가는 전화위복의 기회가 될 것이라 생각한다. 상황에 영향을 받지 않고 개발자만의 즐거움을 만끽하며 개발을 즐기는 개발자도 많다. 버그를 잡고, 자신이 구현한 프로그램이 제품으로 출시되어 팔리고 이용되는 즐거움은 어느 것에도 비할 수 없는 즐거움이다. 언젠가는 개발자가 인정받고 대우받는 세상이 오기를 바란다. 이 책을 번역하면서 생각보다 상당히 고생했다. 7월에 시작하여 한 달 정도 예상했는데, 결국 해를 넘겼다. 쌀 한 알에도 농부의 땀방울이 많이 깃들어 있듯이, 이 책에도 역자의 땀방울이 많이 깃들어 있음을 기억해 주길 바란다. 항상 먼저 연락하지 못해 전화받을 때마다 미안해지는 인천 광성중학교 친구 이순환, 책에 역자의 영혼을 주입하라며 역자의 마음가짐을 일깨워준 인천 송도고등학교 및 인하대학교 컴퓨터공학과 동기 허원진, 인하대학교 컴퓨터공학과 동기로 지금까지 함께 개발자의 길을 걸으며 언제까지나 옆에 있을 친구 이건환에게 지면을 빌어 고마운 마음을 전한다. 마지막으로 인생의 반려자인 토끼 양에게 감사한다. ---옮긴이 서문 중에서 |