Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

Review

Language/go lang 2017.10.24 19:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



java 말고 golang

input / output은 동일하게 / export되지 않는 함수면 소문자로 SetValue (X) setValue(O)

acet.EntityInfo = setValue(acet.EntityInfo)

interface conversion

switch문을 사용할 수 있다. 해당 case의 타입이 들어오면 맞는 case 구문을 타게 된다.

ex) Body가 인터페이스 형태  

switch acet.Body.(type) {

case *xxx.xxxx:

case *aaa.xxxx:

default :

}







저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

test code..반성!

Language/go lang 2017.10.13 14:05
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

java나 go lang이나 테스트 코드가 있다.

테스트 주도 개발이 좋다고 책에서 많이 보았다. 하지만 정작 그러한 책들을 보았음에도 불구하고..

간만에 코드를 짜게 되었는데..(그동안 서버 발주부터 셋팅, ACL 신청 등등 이러한 일들을 했다.)

테스트 코드를 짜야겠다는 생각을 하지 않은채 코드를 짰고, 테스트도 리퀘스트 부분만 잘들어가는지 대충 확인하고 다되었다고 PR을 날렸다.

리뷰의 결과는 창피했다.

왜 나는 꼼꼼하게 테스트 코드를 짜면서 테스트를 하지 않았을까?

당연..테스트 코드를 짜기가 부담스러웠나보다..또는 단순하게만 테스트 코드를 짜왔을지도 모른다.

막상 하려고보니..멍~하다. 

자..그럼 이제 무엇을 해야할까?

1) 앞으로 계속 두려워하며 쫄아서 피할것인가?

                   OR

2) 두려움을 극복하려고 노력할 것인가?


당연히 2번인가? 그렇다면 어떻게 노력할 것인가? 이게 가장 중요한 포인트 이다.

지금 이렇게 포스팅을 하는 이유도 노력의 시작의 일부임에는 틀림없다.

이제 시작되었으니 제대로 파악해서 제대로 사용해보자.

화이팅!



저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

golang Context란?

Language/go lang 2017.09.07 16:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


https://golang.org/pkg/context/   or https://godoc.org/golang.org/x/net/context

Package context는 마감 시간, 취소 신호 및 기타 요청 범위 값을 API 경계와 프로세스간에 전달하는 컨텍스트 유형을 정의합니다.

서버에 들어오는 요청은 컨텍스트를 만들어야하며 서버로 나가는 호출은 컨텍스트를 받아 들여야합니다. 이들 사이의 함수 호출 체인은 컨텍스트를 전파해야하며 선택적으로 WithCancel, WithDeadline, WithTimeout 또는 WithValue를 사용하여 생성 된 파생 된 컨텍스트로 대체해야합니다. 컨텍스트가 취소되면 그 컨텍스트도 파생됩니다.


작성 중~

저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

Review  (0) 2017.10.24
test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang - Map

Language/go lang 2017.07.05 17:09
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

go는 변수명 다음에 자료형이 온다.
ex) var acet string 

java는 반대이다.
ex) String acet;

Map
go
var 맵명 map[키 자료형]값 자료형
ex) var acet map[string]int 
할당은 make 사용! 예제는 아래에 있음.

java는 
HashMap<String, int> acet = new HashMap<String, int>


코드를 보자!
아래의 사이트에서 바로 테스트 해보면 된다.
https://tour.golang.org/moretypes/19

package main

import "fmt"

