안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "C언어 sizeof(자료형) 간단정리" 입니다. #include main(){ int arr[]={1,2,3,4,5}; printf("%d\n", sizeof(arr)); printf("%d\n", sizeof(int[5])); printf("%d\n", sizeof(int)); printf("%d\n", sizeof(arr[0])); } 위와같은 배열을 출력하면 값이 어떻게 될까? 답은 아래와 같다. 우선 3번째 int는 당연히 int 형 자료형의 크기를 말하는 것이니 4바이트가 찍힌다. arr[0] 도 자료형은 int이다. int형 배열의 요소이니 어찌보면 너무 당연하다. 배열에서 arr의 이름은 주소값을 가지고 있는 변수(포인터)라는 것은 C언..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "c언어 버퍼 비우기 (%*c)"입니다. #include int main(void){ // FILE *fp = stdin; int Age = 0; printf("나이를 입력:"); scanf("%d%*c", &Age); char Name[12] ={0}; printf("이름을 입력:"); gets(Name); printf("%d%s", Age, Name); } C언어에서 scanf 함수는 개행 문자를 같이 저장합니다. 따라서, scanf 함수 이후에 gets() 같은 함수를 쓰게 되면 버퍼에 남아있는 개행 문자가 scanf 값으로 들어가서 새로운 값을 못 받게 됩니다. 이럴 때 보통 ffluash(stdin)을 통해 버퍼를 비워버리는 방법을 쓰는데요. ..
#include #include struct Info { char *name; char kind[14]; int age; }; main() { Info a, b; a.name = "Kim"; strcpy(a.kind, "Middle"); a.age = 16; b = a; *b.name = 'C'; // 문자열 포인터는 포인터이므로 참조하는 구조체 전체 값이 변경됨 b.age += 10; printf("%s %s %d\n", a.name, a.kind, a.age); } 안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[C언어] 구조체의 문자열포인터는 변경시 참조하는 모든 값이 변경됨" 입니다. 위와 같은 코드에서, b 구조체의 name 값 변경은 a구조체에도 영향을 준다. 왜냐하면, name 구조..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "비행기 귀 통증 해결법"입니다. 비행기를 장시간 탈 경우 귀가 먹먹해지거나 통증을 느끼는 경우가 있습니다. 이는 비행기의 고도가 갑자기 높아지거나 낮아질 때 기압 차이로 인해 이관(유스타키오관)이 막히거나 오작동하기 때문입니다. 따라서 비행 중 고도가 갑자기 급격히 변하거나, 비행기 이착륙 시, 혹은 SRT나 KTX처럼 빠른 기차를 타고 터널로 진입할 때 이런 증상을 느낄 수 있습니다. 혹은 엘리베이터가 내려갈 때나 물속에서 잠수할 때 나타날 수 있습니다. 항공성 중이염 주요 증상 - 갑자기 귀 통증이 발생하고 지속됨 - 다른 사람에게 말할 때 본인의 목소리가 울려서 들림 - 귀의 답답함을 느낌 - 비행기 착력 후에도 귀가 먹먹하고 통증이 지속되는 증..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "2022년 6월 주택통계 자료정리" 입니다. 자료 출처는 국토교통부 공식홈페이지 입니다. 전체 거래량이 20%정도 감소했습니다. 문재인정부에서의 세금증가로 거래가 많이 위축된 가운데, 최근 금리인상 등의 이슈로 인해 구매하려는 사람들의 생각도 많이 줄어든거 같습니다. 건설 인허가 실적은 증가하고 있습니다. 월별 전국 주택 거래량을 봐도 확실히 2020, 2021년 에 비해 많이 줄어든 것을 볼수 있습니다. 2021은 연이은 규제로 인해 꾸준히 거래량이 급감했다는 것을 볼 수 있습니다. 주택 유형별로 살펴봐도 아파트뿐만 아니라, 아파트 이외의 부동산 거래에 있어도 뚜렷한 감소세를 보이고 있습니다. 전월세 거래량은 2020년, 2021년 대비 아주 비중..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "우영우 명대사"입니다. 요즘 넷플릭스의 우영우 드라마(Extraordinary Attorney Woo)가 핫합니다. 이상하게 드라마를 보고 있다 보면 다양한 생각과 감정이 생겨나는 작품이더라고요. 드라마를 보다가 인상적이었던 대사를 한번 공유해 봅니다. 우영우 1화 대사 제 이름은 똑바로 읽어도 거꾸로 읽어도 우영 우입니다. 기러기, 토마토, 스위스, 인도인, 별똥별, 우영우.... 역삼역? 이 사건은 재미있습니다. 제가 좋아하는 고래 퀴즈 같아요. 몸무게가 22톤인 암컷 향고래가 500kg에 달하는 대왕 오징어를 먹고 6시간 뒤 1.3톤짜리 알을 낳았다면 이 암컷 향고래의 몸무게는 얼마일까요? 정답은 ‘고래는 알을 낳을 수 없다’입니다. 고래는 포유..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "자폐스펙트럼 증상"입니다. 요즘 "우영우"라는 인물이 인기가 참 많은 거 같습니다. 넷플릭스에서 동남아와 일본쪽으로 참 인기가 많은거 같아요. 한국에 대해 적대적이기로는 둘째가라면 서러운 일본도 넷플릭스 2위를 기록하고 있다고 합니다. 참고로 1위는 한국의 또 다른 인기 드라마였던 이태원 클래스라고 하니 아니러니입니다. 😋😋 우영우의 인기가 높아지면서 자연스럽게 사람들에게 "자폐 스펙트럼"에 대한 관심도 증가하고 있습니다. 드라마를 통해 자폐가 있는 장애인들에 대한 인식과 이해가 높아질 수 있었으면 좋겠습니다. 그럼 자폐스펙트럼에 대해 몇 가지를 알아보도록 하겠습니다. 자폐 스펙트럼이란? 원인은? 자폐 스펙트럼이라는 용어 자체가 말하듯이, 자폐스펙트럼..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "[C언어] 문자열 포인터와 문자열의 차이점"입니다. 문자열을 보관하는 방법은 두 가지이다. 문자열 포인터를 저장하는 방식과 재열에 저장하는 방식이다. char*na = "Mega"에서 Mega는 문자열 상수가 보관되는 메모리의 데이터 영역에 보관된다. 즉, 값을 바꾸지 못한다. char na [20] = "Mega"에서 Mega는 스택 영역에 저장된다. 따라서 값을 바꿀 수 있다. 위 두 가지 경우의 출력 결과를 살펴보자. 데이터 영역에 저장된 Mega는 getStr() 함수가 끝나더라도 사라지지 않고 값이 남아 있어 Mega가 정상 출력되었다. 반면 문자열에 저장된 Mega는 getStr() 함수가 끝나면 사라지는 stack의 값이기 때문에 리턴되는..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "ipython 소스파일 로드"입니다. 파이썬 이용할 때 주로 vscode만 쓰다가 최근에 리눅스를 공부하면서 리눅스용 파이썬 프로그램 중 ipython3을 애용하고 있다. ipython는 jupyter notebook처럼 라인 단위로 실행결과를 볼 수있고, 출력시 print문을 따로 써주지 않아도 바로 결과를 볼수 있어서 편하다. 개인적으로 jupyternotebook 보다 좋다고 생각하는 점은 리눅스 명령어를 ipython 내부에서 쓸 수 있다는 점이다. (물론 안 되는 명령어가 훨씬 많다.) 단, 스크립트 단위로 코딩이 필요할 경우에는 스크립트 편집기를 이용하는 게 더 좋을 수도 있겠다. iptyhon에서 스크립트 파일을 불러오고 저장하는 방법을 ..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "딕셔너리의 저장순서와 OrderedDict의 활용" 입니다. 일반적인 딕셔너리는 위와같이 내용의 순서가 달라도 같은 값으로 인식합니다. 따라서 Python 버전 3.7이전에는 딕셔너리를 for문으로 돌리면 키값이 랜덤하게 나왔다. 3.7이후부터는 개선이 되어서, 저장된 차례대로 값이 나온다. 3.7 버전이전에는 이문제 때문에 collections 에 있는 OrderedDict 객체를 활용했다. 만약 3.7이전 버전의 파이썬을 활용하고 있다면 OrderedDict로 딕셔너리를 만들면 3.7버전 이후 파이썬처럼 값을 차례로 출력받을수 있다. 그런데 이런 경우가 아니더라도, 순서가 다른 두 객체를 다른것으로 인식해야 할 경우에도 OrderedDict을 활..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[파이썬] 언패킹시 필요없는 값은 _ 로 처리" 입니다. 파이썬에서 언패킹을 할때, 언패킹 대상이 되는 자료와 같은 형태로 변수를 늘어놓아야 한다. 이때, 필요없는 값은 관례적으로 _ 로 표시하면 좋다. _도 변수의 하나인데, 쓰지 않은 변수라는 의미로 사용한다.
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[리눅스] 500 Illegal port Error 발생시 대처법(ftp)" 입니다. ftp 사용중 ftp 내부 파일을 보기 위해 ls, dir 명령어를 쳤는데, 위와 같이 500 illegal port pass command 라는 에러가 발생했다. 고치는 법은 매우 간단하다. Passive mode를 켜주면 된다. 방법은 pass를 ftp 접속 중 커맨드에 친다. passive mode on 이 나온후 다시 dir을 쳐보니 잘 나온다. 끝.
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "딕셔너리도 컴프리헨션이 가능하다." 입니다. 나는 파이썬의 여러 기능중에 컴프리헨션 기능을 좋아한다. 반복문과 조건문을 많은 경우에 아주 짧은 문장으로 축약할 수 있기 때문이다. 파이썬이 C언어에 비해서 속도에 장점이 있는것도 아니고, 코딩시에 간결한 문장이 장점이라면, 컴프리헨션은 그 장점을 극대화 해주는 기능이라고 생각한다. 그동안 리스트만 컴프리헨션이 가능한 줄 알았는데, 딕셔너리도 가능하다. 리스트 갈호 [] 대신에 딕셔너리 {} 갈호를 적어주면 된다. 그렇다고 튜플 컴프리헨션 한다고 ()로 컴프리헨션 하면 안된다. ()은 제너레이터를 만든다. 위와같이 d1에 간단한 딕셔너리를 하나 만들어주고, d2와 같이 만들면 된다. 딕셔너리의 키,val..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[파이썬] yield from 문법 (python 3.3 이후 적용)" 입니다. 파이썬에서 메모리를 절약할 수 있는 좋은 방법중 하나가 제너레이터를 활용하는 것입니다. 제너레이터는 보통 yield 키워드를 통해 확인할 수 있는데, s에 리스트나 튜플같은 이터레이터 객체를 받아서 값을 하나씩 yield 시킵니다. 위와 같이 써도 되지만, 아래와 같이 간단하게 작성할 수도 있습니다. yield from ns 라고 하면 for문 부분을 대신하게 됩니다. 간략하고 좋네요!!
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "iterable 객체와 iterator 구분" 입니다. 파이썬에서 iter함수가 반환하는 객체를 iterator 객체라고 하고 iterator 객체를 얻을수 있는 리스트,튜플 같은 객체를 iterable객체라고 합니다. Iterable 객체 -- iter 함수에 인자로 전달 가능한 객체 Iterator 객체 -- iter 함수가 생성해서 반환하는 객체 이렇게만 말하면 뭔개소리지 싶다.. 예를 들어 r3라는 변수에 apple이라는 문자열을 담고 r3 를 iter함수에 인수로 넣어보면 이터레이터가 16진수 메모리 주소에 형성되는 것을 볼 수 있다. 이 이터레이터의 이름은 str_iterator 이다. 마찬가지로 리스트나 튜플 또한 iter 함수의 인자로..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "[c언어] strcat 사용 시 주의할 점"입니다. #include #include #include main(){ char *arr[] = {"pascal","delphi","basic","python"}; int h; char *pa; h=0; for(int i=0; i
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[c언어] strcpy 와 포인터 활용시 주의할점" 입니다. #include #include #include char * removeSpace(char *ps); main() { char str[] = "park mun kim choe lee "; char *pa; pa = removeSpace(str); puts(pa); delete[] pa; } char * removeSpace(char *ps){ char buff[50]={0}; char *pb = buff; int sw =0; while(*ps){ if (*ps != ' '){ *pb = *ps; pb++; sw = 1; } if (*ps == ' ' && sw == 1) { *pb = ',..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "동적할당 활용시 주의할점 (포인터보단 인덱스)" 입니다. #include #include #include char * upper(char *ps); main(){ char str[] = "apple Banana Grape"; char *pa; pa = upper(str); puts(pa); free(pa); } char * upper(char *ps){ int n; char *pa; pa = (char*)malloc(sizeof(ps)+1); // 동적할당으로 받은 포인터 값을 계속 증가시켜 그 값을 리턴하면 안된다. pa는 보존해두는 방법을 써야 한다.(인덱스 활용) n=0; while(*ps){ if (*ps >= 'a' && *ps = 'a' ..
오늘 포스팅 주제는 "포인터와 배열을 같이 쓸때 주의 할점" 임. #include #include int * getOdd(int *parr, int n, int *oddcnt); main() { int arr[10] = {4,5,1,2,5,6,7,8,10,13}; int *pa, n; pa = getOdd(arr, 10, &n); for (int i=0; i
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "리눅스 변수 사용 주의할점~!" 입니다. 해당 포스팅은 MIT 대학의 opensource 강의를 참고 하였음을 알려드립니다. MIT linux 무료강의 echo 사용시 주의할점 리눅스 환경에서 foo=bar 라고 변수를 선언하면, echo $변수명 을 통해 변수의 내용을 뽑아 낼수 있다. 주의 할점은 쌍따옴표를 쓰면 변수값을 그래도 받아오지만 홑따옴표를 쓰면 $를 문자 그대로 인식해 버린다. 이게 헷갈리는 이유는 그냥 문자열을 echo로 출력할때는 "" 쌍따옴표와 홑따옴표 모두 동작을 하기 때문이다. 위와 같이 둘다 동작한다. 파이썬에서도 ""와 ''를 혼용해서 사용하기 때문에 혼동할 수 있다. C언어에서도 "" 와 ''은 다르게 취급하기 때문에 가..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "c언어 0, '0' , '\0' 의 차이는?" 입니다. #include #include main() { char be[10] = "123456"; *be = 'A'; be[1] = 'B'; *(be+2) ='C'; be[3] = 0 ; puts(be); } 위와 같은 문자열배열이 있다고 하면, 배열의 값 각각은 위와 같이 변경을 해줄수 있다. 이때 puts 함수는 문자열 배열의 첫째 주소값(포인터)을 매개변수로 받는다. 출력해야할 개수를 인자로 넘겨주지 않아도 출력이 가능한 이유는 문자열 배열의 끝에 0이 들어가기 때문이다. 이때 0은 숫자 0을 의미한다. 따라서 위와같이 be[3] 에 0을 넣어주면 출력은 ABC까지만 되고 끝이 난다. 만약 숫자 ..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "linux 리눅스 redirection() 기능 정리"입니다. 먼저 연습용 파일을 하나 만든다. cat > abc.txt 안녕하세요. 연습용 파일입니다. 끝 abc.txt라는 파일을 하나 만들었다. ctrl(Zor D)를 누르면 파일이 저장된다. 이 파일을 cat 명령어로 출력해서 보면 당연히 터미널에 출력된다. 이때 터미널은 위 그림에서 모 티너 모양에 해당하는 stdout 1번이다. 이 파일을 파일을 입력받을 때 0번(키보드) 대신에 입력의 방향으로 바꾸어 보자. cat > bcd 0 bcd ;;; bcd라는 파일을 만들어라 0 < abc.txt ;;; 입력은 abc.txt 파일의 내용을 받는다. 즉 결과..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "linux Nesting Commnd 명령어 사용법"입니다. $ echo "Today is $(명령어)" echo 명령어로 오늘 날짜를 출력할 때 그냥 문자로 출력을 먼저 해보겠습니다. echo "Today is Date" Today is Date 위와 같이 쓰면 그냥 문자 그대로 출력이 됩니다. Date 부분에 명령어의 결과를 넣고 싶으면 $(date) 형식으로 써주면 echo 문자가 출력되기 전에 $ 부분이 먼저 치환된다. echo "Today is $(date)" Today is Sat 25 Jun 2022 12:38:53 AM UTC 혹은 $ 표시 대신에 ``(백 틱 >>> 탭키 위에 있음)을 써도 같은 결과를 볼 수 있다. echo "Toda..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "리눅스 linux bash셸 메타 문자 의미 제거"입니다. \ (메타 문자 하나의 의미 제거) 리눅스에서 *는 모든 문자를 의미하는 메타 문자입니다. 예를 들어 d로 시작하는 모든 파일을 보고 싶다면, $echo d* 같이 쓰면 d로 시작하는 파일을 모두 찾아줍니다. 따라서 메타 문자가 들어가는 파일명으로 사용하고 싶다면 백 슬러쉬 하나를 사용해주면 됩니다. 예를 들어 파일명이 ***인 파일을 만들고 싶다면 touch \*\*\* 이런 식으로 만들어 주어야 합니다. 큰따옴표 (" ") , 작은따옴표(' ') 큰따옴표나 작은따옴표를 쓰면 메타 문자의 의미를 제거합니다. 즉 따옴표 내에 메타 문자($, ``(백 틱) 은 제외)를 출력해줄 때는 따옴표 내에..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "bash shell 변수선언, 확인, 제거법" 입니다. $ varname=value ;;;; 변수 만들기 - 변수명은 문자나, _로 시작해야 함. 숫자로 시작하면 안됨 - a=20 (ok) - a = 20 ( error) >>> 공백을 넣으면 에러가 발생한다. $ echo $변수명 ;;; 변수 확인하기 여러가지 변수를 한번에 확인하는 것도 가능하다. echo 뒤에 $변수명 $변수명 이런식으로 연결해서 써주면 된다. 중간에 ,를 써주면 , 도 같이 echo 된다. $ set ;;; 시스템에 있는 모든 변수 보기 nl 명령어로 set | nl로 번호를 붙여보았더니,. 2051줄까지 생성된다... 어마 무시하게 많다. $ unset varname ;; 변..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "비전공자 IT공부 학습 로드맵" 입니다. 따배런에 학습로드맵과 책소개가 있어 정리해 둔다. 공부방법 - notion에 파트별로 정리 + 모르는용어 서핑으로 첨부정리 - 모르는사람에게 이해시킬수 있어야 제대로 아는 것이다. 인프라엔지니어의 교과서
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "리눅스 쉘 종류 " 입니다. 요즘에 리눅스를 독학으로 공부하고 있다. 유튜브에 양주종 강사님 강의가 좋아서 기본 명령어 시리즈를 정주행했는데, 배우다 보니 셸 프로그래밍에 관심이 생겨, 관련 강의를 찾아보던중 이성미 강사님 강의도 들어보게 되었다. 리눅스 쉘이 생각보다 종류가 아주 다양하다. 기본적으로 만든 사람의 이름이나, 적용기술의 이름을 따서 이름을 지었다. 내가 자주사용하는 bash shell이 Bourne-again shell의 약자라는 사실도 알게 되었다. $ cat /etc/shells ;; 사용가능한 셸의 목록을 볼 수 있는 명령어 /bin 아래의 sh 가 바로 가장 먼저 만들어진 bourn shell이다. 내가 자주쓰는 bash 쉘 ..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "goto label 활용법" 입니다. 소스코드 출처는 MIT의 C, C++ 오픈코스 강좌의 PDF 파일을 활용했습니다. #define _CRT_SECURE_NO_WARNINGS #include void foo(void); main() { foo(); } void foo(void){ for (int i =0; i
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "f-string, format함수에서의 튜플 unpacking 정리"입니다. 파이썬에서는 문자열을 포메팅하는 몇 가지 방법들이 있습니다. 그중에서 제가 가장 자주 사용하는 방법은 f-string입니다. 예를 들어서, a = 'hi welcome to python world' print(f'{a}
DB 열기 .open db 이름 테이블 생성 CREATE TABLE 테이블이름 ( COLUMN이름 데이터타입 , .....) PK(PRIMARY KEY), AUTOINCREMENT 설정 COLUMN_NAME INTEGER(데이터타입) PRIMARY KEY AUTOINCREMENT 주의!!! MY SQL에서는 AUTO_INCREMENT 주의!!! INTEGER 은 풀네임 대신 INT로 작성하면 SQLITE에서는 에러 나온다. 테이블 구조 확인 .SCHEMA TABLE이름 테이블 목록 확인 .TABLES 전체 테이블정보 .SCHEMA SQLITE_MASTER 종료 .QUIT 자료추가 1) INSERT INTO TABLE이름 (COLUMN이름 , ....) VALUES (VALUE1, VALUE2,....),..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.