expat-2.0.1 에 포함되어있는 예제파일인
elements.c를 약간 변형하여

XML tag로 출력되도록 약간 수정하였다.
컴파일에 필요한 libexpat.lib 파일과 expat.h 파일
그리고 테스트용 XML 파일(youtube page)가 포함되어있다.
(libexpat.lib는 내부적으로 libexpat.dll을 호출하는 것으로 보인다.)



/* This is simple demonstration of how to use expat. This program
reads an XML document from standard input and writes a line with
the name of each element to standard output indenting child
elements by one tab stop more than their parent element.
It must be used with Expat compiled for UTF-8 output.
*/

#include "stdio.h"
#include "expat.h"

#if defined(__amigaos__) && defined(__USE_INLINE__)
#include "proto/expat.h"
#endif

#ifdef XML_LARGE_SIZE
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
#define XML_FMT_INT_MOD "I64"
#else
#define XML_FMT_INT_MOD "ll"
#endif
#else
#define XML_FMT_INT_MOD "l"
#endif

static void XMLCALL
startElement(void *userData, const char *name, const char **atts)
{
	int i;
	int *depthPtr = (int *)userData;
	for (i = 0; i < *depthPtr; i++)
		putchar('\t');
	printf("<%s>\n",name);
//	puts(name);
	*depthPtr += 1;
}

static void XMLCALL
endElement(void *userData, const char *name)
{
	int i;
	int *depthPtr = (int *)userData;
	*depthPtr -= 1;
	for (i = 0; i < *depthPtr; i++)
		putchar('\t');
	printf("</%s>\n",name);
	//	puts(name);
}

int
main(int argc, char *argv[])
{
	FILE *fp;
	char buf[BUFSIZ];
	XML_Parser parser = XML_ParserCreate(NULL);
	int done;
	int depth = 0;
	
	fp = fopen("GetRecentlyFeaturedVideoFeed.xml","r");
	
	XML_SetUserData(parser, &depth);
	XML_SetElementHandler(parser, startElement, endElement);
	do {
		int len = (int)fread(buf, 1, sizeof(buf), fp);
		done = len < sizeof(buf);
		if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
			fprintf(stderr,
				"%s at line %" XML_FMT_INT_MOD "u\n",
				XML_ErrorString(XML_GetErrorCode(parser)),
				XML_GetCurrentLineNumber(parser));
			return 1;
		}
	} while (!done);
	XML_ParserFree(parser);
	fclose(fp);
	return 0;
}

'프로그램 사용 > expat & XML' 카테고리의 다른 글

xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat  (4) 2010.03.21
Posted by 구차니
개소리 왈왈2010. 3. 23. 18:43
쿨한 대대장
끝내는데 2분도 안걸려!


But!!
예정시간대로 6시에 끝내주다니 ㄱ-

'개소리 왈왈' 카테고리의 다른 글

리눅스 마스터 1급 합격!  (10) 2010.03.26
해외 천주교에서 3D 방송시작?  (2) 2010.03.24
친구야! 니가 이 패턴을 쓰다니!!  (4) 2010.03.18
아! 스킨 + 웹로그 ㅠ.ㅠ  (6) 2010.03.15
달 (moon)  (5) 2010.03.08
Posted by 구차니
문득 항상 헤드라인에 성범죄자 신상이라던가,
새로운 범죄자가 기사에 나오는데

이것도 또 다른 3S 정책인가? 라는 생각이든다.

