반응형

【 C 환경설정 】 VS code에서 Turboc.h 사용하기 / 한글 표시하기(터미널 창 폰트 깨짐 해결)

 

 안녕하세요~오늘은 C언어 기초 공부를 하다 보면, 터보C 콘솔용 함수인 Turboc.h 헤더 파일을 사용할 때가 생길 수 있는데요, 이럴 때 헤더 파일을 추가하는 방법과 VScode IDE에서 한글이 들어간 코드를 실행 시 터미널(Terminal) 창에서 한글이 깨져 나오는 현상에 대해 해결하는 내용으로 다루어 볼게요. 

 

 

▶ #1  :  요즘 콘솔용 터보C 함수는 잘 사용하지 않지만,  C/C++ 코딩 기초 학습할 때(혼자 연구하는 C/C++, 김상형 저 ) 등 필요할 때가 생기는데요, 대체할 수 있는 다른 함수를 찾는 것보다 콘솔용 함수를 풍부하게 담고 있는 Turboc.h 헤더 파일을 그냥 하나 추가해서 사용해보는 것이 훨씬 편하다고 생각해요.

아래 이미지 처럼, Turboc.h. 헤더는 기본으로 추가되어 있지 않아 에러를 발생시키게 됩니다.  

( 아래의 이미지 들을 클릭하면 확대됩니다)

 

 

 

▶ #2 :   첨부된 Turboc.h 헤더 파일을 다운로드하여 MinGW가 설치된 폴더의 include 폴더에 복사해 넣으세요.

  (경로 : C:\MinGW\include  )

 

헤더 파일 다운로드 받기 : 

Turboc.h
0.00MB

 

▶ #3 

  그럼, VScode IDE에서 코드를 다시 빌드&실행시켜봅니다. 

 아래 이미지 처럼, Turboc.h 헤더가 필요한  random( ) 함수 사용도 문제없이 잘 작동되는 것을 볼 수 있는데요,  문제는 한글이 깨져 나오는 문제가 생깁니다. 

 

▶ #4 :   문제의 원인은 터미널(Terminal)등에 설정된 언어 인코딩 설정이 기본 UTF-8로 되어 있어, EUC-KR 설정이 필요한 한글이 깨져 나온 증상입니다. 

 따라서 인코딩을 EUC-KR로 변경해 주면 해결되는데요,  VScode IDE툴의 하단에 보면 파란색 상태바(Status Bar)에서 쉽게 변경 가능합니다.  하지만 이미지에 보이는 것 처럼 상태바를 닫아 버린 경우 상태바를 다시 불러와야 합니다.

 상단 메뉴로 가서,  'View 》 Apearence 》 Show Status Bar'를 체크하세요.

 

그러면, 화면 하단에 이렇게 파란색의 'Status Bar'가 나타납니다.  Status Bar(상태바)에 마우스 우클릭해서, 
'Editor Encoding' 옵션을 체크해주세요  

 그리고 다시,  'UTF-8' 이 부분을 마우스로 클릭하면, 화면 상단에 메뉴가 나오는데요, 
    'Reopen with Encoding'을 클릭하세요.

 그러면, 아래 화면처럼, 여러 나라의 인코딩 목록이 나오는데요,  그중에서 Korean (EUC-KR)을 선택하면 됩니다.

 

. 하지만 그 순간 갑자기 기존 한글이 깨져 보이는데요, 파일을 닫고 다시 열거나 ,
뒤로 가기(ctrl+z) 눌러  내용을 미리 복사해 놓고 다시 진행해 보면, 쉽게 해결이 됩니다.

 

그리고 다시 빌드&실행해보면,  아래처럼 한글이 깨지지 않고 터미널 창을 통해 멋지게 표시되는 것을 볼 수 있습니다. ^^;

 

이렇게 한글을 표시할 수 있습니다.  하지만 이 방법은 해당 코드별로 필요할 때 마다 각각 조치해줘야 하는 번거로움이 있는 방법이구요,  툴 자체적으로 지속적으로 한글(EUC-KR) 코드로 설정을 하려면, 아래 이미지 처럼 설정을 해주면 됩니다. 

 File 》  Preferences 》 Settings   설정으로 진입한 다음

 

 

검색창에서 ' utf ' 라고 입력하면, Files: Encoding 항목이 보이며,  기존 utf-8 로 선택되어 있는 항목을 euckr - korea (한국)으로 선택해주면,   이후로는 vs-code의 기본 언어가 euc-kr(한글)로 인코딩 설정이 됩니다. 

 

 그렇게 어려운 설정은 아니지만,  이제 막 코딩 기초 학습을 시작하시거나 VScode 툴도 처음 사용하시는 분에게는 정말 필요한 팁이어서 포스팅하게 되었습니다.

 아울러,  영상을 통해 쉽게 따라 해 보실 수 있도록 영상도 제작하였으니,  영상도 한번 확인해 보세요~

 

 

 

< 영상 자료 유튜브로 보기  >

 

 

반응형
반응형

【 영상버전 】  》》》 VS-Code에서 C / C++ 코딩 환경 구축하기 《《《

 

 VS-code IDE 툴에서 C/C++을 편집하고 빌드, 실행, 디버깅 메시지 까지 받을 수 있도록 환경을 구축하는 방법에 대해 설명드리며,  영상으로 제작하여, 보면서 따라 하실 수 있도록 하였으니 참고해보세요. 

 

 

 

▶ 게시글 설명으로 보기 

2020/07/05 - [Language/C ] - 【 C 환경설정 】 VS code에서 C/C++ 코딩환경 구축하기

 

 

▶ 영상으로 보기  :  아래 화면을 클릭하면 플레이 됩니다...

 

 

 

[ 영상에서 필요한 자료(직접 다운로드)  ]

▶ #1 MinGW 프로그램 다운로드 : https://sourceforge.net/projects/mingw/files/ ( 바로 다운로드 하기 : https://k.kakaocdn.net/dn/cMxWZ6/btqFn1eJeOu/78ZjgVWI2y9bhl6EzqDQ1K/tfile.exe )

▶ #2 tasks.json 파일 받기 : https://k.kakaocdn.net/dn/brDC5p/btqFn0fPsBW/B75rJiBqICBUkxkxMahI21/tfile.txt

▶ #3 Keybinding 파일 받기 : https://k.kakaocdn.net/dn/bHhiX4/btqFnwGB6cs/JjH0MCuwrGT1PavzRu6921/tfile.txt

▶ #4 상세설명 자료 보기 : https://rasino.tistory.com/307  

반응형
반응형

【 C 환경설정 】  VS code에서 C/C++ 코딩 환경 구축하기 

 

 요즘 파이썬(python)이나 자바(JAVA), javascript C# 등등 하이레벨 언어를 학습하던 사람들이 프로그래밍의 근간을 튼튼히 한다거나?  여러 가지 이유로,  다시 C나 C++을 공부하고 있는 사람들이 꽤 있는 것으로 보이는데요?

 그런 와중에, 요즘 대세로 자리 잡은 코딩 IDE 툴인 VS-code (비주얼 스튜디오 코드-Visual Studio Code)를 많이 사용하고 있다 보니, VScode에서 C나 C++의 코드를 돌려보려는 분들이 많은 것 같네요.   물론, Dev++ 툴이나, 비주얼 스튜디오를 설치해도 되겠지만, 이미 VS-Code라는 최고의 IDE 툴을 사용하고 있으니 거기에서 돌리려는 욕구가 일어나는 것은 당연하리라 생각됩니다.  

 

  하지만, 그냥 바로 빌드하거나 실행시킬 수 있는 상태는 아닌데요, 

 이렇게 하기 위해서는 우선 몇 가지 조치를 해줘야 해요, 오늘은 이 부분에 대해 다뤄 볼까 합니다.

그리고 다음 시간에는 터보C 콘솔용 함수 ( #include <Turboc.h> )를 추가해 사용해 방법을 포스팅 해보려고 합니다.

 

》》》 VS-Code에서 C / C++ 코딩 환경 구축하기  《《《

▶ #1  :

VS code를 실행합니다.  아래처럼 Extention 항목에서 " C++ "를 입력하여 검색하세요.

아래 번호 순대로 클릭하여 진행하면 됩니다.

   VS-code는 필요한 확장 프로그램을 IDE 툴 내에서 바로 검색해서 설치해주는 무척 편리한 툴입니다. 

설치가 되었다면 이미지처럼 Uninstall로 나오는데요,  Install 버튼을 클릭하면 즉시 설치가 시작됩니다. 

 

그런데, 확장 프로그램이 설치되었다고 해서 바로 컴파일과 디버깅을 할 수 있는 것은 아닌데요,  C 코드에 대한 인식과, 명령어 코드 등을 인식해서 알기 쉽게 색도 표시해주는 등의  확장 기능만 추가된 상태여서 그렇습니다.

 

▶ #2 :

 윈도에서 C/C++의 컴파일러인  gcc와 g++ 을 설치하기 위해서는 MinGW라는 프로그램을 설치해야 하는데요, 

아래 사이트에 접속해서 (다운로드 파일 직접 링크함) 다운로드하거나 아래 첨부파일을 받으시면 됩니다. 

https://sourceforge.net/projects/mingw/files/ 

 

 《 다운로드 파일 바로 받기 》  →  아래 mingw-get-setup.exe 를 다운로드하여 실행시킵니다. 

mingw-get-setup.exe
0.08MB

 《 MinGW 설치 

다운로드한 파일을 실행시키시고 아래의 순서로 진행해주세요~

 

  아래 MinGW Installation Manager 창에서 아래 항목을 선택 후 우클릭 "Mask for Installation"을 체크하여 설치를 진행하면 되는데요, 아래 4가지를 체크하면 됩니다.(하나는 자동 체크)

 

 msys-base는 자동으로 체크됩니다. 

선택 후 아래 Apply Changes를 클릭하면 선택된 패키지의 설치가 진행됩니다. 

- 설치 완료되면 아래 'Close'를 클릭하고 창을 닫습니다.

 

▶ #3 :

 - 설치 진행이 완료되면,  윈도 시스템에 환경변수를 등록해주어야 하는데요,

  윈도(7, 10 동일) 실행창 검색에서  " 시스템 환경 변수 편집 "을 찾아 들어갑니다(또는 제어판)  

 - 고급 탭에서 환경변수 클릭!

 - 편집을 클릭하여 들어가세요

- 시스템 변수(S) 영역에 아래에 있는 "편집(I)..."을 클릭하여 아래 경로를 추가해주는데요, 

 새로 만들기로 경로를 추가해주거나 →  C:\MinGW\bin  

 기존 경로에 추가해주면 되는데요,   ;C:\MinGW\bin  

주의! 기존 경로에서 추가할 때는 이전의 경로 끝에 ' ; ' 세미콜론을 붙이고 새로운 경로를 입력해야 합니다.

 아래는 '윈도 10'에서의 새로 만들기 경로 추가 화면의 모습입니다. 

 

▶ #4 :

  PATH 경로까지 입력이 되었다면, 커맨드(command) 창을 열어 설치가 제대로 되었는지? 버전 체크를 통해 확인해 볼게요.  

 

- 커맨드 화면에서 gcc -v 라고 입력해보면, 제대로 설치되었다면, 아래처럼 gcc 버전을 확인할 수 있습니다. 

 

 

 -  역시 g++ -v 라고 입력해보면 아래와 같은 버전 확인이 가능합니다. 

 

 

 ▶ #5 :  자!  이제 컴파일러까지 설치 완료되었다면, 다시 VScode를 실행시켜 봅니다.

메뉴에서 새폴더를 만들거나 할 수 있으며,  새 파일을 눌러 HelloWorld.c 를 하나 만들어 간단히 코드를 작성해 봅니다.

VS 코드 처음 시작하시는 분을 위해 잠시 설명드리면, 코드 작성 후 저장을 하지 않았다면, 파일 제목 탭 옆에 하얀 점이 생기는데요,  메뉴에서 저장을 클릭하거나 단축키 ' Ctrl + S '를 누르면 하얀 점이 사라지면서,  창을 닫을 수 있는 X 표시로 바뀌어집니다.

 

 - 그런데요, 코드 작성 후 툴에서 바로 gcc (g++) 컴파일러로 컴파일 작업을 바로 할 수 있는 상태가 아닌데요, 

 그래서 빌드 설정을 진행해야 합니다. 

 아래처럼 메뉴 Terminal 메뉴에서 ' Configure Default Build Task ' 메뉴를 클릭하거나,

 

 단축키 ' Ctrl + Shift + B '를 눌러보면,  아래처럼 빌드 작업을 찾을 수 없다는 메시지와 함께 새로운 빌드 작업을 구성할 수 있도록 메뉴가 하나 나타납니다.    그래서, 새로운 빌드 작업 구성을 위해 ".... 빌드 작업 구성..."을 클릭해 주세요.  

 

이어서, 템플릿에서 tasks.json 파일 만들기를 다시 클릭해 주세요.

그리고 다시 "Others 임의의 외부 명령을 실행하는 예"를 선택합니다. 

그러면, 아래와 같은 기본 설정의 " tasks.json " 파일이 만들어지는데요,  

 기존 내용을 지우고 아래와 같은 내용으로 교체해 주세요. 

일일이 타이핑이 어려우니 첨부해드리는 파일을 다운로드하여 복불복해서 붙여 넣으세요.

{
    "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "presentation": {
        "reveal": "always"
    },
    "tasks": [
        {
            "label": "save and compile for C++",
            "command": "g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "save and compile for C",
            "command": "gcc",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",
            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C",
                "${fileDirname}\\${fileBasenameNoExtension}"
            ]
        },
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "디버거에서 생성된 작업입니다."
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
//            "group": {
//                "kind": "build",
//                "isDefault": true
//            },
            
            "detail": "디버거에서 생성된 작업입니다."
        },
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 활성 파일 빌드",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
              
            // "group": {
            //     "kind": "build",
            //     "isDefault": true
            // },

            "detail": "컴파일러: C:\\MinGW\\bin\\gcc.exe"
        }
    ]
}

