우선, 외부에서 공유기 내부의 PC로 원격 접속하기 위해서는 원격데스크탑에서 사용되는 통신 포트를 공유기에서 열어주는 포트포워드 설정이 필요하다. 

또한 외부에서 공유기 내부의 PC 2대 이상을 원격데스크탑으로 제어하기 위해서는 원격데스크탑에서 사용되는 통신 포트가 중복되지 않도록 각각 PC에서 원격데스크탑에 설정된 통신 포트를 서로 다르게 해야 하고 서로 다르게 설정된 통신 포트를 공유기에서 포트포워드 설정으로 열어주어야 외부에서 각각의 포트를 지정함으로써 공유기 내부의 여러 PC에 접속을 할 수 있게 된다.
 
- 아래는 A : 192.168.0.2 (3389) / B : 192.168.0.3 (4389) 두대의 PC에 설정법을 예로 들었다.
   3389는 기본 값이므로 변경할 필요없고 한대의 PC만 변경하면 된다.

 
1. 서버 PC의 터미널 포트 변경

1)  터미널 서비스가 허용되어 있는지 먼저 확인한다.
[제어판]의 [시스템] 메뉴를 클릭하고 원격 탭을 클릭합니다. 
'사용자가 이 컴퓨터에 원격으로 연결할 수 있음'을 체크한 후 적용 또는 확인 버튼을 누르면 컴퓨터 관리자 권한을 가진 계정은 터미널 서비스에 접속할 수 있는 권한이 생긴다. 

2) 데스크탑의 기본 포트는 3389포트다. 그러므로 한대의 피시의 터미널 포트만 4389로 변경해 주면 된다. 하지만 3389는 기본으로 사용되는 포트라 크래커들의 표적이 될 수도 있다. 가능하다면 변경해 주는 것도 좋다.
 
3) 레지스트리 값 변경
시작메뉴 → 실행 → regedit 실행 → HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/Terminal Server/WinStations/RDP-Tcp/PortNumber → PortNumber 값에서 10진수로 새로운 포트번호(4389) 입력후 확인을 클릭   
 

 
 
 
4) 서버의 방화벽 설정 해제
윈도우 방화벽 사용시 '시작메뉴 → 제어판 → Windows 방화벽 → 예외' 란에 위에서 변경한 포트를 추가 및 예외 체크를 해 준다. 만일 별도의 방화벽 프로그램을 사용한다면 마찬가지로 예외 설정 해줘야한다. 

 
 
5. 터미널 포트 변경 후 재부팅을 해야 적용이 된다.
확인 방법은 굳이 다른 PC에서 할 필요 없이 자기 컴퓨터에서 실행시켜 본다.
시작 → 실행 → CMD창에서 telnet 192.168.0.3 4389 쳐서 이상없이 접속이 된다면 포트 설정은 오케이!!
 
그럼.. 포트 설정을 끝냈으므로 다음은 공유기 설정만 해주면 된다. 


2. 공유기 포트포워드 설정

1) 사내 공유기 설정 화면  http://192.168.0.1 에 접속한다.
 
2) [NAT 설정] - [포트포워드 설정] 메뉴를 클릭한다.
 
   규칙 이름 : A PC 이름설명
   프로 토콜 : TCP
   외부 포트 범위 : 3389
   내부 PC IP 주소 : 192.168.0.2 (A PC의 IP 주소)
   내부 포트 범위 : 3389
 
   규칙 이름 : B PC 이름설명
   프로 토콜 : TCP
   외부 포트 범위 : 4389 
   내부 PC IP 주소 : 192.168.0.3 (B PC의 IP 주소)
   내부 포트 범위 : 4389
 
   위와 같이 각각 2개의 포트를 추가한다.
   위와 같이 설정되면 외부에서 3389와 4389를 통한 접속을 시도 시
   포트포워드 설정 규칙에 의해 3389와 4389 포트에 설정된 IP를 가진 PC로 연결이 된다

 
3. 클라이언트에서 공유기 내부 PC로 접속
 
1) 원격 데스크탑 연결 프로그램을 실행한다.

2) 컴퓨터 항목에 주소를 입력할 때 다음과 같이 입력한다.
IP주소 : 포트   ex) 211.222.111.000:4389   

3) 마지막으로 원격 접속시 권한이 없다고 나오는 경우가 있는데.. 임시적인 해결 방법은 
원격 데스크탑 바로가기 속성을 

"C:\Program Files\Remote Desktop\mstsc.exe"에서
"C:\Program Files\Remote Desktop\mstsc.exe /console" 로 변경한다.
/console 값을 추가하면 1개의 계정은 라이센스 문제없이 사용할 수 있다.

Tip.
윈도우 홈에디션이 설치된 컴퓨터에 원격으로 접속할 수 없다. 반드시 프로페셔널이어야원격 접속을 지원한다. 
Posted by cyj4369
,

파일 입 출력

 

#include <stdio.h>

 

FILE* fopen(const char * filename, const char *mode)

 

 filename

개방하고자 하는 파일의 경로명과 파일명을 동시에 지니는 문자열

 ) filename = “c:\\work\\test.dat” (c:\\work 는 경로명 test.dat 은 파일명)

   *특수문자 역슬래시(\)와 구분하기 위해 (\\) 를 두개 써준다.

 mode

파일의 특징 및 용도를 결정짓는다.

             파일 개방 모드=파일접근모드+데이터 입 출력모드

 

파일 접근 모드

모드

의미

r

    - 파일의 읽기 위해서 개방한다. 오로지 읽는 것만 가능하다.

w

-         데이터를 쓰기 위해 개방한다. 쓰는 것만 가능

-         만약에 fopen함수 호출 시 지정해 준 파일이 존재하지 않으면, 새로운 파일을 생성해서 데이터를 쓰게 된다.

-         지정해 준 파일이 존재하면, 그 파일의 데이터를 지워버리고 데이터를 쓰게 된다.

a

-         w 모드와 달리, 지정해 준 파일이 존재하면 데이터를 지우지 않고 파일의 끝에서부터 데이터를 추가한다.

-         너머지 특징은 w와 같다.

r+

-         파일을 읽고 쓰기 위해 개방한다.

-         파일이 존재하지 않는 경우, 새로운 파일을 생성한다.

-         파일이 존재하는 경우, 파일의 데이터를 지우지 않지만 원래 존재하는 파일의 데이터를 덮어쓰게 된다.

w+

-         r+ 모드와 달리, 지정해 준 파일이 존재하면 모든 데이터를 지워버리고 데이터를 기록한다.

-         나머지 특징은 r+와 같다.

a+

-         r+ 모드와 달리, 지정해 준 파일이 존재하면 파일의 끝에서부터 데이터를 추가한다. (나머지 특징은 r+와 같다.)

 

 

데이터 입출력 모드

모드

의미

t

텍스트 모드 (text mode)

