반응형

pdf 파일을 설치 없이 간편하게 확인할 수 있는 Sumatra PDF를 소개합니다.
 Sumatra PDF는 오픈 소스 포터블 실행 파일을 지원하고 있어
설치 없이 pdf를 오픈할 수 있습니다.



상기 사이트로 이동해서 "Download for here"를 클릭합니다.



Sumatra PDF를 사용하기 위해서 Portable 파일을 다운로드합니다.
x64일 경우 아래쪽 링크를 클릭합니다.



링크를 클릭하면 자동으로 Sumatra PDF를 다운로드합니다.



다운로드 파일을 압축 풀기를 실행합니다.



보시는 것처럼 한 개의 파일만 있습니다.



압축을 풀고 생성된 Sumatra PDF 실행 파일입니다.



Sumatra PDF 실행 파일을 클릭하면 Sumatra PDF가 바로 실행됩니다.
문서 열기를 클릭해서 pdf를 선택합니다.



Sumatra PDF  확인 결과 상위 버전 pdf 파일도 잘 출력됩니다.

간단하게 pdf 파일을 확인하고 싶다면 Sumatra PDF 한번 검색해보세요.

이상입니다.


반응형
반응형

오늘은 이클립스에서 PHP 설치 방법을 알아보겠습니다.



먼저 이클립스를 실행해서 메뉴에 있는 "Help" -> "Install New Software"를 클릭해주세요.



"Work with"에 "http://download.eclipse.org/releases/버전" url을 입력 후
아래쪽에 php를 입력하면 리스트가 활성화됩니다.



활성화된 PHP 패키지를 선택하고 아래쪽에 있는 "Next"를 클릭합니다.



PHP 인스톨 정보가 선택되고 다시 "Next"를 클릭합니다.



License 동의를 선택하고 "Finish"를 클릭하면
PHP가 설치됩니다.



PHP 설치 후 이클립스를 재시작하면 PHP를 선택할 수 있습니다.
Open Perspective를 설정하기 위해서 이클립스 상단 오른쪽 아이콘을 클릭합니다.



PHP를 선택하면 이클립스 UI가 변경됩니다.



Project에서 PHP Project를 클릭합니다.



PHP 프로젝트명을 설정하고 "Finish" 버튼을 클릭하면 PHP Project가 실행됩니다.
이상으로 마치겠습니다.


반응형

'IT 나라 > 프로그램 이야기' 카테고리의 다른 글

ASUS PRIME B360M-A STCOM  (0) 2018.08.23
Sumatra PDF  (0) 2018.04.10
Visual Studio code에서 Go 실행하기  (0) 2018.02.02
Go 언어 설치 방법  (0) 2018.02.01
MFC Dialog Class Name 변경 방법  (0) 2017.08.22
반응형

Visual Studio code를 사용하기 전에 Go를 설치해야 합니다.
Go 설치는 주소를 참고해주세요.
http://jazzkim12.blog.me/221198504157


1. Visual Studio code 설치하기 위해서 다운로드 사이트로 이동합니다.
https://code.visualstudio.com/


왼쪽에 있는 다운로드를 클릭해서 Visual Studio code를 설치합니다.

2. Visual Studio code 실행 후 Ctrl + Shift + p 실행 후 Install Extensions를 입력 후 엔터
    Go for Visual Studio Code를 설치합니다.




3. Go 설치 정보를 확인합니다.
cmd를 실행 후 "go env"를 실행합니다.



정보 중 GOPATH 폴더에 연동 모듈을 다운로드해야 합니다.

4. 다운로드 프로그램을 설치합니다.
 https://git-scm.com/download/win

Git이 설치 안되어 있으면 다운로드 입력시 아래 사진처럼 error가 출력됩니다.


정상적으로 다운로드 시는 Error 목록이 출력 안됩니다.
전 GOPATH가 정상적으로 되어 있어도 안되었습니다.
그래서 설치된 "Gtt CMD"를 사용하니 정상적으로 실행되었습니다.

5. "Get CMD"를 실행 후 아래 명령어를 입력 후 엔터를 입력합니다.
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/zmb3/gogetdoc
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/cweill/gotests/...
go get -u -v golang.org/x/tools/cmd/godoc
go get -u -v github.com/fatih/gomodifytags 



정상적으로 설치되었다면 다운로드가 실행됩니다.



다운로드 후 GOPATH bin 폴더로 이동하면 다수의 exe가 생성됩니다.

