기본 콘텐츠로 건너뛰기

파이썬 코드

실무에서 사용하기 위해 처음으로 작성한 파이썬 코드입니다. 텍스트 파일을 다루는 코드입니다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #       Procedure : replace_desp #       DateTime  : 2008-05-19 09:30:49 #       Author    : 백흠경 #       Purpose   : DESP 문자열을 Data Set 문자열로 바꾼다. def  replace_desp(aLine):     aList  =  [ 'DESP[2 ]' , 'DESP[3 ]' , 'DESP[4 ]' , 'DESP[5 ]' , 'DESP[6 ]' , 'DESP[7 ]' , 'DESP[8 ]' , 'DESP[9 ]' , 'DESP[10 ]' ,                      'DESP[11...

RATING이란 뭔가요?

바이러스처럼 번식하고 바퀴벌레처럼 생존하여 끝까지 승리하리라! 님의 말 : 이사님~~ RATING이 뭔가요? 이형태 님의 말 : 두께 이형태 님의 말 : 일종의 강도지 바이러스처럼 번식하고 바퀴벌레처럼 생존하여 끝까지 승리하리라! 님의 말 : 음... 이형태 님의 말 : 150#라고 하면 150파운드 이형태 님의 말 : 그 강도를 견디기 위해서 가져야 할 두께 정도로 이해하면 돼 바이러스처럼 번식하고 바퀴벌레처럼 생존하여 끝까지 승리하리라! 님의 말 : 역시 이사님~~~

UDA 만들기

UDA를 만들기 위해서는 Lexicon 모듈로 들어가야 합니다. WORLD 레벨에서 작성한 매크로 파일을 올립니다. $M /C:\UDA.txt 파일을 올리는데 에러가 발생했다면 FINISH 로 빠져 나와 처음부터 다시 작업을 해야 합니다. 매크로 파일을 에러 없이 올렸다면 컴파일을 해야 합니다. COMPILE 컴파일을 하고 난 후에 작업을 저장합니다. SAVEWORK

파일 쓰기/열기...

파일쓰기/열기를 할때 자꾸 예전 코드를 뒤적거려서 여기에 적어 둡니다. = 파일 쓰기 = !ofilename = 'c:\temp\test.dat' !!file = Object FILE('$!ofilename') $* 파일 OBJECT를 생성합니다. !!file.Open('overwrite') $* 겹쳐 쓰기로 파일을 엽니다. !!file.WriteRecord('TEST') !!file.Close() $* 파일을 닫습니다. !!file.Delete() $* 파일 OBJECT를 삭제합니다. = 파일 읽기 = !ofilename = 'c:\temp\test.dat' !!file = Object FILE('$!ofilename') $* 파일 OBJECT를 생성합니다. !!file.Open('read') $* 읽기 모드로 파일을 엽니다. !recs = object Array() do !aLine = !!file.ReadRecord() $* 파일에서 한 줄을 읽습니다. if !aLine.set() EQ FALSE then break $* 파일 끝으로 보고 파일 읽기를 멈춥니다. endif !recs.Append(!aLine) enddo !!file.Close() $* 파일을 닫습니다. !!file.Delete() $* 파일 OBJECT를 삭제합니다. $* do something !recs.clear() !recs.delete()

isodraft에서 iso 파일 생성

TTY 모드에서 ISO 파일을 생성하는 방법 tty모드를 통해서 IsoDraft 로 들어갑니다. {파이프 혹은 BRAN 이름} 으로 이동합니다. $M /{ISODRAFT OPTION FILE} : ISO를 돌리기 위한 옵션 파일인데 이 파일도 커맨드를 모아놓은 매크로 파일입니다. file and dxf /filepath : dxf 파일이 생성 될 파일 이름(전체 경로 포함) detail {파이프 혹은 BRAN 이름} … {파이프 혹은 BRAN 이름}은 앞에 /를 포함해야 합니다. finish : ISO 도면을 생성했으면 IsoDraft를 빠져나옵니다.

처음으로 embedding한 파이썬 코드

