이클립스로 설정 작업을 하려는데 주석이 모두 \uxxxx 형태로 변경되어 읽을 수 없게 되는 경우가 발생하는 경우가 있습니다.  Eclipse Marketplace에 가서 Properties Editor 플러그인을 설치하면 정상으로 돌아온다고 하는데 이것저것 설치하기가 싫은 경우 간단히 설정을 해주기만 하면 다시 한글로 읽을 수 있습니다.

한글이 아래처럼 읽기 어려운 경우


eclipse properties 한글 깨짐


 #-----------------------------------------------------------------------

#

#   globals.properties : \uc2dc\uc2a4\ud15c

#

#-----------------------------------------------------------------------

#   1.  key = value \uad6c\uc870\uc785\ub2c8\ub2e4.

#   2.  key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5

#   3.  key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00,   value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5

#   4.  \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d  '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9)

#   5.  Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/'  ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428)

#   6.  Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/'

#   7.  \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294  #\uc0ac\uc6a9

#   8.  value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83

#-----------------------------------------------------------------------

 

# \uc6b4\uc601\uc11c\ubc84 \ud0c0\uc785(WINDOWS, UNIX)

Globals.OsType =WINDOWS

 


상단 메뉴에서

Window > Preferences 를 선택 합니다.


eclipse properties 한글 깨짐


Preferences 창이 나오면 좌측에서 General을 확장하고 Content Types를 선택 합니다.


eclipse properties 한글 깨짐


그리고 우측에 보이는 Text를 확장해 주고


eclipse properties 한글 깨짐


Java Properties File을 선택 합니다.

하단의 Default encoding 입력란에 ISO-8859-1 등이 입력되어 있다면 UTF-8을 입력하고 Apply and Close 버튼을 클릭 합니다? Properties 파일이 아직도 깨져 보인다고요파일을 닫고 다시 열어 봅니다.(eclipse를 재시작하지 않아도 됩니다.)


eclipse properties 한글 깨짐


 #-----------------------------------------------------------------------

#

#   globals.properties : 시스템

#

#-----------------------------------------------------------------------

#   1.  key = value 구조입니다.

#   2.  key값은 공백문자를 포함불가, value값은 공백문자를 가능

#   3.  key값으로 한글을 사용불가,   value값은 한글사용이 가능

#   4.  줄을 바꿀 필요가 있으면 '\'를 라인의 끝에 추가(만약  '\'문자를 사용해야 하는 경우는 '\\'를 사용)

#   5.  Windows에서의 디렉토리 표시 : '\\' or '/'  ('\' 사용하면 안됨)

#   6.  Unix에서의 디렉토리 표시 : '/'

#   7.  주석문 처리는  #사용

#   8.  value값 뒤에 스페이스가 존재하는 경우 서블릿에서 참조할때는 에러발생할 수 있으므로 trim()하거나 마지막 공백없이 properties 값을 설정할것

#-----------------------------------------------------------------------

 

# 운영서버 타입(WINDOWS, UNIX)

Globals.OsType =WINDOWS


한글로 잘 보입니다.


- copy coding -


Eclipse에서 Oracle 데이터베이스 연결을 테스트 하기 위해 Data Source Explorer를 이용하는 방법에 대해 알아 봅니다프로젝트에서 환경 설정 값을 이용하여 테스트 하는 방법도 있지만 DB 접속을 위한 프로그램을 완성 하고 나서 디버깅을 해야만 데이터베이스에 접속이 되는지 아닌지 확인할 수 있지만 Data Source Explorer를 사용하면 설정 값만 사용하여 접속이 잘 되었는지 확인이 가능하고 테스트한 설정 값을 Project에 그대로 적용하기만 하면 별도로 접속 테스트 없이 DB 작업이 가능합니다.

 

먼저 이클립스 네비게이터 영역에 Data Source Explorer를 포함해 봅니다.

Window > Show View > Data Source Explorer

메뉴를 선택 합니다.



Eclipse Data Source Explorer Oracle


만약 Show View 메뉴에서 Data Source Explorer가 보이지 않는다면 하단의 Other...를 선택하여 팝업 메뉴 창을 오픈 합니다.


Eclipse Data Source Explorer Oracle


