안드로이드 앱 프로그래밍

저자
정재곤 지음
출판사
이지스퍼블리싱 | 2011-12-19 출간
카테고리
컴퓨터/IT
책소개
『안드로이드 앱 프로그래밍』은 진저브레드와 허니콤, 그리고 한 ...
가격비교 글쓴이 평점  

이번에 안드로이드 개발하면서 독학으로 공부해보고자 책을 보게되었는데 이해하기가 힘드네요..

저는 자바를 꽤 능숙하게 다룰줄 알고, 컴퓨터공학 대학원생입니다.


아이스크림 샌드위치 적용되었다고해서 코드를 그대로 치면서 해보고 있었는데

deprecated (더이상 지원하지 않는) 메소드들이 꽤 있습니다.

일단 이 부분에서 별점이 내려가고,

오타가 상당히 많습니다. 따라서 책만 봐서는 제대로 이해가 될리 없구요

저자 홈페이지 가서 소스코드를 보면서 이해를 하셔야합니다.

정오표가 있지만, 정오표를 일일이 보면서 책 읽는 것도 쉽지 않겠죠.


또한, 내용부분에 

예제 코드 설명이 핵심적인 부분이 제대로 설명되지 않아서 

예제 코드를 보면서 이부분이 이런 역할을 하는거구나 라며 제가 스스로 찾아서 이해를 하곤했습니다.

이책으로 공부하기에는 너무 비효율적이라 추천하지 않습니다.


코딩을 하는 순서또한 뒤죽박죽입니다.

코드를 순서대로 해놓지 않아서 이해하는데 시간이 걸립니다.


또한 코드 설명시, 

핵심 소스코드만 골라서 보여주지만, 설명이 매우 부족합니다.

글이 있긴 하지만 장황할뿐 딱히 핵심적인 내용을 보여주지 못하네요.


평점이 높아서 구매했지만, 추천하지 않습니다.


보다가 책 덮고 안드로이드 개발자 홈페이지의 튜토리얼을 보면서 하는게 훨씬 빠를거같습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[삼겹살]
  • 규격돈
    • 육질등급: 1+,1, 2
    • 규격등급: A, B, C
    • 80kg~98kg 에서 나오는 삼겹살
    • 75~78kg 규격돈에서 나오는 삼겹살의 양: 8.5kg

  • 초저가 대패 삼겹살의 꼼수
    • 국내산을 대패삼겹살로 하는것은 고기에 문제가 있다는 뜻이다.
      → 원래 국내산은 생으로 팔았을 때 더 비싸게팔 수 있지만, 대패는 냉동임

    • 국내산 암퇘지를 정말로 2000원대로 팔 수 있을까?
      • 1등급 국내산 암퇘지 1A의 원가는 100g에 1700원

    • 초저가 삼겹살은 "모돈"(어미돼지) 을 사용. 모돈은
      • 살보다 지방이 많음 → 지방과 살의 비율이 거의 1:1
      • 삼겹살 부위지만 2겹
      • 키운 개월수가 많고 새끼를 낳아서 육질이 규격돈 보다 많이 질김. 너무 질겨서 일반 삼겹으로는 먹기 힘듬
      • 냄새가 많이 남
      • 무게는 200~300kg정도 나감 (일반 돼지의 2~3배)
      • 모돈은 등급을 결정하지 않음 (등외 등급)
      • 보통은 육가공품으로 사용
      • 원가는 100g에 650원

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[곱창, 양, 대창]
  • 곱창: 곱창 안에 '곱'이라는게 맛있고 몸에도 좋다.
  • : 소의 위. 기름기가 없고, 단백질이 풍부하며, 비타민과 미네랄이 풍부하여 몸에 좋음.
    • 소 한마리에서 2~3인분 밖에 나오지 않음
  • 대창: 음식점에서 파는 대창은 '기름 대창'이라는 것, 원래 바깥에 이름이 붙어있지만, 음식점에서는 대창을 뒤집는다.
    • 이 기름은 포화 지방으로, 몸에 좋지 않다. 
    • 내장 지방으로 일반적인 고기의 지방보다도 포화도가 높다. 
    • 다른 돼지, 닭, 오리의 기름과 비교해도 포화도가 월등히 높다. 몸에 안좋다!
    • 술과 같이 먹는 열량은 보통 몸에 저장된다.
    • 200g 대창을 구우니 42g의 고기만 남음
    • 가격: 소 고기 부위중에 가장 싼 부위. 600g에 5천원 정도. 하지만 음식점에서는 200g에 17,000~27,000원에 판매
      • 고급음식점에서는 참숯(백탄)이나 인테리어, 밑반찬을 좋게해서 가격을 높게 받는다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[편의점 음식]
  • 삼각김밥: 묵은쌀을 새쌀처럼 보이게 하기 위해서 밥에만 15~20개의 첨가물이 들어감. 도시락 하나에 20개 정도의 첨가물이 들어감.
    • 편의점 밥에 뜨거운 물(혹은 녹차)를 넣으면 기름이 뜨게 됨
    • 편의점 삼각김밥 도시락을 사료로 먹인 후쿠오카 양돈농가 임신한 돼지 250마리 사산
  • 사례
    • 편의점 상품 개발팀 직원이 28일만에 건강이 나빠져 그만두고 5년 째 자취를 감춤
  • 첨가물
    • 값이 싸진다
    • 편안하게 먹을 수 있다
    • 보존성을 높일 수 있다
    • 보기에 매우 이쁘다.
    • 맛을 진하고 맛있게 한다.
  • 육가공품
    • 장기 및 먹을 수 있는 부분, 폐, 비장, 위, 장, 식도, 뇌 등이 육가공품으로 쓰임

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 산삼

2012.06.13 22:04 from 예전글들

[산삼]E02
  • 음식점에 들어가는 산양삼 3~4년산 가격: 개당 800원
  • 산양삼은 10년이 되어야 약효가 있음 (한의사)
  • 약효는 도라지 수준의 3~4년 산양삼.
  • 모든 삼은 5년근 이상만 판매함
  • 삼의 맛
    • 삼은 한의사들이 분류할 때 단맛에 속하는 맛. 
    • 산양삼이나 산삼은 맑은 맛이다.
    • 사포닌이 많을수록 쓰지 않다.
  • 인삼
    • 농가에서 재배한 것
    • 인삼은 뿌리가 굵음
  • 산양삼
    • 자연상태에 씨를 심어서 재배 한 것
    • 잔뿌리가 매우 얇음
    • 10년근이 되어도 크기가 크지 않음.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[매운 음식]
  • TV에서 매운 음식이 자주 등장 하는 이유
    • 그냥 맛있다거나 좋다는건 표현이 잘 안되지만, 맵고 짜고 신 음식들은 격렬한 반응을 쉽게 화면에 따올 수 있기 때문
    • 매운 맛은 통증
    • 고춧가루는 매우 비싸므로, 수입고추와 캡사이신 농축액을 사용 함 (청양고추의 1/30 가격인 캡사이신 농축액)
      • 캡사이신에 들어있는 합성 보존료와 유화제
    • 캡사이신이 50ppm 이면 맵다고 느낄 수 있음 
    • 100ppm이면 매우 매운맛임
    • 매운 돈까스의 1인분은 청양고추 80개의 캡사이신 양
  • 매운 음식을 먹은 후 
    • 점막이 붉게 변하는 현상 관찰
    • 위 점막에 급성 위염 소견 관찰
    • 나트륨 수치가 급증 → 매운 맛만 들어가면 아프기만 함. 아픈 것을 줄여주기 위해서 단맛을 넣게 됨. 단맛만 넣게 되면 빈듯하므로 짠맛을 넣음. 이렇게 세가지 맛이 부딪히므로 넣는게 화학조미료.
    • 동물 실험의 경우, 과량으로 들어오면 암을 일으킬 수 있다.
    • 쥐 실험에서 체중 1kg 당 50mg 정도가 치사량.
  • 매운음식점 폐해
    • 아무리 신선한 재료를 쓰고 아무리 솜씨있게 볶아내고 국물을 깊이 있게 우려낸다고 한들 사람들은 맵다는 것 밖에 기억을 못함
    • 음식의 맛이라기보다는 재미를 보러 오는 곳. 
    • 맛있고 좋은 음식을 먹으러 오는 개념은 아님
    • 맛을 찾으러 오는 식당은 아니고, 호되게 아파 보고 싶은 경우 권할만한 곳.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[도토리묵]
  • 전통방식으로 만들면 사람 손이 많이 가는 음식
  • 요즘 방식: 도토리 분말(섬유질은 다 빼고 전분만 있는 것)로 도토리 묵을 만듬
  • 문제:
    • 도토리 속의 아콘산이 폐수 속의 중금속을 떨어뜨리는 효과는 있지만, 먹었을 때 몸안에 있는 중금속을 배출시키는 효과에 대한 연구는 없음
    • 도토리 가루를 가는 기계를 오래 쓰다보면 쇳가루가 같이 포함되는 경우가 생김
    • 5개 제품 중 3개 제품에서 식약청 기준을 넘김
    • 국내산 도토리 생산량이 매우 적어서 중국산이나 북한산을 해서 씀
    • 국내산을 쓴다는건 거의 극소수. 보통 음식점은 국내산이 아님

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[학교 앞 먹거리]
  • 그린 푸드 존(Green Food zone): 학교와 학교 주변 200m안에는 어린이 건강을 해치는 건강저해식품과 불량식품 등의 판매를 금지하는 제도
    • 하지만 학교 앞 먹거리들 단속이 안되는 경우가 많음
    • 학원가 주변에는 그린 푸드존이 포함되지 않음 (관련 법안 국회 계류 중)

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[수험생 보양식 물범탕]
  • 물범탕: 대치동 보양식?
    • 건강원이 주장 하는 내용: 물범탕은 칼슘이 많아서 머리에 좋다. 뇌에 좋다고 주장. 키도 크게 한다고 주장
    • 이십전 대보탕 + 물범 + 철갑상어, 미꾸라지 + 효소,엿 → 4~5일 다리면 됨. 4달치가 200만원
  • 실제 한방에서는
    • 물개는 성질이 뜨거워서, 성장기일 때나 음기가 부족한 사람은 먹지 못하게 금기사항으로 되어있음
    • 물범, 철갑상어, 미꾸라지를 같이 먹으면 열량이 지나치게 높음
    • 물범탕에 설탕을 너무 많이 넣음
    • 칼슘이 풍부해서 머리가 좋아진다는 건 아님
    • 1% 정도의 칼슘이 신경 전달하는 기능을 하지만, 칼슘을 많이 먹는다고 머리가 좋아지는 건 아님
    • 물범에 소고기보다 200배 많다는 주장 → 물범 고기에 함유된 칼슘 함량은 많지 않다. 100g당 4~10mg 정도. 
    • 물범에 오메가3가 많다는 주장 → 멸치나 정어리는 100g당 1g의 오메가 3함유. 물범은 100g당 0.5~1g 함유. 특별히 많이 함유되어있지는 않음.
    • 오메가3는 먹이 사슬 단계에서 낮은 작은 물고기에서 추출한 오메가 3를 좋게 봄
      • 높은 단계인 연어, 물범으로부터 추출한 오메가3에는 중금속이나 다이옥신, PCB등이 축적되어 있으므로 좋지 않음
    • 물범 가격은 10kg에 15만원. 물범탕은 200만원.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 카레

2012.06.13 22:02 from 예전글들

[카레]
  • 카레에 있는 강황의 커큐민이 뇌세포 활동에 좋음.
    • 미국의 치매 발병률이 인도보다 6배가 높음. 하지만, 사람에게 투여한 커큐민의 효능이 입증되지 않음.
    • 커큐민은 단기간 소량 섭취로는 별 효과가 없을 것으로 보임. 하지만 인도처럼 어릴때부터 평생 먹는다면 좋은 효과를 얻을 수 있다고 추측됨
  • 인도카레는 강황이 1인분에 5g
    • 한국식 카레는 강황과 밀가루를 섞어서 사용. 실제 강황의 양이 매우 적음. 인도카레 1인분의 강황을 섭취하려면 우리나라 카레 6인분을 섭취해야 함

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 장어

2012.06.13 22:02 from 예전글들

