한 사람의 삶은 하나의 긴 이야기 입니다.

그리고 오늘은 그 이야기의 한 페이지 입니다.


페이지가 계속 반복되다보면 어느 순간 이야기의 방향을 잃을 수 있습니다.

그래서 몇 개의 장으로 나누어 구분을 두어야 합니다.

하나의 장에는 그 장을 관통하는 주제가 있어야 하고 그 주제를 중심으로 이야기가 흘러가야 합니다.


하지만 가장 중요한 것은 긴 이야기의 주인공이 자기 자신이라는 것을 잊지 않는 것 입니다.

같은 소재들로 채워진 페이지가 매일 반복되면 어느 순간 주인공이 필요없는, 소재로만 가득 찬 페이지만 반복적으로 쓰게 될지도 모릅니다.

받아쓰기 숙제가 되어버린 지루한 삶.


내일도 어제와 크게 다르지 않은 비슷한 하루가 될 것 입니다.

아침에 일어나서 씻고 회사에 출근해서 어제와 비슷한 일을 하고 때가 되면 퇴근하겠지요.

다만 내일은 단 하나만 바뀌어 있을 것 입니다.

'Day and day' 카테고리의 다른 글

사는 힘  (0) 2016.03.02
블로그 이름과 운영목표를 변경하였습니다.  (0) 2014.07.26
블로그를 개설 했습니다!!  (0) 2014.07.22

아침에 잠을 깰 때 어떻게 일어나는가요? 

알람을 들으면서? 아니면 그냥 일어날 시간이 되면 저절로 눈이 떠지는가요?

저는 아침에 일어날 때 서너개의 알람을 맞추고 마지막 알람이 울리고서야 비로소 느적느적 일어납니다.

아침에 눈을 뜨고 자리에서 일어나는 일이 그렇게 힘들 수가 없습니다.

아무래도 저는 아침형 인간은 아닌 것 같습니다.


얼마 전까지는 그렇게 생각했습니다. '나는 아침형 인간이 아니라서 아침에 일어나는 것이 힘든 것이다.'

그런데 오늘 문득 다른 생각이 들었습니다.

아침에 일어날 이유가 없는 것은 아닌가?

눈을 떠야 할 설레이는 이유가 없는 것은 아닐까?


돌이켜보면 소풍가는 날, 어린이 날, 크리스마스, 일요일.

어릴 때는 위와 같은 날이면 엄마가 깨우지 않아도, 알람이 서너개째 울려대지 않아도 스스로 일찍 일어났던 기억이 있습니다.

마음을 설레게 만드는 날이라서 그렇겠지요.


나의 현재의 아침이 힘든 것은 목표를 잃었기 때문이 아닐까 생각해 봅니다.

회사에 출근해야 하기 때문에 일어나고, 오늘까지 마감해야 할 일이 있기 때문에 그 일을 먼저 시작하고..

마음에서 나온 동기가 아니라 외부의 이유 때문에 내가 행동해야 한다면 결코 즐겁거나 설레지 않을 것 입니다.


그렇지만 현재의 행동 패턴(비록 지금은 내적 동기없이 자리잡은)들이 아무런 이유없이 패턴화 되어있는 것은 아닐 겁니다.

지금의 행동 패턴의 시작에는 분명 어떤 목표가 기반이 되었을 것이라 생각합니다.

다만 지금은 그 목표가 무엇이었는지 희미해졌거나 잊혀진 것이 아닐까 짐작합니다.


저는 오늘부터 저의 비전을 다시 상기하고 몇 가지 목표를 세워 실천해볼까 합니다.

아침에 일어나는 일이 내가 세운 목표를 실행하기 위해 일어나는 이유가 되기를 바라는 마음입니다.

'Day and day' 카테고리의 다른 글

이야기의 중심  (0) 2016.03.02
블로그 이름과 운영목표를 변경하였습니다.  (0) 2014.07.26
블로그를 개설 했습니다!!  (0) 2014.07.22

출처 : 애플의 개발자 가이드 읽는 순서

