.JSON 설정파일 읽어오기

.JSON 설정파일 읽어오기

github에 코드를 작성하는데 db의 중요한 설정값을 공개할 수는 없기 때문에 설정파일만 따로 보관해야 한다. 자금이 있어서 private github 서비스를 사용할 수도 없는 입장이고, 개인 개발자의 한계.

GO RESTFUL 서브를 만드려고 하는데 설정 파일을 json으로 저장하고, 이를 필요할 때 불러오는 코드를 작성하려고 한다.

go-mssqldb 패키지를 사용해서 microsoft sql server에 접속을 해서 이를 쏴주는 기능을 사용하려고 한다.

우선 저는 아래와 같은 구조를 갖는 setting.json 을 만드려고 합니다.

setting.json

{
    "database": "sqlserver",
    "user":{
        "id":"admin",
        "pwd":"123456789a!"
    },
    "host":{
        "address": "222.111.111.111",
        "port": 1433
    }
}

이제 이를 golang 에 맞는 type struct를 만듭니다.

type config struct

type MssqlConnect struct {
	Database string `json:"database"`
	User struct {
		ID  string `json:"id"`
		Pwd string `json:"pwd"`
	} `json:"user"`
	Host struct {
		Address string `json:"address"`
		Port    int    `json:"port"`
	} `json:"host"`
}

Load Config

다음은 config.json 파일을 읽어오는 과정입니다.

func LoadConfig() (string, error){
	var config MssqlConfig
	file, err := os.Open("setting.json")
	defer file.Close()
	if err != nil {
		Log.Fatal(err)
	}
	decoder := json.NewDecoder(file)
	err = decoder.Decode(&config)
	if err != nil {
		Log.Fatal(err)
	}
	return config, err
}

func main

아래와 같이 사용하면 됩니다.

func main() {
  config, err := LoadConfig()
  fmt.Println(config.Database) // sqlserver
  fmt.Println(config.User.ID) // admin
}
반응형

'개발 > Golang' 카테고리의 다른 글

Go 1.14 릴리즈  (0) 2020.02.26
GO | golang 1.9 update  (0) 2017.09.06
Golang | 최신버전으로 업그레이드 할 때 주의점  (0) 2016.08.23
golang | strings 패키지  (0) 2016.08.12
[Golang] mysql, mariadb 원격접속 허용하기  (0) 2016.07.29
Vue.js | PWA | uri scheme 가 없을 경우

uri scheme 를 통해서 다른 앱을 열려고 하지만, 앱이 없을 경우의 if 문을 작성하는 방법

상황

daumapp://을 통해서 지도앱을 열어서 위치를 검색하려고 하는데 앱이 없어서 다운받는 페이지로 이동

안드로이드

안드로이드 플레이스토어 접속 URL Scheme

market://details?id=[app id]
market://details?id=net.daum.android.map

브라우저를 통해서 설치시키고자하는 앱의 주소를 알 수 있다.
Play Store에서 다음맵을 검색하고, 앱을 눌러보면 상단에 https://play.google.com/store/apps/details?id=net.daum.android.map 와 같은 주소가 있다. 뒤에 id부분을 [app id] 부분에 추가하면 된다.

아이폰

애플 스토어의 URL Scheme

itms-apps://itunes.apple.com/app/[appName]/[appID]

개발자용 앱 URL Scheme

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]

앱스토어는 브라우저에서 작동되는 사이트가 없으므로 구글링을 통해서 앱정보 페이지로 접속해야 합니다.

https://itunes.apple.com/kr/app/카카오맵-대한민국-no-1-지도앱/id304608425?mt=8

이런식의 주소를 찾을 수 있는데요. id304608425가 앱의 아이디입니다. 그럼 결과물은 아래과 앝은 형태가 됩니다.

items-apps://itunes.apple.com/app/id304608425

Javascript 코드

브라우저에서 기기 종류를 파악하는 코드

혹시 모를 안드로이드와, 아이폰 종류를 구분하기 위해서 아래의 코드를 작성했습니다.

getOS () {  
  let userAgent = window.navigator.userAgent  
  let platform = window.navigator.platform  
  let macosPlatforms = \['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'\]  
  let windowsPlatforms = \['Win32', 'Win64', 'Windows', 'WinCE'\]  
  let iosPlatforms = \['iPhone', 'iPad', 'iPod'\]  
  let os = null  
 if (macosPlatforms.indexOf(platform) !== -1) {  
    os = 'Mac OS'  
  } else if (iosPlatforms.indexOf(platform) !== -1) {  
    os = 'iOS'  
  } else if (windowsPlatforms.indexOf(platform) !== -1) {  
    os = 'Windows'  
  } else if (/Android/.test(userAgent)) {  
    os = 'Android'  
  } else if (!os && /Linux/.test(platform)) {  
    os = 'Linux'  
  }  
  return os  
}

URI 로 이동하는 function

goToUri (uri) {  
  window.location = uri // 앱이 있으면, 앱으로 이동. 없으면 다음줄 실행
  setTimeout( fucntion() => {  
    if (confirm('다음맵이 설치되어 있지 않습니다. 설치하시겠습니까')) {  
      if (this.os === 'Android') {  
        window.location = 'market://details?id=net.daum.android.map'  
  }  
      if (this.os === 'iOS') {  
        window.location = 'itms-apps:/itunes.apple.com/app/id304608425'  
  }  
    }  
  }, 100)  
}
반응형

'개발 > Vue.js' 카테고리의 다른 글

vuejs | filter | 숫자단위당 쉼표 표기하기  (0) 2018.05.28
자신감, 생산성 및 소득을 높이는 23 가지 스마트 방법