tasks.json
0.00MB


이제, 거의 다 되었고요, 단축키 설정만 하면 VS-Code에서도 편하게 C/C++을 컴파일과 디버깅 화면 출력까지 볼 수 있게 됩니다.  

- 아래처럼, VScode에서 단축키 메뉴로 들어갑니다.   

영문메뉴:   File 》 Preferences  》 Keyboard Shortcuts 》

한글메뉴:   파일 》 기본 설정  》 바로 가기 키 》

 

- 그럼,  아래처럼 기존 설정된 단축키 목록들이 나오는데요,  검색창에 Ctrl + Alt 등의 단축키를 타이핑해보면 해당 단축키의 설정 상황을 검색해 볼 수 있습니다. 

 

 

- 그럼, 화면에 표시되는 내용에 " keybindings.json " 글자가 보이면 클릭하시고,  만약 보이지 않는다면, 아래 이미지처럼 우측 상단의 노란색 화살표 부분을 클릭하면,  

 

아래처럼, keybindings.json 파일이 열립니다. 

그럼, 아래와 같은 내용으로 입력해주는데요,   

복불복할 수 있도록 파일을 첨부해드려요.

Keybinding값.txt
0.00MB

그리고  저장 (또는, Ctrl+S 단축키 사용)  합니다. 

그럼, 다시 ' Keyboard ShortCuts ' 탭으로 와서 아래처럼 검색창에 ' Ctrl + alt + '를 입력해보면 

- 빌드 단축키( Ctrl + Alt + C )와 

- 실행(Run) 단축키 (Ctrl + Alt + R)가  사용자 정의 (User)로 설정되어 있는 것을 알 수 있습니다.  

 

 

- 이제, 직전에 작성한 HelloWorld.c 코드로 돌아와서,  빌드 단축키 ( Ctrl + Alt + C)를 눌러보면,  C 또는 C++로 실행시킬 수 있는 메뉴가 바로 나타나는 것을 알 수 있습니다. 

  위 화면처럼 ' save and compile for C ' 가 선택되어 있는 상태에서 마우스 클릭하거나 엔터(Enter) 치면 

아래처럼 터미널(TERMINAL) 창을 통해 빌드된 것을 알 수 있어요. (만약, 에러가 발생한다면, 에러 표시도 됩니다)

 

그리고,  실행(Run) 단축키 (Ctrl + Alt + R)를 눌러보면, 실행시킬 수 있는 'execute' 메뉴가 바로 나타나는 것을 알 수 있습니다. 

 

 클릭! 또는 엔터 치면, 드디어! 아래처럼 터미널 창을 통해 확인이 가능합니다.   ^^

 

이상으로, VS-Code에서 gcc, g++ 컴파일러가 필요한 C 또는 C++ 언어를 코딩하기 위한 VScode 설정에 대해 살펴보았습니다.

 

『 추가 사용법 설명 』 

 【 멀티 언어 코딩 환경(다중 워크스페이스) 설정 방법 】 →

 VS-Code를 사용할 때, 여러 가지 언어에 대한 코딩이 필요할 수 있는데요, 예시로 C/C++ 언어와, Python 언어 두 가지를 VS-Code를 이용하여 두 언어가 섞이지 않고 깔끔하게 사용하는 방법에 대한 설명입니다.

  핵심은 Work Space(워크스페이스) 파일을 C/C++ 언어용으로 하나 만들고, Python용으로도 하나 만들어서, 해당 언어의 코딩 작업을 하려고 할 때 , 각각의 WorkSpace 파일을 열어서 작업하면 됩니다.
 ( ※ 작업 폴더도 언어별로 각각 만들어서 구분해 주세요) → VS-Code 창 화면 제일 아래에 보면 파란색 표시줄이 보이시죠? (Status-Bar , 상태바) 만약, 닫으셨으면 상단 메뉴에서 View 》 Appearance 》 'Show Status Bar' 클릭~! 거기 창 우측에 보면 파이썬 모드일 경우에는 " Python " C언어 모드일 경우에는 "C"라고 나올 거예요. 거기를 마우스로 클릭해보면, 화면 상단 중앙에 Select Language Mode가 뜨면서, C, C++ , Go, Java, .... Python , 등등 여러 가지 언어 목록이 나와 있을 거예요.


목록 중에서 C 또는 C++을 선택합니다. 그러면, VS-Code 툴 자체가 터미널 포함하여 C언어 관련 모드가 되며, Ctrl+Alt+C (빌드) , Ctrl+Alt+R (실행)과 같은 단축키 적용 환경을 담은 C/C++ 내용이 담긴 JSON 파일도, 영상을 참고하여 만들어 주세요.

  그리고, (위 이미지 참조) 파일 메뉴에 보면 Save as workspace... 가 있어요, 그걸로 C_workspace.code-workspace 형태로 저장하시고, 다음에 C작업을 할 때는 이 워크스페이스 파일을 오픈하여 작업하면 되고요, 마찬가지로, Python언어로 작업할 때는 파이썬으로 세팅 후 ( Python 작업 폴더 지정과 파이썬 단축키 등의 내용이 들어 있는 JSON파일 등) , PY_workspace.code-workspace 형태로 워크스페이스 파일을 만들어, 파이썬 작업할 때 이 워크스페이스 파일을 오픈하여 작업하면 됩니다. C/C++ 언어의 JSON 파일은 바로 위 링크를 참고해주세요. 파이썬의 JSON 파일은 검색해보면 여러 가지 있고, 아래를 참고해보세요.

[ 파이썬의 JSON 파일 내용 예시 ] 

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "python execute",
            "type": "shell",
            "command": "python",
            "options": {
                "cwd": "${fileDirname}"
            },
            "args": [
                "${file}"
            ],
            "group":{
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            }
        },
        {
            "label": "c execute",
            "type": "shell",
            "command": "./${fileBasenameNoExtension}",
            "group":{
                "kind": "test",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": true
            }
        }
    ]
}

 

【 C/C++의 실행 버튼 ▶ 기능 설치하기 】

비주얼 스튜디오나 다른 전용 코딩 툴에 보면 작성한 코드를 실행시키는 단축키 외에 직접 마우스로 클릭하여 실행하는 버튼이 있는데요,   비주얼 스튜디오 코드(VS-Code)에서도 이런 버튼 기능을 추가로 설치할 수 있습니다.
또한 코드러너는, 디버깅 과정에서도 활용할 수 있기 때문에 설치해주면 좋습니다.

VS-Code에 실행(▶) 버튼을 추가한 이미지

1. VS-Code 툴 내에 있는 마켓플레이스에서 "Code Runner"로 검색해 보세요.


 설치(Install) 후, Vs-Code를 재시작하세요. 플레이 버튼이 VS-Code 오른쪽 상단에 바로 생성되는데요, 간단한 코드 작성하셔서 실행해 보시면, 화면 하단부에 "OUTPUT" 창 영역에 실행결과가 출력될 거예요.
( 코드위 마우스 우클릭해서 'Run Code' 및 단축키 'Ctrl+Alt+N'으로도 실행 가능하세요)
그런데, OUTPUT 창 영역은 결과만 볼 수 있는 창이어서 데이터 입력과 같은 작업은 하지 못하게 됩니다.

▶ 플레이 버튼으로 실행결과를 OUTPUT 창에 출력된 모습

2. 그래서 출력 결과를 입력도 가능한 터미널 창으로 설정하기 위해서는, VS-Code의 메뉴 》 File 》 Preferences 》 Settings 클릭하면, 화면에 설정창이 열리고 열린 화면 안의 세로 메뉴 목록 중 제일 아래에 있는 ' 〉 Extensions '를 클릭합니다. 그럼 그 아래로 하위 메뉴가 다시 열리는데, 아래쪽에 보시면 'Run Code Configure...' 메뉴가 보일 거예요. 클릭! 그리고 화면 가운데 옵션들 중에서 스크롤 다운 좀 하다 보면, ' Run In Terminal ' 옵션이 있을 텐데, 거기를 체크해주시면, 플레이 버튼 ▶ 클릭 후 실행결과가 터미널로 바로 열리게 되어 데이터 입력도 가능한 상태가 됩니다.

터미널창에 실행되어 입력이 가능한 상태 (이미지 클릭하면 확대됩니다)



【 VS-Code 삭제 안내 】
[ 만약 삭제가 필요한 경우 아래 안내를 참고해보세요. ]
삭제의 경우 제어판의 프로그램 삭제 같은 게 없기 때문에 삭제 방법을 알려드립니다. (용어 등 윈도10 기준입니다)

