알쓸신잡에서 김영하가 백업의 중요성을 이야기한 부분이 있다. 소설쓰기에서 가장 중요한것이 무엇이냐는 질문에 ‘백업이야’ 라고 하는 내용인데, 이것은 개발에서도 다르지 않다. git 이라는 든든한 존재가 있지만 git 에도 문제가 생길 수 있는데 이때 기분이 아주 아찔하다.

오늘은 그 중 index file 문제가 발생하는 경우 복구하는 방법에 대한 내용이다.

에러는 다음과 같이 나타난다.

이럴경우, index 파일을 삭제하고 reset 을 통해 인덱스를 마지막 커밋 버전으로 복원할 수 있다. 명령어는 다음과 같다.

OSX/Linux/Windows(Git bash 사용):

Windows(git bash가 아닌 CMD 사용):

검색하면 금방 나오는 내용이긴 하지만 워낙 민감한 문제이기 때문에 정리해둔다.

reference

프로토타입은 자바스크립트를 공부하기 시작하면서부터 접하게되는 개념인데 참 어렵다. 그러한 개념에 대해 설명한 정말 재밌고 굉장히 인상깊은 아티클이 있어 남겨둔다.

자바스크립트는 왜 프로토타입을 선택했을까

글 쓴 분은 자바스크립트의 프로토타입, 그리고 클래스 기반 언어에서 사용하는 클래스에 대해 철학에서 출발하여 설 …

꾸준히 포스팅을 할만한 주제를 잡고 진행해보고 싶다는 생각이 들어서 뭐가 좋을까 고민하던 중에 Frontend-Roadmap 생각이 났다. 로드맵을 따라가며 간략하게 개념들을 짚어보면 재밌겠다는 생각이 들어서 첫번째인 인터넷부터 시작한다.

hp 에서 인터넷 작동 원리에 대한 간략하고 명료한 정리가 있어 구글과 함 …

참고: https://github.com/actions/setup-node

GitHub 의 Actions 를 사용하는 경우 The engine "node" is incompatible with this module. 라는 에러를 만나는 경우가 있다. 이것은 yml 파일에 노드의 버전을 직접 명시하지 않을 경우 임의로 버전이 채택되어 Action 을 실행하기 때문이다. 그렇기 때문에 되도록이면 버전을 명시해서 사용하는 것을 권한다고 한다.

노드 버전은 node-version 을 사용하여 명시할 수 있다.

가장 기본적인 사용 예는 다음과 같다.

위의 예에서 node-version 을 명시하는 부분을 참고해 원하는 형태로 파일을 구성하면 된다.

명시할 수 있는 버전의 예는 아래와 같다.

major versions: 12, 14, 16

more specific versions: 10.15, 14.2.0, 16.3.0

nvm lts syntax: lts/erbium, lts/fermium, lts/*

P

온도 리스트를 입력으로 받고, 더 따뜻한 온도가 나오기 까지 얼마나 걸리는지를 출력하는 문제.

  • 입력

T = [73, 74, 75, 71, 69, 72, 76, 73]

  • 출력

[1, 1, 4, 2, 1, 1, 0, 0]

S

반복

  • 반복을 하긴 해야할텐데 이중 반복으로 전체 배열을 순회할 경우 시간 초과한다. 한번 반복을 하 …
  • 테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전이다. 나는 기능을 추가해야 할 때 테스트부터 작성한다. 얼핏 순서가 뒤바뀐 듯 들리지만, 전혀 그렇지 않다. 테스트를 작성하다 보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다. 구현보다 인터페이스에 집중하게 된다는 장점도 있다(무조건 …
  • 냄새 나면 당장 갈아라. — 켄트 백 할머니의 육아 원칙
  • 이 장은 켄트와 내가 함께 집필했다는 점을 강조하기 위해 ‘나’가 아닌 ‘우리’란 표현을 사용한다. 어느 부분을 누가 쓴 것인지는 쉽게 구분할 수 있다. 웃긴 농담은 필자가 쓴 것이고 나머지는 켄트가 쓴 것이다.
  • 우리는 주석을 달아야 할 만한 부분은 무조건 …
  • 리팩터링: [명사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법
  • 리팩터링(하다): [동사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다.
  • 리팩터링은 결국 동작을 보존하는 작은 단계들을 거쳐 코드 …

리팩터링 2판

  • 리팩터링이란
    리팩터링은 겉으로 드러나는 코드의 기능(겉보기 동작)은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정이다.

Chapter 01

  • 리팩터링의 첫 단계는 항상 똑같다. 리팩터링할 코드 영역을 꼼꼼하게 검새하줄 테스트 코드들부터 마련해야 한다.

리팩터링하기 전에 제대로 …

[실용주의 프로그래머] 에서 소통에 대한 부분 중 WISDOM 에 대한 소개가 나온다.
다음과 같다.

무엇(What)을 배우길 원하는가?
말하려는 것에서 그들이 관심(interest) 있어 하는 건 무엇인가?
얼마나 소양(sophisticated)이 있는가?
어느 정도의 구체적인(detail) 내용을 원하는가?
누가 정보를 소유(owe)하길 원하는가?
그들이 경청하도록 동기(motive)를 주려면 어떻게 해야 할까?

여기서 인상깊었던 것은 마지막 ‘동기’ 에 대한 부분이다.
경청할 수 있도록 동기를 줘야한다는 것.
생각해보면 당연한 것 같은데 막상 대화를 할 때는 잊곤 하는 부분인 듯 하다.

아마 WISDOM 의 다른 요소들을 신경쓰고 갖춤으로써 동기 역시 자연스레 생기는 게 아닐까 하는 생각을 하기 쉬운 것 같은데, 그건 그저 기대에 가깝다는 생각이 든다.

대화를 할 때, 그들에게 들을 동기를 주고 있는지, 어떤것이 동기가 될 수 있을지 생각해보면 좋겠다는 생각을 한다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store