[장어]
  • 무한리필 음식점의장어는 민물장어, 갯장어가 아님
    • 민물장어(뱀장어): (비쌈) 민물과 바다를 오가는 장어. 구하기 힘들어 대부분 양식. 지방이 많아 부드러움. (귀한음식)
    • 갯장어: (비쌈) 바다장어. 개의 이빨을 닮아서 갯장어라고 부름. 양식이 존재하지 않음
    • 붕장어: (싼 장어) 바다장어. '아나고'라고 하며 사계절 잡을 수 있음. 양식이 없음. 구이용 보다는 탕이나 회로 많이 먹음. 육질이 단단해 씹을수록 고소함. → 자연산 민물장어처럼 자연산 장어로 불리는 꼼수로 쓰임
      • 양념을 권하면 냉동 장어를 쓴다는 것임. 수족관 관리를 안해도되고, 장어를 잡을 필요도 없음
  • 무한리필 장어는 '붕장어'임
  • 장어
    • 1kg에 3~4마리가 가장 맛있는 크기
    • '풍천' 장어라 함은 특정 지역을 말하는게 아닌 강과 하구가 만나는 곳이라는 뜻임.
    • 자연산은 10년이 커야 1kg에 3~4마리가 됨
  • 민물장어(뱀장어) 양식의 문제점
    • 자연산 민물장어가 거의 사라져서 양식밖에 먹을 수 없음
    • 소화제, 영양제, 항생제를 투여
    • 양식은 6개월에 1kg에 3~4마리가 되어야 함
    • 갯벌장어
      • 양식장에서 1년동안 키운 장어들을 갯벌에 75일 동안 풀어놓아 그동안은 사료와 약품을 먹이지 않음
      • 양식장어를 자연산 장어로 속여서 팔기도 함
  • 자연산 장어
    • 전라북도 고창의 해리천
    • 돌무덤으로 전통방식으로 잡고 있음
    • 특징: 옆구리가 노르스름하고 배는 하얌. 양식은 노르스름한게 없음.
  • 장어의 지방은 불포화 지방산으로 성인병 예방에 탁월하지만, 오래된 장어 지방은 문제가 될 수 있다. 

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 숯

2012.06.13 22:01 from 예전글들

[숯]
  • 굽는 방식에 따라
    • 백탄: 옅은 회색 빛 
      • 반들반들하고 흰색을 띔
      • 불이 강함
      • 재가 될 때까지 사용할 수 있음
      • 1주일 동안 1000도 이상에서 구워지는 숯
      • 구이용에 적합
      • 숯 자체에 불순물이 거의 없음
      • 원적외선이 많이 나옴. 고기의 겉과 속이 동시에 익게 됨
      • 탄소밀도가 높아 전류가 잘 통함
    • 검탄
      • 600도 이상에서 구워지는 숯
      • 전기가 잘 통하지 않음
      • 검고 윤기가 없음
    • 성형탄
      • 보통 음식점에서는 발암물질이 가득한 성형탄을 사용
      • 폐자재로 성형탄을 만듬
      • 유해 성분이 가득함.
      • 수입수출 제한도 없고 검사도 안함
      • 숯불구이용으로 사용함.
      • 포름알데히드, 벤젠 등이 기준치보다 많이 검출됨
      • 화로에 한번 열을 가한 후에 사용하면 유해성분이 연기로 사라짐
  • 강도가 단단하고 오래가므로 참나무 사용
  • 충북 진천군: 국내 참나무 참숯 80% 생산

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 두유

2012.06.13 22:01 from 예전글들

[두유]
  • 어릴 때 두유를 많이 먹으면 불임의 위험이 높음
  • 콩에 많이 들어있는 이소플라본 성분은 여성 호르몬인 에스트로겐과 유사하여 피토 에스트로겐(식물성 에스트로겐)이라고도 함
  • 이소플라본의 문제
    • 집중력 결핍 장애, 주의력 결핍과잉행동장애, 학습장애 증가
    • 고농도의 망간은 뇌손상, 학습장애, 집중력 결핍장애, 주의력 결핍과잉행동장애, 폭력성 유발, 암과 갑상선에도 영향
    • 성장기 아이기에는 피하는것이 좋다. 성조숙증 유발 함.
    • 아이뿐만 아니라 성인들도 두유를 추천하지 않음.
  • 분리 대두 단백
    • 콩에서 단백질 성분만 정제 건조시켜 만든 제품
    • 분리 대두 단백을 제조하는 과정에서 콩에 함유되어있는 플루오르화합물이 가공과정 중에 그 양이 늘어나며, 이는 어린이의 신경질환이나 골다공증에 영향을 줄 수 있다.
  • 두유의 단맛
    • 두유에 들어가는 액상과당은 설탕의 6배의 당도를 가지고 있음
    • 과당은 인슐린이나 랙틴같은 호르몬을 자극하지 않으므로, 우리 몸에서 원하는 수준보다 훨씬 많은 양을 섭취할수있게 하고, 식욕 조절 시스템을 교란하여 비만이 될 수 있다.
  • 일본은 세가지로 나눠서 판매, 한국에는 "가공 두유"만 판매
    • 무조정 두유; 그대로의 두유
    • 조정 두유: 비린 맛을 없애기 위한 설탕이나 소금을 조금 더한 정도의 두유
    • 가공 두유: 첨가물 등이 들어가는 두유
  • 일본의 이소플라본 1일 권장 섭취량: 100mg. 우리나라에서는 법으로 지정한 성분 외에 추가적으로 업체에서 성분표기하는것이 금지되어 있으므로, 이소플라본 함유를 표시하지 않고 있음

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요


apt-get을 이용한 설치

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

$ sudo apt-get update

$ sudo apt-get install sun-java6-jdk


위와같이 설치가 안되는 경우 아래와 같이 설치한다.


수동으로 설치하는 방법


  1. http://java.oracle.com/ 에서 자바를 다운받음.
    → 단, 우분투는 데비안 계열이므로, RPM을 받지 않고, .bin 파일을 받아야 합니다.
  2. 권한 설정
    $ chmod +x jdk-6u32-linux-x64.bin
  3. /usr/local에 bin 파일 복사 및 압축 풀기
    $ sudo ./jdk-6u32-linux-x64.bin
  4. /usr/local/jdk1.6.0_32 에 압축이 풀림
  5. $ sudo update-alternates --install "/usr/bin/java" "java" "/usr/local/jdk1.6.0_32/jre/bin/java" 1
  6. $ sudo update-alternates --config java
  7. 설치된 자바 버전 확인
    $ java -version
    java version "1.6.0_32"
    Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
    Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)




퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

자바 (Java) 문법

2012.06.05 11:43 from 예전글들



주석

  • // 한줄 주석
  • /* 여러줄
      주석 */
  • /** Java Doc 주석 */



식별자

  • 숫자로 시작하지 않고, 스페이스를 포함하지 않는 글자, 숫자, 밑줄(_), 달러($)
  • 대소문자 구분
  • 클래스 이름: 대문자로 시작, 뒤는 소문자 예) SampleClassName
  • 변수, 함수 이름: 소문자로 시작 예) foo



문자 포맷팅

Escape character\n: 다음 줄의 처음으로 이동합니다.
\t: 탭
\r: 현재 줄의 처음으로 이동합니다.
\\: 백슬러시(\)를 출력할 때 사용
\": 큰 따옴표(")를 출력할 때 사용
Formatting specifier%s: 문자열
%f: float, double 값 표현
%.2f: 소수점 2째 자리까지 표현

%d: 정수






연산자

연산자 종류

  • 단항 후위 연산자: a++, a--
  • 단항 연산자: ++a, --a, +a, -a, (타입)
  • 산술 연산자
    • 곱셈(*), 나눗셈(/), 나머지(%)
    • 덧셈 또는 문자열 연결(+), 뺄셈(-)
  • 비교연산자
    • >, <, >=, <=
    • ==, !=
  • 타입 연산자: instanceof 예) 객체의 클래스 타입이 맞는지 반환. 객체 instanceof 클래스이름
  • 조건 연산자: ?:
  • 대입 연산자: =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=
  • 논리 연산자: &&, ||, !
  • 비트 연산자
    • 왼쪽 시프트(<<), 오른쪽 시프트(>>), 부호 없는 오른쪽 시프트(>>>)
    • &, |, ^, ~


연산자 우선순위

위에서 아래로 내려갈수록 우선순위가 낮아집니다.
  • a++, a--
  • ++a, --a, +a, -a, NOT(!), complement(~), (타입)
  • *, /, %
  • 덧셈 또는 문자열 연결(+), 뺄셈(-)
  • <<, >>, >>>
  • <, <=, >, >=, instanceof
  • ==, !=
  • &
  • ^
  • |
  • &&
  • ||
  • ?:
  • =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=


타입

  • primitive type → java.lang에 있는 Wrapper class
    • boolean → Boolean
    • byte → Byte
    • char → Character
    • short → Short
    • int → Integer
    • long → Long
    • float → Float
    • double → Double

배열

  • 배열 선언
    • int c[] = new int[12];
    • int[] c = new int[12];
    • int[] array1, array2; // 둘다 배열로 선언
    • int c[][] = new int[2][2];
    • int b[][];
      b = new int[2][];
      b[0] = new int[5]; // 첫 행에 5개의 열
      b[1] = new int[3]; // 첫 행에 3개의 열
  • 값 지정
    • int n[] = {1,2,3,4};
    • int n[][] = {{1,2}, {3,4}};
  • 접근
    • myArray[2] = var;


제어문

조건문

if

if(조건문) { ... } else { ... }

?:

System.out.println(studentGrade >= 60 ? "Passed" : "Failed");

switch

switch(타입이 int 또는 enum 변수명)
{
  case1:
 <statements>
 break;
  case2:
 <statements>
 break;
  ...
  default:
 <statements>
 break;
}


반복문

while

while( 조건문 ) { ... }

do ~ while

do { …  } while( 조건문 );

for

for(int i=1; i<10; i++) { ... }

enhanced for

배열이나 Collection을 순회할 때 인덱스 없이 반복할 수 있습니다. 단, 각 배열 값을 for문에서 아래 코드의 number로 수정할 수 없습니다. array[0] = 1; 과 같이 배열에 직접 접근해서 수정해야 함.
int array[] = { 87, 68, 94, 100, 83 };
int total = 0;
for(int number : array) {
  total += number;
}



레이블

switch, while, do/while, for, for/in 문장에 레이블을 붙일 수 있습니다.
parser:
while(token != null) { ... }



continue

현재 반복문을 탈출합니다.
  • continue;
  • continue 레이블이름;

예) 0,1,2,4만 순회
for(int i=0; i<5; i++) {
  if( i==3 ) continue;
}



break

switch, for, while 문으로부터 탈출합니다. 레이블 이름을 붙이는 경우, 해당 루프를 탈출합니다.
for(int i=0; i<5; i++) {
  if( i==3 ) break;
  System.out.println(i);
}




예외처리

try

try {

  <statements>

} catch (<예외 클래스> e) {

  <try {...} 내부에서 예외가 발생하면 실행될 코드>

} catch (<예외 클래스> e) {

  <try {...} 내부에서 예외가 발생하면 실행될 코드>

} finally {

  <try나 catch가 실행된 후 반드시 실행될 코드>

}


  • try: try 문 실행 도중 예외가 발생하면 나머지 코드는 무시하고 현재 발생한 예외를 처리 할 수 있는 catch 문으로 이동합니다.

  • catch: 예외가 발생하는 경우, catch에서는 현재 발생한 예외와 일치하는 가장 첫 catch 블록만을 실행합니다.

  • finally: System.exit(); 메소드를 사용하는 경우를 제외하고는 try { ... } catch { ... } 가 실행된 후에 continue, return, break 문이 실행 되어도 반드시 finally 문이 실행됩니다.

  • 예외를 전부 처리할 수 없는 경우: 발생한 예외를 전부 처리할 수 없는 경우, 일부만 처리하고 나머지는 호출한 메소드에서 처리하도록 다시 throw로 예외를 던질 수 있습니다.
    try { ... } catch (Exception e) {
      // <예외중 일부만 처리>
      
    throw e;  또는 throw new Exception();
    }

throw

예외를 발생시킵니다.

throw new Exception();



예외의 종류

  • checked exception: 반드시 try로 예외 처리를 하거나 메소드 선언시 throws로 예외가 발생함을 명시적으로 나타내야 하는 예외

  • unchecked exception: try나 throws로 예외를 처리하지 않아도 되는 예외



예외의 상속 구조

  • Throwable(checked exception):
    모든 예외의 슈퍼클래스. 예외 핸들링은 Throwable 객체만 사용할 수 있습니다.

    • Exception(checked exception):
      자바 프로그램에서 발생하는 예외상황을 나타냅니다. 어플리케이션에서 잡아서 처리합니다.

      • RuntimeException(unchecked exception)
        어플리케이션에서 처리하지 않는 예외입니다.

        • ClassCastException

        • ArrayIndexOutOfBoundsException

        • NullPointerException

        • InputMismatchException

        • ArithmeticException

        • IOException

    • Error(unchecked exception):
      JVM에서 발생할 수 있는 예외적인 상황을 나타내며,
      정상으로 돌아오는 것이 대개 불가능하므로, 애플리케이션에서 처리하지 않습니다.

      • AWTError

    • ThreadDeath

    • OutOMemoryError




접근 제한자(클래스, 필드, 메소드, interface, enum)

  • public: 모든 패키지에서 접근 가능
  • private: 같은 클래스 내부에서만 접근 가능
  • protected: 정의한 클래스의 메소드나 상속 받은 메소드에서 접근 할 수 있습니다.
  • 접근 제한자를 쓰지 않는 경우: 같은 패키지에 있는 클래스에서만 접근할 수 있습니다.

클래스 (Class)

클래스 선언

