분류 전체보기 (199)
ººº::Development™:: (66)
ººº::Learning™:: (31)
ººº::Information™:: (37)
ººº::Note™:: (11)
ººº::Photo™:: (50)
ººº::zEtc™:: (3)
rss

믹시
tistory 티스토리 가입하기!
'ººº::Development™::'에 해당되는 글 66건
2008. 4. 17. 11:30
VB로 작성된 ActiveX같은 경우는 VisualStudio( 이하 VS )에 포함된 배포마법사를 통해서 작성가능 하나!
VS같은 경우는 따로 CAB을 만들어 줘야 한단다!( 어제부터 왜이리 삽질을 하는건지..ㅜㅜ; )
머 우짜든 일단 컴파일 시키는거까지 성공했고 이제는 배포를 해보자

배포파일 작성 순서는 다음과 같다.
1. .inf파일 작성
2. .ocx 파일과 .inf파일을 .cab 파일로 압축
3. 압축된 .cab파일 서명
4. .cab파일을 웹 페이지에 등록

그럼 위 순서를 하나하나 따라가 보자!!!

1. .inf파일 작성
VB같은 경우는 배포마법사에서 VB Project를 설정하면 자동으로 .inf파일이 생성되나, VC++은 사용자가 스스로 만들어 줘야 한단다!( C++은 넘 불편해!!ㅠㅠ )
 ;======================= testActiveX.inf ===================
