'분류 전체보기'에 해당하는 글 51건


집 상태가 사람의 정신상태를 반영한 다는 것을 실감했다. 오빠가 조금은 치웠다고는 하지만, 겨울내내 바닥에 깔려 있던 이불들 커다란 책상위에 책이며 잡동사니가 올려져 있고 컴퓨터 주변도 이것저것 쌓여 있고, 머리카락은 날라다니고.. 침실에는 난방텐트 때문에 답답함이 느껴지고, 주방엔 사고 다듬지 않아서 말라가는 파가 있고 암튼 엄청나게 어수선한 상태였다.


오늘이 되서야 조금이나마 여유가 생겼기 때문에 오늘 치우지 않으면 이렇게 계속 살아갈 것 같아서 치우기로 마음 먹었다. 일단 이불들을 침대 밑에 개어 넣고, 이제 따듯해졌으니 난방텐트도 치웠다. 


그리고 우리의 서재겸 작업실의 구조를 바꿨다 !

원래 컴퓨터 책상에 아이맥+컴퓨터 이렇게 두개가 있었는데 오빠의 게임기기들과 스피커 등등이 늘어나면서 너무 복잡해졌다. 게다가 나는 왠지 그 곳에서 컴퓨터를 하는게 싫어서 그냥 왕책상에서 노트북으로 작업했었는데 이번에 구조를 바꾸면서 아이맥을 가져왔다. 


원래 가로로 창문 - 컴퓨터 책상

      - 쇼파 - 왕책상 - 책장

이렇게 있었는데 창문에서 직각으로 되게 구조를 바꿨다.

그래서 창문 - 컴퓨터 책상  - 책장

                 - 왕책상

                 - 쇼파

책장 옆에는 쇼파에서 쓰던 매트를 놓아서 바닥에서 아늑하게 책을 볼 수도 있게했다. 오빠도 컴퓨터 책상 혼자 다 쓸수도 있고 의자간격이 넓어져서 더 편하고, 오빠 게임할 때 내 시야가 가려져서 아늑하게 컴퓨터를 할 수도 있고 너무 좋다. 





'Daily Life' 카테고리의 다른 글

#2014.02.12  (1) 2014.02.12
회사 업무 기록 (10월~12월)  (0) 2012.02.03
앞으로의 계획  (1) 2012.01.31
회사 업무 기록 (7월~9월)  (6) 2011.08.03
2011년의 블로그, 다시 시작하기  (0) 2011.01.16

WRITTEN BY
뮤네

,



2014/03/25 북쇼핑리스트 




주말에 쉬지도 못하고 계속 회사일을 해야 했다.

그나마, 토요일 오전에 영화 본게 내 힐링의 전부.

다행히 실장님이 오늘을 휴가를 주셔서, 이번주 일요일에 못간 신촌 알라딘에 가서 

책을 사고, 알라딘 바로 앞에 있는 큰 창이 있는 까페에 가서 베이글과 까페라떼를 먹으면서 힐링할 수 있었다.

난 역시 커피를 마시면서 책을 읽을 때 행복한 것 같다.


오늘의 북쇼핑리스트


- 지금 저지르지 않으면 후회할 일들

13500 -> 6100

에세이 책이라 구입


- 진격의 거인 11권

5000 -> 2400

10권까지 구입했는데 11권이 있어서 샀다. 


- 치즈랑 소금이랑 콩이랑

12000 -> 5400

에쿠니 가오리 책을 모으고 있는 중. 이건 에쿠니 가오리 뿐만 아니라 4명의 나오키상 수상작가가 쓴 책이라는 데 책이 너무 이뻐서 구입


- 비주얼 프로젝트

23800 -> 5800

요즘 너무 외모에 무심해 져서 구입. 최여진이 쓴 책인데 약간은 에세이 식이라 맘에 들어서 구입


- 백화점

13800 -> 6300

작가가 쓴 책인 것 같은데 초반 부분이 재미있어 보여서 구입했다. 백화점이라는 소재를 두고 에세이식으로 여러 주제에 대해 쓴 책인것 같다.


- 노플랜 사차원 유럽여행

12000 -> 3600

유럽여행은 언젠가 해보고 싶은 일이라서, 계획없이 떠났다는 게 맘에 들었다. 앞에 살짝 봤는데 유머스럽게 써져 있어서 재미있어 보인다.


- 요리하는 그들의 부엌살림

15000 -> 68000

인테리어 코너에 딱히 좋은 책이 없었는데 이런 책도 있어서 구입. 아무래도 주부(?)가 되고 나서 부엌에 대해서나 살림에 대해서나 관심이 좀 생겼다. 



* 다 읽었으면 읽음으로 표시하고, 몇일날 읽었는지 간단한 감상정도는 적어놓아야 겠다.





WRITTEN BY
뮤네

,

관심있는 책 카테고리

Book 2014. 3. 16. 18:50

요즘 들어 책 욕심이 더 많아 져서 매주 주말에 알라딘 중고에서 책을 사고, 그것도 부족해서 동네 주민센터에서 책을 빌려서 읽고 있다. 예전에는 책 편식이 심했었다. 그래도 요즘에는 관심 있는 책 카테고리가 많아진 편이다.


에세이 - 어떤 사람의 생각이나 느낀점을 훔쳐보는게 너무 좋다. 내가 구글에 검색하기 보다 네이버 블로그나 까페에 검색하기 좋아하는 건 그 검색어의 정확한 내용을 알려고 하기 보다 사람들이 어떤 생각을 하고 사는지가 궁금해서라는 걸 요즘 깨닫고 있다. 특히 에세이 중에서는 싱글 여성들의 이야기들이 재미있다.


소박한 삶, 미니멀라이즈 - 이건 재태크쪽에 관심 있어서 책을 보다가 오히려 내가 원하는 건 돈을 많이 벌고 엄청나게 관리하는 것이 아니라 소비를 줄이고 물건을 줄이고 소박하게 사는 것을 깨닫게 된 후 이런 책들을 많이 찾고 있다.


행복 - 이것도 위의 소박한 삶과 비슷한 메시지이기도 하고 어떻게 하면 행복하게 살 수 있을 지 많이 생각하곤 한다.


자기계발서, 재태크 - 요즘엔 조금 관심이 줄어들 긴 했지만 내가 원래 좋아했던 책이다. 종류는 다양하지만 한가지 주제에 대해서 그 주제에 대해 제대로 쓴 책을 좋아한다. 그냥 위대한 사람들의 일화들이나 자잘한 내용들만 모은 책은 싫어 한다.


노트정리, 시간관리 - 자기계발서랑 조금은 비슷하지만, 나는 노트정리에 강박관념도 있고 제대로 내 삶이나 자료들을 정리하고 싶은 그런 정리욕은 좀 있는 것 같다.


인테리어 - 인테리어 책들은 좀 비싸서 빌려서만 읽곤 했는데 요즘엔 사고 있다. 지금 이 집에서 2년(정확히는 1년 8개월 후) 있다가 이사갈 때는 제대로 내가 살고 싶은 집처럼 꾸미고 싶은 욕심이 있다.


소설 - 소설은 취향이 좀 있어서 고르는 데 힘든 편이다. 아예 쉬운 칙릿소설은 오히려 좋아하고, 일본소설의 에세이같은 분위기랄까 그런 책을 좋아하는 것 같다. 사실 소설을 사는 건 좀 아까워 했었는데, 요즘에는 한 권씩 사고 있다. 다른 책들은 가볍게 읽을 수 있는데 소설을 읽으려면 그 소설을 읽고 나서 감정의 여파가 좀 있어서 마음을 굳게 먹고 읽곤 한다.


무협, 판타지 - 중,고딩학교 때 엄청 읽고, 지금도 가끔 너무 무료할 때 읽곤 한다. 그냥 시간 때우기용으로 읽는 용이랑 몇번을 보고 좋아하는 책들도 있다. 나중에 좋아하는 책은 따로 구입해 놓고 싶다.


개발, UI, 기획 서적 - 직업이 개발자인 만큼 일할 때와 회사에서 30분 책 읽는 시간에 읽고 있다. 예전엔 더 많이 읽었던 것 같은데, 관심있는 책들이 너무 많아져서 소홀해 지고 있다. 그래서 예전엔 죄책감도 들었던 것 같다. 그래도 내가 보고 싶은 책을 보는 게 더 좋은 것 같다. 이러다가도 관심사가 옮겨가면 다시 많이 읽는 때가 오지 않을까..


내가 좋아하는 카테고리가 확실해진 요즘은 그 카데고리의 책 중에 조금만 흥미로워 보여도 쉽게 구입할 수 있게 되었다. 책장에도 카테고리가 자연스럽게 생겼다. 주말에 5~6권정도 사고 주민센터에서 3권씩 빌려도 점심시간이나 저녁, 주말에 읽다보면 한,두개 생각보다 별로였던 것만 빼고 다 읽고 그 내용과 중복되는 원래 있던 책도 다시 읽기도 한다. 




WRITTEN BY
뮤네

,



2014/03/16 북쇼핑리스트


*북리뷰는 아님, 알라딘 중고서점에서 산 책과 어떤 점에 끌려서 샀는 지를 적었다.




- 다운시프트로 인생을 즐겨라 6000 -> 2700 (읽음)


내가 관심있어하는 미니멀라이즈, 소박하게 살기류의 책이라서 구입. 훑어보니 감성적인 내용은 아니고 표와 계산하는 내용들도 보여서 제대로 계획하고 실천하기에 좋을 것 같아서 구입했다.


 - 끌림 12000 -> 3000


까페에서 살짝 봤는데 괜찮아 보였다. 에세이가 좋아서 산 책


 - 울 준비는 되어 있다9000 -> 3700


내가 좋아하는 에쿠니 가오리의 책. 그 중에서 알라딘에 책 종류가 많길래 골랐다. 단편 모음집인듯. 소설책은 한꺼번에 많이 사면 안 읽어지는 경우가 있어서 한 권씩만 구입하고 있다.


 - 이사가는날13800 -> 6300 (읽음)


내가 좋아하는 이사. 그리고 인테리어쪽을 하는 남자의 에세이 + 인테리어에 관한 얘기라는 게 흥미로웠다. 


 - 혼자라서 좋은 날13000 -> 6300 (읽음)


결혼한 여자이면서도 내가 많이 산 종류의 싱글인의 이야기들. 이것도 그런 종류다. 내가 그런 책을 좋아하는 건 싱글인 여성 혹은 사람이 더욱 자신에 대해 많은 생각을 하고, 삶에 대해 그런 고찰을 하는 것이 좋아서인듯.


 - 언니네 방 9800 -> 1000 (읽음)


저번주에 산 언니들, 집을 나가다의 이전 편. 이것도 싱글인들의 이야기. 그것도 1000원이라니, 그냥 내용도 훑어보지 않고 구입. 


 - 까페탐험가 13800 -> 5600 (14.03.25 읽음)


도서관에서 빌린 책 중에서 좋았던 '북까페 인 유럽'과 비슷한 내용일 것 같아서 구입했다. 뉴욕과 홍대에서 좋은 까페를 찾고 느낀점이 있는 책일듯 하다.


 - 작은 아파트 인테리어13000 -> 5900 (읽음)

 - 소규모 작업실 인테리어13800 -> 6300


요즘엔 인테리어에 관련한 책도 좋아서 인테리어 책이 두개 있길래 산 책. 작은 아파트 인테리어는 까페에서 다 보긴 봤었던 책. 














WRITTEN BY
뮤네

,


* 사진은 나중에




- 누가 내 지갑을 조종하는가

->6100


- 디테일, 서울

->5900


- 새벽 5시 (읽음)

->3600


- 서른엔 뭐라도 되어 있을 줄 알았다 (읽음)

-> 5300


- 언니들, 집을 나가다 (읽음)

-> 4800


- 언제나 소박하게 

-> 3100


WRITTEN BY
뮤네

,


















-  카모메 식당의 여자들 (읽음)


- 지극히 적게 (읽음)


- 두 남자의 집 짓기 (읽음)


- 행복의 신화


WRITTEN BY
뮤네

,

#2014.02.12

Daily Life 2014. 2. 12. 12:55


# 티스토리 블로그 테마 수정중이다.

부트스트랩 테마를 사서 붙였다.

티스토리가 제공하는 변환자가 생각보다 적어서, 

내가 생각했던데로는 만들어지지가 않는다..

특히 리스트의 이미지를 가져올 수 없는 점이나,

리스트의 카테고리를 가져올 수 없는 것 등등..

테마 자체를 제대로 활용하기엔 제공하는 것이 제한적이다.



# 중요한건 테마 자체를 수정하는 것이나 기능 추가를 하는 것이 아님에도

그거에 매달리고, 그 시간동안 내가 진정으로 하려고 했던

블로그를 활성화하고 글을 쓰려고 했던 일은 점점 흥미가 잃어가고 있다..

항상 무엇을 시작할 때의 문제점이다..


# 그래서 일단 아무것이라도 끄적이는 것을 시작해 본다.


# 적어도 댓글 기능은 살려놓자..

# 보이는 것도 제대로...

# 프로필도 바꾸고..

# 사이드바도 정리하자..


#2014.02.12 

'Daily Life' 카테고리의 다른 글

서재 작업실 구조 변경  (4) 2014.03.25
회사 업무 기록 (10월~12월)  (0) 2012.02.03
앞으로의 계획  (1) 2012.01.31
회사 업무 기록 (7월~9월)  (6) 2011.08.03
2011년의 블로그, 다시 시작하기  (0) 2011.01.16

WRITTEN BY
뮤네

,

11주차~12주차(9월 5주~
10월 1주)   (0926~ 1007) :  
- 포켓몬 도감 개발( 짝 프로그래밍 )

14주차(10월 3주)   (1017~1021) :  
- 포켓몬 도감 개발 (기타 사항 개발)

15주차~16주차(10월 4주~11월 1주)   (1024~1104) :  
- 대지의 검 이벤트( 맵, 리듬 게임 만들기 )

18주차~21주차(11월 3주~12월 1주)   (1114~1209) :  
- bsCanvas 개발

22주차(12월 2주)   (1212~1216) :  
- 12월 이벤트 디자인, 리소스 작업

23주차(12월 3주)   (1219~1223) :  
- 12월 이벤트 포켓몬 퀴즈

24주차(12월 4주)   (1226~1230) :  
- 12월 이벤트 외우자(플래시) 게임

25주차(1월 1주)   (0102~0106) :  
- 배틀 게시판 기획
 
26주차~27주차(1월 2주~1월 3주)~   (0109~0120) :  
- 코딩연습( 네이버 코딩 똑같이 하기 )

28주차~29주차(1월 3주~1월 4주)   (0123~0203) :  
- 2월 이벤트( 리스트, 퀴즈 ) 개발

'Daily Life' 카테고리의 다른 글

서재 작업실 구조 변경  (4) 2014.03.25
#2014.02.12  (1) 2014.02.12
앞으로의 계획  (1) 2012.01.31
회사 업무 기록 (7월~9월)  (6) 2011.08.03
2011년의 블로그, 다시 시작하기  (0) 2011.01.16