func main() {

    // 자바에서는 new가 있다면 go에서는 make로 map을 할당한다.
    var acet map[string]string = make(map[string]string)
    acet = map[string]string{"a":"aaaa"}    
    fmt.Println(acet["a"])
    
     var mae = make(map[string]string)
     mae = map[string]string{"mae":"bbbb"}
     fmt.Println(mae["mae"])
    
     lov := make(map[string]string)
     lov = map[string]string{  // 뉴라인으로 하려면 마지막에 콤마(,)가 필요함.
         "haha":"cccc",
         "hoho":"dddd",
     }
     fmt.Println(lov["haha"])    
    
     // key가 없는지 알수 있는 방법은 리턴값 두번째를 이용. 없으면 false 리턴!
     solaSystem := make(map[string]string)
     solaSystem["earth"] ="my galaxy"
     // 자바는 put 사용. solaSystem.put("earth", "my galaxy");
     solaSystem["earth2"] ="goood~"
     fmt.Println(solaSystem["earth"])
     // 자바는 get 사용. solaSystem.get("earth");
    
     value, ok := solaSystem["mars"]
     fmt.Println(value, ok)
    
     // java와 달리 if구문에 괄호가 없다! 아래와 같이 요상하게 보일만한 문법을 자주 사용!
     // 리턴도 2개 이상..깜놀;
     // 자바에서는 키가 있는지 확인은 solaSystem.containsKey("earth2");를 사용.
     if value, ok := solaSystem["earth2"]; ok {
         fmt.Println(value)
    
     }
    
     // 맵 순회 -> for 키, 값 := range 맵{}
     for key, value := range solaSystem {
         fmt.Println(key, value)    
     }
    
     // value를 사용하고 싶지 않다면 언더바(_) 사용..허허~
     for key, _ := range solaSystem {
         fmt.Println(key, value)    
     }
    
     //맵에서 데이터 삭제!
     // 자바에서는 solaSystem.remove("earth"); 를 사용.
     delete(solaSystem, "earth")
     _, isOk := solaSystem["earth"]
     fmt.Println(isOk)
    
    
}

결과




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

test code..반성!  (0) 2017.10.13
golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

golang 정리

Language/go lang 2017.05.18 14:42
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




func NewRequest(method, urlStr string, body io.Reader) (*Request, error) {


NewRequest는 메소드, URL 및 선택적 본문에 대해 새 Request를 반환합니다.
제공된 본문이 io.Closer 인 경우 반환되는 Request.Body가 body로 설정되고 클라이언트에 의해 닫힙니다. 
메소드 Do, Post, PostForm, Transport.RoundTrip.NewRequest는 Client.Do와 함께 사용하기에 적합한 Request를 반환하거나 Transport.RoundTrip.
테스트에 사용할 요청을 만들려면 Server Handler는 다음과 같이 NewRequest 함수를 사용합니다. 
net / http / httptest 패키지를 사용하거나 ReadRequest를 사용하거나 필드를 요청하십시오. 요청 유형에 대한 설명서를 참조하십시오. 
인바운드 및 아웃 바운드 요청 필드의 차이. 
body가 * bytes.Buffer, * bytes.Reader 또는 * 형식 인 경우
* strings.Reader, 반환 된 요청의 ContentLength는 
정확한 값 (-1 대신), GetBody가 채워집니다 (따라서 307과 308 리디렉션은 본문을 재생할 수 있음). 본문은 NoBody로 설정됩니다. 

ContentLength는 0입니다. 


}




func (r *Request) WithContext(ctx context.Context) *Request {


WithContext는 컨텍스트가 변경된 r의 얕은 복사본을 반환합니다. 

to ctx. 제공된 ctx는 nil이 아니어야합니다. 

}



- 계속 -

저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang Context란?  (0) 2017.09.07
go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

GOROOT와 GOPATH

Language/go lang 2017.04.27 13:42
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



https://github.com/golang/go/wiki/GOPATH


GOPATH 환경 변수는 Go 프로젝트 및 해당 바이너리 소스를 포함하는 $ GOROOT 외부의 디렉토리를 지정하는 데 사용됩니다.

GO Lang은 아래와 같은 구조로 강제성을 가진다.

terrypark@MacBook-Pro:~/go$ ll -rw-r--r--@ 1 terrypark staff 6148 4 26 13:41 .DS_Store drwxr-xr-x 19 terrypark staff 646 4 4 17:21 bin drwxr-xr-x 3 terrypark staff 102 2 2 11:13 pkg drwxr-xr-x 9 terrypark staff 306 3 2 14:20 src


/Users/terrypark/go/src/github.com/ace-t/test-code

