« Previous : 1 : 2 : 3 : 4 : 5 : ... 43 : Next »

미래 이야기

현제 환경은 석유,석탄이라는 한정된 자원을 사용하게 된다.
이에 따른 문제는 이산화탄소 및 안좋은(?) 물질을 발생하게 된다.

미래에는 이런 문제를 해결하기 위해서 대체 자원을 사용해야된다.
디스커버리 채널에서잠깐 보았던 여러가지 기술들을 기억하고 있는 것만 간단히 소개 시켜보면

1. 핵융합 발전
핵융합발전이라는건 기존에 사용하고 있는 핵분열발전형이 아닌 그러니깐 쉽게 말하면
핵분열이라는건 원소이 충돌하면서 분열을 일으키는 것이다.
이것이 지금 사용하고 잇는 핵분열 방식의 핵발전소이다.
하지만 이것은 핵 폐기물이라는 문제점을 가지고 있다.
그래서 핵융합발전이라고 하는 것을 고려하고 있다.
핵융합 발전의 대표적인 예로는 태양을 말할수 있다.
핵융합 발전의 문제점은 발생되는 전력보다 사용하는 전력이 많다.
이를 해결하기 위해 많은 과학자들이 노력을 하고 있다.
빨라야 2040년쯤이면 완성된다고 방송하고 있었다.
기존의 핵분열발전형보다는 적은폐기물이 발생된다고 한다.

2. 태양열 전지
태양빛==태양열을 이용한 방식인데 태양열을 집중시켜 그것을 에너지로 변환시켜주는 것이다.
이에 따른 문제점은 태양이 없을때 즉, 밤일 경우에는 문제가 생긴다.
이에 따른 문제 해결점으로는 태양이 있을때 많은 에너지를 저장해둘수 있는 충전기(?)를 만드는 것이다.

3. 풍력발전
풍력발전은 태양에너지만큼 풍부한 에너지이지만 사용하기에는 커다란 선풍기 같은것을 설치 해야된다는 것이고, 그만큼의 공간이 필요하다는 점이다. 그리고 작은량의 애너지를 가져 올수 있다는 것이고, 태양열전지와 마찬가지로 환경오염이 전혀 없다는 것이다.
그리고 문제점은 도시에서는 적합하지 않은 상태이다.
이유는 도시에서는 건물에 의해 바람이 막혀 있기때문이다.
그에 따른 해결방안으로는 건물위에 올리는 방법을 생각하고 있는데 이것 또한 문제점이다.
건물위의 바람을 해결하기 위해서는 건물옥상의 개선이 필요하다는 것이고 건물자체의 충격으로 인해 건물이 붕괴될수 이다는 점과 소음문제이다.
이에 따른 해결방안으로 자석을 이용해 회전하는 것을 공중으로 띄우는 것이다.
이를 쉽게 생각하면 자기 부상열차라고 생각하면된다. 같은 극성을 가진 자성물질은 서로 밀어낸다는 것이다.

4. 기존 사용하고 있는 석탄 석유 발전소에서 배출되는 이산화탄소들을 줄이는 방법
이산화탄소와 촉매에 통과 시켜 촉매와 이산화탄소를 묶고 그것을 저장하는 방법이다.
이렇게 하면 이산화탄소량은 줄어 들을수는 있지만 그에 따른 문제점은 저장공간이다.
또한 이를 해결하기 위해 가스자원을 채취한 곳에 다시 매장하는 방법을 택하고 있다.
가스 자원을 채취한곳이라는 것은 그공간은 밀패된 공간이라는 것을 의미한다.
그래서 그곳에 이산화탄소를 다시 넣는 작업을 하게 된다.
하지만 이산화탄소를 촉매에 통과 시킬때 100% 묶을수는 없기때문에 오염도는 기존보다는 크게 떨어지지만 여전이 환경문제를 낳을수 있다는 것이다.

위의 4가지 방법은 좋은 방향이라고 생각한다 하지만 이를 안고 있는 문제점을 해결하지 못한다면, 활용할수 없는 방안들이 되어 버린다. 많은 과학자들이 환경 문제에 대해서 고민하고 생각하고 낸 결론들이 물거품이 되어 버릴수도 있다는 것이다.

개인적으로 태양전지도 좋고 풍력발전도 좋다.
핵융합과 탄소줄이는 방법으로는 위험도도 따르게 되기에 좋지 못하다고 생각한다.
핵융합의 파격적인 에너지 공급할수 있는 반면에 리스크가 너무나도 크기 때문이다.