WRITTEN BY
뮤네

,

앞으로의 계획

Daily Life 2012. 1. 31. 06:46

아직 되려면 멀었지만, 이번 년도 11월이면 벌써 나는 3년차가 된다. 처음에 회사 들어갈 때만 해도 내가 3년차가 되면 정말 숙련된 개발자 - 괴물이 되 있을 지 알았다. 그러나 조금 더 아는 게 많아지고, 익숙해 졌을 뿐 실력이 엄청나게 좋아진 것은 아닌 것 같다. 좋은 회사에서 좋은 사수, 스승님들을 만났고 그래서 많은 것을 배울 수는 있었지만 내가 다 소화를 했냐면 그건 아니라는 것이다.

이대로 몇 년 더 똑같은 생활을 하면 나는 5년차이든 10년차이든간에 여전히 햇병아리 개발자가 되 있을 것이다. 그러지 않기 위해서 다시 나는 달라져야 한다.

아침 : 아침형 인간이 되자. 일어나는 시간에 따라 다르겠지만, 아침 시간은 온전히 개발을 위해 공부하는 시간으로 쓸 것이다. 개발 서적을 읽고, 회사에서 배운 것을 기록하는 시간으로 한다.

회사 업무: 회사 업무 시 조금이라도 시간을 내서 다이어리에 하는 일을 적는다. 멘티스에 업무 적을 때 다이어리에 하는 일을 같이 적자. 그러면 아침이나 저녁에 잠깐만 시간을 내서 하는 일을 정리해 놓는다.

저녁: 회사 업무 후 자기 전 시간까지(약 9시~11시) 번역을 한다. 회사 업무는 아니지만 회사 업무 외로 하는 기술서적 번역이 있어서 참여하고 있다. 처음엔 힘들었는데 2시간 정도면 하루 4쪽 이상은 번역이 가능해지고 있다. 번역은 몇 가지 좋은 점이 있다. 우선 영어 공부가 된 다는 점이고, 두번째로 국어 공부가 된 다는 점이고, 꼭 해야하는 일정이 있으므로 꾸준히 하기에 좋다는 것이고, 개발 서적이므로 개발서적을 아주 깊게 보는 데도 도움이 된다. 가능하면 3월달이 끝나도 또 다른 서적을 해 보고 싶은데 그렇게 될 수 있을지는 모르겠다. 이왕 하는 것 프로세스를 만들고 더 빨리 정확히 하는 방법을 모색하자.

주말: 일주일에 한 번은 업무를 정리하는 시간을 가지겠다. 작년에 회사를 이직하면서 느꼈었는데 내가 한 업무조차 정리를 안 하고 생각 없이 일을 하다보니 내가 만든 것조차 제대로 설명하지 못했다. 게다가 내 포트폴리오가 어떻게 쌓여가는 지 제대로 생각조차 하지 않았던 것이 들어났다. 게임쪽으로 개발을 하고 싶었다면 그 부분으로 공부도 하고 따로 프로젝트라도 해서 보여줄 수 있는 것을 만들었어야 했는데, 그러지 않고 이것 조금 저것 조금 스터디만 나가고 결과물은 하나도 만들지 않았던 것이다. 그래서 앞으로는 업무를 포트폴리오식으로 제대로 정리하고 내가 지나온 길과 앞으로 가야할 일의 이정표를 잡는 작업을 할 것이다.

'Daily Life' 카테고리의 다른 글

서재 작업실 구조 변경  (4) 2014.03.25
#2014.02.12  (1) 2014.02.12
회사 업무 기록 (10월~12월)  (0) 2012.02.03
회사 업무 기록 (7월~9월)  (6) 2011.08.03
2011년의 블로그, 다시 시작하기  (0) 2011.01.16

WRITTEN BY
뮤네

,

- 12시 전에 잔다.
되도록 일찍 잔다. 하지만 피곤하지 않다면 무리해서 자려고 하진 않는다.  

- 기상시간은 정하지 않는다. 
알람으로 일어나는 것은 잠이 깨지 않았을 때 일어나기가 쉬운지라 알람을 맞춰놓지 않는다. 
눈이 떠지면 바로 기상한다. 일어나서 바로 할 일은 책을 읽는 것이다.
 
- 저녁에 자기전에 최면을 건다. 
 '나는 일찍 일어나야 된다. 아침에 일어나서 해야 될 일이 많다'
 
- 아침에 일어나서 나를 생각하는 시간을 가진다. 생각한 것은 글로 적는다.
목표나 해야 할 일에 대해서 생각하고, 나를 생각하는 시간을 갖자. 

- 아침에 일찍 일어났으면 뿌듯해하자. 맘껏 칭찬해 준다.
일찍 일어난 거 하나만으로도 뭔가 할 의지가 있었다는 것이므로 칭찬해 주자.
아침에 보람있는 시간을 보내지 못했더라도 계속 하다보면 더 좋은 방법들이
생각날 것이다.


11시에 자서, 3시에 일어났다. 
눈 뜨고 나서는 조금 피곤했지만 조금 지나니 괜찮아졌다. 
알람을 맞추지 않아도 일찍 일어나 지는 게 참 사람은 마음먹기 달린 것 같다.
오히려 많이 자는 것보다 더 머리가 상쾌하다. 

오늘은 오랜만에 다시 장기 계획을 세워봐야겠다.
1년 전에 세운 목표는 너무 다 달라져 버렸다.
다시 앞을 향해서 나아가야지. 


WRITTEN BY
뮤네

,

공정률

Study & Idea 2011. 8. 16. 21:16

 요즘 회사에서 저는 회사 프레임웍 코드를 테스트하고 있습니다. 자바스크립트로 된 클라이언트 소스와, asp인 서버 소스 두 가지를 합해서 총 200여개가 넘는 메서드를 테스트 하고 있는데요. 처음엔 이걸 언제 다 하나라는 마음이 있었는데, 내가 무엇을 해야 되는지를 수치로 정리를 하는 것에 도움이 되고 있습니다.

1.테스트를 끝내야 하는 날짜를 정하기
2.테스트 목표량 알기(메서드의 총 갯수를 세고)
3.엑셀로 정리해서 (테스트 한 메서드/총 메서드) 로 공정률을 체크하기
4.쉬운 메서드 먼저 처리하는 식으로 진도를 빠르게 빼기
5.지금까지 몇 개를 했고 그 기간은 얼마나 걸렸는지 계산하기

[아직.. 13%밖에 안 됬다는거..]

이렇게 하면 하루에 얼마를 진행을 해야 하는지, 내가 어느정도까지 진행되었는지를 알 수 있게 되고, 그래고 진행률을 보고 할 수 있게 됩니다. 업무는 보고할 수 있어야 하고, 그래야 나중에 그 진행률이 부족할 때 어떤 처리를 해야 되는지를 바로 알 수 있습니다..


 

WRITTEN BY
뮤네

,

회사 이직해서 새로운 것들을 많이 배우고 있다. 3개월 동안은 교육기간이라 업무시간이 현재 공부시간이나 마찬가지. 아래는 회사에서 배우고 지금 하고 있는 일들. 이걸 적는 이유는 내가 배운 것들이 뭐였는지 지속적으로 점검하고 배웠던 것을 바탕으로 정보를 정리하고 계속 더 배울 것을 추가하기 위해서..

책도 봐야 할 책을 알려주셔서 보고 있는 중이다. 책을 볼 때 중요한 부분은 쓰면서 보고 있는데, 그래서 앞으로 BookReview에는 그냥 책 요약정도가 올라올 것 같다. 리뷰를 올리면 좋겠지만, 우선은 안 적어놓으면 잊어버리니까.. 정리하는 정도로라도 활용할 예정이었지만, 배운건 정리하고 블로그에 올리라는 지시를 받아서 열심히 블로그를 해야 될 듯!
 


1주차(7월 3주) (0718~0722):
- '웹을 지탱하는 기술' 책을 아주 상세히 읽고 금요일에 발표( 하는 이유 : 웹에 대한 기술 HTTP, HTML, URI 등등에 대해 알아야 해서)
- 회사 프레임웍에 익숙해 지기 위해 개발할 때 옆에서 보면서 따라가기.
- HTTP 프로토콜에 대해서 자세히 배움(포스팅 해야 함..)


2주차(7월 4주) (0725~0729) :
- 웹을 지탱하는 기술 발표 못한 부분 더 읽고 목요일에 발표.
- 엑셀로 온 정리 안된 데이터를 통계를 내기 위해, SQL문을 이용할 수 있도록 엑셀을 정리하고.
  로컬 데이터베이스에 테이블 만들어서 넣고 SQL문으로 자료 정리하기.
- 회사 프레임웍에 익숙해 지기 위해 개발할 때 옆에서 보면서 따라가기. 


3주차(8월 1주)  (0801~0805) : 
- 회사 클라이언트 라이브러리(자바스크립트)를 단위 테스트를 만들어서 돌려보고, 단위 테스트에 걸린 것들을 수정함.
- 필요한 단위 테스트가 있으면 만들기(유효성검사, 교차검사, 범위검사, assert검사 등)
- 단위 테스트 책과 테스트 주도 개발 책등 단위 테스트에 대한 책 등을 공부하기
- 책 : 자바 스크립트 완벽 가이드

4주차(8월 2주)   (0808~0812) :  
- 3주차와 동일(단위 테스트 : bsHttp, bsUtil)
- 책 : 드더글라그 크락포드의 자바스크립트 핵심 가이드

5주차(8월 3주)   (0815~0819) :   
- 3주차와 동일(단위 테스트: bsImg, bsFX)
- 책 : 데이터베이스 관리와 실습


6주차~9주차(8월 4주~9월 3주)  (0822~0916) :   
- 비주얼드 게임 만들기(bs프레임을 이용하기, 서핑 금지.. 알고리즘 스스로 생각하기)
http://muune.byus.net/bejewelled/b.html

10주차(9월 4주)   (0919~0923) :   
- 포켓몬 도감 리소스 작업


'Daily Life' 카테고리의 다른 글

서재 작업실 구조 변경  (4) 2014.03.25
#2014.02.12  (1) 2014.02.12
회사 업무 기록 (10월~12월)  (0) 2012.02.03
앞으로의 계획  (1) 2012.01.31
2011년의 블로그, 다시 시작하기  (0) 2011.01.16

WRITTEN BY
뮤네

,

1장

TDD의 정의
프로그램을 작성하기 전에 테스트를 먼저 작성하는 것
업무 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것

TDD의 목표
최종 목적은 '잘 동작하는 깔끔한 코드'

개발에 있어 TDD의 위치
개발자가 자신을 위해 처음으로 수행하는 테스트
TDD에서 개발자는 자신이 작성한 프로그램에 대해 메소드 혹은 함수 단위로 테스트를 수행한다.

TDD의 진행방식
질문 : 테스트 작성을 통해 시스템에 질문한다. (테스트 수행 결과는 실패)
     -작성하고자 하는 메소드나 기능이 무엇인지 선별하고 작성 완료 조건을 정해서 실패하는 테스트 케이스를 작성하는 것.
응답 : 테스트를 통과하는 코드를 작성해서 질문에 대답한다. (테스트 성공)
정제 : 아이디어를 통합하고, 불필요한 것은 제거하고, 모호한 것은 명확히 해서 대답을 정제한다. (리팩토링)
반복 : 다음 질문을 통해 대화를 계속 진행한다.

TDD의 장점
-개발의 방향을 잃지 않게 유지해준다
-품질 높은 소프트웨어 모듈 보유
-자동화된 단위 테스트 케이스를 갖게 된다
-사용설명서 & 의사소통의 수단
-설계 개선
-보다 자주 성공한다.

2장. JUnit과 Hamcrest
JUnit의 기능
- 테스트 결과가 예상과 같은지를 판별해주는 단정문
- 여러 테스트에서 공용으로 사용할 수 있는 테스트 픽스처
- 테스트 작업을 수행할 수 있게 해주는 테스트 러너

대표적인 단정문
- assertEquals( [message], expected, actual ) : 두 값이 같은지 비교하는 단정문으로, 예상에 해당하는 expected와 실제 테스트 수행 결과에 해당하는 actual이 서로 일치하는지 비교 판단한다. 
 
static public void assertEquals(String message, Object expected, Object actual ) {
     if ( expected == null && actual == null )
          return;
     if ( expected != null && expected.equals(actual))
          return;
     fallNotEqual(message, expected, actual);
}
둘 다 null이면 통과! expected가 null이 아니고 expected의 equals 메소드를 이용해 비교했을 때 같으면 또 통과! 그리고 위 두 경우가 아니면 실패(fail)로 처리된다.
 
- assertEquals( [message], double expected, double actual, double delta ) 오차 범위 내의 동일한 값인지 판단하는 메서드
예) 1을 3으로 나눈 double 타입을 오차를 설정해서 예상 값이 오차 내에서 같은지 확인
assertEquals( 0.3333, 1/3d, 0.0001 )

- assertSame( [message], expected, actual ) / assertNotSame(  [message], expected, actual )
두 객체가 정말 동일한 객체인지 주소값으로 비교하는 단정문이다.
예 ) 특정 객체가 캐시에서 가져온 객체와 동일한지 여부를 판단

- assertTrue( [message], expected ) / assertFalse( [message], expected )
예상값의 참/거짓을 판별하는 단정문
 
- assertNull( [message], expected ) / assertNotNall( [message], expected )
대상 값의 null 여부를 판단하는 단정문
 
- fail( [message] )
이 메소드가 호출되면 해당 테스트 케이스는 그 즉시 실패함
예) 테스트 케이스를 작성 중인데 완료하지 못한 채 구현을 중단해아 할 때 테스트를 수행하면 녹색막대가 나온다. 끝 부분에 fail()을 쓰면 테스트가 실패가 되고 나중에 어디서 부터 테스트를 작성해야 하는지 알 수 있게 한다.


테스트주도개발TDD실천법과도구
카테고리 컴퓨터/IT > 프로그래밍/언어
지은이 채수원 (한빛미디어, 2010년)
상세보기
 
 

WRITTEN BY
뮤네

,
단위 테스트 책 4챕터 읽기 (63~74)

Right-BICEP
Right - 결과가 옳은가?(결과의 유효성 검사)
B - 모든 경계 조건이 Correct한가?
I - 역의 관계를 확인할 수 있는가?
C - 다른 수단을 사용해서 결과를 교차확인 할 수 있는가?
E - 에러 조건을 강제로 만들어낼 수 있는가?
P - 성능 특성이 한도 내에 있는가?

1.Right
예상한 결과가 옳은지 살펴보는 것. 결과의 유효성 검사
테스트 파일 이용하기(testdata.text등을 활용할 수 있다)

2.경계 조건
- 형식 일치: 값의 형식이 기대한 형식과 일치하는가
- 순서 : 적절히 순서대로 되어있거나 그렇지 않은 값인가
- 범위 : 적당한 최소값과 최대값 사이에 있는 값인가
- 참조 : 코드가 자기가 직접 제어하지 않는 외부 코드를 참조하는가
- 존재성 : 값이 존재하는가(예: null이 아님, 0이 아님, 집합 안에 존재함 등)
- 개체수 : 확실히 충분한 값이 존재하는가
- 시간(절대적으로, 그리고 상대적으로) : 모든 것이 순서대로 일어나는가, 제시간에?때맞추어?