b

  2진 모드(binary mode)

 

 CR(Carriage Return)

 CR은 특수문자 \r로 표현되며, 커서의 위치를 그 중 맨 앞으로 이동하라는 의미

 LF(Line Feed)

 LF \n로 표현 되며, 커서의 위치를 그 다음 줄로 이동하라는 의미이다.

 

“ABC \r DEF”  -> 출력

D

E

F

 

 

 

 

 

 

 

 

 

 

 

 

 

“ABC \n DEF”  -> 출력

A

B

C

 

 

 

 

 

 

 

 

D

E

F

 

 

“ABC \r\n DEF”  -> 출력

A

B

C

 

 

 

 

 

D

E

F

 

 

 

 

 

 

 2진 모드와 텍스트 모드

-         2진 모드: 프로그램상에서 파일로 데이터를 쓰거나 읽어 들이는 경우에 아무런 데이터의 변환도 일으키지 않는 데이터 입출력 모드를 의미한다.

-         텍스트 모드 : 프로그램상에서 파일로 데이터를 쓰거나 읽어 들이는 경우에 데이터 변환이 일어나는 입출력 모드를 의미한다.

(printf와 같은 표준 출력 함수들은 텍스트 모드로 출력하기 때문에 C에서 \n을 입력할 경우\r\n으로 변환되어 출력된다.)

 

FILE 구조체의 포인터 (파일 포인터)

-         fopen 함수의 리턴 값은 FILE이라는 구조체 변수의 포인터이다. FILE 구조체 변수는 개방한 파일에 대한 여러 가지 정보를 지니는 변수이다. 개방한 파일이 무엇인지, 파일 내에 존재하는 데이터를 어디까지 읽어 들였는지, 파일의 끝에 도달했는지에 대한 정보들을 FILE구조체 변수는 지닌다.

 

 

◊ 파일 입출력 함수

-         puts함수는 스트림이 stdout으로 미리 정해져 있지만 fputs함수는 스트림을 지정할 수 있다. 파일 포인터는 스트림을 의미한다.

 

         스트림

기능

키보드/모니터

선택(키보드/모니터,파일)

문자 출력

int putchar(int c)

int fputc(int c, FILE* stream)

문자 입력

int getchar(void)

int fgetc(FILE* stream)

문자열 출력

int puts(const char* s)

int puts(const char* s, FILE* stream)

문자열 입력

char* gets(char* s)

char* fgets(char* s, int n, FILE* stream)

형식 지정

출력

int printf(const* format,...)

int fprintf(FILE* stream,

     const char* format, …)

형식 지정

입력

int scanf(

    Const char* format,…)

int fscanf(FILE* stream,

    const char* format,..)

 

 feof 함수

 

#include <stdio.h>

 

int feof(FILE *stream)

호출 시 전달되는 파일 포인터가 가리키는 파일이 끝에 도달 할 경우 0이 아닌 값을 리턴한다.

 

◊ fseek 함수

#incldue <stdio.h>

 

int fseek(FILE *stream, long offset, int wherefrom)

파일 위치 지시자를 원하는 위치로 이동시키는 함수이다.

Stream이 가리키는 파일의 파일 위치 지시자를 시작위치 wherefrom에서부터 offset 만큼 이동한다.

 

wherefrom전달인자

whrerfrom

파일 위치 지시자를 offset 만큼 이동하기 전

SEEK_SET(0)

파일의 맨 앞으로 이동한다.

SEEK_CUR(1)

현재 위치

SEEK_END(2)

파일의 맨 끝으로 이동한다.

 

Posted by cyj4369
,

1. www.microsoft.com/express 접속 (다음과 같이 창이 뜹니다.)

 

 

 

2. web 탭을 선택합니다.

 

 

3. 보라색으로 된 Install 버튼 클릭 (2번 화면에도 보입니다.~~)

 

 

4. 웹플랫폼 설치 관리자 2.0 창 실행 (Install을 클릭하여 다운 받은 wpilauncher_n.exe 더블클릭하여 실행)

 

5. 새로운기능에 있는 전체 선택(본인의 취향에 따라 설치하실 것만 하면 되지만 저는 전체 선택하여 인스톨 합니다.)

 

 

6. 설치 클릭(5번 그림에 설치 보이시지요??)

 

7. SQL Server Express 설치계획 감지..

 - 혼합 모드 인증(응용 프로그램 개발 권장)  선택 (XP는 있었지만, Vista는 없더군요)

 

 

 

8. 암호는 설정하되 3가지 이상(영소,영대,숫자,특문 중 3개를 적용) 하여 설정한다.

비밀번호는 앞으로도 로긴할때마다 자주 쓰이므로 비밀번호 대충적지 마시고 혼합해서 적으시길 권장합니다.

 

 

 

그 후에 설치가 진행 됩니다.(설치 시간이 꽤 깁니다..)

 

 

 

9. 설치도중 메시지가 뜨면 재시작 하세요~ (재부팅후에 알아서 자동 설치됩니다.)

이렇게 한 3번정도를 해주셔야 됩니다.(설치할때 은근히 시간이 좀 길어요)

 

 

 

10. 설치 후 데이터베이스 -> 사용자지정 에서 웹플랫폼 데이터베이스 사용자 지정에 체크항목 중 3,4번째 선택

 



 

SQL Server 2008 R2 Management Studio Express 와 Management Objects(영어) 를 설치하면 저희는 MS-SQL Server 2008 R2가 전부 다 설치되어서 다음과 같은 메시지가 뜹니다. 이제 정상적으로 나머지 세부 IP주소와 방화벽 설정만 해주시면 됩니다.

 

 

 

 

11. 설치 완료 후 확인할 것

- Microsoft SQL Server 2008 R2 구성도구 폴더 안에 구성관리자가 있는지 확인

- Microsoft SQL Server 2008 R2

 

SQL Server Configuration 클릭 하여 다음과 같이 설정합니다.

 

 

12. SQL Server 구성관리자 -> SQLEXPRESS에 대한 프로토콜 공유 메모리, 명명된파이프, TCP/IP 사용

VIA제외하고 나머지는 사용으로 하되 TCP/IP는 다음과 같이 셋팅해주세요 TCP 포트는 1433 입니다.

 

 

 

 

설정뒤에 다음과 같이 다시 시작을 꼭 해주셔야 됩니다.

 

 

13. Windows 방화벽에 포트추가(설정은 스샷참조)

 

15. 방화벽설정후 다시 시작합니다.

 

16. 자신의 아이피를 서버 이름에 입력후 연결

- 아이피 보는 법은 시작 -> 실행 -> cmd 입력 후 명령 프롬프트창이 뜨면 ipconfig 를 입력하세요

(혹시나 없는 경우에는 보조프로그램 -> 명령 프롬프트가 있는지 확인해주세요~! XP 기준입니다.)

 

