본문 바로가기
  • AI (Artificial Intelligence)

Programming74

[Java] Java에서 JSON 사용하기 package kr.test.acanet; import java.io.*;import org.json.simple.*; public class JavaJSON { public static void main(String[] args) { //Json 객체 생성. JSONObject jobj = new JSONObject(); jobj.put("name", "wdkang"); jobj.put("company", "acanet"); jobj.put("age", "26"); //Json Array 생성. JSONArray maglist = new JSONArray(); maglist.add("JSON test"); maglist.add("hello JSON"); jobj.put("list", maglist); .. 2014. 11. 8.
JAVA: 객체 직렬화, 멀티 쓰레드(Thread) ★ 객체 직렬화 일반적으로 메모리에 생성된 객체의 인스턴스는 "비영속성"을 갖는다. 파일이나 데이터베이스에 저장된 데이터처럼 영속성을 가지기 위해서 자바에서는 '객체 직렬화' 기능을 제공한다. 객체 직렬화를 사용하면 파일이나 네트워크를 통해 영속성을 유지할 수 있다. 클래스 3개가 필요하다. 1. Person - 게터와 생성자를 사용해서 이름과 나이를 불러온다. - Serializable을 implements 해오는 게 특징. 보통 인터페이스의 용도는 강제로 오버라이딩을 하는 것이 목적인 경우가 많지만, 여기서는 Serializable의 기능을 사용할 수 있게 하는 의미로 쓰인다. 2. 파일 저장 (FileOutputStream) - serial.dat이라는 파일 안에 생성자의 내용을 불러들여 저장해 줌.. 2014. 11. 3.
jQuery의 JSONP 를 사용한 크로스 도메인 통신 AJAX를 이용하여 페이지간 비동기 통신을 하는데 서로 주고받는 데이터는 text, XML, JSON type으로 많이 쓰인다. 하지만 AJAX 호출을 필요로 하는 기능에서 보안상 이유로 동일 서버 이외에는 접근할수가 없다. ( not allow access.. 어쩌고 저쩌고 에러 메세지가 나온다.) 자바스크립트(Javascript) 보안 정책 중에 하나인 동일근원정책(Same-Origin Policy) 정책에 걸리는 부분이 바로 크로스 도메인을 할때 일어난다. 서로 다른 도메인에서 자바스크립트로 접근하려 했을 때 혹은 다른 서버에 Ajax통신의 결과를 받을 때 보안상 접근을 거부한다는 뜻이다. * 동일 근원 정책 참조 >> 동일출처정책(Cross domain 이슈) http://enterkey88.ti.. 2014. 10. 22.
XHR(Ajax) > Comet > HTML5 WebSockets 1. WebSodkets 란? }하나의 TCP소켓 연결로 쌍방향 통신을 지원하는 기술. 웹서버와 브라우저에서 구현되기 위해 고안되었지만 모든 클라이언트와 서버 프로그램간에서 사용 가능. WebSocket API는 W3C(http://www.w3.org/TR/websockets/#network-intro)에서 정의하고 있고, WebSocket 프로토콜은 IETF(Internet Engineering Task Force) 에 의해 정의 됨. }HTTP, FTP, TELNET 등과 같은 Application layer의 프로토콜 사용. }80번 이외의 포트로 시도되는 일반적인 TCP 연결은 관리자의 보안 정책에 따라 막히는 경우가 많기 때문에 이런 제약을 극복할 수 있는 방법이 될 수 있음. 2. 배경 }19.. 2014. 10. 22.
[JavaScript] Ajax - XMLHttpRequest(XHR) Same-Origin 정책(동일근원정책) 브라우저에는 동일 근원 정책이 있음. 같은 도메인 안에서만 XHR 호출이 가능 - SOP XMLHttpRequest(XHR) Ajax 는 Asynchronous JavaScript and XML의 약자 비동기 통신 페이지 전체를 로드하지 않고 일부분만 로드하여 DOM을 사용하여 내용을 추가하거나 바꿀 수 있다. XHR의 순서 1. XHR선언 2. 옵션 ( 콜백함수 설정) 3. 서버에 HTTP요청 4. 콜백함수에서 서버의 응답 받아와서 처리 1. XHR 선언 var XHR = new XHLHttpRequest(); 익스플로러 경우에 따라 var XHR = new ActiveXObject("Msxml2.XMLHTTP"); var XHR = new ActiveXObje.. 2014. 10. 22.
[Java] 서버/클라이언트 소켓(Socket) 통신하기 먼저 서버를 만들 자바 코드를 알아보고, 뒤에는 안드로이드에서 소켓 통신을 위한 설정과정을 간단한 예제를 통해서 알아보겠습니다. STEP 1 Java Source Code 자바 코드는 두 가지를 다루게 됩니다. 처음은 서버를 돌리는 데 필요한 자버 코드를 알아보고, 두 번째는 안드로이드 클라이언트 코드를 알아보겠습니다. [ 서버 ] TCP Server Java Code import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import .. 2014. 10. 14.
[Java] '지정된 크기 - 숫자 자리수'만큼 숫자 왼쪽을 0 으로 채우기 1. 컬럼의 지정된 크기가 있고, 컬럼 값이 숫자일 때, '지정된 크기 - 숫자 자리수'만큼 숫자 왼쪽을 0 으로 채우기 1) 언제 사용하는가? - 인터페이스 전문 테스트 데이터를 직접 만들 때 - 전문에서는 전문 항목이 숫자일 경우, '지정된 크기 - 숫자 자리수'만큼 숫자 왼쪽을 0 으로 채운다. 2) 어떻게 쓰는가? = REPT("0", 지정된 크기 - LEN(컬럼))&컬럼 ex ) REPT("0",6-LEN(A1))&A1 3) JAVA 에서는 어떻게 쓰는가? String a = String.format("%06d", 1) : 0 은 왼쪽에 채울 숫자, 6 은 자릿수, 1은 실제 숫자 값 출처 : http://hyoseokchoi.tistory.com/12 2014. 10. 7.
JAVA JSON 라이브러리 Jackson 사용법 참조 : 1. http://jackson.codehaus.org/ 2. http://wiki.fasterxml.com/JacksonInFiveMinutes 라이브러리 다운로드 http://wiki.fasterxml.com/JacksonDownload jackson-core, jackson-databind, jackson-annotations 를 다운 받음. Jackson 에서 JSON 처리에 제공하는 방법 1. Streaming API 성능이 빠름. 2. Tree Model 일반적인 XML처럼 노드형태로 Json 데이터를 다룸. 유연성이 가장 좋음. 입맛대로 구성할 수 있음. 3. Data Binding POJO 기반의 가자 객체들을 JSON으로 변환함. -Simple data Binding : 자바클래.. 2014. 9. 11.
Spring에서 Json으로의 입출력 정리 이번에 프로젝트를 진행하면서 Spring에서 사용하는 Jackson Json 라이브러리를 조금 디테일하게 이용해야 하는 상황이 생겨서 이에 대한 내용을 정리하고자 한다.일단 Json과 관련되어 작업의 내용은.. Java 객체에 저장된 값을 Json 형태로 변환하여 Request Body에 실어서 보내야 한다(이때 String 형 변수가 아닌 다른 형(ex : int 형)을 String 형태(쌍따옴표로 감싼 형태 : "123")로 보내야 한다.Java 객체에 저장된 값을 Json 형태로 변환하여 보낼때 선별적으로 보낼수 있어야 한다. (무슨뜻이냐면 Json으로 보낼때 모든 필드를 다 사용하는것이 아니라 특정 필드는 제외해서 사용할 수 있어야...) Request의 Body로 온 Json 내용을 Java 객.. 2014. 9. 11.
Jackson Tutorial - 2 Examples Full Data Binding (POJO) Example Simple Data Binding Example Data Binding with Generics Three Model Example Streaming API Example Full Data Binding(POJO) Example Jackson's org.codehaus.jackson.map.ObjectMapper "just works" for mapping JSON data into plain old Java objects ("POJOs"). Json data { "name" : { "first" : "Joe", "last" : "Sixpack" }, "gender" : "MALE", "verified" : false, "use.. 2014. 9. 11.
Jackson Tutorial - 1 Jackson tutorial(http://wiki.fasterxml.com/JacksonInFiveMinutes) 차례 JSON Three Ways Examples Full Data Binding (POJO) Example Simple Data Binding Example Data Binding with Generics Three Model Example Streaming API Example JSON Three Ways Jackson은 JSON 데이터를 처리하기 위한 세가지 방법을 제공한다. Streaming API(aka Incremental Processing, or Token Streams) http://wiki.fasterxml.com/JacksonStreamingApi Streaming AP.. 2014. 9. 11.
Jackson How-To: Ignoring Unknown Properties Jackson How-To: Ignoring Unknown Properties http://wiki.fasterxml.com/JacksonHowToIgnoreUnknown JSON 데이터를 자바 객체로 바인딩 할 때, JSON은 모든 프로퍼티가 자바 객체에 일치할 필요가 있다. 자바 객체의 프로퍼티와 일치하지 않는 프로퍼티를 만난다면 Exception이 발생하게 된다. Sometimes, Unknown Properties에 대해 예외를 발생시키지 않고 Ignore 해야 할 필요가 있다. Add "Any setter" to handle any unknown properties @JsonAnySetter 어노테이션으로 특정 메소드를 명시해 주는 방법.(자동으로 되지 않는다.) // note: name doe.. 2014. 9. 11.
[C언어]strcmp함수 위 표를 보다시피 strcmp() 의 원형은 int strcmp(const char * str1, const char * str2) 가 되겠다 strcmp() 는 1번인자와 2번인자의 문자열 크기를 대소비교 하여 int형으로 값을 반환해 주는 함수다 두 인자의 문자열이 같으면 '0'을 반환해주며 같지 않을때에는 '0'이 아닌 수를 반환한다. 그러면, '0'이 아닌수가 의미하는 바는 무엇일까?? 문자열이 같을 때 #include #include int main() { char str1[100] = "banana"; char str2[100] = "banana"; printf("%d\n",strcmp(str1,str2)); return 0; } 접기 0 접기 문자열이 다를 때 #include int main.. 2014. 7. 18.
다시쓰는 C언어 강좌] 079 - 열거형 - enum 이번엔 구조체나 공용체와 완전히 다른 형식이지만 역시 뭔가 모아 놓고 쓸 수 있는 열거형(enumeration)입니다. 열거형은 여러 문자열을 하나의 그룹으로 만들어 놓고 각각 번호를 붙여서, 그 키워드가 곧 값이 되는 상수와도 비슷한 존재인데 #include enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; int main() { enum week Day = Sun; printf("Sun: %d\n", Day); Day = Tue; printf("Tue: %d\n", Day); Day = Fri; printf("Fri: %d\n", Day); return 0; } 단, 열거형으로 선언한 상수 집단을 쓰고 싶다면 그 열거형으로 변수를 선언해야 합니다. 저렇게요. 그 뒤 .. 2014. 7. 18.
파싱(Parsing)강좌 Ⅰ.파싱(Parsing)이란? 파싱이란 자료를 원하는 형태로 가공하는 방식(?)입니다! Ⅱ.파싱(Parsing)에 필요한 함수 기본적으로 파싱을 할 때엔 일반적으론 2가지 함수를 이용하는 방식으로 할 수 있습니다. Split함수와 Mid, Instr함수 입니다. Mid함수는 Left, Right함수로 대체 할 수 있습니다. 그럼 파싱하는 방법을 알기 이전에 Split함수와 Mid, Instr함수의 사용방법을 알고 넘어가 봅시다. Split 함수는 ‘나누다’ 란 뜻을 가진 단어인데요, 말 그대로 정해놓은 구분자로 나누는 함수입니다. Split(문자열, 구분자)(배열) 일반적으로 이런 식으로 사용합니다. * Split 함수Tip. 읽어보지 않아도 됩니다. * 또한 무한배열(Ex: Dim ABC() As 형식.. 2014. 5. 23.
비동기 입출력 프로그래밍 1 비 동기 입출력 프로그래밍 1.1 입출력 모델 소켓 응용 프로그램을 개발하다보면 종종 봉쇄(blocking) 소켓, 비 봉쇄(non-blocking) 소켓이란 말을 듣는다. 봉쇄 소켓 보다 비 봉쇄 소켓이 성능이 좋다느니, 이런 경우에는 비 봉쇄 소켓을 사용해야 한다느니 하는 것들이 그것이다. 특히 요즘에는 단일 프로세스 (단일 쓰레드)처리 방식이 선호되면서, 비 봉쇄 소켓에 대한 관심이 많아지고 있다. 봉쇄 모델과와 비 봉쇄모델은는 프로그램이 어떤 상태로 작동하는 지를 묘사한다. 함수호출을 한 영역에서 프로그램이 (반환 될 때까지)대기 하면, 봉쇄 모델 그렇지 않으면 비 봉쇄 모델라고 한다. 동기 / 비 동기는 데이터 상태와 관련된다. 데이터의 입출력 상태를 서로가 알면 동기, 그렇지 않으면 비 동.. 2014. 4. 16.
Chapter 1. C++ 시작하기 pdf 파일 Chapter 1. C++ 시작하기 완성본 입니다. 나중에 변경될 수도 있겠지요. ~~ pdf 파일로 올려둡니다. 망극! 대부분의 컴파일은 리눅스상에서 g++를 사용해서 컴파일하는것으로 구성했어요. 출처 : http://www.lug.or.kr/m/bbs/list.php?bo_table=cpp#view.php?bo_table=cpp&wr_id=2&page=2 (해당 링크를 따라가시면 제법 괜찮은 내용이 있습니다) 2014. 3. 31.
[C#] Queue, Thread, AutoReset 운영체제 Windows7 최초 작성일 2013/12/10 프로그램 및 버전 VisualStudio2010/.Net FW 4.0 마지막 수정 작성일 - ※ 주의사항 - 1. 작업개요 이 포스팅 역시 제가 나중에 써먹기 위해서 작성하는 글 입니다. 이 포스팅에서 다뤄지는 내용은 Queue, Thread, AutoReset 입니다. 시나리오는 DB에 저장되는 데이터가 꾸준하게 들어옵니다.(누군가가 팍팍 던져 주겠지요.) 그것을 받아서 DB에 입력을 해야하는데 들어오는 데이터량이 많아 받고쓰고받고쓰고 하면 속도가 어마어마하게 걸릴 것 입니다. 그래서 들어오는 데이터는 Queue에 저장하고 다른 Thread로 그 Queue에 담긴 데이터를 DB에 입력하려고 합니다. 지금은 DB에 입력하는 부분이지만 시리얼통신, .. 2014. 3. 31.