본문 바로가기

Programming Language15

[shell] 스크립트 맨 윗 줄 #!/usr/bin 이게 무엇일까? 스크립트 파일을 보다 보면 맨 윗 줄에 #!/usr/bin/sh 이런 식으로 써져 있는 것을 많이 보았을 테다. 어차피 주석 같고, 코드에 별 영향을 주지 않으니 그냥 넘어갔지만, 보다 보니 궁금해져서 찾아봤다.정의이것의 정식 이름은 shebang. 해시 기호와 느낌표로 이루어진 문자 시퀀스로, 스크립트의 맨 처음에 온다. 유닉스 관련 운영 체제에서 사용하는데, 스크립트를 실행할 때 사용될 인터프리터를 지정하는 역할을 한다. 문법#!interpreter [optional-arg] 인터프리터의 경로를 명시한다. 인터프리터의 경로가 env에 명시되어 있는 경우 /usr/bin/env python3 이런 식으로 적으면 된다.왜 사용하는가사용자가 스크립트의 첫 번째 줄에 인터프리터를 지정하면, 별도로 커맨드라인.. 2024. 12. 17.
[RFC] RFC 2119 Requirement levels 요약 가끔씩 문서를 보다보면 "MUST", "SHOULD", "REQUIRED" 같은 용어들이 같이 사용되는데 이것이 "꼭" 해야 하는 것인지, 아니면 "하면 좋은 것" 인지 구분이 안될 때가 많다. 그래서 이것에 대해서 정리한 RFC 2119 Requirement level 문서를 요약하기로 했다.단계1. MUST (+ required, shall)This word, or the terms "REQUIRED" or "SHALL", mean that the definition is an absolute requirement of the specification. 절대적인 요구 사항, 꼭 따라야 함. 2. MUST NOT (+ shall not)This phrase, or the phrase "SHALL NOT.. 2023. 8. 23.
[C & C++] const char * vs char * const const의 위치에 따라서 포인터가 상수인지 데이터가 상수인지 아니면 둘 다 상수인지 정해진다. 맨날 헷갈려해서 이참에 정리한다. char greeting[] = "Hello"; // 비상수 포인터, 비상수 데이터 char *p = greeting; // 비상수 포인터, 상수 데이터 const char *p = greeting; // 상수 포인터, 비상수 데이터 char * const p = greeting; // 상수 포인터, 상수 데이터 const char * const p = greeting; 규칙이 없어 보이지만, 자세히 보면 규칙이 있다. 바로 *을 기준으로 나눠 생각하면 된다. const 키워드가 * 왼쪽에 있으면 포인터가 가리키는 대상(데이터)이 상수이다. const 키워드가 * 오른쪽에 있.. 2023. 7. 27.
[Python] 1_000은 도대체 뭘까 백준을 풀면서 다른 사람들 코드를 보는 중 i = 1_000 또는 i = 1_000_000 같은 코드를 봤다.  바로 스택오버플로우에 찾아봤다. https://stackoverflow.com/questions/49837534/what-do-1-000-and-100-000-mean What do 1_000 and 100_000 mean?Since I've been learning Python, I've sometimes seen beginner examples that look like this: sum_sq = [None] * 1_000 I've bought three Python books and none have mentioned what the 1_000 and 100_000stackoverflow.. 2022. 6. 14.
[Python] 리스트 복사하기 (일차원 & 다차원) 코드 우선 리스트를 복사하려면 일차원이냐 다차원이냐에 따라서 나뉜다. 일차원 리스트 복사하기 # 방법 1 list2 = list1.copy() # 방법 2 list2 = list1[:] # 방법 3 list2 = list(list1) 다차원 리스트 복사하기 import copy list2 = copy.deepcopy(list1) list1 = list2는? 보통은 list1의 요소를 list2에다가 복사하고 싶다면 list2 = list1하면 되는 것 아니냐고 생각할 것이다. 그러나 이렇게 리스트를 복사한다면 list2의 요소를 변경했을 때 list1의 요소도 변경된다. 확인해보자. # 일차원 배열 list1 = [1, 2, 3, 4] list2 = list1 list2[0] = 0 print(list1.. 2022. 3. 25.
[JavaScript] forEach와 map의 차이 서론 forEach와 map은 배열에 사용할 수 있는 함수이다. 공통점은 callback함수가 돌면서 배열 내 각 요소에 접근하여 주어진 함수를 실행한다는 것인데 여기까지만 보면 둘은 다를 바가 없어 보인다. 그럼 동일한 일을 하는 함수가 둘일 리 없지 않은가. 이 둘의 차이를 알아보자. forEach() The forEach() method executes a provided function once for each array element. MDN forEach 공식 문서에 따르면, forEach()는 배열 요소 각각에 접근해서, 주어진 함수를 실행한다고 한다. arr = [1, 2, 3, 4, 5]; arr.forEach((num) => console.log(num)); forEach()는 배열을 .. 2021. 12. 27.
[Python] input과 sys.stdin.readline의 차이 파이썬으로 백준 문제를 풀어본 사람이라면 가끔씩 많은 입력을 받는 문제를 풀 때 시간과 발생한 적이 있을 것이다.  이럴 때 input 대신 sys.stdin.readline을 사용하면 시간이 초과되지 않는다. 과연 이것은 무엇이길래 입력받는 속도를 향상할 수 있는 걸까? 답을 찾기 위해 우선 input과 sys.stdin.readline의 동작에 대해서 알아보도록 하자.  input공식 문서에 따르면, input 함수는:1. 입력으로 들어오는 한 줄을 읽고,2. 문자열로 변환하고,3. 개행 문자를 제거한 뒤,4. 값을 반환하는 형식으로 동작한다고 한다.  입력 하나를 받는데 4단계의 과정을 거치는 것이다.sys.stdin.readline우선 sys와 stdin의 의미를 알아보도록 하자.syssys는 시.. 2021. 12. 10.
[Python] 삼항 연산자 문법 참일 때 값 if 조건 else 거짓일 때 값 위의 코드와 아래 코드는 동일한 의미이다. 간단한 if-else 코드를 한 줄로 줄여주니 코드가 간결해진다. if 조건: 참일 때 값 else: 거짓일 때 값 응용 삼항 연산자를 중첩하여 사용할 수 있다. 참일 때 값 if 조건 else 참일 때 값 if 조건 else 거짓일 때 풀어서 쓰자면 아래와 같다. if 조건: 참일 때 값 else: if 조건: 참일 때 값 else: 거짓일 때 값 조건이 적다면 삼항을 중첩하여 써도 괜찮지만, 아니라면 코드의 가독성이 떨어지기에 안 사용하는 것이 좋다고 생각한다. 참고: 1. https://wikidocs.net/20701 04. 삼항 연산자(Ternary operators) ### 1. 삼항 연산자(Tern.. 2021. 10. 22.
[Python] 사칙연산 연산자 연산자 해설 + 더하기 - 빼기 / 나누기 * 곱하기 // 몫 % 나머지 ** 제곱 참고: 1. https://includestdio.tistory.com/16 [Python] 사칙연산을 위한 7가지 연산자 1. 파이썬(Python) 사칙연산을 위한 7가지 연산자 + 덧셈 - 뺄셈 * 곱하기 ** 거듭 제곱 / 나누기 // 나누기 연산 후 소수점 이하의 수를 버리고, 정수 부분의 수만 구함 % 나누기 연산 후 몫이 아닌 나 includestdio.tistory.com 2. https://wikidocs.net/1153 4.1. 산술 연산자 ### 산술 연산자 (Arithmetic Operators): a = 10, b = 20, c = 3 이라 가정한다. | Operator | Description | .. 2021. 10. 22.
반응형