위와 같이 go directory 아래는 src 즉, 소스부분이 된다.

go install 수행 시 bin에 바이너리가 만들어진다.


GOPATH부분은 아래를 보면 어디까지가 GOPATH인지 가늠할 수가 있다.


$GOPATH/src/code.google.com/p/gomatrix


ex) jenkins에서 go build 시

export GOPATH=$WORKSPACE/$BUILD_NUMBER

echo "build=>"+$GOPATH

cd $GOPATH/src/github..com/ace-t/xxxProject

glide install

go build

echo "go build end" 


IDE에서도 알수가 있는데 GOPATH와 GPROOT는 아래와 같다.



저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

go lang - Map  (0) 2017.07.05
golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go land에서 formatting 설정하기

Language/go lang 2017.04.26 18:57
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

go land에서 formatting 설정하기


1.  Preferences.. > Plugins 에서 File Watchers를 install 합니다.



2. File Watchers > gofmt 설정. go bin에 gofmt가 없다면 goimports로 해도 된다.

Arguments: -w $FilePath$


저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang Tip.

Language/go lang 2017.02.15 17:45
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


tip_1 ) Test를 하고 싶다면?

아래와 같은 사이트가 있는데 이녀석은 테스트에서 사용 되어진다고 한다. 아직 사용해본적은 없지만 사용하게 되면 포스팅 하도록 하겠다.

http://goconvey.co/


tip_2) Mac에서 짠 뒤에 리눅스에서 동작하게 하려면?

build를 할 디렉토리에서 아래와 같이 env GOOS=linux라고 지정!

ex) env GOOS=linux go build


tip_3) go에서 패키지 관리는 어떻게 할까?

Java에 Maven같은게 있다면 Go는 glide라는 것이 있습니다.

https://github.com/Masterminds/glide

활용은 https://glide.sh/ 를 참조 또는 아래를 참조!

$ glide create                            # Start a new workspace - glide.yaml이 생성 된다!
$ open glide.yaml                         # and edit away!
$ glide get github.com/Masterminds/cookoo # Get a package and add to glide.yaml
$ glide install            # Install packages and dependencies - glide.lock(버전관리)가 생성.
# work, work, work
$ go build                 # Go tools work normally
$ glide up                 # Update to newest versions of the package - 사용잘 안함.

이것을 사용하는 이유는 디펜던시가 있는것은 패키지 관리에서 하면 좋다.

ex) $ glide get github.com/foo/bar


tip_4) go의 lib같은것은 어디서 검색하나? 구글? 다음?

https://godoc.org/

https://github.com/avelino/awesome-go

https://golanglibs.com/

위의 사이트에서 우선 찾아보자! 없는게 없다~


tip_5) golang study site

https://tour.golang.org/list




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang - fresh를 사용해 보자.

Language/go lang 2017.02.15 17:29
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


이번 내용은 go get 이라는 명령어를 통해 Fresh 라는 것을 사용해 보자.

Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file.

저장 하면 바로바로 적용이 된다.

https://github.com/pilu/fresh 에서 README.md를 참조!


Installation

go get github.com/pilu/fresh


실행은 어플리케이션이 있는 곳으로 이동한 뒤에 fresh 라는 명령어를 쳐주면 서버가 기동 되어진다.

fresh의 프로세스를 kill을할 때 유의 점으로는 fresh 말고도 runner_build라는것을 kill 해주어야 한다.





저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

go lang을 해보자.

Language/go lang 2017.02.03 10:39
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

  1. 링크를 통해 OS에 맞는 것을 다운 받는다. (https://golang.org/dl/)
  2. home에서 go dir를 하나 만들어준다.
  3. 다운 받은 pkg를 클릭클릭 하여 셋팅해준다.
  4. .bash_profile에 환경변수를 잡아준다. 

        # GOPATH
        export GOPATH=$HOME/go
        PATH=${PATH}:/usr/local/go/bin:${GOPATH}/bin

    5. go 라는 명령어를 통해 잘 깔렸는지 확인.

더보기


go가 이제 셋팅 되었다! 코드를 짜기전에 github에 레파지토리를 하나 만들자.

   6. github repository 생성

위에서 home밑에 go 디렉토리를 만들어줬다. 이제 그 아래에 src라는 디렉토리를 하나 더 만든다.(go lang 구조)

그런뒤에  /goStudy github의 레파지토리를 디렉토리로 만들어준다.

home>go>src>ace-t>goStudy dir이 만들어졌다면 이 안에서 git clone을 해준다.

ex) terrypark@MacBook-Pro:~/go/src/ace-t/goStudy$ git clone https://github.com/ace-t/goStudy.git

