블로그 이미지
Flying Mr.Cheon youGom

Recent Comment»

Recent Post»

Recent Trackback»

« 2024/5 »
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

 
 

Visual Studio Code(이하 vscode)에서 Go 언어 개발 환경 세팅 방법을 포스팅 해봅니다.

 

go 플러그인 설치

Image

먼저 vscode에서 위 이미지와 같이 ‘go’ 플러그인을 설치합니다.

 

개발 디렉토리 설정

그리고 소스를 관리할 개발용 디렉토리를 설정합니다. 저같은 경우는 Windows에서는 C:\Workspace\vscode_go로 세팅했고, Linux에서는 /home/snowdeer/Workspace/go 아래에 설정했습니다.

그리고 GOPATH 환경 변수 설정을 해야 합니다. Windows에서는

Image

환경 변수 편집 화면에서 GOPATH 항목을 등록해주면 되고, Linux에서는 터미널에서 export 명령어를 이용하면 됩니다.

export GOPATH="/home/snowdeer/Workspace/go"

그리고 해당 디렉토리에는 각각 src, pkg, bin 이름의 하위 디렉토리를 만들어줍니다.

 

추가 파일 설치

이제 vscode에서 Go 프로그래밍을 위한 실행 파일들을 다운로드하고 설치하는 작업을 합니다. 위에서 만든 디렉토리의 src 폴더 아래에 main.go 파일을 작성하고 vscode에서 열어봅니다.

그러면 vscode에서 아래 이미지와 같이 필요한 파일들을 설치할 것인지를 물어볼 것입니다.

Image

그냥 Install All을 선택해서 모든 파일들을 설치하면 됩니다. 모든 파일들을 설치하는데는 약 5분 정도의 시간이 걸릴 수 있습니다.

Installing 9 tools at C:\Workspace\vscode_go\bin
  gopkgs
  go-outline
  go-symbols
  guru
  gorename
  godef
  goreturns
  golint
  dlv

Installing github.com/uudashr/gopkgs/cmd/gopkgs SUCCEEDED
Installing github.com/ramya-rao-a/go-outline SUCCEEDED
Installing github.com/acroca/go-symbols SUCCEEDED
Installing golang.org/x/tools/cmd/guru SUCCEEDED
Installing golang.org/x/tools/cmd/gorename SUCCEEDED
Installing github.com/rogpeppe/godef SUCCEEDED
Installing sourcegraph.com/sqs/goreturns SUCCEEDED
Installing github.com/golang/lint/golint SUCCEEDED
Installing github.com/derekparker/delve/cmd/dlv SUCCEEDED

All tools successfully installed. You're ready to Go :).

 

테스트 코드 및 실행

다음 코드로 실행 테스트를 해봅니다.

package main

import "fmt"

func main() {
	fmt.Println("Hello, snowdeer")
	fmt.Println("안녕. 스노우디어")
}

코드 작성 후

F5

키를 눌러 실행을 해봅니다. 브레이크 포인트(Break Point)를 걸고 디버깅을 해볼 수도 있습니다.

Image
출처 : 

https://snowdeer.github.io/go/2018/01/21/how-to-programming-go-using-visual-studio-code/

:

ref : https://golangkorea.github.io/post/vim-go/

아래 박스 내용은 제대로 안되길래 박싱-클로징 시켜둠.




ref : https://github.com/socialpercon/getting-start-golang/blob/master/docs/vim-go.md

아래 내용도 에러가 발생해서 맨 아래 내용으로 강제 설치후,

아래 내용을 수동으로 설정함






위에 꺼 두개 다 안되서 아래 링크 내용으로 수동 설치함. 설치 후 위에 내용 참조하여 재설정.


ref : https://github.com/Microsoft/vscode-go/wiki/Go-tools-that-the-Go-extension-depends-on

Go tools that the Go extension depends on


go get -u -v github.com/ramya-rao-a/go-outline
go get -u -v github.com/acroca/go-symbols
go get -u -v github.com/mdempsky/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v golang.org/x/tools/cmd/godoc
go get -u -v github.com/zmb3/gogetdoc
go get -u -v golang.org/x/lint/golint
go get -u -v github.com/fatih/gomodifytags
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/goimports
go get -u -v github.com/cweill/gotests/...
go get -u -v golang.org/x/tools/cmd/guru
go get -u -v github.com/josharian/impl
go get -u -v github.com/haya14busa/goplay/cmd/goplay
go get -u -v github.com/uudashr/gopkgs/cmd/gopkgs
go get -u -v github.com/davidrjenni/reftools/cmd/fillstruct
go get -u -v github.com/alecthomas/gometalinter
gometalinter --install



마지막으로..

