geek_stuff/today 2006. 8. 14. 10:43

[이벤트] 티스토리(Tistory.com) 초대장을 드려용~♡

(photo by mini)

에..또...

어떻게 하다보니 티스토리 초대장이 또 생겼습니다. :)

어찌어찌해서 총 10장이나 생겼는데, 일단 아는 사람이 달라는 몇몇장을 뺀 나머지를 보내드립니다.

(수량이 확실치는 않으나 최소 4장이상)

응모방법은 2가지 입니다.



첫번째 방법

제 블로그의 카운터가 4만힛 및 전후(39999 또는 40001)가 되었을 때 캡쳐한 화면과

받고 싶은 도메인 1차, 2차를 (없으실경우 이메일 주소의 ID로 보내드립니다.)

제 이메일(me@1kko.com)으로 보내주시면, 티스토리 초대장을 보내드립니다.

참고로 평균적으로 하루에 약 300카운트 이상씩 증가하나 이 글로인해 얼마나 더 증가할지 모릅니다. :)




두번째 방법

무조건 이 글에 댓글을 달아주시면 랜덤으로 남는 초대장을 드리겠습니다.

다만, 자신의 블로그(또는 개인 홈페이지)주소, 자신의 이메일 그리고

받고 싶은 도메인 1차지망, 2차지망을 표기하여야 합니다.

블로깅을 하시다가 티스토리로 넘어 오시고자 하는 분, 또는 테스터들에게 추천드리며,

만일 위의 사항중 한가지라도 없을 경우, (예: 이메일주소 미표기, 또는 블로그 주소 미표기)

일괄 확인후 가차없이 삭제가 됨을 알아두세요~




여러분의 참여로 4만힛까지 오게되었습니다!

아무쪼록 많은 관심 부탁드리며, 티스토리 하나씩 업어가시길(?) 바랍니다.


%8.14 추가: 오늘중으로 결말이 날 듯 합니다.
geek_stuff/today 2006. 7. 14. 04:25

티스토리 초대권 2장 쏩니다!

일단 거두절미하고,

티스토리 초대권 2장 쏩니다!
오예~~!!

가장 먼저 이글에 댓글을 다신분에게 1장!

7월 15일 오후 5시 첫번째 리플님에게 1장!


발송은 다음날 일괄적으로 이루어 질것이며, 아무쪼록 많은 참여 바랍니다!

이 글에 이메일과 원하시는 도메인 주소를 코멘트로 달아주세요!

만일 같은시간대의 중복 발생시!!!
블로그나 홈페이지가 있으신 분을 우선으로 초대해 드리겠습니다!


이미 가지고 계신분은 참가를 자제해주세요~


다른글이나 방명록에 티스토리 초대해달라는 글을 달아주시면...반드시 응징하겠습니다.




덧. 7월 16일: 이벤트 종료. lovecon님과 루나미님께 초대장이 발송되었습니다.
geek_stuff/today 2006. 7. 13. 18:38

티스토리 추천블로그?

엥? 아니 이게 어찌된일인가..

네이트에 들어갔더니 대뜸 파일을 전송한 미니님...

아니 이게 뭐지? 하고 받아봤더니 이게 웬걸?;;




... 추천블로그??;;

놀라서 후다닥~ "따따쩜티스토리쩜컴"을 주소창에 입력했으나...

"내 페이지는 안나오는데요? 라고 말했더니 "F5를 몇번 눌러보세요~"

라는 계시를 주심....

오오오... 나도 이제 유명세를 타는건가!! 으하하하하!!
geek_stuff/today 2006. 6. 21. 14:28

맥북을 지를까..



저번에 어디선가 우연찮게 보게된 동영상입니다.

그후 어디였지 어디였지 하다가 결국 가위님의 블로그...

그때 한창 tistory.com의 초대권 때문에 였었습니다만..

저 동영상을 보고 애플 홈페이지에 접속해보니 맥북이 무려 119만원...


단돈 119만원! 싸다 싸!




그동안의 고가 정책만 고수해왔던 애플이 저렴한가격에 내놓는걸 보니 지름신님께서 마구 지르라는 명령을...

게다가 13.3인치에 1280 x 800 해상도!!

완전 내가 원하는 작고 높은 해상도자나!!!

거기다 parallels의 vm만 설치하면 맥, 윈도, 리눅스 모든게 저리도 쉽게 전환이 가능하다는거에

엄청난 뽐뿌질!!



기다려라 맥북!! 내가간다!!
geek_stuff/today 2006. 6. 1. 23:00

HSBC의 OTP (One time password) device.

속눈썹님의 블로그에서 트랙백: http://ilashman.cafe24.com/5393

OTP (One Time Password) Device라는것이 인터넷 뱅킹에서도 사용이 되고 있네요.
One Time Password란 한번만 사용할 수 있는 패스워드로, 보통 로그인 방식이 매번 같은 id와 같은 password를
사용하는 방식이라면 OTP는 이런것이죠.

처음로그인할때: 너 이름이 뭐지?
패스워드: 이코요

두번째로그인할때: 너 키가 몇이지?
패스워드: 1xx cm요

세번째로그인할때: 너 몸무게가 몇이지?
패스워드: xx kg요
One Time Password의 예


이렇게 매번 다른질문으로 사용자에게 질문을 하면 사용자는 그에 맞는 password를 입력함으로서
다른사람이 합법적 유저가 한 행위를 똑같이 반복함으로서 인증수단이 무효화되는 것을 방지하려는 거죠

오늘 속눈썹님의 블로그에서 재미있는 글을 봤습니다. HSBC의 OTP라고 해서 뭔가하고 봤는데...



HSBC의 OTP Device

이렇게 생긴 장치더군요. 속눈썹맨님의 궁금해 하신건

과연 이 device가 자체적으로 통신을 해서 HSBC와 password를 주고 받느냐 인데..

결론부터 말씀드리자면 "제 생각엔 아닙니다." 입니다.

만일 OTP라는게 One Time Password의 줄임말이라면 말이죠..



HSBC의 홈페이지에 가보니 OTP를 맨처음 사용할 때 뒤에있는 바코드의 일련번호를 입력해서 등록하는게 나오는데, 이것은 각각의 device에 저장된 6자리 password의 목록일꺼라 생각됩니다.

OTP의 일련번호: 0001
OTP 0001이 생성할 수 있는 번호 및 순서 100001, 300003, 600006, 200002, 400004

OTP의 일련번호: 0002
OTP 0002가 생성할 수 있는 번호 및 순서 500005, 700007, 900009, 800008, 100001
로그인 서버에 저장된 OTP관련 내용들(가정)

이런식으로 서버에 저장이 되어있겠죠, 꼭 번호가 다 틀리지 않아도 순서만으로도 다른 OTP가 만들어 질 수 있는겁니다. 하지만 그것도 어느정도의 범위가 지정되어 있겠죠, 앞뒤 50개사이에는 각각의 OTP가 같은 값을 가질수 없다 라던지 하는...

그리고 여러번 눌러놓고도 패스워드가 다 입력이 가능했다는것은 사용자의 실수를 만회하기 위해서 어느정도 여유를 둔것 같네요, 마지막 입력한 패스워드의 앞뒤 10개정도면 입력해도 받아들일수 있도록 말이죠...

어디까지나 제 생각입니다만..ㅋ 궁금하신게 해결되셨나 모르겠네요.


여담입니다만, 저게 통신이 가능하다면 아마 은박지로 쌓아놓으면 전파가 방해되어서 사용이 불가능할겁니다.
아니면 핸드폰이 처지지않는 지하라던지, 이런곳에서는 통신이 된다면 동작이 불가능 하겠죠.

하지만 결국 통신을 하지 않는다면 저 OTP는 버튼을 누를때마다 이미 저장되어있는 번호를 순차적으로 보여주는 장치라는 것밖에 되지 않는다는 거죠. 아주 약간의 메모리(6.56Mb: 하지만 이것은 0부터 999999까지 모든수를 저장했을때)와 버튼 스위치 하나, 그리고 메모리에 있는것을 액정에 표시하는 회로만으로 구성되어져있는 싸구려 장치이라는겁니다. 사실 무슨은행이 이런거에다가 통신이 되는 걸 집어넣겠습니까.. 쓸때마다 돈나오고 은행측에서는 유지비가 장난이 아닐듯 싶은데요.ㅎㅎ

geek_stuff/today 2006. 5. 31. 09:20

Linear Shifted Array Generator

Linear Shifted Array Generator by !kKo

output_file<<((end-start)/shift)+1<<endl; // number of entries...

int j=0;
for (int i=start; i<=end; i=i+shift) // making array
{
  array[j++]=i;
}
 
//  Uncomment the following line to display the whole array.
// for (i=0;i<(end-start)/shift;i++){cout<<array[i]<<" ";} cout<<endl;
 