[final] [abstract] [public] class <클래스이름>  [extends <상속할 부모 class이름>]
                                [implements
<상속할 부모 interface이름>, ...] {
  
<클래스 Property 선언>
  <클래스 Method 선언>
}

  • final: final 클래스는 상송할 수 없으므로, 자식 클래스가 없습니다.
  • abstract: 이 클래스가 추상 클래스임을 나타냅니다.
    • 구현이 되지 않은 abstract Method가 포함되어있음을 나타내며,
    • 이 클래스로 바로 객체를 생성할 수 없습니다.
  • extends: 이 클래스가 상속받는 클래스
  • implements: 이 클래스가 상속받는 인터페이스


클래스의 static 영역

클래스를 처음 접근 했을 때 호출되는 영역
static 변수를 초기화하거나 기타 초기화 작업을 할 때 사용합니다.

예) class Test {

       private static final String text;

         static {

            text = "TEST";

         }

      }



필드 & 메소드

필드

[public|protected|private] [final] [static] [transient] [volatile] int foo = 10;


클래스의 속성 변수는 외부에서 수정할 수 없도록 private/protected으로 선언합니다. 속성 값은 public인 set, get함수로 각각 값을 지정하거나 얻습니다.
  • public, protected, private, 생략하는 경우: 접근 제한자
  • final: 변수 값을 변경할 수 없는 상수로 선언합니다. 선언할때 초기화를 반드시 해야합니다.
  • static: 한 Class의 모든 객체가 공유하는 변수로 객체가 없어도 접근 가능
      public final
    static double PI = 3.141592; // static field. 클래스이름.필드이름 으로 참조
  • transient:
  • volatile:

클래스 내에서 접근할 수 있는 미리 지정된 객체
  • this: static 타입의 메소드가 아닌 경우, 현재 객체를 메소드에서 this로 접근할 수 있습니다.
  • super: 현재 객체의 클래스가 상속받는 부모 클래스 타입의 객체를 반환합니다.

메소드

[public|private|protected] [abstract] [synchronized] [final] [static] <반환타입> <메소드이름> ([<argument type> <argument name>]*) [throws <예외클래스이름>+]
  • 접근 제한자
  • abstract: 추상 메소드로 이 클래스에서는 선언만 하고 메소드를 정의하지 않습니다. 추상 클래스나, interface에서만 사용할 수 있습니다.
    abstract void foo();
    static 메소드는 오버라이딩이 불가능하므로  추상메소드가 될 수 없습니다.
  • synchronized:
  • final: 현재 클래스를 상속 받은 자식 클래스에서 override 할 수 없습니다.
  • static: 객체를 생성하지 않고 호출할 수 있는 메소드
  • throws: 예외처리 부분 참조. 해당 메소드에서 발생할 수 있는 checked exception(메소드 안에서 try로 잡히지 않은 예외)을 명시적으로 나타내야 합니다.
    • 상속: 오버라이딩하는 경우, 부모클래스의 throws에 선언된 예외 이외의 예외는 throws에 추가할 수 없습니다.


생성자
반환타입이 없고 클래스 이름과 동일
class MyClass {
  public MyClass(String courseName) { // 생성자
     this.courseName = courseName;
  }
}
  • this( ... ): 생성자에 현재 클래스의 다른 생성자를 호출할 수 있습니다.
  • super( ... ): 클래스를 상속 받아 생성자를 Overriding하는 경우 부모의 생성자를 호출할 수 있습니다. 단, 해당 생성자에서 가장 처음 나와야 합니다.

finalize
가비지 컬렉터가 객체의 메모리를 회수하기 직전에 객체의 종료 작업을 위해 호출하는 protected 메소드 입니다.
  • 정의:
    class Foo {
      protected void
    finalize() {
         System.out.println("finalized");
      }
    }
  • Foo foo = new Foo(); // 객체를 생성
    foo = null; // 가비지 컬렉터 대상임을 표시
    System.gc(); // 명시적으로 가비지 컬렉터 실행
  • 주의: 메소드가 호출될 지 보장할 수 없습니다.


static
  • 객체를 생성하지 않고 호출할 수 있습니다.
      public
    static void main(String args[]) { … } // static 메소드. 클래스이름.메소드이름 로 호출

메소드 오버로딩
  // 생성자 같은이름의 메소드를 파라미터만 달리해서 정의할 수 있습니다.
  public MyClass() { }
  public MyClass(String courseName) { }

  // 메소드를 오버로딩 하는 경우
  public int square(int intValue) { }
  public int square(double doubleValue) { }


set/get 함수
  public void setCourseName(String name) { // set함수: property에 접근
     this.courseName = name;
  }

  public String getCourseName() { // get함수: property에 접근
     return courseName;
  }

return
  • 메소드가 void type인 경우: return;
  • 이외의 경우: return expression;

toString
객체를 문자열로 변환하는 메소드
  public String toString() {
     return
문자열;
  }

가변 인자 목록
public class VarargsTest {
  public static double average( double... numbers ) {
     double total = 0.0;
     for( double d : numbers )
     total += d;
      ...
  }
}


클래스 객체

  • 객체 생성: Foo foo = new Foo(파라미터);


상속

  • Method Overriding: 클래스를 상속 했을 때, 부모 클래스의 메소드를 자식 클래스에서 재정의 할 수 있습니다.
    static 메소드는 오버라이딩 할 수 없습니다.

    Parent의 foo() 메소드를 Child 클래스에서 상속받아 Override한 예:
    public class Parent {
      void foo() { System.out.println("Parent's bar"); }
    }
    class Child extends Parent {
      void foo() { System.out.println("Child's bar"); }
    }

다형성 (Polymorphism)

다음과 같이 객체를 생성할 수 있습니다.
Parent a = new Child();

Interface

abstract method를 포함하고 있습니다. Interface를 상속받아서 클래스의 메소드들을 구현하여 사용할 수 있습니다.

예)

public interface Payable {

  double getPaymentAmount();

}


정의

interface 인터페이스이름 [extends <interface이름1>, <interface이름2>, ...];
  • abstract method를 포함하고 있습니다.
  • final로 정의된 상수를 포함하고 있습니다.
  • 변수는 선언할 수 없습니다.


Enum

enum 정의

  • 클래스의 멤버 변수로 enum 정의
    public class Craps {
      private
    enum Status { CONTINUE, WON, LOST};
    }
  • enum 정의
    public enum Book {
      AAA("aaa"), BBB("bbb"), CCC("ccc");
      private String title;
      Book(String title) {
         this.title = title;
      }
      public String getTitle() {
         return title;
      }
    }
  • 메소드를 상속받는 경우
     public static enum Store {
      YES {
         @Override
         public boolean isStored() { return true; }
         },
         NO {
            @Override
            public boolean isStored() { return false; }
         };
         public abstract boolean isStored();
     }




enum 메소드

  • Book.values(): enum의 값들을 배열로 반환


Package

import패키지에 미리 정의된 클래스를 사용합니다.
  • import java.util.Scanner;
  • import static java.lang.Math.*; // Math의 static 멤버를 Math. 를 붙이지 않고 사용
package
  • 소스코드의 가장 처음에 선언합니다.
  • 현재 클래스의 패키지 이름일 지정합니다.
  • 패키지 이름은 인터넷 도메인의 역순으로 표시합니다.

예) package com.zyint.util





제네릭 (Generic)

제네릭에서 사용하는 타입은 primitive 타입이 아닌 wrapper class를 사용합니다. 즉, 정수를 제네릭에서 표현할 때 int가 아닌 Integer 클래스를 사용함
  • <T>: 모든 클래스가 제네릭 타입이 될 수 있습니다.
  • <T extends Comparable<T> >: Comparable 인터페이스를 상속받는 클래스만 제네릭 타입이 될 수 있습니다
      예) public static <T extends Comparable<T> > T maximum(T x, T y, T z) { … }
  • <? extends Number>: wildcard type argument.
      예) Integer 클래스가 Number가 자식 클래스 일 때,
    void sum(ArrayList<Number> list) 함수에 ArrayList<Integer> 변수를 함수의 argument로 넘길 수 없습니다. → void sum(ArrayList<? extends Number> list)로 변경하면 ArrayList<Integer>타입의 변수도 인자로 받을 수 있습니다.


Generic Class

클래스에서의 제네릭 타입을 설정합니다.

예) public class Stack <E> {
private E[] elements;
    …

    }



Generic Method

함수 파라미터의 변수 타입에 따라서 타입이 결정되도록 합니다
예) public <E> void print(E value) { }
    public <E> void print(E value1, E value2) { }

참고자료

  • Java How to program (한글 6판), Prentice Hall -

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

2010.08.16 10:21 from 예전글들

기본정보




참고자료

예스24

아마존



퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

2010.07.05 00:40 from 예전글들



Cydia

탈옥 방법http://app.co.kr/?mid=iphone_info&category=718431&document_srl=647580



소스


어플리케이션 목록

  • 5-row Qwerty keyboard: 키보드 위에 숫자 행을 추가합니다.


  • Action menu: 복사 및 붙여넣기에 기능 추가

  • Backgrounder: 멀티 태스킹 지원

    • Kirikae: 멀티태스킹 작업을 목록으로 보여줌

    • Proswitcher: 멀티태스킹을 시각적으로 표현


  • Categories: 앱들을 분류해서 저장하는 기능

    • CategoriesSB[유료]: 무료보전보다 이쁘고 속도가 빠름

  • CyDelete: 시디이 어플을 스프링보드에서 삭제할 수 있도록 합니다.


  • Sysinfoplus: 아이폰의 용량, 메모리 등의 정보를 볼 수 있습니다.
  • LockInfo[유료]: 대기 화면에 각종 정보를 표시 ★★★★★
    • Lock weather plugin for LockInfo
    • Twitter Plugin for LockInfo
    • Clock Plugin for LockInfo
    • Weather Plugin for LockInfo
  • Recent/CallLog Delete[유료]: 최근 통화목록을 하나씩 지울 수 있게 합니다.

  • OpenSSH: ssh접속을 열어줍니다. SFTP 접속을 위해서는 필요합니다.
  • WinterBoard: 테마적용 어플

  • biteSMS: 아이폰 SMS 기능 확장
  • Data Toggle: 3G를 쓸지 SBSetting 에서 토글로 지정 가능
  • afc2add: blackra1n으로 탈옥한 경우, FTP접속이 아닌 USB를 통한 직접 연결인 경우, 파일 수정을 통하여 USB 직접전송이 가능하게 해줍니다. 아이펀 박스나 아이펀 익스플로러를 쓸 경우 아이튠즈(아이튠즈와 봉쥬르)와 afc2add가 필요합니다.

  • Five icon Dock: 맨 아래 독 아이콘을 다섯개까지 넣을 수 있게 해줍니다.
  • iFile: 파일 뷰어
  • Installous: 아이튠스로 동기화가 안되는 어플을 해결하기 위한 프로그램

  • MxTube: Youtube의 동영상 다운로드

  • SBSetting(스프링보드 셋팅): 여러가지 셋팅이나 각종 기능들을 토글키로 ON/OFF 가능

    • Autolock SBSettings: 자동잠금 기능 토글
    • Autocorrection SBSettings: 자동완성 기능 토글
    • sbsettingstoggles
  • Searcher: 아이폰 데이터 검색

  • SpringJump: 스프링보드에서 페이지 이동 아이콘 생성

  • Veency: VNC로 컴퓨터에서 아이폰 화면을 공유

  • Veency SBSetting Toggle:

  • Winterboard: 테마를 적용하기 위한 프로그램

  • MyWi: 아이폰을 AP로 하여 3G를 테터링 연결하도록 함



Cydia .deb 파일 설치 방법

다음 방법중 편한 방법으로 하면 됩니다.
자동설치 방법을 추천!

터미널 설치
1. .deb 파일을 다운로드 받습니다.
2. SSH 로 아이폰/아이팟터치에 임의의 폴더에 파일복사 후 터미널을 열어 dpkg -i 파일명.deb 를 실행합니다.
3. 아이폰/아이팟터치를 Respring 합니다.

자동 설치
1. SSH 로 아이폰/아이팟터치의 var/root/Media/Cydia/AutoInstall 의 폴더로 복사합니다[해당 경로가 없으면 생성 후 복사]
2. 아이폰/아이팟터치를 Rebooting 합니다
3. 아이폰/아이팟터치를 Respring 합니다.



아이폰 어플

음악

  • VoiceBand: 목소리로 기타, 베이스, 드럼의 소리를 만들어주고 노래를 만들어주는 어플


퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

2010.05.26 20:24 from 예전글들




  • 변수 값 지정
    • 서버의 시스템  변수는 서버가 실행될 때 옵션 파일을 이용하여 지정할 수 있습니다.
    • SET 문을 이용하여 동적으로 지정할 수 있습니다.
  • 변수 값 조회
    • 옵션 파일을 포함한 설정 값 조회: mysqld --verbose --help
    • 옵션 파일을 제외한 설정 값 조회: mysqld --no-defaults --verbose --help





더보기

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_character_set_client

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

요약