이곳에서 Data Source Explorer를 찾아 클릭 하면 됩니다.


Eclipse Data Source Explorer Oracle


그러면 좌측 네비게이터 창에 탭으로 추가된 것을 볼 수 있습니다이제 Database를 추가하기 위해 Database Connections에 마우스를 대고 우측 버튼 클릭을 합니다.


Eclipse Data Source Explorer Oracle


팝업 메뉴에서 New...를 선택해 줍니다.


Eclipse Data Source Explorer Oracle


Oracle을 사용하려고 하기 때문에 Oracle을 선택 하고 Name은 임의대로 입력 해도 됩니다이름을 입력 했다면 Next 버튼을 클릭 합니다.


Eclipse Data Source Explorer Oracle


아직 연결을 위한 드라이버가 하나도 생성되어 있지 않아 콤보박스에 선택을 할 수 없고 Drivers 입력란 우측에 있는 원안의 별표를 클릭 합니다.


Eclipse Data Source Explorer Oracle


Name/Type 탭에서 사용하려는 오라클 버전을 선택 합니다저는 사용하려는 버전이 11g이므로11을 선택 했습니다다음으로 JAR List 탭을 선택 합니다.


Eclipse Data Source Explorer Oracle


기본값이 설정되어 있지만 자신이 설치한 오라클에 적합한 jar 파일을 선택해야 합니다. 저는 11g XE 버전을 사용 중 이고 Add JAR/Zip... 버튼을 클릭해서 설치한 oracle 폴더로 이동 해보면

 

C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib

 

이 폴더에 드라이버 파일이 있습니다


Eclipse Data Source Explorer Oracle


여기서는 ojdbc6.jar를 선택 합니다.  그리고 기존에 있던 ojdbc14.jar는 Remove JAR/Zip 버튼을 클릭하여 리스트에서 삭제처리 합니다.


Eclipse Data Source Explorer Oracle


이제 OK 버튼이 활성화 되어 클릭 할 수 있습니다. 클릭 하면 profile 입력 창이 보입니다.


Eclipse Data Source Explorer Oracle


database에 접속을 위한 정보를 입력하고 Test Connection 버튼을 클릭하여 접속 테스트를 진행 합니다.


Eclipse Data Source Explorer Oracle


설정 값에 이상이 없고 연결도 잘 되었습니다. Finish 버튼을 클릭하여 연결 테스트를 종료 합니다만일 설정된 정보를 확인하려면 Next 버튼을 클릭하면 됩니다.


Eclipse Data Source Explorer Oracle


현재 설정된 상세 정보를 볼 수 있고 수정이 필요하면 Back 버튼으로 수정을 하고 테스트를 종료 하려면 Finish 버튼을 클릭 합니다.


Eclipse Data Source Explorer Oracle


데이터베이스 접속 테스트가 성공 하였으니 접속 정보를 위와 같이 프로젝트 설정에 사용하면 DB 접속은 오류 없이 진행 됩니다.


- copy coding -


Serverandroid app간에 데이터를 주고 받는 작업이 필요하여 간단하게 샘플 작업을 해보았습니다인터넷에 많은 예제가 널려 있는데 하나 더 던져 봅니다.  IPPC에 설정된 것으로 사용을 하기 위해 PC에 설정된(자동으로 잡히도록 되어 있으므로 다음에는 변할 수 있지만) 값을 찾아 봅니다.  ipconfig/all 명령으로 찾으면 됩니다.


andriod eclipse socket


 

1. Eclipse Server

 

서버에서는 IP는 사용하지 않고 port 번호만으로 접속 대기 상황을 만들면 됩니다그리고 client에서 연결 요청과 데이터가 들어오면 다시 보내주는 작업을 진행 합니다.

 

//client 접속 대기

Socket client = serverSocket.accept();

//client data 수신

BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

String str = in.readLine();

//client 다시 전송

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true);

out.println("Server Received : '" + str + "'");

 

2. Android Client

 

Client 에서는 화면작업이 좀 있습니다그리고 문자를 입력 받아 서버에 보내주고 다시 받아오는 작업을 진행 합니다.

 

//소켓 생성
InetAddress serverAddr = InetAddress.getByName(ip);
 
