JDBC를 이용해 데이터를 가져올 때 아래와 같은 오류가 발생하는 경우가 있다. 

....: Column Index out of range, 0 < 1.

내 경우, 이유는 ResultSet을 가져올 때 아래처럼 컬럼 인덱스를 잘못 지정해서 그런 거였다.

while(rs.next()) {
    int a = rs.getInt(0);
    int b = rs.getString(1);
    ....
}

컬럼의 인덱스는 1부터 시작하는데 0으로 써서 문제가 되었던 것이었다.

참고: http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getInt(int)



Posted by 후니아부지
:

MySQL Installer를 사용하여 설치 시 다음과 같이 라이센스 변경에 관한 팝업이 나타날 수 있다.


commuinity edition을 설치하는데 팝업 내용은 commercial edition을 설치해줘서 고맙단다. -_-;;;;

아무튼, GPL인 MySQL 제품이 설치된 것으로 나오니 commercial edition을 설치(community edition 이라니깐!!!!)하려면 

GPL 제품을  Commercial 라이선스로 변환해야 한다고 한다.


예(Y)를 클릭할 경우, installer에 변환에 필요한 파일이 없다고 하면서 끝~


아니요(N)를 클릭할 경우, 그냥 설치 끝~


어쩌라고.....



해결 방법은 시스템에 설치된 MySQL 제품을 모두 지우고 다시 installer를 실행하면 된다.


나의 경우, MySQL Connector를 먼저 설치했었다. 

그래서 이를 제거하고 다시 설치하니 정상적으로 설치가 진행되었다.


끝~




 


Posted by 후니아부지
:

1. 블로그 검색에 블로그 추가

http://blogsearch.google.co.kr/ping

 

블로그 주소를 입력하고 블로그 전송을 클릭한다.

 

 

2. 구글 웹마스터에 블로그 등록

https://www.google.com/webmasters/

웹마스터 도구에 로그인 클릭

블로그 주소를 입력한다. 

 

소유자의 블로그가 맞는지 확인하는 절차이다.

아래에 나온 메타 태그를 html 파일의 head 섹션에 붙여 넣는다. 

블로그 적용 후 아래 확인 버튼을 클릭한다.

 

소유자 확인이 되면 아래와 같은 문구가 출력된다.

 

웹마스터 도구의 홈 화면이 나타나면 방금 추가한 블로그가 나타나게 된다.

화면 오른쪽에 사이트 추가 버튼으로 다른 웹사이트(블로그)도 등록할 수 있다.

등록 방법은 동일하다.

 

Posted by 후니아부지
:

객체의 입출력은 스트림 기반이다.

객체의 입출력에는 직렬화가 필요하다. 이를 위해 java.io.Serializable 이라는 인터페이스를 사용한다.

사용할 객체의 클래스 선언부에 'implements Serializable'를 쓰면된다.

class 클래스명 implements Serializable {
....
}


유형별 객체 출력

FIle

File f = new File("파일이름");
FileOutputStream fos = new FileOutputStream(f, true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
\


유형별 객체 입력

FIle

File f = new File("./object_io_test.txt");
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
ObjectInputStream ois = new ObjectInputStream(bis);


예제)

테스트 객체

import java.io.*;

public class TestClass1 implements Serializable {
	private byte a;
	private int b;
	private float c;
	private String d;
	
	public byte getA() {
		return a;
	}
	public void setA(byte a) {
		this.a = a;
	}
	public int getB() {
		return b;
	}
	public void setB(int b) {
		this.b = b;
	}
	public float getC() {
		return c;
	}
	public void setC(float c) {
		this.c = c;
	}
	public String getD() {
		return d;
	}
	public void setD(String d) {
		this.d = d;
	}
	
	public String toString() {
		return this.a + " / " + this.b + " / " + this.c + " / " + this.d;
	}
}


출력

import java.io.*;

