분류 전체보기
카테고리의 게시글
56개
텐서플로의 GradientTape와 with문
파이썬의문나를 괴롭힌 것은 책에 나온 이 짧은 코드이다:import tensorflow as tfx = tf.Variable(0.)with tf.GradientTape() as tape: y = 2 * x + 3grad_of_y_wrt_x = tape.gradient(y, x)의문: 내가 파이썬 경험이 많진 않지만; with문은 단지 자원을 확실하게 반납하는 데 도움을 주는, try-except-finally보다 더 편리한 예외처리 문법이라고만 알고 있었다. 그런데 저 코드는 두 가지가 이상해 보였다.with문의 취지가 안전한 자원 획득 및 반납이라면; 이미 반납한 자원을 쓰는 일은 있을 수 없지 않나? 그런데 저기선 tape 변수가 with문 밖에서 쓰인다. 더군다나 이게 예외적인 상황이 아니라 일반적.. 2025.06.08. Kim Evergoodjava.time 패키지 날짜 관련 타입 정리
프로그래밍 잡메모/Javajava 커스텀 달력 구현시 볼 것.하루중시간은 나중에 추가될 수 있을 거 같기도?java.time.chrono.Chronology: 암만 봐도 역법을 나타내는 타입이 맞는 거 같은데. 왜 이름이 'Calendar'가 아니니가 했더니; Calendar 타입이 따로 있었다. 챗지피티 답변은 Calendar 등을 쓰던 예전 방식에 문제가 있어서 java8에서 새로 java.time이 생겼는데 이름 충돌을 피하기 위함이라는군. 2025.05.02. Kim Evergood(스프링부트) (지메일) 이메일발송
창고 | 예제지메일(구글) 계정을 이용합니다.앱 비밀번호 발급하기참고: 구글 도움말 - 2단계 인증참고: 구글 도움말 - 앱 비밀번호구글에 로그인합니다.구글 계정 설정에서 2단계 인증을 사용하도록 설정합니다.앱 비밀번호 설정 페이지로 이동합니다.앱 이름을 입력하고 만들기 버튼을 클릭합니다.생성된 앱 비밀번호를 복사합니다.스프링부트 설정application.yml 파일을 엽니다.spring.mail.username 항목에 지메일 주소를 입력합니다.spring.mail.password 항목에 방금 발급한 앱 비밀번호를 입력합니다 (띄어쓰기 없이).spring.mail.host=smtp.gmail.comspring.mail.port=587spring.mail.username=지메일계정spring.mail.password=.. 2025.04.07. Kim EvergoodGithub SSH 연결
오만거 설치·기본·팁 모음/도구SSH 키 생성SSH 키가 없으면 생성한다.ssh-keygen -t ed25519 -C "myemail@example.com"파일이 저장된 경로를 설정할 수 있는데 기본값으로 {사용자홈}/.ssh 경로가 설정된다.해당 경로에 가면 공개키와 비밀키 파일이 확인된다.깃허브에 SSH 키 추가깃허브 설정에서 해당 SSH 키를 추가한다."New SSH key" 버튼을 눌러 페이지 이동이름을 마음대로 정하고 Key 항목에 공개키 파일 내용을 복붙한다. 윈도우에서 파일을 드롭다운하란 게 아니다."Add SSH key" 버튼을 눌러 등록 완료.Source Tree 설정도구 > 옵션 > 일반 > SSH 클라이언트 설정비밀키를 지정한다.원격 주소가 HTTPS 형식(https://github.com/사용자/저장소.git)으.. 2025.03.26. Kim Evergoodthe project was not built due to release 21 is not found in the system
말썽딱 봐도 자바버전 때문이죠?현재 나의 프로젝트(Maven 이용)의 자바 버전은 21로 설정되어있음을 pom.xml에서 확인할 수 있다. ... 21 ...나는 VSCode를 쓰고 있으므로 여기서 자바 21을 쓰도록 설정해준다.Ctrl + Shift + P, Java: Configure Java Runtime 여기서 자바 버전을 설정한다.목록에 21이 없는데 새 버전을 받는 옵션이 있어서 선택해줬다.설치 완료 후 21 옵션을 선택하고 VSCode를 재시작하니 이제 앱이 실행이 된다.물론 거꾸로 앱의 자바 버전을 내가 쓰는 자바 버전으로 바꿔줘도 된다. 2024.12.02. Kim EvergoodOAuth2
개념과 철학/규약목적전통적 인증/인가(아이디와 비밀번호 입력으로 이용자가 그 서비스에서 가능한 전권 획득)와 달리; 제3의 앱에게 제한된 권한을 부여한다.리소스오너, 리소스서버, 인증서버, 클라이언트의 네 가지 역할이 등장하여 최종적으로 클라이언트가 리소스서버에서 제한적으로 리소스를 얻는다.예를 들어 어느 달력 앱에서 구글 로그인을 통해 구글 캘린더에서 일정 정보를 가져와 연동한다고 치자. 달력 앱에서는 구글 사용자의 일정 외에 받은 메일 목록, 유튜브 채널 주소 등을 알 필요가 없고; 사용자 입장에서도 그런 정보를 제공하지 않도록 제한하는 편이 보안에 좋다.용어 정리주고받는 것리소스resource: 결국 얻으려는 데이터. 예시에서 구글 캘린더 내의 일정 정보.자격증명credential: (영어사전) 신용 증명물, 증명.. 2024.11.25. Kim Evergood(Nginx) 가상호스팅
오만거 설치·기본·팁 모음/네트워크 | 웹뭘 왜 하나나 IP 주소 한 개밖에 없어요.그치만 호스트는 여러 개 갖고 싶다구욧!내 도메인은 example.com이고 playground와 cafe 호스트를 추가해볼 거예요~ ^^ 나 Nginx 알못인데 떠듬떠듬 알아봄.각 호스트 실행포트번호 8081, 8082로 각각 웹서버 실행.~/ts/playground, ~/ts/cafe 이렇게 두 디렉토리를 만들어서 각각 안에서 index.html을 생성 후 간단히 파이썬 웹서버를 실행했다.~/ts/playground에서$ echo 'Lets do anything!' | sudo tee index.html$ nohup python3 -m http.server 8081 &~/ts/cafe에서$ echo 'Welcome!' | sudo tee index.html$.. 2024.11.09. Kim EvergoodNginx 기본 설정
오만거 설치·기본·팁 모음/네트워크 | 웹상위문서메인 설정파일: /etc/nginx/nginx.conf서버블록들: /etc/nginx/sites-available/설정 수정 후 sudo nginx -s reload설정파일 구조설정파일은 지시(directive)들로 구성된다.간단한 지시: [이름] [파라미터...] ; 식으로 구성된다.블록지시: [이름] [파라미터...]까지는 간단한 지시와 같으나 ;로 끝나는 대신 대괄호 {} 안에 다시 지시들이 들어있다.이 지시는 그 안의 지시들의 context이다.다른 블록지시의 안에 있지 않은 최상위 지시들은 main context에 있다고 취급된다.# 뒷부분은 주석이다.예시user www www;worker_processes 2;error_log /var/log/nginx-error.log info;eve.. 2024.11.09. Kim EvergoodNginx - Hello World
오만거 설치·기본·팁 모음/네트워크 | 웹Nginx 설치공식문서우분투(Debian 계열)에서sudo apt install nginxAmazon Linux(RHEL 계열)에서sudo yum install nginx실행일반실행으로 실행nginx 실행파일을 실행.이후 명령은 이걸 실행한 사용자와 같은 사용자로 실행한다.(그런데 권한 때문에 귀찮아서 그냥 sudo로만 하게 된다….)nginxnginx -s stop — 즉시 종료nginx -s quit — 현재 처리중인 요청들이 끝난 뒤 종료nginx -s reload — 설정파일 다시 가져오기nginx -s reopen — 로그파일 다시열기서비스로 시작sudo systemctl start nginx자동으로 시작되도록 설정: sudo systemctl enable nginx재시작: sudo system.. 2024.11.07. Kim EvergoodSublime Text 설정 메모
오만거 설치·기본·팁 모음/개인적인설정저장용settings{ "color_scheme": "Packages/User/novel.sublime-color-scheme", "theme": "Default.sublime-theme", "line_numbers": true, "margin": 0, "fold_buttons": false, "font_face": "나눔고딕코딩",// 글꼴 "font_size": 16, "word_wrap": false, "wrap_width_style": "min", "indent_subsequent_lines": true, "trim_automatic_white_space": true,// 공백뿐인 줄에서 엔터치면 공백 삭제 "tab_completion":.. 2024.07.31. Kim Evergood예측 가능하게 움직여줘
주저리무슨 자율주행 자동차가 방향을 어디로 틀든 무조건 누군가는 죽는 상황에서 기계가 어떻게 판단하도록 해야 하냐? 이런 논의가 있는데; 내가 보기에 이런 얘기를 하는 사람들은 약속이라도 한 듯 불필요한 전제 한 가지를 공통적으로 가지고 있다. 그 불필요한 전제는; 주변을 관측하고 주변에 영향을 끼칠 수 있는 존재는 자신뿐이라는 가정이다.하지만 실제로는 길거리의 사람들도 다 사람이고 각자의 이유가 있어서 그 자리에 있으며, 스스로 판단하여 위험을 피한다.그러니까; 만약 누가 죽는 선택지와 모두가 안전한 선택지가 있다면 당연히 안전한 쪽을 택해야겠지만; 이러든 저러든 어쨌든 누군가는 죽는다는 상황을 가정한다면; 주변에서 이 차를 볼 때에 이 차의 움직임을 최대한 쉽게 예측할 수 있게 움직이는 것도 중요한 원칙이.. 2024.06.18. Kim EvergoodGraphQL 소개
오만거 설치·기본·팁 모음GraphQLAPI용 쿼리 언어이다.등장 배경 및 필요성페이스북의 개발자들이 페이스북 앱을 구축하면서 필요성을 느껴서 개발했다.#클라이언트에서 필요한 데이터와 서버의 쿼리 간의 간극이 있을 때 언더패치, 오버패치가 자주 발생한다.특징쿼리의 형태가 계층적이다.강타입인터페이스만을 제공한다.(특정 스토리지나 언어, 프레임워크 등에 종속적이지 않음)장점오버패치 예방: 클라이언트에서 정확히 필요한 데이터만을 골라서 요청할 수 있다.언더패치 예방: 여러 쿼리를 한 번에 요청할 수 있다.쿼리의 형태와 응답의 형태가 같으므로 클라이언트가 응답의 형태를 바로 알 수 있다.새 필드나 타입 추가시 클라이언트의 수정이 요구되지 않는다.단점REST API에 비하면 학습장벽이 있고 서버 구현이 복잡하다.클라이언트에서 쿼리 구성에.. 2024.05.30. Kim EvergoodSpring Boot - log4jdbc 설정 개인저장용
오만거 설치·기본·팁 모음/개인적인설정저장용pom.xml org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 application.ymlspring: datasource: driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy# BEFORE# jdbc-url: jdbc:mysql://localhost:PORT/dbname?autoReconnection=true&useUnicode=true&characterResultSets=utf8&useSSL=false jdbc-url: jdbc:log4jdbc:mysql://localhost:PORT/dbname?a.. 2024.05.17. Kim Evergood도커 Docker 기본개념
오만거 설치·기본·팁 모음도커컨테이너라는 경량 단위로 앱을 실행하는 기능을 제공하는 플랫폼이다.도커의 필요성한 시스템을 구성하는 앱들이 요구하는 실행환경이 제각각이기 때문에 서버구축에 어려움이 생긴다.환경을 바꿀 때(클라우드로 이주 등)에도 비용이 발생한다.가상화실제의 컴퓨터 자원(CPU, 메모리 등)을 나누거나 묶어 논리적 형태로 나타내는 기술.호스트OS 혹은 하이퍼바이저 위에 가상머신을 구현한다.컨테이너호스트 OS의 자원을 논리적으로 분리시켜 구획을 만들고, 앱 작동을 위한 라이브러리나 앱 등을 구획 안에 모아서 별도 서버처럼 사용하는 기술. 또는 그 구획.기존의 가상화에 비해 오버헤드가 작아서 가볍고 빠르다.도커는 LXC(리눅스컨테이너)에서 시작했으나 이제는 LXC에 전적으로 의존하진 않는다.주요 개념컨테이너 docker .. 2024.05.08. Kim Evergood팩토리 패턴 Factory Pattern
개념과 철학/디자인패턴필요성A a가 있고,a.do() 하면 a의 실제 자료형에 따라 do()의 구체적 내용이 결정된다.이것은 객체지향을 공부하면 알게 되는 기본적인 것들 중 하나인 오버라이딩을 통해 직접 구현된다.거꾸로외부의 어떤 요인이 있고,그 요인에 따라 a의 실제 자료형이 달라지는 경우.앞서 “거꾸로”라는 말을 썼듯; 이것은 고전적인 객체지향과는 정반대 성질의 일이기 때문에;객체지향 언어의 기초 문법으로 바로 구현되지 않고;이것을 구현하면서도 내 코드의 객체지향성을 잃어버리지 않으려면 특별한 기법을 써야 한다.팩토리 패턴은 바로 그 특별한 기법이다.개체생성을 개체화한다.팩토리 패턴 종류단순한 팩토리우리가 관심갖는 어떤 요소를 개체로서 분리하듯;개체 생성을 담당하는 개체(팩토리)를 따로 분리한다.팩토리에서 그 ‘외부요인’.. 2024.03.19. Kim Evergood전략 패턴 Strategy Pattern
개념과 철학/디자인패턴내가 이해한 게 맞다면;이건 진짜 별 거 아니고그냥 동작을 개체화한 것이다.Car.move를 수정하고 싶은데Car.move를 수정하면 안 되니까Car.setHowToMove( HowToMove )를 만들어놓고Car.move에서 HowToMove.move() 하는 게 해법이라고 하고 있다.move를 수정하고 싶은데 move를 수정하면 안 돼?????왜 이런 난리를 치느냐?고전적인 객체지향에서 동작이란 객체의 내부에 고정적으로 착 붙어있는 메서드이니까.객체지향의 태생적 특징을 벗어나려고 발버둥치는 똥꼬쑈!윽… 그… 있자나. 이런 게 디자인패턴으로서 존재한다는 거 자체가이게 중요하게, 자주 필요하면서도 이걸 주요 언어에서 직접 지원하지는 않는다는/않았다는 뜻이다.모든 걸 다 지원하는 언어같은 걸 꿈꾼 건 아니.. 2024.03.19. Kim Evergood주석 없이 코드만으로 가독성 좋게 할 수가 있나?
주저리에 몰라 신발 걍 내가 영문(코드도 영문) 읽기 열라 싫어해서 그런 걸 수도 있는데왤케 다들 주석을 싫어해?똥같은 코드를 주석으로 때우려 하면 안 된다든가, 관리 안 된 주석이 오히려 방해가 된다든가 하는 말들 나도 다 동의하는데;그래도 코드만으로도 가독성 좋은 게 가능하단 건 그냥 미신이나 환상 아냐?그런 게 가능하다면 “코드 가독성을 더 좋게 하는”, “더 간결하게 하는” 새로운 문법같은 건 왜 나오겠냐고. 그 문법이 나오기 전엔 그렇게 간결하게 적는 게 아예 문법적으로 힘들단 거잖아.분리시킨 함수 이름으로 로직 설명? 그렇게 하려면 뭐 하나 할 때마다 함수 새로 생겨서 함수 오만 개 생김. 재사용성 그런 거 아니고 그냥 딱 한 군데에서만 호출될, 사실상 그 이름으로 주석을 대체할 뿐인 함수임. 오히.. 2024.03.19. Kim EvergoodPostgreSQL 조회 혹은 없으면 삽입 후 값 반환 쿼리 예제
창고 | 예제그냥 INSERT 하면 삽입이 안 된 경우에도 SERIAL 타입 컬럼의 기본값이 1씩 계속 증가하는데; 진짜로 기존 값이 없는 경우에만 새로 삽입하면서 SERIAL 값이 1씩 증가하는 쿼리 예시 스키마 및 테이블 CREATE SCHEMA "myschema"; CREATE TABLE "myschema"."atest" ( id SERIAL, aa INTEGER, bb VARCHAR(10), PRIMARY KEY (id) ); INSERT WITH "input_data" AS ( SELECT 123 AS "aa", 'hello' AS "bb" ), "existing" AS ( SELECT * FROM "myschema"."atest" WHERE "id" = (SELECT "id" FROM "input_data.. 2024.02.23. Kim Evergood주피터 노트북 스타일(CSS) 개인 저장용
오만거 설치·기본·팁 모음/개인적인설정저장용주피터 노트북 화면 스타일을 설정한다.파일 경로: C:\Users\사용자이름\.jupyter\custom\custom.css/*※ 주피터노트북 기본 스타일보다 덮어쓰려고 단계가 장황하다. (예: #header를 굳이 body>#header로 씀)*//*레이아웃*/html body.notebook_app > #header { position: fixed; top: 0; box-sizing: border-box; width: 100vw; height: 20px; background-color: white; overflow: hidden;}html body.notebook_app > #header:hover { overflow: visible;}html body.no.. 2023.11.05. Kim EvergoodC-style 주석 제거 예제 [Java]
창고 | 예제Java에서 String에서 C 식 주석 부분 제거하여 String으로 반환하는 코드C-style이라곤 하는데 사실 정확히는 JSON 파일에 주석 달아놓고 서버에서 그걸 읽을 때는 제거하려는 목적으로 만들었다.//부터 줄끝까지 제거/*와 */ 사이를 제거문자열(두 큰따옴표 사이) 내에서 //, /* 효과없음문자열 내에서 \ 다음의 문자 효과없음/** * C-style 주석 제거 */public String deleteComment(String string) { StringBuilder outputBuilder = new StringBuilder(); char[] charArr = string.toCharArray(); int status = 0; for (char c : charAr.. 2023.11.03. Kim EvergoodMyBatis 마지막 쉼표 제거
프로그래밍 잡메모GROUP BY 절을 다음과 같은 식으로 넣으려 했더니 당연히 완성된 쿼리문이 쉼표(,)로 끝나기 때문에 에러가 났다.GROUP BY "table1"."col1", "table1"."col2", "table1"."col3",trim 태그로 감싸서 마지막 쉼표를 제거하였다.GROUP BY "table1"."col1", "table1"."col2", "table1"."col3",MyBatis last comma, extra comma참고: https://mybatis.org/mybatis-3/dynamic-sql.html#trim-where-set 2023.09.05. Kim EvergoodPostgresql bulk upsert
프로그래밍 잡메모insert문 끝에 다음과 같이 ON CONFLICT 절 추가 ON CONFLICT ON CONSTRAINT "제한조건의 이름" DO UPDATE SET "업데이트할 필드1" = EXCLUDED."업데이트할 필드1", "업데이트할 필드2" = EXCLUDED."업데이트할 필드2", ... 참고로; PK 제한조건의 이름은 따로 지정하지 않은 경우 기본값은 테이블이름_pkey이다. 아래 예시 -- 테이블 생성 CREATE TABLE "test1" ( "id" SMALLINT, "value1" VARCHAR(50), "value2" VARCHAR(50), PRIMARY KEY ("id") ); -- 값 넣고 확인 INSERT INTO "test1" ("id", "value1", "value2") VALUES .. 2023.09.01. Kim EvergoodAdGaurd 설정 나무위키용 차단 필터
창고 | 예제# 튜토리얼에 있는 예외 규칙은 씨알도 안 먹히고, 마지막에 :not(...)도 됐다가 지금은 안 되길래 어쩔 수 없이 :not을 지우고 이전 설정을 덮어쓰는 설정을 그 맡에 추가함. 광고가 잘 없어졌는지, 혹시 엉뚱한 요소에 적용됐는지 확인하기 위해 아예 삭제가 아니라 고개만 빼꼼 내밀게 했다. # 본문 상자 안에서 마지막 요소. ※예외: #href="rfn-어쩌고"인 요소(주석들) # namu.wiki#$?#div:has(>h2)>div:nth-last-child(1):not(*:has(a[href^="#rfn"])) {background-color: blue; !important;} namu.wiki#$?#div:has(>h2)>div:nth-last-child(1) {border-bottom: 1.. 2023.07.21. Kim Evergood스프링 버전 확인
창고 | 예제System.out.println(org.springframework.core.SpringVersion.getVersion());참고: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/SpringVersion.html 2023.07.14. Kim Evergood(STS4) Run as JUnit Test 아무 일도 일어나지 않음 (에러가 뜨는 것도 아님)
말썽Run as JUnit Test 아무 일도 일어나지 않음 (에러가 뜨는 것도 아님)Spring Boot test라거나 JUint Test라고 검색해도 다들 테스트 케이스 추가해서 잘만 테스트 함.의존성 추가 문제 아님.그리고 자바 파일 우클릭 > New > JUnit Test Case으로 테스트 케이스를 추가하면 검색결과에서는 다들 test 폴더 하위에 새 파일이 생성되는데 나는 같은 폴더에 생기는 것도 이유를 모르겠음.얘가 아예 테스트 코드가 없다는 듯이 나오는 게 이상해서 Build Path에 src/test/java 추가해봄org.springframework.boot.test cannot be resolved 에러 뜸.해당 에러를 검색했더니 pom.xml에서 해당 의존성에 test를 삭제하라고 함... 2023.06.02. Kim Evergood엘라스틱 스택 세미나 자료
오만거 설치·기본·팁 모음※ 작성자는 엘라스틱 스택 숙련자가 아니며 오히려 초보입니다. 검색용 글 복붙 엘라스틱 스택 소개 김영선 제작일: 2024. 04. 24. 마지막 수정일: 2024. 04. 25. 엘라스틱 스택 엘라스틱서치 클러스터 엘라스틱 스택 엘라스틱 스택 히스토리 엘라스틱의 서비스 엘라스틱 스택의 구성요소들 Elastic Stack 빅데이터를 위한 플랫폼 엘라스틱 스택 빅데이터를 위한 플랫폼 검색 서비스, 로그 통합 분석 등에 쓰일 수 있다. 오픈소스에서 시작되었다. 히스토리 Apache Lucene기반 검색엔진인 엘라스틱서치 등장. 데이터 수집기인 로그스태시, 시각화 UI인 키바나를 더하고,이 셋.. 2023.05.08. Kim EvergoodMaven executable not found in path. please specify maven.executable.path [VSCode]
말썽Maven for Java 확장으로 maven 명령 실행시 다음 에러가 뜨는 경우VSCode의 설정에서 maven.excutable을 검색하여 해당 설정에 mvn의 경로를 추가한다.mvn 파일은 물론 Maven이 설치된 곳 하위 bin에 있다.하지만 내가 직접 Maven 사이트 들어가서 설치를 한 적이 없는데 이전에 잘만 써온 걸 보면 내장된 Maven이 있든가 자동으로 어디 설치한 듯.내 경우에는(윈도우) C:\Users\사용자이름\.m2\wrapper\dists\apache-maven-3.6.3-bin\1iopthnavndlasol9gbrbg6bf2\apache-maven-3.6.3\bin\mvn이었다. 아무튼 중간까지 가서 mvn 검색했다.mvn 파일이 있는 폴더까지가 아니라 mvn까지 경로에 포함.. 2023.04.26. Kim EvergoodOOP(객체지향프로그래밍)의 사고방식
개념과 철학엣 누가 이 글을 보는가??? 참고로 이거 다 내 뇌피셜임.👀🧠👀Object-Oriented ProgrammingObject-Oriented Programming(OOP)는; 객체들의 모임으로서 프로그램을 취급하는 방식이다.OOP는 흔히 ‘객체지향 프로그래밍’으로 번역된다. 하지만 만약 내가 이 말을 번역했다면 ‘객체중심 프로그래밍’, ‘객체위주 프로그래밍’이라고 했겠다. , ‘개체기반’도 맘에 든다. ‘지향’이라고 하면 목적, 목표라는 느낌인데; OOP에서 객체는 끝에 있는 목표라기보단 오히려 시작점, 관점이니까. OOP는 그러니까 말 그대로 객체 중심의 관점에서 프로그램을 만드는 것이다.OOP는 절차지향적이던 기존 프로그래밍의 패러다임을 바꿨으며, 코드의 재사용성이 높고, 유지보수가 쉽고, 사람.. 2022.12.11. Kim Evergood파이썬 OpenCV 카메라·동영상 읽기 예제
창고 | 예제cv2 모듈만 이용import cv2capture = cv2.VideoCapture(0) # 0번 카메라 연결# capture = cv2.VideoCapture('move_file.avi') # 동영상 파일if not capture.isOpened(): raise Exception("카메라 연결 안됨")while True: # 무한 반복 ret, frame = capture.read() # 카메라 영상 받기 if not ret: break # 영상 없으면 종료 if cv2.waitKey(30) >= 0: break # 키보드 입력 받으면 종료 (30밀리초동안 대기) cv2.imshow("title", frame) .. 2022.08.30. Kim Evergood파이썬 함수 어노테이션
파이썬# 이 함수는 str을 받아서 str을 반환한다 def insa(name: str) -> str: print('안녕하세요', name, '님') 함수 정의에서 나온다.innerLink_37 어노테이션 이 함수를 쓸 사람들을 위해서; 함수의 매개변수와 반환값의 자료형이 뭔지 알려준다. 문법적으로 형검사를 하지 않는 파이썬에서; 여기 뭐 넣어야 되는지 막막한 코더들을 위한 (^_^) 힌트. 없어도 되고, 실질적으론 의미가 없다. 매개변수 어노테이션 각 매개변수 뒤에 : 표현식 def func( 매개변수1 : 매개변수1설명, 매개변수2 : 매개변수2설명 ): 어쩌구 기본값보다 어노테이션이 더 앞에 온다.(매개변수:어노테이션=기본값) 반환값 어노테이션 def func( … ) -> 표현식 : 어쩌구 2022.08.14. Kim Evergood
728x90