Posted by rCan

2010/02/04 12:51 2010/02/04 12:51
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/594

오랜만에 블로그에 글을 쓰고 있습니다.

 정말 너무나도 오랜만에 마치 지나가는 다른 사람의 블로그인냥 보기만 했던 저의 쓸쓸한 블로그에 오랜만에 펜을 잡았습니다.

 장마철이라 그런지 바로 전에도 비가 내리지 않고 있었는데 무더운 기운을 모두 씻겨 내려줄거 같은 굵은 빗방울들이 내리기 시작했네요....

 참 지난 시간동안 한것 없이 바쁜하루를 살고 있지요.
 매일 보고 있는 구직 사이트들 가고 싶은 회사는 프로그램개발업체입니다만 연락오는 회사들은 매니지먼트, TM마케터등 구직사이트에 이력서를 보고 전화했다고 하는 어이 없는 전화들로 주로 이루고 있습니다. 뭐 그냥 무작위로 뽑아서 전화한것들이겠지요.
 취업난 이건 저에게는 다른 나라 이야기라고 생각했던 때도 있었습니다.  뭐 이런저런 어린생각으로 인해서 지금도 생각이 어른스러워 지진 않았습니다.
 참 뭐랄까 세상은 제가 생각했던 것 이상만큼이나 어려운 세상같습니다. 자기가 하고 싶다는 생각과 노력만을 가지고는 나아갈수 없는 세상같습니다.

 뭐 그런 마음에 조금 가볍고 밝아보이고 싶어서 스킨도 바꾸어 보았습니다 ~_~

Posted by rCan

2009/07/17 17:16 2009/07/17 17:16
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/588

[2008.12.29] Java 간단한 클래스 제작

import java.io.*;

public class Exam_02{
 public static void main(String[] arg) throws NumberFormatException, IOException{
  int num=0;
  String str=null;
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
 
  System.out.println("관리할 컴퓨터의 개수를 입력하여주세요 : ");
 
  num=Integer.parseInt(in.readLine());
   
  ComputerManager cm = new ComputerManager(num);
 
  while(true){
   System.out.print("0.프로그램종료\n1.컴퓨터정보입력\n2.컴퓨터정보보기(선택)\n3.모든컴퓨터정보보기\n입력 : ");
   num=Integer.parseInt(in.readLine());
   
   switch(num){
   case 0:
    System.out.print("프로그램을 종료하겠습니다");
    return;
   case 1:
    System.out.print("컴퓨터 번호를 입력하세요 : ");
    num=Integer.parseInt(in.readLine());
    System.out.print("컴퓨터 이름을 입력하세요 : ");
    str=in.readLine();    
    cm.ComputerInputData(num,str);
    break;    
   case 2:
    System.out.print("조회하실 컴퓨터 번호를 입력해주세요 :");
    num=Integer.parseInt(in.readLine());
    cm.ComputerView(num);
    break;
   case 3:
    cm.ComputerView();
    break;
   default: System.out.println("해당하는 메뉴는 없습니다");
   
   }
  } 
 }
}
class ComputerManager{
 private int maxNum,numCnt;
 private Computer com[];
 
 public ComputerManager(int num) {
  // TODO Auto-generated constructor stub
  this.numCnt=0;
  this.maxNum=num;
 
  com=new Computer[num];
 
  for(int i=0;i<num;i++)
   com[i]= new Computer();
 
 }
 
 
 public void ComputerInputData(int num, String str) {
  com[numCnt].setIdName(str);
  com[numCnt].setIdNum(num);  
 }

 public void ComputerView(){
  for(int i=0;i<maxNum;i++)
   System.out.format("컴퓨터 번호 : %d\n컴퓨터 이름 : %s\n",com[i].getIdNum(),com[i].getIdName());
 }
 public void ComputerView(int idNum){
  for(int i=0;i<maxNum;i++)
   if(idNum==com[i].getIdNum()){
    System.out.format("컴퓨터 번호 : %d\n컴퓨터 이름 : %s\n",com[i].getIdNum(),com[i].getIdName());
    return;
   }
  System.out.println("해당하는 컴퓨터 번호를 찾을수 없습니다 ");
 
 }
 
 
}
class Computer{
 private int idNum;
 private String idName;
 
 public Computer(){
  idNum=0;
  idName="Noname";
 }
 public String getIdName() {
  return idName;
 }
 public int getIdNum() {
  return idNum;
 }
 public void setIdName(String idName) {
  this.idName = idName;
 }
 public void setIdNum(int idNum) {
  this.idNum = idNum;
 }
}