위에거 삽질하고나서 다시 검색해보니, 아래 링크에 vim-go ( vatih-vim ) 사용법에 대해 상세히 나와 있었음 -_-;;

일찍 찾았으면 삽질을 좀 더 덜했을텐데.. ( 영어라는 것에 주의가 필요함 )

ref : https://github.com/fatih/vim-go/blob/master/doc/vim-go.txt



:

출처 : http://blog.xcoda.net/82


잘 정리되어 있는 글s~



:



핵심 부분만 간추려서 적어 놓았다.

아래 코드는 컴파일시도하지 않는 코드이다.

아래 가이드 코드를 작성하기 전에 ( 방금전에 ) 리플렉션 코드를 완성하고 테스트를 마친상태에서 정리한 것이다.


regist는 클래스를 선언할때 등록이 되며, getClass는 클래스가 필요할때 아무데서나 불러쓸수 있다.

이 c++ 리플렉션의 장점은 해당 클래스가 필요할지라도 getClass를 부를 때 ConcreteA.h 를 포함하지 않고

SuperVisor.h파일만 포함하고 있으면 해당 클래스를 가져다 쓸수 있다.


이 리플렉션을 활용하면 클래스간의 커플링이 제거된다.



// super 

class Object;


// without implement class.

class ConcreteA;

class ConcreteB;


// factory

class CreateBase

: public Object

{

public: ...

public: virtual Object* Create() = 0;

}


template < class Conrete >

class CreateImpl

: public CreateBase

{

public: ...

public: virtual Object* Create() { return Concrete; }

}


// class resource management

class SuperVisor

{

static bool Regist( const char* name, Object* pObj )

{

map.add( name, pObj );

}

static Object* GetClass( const char* name )

{

Object* pCreator = map.get( name )

return pCreator->Create();

}

}


// macro

#define Regist( obj )    SuperVisor::Regist( #obj, new obj() )

#define GetClass( obj )  SuperVisor::GetClass( #obj )


/*

* Regist() macro will be used the page of .cpp file of implment class.

*/


// using.

Regist( ConcreteA );

Regist( ConcreteB );


Object* A = GetClass( ConcreteA );

Object* B = GetClass( ConcreteB );





:
그냥, 경함담..(?) ㅋ

딱 봐도, 나중에 모두 고생길로 가는 지시였다.
그럼에도 불구하고, 그냥 하는거다. ^^;

UI부분과 Network 리소스 관리에 대한 이야기다. 

UI에서 화면에 출력할 서버 데이터가 필요해 Data network 모듈에 Request를 호출한다.
너무 많이 호출( 100개 )하면 Request Queue가 Full나서 뻑난다.
그리하여, UI에서 Request 호출을 Pooling해서 Network 단에 하나씩 넘겨주라고 한다.
( 즉, 10개의 Request가 있으면, 1번 끝나면 2번 보내기 ... )

왜.. Network의 Sender( Request ) Pooling관리를 UI에서 하는지 모르겠다.
죽는 건 Network단인데, 고치는 건 UI다.

현재 1개의 UI에서 아랫단을 대신하여 만들고 있지만, 이거 하나로 모든 UI 페이지가 이 내용을 따라야 할 것이다.

약 30개 이상의 UI가 존재한다. Network에서 Pooling을 지원해주면 될 것을..
( 100줄에 끝날 내용을.. 200줄에서 최대 1만줄을 할애하는 것이다. )

이에 대한 건의는 하지 않는다. 윗분들은 제안을 좋아하지 않기 때문이다. 제안을 좋아하는 경우는 단 하나, 그 사람이 내고 싶어했던 제안을 내야 좋아한다.

그냥.. 닥치고 하라는 대로 한다.

위 지시에 대한 응답은 "알겠습니다"였다. 
나는..? 우리는..! 프로그래머가 아니라, 직장인이다.

ps. MVC보다는 Model2 Architecture와 가장 유사하다.
( 설계도는 없다. 그냥.. 아키텍쳐로 따지자면 그렇다는 것.. ^^;; 이해를 돕기 위해 비유했다. ^^; )


  


 























닥치고 정치를 하던가, 닥치고 하라는대로 하던가. 골라야 할듯 ^^;;


:

참고루.. 버젼관리 툴을 사용한다면..
툴 관리 초기화 시키거나 교체 할 때 써야합니다. 안그러면 로그 남아서.. 큰일나요 ㅎ;

티 안나게 잘 감추시길;; ㅋ

#define m(a,b,c) a##b##c
#define M(a,b,c,d,e,f) a##b##c##d##e##f
#define d(t, T, tt)  m(t,T,tt)

d(Share, Instance, Ptr)* value = M(Share, Instance, Ptr, ::Get, Ins, Tance)();
d(to, delete, type) a = value->m(mem,ber, Var);
d(de, le, te) a;