1. 윈도우 (시작) 작업표시줄 검색창에서 'MinGW Install ' 로 대략 검색해보시면, 'MinGW Installation Manager'라는 아이콘이 뜰 거예요. 그걸 실행해 주세요.
2. 그럼, 제 설치 영상 과정에 있었던(
1:50) MinGW Installation Manager라는 창이 뜹니다.
지금은 설치해 둔 항목의 체크 박스에 체크되어 있을 텐데요, 해당 항목들을 하나씩 마우스 우클릭하면 작은 팝업창이 뜨고 거기에 'Mark for Removal'이라는 항목을 클릭하세요. 설치된 항목 모두 똑같이 진행하세요.
3. ' MinGW Installation Manager' 설치 프로그램 메뉴 첫 번째로 가서 Installation을 클릭하셔서, Apply Changes를 클릭하세요. 이어서 뜨는 팝업창에서 Apply 버튼을 클릭하면, 좀 전에 체크해둔 설치된 파일들이 삭제가 진행될 거예요.
4. 파일 탐색 창을 열고 ' MinGW '를 설치한 폴더를 그냥 선택해서 바로 삭제하면 됩니다. 남은 파일 제거함
( 본 영상에서는 'C'드라이브 루트 바로 밑에 설치하였음 : C:\MinGW )
5. 제어판 혹은 윈도 (시작) 작업표시줄 검색창에서 '시스템 환경 변수 편집'을 여세요. 거기에서 처음 설치할 때 MinGW 환경변수 등록한 부분만 삭제를 해주시면 모두 깔끔하게 삭제될 것에요.
6. 추가적으로 레지스트리 청소하는 툴 사용하고 계신 것 있으시면 한 번 돌려주셔도 되고요.
참고로 아래는 삭제 방법에 대한 영문 영상 링크이니 함께 참고해 보세요.
https://www.youtube.com/watch?v=WWSK8wYvs2w

[ 추가 설명 ] 
  사용한 적 없는 PC에 처음 VS-Code를 설치하게 되면, 즉, tasks.json을 한 번도 안 만들었던 경우는 여기를 참고하세요. (영상은 이미 만든적이 있어서 tasks.json 파일 여는게 조금 다릅니다.)
- 1. VS Code를 실행합니다.
- 2. 키보드 'F1' 키를 누릅니다.
- 3. tasks.json을 한번도 안 만들었다면, ' Create tasks.json file from template '가 뜨는데 이걸 클릭하세요.
- 4. 그럼, 4가지 옵션이 나오는데, 그중에서 제일 아래 ' Others '를 고르면 'tasks.json' 파일이 처음 생성됩니다. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- ctrl + shift + B -- 기본적인 빌드 명령 (영상에서 추가해준 ctrl + alt + C 단축키와 동일하게 실행됨)
- ctrl + j -- 터미널 창 불러오기/닫기 (토글)
- 디폴트 테스크( tasks.json ) 파일 만들기(열기) : Vs code 메뉴에서 Terminal 》 Configure Default Build Task... 클릭하면 tasks.json 파일 생성 가능합니다.

[ VS-Code 툴의 개념과 기본 사용법에 대한 정리 ]
- 기본적으로 VS-Code라는 툴은 특정 언어에 맞추어 특화된 툴이 아니라, 코드 작성 시 "편의 기능 제공-디버그 환경 제공-쉘 기능" 등의 코딩에 필요한 핵심기능과 편리한 코딩을 위한 바탕을 제공하는 뼈대의 역할을 하는 툴이며, 요즘처럼 멀티 언어가 필요한 시점에, 여러 가지 다양한 언어를 하나의 툴로 번갈아 가며 개발 하기에도 수월하도록 만들어진 코딩 툴이라고 보시면 됩니다.
  그런데 각각의 언어마다 환경설정이 다르고, 사용하는데 필요한 기능을 추가로 설치해야 하는데요, 이는 본인이 사용하려는 언어별로, VS-Code 툴의 'Extentions 오픈마켓'에서 필요한 기능을 검색해서 설치하여 사용할 수 있게 만든 구조예요. 따라서 각 언어별로 tasks.json이라는 파일을 두어, 필요한 리소스 경로와 기타 환경 설정을 관리하게 하여 각각의 코드로 코딩이 되도록 하는 구조입니다.
  당연히, C언어 , 파이썬 등 각각의 언어별로 tasks.json 파일이 필요합니다. (언어별 작업 폴더를 분리해야 하는 이유)

- 일단 VS-Code로 두 가지 이상의 언어를 병행해서 공부하려고 한다면, 워크스페이스 파일을 각각 만들어 사용하여야 서로 엉키지 않고 편리하게 왔다 갔다 작업이 쉽습니다. 예를 들어, C/C++ 언어로 코딩 환경을 만든다고 하면, 하드 드라이브에 예를 들어 , C_World라는 작업 폴더를 하나 만들고, 그리고 방금 만든 폴더를 VS-Code에서 추가합니다. 여기가 C언어 작업 폴더가 되며, xxx.C이나 xxx.exe 와 같은 작성 파일 및 실행파일을 저장하게 됩니다. 그리고 C언어 모드로 선택하고, 오픈 마켓 등에서 C/C++ 관련된 필수 및 필요한 확장 패키지를 설치하고서 제 영상에서와 같은 tasks.json 등의 설정을 합니다. 그리고 마지막에 Save As Workspace... 메뉴로 C_Lang.code-workspace와 같은 파일명으로 "C_World" 폴더에 저장해 둡니다.

- 똑같은 방법으로, Python 언어 코딩 환경을 만듭니다. 하드 드라이브에 C와는 다른 곳에 Py_World라는 작업 폴더를 만듭니다. 그리고 방금 만든 폴더를 VS-Code에서 추가합니다. 여기가 파이썬 작업 폴더가 되며, 그리고 Python 모드로 선택하고, 오픈 마켓 등에서 python 관련 필수 및 필요한 확장 패키지를 설치하고서, 제 영상에서와 같은 tasks.json 등의 설정을 합니다. 그리고 마지막에 Save As Workspace... 메뉴로 Py_Lang.code-workspace와 같은 파일명으로 "Py_World" 폴더에 저장해 둡니다.

- 그러면, 다음번에 VS-Code를 실행시킬 때, 직전에 작업했던 환경으로 열리게 되는데, 예를 들어 파이썬 환경으로 작업 폴더 및 워크스페이스 환경이 떴다면, 그대로 작업하거나, C/C++ 언어를 다루고자 할 때는 메뉴에서 "Open Workspace"를 클릭해서 C_World 폴더에 저장해 두었던 'C_Lang.code-workspace ' 파일을 열면, 모든 세팅이 C/C++ 언어를 개발할 수 있는 상태와 작업 폴더로 바뀌게 됩니다.

- 따라서 VS-Code내에서 폴더를 만들고 여는(추가하는) 것은 워크스페이스의 하위 개념도 아닌, 그냥 작업 폴더를 열거나 추가하는 수준이고, 때에 따라 해당 폴더에 tasks.json파일이 있을 경우 자동으로 설정이 반응하기도 합니다.

- 만약 위와 같은 형태로 하려 하는데 무언가 에러가 난다면 대부분 환경설정 부분이나 패스 같은 지정이 잘못되어 있는 경우가 많으니 천천히 살펴보세요. - 파이썬은 기본적으로 실행파일을 제공하지 않고, 도스 쉘과 같은 CMD 커맨드 라인이나, 터미널(콘솔 창)에서 C:\python Hello.py 와 같은 형태로 실행시킵니다. 또는 VS-Code 툴에 '실행 버튼 ▷'을 추가하여 실행시킬 수도 있습니다. C/C++도 마찬가지로 Ctrl+Alt+R 단축키 대신에 실행 버튼을 눌러 터미널 창으로 실행되도록 할 수 있습니다.  우선, 위에서 설명한  '코드 러너'(Code Runner)라는 툴 같은 것이 설치되어 있어야 하고, 약간의 설정만 해주면 됩니다.   
→ 디버깅 설정 안내 [시작 전 조건(상태) ] :
 위의 설명처럼, MingGW 설치 및, C/C++ 확장팩까지 설치되고, json 파일까지 설정된 상태로 해주세요.