Posted by rCan

2008/12/28 19:50 2008/12/28 19:50
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/587

[Java]

import java.io.*;

public class Exam_01 {
 public static void main(String[] args) throws IOException {
  Gugudan gu = new Gugudan(); // 구구단의 인스턴스 생성(객채생성)
  BufferedReader in =
   new BufferedReader(new InputStreamReader(System.in)); // 버퍼리더를 사용하여 키보드로 입력을 받아들임.
 
  System.out.print("숫자를 입력하시면 해당하는 구구단을 보여드립니다\n0을 입력하면 프로그래밍 종료됩니다\n");
 
  while(true){
   System.out.print("입력 : ");
   if(gu.setNum(Integer.parseInt(in.readLine()))){
    // in.readLine()버퍼에서의 내용을 받아들임
    // 받아들인것을 Integer 변환
    // gu.setNum 맴버메소드 실행 하는데 위에서 Integer 변환한값을 넘김
    // 리턴 타입은 boolean으로 사용했기에 바로 if문에다가 사용해줌..
    if(gu.getNum()!=0)
     // 구구단객체에 있는 getNum메소드 실행 return 값이 0이 아닐경우 구구단을 보여준다.
     gu.showRun();
   
    else
     // 그렇지 않을 경우 break while()문을 빠져 나감.
     break;
   }
   else
    // gu.setNum()에서 False를 받아올경우 즉 0, 2~9의 숫자이외의 값이 들어갔을경우 출력할 내용
    System.out.print("숫자를 잘못 입력하셧습니다.\n2~9까지의 숫자를 입력해주십시오.\n");
  }
 
  System.out.print("종료합니다!!"); // 그냥 프로그램 종료를 나타내려고 찍은 프린트.
 }
 
}
class Gugudan{
 // 구구단 클래스
 private int runNum;
 // runNum이라는 인티저형 변수를 private로 선언함. get과 set으로만 runNum에 접근가능하게 하기 위해서

 boolean setNum(int setNum){
  // setNum메소드 int setNum 받아와서 처리
  if((setNum>1&&setNum<10)||setNum==0)
   // setNum이 2~9 그리고 0일경우에만 setNum멤버변수에 값을 넣어준다.
   this.runNum=setNum;
  else
   // 그렇지 않을경우 false를 return 함
   return false;
 
  // if문에서 참일경우 true를 리턴해도 되겠지만
  // else 문에서 false를 리턴시키면서 끝나기때문에 그냥 함수의 끝에 부분에 true를 리턴시키게 해둠.  
  return true;
 
 }
 int getNum(){
  // 단순히 숫자를 가져올때 사용함 이유는 위에 설명
  return runNum;
 }
 
 void showRun(){
  // 구구단을 보여주기 위해서 돌아갈 부분
  for(int i=1;i<10;i++){
   System.out.format("%d x %d = %d\n",runNum,i,runNum*i);
  }
 }
}

책보고 내꺼 소스 보면서 참고해서 프로그램 월요일까지 짜와 내용은.

0번 프로그램 종료
1번 컴퓨터 정보입력
2번 선택한 번호의 컴퓨터보기
3번 입력된 컴퓨터들 전부 보기

클래스 사용해서
0번은 프로그램 그냥 종료시키고
1번은 컴퓨터이름만 받아두고 ID라던지 연번이 있으면 관리하기 편하겟지..
2번은 연번같은거 입력해서 해당하는 컴퓨터들 볼수 있게
3번은 모든 컴퓨터들 정보 프린트하기

Posted by rCan

2008/12/28 12:42 2008/12/28 12:42
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/586

[ATMEGA128] 레포트


#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/signal.h>

volatile unsigned int TIC_TIME;

void init_port(void){
        DDRF=0xFF;
        PORTF=0x00;
}
void init_timer1(void){
        TCNT1H=0;
        TCNT1L=0;
        TCCR1A=0x00;
        TCCR1B=0x0C;
        TCCR1C=0x00;

        OCR1AH=0xF4;
        OCR1AL=0x24;
        TIMSK=TIMSK|(1<<OCIE1A);
}

void init_timer(void){
        TIFR=0x00;
        init_timer1();
}
void init(void){
        init_port();
        init_timer();
}