[Version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
testActiveX.ocx=testActiveX.ocx
; 작성된 ActiveX에 종속되어져야 하는 dll을 나열한다.
mfc42.dll=mfc42.dll
msvcrt.dll=msvcrt.dll
olepro32.dll=olepro32.dll

; 종속되는 dll들의 세부 사항을 설정
[mfc42.dll]
FileVersion=6,0,123,m0
hook=mfc42installer

[msvcrt.dll]
FileVersion=6,1,8924,0
hook=mfc42installer

[olepro32.dll]
FileVersion=5,0,4265
hook=mfc42installer
[mfc42installer]
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab
run=%EXTRACT_DIR%\mfc42.exe

[testActiveX.ocx]
file-win32-x86=thiscab
clsid={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes
위 설정을 간단히 살펴보면
* ";" 는 주석을 표시한다.
[Add.Code] : 설치한 파일들을 나열한다.
testActiveX.ocx=testActiveX.ocx         ; 당연히 가장 중요한 activex파일
aaa.dll=aaa.dll                                 ; 작성한 ActiveX에 종속적인 dll들

[testActiveX.ocx]
file-win32-x86=thiscab               ; 먼지 나두 모르겠다 아시는 분 손!!
clsid={}                                   ; 작성한 ActiveX의 Class Id
FileVersion=                             ; 작성한 ActiveX의 버전
DestDir=                                   ; 압축이 풀린 cab의 ocx가 설치될 경로
RegisterServer=yes                   ; 먼지 나두 모름 이것두 아시는 분 손!!

위에서 얘기하는 DestDir의 각 설명은 다음 포스트에서 추가하도록 하겠당!
추가라기보다는 어디서 긇어 오는거겠지만!!ㅡㅡ;

나머지 부분은 ActiveX를 작성하면서 추가된 Dll 파일들을 추가해주면 된다
FileVersion         ; 설치될 dll의 버전
hook                  ; 설치할 방법을 설정하는 부분의 Title이라는데 이것두 모르겠당

자 이제 .inf파일을 작성하는것을 마치고 다음에 .cab파일 생성하는 부분을 보자

2. .cab파일 작성
.cab파일을 생성하기 위해서는 cabar.exe라는 프로그램이 필요하다. 이 프로그램과 이하 아래에서 사용되는 여타 다른 프로그램은 아래 다운로드 링크를 통해 다운받으시면 되용!
그런데 이거 이렇게 막 뿌려두 되는건가..??설마 저작권에 걸리는건 아닌가?? 머 인터넷에 돌아댕겨서 나두 올리는거지만 사실 좀 불안함 혹시 걸리는거면 바로 삭제하겠습니다.!!

cab파일 생성 예
cabarc.exe N testActiveX.cab testActiceX.ocx testActiveX.inf

이렇게 하면 cab파일로 압축이 된다. 상당히 간단!! 이런건 왜 배포 마법사에 포함을 안시켰는지 원!ㅡㅡ;

3. .cab파일 서명
cab파일 서명은 아래 보이는 명령어들을 순서대로 치면서 암호 입력하고 입력한 암호를 다시 입력하고 머 그러면 된다.
makecert -sv "mycert.pvk" -n "CN=TEST ActiveX" mycert.cer
cert2spc mycert.cer mycert.spc
signcode -v mycert.pvk -spc mycert.spc testActiveX.cab
setreg -q 1 TRUE

자 이렇게 하면 서명까지 끝나는데 웹 페이지에 올리는건 다덜 아시는대로 올리면 되고
일단 나머지 부분은 밥먹구와서 정리해야징!!ㅋㅋㅋ
참고 사이트 : http://rnd.vitzro.com/Language/VisualC/MakeCab.htm


2008. 4. 16. 23:59
아래 글에 이어서 이 warning은 VS2005를 사용해서 XSI v6.0의 com api dll을 다시 컴파일 할 때 나타나는 warning이란다.!
( Recompiling COM API dll for XSI v.6.0 using Visual Studio .NET 2005 )
영문을 그냥 직역하다 보니 이해가 좀 안되지만???
머 우짜든 나는 에러는 다음과 유사하다
warning C4278: 'GetObject': identifier of typelibrary 'XXXX.tlb' is already macro. Please use 'rename' modifier.

warning C4278: 'GetObject': 형식 라이브러리 'XXXX.tlb'의 식별자가 이미 매크로입니다. 'rename' 한정자를 사용하십시오

위에서 GetObject는 warning이 나는곳마다 다 틀리다 왜냐 라이브러리마다 모두 다 틀리기 때문에 우짜든 형태는 위와 유사하고 warning이 발생한 곳은

XXXX.tbl를 import한 곳이다.
영문 그래로 rename 한정자를 사용해 다음과 같이 수정해 주면 된다.

#import <XXXX.tlb> rename( "GetObject", "GetObjectA" )

GetObject는 warning난 매세지에 나타난 이름을 그대로 사용하면 되고 두번째 파라미터는 아무렇게나 원하는 이름으로 재명명 해주면 된다.

일단 warning은 잡자!!!


2008. 4. 16. 23:28

이번 프로젝트에 사용할 ActiveX 컨트롤러를 만드는 중에 VC6로 작성된 것을 VS2005로 컴파일 할라고 하는디!
이게 어찌된 일인지 컴파일 하면 이것저것 마춰야 하는게 왜 그리 만은지!!

이왕 정리하기로 맘먹은거 하나하나 해결하면서 정리해 보자.

1. For문의 지역 변수 스코프

for( int i = 0; i < 5; i++ )
{
}
for( i = 0; i < 10; i++ ) {}
VS6에서는 위와같이 작성해두 된다고 한다. 이유는 모르지만( 역시 난 C와 C++은 쥐약이야ㅠㅠ)
머 일단 문제가 발생하고나서는 당연지사 스코프 문제로 아래쪽 for문에서 i를 int형 혹은 해당하는 형으로 선언해주니 문제 해결

2. warning C4996
이넘의 워닝! 아주 죽을 맞이다.! 어찌하면 안날까? ActiveX자체두 잘 모르는디! ㅡㅡ;
일단 나타나는 워닝을 인터넷을 찾아댕기면서 하나한 해결해 보자! 이럴 시간두 없는디!ㅡㅡ;
warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
VS2005에서 부터는 CRT라이브러리 함수의 문자열을 다루는 함수의 안정성에 많은 신경을 쓰면서 기존의 문자열 함수에 _s를 붙여서 버퍼의 길이를 지정하도록 권장하고 있기 때문에 strcpy같은 문자열 함수에서 위와 같은 warning이 발생한다.

위와 같은 warning이 나타날 경우에는 stdafx.h 파일 상단에 아래와 같이 정의해 주면 된단다.
#define _CRT_SECURE_NO_WARNINGS
혹은
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAES 1
혹은
#define _CRT_SECURE_NO_DEPRECATE
위의 정의가 뜻하는 바는 시간이 없어서 패스.

다음으로
warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _stricmp. See online help for details.
위와 같은 warning이 날 경우에는 stdafx.h 파일 상단에
#define _CRT_NONSTDC_NO_DEPRECATE
위와 같이 정의해 주면 된단다.!!

일단 지금까지 나온 warning을 바탕으로 해결된 내용..
난중에 추가적인 내용이 나오면 다시 붙여보장!!

'ººº::Development™:: > ::C/C++™::' 카테고리의 다른 글

[툴] Windows Crash Dump 분석  (0) 2009.04.10
[C/C++] 디렉토리 만들기..  (1) 2008.12.04
[C/C++] 오늘 날짜 구하기  (1) 2008.12.03
[C/C++] apache xercex-c 사용하기  (0) 2008.11.06
[C/C++] warning C4278  (0) 2008.04.16


2008. 3. 28. 17:42

이제는 정리좀 하면서 살자..ㅜㅜ;

숫자형식에서 1000단위로 ,로 구분하는 스크립트

function commify( n )
{
 var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
 n += '';                          // 숫자를 문자열로 변환

 while( reg.test( n ) )
  n = n.replace( reg, '$1' + ',' + '$2' );

 return n;
}


하나씩 정리하면서 문서화 하기 연습!!!


2007. 6. 26. 18:45

몇일째 계속 mySql 때문에 삽질하고 있네..

일단 오늘두 정보를 알려준다는 입장보다는 내가 몰랐던 내용을 하나 또 올린다.

MySQL 4.1 이상 버전에서는 비밀번호를 해쉬알고리즘을 기반으로한 인증 프로토콜을 사용합니다.
그리고 해당 기능이 하위버전의 Client와 호환이 되지 않기에 서버를 4.1이상으로 업그레이드를 한 후에 클라인언트를 통해 서버에 접속을 하고자 한다면 아래와 같은 에러메세지를 접하게 될수 있습니다.

shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client

위 문제를 해결하고자 한다면
1. 모든 클라이언트를 4.1 이상으로 업그레이드 한다.
2. 사용하려는 계정의 password를 4.1 이전버전의 체계로 변경한다.

1번이야 쉽게 다운받아서 하면 되지만
2번의 경우는 사용자가 직접 Update를 해줘야 한다.

mysql> Update USER set password=old_password('비밀번호') where USER='계정';
mysql> Flush Privieges

위와같이 해주면 접속하는데 크게 문제가 없는것을 확인할 수 있다.


2007. 6. 20. 18:18

Strus 설치하기

1. Struts를 Binary 버젼 다운 받습니다. (현대 Struts 1.2.4 버젼까지 나와있습니다.)

2. zip 파일의 압축을 풉니다.

 ※ lib 폴더에는 Struts를 사용하기 위한 struts.jar 파일이 있고,

     webapps 폴더에는 5개의 sample war 파일이 있습니다.

 ※ contrib 은 Struts의 tag library 들이 있습니다.



3. 위에서 보이고 있는 lib 폴더 하위에 있는 모든 *.jar 파일을 Struts를 사용할 웹프로젝트의 WEB-INF/lib 폴더에 복사후 Struts를 사용하면 된다.



2007. 5. 28. 17:49
MySQL 연결시 아래와 같은 에러가 발생하였다.

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

무슨 이유인지는 모르겠지만 인터넷을 찾아보니 다음과 같이 하면 된다고 해서 기록해 놓는다.

mysql> set password for
    -> root@localhost = OLD_PASSWORD(\'비밀번호\');
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)




2007. 5. 1. 19:11

- IDE다운로드   http://radrails.org/download_radrails.php
- radrails 환경 설정 방법
   RadRails의 실행화면에서..
   1. Windows>Preference>Ruby>Installed Interpreters ADD 버튼
       - Interpreter -> ruby
       - location    -> C:\ruby\bin\ruby.exe

   2. Ruby>Ri/rdoc
       - rdoc path ->  C:\ruby\bin\rdoc
       - ri   path ->  C:\ruby\bin\ri

   3.Windows>Preference>rails>Configuration 에서 패스 지정
       - rails   path -> C:\ruby\bin\rails
       - rake   path -> C:\ruby\bin\rake
       - mongrel  path -> C:\ruby\bin\mongrel_rails    
    <참고사항>
    mongrel 설치 하는 방법
    c:\gem install mongrel
           설치 옵션에서 win32을 선택 할 것 (ruby로 하면 에러 남)

    4. console 설정법
       - Windows>Run > External Tools > External Tools program 선택 마우스 오른 버튼 클릭 new
       - 오른쪽 화면의 main
       - name -> Development Console
       - Location: c:\windows\system32\cmd.exe (win2000은 window-> winnt)
       - Working Directory: ${project_loc}
       - Arguments: /C start ruby ${project_loc}/script/console
       - 오른쪽 화면 envrionment new 클릭
       - NAME : RAILS_ENV
       - VALUE : development
       - 오른쪽 화면 Common클릭
       -  Allocate Console을 체크 해제
       -  launch in background를 체크하세요..
       - apply,  RUN

    5. WEBrick Server 추가하기
        - Windows> FILE > NEW를 선택하면 select a wizard 화면이 나타나고  화면 하단 부분에서 server>WEBrick Server 선택하고 next Project : Project name -> 현재 작업하고 있는 프로젝트명을 입력하면된다.
            name : server          -> 기본값으로 사용
            port : 3000               -> 기본값으로 사용
(RadRails 화면 왼쪽 상단 Navigator 아이콘 중에 new 을 drop down 해서 WEBrick Server를 선택하여 설정 할 수도 있다)

     6.  라인 넘버 사용 하기
          Windows>Preference> General > Editors > Text Editors 선택하고 오른쪽 화면에서 Show line numbers 에 chek 하시고 Apply 하시면 됩니다.

     7. TextMate 처럼 바꾸고 싶은 경우 참고 하시길
         RadRails : eclipse 기반의 rails 개발 환경.
         TextMate : rails/ruby 개발자들이 가장 선호하는 Mac의 에디터. 보통 ruby demo 동영상에 나오는 이쁜 에디터는 textmate이다. windows에서는 아쉽지만 textmate가 동작하지 않는데, 겉보기에 비슷한(^^;) radrails를 만들 수가 있다.

          아래 링크는 겉보기를 비슷하게 만드는 것,
          http://drnicwilliams.com/2006/08/08/textmate-theme-for-radrails/
          그 아래 링크는 동작(단축키?)을 비슷하게 만드는 것.
          http://radrailstemplates.com/
          참고url :  http://taewon.sangbean.com/232
                       http://xml.80port.net/bbs/zboard.php?id=lecture

 <주의사항>
  1. adrails에서 mysql 사용시
      -  mysql을 사용하는 경우는 mysql home directory =  C:\mysql\bin 으로 해야 하며 libmySQL.dll 파일은 c:\windows (or NT 일경우는 winnt) 에 붙여넣기 해야 합니다. 만약하지 않으면 rake 명령등에서 error 가 발생합니다. ^^
        참고url : http://jasonpa.tistory.com/8
   2. JAVA 가 설치 되지 않을시 RADRAILS가 실행이 되지 않으니 아래 넷빈즈 버전을 설치 다운 받아 설치하면 에러 없이 실행 됩니다.
       


[내용] 네이버 루비 온 레일즈(루비썬) => RoR 까페 펌( cafe.naver.com/rubython )



2007. 4. 17. 17:27
CVS형식의 파일로 다운로드 받기

이번 프로젝트 기간에 디비에서 Select된 내용중 원하는 내용만 사용자의 Local 컴퓨터로 다운로드 가능한 기능이 필요하게 되었다.

방식은 CSV로 다운로드 하는 방식이고
CSV로 만들어질 내용을 문자열로 만들고 해당하는 문자열을
Http Header를 이용해 다운로드 가능하도록 만들었다. 아니 정확하게 말하면 인터넷에서 찾았당~~ㅋㅋㅋ

처음으로 CVS로 만들 문자열을 만들고
for( int i = 0; i < string.length; i++ )
{
     strCsv = i + "aaa, bbb, ccc, ddd";
}

이제 httpheader를 통해 저장해주는 부분이다.
먼저 IE와 구분을 짖기 위해서..
// Http Header 설정(브라우저에 따라 달리...)
if( request.getHeader( "User-Agent" ).indexOf( "MSIE 5.5" ) != -1 )
{
  response.setHeader( "Content-Type", "doesn/matter;" );
  response.setHeader( "Content-Disposition", "filename=" + strFileName );
}
else
{
  response.setHeader( "Content-Type", "application/octet-stream;" );
  response.setHeader( "Content-Disposition", "attachment;filename=" + strFileName );
}

그리고 클라이언트 설정을 해준다.
response.setHeader( "cache-control", "no-cache" );
response.setHeader( "expires", "0" );
response.setHeader( "pragma", "no-cache" );

마지막으로 처음에 만들어준 CSV형식의 문자열을 화면에 뿌려준다. 물론 이때 뿌려지는 화면은 히든 페이지로 만들어 놓는 편이 화면 UI상 문제가 없을 것이다.
out.print( tempSave );   // 저장될 내용을 화면에 출력
out.flush();     // 출력된 내용을 적용함


위와 같은 내용을 변경하여 자신에기 필요한 부분에 넣어 주면 될 것이다.


2007. 4. 4. 13:11
투명한 iFrame 만들기

iFrame을 사용해 웹 페이지 중간에 다른 페이지의 내용을 넣을 경우가 있다.
하지만 웹 페이지의 백그라운드 부분에 다른 이미지가 있는 상태에서 iFrame을 넣을 경우 백 그리운드 이미지와 매칭되지 않는 경우가 있는데 이럴 때 투명한 iFrame을 사용하면 된다.

<iFrame src="웹페이지 주소" allowTransparency="true" width="가로크기" height="세로크기>

iFrame을 삽입할 페이지에 위와 같이 주고

<body style="background:transparent">

iFrame에 삽입될 패이지의 body 부분의 스타일을 위와 같이 주면 된다.

또한 iFrame을 투명하게만 주는것이 아니라 반투명 효과를 줄수고 있는데 이는 iFrame의 style을 적용해 주면 된다.

<iFrame src="" style="filter:Alpha( Opacity=65 );">

위와 같이 Alpha값의 Opacity값을 변경해 주면 도니다. Opacity값이 낮을수록 투명도가 증가한다.