socket =  new Socket(serverAddr,port);
//입력 메시지
String sndMsg = et.getText().toString();
//데이터 전송
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(sndMsg);
//데이터 수신
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String read = input.readLine();

 

그리고 인터넷을 사용하므로 Manifest.xml에 권한 설정을 해주면 됩니다.

 

<uses-permission android:name="android.permission.INTERNET" />

 

  

3. 결과 화면

 

안드로이드 클라이언트 화면입니다문자 입력과 전송버튼 그리고 서버로 부터 받은 데이터를 화면에 출력하는 기능이 있습니다.


andriod eclipse socket


이런... Connet 버튼은 테스트하려고 만들었는데 사용하지 않습니다삭제 안했네요.

 

서버쪽은 클라이언트에서 보내온 데이터를 콘솔에 출력만 합니다.


andriod eclipse socket


소스가 간단해서 설명도 간단 하네요.

 

4. 전체 소스

 

4.1 Eclipse Server

 

package egovframework.admin.chart.web;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.ObjectOutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

 

public class TCPServer implements Runnable {

 

             public static final int ServerPort = 9999;

//    public static final String ServerIP = "192.168.0.6";

 

             @Override

             public void run() {

                           try {

            System.out.println("Connecting...");

            ServerSocket serverSocket = new ServerSocket(ServerPort);

 

            while (true) {

                     //client 접속 대기

                Socket client = serverSocket.accept();

                System.out.println("Receiving...");

                try {

                   //client data 수신

                    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

                    String str = in.readLine();

                    System.out.println("Received: '" + str + "'");

                    //client에 다시 전송

                    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true);

                    out.println("Server Received : '" + str + "'");

                   

                } catch (Exception e) {

                    System.out.println("Error");

                    e.printStackTrace();

                } finally {

                    client.close();

                    System.out.println("Done.");

                }

            }

        } catch (Exception e) {

            System.out.println("S: Error");

            e.printStackTrace();

        }

             }

            

             public static void main(String[] args) {

        Thread ServerThread = new Thread(new TCPServer());

        ServerThread.start();

     }

}

 

4.2 안드로이드 Client

 

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".MainActivity">

    <
TextView
       
android:id="@+id/TextView01"
       
android:layout_width="fill_parent"
       
android:layout_height="wrap_content" />

    <
EditText
       
android:id="@+id/EditText01"
       
android:layout_width="289dp"
       
android:layout_height="wrap_content"
       
android:layout_marginStart="92dp"
       
app:layout_constraintStart_toStartOf="@+id/Button01"
       
tools:layout_editor_absoluteY="0dp" />

    <
Button
       
android:id="@+id/Button01"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="Send" />

    <
Button
       
android:id="@+id/button02"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_marginEnd="16dp"
       
android:layout_marginTop="456dp"
       
android:text="Connect"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintTop_toTopOf="parent" />

    <
TextView
       
android:id="@+id/chatTV"
       
android:layout_width="fill_parent"
       
android:layout_height="381dp"
       
android:layout_marginTop="64dp"
       
app:layout_constraintTop_toTopOf="@+id/TextView01"
       
tools:layout_editor_absoluteX="0dp" />
</
android.support.constraint.ConstraintLayout>

 

 

AndroidManifest.xml

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    
package="com.example.tcpclient">

    <
uses-permission android:name="android.permission.INTERNET" />

    <
application
       
android:allowBackup="true"
       
android:icon="@mipmap/ic_launcher"
       
android:label="@string/app_name"
       
android:roundIcon="@mipmap/ic_launcher_round"
       
android:supportsRtl="true"
       
android:theme="@style/AppTheme">
        <
activity android:name=".MainActivity">
            <
intent-filter>
                <
action android:name="android.intent.action.MAIN" />

                <
category android:name="android.intent.category.LAUNCHER" />
            </
intent-filter>
        </
activity>
    </
application>

</
manifest>

 

 

MainActivity.java


package com.example.tcpclient;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;