윈도우에서 파일 저장 다이얼로그의 왼쪽에 나오는 단축아이콘에 사용자가 자주 사용하는 폴더를 등록할 수 있습니다.

 

 

방법

  1. 레지스트리 편집기릴 실행에서 regedit를 입력하여 실행합니다.
  2. 다음 경로로 이동합니다.
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\PlacesBar

    단, 키 값 ComDlg32\PlacesBar는 직접 생성합니다.

  3. 이 위치에 문자열 값을 생성하여 문자열 값의 이름은 place0, place1, ... 등으로 하고 값으로 폴더 경로를 입력합니다.
  4. 폴더 경로를 입력하지 않으면 내 컴퓨터가 실행됩니다.

 

 

 

참고자료

http://comlog.kr/20

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

L.jpg 기본정보

  • 저자: 신호철,우상정,최동진 공저
  • 역자:
  • 출판사: 위키북스
  • ISBN-10:
  • ISBN-13: 9788992939300
  • 출 판일: 2009년 06월 30일
  • 페이지 수:572쪽
  • 언어:

 

 

 

책 소개

'파이썬 3 프로그래밍'은 강력하고 쉬운 언어인 파이썬을 자유자재로 사용하는 방법을 안내해 줄 최선의 선택이 될 것이다. 이 책은 배우기 쉽고 윈도우나 유닉스 등 여러 운영체제에서도 큰 수정 없이 잘 동작하는 프로그래밍 언어인 파이썬 3을 다루고 있다. 지루한 문법 설명만 하는 것이 아니라, 실제 활용 가능한 예제들과 함께 설명을 하고 있는 이 책은 업그레이드된 파이썬 3 버전의 달라진 문법을 익힐 수 있다.

자세한 설명과 간단한 예제로 파이썬 3의 기능을 익힌 후에 파이썬3의 필수 모듈에 대해 설명하고 있다. 마지막으로 '파이썬을 이용한 블로그 검색엔진 만들기'라는 프로젝트를 통해 기존에 배웠던 파이썬에 대한 지식을 더욱 넓힐 수 있도록 하고 있다.

 

 

목차

1부 문법

1장 파이썬 개요 및 설치
1.1    파이썬이란
1.2    파이썬의 특징
1.3 파이썬의 종류
1.4 파이썬이 쓰이는 프로젝트들
1.5 2.x와 3의 차이   
1.6    설치 및 개발환경   
1.7    Hello world
1.8    들여쓰기에 대해서
1.9    소스코드 인코딩
1.10    기타 파이썬 문법
1.11    2.x를 3으로 변경하기

2장 자료형 및 연산자
2.1    변수명
2.2    수치
2.3    문자
2.4    유니코드
2.5    리스트
2.6    세트
2.7    튜플
2.8    사전
2.9    부울
2.10    얕은/깊은 복사에 관해

3장 함수
3.1    함수의 정의
3.2    return
3.3    인수 전달
3.4    스코핑 룰
3.5    함수 인수
3.6    람다 함수
3.7    재귀적 함수 호출
3.8    pass
3.9    __doc__ 속성과 help 함수
3.10    이터레이터   
3.11    제너레이터   

4장 제어   
4.1    if 문   
4.2    조건식의 참/거짓 판단   
4.3    단축 평가   
4.4    while 문   
4.5    for 문   
4.6    break, continue 그리고 else   
4.7    제어문과 연관된 유용한 함수들

5장 클래스   
5.1    클래스 이야기   
5.2    클래스 선언   
5.3    클래스 객체와 인스턴스 객체의 이름 공간   
5.4    클래스 객체와 인스턴스 객체의 관계   
5.5    생성자, 소멸자 메소드   
5.6    정적 메소드, 클래스 메소드   
5.7    연산자 중복 정의
5.8    상속

6장 모듈
6.1    모듈 사용하기
6.2    모듈 만들기
6.3    모듈의 경로
6.4    모듈 임포트
6.5    모듈 임포트 파헤치기
6.6    '__main__' 을 사용한 유용한 팁
6.7    패키지

7장 예외처리
7.1    구문 에러
7.2    예외
7.3    예외 처리
7.4    raise 구문
7.5    사용자 정의 예외
7.6    assert 구문

8장 입출력
8.1    표준 입출력
8.2    파일 입출력
8.3    pickle

9장 c/c++와 연동
9.1    왜 확장 모듈이 필요한가?
9.2    간단한 확장 모듈 예제
9.3    모듈 초기화
9.4    모듈 빌드
9.5    파이썬 C/API
9.6    에러 처리
9.7    레퍼런스 카운트
9.8    확장 타입
9.9    ctypes

2부 중요 모듈

10장 문자열 이야기
10.1    문자열 다루기
10.2    정규표현식(re) 모듈

11장 날짜 이야기
11.1    시간(time) 모듈
11.2    날짜시간(datetime) 모듈

12장 숫자 이야기
12.1    수학(math) 모듈
12.2    분수(fractions) 모듈
12.3    십진법(decimal) 모듈
12.4    랜덤(random) 모듈

13장 파일 시스템을 자유자재로
13.1    os.path
13.2    glob
13.3    tree 예제

14장 데이터베이스의 사용
14.1    데이터베이스 연결
14.2    SQL문 수행
14.3    레코드 조회
14.4    트랜잭션 처리
14.5    레코드 정렬과 사용자 정렬 함수
14.6    SQLite3 내장 집계 함수
14.7    사용자정의 집계 함수
14.8    자료형
14.9    사용자 정의 자료형
14.10    데이터베이스 덤프 만들기
14.11    명령어 프롬프트에서 SQLite3 관리하기

15장 운영체제 관련 주요 모듈
15.1    os 모듈
15.2    sys 모듈
15.3    threading 모듈
15.4    queue 모듈

16장 XML 사용하기
16.1    파이썬과 XML
16.2    XML 문서 파싱하기
16.3    노드
16.4    엘리먼트
16.5    엘리먼트 쉽게 다루기
16.6    XML 문서를 HTML로 변환하기
16.7    도서관리 프로그램

17장 파이썬과 인터넷
17.1    파이썬이 지원하는 네트워크, 인터넷 모듈
17.2    OpenAPI를 이용해 책 정보 가져오기
17.3    파이썬으로 이메일 보내기
17.4    웹 서버 만들기

18장 보다 견고한 코드 만들기
18.1    단위 테스트(unittest)
18.2    pydoc
18.3    doctest

19장 distutils를 이용한 배포
19.1    도서관리 프로그램 배포하기
19.2    setup.py 파일 작성하기
19.3    확장모듈 배포하기
19.4    Setup Configuration 파일 작성 방법

3부 검색엔진 만들기

20장 자료수집
20.1    웹 크롤러

21장 인덱싱
21.1    루씬이란?
21.2    PyLucene 설치
21.3    PyLucene 활용하기
21.4    BlogSearcher 클래스

22장 검색 사이트 만들기
22.1    장고 설치하기
22.2    프로젝트 생성하기
22.3    장고 프레임워크
22.4    Model, View, Template
22.5    메인 페이지 만들기
22.6    검색 결과 페이지 만들기

부록 A. Pydev 설치와 사용 방법
A.1    Pydev 설치 방법
A.2    Pydev를 이용하여 개발하기

부록 B. pdb 모듈을 이용한 디버깅
B.1    디버깅을 위한 코드 정의
B.2    pdb 실행과 종료
B.3    소스코드와 실행위치 보기
B.4    브레이크 포인트 설정하기
B.5    코드를 수행하며 변수값 확인하기
B.6    도움말

 

 

 

참고자료

http://www.yes24.com/24/goods/3432490?scode=032&srank=1

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

구글 DNS

2010.03.02 02:57 from 예전글들

구글에서 공식적으로 DNS서비스를 지원합니다.

 

  • 기본 설정 DNS서버: 8.8.8.8
  • 보조 DNS서버: 8.8.4.4

 

 

참고자료

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

요구사항

  • iPhone OS 3.0 이상

 

 

 

설정 방법

아이폰에서 다음과 같이 설정합니다.

  • 설정에 들어갑니다
  • 메일, 연락처, 캘린더를 선택합니다.
  • 계정 추가를 선택합니다
  • Microsoft Exchange를 선택합니다.

    • 이메일 필드에는 구글 이메일 주소를 입력합니다.
    • 도메인은 비워둡니다.
    • 사용자 이름에 구글 이메일 주소를 입력합니다.
    • 암호를 입력합니다.
  • 오른쪽 위의 다음을 선택합니다.

    • Unable to Verify Certificate 창에서 Accept를 선택합니다.
  • 서버 필드에 m.google.com을 입력합니다.
  • 오른쪽 위의 다음을 선택합니다.
  • 메일, 주소록, 캘린더 중에서 동기화 하고자 하는 서비스를 선택합니다.
  • 오른 쪽 위의 완료를 누르면, 아이폰에 있는 데이터를 어떻게 할  지 물어봅니다. 적당한걸 선택합니다^^;;

 

 

 

참고자료

Google Sync: Setting Up Your iPhone or iPod Touch

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

User Profile Folder 경로 변경

  • 적용이 성공한 윈도우 버전: 윈도우 7(Windows 7)

기본적으로 C:\Users\ 이하에 생성되는 User Profile Folder의 경로를 레지스트리 수정으로 변경할 수 있습니다.

C:\Users 또는 %SystemDrive%\Users 로 되어있는 것을 변경하고자 하는 드라이브로 변경하면 됩니다.

예를 들어, D 드라이브로 변경하고자 하는 경우, 위 두 가지 경우를 모두 찾아서 D:\Users 로 변경하면 됩니다.

 

그리고 윈도우 설치 씨디로 부팅 후, 프롬프트에서 xcopy로 Users의 내용을 복사하고(옵션: /E/H/C/V/K), C 드라이브의 Users를 삭제합니다.

 

  • 알려진 문제점

    • 이 작업을 수행하기 전에 설치되었던 프로그램들이 시작 > 프로그램에 표시되지 않는 문제가 있습니다.
    • 윈도우 계정의 이미지가 보이지 않는 문제가 있습니다.

 

 

 

Program Files 경로 변경

레지스트리에서 다음 경로에 있는 키값을 변경하여 기본 Program Files의 경로를 지정할 수 있지만,

마이크로소프트에서는 공식적으로 경로 변경을 지원하지 않습니다. (참고: Microsoft은 ProgramFilesDir 레지스트리 값을 수정하여 Program Files 폴더의 위치를 변경하는 것을 지원하지 않습니다.)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

 

실제로 적용해 본 결과,

Adobe Creative Suite 4 Master Collection을 설치할 때 경로를 C드라이브가 아닌 경로로 지정했음에도 C:\에 설치되는 문제가 있습니다.

따라서 Common 파일들만 다른 드라이브로 레지스트리에서 지정하고, C:\Program Files는 프로그램 설치할 때 경로를 변경하여 설치해야 합니다.

 

 

 

참고자료

Joshua Mouch의 블로그, "Change User Profile Folder Location in Vista"

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

포맷 전에 백업해야 할 목록

  • iTunes 인덱싱 파일( 내음악\iTunes )
  • 크롬/익스플로러/파이어폭스 즐겨찾기
  • 구글크롬 파일 다운로드 폴더

 

 

 

필수 설치 프로그램 목록

 

 

 

프로그래밍

 

Eclipse : http://www.eclipse.org/downloads/

 

 

Visual Studio 2010 : https://www.dreamspark.com/

 

Matlab 2009b

 

Python : http://python.org/download/

 

 

 

 

참고자료

http://hellodj.springnote.com/pages/5138181

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

주의

탈옥한 경우에만 이 팁을 사용할 수 있습니다.

 

 

 

SSH 접속 방법

  • http://www.mediafire.com/?2q1fzowoy12 에서 iTunnel9을 다운로드 받습니다.
  • iTunnel.exe 22 22  를 입력하면 22번 포트로 접속할 수 있습니다. 여기서 22번 포트는 SSH 포트 입니다.
  • 아이폰의 Cydia에서 OpenSSH 를 설치합니다
  • SBSetting에서 SSH를 켜줍니다.
  • Putty와 같은 SSH 접속 프로그램으로 127.0.0.1:22로 접속 합니다.
  • id: root, password: alpine(또는 변경한 비밀번호)로 접속합니다.

 

 

 

컴퓨터에서 아이폰 화면을 보는 VNC 접속 방법

  • Cydia에서 Veency를 설치합니다.
  • 컴퓨터에서 iTunnel 5009 5009를 실행합니다.
  • VNC Viewer를 이용하여 127.0.0.1:5009 포트로 접속하면 아이폰의 화면을 볼 수 있습니다.
  • 한계점: VNC의 한계로 동영상 재생이나, 다음 지도의 위성 사진 등은 볼 수 없고, 상당히 많이 끊기는 현상을 볼 수 있습니다.

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 4 : 댓글 0

댓글을 달아 주세요

아이폰 꾸미기

2010.02.07 03:01 from 예전글들