아래처럼 .git과 README.md가 보일 것이다.


이제! 대망의 소스를 코딩 해 보자! 필자는 지인분이 추천해준 해당 사이트를 따라해보려고 합니다.(https://mingrammer.com/gobyexample/)

먼저 go 파일을 하나 만들어줍니다.

terrypark@MacBook-Pro:~/go/src/ace-t/goStudy/goStudy$ vi hello-world.go

아래와 같이 소스를 코딩합니다.

package main

import "fmt"

func main() {

        fmt.Println("hello world")

}


실행해봅니다.

terrypark@MacBook-Pro:~/go/src/ace-t/goStudy/goStudy$ go run hello-world.go

hello world


이제~~위의 사이트에서 문법을 차근차근 해보면 되겠습니다.

어느정도 문법이 익숙해지면 좀 더 들어가보도록 하겠습니다.

ace-t github : https://github.com/ace-t/goStudy/tree/develop

github을 많이 사용하도록 해봐야겠습니다. ㅎㅎ

  - 끝 -




저작자 표시 비영리 변경 금지
신고

'Language > go lang' 카테고리의 다른 글

golang 정리  (0) 2017.05.18
GOROOT와 GOPATH  (0) 2017.04.27
go land에서 formatting 설정하기  (0) 2017.04.26
go lang Tip.  (0) 2017.02.15
go lang - fresh를 사용해 보자.  (0) 2017.02.15
go lang을 해보자.  (0) 2017.02.03

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

Language/Java 2016.10.27 16:48
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


problem

java -version

-bash: /acet/program/jdk/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory


solution

$ yum -y install glibc.i686

Loaded plugins: fastestmirror, security

You need to be root to perform this command.

[deploy@lineup-data-krane program]$ sudo yum -y install glibc.i686

Loaded plugins: fastestmirror, security

Setting up Install Process

Loading mirror speeds from cached hostfile

Resolving Dependencies

--> Running transaction check

---> Package glibc.i686 0:2.12-1.192.el6 will be installed

--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.12-1.192.el6.i686

--> Processing Dependency: libfreebl3.so for package: glibc-2.12-1.192.el6.i686

--> Running transaction check

---> Package nss-softokn-freebl.i686 0:3.14.3-23.3.el6_8 will be installed

--> Finished Dependency Resolution


result

$ java -version

java version "1.8.0_101"

Java(TM) SE Runtime Environment (build 1.8.0_101-b13)

Java HotSpot(TM) Server VM (build 25.101-b13, mixed mode)



저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

python 2.7 한글처리 문제

Language/Python 2016.10.07 14:47
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


위의 코드는 print unicode(line) 으로 출력시 오류가 발생 함.



print unicode(line, 'cp949')

한글 처리를 위해 위의 코드처럼 cp949를 유니코드로 변환 해주면 한글이 잘 출력이 된다.


Simple 테스트 코드


#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


f = open("/Users/terrypark/pythonPrj/target.txt", 'r')
line = f.readline()
print unicode(line, 'cp949')

 

 


읽어볼만한 글!

더보기


저작자 표시 비영리 변경 금지
신고

'Language > Python' 카테고리의 다른 글

python 2.7 한글처리 문제  (0) 2016.10.07
특정 PORT Check  (0) 2016.06.14
install PyMySQL  (0) 2015.07.21
crontab+python3  (0) 2015.06.30
python???  (0) 2015.06.22
RND(Right! Now! Develop!) Study - Python Step. 02 자료형_02  (0) 2014.08.17

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

자바 예외처리를 생각해보자.

Language/Java 2016.09.26 18:16
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


예외의 종류는 2가지로 보면 된다.

checked exception과 unchecked exception

말그대로 체크가 되는 예외와 예기치 못하게 발생하는 예외를 뜻한다. 

또한 unchecked exception은 runtime exception 이라고 많이 불리운다.

여기서 생각해보아야 할 것이 있다. 어떤 처리를 해주어야 예외처리를 잘하는 걸까?

보통은 Exception가 발생하면 잡아서 에러로그를 찍어주거나 상위로 올려주어서 처리를 하기도 한다.

try {

   ... 블라블라 ...

} catch(Excetpion e) {

   logger.error(e.getMessage);

}

토비책에서도 제대로된 예외처리를 하라고 살짝 나오기도 한다. 

과연..어떤 예외처리가 제대로된 예외처리일까? 사람마다 다를수 있을것 같기도 하다.(책임과 구조가 중요하기 때문..)

다음 RND 스터디(지인들과 만든 스터디 그룹)에서 토론해보면 좋을것 같다. 

개인적으로는 

1) 런타임 예외에 대한 것을 아래처럼 공통화(소스)를 한다!