앗!! 잠깐만요

 

간혹가다 cmd  -> ipconfig해도 다음 그림과 같이 안되는 경우가 있습니다.

 

 

 

이럴떄는 기본적으로 ipconfig 가 깔려있는 폴더 c:\windows\system32 로 들어가셔서 해주시면 됩니다.

 


자신의 아이피 주소를 확인후에 설치가 된 SSMS에 들어가셔서 서버이름에 아이피와 앞서설정했던

로그인 아이디 암호를 적어주시면 됩니다.~! 밑에와 위에 IP가 다른 이유는 서로 다른 환경에서 하였으므로

다름을 밝힙니다. IP는 보안상 가렸습니다 양해바랍니다^^



'Development > visual studio' 카테고리의 다른 글

[MFC 트레이아이콘으로 만들기]  (0) 2012.08.19
[error C2146: 구문 오류]  (0) 2012.08.19
[MFC 트레이아이콘으로 만들기]  (0) 2012.08.18
[error LNK2005]  (1) 2012.08.18
[fatal error LNK1169]  (0) 2012.08.18
Posted by cyj4369
,

mt.exe : general error c101008a: Failed to save the updated manifest to the file ".Debug\.exe.embed.manifest". d 

솔루션을 실행해 보면 위와 같은 에러가 발생한다.


이럴 때는 라이브러리 파일의 변경이나 기타 전의 솔류션과는 다른환경일 경우에 발생하는 오류로 보여진다.


그렇기 때문에 디버그 폴더에 가서 파일들을 싹 삭제한다음에 다시 빌드를 해주면 오류가 해결되는 것을 볼 수 있다.


여기서 디버그 폴더는 솔루션 바로 밑에 있는 폴더가 아닌 프로젝트 폴더 밑에 있는 디버그 폴더안의 내용을 지워줘야 한다.

Posted by cyj4369
,



스티브잡스 스탠포드대학 졸업식 축사 2005 스티브잡스 동영상, 영어원문, 해석


This is the text of the Commencement address by Steve Jobs, 

CEO of Apple Computer and of Pixar Animation Studios, delivered on June 12, 2005


I am honored to be with you today at your commencement from one of the finest universities in the world.

먼저 세계 최고의 명문으로 꼽히는 곳에서 여러분들의 졸업식에 참석하게 것을 영광으로 생각합니다.

I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation.

저는 대학을 졸업하지 못했습니다. 태어나서 대학교 졸업식을 이렇게 가까이서 보는 것은 처음이네요.

Today I want to tell you three stories from my life. That's it. No big deal. Just three stories.

오늘, 저는 여러분께 제가 살아오면서 겪었던 가지 이야기를 해볼까 합니다. 별로 대단한 이야기는 아니구요. 세가지만요



The first story is about connecting the dots.

먼저, 인생의 전환점에 관한 이야기입니다.

I dropped out of Reed College after the first 6 months, but then stayed around as a drop-in for another 18 months or so before I really quit.

리드 칼리지에 입학한지 6개월만에 자퇴했습니다. 그래도 일년 정도는 도강을 듣다, 정말로 그만뒀습니다.

So why did I drop out?

자퇴했을까요?

It started before I was born. My biological mother was a young, unwed college graduate student, and she decided to put me up for adoption.

것은 제가 태어나기 전까지 거슬러 올라갑니다. 생모는 대학원생인 젊은 미혼모였습니다. 그래서 저를 입양보내기로 결심했던 거지요.

She felt very strongly that I should be adopted by college graduates, so everything was all set for me!

그녀는 미래를 생각해, 대학 정도는 졸업한 교양있는 사람이 양부모가 되기를 원했습니다.

to be adopted at birth by a lawyer and his wife.

그래서 저는 태어나자마자 변호사 가정에 입양되기로 되어 있었습니다.

Except that when I popped out they decided at the last minute that they really wanted a girl.

그들은 여자 아이를 원했던 걸로 알고 있습니다.

So my parents, who were on a waiting list, got a call in the middle of the night asking:

그들 대신 대기자 명단에 있던 양부모님들은 중에 걸려온 전화를 받고 :

"We have an unexpected baby boy; do you want him?"

"어떡하죠? 예정에 없던 사내아이가 태어났는데, 그래도 입양하실 건가요?"

They said: "Of course."

"물론이죠"


My biological mother later found out that my mother had never graduated from college and that my father had never graduated from high school.

그런데 알고보니 양어머니는 대졸자도 아니었고, 양아버지는 고등학교도 졸업못한 사람이어서

She refused to sign the final adoption papers.

친어머니는 입양동의서 쓰기를 거부했습니다.

She only relented a few months later when my parents promised that I would someday go to college.

친어머니는 양부모님들이 저를 대학까지 보내주겠다고 약속한 몇개월이 지나서야 화가 풀렸습니다.

And 17 years later I did go to college.

17년후, 저는 대학에 입학했습니다.

But I naively chose a college that was almost as expensive as Stanford,

그러나 저는 멍청하게도 바로 , 스탠포드의 학비와 맞먹는 값비싼 학교를 선택했습니다^^

and all of my working-class parents' savings were being spent on my college tuition.

평범한 노동자였던 부모님이 힘들게 모아뒀던 돈이 모두 학비로 들어갔습니다.

After six months, I couldn't see the value in it.

결국 6개월 , 저는 대학 공부가 그만한 가치가 없다는 생각을 했습니다.

I had no idea what I wanted to do with my life and no idea how college was going to help me figure it out.

내가 진정으로 인생에서 원하는 무엇인지, 그리고 대학교육이 것에 얼마나 어떻게 도움이 될지 판단할 없었습니다.

And here I was spending all of the money my parents had saved their entire life.

게다가 양부모님들이 평생토록 모은 재산이 전부 학비로 들어가고 있었습니다.

So I decided to drop out and trust that it would all work out OK.

그래서 모든 것이 될거라 믿고 자퇴를 결심했습니다.

It was pretty scary at the time, but looking back it was one of the best decisions I ever made.

지금 뒤돌아보면 참으로 힘든 순간이었지만, 인생 최고의 결정 하나였던 같습니다.

The minute I dropped out I could stop taking the required classes that didn't interest me,

자퇴를 하니 평소에 흥미없던 필수과목 대신

and begin dropping in on the ones that looked interesting.

관심있는 강의만 들을 있었습니다.

It wasn't all romantic. I didn't have a dorm room, so I slept on the floor in friends' rooms,

그렇다고 낭만적인 것만도 아니었습니다. 기숙사에 머물 없었기 때문에 친구 마룻바닥에 자기도 했고

I returned coke bottles for the 5¢ deposits to buy food with,

병당 5센트씩하는 코카콜라 빈병을 팔아서 먹을 것을 사기도 했습니다.

and I would walk the 7 miles across town every Sunday night to get one good meal a week at the Hare Krishna temple.