6. go Debugger 설치하기
"Git CMD"를 실행 후
go get github.com/derekparker/delve/cmd/dlv
상기 명령어를 실행합니다.

7. GOPATH 아래 src 폴더에서 test.go 파일을 생성하고 아래 코드를 입력합니다.

package main 
import "fmt" func 
main() { 
 fmt.Print("hello. Go world \n") 
 fmt.Print("Test1234") 
}



저장 후 'F5'를 클릭하면 컴파일 되면서 디버그 콘솔에 출력됩니다.
이상으로 마치겠습니다.

[참고 사이트]
https://blog.naver.com/icarus_buk/220969321927
http://realmojo.tistory.com/147


반응형

'IT 나라 > 프로그램 이야기' 카테고리의 다른 글

Sumatra PDF  (0) 2018.04.10
이클립스에서 PHP 사용하기  (0) 2018.03.26
Go 언어 설치 방법  (0) 2018.02.01
MFC Dialog Class Name 변경 방법  (0) 2017.08.22
C# TOPMOST MessageBox 사용하기  (0) 2017.07.31
반응형

오늘은 구글에서 개발한 Go 언어 설치 방법을 알아보겠습니다.
Windows10 x64에서 설치했습니다.



Go 언어를 설치하기 위해서는 
https://golang.org/



우측에 있는 Download Go를 클릭하면 다운로드 페이지로 이동합니다.
https://golang.org/dl/



다운로드 페이지로 이동하면서 go1.9.3.wwindows-amd64.msi가 다운로드 됩니다.



Go 언어 설치 파일 go1.9.3.wwindows-amd64.msi를 더블클릭합니다.



Go 언어 설치 경로를 입력합니다.
기본 C 드라이브에 설정됩니다.



Go 언어 설치 완료 화면입니다.



환경 변수를 확인하기 위해서 시스템에서 '고급 시스템 설정'을 클릭합니다.



시스템 속성에서 '환경 변수'를 클릭합니다.



위 사진처럼 환경 변수 편집에 'C\Go\bin' 경로가 있으면 정상적으로 설치된 겁니다.
자동 등록이 되어 매우 편리합니다.
Go 언어 설치를 마치겠습니다.


반응형
반응형

오늘은 MFC Dialog Class Name 변경 방법을 알아보겠습니다.













프로젝트 생성 후  리소스 뷰로 이동합니다.
프로젝트.rc를 선택하고 속성을 클릭하면 MFC Mode 필드를 False로 변경합니다.














변경하고 싶은 Dialog를 선택 후 속성을 클릭합니다.

상단에 보이는 Class Name를 변경합니다.




다시 프로젝트.rc를 선택 후 MFC Mode를 True로 변경합니다.






프로젝트.rc파일을 텍스트로 확인하면 CLASS 명이 변경된 것을 확인할 수 있습니다.









Dialog App InitInstance로 이동합니다.
Dialog가 생성되기 전에 아래 코드를 추가합니다.

WNDCLASS wc; ::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc); wc.lpszClassName = _T("@CLASSNAME"); AfxRegisterClass(&wc);




컴파일 후 Spy++로 확인하면 Class Name이 변경된 것을 확인할 수 있습니다.
Class Name 변경 후 App에 코드를 추가 안 할 경우 Class Name을 확인할 수 없어 Dialog가 안 보이게 됩니다.
이상입니다.
감사합니다.


반응형

'IT 나라 > 프로그램 이야기' 카테고리의 다른 글

Visual Studio code에서 Go 실행하기  (0) 2018.02.02
Go 언어 설치 방법  (0) 2018.02.01
C# TOPMOST MessageBox 사용하기  (0) 2017.07.31
XmlSerializer 사용법  (0) 2017.03.17
COM 래퍼 클래스 만들기  (0) 2017.01.20
반응형

Form 사용 시 속성이 Topmost일 경우 MessageBox가 하위로 숨는 경우가 발생 할 수 있다.




일반적으로 Form에서 사용할 경우.

MessageBox.Show("하이 Topmsot");


변경

MessageBox.Show(this, "하이 Topmsot");


2개 이상 프로세스를 사용할 경우 하위 프로세스에서 MessageBox를 사용하면 하위로 숨는 문제가 발생할 수 있다.


하위 프로세스가 Topmost속성이 아니므로, 새로운 Form을 생성해서 Topmost속성을 추가하면 정상적으로 동작합니다.