예)

public class CommonLineupException extends RuntimeException{

    public static final Logger logger = LoggerFactory.getLogger(CommonLineupException.class);

    public CommonLineupException(String message){

        super(message);

        logger.error(message);

    }

}

2) 런타임 예외는 발생 시킨다! 고려사항으로 런타임 예외가 났을 경우 어떻게 처리를 해주는가를 더 생각해봐야한다.

  - MVC 구조라면 컨트롤러까지 올려서 관련 내용 처리 하기
  - api라고 한다면 유용정보(에러로그) 남기기


3) 또한 service -> service 구조이거나 service안에 여러 메소드들로 만들어져있다면

런타임 예외가 발생하는 메소드들이 그책임을 다해야 한다. 그안에서 에러로그와 런타임 예외를 발생 시켜 위로 올려주거나 하면 된다.


팁 : 스프링프레임워크에서는 예외를 잘할 수 있도록 도움을 주는 어노테이션이 존재한다.

참고 : https://www.mkyong.com/spring-mvc/spring-mvc-exceptionhandler-example/ 

또한 db단하고 붙어있다면 롤백 유무와도 상관이 있다. 롤백이 되려면 런타임 예외에만 가능하기 때문이다.


정리하자면..런타임 예외를 잘이용하고 에러로그를 쉽게 오류를 찾을 수 있도록 정보를 넣을수 있도록 한다.


   - 끝 - 

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

특정 PORT Check

Language/Python 2016.06.14 18:33
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


모니터링 관련해서 작업을 하는데 음..잘만들어져있는듯..굿굿 

정말 손쉽게 작업을할 수 있었음!


아래는 파이썬 특정 포트 체크!

0이면 정상, 1이면 오류~


오랜만에 포스팅 하는듯..ㅠㅠ 화이팅 해야지! 아자아자~


#!/usr/bin/python


import socket;


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


check_server = '127.0.0.1'

check_port = 8080

result = sock.connect_ex((check_server, check_port))

if result == 0:

   print "0"

else:

   print "1"


sock.close()

저작자 표시 비영리 변경 금지
신고

'Language > Python' 카테고리의 다른 글

python 2.7 한글처리 문제  (0) 2016.10.07
특정 PORT Check  (0) 2016.06.14
install PyMySQL  (0) 2015.07.21
crontab+python3  (0) 2015.06.30
python???  (0) 2015.06.22
RND(Right! Now! Develop!) Study - Python Step. 02 자료형_02  (0) 2014.08.17

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Integer.valueOf / Integer.parseInt

Language/Java 2016.05.19 23:13
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


왜 자꾸 오류가 나나..싶었는데...


Integer.valueOf(queryTimeStr); // queryTimeStr은 스트링형태가 확실했다...


원인은..int 범위를 넘어서였다..-_-;;