[링크 : http://ko.wikipedia.org/wiki/3S_정책]
Posted by 구차니
개소리 왈왈/자전거2010. 3. 22. 11:20
저번주 토요일에는 황사가 심했는데,
일요일에 이상하리 만치 일찍 눈이 떠져 밖을 보니 하늘이 파랬다.
"자전거나 간만에 타자!"
근데.. 이생각이 날 지옥으로 이끌었다.. OTL

종합운동장 쪽 한강공원의 간이 헬리콥터 착륙장
바람이 만땅!
흐억! 63빌딩이 보여!!

가다보니.. 맞은편에 월드컵 공원이 보인다 OTL

당당히 미친척(!) 2호선에 자전거를 실었다.
친구도 있지만 여기서는 사진에 빠진 ㅋ

'개소리 왈왈 > 자전거' 카테고리의 다른 글

자전거 종류  (2) 2010.04.28
한강공원 - 잠실  (13) 2010.04.08
눈길에 자전거 + 도서관  (2) 2010.01.09
한강공원 - 자전거 가격과 경험의 권력화?  (2) 2009.10.19
돈쓸일은 혼자오지 않는다.  (12) 2009.07.28
Posted by 구차니
expat은 c언어로 작성된 XML 파서이다.
음.. c라고는 하지만, python 2.6 에서는 expat을 기본 XML 파서로 내장한다.

아래는 expat 홈페이지와, c에서 expat을 사용하는 예제들이 들어있다.
링크만 발견하고 실제로 사용해보진 못했지만,
handler역활을 하는 함수를 추가하여,
그 함수들을 태그의 시작이나 끝 그리고 데이터 부분에서 호출하게 되는것으로 보인다.

[링크 : http://expat.sourceforge.net/]
    [링크 : http://www.vivtek.com/xmltools/]
    [링크 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/XML/expat_xml]

python2.6의 expat 예제
실제로 windows에서 2.6으로 돌려보니 결과가 조금 다르게 나왔다.
원래 문서에는 출력된 문자열 앞에 u가 붙어있지 않다.(unicode 문자열을 알리는 접두?)
>>> p.Parse("""<?xml version="1.0"?>
... <parent id="top"><child1 name="paul">Text goes here</child1>
... <child2 name="fred">More text</child2>
... </parent>""", 1)
Start element: parent {u'id': u'top'}
Start element: child1 {u'name': u'paul'}
Character data: u'Text goes here'
End element: child1
Character data: u'\n'
Start element: child2 {u'name': u'fred'}
Character data: u'More text'
End element: child2
Character data: u'\n'
End element: parent
1

[링크 : http://docs.python.org/library/pyexpat.html]

'프로그램 사용 > expat & XML' 카테고리의 다른 글

xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat-2.0.1 example  (11) 2010.03.23
Posted by 구차니
프로그램 사용/synergy2010. 3. 20. 23:33
synergyc는 클라이언트 프로그램이다.
서버 프로그램은 좀 복잡하지만 클라이언트는 상당히 쉽게 구동이 가능하다.

아래는 리눅스 쪽 프로그램의 설명인데, 실제로 설정해야 할 것은
--name 과 필수값인 <server-addres> 두가지만 해주면 된다.

예를 들어 현재 컴퓨터의 스크린이름을 secondpc 라고 하고,
서버 아이피를 192.168.0.2 이라고 할때,

시작프로그램에
synergyc --name secondpc 192.168.10.2
라고 등록해주기만 하면된다.

$ synergyc --help
Usage: synergyc [--daemon|--no-daemon] [--debug <level>] [--display <display>] [--name <screen-name>] [--restart|--no-restart] <server-address>

Start the synergy mouse/keyboard sharing server.

  -d, --debug <level>      filter out log messages with priorty below level.
                           level may be: FATAL, ERROR, WARNING, NOTE, INFO,
                           DEBUG, DEBUG1, DEBUG2.
      --display <display>  connect to the X server at <display>
  -f, --no-daemon          run the client in the foreground.
*     --daemon             run the client as a daemon.
  -n, --name <screen-name> use screen-name instead the hostname to identify
                           ourself to the server.
  -1, --no-restart         do not try to restart the client if it fails for
                           some reason.
*     --restart            restart the client automatically if it fails.
  -h, --help               display this help and exit.
      --version            display version information and exit.

* marks defaults.

The server address is of the form: [<hostname>][:<port>].  The hostname
must be the address or hostname of the server.  The port overrides the
default port, 24800.

Where log messages go depends on the platform and whether or not the
client is running as a daemon.


'프로그램 사용 > synergy' 카테고리의 다른 글

barrier on ubuntu 22.04 실패!  (2) 2023.06.15
시너지 (Synergy) for linux  (4) 2010.01.15
시너지 (Synergy) - KVM 프로그램(?)  (4) 2009.11.13
Posted by 구차니

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

사표를 제출했었습니다.  (4) 2010.04.01
퇴근일기 - 20100331  (4) 2010.04.01
직업병 - 안구인식  (0) 2010.03.17
오늘 일이 안되는건  (2) 2010.03.10
직장일기 - 20100303  (0) 2010.03.03
Posted by 구차니
import 라는 키워드로 python에서는 모듈을 불러온다.
이녀석을 c/api에서 사용하는 방법은 크게 두가지가 있다.

하나는 문자열로 인터프리트 방식으로 import 명령을 실행하는 것과
PyRun_SimpleString("import hashlib");

다른 하나는, __main__ 모듈을 추가하고 그에 원하는 모듈을 import 하는 방식이다.
PyObject * mainModule = PyImport_AddModule("__main__");
PyObject * hashlibModule = PyImport_ImportModule("hashlib");
PyModule_AddObject(mainModule, "hashlib", hashlibModule);

[링크 : http://dmaggot.wordpress.com/2009/12/30/embed-python-and-import-modules-in-cc/]



사족 : 음.. curses 나 hashlib은
/usr/local/lib/python2.6/hashlib.py
/usr/local/lib/python2.6/curses/__init__.py
에 존재해서 위의 방법으로 import가 되지만

gdata(google api)의 경우에는 되지가 않는다. 도대체 머가 문제일까?
/usr/local/lib/python2.6/site-packages/gdata/__init__.py 도 일단은 존재하는데 말이다..

Posted by 구차니
Microsoft/Windows2010. 3. 19. 10:56
일단 요약부터
1. 윈도우에서 read/write하는 툴이나 드라이버는 존재한다.
2. 하지만 format 을 윈도우에서 하는 툴은 없는것으로 보인다.


EXT2 IFS(Installable FileSystem)는 별도의 프로그램은 설치되지 않고 제어판에 추가된다.

제어판의 IFS Drives 아이콘을 누르면

위와 같은 화면이 뜬다. 여기서 포맷은 할수없다.(윈도우 포맷에서도 EXT는 뜨지 않음)

[링크 : http://ko.wikipedia.org/wiki/Ext3]
    [링크 : http://www.fs-driver.org/] vista는 된다는데 win7은 안 된다 -_-
    [링크 : http://gparted.sourceforge.net/]
    [링크 : http://www.chrysocome.net/explore2fs] win7에서 드라이브를 인식하지 않음
    [링크 : http://sourceforge.net/projects/ext2fsd/]




2010.04.03 추가

윈도우에서 포맷은 불가능 하지만, ext2로 포맷된 USB를 인식했다.
꼽으니 바로 보이는"lost+found" !! 오~~ 감동이야~

파일 삭제/ 제거 작동이 아무런 문제없이 잘된다.



Posted by 구차니
Linux2010. 3. 19. 10:44
엄밀하게, DOS 처럼 quick format은 존재하지 않는다.
mkfs.ext3 에서 -c 옵션으로 bad sector를 확인하는게 normal format이고
아무런 옵션없이 포맷하는게 quick format인 셈이다.


결론 : 그냥 옵션없이 하는게 quick 인데 느리군요(500GB 하는데 한 1분 걸린듯?)

[링크 : http://kldp.org/node/73233]
[링크 : http://linux.die.net/man/8/mkfs.ext3]
Posted by 구차니