MessageBox.Show(new Form { TopMost = true }, "하이 Topmsot");


반응형

'IT 나라 > 프로그램 이야기' 카테고리의 다른 글

Go 언어 설치 방법  (0) 2018.02.01
MFC Dialog Class Name 변경 방법  (0) 2017.08.22
XmlSerializer 사용법  (0) 2017.03.17
COM 래퍼 클래스 만들기  (0) 2017.01.20
C# COM 모듈 C++에서 사용하기  (1) 2017.01.13
반응형

안녕하세요. 오늘은 C# XmlSerializer 사용법에 대해서 알아보겠습니다.

XmlSeralizer Class는 xml 정보를 Deserialize하여 지정된 Class에 정보를 복사하는 Class입니다.



XmlSerializer Class MSDN입니다.


XmlSerializer 생성자 입니다.




메서드입니다.




이벤트입니다.




XmlSerializer을 사용하기 위해서는 먼저 Xml생성해야 합니다.

Serializable되어야 하므로 사용 Class와 동일한 구조로 작성해 줍니다.

 

1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
  <Item>
    <Item1>Item1 A</Item1>
    <Item2>Item1 B</Item2>
    <Item3>Item1 C</Item3>
    <Page>1</Page>
  </Item>
</Config>
cs

xml에 보이는 Config가 기본 Class 이름입니다.

하위 로드는 Item, Item1, Item2, Item3, Page입니다.

Class구성시 같은 구조로 되어 있어야 정상 동작합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Serializable]
public class Config : XmlPersistableObject
{
      public Config() { Item = new ItemObject(); }
      public ItemObject Item;
}
 
public class ItemObject
{
      public string Item1 { get; set; }
      public string Item2 { get; set; }
      public string Item3 { get; set; }
      public int Page { get; set; }
}
cs

XmlPeristableObject Class를 상속 받아서 Xml 직접 제어하는 Class입니다.

Xml과 동일한 구조입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class XmlPersistableObject
{
      public static T Load<T>(string szFileName) where T : XmlPersistableObject, new()
      {
          T result = default(T);
          using (FileStream stream = File.OpenRead(szFileName))
          {
              result = new XmlSerializer(typeof(T)).Deserialize(stream) as T;
          }
          return result;
      }
 
      public void Save<T>(string szFileName) where T : XmlPersistableObject
      {
          using (FileStream stream = new FileStream(szFileName, FileMode.CreateNew))
          {
              new XmlSerializer(typeof(T)).Serialize(stream, this);
          }
      }
}
cs


XmlSerializer 사용 Class입니다.

T를 사용해서 작성한 Class를 Deserialize하거나 Serialize합니다.


1
2
3
4
5
6
7
8
string szXmlPath = Application.StartupPath + "\\configXml.xml";
Config cnf = new Config();
cnf.Item.Item1 = "Item1 A";
cnf.Item.Item2 = "Item1 B";
cnf.Item.Item3 = "Item1 C";
cnf.Item.Page = 1;
cnf.Save<Config>(szXmlPath);
Config loadxml = Config.Load<Config>(szXmlPath);
cs


사용 예제 입니다.


XmlSerializer을 사용하면 손 쉽게 xml을 컨트롤 할 수 있습니다.


이상입니다.






반응형
반응형

안녕하세요. 오늘은 COM 래퍼 크래스 만드는 방법을 배워보겠습니다.

OCX를 만들게 되면 일반적으로 웹에서 사용하지만,

간혹 OCX를 프로그램에서 사용해야 하는 경우가 있습니다.

이럴때 자동으로 UI에서 래퍼 클래스가 생성되지만

안될 경우 혼란에 빠지게 됩니다. ㅠㅠ




OCX를 직접 사용하기 위해서는 래퍼 클래스를 이용해서 노출된 인터페이스에 접근하게됩니다.

래퍼 클래스는 OCX를 개발할 때 생성된 GUID를 이용해서 접근합니다.



1
2
3
#include "StdAfx.h"
#include "Activex_TESTCtrl.h"
IMPLEMENT_DYNCREATE(Activex_TESTCtrl, CWnd)
cs


Activex_TESTCtrl.cpp 파일 입니다.


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
66
67
68
69
70
71
72
#pragma once
 
// 컴퓨터에서 Microsoft Visual C++를 사용하여 생성한 IDispatch 래퍼 클래스입니다.
 