삽질 하다니 ㅋㅋㅋㅋ

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

  • BlogIcon Geetha 2016.06.10 14:48 신고 답글 | 수정/삭제 | ADDR

    This blog provides useful information about new techniques and concepts.very impressive lines are given which is very attractive.

    • Favicon of http://acet.pe.kr BlogIcon String Ace-T 2016.06.11 01:40 신고 수정/삭제

      Thank you for your comment and visit!
      and I am happy because of your message:D
      Thanks! I wanna share infos more and more :D

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

couchbase와 같은 키/벨류의 key design??

Language/Scala 2016.04.15 10:25
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




오픈소스로 키/벨류의 형태의 스토리지들이 많이 있다. Redis나 couchbase등이 그 예이다. 

이러한 스토리지들에 저장을할 때 고려사항으로 key를 어떤식으로 만들어야할 지 고민이 되어진다.

왜냐하면 이러한 key들은 한정되어진 범위를 가지고 있다. couchbase의 경우는 250byte로 제한을 둔다. 

또한 이러한 key들의 무결성을 보장되어야 한다. 그렇지 않으면 데이터의 유실이 발생할 수가 있다.

그래서 생각했던 것이 Hash였다. 그러나 자바진형의 String에서 제공되어지는 Hash는 중복의 염려가 있다고 한다.

그래서 SHA-1 + Base64 Encoding(urlSafe)를 선택 하였다.

아래는 스칼라 코드이며 해당 키는 아래의 소스를 통해 "IbDNShu-PGxJtnsUVuDJLv-aJoU=" 이러한 형태로 키가 만들어진다. goood~


build.sbt에는 아래와 같이 dependencies를 추가!

libraryDependencies ++= Seq(

   "me.lessis" %% "base64" % "0.2.0"

) 


import~~

import base64.Encode 


SHA-1 + Base64 Encoding(urlSafe)

val md = java.security.MessageDigest.getInstance("SHA-1")

val keyword = {

  new String(Encode.urlSafe(md.digest("스트링~~".getBytes)))

} 


- END -


저작자 표시 비영리 변경 금지
신고

'Language > Scala' 카테고리의 다른 글

couchbase와 같은 키/벨류의 key design??  (0) 2016.04.15
(기초) 스칼라 데이터 구조(컬렉션)  (0) 2016.03.25
(기초) 스칼라 문법  (0) 2016.03.25

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

(기초) 스칼라 데이터 구조(컬렉션)

Language/Scala 2016.03.25 16:19
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




2016/03/25 - [Language/Scala] - (기초) 스칼라 문법

참고 사이트 : https://twitter.github.io/scala_school/ko/collections.html


scala> val numbers = List(1,2,3,4,5)

numbers: List[Int] = List(1, 2, 3, 4, 5)


scala> Set(1,2,2)

res20: scala.collection.immutable.Set[Int] = Set(1, 2)


scala> val hostPort = ("localhsot", 8080)

hostPort: (String, Int) = (localhsot,8080)


scala> hostPort._1

res21: String = localhsot


scala> hostPort._2

res22: Int = 8080


scala> 1->2

res23: (Int, Int) = (1,2)


scala> ("D", (1,2,3))

res25: (String, (Int, Int, Int)) = (D,(1,2,3))


scala> ("H", (4,5,6))

res26: (String, (Int, Int, Int)) = (H,(4,5,6))


scala> ("D", (1,2,3)) -> ("H", (4,5,6))

res27: ((String, (Int, Int, Int)), (String, (Int, Int, Int))) = ((D,(1,2,3)),(H,(4,5,6)))


scala> Map(1 -> 2)

res28: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)


scala> Map("foo" -> "bar")

res29: scala.collection.immutable.Map[String,String] = Map(foo -> bar)


scala> Map(1-> Map("foo" -> "bar"))

res31: scala.collection.immutable.Map[Int,scala.collection.immutable.Map[String,String]] = Map(1 -> Map(foo -> bar))


scala> numbers.map((i:Int) => i *2)

res33: List[Int] = List(2, 4, 6, 8, 10)


