본문 바로가기

잉고래의 코딩

npm install --save-dev를 쓰는 이유 —save-dev 옵션은 왜 넣을까? ​ Node.js의 npm로 모듈을 설치할 때 아래처럼 --save-dev 옵션을 넣는 경우가 있습니다. 이 옵션은 어떤 의미일까요? $npm install --save-dev babel-cli ​ Node.js에서는 보통 npm으로 모듈을 설치합니다. `$npm install [모듈이름]` 이런 식으로요. 이러면 명령을 실행한 디렉토리에 node_modules라는 이름의 디렉토리가 생기고, 해당 디렉토리 안에는 모듈이 설치됩니다. 그런데 다른 프로젝트에서도 똑같은 모듈이 필요하면 어떻게 해야 할까요? 똑같이 `$npm install [모듈이름]`을 해당 프로젝트의 폴더에서 해야겠죠. 한 두번이면 괜찮은데 이런 작업이 100개 1000개이면?? 또 추가해야 할 모듈이.. 더보기
c언어 struct 구조체를 써야하는 이유 struct 안 쓰면 불편한 점 c언어 struct의 필요성과 장단점 그리고 사용시 주의할 점에 대한 이야기입니다. car_name이란 변수를 참조하는 함수들이 100개 있다고 가정하죠. 함수 선언과 정의하는 부분들이 있을 겁니다. 그런데 car_color란 변수를 추가해야 할 일이 생겼습니다. 그래서 100번 수정해서 함수들 마다 데이터 하나를 추가했습니다. 그런데 또 수정 요구가 들어왔어요. 오 마이… 이번에는 car_size입니다. 헐….. OTL 이런 반복작업을 계속 해야 할까요? struct를 쓰면 좋은 점 위의 이야기와 같은 불상사를 막으려면 struct를 사용하면 됩니다. c언어의 struct 구조체는 여러 형의 데이터를 묶어야 할 때 사용합니다. 즉 구조화된 데이터형이죠. 이렇게 하면 좋은.. 더보기
'pointer to incomplete class type is not allowed' 컴파일 에러 해결방법 컴파일 시 다음과 같은 에러가 나온다면 헤더를 인클루드 여부를 확인하라. 소스에 헤더가 포함되지 않아서 생기는 경우가 대부분이기 때문이다. Error[line 275] : pointer to incomplete class type is not allowed 에러 내용을 좀 더 보면 번역하면 '불완전한 클래스 유형의 포인터가 허용되지 않습니다' 즉 선언이 안 되어 있다는거다. 변수나 구조를 선언한 헤더를 포함했는지 여부를 따져보자. 더보기
sprintf 널문자와 메모리 overflow sprintf의 문제 문자열 복사를 위해서 sprintf 함수를 자주 사용하게 되는데,다국어 프로그래밍 시에 sprintf를 사용하면 스트링 복사시에 ANSI 값 즉 1바이트만 복사하게 되어 출력되고자 하는 다국어 문자열이 이상하게 표시되는 오류가 발생될 수 있다.유니코드를 위한 swprintf나 wsprintf를 쓰도록 하자. 위의 이미지를 한번 보자. 변수 A와 B가 메모리에 8바이트 2바이트 할당되어 있다고 가정하자. 그런데 아래와 같이 8바이트 문자열을 sprintf함수를 사용해서 쓰면 실제로는 마지막에 널 문자 0까지 붙어서 9바이트가 들어가게 된다. abcdefgh0 이런식으로 말이다. 그럼 변수 B의 영역을 침범하게 되므로 이건 메모리 오버플로우 에러가 발생하게 된다. 이런 버그는 참 찾기 .. 더보기
자바스크립트의 객체 정의 3가지 방법 자바스크립트에서 데코레이터 패턴을 공부하는데 자바스크립트에서 클래스 정의는 어떻게 되는지 몰라서 공부한걸 적어놓는다. 참조 : 3 ways to define a JavaScript class 자바스크립트는 클래스라는 개념이 없다. 자바스크립트에서 모든것은 객체이다. 상속은 객체가 객체로 부터 받는다. 함수를 이용한 방법 자바스크립트 함수를 만든 다음에 new 키워드로 객체를 생성하면 된다. 함수를 이용해서 만든 객체의 속성과 메소드를 정의하기 위해서는 this 키워드를 사용한다. 객체 정의 1 2 3 4 5 6 function Espresso() { this.cost = 2500; this.getCost = function() { return this.cost; } } cs 객체 생성 1 2 let es.. 더보기
착한 편집기 비주얼 스튜디오 코드 마이크로소프트가 웬일로 컨셉 잘 잡았네 마이크로소프트 프로그램들의 경우 정말 뛰어난 기술을 갖고 있음에도 컨셉을 잘 못잡아서 항상 내가 다가서기 어렵거나 쓸 수 없거나 그런 프로그램들이 많았다. 배우는데 너무너무 어렵다. 비주얼 스튜디오가 그랬고 원노트가 그랬고 기타등등 셀 수 없는 주옥(?)같은 프로그램들이 나를 넘지 못하고 내 컴퓨터에서 그냥 버려졌다. 하지만 이번에 나온 '비주얼 스튜디오 코드'란 편집기는 써보니 정말 정말 괜찮다. 어떤 점이 칭찬에 인색한 나에게 이런말을 나오게 하는가. 비주얼 스튜디오 코드 한 줄 소개 비주얼 스튜디오 코드(Visual Studio Code)는 데스크탑에서 실행되며 Windows, MacOS 및 Linux에서 사용할 수 있는 멀티플랫폼의 가볍지만 강력한 소스 코드.. 더보기
c언어 sizeof 잘못쓰면 낭패 c언어에서 sizeof 사용할 때 이거 하나는 알아두세요. 제가 오늘 실수한 내용 공유합니다. c언어에서 sizeof는 변수 타입의 메모리 바이트 크기를 구하고자 할 경우 주로 사용하는데요. sizeof(type) 이런식으로 씁니다. 다들 아는 얘기죠. 그러면 바이트 단위의 사이즈를 돌려줍니다. 가령 int a; result = sizeof(a); 라고 하면 result에는 보통 4라는 값이 들어갑니다. int a[3]; result = sizeof(a); 라고 하면 result 변수에는 정수크기와 배열 크기의 곱에 해당 하는 4 * 3 = 12라는 값이 들어가게 되고요. 포인터를 사용하지 마세요 그런데 종종 실수 할 수 있는게 sizeof에 포인터를 쓸 때입니다. 저도 무심결에 실수했네요. 메모리를 m.. 더보기
Visual Studio mdf table 저장 오류 해결방법 Data is not being saved I'm developing windows forms application in C# with sql server database. I can insert and retrieve data but only in the run time. If I run it again it does not show previously inserted data. Here is screen shot You are basically pressing the ctrl + s, which will save the definition of the table in the script file. in top left corner you will find the update database butto.. 더보기