매주 일요일, 맛있는 음식을 먹기 위해 7마일이나 걸어서 헤어 크리슈나 사원의 예배에 참석하기도 했습니다.

I loved it. And much of what I stumbled into by following my curiosity and intuition turned out to be priceless later on.

맛있더군요^^ 당시 순전히 호기와 직감만을 믿고 저지른 일들이 후에 정말 값진 경험이 됐습니다.

Let me give you one example:

예를 든다면

Reed College at that time offered perhaps the best calligraphy instruction in the country.

당시 리드 칼리지는 아마 미국 최고의 서체 교육을 제공했던 같습니다.

Throughout the campus every poster, every label on every drawer, was beautifully hand calligraphed.

학교 곳곳에 붙어있는 포스터, 서랍에 붙어있는 상표들은 너무 아름다웠구요.

Because I had dropped out and didn't have to take the normal classes,

어차피 자퇴한 상황이라, 정규 과목을 들을 필요가 없었기 때문에

I decided to take a calligraphy class to learn how to do this.

서체에 대해서 배워보기로 마음먹고 서체 수업을 들었습니다.

I learned about serif and san serif typefaces, about varying the amount of space between different letter combinations, about what makes great typography great.

저는 세리프와 세리프체를 배웠는데, 서로 다른 문자끼리 결합될 다양한 형태의 자간으로 만들어지는 굉장히 멋진 글씨체였습니다.

It was beautiful, historical, artistically subtle in a way that science can't capture, and I found it fascinating.

'과학적' 방식으로는 따라하기 힘든 아름답고, 유서깊고, 예술적인 것이었고, 것에 흠뻑 빠졌습니다.

None of this had even a hope of any practical application in my life.

사실, 때만해도 이런 것이 인생에 어떤 도움이 될지는 상상도 못했습니다.

But ten years later, when we were designing the first Macintosh computer, it all came back to me.

그러나 10 우리가 매킨토시를 처음 구상할 , 것들은 고스란히 빛을 발했습니다.

And we designed it all into the Mac. It was the first computer with beautiful typography.

우리가 설계한 매킨토시에 기능을 모두 집어넣었으니까요. 아마 아름다운 서체를 가진 최초의 컴퓨터가 아니였나 생각합니다.

If I had never dropped in on that single course in college,

만약 제가 서체 수업을 듣지 않았다면

the Mac would have never had multiple typefaces or proportionally spaced fonts.

매킨토시의 복수서체 기능이나 자동 자간 맞춤 기능은 없었을 것이고

And since Windows just copied the Mac, its likely that no personal computer would have them.

맥을 따라한 윈도우도 그런 기능이 없었을 것이고, 결국 개인용 컴퓨터에는 이런 기능이 탑재될 없었을 겁니다.

If I had never dropped out, I would have never dropped in on this calligraphy class,

만약 학교를 자퇴하지 않았다면, 서체 수업을 듣지 못했을 것이고 2proo

and personal computers might not have the wonderful typography that they do.

결국 개인용 컴퓨터가 오늘날처럼 뛰어난 인쇄술을 가질 수도 없었을 겁니다.


Of course it was impossible to connect the dots looking forward when I was in college.

물론 제가 대학에 있을 때는 순간들이 인생의 전환점이라는 것을 알아챌 없었습니다.

But it was very, very clear looking backwards ten years later.

그러나 10년이 지난 지금에서야 모든 것이 분명하게 보입니다.

Again, you can't connect the dots looking forward; you can only connect them looking backwards.

달리 말하자면, 지금 여러분은 미래를 없습니다 : 다만 현재와 과거의 사건들만을 연관시켜 있을 뿐이죠.

So you have to trust that the dots will somehow connect in your future.

그러므로 여러분들은 현재의 순간들이 미래에 어떤식으로든지 연결된다는 알아야만 합니다.

You have to trust in something - your gut, destiny, life, karma, whatever.

여러분들은 자신의 배짱, 운명, 인생, 카르마(?) 무엇이든지 간에 ' 무엇' 믿음을 가져야만 합니다.

This approach has never let me down, and it has made all the difference in my life.

이런 믿음이 저를 실망시킨 적이 없습니다. 언제나 인생의 고비 때마다 힘이 되워줬습니다.





My second story is about love and loss.

두번째는 사랑과 상실입니다.

I was lucky I found what I loved to do early in life.

저는 좋게도 인생에서 정말 하고싶은 일을 일찍 발견했습니다.

Woz and I started Apple in my parents garage when I was 20.

제가 20 , 부모님의 차고에서 스티브 워즈니악과 함께 애플의 역사가 시작됐습니다.

We worked hard, and in 10 years Apple had grown from just the two of us in a garage into a $2 billion company with over 4000 employees.

차고에서 2명으로 시작한 애플은 10 후에 4000명의 종업원을 거느린 2백억달러짜리 기업이 되었습니다.

We had just released our finest creation - the Macintosh - a year earlier, and I had just turned 30. And then I got fired.

나이 29, 우리는 최고의 작품인 매킨토시를 출시했습니다. 그러나 이듬해 저는 해고당했습니다.

How can you get fired from a company you started?

내가 세운 회사에서 내가 해고 당하다니!

Well, as Apple grew we hired someone who I thought was very talented to run the company with me,

당시, 애플이 점점 성장하면서, 저는 저와 맞는 유능한 경영자를 데려와야겠다고 생각했습니다.

and for the first year or so things went 2proo well.

처음 1년은 그런대로 돌아갔습니다.

But then our visions of the future began to diverge and eventually we had a falling out.

그런데 언젠가부터 우리의 비전은 서로 어긋나기 시작했고, 결국 우리 둘의 사이도 어긋나기 시작했습니다.

When we did, our Board of Directors sided with him. So at 30 I was out. And very publicly out.

, 우리 회사의 경영진들은 스컬리의 편을 들었고, 저는 30살에 쫓겨나야만 했습니다. 것도 아주 공공연하게.

What had been the focus of my entire adult life was gone, and it was devastating.

저는 인생의 촛점을 잃어버렸고, 뭐라 말할 없는 참담한 심정이었습니다.

I really didn't know what to do for a few months.

정말 그대로, 개월 동안 아무 것도 수가 없었답니다.

I felt that I had let the previous generation of entrepreneurs down - that I had dropped the baton as it was being passed to me.

마치 달리기 계주에서 바톤을 놓친 선수처럼, 선배 벤처기업인들에게 송구스런 마음이 들었고

I met with David Packard and Bob Noyce and tried to apologize for screwing up so badly.

데이비드 패커드(HP 공동 창업자) 노이스(인텔 공동 창업자) 만나 이렇게 실패한 것에 대해 사과하려했습니다.

I was a very public failure, and I even thought about running away from the valley.

저는 완전히 '공공의 실패작'으로 전락했고, 실리콘 밸리에서 도망치고 싶었습니다.

