'OS > LINUX' 카테고리의 다른 글
메모리 실시간 체크 (0) | 2018.07.04 |
---|---|
리눅스 errno (0) | 2018.07.03 |
리눅스 파일 복사 (0) | 2018.03.28 |
리눅스 로그 표시 제거 (0) | 2018.01.03 |
리눅스 라이브러리 생성(동적,정적) (0) | 2017.10.12 |
메모리 실시간 체크 (0) | 2018.07.04 |
---|---|
리눅스 errno (0) | 2018.07.03 |
리눅스 파일 복사 (0) | 2018.03.28 |
리눅스 로그 표시 제거 (0) | 2018.01.03 |
리눅스 라이브러리 생성(동적,정적) (0) | 2017.10.12 |
http://cppcheck.sourceforge.net/
컴파일러 경고, 에러 종류 (0) | 2018.10.08 |
---|---|
stack, heap (0) | 2018.07.03 |
형식지정자 (printf, sprintf 숫자, 문자 출력) (0) | 2016.08.09 |
[C언어] open flag (0) | 2015.07.14 |
time 함수 (0) | 2015.04.21 |
tortoiseSVN을 사용하든, shell에서만 사용하든 하나만 사용해야 하는데 나의 작업 환경 상 tortoiseSVN이
느려서 같이 쓰다보니 자꾸 충돌이 나는 것 같다..
1. svn: database disk image is malformed
->
sqlite3이 설치가 안되서 애먹었는데 설치하고서 그대로 따라했더니 바로 해결됨.
위 방법으로 해결이 안되면 아래처럼 노가다가 좀 필요..아래 과정 중 생략해도 되는 것이
있을텐데...아직은 어디를 생략해도 될 지 모름..
[노가다]
1) 기존 svn 폴더 명을 다른 이름으로 rename하고 문제가 생겼던 폴더 내용 삭제하거나 백업
2) 기존 svn 폴더 명으로 폴더를 만들고 거기에서 checkout를 다시 받는다.
3) 문제가 생겼던 폴더 명의 checkout이 완료되면 checkout stop
4) 기존 svn 폴더 명안에 .svn 폴더를 다른 이름으로 변경한 폴더에 overwrite 한다.
5) rename 했던 폴더를 원래 폴더 명으로 변경
6) 문제가 있었던 폴더로 가서 svn up
2. svn: E155009: Failed to run the WC DB work queue associated with
-> sqlite3 .svn/wc.db "delete from work_queue"
참고사이트: https://changilkim.wordpress.com/2012/12/10/svn-cleanup-fails/
svn 저장소 이동(windows에서 windows로) (0) | 2024.11.19 |
---|---|
svn 운영 관리 (0) | 2018.07.04 |
기본 커밋 메시지 설정 (0) | 2017.12.27 |
commit 모니터링 (0) | 2014.05.13 |
http://blog.naver.com/PostView.nhn?blogId=yababies&logNo=220029067066&parentCategoryNo=&categoryNo=34&viewDate=&isShowPopularPosts=true&from=search
에서 JSON 타입의 데이터 통신을 할 일이 생겼다. 참 난감했다.
JSON이 뭔지도 모르는데 JSON 타입으로 통신을 하라니...
naver사전을 보면 아래와 같다.
JSON(제이슨, JavaScript Object Notation)은, 인터넷에서 자료를 주고받을 때 그 자료를 표현하는 방법이다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다. 그 형식은 자바스크립트의 구문 형식을 따르지만, 프로그래밍 언어나 플랫폼에 독립적이므로 C, C++,C#, 자바, 자바스크립트, 펄, 파이썬 등 많은 언어에서 이용할 수 있다. |
자 이제 가능하다는 것을 알았으니 한번 해 보자.
1. library받기
사용하기 위해서 아래사이트에서 우측 메뉴에서 Download Zip을 통해 library를 받자.
https://github.com/json-c/json-c
2. library 컴파일
컴파일은 받은 파일의 압축을 풀고 ./configure, make, make install ( root user )을 실행하면 된다.
./configure를 default로 하면 header는 /usr/local/include/json 아래에 라이브러리는 /usr/local/lib에 copy된다.
header나 library를 다른 위치에 copy하고 싶으면 아래와 같이 하고 이때는 make install을 꼭 root user로 할 필요는 없다.
./configure --libdir=/home/lib --includedir=/home/include
또한 .so가 싫을 경우 아래와 같이 하면 .a가 만들어진다.
./configure --enable-static=yes --enable-shared=no
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | \/]$ ls ./ ../ json-c-json-c-0.11-20130402.tar \/]$ \/]$ \/]$ tar xvf json-c-json-c-0.11-20130402.tar json-c-json-c-0.11-20130402/ json-c-json-c-0.11-20130402/.gitignore json-c-json-c-0.11-20130402/AUTHORS json-c-json-c-0.11-20130402/Android.configure.mk json-c-json-c-0.11-20130402/COPYING json-c-json-c-0.11-20130402/ChangeLog json-c-json-c-0.11-20130402/Doxyfile json-c-json-c-0.11-20130402/INSTALL ..... \/]$ \/]$ cd json-c-json-c-0.11-20130402 \/]$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make sets $(MAKE)... (cached) yes checking for style of include used by make... GNU checking for gcc... gcc ..... \/]$ make \/]$ su - root \/]# cd json-c-json-c-0.11-20130402 \/]# make install |
3. 소스 테스트
자 이제 간단한 소스를 짜서 테스트 해 보자.
아래는 json.c 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <json/json.h> int main(int argc, char **argv) { json_object *myobj, *dataobj; // 메모리 할당 myobj = json_object_new_object(); dataobj = json_object_new_object(); json_object_object_add(dataobj, "test1", json_object_new_int(1)); json_object_object_add(dataobj, "test2", json_object_new_string("TEST2")); json_object_object_add(myobj, "testData", dataobj); printf("myobj.to_string()=%s\n", json_object_to_json_string(myobj)); // 메모리 해제 json_object_put(dataobj); json_object_put(myobj); return(0); } |
Makefile 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | CC = gcc INC = -I. LIBS = -ljson-c CFLAGS = -O2 -g -Wall ${INC} json : json.o $(CC) $(CFLAGS) -o $@ $< $(LIBS) clean : rm -f *.o core .SUFFIXES: .o .c.o : $(CC) $(CFLAGS) -c $< |
컴파일 및 실행해 보면 아래와 같이 나옵니다.
1 2 3 4 5 6 7 8 9 | \/]$ \/]$ make json gcc -O2 -g -Wall -I. -c json.c gcc -O2 -g -Wall -I. -o json json.o -ljson-c \/]$ \/]$ json myobj.to_string()={ "testData": { "test1": 1, "test2": "TEST2" } } \/]$ |
이상으로 간단하게 json library 설치 및 테스트에 대한 포스팅을 마칩니다.
[출처] [LINUX C] C언어에서 JSON (JSON-C) 사용하기|작성자 김부자
http://maeuminpaper.tistory.com/106
리눅스 errno (0) | 2018.07.03 |
---|---|
리눅스 pipe (0) | 2018.07.03 |
리눅스 로그 표시 제거 (0) | 2018.01.03 |
리눅스 라이브러리 생성(동적,정적) (0) | 2017.10.12 |
GDB 사용법 (0) | 2017.06.30 |
출처: 솔내시스템
https://blog.naver.com/eztcpcom/221009285557
TCP 테스트(send, receive)를 할 수 있는 프로그램 입니다.
이거저거 찾아봤는데 이게 제일 나은 듯 하네요.
찾았던 프로그램
- tcpip server&client sw
- TestClient+
- SocketTest3
- tcptesttool
- tcp/ip builer 1.9
- tcp test tool 3.0
TCP 제어플래그 (0) | 2024.08.07 |
---|---|
tftp로 파일 복사 (0) | 2019.09.06 |
socket 통신 (0) | 2016.10.28 |
집에서 사용하는 인터넷 고정 ip 사용하기 (0) | 2014.11.05 |
무선랜 WPA-PSK와 WPA2-PSK 방식에서 TKIP와 AES 암호화 방식 사용의 혼동 (0) | 2010.06.03 |
$@ | 목표 이름 |
$* | 목표 이름에서 확장자가 없는 이름 |
$< |
조건 파일 중 첫번째 파일 |
$? | 목표 파일 보다 더 최근에 갱신된 파일 이름 |
문법
$(addsuffix 접미사, 문자열 ) ex) $(addsufix .c, memo main) => memo.c main.c
$(addprefix 접두더, 문자열 ) ex) $(addprefix src/, memo main) => src/memo src/main
$(shell shell command) ex) SH = $(shell ls *.c) => shell 명령에 대한 결과가 변수에 들어감
$(subst 찾을 문자, 변경할 문자, 대상 문자) => "대상문자"에서 "찾을 문자"를 "변경할 문자"로 변경해 준다.
$(patsubst 찾을 패턴, 변경할 패턴, 대상 문자) => subst와 기능은 동일하나 확장자를 바꿀때 사용함
$(strip 대상문자 ) => 대상문자에서 모든 공백을 1칸으로 줄인다. 여백이 많아도 모두 1칸으로
$(filter 찾을 문자, 대상문자) => 대상문자에서 찾을 문자를 포함한 문자들을 찾아서 저장한다.
$(filter-out 찾을 문자, 대상문자) => filter와 반대로 찾을 문자가 있는 경우를 제외하고 저장한다.
$(join 원본문자, 붙일문자) => 원본문자와 붙일문자를 붙여서 한 문자로 만든다.
$(dir 대상문자) => 대상문자에서 파일문자를 제외한 경로명만 추출한다.
$(notdir 대상문자) => 대상문자에서 파일명만 추출한다.
$(baseanme 대상문자) => 대상문자에서 확장자를 제외한 문자를 알려준다.
$(eval func_call)
- eval
우리가 만든 함수를 호출하는 것은 내장함수 call입니다. call은 단순히 우리가 만든 함수를 call이 호출되는 부분에 치환하는 일만을 합니다. 따라서 우리가 만든 함수가 빌드 규칙을 만들기 위한 함수라면 call만으로는 빌드 규칙을 생성할 수 없습니다.
mkdir -p (no error if existing, make parent directory as needed)
<펌 : http://codenakseo.egloos.com/4801079>
<추가 사항>
이 부록은 GNU make
가 이해하는 지시어, 텍스트 조작 함수, 그리고 특수 변수들에 대해서 요약한 것이다. 다른 요약들을 보고자 한다면 See section 특수 내장 타겟 이름(Special Built-in Target Names), section 묵시적 규칙들의 카달로그(Catalogue of Implicit Rules), and section 옵션들의 요약(Summary of Options).
다음은 GNU make
가 인식하는 지시어들을 요약한 것이다:
define variable
endef
ifdef variable
ifndef variable
ifeq (a,b)
ifeq "a" "b"
ifeq 'a' 'b'
ifneq (a,b)
ifneq "a" "b"
ifneq 'a' 'b'
else
endif
include file
override variable = value
override variable := value
override variable += value
override define variable
endef
override
지시어.export
make
에게 차일드 프로세스들에게 디폴트로 모든 변수들을 익스포트하도록 지시.make
에 대한 통신 변수(Communicating Variables to a Sub-make
).export variable
export variable = value
export variable := value
export variable += value
unexport variable
make
에게 특정한 변수를 차일드 프로세스들에게 익스포트할 것인가 아닌가를 지시한다.make
에 대한 통신 변수(Communicating Variables to a Sub-make
).vpath pattern path
vpath
지시어.vpath pattern
vpath
vpath
지시어에 의해서 사전에 지정된 모든 검색 경로들을 제거.다음은 텍스트 조작 함수들의 요약이다 (see section 텍스트 변환을 위한 함수(Functions for Transforming Text)): Here is a summary of the text manipulation functions (see section 텍스트 변환을 위한 함수(Functions for Transforming Text)):
$(subst from,to,text)
$(patsubst pattern,replacement,text)
$(strip string)
$(findstring find,text)
$(filter pattern...,text)
$(filter-out pattern...,text)
$(sort list)
$(dir names...)
$(notdir names...)
$(suffix names...)
$(basename names...)
$(addsuffix suffix,names...)
$(addprefix prefix,names...)
$(join list1,list2)
$(word n,text)
$(words text)
$(firstword names...)
$(wildcard pattern...)
wildcard
함수(The Function wildcard
).$(shell command)
shell
함수(The shell
Function).$(origin variable)
make
변수 variable 가 정의된 방법을 설명하는 문자열을 리턴. origin
함수(The origin
Function).$(foreach var,words,text)
foreach
함수(The foreach
Function).다음은 완전한 정보를 대신할 자동 변수들See section 자동 변수들(Automatic Variables)의 요약이다.
$@
$%
$<
$?
make
사용하기(Using make
to Update Archive Files)).$^
$+
make
사용하기(Using make
to Update Archive Files)). $^
의 값은 중복된 종속물들을 생략한다. 반면에 $+
는 그들을 그대로 가지고 그들의 순서를 유지한다.$*
$(@D)
$(@F)
$@
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.$(*D)
$(*F)
$*
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.$(%D)
$(%F)
$%
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.$(<D)
$(<F)
$<
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.$(^D)
$(^F)
$^
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.$(+D)
$(+F)
$+
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.$(?D)
$(?F)
$?
의 디렉토리-안에 있는-파일 부분과 디렉토리 부분.다음 변수들은 GNU make
에 의해서 특별하게 사용된다:
MAKEFILES
make
의 모든 실행때마다 읽히는 makefile들. MAKEFILES
변수(The Variable MAKEFILES
).VPATH
VPATH
: 모든 종속물에 대한 검색 패스(Search Path for All Dependencies).SHELL
SHELL
을 설정할 수 있다. See section 명령 실행(Command Execution).MAKESHELL
make
에 의해서 사용되는 명령 해석기의 이름. 이 값은 SHELL
의 값보다 우선한다. See section 명령 실행(Command Execution).MAKE
make
가 호출된 이름. 이 변수를 명령에서 사용하는 것은 특수한 의미가 있다. See section MAKE
변수가 작동하는 방법(How theMAKE
Variable Works).MAKELEVEL
make
들의).make
에 대한 통신 변수(Communicating Variables to a Sub-make
).MAKEFLAGS
make
에 주어진 플래그들. 플래그들을 설정하기 위해서 환경에서나 makefile 안에서 이것을 설정할 수 있다.make
에 대한 통신 옵션(Communicating Options to a Sub-make
).MAKECMDGOALS
make
에 대해서 명령행에서 주어진 타겟. 이 변수를 설정하는 것은 make
의 작업에 어떤 영향도 미치지 않는다. CURDIR
-C
옵션들이, 있다면 처리된 후)의 경로명으로 설정된다. 이 변수를 설정하는 것은 make
의 작업에 어떤 영향도 미치지 않는다.make
의 재귀적 사용(Recursive Use of make
).SUFFIXES
make
가 makefile 들을 읽기 전의 접미사들의 디폴트 리스트.
makefile or (0) | 2017.03.14 |
---|
수행문 옆에 "> /dev/null"을 붙여서 입력
리눅스 pipe (0) | 2018.07.03 |
---|---|
리눅스 파일 복사 (0) | 2018.03.28 |
리눅스 라이브러리 생성(동적,정적) (0) | 2017.10.12 |
GDB 사용법 (0) | 2017.06.30 |
리눅스 폴더 복사 이동 삭제 (0) | 2017.03.21 |
1. TortoiseSVN->Properties 선택
2. New->Other 선택
3. Property name을 tsvn:logtemplate로 선택
4. 기본으로 보여줄 text 추가하고 저장
svn 저장소 이동(windows에서 windows로) (0) | 2024.11.19 |
---|---|
svn 운영 관리 (0) | 2018.07.04 |
svn error (1) | 2018.05.08 |
commit 모니터링 (0) | 2014.05.13 |