안녕하세요?

이공계 계열에서 이것도 저것도 아닌 사람들을 위한 동영상을 준비 해보았습니다.

모두 공감하실겁니다.

우선, 컴퓨터 개발자가 컴퓨터를 공부해야 되는지?

영어 공부를 더 충실히 해야 되는지?

고민하지 마시고 아래 링크를 들어가서 확인 하십시오^^

http://tv.devmento.co.kr/video/dntvDetail.do?videoId=583&listReturnURL=searchColumn%3Dtags%26searchValue%3D%25EA%25B0%259C%25EB%25B0%259C%25EC%259E%2590

제가 아는 선배로 부터 받은

개발자로서 살아 남는 방법이 담긴 동영상입니다.

android 종료하기 위해서는 2가지 방법이 있다.

Activity창을 나가는 방법으로써는

1.
  android.os.Process.killProcess(android.os.Process.myPid());
2.
  System.exit(0);

이렇게 있고,

실행중인 Activity창을 다끌려고 하면
moveTaskToBack(true);
   android.os.Process.killProcess(android.os.Process.myPid());

이렇게 하면 된다.


------소스 코드------
@Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { // 백 버튼
  Toast.makeText(this, "Back키를 누르셨군요, Toast.LENGTH_SHORT).show();
        } else if (event.getKeyCode() == KeyEvent.KEYCODE_SEARCH) { // 검색버튼
  Toast.makeText(this, "검색키를 누르셨군요, Toast.LENGTH_SHORT).show();
        }
        return true;
    }

또는

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
     // TODO Auto-generated method stub

     switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
  Toast.makeText(this, "Back키를 누르셨군요, Toast.LENGTH_SHORT).show();
   break;
}

'IT 공부 > 안드로이드' 카테고리의 다른 글

안드로이드 예제  (2) 2012.03.04
android 종료  (1) 2012.03.03
android Thread Counting  (2) 2012.03.03
android 타이틀바 없애기  (0) 2012.03.03
Parser  (1) 2012.03.03


스레드를 이용해서 카운트 하는 작업입니다.

이소스는 5에서 카운트 되며 5에서 0.5초 텀을 준다.


-------------소스코드-------------

tv = (TextView) findViewById(R.id.num);
  thread = new Thread(new Runnable() {
   public void run() {

    while (true) {
     
     handler.post(new Runnable() {
      public void run() {
       tv.setText("" + NumCount);
      }
     });
     
     try {
      if(NumCount==5)
       Thread.sleep(500);
      else
      Thread.sleep(1000);
      NumCount++;

     } catch (InterruptedException e) {
      e.printStackTrace();
     }
     if (NumCount == 6){
      break;      
     }
     
    }
   }

  });
  thread.start();

'IT 공부 > 안드로이드' 카테고리의 다른 글

android 종료  (1) 2012.03.03
android back key Event  (2) 2012.03.03
android 타이틀바 없애기  (0) 2012.03.03
Parser  (1) 2012.03.03
이클립스 느낌표 문제  (2) 2012.02.26

매니페스트에
----------타이틀바 없애기----------
<activity
            android:name="NAMEActivity"
            android:label="@string/app_name"        
            android:theme="@android:style/Theme.NoTitleBar" >

----------풀스크린----------
<activity
            android:name="NAMEActivity"
            android:label="@string/app_name"        
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

생성할때
requestWindowFeature(Window.FEATURE_NO_TITLE);
추가

'IT 공부 > 안드로이드' 카테고리의 다른 글

android back key Event  (2) 2012.03.03
android Thread Counting  (2) 2012.03.03
Parser  (1) 2012.03.03
이클립스 느낌표 문제  (2) 2012.02.26
JSON을 활용한 검색기  (2) 2012.02.25
보통 안드로이드 에서는 Xmlpullparser 를 이용해서 웹페이지의 내용을 파싱 해오는 게 가장 효육적이라고 한다.
하지만, 그 웹페이지에서 RSS를 지원해야 쉽게 이용이 가능하다.
RSS를 지원하지 않는다면 Xmlpullparser 를 이용해서 파싱을 해 오는 것은 아무래도 힘들어 보인다.

이에 RSS를 지원하지 않는 사이트를 파싱해올 수 있는 DOM 이나 Jericho를 사용할 수 있는데,
보통 Jericho를 많이 이용하는것 같다.

위의 소스를 이용하여 파싱해 올 수 있지만, jericho.jar 파일을 import 시켜서 사용해야 하며,
jericho는 원래 한글을 지원하지 않지만,
java에서 한글을 지원하기 때문에 소스를 간단히 수정해 준다면, 이를 이용 가능하다.

source = new Source(new URL(sourceUrlString));

 부분을

 URL sUrl= new URL(sourceUrlString);
 InputStream is = sUrl.openStream(); 
 Source source=new Source(new InputStreamReader(is,"euc-kr"));

물론 "euc-kr" 부분은 사이트의 "charset" 에 맞추어 변경해 주어야 한다. ex> UTF-8 KSC5601..... etc


그렇다면 jericho.jar 파일을 임포트 시키는 방식은 어떠할까?

보통 안드로이드 개발로는 Eclipse를 사용한다. Eclipse 에 Libraries 를 등록하는 절차에 대해 설명한다면,

--------------------------------------------------------------------------------------------
먼저 Project에 라이브러리를 import시킨다.

즉, Project -> import -> General -> File System -> jar파일등록하면 Project에 해당 Library가 추가된다.

 

다음으로는 해당 Library를 Project에서 사용할 수 있도록 설정을 해주어야 한다.

Project선택 후

Properties(Alt + Enter) -> Java Build Path -> Libraries Tab -> Add JARs -> JAR파일 선택

 

 

또는 import 시키지 않고 외부에서 Library를 가져올 수 도 있다.

Project선택 후

Properties(Alt + Enter) -> Java Build Path -> Libraries Tab -> Add External JARs -> JAR파일 선택

 

 

 

*. 추가 확인 사항

Jericho HTML Parser를 설치한 후에 java 소스 상에서 아래와 같이 사용할 경우.

Source source = null;

source = new Source(new URL(sourceUrlString));

Source Import시 두가지 중 import net.htmlparser.jericho.Source; 를 설정해 주어야 한다

---------------------- 출처 : http://dodo4989.tistory.com/106 ----------------------------------


------------------------------------------소스코드-------------------------------------------



 String yourUrl =  "http://www.naver.com/";

  tv = (TextView) findViewById(R.id.tv1);
   tv.setText(getHtmltoText(yourUrl));




public String getHtmltoText(String sourceUrlString) {
  Source source = null;
  String content = null;

  try {
   // HTML을 읽을 URL
   URL sUrl= new URL(sourceUrlString);
    InputStream is = sUrl.openStream();
   source=new Source(new InputStreamReader(is,"UTF-8"));

   

   // 처음부터 끝까지 순차적으로 구문 분석.
   source.fullSequentialParse();

   // HTML MarkUp에서 Text Contents만 가져와서 String으로 변환.
   content = source.getTextExtractor().toString();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return content;
 }

'IT 공부 > 안드로이드' 카테고리의 다른 글

android Thread Counting  (2) 2012.03.03
android 타이틀바 없애기  (0) 2012.03.03
이클립스 느낌표 문제  (2) 2012.02.26
JSON을 활용한 검색기  (2) 2012.02.25
XML을 활용한 RSS리더기  (1) 2012.02.25

간단히 말해서, SRTF는

우선순위로 들어온것을 처리하는 것을 말한다.

<<소스코드>>


////process.java
public class process {
 
 public static void main(String[] args) {
  new Scheduling();
 }
}



//STRF.java
public class STRF {
 private int number;
 private int arrive_time;
 private int wait_time;
 private int burst_time;
 
 public STRF(int number,int arrive,int brust){
  this.number=number;
  this.arrive_time=arrive;
  this.burst_time=brust;
  this.wait_time=0;
 }

 public void addwaittime(){
  wait_time++;
 }
 public void deletetime(){
  burst_time--;
 }
  
 public int getNumber() {
  return number;
 }
 public void setNumber(int number) {
  this.number = number;
 }
 public int getArrivalTime() {
  return arrive_time;
 }
 public void setArrivalTime(int arrive) {
  this.arrive_time = arrive;
 }
 public int getBurstTime() {
  return burst_time;
 }
 public void setBurstTime(int burstTime) {
  this.burst_time = burstTime;
 }

 public int getWaitingTime() {
  return wait_time;
 }

 public void setWaitingTime(int waitingTime) {
  this.wait_time = waitingTime;
 }
 

}




/////Scheduling.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;


public class Scheduling {
 
 private ArrayList<STRF> processList = new ArrayList<STRF>();
 private ArrayList<STRF> waitingList = new ArrayList<STRF>();
 
 Scheduling() {
  System.out.println("���� ����");
  int nextArrival = 0;
  int processIndex = 0;
  int waitingTime = 0;
  STRF currentProcess = null;
  
  try {
   setFile("test\\2.inp.txt");
  }  catch (IOException e) {
   System.out.println("IOException!!");
  }
  
  sortProcess();  
  
  nextArrival = processList.get(0).getArrivalTime();
  int time=0;
  for(time =0;;time++){
   while(time == nextArrival){
    if(currentProcess == null){
     currentProcess = processList.get(processIndex);
    }else {
     waitingList.add(processList.get(processIndex));
    }
    processIndex++;
    if(processIndex == processList.size()){
     nextArrival = 0;
    } else {
     nextArrival = processList.get(processIndex).getArrivalTime();
    }
   }
   if(currentProcess != null) {
    if(waitingList.size() != 0) {
     sortWaitingList();
     if(currentProcess.getBurstTime() > waitingList.get(0).getBurstTime()){
      waitingList.add(currentProcess);
      currentProcess = waitingList.get(0);
      waitingList.remove(0);
     }
    }    
    if(currentProcess.getBurstTime() == 0) {
     if(waitingList.size() != 0) {
      currentProcess = waitingList.get(0);
      waitingList.remove(0);
     } else if(nextArrival == 0) {
      break;
     } else {
      continue;
     }
    }    
    currentProcess.deletetime();
    waitingTime += waitingList.size();
   }   
   System.out.println("Ÿ�� �÷���");
  }
  
  try {
   printProcess(waitingTime);
  } catch (IOException e) {
   System.out.println("IOException!!");
  }
 }
 
 void setFile(String filename) throws NumberFormatException, IOException{
  
  int count;

  FileReader fr = new FileReader(filename);
  BufferedReader br = new BufferedReader(fr);
  
  count = Integer.parseInt(br.readLine());
  System.out.println("count = "+count);
  for(int i=0;i<count;i++){
   System.out.println("asdf");
   String[] item = br.readLine().split(" ");
   STRF process = new STRF(Integer.parseInt(item[0]), Integer.parseInt(item[1]), Integer.parseInt(item[2]));
   processList.add(process);
  }   
  
  br.close();
  fr.close();
 }
 
 void printProcess(int waitingTime) throws IOException {
  System.out.println("���� ���");
  FileWriter fw = new FileWriter("test\\2.out.txt");
  BufferedWriter bw = new BufferedWriter(fw);
  PrintWriter pw = new PrintWriter(bw);
  pw.println(waitingTime);
  System.out.println(waitingTime);
  pw.close();
  bw.close();
  fw.close();
 }
 
 void sortProcess() {
  System.out.println("���μ��� ����");
  for(int i=0;i<processList.size()-1;i++){
   for(int j=0;j<processList.size()-1-i;j++){
    if(processList.get(j).getArrivalTime() > processList.get(j+1).getArrivalTime() ||
     (processList.get(j).getArrivalTime() == processList.get(j+1).getArrivalTime() && processList.get(j).getNumber() > processList.get(j+1).getNumber())){
     STRF temp = processList.get(j);
     processList.remove(j);
     processList.add(j+1, temp);
     
    }
   }
  }  
 }
 
 void sortWaitingList() {
  for(int i=0;i<waitingList.size()-1;i++){
   for(int j=0;j<waitingList.size()-1-i;j++){
    if(waitingList.get(j).getBurstTime() > waitingList.get(j+1).getBurstTime() ||
     (waitingList.get(j).getBurstTime() == waitingList.get(j+1).getBurstTime() && waitingList.get(j).getBurstTime() > processList.get(j+1).getBurstTime())){
     STRF temp = waitingList.get(j);
     waitingList.remove(j);
     waitingList.add(j+1, temp);
    }
   }
  }
 }
}

///////////////////////////////////////////////

이것도 소스가 좀 더럽습니다. 이해 해주시기 바랍니다.^^

'IT 공부 > 자료구조' 카테고리의 다른 글

SSTF Scheduling  (0) 2012.02.28
FCFS  (2) 2012.02.25
SRTF 스케줄링  (0) 2012.02.25
[자료구조] Linked List(링크드리스트)  (0) 2012.02.22

SSTF 스케줄링

-탐색거리가 가장 짧은 요청이 비록 큐의 제일 앞에 있지 않다 하더라도 먼저

 서비스를 받는다.

-특정 요청들을 차별대우 하는 경향이 있다

-고도로 편중되어 안쪽이나 바깥쪽 트랙이 가운데 트랙보다 훨씬 서비스를 덜 받는다.

-FCFS보다 처리량이 더 많고, 보통의 부하에서 평균 응답시간은 짧다

-단점 : 안쪽과 바깥쪽 트랙을 차별대우하기 때문에 응답시간에 큰 편차가 생긴다

■ 일괄처리 시스템에 유용하다.


<<소스 코드>>



///process.java

public class process {
 public static void main(String args[]){
  new Scheduling();
 }
 
}

//SSTF.java
public class SSTF {
 private int number;
 private int arrive_time;
 private int burst_time;
 private int wait_time;
 private int sub;
 
 public SSTF(){
 }
 public SSTF(int arrive,int burst){
  this.arrive_time=arrive;
  this.burst_time=burst;
  this.wait_time=0;
 }
 public int getNumber(){
  return number;
 }
 public int getArrive(){
  return arrive_time;
 }
 public int getBurst(){
  return burst_time;
 }
 public int getWait(){
  return wait_time;
 }
 public int getSub(){
  return sub;
 }
 public void setArrive(int arrive){
  this.arrive_time=arrive;
 }
 public void setBurst(int burst){
  this.burst_time=burst;
 }
 public void setWait(int wait){
  this.wait_time=wait;
 }
 public void setSub(int sub){
  this.sub=sub;
 }
 
}



////Scheduling.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

public class Scheduling {
 private ArrayList<SSTF> processList = new ArrayList<SSTF>();
 private ArrayList<SSTF> copyList = new ArrayList<SSTF>();
 int count;
 int processcount = 0;
 int headcount;
 int current;// ����
 int currentnum = 0;
 int num;
 int temp;
 int plus;
 int waittime = 0;
 int arrive = 0;

 Scheduling() {
  System.out.println("스케줄링 시작");
  try {
   setFile("test\\2.inp.txt");
  } catch (NumberFormatException e) {

  } catch (IOException e) {
   System.out.println("IOException!!");
  }
  sortProcess();
  waittime = processList.get(0).getBurst()+count;// 첫번쨰 자리 이동
  current = processList.get(0).getBurst();// 현재 Burst
  currentnum = 0;
  processList.get(0).setWait(1);
  // ///////////////////
  System.out.println("waittime : " + waittime);

  for (int i = 1; i < processcount; i++) {
   
   sort();
   
  }
  try {
   printProcess(waittime, processList.get(currentnum).getBurst());
  } catch (IOException e) {
   System.out.println("IOException!!");
  }
 }

 private void sort() {
  int temp1=0;
  int temp = 0;
  int num = 0;
  int min = 5000;

  for (int i = 1; i < processcount; i++) {
   if (processList.get(i).getWait() == 0) {
    if (waittime >= processList.get(i).getArrive()) {
     temp = processList.get(i).getBurst()
       - processList.get(currentnum).getBurst();

     if (temp < 0) {
      temp *= -1;
     }

     if (min > temp) {
      min = temp;
      num = i;
     }
     System.out.println("burst : "
       + processList.get(i).getBurst()
       + "  currentburst : "
       + processList.get(currentnum).getBurst()
       + "  arrive : " + processList.get(i).getArrive());
    }

   }
  }// 최소 구하기
  if (num == 0) {
   for (int i = 1; i < processcount; i++) {
    if (processList.get(i).getWait() == 0) {
     if (min > processList.get(i).getArrive()) {
      temp = processList.get(i).getArrive()-waittime;
      temp1=processList.get(currentnum).getBurst()-processList.get(i).getBurst();
      if (temp < 0) {
       temp *= -1;
      }
      System.out.println(processList.get(i).getArrive());
      temp += temp1;
      if (min > temp) {
       min = temp;
       num = i;
      }      
     }
    }
   }

  }
  currentnum = num;
  processList.get(currentnum).setWait(1);

  System.out.println("min : " + min + "num : " + currentnum);

  waittime += min;
  waittime += count;
  System.out.println("waittime : " + waittime);
  System.out.println();
 }

 private void printProcess(int waitingTime, int head) throws IOException {
  System.out.println("프로세스");
  FileWriter fw = new FileWriter("test\\2.out.txt");
  BufferedWriter bw = new BufferedWriter(fw);
  PrintWriter pw = new PrintWriter(bw);
  pw.println(waitingTime + " " + head);
  System.out.println(waitingTime + " " + head);
  pw.close();
  bw.close();
  fw.close();
 }

 private void setFile(String filename) throws NumberFormatException,
   IOException {

  String str;

  FileReader fr = new FileReader(filename);
  BufferedReader br = new BufferedReader(fr);
  count = Integer.parseInt(br.readLine());// ��û�ð�(10)
  System.out.println("카운트 = " + count);

  for (int i = 0;; i++) {

   String[] item = br.readLine().split(" ");
   if (Integer.parseInt(item[0]) == -1
     && Integer.parseInt(item[1]) == -1) {// ���� ����
    System.out.println("������");
    break;
   }
   processcount++;
   System.out.println("Arrive//Burst");
   System.out.println(" " + Integer.parseInt(item[0]) + " "
     + Integer.parseInt(item[1]));
   SSTF process = new SSTF(Integer.parseInt(item[0]),
     Integer.parseInt(item[1]));// �Է�
   processList.add(process);
  }
  br.close();
  fr.close();
 }

 private void sortProcess() {
  for (int i = 0; i < processList.size() - 1; i++) {
   for (int j = 0; j < processList.size() - 1 - i; j++) {
    if (processList.get(j).getArrive() > processList.get(j + 1)
      .getArrive()
      || (processList.get(j).getArrive() == processList.get(
        j + 1).getArrive() && processList.get(j)
        .getBurst() > processList.get(j + 1).getBurst())) {
     SSTF temp = processList.get(j);
     processList.remove(j);
     processList.add(j + 1, temp);
    }
   }
  }
  for (int i = 0; i < processList.size(); i++) {
   if (processList.get(i).getWait() == current) {
    num = i;
    break;
   }
  }
 }

}


///////////////////////////////////////////////////////////
급하게 짠거라 소스가 많이 더럽습니다...

수정해서 쓰시면 될꺼 같습니다.^^

좋은 하루 되세요^^

'IT 공부 > 자료구조' 카테고리의 다른 글

SRTF  (2) 2012.02.28
FCFS  (2) 2012.02.25
SRTF 스케줄링  (0) 2012.02.25
[자료구조] Linked List(링크드리스트)  (0) 2012.02.22
오늘 새벽 2시 30분경

저희 6조가 시작 발표를 했습니다...

"저희 앱은 어린이를...."

다하고 분과장님의 말씀...

"분량이...?"  쩝,,,,

"모듈을 추가하고 이미지.."

"그래도 부족한데요??"

아 드랍의 위기......

끝나고 결과를 기다리고 있으니

회장니이 오셔서 스케줄표 다시 작성하고

컨텐츠 추가해서 오라고 하신다....

다행이 빠꾸는 안먹은듯 하다 ㅠㅠㅋㅋㅋ

이제 앞으로 전진전진 고스트레이트!!

'일기' 카테고리의 다른 글

단기 컨택의 하루  (1) 2012.02.26
집중세미나를 마지막으로..  (3) 2012.02.25
역량평가 2일째  (1) 2012.02.22

가끔, 이클립스 빨간색 느낌표이 폴더위에 떠있을때가 있다

이러한 경우는 A컴퓨터에서 B컴퓨터 옮겨 와서 이런 경우가

대부분인데 해결방안은,

1. Build Path가 맞이 않을 경우입니다.
->프로젝트 오른쪽눌러서 Build Path Setup
   들어가서 X된 라이브러리를 삭제하시고,
   정확한 위치를 잡아주시면 됩니다.
2. JDK가 틀린 경우입니다.
-> 이건,,, JDK를 맞춰야 겟죠..


정안되면 프로젝프 파일을 만들어서 그파일로  Ctrl+C & V하세요^^

'IT 공부 > 안드로이드' 카테고리의 다른 글

android 타이틀바 없애기  (0) 2012.03.03
Parser  (1) 2012.03.03
JSON을 활용한 검색기  (2) 2012.02.25
XML을 활용한 RSS리더기  (1) 2012.02.25
파서(Get)  (1) 2012.02.25

+ Recent posts