But something slowly began to dawn on me ?

그러나 속에는 뭔가가 천천히 다시 일어나기 시작했습니다.

I still loved what I did. The turn of events at Apple had not changed that one bit.

여전히 제가 했던 일을 사랑했고, 애플에서 겪었던 일들조차도 그런 마음들을 꺾지 못했습니다.

I had been rejected, but I was still in love. And so I decided to start over.

해고당했지만, 여전히 일에 대한 사랑은 식지 않았습니다. 그래서 다시 시작하기로 결심했습니다.

I didn't see it then, but it turned out that getting fired from Apple was the best thing that could have ever happened to me.

당시에는 몰랐지만, 애플에서 해고당한 것은 인생 최고의 사건임을 깨닫게 됐습니다.

The heaviness of being successful was replaced by the lightness of being a beginner again, less sure about everything.

사건으로 인해 저는 성공이란 중압감에서 벗어나서 초심자의 마음으로 돌아가

It freed me to enter one of the most creative periods of my life.

자유를 만끽하며, 인생의 최고의 창의력을 발휘하는 시기로 있게 됐습니다.

During the next five years, I started a company named NeXT, another company named Pixar,and fell in love with an amazing woman who would become my wife.

이후 5년동안 저는 '넥스트', '픽사', 그리고 지금 아내가 되어준 그녀와 사랑에 빠져버렸습니다.

Pixar went on to create the worlds first computer animated feature film, Toy Story, and is now the most successful animation studio in the world.

픽사는 세계 최초의 3D 애니메이션 토이 스토리를 시작으로, 지금은 가장 성공한 애니메이션 제작사가 되었습니다.

In a remarkable turn of events, Apple bought NeXT, I retuned to Apple, and the technology we developed at NeXT is at the heart of Apple's current renaissance.

세기의 사건으로 평가되는 애플의 넥스트 인수와 저의 애플로 복귀 , 넥스트 시절 개발했던 기술들은 현재 애플의 르네상스의 중추적인 역할을 하고 있습니다.

And Laurene and I have a wonderful family together.

또한 로렌과 저는 행복한 가정을 꾸리고 있습니다.

I'm pretty sure none of this would have happened if I hadn't been fired from Apple.

애플에서 해고당하지 않았다면, 이런 엄청난 일들을 겪을 수도 없었을 것입니다

It was awful tasting medicine, but I guess the patient needed it.

정말 독하고 쓰디 약이었지만, 이게 필요한 환자도 있는가봅니다.

Sometimes life hits you in the head with a brick. Don't lose faith.

때로 세상이 당신을 속일지라도, 결코 믿음을 잃지 마십시오.

I'm convinced that the only thing that kept me going was that I loved what I did.

반드시 인생에서 해야할만 일이 있었기에, 반드시 이겨낸다고 확신했습니다.

You've got to find what you love. And that is as true for your work as it is for your lovers.

당신이 사랑하는 일을 찾아보세요. 사랑하는 사람이 내게 먼저 다가오지 않듯, 일도 그런 것이죠.

Your work is going to fill a large part of your life,

'노동' 인생의 대부분을 차지합니다.

and the only way to be truly satisfied is to do what you believe is great work.

그런 거대한 시간 속에서 진정한 기쁨을 누릴 있는 방법은 스스로가 위대한 일을 한다고 자부하는 것입니다.

And the only way to do great work is to love what you do.

자신의 일을 위대하다고 자부할 있을 때는, 사랑하는 일을 하고있는 순간 뿐입니다.

If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it.

지금도 찾지 못했거나, 모르겠다해도 주저앉지 말고 포기하지 마세요. 전심을 다하면 반드시 찾을 있습니다.

And, like any great relationship, it just gets better and better as the years roll on.

일단 찾아낸다면, 서로 사랑하는 연인들처럼 시간이 가면 갈수록 더욱 깊어질 것입니다.

So keep looking until you find it. Don't settle.

그러니 것들을 찾아낼 때까지 포기하지 마세요. 현실에 주저앉지 마세요





My third story is about death.

세번째는 죽음에 관한 것입니다.

When I was 17, I read a quote that went something like:

17 , 이런 문구를 읽은 적이 있습니다.

"If you live each day as if it was your last, someday you'll most certainly be right."

하루 하루를 인생의 마지막 날처럼 산다면, 언젠가는 바른 길에 있을 것이다

It made an impression on me, and since then, for the past 33 years! ,

글에 감명받은 저는 50살이 되도록

I have looked in the mirror every morning and asked myself:

거울을 보면서 자신에게 묻곤 했습니다.

"If today were the last day of my life, would I want to do what I am about to do today?"

오늘이 인생의 마지막 날이라면, 지금 하려고 하는 일을 것인가?

And whenever the answer has been "No" for too many days in a row, I know I need to change something.

아니오!라는 답이 계속 나온다면, 다른 것을 해야한다는 깨달았습니다.

Remembering that I'll be dead soon is the most important tool I've ever encountered to help me make the big choices in life.

인생의 중요한 순간마다 ' 죽을지도 모른다' 사실을 명심하는 것이 저에게는 가장 중요한 도구가 됩니다.

Because almost everything ?

왜냐구요?

all external expectations, all pride, all fear of embarrassment or failure -

외부의 기대, 각종 자부심과 자만심. 수치스러움와 실패에 대한 두려움들은

these things just fall away in the face of death, leaving only what is truly important.

'죽음' 앞에서는 모두 밑으로 가라앉고, 오직 진실만이 남기 때문입니다.

Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose.

죽음을 생각하는 것은 무엇을 잃을지도 모른다는 두려움에서 벗어나는 최고의 길입니다.

You are already naked. There is no reason not to follow your heart.

여러분들이 지금 모두 잃어버린 상태라면, 더이상 잃을 것도 없기에 본능에 충실할 밖에 없습니다.

About a year ago I was diagnosed with cancer.

저는 1 전쯤 암진단을 받았습니다.

I had a scan at 7:30 in the morning, and it clearly showed a tumor on my pancreas.

아침 7 반에 검사를 받았는데, 이미 췌장에 종양이 있었습니다.

I didn't even know what a pancreas was.

그전까지는 췌장이란 뭔지도 몰랐는데요.

The doctors told me this was almost certainly a type of cancer that is incurable, and that I should expect to live no longer than three to six months.

의사들은 길어야 3개월에서 6개월이라고 말했습니다.

My doctor advised me to go home and get my affairs in order, which is doctor's code for prepare to die.

주치의는 집으로 돌아가 신변정리를 하라고 했습니다. 죽음을 준비하라는 뜻이었죠.

It means to try to tell your kids everything you thought you'd have the next 10 years to tell them in just a few months.

것은 아이들에게 10년동안 해줄수 있는 것을 몇달안에 해치워야된단 말이었고