3.역관계확인
논리적 역을 적용하여 검증할 수 있다(예:제곱근곱은 제곱한 값이 원래 값과 오차한계 안에서 같은지 테스트)

4.다른 수단을 이용한 교차확인
다른 알고리즘, 다른 데이터부분은 분리, 합하기

5.에러조건을 강제로 만들어내기
메모리고갈, 디스트공간고갈, 총계산시간과 관련된 문제, 네트워크 가용성과 에러,
시스템 부하, 색상 팔레트 제한, 초고해상도 또는 초저해상도
모의객체를 사용한 방법 - 6장에서 설명

6.성능 특성
빠른 회귀 테스트
10000개, 100000개 등등으로 동작 확인

m: 단위 테스트 책 5챕터 읽기 (75~95)

CORRECT 경계 조건
버그는 '경계 조건' 근처, 즉 그 코드가 평소의 루틴과 다르게 동작하는 조건에서 많이 발생한다.

1. 형식일치
어떤 특정한 형식을 따르는 데이터를 기대하거나 만들어야 한다.
- 이메일 주소 firstname.lastname%somewhere@subdomain.somewhere.com 등
- 구조가 복잡한 데이터(헤더가 없고 데이터와 트레일러만 있다면? 헤더만 있다면 등등)
이메일주소나 구조화데이터와 비슷한 것을 만들어 낼 때에는 그 결과물을 테스트하여 기대한 형식과 일치하는지를 확인해야 한다.

2. 순서
어떤 검색 루틴이라 해도 반드시 대상이 시작 부분이나 끝 부분에 있는 조건을 테스트 받아야 한다.
- largetest()메서드에서는 가장 큰 수가 목록의 시작 부분이나 끝부분에 있는 경우에 생기는 버그
일이 일어날 가능성이 있고, '그리고' 이 경우를 작성한 메서드가 처리해야 한다면, 이런 조건에 대해 테스트하고 그 문제를 해결해야 한다.

3. 범위
범위는 어떤 변수형이, 필요하거나 원하는 값보다 범위를 허용하는 상황을 포괄적으로 함축하는 단어다.
- 원에는 360도밖에 없다, 각도 개념을 클래스에 캡슐화
- 직사각형에서 어느 한 변도 100보다 크지 않아야 할 때
assertTrue(message, Math.abs(one.x - two.x)<MAX_DIST); ..
- 빈 스택이나 스택 오버플로우 확인하는 부분
- 인덱스 관련 개념 광범위하게 테스트 
시작 인덱스와 끝 인덱스가 같은 값이다.
처음 인덱스가 마지막 인덱스보다 크다
인덱스가 음수다
인덱스가 허용된 것보다 큰 값이다.
원소 개수를 세는 변수 값이 실제로 들어 있는 항목 개수와 맞지 않는다.

4. 참조
메서드가 자기 영역을 벗어난 어떤 것을 참조하는가? 외부 의존성이 있는가? 클래스가 가져야 하는 상태는?
클래스의 상태나 다른 객체 또는 전역 애플리케이션의 상태를 추정해야 한다면, 이런 조건들이 만족되지 않았을 때 잘 동작하는지 확인하기 위해 코드를 테스트 할 필요가 있다.
어떤 메서드의 '사전 조건'은 이 메서드가 실행되려면 어떤 상태여야 하는지 나타낸다.
'사후 조건'은 어떤 메서드가 끝나고, 그 메서드가 일으킬 것이락 보장되는 일을 나타낸다.

5.존재성
주어진 것이 존재하는가?
넘겨받거나 가지고 있는 모든 값에 대해, 그 값이 존재하지 않는다면, 즉 null이거나 비었거나 0이라면 그 메서드에 어떤 일이 일어날지 자문해 보라.
-"Age가 준비되지 않았습니다." 같은 것을 보고해 주는 예외

6.개체 수
울타리 기둥 에러(울타리 세우는 문제 12피트 폭이 3피트 울타리는 5개여야 한다. 4개로 생각하기 쉽다)
개수를 필요한만큼 갖고 있다든가, 정확히 필요한 만큼 만들었다는 것을 확인해야 한다(0,1,1보다 클 때:1개 이상을 처리할 수 있다면 10,20,1000개까지도 처리할 수 있다는 것을 전제로)
private final static int NUMBER_TO_RETAIN = 20;

7.시간
상대 시간(시간적 순서), 절대 시간(경과한 총 계산 시간), 동시성 문제
어떤 인터페이스는 본질적으로 상태 정보를 가지고 있다. login()은 logout전에 호출되는 식으로.
이 메서드들의 순서가 뒤섞여 호출된다면 어떻게 될까? 기대하는 순서에 어긋나는 메서드 호출을 시도해 봐야 한다.
제한시간은 메서드가 짧은 시간 동안 쓸 수 있는 어떤 자원을 기꺼이 기다리는 시간을 의미한다.
경과 시간 문제 : 어떤 것을 기다리는데 '지나치게 오래' 걸린다면? 
스레드 여러 개가 같은 시간에 같은 객체를 사용한다면 무슨 일이 일어날지 자문해 보라. 동기화해야 할 전역이나 인스턴스 수준의 데이터나 메서드가 있는가?
외부 파일이나 하드웨어에 접근하는 부분은 어떤가? synchronized 키워드가 필요한 모든 데이터 요소나 메서드에 확실히 이 키워드를 붙이도록 하라. 그리고 테스트의 일부로 
스레드 여러개를 돌려보도록 하라.


단위테스트
카테고리 컴퓨터/IT > 프로그래밍/언어
지은이 데이비드 토머스 외 (인사이트, 2004년)
상세보기





WRITTEN BY
뮤네

,

1. 웹을 지탱하는 기술 : URI, HTML, HTTP
 

URI를 사용하면, 쇼핑 사이트의 상품이든 학술논문이든 동영상 사이트에 올라온 영상이든, 전 세계 온갖 정보를 가리킬 수 있습니다.  

HTML은 그 정보를 표현하는 문서형식입니다.

그리고 HTTP라는 프로토콜을 사용하여 그 정보들을 가져오거나 내보냅니다. 


HTTP,URI,HTML은 심플한 기술입니다. 

예를 들어, HTTP 1.1이 정의하고 있는 메서드는 고작 8개뿐입니다. 

그리고 URI는 종이 광고에 삽입할 수 있을 정도로 짧은 문자열입니다.

HTML은 XML을 바탕으로 한 범용 문서포맷입니다.

이런 심플함에 의해서 웹은 여러가지 응용이 가능하게 되어 있습니다.



1-1. URI : URI를 사용하면 웹상에 존재하는 모든 리소스를 한결같은 방식으로 보여줄 수 있습니다.


인터넷 상에서 반드시 유일한 호스트명의 구조와 호스트 내에서 유일한 계층적인 경로를 결합함으로써, 어떤 리소스의 URI가 전 세계의 다른 리소스와 절대로 중복되지 않도록 되어 있습니다.

* URN : 리소스의 이름을 나타내는 것 :리소스에 도메인명과는 독립된 이름을 붙일 수 있습니다. 예를 들어, 서적은 ISBN이라는 세계적으로 통일된 ID를 가지고 있습니다. URL과 같이 서버명과 프로토콜명이 들어있지 않기 때문에 URI로서 리소스를 가져 올 수 없다.

* URL : 리소스의 위치를 나타내는 것


* 리소스 : 웹상에 존재하는 이름을 가진 모든 정보. 

리소스의 이름은 어떤 리소스를 다른 리소스와 구별하기 위한 것이고 즉 URI를 말합니다. 리소스들은 URI로 식별할 수 있습니다.전 세계의 무수한 리소스는 각각 URI로 의미 있는 이름을 가진다. URI를 이용함으로써, 프로그램은 리소스가 표현하는 정보에 접근할 수 있다.서버와 클라이언트 간에 실제로 리소스를 주고받을 때는 어떤 구체적인 데이터를 서로 송신합니다. 

* 어드레스 가능성 : URI가 지니고 있는 리소스를 간단히 가리킬 수 있는 성질을 가리킴. 리소스를 어드레스 가능한 상태, 즉 제대로 이름이 붙어 있고 적절한 수단으로 접근할 수 있는 상태로 만들면, 프로그램을 만들기가 아주 쉬워집니다.

 

Cool URI : 변하지 않는 URI야말로 최고의 URI이다.

구현 의존성을 배제하고 심플하게 만들면 사용성이 향상된다. 기억하기도 간단하고, 개발자가 아닌 보통사람들도 사용하기 쉽다.

- 프로그래밍 언어에 의존적인 확장자와 경로를 포함하지 않는다.(.pl,rb,.do,.jsd 등)

- 메서드명과 세션ID를 포함하지 않는다.(jsessionid=123456)

- URI는 리소스를 표현하는 명사로 한다 (/show/123)

- 구현에 의존적인 경로명을 사용하지 않는다.(cgi-bin, servlet 등)

- URI를 변경하고 싶으면 가능한 한 Redirect하도록 합시다.



1-2. HTTP : 웹의 기반이 되는 프로토콜

 HTTP : 이름대로라면 하이퍼텍스트 전송용 프로토콜이지만, 실제로는 HTML과 XML같은 하이퍼텍스트뿐만 아니라, 이미지, 음성, 동영상, JavaScript 프로그램,PDF와 같은 각종 오피스 도큐먼트 파일 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있습니다.


웹은 HTTP라는 프로토콜을 이용해 클라이언트와 서버가 서로 통신하는 클라이언트/서버의 아키텍처 스타일을 채용하고 있습니다. 즉, 클라이언트가 서버에 요청Request을 보내면 서버는 클라이언트에 대해 응답을 돌려줍니다. 


* TCP/IP : 인터넷의 토대를 구성하는 중요한 네트워크 프로토콜입니다. HTTP는 TCP/IP를 기반으로 하고 있습니다.인터넷의 네트워크 프로토콜은 계층 구조를 가지고 있습니다.각 계층별로 추상화하여 구현하면, 물리적으로 케이블이 동선인지 광케이블인지 하는 하위 계층의 구체적인 사항에 좌우되지 않고, 상위 계층을 구현할 수 있습니다.

- 네트워크 인터페이스 계층(이더넷) : 가장 아래의 계층으로 물리적인 케이블이나 네트워크 어댑터에 해당하는 부분입니다.

- 인터넷계층(IP) : 네트워크에서 데이터를 실제로 주고받는 것입니다. IP가 여기 해당합니다. IPㅇ서는 데이터의 기본적인 통신단위를 패킷이라고 부릅니다. 지정한 IP어드레스와 패킷 단위로 데이터를 주고받으면서 통신합니다.

- 트랜스포트(전송) 계층(UDP, TCP) : TCP가 여기 해당합니다. TCP는 목적지의 상대에 대해서 커넥션을 연결합니다. 이 커넥션을 사용해 데이터의 누락을 체크하고, 데이터의 도달을 보증합니다.

- 애플리케이션(응용) 계층(HTTP,NTP,SSH,SMTP,DNS) : TCP로 프로그램을 만들 때는 소켓이라고 불리는 라이브러리를 사용하는 것이 일반적입니다. 소켓은 네트워크에서의 데이터 교환을 추상화한 API로 접속,송신,수신,절단 등의 기본적인 기능을 갖추고 있습니다. HTTP서버와 브라우저는 소켓을 이용하여 구현합니다. 


HTTP의 구체적인 구조
웹은 아키텍처 스타일로 클라이언트/서버를 채용하고 있습니다. 즉 웹브라우저가 정보를 제공하는 웹서버에 접속하여 각종 요청을 보내고 응답을 받는 구조입니다. 
HTTP가 동기형 프로토콜이기 때문에 서버에서의 처리에 시간이 많이 걸리는 경우라도 요청을 보낸 클라이언트는 응답이 돌아올 때까지 대기합니다. 클라이언트는 우선 DNS를 사용해 호스트 이름을 해석하고, 그 결과로 얻어진 IP어드레스의 TCP 80번 포트에 접속한후 요청을 전송합니다. 서버는 이 요청을 읽어 들여 해석하고 응답을 보냅니다.

- 클라이언트에서 일어나는 일들 : 1.요청 메시지 구축 2.요청 메시지 송신 3.(응답이 돌아올 때까지 대기) 4.응답 메시지 수신 5.응답메시지 해석 6.클라이언트의 목적을 달성하기 위해 필요한 처리

- 서버에서 일어나는 일들 : 1.(요청을 대기) 2.요청 메시지 수신 3.요청 메시지 해석 4.적절한 애플리케이션 프로그램으로 처리를 위임 5. 애플리케이션 프로그램으로부터 결과를 취득 6.응답 메시지 구축 7.응답 메시지 송신

 
HTTP메시지의 구성요소 (스타트 라인, 헤더, 빈 줄 , 바디) 

요청메시지 (1.요청라인-메서드,요청URI,프로토콜버전으로 구성 2.헤더-메시지의 메타 데이터, 각 헤더는 이름:값의 구성 3.바디-메시지를 나타내는 본질적인 정보,리소스를 새로 작성하거나 갱신할 때는 요청의 바디부분에 리소스의 표현자체)

응답메시지  (1.스테이터스 라인-프로토콜버전,스테이터스 코드,텍스트구문으로 구성 2.헤더- HTML의 MIME미디어 타입과 그 문자 인코딩 방식을 지정 3.바디)

*메타 데이터 : 데이터를 기술하는 데이터, 데이터에 대한 데이터를 말합니다. 메타라는 것은 이렇게 어떤 대상에 대해 고차원 것을 나타내는 접두어입니다. 

 
HTTP의 스테이트리스성

스테이트풀의 결점 : 서버가 클라이언트의 애플리케이션 상태를 기억하는 것은 클라이언트의 수가 증가함에 따라 어려워지게 됩니다.  

스테이트리스의 이점 : 스테이트리스는 클라이언트가 요청 메시지에 필요한 정보를 모두 포함시킵니다. 스테이트리스한 서버는 애플리케이션 상태를 기억할 필요가 없기 때문에 서버 시스템이 단순해집니다. 이 특성을 이용하면 확장시키는 것이 간단해집니다.

스테이트리스의 결점 : 1. 퍼포먼스 저하(클라이언트의 송신할 데이터 양이 많아지고 인증 등 서버에 부하가 걸리는 처리를 반복한다) 2. 통신에러에 대한 대처(네트워크 트러블이 발생했을 때 그 요청이 처리되었는지 알 수 없습니다)

* 스트레이트리스 : 서버가 클라이언트의 애플리케이션 상태를 보존하지 않는다는 제약 

* 애플리케이션 상태 : 다른 이름으로 '세션상태'라고도 합니다. 시스템에 로그인하고부터 로그아웃할 때까지 일련의 조작을 모아'세션'이라고 부르는데, 이 일련의 조작 중의 상태는 애플리케이션 상태를 말하는 것이므로, 애플리케이션 상태와 세션 상태는 거의 동일한 의미가 됩니다. 