public class ObjectOutputTest {
	public static void main(String[] ar) {
		try {
			File f = new File("./object_io_test.txt");
			FileOutputStream fos = new FileOutputStream(f, true);
			BufferedOutputStream bos = new BufferedOutputStream(fos);
			ObjectOutputStream oos = new ObjectOutputStream(bos);
			
			TestClass1 tc1 = new TestClass1();
			
			tc1.setA((byte)97);
			tc1.setB(18);
			tc1.setC(12.8f);
			tc1.setD("test1");
			
			TestClass1 tc2 = new TestClass1();
			
			tc2.setA((byte)98);
			tc2.setB(28);
			tc2.setC(22.8f);
			tc2.setD("test2");
			
			oos.writeObject(tc1);
			oos.writeObject(tc2);
			oos.close();
			
			
		} catch (Exception ex) {			
		}
	}
}


입력

import java.io.*;

public class ObjectInputTest {
	public static void main(String[] ar) {
		try {
			File f = new File("./object_io_test.txt");
			FileInputStream fis = new FileInputStream(f);
			BufferedInputStream bis = new BufferedInputStream(fis);
			ObjectInputStream ois = new ObjectInputStream(bis);
			
			TestClass1 tc1 = (TestClass1)ois.readObject();
			TestClass1 tc2 = (TestClass1)ois.readObject();
			
			ois.close();
			
			System.out.println("tc1: " + tc1.toString());
			System.out.println("tc2: " + tc2.toString());
			
		} catch (Exception ex) {
		}
	}
}


객체를 파일로 출력 후 입력 테스트를 해보면 다음과 같이 읽힐 것이다.


Posted by 후니아부지
:

텍스트 스트림은 2 Byte 문자 체계를 가진 텍스트의 입출력에 사용한다.


형식별 2 Byte 출력

Console

OutputStreamWriter osw = new OutputStreamWriter(System.out);
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(....);


File

File f = new File("파일이름");
FileWriter fw = new FileWriter(f, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
pw.println(....);

Network

Socket soc = new Socket(.....);
OutputStreamWriter osw = new OutputStreamWriter(soc.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(....);


예제)

import java.io.*;

public class Text_IO_Output_test {
	public static void main(String[] ar) {
		try {
			/* 콘솔 출력 
			OutputStreamWriter osw = new OutputStreamWriter(System.out);
			BufferedWriter bw = new BufferedWriter(osw);
			PrintWriter pw = new PrintWriter(bw);
			*/
			
			File f = new File("./text_io_test.txt");
			FileWriter fw = new FileWriter(f, true);
			BufferedWriter bw = new BufferedWriter(fw);
			PrintWriter pw = new PrintWriter(bw);

			pw.println("Text I/O Output Test!");
			pw.close();			
		} catch (Exception ex) {}
	} 
}


형식별 2 Byte 입력

Console

InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader br = new BufferedReader(isr);
br.readLine();


File

File f = new File("파일이름");
FileReader fr = new FileReader(f, true);
BufferedReader br = new BufferedReader(fr);
br.readLine();

Network

Socket soc = new Socket(.....);
InputStreamReader isr = new InputStreamReader(soc.getInputStream());
BufferedReader br = new BufferedReader(isr);
br.readLine();


예제)

import java.io.*;

public class Text_IO_Input_test {
	public static void main(String[] ar) {
		try {
			/* 콘솔 입력
			InputStreamReader isr = new InputStreamReader(System.in);
			BufferedReader br = new BufferedReader(isr);
			
			System.out.print("뭐든 써봐: ");
			String str = br.readLine();
			System.out.println("내용:");
			System.out.print(str);
			*/
			
                        // 파일 입력 
			File f = new File("./text_io_test.txt");
			FileReader fr = new FileReader(f);
			BufferedReader br = new BufferedReader(fr);
			
			System.out.println("읽은내용:");
			while(true) {
				String str = br.readLine();
				if (str == null) break;
				System.out.println(str);
			}
			
			br.close();
			
		} catch (Exception e) {
			
		}
	}
}

Posted by 후니아부지
:

자바 입출력은 하나의 형식으로 콘솔, 파일, 네트워크 등 모든 입출력에 사용할 수 있다.

입출력 방식이 스트림(Stream)이냐 텍스트(Text)냐의 차이이다.


자바는 입출력을 스트림에 의존한다. 모든 입출력이 1 Byte의 데이터 흐름으로 여겨진다.


형식별 1 Byte 출력

Console

FileOutputStream fos = new FileOutputStream(FileDescriptor.out);
BufferedOutputStream bos = new BufferedOutputStream(fos, 1024);
DataOutputStream dos = new DataOutputStream(bos);
dos.write(.....)

