본문 바로가기

반응형

분류 전체보기

(429)
윈도우 배치 스크립트(Batch Script) - IF Syntax if condition do 조건(condition)이 참(true)인 경우 do를 실행 한다. Integer 변수 Example @echo off SET /A a = 5 SET /A b = 10 SET /A c = %a% + %b% if %c% == 15 echo "c는 15" if %c% == 10 echo "c는 10" Output c는 15 String 변수 Example @echo off SET str1 = String1 SET str2 = String2 if %str1% = String1 echo "str1은 String1" if %str2% = String3 echo "str2는 String3" Output str1은 String1 부록 1. 같이 읽으면 좋은 글 윈도우 배치 스..
윈도우 배치 스크립트(Batch Script) - 주석(Comment) Rem 문을 사용한 주석 Syntax Rem comment Example @echo off Rem 이 줄은 주석 입니다 set message=Hello World echo %message% Output Hello World :: 문을 사용한 주석 Syntax :: comment Example @echo off :: 이 줄은 주석 입니다 set message=Hello World echo %message% Output Hello World Note 주석을 너무 많이 달면 스크립트에 성능 저하가 올 수 있음 주석은 해당 라인은 시작 부터 시작해야 한다. 앞에 공백이 있거나하면 주석으로 인식하지 않는다. 부록 1. 같이 읽으면 좋은 글 윈도우 배치 스크립트(Batch Script) - IF 윈도우 배치 스크립..
Lex & Yacc 컴파일 NOTE - 유입 키워드를 보고 컴파일러를 만들기 위해 이 페이지를 들리시는 분들이 많다는 것을 알게 되었습니다. 이 페이지는 Lex & Yacc를 컴파일 하는 방법에 대해 다루고 있습니다. Lex & Yacc를 이용해 컴파일러를 만들고 싶으신 분들은 Lex & Yacc Tutorial로 가셔야 합니다. 학교에서 배울 때는 분명히 Lex & Yacc로 배웠고, 책 제목도 그렇지만 실제 사용하는 바이너리 이름은 flex와 bison입니다. 이번 포스팅에서는 lex & yacc(flex & bison)을 컴파일 하는 방법에 대해 알아 보도록 하겠습니다. lex & yacc 를 이용해 컴파일러를 만드는 방법은 [진리는어디에] - Lex & Yacc Tutorial을 보시면 됩니다. 설명을 위해 lex 파일을 ..
윈도우 배치 스크립트(Batch Script) - 변수 배치 스크립트에는 실행 시 파라메터로 넘어 오는 변수와 'set' 명령에 의해 정의 되는 두 가지 종류의 변수 타입이 있다. 실행 인자 변수 배치 파일 실행 인자로 넘어오는 변수는 %1, %2, %3 과 같이 %와 인자 순서를 이용하여 접근 가능하다. Example @echo off echo %1 echo %2 echo %3 Output 1 2 3 SET 명령어에 의해 정의 되는 변수 문법 set 변수명=초기값 Note - 문자열을 저장한다면 '변수명=' 과 같이 붙여 써야 한다. 변수명과 '=' 사이에 공백이 있으면 문자열을 제대로 인식하지 못한다. Example @echo off SET message=Hello World echo %message% 위 예제에서 message가 set 명령어에 의해 정..
[C++20] 코루틴(Coroutine) - done() [진리는어디에] - [C++20] 코루틴(Coroutine) [진리는어디에] - [C++20] 코루틴(Coroutine) - co_await [진리는어디에] - [C++20] 코루틴(Coroutine) - co_yield 이전 강의들을 톻해 C++20에서 코루틴을 생성하는 법, 코루틴을 중단하고 호출자로 돌아 오는 방법, 코루틴에서 호출자로 값을 리턴하는 방법을 알아 보았습니다. 이번 장에서는 일정한 범위의 숫자를 생성해내는 Range라는 코루틴 클래스를 만들어 보면서 코루틴의 끝을 탐지하는 방법과, Range 클래스에 iterator를 추가하여 일반 stl 컨테이너 처럼 ranged for를 이용할수 있도록 해보겠습니다 간략한 설명을 위해 예제 코드는 최대한으로 줄이고 있으나 본 포스트의 맨 아래에 전..
[C++20] 코루틴(Coroutine) - co_yield 이번 강의는 [C++20] 코루틴(Coroutine)에 이어지는 내용 입니다. 이번 강의를 읽으시기 전에 이전 포스팅을 먼저 읽어 보시길 추천 드립니다. co_yield 코루틴을 중단(suspend)하고 호출자에게 돌아갈 때, 호출자에게 값을 넘기고 싶다면 co_await대신 co_yield를 사용 하면 됩니다. Generator foo() { //co_await std::suspend_always{}; co_yield 10; } 하지만 컴파일러는 'co_yield' 구문을 만나면 내부적으로 다음과 같은 코드를 생성합니다. Generator foo() { Generator::promise_type promise; // ...코드 생략... // co_yield 10; co_await promise.yie..
감자 농사 #1주차 2년전 부터 조그마한 텃밭 한고랑을 임대해 농사를 짓고 있습니다. 첫해는 상추 같은 각종 쌈채소들을 심었다가 감당하지 못할 수확량에 행복한 비명을 질렀었습니다. 작년에는 자신감을 가지고 호기롭게 호박과 토마토 농사에 도전했다가 보기 좋게 망했구요. 올해는 그나마 키우기 쉽다는 방울 토마토와 처음이라 긴장되긴 하지만 감자를 심어 보기로하고 쿠ㅍ..ㅏ응에서 씨감자 4kg을 14,000원에 샀습니다(많지 않을까 생각 했지만 최소 판매 단위가 4kg..ㅎㄷㄷ). 싱싱한 강원도 수미감자 10kg이 13,900원이니 최소한 10kg이상 수확하지 못하면, 밭 임대료와 들어가는 노동력에..음..오히려 사먹느니만 못하겠네요. 본격적으로 심기 전에 인터넷으로 감자 재배 방법에 대해서 검색 해보았습니다. 재배 방법 감자는 ..
[C/C++] scanf시 엔터 무시 하기 C/C++에서 표준 입력을 받아야 하는 경우 엔터가 입력으로 받아져, 정작 받아야 할 입력을 건너 뛰는 경우가 있습니다. 다음 예를 살펴 볼까요 : char ch1, ch2; printf("첫번째 문자를 입력하시오"); scanf("%c", &ch1); printf("두번째 문자를 입력하시오"); scanf("%c", &ch2); 위와 같이 코딩을 한다면 첫번째 문자를 입력하고 엔터를 치게 되면, 입력 버퍼에 엔터 문자가 남아있게 되어 두번째 입력에서 엔터를 자동적으로 입력을 받아 버리기에 정상적인 입출력이 이루어지지 않습니다. 위 문제를 해결하기 위해 fflush(FILE* fp) 함수와 잘 알려지지 않은 방법으로 "%*c" 포멧을 사용할 수 있습니다. fflush는 입력 버퍼 버퍼를 비워버리고, %*..
[Python] Python 3 struct.pack(): char format requires a bytes object of length 1 예전에 Python 2.x 버전에서 만들어 사용했던 프로그램을 최근에 다시 사용해야 하는 일이 있었습니다. 오랜만의 파이썬 작업이었던지라 환경을 새로 세팅하는 김에 3.x 버전의 파이썬을 설치하고 실행..했습니다만?? 다음과 같은 오류가 나옵니다. Python 3 struct.pack(): char format requires a bytes object of length 1 이게 무슨 말인가? "char 형식은 1 바이트 길이의 객체가 필요합니다"? 아니 이미 pack()함수의 인자로 넘어가는 것은 1byte가 아닐 수 없는 영문 글자 한 글자 인데요. data = 'c' struct.pack('c', data) 그래서 찾아 보았습니다..뭐가 문제인지. stackoverflow.com/questions/..
[C++20] 컴파일 g++ g++ 버전 8부터 C++20의 컴파일이 가능합니다. C++20을 컴파일 하기 위해서는 커맨드라인에 아래 파라메터를 추가 합니다. g++ -std=c++20 만일 g++에서 코루틴을 사용한다면 -fcoroutines 옵션을 추가 해야 합니다. g++ -std=c++20 -fcoroutines Visual Studio 2019 비주얼 스튜디오는 16.3버전 이상 부터 C++20을 지원합니다. C++20을 활성화 시키기 위해서는 아래 두 가지 방법이 가능합니다. 1. '프로젝트 속성 > 일반 > C++ 언어 표준 > 미리보기 - 최신 C++ 초안의 기능(/std:c++latest)' 선택 2. '프로젝트 속성 > C/C++ > 명령줄'에 /std:c++latest 추가 Visual Studio에서 C..

반응형