애플 개발툴의 Framework는 모든 클래스들의 상세한 내용을 기술하는 레퍼런스 문서를 포함합니다. 하지만 애플은 이 레퍼런스 문서 외에, 주로 '~Guide' 라는 제목이 붙은 공식 개발 문서들을 제공하는데요, iOS 개발을 공부해가면서 실제로 많은 도움을 주는 꼭 필요한 문서들이라고 할 수 있죠.

하지만 이 애플 문서에도 큰 문제점이 두가지 있는데, 우선 영어로 되어 있다는 점이 있고.... (일부 문서는 번역되어 있는 경우도 많습니다)

또 다른 문제는 어떤 문서를 어떤 순서로 공부해야 하는지 알기 어렵다는 점입니다. 마치 아주 좋은 교과서가 있는데, 챕터 별로 잘려져 있어서 어떤 순서로 읽는 지 알 수 없는 경우랄까요? 

이번 포스팅에서는 이 두번째 문제에 도움이 되고자 제 나름대로의 생각을 정리해보도록 하겠습니다. 

 우선 읽고 볼 문서
  • The Objective-C Programming Guide 
  • Memory Management Programming Guide
  • iOS Application Programming Guide
  • iOS Development Guide
  • Cocoa Fundamentals Guide
  • Resource Programming Guide
  • View Programming Guide for iOS
  • View Controller Programming Guide for iOS
  • Event-Handling Guide for iOS
  • Key-Value Coding Programming Guide
  • Key-Value Observing Programming Guide
  • Xcode Project Management Guide

 결국 읽어야 할 문서

  • Table View Programming Guide for iOS
  • Scroll View Programming Guide
  • Information Property List Key Reference 
  • Drawing and Printing Guide for iOS / Core Graphics Framework Reference
  • Core Animation Programming Guide / Core Animation Cookbook
  • NSInvocation Class Reference
  • SDK Compatibility Guide
  • Settings Application Schema Reference
  • Concurrency Programming Guide
  • Interface Builder User Guide
  • Instruments User Guide, Shark User Guide
  • Secure Coding Guide
  • Internationalization Programming Topics
  • Cocoa Performance Guidelines
  • Error Handling Programming Guide, Exception Programming Topics
  • Property List Programming Guide / User Defaults Programming Topics

 필요하면 찾아볼 문서 (중요)>

  • Core Data Programming Guide
  • CFNetwork Programming Guide / CFNetwork Framework Reference
  • Device Features Programming Guide
  • Location Awareness Programming Guide
  • Text, Web, and Editing Programming Guide for iOS
  • Camera Programming Topics for iOS
  • Keychain Services Programming Guide
  • Event Kit Programming Guide (calendar) / Address Book Programming Guide for iOS
  • OpenGL ES Programming Guide for iOS
  • Quartz 2D Programming Guide
  • Core Audio / Audio Queue Services Programming Guide / Audio Session Programming Guide
  • Undo Architecture
  • File-system performance guidelines

 생각나면 한번쯤 읽어 볼 문서 

  • iOS Human Interface Guidelines
  • Apple Human Interface Guidelines
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • Bundle Programming Guide
  • Coding guideline for Cocoa (naming guideline)

 필요하면 찾아 볼 문서 (덜 중요) 

  • System Messaging Programming Topics in iOS
  • Core Telephony Framework Reference
  • Stream Programming Guide
  • URL Loading System Programming Guide / Apple URL Scheme References
  • Multimedia Programming Guide

  • Archives and Serializations Programming Guide
  • External Accessory Programming Guide
  • Timer Programming Topics
 가장 나중에 읽을 문서 (Mac OS X와 겹치는 것이 많음)
  • Cocoa Event-Handling Guide / How Cocoa Applications Handle Apple Events
  • Foundation Framework Reference
  • Cocoa Drawing Guide (View hierarchy)
  • Threading Programming Guide
  • Objective-C Runtime Programming Guide
  • Window Programming Guide
  • Model Object Implementation Guide
  • Code Loading Programming Topics
  • Preferences Utilities Reference (CF)
  • Distributed Objects Programming Topics
  • Cocoa Scripting Guide
  • Document-Based Applications Overview


'Objective C' 카테고리의 다른 글