File

File file = new File("파일이름");
FileOutputStream fos = new FileOutputStream(file, false);
BufferedOutputStream bos = new BufferedOutputStream(fos, 1024);
DataOutputStream dos = new DataOutputStream(bos);
dos.write(.....)

Network

Socket soc = new Socket(.....);
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream(), 1024);
DataOutputStream dos = new DataOutputStream(bos);
dos.write(.....)

예제)

import java.io.*; // 입출력을 위해 I/O 패키지 추가 public class IO_Output_Test { public static void main(String[] ar) { try { /* 콘솔에 대한 출력 FileOutputStream fos = new FileOutputStream(FileDescriptor.out); BufferedOutputStream bos = new BufferedOutputStream(fos, 1024); */ // 파일에 대한 출력 File f = new File("./stream_io_test.txt"); FileOutputStream fos = new FileOutputStream(f, true); BufferedOutputStream bos = new BufferedOutputStream(fos, 1024); DataOutputStream dos = new DataOutputStream(bos); byte[] str = new byte[]{(byte)'C', (byte)'o', (byte)'n' , (byte)'s', (byte)'o', (byte)'l', (byte)'e', (byte)' '}; dos.write(str); dos.flush(); dos.close(); } catch (Exception ex) {} } }



형식별 1 Byte 입력

Console

FileInputStream fis = new FileInputStream(FileDescriptor.in);
BufferedInputStream bis = new BufferedInputStream(fis, 1024);
DataInputStream dis = new DataInputStream(bis);
dis.read();

File

File file = new File("파일이름");
FileInputStream fis = new FileInputStream(file, false);
BufferedInputStream bis = new BufferedInputStream(fis, 1024);
DataInputStream dis = new DataInputStream(bis);
dis.read();

Network

Socket soc = new Socket(.....);
BufferedInputStream bis = new BufferedInputStream(soc.getInputStream(), 1024);
DataInputStream dis = new DataInputStream(bis);
dis.read();

예제)

import java.io.*;

public class IO_Input_Test {
	public static void main(String[] arg){
		try {
			/* 콘솔 입력
			FileInputStream fis = new FileInputStream(FileDescriptor.in);
			BufferedInputStream bis = new BufferedInputStream(fis, 1024);
			DataInputStream dis = new DataInputStream(bis);
			
			System.out.print("입력: ");
			int x = dis.read();
			System.out.println("입력된 데이터는 " + (char)x + "이다.");
			dis.close();
			*/

                        // 파일 입력
			File f = new File("./stream_io_test.txt");
			FileInputStream fis = new FileInputStream(f);
			BufferedInputStream bis = new BufferedInputStream(fis, 1024);
			DataInputStream dis = new DataInputStream(bis);
			
			while(true) {
				int x = dis.read();
				if (x<0) break;
				System.out.print((char)x);
			}
			
			dis.close();
		} catch (Exception e) {}
	}

}


Posted by 후니아부지
:

가끔 영문 주소가 필요한 경우가 있는데 이를 변환하는 방법을 알아보자.


주소 확인을 위한 전용 사이트(도로명주소 안내시스템)나 네이버, 다음과 같은 포털에서 검색을 해도 된다.


※ 현재(2014-02-20) '도로명주소 안내시스템'과 '네이버'는 도로명주소에 대한 영문주소만,

    '다음'은 지번, 도로명주소 모두 영문주소 변환을 제공한다.


두 경우 모두를 지원하는 다음에서 검색을 해보겠다.

검색 창에서 '영문주소변환' 이라는 키워드로 검색을 하면 다음과 같이 주소를 입력하는 화면이 나온다.


직접 주소를 입력하고 검색 버튼을 누르면 해당 주소가 변환되어 나타날 것이다.


또는 검색창에 '주소' + '영문주소' 형태로 검색을 해도 동일한 결과가 나온다.


지번, 도로명 주소 모두 잘 변환되어 나타난다.


그러나 아파트의 동, 호수와 같은 세부 내용까지는 변환할 수 없다.

이는 직접 바꿔야하는데 아파트, 건물, 다세대주택 등과 같이 여러 형태의 건물에 따라 표기 방법이 조금씩 다르다.


1. 아파트

아파트의 이름까지 변환된다면 동, 호수만 쓰면되는데

