9. 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명
주로 재생 중 , 다음곡 넘어가기를 여러 번 실행하면 동작이 멈춘 듯 보이다가 실행 ..,
재생 중 일시정지를 한 후 , 다시 재생을 하다가 곡 목록에서 다른 곡을 선택하여 실행하면
바로 플레이가 되지 않고 … 한번에 여러 곡을 넘어가려고 위 화살표
버튼을 여러 번 클릭하면 , 동작이 되지 않고 멈춰 있음 ..
한참을 기다리면 , 몇번 째인지 넘어갔던 곡이 실행됨 .
동작 멈춤 현상이 간혹 재현되며 , 멈춤 현상 중 곡목록 닫기를 하거나 다른 액
션 버튼이 동작하지 않음
.., PC 에서보다 모바일에서 발생 빈도가 높은 상황임 .
어느 순간부터 곡이 재생목록에 추가되지 않는다 .
설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명 설명
16. 1. 기반시스템
소스코드관리시스템┃빌드시스템┃버그관리시스템┃테스트관리시
스템과 테스트 자동화툴┃프로젝트관리시스템┃요구사항관리시스템
2. 조직
프로젝트 구성원의 역할 ┃조직체계
3. 개발방법론과 프로세스
소프트웨어 개발방법론┃소프트웨어 개발 프로세스
4. 사람
인재 확보┃문서 작성 기술
5. 문화
동료 리뷰┃연구┃공유┃품질 우선┃규칙 준수┃장기적인 관점으로
보기
17. • Blocked UI
• Heavy requests
• Cookie
• Polling
• Global control flags.
50. var SongIDS = new Array(); // 곡아이디 ( 배열 )
var SongInfos = new Array(); // 곡정보 ( 배열 )
var PlayIndex = -1; // 플레이순서
var PlaySongID = ""; // 플레이곡
var LoopFlag = false; // 전체반복여부
var OneLoopFlag = false; // 한곡반복여부
var ShuffleFlag = false; // 셔플여부
var PauseFlag = false; // 일시중지여부
var LibrarySongFlag = false; // 좋아요여부
var MemberStreamingFlag = false; // 회원스트리밍이용권여부
...
var PlayerLoginLayerFlag = false; // 로그인레이어표시여부
var PlayerBuyItemLayerFlag = false; // 구매레이어표시여부
var StartPlayLogFlag = false; // 시작로그여부
var MiddlePlayLogFlag = false; // 중간로그여부
var EndPlayLogFlag = false; // 종료로그여부
var PlayLogInfo = ""; // 로그정보
var ChannelCode = ""; // 채널코드
var MaxCount = 200; // 최대수
실제코드 3
51. function SongPlay(songID) { // 곡재생
...
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
...
}
실제코드 4
57. var SongIDS = new Array(); // 곡아이디 ( 배열 )
var SongInfos = new Array(); // 곡정보 ( 배열 )
var PlayIndex = -1; // 플레이순서
var PlaySongID = ""; // 플레이곡
var LoopFlag = false; // 전체반복여부
var OneLoopFlag = false; // 한곡반복여부
var ShuffleFlag = false; // 셔플여부
var PauseFlag = false; // 일시중지여부
var LibrarySongFlag = false; // 좋아요여부
var MemberStreamingFlag = false; // 회원스트리밍이용권여부
...
var PlayerLoginLayerFlag = false; // 로그인레이어표시여부
var PlayerBuyItemLayerFlag = false; // 구매레이어표시여부
var StartPlayLogFlag = false; // 시작로그여부
var MiddlePlayLogFlag = false; // 중간로그여부
var EndPlayLogFlag = false; // 종료로그여부
var PlayLogInfo = ""; // 로그정보
var ChannelCode = ""; // 채널코드
var MaxCount = 200; // 최대수
실제코드 3
58. function SongPlay(songID) { // 곡재생
...
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
...
}
실제코드 4
76. 잠시 , 조건문의 단순화에 대한 학구모드
• 객체지향에서 조건은 다형성으로 상당 부 처리가
될 수 있다 .
– 예를 들면 , Visitor 패턴
• 그럼 문제 해결을 위해 객체지향적인 ? 코드로
바꿔야 하나 ?
77. 잠시 , 조건문의 단순화에 대한 학구모드
• 객체지향에서 조건은 다형성으로 상당 부 처리가
될 수 있다 .
– 예를 들면 , Visitor 패턴
• 그럼 문제 해결을 위해 객체지향적인 ? 코드로
바꿔야 하나 ?
• 자바스크립트는 Overloading 을 지원하지 않는
다 .
89. 직접적인 접근 차단 .
• 자바스크립트에서 직접적인 접근 차단은 ?
• function outer() { function inner() {} }
90. 직접적인 접근 차단 .
• 자바스크립트에서 직접적인 접근 차단은 ?
• function outer() { function inner() {} }
• inner 를 호출 하는 방법은 ?
91.
92. 직접적인 접근 차단 .
• 자바스크립트에서 직접적인 접근 차단은 ?
• function outer() { function inner() {} }
• inner 를 호출 하는 방법은 ?
• new Audio() 는 뭔가요 ?
93. 직접적인 접근 차단 .
• 자바스크립트에서 직접적인 접근 차단은 ?
• function outer() { function inner() {} }
• inner 를 호출 하는 방법은 ?
• new Audio() 는 뭔가요 ?
– 일반적인 DOM Element 는 document 를 통해
서 생성하는 것과 달리 직접 생성이 가능하다 .
94. 잠시 모바일 환경에서 제약사항을 알아보자
iOS Safari 에서는 User action 이 없으면
음악을 자동 재생 할 수 없다 .
http://developer.apple.com/library/safari/#documentation/AudioVideo/Conceptual/Using_HTML
104. 앞에서 본 코드 1
• 오디오 상태 관리가 필요없다 .
– 매번 Player.status() 를 통해 얻는다 .
• Audio 의 함수를 직접 호출 해서 발생되는
side effect 도 없다 .
– 실제 Audio 객체가 의도하지 않은 곳에서 직
접 호출되고 그 여파로 , 제어 플래그들의 값이
올바르지 않게 되고 있었다 .
106. 앞에서 본 코드 2
• 여러 기능을 가진 Prev() 를 기억하는가 ?
– 재생목록의 기능이 계속 추가되면서 걸레가 된
것이 분명 !
107. 앞에서 본 코드 2
• 여러 기능을 가진 Prev() 를 기억하는가 ?
– 재생목록의 기능이 계속 추가되면서 코드가 길
어 진 것이 분명하다 .
• 재생목록은 크게 3 가지 기능을 가진다 .
– 무작위재생과 순차재생
– 반복모드
– 재생목록의 변경에 따른 기타처리
116. function Loop(flag) {
...
if (flag == "one") {
document.getElementById("btnLoop1_1").style.display = "none;
document.getElementById("btnLoop1_2").style.display = "none"
document.getElementById("btnLoop2_1").style.display = ""
document.getElementById("btnLoop2_2").style.display = ""
document.getElementById("btnLoop3_1").style.display = "none"
document.getElementById("btnLoop3_2").style.display = "none"
OneLoopFlag = true;
LoopFlag = false;
}
if (flag == "all") {...}
if (flag == "") {...}
...
}
앞에서 본 코드 3
117. CSS 에 관련된 개발문제들
• 웹의 장점 중 하나는 CSS 를 통한 유연한 HTML
Layout, 그러나 갈수록 복잡해지는 UI
• 더없이 높아진 고객 눈높이
– UI 요건 변경이 자주 생김
• JavaScript 에서는 UI 변경을 위해 CSS 클래스
만 추가 / 삭제 하는 것이 추세
• 커스터마이징 하기가 힘든 ExtJS 를 아세요 ?
• 디자이너나 퍼블리셔와 개발자간 협업은 서로에
게 영향이 적어야 한다
118.
119. 앞에서 본 코드 4
function SongPlay(songID) { // 곡재생
...
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
조건문의 많은 코드
...
}
120. Pull Up Method
• 동일한 일을 하는 메소드를 여러 서브클래
스에서 가지고 있다면 , 이 메소드를 수퍼
클래스로 옮겨라 .
121. Pull Up Method
• 동일한 일을 하는 메소드를 여러 서브클래
스에서 가지고 있다면 , 이 메소드를 수퍼
클래스로 옮겨라 .
• “ 조건문 많은 코드”인데 갑자기 수퍼클래
스는 무엇인가요 ?
122. Pull Up Method
• 동일한 일을 하는 메소드를 여러 서브클래
스에서 가지고 있다면 , 이 메소드를 수퍼
클래스로 옮겨라 .
• “ 조건문 많은 코드”인데 갑자기 수퍼클래
스는 뭔가요 ?
• 모두 곡 재생에 대한 권한 처리 들이다 .
– 이용권 , 19 세 , 서비스 불가곡 , XXX 차감 , 기
타 .
123. Pull Up Method
• 동일한 일을 하는 메소드를 여러 서브클래
스에서 가지고 있다면 , 이 메소드를 수퍼
클래스로 옮겨라 .
• “ 조건문 많은 코드”인데 갑자기 수퍼클래
스는 뭔가요 ?
• 모두 곡 재생에 대한 권한 처리 들이다 .
– 이용권 , 19 세 , 서비스 불가곡 , XXX 차감 , 기
타 .
• checkAutority(memberInfo, songInfo) 정도
면 공통점이 된다
124.
125. Task 는 이전 Task 의 결과에 따라
실행여부가 결정된다 .
결과가 false 이면 다음 task 를 실행하지 않는다
.
간단해 졌다 .
126. 기술에 대한 잘못된 이해와 활용은 심
각한 문제다 .
그렇지만 , 문제 진단만 되면 ,
서핑과 시간으로 해결 될 수 있다 .
127. 문제 진단 능력은 경력과 비례한다 .
코드의 디자인 능력은 노력에 비례한다 .
틈틈이 코드를 정리하는 습관을 지닙시다 .
130. 여담
• UI 를 조작하는 부분의 예시가 부족합니다 .
– 저도 소위 , ‘ 날코딩’을 했던 터라 뺐습니다 .
131. 여담
• UI 를 조작하는 부분의 예시가 없네요 ?
– 저도 소위 , ‘ 날코딩’을 했던 터라 뺐습니다 .
132. 여담
UI 를 조작하는 부분의 예시가 없네요 ?
– 저도 소위 , ‘ 날코딩’을 했던 터라 뺐습니다 .
• UI 날코딩은 대책이 없나요 ?
133. 여담
• UI 를 조작하는 부분의 예시가 없네요 ?
– 저도 날코딩을 했던 터라 뺐습니다 .
• UI 날코딩은 대책이 없나요 ?
– 잘 구조화된 CSS
– 템플릿 엔진 또는 프레임워크
134. 여담
• UI 를 조작하는 부분의 예시가 없네요 ?
– 저도 날코딩을 했던 터라 뺐습니다 ..
• UI 날코딩은 대책이 없나요 ?
– 잘 구조화된 CSS
– 템플릿 엔진 또는 프레임워크
• 왜 사용 하지 않았나요 ?
135. 여담
• UI 를 조작하는 부분의 예시가 없네요 ?
– 저도 날코딩을 했던 터라 뺐습니다 .
• UI 날코딩은 대책이 없나요 ?
– 잘 구조화된 CSS
– 템플릿 엔진 또는 프레임워크
• 왜 사용 하지 않았나요 ?
– 187 request,
– 1.7 MB transferred,
– 5.8 s ( onload 3.08s, DOMContentLoaded 2.07s)
– 이미 페이지 로딩이 너무 느려서 추가 라이브러리를 사
용하기엔 다소 무리가 있었습니다 .