1. Code Runner(코드 러너) 마켓플레이스에서 Code Runner를 검색 후 설치해주세요. 디버깅을 위한 툴로 사용됩니다.
2. VS-Code 상에서 (새) 폴더를 하나 추가해주세요. 또는 기존 C/C++작업 폴더, C/C++로 세팅한 워크 스페이스를 하나 만듭니다(Save As Workspace 함. 또는 영상의 더보기 클릭하면 워크스페이스 관련된 간단한 안내글 조금 있어요)
3. 디버깅 설정을 위해서는 간단한 테스트 파일(.C 또는. CPP)을 만듭니다. a=3; b=4; c= a+b; printf( .... 식의 변수를 사용해서 간단하게 디버깅을 확인해 볼 수 있는...
4. 컴파일러 설정하기 (c_cpp_properties.json) / launch.json 설정하기 / settings.json 설정하기 5. 만약 디버깅 설정 과정에서 task.json 파일의 내용이 디폴트 값으로 복귀되었다면, 제 영상에서와 같은 C/C++ 내용의 task.json 내용으로 다시 바꾸어 저장해 주세요.
 ※ 디버깅 설정 작업에서의 핵심은 디버깅 기능을 실행할 컴파일러의 경로 설정을 제대로 해주는 것이에요. 만약 에러가 난다면 경로 설정 부분이 맞지 않거나 옵션이 부족하거나 오타 나게 되면 주로 발생하니 차근차근 진행해 보세요. 그리고, 2. 번부터의 작업내용은 디테일하고 좀 복잡하기 때문에, 메뉴나 설정 옵션 같은 이미지를 보면서 하셔야 하기 때문에, 아래 링크를 하나 걸어드릴 테니, 천천히 보면서 해보세요. 제가 작성해 놓은 글은 없는데 링크 걸어드리는 내용이 제 영상의 설정과 맞아서 참고해 보시면 하실 수 있을 듯합니다. 참고로 링크해드리는 글에서는 C/C++확장팩 설치 및 일부 설정이 제 영상에서 이미 설정하신 게 있으므로, 중복으로 나와 있을 수 있으니, 이미 작업한 설정은 건너뛰고 추가로 안 해준 설정들만 해주시면 될 듯합니다. 참고 글 : https://miaow-miaow.tistory.com/126

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 또한 파이썬 코딩에서 C언어처럼 xxx.exe와 같은 실행파일이 필요한 경우, " Pyinstaller "와 같은 별도의 프로그램을 설치하면, exe파일을 만들 수 있고, 코드에 import 된 라이브러리를 따로 생성하지 않고 exe파일에 포함시키는 기능 같은 것도 제공합니다. - 마지막으로, 처음 VS-Code를 사용하려 할 때, 기본 코딩 툴의 뼈대만 설치된 상태이기 때문에 처음 사용자분들이 많이 당황하십니다. 그리고 Open 소스 방식이어서 필요한 기능이나 툴을 본인이 판단해서 설치하고 직접 세팅해야 하는 부분이 커서 처음부터 적응하기는 쉽지 않습니다. 하지만, 직접 이리저리 세팅해보고 시행착오를 좀 겪어보고 안정적인 세팅이 가능해지면, 이거 만큼 편리한 만능 툴은 없다고 생각됩니다. 그러니, 우선 직접 툴 자체를 이래저래 많이 만져 보면서 경험을 쌓으면 좋을 것 같습니다. VS-Code와 유사한 툴로 파이참(Pycham) 이나 아톰(Atom)과 같은 툴 들이 여럿 있고 꽤 나름의 유저층이 있습니다. 각각의 편리기능이 좀 다르고, 장단점과 지향점이 있겠으나 모두 괜찮은 툴들이며, 최근 VS-Code를 많이 사용하고 있는 추세인 것 같고 , 사용해보시길 권해드립니다.


마지막으로,  VS-Code를 설치하고 간단한 코드를 테스트해보는 과정에서,  각 개인별 환경에 따라 여러 가지 에러가 발생할 수 있는데요,   아래 관련 에러에 대한 추천할 만한 조치사항을 안내해 드리니 참고해서 시도해보시면, 대부분 해결될 것으로 기대합니다.  

 그럼 본 게시글이 조금이라도 도움되셨기를 바라며...   

《 에러 증상 해결 》
(에러 증상 1. ) 설치 과정 중에, cmd에 gcc -v 했는데 버전 체크가 안 되는 경우!

(해결 1→) 이 경우는, 윈도 환경변수 등록 부분의 경로 설정에 오타나 등록 에러, 또는 경로가 정확히 맞지 않아 발생하게 됩니다. 예를 들어, 콤머(,)를 점(.)으로, 또는 세미콜론(;)을 콜론(:)으로 하나만 잘못 입력되어도 경로를 인식 못합니다. 경로 설정(등록) 부분을 한 번 더 확인해보시고, 그리고 재부팅해야 추가된(변경한) 경로가 적용되니, 재부팅도 해보세요~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(에러 증상 2. ) 설치와 설정을 거의 대 끝내고, 간단한 코드로 실행을 시켰을 때, 터미널 창으로 아래와 같은 에러가 나는 경우입니다. """ cmd : 'cmd' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + cmd /C C:\Users\.... """ 와 같은 형태로 에러가 나는 경우,

(해결 2→) 우선 영상에서처럼 환경변수 등록을 제대로 되었는지? 확인해서 cmd ver 버전 확인이 제대로 되었다면, 그래서 경로 문제는 아닌 경우.... VS-code를 윈도에 처음 설치하게 되면, window의 경우 terminal이 기본으로 powershell로 설정되어 있을 거예요. VS-Code 화면 하단의 TERMINAL 창에 보면 , 오른쪽에 [ 1:powershell ] 로 선택되어 있을 텐데, 그걸 cmd로 변경하고 다시 해보세요. ( powershell 부분에서 Select Default Shell 선택 후, Command Prompt를 입력 및 선택하시면 되실 거예요 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(에러 증상 3. ) """ 액세스가 거부되었습니다. 터미널 프로세스 "C:\Windows\System32\cmd.exe /d /c cmd /C C:\vscode_c\database"이(가) 종료되었습니다(종료 코드: 1). """ 이러한 오류코드가 뜨면서 실행이 종료되었을 경우!

(해결 3→) 현재의 증상은, 액세스 관련 문제는 대부분 윈도 보안 정책과 관련되어 있을 거에요. 처음 실행했을 때 파일 생성은 되었지만, 수정후 다시 실행 파일을 만들면서 덮어쓰려하니 액세스 거부하는 걸로 보여지는 증상인것 같아요. ※ VS-Code 터미널의 권한을 관리자 권한으로 실행되도록 아래 내용 처럼, 해보세요. 1. 바로 가기 또는 앱 / exe를 마우스 오른쪽 버튼으로 클릭 2. 속성으로 이동 3. 호환성 탭 4. "관리자 권한으로이 프로그램 실행"을 선택하세요. 그럼, VS-Code를 모두 닫고 다시 실행해서 확인해보세요. 만약, 그래도 같은 증상이 있다면, C코드 작성파일이 저장되는 위치(폴더)를 윈도우(보통 C:) 드라이브가 아닌 다른 드라이브(D:)나 혹은 윈도우 문서 폴더 등과 같은 권한 영향이 미치는 곳을 피해서 저장 및 작성해보세요. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(에러 증상 4. ) printf(); 에 한글 치면 인식 못하고 이상한 문자로 바뀌어서 출력되는데 어떻게 하면 해결할 수 있나요?

(해결 4→) VS-Code 한글 깨지는 현상 해결 하기 : Vs-code는 기본 설정 언어가 한글 인식이 안 되는 utf-8 코드로 되어 있어요. 이를 한글이 깨지지 않는 EUC-KR로 바꾸어 주시면 되는데요, 제일 빠른 방법은, vs-code 툴 제일 아래 파란 표시줄 보시면, 우측에 ' utf-8 '이라고 표시되어 있는 부분이 있을 텐데요, 그 부분을 클릭하면, 화면 상단 중앙에 메뉴가 뜹니다. 그럼, ReOpen Encoding... 옵션을 클릭해서 나타나는 메뉴 중 , ' Korean(EUC-KR) '을 클릭하면 됩니다. 그럼, 파란색 표시줄에 EUC-KR로 바뀌게 되는데요, 그런데, 기존 작성된 printf("ㅌㅌㅌㅌㅌ"); 코딩 부분의 한글은 아직 깨져 있는 상태 그대로 있을 텐데요, 저장 후 다시 로딩하면 한글이 제대로 뜹니다. 또는 Un-do 명령어인 이전으로 돌리기( Ctrl+Z ) 키 동시에 누른 후, 다시 앞으로 되돌리기 ( Ctrl+Y) 키 눌러보면, 깨지지 않은 채로 리로딩되어 있을 거예요. 한글 설정으로 바꾸는 다른 방법은, Vs-Code 툴의 좌측 아래에 보면 톱니바퀴 모양의 , 혹은 메뉴 중에 Settings(설정) 메뉴를 클릭 》 검색창에 "encoding" 입력 후, Files : Encoding 항목의 옵션을 ' Korean(EUC-KR) ' 로 바꾸면 되세요~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(에러 증상 5. ) 영상에서 설정한 빌드 단축키나 실행 단축키 관련해서 제대로 실행이 되지 않는 경우 : 혹은, ctrl+alt+c 를 했을 때 하나의 gcc.exe 활성 빌드밖에 없고 ctrl+alt+r은 실행이 되지 않는 경우 등 :

(해결 5→) VS-code 세팅 과정에서 특정 부분 셋업을 진행하다 보면, tasks.json 파일이나, 다른 설정 파일의 내용이 분명히 영상 따라 바꾸어 놓았지만, 다시 이상하게 일부분이 변경되는 경우가 생길 수 있습니다. 따라서, 작업 폴더에 생성해 놓았던 tasks.json 파일을 열어서 현재의 내용은 다시 모두 지우고, 본 영상의 더보기에 링크해드린 tasks.json 파일의 내용을 다시 붙여 넣기(저장) 해보세요. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(에러 증상 6. ) 만약, 모두 설치를 제대로 진행하고서, C언어로 연습 코딩을 하였을 때, 아래와 같은 에러 증상이 나는 경우입니다. @/include 오류가 검색되었습니다. includePath를 업데이트하세요. 이 변환 단위(D:\(폴더명)\VSC\HelloWorld.c)에는 물결선을 사용할 수 없습니다. 파일 소스을(를) 열 수 없습니다. "stdio.h" , 처럼 C언어 코드 자체가 인식이 안 된다고 느끼신 다면,

(해결 6→) 현재 VS-Code에 영상을 따라, C/C++ 언어와 같은 추가 패키지를 제대로 설치했을 경우로 가정하고 말씀드릴게요. VS-code 화면 하단에 보시면, 파란색 작업 표시줄 같은 것이 보일 거예요.(영어로, Status Bar라고 되어 있고요,
혹시 x를 눌러 닫아 버렸다면, VS_Code 상단의 View 메뉴로 가서 》 Appearance 》 'Show Status Bar'를 체크하면 됩니다.) 그래서, 하단 메뉴 표시 바에 보시면, C언어가 아닌, HTML이나, 다른 언어 같은 걸로 설정되어 있을 거예요. 거기 부분이 'C'로 표시되어 있어야, C언어 코드로 작동 됩니다. 만약 C 가 보이지 않는 다면, 다른 언어로 표시된 부분을 클릭 하시면, 화면 상단 중앙에 언어 선택하는 풀다운 메뉴가 뜰거에요. 그럼 거기서 C나 혹은 C++ 을 원한다면, 선택하시면, C언어 모드로 바뀌고 C언어로 코드해석이 잘 될 거에요. 그리고 만약, C 하다가 파이썬이나 다른 언어로 하단 메뉴를 눌러 바꾸면서 왔다 갔다 작업을 해야 한다면,
 VS-Code File 메뉴에 있는 "Save WorkSpace As..." 메뉴를 이용하시면 되는데요, 각 언어별로 저장해서 불러오기 형태로 활용하시면 가장 편리하게 멀티 언어 코딩 환경을 사용하실 수 있습니다.

(에러 증상 7. )  jsons 파일 변경해서 잘 먹던 단축키 (예를 들어, 빌드 : ctrl+ alt + C , 실행 : ctrl+ alt + R ) 가 어떤 설정 작업한 이후에 다시 실행이 안 되는 경우!

(해결 7→) jsons 파일은 워크스페이스를 새로 지정하거나, 마켓 프로그램을 추가 설치하거나 등의 작업에서 그 내용이 디폴트로 리셋 되는 경우가 종종 있습니다. 이럴 땐, 영상을 통해 이미 알려드린 jsons 파일의 내용을 다시 한번 복사 붙여 넣기 해서 저장하시면 잘 실행 될 거예요.

 

(에러 증상 8. ) 실행할 때 printf문 같은 것은 실행이되지만 scanf나 다른 변수를 같이쓰면 내부 또는 외부명령, 실행할 수 있는 프로그램, 또는 배치파일이 아니라는 에러 메시지를 띄우는 경우가 있습니다.  

(해결 8→) 이런 경우 별도로 설치된 Macafee safe와 같은 안티바이러스 혹은 방화벽 프로그램 같은 것 때문에, 제대로 동작이 안 될 수 있으니,  관련기능을 해제하거나, 옵션 변경 또는 프로그램을 언인스톨(삭제)해 보세요. 

 

(에러 증상 9. ) 한글 깨짐 문제 해결  (한글은 터미널창으로 출력결과가 깨지는 경우가 있고,  이해결을 위해 EUC-KR로 변경하였을 경우, 터미널 결과 출력에서 한글은 깨지지 않지만, 본문의 코딩되어 있던 한글이 깨지는 경우에 있어 해결방법입니다. 

1. EUC-KR로 바꾸고서 한글은 출력되는데, 본문에 코딩되어 있던 글이 깨져 나올 때는, EUC-KR로 바꾸고 바로 Ctrl+Z 키를 눌러주면, 본문에 깨진 한글이 다시 되돌아옵니다. 그리고 보통은 터미널에서도 잘 출력되구요.
2. UTF-8을 EUC-KR로 굳이 변경하지 않고도 한글 깨지는 문제를 해결 할 수 있는 방법도 있어요.
: [제어판 → 시계 및 국가 → 국가 또는 지역 → 관리자 옵션 → 시스템 로캘
변경 → Beta: 세계 언어 지원을 위해 Unicode UTF-8 사용 ]을 해주면 한글 깨짐을 해결할 수 있습니다.

 

(에러 증상 10) cmd : 'cmd' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.

(해결 10→) 먼저, 아래 두 가지 부분을 살펴보세요.
1. 시스템 환경변수의 경로(Path) 등록 부분이 제대로 되었는지? 다시 한번 확인해 보세요.

2. vscode를 처음 설치하게 되면, 기본 터미널이 cmd가 아니라 Powershell로 되어 있는데, 그부분을 cmd로 바꾸어 주세요.
VS-Code 화면 하단의 TERMINAL 창에 보면 , 오른쪽에 [ 1:powershell ] 로 선택되어 있을텐데, 그걸 cmd로 변경하고 다시 해보세요.
( powershell 부분에서 Select Default Shell 선택 후, Command Prompt를 입력 및 선택하시면 되실거에요 )

 
[ 기타 자주 물어보는 질문 ]

질문 1)  컴파일을 c로 할지 c++할지 선택하는 과정을 없엘수는 없나요~

질문 2) 실행 버튼을 누르면 execute가 나온다음에 엔터를 쳐야 실행되는데 이것 또한 안나오게 할수는 없을까요?
답변 ① tasks.json 파일을 열어보면(VScode에서 바로 열어도 됩니다) 각 언어마다(C 와 C++) 아래와 같은 항목이 있을 거예요.
"group": "build",
그럼,  C나 C++ 둘 중에 주로 사용하는 언어의 이 부분을 주석 처리해 놓고, 아래와 같이 추가해 넣어 보세요.
 
"group": {
"kind": "build",
"isDefault": true
},
저장하고 vscode를 재 실행하면 이후로는 추가해 넣은 언어가 ctrl+alt+c 누를 때 선택창이 뜨지 않고 바로 빌드 될 거예요.
 
그럼, C언어든, C++이든 고정적으로 사용하는 언어로 지정해서 컴파일 하면 될거예요. 만약, 둘 다 섞어 쓰게 되는 경우라면, 보통 C언어 컴파일러인 gcc.exe는 C를 완벽하게 컴파일 하지만, C++은 컴파일을 모두 커버하지 못하는 부분이 있고,
반대로, C++ 컴파일러인 g++.exe는 C++과 C까지 모두 컴파일 하는 데는 크게 무리 없기 때문에, g++.exe 컴파일러를 지정해서 사용하면 될거예요.
-----------------------------------------------------------------------------------------------------------------------------
답변 ② 익스큐트 없이 바로 실행되게 하기 위해서는, 마찬가지로, 같은 tasks.json 파일을 열어서,
ctrl + F 찾기를 눌러 test 를 찾은 다음 아래와 같이 , 원래 있던 "group": "test" 부분은 주석 처리 해버리고, 아래 4줄을 추가해 주세요. 그리고 저장 후, 재실행 후 해보시면, ctrl + alt + r 키를 누르면 execute 가 뜨지 않고 바로 실행 될 거예요.
 
// "group": "test",
"group": {
"kind": "test",
"isDefault": true
},
 

 

< 위 질문과 반대의 질문에 대한 답변 : >

① 질문 :  ctrl+alt+c를 눌렀을때 c나 c++선택창이 뜨지 않고 그냥 컴파일이 되는데 뭐가 문제일까요?

② 답변 : 
안녕하세요~
중간에 어떤 다른 작업으로 인해 tasks.json의 내용 또는 일부가 변경되거나 지워지는 경우가 있습니다. 그럴때는 제공해드리는 tasks.json의 내용을 다시 복사 붙여넣기 하시면 대부분 해결 되실거에요.

그리고, 그렇게 해도 처음 몇 번은 목록이 뜨다 다시 안 뜨는 경우가 생길 수 있는데요,
① tasks.json 파일을 열어보면(VScode에서 바로 열어도 됩니다) 각 언어마다(C 와 C++) 아래와 같은 항목이 있을 거예요. "group": { "kind": "build", "isDefault": true },
이 부분은 해당 컴파일러를 디폴트로 설정해 버려 , 목록 없이 바로 컴파일 되도록 해버립니다.
그래서, 우선 이 부분 4줄을 주석 처리 해 놓고, 아래의 한 줄을 새로 입력해 보세요.
"group": "build", (C 영역 또는 C++ 영역 둘 다 이렇게 되어 있으면 됩니다)
그리고, 저장하고 vscode를 재 실행하면 이후로는 ctrl+alt+c 누를 때 선택창이 뜰거에요.
그런데, 이후로는 목록이 두 개가 아니라 4~5개 이상 뜨게 되는데요, 이유는 vs-code 또는 윈도에서 기본 제공하는 clang 이라는 컴파일러가 감지 되면서 목록에 함께 뜨는 것으로 보이는데요. 어째튼 그 것들 중에서 원하는 것으로 선택해서 컴파일 하면 됩니다.
음... 일단 앞으로 계속 사용해 보시면, 오히려 목록이 뜨는 게 별 의미 없고 번거로우실 거에요. 그럴 때는 위에서 조치한 것을 다시 반대로 돌려놓으면 됩니다.
만약 그렇게 하겠다면, C언어든, C++이든 고정적으로 사용하는 언어로 지정해서 컴파일 하면 될거예요. 만약, 둘 다 섞어 쓰게 되는 경우라면, 보통 C언어 컴파일러인 gcc.exe는 C를 완벽하게 컴파일 하지만, gcc.exe로는 C++의 컴파일을 모두 커버하지 못하는 부분이 있고, 반대로, C++ 컴파일러인 g++.exe는 C++과 C까지 모두 컴파일 하는 데는 크게 무리 없기 때문에, 보통은 g++.exe 컴파일러를 디폴트로 지정해서 사용하면 될거예요.
-----------------------------------------------------------------------------------------------------------------------------
그리고 추가로 실행 단축키도(ctrl + alt + r ) execute 글자를 별도로 선택하지 않고 지정한 컴파일러로 바로 실행 시킬 수 있는데요, 바로 실행되게 하기 위해서는, 마찬가지로, 같은 tasks.json 파일을 열어서, ctrl + F 찾기를 눌러 test 를 찾은 다음 아래와 같이 , 원래 있던 "group": "test" 부분은 주석 처리 해버리고, 아래 4줄을 추가해 주세요. 그리고 저장 후, 재실행 후 해보시면, ctrl + alt + r 키를 누르면 execute 가 뜨지 않고 바로 실행 될 거예요.
// "group": "test",
   "group": {
   "kind": "test",
   "isDefault": true
   },

 

 

 
※ 추가적으로 좀더 상세히 설치하고 설정하는 영상(아래 링크)을 다시 만든 게 있는데, 이부분을 참고해보세요. powershell → cmd 로 변경하는 부분도 설명되어 있어요.
 


감사합니다~  오늘도 힘내시고, 좋은 하루 보내세요~  ^^;

 

반응형
반응형

【 프로세싱 기초#27 프로세싱 출력결과를 PDF 파일로 저장하기

 

 프로세싱을 하다 보면, 출력되는 화면을 캡처 하고 싶을 때가 있습니다.  최종 결과 뿐 아니라 중간 중간 변하되는 순간적인 모습을 한 장면씩, 저장 하고 싶을 때가 있습니다.  지난 시간에 이미지 파일로 저장하는 것을 다루었습니다. 

  이번엔 PDF 파일로 저장해보도록 하겠습니다.

 PDF 파일로 저장할 때의 장점은,  PDF파일의 특성인 파일 하나에 여러장면의 이미지를 페이지 단위로 저장 할 수 있다는 것입니다.  마치 복사기의 자동급지 스캐너에서 10장을 스캔해서 PDF로 저장하면 파일 하나에 10개의 페이지 형태로 저장되는 원리와 같습니다.   

 또 하나의 장점은 PDF로 저장 된 파일은 벡터형태로 저장이 됩니다.  따라서 일러스트레이터와 같은 툴에서 이미지의 라인 두께 조절이나 이미지의 크기 변경이 가능해 집니다.  각각의 이미지를 레이어형태로 컨트롤 할 수 있다는 점에서 후편집이 필요할 경우 상당히 유용합니다. 

 우선 지난시간 jpg, png 저장이 되는 선수 학습을 먼저 참고하면 도움이 됩니다.

 

[ 선수 학습 ]

2020/01/06 - [Language/프로세싱] - 【 프로세싱 기초#26】 프로세싱 출력결과를 이미지(jpg,png) 파일로 저장하기

 

 

[ 프로세싱의 화면 좌표 ]  - 100 x 100 pixel 예시 

▶ 문제 1 :  아래 출력 결과를 키보드의 's'키를 누르면 PDF 파일 저장 되도록 하시오. 

 

  [ 조건(hint) ]

   1. 화면 사이즈(가로x세로 픽셀) : 500 x 500 
   2. 마우스의 위치(mouseX, mouseY) 에 따라 원이 계속 그려지도록 하라.

   3. S키를 누르면 "Rasino.pdf" 로 저장되도록 하고, 실행창을 종료 시켜라 ('exit ( )' 함수 사용)

   4. pdf 파일 형식을 사용하기 위해서는 import processing.pdf.*   라이브러리 사용이 필요함.

   5. pdf 파일로 저장하기 위해서는  beginRecord ( ),  를 선언해야 하고,  캡처시점에 endRecord( ) 함수를 호출해야 PDF 파일로 원하는 이미지가 저장된다.  

 

 ▶ 문제 (실행결과) 
아래처럼 동작되도록 코딩하라.

(동작화면)

(PDF 파일 저장 화면)

(PDF 파일 열어본 화면)

 

 

▶ 프로그램(code) : 
(이미지를 클릭하면 확대 됩니다)

 

void setup ( ) { 
  size(500,500);   size(500, 500);  
  beginRecord(PDF, "Rasino.pdf");

} 

 

void draw ( ) { 

}

 

void draw ( ) { 
  float diam = random(20, 200);
  noStroke( );
  fill(random(50, 150), random(200), random(100, 255) );
  ellipse(mouseX, mouseY, diam, diam);
}

 

void keyPressed ( ) { 
  if (key == 's') {

    endRecord( );
    exit( );

  } 
}

 

 pdf 파일로 저장하기 위해서는  beginRecord ( ) 와  endRecord( ) 함수를 선언 하는 위치가 중요해요. 

만약 endRecord( )가 선언 안 되거나 선언 위치가 잘못되면, PDF 파일은 보이는데, 파일 사이즈가 0 byte 로 나타나며 제대로 저장 되지 않으니 주의하세요. 

 

▶ 프로그램(code) 다운로드: 
(압축 파일을 풀어서 사용하세요)

circle_save_pdf.zip
0.00MB

 

▶ 문제 2  위와 같은 형태로 작동하되 하나의 pdf 파일을 만들면서,  'a' 키를 누를 때 마다 여러 페이지가 저장 되도록 하라.  또한 키보드의 's' 키를 누르면 종료되도록 하라. 

 

  [ 조건(hint) ]

   1. 화면 사이즈(가로x세로 픽셀) : 500 x 500 
   2.  임의의 크기 원을 위해 random( ) 함수를 사용하라.   (원의 직경(가로세로 동일) 랜덤 값은 : 20~200 값으로 하라)

       예),   - random(255) : 0~255 사이의 랜덤 값 발생

              - random(20, 200) : 20~200 사이의 랜덤 값 발생

   3.  각 원에 RGB 요소를 넣어 색상을 랜덤하게 채운 원을 출력 하라.   필요함수 : " fill ( R, G, B) "    이때, RGB의 각 값은 0~255 이다. 

   4.  결과 화면을  a 키를 누를 때마다 하나의 PDF에 페이지 형태로 저장하시오. 

 

 ▶ 문제 (실행결과) 
아래처럼 동작되도록 코딩하라.

최종 화면

 

(아래 부터는 하나의 PDF 파일 속에 여러페이지로 저장 된 모습)

 

▶ 프로그램(code) : 
(이미지를 클릭하면 확대 됩니다)

 

import processing.pdf.*;
PGraphicsPDF RasPDF;

 

void setup ( ) { 
  size(500,500); 

  RasPDF = (PGraphicsPDF) beginRecord(PDF, "RasPDF.pdf");
} 

void draw ( ) {   
}

 

void mousePressed ( ) { 
  float diam = random(20, 200); 
  noStroke(); 
  fill(random(100, 200), random(200), random(200, 255) ); 
  ellipse(mouseX, mouseY, diam, diam);
   
}

 

void keyPressed ( ) { 
    if (key == 'a') { 
      RasPDF.nextPage( ); 
     } else if (key == 's') {
       endRecord();
       exit();  
     }

}

 

PGraphicsPDF RasPDF; 의  PGraphicsPDF 는 대소문자 와 철자를 반드시 구분해서 사용해야 하며,

RasPDF의 함수 선언 이름은 다른 것으로 바꾸어도 상관 없어요.  이렇게 PDF파일로 저장하게 되면, 백터 형태로 저장이 되어서 일러스트레이터와 같은 편집 툴에서 이미지 속의 각각의 요소들을 레이어 단위로 컨트롤이 가능해서 활용도가 높습니다.   또한 여러장의 이미지를 하나의 파일(PDF)로 묶을 수 있어서 파일 관리가 필요한 경우에도 좋겠네요.  ^^

 

▶ 프로그램(code) 다운로드: 
(압축 파일을 풀어서 사용하세요)

circle_save_pdf2.zip
0.00MB

 

반응형
반응형

【 프로세싱 기초#26 프로세싱 출력결과를 이미지(jpg, png 등) 파일로 저장하기

 

 프로세싱을 하다 보면, 출력되는 화면을 캡처 하고 싶을 때가 있습니다.  최종 결과 뿐 아니라 중간 중간 변하되는 순간적인 모습을 한 장면씩, 이미지 파일로 캡쳐해서 활용하고자 할 때 가 있는데,  여기에 대해 몇 가지 코드 예시로 설명 드려 볼께요.

 

[ 프로세싱의 화면 좌표 ]  - 100 x 100 pixel 예시 

▶ 문제 1 :  아래 출력 결과를 이미지 파일로 저장 하되,  키보드의 's' 키를 누를 때 마다 저장되도록 하시오.

 

  [ 조건(hint) ]

   1. 화면 사이즈(가로x세로 픽셀) : 500 x 500 
   2. 마우스의 위치(mouseX, mouseY) 에 따라 원이 계속 그려지도록 하라.

   3. S키를 누를 때 마다 호출되는 keyPressed( ) 라는 서브루틴 함수를 별도로 만들어 사용

   4. 이미지 저장 함수는 saveFrame( ) 함수를 사용

 

 ▶ 문제 (실행결과) 
아래처럼 동작되도록 코딩하라.

실행화면에서 위와 같은 형태로 마우스를 움직임

위에서 마우스를 4 단계로 움직였으며, 멈출 때 마다 's'키를 누르면 아래처럼 4개의 이미지 파일로 저장 되도록 하시오. 

4개의 파일이 랜덤번호 생성과 함께 중간 중간 저장된 것을 알 수 있다.

 

 

▶ 프로그램(code) : 
(이미지를 클릭하면 확대 됩니다)

이와 같은 코드로 작성하면 된다

 

void setup ( ) { 
  size(500,500); 
} 

 

void draw ( ) { 
  ellipse (mouseX, mouseY, 80, 80); 
}

 

void keyPressed ( ) { 
  if (key == 's') {

     saveFrame("images/result-###.jpg") ; 
  } 
}

 

 images 라는 하위폴더(생략가능)를 만들고 그 아래에 'result-xxx.jpg' 라는 파일 이름으로 's'키를 누를 때 마다 xxx 자리 랜덤 숫자가 들어간 result-xxx.jpg 라는 파일을 저장하게 됩니다. 

 

▶ 프로그램(code) 다운로드: 
(압축 파일을 풀어서 사용하세요)

circle1_save_img.zip
0.19MB

 

▶ 문제 2 색과 크기가 랜덤인 원을 마우스로 화면을 찍는 위치에 표시하라.  또한, 키보드의 's' 키를 누를 때 마다 저장되도록 하시오. 현재의 화면을 이미지 파일로 저장하도록 하라.

 

  [ 조건(hint) ]

   1. 화면 사이즈(가로x세로 픽셀) : 500 x 500 
   2.  임의의 크기 원을 위해 random( ) 함수를 사용하라.   (원의 직경(가로세로 동일) 랜덤 값은 : 20~200 값으로 하라)

       예),   - random(255) : 0~255 사이의 랜덤 값 발생

              - random(20, 200) : 20~200 사이의 랜덤 값 발생

   3.  각 원에 RGB 요소를 넣어 색상을 랜덤하게 채운 원을 출력 하라.   필요함수 : " fill ( R, G, B) "    이때, RGB의 각 값은 0~255 이다. 

   4. 이미지 저장 함수는 saveFrame( ) 함수를 사용 하고,  S 키를 누를 때마다 출력화면이 캡쳐되도록 하라 (서브루틴 함수로 구현)

 

 ▶ 문제 (실행결과) 
아래처럼 동작되도록 코딩하라.

화면에 임의의 위치에 랜덤하게 마우스를 클릭하고, 중간 중간 'S'키를 눌러준다
총 5번의 s키를 눌러 출력 결과를 저장 한 모습

 

▶ 프로그램(code) : 
(이미지를 클릭하면 확대 됩니다)

 

 

void setup ( ) { 
  size(500,500); 
} 

void draw ( ) {   
}

 

void mousePressed ( ) { 
  float diam = random(20, 200); 
  noStroke(); 
  fill(random(100, 200), random(200), random(200, 255) ); 
  ellipse(mouseX, mouseY, diam, diam);
   
}

 

void keyPressed ( ) { 
    if (key == 's') {
    saveFrame("images/result-###.jpg");

    }
}

 

 random( ) 함수를 원의 크기(직경)를 정하고, 원의 색을 정하는데 사용하였음.

images 라는 하위폴더(생략가능)를 만들고 그 아래에 'result-xxx.jpg' 라는 파일 이름으로 's'키를 누를 때 마다 xxx 자리 랜덤 숫자가 들어간 result-xxx.jpg 라는 파일을 저장하게 됩니다. 

 

▶ 프로그램(code) 다운로드: 
(압축 파일을 풀어서 사용하세요)

 

circle2_save_img.zip
0.00MB

 

반응형
반응형

에러】 vscode 사용시 unresolved import 'pyautogui'Python warning 해결방법

vscode 툴을 사용하다 보면, 라이브러리들이 제대로 import 되지 않을 때가 있다. 

 

예를 들어, import pyautogui  를 철자 틀림 없이 정확히 입력하였으나,  pyautogui에 물결 밑줄이 그어지면서,

적용되지 않아 코드를 계속 진행 할 수 없는 상황에 놓이게 된다. 

 

이럴 때는 vscode 설정파일 인 settings.json 을 열어 아래 부분을 수정해주면 된다. 

 

1. vscode 실행
2. Ctrl + Shift + P
3. "Configure Language Specific" 입력, 엔터
4. "Python" 선택 → settings.json 열림
5. python.jediEnabled:false true      또는 true로 되어 있을 경우 그 반대로 false

설정을 저장하고 나면, vscode 우측하단에, reroad ...   할거냐고 묻는 메세지가 있다  그럼 클릭하여 다시 로드 시킨다.  그러면, vscode 툴이 다시 실행되면서 

 

별문제 없이 import 되는 것을 볼 수 있다. 

 

 

2. < Ctrl + Shift + P >  단축키를 눌러 아래창을 띄우고 "Configure Language Specific" 입력, 엔터친다

3. < Select Language 대화창에서 → python 을 선택한다.  >

4. < settings.json 창이 열리면,  아래해당 되는 부분의 false ↔ true 로 바꾸어 준다 >

 그리고 저장 후 리로드 Reroad 후,  vscode 재실행 하면 라이브러리가 import 되지 않는 문제는 해결 된다. 

 

 

 

 

반응형
반응형

 응용】 파이썬 웹 크롤링#3 (Web Crawling) - 원하는 페이지 수만큼 검색하여 저장하기 

 크롤링이란,  인터넷에서 특정 검색(어)으로 검색하여 (자료를) 긁어(스크랩) 모우는 행위를 일컫는다. 이를 파이썬 코드나 시스템을 이용해서 반자동으로 긁어 모으고 과정을 일컫는다.  

 이 번 내용에서는 웹 검색 결과를 스크래핑하여 쉼표 단위로 저장이 되는 csv 형태로 저장하고자 한다. 

csv 형태로 저장하는 이유는 메모장에서도 열수 있고, 엑셀에서 군더더기 없이 셀(cell) 별로 읽어 들여, 이후의 가공이나 편집이 용이하기 때문이다. 

 

 지난시간에는 네이버 M이라 하여 모바일 버전에서 검색되는 내용을 csv 파일로 저장해 보았다. 

이번에는 코드가 조금 더 복잡하지만, 일반 PC 화면에서의 네이버 검색 결과를 저장해보려 한다.

블로그를 기준으로 특정 명령어를 검색하는 것을 기준으로 다루어 보겠다. 

필요에 따나, 카페 검색이나, 웹 검색을 원한다면 아래 코드를 살짝만 맞추어 주면 된다.

  

 검색결과는 보통 한 페이지당 10개의 내용(제목과 간단한 설명과 링크)이 담겨 있다. 검색 내용이 많은 경우 이런 페이지가 수십 페이지를 넘어가게 되는데,  직전 크롤링 코드로는 첫 페이지에 나오는 내용만 담을 수 있는 코드여서 2페이지 이상의 내용을 저장할 수 없었다.  그래서 한 페이지에 몰아서 출력되는 네이버 모바일 M의 View 메뉴 검색 페이지를 이용하였던 것이다. 

 

 그러나 이번에는, 원하는 검색페이지 수만큼 결과를 저장해 보는 크롤링 코드를 짜 보려 한다. 

예를 들아 네이버 검색창에 '파이썬'이라 검색하면, 수십페이지의 검색 결과가 뜨는데,  원하는 페이지 수를 예를 들어 '10'이라고 추가로 입력하면,  1페이지부터 10페이지까지의 검색된 결과 중에서, 타이틀 제목과, 링크 주소를  csv 파일로 저장해 보는 파이썬 코드를 다루고자 한다. (콘솔 창에도 해당 결과를 출력해보자)

 

그럼 이제 코딩을 해보자. 

먼저, 크롤링이 처음 이라면, 선수학습 자료를 먼저 살펴보기 바란다.

[선수학습]

2020/01/01 - [Language/파이썬 Python] - 【파이썬 응용】파이썬 웹 크롤링(Web Crawling)

2020/01/02 - [Language/파이썬 Python] - 【파이썬 응용】 파이썬 웹 크롤링#2(Web Crawling) -검색결과를 csv파일로 저장하기

 

# 먼저 선수학습에 있는 내용을 참고하여,  핵심내용(타이틀 제목과 링크 주소)만 집어 내기 위해,  웹페이지에서 F12키를 눌러 웹 분석도구를 이용해서 'sh_blog_title',  title',  'href' 같은 요소들을 파악해 낸다. 

그런 다음, 아래코드를 주석을 참고하면서 작성한다. 

# 아래 url 주소 부분은 네이버 검색창에서 '파이썬'으로 검색 후 블로그 항목 클릭한 상태에서, 검색 하단에 보면, 검색 페이지들이 숫자로 되어 있는 부분이 있다.  여기 페이지 숫자 아무거나 하나를 클릭한다. 

그런 다음 나타나는 웹브라우저의 주소창의 주소를 복사해서 붙여 넣으면 되고,  주황색부분을 보면 기존에 있는 내용은 삭제를 하고 아래처럼 바꾸어 주면 된다.

 

주소 부분 : https://search.naver.com/search.naver?date_from=&date_option=0&date_to=&dup_remove=1&nso=&post_blogurl=&post_blogurl_without=&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC&sm=tab_pge&srchby=all&st=sim&where=post&start=1

 

위 주소부분을 카피해보면, 한글 검색의 경우 '파이썬'의 아스키코드 변환 값인 '%ED%8C%8C%EC%9D%B4%EC%8D%AC' 형태로 되어 있는데,  이 부분을 삭제하면 된다. 

이 부분을 삭제하고 변수로 입력받아 원하는 검색어로 검색하게 하려는 것이다. 

 

또한 검색하단에 검색 페이지 숫자를 클릭해서 나오는 값은 주소 끝부분에 나타나는데, 이 부분만 페이지를 바꾸어 누를 때마다 달라진다.   어떻게 변하는지 각 페이지를 클릭해보면 파악할 수 있다. 

1 페이지 끝 부분 숫자는 '1' 로 되어 있다.
2 페이지 끝 부분 숫자는 '11' 로 되어 있다.
3 페이지 끝 부분 숫자는 '21' 로 되어 있다.

위의 캡쳐 이미지를 살펴보면,  첫 페이지 끝 부분 숫자는 '1'로 되어 있고,  2페이지 끝 부분 숫자는 '1' 로 되어 있으며, 3 페이지 끝 부분 숫자는 '21' 로 되어 있음을 알 수 있다.

그렇다면, 4페이지는 숫자가 '31', 5페이지는 숫자가 '41'이런 식으로 바뀐다는 것을 짐작할 수 있게 된다. 

따라서, 이 숫자 부분을 변수 처리하여 원하는 페이지를 입력받아 해당 페이지까지만 검색결과를 저장하는 코드를 작성해 볼 수 있다. 

 

1. 코드 code

~~~~~~~~~~~~~~~~~~~~~~~~~~~

import csv

import urllib.request

from urllib.parse import quote_plus

from bs4 import BeautifulSoup

 

search = input('검색어를 입력하세요:')

pageNum = 1

i = input('검색할 페이지 수? :')   # 숫자를 입력받아도 input()함수는 문자로 저장된다.

# 블로그 검색 1페이지는 끝에 숫자가 01,  2페이지는 11, 5페이지는 41... 10페이지는 91 붙는다

lastPageNum = int(i) * 10 - 9

f = open(f'{search}.csv''w'encoding='utf-8'newline='' # 검색 제목을 입력하면 그 이름으로 파일 오픈(저장)

searchList = []

 

# 아래 주소 줄에서 주황색 부분, quote_plus() 를 추가하여 search에 한글 제목이 입력될 경우 , 한글제목.csv로 저장되도록 한다  '한글 검색어에 대한 대응(변환)을 위해 quote_plus( ) 함수 사용하여 변환.

# 검색 페이지별로 url이 달라지는 부분은 아래 주황색 부분인 것을 클릭해보면 알아 낼 수 있다. 

 

while pageNum < lastPageNum + 1:

    url = f'https://search.naver.com/search.naver?date_from=&date_option=0&date_to=&dup_remove=1&nso=&post_blogurl=&post_blogurl_without=&query={quote_plus(search)}&sm=tab_pge&srchby=all&st=sim&where=post&start={pageNum}'

    html = urllib.request.urlopen(url).read()

    soup = BeautifulSoup(html, 'html.parser')

    title = soup.find_all(class_='sh_blog_title')

    

    for i in title:

        temp = []

        temp.append(i.text)       # 각 타이틀 제목 저장

        temp.append(i.attrs['href'])  # 각 타이틀 제목의 링크 저장

        searchList.append(temp)

        print(i.attrs['title'])    # 콘솔창에 출력

        print(i.attrs['href'])      # 콘솔창에 출력

        print()  # 공백(빈줄) 출력

    pageNum += 10   # 페이지마다 주소 끝에 붙는 숫자가(pageNum) 10 단위씩 변하기 때문

 

f = open(f'{search}.csv', 'w'encoding='utf-8'newline='')

csvWriter = csv.writer(f)

for i in searchList:

    csvWriter.writerow(i)

f.close()

 

 출력 결과 :

1. 콘솔창 출력 결과

 

2. 엑셀 파일 출력 결과

아래와 같은 형태의 파일이 저장되었다. 

 이 파일을 엑셀과 같은 프로그램으로 열어 보면 저장이 되어 있다.  다만, 아래처럼 깨져 열리게 된다.

 이럴 때는 리브레 오피스 같은 걸로 열 경우(유니코드 UTF-8) 형식으로 옵션을 맞추어 열면 한글이 깨지지 않게 열린다. 

만약 MS엑셀 같은 걸로 열 경우는 열기 전에 Utf-8로 미리 설정하는 옵션이 없기 때문에, 

파이썬.csv 파일을 메모장으로 열고 메모장에서 열면 아래처럼 한글이 깨지지 않게 열리고, 

이를 다른 이름(파이썬 1.csv)으로 저장할 때 '인코딩(E)' 옵션 부분을 눌러 ANSI로 저장한다. 

그런 다음 MS 엑셀에서 열면 맨 아래 그림처럼 한글이 깨지지 않게 잘 열리게 된다.   

 

최종 엑셀 파일을 열어 보면,

(블로그 항목에서)  검색명은 '파이썬'으로 하였고,  검색 페이지 수는 '3'을 입력한 결과가 엑셀로 깔끔하게 저장된 것을 알 수 있다. 

검색 한 페이지당 10개의 내용(링크)이 있으니,  '3'페이지면 30개의 내용이 저장되어야 하니, 정확히 잘 저장된 것을 알 수 있다. 

 

이런 웹 스크래핑을 통하여, 일일이 검색하거나 일일이 캡처하지 않아도, 특정 검색 자료를 목록으로 정리할 수 있어, 활용도가 높다고 할 수 있겠다. 

 

파이썬, 코드 다운로드 :

webcrawling3-multipage.py
0.00MB

반응형
반응형

 응용】 파이썬 웹 크롤링#2(Web Crawling) -검색결과를 csv파일로 저장하기 

 

크롤링이란,  인터넷에서 특정검색(어)로 검색하여 (자료를) 긁어(스크랩) 모우는 행위를 일컫는다. 이를 파이썬코드나 시스템을 이용해서 반자동으로 긁어 모으로 과정을 일컫는다.  

 이 번 내용에서는 웹 검색 결과를 스크래핑하여 쉼표 단위로 저장이 되는 csv 형태로 저장하고자 한다. 

csv 형태로 저장하는 이유는 메모장에서도 열수 있고, 엑셀에서 군더더기 없이 셀(cell)별로 읽어 들여, 이후의 가공이나 편집이 용이하기 때문이다. 

 

이번에는 지난시간과 달리 검색되는 내용을 전체페이지 모두 긁어 저장하려 하는데,  PC버전 네이버로 검색하지 않고 모바일 버전인 네이버 M 버전으로 PC에서 검색하는 형태로 코딩을 구성하려 한다. 

왜냐하면 모바일 M 네이버의 (VIEW 메뉴 클릭) 하면, 검색 결과를 10개씩 페이지 별로 나타 내지 않고, 한 페이지에 모든 검색 결과를 담아 보여주기 때문인데,  스크롤 내리는 족족 검색되는 결과를 보여주기 때문에,  페이지 단위별 스크래핑을 고려 할 필요가 없기 때문이다. 

PC에서 모바일 버전 네이버 검색을 해보려면  m.naver.com 으로 접속을 하면 되며, 

검색창에 '파이썬' 검색을 입력하고 검색한 후 메뉴에서 View 를 클릭해서 보면, 

검색결과가 계속 내려도 한 페이지에 모두 표시 되도록 스크롤이 계속 내려가는 것을 알 수 있다.

 

그럼 이제 코딩을 해보자. 

먼저, 크롤링이 처음 이라면, 선수학습 자료를 먼저 살펴보기 바란다.

[선수학습]

2020/01/01 - [Language/파이썬 Python] - 【파이썬 응용】파이썬 웹 크롤링(Web Crawling)

 

 

# 먼저 네이버 모바일(M) 페이지에서 F12키를 눌러 웹 분석도구로 아래와(api_tx....) 같은 주요 특징(타이틀 제목 인근의 HTML 문법)을 파악해 낸다.

# api_txt_lines dsc_txt  

1. 기본 검색 코드

~~~~~~~~~~~~~~~~~~~~~~

import csv

from urllib.request import urlopen

from urllib.parse import quote_plus

from bs4 import BeautifulSoup

search = input('검색어를 입력하세요? :')

# 아래와 같이 하면 search 부분에 입력문자를 직접 대응시킬 수 있다.

# url = f'https://m.search.naver.com/search.naver?where=m_view&sm=mtb_jum&query={search}'

# 하지만, search 부분에는 입력된 한글이 웹에 사용하는 형식으로 인코딩 된 된 문자가 들어가야 한다. (quote_... 사용)

url = f'https://m.search.naver.com/search.naver?where=m_view&sm=mtb_jum&query={quote_plus(search)}'

html = urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')

total = soup.select('.api_txt_lines.total_tit'# 내용이 두 개임, 공백을 없애고 점을 찍어 붙여준다

print(total[0])

~~~~~~~~~~~~~~~~~~

여기까지의 '자바'라는 검색어를 넣어 결과를 출력해보면 아래와 같다.

2. 이제 반복문(for)을 넣어 검색결과를 모두 출력해보자.

~~~~~~~~~~~~~~~~~~~~~~

import csv

from urllib.request import urlopen

from urllib.parse import quote_plus

from bs4 import BeautifulSoup

search = input('검색어를 입력하세요? :')

# 아래와 같이 하면 search 부분에 입력문자를 직접 대응시킬 수 있다.

# url = f'https://m.search.naver.com/search.naver?where=m_view&sm=mtb_jum&query={search}'

# 하지만, search 부분에는 입력된 한글이 웹에 사용하는 형식으로 인코딩 된 된 문자가 들어가야 한다. (quote_... 사용)

url = f'https://m.search.naver.com/search.naver?where=m_view&sm=mtb_jum&query={quote_plus(search)}'

html = urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')

total = soup.select('.api_txt_lines.total_tit' # 내용이 두 개임, 공백을 없애고 점을 찍어 붙여준다

for i in total:

    print(i.text)

    print(i.attrs['href'])

    print()

~~~~~~~~~~~~~~~~~~

출력결과 :

 

3. 이제 여기에 

 

~~~~~~~~~~~~~~~~~~~~~

import csv

from urllib.request import urlopen

from urllib.parse import quote_plus

from bs4 import BeautifulSoup

# api_txt_lines dsc_txt  // 클래스가 두 개임.  따라서 아래 부분에 공백을 없애고 점을 찍어 붙여준다

search = input('검색어를 입력하세요? :')

# 아래와 같이 하면 search 부분에 입력문자를 직접 대응시킬 수 있다.

# url = f'https://m.search.naver.com/search.naver?where=m_view&sm=mtb_jum&query={search}'

# 하지만, search 부분에는 입력된 한글이 웹에 사용하는 형식으로 인코딩 된 된 문자가 들어가야 한다. (quote_... 사용)

url = f'https://m.search.naver.com/search.naver?where=m_view&sm=mtb_jum&query={quote_plus(search)}'

html = urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')

total = soup.select('.api_txt_lines.total_tit')

searchList = []

 

for i in total:

    temp = []

    temp.append(i.text)    # 텍스트 부분만 추출하여 저장(추가)함

    temp.append(i.attrs['href'])  # href '주소' 부분만 추출하여 저장(추가)함

    searchList.append(temp)

 

# newline=''는 첫번째 데이터다음 한줄 내려주는 역할이다.

# 한글 때문에 utf-8로 엔코딩한다.

f = open(f'{search}.csv''w'encoding='utf-8'newline='')

csvWriter = csv.writer(f)

# 반복문을 만들어 csv 파일에 하나씩 데이터를 추가(기록)해준다.

for i in searchList:

    csvWriter.writerow(i)

f.close()


 출력 결과 :

아래와 같은 형태의 파일이 저장 되었다. 

 이 파일을 엑셀과 같은 프로그램으로 열어 보면 저장이 되어 있다.  다만, 아래 처럼 깨져 열리게 된다.

 이럴때는 리브레 오피스 같은 걸로 열 경우(유니코드UTF-8) 형식으로 옵션을 맞추어 열면 한글이 깨지지 않게 열린다. 

만약 MS엑셀 같은 걸로 열경우는 열기전에 Utf-8로 미리 설정하는 옵션이 없기 때문에, 

파이썬.csv 파일을 메모장으로 열고 메모장에서 열면 아래처럼 한글이 깨지지 않게 열리고, 

이를 다른이름(파이썬1.csv)으로 저장할 때 '인코딩(E)' 옵션 부분을 눌러 ANSI로 저장한다. 

그런 다음 MS엑셀에서 열면 맨 아래 그림처럼 한글이 깨지지 않게 잘 열리게 된다.   

※ 컴파일 과정에서 에러가 난다면, url 부분에 공백이 들어가면 안 되니 확인해보면 된다. 

 

여기에서 일반 PC용 네이버 페이지를 이용하지 않고, M.naver 페이지의 View 메뉴를 이용한 이유는 검색어로 검색했을 때 페이지 단위로 검색이 되면 그 한 페이지(약 10개) 정도의 내용만 페이지 별로 분류가 되기 때문에 좀더 복잡한 코드(방법)을 사용해야 하기 때문이다.   

 

파이썬, 코드 다운로드 :

WebCrawlingCSV.py
0.00MB

반응형
반응형

응용】 파이썬 웹 크롤링#1 (Web Crawling)

 

크롤링이란,  인터넷에서 특정검색(어)로 검색하여 (자료를) 긁어 모우는 행위를 일컫는다. 이를 파이썬코드나 시스템을 이용해서 반자동으로 긁어 모으게 되는데, 

이를 웹스크래핑이라고도 부른다.   긁어 내는데 사용하는 도구인 아래 스크래퍼를 의미하는 용어가 사용 된 것이다. 

 

 

1. 네이버 검색창에서 '파이썬'으로 검색한 결과(블로그 항목만-클릭)을 띄워보면,  아래처럼 나타난다.

 

2. 위, 네이버 검색결과를 아래파이썬 코드를 이용해서 뽑아낼 수 있다. 

이를 위해 사용되는 요소가  BeautifulSoup(뷰티플 스웁) 이다.

 

import urllib.request

from bs4 import BeautifulSoup

 

url = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC'

html = urllib.request.urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')

print(soup)


하지만, 아래와 같은 엄청나게 많은 잡다한 형태로 출력이 된다. 

 

3.  현재 상태에서는 잡다한 웹페이지 내용까지 모두 코딩 결과창에 출력된다.  따라서,

아래는 웹(크롬) 브라우저 창에서 F12를 눌러 검색페이지별 제목('title')과, 링크 주소('href') 부분의 특정요소만 걸러서 나오도록 조치한 방법이다.   

검색 결과창의 웹 브라우저에서 F12 를 누르면 아래처럼 웹페이지의 분석도구를 사용할 수 있다. 

그래서 Html의 기본만 알아도 쉽게 파악 할 수 있으나,  전혀 모르더라도,  쉬운 것 몇 가지만 기억해두면 된다. 

예를 들어, 네이버 블로그에서는 HTML 문서에서 제목(타이틀) 앞에는 'sb_blog_title' , 그리고 'title' 글자가 항상 들어가 있다는 것과, 

링크 주소 앞에는 'href=...' 라는 형태로 되어 있다는 정도만 알아도 검색을 더 깔끔하게 할 수 있다.

F12 키를 눌러 웹 상에서의 분석도구를 불러낸 화면

 

 

import urllib.request

from bs4 import BeautifulSoup

 

url = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC'

html = urllib.request.urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')

title = soup.find_all(class_='sh_blog_title')

print(soup)

 

그래도 여전히 잡다하게 출력되어 보기 어렵다.

 

4. 네이버에서 검색창에 파이썬으로 검색하고, 블로그 항목(파이썬)의 Url 링크들만 크롤링 하는 방법

그리고, 웹페이지를 통하지 않고 검색어를 파이썬 터미널에서 직접 입력하도록 변경하는 법.

( 첫 페이지 약10개 검색에 한해서)

 

아래 주소 부분을 네이버에서 검색후 블로그 항목을 클릭한 후 복사해 온다.  

(주소부분 중 %ED%8C%8C%EC%9D%B4%EC%8D%AC 는 '파이썬' 검색어의 아스키? 변환값)

 

 

---  파이썬 코드 ---

import urllib.request

from bs4 import BeautifulSoup

 

baseurl = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query='

# 검색어인 " %ED%8C%8C%EC%9D%B4%EC%8D%AC " 부분을 빼고,  input(입력) 구문을 넣었다.

plusurl input('검색어를 입력하세요:')

url = baseUrl + plusUrl

html = urllib.request.urlopen(url).read()

 

soup = BeautifulSoup(html, 'html.parser')

title = soup.find_all(class_='sh_blog_title')

 

for i in title:

    print(i.attrs['title'])    # 제목('title') 부분만 출력

    print(i.attrs['href'])    # 링크 주소('href') 부분만 출력

    print() 

(단, 이 방법은 새로운 검색어를 입력 할 때 마다 주소를 복사해서 코드에 넣어야 하는 단점이 있다)  

출력 결과 1 :  (영문으로 'python' 입력 한 경우 : 영문의 경우 문제없이 잘 출력됨.)

출력 결과2 :  (하지만, 한글로 '파이썬' 입력 한 경우 : 한글입력의 경우 아래처럼 한글 변환에 문제가 되면서 에러가 남.)

 

5.  한글 검색에서의 에러 현상을 잡기위해 한글 변환 코드를 넣어 크롤링 해보자. 

 

import urllib.request

import urllib.parse  # 한글 검색어 변환 처리를 위해 임포트함

from bs4 import BeautifulSoup

 

baseUrl = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query='

plusUrl = input('검색어를 입력하세요:')

한글처리를 위해 추가됨 : urllib.parse.quote_plus()

url = baseUrl + urllib.parse.quote_plus(plusUrl)

html = urllib.request.urlopen(url).read()

soup = BeautifulSoup(html, 'html.parser')

title = soup.find_all(class_='sh_blog_title')

 

for i in title:

    print(i.attrs['title'])

    print(i.attrs['href'])

    print()

 

출력 결과 : 아래처럼 한글로 '파이썬'을 입력 후에도 결과가 제대로 출력 되었음을 알수 있다.

여기까지 되면,  추후에 간단히 파일 저장 명령어를 추가하여 검색결과를 파일로 저장 할 수도 있다. 

 

파이썬, 코드 다운로드 :

webscraper2.py
0.00MB

반응형
반응형

주피터 노트북 Jupyter notebook 시작시 "환경설정"  (로딩 딜레이 문제 해결)

 주피터 노트북을 설치를 하고서 실행시키면, 처음 띄워주는 폴더의 위치가 이상한? 곳에서 시작됩니다.

디폴트 위치가 보통 C:/Users/NOTE(컴퓨터이름) 로 되어 있는데,  이 폴더에는 파이썬 폴더 뿐 아니라 잡다한 윈도우 폴더들이 즐비해?있어 매우 복잡합니다.  또한 PC에 따라서는 여러 응용프로그램의 폴더와 설치폴더들의 조각들이 많이 존해할 경우 처음 로딩할때 꽤 많은 시간이 걸리는 불편함이 생기죠. (아래 이미지)

 

 이럴 때는 주피터노트북이 실행 될때의 디폴트(default) 위치를 잡아주면 간단히 해결 됩니다. 

우선, 기존 실행된 주피터 노트북이 있다면 로그아웃 하고,

 윈도우 실행창에서 'cmd' 입력하여 '커맨드명령어창'을 띄우거나, 아나콘다 설치후 등록되는 '아나콘다 프롬프트' 를 실행시킵니다. 

그리고 프롬프트 명령어창이 뜨면 아래와 같은 명령어를 입력하고 실행시킵니다.

>jupyter notebook --generate-config   (엔터)

그럼 아래처럼 주피터 노트북 환경설정 파일이 생성되며 생성된 경로도 알려줍니다. 

C:/Users/NOTE/.jupyter/jupyter_notebook_config.py

 

그럼 파일 탐색창을 열어 설치된 경로로 가서 환경설정 파일을 찾아 봅니다. 

 

 

환경설정 파일에 마우스 우클릭 후 연결프로그램을 메모장을 선택하여 열어 봅니다.

 

그럼 아래와 같은 파일 내용이 보일 거예요.

 

그럼, 위에 보이는 #c.NotebookApp.notebook_dir = '  '  항목을 찾아봅니다.

파일내용 길어서  Ctrl+F 키를 눌러 'notebook_dir' 입력하여 찾으면 바로 찾으실 수 있습니다.

찾았으면,  ' ' 속에 주피터 노트북이 실행 되었을 때, 로딩될 폴더를 새로 지정해 넣어 주면 됩니다 .

기존 폴더를 지정해 주어도 되며, 새로 폴더를 만들 경우 윈도우 탐생창에서 먼저 폴더 하나를 만들어 주어야 합니다.

저는 D 드라이브에 Jupyter_Project 라는 폴더를 하나 새로 만들었습니다. 

그리고 중요~!   경로 맨 앞에 # 을 삭제해 주어야 해당 라인이 실행(적용)이 됩니다.

 

 그리고 다시 주피터 노트북을 아래처럼 다시 실행시켜 보세요.

 

그럼 아래처럼 아주 깔끔한 폴더와 함께 ,  주피터 노트북 실행도 매우 빨리 될 거예요.   ^^

 

 

 

 

이상으로,  주피터 노트북 실행이 느리거나, 시작폴더 위치를 바꾸어주려 할 때(디폴트 위치) 해결하는 방법에 대해 설명 드렸습니다.   그럼 즐거운 파이썬공부 되세요~  ^^&

 

    

반응형