public class MainActivity extends AppCompatActivity {

   
private Handler mHandler;
    Socket
socket;
   
private String ip = "192.168.0.6"; // IP 주소
   
private int port = 9999; // PORT번호
   
EditText et;
    TextView
msgTV;

   
@Override
   
protected void onStop() {
       
super.onStop();
       
try {
           
socket.close();
        }
catch (IOException e) {
            e.printStackTrace();
        }
    }

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);

       
mHandler = new Handler();

       
et = (EditText) findViewById(R.id.EditText01);
        Button btn = (Button) findViewById(R.id.
Button01);
        Button btnCon = (Button)findViewById(R.id.
button02);
       
final TextView tv = (TextView) findViewById(R.id.TextView01);
       
msgTV = (TextView)findViewById(R.id.chatTV);

        btn.setOnClickListener(
new View.OnClickListener() {
           
public void onClick(View v) {
               
if (et.getText().toString() != null || !et.getText().toString().equals("")) {
                    ConnectThread th =
new ConnectThread();
                    th.start();
                }
            }
        });
    }

   
class ConnectThread extends Thread{
       
public void run(){
           
try{
               
//소켓 생성
               
InetAddress serverAddr = InetAddress.getByName(ip);
                
socket new Socket(serverAddr,port);
               
//입력 메시지
               
String sndMsg = et.getText().toString();
                Log.d(
"=============", sndMsg);
               
//데이터 전송
               
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
                out.println(sndMsg);
               
//데이터 수신
               
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String read = input.readLine();
               
//화면 출력
               
mHandler.post(new msgUpdate(read));
                Log.d(
"=============", read);
               
socket.close();
            }
catch(Exception e){
                e.printStackTrace();
            }
        }
    }
   
// 받은 메시지 출력
   
class msgUpdate implements Runnable {
       
private String msg;
       
public msgUpdate(String str) {
           
this.msg = str;
        }
       
public void run() {
           
msgTV.setText(msgTV.getText().toString() + msg + "\n");
        }
    };
}

 

- copy coding -


요즘 사용하는 편집기들은 폰트 크기 조절은 간단하게 Ctrl+마우스휠로 간단하게 크기를 조절 하도록 되어 있는데 eclipse는 아직도 설정을 통해서만 글자 크기를 조절 하도록 되어 있습니다그러다 보니 가끔 방법이 생각나지 않을 때가 있습니다작업은 단순 합니다.

 

1. 설정을 통한 변경

 

먼저 Window 메뉴에서 Preferences 를 선택 합니다.


eclipse font 변경


좌측 메뉴에서 General을 확장 하고 다시 Appearance를 확장하여 Colors and Fonts를 선택 합니다.


eclipse font 변경



우측 화면은 버전에 따라 조금 다를 수 있지만 어째든 원하는 언어를 확장 하여 Editor Text Font를 선택 하고 우측 상단 Edit 버튼을 클릭 합니다.


eclipse font 변경


원하는 글꼴과 크기를 선택 하여 적용하면 됩니다.


eclipse font 변경


. 너무 크게 했군요. 적당히 수정 합니다.

위쪽에서 Preferences 창을 보고 알았겠지만 폰트 크기를 변경하면 모두 바뀌는게 아니고 javajava대로 javascriptjavascript대로 각각 설정을 해야 합니다.

 

javascript를 수정하려면 이런식으로 동일한 작업을 해야 합니다.


eclipse font 변경



2. 단축키 이용 변경

 

단축키를 이용하면 폰트 자체는 변경이 되지 않고 크기만 변경이 가능 합니다.

 

2.1 메인 키패드 ‘+’, ‘-‘ 사용


자판위에 있는 ‘+’ 키와 ‘-‘ 키를 이용하는 방법은 Ctrl 키와 같이 사용하면 됩니다.

Ctrl + ‘+’ : 글자 크기 확대

Ctrl + ‘-‘ : 글자 크기 축소

 

2.2 숫자 키패드 ‘+’, ‘-‘ 사용


숫자키와 같이 있는 ‘+’ 키와 ‘-‘ 키를 이용할때는 Ctrl 키와 Shift 키를 같이 사용하면 됩니다.

Ctrl + Shift + ‘+’ : 글자 크기 확대

Ctrl + Shift + ‘-‘ : 글자 크기 축소


- copy coding -


12345

+ Recent posts