// 참고: 이 파일의 내용을 수정하지 마십시오. Microsoft Visual C++에서
//  이 클래스를 다시 생성할 때 수정한 내용을 덮어씁니다.
 
/////////////////////////////////////////////////////////////////////////////
// CActivex_test01ctrl1 래퍼 클래스입니다.
 
class Activex_TESTCtrl : public CWnd
{
protected:
    DECLARE_DYNCREATE(Activex_TESTCtrl)
public:
    CLSID const& GetClsid()
    {
        static CLSID const clsid                        
            = { 0x2d12f2e40x1c6f0x475a, { 0x180x320x190xef0xef0x9a0x170x58} };
        return clsid;
    }
    virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
        const RECT& rect, CWnd* pParentWnd, UINT nID, 
        CCreateContext* pContext = NULL)
    { 
        return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); 
    }
 
    BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, 
        UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
        BSTR bstrLicKey = NULL)
    { 
        return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
            pPersist, bStorage, bstrLicKey); 
    }
 
    // 특성입니다.
public:
 
 
    // 작업입니다.
public:
 
    // _DActiveX_Test01
 
    // Functions
    //
 
    void Fun()
    {
        InvokeHelper(0x01, DISPATCH_METHOD, VT_EMPTY, NULLNULL);
    }
 
    
    // Properties
    BSTR GetFunIP()
    {
        BSTR site;
        InvokeHelper(0x02, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&site, NULL);
        return site;
    }
 
    void SetFunIP(LPCTSTR newVal)
    {
        static BYTE parms[] = VTS_BSTR;
        InvokeHelper(0x02, DISPATCH_PROPERTYPUT, VT_BSTR, NULL, parms, newVal);
    }
 
    
 
};
 
cs


Activex_TESTCtrl.h 파일 입니다.


CSLID는 OCX에 등록된 GUID를 복사하면 됩니다.


생성된 래퍼 클래스는 DDX_Control 함수를 사용해서 직접 연결하면 사용 가능합니다.


OCX에 설정된 메서드 또는 속성에 접근하기 위해서는 InvokeHelper 함수를 사용해야 합니다.


InvokeHelper함수는 wFlags를 통해 지정된 컨텍스트에서 dwDispID를 통해 지정된 개체 메서드 또는 속성을 호출합니다.



InvokeHelper 함수 구문입니다.


5개 이상 매개 변수를 사용하고 있으며 가장 중요한 메서드는 dwDispID입니다.

dwDispID를 OCX개발 시 설정 된 ID이며 ID가 다를 경우 "형식 오류" 를 리턴 합니다.



vtRet인수의 가능한 VARENUM 열거형입니다.

설정 된 값을 설정 후 접근하면 됩니다.


이렇게 래퍼 클래스를 만들면 쉽게 COM을 접근해서 사용 가능합니다.


자동 생성이 안된다고 당황하지 마시고 안되면 그냥 위 내용을 복사해서 사용하시면 됩니다.


그럼 즐거운 주말 보내십시오.


감사합니다.


반응형
반응형

안녕하세요. 오늘은 C# COM모듈을 C++에서 사용하는 방법을 알아 보겠습니다.

C#은 많은 Class를 포함하고 있어 C++보다

빠르고 유용하게 사용할 수 있는 좋은 장점이 있습니다.


 

이번 프로젝트는 C# 메시지 박스를 C++에서 출력해보겠습니다.

 

  

클래스 라이브러리 프로젝트를 생성합니다.

 

 

 

C#모듈을 외부 모듈에서 사용하기 위해서는 기본 설정인 Any CPU를 반드시 x86, x64로 변경해야 합니다.

꼭 확인해주세요. ^^

 

 

 

COM tlb를 사용하기 위해서 설정에서 “COM Interop등록”을 체크해주세요.

 

 

 

어셈블리 설정에서 “어셈블리를 COM에 노출”을 체크해주세요.

 

 

 

COM모듈로 사용하기 위해서 기본 Interface를 노출해야 합니다.

그래서 기본이 되는 Interface를 생성해주세요.

생성된 Interface를 상속 받아 Class를 생성합니다.

 

 

 

COM을 사용하기 위해서는 고정 GUID가 필요합니다.

GUID Tool을 사용해서 두개의 새 GUID를 생성해서 복사 합니다.

 

생성된 CallModule.dll을 COM으로 사용하기 위해서는 Interface가 정의 된 .tlb파일이 필요합니다.

 

 

 