'' Application에서 output_stream을 호출합니다. ''' 인자로 넘어온 내용으로 파일로 저장하는 코드입니다. 1 2 3 4 5 6 7 class  Debug:      def  __init__( self ):            def  output_stream( self  , msg):          file   =   open ( 'c:\\temp\\embedding.log'  ,  'a' )          file .write(msg  +   '\n' )          file . close () Colored by Color Scripter cs

MFC ActiveX 컨트롤: Windows 컨트롤 서브클래싱

MFC ActiveX 컨트롤: Windows 컨트롤 서브클래싱 이 문서에서는 공통되는 Windows 컨트롤을 서브클래싱하여 ActiveX 컨트롤을 만드는 과정을 보여 줍니다. 기존 Windows 컨트롤을 서브클래싱하면 ActiveX 컨트롤을 손쉽게 개발할 수 있습니다. 새 컨트롤은 서브클래싱된 Windows 컨트롤의 그리기 및 마우스 클릭에 대한 응답과 같은 기능을 갖게 됩니다. MFC ActiveX 컨트롤 BUTTON 샘플은 Windows 컨트롤의 서브클래싱 예제입니다. Windows 컨트롤을 서브클래싱하려면 다음 작업을 수행합니다. COleControl의 IsSubclassedControl 및 PreCreateWindow 멤버 함수 재정의 OnDraw 멤버 함수 수정 컨트롤에 리플렉션된 ActiveX 컨트롤 메시지(OCM) 처리 참고     컨트롤 설정 페이지의 부모 창 클래스 선택 드롭다운 목록을 사용하여 컨트롤이 서브클래싱되도록 선택하면 ActiveX 컨트롤 마법사가 이 작업의 대부분을 자동으로 수행합니다. 컨트롤 서브클래싱에 대한 자세한 내용은 Knowledge Base article Q243454를 참조하십시오. IsSubclassedControl 및 PreCreateWindow 재정의 PreCreateWindow 및 IsSubclassedControl 을 재정의하려면 해당 컨트롤 클래스 선언의 protected 섹션에 다음 코드 줄을 추가합니다. BOOL PreCreateWindow( CREATESTRUCT& cs ); BOOL IsSubclassedControl( ); 컨트롤 구현 파일(.CPP)에는 다음의 코드 줄을 추가하여 두 개의 재정의된 함수를 구현합니다. BOOL CSampleCtrl::PreCreateWindow( CREATESTRUCT& cs ) { cs.lpszClass = _T("BUTTON"); ...

BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool

wafe's weblog  님의 블러그에서... MSXML을 쓰다보니 VARIANT_BOOL이라는 타입이 있더라. short로 typedef 되어 있는 타입이다. 평소엔 그냥 대충 썼는데 왜인지 오늘따라 이상하게도 궁금증이 발동해서 검색해보니 이런 글이 나온다. BOOL vs. VARIANT_BOOL vs. BOOLEAN vs. bool VARIANT_BOOL 타입에 넣는 값으로는 VARIANT_TRUE나 VARIANT_FALSE를 써야 한다. 지금까지 이런 상수가 정의되어 있는줄도 모르고 그냥 BOOL 쪽 값(TRUE, FALSE)으로 비교한다든지 하고 있었다. VARIANT_FALSE는 0이니까 그렇다쳐도 VARIANT_TRUE는 -1로 정의되어 있어서 겉으로 보이진 않지만 잠재적 문제가 코드에 들어있을 지도 모르겠다. -_-; 아무튼 참/거짓을 나타내는 방법이 다양하기도 하다. VARIANT_BOOL에 BOOL에 bool에 BOOLEAN이라는 녀석도 있었네? BOOLEAN이라는 타입은 처음 본다. 나는 왠만하면 bool 타입을 쓰는 편인데 C++ 언어에서 정해준 불리언 타입이기도 하고, 소문자라 BOOL 타입에 비해서 쓰기 편하기 때문이기도 하다 후후.

string object method

1. substring(start , count) => start 지점에서 count만큼의 문자열을 구합니다. !str = '/p' !m = !str.substring(1,1) 여기서 !m은 '/'를 나타냅니다. 2. replace => 문자열 교체 !str = '/p' !str = !str.replace('/' , ';') !str은 ';p'가 됩니다.

INST.를 생성하는 예

샘플 코드 $( INSTRUMENT를 TagNo 이름으로 생성한다. SPEC을 할당하고 이전의 PRIMITIVE에 붙인다. FLOW 방향으로 Distance만큼 이동한다. FLOW 방향을 축으로 주어진 각도만큼 회전시킨다. $) define method .CreateInst() !curSpecName = !this.optPipingSpec.dtext[ $!this.optPipingSpec.val ] new INST $!this.TagNo spref $!curSpecName $* SPEC 설정 conn to prev $* CONNECTION TYPE? move dist $!this.txtDistance.val $* Distance만큼 FLOW 방향으로 이동한다. var !aname name var !adir P1 dir rot thr $!aname about $!adir by $!this.txtAngle.val $* 주어진 각도만큼 회전한다. endmethod

메뉴 추가

위와 같이 PDMS에 메뉴를 추가하는 방법입니다. 아래는 DESIGN 모듈에 메뉴를 붙이는 방법입니다. 1. PDMS 설치 폴더\pmllib\design\forms\appdesmain.pmlfrm 파일을 엽니다. 2. appdesmain.pmlfrm파일에서 menu bar를 추가합니다. 3. 폼 추기화 부분에서 추가한 menu bar에 붙을 메뉴를 생성합니다.

LOGGING 을 얼마나 중요하게 생각하십니까?(LOG4CXX)

황제펭귄의 게임개발이야기 [여기는 한국] | 황제펭귄 http://blog.naver.com/kimbeast/60016524389 hello world 프로그램을 만들때 초보는 기능 구현에만 충실하게 된다. void main() { printf("hello world"); } 이렇게 만들어 놓구..아 ~~ 기쁘다.이렇게 생각하겠지. 중급 정도 되면 고민을 먼저한다. 이거 hello world 를 출력하지만 나중에는 입력받아서 처리하게 할꺼야. void main() { char chInput[80]; printf("출력할 글자를 입력하세요"); scanf("%s", chInput); printf("%s", chInput); } 조금더 생각하는 사람이라면.. 입력방식의 변화가 생기기때문에 로직분리를 위해서 함수또는 class로 입력기를 처리할수 있다. void main() { CInputManager inputManager; inputManager.input(); printf("%s", inputManager.getInputChar()); } 자..그럼 만족하겠지. 근데..예를 들어 문제가 생겼다고 하자. 출력이 안된다던지.한글이 깨진다던지.아니면..DB에서 읽어들이는데 자꾸 읽히지가 않고 문제가 생긴다고 하자. 어떻게 해결할 것인가?~ 간단한 프로그램이니까 디버그로 돌리면 될것이다. 그런데 큰 프로그램이라면 어떻게할것인가~? 개발할때 무수히 많은 printf문장으로 console에 출력을 쭈르륵 할것이다. 그리고 나중에 서비스에 올릴때에는 이넘의 printf 또는 cout ...

[STL] erase()를 사용하여 List 원소 삭제 시 주의사항

picbuddy님의 블로그 (Mesh Generation) | 플라나 http://blog.naver.com/picbuddy/80032246219 다시 한번 기억을 환기시키기 위해 /////////////////////////////////////////////////////// for( Iterator = Vector.begin(); Iterator != Vector.end(); ) { Vector.erase(Iterator); } /////////////////////////////////////////////////////// for( Iterator = List.begin(); Iterator != List.end(); ) { List.erase(Iterator); } 위 두 문장의 차이가 뭘까? 위의 문장에서는 문제가 없지만 아래 문장에서는 에러가 발생한다. 왜 그럴까? erase 함수의 구현은 둘다 똑같은데... 그 이유는.... RandomAccessIterator와 BidirectionalIterator의 차이에 있습니다. vector는 해당 원소가 삭제되면 Iterator의 공백을 삭제된 원소 다음에 있는 원소 위치로 채워지게 된다. 이는 RandomAccessIterator(멋대로 접근 가능 지시자)라 가능한 듯...(솔직히 컴파일러에 따라 다른지 그것까지는 모르겠음. 일단 Visual Studio에서는 그렇게 작동) 허나 list는 BidirectionalIterator(순서대로 차근차근 접근 가능)이므로 해당 원소가 삭제되면 Iterator는 그 다음 위치를 잃어버리게 되는 것이다. 결국 그 다음 지시자의 위치는 까마득한 별나라로... 이를 위한 해결 방법 가장 확실한 방법은 erase 함수의 리턴값을 이용하는 것이다. erase 함수의 리턴값이 바로 삭제 원소 다음에 있는 원소 iterator이기 때문... for( Ite...

pml용 vim syntax 파일

pml용 vim syntax 파일 입니다. 이 파일을 vim의 syntax 폴더 안에 넣어두고, vim 폴더 안에 있는 filetype.vim 에 아래의 내용을 추가합니다. au BufNewFile,BufRead *.pmlfnc,*.pmlfrm,*.pmlobj setf pmlfnc 2007.11.16 $* 주석 처리한 것 --2007.12.20 기타 등등 추가. --2008.01.18 ...