터치 중(hold)에만 발생하는 이벤트 처리  (0) 2014.12.22
데이터 송신 수신  (0) 2014.10.25
UIWebView에서 HTML 가져오기  (0) 2014.10.25

개발 중인 어플 기능으로 터치를 유지하고 있을 때 발생하는 이벤트를 만들고 싶어서 궁리했다.

구글이라는 신의 한수가 있었지만 어떤 키워드로 검색해야하는지 조차 몰라서 실패.

(touch hold? holding? event... ;;???)


어떻게 접근할지 막막해서 상상력을 동원.

NSTimer를 이용하는 방법으로 가장 근접하게 작성했으나 구현 실패했고 코드도 굉장히 지저분.

그러다 UILongPressGestureRecognizer를 이용해서 의외로 쉽게 해결할 수 있었다.


- (id) init {


    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];

    longPress.allowableMovement = 20;

    longPress.minimumPressDuration = 0.5f;

    [self.view addGestureRecognizer:longPress];

    [longPress release]; 

}


- (void)longPress:(UILongPressGestureRecognizer*)gesture {

    

    if ( gesture.state == UIGestureRecognizerStateBegan ) {

        

        //이벤트 처리

        isHeld_ = YES;


    }

    

    else if (gesture.state == UIGestureRecognizerStateEnded) {

        

        if (isHeld_ == YES) {


            //이벤트 처리

            isHeld_ = NO;

        }

    }

}



'Objective C' 카테고리의 다른 글

애플의 개발자 가이드 읽는 순서  (0) 2015.02.21
데이터 송신 수신  (0) 2014.10.25
UIWebView에서 HTML 가져오기  (0) 2014.10.25

어디서부터 어떻게 설명 드려야 할지 모르겠어서 
http 통신에 기초해서  xml 파서 등등의 상위 레벨보다는 그 기초가 되는 부분부터 해서

질문하신 분의 상황에 맞춰서 해당 부분만 설명 드리겠습니다.

소켓 방식까지 포함해서 전체적으로 포괄적으로 설명 드리기엔........양이 너무 많네요.

하여튼 제가 아는 한에서 설명 드리면

 

1. [서버]  - [클라이언트] DATA 통신은 간단하게 말해서 서버와 클라이언트 가 DATA 를 0101010101 형태로 주고 받는 

   것입니다.  이 01010 들이 모여서 <html>이 되기도 하고 <xml> 이라는 문자가 되기도 하는 것이지요.

   - 보통 웹페이들은 [클라이언트] 가 [서버]에서 뿌려주는 DATA를 가져와 이를 익스플로어라는 프로그램이 파싱해서 

     text/문자로 사용자에게 보여주는 것이죠.

 

2. XML 파서 예제 소스를 열어 보면 NSURL 을 사용 해서 [서버]에 [DATA]를 Request 를 할 것입니다.XML 파서용 NSURL 

   Request 라고 해서 특별 한 것이 아니라 txt나 이미지 기타 DATA를 Request 할 때와 같습니다. DATA 는 010101010101 형태

   이고 [서버]는 이것을 요청에 따라 뿌려주면 되는 것이고 [클라이언트]는 이 정보를 가지고 익스플로어가 웹페이지를

   보여주는 것 처럼 이미지,xml문서,txt 문서로 분석(파싱)하면 됩니다. NSURL 이 아니라 다른 Nerwork 방식이라도 이 부분은 

   같습니다. 어떻게 가져 오느냐 의 문제지 어떤 DATA를 가져 왔느냐는 그 DATA를 가져와서 분석 하는 놈에 따라 틀린 거니까요

 

 

위의 두가지 개념에 대해 이미 알고 계시거나 제 글을 보고 이해가 되셨나요?

다시 한번 위 과정을 요약해서 말씀 드리면 

 

- [서버]는 DATA 를 보낸다

- [클라이언트]는 DATA 를 받는다. (Connector 가 해주는 역할(대표적으로 NSURL))