SIGNAL(SIG_OUTPUT_COMPARE1A){
        TIC_TIME++;
}
int main(void){
        init();
        sei();
        while(1){
                if(TIC_TIME>99){
                        TIC_TIME=0;
                        PORTF=0x00;
                }
                else
                        PORTF=(TIC_TIME/10)<<4||TIC_TIME%10;
        }

        return 0;
}


Posted by rCan

2008/12/09 17:25 2008/12/09 17:25
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/585

[ATMEGA128] 시험관련


/*
시계 FND 0부터 59초
60초가 되면 LED1개 켜지기
OVERFLOW0 사용
08.12.10 수정
*/
#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/signal.h>


volatile unsigned int TIC_TIME;
volatile unsigned int TIME;
volatile unsigned int min;
volatile unsigned int sec;

void init_port(void){
        DDRC=0xFF;
        DDRD=0xFF;

        PORTC=0xFF;
        PORTD=0x00;
}
void init_timer0(void){
        TCCR0=0x04;
        TCNT0=6;
        TIMSK=TIMSK|(1<<TOIE0);
}
void init_timer(void){
        TIFR=0x00;
        init_timer0();
}
void init(void){
        init_port();
        init_timer();
}

SIGNAL(SIG_OVERFLOW0){
        TCNT0=6;
        TIC_TIME++;
}

int main(void){

        init();
        sei();
        while(1){
                if(TIC_TIME>1000){
                        TIC_TIME=0;
                        TIME++;
                        if(TIME==540){
                                PORTC=0xFF;
                                TIME=0;
                        }
                }
                min=TIME/60;
                sec=TIME%60;


                PORTC=0xFF<<min;
                PORTD=(sec/10)<<4||(sec%10);
        }

        return 0;
}

Posted by rCan

2008/12/09 16:39 2008/12/09 16:39
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/584

[게임제작] 기말고사

1. chapter 24
- WIPI IO 패키지에 포함된 파일클래스의 종류
- 파일 클래스의 3가지 접근 권한
- 파일클래스의 4가지 모드
- 스트림 클래스

2. chapter 22
- 적캐릭터와의 충돌체크 부분 소스 분석

3.모바일 게임에서의 "컨버팅(Converting)"의 의미?

4. Edit Plus의 환경설정 방법 (jar 파일 만드는 방법)

5. 통신 3사의 게임 상용화 절차를 간략하게 요약정리

Posted by rCan

2008/12/09 15:21 2008/12/09 15:21
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/583

끄응.. 13.....

끄응..

!!요거 클릭!!

Posted by rCan

2008/11/10 09:39 2008/11/10 09:39
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/582

 

 

 

 

 

 

 

 

 

Posted by rCan

2008/10/23 22:46 2008/10/23 22:46
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/581

[ATMEGA128] 키스캔 + fun

/*
0번핀 500ms 토글
1번 200ms 토글
2번핀입력일경우 나머지 6개 LED 로테이트 200ms
3번 모두 오프
4번 모두 온
5번 3개 온 3개 오프
6번 2개씩 led  프래쉬
7번 징검다리 온오프 온오프
*/
#include<stdio.h>
#include<avr/interrupt.h>
#include<avr/signal.h>

#define CPU_CLOCK 16000000
#define TICKS_PER_SEC 1000
#define Prescaler 64
#define OVERFLOW 256

volatile unsigned int cnt;
volatile unsigned int tic_time;
volatile unsigned int tic_time2;
volatile unsigned int oc1cnt;
volatile unsigned int oc3cnt;
volatile unsigned int FUN_MODE;

volatile unsigned char KEY_STATE;
volatile unsigned char CURRENT_KEY_STATE;
volatile unsigned char LAST_KEY_STATE;

void init_port(void);
void init_timer(void);
void init_timer0(void);
void init_timer1(void);
void init_timer3(void);
void fun_run(void);