for (i=shift;i<=(end-start)/shift;i++) // writing to file
{
  output_file<<array[i]<<" ";
}
for (i=0;i<shift;i++) // writing to file
{
  output_file<<array[i];
  if(i<shift-1) output_file<<" ";
}
output_file<<endl;

Download Full Source Code
geek_stuff/today 2006. 5. 27. 10:55

Tistory 초대권 응모관련...

사실... 제가 저번 포스팅에도 말씀드렸다 시피 홈페이지 주소를 남겨달라고 부탁드렸는데

몇몇 분들이 그냥 이메일 주소만 적어놓고 가셨더군요..

물론 남겨주신 분도 많으시지만 대부분 다른분의 초대를 이미 받으신 상태구요.

어제 12시 반까지 기다리다가 그냥 잤는데, 방금 확인해보니 초대기능이 다시 활성화가 되었습니다.

친구에게 한장을 보냈기 때문에 아직 초대권이 3장이 남아있습니다.



초대기능의 선 기능을 다하기 위해서 남겨주시는 댓글분들의 홈페이지나 블로그를 한분한분 모두 둘러보고

초대를 해 드릴 예정입니다. =_= (무슨 제가 뭔 감투를 쓴 마냥;; )

뭐... 어떻게 생각하면 기분나쁘실 수도 있겠지만 저는 테터의 팬이고 또한 태터의 발전을 위해서라는 명분(?)아래

베타테스팅을 한다는 것을 감안해주시면 좋겠습니다.^^


이전글에 코멘트를 남겨주신분들에게는 죄송하지만 현재 글에 달린 코멘트에만 초대를 할 예정입니다.

선착순은 아니고, 다만 홈페이지(또는 블로그 주소)와 이메일 주소를 남겨주시면 되겠습니다.

(홈페이지/블로그 주소 안남겨주시면 당첨확율 0% 이므로 꼭 주소를 남겨주세요~)


5/26 18:48 현재 남은 초대장 갯수: 3

5/26 19:18 현재 남은 초대장 갯수: 2

5/26 22:10 현재 남은 초대장 갯수: 1

5/27 10:57 현재 남은 초대장 갯수: 0

'geek_stuff > today' 카테고리의 다른 글

티스토리 초대권 2장 쏩니다!  (12) 2006.07.14
티스토리 추천블로그?  (1) 2006.07.13
맥북을 지를까..  (3) 2006.06.21
HSBC의 OTP (One time password) device.  (3) 2006.06.01
Linear Shifted Array Generator  (0) 2006.05.31
Tistory.com Beta에서의 첫 글  (3) 2006.05.26
1kko.com 블로그의 변천사  (0) 2006.05.21
자료구조 과제 #3  (0) 2006.05.10
자료구조 과제 #2  (0) 2006.05.10
자료구조 과제 #1  (0) 2006.05.10
geek_stuff/today 2006. 5. 26. 00:09

Tistory.com Beta에서의 첫 글

어떻게 해서 당첨되어서 한 40분을 기다렸군요=_=

jihwang**@gmail.com이 다른 이메일일까 하고 생각해봤습니다만...

a~z, 0~9까지 각 글자단위당 26+10개, 총 36개의 조합이 가능하며 이것이 두자리 이므로
36의 제곱=1296 의 각기 다른 조합이 있다는것을 계산하여 알아보고 나선;;;

대략 절망.... ㅠㅠ

하던 상황중 까뜨나 하자 라고 마음을 먹고 페이지를 열려는 찰나...!

아아~~ 떴습니다 ㅠㅠ

Tistory.com에서 귀하를 초대했습니다.
tistory는 멀티미디어 블로깅, 제한없는 저장공간, 나만의 블로그 주소등을 제공하는 블로그 서비스입니다.

아래의 링크를 클릭하시면 tistory 블로그에 바로 입주하실 수 있습니다
http://jihwangyi.tistory.com/....

서비스 이용약관 보기

○ 블로그 주소 : http://jihwangyi.tistory.com
○ 로그인 이메일주소 : jihwang**@gmail.com
○ 비밀번호는 임시로 설정해 두었습니다.
    위의 링크와 연결되어 있는 페이지에서 꼭 변경하시기 바랍니다.
○ 관리자 → 환경설정에서 블로그 주소를 변경해주세요
Tistory 처음부터 시작하기

초대권연결이 원활치 않은경우, 초대URL 에서 마우스 오른쪽버튼을 클릭하신후 '새창에서열기' 하시기 바랍니다.


제 계정에서 파일을 백업해다가 여기에 올리니 스킨이 다른걸로 바뀌어 버리는군요-ㅋ

스킨 수정기능은 아직 없는듯 싶습니다.

그리고 초대기능은 아직 안보이는데요...

여기저기 구석구석 다 눌러봤는데....

음... 제가 못찾고 있는걸지도...


그럼 이전 포스팅에서 리플을 달아주신분들중에 선정하여 초대권을 보내드리겠습니다.^^

'geek_stuff > today' 카테고리의 다른 글

티스토리 추천블로그?  (1) 2006.07.13
맥북을 지를까..  (3) 2006.06.21
HSBC의 OTP (One time password) device.  (3) 2006.06.01
Linear Shifted Array Generator  (0) 2006.05.31
Tistory 초대권 응모관련...  (17) 2006.05.27
1kko.com 블로그의 변천사  (0) 2006.05.21
자료구조 과제 #3  (0) 2006.05.10
자료구조 과제 #2  (0) 2006.05.10
자료구조 과제 #1  (0) 2006.05.10
심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
geek_stuff/today 2006. 5. 21. 23:47

1kko.com 블로그의 변천사

내 블로그/홈페이지의 변천사:

98년 포탈에서 html 하드코딩으로 첫 홈페이지 제작 : xoom.com/~jihwang

<처음 만든 홈페이지 대문>
지금 봐도 별로 누추해보이지는 않는다-ㅋㅋ


01년 zeroboard를 이용한 실험용 개인홈페이지 다수 제작: 개인컴에서 IIS5 를 이용

<처음 캠으로 만든 홈페이지 배경>
블러(Blur)처리를 용서하소서...


02년 php, asp를 모르고서는 제대로된 홈페이지가 나오지 않는다는것을 알고는 한때 좌절...;
      때문에 싸이월드 도토리 왕창 구입.;;

<예전 싸이월드>
예전에는 힛 캡쳐해서 선물달라는 협박도 통했었는데 말이지..


02년말 jihwang.org라는 도메인을 ttpia에서 구입
이런것도 주더라...


04년 군에서 zog를 발견, 이거 테스트한다고 linux서버 구축 및 파일서버 활용
<예전 조그의 모습>

05년 jihwang.org를 zog로 꾸미다가 tattertools를 발견, 이때부터 테터와의 인연 맺어짐
<테터툴즈>
예전에 했던 포스팅을 예전 스킨과 함께...


06년 jihwang.org를 1kko.com으로 바꾸고 블로그 개장

<중간에 모든글을 날릴뻔한 불상사가 있을뻔 했지만 다행히 백업으로 목숨부지..ㅜㅜ>


06년 5월 21일: 77개의 글과 함께 만힛 달성.

<10000번째 힛 기념 스샷>





흠 이제야 겨우 10000힛인가...

'geek_stuff > today' 카테고리의 다른 글

맥북을 지를까..  (3) 2006.06.21
HSBC의 OTP (One time password) device.  (3) 2006.06.01
Linear Shifted Array Generator  (0) 2006.05.31
Tistory 초대권 응모관련...  (17) 2006.05.27
Tistory.com Beta에서의 첫 글  (3) 2006.05.26
자료구조 과제 #3  (0) 2006.05.10
자료구조 과제 #2  (0) 2006.05.10
자료구조 과제 #1  (0) 2006.05.10
심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
geek_stuff/today 2006. 5. 10. 00:54

자료구조 과제 #3

/*
Data Structure Assignment #3
Spring, 2006
Due Date: 2006. 5. 8. Monday 6:00 PM.

주어진 input sequence에 대하여 heap을 구성하여 array에 저장하고 이를 in-order(type 1), pre-order(type 2), post-order(type 3), level-order(type 4)로 저장하는 프로그램을 작성 하시오. 속도에 따라 점수가 부여된다. 따라서, heap은 array에 저장되어야 하고 traversal은 iterative한 방법을 사용해야 한다 (recursive한 프로그램은 0점 처리).

예:
? Input:
10 // number of item
2 // traversal type
1 3 20 61 91 123 8 71 32 21 // items

30
1
30 40 13 12 11 .....

:
:

-1 // end of input

첫 번째 input으로부터의 max heap은 다음과 같다.

   123
          /   /    \
71   /   91
     /      /
61  21  3  8
  /       /       \
  1    32    20

123719161213813220



? Output:
123 71 61 1 32 21 20 91 3 8 // preorder traversal (because traversal type = 2)
123 71 61 1 32 21 20 91 3 8
0.034 // 수행속도 (입출력 시간 제외, 소수점 3자리)

40 30 13 12 11 ....
0.040

.
제한 사항
1. Input item의 개수는 최대 100000개입니다.

2. Input은 C:\ass3_input.txt에서 입력 받아서 C:\학번_이름_반.txt에 출력하면 된다.
예)출력 파일 c:\200621094_홍길동_A.txt

3.제출시 파일명은 "학번_이름_반"으로 작성하세요. 여기서 반은 과제물 제출 게시판의 반입니다.(A,B,C) 실행 파일과  C파일 두 개를 올려주세요.
예) 200621094_홍길동_A.exe /200621094_홍길동_A.c

4.소스 파일과 실행 파일을 압축하지 말고 올려주세요.  

5. c:\ 폴더에 실행파일이 없을 경우에도 동작해야 합니다.

6.변동 사항이 있을 수 있으니 공지 사항을 꼭 확인해 주세요.

7.과제물 제출 시 반드시 비밀글을 체크하시고 올리셔야 합니다. 


*/
ac
#include<stdio.h>
#include<windows.h>