- [클라이언트]는 DATA 를 분석한다.(Parser 가 해주는 역할(글쓴이께서 사용하실 XML Parser 가 한 예 입니다.)

 

이렇게 크게 말씀 드릴 수 있겠네요.

 

이제 글쓴이 께서 원하시는 동작을 단계별로 풀이해서 설명 드려 보겠습니다.

 

1. [클라이언트]는 서버에 DATA를 Request 한다.

    - 브라우저 창에 http://www.naver.com 이라고 주소를 치고 엔터를 치는 것과 같은 동작

    - NSURL 에서는 Request 를 하는 동작

 

2. [서버]는 [클라이언트]의 요청에 따라 DATA들을 write 해줍니다.

   - ASP 로 하면 response.write 가 되겠죠.(<html><table>어저꾸저쩌구</table></html> )

     xml이라고 쳐도 다를 건 없습니다. (<html><table>어저꾸저쩌구</table></html> ) 대신 XML 구문에 맞춰서

     (<xml></xml>) 로 write 만 해주시면 됩니다.

   - 다른 언어도 마찬 가지입니다. write 만 해주시면 됩니다. 해당 http://aaa.bbb:8080 을 브라우저에 넣었을 때

     소스 보기로 해당 페이지 내용이 보이기만 하면 됩니다.

   - http://aaa.bbb:8080  를 [클라이언트]가 열었을 때 MySQL 로 Data 를 가져와 화면에 XML 구문에 맞춰

    보내고 싶은 DATA 를 뿌려주시면 됩니다.

 

3.[클라이언트] 는 [서버]가 write 해준 DATA 를 얻어 옵니다. 보통 저는 이걸 긁어 온다고 합니다.

 

4.[클라이언트]는  [서버]가 wirte 해준 DATA를 받아서 분석 합니다.

   - 웹브라우저로 치면 html 태그 등을 구분해서 이미지/text/표/그림 등의 형태로 DATA 를 바꿔 브라우저 화면에 보여주는

    작업입니다.

   - 말씀 하신 XML파서 는 이 DATA 를 가지고 xml 태그를 기준으로 DATA와 구분자 등을 구분 하는 녀석이죠.

 

이렇게 4단계를 거치면 XML 을 받아 오는 과정이 끝납니다.

XML 이라고 해서 특별히 뿌려 줄때  XML 파일로 만들 필요는 없고 XML 파일 안에 들어갈 TEXT 들을

그냥 뿌려줘도 됩니다. 

 

웹페이지도 메모장에서 여시면 소스코드가 그대로 보이는 것처럼

DATA자체는 그냥 형식에 맞게만 주고 받으면 됩니다.문제는 그것을 분석하는 녀석이죠.

분석하는 녀석이 메모장이면 text 형태로 다 보여주는 것이고 익스플로러 면 이미지/TEXT/표 등의 형태로 보여주는 거죠.

 

이렇게 http방식으로 request 에 의한 write 방식 말고 파일 자체를 받으시려면 socket을 열어 사용 하셔야 할텐데 

그렇다면 매번 클라이언트의 요청이 있을 때마다 file을 생성하고 write 해주는 서버를 구성 하셔야 할텐데

질문자의 글을 보니 이것보다는 웹페이지를 만들고 누군가 해당 페이지에 접근 했을때

MySQL 을 이용해서 데이터를 가져와 화면에 XML 형태로 해당 DATA를 write 하는 방식을 사용 하시는 것이

익숙 하실 것 같아 위의 방식 대로 설명 했습니다.

 

자 그럼 위에 말씀 드린 것을 토대로 예제 소스를 하나 올리겠습니다.

제가 직접 개발한 소스는 아니고 다른 고마우신 분이 올려주신 소스를 활용해서 사용 중입니다.

그분이 이글을 보신다면..고맙다는 말 전하고 싶네요

NSURL 을 사용 했습니다.

 

[self requestUrl:@"http://www.naver.com" ];

 

을 하시면 naver.com의 메인 페이지의 소스 코드가

만드신 xml 페이지 주소를 넣는다면 xml 구분이 찍힐것입니다.

XML 파서를 검색 해 보시면 아래에서 receivedData 를 가지고 파싱하는 예제가 많으니

해당 예제를 보고 하시면 될 듯 합니다.

저도 아래 소스에 파서부분은 검색해서 찾은 소스를 기본으로 붙여서 만들 었습니다.

파서 소스는 예제 소스가 많은 편이라 쉽게 붙이 실수 있을 것입니다.

 

쓰다보니 양이 어마 어마 해졌네요.....

프로젝트 중간에 짬이 난게 다행이네요..^^

저도 여기서 다른 분들 도움을 많이 받아서...그냥 지나치치 못하고 주저리 주저리 남겨 봅니다.

그럼 좋은 개발 하시길 빕니다.

 

NSString  *mData;
NSURLResponse *mNSURLResponse;
NSMutableData *receivedData;

 

//1번 단계: requestUrl

//2번은 서버가 해줄일

//3번 단계 :didReceiveData

//4번 단계 :connectionDidFinishLoading

 

- (BOOL)requestUrl:(NSString *)url {
  // URL 접속 초기화
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] 
                                                  cachePolicy:NSURLRequestUseProtocolCachePolicy 
                                                   timeoutInterval:15.0]; 

 

 // GET 방식
 [request setHTTPMethod:@"GET"];

 

 // POST 방식은 
 // [request setHTTPMethod:@"POST"]; // POST로 선언하고
 // [request setHTTPBody:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];

 // 전송할 데이터를 변수명=값&변수명=값 형태의 문자열로 등록

 // 헤더  추가가 필요하면 아래 메소드를 이용
 // [request setValue:value forHTTPHeaderField:key];

 

 NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

