반응형

정말 오랜만에 해카톤에 참여하게 되었다. 

아직 못쓴 해카톤도 있지만 오프라인으로 하는 해카톤은 2019년 부경대 해카톤

이후로는 처음인 거 같다. 

 

내가 정션이라는 것을 알게 된 것은 작년이었다. 

거제도에 교육하러 나갔을 때 같이 갔던 분이 나가볼래?

제안을 주셨고 열심히 소개서를 적어서 제출했지만(하루전에 알았음) 떨어졌다. 

그때 "오 역시 아시아 최대 해카톤??" 이렇게 생각했다.  

 

그리고 1년이 흐르고 집에서 웹서핑 하다가 정션이 이번년도에도 부산에서 개최된다는 뉴스를

보게 되었고 바로 사람들을 모았다. (내가 안모았다.. 같이 일하는 사람한테 말했고 그 분이 다 모았다.)

아직 대학생이라는 환경때문에 팀원 전원이 모두 대학생으로 참가하게되었다.

웃긴건 이번에는 이틀전에 알게 되어서 정말 얼마 안남은 시간 집중해서 열심히 적었다. 

 

난 작년에 떨어지기도 해서 솔직히 붙을지 몰랐는데 붙었다.

아마 예상하기로는 작년에는 완전하게 팀을 안만들어가서 그런거 같기도 하고

정말 여러가지 종합적으로 판단한 거 같다. 

 

 

작년과 달라진 점은 숙소를 미리 잡아둔게 아니라서 참가자가 알아서 예약 및 결제를 진행해야한다.

대신 벡스코 근처 센텀 스파랜드 이용권 하나를 준다. 만약 2번 가고 싶으면 14000원을 내고 하나 더 살 수 있다. 

밑에 화면을 스캔하면 정션 아시아 2023에 들어갈 수 있다. 

이번에도 작년과 같이 벡스코 2전시장에서 개최되었다. 

1전시장 메인 광장에도 현수막이 달려있고 2전시장에도 있어서

신기하고 생각보다 웅장해서 놀랐다. 

 

웰컴키트 구성은 

티셔츠, 볼펜, 안대, 양말, 스티커, 메모지, 명찰, 텀블러 등등이 있었다. 

개인적으로 이번 티셔츠 디자인이 예쁘게 잘 뽑힌 거 같다. 

책상은 생각보다 다닥다닥 붙어있어서 다른 화장실 한 번 갔다오면 우리팀이 어디있는지 헷갈릴 수 있으니 주의해야한다.

테이블은 명찰을 받을때 자리를 배정받는다. 모니터는 생각보다 크고 눈이 부셔서 흰색은 쓰지 말아야겠다고 생각했다.  

6시가 넘어가고 오프닝과 트랙 소개가 되니 텅 비어있던 대회장이 사람들로

꽉찼다. 

 

트랙은 총 5개였다. 

1. 부산 X 신한은행

2. JAKA

3. SOLUM

4. 부산관광공사, groundK

5. CNT TECH

 

각 트랙별로 원하는 바를 소개하면 그 중에 골라 아이디어를 내어 

개발을 시작하는 것이었다. 

 