탈옥후 다운받는 프로그램

  • Cydia Application

    • SBSetting(스프링보드 셋팅): 여러가지 셋팅이나 각종 기능들을 토글키로 ON/OFF 가능
    • Winterboard: 테마를 적용하기 위한 프로그램
    • openSSH: ssh접속을 열어줍니다. SFTP 접속을 위해서는 필요합니다.
    • mobile terminal: 아이폰용 터미널 프로그램. 비밀번호를 바꿀 때 사용합니다

      • 비밀번호 변경 방법: su root → "alpine" 입력 → passwd로 새로운 비밀번호 지정
    • afc2add: blackra1n으로 탈옥한 경우, FTP접속이 아닌 USB를 통한 직접 연결인 경우, 파일 수정을 통하여 USB 직접전송이 가능하게 해줍니다. 아이펀 박스나 아이펀 익스플로러를 쓸 경우 아이튠즈(아이튠즈와 봉쥬르)와 afc2add가 필요합니다.

 

 

 

일반 어플리케이션

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 3 : 댓글 0

댓글을 달아 주세요

문제해결

2010.02.05 01:25 from 예전글들

 

  • 윈도우에서 iPhone을 인식하지 못하는 경우

    • 증상: 내 컴퓨터/속성/장치 관리자/휴대용 장치/Apple iPhone 로 잡혀있을 때 해결 방법
    • 해결: 원래 Apple iPhone이 인식 되려면 범용 직렬 버스 컨트롤러에 있어야 합니다.
      내 컴퓨터/속성/장치 관리자/휴대용 장치/Apple iPhone오른쪽 클릭 → 속성 → 드라이버 업데이트 → 내 컴퓨터에서 직접 찾기에서
      보통 경로를 C:\Program Files\Common Files\Apple\Mobile Device Support\Drivers 로 지정하여 해결할 수 있습니다.
      참고: http://blog.lastcry.org/43

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

cover.jpg기본정보

  • 저자: 레베카 리오단
  • 역자: 홍승표,김은희
  • 출판사: 한빛미디어
  • 원서: Head First Ajax (2008)
  • ISBN-10:
  • ISBN-13: 9788979146936
  • 출판일: 2009년 09월 19일
  • 페이지 수: 536쪽
  • 언어: 한글

 

 

 

책 소개

Head First 시리즈인 이 책은 기발한 상상력과 설명법으로 실용적인 웹 프로그래밍 기법을 재미있고 쉽게 설명하였다. Ajax와 떼어놓고 말할 수 없는 자바스크립트와 다양한 프레임워크의 필수적인 사용법을 깊고 체계적으로 학습할 수 있다. 그리고 Java와 C# 등 다양한 언어를 사용하여 어떤 분야의 종사하는 웹 개발자라도 유용하게 활용할 수 있도록 구성하였다.

Ajax를 처음 다루어보는 모든 웹 개발자를 위해 쉽게 재미있는 예제를 제공한다. 그리고 현실에서 마주치기 쉬운 웹 서비스는 물론 서비스 제공자의 고민과 해결법을 담아 더 사용하기 쉬운 웹 사이트를 고객에게 제공할 수 있는 방법을 알려준다.

 

 

목차

1. Ajax 사용하기: 새 시대를 위한 웹 애플리케이션
지금까지의 웹 페이지
개선된 웹 페이지
그럼 무엇이 "Ajax"페이지를 만들어 줄까요?
'롭'의 로큰롤 기념전
Ajax와 로큰롤 5단계   
1단계: XHTML수정하기   
2단계: 자바스크립트 초기화 하기   
3단계: 요청 객체 만들기   
4단계: 상품의 상세 정보 얻기   
상품의 상세 정보를 요청하기 위한 코드를 작성해 봅시다   
작업 전에 요청 객체가 잘 만들어 졌는지 항상 확인하세요   
요청 객체도 하나의 객체입니다.   
서버야! 답을 보내줄 때 displayDetails()함수를 호출할 수 있도록 꼭 알려줘야 해. 알았지?
요청을 보낼 때는 send() 함수를 사용하세요
서버는 보통 데이터를 Ajax 요청에 반환해 줍니다
Ajax는 서버기술을 의식하지 않습니다
5단계: 상세 정보 보여주기
요청 객체의 responseText 속성에서 서버의 응답을 얻어냅니다
옛날 방식의 웹 애플리케이션은 안녕…

2. Ajax 애플리케이션 설계하기: Ajax하는 사람의 고민
박중운의 구닥다리 방식의 웹 사이트
Ajax를 사용해서 비동기식으로 등록 요청을 해봅시다
회원 등록 페이지 갱신하기
이벤트 핸들러를 밝힌다
프로그래밍 방침에 맞추어 windows.onload 이벤트 핸들러 설정하기
함수 밖에 있는 자바스크립트 코드들은 해당 스크립트가 읽혀질 때 실행됩니다
언제 실행되어야 할까요?
그렇다면 서버는…
Ajax 설계에서 어떤 부분들은 항상 반복됩니다
createRequest()는 항상 같습니다
요청 객체 만들기… 다양한 브라우저에서 동작하도록 Ajax 애플리케이션 설계는 웹 페이지와 서버단 프로그래밍 모두를 포함합니다
요청 객체는 당신의 코드를 웹 브라우저에 연결시켜 줍니다
당신은 서버가 아닌 브라우저와 통신합니다
브라우저는 서버에서 응답이 오면 콜백 함수를 호출합니다
박중운에게 Ajax 회원 등록 페이지를 보여주세요
웹 폼이 서버에게 요청을 보내는 방법은 현재 두 가지입니다
진생 상황을 보여주는 CSS클래스들을 만들어 봅시다
…그리고 자바스크립트에서 CSS클래스를 명시하는 부분을 변경합니다
더 이상 성가신 수정 작업은 없을 것입니다
회원 등록은 무든 준비가 완료된 후에 가능합니다

3. 자바스크립트 이벤트: 사용자에게 즉각 반응하세요
요가의 첫 번째 단계는 '아래를 보는 강아지 자세'입니다
Ajax 애플리케이션은 단순한 부품의 조합, 그 이상입니다
이것이 옥주영씨의 XHTML입니다
웹 페이지의 이벤트와 자바스크립트의 이벤트 핸들러를 연결해 주세요
window.onload 이벤트를 사용해서 웹 페이지의 상호 작용 기능을 초기화합니다
왼쪽 이미지를 클릭할 수 있도록 바꿔 주세요   
XHTML이 보여주는 페이지의 구조와 내용을 사용하세요   
hideHint() 함수도 추가해 보세요   
탭: 시각적(시각 그래픽적)인 착각을 이용합니다   
for 반복문을 사용해서 이미지들을 살펴보세요
CSS 클래스가 (다시 한번) 핵심입니다   
엇… 하지만 탭이 〈a〉태그는 아니었잖아요!   
이제는 자바스크립트가 작동하지 않는걸요?   
요청 객체를 사용해서 클래스의 상세 설명을 서버로부터 가져오세요
서로 다른 두 개의 함수가 페이지의 어떤 하나의 부분을 갱신 수 있다면 조심스럽게 살펴봐야 합니다
스크립트를 사용해서 이미지를 변경하고 싶다면 'CSS 클래스 변경'을 고려해 보세요
XHTML의 링크들은 〈a〉 태그로 나타냅니다   
활성화 상태의 이미지를 보여주는 함수와 이 이미지를 감수하는 함수가 필요합니다

4. 복수 이벤트 핸들러: 하나보다는 둘이 낫지
한 개의 이벤트에는 한 개의 이벤트 핸들러만 등록할 수 있습니다(또는 그렇게 보입니다)
이벤트 핸들러는 속성값이죠
하나의 속성은 단 하나의 값만 가질 수 있어요
addEventListener()로 하나 이상의 이벤트 핸들러 등록하기
객체들은 DOM 레벨 2로 하나의 이벤트에 여러 개의 이벤트 핸들러를 등록할 수 있습니다
익스플로러에 무슨 일이 있는 거죠?
익스플로러는 완전히 다른 이벤트 모델을 사용합니다
기능상으로는 attachEvent()와 addEventListener()가 동일하네요
addEventHandler()는 옥주영의 요가 페이지 뿐 아니라 모든 웹 페이지에서 동작합니다
initPage()에 새 유틸리티 함수를 적용해 봅시다
문제점 공략에는 alert() 경고 메시지를!
이번에는 뭐가 또 잘못됐다는 거죠?
익스플로러의 이벤트 핸들러들은 활성된 객체가 아니라 익스플로러의 이벤트 처리 프레임워크가 소유하고 있습니다
attachEvent()와 addEventListener()는 이벤트 핸들러에 또 다른 인수를 제공합니다
이벤트 인수에 이름을 지어줘야 이벤트 핸들러가 이를 활용할 수 있습니다
target이라 외치면, srcElement라고 말하죠
이벤트를 발생한 객체를 어떻게 얻어올까요

5. 비동기식 애플리케이션: 면허증 갱신하는 것과 같아요
비동기식이란 말이 대체 뭔가요?
지금까지 비동기식 애플리케이션을 작성해왔습니다
그렇지만 전혀 눈치채지 못할 때도 있습니다
서버단 작업에 대해 좀 더 알아본다면…
(덤) 세 단계로 익히는 비동기식 프로그래밍
표지 이미지를 위한 〈div〉 태그와 2개의 비밀번호 태그가 필요합니다
새로운 작업이 수행되어야 한다면 새로운 이벤트 핸들러 함수가 필요합니다
요청 객체 하나만으로도 하나의 비동기식 요청을 안전하게 주고 받을 수 있습니다
비동기식 요청은 아무것도 기다리지 않습니다. 자기가 요청한 것도 마찬가지로…
만약 2개의 분리된 요청 작업을 수행한다면, 2개의 독립적은 요청 객체들을 사용하세요
비동기식이란 요청과 응답 순서에 의존하여 작업할 수 없다는 뜻입니다
모니터 함수는 당신의 프로그램을 관찰합니다. 바깥에서 말이죠
어떤 동작이 이루어져야 할 것 같으면 모니터 함수를 호출합니다
모니터 함수는 상태 변수들을 통해 현재 상황을 확인합니다
이제 마지막 단계입니다…
동기식 요청은 코드 전체가 다른 일을 수행할 수 없게 합니다
당신의 코드 대신 자바스크립트로 프로세스를 수행시키는 setInterval()을 사용합시다

6. DOM(Document Object Model): 도큐먼트 객체 모델: 웹 페이지 숲속 헤매기
페이지 내의 콘텐츠를 변경할 수도 있고…
페이지의 구조를 변경할 수도 있습니다
브라우저는 DOM을 사용하여 페이지를 표현합니다
당신이 작성한 XHTML은…
…브라우저가 이렇게 이해하고 있지요
페이지는 관련된 객체들의 집합입니다
동적 애플리케이션 작성 시 DOM을 사용해 봅시다
XHTML로 시작하시죠
appendChild()는 노드에 새로운 자식 노드를 추가합니다
객체 이름이나 id를 사용하여 태그객체의 위치를 지정할 수 있습니다
새 부모님과의 인터뷰
클릭된 숫자판을 움직일 수 있나요?
가족 관계를 활용한 DOM 트리 주변을 움직일 수 있습니다
DOM 트리는 웹 페이지의 '모든 것'을 나타내는 노드들을 지니고 있습니다
문자 노드의 nodeName은 "#text"
제가 이겼나요? 제가 이겼죠?
정말 진지하게 말하는데요… 제가 이겼나요?

7. DOM 다루기: 시키는 대로 할께요
Webville Puzzles사의 사업확장   
Woggle은 문자판을 만들 때 테이블 태그를 사용하지 않습니다
XHTML의 문자판들은 CSS를 이용해서 자리를 잡습니다
문자판을 완전히 무작위로 선택하지는 않습니다
페이지의 디자인은 CSS가 담당합니다
문자판에 대한 새로운 클릭 이벤트 핸들러가 필요합니다
각각의 문자판에 대해 클릭 이벤트 핸들러를 만들어 봅시다
이 이벤트 핸들러를 randomizeTiles()에서 할당할 수 있습니다
자바스크립트 속성 값은 문자열에 불과합니다
'currentWord'를 식별자로 갖는 〈div〉 태그에 내용과 구조를 추가시켜야 합니다
DOM을 사용해서 페이지의 구조를 바꿉니다
DOM 엘리먼트를 만들려면 createElement()를 사용하세요
당신이 만든 새로운 DOM엘리먼트를 어디에 넣어야 할지 브라우저에게 말해 주어야 합니다
문자판을 비활성화시켜야 합니다. 즉, CSS 클래스를 바꿔주어야 하지요
…그리고 addLetter() 이벤트 핸들러를 작동하지 않도록 합니다
단어를 전송하는 것은 (또 다른) 요청입니다
우리의 자바스크립트는 서버가 어떻게 요청에 대한 응답을 하는지 상관하지 않습니다
사용성 확인: submitWord()는 언제 호출해야 할까요?   

8. 프레임워크와 툴킷: 아무도 믿지 마세요
프레임워크에는 어떤 것들이 있나요?
모든 프레임워크들은 제각기 기능을 구현합니다
구문은 바뀌기 마련이지만… 자바스크립트는 여전히 동일합니다
프레임워크를 사용할까요 말까요?
선택은 여러분 몫입니다

