api_list-drvoss.zip

요즘 애플리케이션을 만들다 보면, 프로그래머는 당연히(?) 2000 sp4이상 환경을 생각합니다. 적어도 2000 sp4이상 이여야 원활한 API 환경이 갖추어 지는 데다가, VisualStudio2008도 쓸 수 있고, 편하기 때문입니다.

 

그런데 가끔, 애플리케이션상 98을 지원해야 될 때가 있습니다. 클라이언트 도메인에 98 컴퓨터를 아직 사용하고 있는다던지, POS같은 98이 설치된 하드웨어 단말기가 많은 고객이라던지 아니면 범용적인 압축 애플리케이션을 만든다던지 등등

 

98을 지원하려면 일반적으로 Visual Studio 2005이하 버전에 포함되어 있는 컴파일러에서 멀티바이트 바이너리 형태로 컴파일 되는게 좋습니다. 이런 부분들이 지켜 진다면 다음으로 살펴볼 부분은 98에서 사용할 수 없는 API가 쓰였는가 입니다.

 

 

프로그래머는 xp에서 작업하기 때문에 여러 사람이 공동 작업을 하다 보면 누가 어떤 API를 썼는지 신경을 못 쓰게 됩니다. 만일 클라이언트 컴퓨터에 2000이 포함되어 있는데, xp이상에서만 돌아가는 API를 사용하게 되면 문제가 생깁니다.

 

예를 들어

 

GetProcessId 같은 함수의 모양새는 아주 범용적으로 생겼지만, vista에서만 쓸 수 있는 API 입니다. 서비스팩이 설치되어 있지 않은 xp에서는 문제의 소지가 다분하게 됩니다.

 

 

그렇다고 코드를 까서 다 살펴 볼 수도 없을꺼고, 문제가 생기길 기다렸다가 98에서 소스의 한줄씩 트레이싱하면서 리턴값을 체크하는 형태의 디버깅을 해볼 수도 없는 노릇입니다.

 

 

command 명령어에서 findstr을 사용하면 간단하게 문자열을 체크해 볼 수 있습니다.

 

findstr /s /g:사전파일 *.cpp *.c *.h *.hpp

 

 

이걸 이용하면 현재 지원해야 하는 최소의 OS에서 지원하지 않는 API가 쓰였는지 필터링 해 줄 수 있겠죠.

 

결과는 아래처럼 나타납니다.

target소스

#include <windows.h>

#include <iostream>

#include <process>

 

void main()

{

    YieldProcessor();

    DWORD pid = GetProcessId(GetCurrentProcess());

    YieldProcessor();

    int pid2 = _getpid();

    YieldProcessor();

    std::cout << pid << std::endl << pid2 << std::endl;

    YieldProcessor();

 

    return;

}

 

 

 



 

 

 

Main.cpp에서는 비스타 이상에서만 지원하는 함수들이 쓰였기 때문에, 이 애플리케이션은 xp이하 머신에서는 비정상 동작할 확률이 있습니다.

 

보너스로 각각 2000, xp, vista 이상에서 사용되는 함수 목록을 첨부합니다. 함수 뿐 아니라, OS에 종속적인 함수 인자 플래그 값같은것도 별도 파일로 만들어 놓고 릴리즈 하기 전에 검사해보면 좋을것 같습니다.


'temp' 카테고리의 다른 글

jquery  (0) 2010.06.08
ASP.NET에서 C++또는 C로 만들어진 DLL을 로딩하는 방법  (0) 2010.06.08
블로그 이미지

란마12

,

jquery

temp 2010. 6. 8. 21:24

자바스크립트 라이브러리 중에 JQuery보다 더 좋은 라이브러리는 더 이상 없을 것입니다.
디자인과 웹표준과 개발시간단축이라는 3가지를 모두 만족시켜버리네요.
어찌보면 기존 웹 개발자들의 단가를 확~~ 깍아버리는~~ ㅎㅎㅎ 잘만 사용하면 쵝오의 생산성을 내게 하는 라이브러리~~
잘들 정리해서 프로젝트에서 사용하삼...( 일반 사이트는 디자이너가 필요 없어질 수도.... , 디자이너들에게는 나쁜라이브러리 인듯)

자신이 직접 확장하여 라이브러리를 개발 할 수 있는 능력을 구비하면 좋겠지만... 이~~ 대한민국이라는 나라에서는 전혀 쓸모없는 능력일 수도 있으니 잘 판단들 하시고~~ (JQuery확장기술은 다른 스크립트라이브러리 확장기술보다는 익혀놓을만 한듯 왜? 표준코딩이 가능하니깐) 일단은 잘 가져다가 적재 적소에 잘 사용하는 능력부터~~


당연히 JQuery기본 예제들은 반드시 익혀서 적용가능한 능력을 구비해야함
ASP.NET과 혼용하여 잘~사용하면 쵝오의 웹개발 플랫폼임. 개인적으로 웹에서 MVC보다 ASP.NET을 좋아함
ASP.NET에서 특별한 경우를 제외하고는 ViewState나 EventArgState?인가 요 두놈은 false로 두고 사용들 하시길~~


탭(기본탭 있지만 요놈도 좋으네요)
http://stilbuero.de/jquery/tabs_3/

 