자신감, 생산성 및 소득을 높이는 23 가지 스마트 방법

"성공"은 단지 많은 돈을 가지고있는 것이 아닙니다. 많은 돈을 가진 많은 사람들이 엄청나게 불행하고, 근본적으로 불균형 한 삶을 살고 있습니다.

성공은 당신이 누구인지, 어떻게 살아 가는지, 봉사 방법, 그리고 당신이 어떻게 관계를 맺고 있는지를 지속적으로 개선하고 있습니다.

그러면 왜 대부분의 사람들이 성공하지 못할까요?

왜 대부분의 사람들이 발전하지 않을까요?
당신이 발전 할수록, 가장 중요한 몇 가지 일에 더 집중해야합니다.

아침마다 5 분간 통증 다루기

당신은 침대에 머무르거나, 졸음이 몰려오는 것에 대해 후회하여 고통을 격습니다. 그리고 침대에 더 오래 앉아있을수록 더 나 빠지게됩니다. 연구 결과에 따르면, 당신이 무언가를 하는 것을 주저 할수록 그 일은 덜 할 수 있습니다.
알람이 울린 후 침대에 오래있을수록 침대에서 실제로 빠져 나올 확률이 줄어 듭니다.

우선순위로 하루 시작하기

좋게 보이는 것으로 시작하는 것은 쉽지만. 궁극적으로 그다지 중요하지는 않습니다.
당신이 할 수 있는 많은 일들이 있습니다.

무엇이 하루를 시작하는 이상적인 방법일까요?

그것은 인생에서 가장 우선 순위에 달려 있습니다.
그것이 당신의 신앙이라면, 당신은 아마 하나님과 연결하고 당신의 신앙을 키워야합니다.
그것이 당신의 사업이라면, 당신은 아마 당신의 사업을 계속해야합니다.

스티븐 코비 (Stephen Covey)는 7 권의 "매우 효과적인 사람들의 습관"에서 "첫 번째 일을 먼저"하는 것이 중요하다는 것을 설명합니다. 개념을 설명하기 위해 코비 (Covey)는 몇 가지 돌을 양동이에 넣습니다. 작은 바위를 먼저 넣을 때, 큰 바위를 모두 채울 수는 없습니다. 그러나 큰 바위로 시작할 때, 작은 바위는 빈 공간을 쉽게 채울 수 있습니다.

당신이 기피하는 것을 직시하고, 당신이 피하는 것을 하십시요.

(정말로 중요하고, 10 년 후에 중요 할 것이고, 당신이 하고 싶지 않은 것)

"나는 우리 각자가 할 일이 많다는 것을 알고있다. 가끔은 우리가 직면 한 일들에 압도 당한다. 그러나 우리가 우선 순위를 지키면 우리가해야 할 모든 것을 성취 할 수 있습니다. "

당신이 잠시 동안 무언가를하는 것을 거부한다면, 당신의 인생에있는 다른 모든 것들은 고통을받을 것입니다.

나는 아주 많은 다른 멋진, 중요하고 흥미로운 것들로 내 시간을 매우 쉽게 채울 수 있습니다. 그러나 항상 내 마음 속에서 나는 내 개인적인 목표에 결정적인 것을 무시하고 있다는 것을 알고 있습니다. 나는 정말로 중요한 일을 미루고 있습니다. 따라서, 나는 부조화의 상태로 살고 있습니다.

내가 성공할 수 있기를 희망합니다.
나는 삶과 내 주변 사람들의 아름다움을 더보기 시작합니다.
나는 나의 건강, 나의 관계 및 다른 나의 목표에서 성공하기 위하여 동기를주는 것을 느끼는 것을 시작합니다.

다양한 학습 방법을 포용하십시오.

저항에 직면하고 처음 일을 먼저 할 때 모든 일이 발생합니다

“학습을 멈추는 사람은 20 세가 됐든 80 세이든간에 나이가 많습니다.”

학습 이론에 관한 50 년의 연구에 따르면, 우리 모두는 지배적 인 학습 스타일을 가지고 있습니다. 우리 모두는 어려운 상황에있을 때 우리가 의지하는 몇 가지 백업 학습 스타일을 가지고 있습니다. 그러나 우리 각자가 소홀히하고 피하는 몇 가지 다른 학습 스타일이 있습니다.

흥미롭게도 대부분의 사람들은 자신이 편안하게 학습 할 수있는 스타일에 대해 "성장"하는 사고 방식을 가지고 있습니다. 예를 들어, 수학을 좋아하고 분석적으로 배우면 수학에서 더 나아질 수 있다고 생각할 것입니다. 아마도 도전과 실패는 성장 기회로 접근합니다. 당신은 아마도 멘토링, 교육, 그리고 도움을 청할 것 입니다. 당신은 아마도 궁금해서 그 일에 대한 당신의 지식과 지평을 확장하려고합니다.

그러나 대부분의 사람들은 자신이 편안하지 않은 학습 스타일에 대해 "고정 된"사고 방식을 가지고 있습니다. 예를 들어, 글쓰기를 좋아하지 않는다면 아마 더 잘할 수 없다고 생각할 것입니다. 단순히 배울 수없는 것들이 있습니다. 그들은 당신의 DNA 또는 뭔가 안에 있지 않습니다.
일반적으로 지배적이며 개발 된 학습 스타일 (글쓰기 및 교수)과 일치하는 작업을 훨씬 선호합니다.

그러나, 당신이 저항하는 활동에 참여할 때, 당신은 당신이 억압 한 당신의 두뇌와 감정의 활성 영역입니다.
현재 당신의 안락함 바깥에있는 목표를 향해 가시적 인 진보를합니다. 새로운 세계의 학습과 경험에 자신을 열고, 당신의 두뇌에 새로운 연결 고리를 만듭니다.

자신이 어려운 일을하는 것을 보면서 자신감을 얻습니다.
그것은 어렵지만, 자신이 해야한다고 믿고 본질적으로하고 싶은 일을함으로써 당신은 더 많은 확신을 얻을 수 있습니다.

예를 들어 작가, 음악가 등 많은 사람들이 예술가가되고 싶어합니다. 그러나 예술가가되는 비즈니스와 마케팅 측면이 그들의 **지배적인 학습 스타일(Dominant Learning Style)**을 벗어나기 때문에, 사람들 중 많은 사람들이 성공하지 못합니다. 그리고 그들은 필수 구성 요소를 배우기를 거부합니다.

그들은 비즈니스와 마케팅에 관한 고정 관념을 가지고 있으며 따라서 결국 원하지 않는 삶에 정착하게됩니다. 역설적이게도, 그들이 사업에 능숙하고 어려운 정서와 새로운 개발 학습 스타일을 받아들이면, 그들의 예술이 향상 될 것입니다.

그들이 진실로 자신의 꿈에 얼마나 헌신했는지 보여주기 때문에 개선 될 것입니다. 그들은 충분히 짜증을내는 일을 하기 충분합니다. 그들은 단지 몽상가가 아니라 전문가가 되기 위해 최선을 다하고 있습니다.

당신이하는 일은 당신이 모든 것을하는 방법입니다 - 이것이 사실입니다

당신이 일관된 자세를 취하지 않을 때, 인생이 엉망이됩니다

"TV 앞에서 매일 초콜릿 케이크를 먹고 싶지는 않지만 날씬하고 싶다. 당신은 단정하고, 편안하고, 사랑스럽고 배타적 인 관계에 있기를 원합니다. "

삶의 한 영역이 일정한 틀에서 벗어나면 모든 것은 고통을 겪습니다.
한 동안 삶의 한 영역에서 잠시 동안 안정을 취해야 합니다. 예를 들어, 우선 순위를 무시하면서 직장이나 건강에 집착 할 수 있습니다. 그러나 이것은 극히 지속될 수 없습니다. 결국 그리고 항상, 그것은 당신에게 돌아올 것입니다.
탁월한 것들은 당신이 적절한 균형을 유지하지 않으면 결국 당신의 가장 큰 약점이 될 것입니다.

전략적으로 당신의 “왜”를 아십시오.

“살아야 할 이유가있는 사람은 거의 모든 방법을 감당할 수 있습니다.”

“왜”를 명확히 해야하는 이유는 두가지

  1. 명확함은 동기를 유발하기 때문입니다.
  2. 가장 깊은 신념으로 부터의 동기는 확실한 효과를 가져옵니다.

그러면 어떻게 그 이유를 알 수 있을까요?

당신이 원하는 것을 생각하고,이 간단한 질문을 스스로에게 하십시오.

_____은 나에게 가장 중요한 일인가?

마음에 오는 첫 번째 질문에 답하십시오.
지나치게 복잡하게 하지 마세요. 귀하의 목표가 집에서 일하는 것이라면 다음 질문을하십시오.

“집에서 일하는 것”이 저에게 중요한가?

만약, **“나는 스스로 관리를 잘 했을 때 일을 더 잘하고, 행복하게 한다”**면 다음과 같이 질문합니다.

**“일을 열심히 하고, 행복하게 하고 자신을 관리해 나가는 것”**이 내게 중요합니까?

이 연습에는 6개 정도의 질문을 던지는 것이 좋습니다.
당신이 정말로 정직하게 대답을 한다면, 이 연습은 당신에게서 두 가지를 보여주게 될것입니다.

  1. 자신을 형성하는 주요한 사건
  2. 세상에 대해 갖고있는 주요 신념

자신이하고있는 일을하는 이유의 핵심에 도달 할 수 있다면, 그 일이 당신에게 얼마나 중요한지 깨달을 수 있습니다.
자주, 우리는 우리가하는 일에 대한 우리의 기본 수준의 동기만을 생각합니다. 이는 개인적으로 의미가 부족합니다.
따라서 우리의 성과는 우리 핵심에서 나온 것이 아니라 할수 있습니다. 예를 들어, 나는 나의 스케줄에 더 많은 유연성을 주기 위해 사업을 시작하고 있다(?). 물론 중요합니다. 하지만 그게 영감을 주는 것이 아닙니다.

왜 더 많은 유연성을 원하는가.

더 깊이 들어가 봅시다.
훨씬 더 깊이 들어가 봅니다.

그리고 일단 당신이 요점을 얻으면, 사업을 시작하기 위해 매일, 그 이유를 상기시켜주십시오.
그 이유는 당신에게서 왔습니다. 외부 소스에서 가져온 필요가 없습니다.

“그냥 앉아서 사람들이 황금의 꿈을 꿀 수 있기를 기다릴 필요가 없다. 거기서 나와 스스로를 만들어야한다.”
— Diana Ross

TED 토크에서 철학자 루스 장 (Ruth Chang)은 정말로 어려운 선택을하는 법을 설명합니다.

당신은 “왜”로 내려 갔고, 궁극적으로 “왜”를 스스로 정의했습니다.
당신은 당신의 이유를 스스로 형성하게됩니다. 그렇게되면, 최고 가치에서 행동 할 수있을 뿐만 아니라 그 가치가 무엇인지를 능동적으로 결정하고 정의 할 수 있습니다.

받는 사람이 아닌 베푸는 사람이 되십시오.

“Life gives to the givers and takes from the takers .”
“인생은 주는 자에게 주고 받는 자로부터 빼앗아 간다.”
— Joe Polish

많은 사람들이 받는 사람입니다, 특히 필사적으로 성공을 원하는 사람들입니다.
그들은 단지 그들이 그러한 관계에서 얻을 수 있는 것을 위해 관계를 맺습니다. 직설적으로 말해서, 이 사람들은 트랜잭션 처리가 되어 있습니다.
그들의 삶의 모든 것은 거래 즉 교환이다.

그들은 진실하지 않습니다. 그들의 기부는 특정 시점으로만 진행됩니다. 또한, 그들은 그들이 원하는 것을 얻을 때만 감사합니다. 그들은 다른 사람들이 주는 것을 과소 평가합니다.

오직 유동적인 관계에만 참여하십시오.

왜냐하면 모든 거래 어쨌든 곧 끝날 것이기 때문입니다.

"나는 변화에 즐거움을 느낀다. 나는 조용하고 일관성있게 보이지만, 몇 명의 여성들이 내 안에 있는지 알고있는 사람은 거의 없다. "

다른 사람이 하는 일을 과소평가하는 동안 당신의 관계에 대해 과대평가 하지 마세요. (이것은 기본적으로 모두가 하는 것입니다)

“교만을 통해 우리는 항상 자신을 속이고 있습니다. 그러나, 평범한 양심의 표면 아래, 작은 목소리가 우리에게 말합니다. 뭔가 맞지 않다고…”

당신의 관계에 대해서 생각해보십시오.
관계의 대부분에서, 당신이 기여한 것을 과대 평가하거나 과소평가 합니까?
또한 관계에있는 다른 사람들이 기여하는 것을 과장 또는 보완합니까?

일반적으로 사람들은 자신이 기여한 것을 과대 평가하고 다른 사람들이 기여하는 것을 과소 평가합니다.
당신이 기부자라면, 당신은 다른 사람들이 기여하는 것을 소중하게 여기고 존중합니다.

세일즈맨이 아닌 장인 인 사람과 일하십시오.

“Quality is not an act, it is a habit.”
“품질은 행위가 아니라 습관이다.”
– Aristotle

“Be a yardstick of quality. Some people aren’t used to an environment where excellence is expected.”
“품질의 척도가 되세요. 어떤 사람들은 탁월함이 기대되는 환경에 익숙하지 않습니다.”
– Steve Jobs

위의 요점과 비슷하게, 당신의 삶의 질 (그리고 당신이하는 일의 질)은 당신이 당신의 인생을 보낸 사람을 기반으로 합니다.
저는 여러번의 공동 작업을 통해서 대부분의 사람들이 자신과 그들의 일을 위해 낮은 자세를 가지고 있다는 것을 보았습니다.
그들은 미루고 나서 마지막 순간에 일을 처리하여 최종 제품의 품질이 떨어지게합니다.

사람이 어떻게 행동하는지는 모든 것을 대하는 방법입니다. 그들이 자신의 업무에 대한 디테일이 부족하면, 삶의 다른 영역의 디자인에 중요한 디테일이 부족할 것입니다.

최근에 저는 진정한 장인이자 공예가 인 사람들과 일하기로 결정했습니다. 프로세스가 약간 느려질 수 있습니다. 그러나 최종 결과는 10 배 또는 100 배 더 좋을 것입니다.

제가 삶의 질을 말할 때, 그것은 문자 그대로를 의미합니다. 자신의 일에 많은 것을 기대하는 사람들과 함께 일하는 것, 그들이 먹는 음식, 시간을 보내는 방법, 시간을 보내는 사람, 구매하는 제품의 품질 등.
당신은 당신의 일의 성공과 도달에 관심이있는 사람들과 일해야 합니다. 그들은 자신과 직장에서, 그리고 세계에서 할 수있는 서비스에 대한 기대치를 높일 수 있도록 도울 것입니다.

당신의 삶에서 당신이 바라는 것에 대한 당신의 감각을 높이십시오.

"당신이 얻는대로 주는 것은 우주가 진실로 풍부하다는 것을 인정하는 것입니다. 우리, 우리의 생각, 우리의 결과를 증폭시키는 영적인 차원에 두드립니다. 깨달은 백만장자가 알고있는 바 : 풍요로운 바다가 있으며 찻 숟가락, 양동이 또는 트랙터 트레일러로 그 바다를 이용할 수 있습니다. 바다는 상관하지 않습니다. "

당신이 기부 할 수있는 것에 대한 당신의 감각을 높이십시오.

당신이 원하는 삶의 종류를 결정한 다음, 그것을 얻는 방법을 알아 내십시오.

'왜’가 명확하면, '어떻게’하는지 알아낼 것입니다

당신이 할 수있는 것처럼 봉사하고 줄 수 있습니다

다른 사람을 자랑하거나 다른 사람을 끌어 들이지 않고 명확한 의식을 가짐

시간을 최대한 단축 할 수 있도록 소득을 신속하게 자동화하십시오.

돈을 많이 벌고 많은 사람들을 도울 수 있기 때문에

당신이 말한 것의 10 배 가치를 부여하십시오

사람들의 마음을 불어 넣으십시오

대부분의 작업물을 무료로 배포

더 많은 것들을 만들어라. (그러나 정말 좋은 것들만)

자신이하는 일에 세계 최고가 되십시오.

자신에게 강하게 투자하세요.

연사가 되어 자신이 배운것을 가르키십시오.

대중에게서 배우십시오.

매일 밤 몇 분씩 정신적으로 다음날을 준비하십시오.

쓰다가 힘들어서 못 쓰겠다.
이걸 쓰는게 나에게 그렇게 중요하지 않다는 것을 알았다.
두 시간을 날려먹었네…
하하하


반응형
angular vs react vs vue

javascript framework 개발환경이 2017년에는 많은 변화가 있었습니다. 급부상하고 있는 Vue.js (ver.2 로 진화중) 와 엄청난 업데이트를 진행하고 있는 Angular (현재 5.x), Facebook이 이끌어가고 있는 React.js.

angular를 사용하고 있었는데, 갑작스런 angular5 와 typescript 와 혼용되면서 많은 변화에 적응을 못하고 있는 상황입니다. 가벼운 것들을 만드려고 하는데 시작부터 과대한 몸집을 가지고 있어서 균형을 맞춰주기 힘든 실정입니다.
하이브리드앱 개발을 위해서는 위에 3개의 Javascript을 잘 알아야합니다.

먼저 단일 페이지 응용 프로그램 (SPA)이 필요한지 또는 여러 페이지 접근 방식을 택해야하는지 확실하게 결정해야합니다.

  • 프레임워크 라이브러리 생태계의 크기가 얼마나 되는가.
  • 해당 언어의 커뮤니티가 얼마나 활성화되어 있는가.
  • 프레임워크 개발자를 쉽게 접할 수 있는가
  • 프레임워크의 기본개념에 대해서는 알고 있는가.
  • 프로그램의 크기는 얼마나 될 것인가.
  • 프레임워크의 학습곡선은 어떻게 되는가
  • 어떤 종류의 성능을 기대할 수 있는가.
  • 선택한 프레임워크로 어떻게 개발을 시작하는가

역사

Angular

TypeScript를 기반의 Javascript 프레임워크. 구글이 개발유지 중.
슈퍼 MVW(Model-View-Whatever) 프레임워크라고 불리운다.

React

"사용자 인터페이스를 만들기 위한 Javascript

2013년 등장해서 Facebook 이 개발, 유지관리합니다.

Facebook은 React Fiber의 출시를 위해 노력하고 있습니다. 후드에서 React가 변경됩니다. 결과적으로 렌더링 속도가 훨씬 빠르지 만 변경 후에는 이전 버전과의 호환성이 유지됩니다. 페이스 북은 2017 년 4 월 개발자 회의에서 변경 사항에 대해 이야기하고 새로운 아키텍처에 대한 비공식적 인 기사가 공개되었습니다. React Fiber는 2017 년 9 월에 React v16과 함께 발표되었습니다.

Vue

Vue는 2016 년에 가장 빠르게 성장하는 JS 프레임 워크 중 하나입니다.
Vue는 자체를 "대화 형 인터페이스 구축을 위한 직관적이고 신속하며 구성 가능한 MVVM"이라고 표현합니다.

Google 직원 인 Evan You가 2014 년 2 월에 처음 출시했습니다. Vue가 큰 회사의 후원없이 1 인 쇼처럼 많은 견인력을 얻고 있다는 점을 감안할 때 상당히 성공적이었습니다.

Vue로 제작된 페이지

트렌드

여러 가지 이름과 버전으로 인해 Google 검색 트렌드에서 Angular, React 및 Vue를 비교하기가 어렵습니다.
아래은 구글트렌드로 검색을 한 최근 5년간의 분류로 검색 이슈에 대한 기록입니다.

Imgur

Stackoverflow 2017 설문 조사에 따르면 React는 조사 대상 개발자의 67 %와 AngularJS에 의해 52 %의 사랑을 받았습니다.

AngularJS (48 %) 대 React (33 %)는 "개발을 계속할 관심이 없습니다."
Vue는 두 경우 모두 상위 10 위 안에 들지 않습니다.

그런 다음 "프런트 엔드 프레임 워크"를 비교하는 statejs.com 설문 조사가 있습니다. 가장 흥미로운 사실은 React와 Angular가 100 % 인지도를 지니고 있으며, Vue는 설문 조사 대상 사람들의 23 %에게 알려지지 않았습니다.
만족도와 관련하여 React는 "다시 사용할 것"에 대해 92 %, Vue 89 % 및 Angular 2 만 65 %를 기록했습니다.

Stackoverflow 2017 설문 조사에서 재미난 설문조사 자료를 얻을 수 있습니다.

개발인력

Javascript를 더 배우고 싶지않는 개발자라면 Angular 또는 Vue를 선택하는 것이 좋습니다.
React는 더 많은 Javascript를 사용해야 합니다.

Angular 프레임 워크에 대한 좋은 점은 다른 회사의 새로운 Angular 2 개발자가 필요한 모든 규칙을 신속하게 익히게된다는 것입니다. 반응 프로젝트는 아키텍처 의사 결정 측면에서 각기 다르며, 개발자는 특정 프로젝트 설정에 익숙해 져야합니다.
Angular는 객체 지향 배경을 가진 개발자이거나 Javascript가 마음에 들지 않는 개발자에게 유용합니다.

라이브러리 생태계

Angular는 라이브러리가 아닌 프레임 워크이므로 응용 프로그램을 구조화하는 방법에 대해 강력한 의견을 제시하고 상자에서 더 많은 기능을 사용할 수 있기 때문입니다. Angular는 쾌적한 시작을 제공 할 수있는 "완벽한 해결책"입니다.
라이브러리, 라우팅 솔루션 등을 분석 할 필요가 없이 바로 시작할 수 있습니다.

반대로 React와 Vue는 유연합니다. 라이브러리는 모든 종류의 패키지와 쌍을 이룰 수 있습니다 (npm에 대한 React는 꽤 많이 있지만, Vue는 여전히 어리기 때문에 패키지가 적습니다).
React를 사용하면 Inferno와 같은 API 호환 대안을 위해 라이브러리 자체를 교환 할 수도 있습니다. 그러나 큰 유연성에는 큰 책임이 따릅니다. React에는 규칙이없고 제한된 지침이 없습니다. 모든 프로젝트는 아키텍처와 관련된 결정을 요구하며, 상황을 어렵게 만들 수 있습니다.

two-way data binding (양방향 데이터 바인딩)

React와 Angular의 가장 큰 차이점은 단방향 대 양방향 바인딩입니다. Angular의 양방향 바인딩은 UI 요소 (예 : 사용자 입력)가 업데이트 될 때 모델 상태를 변경합니다.
반응은 한 가지 방법으로 진행됩니다. 먼저 모델을 업데이트 한 다음 UI 요소를 렌더링합니다.
Angular의 메서드는 코드에서보다 깨끗하며 개발자가 쉽게 구현할 수 있습니다. 데이터가 한 방향으로 만 흐르기 때문에 (즉, 디버깅이 쉬워 짐) React의 방법은 더 나은 데이터 개요를 제공합니다.
두 개념 모두 장단점이 있습니다.
개념을 이해하고 이것이 프레임 워크 결정에 영향을 미치는지 확인해야합니다.
여기에 몇 가지 대화식 코드 예제를 찾을 수 있습니다.
마지막으로 Vue는 단방향 바인딩과 양방향 바인딩 (기본값은 단방향)을 모두 지원합니다.

코드작성에서

Angular는 하나의 객체가 다른 객체 (클라이언트)에 의존성주입 을 제공하는 패턴 인 종속성 주입을 포함합니다. 이로 인해 더 많은 유연성과 코드가 생성됩니다.

model-view-controller 패턴 (MVC)은 프로젝트를 모델, 뷰 및 컨트롤러의 세 가지 구성 요소로 나눕니다.
Angular MVC 프레임 워크는 MVC를 기본적으로 제공합니다.
React에만 V가 있습니다 - 당신은 스스로 M과 C를 풀어야 합니다.

유연성(Flexibility), 간소화(Microservice)

소스 코드에 Javascript 라이브러리를 추가하기 만하면 React 또는 Vue로 작업 할 수 있습니다.
Angular는 TypeScript를 사용하기 때문에 Angular에서 불가능합니다.

React와 Vue를 사용하면 실제로 필요한 것만 선택하여 응용 프로그램의 크기를 조정할 수 있습니다. 이전 응용 프로그램의 일부를 사용하여 SPA에서 마이크로 서비스로 전환하는 데 더 많은 유연성을 제공합니다. SPA에 가장 적합한 Angular는 마이크로 서비스에 사용하기에는 너무 덩치가 큽니다.

다음 사이트에서 JS 프레임워크의 벤치결과 및 테스트를 진행할 수 있습니다.

Testing (테스트)

Angular2에는 Jasmine, Facebook은 Jest를 사용하여 React 코드를 테스트합니다.

Vue는 테스트 가이드가 없지만 Evan은 2017 년 미리보기에서 팀이이 작업을 계획하고 있다고합니다. 카르마를 사용하는 것을 권장하고 있습니다.
Vue는 Jest와 함께 작동하며 테스트 유틸리티로 avoriaz도 있습니다.

Universal, native apps (유니버셜, 네이티브앱)

하이브리드앱을 제작하는데 사용되고 있습니다.
어플리케이션은 웹, 데스크탑 및 네이티브 애플 리케이션의 세계로 어플리케이션을 소개하고 있습니다.

React와 Angular 모두 네이티브 개발을 지원합니다.
Angular는 네이티브 응용 프로그램 용 NativeScript (Telerik 지원) 및 하이브리드 응용 프로그램 용 Ionic Framework를 보유하고 있습니다.
React를 사용하면 반응 네이티브 렌더러를 통해 크로스 플랫폼 iOS 및 Android 앱을 제작하거나 네이티브 앱에 반응 할 수 있습니다.

Javascript 프레임 워크는 클라이언트에서 페이지를 렌더링합니다. 이것은 인식 된 성능, 전반적인 사용자 경험 및 SEO에 좋지 않습니다. 서버 측 사전 렌더링은 장점입니다. 세 가지 프레임 워크에는 모두 도움이되는 라이브러리가 있습니다. React에는 next.js가 있고 Vue에는 nuxt.js가 있고 Angular에는 Angular Universal이 있습니다.

학습곡선

확실히 Angular의 가파른 학습 곡선이 있습니다.
그것은 포괄적 인 문서를 가지고 있지만 때로는 생각보다 어렵기 때문에 좌절감을 느낄 수도 있습니다.
Javascript에 대한 깊은 이해가있는 경우에도 프레임 워크의 내부에서 진행중인 작업을 알아야합니다.
설치를 시작하면 엄청난 코드와 패키지를 한꺼번에 설치합니다. 시간이 지남에 따라 배울 필요가 있는 생태계가 있기 때문에 부정적인 요소로 작용할 수 있습니다.
다른 한편으로는, 많은 설정이 되어있기 때문에 바로 결과물을 만들 수 있는 장점이 있습니다.

React를 사용하면 타사 라이브러리와 관련하여 많은 설정을 할 수 있습니다. React에서만 선택할 수있는 상태 관리를위한 16 개의 다른 flux 패키지들이 있습니다.

Vue는 배우기가 꽤 쉽습니다.
주니어 개발자에게는 Vue가 훨씬 쉬워 보이기 때문에 Vue로 많이들 전환합니다.
여기에서는 Angular에서 Vue로 이동에 관한 글에 대해 읽을 수 있습니다. 다른 사용자에 따르면, 회사의 React 앱은 너무 복잡하여 새로운 개발자가 코드를 따라갈 수 없다고 합니다.
Vue를 사용하면 중학교 및 고위 개발자 간의 격차가 줄어들고 버그, 문제 및 개발 시간을 최소화하면서보다 쉽게 ​​공동 작업을 수행 할 수 있습니다.

어떤 사람들은 React에서 작업이 Vue에서 더 잘 작동한다고 주장합니다. 주니어 Javascript 개발자이거나 지난 10 년 동안 주로 jQuery로 작업 한 적이 있다면, Vue 사용을 고려해야 합니다.
패러다임 이동은 React로 이동할 때 더욱 두드러집니다.
Vue는 일반 Javascript와 유사 해 보이지만 구성 요소, event-driven-model(이벤트 중심 모델) 및 one-way data flow(단방향 데이터 흐름)과 같은 새로운 아이디어를 소개합니다.

결론

Typescript를 좋아한다면 : Angular
OOP(Object Orientated Programming)를 한다면 : Angular
가이드라인, 구조, 도움의 손길이 필요하다면 : Angular
거대한 생태계를 좋아한다면 : React
유연성을 원한다면 : React
원하는 패키지만 사용하고 싶다면 : React
Javascript를 사랑하고, 자바스크립트 접근법을 가지고 있다면 : React
깔끔한 코드를 좋아한다면 : Vue
가벼운 프레임워크를 원한다면 : Vue
쉬운 학습곡선을 원한다면 : Vue
혼자 일하거나 작은 팀으로 일한다면 : Vue
앱의 덩치가 크다면 : Angular
하이브리드 네이트브앱을 만들고 싶다면 : React, Angular
깔끔한 HTML 파일이 필요하고 디자이너와 일하고 있다면 : Angular, Vue
제한된 생태계를 싫어한다면 : React

다른 사이트들을 참고해서 작성했지만, 솔직히 나도 알고 싶은 결론을 도출하기까지 너무 많은 시간이 걸렸다.
React와 Vuew은 아직 사용해 보지 않아서 잘은 모르지만 혼자 간단한 사이트를 제작하는데 Vue로 작성을 고려해 보는게 좋을 꺼 같다. 그런데, Javascript 가 조금 싫은데…

반응형
Javascript | Null 과 undefined

Javascript 를 사용하다보면, 언젠가 한번은 직면하게 될 문제인 NullUndefined입니다. 자바스크립을 처음 접할때는 둘다 같은 같은 null을 의미한다고 생각하고 넘어갔습니다만, 깊게 들어가보면 다르다는 것을 알 수 있습니다.,

Null

  • 비어있거나 존재하지 않는값
  • 할당해야 하는 값
let a = null;
console.log(a); // result : null

객체로 취급됩니다.

Undefined

  • 변수가 선언 되었지만, 아무 값도 할당되지 않은 상태
let b;
console.log(b); // undefined

변수를 underfined로 설정할 수도 있습니다.

let c = underfined;
console.log(c); // undefined
var d = {};
console.log('d',d); // undefined

아무값도 할당되지 않은 상태라 값을 할당할 수 있지만 null은 아닙니다.

반응형

컴퓨터 조립 Asrock deskmini 110 + WIFI 맞추기

지인의 컴퓨터를 조립하기 위해서 견적을 알아보다가, 게임은 안하시고 사무용으로 사용하실 꺼라. 직접 조립을 해 준다고 했다.

한곳에서 부품을 구매하려고 했더니 가격이 올라가서 배송 합체 머신을 만들려고 한다.

Imgur

네이버쇼핑몰과 에누리에서 G4560 + deskmini 완제품을 팔고 있는데, 믿을 수가 없어서 직접 구매하려고 한다.
원하는 사양에 맞출수 없을 꺼 같다는 생각이 들었다.

주의할점

asrock Deskmini 110 에 대한 정보를 좀 알아가야합니다.

구매목록을 보면 하드CPURAM 만 규격에 맞는 것을 구매해 주면 됩니다.

종류 규격
SSD M.2 SSD 슬롯 (M.2 2280 PCIe Gen3 x4 지원)
2 x 2.5” HDD or SDD
CPU 6, 7세대 소켓 1151(최대 TDP 65W)
RAM DDR4 2400Mhz SO-DIMM

이정도만 주의하면 무난하게 원하는 물품을 구매할 수 있습니다.

SSD

  1. 일반 SSD 를 구매할 때는 크기만 맞춰주시면 됩니다.
  2. m.2를 구매할 때는 SATA가 아닌 PCIe 가 지원되는 2280 크기로 구매하셔야 합니다.
    네이버에서 구매를 하신다면 아래와 같은 정보가 있는지 확인 하셔야 합니다.

Imgur

반드시 상세정보를 확인해 주세요.
NVMe NGFF 와 같은 PCIe3.0x4 (32GT/s) 세부모델이 있습니다. 일단 하위 호환이 되기 때문에 사용은 할 수 있지만, 최대 성능을 이끌어내지는 못합니다.
그리고 비싸요.

CPU

socket 1151만 맞추면 문제 없습니다. 1151규격에 맞는게 최신 CPU 밖에 없기 때문이죠.

다나와에서 이렇게 검색을 해보면 금방 나옵니다.

Imgur

RAM

지원속도 2,400MHz인 것만 구매하면 됩니다. 하위호환이 되니까 높은 걸 구매해도 됩니다.

Imgur

결론

사양 네이버쇼핑몰검색 별개구매
asrock deskmini 110 + wifi 176,790 ₩134,000
인텔 펜티엄 G4560 (카비레이크) (벌크 + 쿨러) 73,000 ₩78,480
삼성SSD/PM961/M.2/병행수입/256GB/내장 1개 106,300 ₩119,230
삼성 8G DDR4 19200 RAM (2400Mhz) 83,100 ₩85,300

최저가보다는 조금 오른 가격이 되었지만, 다른 사람들이 판매하는 완성품 가격보다는 몇만원 저렴하게 구매할 수 있었습니다.

역시 완성품보다는 직접 조립이 짱이죠!

반응형

어느날 갑자기 찾아온 청천벽력과 같은 이야기가 날아 들어왔다.

yum package 관리 프로그램이 문제가 생겼다.
아래와 같은 문구가 막생김. 아무리 눌러도 되지 않음

yum command doesn’t work!!!!!!!!

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   /lib64/libcurl.so.4: file too short

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

If you cannot solve this problem yourself, please go to
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

구글링을 해 보아도 딱히 좋은 해결 방책은 보이지 않는다.

Imgur

일단 문제 여부를 파악하지 위해서 문제가 있는 서버의 파일 상태를 체크 하기로 했다. 파일이 작다니 파일이 문제가 있는가 보다 의심이 든다.

$ ls -ls /usr/lib64/libcurl.so.*
0 lrwxrwxrwx. 1 root root 16 1128 13:15 /usr/lib64/libcurl.so.4 -> libcurl.so.4.3.0
0 -rwxr-xr-x. 1 root root  0 1128 00:43 /usr/lib64/libcurl.so.4.3.0

보아하니 파일 용량이 0 byte 이다. 아놔 이게 문제였꾸나.!!!!! 그냥 파일이 어디론가 승천해버린 것.

다행히 옆에 서버도 같은 Centos 로 세팅해 놓은 것이 있어서 파일을 찾을 수 잇엇다.

/usr/lib64/libcurl.so.4 파일과 /usr/lib64/libcurl.so.4.3.0 파일을 무식하게 붙여넣기 했다.

엉엉.. 눈물난다. 된다. ㅠㅠ

Imgur

다른 불쌍한 사람들이 있다면, 이를 다운 받아서 사용하시길.. /usr/lib64/에 넣어주기만 하면 됩니다.

반응형

angular 5 빌드 후에 docker nginx 서버에 적용하기

angular 빌드하기

$ ng build

빌드후에 /dist/퐬더에 생성된 파일을 nginx 서버가 적용 된 곳에 파일을 복사합니다.

localhost/까지는 잘 접속이 되는 것을 확인할 수 있습니다. 그러나, angular 의 RoutingModule을 사용한 주소 뒤에 localhost/some/some2/ 와 같은 주소는 접속이 되지 않습니다.

이를 해결하기 위해서는 아래와 같이 nginx/conf.d/default.conf 파일을 수정해 주어야 합니다.

일단 저는 nginx/1.13.5버전을 사용하고 docker 를 통해서 실행해 놓은 상태입니다.

docker exec -it some-nginx /bin/bash

명령어를 통해서 docker 내부에 접속을 한후에 vim 으로 설정을 변경합니다.

: vim이 실행이 되지않을때에는 apt-get update를 진행후 apt-get install vim를 통해 설치를 하기 바랍니다.

/etc/nginx/conf.d/default.conf 파일을 수정 합니다.

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
    }
...

이대로 접속이 되면 만세!

반응형

Angular 라우팅 적용하기

  • @angular/core = “^5.0.1”

라우팅 기능을 통해서 페이지 이동을 구현하려고 하는데 생각보다 잘 안되서 무니서로 정리해 놓으려고 합니다.
Reference 문서를 살펴보면 가능은 하겠지만, 문서를 보면서 실수한 점에 대해서 기록

install routing module

$ ng generate module app-routing --flat --module=app

설치옵션

–flat : /src/app/ 폴더에 component 를 만들 때처럼 폴더를 생성하지 않고 파일을 생성합니다.
–module=app : AppModule 에 자동으로 import 합니다.

app.module.ts에 자동으로 imports:항목에 추가가 되므로, 따로 app.module 을 설정하지 않아도 되는 장점이 있습니다. 앵귤러는 설정때문에 왔다갔다 하는게 너무 많아요.

app.component.html파일

<div class="container">
  <router-outlet></router-outlet>
</div>

<router-outlet></router-outlet>이 라우팅이 적용되는 위치 입니다. 저는 router-outlet 을 html에 입력을 하지 않아서 적용이 되지 않았습니다.
이 거 찾는데 한시간 걸림. 왜 안되는지!!! 슬프다.

app-routing.module.ts파일

import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';

import { SalesComponent} from './sales/sales.component';
import { NotfoundpageComponent } from './notfoundpage/notfoundpage.component';

const routes: Routes = [
  {path: 'sales/:id', component: SalesComponent},
  { path: '', redirectTo: '', pathMatch: 'full'},
  { path: '**', component: NotfoundpageComponent }
]

@NgModule({
  imports: [ RouterModule.forRoot(routes)],
  exports: [ RouterModule]
})
export class AppRoutingModule {
  constructor() {}
}
반응형

webstorm 에서 자동완성 쌍따옴표를 따옴표로

웹스톰을 기본설치하고 angular 플러그인을 설치하고 난 뒤에 import {} 를 하고 나면 자동완성으로 쌍또옴표를 사용한다

이거 찾는다고 10분을 허비함.

이를 해결하기 위해서는 설정헤서 다음부분을 수정하면 된다.

Imgur

반응형

+ Recent posts