HTTP메서드 - 8개 밖에 없는 메서드(GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE,CONNECT)
HTTP의 메서드를 한정하여 고정시켰기 때문에 결국 프로토콜이 심플하게 유지되었고, REST의 통일 인터페이스 제약으로 웹은 성공했습니다. GET의 숨겨진 안전성, PUT과 DELETE의 멱등성, 그리고 여차할 때는 뭐든지 할 수 있는 POST 각각의 메서드에 맞는 성질과 확장성을 갖춘 뛰어난 프로토콜입니다.

*GET : 리소드의 취득, 지정한 URI의 정보를 가져옵니다.

*POST : 리소스의 작성, 추가 1.서버 리소스의 작성(블로그 기사의 투고 등 조작에 사용) 2.리소스에 데이터 추가(로그등을 추가할 때) 3.다른 메서드로는 대응할 수 없는 처리(검색결과가 긴 경우 키워드를 요청 메시지의 바디에 넣는 경우)

* PUT : 리소스의 갱신,작성 1.리소스의 갱신(리소스의 텍스트를 바꿀때) 2.리소스의 작성(존재하지 않는 URI에 대한 요청) 

- POST와 PUT의 사용 구분 : POST로 리소스를 작성할 경우, 클라이언트는 리소스의 URI를 지정할 수 없습니다. URI의 결정권은 서버 측에 있습니다. 반대로 PUT으로 작성하면 리소스의 URI는 클라이언트가 결정합니다. 예를 들어 Twitter와 같이 포스팅한 트윗의 URI를 서버 측이 자동적으로 결정하는 웹 서비스와 같은 경우는 POST를 이용하고, Wiki처럼 클라이언트가 결정한 타이틀이 그대로 URI가 되는 웹 서비스는 PUT을 사용하는 것이 적합합니다.

*DELETE : 리소스의 삭제

*HEAD : 리소스의 헤더(메타 데이터) 취득

*OPTIONS : 리소스가 서포트하는 메서드의 취득

- POST를 PUT/DELETE대신 사용하는 방법 1._method파라미터 2.X-HTTP-Method-Override