if (connection) { 
       receivedData = [[NSMutableData data] retain]; // 수신할 데이터를 받을 공간을 마련
       return YES;
 }

 return NO;
}

 

//DATA 가 한번에 전체가 오는 것이 아니라 네트워크 상태에 따라 조금 씩 오기때문에 DATA 가 올때마다 호출 됩니다. 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
     [receivedData appendData:data]; 
}

 

//맨처음 DATA 를 주고 받기 시작 했을 때 Header 가 옵니다. 요청에 의한 정보가 옵니다.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)aResponse {
   [receivedData setLength:0]; 
   mNSURLResponse = aResponse;
}

 

//에러가 발생 했을 때 옵니다.
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
   NSLog(@"Error : ", [error localizedDescription]);
}

 

//모든 DATA 를 받았을 때 호출 됩니다.
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

 //받은 receivedData 를 UTF8의 TEXT 형태로 바꿔 줍니다.
 mData = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 

 

NSLog(@"%@",mData); //mData를 찍어 봅니다. url 에 www.naver.com 을 넣었다면 해당 페이지에서 소스 보기 했을 때 나오는 구문들이 나올 것입니다.

 

//파서 를 붙인다면 여기다 붙이세요 receivedData 를 가지고 붙이시면 됩니다.

 


 [urlConnection release];
 if(receivedData!=NULL){
   [receivedData release];
   receivedData=NULL;
 }
}

 


출처 : http://cafe.naver.com/mcbugi/42519 中 최게바라 답변


UIWebView에서 HTML 가져오기

NSString* html = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];



'Objective C' 카테고리의 다른 글

애플의 개발자 가이드 읽는 순서  (0) 2015.02.21
터치 중(hold)에만 발생하는 이벤트 처리  (0) 2014.12.22
데이터 송신 수신  (0) 2014.10.25

블로그를 개설한지 벌써 며칠이나 지났지만 방향을 제대로 잡지 못해서 헤매고 있었습니다.


사실 블로그 개설 당시에는 

법률회사에 대한 이야기와 법률시장의 이야기를 법률회사에서 근무하는 회사원이 풀어보면 재미있겠다 싶었습니다. 

그리고 무작정 개설했지요. 


그런데 막상 블로그를 개설하고 얼마 지나지 않아 제가 여러가지 이유로 법률 분야가 아닌 다른 분야로 전직을 결심하게 되었습니다.


사실 6년째 법률 분야에서 일해왔기 때문에 전직을 결심하기가 쉽지는 않았습니다. 

저의 모든 경력의 기반이니까요. 