It means to make sure everything is buttoned up so that it will be as easy as possible for your family.

임종 시에 사람들이 받을 충격이 덜하도록 매사를 정리하란 말이었고

It means to say your goodbyes.

작별인사를 준비하라는 말이었습니다.

I lived with that diagnosis all day.

불치병 판정을 받았습니다.

Later that evening I had a biopsy, where they stuck an endoscope down my throat,

through my stomach and into my intestines, put a needle into my pancreas and got a few cells from the tumor.

저녁 위장을 지나 장까지 내시경을 넣어서 암세포를 채취해 조직검사를 받았습니다.

I was sedated, but my wife, who was there, told me that when they viewed the cells under a microscope

저는 마취상태였는데, 후에 아내가 말해주길, 현미경으로 세포를 분석한 결과

the doctors started crying because it turned out to be a very rare form of pancreatic cancer that is curable with surgery.

치료가 가능한 아주 희귀한 췌장암으로써, 의사들까지도 기뻐서 눈물을 글썽였다고 합니다.

I had the surgery and I'm fine now.

저는 수술을 받았고, 지금은 괜찮습니다.

This was the closest I've been to facing death, and I hope its the closest I get for a few more decades.

때만큼 제가 죽음에 가까이 적은 없는 같습니다. 또한 앞으로도 가고 싶지 않습니다^^

Having lived through it, I can now say this to you with a bit more certainty than when death was a useful but purely intellectual concept:

이런 경험을 해보니, '죽음' 때론 유용하단 것을 머리로만 알고 있을 때보다 정확하게 말할 있습니다.

No one wants to die. Even people who want to go to heaven don't want to die to get there.

아무도 죽길 원하지 않습니다. 천국에 가고싶다는 사람들조차도 당장 죽는 원치 않습니다.

And yet death is the destination we all share. No one has ever escaped it.

우리 모두는 언젠가는 죽을 것입니다. 아무도 피할 없죠.

And that is as it should be, because Death is very likely the single best invention of Life.

삶이 만든 최고의 작품이 '죽음'이니까요.

It is Life's change agent. It clears out the old to make way for the new.

죽음이란 삶의 또다른 모습입니다. 죽음은 새로운 것이 것을 대체할 있도록 만들어줍니다.

Right now the new is you, but someday not too long from now, you will gradually become the old and be cleared away.

지금의 여러분들은 '새로움'이란 자리에 있습니다. 그러나 언젠가는 여러분들도 새로운 세대들에게 자리를 물려줘야할 것입니다.

Sorry to be so dramatic, but it is quite true.

너무 극단적으로 들렸다면 죄송하지만, 사실이 그렇습니다.

Your time is limited, so don't waste it living someone else's life.

여러분들의 삶은 제한되어 있습니다. 그러니 낭비하지 마십시오.

Don't be trapped by dogma - which is living with the results of other people's thinking.

도그마- 다른 사람들의 생각- 얽매이지 마십시오.

Don't let the noise of other's opinions drown out your own inner voice.

타인의 잡음이 여러분들 내면의 진정한 목소리를 방해하지 못하게 하세요

And most important, have the courage to follow your heart and intuition. 그리고 가장 중요한 것은 마음과 영감을 따르는 용기를 가지는 것입니다.


They somehow already know what you truly want to become. Everything else is secondary.

이미 마음과 영감은 당신이 진짜로 무엇을 원하는지 알고 있습니다. 나머지 것들은 부차적인 것이죠.

When I was young, there was an amazing publication called The Whole Earth Catalog, which was one of the bibles of my generation.

제가 어릴 , 나이 또래라면 알만한 '지구 백과' 책이 있었습니다.

It was created by a fellow named Stewart Brand not far from here in Menlo Park, and he brought it to life with his poetic touch.

여기서 그리 멀지 않은 먼로 파크에 사는 스튜어트 브랜드란 사람이 책인데, 자신의 모든 불어넣은 책이었지요.

This was in the late 1960's, before personal computers and desktop publishing, so it was all made with typewriters, scissors, and polaroid cameras.

PC 전자출판이 존재하기 전인 1960년대 후반이었기 때문에, 타자기, 가위, 폴라노이드로 책을 만들었습니다.

It was sort of like Google in paperback form, 35 years before Google came along:

35 전의 책으로 구글이라고나 할까요.

it was idealistic, and overflowing with neat tools and great notions.

책은 위대한 의지와 아주 간단한 도구만으로 만들어진 역작이었습니다.

Stewart and his team put out several issues of The Whole Earth Catalog, and then when it had run its course, they put out a final issue.

스튜어트와 친구들은 번의 개정판을 내놓았고, 수명이 다할 때쯤엔 최종판을 내놓았습니다.

It was the mid-1970s, and I was your age.

때가 70년대 중반, 제가 여러분 나이 때였죠.

On the back cover of their final issue was a photograph of an early morning country road,

최종판의 뒤쪽 표지에는 이른 아침 시골길 사진이 있었는데,

the kind you might find yourself hitchhiking on if you were so adventurous.

아마 모험을 좋아하는 사람이라면 히치하이킹/엄지들고 차를 유혹해서 빌려타며 여행하는 / 하고싶다는 생각이 들정도였지요.

Beneath it were the words: "Stay Hungry. Stay Foolish."

사진 밑에는 이런 말이 있었습니다 : 배고픔과 함께, 미련함과 함께

It was their farewell message as they signed off. Stay Hungry. Stay Foolish.

배고픔과 함께, 미련함과 함께. 것이 그들의 마지막 작별인사였습니다.

And I have always wished that for myself. And now, as you graduate to begin anew, I wish that for you.

저는 이제 새로운 시작을 앞둔 여러분들이 여러분의 분야에서 이런 방법으로 가길 원합니다.




'기타 > 기타' 카테고리의 다른 글

[PQ4R 학습 방법]  (0) 2011.11.29
[면접 때 자주색 복장이 유리한 이유는?]  (1) 2011.11.29
[마음을 움직이는 조언들]  (0) 2011.10.27
[초콜렛과 집중력]  (2) 2011.10.27
[ 열정을 가진 진정한 프로들의 특징 ]  (0) 2011.10.25
Posted by cyj4369
,
winsock을 이용한 파일 보내기(C++) 소스
 
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
 
#define BUFSIZE 4096
 
// 소켓 함수 오류 출력 후 종료
void err_quit(char *msg)
{
           LPVOID lpMsgBuf;
           FormatMessage(
                     FORMAT_MESSAGE_ALLOCATE_BUFFER|
                     FORMAT_MESSAGE_FROM_SYSTEM,
                     NULL, WSAGetLastError(),
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                     (LPTSTR)&lpMsgBuf, 0, NULL);
           MessageBox(NULL, (LPCTSTR)lpMsgBuf, msg, MB_ICONERROR);
           LocalFree(lpMsgBuf);
           exit(-1);
}
 
