Sponsored By
















R프로그램 윈도우내에 설치방법임.

 

 

 

 

 

 

00. 구글에서 'R' 검색 혹은 'http://www.r-project.org/' 를 입력하여 홈페이지에 들어간다.







01. 'CRAN' 링크를 클릭.

 

 

 

 

 

 

02. 스크롤을 아래로 내려 KOREA를 찾아서 아무거나 다운받는다. 나는 2번째꺼를 주로 받는다.







03. 'Download For Windows' 를 클릭







04. 'base' 를 클릭







05. 'Download R X.X.X For Windows' 클릭








06. 다운받아진 exe클릭.







07. 자유로운 언어를 선택후 확인 버튼 클릭







08. 다음버튼 클릭








09. 다음버튼 클릭







10. 설치할 위치를 선택하고 다음버튼 클릭.







11. 적절하게 선택하고 다음버튼 클릭.(기본값은 전체선택) (※. Core와 32-bit 만 선택하는것이 좋다.)







12. Yes를 선택하고 다음버튼 클릭.(기본값은 No, Yes로 하는 이유는 help()쳤을때 R내에서 띄우기 위함)







13. MDI선택후 다음버튼 클릭.







14. 아무거나 선택후 다음버튼 클릭(기본값 HTML기반의 도움말).







15. 다음버튼 클릭(기본값 시작메뉴 폴더를 만들지 않음에 체크해제상태).







16. 적절하게 선택하고 다음버튼 클릭.







17. 기다림의 미학.







18. 완료버튼 누르고 R프로그램을 시작하면 된다.

 

 

 

 

 

 

 

 

인터넷에 있는 정보들을 HTTP원문 형식으로 가져오는 방법임.

 

 

 

 

 

 

 

00. 플레인텍스트를 만들어주고 원하는 주소값(http://m.naver.com) 을 입력해줌.

 

 

 

 

 

01. 버튼을 만들어줌. 







02. 플레인텍스트를 EditText로 바꿔주고 아래 텍스트뷰를 스크롤뷰로 감싼다.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context="com.example.joey.myhttp.MainActivity">

 

    <EditText

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="http://m.naver.com"

        android:id="@+id/editText"

        android:layout_alignParentTop="true"

        android:layout_alignParentLeft="true"

        android:layout_alignParentStart="true"

        android:layout_toLeftOf="@+id/button"

        android:layout_toStartOf="@+id/button"

        android:layout_above="@+id/scrollView" />

 

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Http 가져오기"

        android:id="@+id/button"

        android:layout_alignParentRight="true"

        android:layout_alignParentEnd="true"

        android:onClick="button01"

        android:layout_alignParentTop="true" />

 

    <ScrollView

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:text="New Text"

        android:background="#ffeeddcc"

        android:layout_centerHorizontal="true"

        android:layout_below="@+id/button"

        android:id="@+id/scrollView">

 

        <TextView

            android:id="@+id/textView2"

            android:layout_width="match_parent"

            android:layout_height="match_parent" />

    </ScrollView>

</RelativeLayout>







03. 메인스크립트를 작성해준다. 네트워킹이기때문에 쓰레드 해줘야함.

package com.example.joey.myhttp;

 

import android.os.Bundle;

import android.os.Handler;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.EditText;

import android.widget.TextView;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

 

public class MainActivity extends AppCompatActivity {

 

    EditText editText;

    TextView textView;

    Handler handler = new Handler();

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        editText = (EditText) findViewById(R.id.editText);

        textView = (TextView) findViewById(R.id.textView2);

    }

    public void button01(View v) {

        RequestThread thread = new RequestThread();

        thread.start();

    }

    class RequestThread extends Thread {

        public void run() {

            try {

                String urlStr = editText.getText().toString();

 

                StringBuilder outputBuilder = new StringBuilder();

 

                URL url = new URL(urlStr);

                HttpURLConnection urconn = (HttpURLConnection) url.openConnection();

                urconn.setDoInput(true);

                urconn.setDoOutput(true);

                urconn.setConnectTimeout(15000); // 15초

 

                int resCode = urconn.getResponseCode();

                if (resCode == HttpURLConnection.HTTP_OK) {

                    BufferedReader reader = new BufferedReader(new InputStreamReader(urconn.getInputStream(), "UTF-8"));

 

                    String line = null;

                    while (true) {

                        line = reader.readLine();

                        if (line == null) {

                            break;

                        }

                        outputBuilder.append(line + "\n");

                    }

 

                    reader.close();

                    urconn.disconnect();

                }

                String output = outputBuilder.toString();

                println(output);

 

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

    private void println(final String data) {

        handler.post(new Runnable() {

            @Override

            public void run() {

                textView.append(data + "\n");

            }

        });

    }

}







04. Manifest로 가서 인터넷접근을 허용 해준다. <uses-permission android:name="android.permission.INTERNET" />







05. 실행해본다.







06. 버튼을 눌러 구동시켜보자.







07. 정상적으로 작동됨을 확인 할 수 있다.

 

 

네트워킹 중 가장 기본인 소켓에 관한 내용임.

 

 

 

 

일단 시작전에 네트워킹 관련된것은 반드시 쓰레드 사용과 + 인터넷권한 을 줘야한다는 두가지 전제가 있다.

 

 

내용을 따라가다보면 피시IP주소가 필요한데 내 피시 IP주소 보는법은 링크 참조.

http://blog.naver.com/pandekten5/220622082174

 

 

 

 

 

 

 

 

 

 

00. 역시나 일단 시작해보자.







01. 버튼을 누르면 작동되게 버튼을 만들어보자. 온클릭 속성을 줘서 간단히 해보자.







02. 작업결과를 텍스트뷰에 나타나게 해보자. 하지만 구별되기 위해 색상을 줘보자.







03. Manifest에서 인터넷권한을 주자.







04. 메인스크립에다 메인소스를 주자.

package com.example.joey.mysocket;

import android.os.Bundle;

import android.os.Handler;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.TextView;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.Socket;

public class MainActivity extends AppCompatActivity {

    TextView textView;

    Handler handler = new Handler();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.textView);

    }

    public void button01(View v) {

        ConnectThread thread = new ConnectThread();

        thread.start();

    }

    class ConnectThread extends Thread {

        public void run() {

            String host = "172.30.1.4"; //내 피시 IP주소

            int port = 5001;

            try {

                Socket socket = new Socket(host, port);

                println("서버로 연결되었습니다. : " + host + ", " + port);

                String output = "Hello";

 

                ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());

                outputStream.writeObject(output);

                outputStream.flush();

                println("서버로 보낸 데이터 : " + output);

 

                ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream());

                Object input = inputStream.readObject();

                println("서버로부터 받은 데이터 : " + input);

 

                inputStream.close();

                outputStream.close();

                socket.close();

 

           } catch (Exception e) {

                e.printStackTrace();

            }

        }

        private void println(final String data){

            handler.post(new Runnable() {

                @Override

                public void run() {

                    textView.append(data + "\n");

                }

            });

        }

    }

}