9. XML 요청과 응답: 이루다 말로 표현할 수 없어요
고전 로큰롤이 21세기를 맞아 대대적인 보수작업에 들어갔습니다
Rob wants    서버는 어떻게 여러 가지의 값을 응답해 줄까요?
InnerHTML을 사용하면 웹 애플리케이션의 클라이언트단은 간단해집니다
XML을 사용하기 위해서는 XHTML에서처럼, DOM을 이용하는 것이 필수입니다
XML 스스로 자신에 대해 설명해 줍니다

10. json: 엄친아 자바스크립트
JSON은 문자 그리고 객체 하나
JSON은 자바스크립트 객체처럼 다뤄집니다
서버의 응답으로부터 JSON 데이터를 어떻게 획득할까요?
자바스크립트는 문자열을 실행합니다
eval()을 사용하여 수동적으로 문자열을 실행합니다
JSON 데이터를 계산하면 해당 데이터를 나타내는 객체를 반환합니다
자바스크립트 객체는 이미 동적이죠. 컴파일 된 객체가 아니니까요
객체의 멤버에 접근할 수 있으며, 멤버를 사용하여 객체의 값들에도 접근할 수 있습니다
서버의 응답을 바로 계산하는 것이 아니라 분리해야 합니다

11 폼과 검증: 하려고 했던 말을 하세요
검증은 웹 페이지로부터 서버에 이르기까지 전 과정에 걸쳐 동작해야 합니다
데이터 포맷을 검증할 수도 있고, 콘텐츠를 검증할 수도 있습니다
드라이(DRY: Don't Repeat Yourself) - 반복하지 말자!
이벤트 핸들러들을 좀 더 작성해봅시다
자바스크립트 아들래미의 귀환
속성값은 또 하나의 자바스크립트 객체입니다
입력 데이터에 문제가 발생했을 때는 옥주영의 고객들에게 경고 메시지를…
경고 상황이 아니라면 경고 메시지를 철회해야겠죠?
경고 메시지가 있다면 제거하세요
데이터의 중복은 서버의 문제입니다

12 포스트 요청: 편집증, 전 당신의 친구랍니다
GET 요청은 요청 인수로서 문자열을 네트워크 상에 그대로 전송합니다
POST 요청은 암호화되지 않은 문자열을 그대로 전송하지 않습니다
POST 요청의 데이터는 서버에 도착할 때까지 인코딩되어 있습니다
send()는 POST 요청 방식으로 데이터를 전송합니다
항상 당신의 요청 데이터를 제대로 받았는지 확인하세요
왜 POST 요청이 동작하지 않았을까요?
서버는 POST 데이터를 디코딩합니다
서버에 보내고 있는 것이 무엇인지 알려줘야 합니다
요청 객체의 setRequestHeader()를 사용하여 요청 헤더를 설정하세요

I 부록1: 아직 못다한 이야기들 - 알아두면 좋은 이야기
Ii 부록2: 유틸리티 함수

 

 

 

참고자료

YES24

 

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

x6100321420526.jpg기본정보

 

 

다운로드

  • 저자 PPT 자료:

 

 

 

목차

Preface vii
1 Introduction 1
1.1 What Is Data Mining? . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Motivating Challenges . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 The Origins of Data Mining . . . . . . . . . . . . . . . . . . . . 6
1.4 Data Mining Tasks . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Scope and Organization of the Book . . . . . . . . . . . . . . . 11
1.6 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Data 19
2.1 Types of Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 Attributes and Measurement . . . . . . . . . . . . . . . 23
2.1.2 Types of Data Sets . . . . . . . . . . . . . . . . . . . . . 29
2.2 Data Quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2.1 Measurement and Data Collection Issues . . . . . . . . . 37
2.2.2 Issues Related to Applications . . . . . . . . . . . . . . 43
2.3 Data Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3.1 Aggregation . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.2 Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3.3 Dimensionality Reduction . . . . . . . . . . . . . . . . . 50
2.3.4 Feature Subset Selection . . . . . . . . . . . . . . . . . . 52
2.3.5 Feature Creation . . . . . . . . . . . . . . . . . . . . . . 55
2.3.6 Discretization and Binarization . . . . . . . . . . . . . . 57
2.3.7 Variable Transformation . . . . . . . . . . . . . . . . . . 63
2.4 Measures of Similarity and Dissimilarity . . . . . . . . . . . . . 65
2.4.1 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.4.2 Similarity and Dissimilarity between Simple Attributes . 67
2.4.3 Dissimilarities between Data Objects . . . . . . . . . . . 69
2.4.4 Similarities between Data Objects . . . . . . . . . . . . 72

2.4.5 Examples of Proximity Measures . . . . . . . . . . . . . 73
2.4.6 Issues in Proximity Calculation . . . . . . . . . . . . . . 80
2.4.7 Selecting the Right Proximity Measure . . . . . . . . . . 83
2.5 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3 Exploring Data 97
3.1 The Iris Data Set . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.2 Summary Statistics . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.2.1 Frequencies and the Mode . . . . . . . . . . . . . . . . . 99
3.2.2 Percentiles . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.2.3 Measures of Location: Mean and Median . . . . . . . . 101
3.2.4 Measures of Spread: Range and Variance . . . . . . . . 102
3.2.5 Multivariate Summary Statistics . . . . . . . . . . . . . 104
3.2.6 Other Ways to Summarize the Data . . . . . . . . . . . 105
3.3 Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.3.1 Motivations for Visualization . . . . . . . . . . . . . . . 105
3.3.2 General Concepts . . . . . . . . . . . . . . . . . . . . . . 106
3.3.3 Techniques . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.3.4 Visualizing Higher-Dimensional Data . . . . . . . . . . . 124
3.3.5 Do’s and Don’ts . . . . . . . . . . . . . . . . . . . . . . 130
3.4 OLAP and Multidimensional Data Analysis . . . . . . . . . . . 131
3.4.1 Representing Iris Data as a Multidimensional Array . . 131
3.4.2 Multidimensional Data: The General Case . . . . . . . . 133
3.4.3 Analyzing Multidimensional Data . . . . . . . . . . . . 135
3.4.4 Final Comments on Multidimensional Data Analysis . . 139
3.5 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4 Classification:
Basic Concepts, Decision Trees, and Model Evaluation 145
4.1 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.2 General Approach to Solving a Classification Problem . . . . . 148
4.3 Decision Tree Induction . . . . . . . . . . . . . . . . . . . . . . 150
4.3.1 How a Decision Tree Works . . . . . . . . . . . . . . . . 150
4.3.2 How to Build a Decision Tree . . . . . . . . . . . . . . . 151
4.3.3 Methods for Expressing Attribute Test Conditions . . . 155
4.3.4 Measures for Selecting the Best Split . . . . . . . . . . . 158
4.3.5 Algorithm for Decision Tree Induction . . . . . . . . . . 164
4.3.6 An Example: Web Robot Detection . . . . . . . . . . . 166

4.3.7 Characteristics of Decision Tree Induction . . . . . . . . 168
4.4 Model Overfitting . . . . . . . . . . . . . . . . . . . . . . . . . . 172
4.4.1 Overfitting Due to Presence of Noise . . . . . . . . . . . 175
4.4.2 Overfitting Due to Lack of Representative Samples . . . 177
4.4.3 Overfitting and the Multiple Comparison Procedure . . 178
4.4.4 Estimation of Generalization Errors . . . . . . . . . . . 179
4.4.5 Handling Overfitting in Decision Tree Induction . . . . 184
4.5 Evaluating the Performance of a Classifier . . . . . . . . . . . . 186
4.5.1 Holdout Method . . . . . . . . . . . . . . . . . . . . . . 186
4.5.2 Random Subsampling . . . . . . . . . . . . . . . . . . . 187
4.5.3 Cross-Validation . . . . . . . . . . . . . . . . . . . . . . 187
4.5.4 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . 188
4.6 Methods for Comparing Classifiers . . . . . . . . . . . . . . . . 188
4.6.1 Estimating a Confidence Interval for Accuracy . . . . . 189
4.6.2 Comparing the Performance of Two Models . . . . . . . 191
4.6.3 Comparing the Performance of Two Classifiers . . . . . 192
4.7 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
5 Classification: Alternative Techniques 207
5.1 Rule-Based Classifier . . . . . . . . . . . . . . . . . . . . . . . . 207
5.1.1 How a Rule-Based Classifier Works . . . . . . . . . . . . 209
5.1.2 Rule-Ordering Schemes . . . . . . . . . . . . . . . . . . 211
5.1.3 How to Build a Rule-Based Classifier . . . . . . . . . . . 212
5.1.4 Direct Methods for Rule Extraction . . . . . . . . . . . 213
5.1.5 Indirect Methods for Rule Extraction . . . . . . . . . . 221
5.1.6 Characteristics of Rule-Based Classifiers . . . . . . . . . 223
5.2 Nearest-Neighbor classifiers . . . . . . . . . . . . . . . . . . . . 223
5.2.1 Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . 225
5.2.2 Characteristics of Nearest-Neighbor Classifiers . . . . . 226
5.3 Bayesian Classifiers . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.3.1 Bayes Theorem . . . . . . . . . . . . . . . . . . . . . . . 228
5.3.2 Using the Bayes Theorem for Classification . . . . . . . 229
5.3.3 Na¨ıve Bayes Classifier . . . . . . . . . . . . . . . . . . . 231
5.3.4 Bayes Error Rate . . . . . . . . . . . . . . . . . . . . . . 238
5.3.5 Bayesian Belief Networks . . . . . . . . . . . . . . . . . 240
5.4 Artificial Neural Network (ANN) . . . . . . . . . . . . . . . . . 246
5.4.1 Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.4.2 Multilayer Artificial Neural Network . . . . . . . . . . . 251
5.4.3 Characteristics of ANN . . . . . . . . . . . . . . . . . . 255

5.5 Support Vector Machine (SVM) . . . . . . . . . . . . . . . . . . 256
5.5.1 Maximum Margin Hyperplanes . . . . . . . . . . . . . . 256
5.5.2 Linear SVM: Separable Case . . . . . . . . . . . . . . . 259
5.5.3 Linear SVM: Nonseparable Case . . . . . . . . . . . . . 266
5.5.4 Nonlinear SVM . . . . . . . . . . . . . . . . . . . . . . . 270
5.5.5 Characteristics of SVM . . . . . . . . . . . . . . . . . . 276
5.6 Ensemble Methods . . . . . . . . . . . . . . . . . . . . . . . . . 276
5.6.1 Rationale for Ensemble Method . . . . . . . . . . . . . . 277
5.6.2 Methods for Constructing an Ensemble Classifier . . . . 278
5.6.3 Bias-Variance Decomposition . . . . . . . . . . . . . . . 281
5.6.4 Bagging . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
5.6.5 Boosting . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
5.6.6 Random Forests . . . . . . . . . . . . . . . . . . . . . . 290
5.6.7 Empirical Comparison among Ensemble Methods . . . . 294
5.7 Class Imbalance Problem . . . . . . . . . . . . . . . . . . . . . 294
5.7.1 Alternative Metrics . . . . . . . . . . . . . . . . . . . . . 295
5.7.2 The Receiver Operating Characteristic Curve . . . . . . 298
5.7.3 Cost-Sensitive Learning . . . . . . . . . . . . . . . . . . 302
5.7.4 Sampling-Based Approaches . . . . . . . . . . . . . . . . 305
5.8 Multiclass Problem . . . . . . . . . . . . . . . . . . . . . . . . . 306
5.9 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 309
5.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
6 Association Analysis: Basic Concepts and Algorithms 327
6.1 Problem Definition . . . . . . . . . . . . . . . . . . . . . . . . . 328
6.2 Frequent Itemset Generation . . . . . . . . . . . . . . . . . . . 332
6.2.1 The Apriori Principle . . . . . . . . . . . . . . . . . . . 333
6.2.2 Frequent Itemset Generation in the Apriori Algorithm . 335
6.2.3 Candidate Generation and Pruning . . . . . . . . . . . . 338
6.2.4 Support Counting . . . . . . . . . . . . . . . . . . . . . 342
6.2.5 Computational Complexity . . . . . . . . . . . . . . . . 345
6.3 Rule Generation . . . . . . . . . . . . . . . . . . . . . . . . . . 349
6.3.1 Confidence-Based Pruning . . . . . . . . . . . . . . . . . 350
6.3.2 Rule Generation in Apriori Algorithm . . . . . . . . . . 350
6.3.3 An Example: Congressional Voting Records . . . . . . . 352
6.4 Compact Representation of Frequent Itemsets . . . . . . . . . . 353
6.4.1 Maximal Frequent Itemsets . . . . . . . . . . . . . . . . 354
6.4.2 Closed Frequent Itemsets . . . . . . . . . . . . . . . . . 355
6.5 Alternative Methods for Generating Frequent Itemsets . . . . . 359
6.6 FP-Growth Algorithm . . . . . . . . . . . . . . . . . . . . . . . 363

6.6.1 FP-Tree Representation . . . . . . . . . . . . . . . . . . 363
6.6.2 Frequent Itemset Generation in FP-Growth Algorithm . 366
6.7 Evaluation of Association Patterns . . . . . . . . . . . . . . . . 370
6.7.1 Objective Measures of Interestingness . . . . . . . . . . 371
6.7.2 Measures beyond Pairs of Binary Variables . . . . . . . 382
6.7.3 Simpson’s Paradox . . . . . . . . . . . . . . . . . . . . . 384
6.8 Effect of Skewed Support Distribution . . . . . . . . . . . . . . 386
6.9 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 390
6.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
7 Association Analysis: Advanced Concepts 415
7.1 Handling Categorical Attributes . . . . . . . . . . . . . . . . . 415
7.2 Handling Continuous Attributes . . . . . . . . . . . . . . . . . 418
7.2.1 Discretization-Based Methods . . . . . . . . . . . . . . . 418
7.2.2 Statistics-Based Methods . . . . . . . . . . . . . . . . . 422
7.2.3 Non-discretization Methods . . . . . . . . . . . . . . . . 424
7.3 Handling a Concept Hierarchy . . . . . . . . . . . . . . . . . . 426
7.4 Sequential Patterns . . . . . . . . . . . . . . . . . . . . . . . . . 429
7.4.1 Problem Formulation . . . . . . . . . . . . . . . . . . . 429
7.4.2 Sequential Pattern Discovery . . . . . . . . . . . . . . . 431
7.4.3 Timing Constraints . . . . . . . . . . . . . . . . . . . . . 436
7.4.4 Alternative Counting Schemes . . . . . . . . . . . . . . 439
7.5 Subgraph Patterns . . . . . . . . . . . . . . . . . . . . . . . . . 442
7.5.1 Graphs and Subgraphs . . . . . . . . . . . . . . . . . . . 443
7.5.2 Frequent Subgraph Mining . . . . . . . . . . . . . . . . 444
7.5.3 Apriori -like Method . . . . . . . . . . . . . . . . . . . . 447
7.5.4 Candidate Generation . . . . . . . . . . . . . . . . . . . 448
7.5.5 Candidate Pruning . . . . . . . . . . . . . . . . . . . . . 453
7.5.6 Support Counting . . . . . . . . . . . . . . . . . . . . . 457
7.6 Infrequent Patterns . . . . . . . . . . . . . . . . . . . . . . . . . 457
7.6.1 Negative Patterns . . . . . . . . . . . . . . . . . . . . . 458
7.6.2 Negatively Correlated Patterns . . . . . . . . . . . . . . 458
7.6.3 Comparisons among Infrequent Patterns, Negative Patterns,
and Negatively Correlated Patterns . . . . . . . . 460
7.6.4 Techniques for Mining Interesting Infrequent Patterns . 461
7.6.5 Techniques Based on Mining Negative Patterns . . . . . 463
7.6.6 Techniques Based on Support Expectation . . . . . . . . 465
7.7 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 469
7.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

8 Cluster Analysis: Basic Concepts and Algorithms 487
8.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
8.1.1 What Is Cluster Analysis? . . . . . . . . . . . . . . . . . 490
8.1.2 Different Types of Clusterings . . . . . . . . . . . . . . . 491
8.1.3 Different Types of Clusters . . . . . . . . . . . . . . . . 493
8.2 K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
8.2.1 The Basic K-means Algorithm . . . . . . . . . . . . . . 497
8.2.2 K-means: Additional Issues . . . . . . . . . . . . . . . . 506
8.2.3 Bisecting K-means . . . . . . . . . . . . . . . . . . . . . 508
8.2.4 K-means and Different Types of Clusters . . . . . . . . 510
8.2.5 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 510
8.2.6 K-means as an Optimization Problem . . . . . . . . . . 513
8.3 Agglomerative Hierarchical Clustering . . . . . . . . . . . . . . 515
8.3.1 Basic Agglomerative Hierarchical Clustering Algorithm 516
8.3.2 Specific Techniques . . . . . . . . . . . . . . . . . . . . . 518
8.3.3 The Lance-Williams Formula for Cluster Proximity . . . 524
8.3.4 Key Issues in Hierarchical Clustering . . . . . . . . . . . 524
8.3.5 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 526
8.4 DBSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
8.4.1 Traditional Density: Center-Based Approach . . . . . . 527
8.4.2 The DBSCAN Algorithm . . . . . . . . . . . . . . . . . 528
8.4.3 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 530
8.5 Cluster Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . 532
8.5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 533
8.5.2 Unsupervised Cluster Evaluation Using Cohesion and
Separation . . . . . . . . . . . . . . . . . . . . . . . . . 536
8.5.3 Unsupervised Cluster Evaluation Using the Proximity
Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
8.5.4 Unsupervised Evaluation of Hierarchical Clustering . . . 544
8.5.5 Determining the Correct Number of Clusters . . . . . . 546
8.5.6 Clustering Tendency . . . . . . . . . . . . . . . . . . . . 547
8.5.7 Supervised Measures of Cluster Validity . . . . . . . . . 548
8.5.8 Assessing the Significance of Cluster Validity Measures . 553
8.6 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 555
8.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
9 Cluster Analysis: Additional Issues and Algorithms 569
9.1 Characteristics of Data, Clusters, and Clustering Algorithms . 570
9.1.1 Example: Comparing K-means and DBSCAN . . . . . . 570
9.1.2 Data Characteristics . . . . . . . . . . . . . . . . . . . . 571

9.1.3 Cluster Characteristics . . . . . . . . . . . . . . . . . . . 573
9.1.4 General Characteristics of Clustering Algorithms . . . . 575
9.2 Prototype-Based Clustering . . . . . . . . . . . . . . . . . . . . 577
9.2.1 Fuzzy Clustering . . . . . . . . . . . . . . . . . . . . . . 577
9.2.2 Clustering Using Mixture Models . . . . . . . . . . . . . 583
9.2.3 Self-Organizing Maps (SOM) . . . . . . . . . . . . . . . 594
9.3 Density-Based Clustering . . . . . . . . . . . . . . . . . . . . . 600
9.3.1 Grid-Based Clustering . . . . . . . . . . . . . . . . . . . 601
9.3.2 Subspace Clustering . . . . . . . . . . . . . . . . . . . . 604
9.3.3 DENCLUE: A Kernel-Based Scheme for Density-Based
Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . 608
9.4 Graph-Based Clustering . . . . . . . . . . . . . . . . . . . . . . 612
9.4.1 Sparsification . . . . . . . . . . . . . . . . . . . . . . . . 613
9.4.2 Minimum Spanning Tree (MST) Clustering . . . . . . . 614
9.4.3 OPOSSUM: Optimal Partitioning of Sparse Similarities
Using METIS . . . . . . . . . . . . . . . . . . . . . . . . 616
9.4.4 Chameleon: Hierarchical Clustering with Dynamic
Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . 616
9.4.5 Shared Nearest Neighbor Similarity . . . . . . . . . . . 622
9.4.6 The Jarvis-Patrick Clustering Algorithm . . . . . . . . . 625
9.4.7 SNN Density . . . . . . . . . . . . . . . . . . . . . . . . 627
9.4.8 SNN Density-Based Clustering . . . . . . . . . . . . . . 629
9.5 Scalable Clustering Algorithms . . . . . . . . . . . . . . . . . . 630
9.5.1 Scalability: General Issues and Approaches . . . . . . . 630
9.5.2 BIRCH . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
9.5.3 CURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
9.6 Which Clustering Algorithm? . . . . . . . . . . . . . . . . . . . 639
9.7 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 643
9.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
10 Anomaly Detection 651
10.1 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
10.1.1 Causes of Anomalies . . . . . . . . . . . . . . . . . . . . 653
10.1.2 Approaches to Anomaly Detection . . . . . . . . . . . . 654
10.1.3 The Use of Class Labels . . . . . . . . . . . . . . . . . . 655
10.1.4 Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
10.2 Statistical Approaches . . . . . . . . . . . . . . . . . . . . . . . 658
10.2.1 Detecting Outliers in a Univariate Normal Distribution 659
10.2.2 Outliers in a Multivariate Normal Distribution . . . . . 661
10.2.3 A Mixture Model Approach for Anomaly Detection . . . 662

10.2.4 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 665
10.3 Proximity-Based Outlier Detection . . . . . . . . . . . . . . . . 666
10.3.1 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 666
10.4 Density-Based Outlier Detection . . . . . . . . . . . . . . . . . 668
10.4.1 Detection of Outliers Using Relative Density . . . . . . 669
10.4.2 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 670
10.5 Clustering-Based Techniques . . . . . . . . . . . . . . . . . . . 671
10.5.1 Assessing the Extent to Which an Object Belongs to a
Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
10.5.2 Impact of Outliers on the Initial Clustering . . . . . . . 674
10.5.3 The Number of Clusters to Use . . . . . . . . . . . . . . 674
10.5.4 Strengths and Weaknesses . . . . . . . . . . . . . . . . . 674
10.6 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 675
10.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
Appendix A Linear Algebra 685
A.1 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
A.1.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . 685
A.1.2 Vector Addition and Multiplication by a Scalar . . . . . 685
A.1.3 Vector Spaces . . . . . . . . . . . . . . . . . . . . . . . . 687
A.1.4 The Dot Product, Orthogonality, and Orthogonal
Projections . . . . . . . . . . . . . . . . . . . . . . . . . 688
A.1.5 Vectors and Data Analysis . . . . . . . . . . . . . . . . 690
A.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
A.2.1 Matrices: Definitions . . . . . . . . . . . . . . . . . . . . 691
A.2.2 Matrices: Addition and Multiplication by a Scalar . . . 692
A.2.3 Matrices: Multiplication . . . . . . . . . . . . . . . . . . 693
A.2.4 Linear Transformations and Inverse Matrices . . . . . . 695
A.2.5 Eigenvalue and Singular Value Decomposition . . . . . . 697
A.2.6 Matrices and Data Analysis . . . . . . . . . . . . . . . . 699
A.3 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 700
Appendix B Dimensionality Reduction 701
B.1 PCA and SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
B.1.1 Principal Components Analysis (PCA) . . . . . . . . . . 701
B.1.2 SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
B.2 Other Dimensionality Reduction Techniques . . . . . . . . . . . 708
B.2.1 Factor Analysis . . . . . . . . . . . . . . . . . . . . . . . 708
B.2.2 Locally Linear Embedding (LLE) . . . . . . . . . . . . . 710
B.2.3 Multidimensional Scaling, FastMap, and ISOMAP . . . 712

B.2.4 Common Issues . . . . . . . . . . . . . . . . . . . . . . . 715
B.3 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . 716
Appendix C Probability and Statistics 719
C.1 Probability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
C.1.1 Expected Values . . . . . . . . . . . . . . . . . . . . . . 722
C.2 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
C.2.1 Point Estimation . . . . . . . . . . . . . . . . . . . . . . 724
C.2.2 Central Limit Theorem . . . . . . . . . . . . . . . . . . 724
C.2.3 Interval Estimation . . . . . . . . . . . . . . . . . . . . . 725
C.3 Hypothesis Testing . . . . . . . . . . . . . . . . . . . . . . . . . 726
Appendix D Regression 729
D.1 Preliminaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
D.2 Simple Linear Regression . . . . . . . . . . . . . . . . . . . . . 730
D.2.1 Least Square Method . . . . . . . . . . . . . . . . . . . 731
D.2.2 Analyzing Regression Errors . . . . . . . . . . . . . . . 733
D.2.3 Analyzing Goodness of Fit . . . . . . . . . . . . . . . . 735
D.3 Multivariate Linear Regression . . . . . . . . . . . . . . . . . . 736
D.4 Alternative Least-Square Regression Methods . . . . . . . . . . 737
Appendix E Optimization 739
E.1 Unconstrained Optimization . . . . . . . . . . . . . . . . . . . . 739
E.1.1 Numerical Methods . . . . . . . . . . . . . . . . . . . . 742
E.2 Constrained Optimization . . . . . . . . . . . . . . . . . . . . . 746
E.2.1 Equality Constraints . . . . . . . . . . . . . . . . . . . . 746
E.2.2 Inequality Constraints . . . . . . . . . . . . . . . . . . . 747
Author Index 750
Subject Index 758
Copyright Permissions 769

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

기본정보

  • 저자:  마이클 모리슨
  • 역자:
  • 출판사: 한빛미디어
  • ISBN-10:
  • ISBN-13: 9788979145823
  • 출판일: 2008년 06월 28일
  • 페이지 수: 655쪽
  • 언어:

 

 

 

책 소개

이 책은 재미있고 쌍방향적인 웹 페이지 제작 여행을 위한 지침서이다. 변수, 함수, 루프 같은 기본적인 웹 프로그래밍 기술부터 폼 유효성 검증, DOM 조작, 커스텀 객체, 디버깅 심지어는 Ajax까지 자바스크립트의 핵심사항들을 다루고 있다. Head First에 적용된 학습이론을 바탕으로 재미있고 집중할 수 있게 설명함으로써 빠르게 이해하고 익힐 수 있으며, 괄호 채워넣기, 퍼즐, 수수께끼, 연습문제 등 독자들의 흥미 유발을 위한 독특한 구성방식, 즉 독자와의 쌍방향 소통으로 학습효과를 높일 수 있다.

이 책은 자바스크립트 문법 하나하나의 개념을 설명하는 레퍼런스가 아니다. 대화형 웹 애플리케이션 개발에 있어서 어떤 원리가 어떻게 쓰이는지를 다양한 구성을 통해서 학습할 수 있는 학습서이다. 이러한 학습을 통해서 자바스크립트를 쉽고 재미있게 익힐 수 있다.

 

 

목차

. 대화형 웹: 가상의 세계에 반응하기
2. 데이터 저장하기: 모든 것들은 다 자신의 자리가 있습니다
3. 클라이언트 탐험: 브라우저 동굴 탐험
4. 의사결정: 갈림길을 만나면, 선택하세요
5. 루핑: 했던 얘기 되풀이하기
6. 함수: 아끼고, 재사용하고, 재활용하기
7. 폼과 유효성 검증: 사용자에게 모두 고백하기
8. 페이지와 입씨름하기: DOM으로 HTML 요리하기
9. 데이터에 생명 불어넣기: 프랑켄쉬타인 같은 객체
10. 사용자 정의 객체 만들기: 나만의 방식으로 사용자 정의 객체 만들기
11. 버그 박멸하기: 좋은 스크립트라도 때로는 잘못될 수 있습니다
12. 동적인 데이터: 스킨쉽을 좋아하는 웹 애플리케이션

 

 

 

요약

1장 대화형 웹
가상의 세계에 반응하기
수동적인 페이지만 있는 웹은 더 이상 생각하기도 싫으시죠? 저도 그런 경험이 있습니다. 사실 이런 종류의 것을 책이라고 하죠. 읽기와 배우기, 그리고 다른 많은 것을 하기에는 책도 괜찮긴 합니다만, 역동적이지는 않습니다. 또한 자바스크립트의 도움이 없으면 웹에서는 읽기나 배우기 모두를 할 수 없습니다. 물론, 여기저기에 교묘한 트릭이 섞인 HTML과 CSS 코딩을 통해 폼을 전송할 수는 있을지 모르겠지만, 실제로는 생명력 없는 웹 페이지를 만드는 것에 불과하답니다. 진정으로 생기발랄한 역동성을 위해서는 조금 더 세련된 약간의 추가 작업을 요구하고 있습니다만... 이들은 훨씬 더 큰 비용이 소요됩니다.

2장 데이터 저장하기
모든 것들은 다 자신의 자리가 있습니다
현실에서 사람들은 가끔씩 물건을 보관할 장소의 중요성을 너무 간과하곤 합니다. 하지만 자바스크립트에서는 그렇지 않습니다. 그렇다고해서 고급스런 옷장과 자동차를 3대나 보관할 수 있는 차고가 필요한 것은 아닙니다. 자바스크립트에서 모든 것들은 다 자기 자리가 있습니다. 그리고 그 자리를 확인하는 것이 바로 여러분이 해야 할 일입니다. 중요한 것은 보관하는 데이터와 이를 어떻게 보여주고 저장하며, 보관했던 데이터를 어떻게 찾는가 하는 것입니다. 자바스크립트 보관 전문가로서, 이제 여러분은 자바스크립트 데이터들로 어질러진 방에서 수많은 가상의 인식표와 저장 박스를 사용해서 이들을 정리할 수 있게 될 것입니다.

3장 클라이언트 탐험
브라우저 동굴 탐험
가끔은 자바스크립트도 세상 돌아가는 일을 알아야 할 필요가 있습니다. 여러분의 스크립트는 웹 페이지에 있는 코드에서 시작하겠지만, 그들은 결국 브라우저나 클라이언트가 창조한 세상에서 살고 있습니다. 똑똑한 스크립트라면 자신이 살고 있는 세상에 대해 좀 더 많은 것을 알아야 하며, 이렇게 하기 위해 브라우저와 통신할 수 있습니다. 화면 크기를 알아내든지 브라우저의 알림 버튼에 접근하는 방법을 알아내든 간에, 스크립트는 브라우저와의 관계를 증진시킴으로써 많은 것을 얻을 수 있습니다.

4장 의사결정
갈림길을 만나면, 선택하세요
인생이란 선택 그 자체입니다. 가거나 멈추거나, 흔들거나 굽거나, 검사와 협상하거나 재판을 하거나...무엇인가를 결정하지 않았다면, 지금까지 아무것도 이루어질 수 없었을 것입니다. 자바스크립트에서도 마찬가지 입니다. 결정을 함으로써 스크립트는 여러 가지 가능한 결과들 중 하나를 선택하게 됩니다. 의사결정은 여러분의 스크립트에서 "이야기"를 전개해 나가며, 가장 평범한 스크립트조차도 줄거리를 갖고 있습니다. 어느 아리따운 아가씨가 입력한 내용을 믿고 해외여행이나 박람회 예약을 해야 할까요? 아니면 그녀가 진정으로 원하는 것은 버스를 타고 박람회를 가는 것이라는 사실을 알기 위해 나름대로 여러 번 체크해야 할까요? 선택은 여러분의 몫입니다!

5장 루핑
했던 얘기 되풀이하기
어떤 사람들은 반복이 생활의 활력소라고 얘기합니다. 물론 새롭고 흥미로운 것들을 하는 것도 분명히 재미있긴 하지만, 약간의 반복적인 일들도 일상 생활을 활기차게 만듭니다. 강박 관념에 사로잡혀 시도 때도 없이 손을 씻고, 신경질 부리며, 여러분이 받은 모든 별난 메시지에 대해 일일이 답장 버튼을 클릭한다고 생각해보세요! 여기까지도 좋습니다만, 이러한 반복적인 일이 실제 세계에서는 매력적이지 않을 수도 있습니다. 하지만, 자바스크립트의 세계에서는 매우 다루기 쉽습니다. 여러분은 스크립트에서 한 조각의 코드를 얼마나 자주 여러 번 반복하는지, 그리고 실제로 루핑의 힘이 얼마나 자주 영향을 미치는지 알게 되면 놀라게 될 것입니다. 루프가 없다면, 여러분은 한 주먹거리밖에 되지 않는 하찮은 코드를 잘라내고 붙이는 일에 하루 종일 매달려야 될지도 모릅니다.

6장 함수
아끼고, 재사용하고, 재활용하기
자바스크립트 내에서 환경 운동을 한다면, 아마도 함수들이 앞장 설 것입니다. 함수들은 자바스크립트 코드를 좀 더 효율적이고, 재사용 가능하게 만듭니다. 함수들은 작업 지향적이며, 코드를 조직화하는데 일가견을 가지고 있고, 훌륭한 문제 해결사들이라 할 수 있습니다. 지금 함수에 대해 이력서를 쓰는 것 같군요! 실제로, 가장 간단한 스크립트들 상당수는 기능적으로 재조직화되기를 기다리고 있습니다. 표준 함수에 대한 이산화탄소 배출량을 측정하는 것은 어렵기 때문에, 함수들에게 가능한 한 환경 친화적으로 스크립트를 작성하라고 말해 주세요.

7장 폼과 유효성 검증
사용자에게 모두 고백하기
자바스크립트를 사용해서 사용자들로부터 정보를 얻기 위해서 상냥해지거나 교활 해질 필요까지는 없습니다. 하지만 신중해질 필요는 있습니다. 인간은 실수를 하는 경향이 있는데, 이러 한 사실은 온라인 폼으로 항상 정확하고 올바른 데이터가 입력된다는 보장이 없음을 의미합니다. 자바스크립트로 들어가 봅시다. 올바른 자바스크립트 코드를 통해 폼 데이터를 입력된 그대로 전달함으로써, 웹 애플리케이션을 좀 더 신뢰성 있고, 서버에 부하를 덜어주도록 만들 수 있습니다. 우리는 스턴트 비디오와 귀여운 애완동물 사진과 같은 소중한 것들을 위해 귀중한 대역폭을 마련해 놓을 필요가 있습니다.

8장 페이지와 입씨름하기
DOM으로 HTML 요리하기
자바스크립트로 웹 페이지 컨텐츠를 제어하는 것은 빵을 굽는 것과 매우 흡사합니다. 주방이 좀 어질러져 있어야 나중에 먹을 것도 생기기 마련입니다. 여러분은 웹 페이지를 구성하는 HTML 구성 요소들 에 접근할 수 있습니다. 더 중요한 점은 여러분은 페이지의 조리법을 변경할 수 있는 능력을 가졌다는 점입니다. 자바 스크립트는 웹 페이지 내에서 HTML 코드를 조작하는 것을 가능하게 하는데, 이는 DOM(문서 객체 모델)이라 불리는 표준 객체 모음을 사용하여 모든 종류의 흥미로운 선택들을 시작할 수 있게 합니다.

9장 데이터에 생명 불어넣기
프랑켄쉬타인 같은 객체
자바스크립트 객체들은 여러분이 상상하고 있는 의사만큼 그렇게 끔찍하지는 않습니다. 하지만 그들은 자바스크립트 언어의 부품들을 모으는 데 흥미를 갖고 있으며, 이러한 부품들은 함께 있을때 시너지 효과를 내어 강력해집니다. 객체들은 여러분이 지금까지 보았던 데이터들보다는 훨씬 더 "생명력 있는" 새로운 데이터 타입을 생성해서 동작합니다. 결국 여러분은 자기 자신을 정렬하는 배열, 자신을 검색하는 문자열, 그리고 털이 나기 시작해서 달을 향해 울부짓는 스크립트를 보게 될 것입니다. 물론 이것이 객체에 관해 여러분들이 밝혀내야 할 최후의 것들은 아닙니다.

10장 사용자 정의 객체 만들기
나만의 방식으로 사용자 정의 객체 만들기
말처럼 쉽기만 하다면, 다 따놓은 당상입니다. 자바스크립트는 환불을 해주지 않습니다만, 분명히 여러분이 원하는 방식으로 주문할 수 있습니다. 자바스크립트에서 사용자 정의 객체는 큰 컵에 카페인 없이 휘젓지 않고 카라멜을 약간 넣은 거품이 없는 모카 마키아토나 커피와 같습니다. 즉, 이것은 바로 한 잔의 고객 맞춤 커피라고 할 수 있습니다! 프로퍼티와 메소드들의 도움을 받아 사용자 정의 자바스크립트 객체에 정확히 여러분이 원하는 동작을 하는 코드들을 섞을 수 있습니다. 이렇게 해서 만든 최종 결과로 바로 여러분을 위한 자바스크립트 언어를 효과적으로 확장하여 재사용할 수 있는 객체지향 코드가 나옵니다.

11장 버그 박멸하기
좋은 스크립트라도 때로는 잘못될 수 있습니다
잘 짜여진 자바스크립트 계획도 가끔은 실패합니다. 이런 일이 발생할 때, 여러분이 할 일은 공황 상태에 빠지는 것이 아닙니다. 최고의 자바스크립트 개발자들은 버그를 절대로 만들어내지 않는 사람을 의미하는 것이 아닙니다. 이런 사람들이 있다면 우리는 이들을 거짓말쟁이라고 부를 것입니다. 최고의 자바스크립트 개발자들은 그들이 만들어낸 버그들을 사냥해서 성공적으로 제거할 수 있는 사람들을 말합니다. 더 중요한 점은, 최고의 자바스크립트 버그 제거자는 버그들의 응큼하고 교활한 점을 최소화하는 좋은 코딩 습관을 개발하고 있습니다. 세심한 주의를 기울이면 버그들을 줄일 수 있습니다. 하지만 버그가 발생하면 여러분은 그들과 싸우기 위한 무기들이 필요하게 될 것입니다.

12장 동적인 데이터
스킨쉽을 좋아하는 웹 애플리케이션
현대적인 웹은 사용자들의 모든 변덕을 받아줄 것으로 예상되는 웹 페이지들이 거주 하는 곳입니다. 꼭 그렇지 않더라도 이는 최소한 많은 웹 사용자들과 개발자들의 꿈이기도 합니다. 자바스크립트 는 웹 페이지들의 "감정"을 드라마틱하게 변경하는 메커니즘을 제공하는 Ajax라고 알려진 프로그래밍 기술을 통해 이러한 꿈을 이루는 데 있어 중요한 역할을 담당하고 있습니다. Ajax를 사용해서 웹 페이지들은 훨씬 더 성숙된 애플리케이션처럼 행동할 수 있습니다. 왜냐하면 그들은 페이지 전체를 새로 고치거나 브라우저의 속임수 없이도 실시간으로 사 용자와 반응하면서 아주 재빠르게 데이터들을 로딩하고 저장할 수 있기 때문입니다.

 

 

 

참고자료

예스24

 

이 글은 스프링노트에서 작성되었습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요


티스토리 툴바