12시까지 트랙을 정해서 올리면 다음날 멘토링을 받을 수 있다. (물론 

최종 제출전까지 얼마든지 트랙을 바꿀 수 있으며 뒤에 부스에 트랙 담당자분들이 계셔서 

언제든지 멘토링을 받을 수 있다. 

 

나는 원래 생각하고 있던 아이디어가 있어 CNT 쪽으로 고르려고 하다가

팀원들과 이야기해보니 이 아이디어 팀원들을 설득하지 못할 거 같아 

얘기를 더 해보면서 데이팅앱으로 바꾸었다. 

 

아이디어가 정해지고 나서는 바로 개발에 들어갔다. 

우리의 최종 아이디어에 대한 소개이다. 

물론 이게 바로 정해진 것은 아니다. 

아이디어가 정해지고 나서 4번트랙을 정하고 

수차례 멘토링을 받고 개발자, 디자이너와의 이야기를 통해

아이디어를 구체화했다.

 

마지막날 아침은 모두가 밤을 새서 정말 너무나도 졸렸다. 

그때는 정말 결과가 어찌되어도 좋으니 끝내고 싶다는 생각이 들었다. 

 

발표 끝나니 뭔가 후련하기도 하면서 아쉬운 점이 자꾸 생각이 났다. 

만약 아이디어에 대한 결정이 좀 더 빨랐다면,,, 다른 트랙을 선택했다면,,, 애초에 아이디어를 정하기 않고 갔다면,,,

등등의 수많은 if문들이 생각이 났다. 물론? 그런 생각한다고 결과 안바뀐다. 

그래서 그냥 포기하고 밥 먹고 나서 수상을 기다렸다. 

 

 

결과는 상 못받았다. ㅋㅋㅋㅋㅋㅋ 

상을 못받은 기억이 오래되어서 이런 기분인지는 몰랐는데

별로였다. 

 

하지만 언제 나와도 해카톤은 정말 재미있는 경험인거 같다. 

그리고 다시 감을 찾고 달려야겠다는 생각이 많이 들었다. 

세상에는 정말 기획을 잘하고 개발이 잘하는 사람들이 정말 너무너무 많다는 걸 

다시 한 번 알게 된 거 같아서 돌아가서는 공부를 더 열심히 해야겠다는 생각이 들었다. 

반응형
반응형

아나콘다 설치하기 

파이썬으로 opencv를 하기 위해서는 아나콘다 설치해야합니다. 

 

하.. 예전에 아나콘다를 설치하다가 경로가 꼬여서 약간 고생한 기억이 있지만 노트북을 교체한 기념으로 다시 깔아보겠습니다. 

 

1. 먼저 아나콘다 사이트에 들어가서 최신 버전 아나콘다를 다운로드 해줍니다.

https://www.anaconda.com/products/distribution

 

Anaconda | Anaconda Distribution

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

이 화면에서 Download를 눌러줍니다.(본인 컴퓨터에 맞는 Intallers를 다운받으면 됩니다. 밑에 윈도우, 맥, 리눅스 세가지 중 골라 다운 받아주세요.)

전 윈도우를 쓰고 64비트이기 때문에 밑줄처진 버전을 다운받아 줍니다. 

컴퓨터가 몇 bit인지 알아보는 법 ⬇️

더보기

여기서 본인 컴퓨터가 64bit인지 32bit인지 확인하려면

컴퓨터 설정을 누르고 시스템-> 정보에 들어가서 보시면 저 밑에 시스템 종류가 나옵니다. 

보시다시피 64비트 운영체제, x64기반 프로세서라고 나와있습니다.

다운받은 아나콘다 setup를 눌러줍니다.

next 눌러줍니다.
I Agree 눌러줍니다.
Just Me 눌러준 후 Next를 눌러줍니다.
이 화면에서 수정하지 않고 Next를 눌러줍니다.
다운로드 후 Next를 누르고 finish를 눌러줍니다.

마지막 finish가 있는 화면에서 체크박스를 모두 해지한 후 finish를 눌러줍니다.

 

2. 아나콘다 환경 변수 설정 

시스템 환경 변수 편집을 쳐서 눌러줍니다. 

 

밑에 사진처럼 타고 들어가서 

C:\Users\yujin\anaconda3\Scripts

C:\Users\yujin\anaconda3\Library

C:\Users\yujin\anaconda3 

이렇게 경로 3개를 새로 추가해줍니다.

이렇게 변수 설정해준 뒤 재부팅을 해줍니다.

그렇다면 cmd창을 다시 켜준 후 이렇게 치고 hello world가 출력되는지 확인해보시면 됩니다. 

반응형
반응형

Make Utility

  • 소프트웨어 개발을 위해 유닉스 계열 운영 체제에서 주로 사용되는 프로그램
  • 여러 파일들의 의존성과 필요한 명령을 정의할 수 있음.
  • 컴파일 & 실행파일을 생성할 수 있는 표준문법이 있음. 
  • Makefile을 실행함.

장점 

  • 파일에 대한 반복적 명령 자동화로 시간 절약
  • 프로그램의 종속 구조를 빠르게 파악하고 관리가 용이
  • 단순 반복 작업 및 재작성을 최소화

Compiling libraries

gcc -c menu.c -o menu.o

gcc -c guest.c -o guest.o

Build(main)

gcc -o pizzashop main.c menu.o guest.o

Run 

./pizzashop

Makefile

make utility를 실행하면 Makefile을 읽어들임

구조

Target : 명령어가 수행된 결과 파일명 

- target(결과 파일이 있는 경우)/dummy target(결과 파일이 없는 경우)

Dependency : 대상 파일 생성을 위해 필요한 파일

(실행파일을 만들기 위해 사용되는 목적파일이나 소스파일들)

- 파일 수정 날짜 체크 

Command : 실행할 명령 문장

Macro : 코드 단순화

 

target2 : dependency1 dependency2

<tap>command1

<tap>command2

 

Macro 작성방법

  • NAME = 문자열 (관습적으로 NAME은 대문자 사용)
  • #주석문
  • \ 여러 행에 걸쳐서 문자열을 사용할 때 
  • $(NAME) 매크로를 참조 
  • 정의되지 않은 매크로를 사용하는 경우 NULL로 치환됨
  • 문자열의 따옴표도 문자열로 인식함.

Suffix rule

파일 확장자를 보고 그에 따라 적절한 명렬을 실행함.

C소스파일(*.c), 목적파일(*.o)을 인식

목적파일이 없는 경우 같은 이름의 C 소스 파일을 컴파일 하여 생성

Special Macros

$@ : 현재 Target 이름

$* : (확장자가 있는 경우에) 확장자가 없는 현재 Target

$< : 첫번째 dependency 이름

$^ : dependency 전체

$? : dependency중 현재 target보다 최근에 갱신된 파일 

반응형

'2021~2022 > 리눅스' 카테고리의 다른 글

vim 정리  (0) 2022.04.10
Linux 기본정리  (0) 2022.04.10
반응형

vim 실행 

Normal mode (Esc 키를 누르면 Normal mode로 이동)

Insert mode(i, a), Visual mode(v, ctrl+v : 행이나 블럭 단위로 선택), Command mode (/, : ) : 명령어 모드

Vim - cursor

[Esc] 클릭 후 일반모드로 전환하여 사용

h(←)j(↓)k(↑)l(→)

 

Insert mode

- 원하는 위치에 커서를 두고 편집을 시작 

  • i : 현재 커서 앞에서 편집 시작
  • a : 현재 커서 다음부터 편집 시작 
  • A : 현재 커서 줄의 맨 끝으로 이동하고 편집
  • o : 현재 커서 아래 새로운 줄 추가하여 편집
  • O : 현재 커서 위 새로운 줄을 추가하고 편집

[Esc] 클릭 후 일반모드로 전환하여 사용(밑에 모든 기능을 하기 전에)

Vim - 저장

  • :wq! - 저장하고 종료 
  • ZZ - 저장하고 종료 
  • :q! -종료 
  • :w newfile - 새로운 이름으로 저장

Vim - 열기

여러 파일 열기 

  • :vs filename - 수직 창 나누고 읽어옴 
  • :split filename - 수평 창 나누고 읽어옴
  • Ctrl + ww - 다른 창으로 이동

외부 명령어 실행 

  • : ! command(enter) 쉘 명령어 실행 후 Vim 복귀

Vim - 복사/붙여넣기

  • yy : 현재 라인 복사
  • 3yy : 현재 커서에서 3라인 복사
  • p : 현재 커서 아래 붙여넣기
  • P : 현재 커서 위에 붙여넣기

Vim - 삭제, undo, redo

  • x : 한글자 지우기 
  • dw : 현재 커서에 있는 한 단어 지우기
  • dd : 현재 라인 지우기 
  • 3dd :현재 커서부터 3라인 지우기
  • u : 마지막 명령 취소
  • U : 해당 줄 전체의 수정사항 취소
  • Ctrl + r : redo 기능 

 

Vim-replace, move

  • r : 한 글자 수정하기
  • cw : 단어를 변경할 때 사용(삭제 후 입력)
  • c& : 해당 줄 전체를 변경할 때 사용
  • E : 현재 라인의 끝으로 이동
  • G : 파일의 끝으로 이동
  • gg : 파일의 처음으로 이동
  • 3G : 3번째 라인으로 이동

Vim - find/search/replace

  • /keyword : 원하는 keyword 검색 
  • ?keyword : 원하는 keyword를 역방향으로 검색
  • n : 검색 결과에서 다음 문자열 찾기 
  • N : 검색 결과에서 이전 문자열 찾기
  • :%s/old/new/g - 차는 단어를 새 단어로 파일 전체 변경
  • :%s/old/new/gc - 사용자에게 물으며 변경
  • :%s/old/new/i - 대소문자 구분 없이 검색
  • :#,#s/old/new/g -줄 번호(#) 사이의 찾는 단어를 새 단어로 모두 변경

Vim visual mode

[Esc] 클릭 후 일반모드로 전환하여 사용

  • v : 현재 커서위치부터 문자 단위로 선택가능
  • V : 현재 커서위치부터 라인 단위로 선택가능
  • Ctrl + v : 현재 커서를 기준으로 블록 선택가능
  • p : 복사된 데이터를 현재 위치에 붙여넣기
  • P : 복사된 데이터를 마지막 라인에 붙여넣기
반응형

'2021~2022 > 리눅스' 카테고리의 다른 글

Make  (0) 2022.04.11
Linux 기본정리  (0) 2022.04.10
반응형

OS(Operating System)

  • 컴퓨터의 성능을 높이고, 사용자에게 편의성을 제공을 목적으로 컴퓨터 하드웨어를 관리하는 프로그램
  • 사용자와 컴퓨터 간의 인터페이스 역할을 하는 시스템 소프트웨어
  • 어플리케이션과 하드웨어 사이에서 하드웨어와 어플리케이션을 관리하는 인터페이스적인 역할을 함. 

종류 

- window

- maxOS

- Linux

- RreeBSD

- SOLARIS

- SunCobalt

- redhat

 

Linux System

  • 1991년 핀란드 헬싱키 대학의 리누스 토르발스가 취미로 만든 운영체제
  • 리눅스 커널을 사용하는 운영체제
  • Linux : Linus' *nix(리누스의 유닉스)
  • 소스코드가 공개된 대표적인 오픈 소스 소프트웨어
  • 모바일 운영체제 안드로이드의 기반으로 사용
  • 수많은 개발자들이 오픈소스를 가지고 활동중 

특징

  • Multi-User, Multi-Tasking
  • 다양하고 뛰어난 네트워크 환경 및 파일씨스템 지원
  • 유연성과 확장성, 안정성, 보안성
  • 우수한 가격대 성능비 : PC급 서버에서 Enterprise급 성능
  • 다양한 응용프로그램 제공
  • - 셀(Shell)과 기본 명령어 지원, X Window 시스템, 편집기 등등
  • 다양한 배포판이 있음 (도움을 받을 수 있는 - 유료)

Architecture

위로 올라갈수록 밑을 제어, 관리한다고 생각

Shell

  • 명령어나 유틸리티, 프로그램을 실행할 때 사용하는 인터페이스를 제공하는 프로그램
  • 커널과 사용자 사이에서 명령어를 해석하여 전달
  • 쉘 자체 프로그래밍 기능이 있음
  • 사용자 환경 설정 기능을 제공
  • sh, bash, csh 등등 (사용하는 문법도 다 다름)
  • CLI(Command line interface)
  • 쉘 확인 echo shell -> echo : 확인한다는 명령어

Linux Directory Structure

/(root)

/bin : Essential User Binaries

/dev : Device Files

/etc : Configuration Files

/home : User's Home Directories

/lib : Essential Shared Libraries

/usr : User Binaries

/var : Variable Cache/lock/lib/spool/mail

 

Client, Server

  • 서버에 클라이언트가 접속하여 필요한 작업을 수행 (서버는 24시간 수행)
  • 서버에 로그인하여 명령을 실행하기 위해서는 응용프로그램 필요 
  • 프로토콜

- ssh/telnet

- http/https

-ftp/sftp

-smtp

-pop3/imap

-nntp

 

Shell Commands

ls : 현재 디렉터리에 있는 파일과 디렉터리 목록확인

ls -a : 현재 디렉터리에서 숨겨진 파일과 디렉터리 목록 확인(all)

ls -l : 현재 디렉터리에서 파일과 디렉터리 목록을 자세히 확인(long)

ls -al: ls -a와 ls -l를 합친 명령어

ls -R : 자세히 출력

pwd : 현재 작업중인 경로 출력(절대경로)

cd : 원하는 디렉터리로 이동

mkdir :  새로운 디렉터리 생성

rmdir : 디렉터리 삭제

 

Path 

절대경로 

  • 루트 디렉터리로 시작하여 원하는 디렉터리까지 경로를 기술
  • 현재 위치와는 상관없음.

상대경로 

  • 현재 위치를 기준으로 원하는 디렉터리를 기술하는 방식
  • ./ : 현재 디렉터리를 의미
  • ../ : 상위 디렉터리를 의미

Command

cat

  cat [옵션] [파일명]
      옵션
        -n        : 모든 라인 앞에 라인 번호 출력. (빈 라인도 번호 출력)
        -b        : 비어 있지 않은 라인에만 번호 출력
        -E        : 라인의 마지막에 $ 기호 출력. (빈 라인도 $ 기호 출력)
        -T        : 탭 문자를 ^I로 바꿔서 출력
        -s        : 두 번 이상 연속된 빈 라인(empty line) 출력 안함
        -v        : 탭(TAB)과 줄바꿈(LFD)을 제외한 nonprinting 문자를 ^, M-를 사용하여 표시
        -e        : -vE와 결과 같음. 줄바꿈(LFD)을 포함한 nonprinting 문자 표시
        -t        : -vT와 결과 같음. 탭(TAB)을 포함한 nonprinting 문자 표시
        -A        : -vET와 같음. 탭(TAB), 줄바꿈(LFD)을 포함한 nonprinting 문자 표시

 

rm

  • 파일이나 디렉터리를 삭제하는 명령어
  • 삭제 후 취소하는 명령어가 없음.
  • rmdir 디렉터리에 하위폴더나 파일이 없을 때 삭제하는 명령어
  • 디렉터리내에 하위폴더나 파일을 모두 삭제 : rm -rf

ln

  • 리눅스 파일 시스템에서 파일 링크를 만드는 명령어
  • Hard link : 파일의 I-node를 공유해서 사용 - ln [원본] [링크이름]
  • Symbolic link : window의 바로가기와 같은 링크 - ln -s [원본] [링크이름]

IO Redirection

표준스트림을 다른 경로로 재지정

> : 파일에 작성

>> : 파일에 추가

2>&1 : stderr를 stdout으로 재지정할 때 사용

cat > 파일이름 : 파일에 작성하고 나서 ctrl + d 누르면 저장

 

Pipe | 

프로세스나 프로그램의 결과를 다른 프로그램으로 넘겨줄 때 사용

cat -n (앞에 번호 출력)

앞에서 사용한 결과물을 뒤에 명령어의 입력값으로 넘겨줌. 

ex) 

cat -n data.txt | grep Hello 

|가 cat-n data.txt를 grep 명령어에 입력값으로 넘겨줌. 

 

 

Ownership, Permission

리눅스에서는 파일과 디렉터리에 대해 소유권가 허가권을 설정할 수 있음

소유권 - 소유자와 소유그룹 설정

허가권 - read/write/execute

- rwxrw-r--

rwx : 소유자의 권한

rw- : 소유그룹의 권한

r-- : 사용자의 권한

 

chmod 

파일이나 디렉터리의 permission 변경

-rw-rw-r-- -> rwxr-xrw-

Absolute mode : 숫자로 설정

chmod 756 list.txt

 

Symbolic mode : u/g/o/a, +/-/=

chmod u+x list.txt

chmod g-w+x list.txt

chmod o+w list.txt

 

umask 

새로 만들어진 파일 또는 디렉터리의 권한을 어떻게 설정할 지 제어하는 마스크 설정

파일의 기본허가권 : 666, rw-rw-rw-

디렉터리의 기본 허가권 : 777, rwxrwxrwx

뒤에 3자리가 umask

touch : 빈 파일 생성 touch [파일명]

chown, chgrp 

시스템 관리자를 위한 명령어

chown : 파일이나 디렉터리 소유자 및 소유그룹 변경

- chown user:group filename(or directory) : 파일에 대하여 소유자와 소유그룹을 변경

- chown -R user:group directory

chgrp : 파일이나 디렉터리 소유그룹 변경

 

su, sudo 

시스템 관리자를 위한 명령어 

su : 현재 계정에서 다른 사용자로 로그인

  • 로그인하려는 계정의 암호 필요 
  • su : su root
  • su - : 다른 계정 로그인 + 로그인 계정의 쉘 환경 사용

sudo : 슈퍼유저의 보안 권한으로 프로그램을 실행할 수 있게 해주는 명령어

  • sudoers에 등록된 사용자만 사용가능 
  • root의 암호가 아니라 현재 로그인된 암호를 사용하면 됨.
반응형

'2021~2022 > 리눅스' 카테고리의 다른 글

Make  (0) 2022.04.11
vim 정리  (0) 2022.04.10
반응형

 

<VS Code 설치>

 

https://code.visualstudio.com/download

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

이 사이트를 들어가서 

이걸 눌러서 다운 받습니다.

그리고 나서 

라이선스 계약서에 동의합니다를 누르고 다음을 누르면 

아시죠? 이런 폴더 위치에 민감한거 하지만 그냥 우선 넘어가시면 됩니다.

넘어갑니다.

원래는 밑에 두 항목만 선택되어 있는데 저는 나머지 항목도 모두 필요하기 때문에 모두 선택한 후 다음을 눌러줍니다.

마지막으로 설치 위치와 시작메뉴 폴더, 선택항목을 모두 확인한 후 설치를 눌러줍니다.

설치를 완료했습니다.

이제 다음 단계로 넘어가보겠습니다.

 

 

VS Code에서 C/C++를 눌러 설치를 하고 


<MinGW설치>

VSCode는 컴파일러가 필요하기 때문에 밑에 사이트에 들어가서 다운을 해줍니다.

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

 

MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net

×

sourceforge.net

다운을 하면 이런 화면이 나옵니다.

우선 Install를 눌러 다운을 받아줍니다.

아무런 수정 없이 그냥 바로 Continue를 눌러줍니다.

다운이 진행되고 있습니다. 

우선 

mingw-developer-toolkit

mingw32-base

mingw32-gcc-g++

이렇게 세개를 클릭한 후에 (

Apply Changes를 눌러주고 밑에 사진 처럼 화면이 나오면 

Apply를 눌러 다운로드를 합니다.

다운로드가 진행되고 

Close를 눌러줍니다.


<환경 변수 설정>

윈도우키를 누르고 환경을 치면 시스템 환경 변수 편집이 나옵니다. 눌러서 들어가면

그럼 시스템 속성에 들어가서 환경 변수가 보입니다.

눌러주고 

이런 화면이 나옵니다. 그러면 시스템 변수에서 path를 눌러

새로 만들기를 눌러 C:\MinGW\bin 이렇게 적어 추가해줍니다.

 

아까 한 것을 확인하기 위해 

윈도우 + r를 눌러서 cmd창을 들어가줍니다.

cmd창을 들어가서 gcc -v를 쳐서 확인해주고 

다음 g++ -v를 쳐서 확인해줍니다.

그리고 VS Code에 들어가서 

 


<파일 코드 수정>

Ctrl + Shift + P이나 f1을 눌러서 c_cpp_properties.json를 들어가서 수정을 해야합니다.

defines와 compilerPath사이에 아래 코드를 추가해줍니다.

"browse": {
                "path": [
                    "C:/MinGW/lib/gcc/mingw32/6.3.0/include",
                    "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed",
                    "C:/MinGW/include/*",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },

그 다음 다시 f1을 눌러 

Tasks: Configure Task을 눌러서 tasks.json파일이 생성됩니다. (저는 Other을 눌렀습니다.)

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "tasks": [
        {
            "label": "save and compile for C++",
            "command": "g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group":"build",

            "problemMatcher":{
                "fileLocation":[
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern":{
                    "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C","${fileDirname}/${fileBasenameNoExtension}"
            ]
        }
    ]
}

이 코드를 이용하여 수정해줍니다.

단축키를 설정 해야하는데요

파일 -> 기본설정 -> 바로가기 키 -> workbench.action.tasks.test 눌러서 

Ctrl + <Alt> + c를 눌러서 저장합니다.

helloworld.c을 만들어서 helloworld를 출력해줍니다.

ctrl+shift+B를 눌러 빌드해주고, ctrl+alt+C를 눌러 실행해줍니다.

 

밑에 helloworld가 출력되는 걸 보실 수 있습니다.

 

 

⭐설치하는데 많은 도움을 받은 주소⭐

https://0netw0m1ra.tistory.com/3

 

[VScode] Windows10. Visual Studio Code(VS Code) C/C++ 설치

(Windows10 기준) 1. VS Code를 먼저 설치합니다. code.visualstudio.com/download 2. VS Code를 실행시키고, c/c++을 설치합니다. 3. C/C++을 위해 컴파일러를 설치합니다. VS Code는 컴파일러를 지원하지 않으..

0netw0m1ra.tistory.com

 

https://webnautes.tistory.com/1158

 

Visual Studio Code에서 C/C++ 프로그래밍( Windows / Ubuntu)

Windows와 Ubuntu 환경에 설치된 Visual Studio Code에서 C/C++을 컴파일하고 실행시키는 방법에 대해 설명합니다. 테스트에 사용한 운영체제 버전은 Windows 10과 Ubuntu 20.04입니다. Visual Studio Code 버전에..

webnautes.tistory.com

 

반응형

'Setting' 카테고리의 다른 글

Dev-C++ 테마 변경하기  (0) 2020.03.27
반응형

플러터를 설치해야 해서 인터넷에 검색했는데 비주얼스튜디오코드랑 안드로이드스튜디오를 설치해야합니다.

옛날의 제가 설치해놨네요^^ 기특해라

둘다 깔려있어서 바로 패스하고 cmd창 켜서

flutter doctor

를 검색했는데 엥????

캡쳐를 안해서 사진은 못 보여드리지만?

Android toolchain - develop for Android devices (Android SDK version
    30.0.3)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup
      for more details.

이따구로 메세지가 나와서 바로 밑에 flutter doctor --android-license를 쳐서 깔아줬는데 또 sdk가 어쩌구 그러면서 안된다는 거에요;;

그래서 안드로이드 스튜디오 들어가서 

메인 페이지에서 어디갔지? 하다가 More Actions 눌러서 SDK Manager 들어감.

들어가서 

Android SDK Build-Tools 33-rc1

Android SDK Command-line Tools(latest)

Android Emulater

Android SDK Plaform-Tools

Intel x86 Emulator Accelerator(HAXM installer)

누르고 ok 눌러서 설치 했습니다.

 

그리고 다시 cmd 창을 켜서 

flutter doctor --android-licenses

치니까 막 설치되더라구요.

그래서 기대하면서 다시

flutter doctor를 쳤는데!!!!!!!!!!!!!!!!!!!!

 

안됨...또 안됨.... 이번에는 Flutter doctor - Android Studio (not installed)

이런 오류가^^ 생김 그래서 

찾아봤더니 안드로이드 스튜디오 경로를 지정해주면 된다고 해서

flutter config --android-studio-dir="C:\Program Files\Android\Android Studio" 를 쳐서 

해결해줌. 

 

그리고 속으로 기도하고 다시 flutter doctor를 쳤는데 이번에는..

성공^^

그래서 미친듯이 연속 y를 눌러 

 

짜잔^^ 성공 플러터 앞으로 잘해보자

 

반응형
반응형

모듈(modules)이란?

 

표준 라이브러리의 일부분임다

파이썬 프로그램에서 사용되기 위한 명령문을 포함하고 있는 파일 이것 때문에 파이썬이 사기라고 불리는 거 같아요 근데 사용해보니까 진짜 오지게 좋긴함ㅇ요...ㅍ...ㅏ..파이썬 짱!!

 

ex) random, math, string, turtle 등등

 

math  module

대표적인 2개를 소개해볼게요

우선 아래 함수들을 쓰기 위해서는 import math라는 코드를 써줘야 합니다. 

import math 는 math library를 사용한다는 뜻입니다. 

 

1. math.pow(x,y)

제곱을 구하는 함수로, x의 y승을 구하는 함수입니다.

2. math.sqrt(x)

제곱근을 구하는 함수로, x의 제곱근 즉, 루트 x의 값을 구하는 함수입니다. 

 

재귀함수 

재귀 : 함수가 함수 내용에서 자기자신을 호출하는 프로그래밍 

재귀함수는 재귀로 정의된 함수를 지칭하는 것이죠. 

재귀함수에는 종료조건을 꼭 명시해야합니다. 아니면, 무한루프에 빠져 머리 쥐어뜯을수도...

 

def pow(n1, n2):
	if n2 == 0:
    	return 1
    else
    	return (n1*pow(n1, n2-1))
        
print(pow(2,4))
# 출력결과 : 16

이렇게 사용할 수 있다는 거쥬. 

 

format()도 한 번 보도록 하겠슴다 

사용 방법 : '{인덱스 번호 0}'.format(값0), {인덱스 번호 0}, {인덱스 번호 1}'.format(값0, 값1)

age = 30
name = "JohnTheBaptist"
txt = "His name is {1}.  {1} is {0} years old.“

print(txt.format(age, name))

 여기서 {1} 은 format()안 1번째는 name를 의미하고, {0}은 format()안 0번째는 age를 의미합니다. 

 

활용하면

for x in range(1, 10):
    print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))

이렇게 됩니다. 

뒤에 2d, 3d, 4d는 정수의 자리를 표현하는 방법입니다. 02d라고 쓰면 남는부분이 자동으로 0으로 채워지고, 그냥 2d라고 치면, 공백이 채워집니다. 그냥 {2:2}라고 써도 2의 자리에 2자릿수로 된다라는 의미로 된대요. 저도 이거 안지 얼마 안되어서 아직 잘 모름...힛...공부 열심히 할게요 

 

그렇다면, 소수는 어떻게 표현할까요?

 

소수점 자리를 표현할 땐 '0.2f'이러식으로 표현합니다. 이것도 마찬가지로 남는 부분에 0이 채워집니다. 

 

우선 여기까지인데 또 알게 되면 호다닥 올릴게요~ 그럼 안녕~

반응형

'Python' 카테고리의 다른 글

02 파이썬 함수  (0) 2021.05.21
01 파이썬 리스트(list)  (0) 2021.05.20
00 파이썬 시작(기초 문법)  (0) 2021.05.19
반응형

저는 코딩할 때 함수를 자주 쓰는 편인듯함니다.. 왜냐하면 약간 나눠져 있어서 보기가 편함. 물론 지극히 개인적인 의견임 이건 

이번에도 역시 출처는 

우리 학교 교수님 ppt 

교수님 진심으로 사랑합니다 오늘이 시험인 거 빼고요 

 

함수를 사용하는 이유

: 코드가 길어질 때 모듈화하여 간결성을 높이기 때문

 

모듈화 하였을 때 장점

1. 고치기 쉬움.

2. 운영과 관리를 용이하게 함.

3. 프로그램 가독성을 높여줌.

 

뭐 등등 이러한 이유로 쓴다고 합니다. 참고하시길 

그럼 이제 함수를 어떻게 정의하고 사용하는지 등등에 대해 알아보겠음욧

 

함수는 크게 2가지로 나눌 수 있어요 

내장 함수 / 사용자 정의 함수 

 

오늘 설명 할 건 사용자 정의 함수.

 

사용자 정의 함수가 뭐냐 말 그대로 사용자가 정의하는 함수, 즉 프로그래머가 만드는 함수에요 

그러니까 함수 이름과 내용을 마음대로 만들 수 있다는 소리 개꿀이죠?

 

사용자 정의 함수는 만드는 방법 

1. 함수의 기능을 정하고, 이름을 만든다. 

- 주로 함수의 이름은 기능과 관련한 이름으로 짓는 편이에요 그래야 나중에 코드를 볼 때 이해하기가 쉽기 때문...☆

2 함수의 입력과 결과가 무엇인지 정한다. 

3. 입력으로 사용하는 파라미터와 리턴 값의 데이터형을 정한다.

 

방금 읽은 걸 이해하셨나요? 못 이해하셔도 됩니다. 그게 아마 대부분이 그럴 거에요 (통계적인 수치는 모르구요 그냥 느낌상..ㅎ )

 

이제 진짜로 함수를 어떻게 사용하는지 볼게요 

def plus(a, b):
	sum = a + b
    return sum
num1 = int(input("첫번째 정수를 입력하세요 : "))
num2 = int(input("두번째 정수를 입력하세요 : "))

print(num1, "+", num2, "=", plus(num1, num2))

먼저 def라는 걸로 정의한다고 알려줍니다. 그리고 나서 함수 명을 plus라고 달아주었어요. 

저기 보시면 a와 b가 있죠? 이게 파라미터라고 하는 겁니다. 이건 마음대로 정할 수 있어요 뭐 1개, 2개 상관없고 자료형을 무엇을 하던 상관이 없습니다. 다만 위에 print문에서 함수를 호출 할 때 위에 파라미터와 같은 자료형으로 넣어야 한다는 거죠. 만약 자료형을 다르게 넣는다면 실행이 안됨. 그리고 계산한 값을 리턴해줍니다. 그러니까 쉽게 봐서 plus(num1, num2) 은 sum과 같다는 소리죠.

 

우선... 설명은 여기까지인데 앞으로 보시는 대부분의 코드에 함수가 있을 겁니다. 그걸 참고 하시면 좋을듯요 

사실, 파이썬을 올리는 거 자체가 처음배우는 사람들에게 알려주는게 아니라 온전히 그냥 기록용이라서 ☆참고☆만 하시면 됩니다. 

 

그럼 봐주셔서 감사해요 20000 뿡~

진심

반응형

'Python' 카테고리의 다른 글

03 파이썬 모듈  (0) 2021.05.21
01 파이썬 리스트(list)  (0) 2021.05.20
00 파이썬 시작(기초 문법)  (0) 2021.05.19
반응형

우선, 리스트에 대해 소개해야 겠음. 근데 이런 거 잘 안읽지 않나요? 그래도 우선 써볼게요

출처 : 우리학교 교수님 ppt

교수님 사랑해요

 

List(목록 또는 배열)

:값들의 나열이다

-  리스트 안 구성 요소를 원소 또는 항목이라고 부른다. 

특징 (잘 알아둬야 함요 나중에 튜플이랑 헷갈릴 수도 있어요 누가 그러냐고요? 제가 그랬음ㅋ)

1. 다양한 종류의 데이터 타입으로 구성 가능 

2. 내용 변경이 가능 

 

리스트 함수들

1. 추가  

1) .append()

- 리스트 내에 새로운 아이템 한개를 추가하여, 마지막에 위치한다.

사용방법 : 리스트이름.append() ex) list.append(), array.append()

list = []
for i in range(10):
	list.append(i)
print(list)
#출력결과 :  [0,1,2,3,4,5,6,7,8,9]]

저는 이 함수를 제일 많이 썼음요. 하나의 객체로 추가된다는 점 유의하시길...☆

 

※ '+' 연산자로도 추가할 수 있다는 거 (후...진짜 꿀팁인데 제가 알려드릴게요 진짜 운 좋은 줄 아세요^^)

a = [1,2,3]
b = [4,5]
c = a+b
print(c)
#출력결과 : [1,2,3,4,5]

 

2) .insert()

- 리스트 내에 index 번호와 아이템 내용을 추가한다.

사용방법 : 리스트이름.insert(index, [추가할 내용])

이 함수는 자료형이 같아도 객체로 저장됨.

요롷게↓

arrays = [1,2,3]
arrays.insert(1, [4,5])
print(arrays)
#출력결과 : [1, [4,5], 2, 3] 

3) .extend()

 

- 다른 이름의 리스트, 아이템을 모두 추가한다. 

사용방법 : 리스트이름.extend([추가할 내용])

 

여기서 주의!! .insert()와 다르게 추가할 내용이 리스트 내에 있는 원소들의 자료형과 같아야함.

그러니까 정수형이라면 정수형으로 추가해야한다는 소리임.

arrays = [1,2,3]
arrays.extend([4,5])
print(arrays)
#출력결과 : [1, 2, 3, 4, 5] 

2. 정렬 

 .sort(), .reverse()

  (1) .sort()

사용방법 : 리스트이름.sort()

기본적으로 오름차순으로 정렬해준다. 순서의 기준은 ascii code순(그냥 우리가 흔히 아는 숫자 순서라고 생각하심 됩니다.)

arrays = [1,3,5,2,7]
arrays.sort()
print(arrays)
#출력결과 : [1, 2, 3, 5, 7] 

내림차순으로 정렬하고 싶으면 reverse = True을 쓰면 됨.

사용방법 : 리스트이름.sort(reverse = True)

짜란☆

arrays = [1,3,5,2,7]
arrays.sort(reverse = True)
print(arrays)
#출력결과 : [7, 5, 3, 2, 1] 

  (2) .reverse()

리스트를 거꾸로 뒤집어 준다. 

사용방법 : 리스트이름.reverse()

arrays = [1,3,5,2,7]
arrays.resverse()
print(arrays)
#출력결과 : [7, 2, 5, 3, 1] 

3. 삭제 

1) .pop()

리스트 내에 존재하는 아이템의 index 번호를 입력받아 삭제한다.

사용방법 : 리스트이름.pop(지우고 싶은 원소의 인덱스 값)

만약 arrays = [1,2,3,4,5]라는 아이템이 있을 때 3를 삭제하고 싶다면

원소 3의 인덱스 번호인 2를 넣어야 한다. -> arrays.pop(2) 

arrays = [1,2,3,4,5]
arrays.pop(2)
print(arrays)
#출력결과 : [1,2,4,5]

2) .remove()

사용방법 : 리스트이름.remove(지우고 싶은 원소)

리스트 내에 존재하는 아이템을 삭제, 동일한 아이템이 있으면 처음 아이템만 삭제 

여기서는 인덱스 번호가 아닌 원소를 넣어야한다.

arrays = [1,2,3,4,5,2,3,4]
arrays.remove(2)
print(arrays)
#출력결과 : [1,3,4,5,2,3,4]

 

자 여기까지 리스트 기본 함수....? 암튼 자주 사용하는거랍니다. 근데 저는 이마저도 다 사용안하구요...그냥 몇개 골라 씀..가끔 생각안나면 함수 안쓰고 풀기도 함(찡긋)

 

활용편

이걸 자주 쓰나? 싶은 의문이 들 수 있어요. 왜냐면 지금 제가 그렇거든요. 아직 시험 칠 때 빼고 한번도 쓴 적이 없어요....아무래도 백준에 입성해야 될듯...ㅠㅠ 헝헝 아직 파이썬으로 백준 문제 안풀어봤음요....내일 시험 끝나고 도전해볼것임

1) .split()

문자열을 단어 단위로 잘라서, 리스트로 생성

사용방법(집중하세요. 좀 많음;;)

 (1) 문자열.split()

word = "Hi, my name is hungry"
word = word.split()
print(word)
#출력결과 : ['Hi,', 'my', 'name', 'is', 'hungry']

 (2) 문자열.split('구분할 문자')

word = "Hi, my/ na/me is h/ungry"
word = word.split('/')
print(word)
#출력결과 :  ['Hi, my', ' na', 'me is h', 'ungry']

 (3) 문자열.split('구분할 문자', '분활할 횟수')

보시면 코드에 word = word.split('/',2) 가 있죠? 말 그대로 2번 나누니까 3개가 되겠죠? (, 갯수가 2개)

word = "Hi, my/ na/me is h/ungry"
word = word.split('/',2)
print(word)
#출력결과 : ['Hi, my', ' na', 'me is h/ungry']

 (4) 문자열.split(sep = '구분할 문자', maxsplit = '분활할 횟수')

이게 가장 정확한 함수래요 제가 정말 귀찮아서 위에 걸 주로 쓸 거 같죠? 근데 저 은근 쫄보라서 이거 썼어요

word = "Hi, my/ na/me is h/ungry"
word = word.split(sep = '/',maxsplit = 1)
print(word)
#출력결과 : ['Hi, my', ' na/me is h/ungry']

 

2) .join()

리스트를 문자열로 생성해줌. (.split()와 반대 기능)

사용방법 : '구분할 문자'.join(리스트이름)

list_word = ["Hi,","my", "name"," is", "hungry"]
word1= ' '.join(list_word)
word2= '/'.join(list_word)
print(word1)
print(word2)

'''
출력 결과 
Hi, my name  is hungry
Hi,/my/name/ is/hungry
'''

 

함수를 사용한 코드 

1. 소수 찾기 

num = int(input("양의 정수를 입력하세요 : "))
bol = True

prime = [1]

for i in range(2, num):
    if num % i == 0:
        prime.append(i)
        bol = False

prime.append(num)

if bol == True:
    print(num, '은 소수입니다.')
else:
    print(num, '은' , prime, '이라는 약수를 가지고 있으므로, 소수가 아니다.')

'''
출력 결과 :
양의 정수를 입력하세요 : 15
15 은 [1, 3, 5, 15] 이라는 약수를 가지고 있으므로, 소수가 아니다.
'''

2. 리스트에서 가장 큰 수 찾기 (물론 if문과 for을 써서 풀어도 되지만 저는 sort함수 사용을 위해 한 것이니 용서 부탁드려요^^)

array = [1, 3, 6, 2, 8, 4, 10 ,24, 31, 22, 19, 49, 22, 10]
temp = len(array)

array.sort()

print("리스트 내에서 가장 큰 수는 ", array[temp-1])
# 출력결과 : 리스트 내에서 가장 큰 수는  49

 

짝짜짜ㅏㅏㅏ자ㅉㄲㄱ짞짝

수고 하셧슴니다 모두모두 읽어주서셔 감사해용 그럼 뿡~

저의 마음입니다

반응형

'Python' 카테고리의 다른 글

03 파이썬 모듈  (0) 2021.05.21
02 파이썬 함수  (0) 2021.05.21
00 파이썬 시작(기초 문법)  (0) 2021.05.19

+ Recent posts