기본 콘텐츠로 건너뛰기

핀테크의 핵심은 ‘인터넷전문은행’이다

핀테크의 핵심은 ‘인터넷전문은행’이다 익히 잘 알겠지만 핀테크 (FinTech) 는 모바일을 통한 결제 · 송금 · 자산관리 · 크라우드 펀딩 등 금융과  IT 가 융합된 산업을 의미한다 .   핀테크는 연결 (connectivity) 과 정보 (information) 로 귀결되어 발전된 인터넷 모바일 환경 ,  그리고 빅데이터 분석능력이 핀테크의 중요한 핵심이다 .   국내에 핀테크가 여러 경로를 통해 많이 회자되고 있지만 이를 제대로 이해하고 실행하는 금융기관은 아직까지 찾아볼 수 없다 .   요즘 같은 저금리시대에 돈을 가진 곳은 개인과 기업들은 이를 금융기관에 맡겨 운용한다고 해서 수익이 늘어나지 않기 때문에 직접 투자하여 수익을 내고 싶어 한다 .  핀테크의 출발점은 바로 여기에 있다 .    즉 개인들이 직접 투자를 선택해서 곧바로 이익을 내고 싶어 하는데서 출발한 것이며 ,  이를 기술적으로 서비스가 가능해 나타난 것이다 . 자료제공=KB금융지주경영연구소 금융업계에서 등장하는 핀테크 산업의 일환으로 인터넷전문은행이 이미  90 년대부터 등장했지만 일반적인 서비스는 오프라인 은행과 별 차이가 없었다 .  이는 기술 발달상 은행 업무를 고객이 직접 처리할 수 있도록 만들 수가 없었기에 오프라인 은행이 기존 업무 연장선상에서 서비스를 해준 것이다 .   하지만  2000 년대를 넘어 오면서  IT  기술이 핀테크를 실현할 수 있을 만큼 발전하면서  2010 년 이후 인터넷전문은행은 은행 영업점과 은행 텔러 ( 은행창구 직원 ) 가 없어도 직접 컴퓨터가 서비스를 해주는 체계로 서비스가 가능해진 것이다 .   해외 사례를 통해 살펴보면 영국의 아톰 (Atom)  은행 은 대출만 취급하지만 클라우드 기반으로 서비스를 처리하고 ,  독...

Python으로 julian date 산출하기

줄리안 일수 산출을 위해서는 윤년여부 체크를 하여 실제 그 해의 해당 일자에 대한 일수를 365 나 366 일수에 해당 일자로 전환하여 산출한다. 현재 일자를 줄리안 즉 시퀀스 일자대로 수정하는 로직이다 #일자 산출 함수 def dayconvert(month) :      convertDay = 0      dayDict = {'01':0, '02':31, '03':59, '04':90, '05':120,      '06':151, '07':181, '08':212, '09':243, '10':273,      '11':304, '12':334}      convertDay = dayDict[month]      return convertDay #줄리안데이 산출 함수 def julian(date):     year = int(date[0:4])    month = date[4:6]    day = int(date[6:8])    #윤년여부 호출   yuncheck = yunyear(year)   # 일자산출   Dday = dayconvert(month)   # 줄리안 데이 산출   Dday = Dday + day   # 유년여부 체크 및 윤년일 경우 일수조정   if yuncheck == 1:       if int(month) > 2 :            Dday = Dday + 1   # 100일 미만일 경우 포맷조정 ...

golang math/rand 내의 Int() 호출하여 처리하기

간단하게 3 * 3  에 맞는 것을 배열에 표시하기. 총 9개를 각각 랜덤 모듈을 이용해서 간단하게 배열내에 있는 값으로 배치하기 package main import ( "fmt" "math/rand" ) func main() { fmt.Println(" random test ") var a Cube a.Set(1) fmt.Println(" level", a.Level) fmt.Println(" list ", a.List) a.Set(2) fmt.Println(" level 2 ", a.Level) fmt.Println(" list 2 ", a.List) a.Set(3) fmt.Println(" level", a.Level) fmt.Println(" list ", a.List) } var Pocket [24]int = [24]int{10, 10, 10, 10, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44, 51, 52, 53, 54, 60, 60, 60, 60} var Pocket1 [18]int = [18]int{10, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44, 51, 52, 53, 54, 60} var levelAr [3]int = [3]int{100, 10000, 1000000} var pocket [3]int = [3]int{24, 18, 18} type Cube struct { Level int List  [9]int } func (this *Cube) Set(level int) ...