메뉴
http://www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm#


마우스 우측클릭 context메뉴 (정말 잘만들었네)
http://www.javascripttoolbox.com/lib/contextmenu/

벨리데이션
http://bassistance.de/jquery-plugins/jquery-plugin-validation/

트리
1. 호호 잘만들었네요
http://plugins.jquery.com/project/acts_as_tree_table
데모 http://ludo.cubicphuse.nl/jquery-plugins/acts_as_tree_table/doc/index.html#examples

이 사이트에는 건질게 많음
http://www.filamentgroup.com/lab/jquery_aria_tree_control_from_book_designing_with_progressive_enhancement/


테이블

1. 컬럼필터 기능인데 웹에서 필요할까나? 윈폼이멘 몇만건에서 필터링 은 필요한데.... 혹시나 해서
  http://plugins.jquery.com/project/ColumnFilters
http://www.trirand.com/blog/?p=13

우리나라 정서에는 http://datatables.net/examples/ 요녀석이 제일 나을듯


2. 잘맹걸었네~~~
http://plugins.jquery.com/project/flexigrid
데모 http://flexigrid.info/


이미지 줌
쇼핑몰에서 이용하면 짱~
http://www.mind-projects.it/projects/jqzoom/index.php#examples

 

차트
http://code.google.com/p/flot/

html5 canvas access차트
http://www.filamentgroup.com/lab/creating_accessible_charts_using_canvas_and_jquery/

 


버튼
http://www.filamentgroup.com/lab/update_styling_the_button_element_with_css_sliding_doors_now_with_image_spr/
theme확장법
http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/


드랍다운(쵝오)
http://www.filamentgroup.com/lab/jquery_ipod_style_and_flyout_menus/
http://www.filamentgroup.com/lab/jquery_ui_selectmenu_an_aria_accessible_plugin_for_styling_a_html_select/

툴팁
http://www.filamentgroup.com/lab/image_free_css_tooltip_pointers_a_use_for_polygonal_css/


Multiple Theme
http://www.filamentgroup.com/lab/using_multiple_jquery_ui_themes_on_a_single_page/


테이블 모서리 둥글게(IE에만 해당)
http://www.filamentgroup.com/lab/achieving_rounded_corners_in_internet_explorer_for_jquery_ui_with_dd_roundi/

엄선리스트라고 사이트
http://blog.naver.com/seogi1004?Redirect=Log&logNo=110085431616

 

이분 Rick Strahl  포스팅 내용은 꼭 볼것 샘플도 있삼 asp.net과 연동하는 부분인듯 합니다. (내용좋으면 나중에 새로 정리)

http://west-wind.com/weblog/posts/459197.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+RickStrahl+%28Rick+Strahl%27s+WebLog%29&utm_content=FeedBurner

읽어볼 내용
http://blog.galaxark.com/2010/05/20-jquery-plugins-that-enhance-html-form-elements/

필자가 작성해본 신청폼
http://www.xamller.net/WebApp/WebUI/ListFormSamples/RegistUser.aspx

블로그 이미지

란마12

,

1.다음과 같이 DLL을 로딩하여 DLL내의 함수를 호출하는 코드를 작성합니다.

    public class FileFilter
    {
        [DllImport("EurekaFilter.dll", CharSet = CharSet.Auto)]
        public static extern bool Doc2Txt(
            byte[] filename
            );

        public FileFilter()
        {
        }

         public string GetTextByFile(string filePath)
        {
            string s = "";

            byte[] FilePathByte = new byte[filePath.Length * 2 + 10];
            FilePathByte = Encoding.Default.GetBytes(filePath);
            string[] ext = filePath.Split('.');
            Doc2Txt(FilePathByte);     // DLL내의 함수를 닷넷처럼 호출한다.

            .....
        }
    }

2. 로딩할 DLL을 서버에 폴더를 만들어 복사하여 놓는다.
   (주의 : C++, C는 DLL이 동작하기 위해서 다른 참조 DLL이 필요한 경우가 대부분임.(mfc.dll 등) 이 DLL로 함께 복사할 것)

3. 만들어진 폴더을 다음과 같이 코딩 하여 환경 변수에 추가한다.

   // global.asax파일에서 코딩을 한다.

    void Application_Start(object sender, EventArgs e)
    {
        // 응용 프로그램이 시작될 때 실행되는 코드입니다.
        String _path = String.Concat(System.Environment.GetEnvironmentVariable("PATH"), ";", @"D:\CPlusDll");
        System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process);
    }

4. 첨부내역(샘플)
- 첨부파일에서 텍스트만 추출하는 방법(샘플코드) : FileFilter.cs
- 참조하는 파일 : 사이냅 필터.zip
- MFC참조파일 : mfcDLL.zip
- 2개의 zip파일은 컴파일시 필요로 하지 않음.
  (단, 동작시 같은 디렉토리에 있거나 위 3번에서 설정한 디렉토리에 존재해야 함.)

'temp' 카테고리의 다른 글

이 애플리케이션은 특정 OS에서도 돌아가나요?  (0) 2010.06.08
jquery  (0) 2010.06.08
블로그 이미지

란마12

,