RegAsm.exe를 사용해서 .tlb를 생성해야 합니다.

가장 중요한 것은 RegAsm.exe를 컴파일 버전에 따라서 복사 후 사용하셔야 합니다.

저는 x64로 컴파일 했기 때문에 x64용 RegAsm.exe를 사용했습니다.

경로는 “C:\Windows\Microsoft.NET\Framework64\v4.0.30319”입니다.

설치 환경에 따라 다르지만, 꼭 컴파일 버전별로 확인해주세요.

위에 보이시는 것 처럼 “Regasm 모듈명 /tlb:이름.tlb” 명령어를 실행합니다.

그럼 실행 위치에 설정한 .tlb파일이 생성 됩니다.

생성된 .tlb파일은 c++프로젝트로 복사해주세요.

 

이제 C++ 프로젝트를 생성해주십시오.

C++에서는 C# COM Class를 확인 할 수 없기 때문에 별도 Wrepper Class를 만들어야 합니다.

 

 

CallClassWrapper.cpp 입니다.

 

 

 

CallClassWrapper.h 입니다.

.tlb를 포함하게 되면 컴파일 폴더에 .tlh가 생성 됩니다.

이 .tlh를 참고해서 CLSID, DIID를 설정하면 됩니다.

 

CallModule.zip

 

 처음 컴파일에 오류가 발생하게 되면 생성된 .tlh를 확인해서 CLSID, DIID를 동일하게 하면

문제 없이 동작합니다.

 

빌드는 Visual Studio 2015에서 진행 했습니다.

 

C# COM모듈을 C++에서 사용하는 방법을 알아 보았습니다.

감사합니다.

 

 

 

반응형
반응형

오늘은 게시판 홈페이지를 만들기 위해서 사용하는

프레임워크 그루보드5 설치에 대해서 알아보겠습니다.

 

그누보드5 설치-1


그루보드5를 설치하기 위해서는 DB, 웹서버를 셋팅해야 합니다.

하지만 많은 사용자들이 초보이기 때문에  DB, 웹서버 셋팅이 쉽지 않습니다.

그래서 오늘은 DB,웹서버 셋팅을 스킵하고,  무료 도메인에 설치하는 방법을 알려드리겠습니다.

먼저 그누보드5를 다운로드 받습니다.

그누보드5 다운로드 사이트 : https://sir.kr/g5_pds/3220

 

그누보드5 설치-2


가장 최신 버전을 받아서 설치하는게 가장 좋습니다.

다운로드된 파일을 압축을 풀고 무로 도메인 메인 폴더에 FTP를 사용해서 복사합니다.

 

그누보드5 설치-3


그누보드5를 설치하기 위해서는 data폴더가 필요합니다.

 

그누보드5 설치-5


다운로드 후 폴더 안에 data폴도를 생성합니다.

이제 그누보드5 설치 화면에서 설치를 클릭 합니다.

 

그누보드5 설치-4


data 폴더가 있다면 정상적으로 그누보드5 설치 화면으로 이동합니다.

 

그누보드5 설치-6


그누보드5 라이센스를 "동의합니다."를 체크하고 "다음"을 클릭합니다.

 

그누보드5 설치-7


그누보드5를 설치하기 위해서는 MySQL정보가 있어야 합니다.

도메인에 등록된 User, Password, DB정보를 등록하십시오.

최고관리자 정보는 그누보드5 관리 정보이므로, 사용하고하는 비밀번호를 등록하면 됩니다.

*비밀번호를 잊어 버릴 경우 참고하십시오. [그루보드5 관리자 비밀번호 리셋]

 

그누보드5 설치-8

 

DB에 문제가 없다면 정상 적으로 설치 됩니다.

설치 후 도메인으로 이동하면 메인 페이지가 출력 됩니다.

 

그누보드5 설치-9


DB등록에서 등록한 관리자 정보를 입력하고 로그인 되면 그누보드5를 셋팅할 수 있습니다.

이상으로 그루보드5 설치 방법을 마치겠습니다.

감사합니다.

반응형

'IT 나라 > 프로그램 이야기' 카테고리의 다른 글

COM 래퍼 클래스 만들기  (0) 2017.01.20
C# COM 모듈 C++에서 사용하기  (1) 2017.01.13
그누보드5 관리자 비밀번호 변경 방법  (0) 2016.05.04
Sliding window  (0) 2013.07.02
Window Event Sequence  (0) 2013.06.12

+ Recent posts