golang receiver에 대한 Value 및 Pointer 처리 비교

구조체를 정의하고 메소드 리서버를 포인터나  값으로 정의시 차이점은 실질적은 구조체 정보를 갱신할 수 있는지 여부만 다를 뿐이다. 아래의 처리 결과는 동일한 값을 출력한다. package main import (  "fmt"  "math" ) type Vertex struct {  X, Y float64 } func (v *Vertex) Abs() float64 {  return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() {  v := Vertex{3, 4}  z := &Vertex{3, 4}  fmt.Println(v.Abs())  fmt.Println(z.Abs()) } // 포인터를 메소드 리시버로 사용할 경우 처리 예시 package main import (  "fmt"  "math" ) type Vertex struct {  X, Y float64 } func (v *Vertex) Abs() float64 {  return math.Sqrt(v.X*v.X + v.Y*v.Y) } //타입을 하나 정의 type entity float32 //타입을 증가하는 메소드를 정의 func (e *entity) inc() {  *e++ } func (e entity) echo() {  fmt.Println(e) } func main() {  v := Vertex{3, 4}  z := &Vertex{3, 4}  fmt.Println(v.Abs())  fmt.Println(z.Abs())        ...

golang overlide 처리하기

메소드 오버로드 처리하기 위해서는 오버로딩되는 함수를 정의하고 부모를 상속해서 실질적인 주소에 자신의 구조체 주소를 주면 자신의 구조체이 메소드가 호출되어 처리된다. package main import (  "fmt" ) type Shaper interface {  Area() float64 } // Parent Shape type Shape struct {  Shaper } func (s *Shape) Area() float64 {  return 0 } func (s *Shape) Doit() float64 {  return s.Shaper.Area() } type Rectangle struct {  Shape  x float64  y float64 } func (r *Rectangle) Area() float64 {  return r.x * r.y } func main() {  s := new(Shape)  s.Shaper = s  fmt.Println(" parent ", s.Doit())  r := new(Rectangle)  r.Shape.Shaper = r  r.x = 5  r.y = 5  fmt.Println(" child ", r.Doit()) }

golang overload 처럼 처리하기

go 언어에서는 함수명이 같을 경우 재선언 오류를 발생시킨다. 다른 메소드를 만들고 오버로드 처리하도록 설계해서 구현해야 한다. 오버로드 처리를 위해 type switch를 사용해서 들어오는 타입에 따라 메소드 호출하는 처리를 사용한다. 함수나 메소드 인자를 다양하게 처리하려면 []interface{} 로 정의해서 다양한 인자를 받아서 오버로딩 처리하면된다. package main import (  "fmt" ) func main() {  var p Person  p = Person{"dahl"}  var s string = "moon"  fmt.Println(" overloading  ", p.Overload(s))  fmt.Println(" overloading", p.Overload(nil)) } type Person struct {  name string } func (this *Person) Overload(args interface{}) string {  switch args.(type) {  case string:   return this.GetName2("moon")  case nil:   return this.GetName1()  default:   return " no match"  } } func (this *Person) GetName1() string {  return this.name } func (this *Person) GetName2(s string) string {  return this.name }

golang언어에서 web 처리하기 기초

기본 파일 처리 방법   1. 구조체를 만든다.         type Page struct {        Title string           Body  []byte         }   2. 구조체에 구조체를 파일에 저장하는 Save() 메소드를 작성한다.          func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600)    }  3. 구조체를 파일을 읽어서 구조체에 저장하는 loadPage()메소드를 작성한다.     func loadPage(title string) (*Page, error) { filename := title + ".txt" body, err := ioutil.ReadFile(filename) if err != nil { return nil, err } return &Page{Title: title, Body: body}, nil     }   4. 구조체를 저장한다.            구조체는 초기화는 구조체 타입 + {필드명:값, 필드명:값, .... }             구조체의 메소드 지정시 리시버를 포인터로 지정했기 때문에 &을 사용하여 주소값으로 넘긴다.  그러면 변수는 포인터 변수로 인식한다.               ...