int main(void){
        CURRENT_KEY_STATE=0xFF;
        LAST_KEY_STATE=0xFF;

        init_port();
        init_timer();
        init_timer0();
        init_timer1();
        init_timer3();
        sei();

        while(1){
                if(FUN_MODE!=0)
                        if(tic_time2>=200){ tic_time2=0; fun_run(); }

                CURRENT_KEY_STATE=PINF; // SW에 값을 CURRENT_KEY_STATE에 넣어줌
                if(CURRENT_KEY_STATE!=0xFF){
                // CURRENT_KEY_STATE가 0xFF가 아닌 경우(어느 키라도 눌렸을경우)
                        if(CURRENT_KEY_STATE!=LAST_KEY_STATE){
                        // 지금 누른키와 눌린키가 아닐 경우 (키가 변경된 경우)
                                tic_time=0;
                                KEY_STATE=0;
                        }
                        if(tic_time>=50){
                                // 키를 누르고 50ms가 지났으면 (계속 눌려잇는 경우)
                                if(KEY_STATE==0){
                                        KEY_STATE=1;
                                        if(CURRENT_KEY_STATE==0xFE) sbi(DDRB,5); // oc1a를 출력으로 설정
                                        if(CURRENT_KEY_STATE==0xFD) sbi(DDRE,3); // oc3a를 출력으로 설정
                                        if(CURRENT_KEY_STATE==0xFB) FUN_MODE=1;
                                        if(CURRENT_KEY_STATE==0xF7) FUN_MODE=2;
                                        if(CURRENT_KEY_STATE==0xEF) FUN_MODE=3;
                                        if(CURRENT_KEY_STATE==0xDF) FUN_MODE=4;
                                        if(CURRENT_KEY_STATE==0xBF) FUN_MODE=5;
                                        if(CURRENT_KEY_STATE==0x7F) FUN_MODE=6;
                                }
                        }
                }
                else KEY_STATE=0; // PINA가 0xFF인경우는 KEY_STATE를 0으로 초기화 시켜준다.
                LAST_KEY_STATE=CURRENT_KEY_STATE; // 현재 눌린키를 눌려진 키로 넣어줌
                if(tic_time>=1000){

                // 키를 누르지 않을 경우에 생기는 문제점을 해결하기 위해서
                // tic_time은 int형 변수이기에 넘어가게 되면 오버 플로우가 발생될가능성도 있다.
                // 그것뿐만 아니라 예를 들어 키보드 방향키 위를 생각해보면
                // 위를 한번 꾸우우우욱 누른경우랑
                // 위를 한번  꾹 누른 경우랑 같게 된다는것이다.
                        tic_time=0;
                        LAST_KEY_STATE=0xFF;
                }

        }
        return 0;
}

void init_port(void){
        DDRF=0x00;
        DDRC=0xFF;
        PORTC=0xFF;
}
void init_timer(void){
        // 타이머에 관한 전반적인 공통사항을 기술
        TIFR=0x00;
}
void init_timer0(void){
        // 타이머0에 대한 설정
        TCCR0=0x04;
        TCNT0=OVERFLOW - (CPU_CLOCK / TICKS_PER_SEC / Prescaler);
        TIMSK=0x01;
}
void init_timer1(void){
        // 타이머1에 대한 설정
        TCNT1H=0x00;
        TCNT1L=0x00;

        TCCR1A=0x40;
        TCCR1B=0x0C;
        TCCR1C=0x00;

        OCR1AH=0x7A;
        OCR1AL=0x12;
        TIMSK=TIMSK|(1<OCIE1A);
}
void init_timer3(void){
        // 타이머3에 대한 설정
        TCNT3H=0x00;
        TCNT3L=0x00;

        TCCR3A=0x40;
        TCCR3B=0x0C;
        TCCR3C=0x00;

        OCR3AH=0x18;
        OCR3AL=0x6A;
        TIMSK=ETIMSK|(1<OCIE3A);
}
SIGNAL(SIG_OVERFLOW0){
        // 오버 플로우 인터럽트 발생시 (timer0에서 발생되는..)
        tic_time++;
        tic_time2++;
        TCNT0 = OVERFLOW - (CPU_CLOCK / TICKS_PER_SEC / Prescaler);
}
SIGNAL(SIG_OUTPUT_COMPARE1A){

}
SIGNAL(SIG_OUTPUT_COMPARE3A){

}

void fun_run(void){
        switch(FUN_MODE){
                case 1:
                break; // 6개 로테이트
                case 2: PORTC=0x3F; break; // 6개 OFF 해결
                case 3: PORTC=0x00; break; // 6개 on 해결
                case 4: PORTC=0x38; break; // 6개 3on 3off 해결
                case 5: PORTC=0xFF<<cnt);
                break; // 2개씩 반복
                case 6: PORTC=0xAA; break; // onoffonoff 해결
        }
}

Posted by rCan

2008/10/15 16:55 2008/10/15 16:55
Response
No Trackback , No Comment
RSS :
http://rcan.net/rss/response/580

« Previous : 1 : 2 : 3 : 4 : 5 : ... 43 : Next »

블로그 이미지

- rCan

Calendar

«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Notices

  1. About Me

Site Stats

Total hits:
82825
Today:
6
Yesterday:
63