05. 실행시켜보자.







06. 서버를 만들지 않고 시작해서인지, 텍스트뷰로 나타나지않는다. 

 

현대자동차 본사 지하 1층


'ETC > 먹방' 카테고리의 다른 글

2019. 08. 01. 목. 저녁.  (0) 2019.08.02
2019. 07. 31. 수. 저녁.  (0) 2019.07.31
2019. 07. 28. 일. 점심  (0) 2019.07.28
2019. 07. 03. 수. 저녁.  (0) 2019.07.04
2019. 06. 10. 월. 점심  (0) 2019.06.10

 

AsyncTask사용하기. 메인쓰레드와 새로운쓰레드내의 하나의 실행 단위라고 생각하면됨.

 

 

 

 

 

 

00. 진행상태를 보기위해 프로그레스바를 만든다.







01. 버튼을 만든다.







02. 정지시킬 버튼을 만든다.







03. 플레인텍스트를 만들어 진행상황을 보여주자.







04. 주석 참조.

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        textView = (TextView) findViewById(R.id.textView);

        progressBar = (ProgressBar) findViewById(R.id.progressBar);

    }

 

    public void button01(View v){ /* 버튼2에대한 메소드값 추후 입력 */ }

    public void button02(View v){ /* 버튼2에대한 메소드값 추후 입력 */ }

 

    class BackgroundTask extends AsyncTask<Integer, Integer, Integer>{

        @Override //처음에 클래스를 만들고나서 ALT+ENT 눌러서 기본 오버라이드 하자.

        protected Integer doInBackground(Integer... params) {

             return null;

         }

    }

}

 

그리고 마우스오른쪽버튼->Generate->Override 버튼을 순서대로 눌러서 아래와같이 3가지 메소드를 오버라이딩하자.







05. 코드를 완성하자.

package com.example.joey.myasynctasktest;

import android.os.AsyncTask;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.ProgressBar;

import android.widget.TextView;

 

public class MainActivity extends AppCompatActivity {

 

    TextView textView;

    ProgressBar progressBar;

    int value = 0;

    BackgroundTask task;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        textView = (TextView) findViewById(R.id.textView);

        progressBar = (ProgressBar) findViewById(R.id.progressBar);

    }

 

    public void button01(View v){

        task = new BackgroundTask();

        task.execute(100);

    }

    public void button02(View v){

        task.cancel(true);

    }

 

    class BackgroundTask extends AsyncTask<Integer, Integer, Integer>{

        @Override

        protected void onPostExecute(Integer integer) {

            value = 0;

            progressBar.setProgress(value);

            textView.setText("마침.");

        }

        @Override

        protected void onPreExecute() {

            value = 0;

            progressBar.setProgress(value);

        }

        @Override

        protected void onProgressUpdate(Integer... values) {

            progressBar.setProgress(values[0].intValue());

            textView.setText("진행중 :" + values[0]);

        }

 

        @Override

        protected Integer doInBackground(Integer... params) {

            while(!isCancelled()){

                value++;

                if(value >= 100){

                    break;

                } else {

                    publishProgress(value);

                }

                try{

                    Thread.sleep(100);

                } catch (Exception e){}

            }

            return value;

        }

    }

}







06. 실행시켜보자.







07. 시작버튼을 눌러보자.







08. 정상작동됨을 볼 수 있고 중간에 중지 버튼을 눌러서 중지되는지 확인해보자.







09. 중지됨을 확인 할 수 있다. 시작을 눌러서 끝까지 진행시켜보자.







10. 시작버튼을 눌렀을때 int value = 0; 으로 초기화 시켜서 0부터 다시시작됨을 볼 수 있다. 

 



Sponsored By















+ Recent posts