#define IN_FILE "c:\\ass3_input.txt"
#define OUT_FILE "c:\\200120993_이지황_B.txt"

struct time{
LARGE_INTEGER   st, ed, freq ;
  double          gap ;
  BOOL            bEnable;
  char            szName[256];
  UINT            counter;
  double          fTotal_Time;
}mytime;

struct dat{
int num; // number of input datas
int type;
int *heap, *temp, *out; 
}data;


void inorder(void) // when case 1,
{
int i=1, j=1;
for( ; i<=data.num/2; i*=2);
 
while(1)
{     
if(i == 1)
{
  data.out[j++] = data.heap[i];
  data.temp[i] = -1;
  for(i=i*2+1; i<=data.num/2; i*=2);
}
else
{
  if(i*2 <= data.num && data.temp[i*2] != -1)
  {
   data.out[j++] = data.heap[i*2];
   data.temp[i*2] = -1;
  }

  if(data.temp[i] != -1)
  {
   data.out[j++] = data.heap[i];
   data.temp[i] = -1;
  }
   
  if(i*2+1 <= data.num && data.temp[i*2+1]!= -1)
  {
   for(i=i*2+1; i<=data.num/2; i*=2);
   continue;
  }
  //printf("i:%d j:%d\n",i,j);
}
i/=2;
if(j>data.num) break;
}
}


void preorder(void) // when case 2,
{
int i=1, j=1;

while(1)
{
for( ; i<=data.num; i*=2)
{
  if(data.temp[i]!= -1)
  {
   data.out[j++]=data.heap[i];
   data.temp[i]= -1;
  }
}
if(i/2-1>=data.num)
{
  i=i/2+1;
  data.out[j++]=data.heap[i];
  data.temp[i]= -1;
}

i=i/2+1;

if(i%2==0)
{
  while(i%2==0)
  i=i/2;
}
if(j>data.num)
  break;
}


}


void postorder(void) // when case 3,
{
int i=1, j=1;  
for( ; i<=data.num/2; i*=2);
 
while(1)
{     
if(data.temp[i]!= -1)
{
  data.out[j++]=data.heap[i];
  data.temp[i]=-1;
}

if(i+1<=data.num && data.temp[i+1]!= -1 && (i+1)%2==1) 
{
  i++;
  if(i*2<=data.num)
  {
   for( ; i<=data.num/2; i*=2);
   continue;
  }
  data.out[j++] = data.heap[i];
  data.temp[i]= -1;
}

i/=2;
if(j > data.num) break;
}
}


static void Start()
{
mytime.gap = 0.0;  // init
mytime.bEnable = FALSE;
mytime.counter = 0;
mytime.fTotal_Time = 0.0;

// system test
QueryPerformanceCounter ( &mytime.st ) ;
if ( mytime.st.QuadPart == 0 )
{
mytime.bEnable= FALSE;
OutputDebugString("시스템이 지원이 안됨,,, 사용할 수 없음[CTimeCounter Class]\n");
}

// start()
mytime.counter ++;
QueryPerformanceCounter ( &mytime.st ) ;
}


static void End()
{
char szMsg[64];

QueryPerformanceCounter ( &mytime.ed ) ;
QueryPerformanceFrequency ( &mytime.freq ) ;

// 소요 시간 계산
mytime.gap = ( (double) (mytime.ed.QuadPart - mytime.st.QuadPart )) / ( (double) mytime.freq.QuadPart ) ;
mytime.fTotal_Time += mytime.gap;

sprintf ( szMsg, "수행시간 %.6f초\n", mytime.gap) ;
OutputDebugString(szMsg);
}


int read(FILE *in_file)
{
int i;
fscanf(in_file,"%d",&data.num);
if(data.num== -1) return 0;
else
{
data.heap=(int*)malloc(sizeof(int)*(data.num+1)); // memory allocation
data.temp=(int*)malloc(sizeof(int)*(data.num+1));
data.out= (int*)malloc(sizeof(int)*(data.num+1));

fscanf(in_file,"%d",&data.type);

for(i=1; i<=data.num; i++)
{
  fscanf(in_file,"%d",&data.temp[i]);
}
}
return 1;
}


void sort(FILE *out_file)
{
int i,j,tmp;
int flaglevelorder=0;

Start(); // clock starts

// max heap insertion occurs here.
for(i=1; i<=data.num; i++)
{
data.heap[i]=data.temp[i];
for(j=i; j>1; j/=2)
{
  if(data.heap[j]<data.heap[j/2]) break;
  else
  {
   tmp=data.heap[j/2];
   data.heap[j/2]=data.heap[j];
   data.heap[j]=tmp;
  }
}
}

switch(data.type)
{
case 1:
inorder();
break;
case 2:
preorder();
break;
case 3:
postorder();
break;
case 4: //level-order
flaglevelorder=1;
//for(i=1; i<=data.num; i++) data.out[i]=data.heap[i];
break;
}

End(); // clock stops

if(flaglevelorder)
{
for(i=1;i<=data.num;i++) fprintf(out_file, "%d ", data.heap[i]);
}
else
{
for(i=1;i<=data.num;i++) fprintf(out_file, "%d ", data.out[i]);
}

fprintf(out_file,"\n%5.3f\n\n", mytime.fTotal_Time);

free(data.heap); // unallocation of memory
free(data.temp);
free(data.out);
}


void main(void)
{
FILE *infile, *outfile;

infile=fopen(IN_FILE,"r");
outfile=fopen(OUT_FILE,"w");

while(read(infile)) sort(outfile);

fclose(infile);
fclose(outfile);
}

geek_stuff/today 2006. 5. 10. 00:49

자료구조 과제 #2

/*
자료구조 - 2번째 과제물.
제출 기한 : 2006. 3. 31. Friday 6:00 PM.

주어진 숫자를 radix sort algorithm (pp. 350-357) 을 이용하여 정렬하라.

예 (radix 가 10일 경우):

329        720        720        329
457        355        329        355
657        436        436        436
839  ->    457   ->   839   ->   457
436        657        355        657
720        329        457        720
355        839        657        839


Input 양식:
5                // input 개수
10329353
2340213
234091223
2342321
2341323

Output 양식:
2340213
2341323
2342321
10329353
234091223


조건:
1. 각 숫자는 최대 9자리이다.
2. Input은 C:ass2_input.txt에서 입력 받아서 C:ass2_output.txt에 출력하면 된다.
3. 제출시 파일명은 "학번_이름_반"으로 작성하세요. 여기서 반은 과제물 제출 게시판의 반입니다.(A,B,C)
  예) 200621094_홍길동_A.exe /200621094_홍길동_A.c
4. 소스 파일과 실행 파일모두 제출 하셔야 합니다.  
5. input 개수에 상관없이 작동해야 합니다. 단 integer범위를 벗어나진 않습니다.
6. c: 폴더에 실행파일이 없을 경우에도 동작해야 합니다.
7. Radix_Size에 변동 사항이 있을 경우 공지사항에 다시 올리겠습니다.
8. 공지 사항을 꼭 확인해 주세요.
*/

#include <stdlib.h>  // to use function: atoi()
#include <string.h>  // to reset buffer: memset()
#include <windows.h> // for class CTimeCouter
#include <stdio.h>  // for class CTimeCouter

#define IN_FILE "c:\\ass2_input.txt"
#define OUT_FILE "c:\\ass2_output.txt"

// global variables here
struct data{
int* list;      // input data enters here
int* temp;  // mydata.temporary data to exchange
int num_in;    // number of inputs
}mydata;

struct time{
LARGE_INTEGER   st, ed, freq ;
   double          gap ;
   BOOL            bEnable;
   char            szName[256];
   UINT            counter;
   double          fTotal_Time;
}mytime;

static void Start()
{
mytime.gap = 0.0;         // init
mytime.bEnable = FALSE;
mytime.counter = 0;
mytime.fTotal_Time = 0.0;

// system test
QueryPerformanceCounter ( &mytime.st ) ;
if ( mytime.st.QuadPart == 0 )
{
 mytime.bEnable= FALSE;
 OutputDebugString("시스템이 지원이 안됨,,, 사용할 수 없음[CTimeCounter Class]\n");
}

// start()
mytime.counter ++;
QueryPerformanceCounter ( &mytime.st ) ;
}


static void End()
{
char szMsg[64];

QueryPerformanceCounter ( &mytime.ed ) ;
QueryPerformanceFrequency ( &mytime.freq ) ;

// 소요 시간 계산
mytime.gap = ( (double) (mytime.ed.QuadPart - mytime.st.QuadPart )) / ( (double) mytime.freq.QuadPart ) ;
mytime.fTotal_Time += mytime.gap;

sprintf ( szMsg, "수행시간 %.6f초\n", mytime.gap) ;
OutputDebugString(szMsg);
}

int read(FILE * in_file)
{
char tmpr[10]="";
int i;

fscanf(in_file,"%s",&tmpr);
if (atoi(tmpr)==0) return 0; // break if input is zero
else
{
 mydata.num_in=atoi(tmpr)+1;

 mydata.list = (int*)malloc(sizeof(int)*mydata.num_in); // memory allocation as size of mydata.num_in, and link this to mydata.list
 mydata.temp = (int*)malloc(sizeof(int)*mydata.num_in); // memory allocation as size of mydata.num_in, and link this to mydata.temp

 for(i=1; i<mydata.num_in; i++)
 {
  fscanf(in_file,"%s",&tmpr);
  mydata.list[i] = atoi(tmpr);
 }
}
return 1;
}


static void sort(FILE* out_file)
{
int cnt[256], idx[256], i;

Start(); // start stopwatch

memset(cnt, 0, 1024); // initializing count
idx[0]=0; // initializing index
for(i=0; i<mydata.num_in; i++)   cnt[(mydata.list[i] >> 0) & 255]++;
for(i=1; i<256; i++)   idx[i] = idx[i-1] + cnt[i-1];
for(i=0; i<mydata.num_in; i++)   mydata.temp[idx[(mydata.list[i] >> 0) & 255]++] = mydata.list[i];

memset(cnt, 0, 1024); // initializing count
idx[0]=0; // initializing index
for(i=0; i<mydata.num_in; i++)   cnt[(mydata.temp[i] >> 8) & (255)]++;
 for(i=1; i<256; i++)   idx[i] = idx[i-1] + cnt[i-1];
for(i=0; i<mydata.num_in; i++)   mydata.list[idx[(mydata.temp[i] >> 8) & 255]++] = mydata.temp[i];

memset(cnt, 0, 1024); // initializing count
idx[0]=0; // initializing index
for(i=0; i<mydata.num_in; i++)   cnt[(mydata.list[i] >> 16) & (255)]++;
for(i=1; i<256; i++)   idx[i] = idx[i-1] + cnt[i-1];
for(i=0; i<mydata.num_in; i++)   mydata.temp[idx[(mydata.list[i] >> 16) & 255]++] = mydata.list[i];

memset(cnt, 0, 1024); // initializing count
idx[0]=0; // initializing index
for(i=0; i<mydata.num_in; i++)   cnt[(mydata.temp[i] >> 24) & (255)]++;
for(i=1; i<256; i++)   idx[i] = idx[i-1] + cnt[i-1];
for(i=0; i<mydata.num_in; i++)   mydata.list[idx[(mydata.temp[i] >> 24) & 255]++] = mydata.temp[i];

End();  // stop stopwatch

fprintf(out_file,"%.10f\n", mytime.fTotal_Time);
for(i=0; i<mydata.num_in-1;i++) fprintf(out_file,"%d ", mydata.list[i]);
fprintf(out_file,"\n");
}


void main(void)
{
   FILE *in_file, *out_file;

in_file=fopen(IN_FILE,"r");
out_file=fopen(OUT_FILE,"w");

while(read(in_file)) sort(out_file);

fclose(in_file);
fclose(out_file);

free(mydata.list);
free(mydata.temp);
}

'geek_stuff > today' 카테고리의 다른 글

Linear Shifted Array Generator  (0) 2006.05.31
Tistory 초대권 응모관련...  (17) 2006.05.27
Tistory.com Beta에서의 첫 글  (3) 2006.05.26
1kko.com 블로그의 변천사  (0) 2006.05.21
자료구조 과제 #3  (0) 2006.05.10
자료구조 과제 #1  (0) 2006.05.10
심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
숫자 generator 프로그램  (0) 2006.03.27
뉴 개념의 PC 등장!  (0) 2006.03.10
geek_stuff/today 2006. 5. 10. 00:48

자료구조 과제 #1

/*/////////////////////////////////
Data Structure Assignment #1


과제1:
Operand의 크기가 너무커서 integer type으로 처리하지 못하는 더하기 연산을 integer 덧셈처럼 처리하는 프로그램을 작성하시오.

채점에 사용될 양식
예)
input.txt

21123424543254546575767868
+4235465475678687979797

2335344365547657
-345463574687

25434665457655765879
+4547568798080980

3543454
-46576985679

..
..
..
EOF

output.txt
325243436576970808976

3655765876987908606080

654768780900897979799
..
..
..

답 생성시 음수는 숫자앞에 '-'기호를 붙이셔야 됩니다.
위의 방식으로 하겠습니다.

값 사이의 줄 공백은 input 파일에서는 처리하셔야 되고
처리가 안되어 있다면 '순서대로 2줄을 읽어들여' 처리하는 식으로 되어 있으면 됩니다.

output파일에서의 공백은 처리 안하셨어도 됩니다.
*/

#include <fstream.h> // includes iostream.h
#include <string.h>  // for strcmp()

#define IN_FILE "C:\\input.txt" // don't forget to use double '\\' instead of '\'
#define OUT_FILE "C:\\output.txt"
#define MAX_LEN 200 // up to 200 chars (w/ cr & sign, +1)
#define POSITIVE 0
#define NEGATIVE 1