예를 들어, 101동 201호의 경우 101-#201 처럼 쓰면 된다.


아파트 이름이 나오지 않는 경우는 발음나는대로(주소를 읽는 사람이 알아볼 수 있을정도) 써주고 Apt 를 붙이면 되겠다.


특정 주소로 전체 주소를 적어보면 

김해시 관동동 부영e그린9차아파트 101동 201호 일 경우에 주소 변환을 하면 다음과 같이 나온다.


세부 주소까지 변환하면 아래와 같다.

101-#201, Buyeong e-green 9-cha Apt., Gwandong-dong, Gimhae-si, Gyeongsangnam-do, Korea



2. 다세대 주택, 빌라 등

지번으로 조회했을 경우 우편번호를 기준으로 특정 범위의 지번이 표시된다.

위 빨간 영역에 해당 지번을 쓰면 된다. 

도로명주소의 경우 '***길 25-6' 이런 형태을 것인데, 25-6을 위 빨간 영역에 쓰면 된다.

빌라 이름이 있다면 지번 앞에 써주면 되겠다. 주소를 읽을 상대방이 읽기 쉽도록 쓸 것!!

호실의 경우는 아파트와 마찮가지로 #을 붙이면 된다.

경상남도 창원시 의창구 서상동 54-7번지 땡땡빌라 202호
#202, ddang-ddang-villa ,54-7 ,Seosang-dong, Uichang-gu, Changwon-si, Gyeongsangnam-do, Korea


3. 단독주택
2번 예에서 지번까지만 쓰면 된다.

경남 창원시 마산회원구 양덕1동 5-1번지
5-1, Yangdeok 1(il)-dong, Masanhoewon-gu, Changwon-si, Gyeongsangnam-do, Korea


4. 빌딩, 사무실
2번의 빌라 이름이 있는 경우와 유사하다.
다만 건물 이름 앞에 층수를 써주면 된다. 2층 -> 2F

경남 창원시 마산회원구 양덕1동 땡땡빌딩 3층 304호
#304, 3F ddang-ddang-building, Yangdeok 1(il)-dong, Masanhoewon-gu, Changwon-si, Gyeongsangnam-do, Korea



※ 참고로 우편번호는 우리나라에서 쓰는 체계 그대로 사용하면 된다.
123-456





Posted by 후니아부지
:

C 연산자 우선순위

앎/c_cpp 2014. 2. 19. 01:33 |


 연산 순위

 연산자 

 결합 순서

 1

 ()    []    ->    .

      →

 2

 !    ~    ++    --    -    +    (형명)    *    &    sizeof

  ←    

 3

 *    /    %

      →

 4

 +    -

      →

 5

 <<    >>

      →

 6

 <    <=    >    >=

      →

 7

 ==    !=

      →

 8

 &

      →

 9

 ^

      →

 10

 |

      →

 11

 &&

      →

 12

 ||

      →

 13

 ?   :

 ←   

 14

 =    op=

 ←   

 15

 ,

      →


' > c_cpp' 카테고리의 다른 글

C 에서 Boolean 타입 사용  (0) 2014.02.18
Posted by 후니아부지
:

ASCII, HTML Code Table

앎/common 2014. 2. 19. 01:15 |
Posted by 후니아부지
:

C99 이전의 C에서는 Boolean 타입이 존재하지 않았다.

따라서 bool 타입을 따로 정의해서 사용했다.

typedef int bool
#define false 0
#define true 1

bool b = false;

C99 에 들어와서는 Boolean 타입을 지원하게 되었다.


stdbool.h 의 내용을 보면 아래와 같다.
#ifndef __cplusplus

#define bool	_Bool
#define true	1
#define false	0

#else /* __cplusplus */

/* Supporting  <stdbool.h> in C++ is a GCC extension.  */
#define _Bool	bool
#define bool	bool
#define false	false
#define true	true

#endif /* __cplusplus */

/* Signal that all the definitions are present.  */
#define __bool_true_false_are_defined	1


위 내용처럼 C나 C++ 에서 모두 bool 타입으로 사용하면 된다.

#include <stdbool.h>

bool b = true;

' > c_cpp' 카테고리의 다른 글

C 연산자 우선순위  (0) 2014.02.19
Posted by 후니아부지
: