베란다에서 레몬 바질 키우기

2018. 9. 9. 14:58

지난 4월 레몬 바질 씨앗을 사서 남는 화분에 심었습니다.

베란다에 두고 물주면서 편하게 키우는데 잘 자라더군요.


오늘은 키워보면서 느끼고 깨달은 점을 소소하게 공유할까 합니다.

아래는 베란다에 심은 바질이 자라온 모습이에요.


레몬 바질 생장 속도


1. 생장속도


주워 듣기로는 바질은 생장속도가 굉장히 빠르다 했습니다.

그러나... 본잎이 나기까지 꽤나 오랜시간이 걸렸습니다.

무려 50일... 한 달이 넘었죠.


아무래도 생장 속도가 빠르다는건 본잎이 난 이후인가 봅니다.

본잎이 나고 50일 만에 훌쩍 자랐으니까요.


2. 생장조건

2000원 짜리 씨앗을 구매하면 약 200개 정도의 씨앗이 들어있습니다.
여러 화분에 나눠 심었죠.
햇볕이 잘드는 자리에 있던 화분은 알아서 쑥쑥 잘 자랍니다.
그러나 상대적으로 햇볕이 잘 안드는 자리의 화분은 그렇지 못했네요.
햇볕이 상당히 중요한 역할을 하는 것 같습니다.

그리고 영양제를 꼽아줬던 바질 화분의 줄기가 더 튼튼합니다.
영양이 충분히 공급되어야 줄기가 튼튼하게 자라나봐요. 

물은 일주일에 1번 정도 줬습니다.
부족함 없이 잘 자라는 것 같아요.

주기적으로 환기를 시키면서 통풍은 잘 된것 같구요.
딱히 바질을 위해 따로 창을 열지는 않았습니다.

바질 올린 스파게티


손으로 툭툭 치면 향이 많이 나고 좋아요.

역시 허브입니다.

스파게티에 올려 먹어보니 색감도 좋고 향도 잘 나네요.


앞으로 쑥쑥 자라면 바질페스토도 만들어볼까.. 생각중입니다.

바질 키우기는 다른 식물보다 쉬운 편인 것 같아요.

노는 화분이 있다면 씨앗 사서 키우는 재미를 느껴보세요.


TechTrip 놀면서 배우기.

Npm 거슬리는 pacakge-lock.json?

2018. 9. 2. 15:18

저는 Angular CLI를 이용해서 Angular 앱개발을 시작했습니다.

그러면 자연히 npm(Node Package Manager)을 사용한다는 말이 되죠.

얼마전 GitHub에 아래와 같은 경고 메시지가 등장합니다. 


github 리파지토리 경고 메시지


package-lock.json이라는 녀석은 저의 작업 파일도 아닙니다.

대체 저 녀석은 무엇일까요?

오늘은 그것을 알아보도록 하겠습니다.


1. package-lock.json 이란?


npm 5.x.x 버젼 이상을 사용할 때 생겨나는 파일입니다.

이 파일이 생겨나는 시점은 npm install 입니다.

npm install 명령은 package.json을 보고 node_modules 폴더를 생성합니다.

그 폴더 안에 package.json에 명시된 의존성 패키지들을 설치하죠.

생성된 node_modules 폴더의 정보를 pacakge-lock.json에 담습니다.


동일한 package.json은 동일한 node_modules를 만들어내야합니다.

그래야 의존하는 앱이 정상적으로 동작을 할테니까요.


그러나 동일한 package.json이라도 서로 다른 node_modules를 만들게 되는 경우가 생깁니다.

  1) npm의 버젼이 다른 경우

  2) 의존성을 가진 패키지의 버젼이 업그레이드 되는 경우

  3) 의존성을 가진 패키지가 의존하는 패키지의 버젼이 업그레이드 되는 경우


1) 은 쉽게 이해가 가는 내용이구요.

2), 3)의 경우, 아래와 같은 package.json을 예를 들어 보겠습니다.

{
  "name": "myApp",
  "version": "0.1.0",
  "dependencies": {
    "1st_depth": "^1.0.0"
  }
}

myApp은 1st_depth라는 패키지에 의존성을 가지고 있습니다.

1st_depth 패키지는 아래와 같은 package.json을 가집니다. 

{
  "name": "1st_depth",
  "version": "1.0.0",
  "dependencies": {
    "2nd_depth": "^1.0.0"
  }
}

1st_depth은 2nd_depth라는 패키지에 의존성을 가지고 있구요.

2nd_depth의 package.json은 아래와 같습니다.

{
  "name": "2nd_depth",
  "version": "1.0.0"
}

위와 같은 설정에서 node_modules는 아래와 같은 구조가 되겠지요.

myApp@0.1.0
`-- 1st_depth@1.0.0
    `-- 2nd_depth@1.0.0


이런 상황에서 위의 2), 3)번은 아래와 같이 발생하게 됩니다.


2) 의존성을 가진 패키지의 버젼이 업그레이드 되는 경우

myApp@0.1.0
`-- 1st_depth@1.0.1
    `-- 2nd_depth@1.0.0

1st_depth가 1.0.1로 업데이트 되었다고 가정해봅시다.

그러면 npm install시 1.0.1 버젼의 1st_depth를 받아오게 됩니다.

사실 이는 myApp의 package.json에서 B 버젼을 완전히 고정하면 해결됩니다.


그러나 3)의 경우는 좀 더 복잡합니다.

3) 의존성을 가진 패키지가 의존하는 패키지의 버젼이 업그레이드 되는 경우

myApp@0.1.0
`-- 1st_depth@1.0.0
    `-- 2nd_depth@1.0.1

2nd_depth가 1.0.1로 업데이트 되었다고 가정해봅시다.

그러면 npm install시 1.0.1버젼의 2nd_depth를 받아오게 됩니다.

1st_depth의 개발자는 보통 myApp 개발자와 다를 확률이 높습니다.

따라서 우리는 1st_depth 개발자의 package.json을 수정할 수 없습니다.


이런 상황이 package-lock.json의 필요성이 대두되는 순간입니다.

package locks 혹은 lockfiles로 불리우며 package.json의 약점을 보완합니다.

myApp 개발자의 node_modules 폴더의 스냅샷을 저장하는 방식으로 말이지요.


2. package-lock.json이 존재하는 경우 npm install


package-lock.json이 존재하는 경우 npm install의 동작이 조금 달라집니다.

npm install시 더이상 package.json을 계산하지 않습니다.

package-lock.json에 명시된 의존 패키지들을 통해 node_modules를 만들어내죠.

pacakge-lock.json이 생겨난 이유를 생각하면 당연합니다.


3. package-lock.json의 변경


따로 사용하는 방법이 있는 것은 아닙니다.

package.json 변경 후 npm 명령어를 수행하면 됩니다.

package.json의 변경은 package-lock.json보다 우선시됩니다.

npm install, npm rm, npm update는 개발자의 node_modules를 변경시키게 됩니다.

그러면 자연스럽게 package-lock.json이 변경됩니다.


Q & A


 Q1. pacakge-lock.json은 형상관리에 포함시켜야하나?

  당연히 포함시켜야합니다.

  모든 개발자가 같은 node_modules를 가지고 작업하기 위해 필수입니다.


 Q2. package-lcok.json이 충돌하게 되는 경우 어떻게 하나요?

  여러 명의 개발자가 각각 다른 장비에서 npm install을 하다보면 발생하는 현상입니다.

  5.7.0 버젼 이후로는 package.json을 수정하여 npm install을 하여 해결합니다.

  --package-lock-only 라는 옵션을 통해 node_modules 수정 없이 해결도 가능합니다.

  귀찮다면 npm-merge-driver라는 툴을 사용하면 됩니다.


 Q3. package-lock.json이 자꾸 변경되는데 막을 수 있나요?

  npm install 관련하여 --no-package-lock이라는 옵션을 사용할 수 있습니다.

  npm install로 변경되는 node_modules의 변경사항을 저장하지 않는 방법이죠.


GitHub에서 package-lock.json에 대해 신경쓰이는 경고를 날려주는 바람에 공부했네요.

도움이 되실까하여 공유드립니다. 


정보출처:

https://docs.npmjs.com/files/package-locks

https://medium.com/coinmonks/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8

'IT Tech > Angular' 카테고리의 다른 글

Angular State Management (NGXS) Code  (0) 2018.09.22
Angular State Management (NGXS)  (0) 2018.09.15
Angular 업데이트(Update from 5 to 6)  (0) 2018.05.19
Angular Service 만들기  (2) 2018.05.13
Angular Domain Model  (0) 2018.04.24

TechTrip IT Tech/Angular

개발자 추천 폰트(feat. Ligature)

2018. 8. 15. 16:11

요즘 개인 프로젝트(Angular)는 거의 중지 상태입니다...

여행 + 바쁜 회사 업무로 진도가 안나가네요.


그리고 사실 화면(Angular)으로만 진행하기는 한계가 왔어요.

그리하여 mongo + nodejs + express로 간단한 서버 구성 중입니다.


현황 공유는 여기까지.

서버 구성 코딩 하면서 얻은 정보하나 짧게 공유할까 합니다.


바로 개발하기에 좋은 폰트!

저는 사실 MS의 consolas 팬이었습니다.

여전히 좋아하고 주로 쓰는 폰트에요.


하지만 consolas에는 없는 Ligature라는 것을 알게 되었습니다.

Liagature(합자)의 의미는 아래와 같습니다.

손 글씨나 타이포그래피에서 두 개 이상의 문자를 합쳐서 하나로 형성하는 것.


그래서 실질적으로 무엇에 유용할까요?

개발자가 자주 쓰는 대,소비교 구문들이 읽기 쉬워집니다.

a>=b, a<=b, a === b, a!=b 와 같은 것들이 아래처럼 표기됩니다.


    with Ligature(합자)


편리하죠? 

Ligature를 지원하는 폰트가 있습니다.

바로 Naver의 D2Coding 폰트. 네이버 칭찬해~~!

https://github.com/naver/d2codingfont


물론 호불호가 갈리긴 합니다.

그래서 그런지 최신 버전에서는 Ligature 폰트를 분리했네요.


제가 자주 쓰는 IDE Visual Studio Code에도 설정 가능합니다.


1. D2 Coding 폰트를 다운로드 후 설치

2. Visual Studio Code 설정에 아래와 같이 추가

   

   File>Preferences>Setting (Ctrl+,)


Ligature의 매력에 D2Coding 활용해볼까해요.

특히 Pair Programming을 하면 가독성이 중요한데 그 때 써보려구요.

끌리시는 분들은 한 번 사용해보시길 권장합니다.

TechTrip 놀면서 배우기.