scala> numbers.foreach((i: Int) => i * 3)


scala> val value = numbers.foreach((i:Int) => i * 7)

value: Unit = ()


scala> def isEven(i:Int): Boolean = i % 2 == 0

isEven: (i: Int)Boolean


scala> numbers.filter(isEven _)

res37: List[Int] = List(2, 4)


scala> val numbers = List(1,2,3,4,5,6,7,8)

numbers: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8)


scala> numbers.partition(_ % 2 == 0)

res39: (List[Int], List[Int]) = (List(2, 4, 6, 8),List(1, 3, 5, 7))


scala> numbers.find((i: Int) => i > 5)

res40: Option[Int] = Some(6)


scala> numbers.drop(5)

res41: List[Int] = List(6, 7, 8)


scala> numbers.dropWhile(_ %2 != 0)

res42: List[Int] = List(2, 3, 4, 5, 6, 7, 8)






저작자 표시 비영리 변경 금지
신고

'Language > Scala' 카테고리의 다른 글

couchbase와 같은 키/벨류의 key design??  (0) 2016.04.15
(기초) 스칼라 데이터 구조(컬렉션)  (0) 2016.03.25
(기초) 스칼라 문법  (0) 2016.03.25

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

(기초) 스칼라 문법

Language/Scala 2016.03.25 13:45
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



참고 사이트 : https://twitter.github.io/scala_school/ko/basics.html


terrypark@localhost:~/program/sbt/bin$ sbt console

[info] Set current project to bin (in build file:/Users/terrypark/program/sbt/bin/)

[info] Starting scala interpreter...

[info]

Welcome to Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).

Type in expressions to have them evaluated.

Type :help for more information.


scala>



예제 따라잡기!

scala> 1+1

res0: Int = 2


scala> val result = 1+1

result: Int = 2


scala> var name = "terry.park"

name: String = terry.park


scala> def addOne(m: Int): Int = m +1

addOne: (m: Int)Int


scala> val test = addOne(2)

test: Int = 3


scala> def threeReturn() = 1 + 2

threeReturn: ()Int


scala> threeReturn()

res1: Int = 3


scala> threeReturn

res2: Int = 3


이름없는 함수?!

scala> (x: Int) => x + 1

res3: Int => Int = <function1>


scala> (2)        <- 이렇게 하면 호출되어지나? 했지만 역시나 안됌!ㅋ 

res4: Int = 2


scala> res3(2)

res5: Int = 3


// 이름없는 함수를 다른 함수나 식에 넘기거나 val에 지정할 수 있음.

scala> val addOne = (x: Int) => x+4

addOne: Int => Int = <function1>


scala> addOne(1)

res8: Int = 5


// function timesTow(int i){ .... }  이런 내용과 같음!

scala> def timesTow(i: Int): Int = {

     | println("hello world")

     | i*2

     | }

timesTow: (i: Int)Int


scala> timesTow(2)

hello world

res9: Int = 4


// 이름없는 함수도 동일!

scala> { i:Int => println("hello~")

     | i * 2

     | }

res10: Int => Int = <function1>


scala> res10(3)

hello~

res11: Int = 6


scala> def addr(m: Int, n: Int)= m + n

addr: (m: Int, n: Int)Int


scala> val add = addr(_:Int, 4)

add: Int => Int = <function1>


scala> add(2)

res1: Int = 6


_..밑줄?!! 인자의 일부만을 사용하는 것? 

add(2)라고 한다면 인자의 값으로 2가 들어가고..add(2)는 addr(2, 4)가 되어지는것!?

그래서 addr이 m+n이니..6이라는 결과가 똭!


커리 함수(Curried functions)

scala> def multiply(m: Int)(n:Int): Int = m * n

multiply: (m: Int)(n: Int)Int


scala> multiply(2)(4)

res3: Int = 8


scala> val timesTwo = multiply(2) _

timesTwo: Int => Int = <function1>


scala> timesTwo(3)

res4: Int = 6


scala> (addr _).curried

res8: Int => (Int => Int) = <function1>