// 소켓 함수 오류 출력
void err_display(char *msg)
{
           LPVOID lpMsgBuf;
           FormatMessage(
                     FORMAT_MESSAGE_ALLOCATE_BUFFER|
                     FORMAT_MESSAGE_FROM_SYSTEM,
                     NULL, WSAGetLastError(),
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                     (LPTSTR)&lpMsgBuf, 0, NULL);
           printf("[%s] %s", msg, (LPCTSTR)lpMsgBuf);
           LocalFree(lpMsgBuf);
}
 
int main(int argc, char *argv[])
{
 
    int err;
 
           if(argc < 2){
                     fprintf(stderr, "Usage: %s <FileName>\n", argv[0]);
                     return -1;
           }
 
          
           WSADATA wsa;
           if(WSAStartup(MAKEWORD(2,2),&wsa) !=0 )
                     return -1;
 
           SOCKET senderSock = socket(AF_INET,SOCK_STREAM, 0);
    if(senderSock == INVALID_SOCKET){
                                             err_quit("socket()");
                                                                                               }
          
           // connect()
           SOCKADDR_IN senderaddr;
           ZeroMemory(&senderaddr,sizeof(senderaddr));
           senderaddr.sin_family = AF_INET;
           senderaddr.sin_port = htons(9000);
           senderaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
          
           err = connect(senderSock, (SOCKADDR *)&senderaddr,sizeof(senderaddr));    
           if(err == SOCKET_ERROR) err_quit("connect()");
 
 
           //파일 열기
           FILE *fp = fopen(argv[1],"rb");
 
           if(fp== NULL)
           {
            perror("파일 입출력 오류");
            return -1;
           }
 
           //파일 이름 보내기
           char filename[256];
           ZeroMemory(filename,256);
           sprintf(filename,argv[1]);
           err = send(senderSock,filename,256,0);
           //if(err == SOCKET_ERROR) err_quit("send()");
 
 
           //파일 크기 얻기
           fseek(fp,0,SEEK_END);//파일 포인터를 파일의 끝으로 옮김
           int totalbytes = ftell(fp);
 
           printf("크기 :%d bytes\n",totalbytes); //ansi로 된 text파일에 있는 문자
 
           err = send(senderSock,(char *)&totalbytes,sizeof(totalbytes),0);
           if(err == SOCKET_ERROR) err_quit("send()");
 
 
           //파일 데이터 전송에 사용할 변수
           char buf[BUFSIZE];
           int numread;
           int numtotal = 0;
 
           //파일 데이터 보내기
 
           rewind(fp); // 파일 포인터를 제일 앞으로 이동
           while(1){
                     numread = fread(buf, 1, BUFSIZE, fp);
                     if(numread > 0){
                                err = send(senderSock, buf, numread, 0);
                                if(err == SOCKET_ERROR){
                                          err_display("send()");
                                          break;
                                }
                                numtotal += numread;
                     }
                     else if(numread == 0 && numtotal == totalbytes){
                                printf("파일 전송 완료!: %d 바이트\n", numtotal);
                                break;
                     }
                     else{
                                perror("파일 입출력 오류");
                                break;
                     }
           }
 
           fclose(fp);         
    closesocket(senderSock);
           WSACleanup();
 
return 0;
 
}
Posted by cyj4369
,
화면 처리 함수 
 
Visual C++에는 Turbo - C에서 사용할 수 있는 화면 처리 함수가 정의되어 있지 않습니다. 
이런 이유로 함수를 정의해서 이용해야 합니다. 
Turbo ? C에서는 conio.h를 인클루드 시켜 바로 사용하면 됩니다. 
gotoxy(int x, int y): x, y 좌표로 커서 이동 
wherex(): 현재 커서의 x좌표 리턴 
wherey(): 현재 커서의 y좌표 리턴 
함수를 아래와 같이 정의한 후 windows.h를 인클루드 시키면 됩니다. 
void gotoxy(int x, int y) 
     COORD Cur; 
     Cur.X=x; 
     Cur.Y=y; 
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur); 
   
 

// 커서의 x 좌표를 조사한다. 
int wherex() 
     CONSOLE_SCREEN_BUFFER_INFO BufInfo; 
   
 

     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&BufInfo); 
     return BufInfo.dwCursorPosition.X; 
   
 

// 커서의 y좌표를 조사한다. 
int wherey() 
     CONSOLE_SCREEN_BUFFER_INFO BufInfo; 
   
 

     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&BufInfo); 
     return BufInfo.dwCursorPosition.Y; 
예제23) 커서를 이동시킨 후 x 좌표와 y좌표를 출력하는 프로그램 
#include <stdio.h> 
#include <windows.h> 
void gotoxy(int x, int y) 
     COORD Cur; 
     Cur.X=x; 
     Cur.Y=y; 
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur); 
 
 

int wherex() 
     CONSOLE_SCREEN_BUFFER_INFO BufInfo; 
 
 

     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&BufInfo); 
     return BufInfo.dwCursorPosition.X; 
int wherey() 
     CONSOLE_SCREEN_BUFFER_INFO BufInfo; 
     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&BufInfo); 
     return BufInfo.dwCursorPosition.Y; 
int main() 
    int x, y; 
    gotoxy(30, 10); 
    x = wherex(); 
    y = wherey(); 
    printf("x좌표:%d y좌표:%d\n",x,y); 
    return 0; 
}
Posted by cyj4369
,
시스템 함수 
 
C에서는 프로그램의 실행을 종료하고 제어를 운영체제에게 돌려주는 함수와 시스템 명령을 수행할 수 있는 함수를 제공합니다. 
stdlib.h에 정의 되어 있습니다. 
 
 

1) exit 함수 
이 함수는 프로그램의 실행을 종료하고 제어를 운영체제에게 돌려주는 함수입니다. 
이 함수의 매개 변수로 0를 주면 성공을 알리고 운영체제에게 리턴하며 1을 주면 실패를 알리고 운영체제에게 제어를 넘겨주게 됩니다. 
 
 

예제21) exit()의 사용 
#include
<stdlib.h>

int main() 
    printf("Exit를호출하면이후문장은수행되지않습니다\n"); 
    exit(0); 
    printf("의미없는문장\n"); 
    return 0; 
}

 
 

2) system 함수 
운영체제의 시스템 명령을 수행할 수 있도록 해주는 함수입니다. 
예제22) system()의 사용 
#include
<stdio.h>

#include
<stdlib.h>

#include
<conio.h> 
int main() 
    printf("메모장실행\n"); 
    system("notepad.exe"); 
    printf("메모장을종료하면서자신의ping 확인"); 
    system("ping 127.0.0.1 -t"); 
    return 0; 
}
Posted by cyj4369
,
시간 관련 함수(time.h) 
 