그럼에도 전직을 하기로 한 이유는 법률 분야에서 6년째 일하고 있기 때문이기도 합니다. 


무슨 일을 하던 비슷하겠지만 경력이 쌓일 수록 업무는 숙련되고 처리하는 일들은 고도화 됩니다. 


법률 사무원도 같습니다. 

숙달되고 고도한 업무처리가 가능한 사무원은 처리하는 일이 많아지고 난이도가 높은 일을 처리하게 됩니다.


하지만 아이러니하게도 다른 업계와 달리 법률 시장은 그런 사무원을 반기지 않습니다. 

그런 사무원이 있다면 기쁘게 사용하지만 그런 사무원이 없어도 문제될 것이 전혀 없습니다.


법률 법무에 숙달되고 고도한 일을 처리할 필요가 있다면 직원들보다 훨씬 많은 급여를 지급하는 어쏘 변호사가 하면 되기 때문이지요. (또는 일명 '서면 사무장'이 하는 경우도 있습니다)


법률 회사는 숙련되고 고도한 능력을 필요로 하는 사무원이 아니라 

비용이 적게 들면서 단순하지만 시간이 많이 들어가는 일을 처리해줄 사무원을 필요로 하는 것입니다.


결국 능력이 있는 사무원들은 기업의 법무팀 등으로 이직하여 법률 시장을 떠납니다.

(물론 개인 변호사 사무실의 사무장으로 이직하는 경우도 있습니다만)


이것이 법률 시장의 문화이고 큰 흐름입니다. 

그리고 제가 직면한 상황이기도 하고요.


비전이 없습니다.

위와 같은 법률 시장에서 사무원의 미래에 대한 저의 판단은 그렇습니다.


그렇기 때문에 전직하기로 마음 먹었습니다.

기업 법무팀으로의 이직도 생각해보았지만, 제가 한 살이라도 어릴 때 전혀 새로운 분야에 도전해보고 싶은 마음이 생겼습니다.


그래서 결심한 것이 모바일 개발자.


그렇다고 당장 다니는 회사를 그만두는 것은 아닙니다.

2개월 정도 현재 직장을 다니면서 개발에 필요한 공부를 할 생각입니다.



위와 같은 이유로 이곳도 그 성격과 운영 목표를 변경하게 되었습니다.

(블로그 개시 글을 쓴 것이 불과 며칠 전인데 금새 바꾸게 되었네요^^;)


아직 구체적으로 정한 것은 없지만 큰 틀에서, 

모바일 개발 공부를 하면서 배우는 내용과 제 스스로의 리뷰를 포스팅하게 될 것입니다. 

그리고 개인적인 일상과 소회도 포스팅 할 예정입니다.


"좌충우돌 초보 개발자 연대기"

이제부터 새롭게 시작합니다.

'Day and day' 카테고리의 다른 글

이야기의 중심  (0) 2016.03.02
사는 힘  (0) 2016.03.02
블로그를 개설 했습니다!!  (0) 2014.07.22

녕하세요. 반갑습니다.

블로그 개설하고 처음으로 쓰는 글입니다. 

이 글이 첫 번째 게시물이 될 예정이예요.

물론 지금은 블로그에 아무 것도 존재하지 않습니다.


우선 제 블로그의 간판은 '법률회사 이야기'로 정했습니다.

이름에 '법률'이라는 단어가 들어가지만 

전문 내용을 다루거나 영업을 위한 포스팅은 지양합니다.


그저 법률 시장에서 변호사와 변호사가 아닌 사람들이 사는 이야기와 에피소드를 통한 개인적인 소회를 주로 풀어나갈 계획입니다.

(아, 물론 도움이 될만한 법률, 법무 지식이나 정보가 있다면 공유합니다 ㅎㅎ)


이 글이 포스팅 됨으로써 이 블로그도 진정한 의미에서 

'시작'이겠지요.


자 이제 시작합니다!

'Day and day' 카테고리의 다른 글

이야기의 중심  (0) 2016.03.02
사는 힘  (0) 2016.03.02
블로그 이름과 운영목표를 변경하였습니다.  (0) 2014.07.26

+ Recent posts