scala> def capitalizeAll(args: String*) = {

     | args.map { arg => arg.capitalize

     | }

     | }

capitalizeAll: (args: String*)Seq[String]


scala> capitalizeAll("rarity", "applejack")

res12: Seq[String] = ArrayBuffer(Rarity, Applejack)


클래스

scala> class Calculator {

     |    val brand : String = "HP"

     |    def add(m: Int, n: Int): Int = m + n

     | }

defined class Calculator


scala> val calc = new Calculator

calc: Calculator = Calculator@e7a7ed9


scala> calc.add(1,2)

res13: Int = 3


scala> calc.brand

res14: String = HP


scala> class Calculaotr(brand: String) {

     |    /**

     |     * 생성자

     |    */

     |    val color: String = if (brand == "TI") {

     |       "blue"

     |    } else if (brand == "HP") {

     |       "black"

     |    } else {

     |       "white"

     |    }

     |

     |    // 인스턴스 메소드

     |    def add(m: Int, n: Int) : Int = m + n

     | }

defined class Calculaotr


scala> val calc = new Calculaotr("HP")

calc: Calculaotr = Calculaotr@6b448973


scala> calc.color

res15: String = black


scala> class Test {

     |    val finc = { () => acc += 1}

     |    def mic = { acc += 1 }

     |    var acc = 0

     | }

defined class Test


scala> val c = new Test

c: Test = Test@6c10fc3


scala> c.mic                                // c.mic()를 호출 함.


scala> c.finc

res18: () => Unit = <function0>  // 함수 자체를 반환


메소드와 함수의 차이가 뭐지? 

val과 var의 차이는 var은 변수, val은 함수나 객체를 받아주는 것인가?

=>, _ 의 용도 정확히 모르겠다!?

aList.map(a => a.{연산}) == aList.map(_.(연산))

람다로 들어오는 파라미터 자체를 함축 사용!


일단은 그냥 GO!  문법은 여기까쥐~


  - 끝 -

저작자 표시 비영리 변경 금지
신고

'Language > Scala' 카테고리의 다른 글

couchbase와 같은 키/벨류의 key design??  (0) 2016.04.15
(기초) 스칼라 데이터 구조(컬렉션)  (0) 2016.03.25
(기초) 스칼라 문법  (0) 2016.03.25

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

input value escape 적용하기!

Language/Java 2015.11.30 16:32
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


상황) 아래와 같이 input box의 value의 값에 특수문자가 들어가면 안녕하세요! "ace-t" 입니다가 아닌 안녕하세요! 만 나오게 된다.ㅠㅠ 


처리) 처리는 자바단에서 하였고 guava lib를 사용하였다.

maven기반!

더보기


guava 사용법

 - 아래와 같이 Escape하고자 하는것을 addEscpae로 추가하시면 됩니다. 단, html 특수문자를 처리해줘야 하는 상황 입니다.  즉, &quot;는 쌍따옵표죵!

  \" <--요건 아니겠죠?~

ex) 

public String getEscapeResultByGuavarLib(SiteMastModel mast) {
    Escaper escaper = Escapers.builder().addEscape('"', "&quot;").build(); // addEscpape
추가 가능!
    return escaper.escape(mast.getSite_title());

  }


참고) HTML 특수문자 코드표!

HTML 특수문자


  -  끝 -

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

자바 전체공백 제거하기

Language/Java 2015.10.19 14:52
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
1. trim()은 문자열 앞뒤 공백제거. 전체가 아니라서 부족해!~ 하실때는?

 replaceAll(" ","") 또는 replaceAll("\\p{Space}", "")  로 공백을 제거하면 됩니다.






위처럼 검색을 때리면 "카카오톡" 으로 붙어서 검색하게 되어집니다.

 



참 쉽죠잉?

참고로 가독성이 첫번째것이 더 높을 것 같아서 replaceAll(" ","") 처리하려고 했는데 치환이 안되는 경우도 있는듯 하여

두번째 방법을 택하였습니다.

참고 사이트 : http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html



끝~

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바