- 멱등성(어떤 조작을 몇번을 반복해도 결과가 동일한 것)과 안정성(조작 대상의 리소스의 상태를 변화시키지 않는 것

GET,HEAD(멱등이고 안전하다, PUT,DELETE(멱등이지만 안전하지도 않다) POST(멱등이지도 안전하지도 않다)

*CRUD : Create작성(POST/PUT), Read읽기(GET), Update갱신(PUT), Delete삭제(DELETE)라는 데이터 조작의 기본이 되는 4가지 처리 


스테이터스 코드 - 요청의 결과로 얻어지는 응답메시지에서 그 의미를 전달한다.
클라이언트는 숫자를 보고 서버가 어떤 응답을 보낸 것인지 이해할 수 있으며, 클라이언트 측에서 어떻게 처리해야 할지 대략 알수 있게 됩니다. (1xx : 처리중 2xx : 성공 3xx : 리다이렉트 4xx : 클라이언트 에러 5xx : 서버 에러)

자주 사용되는 스테이터스 코드 9개(200 OK- 요청성공 201 Created-리소스 작성 성공 301 Moved Permanently-리소스의 항구적인 이동 303 See Other-다른 URI의 참조 400 Bad Request-요청 오류 401 Unauthorized-접근권한 없음, 인증실패 404 Not Found-리소스 없음 500 Internal Server Error-서버 내부 에러 503 Service Unavailable-서비스 정지


HTTP헤더 - 메시지의 바디에 대한 부가적인 정보, 즉 메타 데이터를 표현합니다. 클라이언트와 서버는 헤더를 보고 메시지에 대한 동작을 결정합니다. 미디어 타입과 언어 태그 등 프레임워크가 아닌 구현하는 사람이 구체적으로 설정해야만 하는 헤더도 많이 있습니다.
- 날짜 시간을 가지는 헤더, MIME 미디어 타입 


 
캐시
캐시란, 서버로부터 가져온 리소스를 로컬 스토리지(하드디스크 등)에 저장하여 재사용하는 방법을 말합니다. 로컬 스토리지에 캐싱한 데이터 자체를 "캐시"라고 부르기도 합니다.
클라이언트가 저장한 캐시는 그 캐시의 유효 기간 내에 다시 그 리소스에 접근하려고 했을 때 재사용됩니다.

캐시용 헤더
클라이언트는 서버에서 가져온 리소스의 캐시 가능 여부를 조사하고 가능한 경우는 로컬 스토리지에 저장합니다. 어떤 리소스가 캐시 가능한지는 그 리소스를 취득했을 때의 헤더로 판단합니다. 리소스가 캐시 가능한지, 그 유효기간이 언제까지인지는 Pragma, Expire, Cache-Control 헤더를 이용해 서버가 지정합니다.

Pragma - 캐시를 억제한다
HTTP/1.1 200 OK
Content-Type: application/xhtmll+xml, charset=utf-8
Pragma:no-cache

Pragma 헤더에 지정할 수 있는 값은 공식적으로는 no-cache뿐입니다. 이 값은 리소스를 캐시하지 말 것을 나타냅니다. 클라이언트가 다음번에 이 리소스를 가져올 때는 반드시 서버에 다시 접속하지 않으면 안 됩니다.

Expires - 캐시의 유효기간을 나타낸다.
HTTP/1.1 200 OK
Content-Type: application/xhtmll+xml, charset=utf-8
Expires:Thu, 11 May 2010 

이 응답에는 2010년 5월 11일 16시까지는 캐시가 유효하다는 것을 서버가 보증하고 있습니다. 클라이언트가 다음번 이 리소스에 접근 할 때는 캐시가 유효기간 내에 있는지에 따라, 서버에 다시 접속할 것인지 캐시를 이용할 것인지를 결정합니다. 
리소스를 변경할 가능성이 없는 경우는 캐시의 유효기간을 무한으로 설정하고 싶겠지만, 그런 경우라도 Expires 헤더에는 최장 약 1년 이내로 일시를 넣을 것을 스펙에서는 권장하고 있습니다.

cache-Control - 상세한 캐시 방법을 지정한다
Pragma 헤더와 Expires 헤더는 HTTP 1.0이 정의한 헤더입니다. 간단한 캐시는 이들로 구현할 수 있지만, 복잡한 지정은 할 수 없습니다. 좀 더 복잡한 지정을 가능하게 하기 위해서 HTTP 1.1에서는 Cache-Control 헤더를 추가했습니다. Pragma헤더와 Exires헤더의 기능은 Cache-Control 헤더로 완전히 대용할 수 있습니다.

Pragma : no-cache
Cache-Control:no-cache 와 같습니다.

Cache-Control : max-age:86400
또한, Expires에서는 절대시간으로 유효기간을 표시했는데, Cache-Control에서는 현재로부터의 상대시간으로 유효기간을 설정할 수 있습니다. 위의 예는 86,400초, 즉 현재로부터 24시간 캐시가 유효하다는 것을 의미합니다. Cache-Control헤더에서는 이 밖에도 다양한 식별자와 값이 들어가는데 이들에 의해서 더욱 섬세하게 캐시를 제어할 수 있습니다. 

캐시용 헤더의 사용 구분
캐시를 시키지 않을 경우는 Pragma와 Cache-Control의 no-cache를 동시에 지정한다.
캐시의 유효기간이 명확하게 정해져 있는 경우는 Expires를 지정한다.
캐시의 유효기간을 상대적으로 지정하고자 하는 경우는 Cache-Controldml max-age로 상대시간을 지정한다.

조건부 GET
클라이언트가 Expires와 Cache-Control 헤더를 검증한 결과, 로컬 캐시를 그대로 재사용할 수 없다고 판단한 경우라도 조건부 GET를 송신하면 캐시를 재사용할 수 있는 가능성이 있습니다. 조건부 GET은 서버 측에 있는 리소스가 클라이언트 로컬의 캐시로부터 변경되어 있는지 여부를 조사하는 조건을 요청 헤더에 포함시킴으로써, 캐시를 그대로 사용할 수 있는지 검토하는 구조입니다. 조건부 GET은 리소스가 Last-Modified 헤더 또는 ETag 헤더를 가지고 있을 때 이용할 수 있습니다.

If-Modified-Since - 리소스의 갱신일시를 조건으로 한다.

GET/test HTTP/1.1
Host: example.com
If-Modified-Since:Thu, 11 May 2010 16:00:00 GMT

이 요청은 로컬 캐시의 갱신일시가 2010년 5월 11일 16시 정각이라는 것을 나타내고 있습니다. 서버의 리소스가 이 이후로 변경되지 않았다면, 서버는 다음의 응답을 보냅니다.

HTTP/1.1 304 Not Modified
Content-Type: application/xhtmll+xml, charset=utf-8
Last-Modified: Thu, 11 May 2010 16:00:00 GMT

304 Not Modified는 조건부 GET에 대한 응답으로, 서버의 리소스를 변경하지 않았다는 것을 알려주는 스테이터스 코드입니다. 리소스의 갱신일시는 Last-Modified 헤더로 확인할 수 있습니다. 이 응답에는 바디가 포함되지 않기 때문에 그만큼 네트워크 대역을 절약할 수 있습니다.

If-None-Match - 리소스의 ETag(엔티티 태그)를 조건으로 한다.

GET/test HTTP/1.1
Host: example.com
If-None-Match: ab3322028

If-None-Match 헤더는 If-Modified-Since 헤더와 비슷하지만, 지정하는 값이 다릅니다. If-Modified-Since 헤더는 '지정한 시간 이후로 갱신되어 있으면'이라는 조건임에 반해, If-None-Match 헤더는 '지정한 값과 매치하지 않으면'이라는 조건이 됩니다. If-None-Match 헤더에 지정하고 있는 값은 캐시하고 있는 리소스의 ETag 헤더의 값입니다.
위의 조건부 GET의 결과, 서버상의 리소스가 변경되어 있지 않으면 다음의 응답을 반환합니다.

HTTP/1.1 304 Not Modified
Content-Type: application/xhtmll+xml, charset=utf-8
ETag: ab3322028

ETag는 리소스의 갱신 상태를 비교하기 위해서만 사용하는 문자열입니다. 리소스를 갱신했을 때 다른 값이 되는 것이면 어떤 문자라도 상관 없습니다.

ETag의 계산

정적 파일 
Apache는 기본적으로 정적 파일의 ETag의 값은 inode번호, 파일 사이즈, 갱신일시를 이용해 자동으로 계산해 줍니다.
단, inode번호는 동일 내용의 파일이라도 파일 시스템이 다르면 다른 값으로 되기 때문에 서버를 분산시킨 경우에는 주의가 필요합니다. 그런 경우는 파일 사이즈와 갱신 일시만으로 ETag의 값을 계산하도록 설계할 수 있습니다.

동적 파일
동적으로 생성한 HTML 페이지와 피드 등의 경우, 정적 파일과는 달리 Apache 등의 웹 서버가 ETag를 자동으로 계산해주지 않습니다. 따라서 ETag를 이용한 조건부 GET을 구현하기 위해선 HTML과 피드를 생성하는 웹 애플리케이션에서 ETag의 값을 계산할 필요가 있습니다. 
ETag 값의 계산은 리소스 내용의 해시를 계산하는 방법이 가장 간단하지만, 리소스의 내용을 모두 계산해야하기 때문에 사이즈가 큰 리소스나 데이텁이스에 대해 복잡한 쿼리를 발생시키는 리소스에는 현실적이지 않습니다. 이런 경우는 일반적으로, 리소스의 메타 데이터(갱신 일시, 사이즈 등)를 이용해 생성하거나, 리소스의 갱신 카운터를 준비해서 그것으로 대용하기도 합니다.


1-3. HTML


 
Atom : 목적 가운데 하나는 RSS의 스펙이 난립하여 혼란을 초래했기 떄문에 확장성이 있는 피드의 표준 포맷을 책정하려는 것이었습니다. RSS는 주로 블로그의 신착정보를 전달하는 피드의 목적으로 이용되었지만, Atom은 블로그뿐 아니라 검색엔진이나 사진관리 등 다양한 웹 서비스의 웹 API로 이용할 수 있습니다. 

멤버 리소스
블로그라면 하나하나의 기사가 멤버 리소스가 됩니다. 이미지 관리 서비스라면 하나하나의 이미지가 멤버 리소스가 됩니다.
멤버 리소스는 XML로 표현할 수 있는 엔트리 리소스와 그 밖의 미디어 리소스로 나눠집니다.

멤버리소스 <-------- 멤버를 복수 포함  컬렉션 리소스(피드로 표현)
엔트리 리소스(엔트리로 표현하는 멤버:text,html,xhtml,그 밖의 텍스트와 XML) , 미디어 리소스(엔트리 이외로 표현하는 멤버:텍스트 이외의 데이터, 멀티미디어 파일)
미디어링크 엔트리(엔트리 리소스 중, 미디어 리소스에 대한 링크를 가진 것 <content>요소의 src속성으로 외부 리소스를 참조한다.

Content-Type: application/atom+xml
Content-Type: application/atom+xml; type=entry
Content-Type: application/atom+xml; type=feed
Content-Type: application/atom+xml; type=feed; charset=utf-8

엔트리의 예
<entry xmlns="http://www.w3.org/2005/Atom">
<id>tag:example.com,2010-08-24:entry:1234</id>
<title>테스트 일기</title>
<updated>2010-08-24T13:11:54Z</updated>
<link href="http://example.com/1234" />
<content>테스트입니다.</content>
</entry>

tag스키마
tag:{DNS명 또는 메일주소},{일자}:{임의의 문자열}
DNS명은 자신이 권리를 가지고 있는 도메인의 호스트명입니다. 메일주소는 자신이 가지고 있는 임의의 메일주소입니다. 여기에 일자정보를 더해, 전 세계에서 고유하다는 것을 보증합니다.

<title><summary>
<author><contributor><name><uri><email>
<updated><published>
<category term="animals" label="동물" scheme="http://example.com/tags" />
<link rel="alternate" hreflang="ja" href="http://example.com/1234" />
<link rel="enclosure" type="audio/mpeg" length="489822" href="http://podcast.example.com/audio/123.mp3" title="Atom에 대한 강연"/>

Atom에서는 엔트리의 내용에 다양한 포맷을 포함할 수 있게 되어있습니다.
텍스트,HTML,XHTML,XML,이미지(바이너리 데이터,Base64 or src)

피드 - 엔트리의 집합
멤버 리소스를 여러 개 가지는 컬렉션 리소스의 표현

엔트리와 공통 메타 데이터 <id><title><author><updated>
피드의 독자적인 메타 데이터 <subtitle>생성프로그램<generator><icon><logo>

Atom의 확장
높은 확장성으로 블로그 이외의 다양한 시스템에서 응용되고 있습니다.

2. Atom Threading Extenstions - 스레드를 표현한다
피드 형식의 데이터는 블로그뿐 아니라 게시판이나 폼, 메일링 리스트 로그 같은 복수 투고자에 의한 콘텐츠에도 적합합니다.
어떤 사람이 투고한 콘텐츠에 다른 사람이 차례차례 답변을 하여 하나의 흐름을 만드는 이른바 스레드 기능입니다.
<thr:in-reply-to>
replies 링크 관계와 thr:count속성 / thr:updated 속성
부모 엔트리 쪽에서 자식 엔트리를 참조할 때 사용하는 것 .
예는 '최초의 블로그 포스팅'의 엔트리를 표현하고 있습니다. 이 엔트리는 replies 링크 관계로 답글에 대한 참조를 가집니다.
3.Atom License Extension - 라이선스 정보를 표현한다.
1. OpenSearch - 검색결과를 표현한다.
Description Document 검색엔진이 제공하는 검색기능을 프로그램이 이해할 수 있는 형식으로 기술하는 XML형식
URL Template Syntax 검색결과 리소스를 표현하는 URL의 검색 쿼리 부분을 파라미터화 하는 스펙
Query Element
Response Element

Atom은 타이틀, 저자, 갱신일시라는 기본적인 메타 데이터를 갖춘 리소스 표현을 위한 포맷입니다. 다양한 애플리케이션용 확장이 준비된 포맷이기도 합니다. 예를 들어 팟 캐스트에 의한 음악전송이나 사진관리, 검색엔진 등입니다.

 
Atom - 데이터 포맷의 규칙(피드, 엔트리)
AtomPub - Atom이 규정한 피드와 엔트리로 표현하는 리소스의 편집, 소위 말하는 CRUD조작을 실현하기 위한 프로토콜입니다.

REST는 시스템을 설계하기 위한 지침입니다.
AtomPub 의 설계는 REST 스타일에 기초한 프로토콜 스펙입니다.
REST는 아키텍처 스타일이기 때문에, 실제 리소스 설계나 링크 기능의 제공은 시스템 설계자의 손에 달려 있습니다. 여기에는 설계자의 자유도를 확보할 수 있다는 이점이 있는 반면에, REST를 바르게 이해하고 있지 않으면 제대로 설계할 수 없다는 결점도 있습니다.
AtomPub 스펙은 기본적인 리소스 모델과 링크 기능을 제공하므로 우리들이 독자적으로 설계해야 하는 부분이 많이 줄어듭니다.
또한, AtomPub 대응 프레임워크와 라이브러리를 이용하면 구현과정이 단축되고 나아가 표준화된 프로토콜을 이용함으로써 상호운용성도 높아집니다.

멤버 리소스의 조작
엔트리 단위에서의 조작
피드에 포함되어있는 각 엔트리는 고유의 URI를 가집니다. 
각각의 URI에 HTTP메서드를 적용하면 CRUD조작을 구현할 수 있습니다.
<link href="http://blog.example.com/entry/1234.atom" rel="edit"/>
이렇게 rel속성이 edit라는 값을 가진 <link>요소를 편집링크라고 부릅니다.

GET 엔트리 취득
PUT 엔트리 갱신 - 취득한 엔트리를 편집하고, 서버에 PUT하여 엔트리 정보를 갱신합니다.
DELETE-엔트리의 삭제
POST-엔트리의 작성

미디어 리소스의 조작
slug 헤더는 AtomPub 가 새로 정의한 헤더입니다. 투고할 미디어 리소스의 URI와 타이틀에 사용할 힌트가 되는 문자열을 %인코딩한 것입니다.

서비스 문서는 컬렉션 리소스의 리스트를 모은  홈페이지와 같은 것으로 생각하면 됩니다.
application/atomsvc+xml이라는 미디어 타입을 이용하고 있습니다. 
<service>요소를 루트로 가지는 XML문서입니다.
<service>요소는 자식요소로 반드시 하나 이상의 <workspace>요소를 가집니다. <workspace>는 몇 개의 컬렉션 리소스를 모으기 위한 것입니다.<categories>요소는 컬렉션 리소스에서 이용 가능한 카테고리를 나타냅니다. fixed속성으로 지정된 카테고리 이외의 엔트리를 추가할 것인지 안 할 것인지를 정할 수 있습니다.
AtomPub 의 카테고리는 소셜 북마크의 '태그'에 가깝다고 생각하면 됩니다. 

AtomPub 에 적합한 웹 API
-블로그 서비스의 API
-검색 기능을 가진 데이터 베이스의API
-멀티미디어 파일의 repository의API
-태그를 사용한 소셜 서비스의API

AtomPub 에 적합하지 않은 웹 API
-Comet을 이용하는 실시간성이 중요한API
-영상의 스트림 전송 등 HTTP이외의 프로토콜을 필요로 하는API
-데이터의 계층 구조가 중요한 API
-타이틀 작자 갱신일시 같은 Atom 포맷이 제공하는 메타 데이터가 불필요한 API



JSON
 
JavaScript Object Notation
데이터를 기술하기 위한 언어
JavaScript 기법으로 데이터를 기술할 수 있는 점이 특징입니다. 
심플함으로 인해 많은 언어에서 라이브러리를 제공하고 있으므로 프로그래밍 언어 간에 데이터를 주고받을 수 있습니다.
웹 서비스에서는 브라우저가 JavaScript를 실행할 수 있어 호환성이 좋고 XML과 비교하면 데이터 표현이 간결하다는 등이 이점이 있어 Ajax 통신에서 데이터 포맷으로 활용되고 있습니다.

자료형 6가지 (object, array, string, number, boolean, null)

1.오브젝트는 이름과 값의 집합입니다. 이름과 값의 세트를 오브젝트의 '멤버'라고 부릅니다. 자바스크립트에서는 멤버의 이름에 식별자와 수치도 가능하지만, JSON의 멤버의 이름은 항상 문자열입니다. 멤버의 값은 문자열과 수치는 물론 오브젝트나 배열 등 JSON의 자료형이라면 무엇이든 들어갈 수 있습니다.
{
"name":{
"first":"John",
"last":"Doe"
},
"blog":"http://blog.example.com",
"age":34,
"interests": ["Web","XML","REST"]
}
오브젝트는 {}로 감싸줍니다. 멤버는 ,으로 구분하고 멤버의 이름과 값은 :으로 구분합니다.


2.배열은 순서를 가진 값의 집합입니다. 0개 이상의 값을 가질 수 있습니다.
문자열의 배열  ["Web","XML","REST"]
오브젝트의 배열 [{"foo":"bar"},{"key":"value"}]
배열의 배열,빈 배열,복잡한 배열 등등

3.스트링(문자열) JSON의 문자열은 반드시 이중인용부호(")로 감싸줍니다. 에스케이프 표기도 사용할 수 있습니다.

4.number(수치) 수치에는 정수와 부동소수점이 모두 포함됩니다. 수치의 표기는 10진 표기로 한정합니다.

5.boolean(부울린) 참이냐 거짓인가를 취하는 부울린형은 true와 false와 같이 반드시 소문자로 기술해야합니다.

6. null

7. 일시 - 기본적으로 제공하는 자료형에 일시는 없습니다. 

8. 링크 

JSON에 의한 크로스 도메인 통신
JSONP가 왜 필요하게 되었는지의 배경 - Ajax에서 이용하는 XMLHttpRequest라는 JavaScript의 모듈은 보안상의 제한으로 인해, JavaScript파일을 가져왔던 동일한 서버하고만 통신할 수 있습니다. 자바스크립트가 있는 서버와 다른 서버가 통신할 수 있다면, 브라우저에서 입력한 정보를 사용자가 모르는 사이에 부정한 서버로 전송할 수 있게 되기 때문입니다. 이와 관련해 이렇게 불특정 다수의 도메인에 속하는 서버에 액세스하는 것을 '크로스 도메인 통신'이라고 부릅니다.
복수 도메인의 서버와 통신할 수 없고, 단일 도메인과만 통신해야 한다는 것은 커다란 제약입니다. 예를 들어, 자체 서비스에서는 지도 데이터와 우편번호 데이터를 가지지 않고, 그것들을 제공하고 있는 다른 웹 API로부터 원하는 대로 가져올 수 없기 때문입니다.


콜백 함수를 활용하는 JSONP
XMLHttpRequest에서는 크로스 도메인 통신을 할 수 없지만, HTML의 <script>요소를 이용하면 복수의 사이트에서 자바스크립트 파일을 읽을 수 있습니다. JSONP는 브라우저의 이런 성질을 이용해 크로스 도메인 통신을 구현하는 방법입니다.






2. REST는 웹의 아키텍처 스타일
REST는 네트워크 시스템의 아키텍처 스타일입니다. 네트워크 시스템의 아키텍처 스타일로서 가장 유명한 것은 클라이언트/서버입니다. 그리고 웹은 클라이언트/서버이기도 합니다. 순수한 클라이언트/서버 아키텍처 스타일에 몇 가지 제약을 더해가면, REST라는 아키텍처 스타일이 됩니다.

일반적으로 소프트웨어 아키텍처는 복수의 컴포넌트를 조합해 구현하는데, 각각의 컴포넌트가 따로따로 움직여서는 동작하지 않습니다. 그래서 각 컴포넌트에 제약을 부과해 갑니다. 그 결과 전체적으로 각 컴포넌트가 협력하면서 동작하게 되는 것이지요.



* 아키텍처 스타일 : '(매크로)아키텍처 패턴'이라고도 하며, 복수의 아키텍처의 공통된 성질, 양식, 규정 혹은 독특한 방식을 가리키는 말입니다.

아키텍처 스타일에는 MVC와 파이프 앤 필터, 이벤트 시스템 등이 있습니다.

실제 시스템은 구체적인 아키텍처를 가지고 있습니다. 그 아키텍처를 설계할 때, 그냥 마구잡이로 만들어 가는 것이 아니라 아키텍처 설계 지침, 규정, 방식 즉, 아키텍처 스타일을 적용합니다. 시스템의 아키텍처를 결정할 때 나침반이 되는 것이 아키텍처 스타일입니다.

* 아키텍처 : 구현에서 추상도를 한 단계 올린 것

* 아키텍처 스타일 : 아키텍처에서 추상도를 한 단계 더 올린 것

* 제약 : 조건을 붙여 내용을 제한함. 또는 그 조건.


2-1. REST의 등장 배경

폭발적으로 보급된 웹으로 인해 각 회사의 서버, 클라이언트 사이에서 이용되어야 하고 상호 운용성이 요구되었기 때문에 

웹을 구성하는 기술, 특히 HTTP와 URI와 HTML에 대한 표준화가 요구되었습니다.

웹 이전의 인터넷 표준은 IETF의 RFC로 정해져 왔지만 웹이 너무나 급속하게 보급되어 버렸기 떄문에 스펙 책정이 따라가지 못하고,

각 기업의 구현은 제각각이라 상호운용성이 결여되는 상태가 발생되어 버렸습니다.


필딩은 HTTP의 스펙을 책정하는 시기에 자신의 연구과제로 웹이 왜 이렇게 성공했는지, 왜 이 정도의 대규모 시스템이 성립된 것인지에 대해 소프트웨어 아키텍처의 관점에서 분석하고, 하나의 아키텍처 스타일로 정리했습니다. 

그는 이 아키텍처 스타일을 REST(Representational State Transfer)라 이름붙였습니다.

**리소스 상태의 표현???????


* SOAP : HTTP를 애플리케이션 프로토콜이 아닌 트랜스포트 프로토콜로 다루고, HTTP 상에서 독자적으로 메시지를 전송합니다. 

SOAP는 메시지 전송 방법만을 규정한 스펙이기 때문에 실제로 시스템을 구축할 때는 SOAP 상에 서비스 별로 프로토콜을 정의하지 않으면 안 됩니다.

각 벤더마다 제각기 정의하게 되면 이전 분산 시스템의 전철을 밟는 셈이었기 때문에 주변 스펙들이 제안되었습니다. 하지만 여러 비슷한 스펙들이 여러 개가 난립했기 때문에, 결국 이전과 마찬가지의 표준화 경쟁을 불러일으켰습니다.


SOAP와 WS-*의 패인

첫째는 기술적인 이유. RPC/분산 오브젝트가 가지고 있던 기술적인 문제점을 그대로 가지고 있는데다 스펙들마저 복잡해져 버렸습니다. 

예를 들어, 벤더 간 인터페이스 호환성의 결여, 복잡한 프로토콜 스택, 네트워크를 통한 인터페이스 호출에 의한 오버헤드 등입니다.

둘째는 정치적인 이유. 표준화 작업은 각 벤더가 드래프트를 가지고 오면, 그 차이를 조정하는 식으로 이루어졌습니다. 하지만 많은 벤더들이 SOAP 자체도 표준으로 확정되기도 전에 구현을 추진했기 때문에 동일한 SOAP와 WS-*라도 해석에 차이가 생겼고 호환성이 결여되었습니다.


2-2. REST는 복수의 아키텍처 스타일을 조합하여 구축한 복합 아키텍처 스타일


클라이언트/서버- 유저 인터페이스와 처리를 분리한다.

클라이언트/서버의 이점은 단일 컴퓨터 상에서 모든 것을 처리하는 것이 아니라, 클라이언트와 서버로 분리해서 처리할 수 있다는 점입니다.

유저 인터페이스는 클라이언트에서 담당하기 때문에 서버는 데이터 스토리지로서의 기능만을 제공하면 됩니다. 


스테이트리스 서버- 서버 측에서 애플리케이션의 상태를 가지지 않는다, 클라이언트는 요청마다 모든 정보를 송신한다.

*스테이트리스 : 클라이언트의 애플리케이션 상태를 서버에서 관리하지 않는다

서버가 애플리케이션의 상태를 가지지 않게 되면, 그만큼 서버 측의 구현을 간략화 할 수 있다는 장점이 있습니다. 간략하게 구현된 서버는 클라이언트로부터의 요청에 응답한 뒤 바로 서버의 자원을 해제할 수 있습니다.

- 스테이트리스가 아닌 스테이트풀한 서비스 :: Cookie를 사용한 사용자 세션 관리


* 캐시- 클라이언트와 서버의 통신횟수와 양을 감소시킨다, 캐시에 필요한 정보를 클라이언트에게 전달, 같은 요청의 결과를 재이용 : 리소스의 신선도에 기초해, 한번 가져온 리소스를 클라이언트 쪽에서 돌려쓰는 방식

캐시의 장점은 서버와 클라이언트 사이의 통신량을 줄여 네트워크 대역의 이용과 처리시간을 축소하고, 더욱 효율적으로 처리할 수 있다는 것입니다. 단, 오래된 캐시를

이용해 정보의 신뢰성이 떨어질 가능성도 있습니다.


* 유니폼 인터페이스- 인터페이스를 고정한다, 모든 서버가 같은 인터페이스를 채용한다.  URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일

예를 들어, HTTP 1.1에서는 GET과 POST 등 8개의 메서드만 정의되어 있고 확장할 수 없는 제약이 있다. 아주 엄격한 제약으로 느껴지지만, 인터페이스의 유연성에 제약을 가함으로써 전체적인 아키텍처가 간결해집니다. 또한 인터페이스를 통일함으로써 클라이언트와 서버 구현의 중립성이 향상됩니다.



* 계층화 시스템- 시스템을 계층별로 분리한다, 인터페이스가 다른 레거시 시스템에 접속할 수 있게 한다, 시스템을 복수의 계층으로 분할한다 : 시스템 전체를 계층화하기 쉽다. 예를 들면, 웹 서비스에서는 서버와 클라이언트간의 로드 밸런서를 설치해 부하를 분산시키거나, 프록시를 설치해 액세스를 제어합니다. 클라이언트 측에서 보면, 서버나 프록시 모두 동일한 인터페이스로 접속할 수 있기 떄문에 접속할 곳이 서버에서 프록시로 바뀐 것을 신경 쓸 필요가 없습니다. 이것은 서버와 프록시 등 각 컴포넌트 간의 인터페이스를 HTTP로 통일하고 있기에 실현될 수 있었습니다.

시스템을 몇 개의 계층으로 분리하는 아키텍처 스타일을 계층화 시스템이라고 합니다.


* 코드 온 디맨드- 프로그램을 클라이언트에 다운로드하여 실행한다, 인터페이스가 다른 레거시 시스템에 접속할 수 있게 한다 , 서버가 제공하는 코드를 클라이언트에서 실행 : 프로그램 코드를 서버에서 다운받아 클라이언트에서 실행하는 아키텍처 스타일입니다. 예를 들어, JavaScript나 Flash,Java 애플릿 등이 여기에 해당합니다. 장점은 클라이언트를 차후에 확장할 수 있다는 것입니다. 클라이언트 프로그램에 미리 준비해 둔 기능뿐만 아니라, 새로운 기능을 계속 추가할 수 있습니다. 


*P2P : 대표적인 REST 이외의 아키텍처 스타일 ; 서버를 거치지 않고, 피어(분산 네트워크상의 각 노드(컴퓨터))사이에서의 통신



3. 하이퍼미디어 시스템과 분산시스템
HTTP,URI,HTML이 지탱하고 있는 웹을 정보 시스템으로 본다면,
하이퍼미디어 시스템과 분산시스템이라는 2가지 측면으로 볼 수 있습니다.

웹은 전 세계에 배치된 서버에 전 세계의 브라우저가 액세스하는 분산 시스템
분산 시스템으로서의 웹의 특징은 프로토콜이 심플하다는 점.(클라이언트와 서버 간의 인터페이스를 HTTP라는 심플한 프로토콜로 고정함)

* 하이퍼미디어 : 텍스트와 이미지, 음성, 영상 등 다양한 미디어를 하이퍼링크로 연결해 구성한 시스템. 웹은 하이퍼미디어의 한 예

* 하이퍼링크 : 하이퍼미디어에 있어서 정보끼리 연결하는 구조

* 중앙 집중형 시스템 :  한 대의 중앙 컴퓨터가 모든 것을 처리하는 형식

* 분산 시스템 : 복수의 컴퓨터를 조합해 처리를 분산시키는 형식. 


3-1. 다양한 하이퍼미디어 포맷

* microformats : HTML의 구조는 그대로 유지한 채, HTML에 다양한 의미를 가지게 할 수 있는 기술

* RSS : 웹페이지의 새로운 정보를 서버에서 발송하고, 전용 프로그램으로 그것을 체크하기 위한 용도

* Atom : RSS가 복수의 버전이 난립해 혼란스러웠던 탓에 최종적으로는 IETF에서 Atom이 표준화되었습니다.

* JSON : RSS와 Atom이 XML을 베이스로 한 구조화 문서용 마크업 언어이기 때문에 단순한 데이터 포맷이 필요해서 제안된 데이터 포맷


3-2. REST와 하이퍼미디어& 분산시스템

REST와 하이퍼미디어 : 하이퍼미디어를 이용한 애플리케이션에는 리소스의 URI만 알면 어떤 애플리케이션이 제공하고 있는 리소스를 다른 애플리케이션에서도 간단히 재사용할 수 있다는 장점이 있다. 리소스를 링크로 연결하여 하나의 애플리케이션을 구성한다는 개념은 REST의 근간을 이루는 사상입니다. 이 개념은 '접속성'라고도 불립니다.


REST와 분산 시스템 : 분산 오브젝트에서는 함수나 메서드단위로 서버 쪽의 처리를 호출합니다. 네트워크를 통한 함수 호출을 하면 오버헤드가 심하기 때문에 시스템 전체 성능의 저하를 가져옵니다. 그에 비해 REST에 기초한 웹 서비스는 링크를 이용하여 애플리케이션을 실현합니다. 분산시스템에서는 기능을 추가해 버전 업 할 때마다 메서드가 늘어나거나 메서드의 인수와 반환값이 바뀌고, REST는 인터페이스가 고정되어 있기 때문에 호환성 문제는 발생하지 않는다. 리소스에 적용할 수 있는 HTTP메서드는 항상 고정되어 있어 HTTP를 구현한 클라이언트라면 동일하게 접속할 수 있습니다.




웹을지탱하는기술HTTPURIHTML그리고REST
카테고리 컴퓨터/IT > 웹사이트 > 웹서비스
지은이 야마모토 요헤이 (멘토르, 2011년)
상세보기


[ 1부 ] 웹 개론
Chapter 01_ 웹이란 무엇인가? 
Chapter 02_ 웹의 역사
Chapter 03_ REST-웹 아키텍처 스타일
[ 2부 ] URI
Chapter 04_ URI의 스펙
Chapter 05_ URI의 설계
[ 3부 ] HTTP
Chapter 06_ HTTP의 기본
Chapter 07_ HTTP 메서드
Chapter 08_ 스테이터스 코드
Chapter 09_ HTTP 헤더
[ 4부 ] 하이퍼미디어 포맷
Chapter 10_ HTML
Chapter 11_ microforms 
Chapter 12_ Atom
Chapter 13_ Atom Publishing Protocol
Chapter 14_ JSON
[ 5부 ] 웹 서비스의 설계
Chapter 15_ 읽기 전용 웹 서비스의 설계 
Chapter 16_ 쓰기 가능한 웹 서비스의 설계
Chapter 17_ 리소스의 설계




WRITTEN BY
뮤네

,


프로그래머의길멘토에게묻다
카테고리 컴퓨터/IT > 프로그래밍/언어 > 프로그래밍일반
지은이 데이브 후버 (인사이트, 2010년)
상세보기

여러번 생각한 적이 있었다. 
정말 구체적으로 어떤식으로 공부해야 하고, 어떤 식으로 사고해야 하고, 어떻게 배워야 하는 지를 분명하게 알려주는 그런 사람 혹은 책, 글이 있었으면 좋겠다고.. 이 책이 바로 그런 책인 것 같다. 
그래서 이 책을 보는 동안 난 너무 감사하고, 감탄하고, 너무 즐거웠던 것 같다.
이 책의 제일 좋은 점이라면 자신의 상황을 선택하고, 그 상황의 문제점과, 해결책을 제시하고, 구체적인 실천 방안까지 제시한다는 점일 것이다. 뭉뚱거려서 어떤 조언이나, 예문만 적혀있었다면 실망했을텐데 당장 할 수 있는 실천 방안을 볼 수 있어서 너무 좋았다. 
아래 목록은 내가 실천하고 싶은 항목들과 구체적인 실천방안만 요약한 부분이다.

1. 잔을 비우다.

구체적인 기술
: 자신이 원하는 역량들을 가진 사람의 이력서를 조사해서, 그 중에서 자신이 들어가고 싶은 팀이나 회사에 필요한 역량을 찾고, 그 역량을 보여줄 수 있는 프로젝트를 시작해라.
: 자신의 이력서를 정기적으로 검토하고 자신이 할 수 있는 기술들을 작성한 목록을 만들어라.

무지를 드러내라.
: 업무에 관해서 가장 자신이 이해하지 못하는 5가지를 적어놓아라. 그 목록을 다른 사람들이 볼 수 있는 곳에 두고 자신의 업무가 바뀔 때마다 그 목록을 갱신해라.

무지에 맞서라.
: 그 목록을 각각에 대해서 학습하고, 목록에서 지워라. 학습하면서 다시 드러난 무지,빈틈을 목록에서 추가한다.

2. 긴 여정을 걷다

지속적인 동기 부여
: 자신에게 동기 부여가 되는 일을 최소 15가지 이상 적어보고, 잠시 기다렸다가 5가지를 추가적으로 더 적어보라. 그 다음에 당신에게 가장 중요한 동기를 부여하는 역할을 골라보라. 그 목록을 힘든 시기에 볼 수 있도록 잘 보관해라.

자신만의 지도를 그려라.
: 지금 현재 일자리에서 이어질 것 같은 일자리를 3가지를 나열하고, 그 3가지에서 뻗어 나갈 수 있는 일자리를 3개, 그리고 또 3개 총 27가지 일자리 목록을 적는다. 그 목록을 보며 자신이 바라는 경력인지를 생각하고, 맘에 들지 않는다면 다른 일자리를 가지고 되풀이 해보자. 외국을 나간다거나, 새로운 자격증,새로운 외국어, 사업을 시작한다면이라는 물은표를 가지고도 고민해 봐도 좋다.

3. 정확한 자기 평가

가장 뒤떨어진 이가 되라.
: 주변을 당신보다 뛰어난 개발자들로 채워라.

멘토를 찾아라 + 마음 맞는 사람들 + 팔꿈치를 맞대고
: 커뮤니티를 찾아서, 그 모임들에 직접 참여하면서 가장 흥미로운 그룹을 찾아라. 오픈 소스 프로젝트에 관심있는 사람을 찾아서 그 프로젝트를 같이 일을 해 본다.

4. 끊임없는 학습

능력의 폭을 넓혀라 + 연습,연습, 또 연습 + 부숴도 괜찮은 장난감
: 구글리더, 소프트웨어 개발 관련 블로그 글을 구독해라.
: 책들 중에서 자신이 풀기엔 어려운 연습문제를 찾아서 4주동안 일주일에 한번씩 다시 풀어보고 그동안에 해법이 어떻게 발전해가는지 관찰해라.
:업무에 관련되지 않게, 좋아하는 도구들을 총 동원해서 간단한 위키나 게임을 만들어보라. 시간이 지나면서 기능도 더 추가하고, 여러가지 실험이나 학습을 할 수 있다.

소스를 활용하라.
: sourceforge.net, Github, Google Code 들을 잘 둘러본다.
복잡한 오픈 소스 프로젝트를 하나 골라서 그 소스들을 보고 생소한 알고리즘이나 설계, 자료구조 들을 기록해 두고 프로젝트의 구조와 새로운 아이디어에 대한 블로그 포스트를 써라.

배운것을 기록하라 + 배운것을 공유하라.
: 책이나 배운것에 대한 당신의 생각이나, 읽은 뒤에 떠오르는 아이디어를 메모한다.
: 가장 좋았던 배운 것에 대해 블로그 글을 써라. 그 블로그 글을 컨퍼런스에서 발표한다고 생각하고 그 발표의 개요를 구상해 보라.

5. 학습 과정의 구성

독서 목록 + 꾸준히 읽어라 + 고전을 공부하라
: 지금 현재 읽고 있는 모든 책의 목록을 타이핑해 넣어라
: 지금 읽고 있는 책을 읽은 다음에 무슨 책을 읽을 것인지 결정해라. 읽을 책의 우선순위를 정해라
: 책을 읽으면서 잘 모르겠는 개념이 어떤 뜻이며, 어떤 책에 있는지 알아보고 독서목록에 추가해라.


'Book' 카테고리의 다른 글

실용주의 프로그래머를 위한 단위테스트  (0) 2011.08.02
웹을 지탱하는 기술 책 내용 정리  (0) 2011.07.20
행복한 프로그래밍 _ 임백준  (0) 2010.06.17
2010 년도 읽은 책  (1) 2010.06.03
불평 없이 살아보기  (2) 2010.05.29

WRITTEN BY
뮤네

,


2010년 9월달 어느 순간 부터,  페이스북, 트위터, 블로그 그 아무것도 쓸 수가 없었다. 
이유를 생각해 보면, 갑자기 글 쓰는게 두려웠던 것 같다. 

고칠 점이라고 생각하지만, 원래 난 까페에 가입해도, 글을 쓰는 것을 잘 못하고, 흔한 댓글 조차 달지 않는 타입이다. 
생각하는 것도 좋아하고, 혼자 일기를 쓰는 것도 좋아하고, 글 쓰는 것도 싫어하진 않는데, 글을 남에게 보여주는 것은 나에게 조금 힘든 일이다. 남이 어떻게 생각할지도 두렵고, 혹은 후에 내 생각이 담긴 글을 보는 것도 두렵기 때문이다. 
그래서, 갑자기 트위터 Follow도 많아지고, 블로그를 연결해놓고, 그러면서 다시 내 글을 보는 사람들을 두려워 했던 것 같다. 

또, 요즘 책에 대한 책을 읽으면서, 내가 읽는 방식이 과연 책을 읽었다고 말 할 수 있는가에 대해서 생각하게 됬다. 
'책을 읽은 후 마음과 행동에 읽기 전과 달라진 점이 없으면 독서가 아니다.' 라는 부분이 있었는데, 굉장히 충격을 받았던 것 같다. 
워낙 의식 없이 속독을 하게 될 때가 많고, 책을 빨리 읽어 버리고 다음 책을 읽어야지라는 마음으로 책을 읽을 때가 많아서 
책을 많이 읽었지만 책을 읽은 것이 아니라 그냥 본 것처럼 느껴질 때가 많았다. 
내용이 생각이 안나는 경우도 많고, 너무 대충 읽은 적도 많은 것 같다.

책을 읽고 나서 정리하거나, 생각을 적고 싶다는 생각은 여러번 했었는데 그 책을 보니 다시 제대로 하고 싶다는 생각이 들었다.
2011년의 나의 블로그 제목은 '책 읽는 견습생, 공부하는 액션스크립터' 이다. 
2011년에는 정말 좋은 책만 읽고, 또 그 책을 읽으면서 느꼈던 점이나 중요한 점을 정리하고 공유하고, 프로그래밍&액션스크립트를 제대로 공부하고 성장 할 수 있는 해가 되었으면 좋겠다. 그러기 위해서 블로그 글을 꾸준히 쓸 수 있도록 노력할 것이다. 





'Daily Life' 카테고리의 다른 글

서재 작업실 구조 변경  (4) 2014.03.25
#2014.02.12  (1) 2014.02.12
회사 업무 기록 (10월~12월)  (0) 2012.02.03
앞으로의 계획  (1) 2012.01.31
회사 업무 기록 (7월~9월)  (6) 2011.08.03

WRITTEN BY
뮤네

,

   책은 '구현패턴' 대해서 다루고 있다단어 자체가 생소한데 디자인 패턴이 클래스와 객체간에 관계에 대한 결정이나통신하는 방법을 서술  ( 설계에 관한 내용)이라고 한다면구현 패턴은   근본적인프로그래밍을 하면서 수없이 반복되는 작업자잘한 결정 사항에관한 내용을 기술한다


    패턴을 사전에서 찾아보면 "일정한 형태양식반복되는 작업이다 책에서의 패턴이란프로그래밍에서 발생하는 반복적이고 공통적인 문제를 예전에 했던 경험(연역적)이나 실용적(귀납적) 근거들로 해결책틀을 만들어 놓은 조언이다

  프로그래밍을 하다 보면 의사결정(판단) 많이 하게 된다판단을 하는 것은 각각 비용이 든다프로그래밍을   결정해야 할사항은 과거에 이미 경험했던 것과 비슷한 경우가 많다판단에 대한 경험이나 실용적인 근거가 있다면다음 판단을    정형화 되있는 판단 패턴으로 풀게될  있고 비용을 줄일  있게 된다패턴을 쓰는 이유는 패턴이 있으면 반복되는 판단을 줄일  있고 더불어비용을 줄일  있기 때문이다. 패턴이 반복적으로일어나는 문제에 대한 합리적인 해결책을 제공하기 때문에프로그래머가 남는 시간과 에너지,창의력을 진정 독창적인 문제 해결에 사용할  있게 해준다.


  패턴을 쓰면 비용이 줄일  있다는 것은 어떤 의미일까사람이 어떤 일을  때에 가장 시간이 걸리는 일은 일을 어떻게 해야할지를 생각하는 작업이다일단 어떻게 해야할지를 정해두면 때부터는 보다 쉽게 일을   있다. 패턴은 생각을 하기 위한 틀을 제공해주고어떻게 해야하는지에 대한 기본적인 것을  수있게 하기 때문에 생각을 하는 시간을 줄이는데에 도움을   있다패턴을 쓰면 생각을 어떻게 전개해야 할지에 대해 도움을 주고생각을 어떻게 해야할지에 대한  자체에 대해 배울수 있다.


   패턴에는 판단하게  조건환경 등등이 명세가 걸려있다패턴은 어떠한 환경과 조건에서라면 어떤 판단이 좋다라고 정하게 하는 좋은 판단들을 모아놓은 것이다패턴이 항상 옳은 것은 아니다모든 패턴은 적당히 틀리고적당히 옳다패턴은 절대적인 진리가 아니므로사람의 의사 결정을 돕는 도구 정도로 생각하는 것이 좋다.  그래서 좋은 디자인패턴책에는 이런환경에선 유리하고 저런 환경에선 불리하다는 안티패턴도 같이 제시하고 있다


  패턴은 결정 요소들 간의 상대적 우선 순위를 나타낸다. 결정이라는 것은 있는 선택지에서고르는 choice 아니라 상황내에서 만들어가는 decision이다결정요소라는 것은 패턴을 결정하게(만들게하는 의사결정요소를 의미한다성능을 중시할 때의 요소와수정을 중시할 때의요소는 다르다각각의 조건과 환경에 따른 요소를 결정하게 한다.


  책에서는 프로그래밍을   생기는 수많은 의사결정의 패턴에 대해서서 설명하고 있고의사결정을 하는 각각의 이유를 설명할  있게 해준다
.

'Study & Idea' 카테고리의 다른 글

공정률  (0) 2011.08.16
읽고, 읽고, 또 읽어라  (2) 2010.08.13
비슷한 작업 다시하기 + 프로그래머를 위한「공부론」  (2) 2010.06.09

WRITTEN BY
뮤네

,



내 맥북 프로 >.<







 회사에서 내 자리


오늘 몸이 안 좋았는데 맥북 와서 기분 좋아졌당



WRITTEN BY
뮤네

,



독서가 역량 개발에 얼마나 중요한지 사람들은 잘 알고 있다. 그러나 사람들은 독서를 실천하지는 않는다. 단군신화 스토리를 떠올려보자. 곰과 호랑이에게 미션이 주어지는데 호랑이는 중간에 포기해 버린다. 곰은 마침내 환웅과 결혼해 단군을 낳게 된다. 만약 쑥과 마늘을 먹을 때마다 하루하루 몸의 일부분이 사람으로 변해가는 것을 스스로 확인할 수 있었다면 그래도 포기했을까?

눈에 보이는 변화가 있었다면 호랑이도 꾹 참았을 것이다.

책읽기는 쑥과 마늘과 같다. 책이라는 게 오늘 한 권 읽고, 일주일에 몇 권을 읽어도 도통 느껴지는 변화가 없다. 1년에 10권을 읽어도 사는 데 별 지장이 없고, 특별히 부정적인 변화를 느낄 수도 없다. 그런데 99일까지는 아무런 변화가 없었지만 100일 때 곰이 사람으로 변했던 것처럼 책읽기가 쌓이는 어느 '100일'이되었을 때, '책 읽은 사람'과 '책 읽지 않은 사람'의 차이는 상상을 초월한다.

책읽기의 과정은 곧 생각의 과정인데, 한 권의 책을 읽을 때마다 내 두뇌라는 '밭'이 한 번씩 일궈진다. 농부가 밭을 뒤엎는 이유는 딱딱한 흙에 생명을 불어넣기 위함이다. 책은 커다란 호미와도 같다. 한 번 호미질을 한다고 대단하지는 않지만, 호미질이 계속 되면서 책읽기의 효과가 나타난다.

책읽기를 통해 변화되는 생각의 옥토가 중요하다. 옥토만 만들어 지면 무엇을 심어도 풍년이다.

사람은 현재까지 자신이 읽은 책의 총합이라 해도 과언이 아니다.
<생각의 좌표>라는 책에서 한 스페인 작가의 말을 인용한다.
'우리는 모두 감옥생활을 하고 있다. 우리의 눈과 귀가 보고 들을 수 있는 세계는 지극히 좁기 때문이다. 그런데 이 감옥에 하나의 창이 나 있다. 놀랍게도 이 창은 모든 세계와 만나게 해준다. 바로 책이라는 이름의 창이다."

* [스토리가 스펙을 이긴다], 김정태, p110


공감 많이 가고, 비유가 아주 적절해서 퍼왔다.

출처 : http://cafe.naver.com/happinessfactory/1368

'Study & Idea' 카테고리의 다른 글

공정률  (0) 2011.08.16
켄트벡의 구현패턴 _패턴  (1) 2010.10.21
비슷한 작업 다시하기 + 프로그래머를 위한「공부론」  (2) 2010.06.09

WRITTEN BY
뮤네

,






이번에 트위터 API 하다가 Oauth 라는 아이 때문에 완전 헤매다가
야꼬 오빠가 추천해서 산 책.
사실 아직도 Oauth를 정복하지 못했다 ㅠ_ㅠ

이왕 산 김에 제대로 한번 훑어보고 있는데,
알고 있던 스터디 까페에서 이번에 매쉬업 스터디를 진행해서
잘 됬다 싶어서 신청도 했음.
( 근데 거기도 토요일날 3시 스터디라, 사정을 말하고 격주에는 나가지 못하는 게 아쉽 ㅠ_ㅠ )

책은 이 책 말고, '프로 웹 2.0 매쉬업' 이라는 책으로 진행을 해서
한 권 더 사야 될 듯..



이렇게 생긴 책 ㅋ

열심히 공부해서 스터디 때 발표해야지 ㅎ


WRITTEN BY
뮤네

,


이 번달에는 진짜 블로그 신경도 안쓰고 있었는데,
티스토리 초대장이 들어와 있어서 깜짝 놀랐다.
절대 이런 조그만 블로그에는 초대장 안 주는 줄 알았음..


블로그 글 안 쓴지 한달이 다 되간다..
회사에서 일 하는 것도 바쁘긴 했지만,
조금 내 마음이 헤이해졌던 거 같기도 하다.
반성해야지.

프로젝트 큰게 끝나면 꼭 이렇게 되는 거 같은데,
뭔가 엄청 열심히 할게 있다가 사라졌을 때의 상실감인가 ;

아무튼, 중단되었던 공부 다시 시작하고..
다시 열심히 할 것도 찾고,
블로그 글도 일상말고 내용 좀 채워야겠다 ㅎ







WRITTEN BY
뮤네

,


작업 기간 : 090901 ~ 090915
수료식 날짜 : 2009년 09월 16일






디자인 정글 아카데미 '플래시스페셜리스트' 과정 수료식에 맞춰서 포트폴리오로 만들었던 사이트
슬럼프에 빠져서 포트폴리오를 만들 생각을 못하고 있다가,
갑자기 무조건 만들긴 해야겠다는 생각이 들었고, 정말 홀린듯이 15일동안 만들었었다.
이 기간에는 잠도 3시간만 자고, 일어나자마자 코딩하고, 하루종일 머리 속에 이거 만드는 생각밖에 없었던..
그래서 나에게 뜻깊은 포트폴리오다..
기획기간은 한달 넘게 했는데, 작업기간은 얼마 되지 않은게 너무 아쉽다.
그래서 작업을 다 못하고, 미완성인 것도 많다 (안되는 것도 많고, 오류도 많음...)
분명 그 때는 모르는 것도 많고, 혼자 엄청 고민하면서 작업했는데,
지금 보니까 음... 재밌다;;

내가 회사 들어가면 꼭 다시 리뉴얼하고 싶었었고,
그렇게 할 수 있을꺼라고 생각했는데, 마음만 먹고 실행은 하지 못했었다..
꼭 다시 제대로 만들어 보고 싶다.

내 이번년도 목표에 발자국 사이트 리뉴얼 하는 것도 있기도 하고..
이번년도 안에 꼭 리뉴얼 하겠습니당!!


사이트 주소
http://muune.byus.net/baljaguk
액션스크립트 3.0 + 네이버 지도 API + PHP 사용

* 주의할점 :

팝업으로 뜨므로, 팝업 차단 허용!!
회원가입 부분이나 로그인,로그아웃 부분이 좀 이상함~~

왠만하면 test아이디로 테스트 해볼 것.
로그인 패스워드는 내가 암호화 할 생각도 하지 못 했음;
가입하더라도 알려져도 상관없는 암호로 가입할것...;;;

'2010 블로그 글' 카테고리의 다른 글

지금 공부하는 것  (0) 2010.08.12
오랜만에 일상  (0) 2010.08.10
나중에 다시 뵈요~~~  (1) 2010.07.04
twitter API 관련 링크 모음 (액션스크립트 위주)  (0) 2010.06.24
7월 공부할꺼  (0) 2010.06.24

WRITTEN BY
뮤네

,


주말을 이용해서 드디어 '켄트벡의 구현 패턴'책을 한 번 다 읽었다.
그러나, 책은 분명 다 읽었지만.. 뭐랄까,
수학문제나 과학문제를 내가 이해하지않고, 풀어보지 않은 채로 눈으로만 답을 쭉 읽은 상태랄까.. ㅜ_ㅜ

처음에 책이 배달왔을 때는 생각보다 얇아서 '음, 하루만에 다 볼 수 있겠다' 라고 생각했는데
열심히 읽다가, 중간에 포기 하고, 다시 또 처음부터 보다가 또 포기하고..
결국 한번 끝까지라도 보자라는 마음으로 다 읽기만 했다.

친절한 책은 아니라는 생각이 들었다.
결코 초보자를 위해 용어를 설명하거나 그런 것이 없이,
이미 이런건 다 해봤다라는 것을 전제로 해결책을 제시하고 있기 때문일꺼다.
아는 만큼 보이는 거라든데, 내가 모르는 부분이 아직도 참 많은 것 같다.

다음 읽을 책은, 다시 헤드퍼스트자바 책이랑 소설같은 자바를 보기로 결정했다.
자바에 대한 용어들이나, 코드, 프로그래밍 적인 용어들이 많이 나왔는데, 너무 헷갈렸기 때문이다.
학교에서 배울 땐 다시 자바를 내가 공부할꺼라고는 전혀 생각도 하지 못했었는데,
지금 다시 공부해야 되는 상황이 뭔가 아이러니하다는 생각이 든다.

안드로이드 공부할 때도 느꼈지만,자바가 전혀 하나도 기억이 나지 않는다.
기억나는 거라고는 그냥 for문, if문 이 정도?
정말 생소한 문법에, 내가 이걸 정말 배웠긴 했었나라는 생각이 들 정도..
오히려 액션스크립트하고만 자꾸 비교되서, 공부하기 더 힘들었다.
한번 제대로 다시 봐야 될꺼 같다는 생각이 들었다.

제대로 자바 공부 다시 한 다음에, 다시 켄트벡 책을 도전해봐야겠다.
책님, 나중에 다시 뵈요~~

'2010 블로그 글' 카테고리의 다른 글

오랜만에 일상  (0) 2010.08.10
200909_ 학원 수료 포트폴리오 (발자국 사이트)  (0) 2010.07.04
twitter API 관련 링크 모음 (액션스크립트 위주)  (0) 2010.06.24
7월 공부할꺼  (0) 2010.06.24
2010 06 16  (0) 2010.06.17

WRITTEN BY
뮤네

,


twitter API

http://dev.twitter.com/doc


twitter API 등록(CONSUMER_KEY , CONSUMER_SECRET 값를 받기)

http://twitter.com/apps/new

SVN
tweetr : http://svn.swfjunkie.com/tweetr/trunk/
twitter-actionscript-api : http://twitter-actionscript-api.googlecode.com/svn/trunk/
as3crypto : http://as3crypto.googlecode.com/svn/trunk/

Tweetr 라이브러리
http://tweetr.swfjunkie.com/docs/com/swfjunkie/tweetr/Tweetr.html

Tweetr Tutorials – Part 2: Using OAuth in Tweetr
http://blog.swfjunkie.com/2009/12/tweetr-tutorials-part-2-using-oauth-in-tweetr/
http://wiki.swfjunkie.com/tweetr:downloads

twitter-actionscript-api 
http://code.google.com/p/twitter-actionscript-api/
http://dev.dborisenko.com/twitter-actionscript-api/docs/



검색 파라미터

http://search.twitter.com/search.atom?q=twitpic&page=1

q : 검색어
since_id : 검색 시작 아이디 (숫자)
max_id : 검색 마지막 아이디 (숫자)
page : 페이지 (기본 1 max 100)
rpp : 한번에 검색할 갯수 (max 100)
since : 검색 시작 날짜 YYYY-MM-DD
until : 검색 종료 날짜 YYYY-MM-DD
from:id - 아이디로 검색
 


twitter limit
http://mjstar.kr/90088748980


twitpic API
http://dev.twitpic.com/docs/

 

twitpic 이미지 썸네일 및 원본 가져오기

썸네일 http://twitpic.com/show/thumb/1x7ynd

큰이미지 http://twitpic.com/show/large/1x7ynd


'2010 블로그 글' 카테고리의 다른 글

200909_ 학원 수료 포트폴리오 (발자국 사이트)  (0) 2010.07.04
나중에 다시 뵈요~~~  (1) 2010.07.04
7월 공부할꺼  (0) 2010.06.24
2010 06 16  (0) 2010.06.17
안드로이드 관련 링크  (0) 2010.06.17

WRITTEN BY
뮤네

,


저번달에 산 책도 많아서 읽어야 될 것도 많고,
만들다 만 것도 있고, 공부하다 만 것도 있고
공부할꺼야 넘치고 넘치지만..
7월에 꼭 공부하고 넘어갈 것 3가지 ↓


1. DisplayObject 와 DisplayObjectContainer

PFG에서 발표하기로 함 (7월 10일)

- F1(도움말) 관련 클래스 보기
- 책에 관련 내용 보기 , 정리
- 아는거 모르는 거 따로 정리
- 발표준비(PPT) 하기,
- 예제 만들기


2. 트위터 API

과장님이 이번 프로젝트에서 할꺼라고 공부하라고 하심 (7월 15일 오픈)

- 아이디별 트윗 내용(썸네일), 검색, 팔로우 리스트 등 관련된 내용
- 바로 사용할 수 있도록 클래스 만들 준비 하라고 하셨음
- 트위터 정책, 등 모든 자료 모으기
- 트위터 API 보기 (영어로 된....ㅠ_ㅠ)
- 필요한 클래스 만들기


3. UML에 대해서 정리

나중에 발표할 수 있게 정리,공부 (확정된 날짜 없음)

- 11월에 정리 했던 거 다시 보고 정리
- UML 관련 책들 정리
- 스크랩해 놨던 것들 정리




 

'2010 블로그 글' 카테고리의 다른 글

나중에 다시 뵈요~~~  (1) 2010.07.04
twitter API 관련 링크 모음 (액션스크립트 위주)  (0) 2010.06.24
2010 06 16  (0) 2010.06.17
안드로이드 관련 링크  (0) 2010.06.17
레퍼런스 공부하자  (2) 2010.06.12

WRITTEN BY
뮤네

,

2010 06 16

2010 블로그 글 2010. 6. 17. 02:57
1. 이번주 내내 집중이 되지 않고, 딴 생각에 빠져 살아있었음.
이제 좀 정신차리나 싶은데..
내일은 또 우리나라 경기


2. 드디어 화분을 샀다.
어제 3개, 오늘 2개.
사야지 사야지 생각만 하다가
다이소에서 싸게 파는 거 보고 바로 질렀다.
두개의 창문에다가 고이 모셔뒀다.
바라만 봐도 행복하구나 *=ㅁ=*

3. 내가 계속 배가 아팠던게
우유때문이었다는 거에 놀라웠다.
당연히 커피때문인줄 알았는데..
그래도 커피를 먹을 수 있어서 행복하다.
커피를 못먹은 며칠때문에 더욱 커피를 사랑하게 되었다.

4. 일주일 내내 늦게 잠들고 있다.
내가 일찍 잠을 잤었던 것은,
아침에 일찍일어나기 위한 것이 제일 큰 이유였는데..
전혀 도움이 되지 않았음으로, 그냥 늦게 자는 것도 괜찮을 것 같다는 생각이 든다.
평일에 피곤하지 않을 정도로만..
역시 나는 아침형인간은 못되나보다 ;;

5. 안드로이드 폴더만 생성한채
쓰여진 글이 0인 것이 너무 불쌍해서
링크랑, 전에 요약정리한 것만 올려놨다.
이거 말고, 스터디 하면서 서로서로 발표한 ppt들이 있는데
그건 올려도 되는 건가 아닌건가가 헷갈린다.
요약정리한것도, 그냥 내가 보기 위해서 대충 요약한거라
블로그에 올리면서 좀 보기 좋게 다듬고 싶었는데..
언젠가 하면 좋겠는 일은 왜 이렇게 하기 싫어지는 지 모르겠다.



'2010 블로그 글' 카테고리의 다른 글

twitter API 관련 링크 모음 (액션스크립트 위주)  (0) 2010.06.24
7월 공부할꺼  (0) 2010.06.24
안드로이드 관련 링크  (0) 2010.06.17
레퍼런스 공부하자  (2) 2010.06.12
G마켓_월드컵축구공게임_201004  (4) 2010.06.10

WRITTEN BY
뮤네

,


* 안드로이드 세팅
http://www.androidpub.com/?mid=android_dev_info&category=127161&document_srl=588


* DroidDraw
Android Layout에 관련된 구성을 일부분 제공해주는 사이트 
http://www.droiddraw.org/


* 구글 API 번역
http://www.kandroid.org/board/kandroid_dev.php 


* 칸드로이드 운영자인 들풀님의 API 번역 책의 pdf 파일|
kandroid_book_3rd_edition.pdf



* 안드로이드 데이터 획득 프로그램
안드로이용 데이터 획득 app관련 Project link.
기본적으로는 폰에 app. 인스톨후 필요한 파일들을 획득해오고,
여기다가 Hash 값을 통한 데이터 무결성만 실현하면, 이것이 모바일 포렌식 도구가 됨이라고 써있음..;
http://code.google.com/p/android-forensics/


 

스터디 그룹 노트

http://androidilsan.springnote.com/
첫번째 스터디 : Android Bee 스터디 스프링 노트 (부분 공개임)

http://androidpub.springnote.com/
두번째 스터디 (안드로이드 펍 스터디) 스프링 노트

PDF 파일 모음


  • 원서 파일(Beginning.Android.2009.pdf)  Beginning.Android.2009.pdf
  • Pro.Android.Jun.2009.pdf  Pro.Android.Jun.2009(1).pdf
  • Pro.Android.Games.2009.pdf  Pro.Android.Games.2009.pdf
  • Professional.Android.Application.Development.2008.pdf  Professional.Android.Application.Development.2008.pdf
  • Manning.Unlocking.Android.May.2009.pdf  Manning.Unlocking.Android.May.2009.pdf
  • Android.Application.Development.May.2009.pdf  Android.Application.Development.May.2009.pdf


  • '2010 블로그 글' 카테고리의 다른 글

    7월 공부할꺼  (0) 2010.06.24
    2010 06 16  (0) 2010.06.17
    레퍼런스 공부하자  (2) 2010.06.12
    G마켓_월드컵축구공게임_201004  (4) 2010.06.10
    버리기,  (0) 2010.06.08

    WRITTEN BY
    뮤네

    ,

    행복한 프로그래밍
    카테고리 컴퓨터/IT
    지은이 임백준 (한빛미디어, 2003년)
    상세보기


    p.50 : 프로그래밍을 배운지 얼마 되지 않은 사람들은 자신이 작성한 프로그램이 일단 돌아가기만 하면 감격한다. 나도 그랬다. 처음에는 프로그램이 돌아가도록 만드는 것말고 다른 것은 생각할 여유가 없다. 자신이 작성한 프로그램이 원하는 결과를 낳는 것을 눈으로 확인하는 것만으로도 가슴이 벅차고 심장이 두근거리기 때문이다.

    p..52 : 대부분의 사람들은 여기에서 멈춘다. 이 정도면 크게 나쁘지 않다고 보고 더 이상 고민하지 않는 것이다. 이러한 프로그래머가 작성하는 알고리즘은 대개 주어진 일을 처리하는 데 있어서 크게 문제를 일으키지 않는다. 가끔 버그가 발견되거나 성능에서 문제가 나타나기도 하지만, 그 때마다 필요한 수정을 가해서 프로그램을 유지해나간다..... 이런 사람들은 실력이 부족하다기보다는 집중력이 부족한 것이다. 능력이 없는 것이 아니고 열정이 부족한 것이다. 하지만 프로그래밍을 삶을 (전체는 아니더라도 최소한 일부) '목적'으로 대하는 프로그래머들은 다른 사람이 19분보다 빠른 방법이 있다고 말해주지 않아도 스스로 고민을 시작한다. 더 빠른 방법이 있는지조차 확실하지 않지만 커피를 한잔 마시면서 새벽까지 고민한다. 이유는 없다. 그러한 고민을 하는 순간이 세상에서 두 번째로 행복한 순간이기 때문에 고민을 하지 않을 수가 없을 뿐이다. 그럼 세상에서 첫번째로 행복한 순간은? 당연히 고민하던 문제를 풀어서 심장에 전류가 흐르는 듯한 쾌감을 느끼게 되는 순간이다. 말하자면 프로그래머는 그 쾌감을 잊지 못해서 끊임없이 키보드를 두드리게 되는 일종의 '쾌감 중독자'인 셈이다.모든 일이 다 그렇지만 보통의 프로그래머와 뛰어난 프로그래머는 이렇게 열정이 있는가 없는가에서 판가름난다.

    p. 121 : 오늘날에도 널리 사용되고 있는 C언어는 프로그래머들이 쉽게 이해할 수 있는 고급언어 문법 구조를 가지고 있으면서도 CPU와 메모리라고 하는 비트의 세계 깊숙한 곳까지 들어갈 수 있도록 해주는 기능을 가지고 있기 때문에 엄청난 주목과 찬사를 받으면서 단숨에 70년대와 80년대를 관통하는 최고의 프로그래밍 언어로 등극했다.

    p.122 : 모든 프로그래밍에서 객체 지향 언어가 절차 중심의 언어보다 더 낫다고 볼 수는 없지만 절차 중심의 언어가 해결하기 어려운 문제를 객체 지향 언어로 풀 수 있다는 점에서 본다면 그 둘의 차이는 분명히 존재한다. 절차적인 언어의 핵심은 바로 특정한 알고리즘, 혹은 절차(procedure)를 중심으로 문제를 해결해나간다는 것이다. 알고리즘이나 절차는 특정한 함수안에 보관되는데, 누군가 그 함수를 호출하면 함수 내부에 저장되어있는 알고리즘이 실행된다. 다시 말해서, 절차적인 언어의 핵심은 내가 입력을 보내면 잠시 후에 출력 결과를 되돌려 주는 함수라고 볼 수 있다.

    p.127 :  훌륭한 화가가 처음에는 다른 사람의 그림을 똑같이 그리는 연습을 하고 뛰어난 바둑 기사가 처음에는 고수들이 둔 바둑의 기보를 열심히 읽어보듯이, 수준 높은 프로그래머가 되기를 꿈꾸는 사람은 실력이 뛰어난 프로그래머가 작성한 프로그램을 많이 보고 똑같이 흉내를 내 볼 필요가 있다.......아무리 실력이 뛰어난 프로그래머가 작성한 코드라고 해도 개선의 여지는 항상 남아있기 마련이다. 따라서 남의 프로그램을 분석하거나 학습할 때 자기만의 주관과 철학을 가지고 비판적인 시각으로 바라보는 자세는 대단히 중요하다.

    p.144 :  이러한 실천과 실험 속에는 새로운 기술적인 내용이나 변화를 학습하는 것이 포함되어 있지만 지나치게 새로운 것만을 좇아 다니는 것은 가볍고 무망하다. 진정한 힘은 인기를 끄는 프로그래밍 언어의 문법적인 측면이나 단편적인 기교를 습득하는 데서 나오는 것이 아니라 근본적이고 고전적인 내용을 학습하는 데서 더 많이 쌓이기 때문이다.

    p.212 : 내게 영향을 주었던 프로그래밍에 대한 그의 철학은 너무나 뚜렷했기 때문에 한 마디로 압축될 수 있을 정도였다. '소설처럼 읽히는 프로그램' ..... 소설처럼 읽히는 프로그램이란 '보통 수준의 프로그래머'가 읽었을 때 의미가 한 눈에 이해되는 프로그램을 의미한다..... 나는 1밀리세컨드가 실질적인 차이를 불러일으킬 수 있는 소수의 특수한 프로그래밍을 제외한 모든 프로그래밍에서 '쉽게 읽히지만 조금 느린 프로그램'이 '복잡하지만 빠른 프로그램'보다 훌륭한 프로그램이라고 믿는다...... 사실 이해하기 어렵게 작성된 프로그램의 대다수는 구현하고 있는 논리가 실제로 복잡하기 때문에 그렇게 작성되기보다는 프로그래머 자신의 역량과 철학이 부재하기 때문에 그렇게 작성되는 경우가 많다. 한번 더 얘기하자. 쉬운 프로그램이 좋은 프로그램이다.

    p.242 :  소프트웨어를 설계하는 일은 그 자체로 복잡한 법칙을 가지고 있기 때문에 특정한 알고리즘을 구현할 줄 아는 프로그래밍 능력만으로는 수행하기 어렵다. 설계자는 프로그래밍 능력 이외에도 복잡하게 얽히고 설킨 소프트웨어 콤포넌트나 객체들 사이의 관련성을 전체적으로 조망할 수 있는 힘이 있어야 한다. 그리고 아무 것도 없는 백지 상테에서 출발해서 살아서 퍼덕거리는 소프트웨어 덩어리를 조각할 수 있는 창조적인 능력도 있어야 한다. 그 뿐만이 아니다. 진정한 소프트웨어 설계자는 현재의 기술적인 흐름을 정확하게 읽고 있는 것은 물론 미래의 기술이 나아가는 방향도 직관적으로 감지할 수 있어야 한다.


    알라딘 중고서적에서 4천원에 구입,
    이번에 책 산게 많은 데, 얇고 읽기 편한책이라 제일 먼저 다 읽었음.


    WRITTEN BY
    뮤네

    ,


    며칠 째 거의 일상폴더 아니면 글을 쓰지를 못하겠다.
    원래 내가 공부한 거라든지, 배웠던 것 정리해서 적고 싶었는데
    남에게 알려준다는 게 얼마나 어려운 것이라는 것을 깨닫는다.

    며칠동안, 학원 같이 다녔던 오빠 스터디 시켜주는데,
    내가 분명 아는 건데 설명하려면 난감한 경우가 많았다.
    내가 제대로 알고 있는게 아니라는 의미겠지ㅠ
    아무튼 설명하면서 한번 더 내가 깨달으면서, 내가 더 공부되는 느낌이다.

    요즘에 많이 느끼고 있는 것이,
    나 너무 레퍼런스부분이 약하다.
    맨날 자주하는 것은 그나마 그냥 외우고 있어서
    술술 쓰는데, 한번도 안해본 부분이라던지
    내가 안좋아하는 부분은 그냥 보고 한번만 작성하고
    바로 잊어버리는 거 같다.

    내가 했던 작업들 안 보면서 혼자 코드 작성하려고 하면
    완전 머리속이 하얘질 정도 ..;

    그래서 공부할려고 책도 사고,
    클래스 레퍼런스도 보고 그러는데
    도통 진도가 안나간다 ㅠ_ㅠ
    그냥 다른 방법론 책이나 프로그래밍 관련 책은 정말 빨리 잘 보는데..

    액션스크립트 레퍼런스도 잘 모르면 내가 액션스크립턴가 ..
    우울하네, 공부하자 ~~





    그건그렇고 공부 폴더와 일상폴더와의 구분이 안 가고 있다.
    일상 = 공부 ??





    '2010 블로그 글' 카테고리의 다른 글

    2010 06 16  (0) 2010.06.17
    안드로이드 관련 링크  (0) 2010.06.17
    G마켓_월드컵축구공게임_201004  (4) 2010.06.10
    버리기,  (0) 2010.06.08
    오늘은 집중 안되는 날  (5) 2010.06.07

    WRITTEN BY
    뮤네

    ,