-_-;;;

티 안나게 알아서 죽어 줄거임...

but, 걸리면 클남 ㅋㅋㅋ


더 좋은 방법 있음 댓글 ^^;




저런 거 쓸까 했는데, 걍 안씀 ㅋㅋㅋ 되나 안되나 해봤는데.. 바로 죽네 오.. ^^;
:


환경 :
  • 윈도 XP
  • Eclipse 3.5.2 (subclipse plugin)
  • Subversion 1.6.x

이클립스에서 svn 클라이언트로 작업중이었는데 Team -> Show History 기능을 사용하려면 제목과 같은 에러가 나왔습니다.
구글링해서 제 설정파일과 비교해보니 간단한 문제였네요.

일반적으로 svnserve.conf는 아래와 같이 주석이 풀려있겠죠.
svnserve.conf
1 [general]anon-access = readauth-access = writepassword-db = passwdauthz-db = authz

authz 파일의 경우 저는 아래와 같이 되어있었습니다. 
authz - before
1 [groups]user = soriwa[/]@user = rw

다음과 같이 everyone에 대한 읽기 권한을 줘야 제대로 읽어옵니다.
everyone에 대해서는 정의가 없으면 권한이 없는 거니까 늘 정해진 계정을 통해서만 작업되는 경우는 필요없을거라 생각해서 빼버렸거든요...이게 문제였네요.
authz - after
1 [groups]user = soriwa[/]@user = rw* = r
:

svn 데이터 dump 및 load 방법

소프트웨어 공학/개발 | 2011. 11. 7. 15:44 | Posted by youGom

svn 데이터 dump 및 load 방법( Repository 를 MyTest 로 가정)

 

 1. 해당 Repository 가 생성된 상위 directory 로 이동 한다.


 2. Repository 를 dump 한다.
  command >> svnadmin dump MyTest > MyTest.20006.09.09.dump
     ->  전체 dump
  command >> svnadmin dump MyTest -r 10 > MyTest.20006.09.09.dump
     -> 리비전 10 만 dump
  command >> svnadmin dump MyTest -r 10:20 > MyTest.20006.09.09.dump
     -> 리비전 10 부터 20 까지 만 dump

 

 3. 새로운 Repository 를 생성 한다. (Repository 를 MyTestNew 로 가정)
  command >> 
svnadmin create MyTestNew

 

 4. dump 된 데이터를 load 한다. (Repository 를 MyTestNew 로 가정)
  command >> svnadmin load MyTestNew < MyTest.20006.09.09.dump
     -> 새로운 리비전 으로 load (리비전 번호는 1부터 생성)
  command >> svnadmin load MyTestNew --force-uuid < MyTest.20006.09.09.dump
     
-> 기존 dump 했던 리비전 유지


출처 ;
http://blog.naver.com/cjsearch/60028473858

:

SVN-Trac 재연동

소프트웨어 공학/개발 | 2011. 11. 7. 15:39 | Posted by youGom

SVN
 - HotCopy 연동할폴더
Trac
 - resync

'소프트웨어 공학 > 개발' 카테고리의 다른 글

svn: Item is not readable (아이템이 읽기 불가능합니다) 해결  (0) 2011.11.08
svn 데이터 dump 및 load 방법  (0) 2011.11.07
TRAC 생성  (0) 2011.11.07
SVN 생성  (0) 2011.11.07
Subclipse for SVN on Eclipse CDT  (0) 2011.11.04
:

TRAC 생성

소프트웨어 공학/개발 | 2011. 11. 7. 15:38 | Posted by youGom


 + 생성
  서브버젼설치폴더\svn_data>svnadmin create sample2
  파이썬설치폴더\Scripts>trac-admin.exe 트랙폴더\sample2 initenv
  - svn reposit : 서브버젼설치폴더\svn_data\sample2

 + 계정 설정
  : 아파치 htpasswd.exe를 사용하여 Id 추가
        "아파치설치폴더\apach 2.2\bin\htpasswd.exe" D:\Subvision\svn_data\htpasswd ID
 : 새로 추가한 Id계정을 관리자 계정으로 권한 설정
        파이썬설치폴더\scripts\trac-admin.exe D:\trac\sample permission add ID TRAC_ADMIN

'소프트웨어 공학 > 개발' 카테고리의 다른 글

svn 데이터 dump 및 load 방법  (0) 2011.11.07
SVN-Trac 재연동  (0) 2011.11.07
SVN 생성  (0) 2011.11.07
Subclipse for SVN on Eclipse CDT  (0) 2011.11.04
Subversion 설치 및 Eclipse와의 연동  (0) 2011.11.04
: