patch-package

서드파티 라이브러리를 커스텀한 상태가 배포상태에서도 지속되도록 관리해주는 패키지.

즉, node_modules에 수정한 사항이 git으로 관리되고 어떠한 실행 환경에서도 적용되도록 한다.

patch-package를 사용할 시 매번 버전이 달라질 때마다 patch 파일의 버전을 인스톨 되어 있는 버전과 맞춰줘야 하는 단점이 있다.

 

1. 설치

npm install —save-dev patch-package

 

2. 설정

// package.json

"scripts": {
	"postinstall": "patch-package", // 해당 스크립트 추가
},

 

 

3. 변경하고자 하는 패키지 코드 수정

패키지 코드를 원하는대로 수정한다.

 

 

4. patch 적용

npx patch-package [변경한 패키지 이름]

 

5. “patches”라는 폴더가 생기고, 폴더 안에 변경한 패치 내용이 저장되어 있음을 확인

 

 

6. node_moduels 을 지웠다가 npm install 해보면 자동으로 패치내용들이 적용되어 있음

 

주의) 수정한 패키지의 patches 버전과 package.json의 패키지 버전이 다르면 에러를 유발하니 버전 체크하는 것이 중요!

반응형

 c언어 프로그래밍 기초 문법 

 

배열

 

배열은 ‘같은 타입’의 여러 공간을 하나의 변수로 ‘다루는 것’이며 만들어지는 공간은 ‘연속’된다. 배열을 선언(생성) 하기 위해서는 [ ](대괄호)를 사용한다. 대괄호 안에 배열의 크기를 정하는 정수 값을 넣는다. 그리고 배열에는 ‘인덱스(index)’를 이용해 각 요소에 접근하고 사용할 수 있다. 여기서 인덱스는 간단하게 위치 또는 순서로 의미를 이해하면 된다. 참고로 모든 프로그래밍 언어에서 인덱스는 1이 아닌 0부터 시작한다. 따라서 마지막 순서의 인덱스는 길이에서 1을 뺀 값이 된다. 아래에 배열을 생성하는 여러 가지 형태들을 보여준다.

 

// 배열생성
int iArr1[5]; // 배열생성, 각 공간(5개의정수)은 초기화 되지 않음 (쓰레기값)

int iArr2[5] = { 1, 2, 3, 4, 5 }; // 배열생성과 동시에 초기화(순서대로) 

int iArr3[5] = { 1, 2 }; // 뒤에 나머지 공간3개는 자동으로 0이 대입

int iArr4[5] = { 0, };  // 모든 공간을0대입

int iArr5[] = { 10, 20, 30, 40, 50 }; // 자동으로 길이가5가된다.

 

1. 문자열 배열

 

여기서 char는 1개 문자를 표현하는 자료형이다. char의 배열 형태는 ‘문자열’을 표현할 수 있다. 그리고 문자열의 끝에는 자동으로 ‘널 문자(\0)’가 삽입되어 있다는 것을 주의해야 한다. 널 문자는 정수 0을 의미하며 공백과는 다른 문자이다.(참고로 공백은 정수 32) 따라서 널 문자 때문에 배열 선언 시 원하는 문자열 길이보다 최소 1이상 여유 있게 선언해야 한다. 아래에 문자열 배열을 생성하는 여러 가지 형태들을 보여준다.

 

char szStr1[20] = "Hello"; // char 배열 선언과 동시에 초기화 할 때'문자열'사용가능

char szStr2[20] = { 'H', 'e', 'l', 'l', 'o', }; // szStr1과동일

char szStr3[20] = { 0, }; // 정수0은 널 문자

char szStr4[20]; // 초기화 하지 않은 문자 배열

char szStr[] = "Hello World"; // 길이가 자동으로 잡힌다.(11글자) 

 

2. 다차원 배열

 

다차원 배열은 2차원, 3차원 혹은 그 이상의 배열 형태를 말한다.

예를 들어 int iArr[2][3] = {0, }은 2행 3열의 행렬 형태를 나타낸다. 아래에는 2차원 배열 생성 형태를 나타낸다.

 

// 2차원 배열 생성 시 초기값 넣기
int iArr[2][3] = { {1, 2, 3}, {4, 5, 6} };
int iArr[2][3] = { {1, 2, 3},
		{4, 5, 6} }; 

 

 

예제

#include <stdio.h>

void main()
{
	// 2차원 문자배열로 동물이름 입력 받기 
	char szArrAnimal[3][20] = { 0, }; // 20글자 문자열이 3개 
	int i = 0;
	int iArrLen = 0;

	//				20칸 * 3개 = 60byte / 1개 행의 크기 (20byte) --> 3 (행의개수) 
	iArrLen = sizeof(szArrAnimal) / sizeof(szArrAnimal[0]);
	//		1차원 : iArr[1] ---> 2번째 요소 
	//		2차원 : iArr[1][1] --> 1행, 1열 요소 1개 
	//		       iArr[1] --> 1행 전체 의미 

	printf("동물 이름 입력\n");
	for (i = 0; i < iArrLen; i++)
	{
		printf("%d번 동물 : ", (i + 1));
		gets(szArrAnimal[i]); // 한 행 전체를 의미 = 1차원 문자배열과 같다. 
	}

	for (i = 0; i < iArrLen; i++)
	{
		printf("%d번 동물은 %s입니다.\n", (i + 1), szArrAnimal[i]);
	}

}

 

반응형

파이썬 기초 문법 

 

1. 주석(Comment)

 

  • 소스에 설명을 추가하는 것
  • 프로그램 수행에 영향이 없다.
  • 한 줄 주석 : # 뒤부터 주석 처리
  • 여러줄 주석 : ''' ''' 또는 """ """
    - 작은 따옴표 3개 또는 큰 따옴표 3개로 묶는다.
'''
	여러줄
    주석처리

'''
""" 
	여러줄
	주석처리 
"""

 

 

2. 문자열 (String)

 

파이썬의 기초 자료형 중의 하나로 문자의 나열을 말한다. 문자열을 만들려면 "abc"나 'abc' 처럼 따옴표로 묶는다.

str1 = "파이썬 Python"
str2 = "1234"

 

 

3. print( ) 함수

 

화면으로 데이터(숫자, 문자열 등)를 출력하는 함수


- 함수 : 특정 행위를 하기 위해 미리 만들어 놓은 기능

- 화면 : IDLE이나 콘솔(cmd.exe)

- 구분기호 : 콤마(,)로 값을 나열할 때 값을 구분하는 기호로 기본 값은 공백(sep = ' ') 이다.

 

print(1, 2, 3, sep = ' ')
print(1, 2, 3, sep = '') # 직접 지정 가능
print(1, 2, 3, sep = '하') 
# 출력
1 2 3
1 2 3
123
1하2하3

 

- 마지막기호 : print( ) 함수의 출력이 끝나면 출력하는 기호로 값은 '개행(줄바꿈) (end = \n)'    이다. 여기서 \n은 줄바꿈을 의미하는 특수한 문자(이스케이프 문자)이다.

 

print("안녕") # end를 따로 입력하지 않으면 기본이 개행
print("하세요", end = '\n')
print("안녕", end = '') # 직접 지정 가능
print("하세요", end = '하하하')
# 출력
안녕
하세요
안녕하세요하하하

 

- print( ) 함수에서 사용되는 기본적인 연산자

  + 기호 , 기호
용 도 연 산 --> 하나의 값을 만든다 나 열 --> 여러 값을 나열한다
print(1 + 2) # 숫자 + 숫자 ==> 덧셈 연산
print("1 + 2 =", 1 + 2)
print("1" + "2") # 문자열 + 문자열 ==> 문자연결 (하나의 문자를 만든다.)
print("1" "2") # 문자열끼리는 기호 없이 연결 가능
# 출력
3
1 + 2 = 3
12 # 정수 숫자가 아닌 문자열임
12 # 문자열

 

 

 

4. 변수 (Variable)

 

- 값을 저장하는 공간, 파이썬에서 사용하는 변수는 값을 '저장' 하는 개념이 아니라 값을 '가리킨다.'

- 프로그래밍 언어에서 = (equl, 등호) 기호는 '같다'가 아닌 '대입'으로 우변의 값을 좌변에 대입하는 것이다.

- 파이썬에서 변수를 만들때 변수명 앞에 따로 자료형(정수, 실수, 문자열 등)을 표시를 하지 않는다

- 변수명 규칙

 

① 한글 사용 가능 --> 그래도 영어로 한다.


② 특수문자(기호)는 _만 사용


③ 대소문자 구분


④ 숫자 사용 가능, 단 첫 글자로는 안된다.


⑤ 예약어 사용 불가

- 이미 시스템에서 사용하고 있는 단어
- 색상이 들어간 단어 사용금지

 

⑥ 변수명을 지을 때 의미를 부여

- 변수명만 봐도 어떤 값을 사용하는지 알 수 있도록

# 변수명 짓기 예시
#숫자 --> num1, num2, ...
#문자열 --> str1, str2, ...
#점수 --> Score1, Score2, ...
#학생 점수 --> StudentScore1, StudentScore2, ...

 

- 변수에 값 대입

# 변수에 값 대입 (1) - 하나씩
a = 1 # a라는 변수에 1을 대입
b = "2"
c = 3

print(a, b, c) # 각 변수가 가리키고 있는 값을 사용

# 변수에 값 대입 (2) - 한 번에
a, b, c = 4, 5, 6 # 순서대로 대입, 짝이 맞아야 된다.
print(a, b, c)

# 변수에 값 대입 (3) - 모두 같은 값
a = b = c = 7
print(a, b, c)
# 출력
1 2 3
4 5 6
7 7 7

 

반응형

 c언어 프로그래밍, 기초 문법

 

프로그래밍 언어는 일반적으로 수학에서 사용하는 연산기호와 유사한 연산자들의 집합을 지원한다. 다음에 C언어에서 사용되는 여러 가지 연산자들이 있다.

 

1. 기본 연산자

 

 

연산자

기능

+

덧셈

-

뺄셈

/

나누기

*

곱하기

%

나머지 값

 

 

2. 복합 대입 연산자

 

대입 연산자(=)에 다른 연산자가 합쳐진 것이다. 예를 들어 +=, -=, /=, >=, <= 등이 있다.

이것은 자연스레 많이 사용하게 되는 연산자이므로 가볍게 알고 넘어가면 된다.

 

 

3. 단항 연산자

 

단항 연산자는 항이 하나밖에 없는 경우(피연산자가 1개)다.

연산자

기능

++, --

피연산자 값을 1 증가 또는 1 감소

-(부호 연산자)

피연산자 값에 부호 적용

 

 

4. 비교 연산자

 

비교 연산자는 밑에서 나올 조건문과 반복문에서 ‘조건식’으로 사용이 된다. 조건을 만족하면 정수 1 즉, True(참)을 반환하고, 조건을 불만족하면 정수 0 즉, False(거짓)을 반환한다.

C언어에서는 0이 아닌 모든 값을 ‘참’으로 간주한다. 여기서 모든 값이란 0이 아닌 음수를 포함한 모든 숫자, 문자 등을 의미한다. 비교 연산자에는 등가 비교와 대소 비교가 있다.

 

연산자

기능

==

같다

!=

다르다

<

크다

>

작다

>=

크거나 같다

<=

작거나 같다

 

 

5. 논리 연산자

 

연산자

기능

&&

AND연산자, 둘 다 참이면 참, 하나라도 거짓이면 거짓

| |

OR연산자, 둘 중 하나라도 참이면 참, 둘 다 거짓이면 거짓

!

참 / 거짓의 결과를 반대로

 

비교 연산자와 같이 조건문과 반복문의 ‘조건식’에서 사용된다. 조건을 만족하면 정수 1(참) 반환, 조건을 불만족하면 정수 0(거짓)을 반환한다.

OR 연산은 좌측 식이 참이면 우측식을 연산하지 않고 바로 참이 된다. AND 연산은 좌측식이 거짓이면 우측식을 연산하지 않고 바로 거짓이 된다. 이렇게 되는 이유는 불필요한 연산을 줄여 프로그램 메모리 낭비를 줄이기 위해서다. 참고로 모든 연산자들에는 우선순위가 있기에 여러 가지 연산자들을 사용할 때에는 반드시 ( )를 하는 습관을 들이는 것이 좋다. 소괄호를 제대로 하지 않으면 원하지 않는 결과가 나올 수 있다.

 

 

6. 비트 연산자

 

연산자

기능

&

AND, 둘 다 1이어야 1, 아니면 0

|

OR, 둘 중 하나만 1이면 1, 둘 다 0이면 0

^

XOR, 두 값이 다르면 1, 같으면 0

~

비트 전환, 0은 1로, 1은 0으로

<<

비트를 좌측으로 쉬프트(이동)

>>

비트를 우측으로 쉬프트(이동)

 

비트 연산은 2진수로 연산을 하며, 일반적인 연산보다 속도가 빠르다. 왜냐하면 컴퓨터는 값을 bit단위로 저장하고 있기 때문이다. 그 차이가 크지 않기 때문에 굳이 비트 연산을 사용하지 않아도 무방하다. 가독성이 떨어지기 때문에 꼭 필요한 경우에 사용하면 된다.

 

 

 

7. 조건 연산자 (삼항 연산자)

 

삼항 연산자의 형태는 ‘조건식 ? 식1 : 식2“이다.

조건식이 참(1)이면 식 1을 수행하고, 조건식이 거짓(0)이면 식 2를 수행한다. 코드에 ? 가 있다면 삼항 연산자이니 콜론(:)을 찾아 식을 구별하면 된다.

 

 

8. 형 변환

 

형변환은 자료형의 변환을 의미한다. 2가지 형태로 형 변환을 할 수 있다.

 

1) 자동 형변환

C언어에서는 기본적으로 형변환을 해주는 기능이 있다. 먼저, 정수에서 실수로 형변환이 될 경우 없던 소수점이 생긴다. 하지만 오차가 발생할 가능성이 있어 사용자가 주의를 해야 한다.

두 번째로 실수에서 정수로 변환이 될 경우 소수점 이하의 수는 소멸하고 정수 부분만 남는다.

마지막으로 큰 타입 정수를 작은 타입의 정수로 변환이 이뤄진다.

 

2) 명시적 형변환(Casting)

값 앞에 (type)을 명시하여 변환하는 방식이다. 예를 들어 (int) 3.14 --> 3처럼 실수를 명시적으로 정수 형태로 변환한다.

 

반응형

 C언어 프로그래밍, 입력, 출력 

1. 입력(Input)

 

C언어에서 사용자의 입력을 받는 함수는 scanf()이다.

함수 사용 방식은 ‘scanf("입력형식", 입력받을장소(공간, 변수))’처럼 사용한다.

입력 받을 장소는 ‘&’기호를 변수명 앞에 사용해 변수(공간)의 주소 값을 가져온다. scanf()를 사용한다는 것은 화면에서 입력한 내용을 특정 변수의 주소값에 저장한다는 것이다.

 

2. 출력(Output)

 

C언어에서 출력 기능을 가진 함수는 printf() 함수이다. 더 자세히 말해 printf는 형식 지정이 있는 출력을 한다. 여기서 형식 지정이란, 출력에 할 때 자료형에 맞는 형태로 문자를 사용해야 한다는 것이다. 이를 형식지정 문자라 한다.

 

서식문자

기능

%c

정수 값을 ‘문자’로 출력(문자 1개)

%d

정수 값을 10진수로 출력(부호 있음)

%o

정수 값을 8진수로 출력

%x , %X

정수 값을 16진수로 출력

%f

실수 값(소수) 출력

%s

문자열 출력

%p

16진수로 메모리 주소 출력

 

그리고 print에서 많이 사용되는 이스케이프 문자가 있다. 이것은 문자열 안에서 특수한 기능들을 하는 문자들이다.

 

이스케이프 문자

기능

\n

개행(새로운 줄)

\t

탭(tab) - 들여쓰기

\\

\를 문자로 사용

\‘

작은따옴표(‘)를 문자로 사용

\“

큰 따옴표(“)를 문자로 사용

 

예제

#include <stdio.h>

void main()
{	
	int a;
	int b;
	printf("두 수의 입력: ");
	scanf("%d %d", &a, &b);

	printf("a + b = %d\n", a + b);
	printf("a - b = %d\n", a - b);
	printf("a * b = %d\n", a * b);
	printf("a / b = %d\n", a / b);
	printf("a %% b = %d\n", a % b);
}
#incldue <stdio.h>

void main()
{
	int iNum = 0;
    
	printf("숫자 입력 : "); 
	scanf("%d", &iNum); 
    
	printf("입력한 숫자는 %d입니다.\n, iNum");
}

 

결과

두 수 입력 : 20 6
20 + 6 = 26
20 - 6 = 14
20 * 6 = 120
20 / 6 = 3
20 % 6 = 2
숫자 입력 : 5
입력한 숫자는 5입니다.

반응형

+ Recent posts