모든 시간 함수의 원형은 time.h 헤더 파일에 선언되어 있으므로 시간 관련 함수를 사용하려면 반드시 time.h를 인클루드 해야 합니다. 
시간과 관련된 가장 기본적인 함수는 현재 시간을 구하는 time 함수이다. 
time_t time( time_t *timer ); 
char *ctime( const time_t *timer ); 
time 함수는 1970년 1월 1일 자정 이후 경과한 초를 조사하는데 리턴 타입인 time_t형은 시스템에 따라 달라지며 Windows에서는 4바이트 정수(typedef long time_t;)로 정의되어 있습니다. 
time 함수는 time_t형의 포인터를 인수로 받아 이 인수에 조사된 시간을 채워 주기도 하고 같은 값을 리턴 하기도 합니다. 
둘 중 아무 값이나 사용해도 상관없으며 리턴 값만 사용할 경우는 인수로 NULL을 전달할 수도 있습니다. 
이 함수는 최대 2038년 1월 18일까지의 날짜를 표현할 수 있으며 64비트 버전인 _time64 함수는 3000년 12월 31일까지 표현 가능합니다. 
이 함수가 조사하는 시간은 초 단위이기 때문에 이 값으로부터 우리가 일상적으로 사용하는 시간을 바로 구하기는 무척 어렵습니다. 
또한 세계 표준시 포맷으로 되어 있어 우리나라 시간과 일치하지도 않습니다. 
ctime 함수는 time_t형의 경과 초를 출력하기 편리한 문자열 형태로 바꾸며 세계 표준시로 된 시간을 지역 설정에 맞게 조정해 주기도 합니다. 
변환된 문자열은 26문자 길이로 되어 있으며 끝에 개행 문자가 있어 printf 등의 함수로 곧바로 출력할 수 있습니다. 
ctime이 변환 결과를 저장하기 위해 사용하는 버퍼는 라이브러리에서 미리 할당해 놓은 정적 메모리 영역이며 이 영역은 asctime, gmtime, localtime 등의 함수들이 공유합니다. 

예제4) 현재 시간 출력 
#include <stdio.h> 
#include <time.h> 
int main() 
time_t t; 
time(&t); 
printf("현재 시간은 %d입니다.\n", t); 
printf("현재 시간은 %s입니다.\n", ctime(&t)); 
return 0; 
}

 
 

char *_strdate(char *datestr); => 현재 날짜를 문자열로 리턴 
char *_strtime(char *timestr); => 현재 시간을 문자열로 리턴 
 
 

_strdate는 날짜를 MM/DD/YY 포맷으로 구해 datestr 버퍼에 복사하며 _strtime은 시간을 HH:MM:SS 포맷으로 구해 timestr 버퍼에 복사하는데 이 함수가 구해주는 시간은 24시간제입니다. 
두 함수로 전달되는 버퍼는 널 문자까지 고려하여 최소한 9바이트 이상이어야 합니다. 
 
 

예제5) 현재 날짜와 시간을 출력하는 예제 
#include <stdio.h> 
#include <time.h> 
int main() 
char Date[10]; 
char Time[10]; 
_strdate(Date); 
_strtime(Time); 
printf("날짜: %s, 시간: %s\n",Date,Time); 
     return 0; 
}

 
 

clock_t clock( void ); 
작업 시점의 시간을 출력해주는 함수 
처음 호출하면 0을 가지게 되고 두 번째 호출하게 되면 첫 번째 호출한 시점에서 경과한 시간을 리턴 시켜 주게 됩니다. 
예제6) for 문을 10000번 돌리는 데 걸리는 시간 
#include <stdio.h> 
#include <time.h> 
int main() 
    clock_t t1, t2; 
    int i; 
    t1=clock(); 
    for(i=0; i<10000; i++) 
    { 
        t2 = clock(); 
        printf("i=%d t2=%d\n",i,(t2-t1)); 
    } 
}

 
 

일정시간 동안 대기하는 sleep 함수 만들기 
#include
<stdio.h> 
#include
<time.h> 
void sleep(int n); 
int main() 
    int i; 
    for (i=1; i <= 10; i++) 
    { 
        printf("*"); 
        sleep(1000);      
    } 
void sleep(int n) 
    long time; 
    time = n + clock(); 
    printf("잠시대기\n"); 
    printf("%ld\n", time - clock() ); 
    while( time > clock() ) 
    {         
    } 
}



Tip. 조금 더 정확한 시간을 알고 싶다면??
STSREMTIME 구조체 사용
typedef struct _SYSTEMTIME { // st WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME;
SYSTEMTIME SysTime;
GetLocalTime(&SysTime);
//%03d : 000포맷으로 빈 곳은 0으로 채움 19면 019로 표현 
printf("%02d, %03d",SysTime.wSecond, SysTime.wMilliseconds);

Posted by cyj4369
,
숫자와 문자열 변환 함수(stdlib.h) 
 
숫자와 문자열을 변환해주는 함수 
char *itoa(int value, char *string, int radix); 
int 형을 문자열로 변경 
char *ltoa(long value, char *string, int radix); 
long 형을 문자열로 변경 
char *ultoa(unsigned long value, char *string, int radix); 
unsigned long을 문자열로 변경 
 
 

예제18) itoa를 이용해서 10을 진법 별로 문자열로 변환 
#include <stdio.h> 
#include <stdlib.h> 
int main() 
    char str[100]; 
    int i = 10; 
    itoa(i,str,10); 
    printf("str = %s\n",str); 
    itoa(i,str,8); 
    printf("str = %s\n",str); 
    itoa(i,str,16); 
    printf("str = %s\n",str); 
    itoa(i,str,2); 
    printf("str = %s\n",str); 
    return 0; 
}

 
 

int atoi(const char *string); 
문자열을 정수로 변환 
숫자와 문자가 섞여 있다면 숫자가 있는 부분까지만 변환 
long atol(const char *string); 
문자열을 long 형 정수로 변환 
double atof( const char *string ); 
문자열을 double 형 정수로 변환 
long strtol(const char *nptr, char **endptr, int base); 
base 진법까지 인정해서 변경해줌. 
변환 불가능한 문자를 만나면 endptr로 리턴 
 
 

예제19) itoa를 이용해서 10을 진법 별로 문자열로 변환 
#include <stdio.h> 
#include <stdlib.h> 
int main() 
    char str[10] = "12car"; 
    int i; 
    i = atoi(str); 
    printf("i = %d\n",i); 
    i = strtol(str, NULL, 10); 
    printf("i = %d\n",i); 
    i = strtol(str, NULL, 10); 
    printf("i = %d\n",i); 
    i = strtol(str, NULL, 16); 
    printf("i = %d\n",i); 
    i = strtol(str, NULL, 8); 
    printf("i = %d\n",i); 
    i = strtol(str, NULL, 2); 
    printf("i = %d\n",i); 
 
 

    return 0; 
}
Posted by cyj4369
,