void mysort(char *mychar) // clear out spaces;
{
int j=0;
char temp[MAX_LEN]=""; // clearing garbages out (will temporary store cleared *mychar values)
for (int i=0;i<=MAX_LEN+1;i++)
{
 if (mychar[i]!=' ') temp[j++]=mychar[i]; // if the character is not a blank, than save to the temp.
}
strcpy(mychar, temp); // overwrite strings with 'blank removed' ones.


int signcheck_rmv(char *mychar) // check sign and return 1 if it's negative, else 0.
{
int ret_key=0;
for (int i=0;i<=MAX_LEN+1;i++)
{
 switch(mychar[i])
 {
 case '-':
  ret_key=1;     // if it's negative turn the flag on.
 case '+':
  mychar[i]=' '; // and then change the sign symbol to a blank.
  break;
 }
}
mysort(mychar); // call sort function to remove spaces

return ret_key; // return 1 if it's negative, otherwise 0
}


void remove_zeros(char* output) // remove front zeros, ej) 001023 -> 1023
{
char temp[MAX_LEN]="";
strcpy(temp,output);

for (int i=0;(unsigned)i<strlen(temp);i++) {
 if(temp[i]>='1') break;
 else temp[i]=' ';
}
mysort(temp);

if (strcmp(temp,"")==0) strcpy(temp,"0"); // leave one '0', if output is null.
strcpy(output,temp);
}


inline int bigger(int a, int b){ if(a>b) return a; else return b; }  // return bigger integer, else return first input.


void reform(char *mychar, int len) //digit count and modify 11 as 0011 to fit for 2222
{
int j=len-strlen(mychar); //+1 is for case of increase of number over 10
if (strlen(mychar)==(unsigned)len) {} //skip if strlen(mychar) is equal to itself.
else {
 while(j--) {
  for (int i=len; i>=0; i--) //repeat as length of mychar.
  {
   if(i<=0) mychar[i]='0'; // put '0' to mychar[i] if [i] is 0.
   else mychar[i]=mychar[i-1]; //otherwise
  }
 }
}
}


void calculate_plus(char* a, char* b, char *output, int last) // calculate and saves value to *output
{
int c=0;
int inta, intb;

char temp[MAX_LEN]="";

// digit count and modify 11 as 0011 to fit for 2222
reform(a, last);
reform(b, last);
reform(temp, last);

for (int i=1;i<=last;i++)
{
 inta=a[last-i]-'0';
 intb=b[last-i]-'0'; // converts a character to an integer
 //cout<<"inta+intb:"<<inta+intb<<endl;

 temp[last-i]=(((inta+intb)%10)+c)+'0'; // perform plus calculation

 if((inta+intb)/10) // if a+b is over 10, then we need to
 {
  c=1;    // set flag to 1 which says the output is more than 10.
  if(i==last) // in case the output have more digit than input, like 999+999.
  {
   reform(temp,strlen(temp)+1); // increase one more digit
   temp[0]='1';                 // then put 1 in front.
  }
 }
 else c=0; // otherwise reset the flag
}

remove_zeros(temp);
strcpy(output,temp); // copy temp to output
}


void calculate_minus(char* a, char* b, char *output, int last) // calculate and saves value to *output
{
int inta=0, intb=0, c=0;
char temp[MAX_LEN]="";
char my_a[MAX_LEN]="";
char my_b[MAX_LEN]="";

strcpy(my_a,a);
strcpy(my_b,b);

// count digit and modify 11 as 0011 to fit for 2222
reform(temp, last);
reform(my_a, last);
reform(my_b, last);

for (int i=1;i<=last;i++)
{
 if((my_a[last-i]-'0')==0) inta=0;
 else inta=(my_a[last-i]-'0');
 if((my_b[last-i]-'0')==0) intb=0;
 else intb=(my_b[last-i]-'0'); // converts a character to an integer


 if(inta-intb-c>=0)
 {
  temp[last-i]=(((inta-intb)%10)-c)+'0'; // perform minus calculation
  c=0;
 }
 else //if(inta-intb-c<0)
 {
  temp[last-i]=(inta-intb-c+10)+'0';
  c=1;
 }
}
remove_zeros(temp);
strcpy(output, temp);
}


int calculate(char *a, char *b, char *output, int a_is_neg, int b_is_neg) //(unsigned)bigger number comes to a, return 1 when the answer is MINUS.
{
char temp[MAX_LEN]="";
int type_a=0, type_b=0, i;
int len_a=strlen(a);
int len_b=strlen(b);
int last=bigger(len_a,len_b);

int a_size=1, b_size=1;

if(len_a==len_b) // assume that we have same length, because we already reform(a)&(b)
{
 for (i=0;i<=last;i++) // compare one by one
 {
  if(a[i]>b[i]) a_size*=(i+1); // +1 to prevent result is 0,  when i==0;
  if(b[i]>a[i]) b_size*=(i+1);
 }
 //cout<<"a_size: "<<a_size<<endl<<"b_size: "<<b_size<<endl;
 if(a_size>b_size)
 {
  if(a_is_neg) {calculate_minus(a,b,output,last); return NEGATIVE;} // when a_is_big and a_is_neg, output must be NEGATIVE
  if(b_is_neg) {calculate_minus(a,b,output,last); return POSITIVE;}
  calculate_plus(a,b,output,last); return POSITIVE;
 }
 if(b_size>a_size) //switch between (a,b) is occuring here.
 {
  if(b_is_neg) {calculate_plus(b,a,output,last); return NEGATIVE;} // when b_is_big and b_is_neg, output must be NEGATIVE
  if(a_is_neg) {calculate_plus(b,a,output,last); return POSITIVE;}
  calculate_plus(a,b,output,last); return POSITIVE;
 }
 calculate_plus(a,b,output,last); return POSITIVE;
}


int LONG=1;  //define as variable because we have to change later..
int SHORT=0;
//negative=1
//positive=0

if (len_a>len_b) { type_a=LONG; type_b=SHORT; }
if (len_b>len_a) { type_b=LONG; type_a=SHORT; }
if (a_is_neg) type_a+=NEGATIVE; else type_a+=POSITIVE;
if (b_is_neg) type_b+=NEGATIVE; else type_a+=POSITIVE;

// long-  type_x=2,
// long+  type_x=1,
// short- type_x=1,
// short+ type_x=0.

// first determine two definite situation.
// long+a(1) - short-b(1) = 0 // minus_calc, return POSITIVE
// long+a(1) - short+b(0) = 1 // plus_calc, return POSITIVE
// long-a(2) - short-b(1) = 1 // plus_calc, return NEGATIVE
// long-a(2) - short+b(0) = 2 // minus_calc, return NEGATIVE
// short+a(0) - long-b(2) = -2 // switch, minus_calc, return NEGATIVE
// short+a(0) - long+b(1) = -1 // plus_calc, return POSITIVE
// short-a(1) - long-b(2) = -1 // plus_calc, return NEGATIVE
// short-a(1) - long+b(1) = 0 // switch, minus_calc, return NEGATIVE

// now arranging by output, we can see top 2 has distinctive output.

// long-a(2) - short+b(0) = 2 // minus_calc, return NEGATIVE
// short+a(0) - long-b(2) = -2 // switch, minus_calc, return NEGATIVE

// long+a(1) - short-b(1) = 0 // minus_calc, return POSITIVE
// short-a(1) - long+b(1) = 0 // switch, minus_calc, return NEGATIVE
// long+a(1) - short+b(0) = 1 // plus_calc, return POSITIVE
// long-a(2) - short-b(1) = 1 // plus_calc, return NEGATIVE
// short+a(0) - long+b(1) = -1 // plus_calc, return POSITIVE
// short-a(1) - long-b(2) = -1 // plus_calc, return NEGATIVE

// so we can write:
if ( (type_a-type_b) == 2 ) { calculate_minus(a,b,output,last); return NEGATIVE; }
else if ( (type_a-type_b) == -2 ) { calculate_minus(b,a,output,last); return NEGATIVE; }

// now we have 6 conditions left, so we change the calculation from a-b to a+b.
// then we'll have two distinctive output from them.

// long+a(1) + short-b(1) = 2 // minus_calc, return POSITIVE
// short-a(1) + long+b(1) = 0 // switch, minus_calc, return NEGATIVE

// long+a(1) + short+b(0) = 1 // plus_calc, return POSITIVE
// long-a(2) + short-b(1) = 3 // plus_calc, return NEGATIVE
// short+a(0) + long+b(1) = 1 // plus_calc, return POSITIVE
// short-a(1) + long-b(2) = 3 // plus_calc, return NEGATIVE

// so we can write:
else if ( (type_a+type_b) == 2 ) { calculate_minus(a,b,output,last); return POSITIVE; }
else if ( (type_a+type_b) == 0 ) { calculate_minus(b,a,output,last); return NEGATIVE; }

// now we have 4 conditions left, so we change the definition of long
// now change the def of long.
else{
 LONG=10;
 type_a=type_b=0; //reset type_a and type_b

 // recalculate then.
 if (len_a>len_b) { type_a=LONG; type_b=SHORT; }
 if (len_b>len_a) { type_b=LONG; type_a=SHORT; }
 if (a_is_neg) type_a+=NEGATIVE; else type_a+=POSITIVE;
 if (b_is_neg) type_b+=NEGATIVE; else type_a+=POSITIVE;

 // LONG=10
 // SHORT=0
 // NEGATIVE=1
 // POSITIVE=0
 
 // which makes
 // long-  type_x=11,
 // long+  type_x=10,
 // short- type_x=1,
 // short+ type_x=0.

 // we perform the plus calculations to determine next top two.
 // long+a(10) + short+b(0) = 10 // plus_calc, return POSITIVE
 // short+a(0) + long+b(10) = 10 // plus_calc, return POSITIVE
 
 // long-a(11) + short-b(1) = 12 // plus_calc, return NEGATIVE
 // short-a(1) + long-b(11) = 12 // plus_calc, return NEGATIVE

 // so we now can write:
 if ((type_a+type_b) == 10) { calculate_plus(a,b,output,last); return POSITIVE; }
 else { calculate_plus(a,b,output,last); return NEGATIVE; }
}

return POSITIVE; // return positive if the answer is 0 situation(a=b) like (111-111)=0
}


void main(void)
{
char a[MAX_LEN]="";
char b[MAX_LEN]="";
char output[MAX_LEN]="";  // clearing out garbages

// opening files...
ifstream input_file(IN_FILE); //open file to read
ofstream output_file(OUT_FILE); //open file to write
if(input_file.fail()) //input file check
 cerr << "Error opening "<<IN_FILE<<endl;
else if(output_file.fail()) //output file check
 cerr << "Error opening "<<OUT_FILE<<endl;
else
{
 while (! input_file.eof()) //loop starts to get lines, stops end of the file.
 {
  strcpy(output,""); // just in case if the line have odd number
  //read file by line
  input_file.getline(a, sizeof(a)); //get a line, when repeats get the next odd line
  input_file.getline(b, sizeof(b)); //get a next line, when repeats get the next even line
  if (strcmp(a,"EOF")==0 || strcmp(b,"EOF")==0) break; // break out loop when meets "EOF" string, no matter if there's more to read.
   // so, really doesn't matter either line number is on even, or odd.

  //calculation
  //remove the sign
  int is_a_neg=signcheck_rmv(a);
  int is_b_neg=signcheck_rmv(b);

  switch(calculate(a, b, output, is_a_neg, is_b_neg)) // check out whether output positive calculation or negative.
  {
  case NEGATIVE:
   reform(output,strlen(output)+1);
   output[0]='-';
  case POSITIVE:
   break;
  }

  //cout<<"a: "<<a<<endl<<"b: "<<b<<endl<<"o: "<<output<<endl;  // just for testing purpose.
  output_file<<output<<endl; // write a line to output file.
 }//end of eof checking loop
}//end of input file error checking

// closing files...
input_file.close();
output_file.close();
} //end of main(void)*/

'geek_stuff > today' 카테고리의 다른 글

Tistory 초대권 응모관련...  (17) 2006.05.27
Tistory.com Beta에서의 첫 글  (3) 2006.05.26
1kko.com 블로그의 변천사  (0) 2006.05.21
자료구조 과제 #3  (0) 2006.05.10
자료구조 과제 #2  (0) 2006.05.10
심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
숫자 generator 프로그램  (0) 2006.03.27
뉴 개념의 PC 등장!  (0) 2006.03.10
도전 PC 100만원!  (5) 2006.02.23
geek_stuff/today 2006. 5. 8. 00:00

심심해서 서버 하나를 뚫어봤다.

아는 서버를 뚫어봤다.

신가하게도 잘 들어가진다.

보안상의 문제로 이것저것 세팅을 해놓은줄 알았는데

일부러 열어 놓은것인지 아니면 그냥 생각이 없던것인지는 모르겠으나

하여튼 나는 일이 쉽게 된다고 생각했다.

처음에는 wget으로 파일의 이름을 잘 맞춰서 data 디렉토리에 접근하면 된다고 생각했는데

(어짜피 permission이 707이니깐) 그런데 일이 생각지도 않은 apache부분에서 쉽게 풀려버렸다.

어째서 이 옵션은 기본적으로 enabled되어있는것인데 이걸 생각을 못했을까 하는 생각도 들고

설마 나같은 사람이 있을꺼란 생각을 못했겠지 라는 생각도 들고...

아무튼 이 포스팅은 일단 secret.

[Secret]
Q:내가 해킹한 서버는 어디일까요??
A:자료구조

프로그래밍 과제를 올리는 곳인데...

뚫린다... 오오... 신가하다...

아니... 조교는 이런것도 안막아놓고 뭐했대?

얘기해서 프로그램 안짜고 10점만점 달라고 할까... 보안상 문제되는곳은 막아주겠다고 하면서-ㅋ

하지만.. 프로그래밍 과제도 몇개 안남았다..;;


그럼.. 이 포스팅은 어느정도 날짜가 지나야 공개가 되야하는군...

그렇다면 깔끔하게 7월 1일... 모든 기말고사와 채점이 다 끝난 이후로군... 후후..

[/secret]

'geek_stuff > today' 카테고리의 다른 글

Tistory.com Beta에서의 첫 글  (3) 2006.05.26
1kko.com 블로그의 변천사  (0) 2006.05.21
자료구조 과제 #3  (0) 2006.05.10
자료구조 과제 #2  (0) 2006.05.10
자료구조 과제 #1  (0) 2006.05.10
Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
숫자 generator 프로그램  (0) 2006.03.27
뉴 개념의 PC 등장!  (0) 2006.03.10
도전 PC 100만원!  (5) 2006.02.23
옛날 컴퓨터에 대한 단상.  (3) 2006.02.13
geek_stuff/today 2006. 4. 6. 17:12

Apple.com이 윈도우즈를 지원한다?!

결국엔 이렇게 되는 거였다.

절대로 매킨토시에 윈도우를 깔게 만들 생각을 가질 것 같지 않았던 Apple社가

boot camp라는 툴을 내놓았다.

이 boot camp라는 툴은 매킨토시에 Windows XP를 설치할 수 있게 만들어 주는 툴로서

얼핏 봤을때 자신의 매킨토시 시스템을 스캔해서 윈도우즈용 드라이버를 만들고 그것을

씨디로 구워주는 역할을 하는 듯 싶다.

원문은 여기서: http://www.apple.com/macosx/bootcamp/

의역과 오역이 많습니다. 이해해주세요. 영어가 딸려서;;

점점 더 많은 사람들이 맥을 구입하고 있고 또 사랑하고 있습니다. 애플은 사람들이 맥을 구입하는 것을 더이상 지체할 수 없도록 차기 맥 OS X(Leopard)에 새로운 테크놀러지를 추가할것입니다. 바로 Boot Camp가  Windows XP를 맥에 설치하고 구동할 수있게 해줄 것입니다. 지금 공개 시험판을 다운받으십시오.

품격이 높아집니다
Boot Camp는 당신의 Mac에 있는 데이터를 옮길 필요 없이 Windows XP를 설치할 수 있게 해줍니다. WIndows XP CD는 개인이 직접 소지하고 있어야 합니다. Apple사는 Windows XP를 지원하거나 팔지는 않는다는점을 기억하십시오. Boot Camp는 Windows가 필요로하는 드라이버를 CD로 제작해 줍니다. 더이상 인터넷에서 드라이버 파일을 다운받기위해 이리저리 헤멜 필요가 없습니다.


System Manager
Optional alt. 부팅시 alt키를 누르고 있으면 Windows나 Mac OS를 선택할 수 있습니다.

완벽한 XP를 구동하십시오.
일단 Boot Camp설치가 완료되면 그 이후부터는 단지 옵션(Option)키를 누르고 있으면 Windows나 Mac을 선택할 수 있게됩니다. (오랜 윈도우 유저들은 alt키라고 기억하고 계실겁니다.)
Starting up이 끝나면 당신의 Mac은 완벽히 윈도우를 네이티브 모드로 실행합니다. 맥으로 돌아오시려면 단지 리셋을 하시면 됩니다.


무엇이 필요한가
  • 10GB용량의 하드디스크
  • 인텔기반의 맥
  • 기록 가능한 CD 한장
  • 메뉴얼을 인쇄하기 위한 프린터 (당신은 윈도우을 설치하기전에 내용을 프린트하기 원할것이다. 정말로)
  • 완전 정품 Windows XP, 서비스팩2, Home 또는 Professional (멀티디스크나 업그레이드 또는 미디어 센터 버전은 호환되지 않는다.)

      부트캠프 설치하기
      부트캠프의 공개 베타버전은 당신의 맥에서 윈도우가 곧바로 실행되게 해줄 것입니다.
      Intuitive partitioning.

      Space maker. 세상에서 가장 품위있는 하드디스크 유틸리티를 만나십시오.


      • 첫째로, 당신이 인텔기반의 맥에서 가장 최신버전의 OS X와 펌웨어를 사용하고 있는지 확인해야 합니다. 이것들이 Boot Camp를 사용할 수 있는 기술을 제공합니다. 또한 설치가이드를 프린트하는 것도 현명한 방법입니다.
      • 부트캠프는 윈도우가 맥용으로 만들어진 하드웨어를 인식할 수 있도록 드라이버 파일을 CD에 복사할 것입니다. 이것은 윈도우를 설치하기 전에 해야할 매우 중요한 일입니다.
      • 또한 본 소프트웨어는 맥용 파일을 여기저기로 옮길 필요 없이 윈도우가 설치될 하드디스크 공간을 만들어주는것도 도와줍니다.
      • 다음, 윈도우 설치 디스크를 삽입하십시오. 재시작 후 윈도우 설치 과정을 따르십시오. 단 한가지 신중해야 할 부분은 C: 드라이브를 선택하는 것입니다. 선택이 올바른지 확인하십시오. 그렇지 않으면 당신의 맥에 있는 파일을 뜻하지 않게 모두 지울수 있습니다. 애플 컴퓨터는 마이크로소프트 윈도우를 팔거나 지원하지 않는다는 점을 기억하십시오.
      • 설치 작업이 끝나고 맥이 윈도우로 부팅하면, 이전에 구운 맥킨토시 드라이버 CD가 필요할 것입니다. CD를 삽입하면 자동적으로 드라이버를 설치할 것입니다. 이부분에 대해 도움을 원하시면 설치가이드를 참고하십시오
      • 윈도우를 업데이트하고 보호하는것을 잊지 마십시오.



    • 매킨토시가 없기에 아직 해보지는 않았지만 이게 된다면 이젠...
      ..
      ..
      ..
      ..
      ..
      ..
      ..

      휴우... 이젠 맥을 사는일만남았군..


      덧) 설치메뉴얼을 보고 알았는데 iSight와 AppleRemote, Apple USB Modem은 지원하지 않는단다.
      더불어 맥북 프로의 키보드 백라이팅도...

      그러고보니 생각난건 CD꺼낼때는 어떻게 하지?? 알아봤더니 윈도우에 맥킨토시 드라이버 CD를 설치하기 전까지는 키보드에 있는 Eject버튼이 동작하지 않는다고...;; 큰 문제는 없지만.. 그..그래도;;

      'geek_stuff > today' 카테고리의 다른 글

      Tistory.com Beta에서의 첫 글  (3) 2006.05.26
      1kko.com 블로그의 변천사  (0) 2006.05.21
      자료구조 과제 #3  (0) 2006.05.10
      자료구조 과제 #2  (0) 2006.05.10
      자료구조 과제 #1  (0) 2006.05.10
      심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
      숫자 generator 프로그램  (0) 2006.03.27
      뉴 개념의 PC 등장!  (0) 2006.03.10
      도전 PC 100만원!  (5) 2006.02.23
      옛날 컴퓨터에 대한 단상.  (3) 2006.02.13
      geek_stuff/today 2006. 3. 27. 09:10

      숫자 generator 프로그램

      학교에서 자료구조 수업을 듣는데, 벌써 2번째 과제가 나왔다.

      첫번째 과제는 개강 첫날 수업을 듣자마자 대뜸 내주시던 교수님...

      생각했던대로 쉬웠던것은 아니였다. 그리고 결과는 참담;;;


      이번에는 반드시 제대로 만들리라 하고 다짐했는데,

      이번과제는 radix소트를 하는 프로그램이다.

      아아.. 이런... 냅다 만들어서 테스트를 하려는데 entry를 쉽게쉽게

      만들기 귀찮아서 그냥 프로그램으로 해결...;

      갯수를 지정할수도 있고, random인지, 거꾸로 정렬된것인지, 제대로 정렬된것인지

      모두 고를수있다!

      음하하하!

      (일반인은 다운받아도 별 소용없는거다.)
      [버그있음] 때문에 새로운 버전(checker.exe)을 다운받길 권장한다.
      아~주 아주 허접한 소스 공개한다.

      3/27 추가포스팅: 몇몇 버그가 있어서 소스코드와 함께 다시 올린다.
      변경된 사항은 코멘트가 몇가지 추가된것, 9자리 숫자가 나와야하는데 10자리가 나오는 버그, output을 check하는 프로그램이다.


      (최종버전이길 기대하면서;;)

      'geek_stuff > today' 카테고리의 다른 글

      Tistory.com Beta에서의 첫 글  (3) 2006.05.26
      1kko.com 블로그의 변천사  (0) 2006.05.21
      자료구조 과제 #3  (0) 2006.05.10
      자료구조 과제 #2  (0) 2006.05.10
      자료구조 과제 #1  (0) 2006.05.10
      심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
      Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
      뉴 개념의 PC 등장!  (0) 2006.03.10
      도전 PC 100만원!  (5) 2006.02.23
      옛날 컴퓨터에 대한 단상.  (3) 2006.02.13
      geek_stuff/today 2006. 3. 10. 00:23

      뉴 개념의 PC 등장!

      몇주전부터 주시해오던 microsoft의 origamiproject.com의 내용이
      드디어 공개됬다.

      아직 관련 내용에 대해서 떠들썩한것 같지는 않은데

      왠지 PDA같은 매니아 전용 소유물이 될듯한 느낌이 드나..



      오리가미(종이접기)프로젝트는 MS가 2005년 시애틀에서 주최한

      Windows Hardware Engineering Conference 빌게이츠가

      언급했던것으로 작은사이즈의

      full-spec컴퓨팅이 가능한 mobile device를 만들었으면 좋겠다고

      말한데서 그 힌트를 얻을수 있다.

      'geek_stuff > today' 카테고리의 다른 글

      Tistory.com Beta에서의 첫 글  (3) 2006.05.26
      1kko.com 블로그의 변천사  (0) 2006.05.21
      자료구조 과제 #3  (0) 2006.05.10
      자료구조 과제 #2  (0) 2006.05.10
      자료구조 과제 #1  (0) 2006.05.10
      심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
      Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
      숫자 generator 프로그램  (0) 2006.03.27
      도전 PC 100만원!  (5) 2006.02.23
      옛날 컴퓨터에 대한 단상.  (3) 2006.02.13
      geek_stuff/today 2006. 2. 23. 21:59

      도전 PC 100만원!

      내가 아는 압씨의 부탁으로 도전 PC100만원에 응모!

      라기 보단.. 그냥 해달라고 해서 3시간넘게 걸려 뽑은 견적...


      "">

      ●CPU: Pentium4 631 (3.0Ghz) 182000
      ●메인보드: P5PL2(i945PL) 113000
      ●메모리: 삼성 DDR2 4200 512MB * 2EA 50000
      ●그래픽카드: EverTop 6600 256MB Zalman(PCI-E) 105000
      ●하드디스크: WD Caviar 160GB WD1600JS 71000
      ●FDD: CANDY FDD 3.5" 플로피+카드리더 블랙 25000
      ●ODD: GCC-4522B COMBO 블랙 42000
      ●케이스: Xing X2블랙(파워별도) 21000
      ●파워: Skydigital SKY-350 DUAL12 35000
      ●모니터: AllinxMedia CMV CM-930D 288000
      ●쿨러: CNPS7000-AlCu 29000
      ●가이드: ZM-CS1(LGA775가이드) 4000


      2월 23일 기준 최저가 : 965000원

      이래저래 평균가를 구하면 1000000원이 되지않을까 한다.

      'geek_stuff > today' 카테고리의 다른 글

      Tistory.com Beta에서의 첫 글  (3) 2006.05.26
      1kko.com 블로그의 변천사  (0) 2006.05.21
      자료구조 과제 #3  (0) 2006.05.10
      자료구조 과제 #2  (0) 2006.05.10
      자료구조 과제 #1  (0) 2006.05.10
      심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
      Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
      숫자 generator 프로그램  (0) 2006.03.27
      뉴 개념의 PC 등장!  (0) 2006.03.10
      옛날 컴퓨터에 대한 단상.  (3) 2006.02.13
      geek_stuff/today 2006. 2. 13. 12:49

      옛날 컴퓨터에 대한 단상.

      내가 처음으로 컴퓨터를 다뤄봤던건 한참 예전의 일이다.

      블로그를 돌아다니다가 재밌는걸 발견했다.

      http://01411.net 이란 곳인데, 참... 예전의 기억이 난다.

      내가 할 당시에는 마우스로 클릭해서 메뉴를 들어가는것도 없었는데 ㅎㅎ


      Gons님 블로그에서 퍼왔다.

      1. 512KB 메인메모리를 가진 PC를 사용해 보았나요? ( Y/N )Y
      맨 처음 사용했던 컴퓨터가 512Kb였다. 하지만 컴퓨터 학원에서는 256Kb메모리도 사용해봤었다. 그게 8087이였을꺼다.

      2. 도깨비 한글 카드와 램상주 도깨비 폰트를 사용해 보았나요? ( Y/N )Y
      도깨비 한글카드는 맨처음에는 조합형만 지원하다가 나중엔 완성형도 지원했던걸로 기억이 나는데 정확한건지는 모르겠다.
      한글카드를 ISA슬롯에 꼽아야만 한글을 지원했었다는게 기억이난다. 하지만 나중에는 램상주 프로그램으로 변경이 된듯.

      3. dos = high, umb 의 의미를 압니까? ( Y/N )Y
      보통 도스로 부팅한 경우 도스의 커널이 메인메모리에 상주하기때문에 메모리를 많이 잡아먹는 프로그램일경우 부족해서 실행이 안될때가 있었다. high는 640Kb 윗단에 올리라는 것이고 umb는 512Kb와 640kb사이였던것 같은데 정확한지는...

      4. dos memory를 615KB 이상 잡을수 있습니까? ( Y/N )Y
      himem올리고 나머지는 다 high로 로딩하면 될듯...
      그걸위해 autoexec.bat에서는 LH라는 명령이, config.sys에서는 loadhigh라는 명령이 있던걸로 기억한다.

      5. FOX dbase에서 files=40 이상이 필요합니다란 에러를 보았을때 해결할 수 있습니까? ( Y/N )N
      config.sys에서 files=80으로 수정하면 안될까나?
      fox dbase는 사용해본적이 없기때문에..;

      6. M$-DOS 3.2는 20MB 이상의 HDD를 access할 수 없다는걸 압니까? ( Y/N )Y
      내가 맨처음 사용했던 컴퓨터가 dos3.2였다.

      7. 이야기 5.XX, 아래아한글 1.5*, Implay 2.* 를 써 본적이 있습니까? ( Y/N )Y
      이야기는 3.x에서 5.x까지 금방 업뎃이 되었었고 아래한글은 0.9b부터 사용했었다. Implay는 음악듣는 프로그램이였는데... ims였나.

      8. 도수제(한통화당 무조건 20원)일때 전화를 이용한 통신을 해 본적이 있습니까? ( Y/N )N
      그게 89년도 이전이였으면 N, 이후였으면 Y. 언젠지 모른다. 어렸을때라 전화비는 부모님 부담;; 하지만 외국에서 도수제를 사용은 해봤었다.


      9. 허큘리스를 압니까? ( Y/N )Y
      Hercules그래픽 카드.. hercules모드... 흑백모니터 썼을때 얘기다.

      10. simcga의 용도를 압니까? ( Y/N )Y
      허큘리스 모드에서 cga모드로 시뮬레이션 해줬던 프로그램이였던것 같은데...

      11. EGA 를 사용해 본 적이 있습니까? ( Y/N ) Y
      EGA가 달린 컴퓨터는 사용을 해봤지만 하지만 바로 cga에서 VGA로 넘어온듯

      12. 모뎀기반의 사설비비를 운영해 본적이 있습니까? ( Y/N )Y
      초롱불이였나 그걸로 1:1사설 비비는 운영해봤다-ㅋ 그러나 한달만에 종료;;

      13. 닥터 할로, 보석글 V, pctools 을 사용해 본 적이 있습니까? ( Y/N )Y
      닥터할로는 그림그리는 프로그램이였다. pcx 출력물이 확장자를 가진것이였고 비트맵 기반이였다.
      보석글 V는 워드프로세서였던걸로 기억한다. 하지만 hwp에 밀렸음;
      pctools는 8.0까지 나왔던거 같은데, 파일관리, 시스템관리, 에디터 등등 여러가지 툴을 한파일로 만들어놓은 최고의 프로그램이였다.
      플로피 포멧도 가능했고(format.exe로 포멧이 안됬던것도 pctools는 해줬다), 디스크 to 디스크 복사, hex에디터, 등등이 있었다.


      14. *.ims, *.iss, *.rol 가 무슨 화일을 의미하는지 압니까? ( Y/N )
      음악파일이다. 미디종류 파일이였는데.. implay에서 사용했었고, 아마 옥소리에 있는 플레이어에서도 재생이 가능했던것 같다.

      15. 360KB의 5.25인치 FDD를 사용해 본 적이 있습니까? ( Y/N )Y
      Ibm XT 8088에 달려있던게 360Kb였을꺼다.

      16. 2400bps 모뎀을 사용해 본 적이 있습니까? ( Y/N )Y
      89년도에 처음 코텔인가에 접속해봤음. 그때는 텔렉스가 한창 유행이였는데 ㅎㅎ

      17. 애들립 카드를 사용해 본적이 있습니까? ( Y/N )N
      옥소리가 그걸 대신했다.


      18. 조합형 한글과 완성형 한글의 차이를 압니까? ( Y/N )Y
      조합형은 자음과 모음이 따로따로 있어서 하나씩 조합하는 거였다. 그래서 쀍 같은 글자도 잘 써지는 반면 글씨체가 조화롭지 못해서
      삐뚤빼뚤 했다. 완성형은 글자하나하나를 도장처럼 파놓아서 하나씩 가지고 있다가, 찍어내는 거였지만 쀍같은 글자가 없으면 □으로 표시됬었다. 하지만 글씨체는 조화로웠음.

      19. 조합형 한글을 써 본 적이 있습니까? ( Y/N )Y
      써봤다. 하지만 언제부턴가 완성형이 대세더라.

      20. SX 와 DX 의 차이를 압니까? ( Y/N )Y
      386SX, 386DX, 486SX, 486DX, 486DX2, 486DX3, 486DX4, 586
      이렇게 나왔었는데, SX와 DX는 코프로세서의 있고 없고의 차이 정도? 코프로세서가 아마 floating연산을 담당하는 보조연산장치였는데, 그때는 코프로세서가 수율이 낮아서 disable시킨것이 sx, enable 시킨것이 dx였다.
      dx2와 dx4의 차이는 잘 기억이 안나고, 다만 dx3는 인텔 내부에서만 사용했던 기종이라고 알고있다.

      21. 코프로세서란 말을 압니까? ( Y/N )Y
      방금 얘기했다.

      22. 1배속 cd-rom을 써 본적이 있습니까? ( Y/N ) Y
      아~ 그때는 cdrom굽는 장치가 500만원이였다.

      23. VESA slot의 용도를 압니까? ( Y/N )Y
      그래픽 전용 슬롯이다. ISA슬롯에 VESA슬롯이 있는 보드가 많았었다. 486시대였을꺼다.
      그러다 586으로 넘어오면서 PCI가 생기더니 그담엔 AGP 그담엔 PCI express.

      24. VESA 그래픽 카드를 써본적이 있습니까? ( Y/N )Y
      286컴퓨터를 사용했을때였다.

      25. ANSI를 사용해본 적이 있다. ( Y/N )Y
      한동안 pc통신의 각 동호회로 입장할때 나오는 화려한 컬러대문을 만드려고 했었는데 한참하다가 관둠.
      최근의 전차남을 봤는데 ansi가 생각나드라...

      26. 파일을 찾기위해 "아키 서버"를 사용해본 적이 있다. ( Y/N )Y
      98년도에 쫌 사용했었다.

      27. Windows 3.1에서 Winsock 세팅을 할 줄 안다. ( Y/N )N
      3.1에서는 그냥 노벨을 사용만 했었지 세팅은 안해봐서.

      28. 동서게임채널 BBS 우수 이용자에게 보내준 SEK 무료 티켓을 받은적이 있다. ( Y/N )N
      동서 게임 몇개 샀었는데...

      29. 케텔 회원이었다.( Y/N )Y
      케텔다음에 하이텔로 넘어가더라.

      30. 코텔 회원이었다.( Y/N )Y
      코텔이였다가 케텔로 넘어갔었다.

      31. 한국전력공사 비비에스 회원이었다. ( Y/N )N
      그런게 있었구나;;

      32. WinG를 설치해본 적이 있다. ( Y/N )N
      뭐지 이건?

      33. E-IDE HDD 사용을 위해 IO 카드를 산 적이 있다. ( Y/N )N
      super I/O카드가 내 컴퓨터엔 붙어있었던걸로 기억한다.

      34. 25핀 시리얼 마우스를 사용해 본적이 있다. ( Y/N )Y
      이건 IBM XT사용할때.

      35. 패러럴 포트로 파일을 전송해 본 적이 있다. ( Y/N ) Y
      그 케이블 아직도 갖고있다.

      36. 9핀 도트 프린터를 사용해 본 적이 있다. ( Y/N )N
      내가 사용했던건 18핀짜리 EPSON이였다.

      37. arj a -r -va a:arabogi.arj *.* 에서 -va의 의미를 아나요? ( Y/N )N
      기억이 날듯 말듯...
      압축정도던지 아니면 확장자가 exe인걸로 만들라는것중에 하나같은데...

      38. 삼국지 1, 수호지1, 대항해시대1 을 해본적이 있나요? ( Y/N )Y
      몇번 해보다가 그냥 관둠. 워낙 게임은 별로 안좋아해서...

      39. 게임을 하기위해 디스켓을 깔아 끼워 본 적이 있습니까? ( Y/N )Y
      Insert disk 2라고 나옴 보통..

      40. copy con 의 의미를 압니까? ( Y/N ) Y
      Ctrl+F6을 누르고 엔터치면 빠져나옴. 파일을 만들때 사용한다.

      41. mdir을 사용해 본적이 있습니까? ( Y/N ) Y
      mdir III까지 사용해봤음.

      42. 밤에 몰래 통신하다 모뎀 통신 연결음 때문에 고생한 적이 있나요? ( Y/N )Y
      2400bps시절에는 그랬다.

      43. DOS 시절 과거 게임 중에 생각나는 게임을 말씀해 주세요.
      3d테트리스, 맥스, 페르시아 왕자, 보블보블, 금광을 찾아서, 남북전쟁, 알카로이드, 약간의 야겜정도?ㅋㅋ

      44. 자신이 사용한 PC CPU 사양을 HDD 용량과 함께 차례대로 말씀해 주세요.
      1. Intel 8088 processor, 640Kb memory, 20Mb HDD, 5.25" Floppy
      2. Intel 80286 processor, 640Kb main memory, 1Mb extened memory, 40Mb HDD, 5.25" Floppy.
      3. Intel 80486 processor, 16Mb mem, 412Mb HDD, 3.5" floppy, 5.25" Floppy
      4. Cyrix686 processor(233Mhz), 64Mb mem, 2.1Gb HDD
      5. AMD K2-II processor(475Mhz) , 128Mb mem, 20Gb HDD
      6. Intel Pentium3 733Mhz, 256Mb mem, 40Gb HDD
      7. Intel Pentium4 1Ghz, 512Mb mem, 80Gb HDD
      8. Intel Pentium4 2.8c, 1G mem, 120Gb HDD
      9. Intel Pentium4 3.0, 1G mem, (Raid0 80Gb+80Gb) HDD


      아... 참 많이 바꿨구나;;


      45. 바톤을 이었으면 싶은 사람을 지정해 주세요.
      다음으로 하실분??

      'geek_stuff > today' 카테고리의 다른 글

      Tistory.com Beta에서의 첫 글  (3) 2006.05.26
      1kko.com 블로그의 변천사  (0) 2006.05.21
      자료구조 과제 #3  (0) 2006.05.10
      자료구조 과제 #2  (0) 2006.05.10
      자료구조 과제 #1  (0) 2006.05.10
      심심해서 서버 하나를 뚫어봤다.  (0) 2006.05.08
      Apple.com이 윈도우즈를 지원한다?!  (2) 2006.04.06
      숫자 generator 프로그램  (0) 2006.03.27
      뉴 개념의 PC 등장!  (0) 2006.03.10
      도전 PC 100만원!  (5) 2006.02.23