Programming 19

Go언어 예외처리(panic, recover) 편

Go언어에서의 예외처리 사용법은 다른언어들에서 볼 수 있는 tryCatch 구조와는 약간 다르다. 따라서 Go언어에서 이용할수 있는 예외처리 방법을 설명하고자 한다. [panic함수 예제] package main import "fmt" func main() { var a int = 1 if a == 1 { panic("에러") } fmt.Println("hello world") } panic함수 사용법을 정리하면 다음과 같다. 1. panic함수 실행시 프로그램이 종료가 실행된다. 2. panic 실행이후 에러위치를 나타낸다. [panic & recover 예제] 설명 var a의 값에 따라 예외처리를 알아보는 코드이다. 결과를 정리하면 다음과같다. 1. 에러(a가 1일때) 2. 성공(a가 1이 아닐때)..

Programming/Go 2021.02.26

Go언어 "import cycle not allowed" 편

여러 개의 모듈을 사용하여 프로젝트를 하다 보면 "import cycle not allowed" 문구가 나와 당황하게 되었던 적이 있을 것이다. 그러나 원인을 알면 사이클이 왜 안되는지 알 수 있다. 자세한 건 아래 그림과 코드로 설명을 하겠다. [main.go] package main import ( "fmt" "golang/cycle/Firstsub" ) func main() { Firstsub.AddCall() } [Firstsub.go] package Firstsub import ( "fmt" secondsub "golang/cycle/Secondsub" ) func AddCall() { fmt.Println("this is firstSub") secondsub.CallSecondSub() } [..

Programming/Go 2021.02.25

Go언어 [초간단] 명령어 Os.Args 편

Os.Args 명령어를 받는 가장 기본적인 방법이다. 각 매개변수는 일반 변수, 옵션, json 파싱등으로 구성된다. [예시] package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args[0]) // C:\Users\hhh\AppData\Local\Temp\go-build2452782392\b001\exe\main.exe fmt.Println(os.Args[1]) // hi fmt.Println(os.Args[2]) // -mode=programming fmt.Println(os.Args[3]) // {\"name\":\"홍길동\",\"age\":\"20\"} }

Programming/Go 2021.02.24

Go언어 [초간단] 유닛테스트 편

유닛테스트 사용법 - 유닛테스트에서는 함수이름에서 첫글자는 "Test"를 넣어야 한다. - 명령어는 "go test"로 실행이 가능하다 ※주의사항 - 매개변수를 형식에 맞춰야함. - 함수명이 하단그림과 같이 TestAbc는 가능하나 "Testabc"에서는 빌드가 안된다. 즉 "Test"와 뒤에올 글자를 구분하 여야한다. [사용 예] package main import "testing" func TestAbc(t *testing.T) { a:= 1 b:= 0 expected := a+b actual:=1 if actual != expected { t.Errorf("%d != %d", actual, expected) } } [결과]

Programming/Go 2021.02.23

파이썬 copy(얕은복사, 깊은복사 복사기능)

시작전.. 정보를 담고있는 리스트를 사용시 원본데이터를 다른 변수에 할당하는 복사를 사용해야하는 경우가 있다. 리스트를 복사할때 항상 발견되는 문제점이 있었는데, 그건 복사된 리스트를 수정 시 원본까지 수정되어버리는 결과가 나타난다. 이것은 얕은복사와 깊은복사에 관련되어있는데 설명과 예시는 다음과 같다. 1) 얕은복사 copy.copy() import copy a = [[1,2],[3,4],[5,6]] b = copy.copy(a) b[1].append(100) print(a) # [[1, 2], [3, 4, 100], [5, 6]] print(b) # [[1, 2], [3, 4, 100], [5, 6]] 위그림에서 알 수 있든 두개의 변수a(원본리스트) 변수b(얕은복사 리스트)는 같은 주소값을 바라보고..

Programming/Python 2021.02.22

파이썬 리스트(insert, append, extends 추가기능)

1) append [예시 1] 요소 추가 [예시 2] 리스트 추가 2) insert insert는 apppend와는 다르게 매개변수가 총 2개를 받는다. 즉 insert(A , B)에서 A는 위치 B는 값을 나타낸다. 즉 특정위치에 값을 추가할떄 용이하다. [예시 3] 요소추가 3) extends 리스트의 append와는 달리 추가 요소가 리스트가 대상이더라도 요소가 추가되는 것이 특징이다.

Programming/Python 2021.02.22

Go언어 [입문] 반복문 편

오늘 다룰 주제는 Go언어에서의 반복문이다. C, 파이썬, 자바와 같이 특정언어로 반복문을 사용하다보면 while문과 for문을 사용하는 것을 볼 수 있다. 그러나 Go언어에서의 반복문은 while을 지원하지 않고, for만 지원한다. 따라서 Go언어에서 사용되는 for문 작성법을 알아볼 예정이고, 코드로 나타내보고자 한다. Go언어에서의 반복문(for)는 3가지로 나타낼 수 있고 그 예시는 다음과 같다. [예시 1] package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println("hello world") } } [예시 2] package main import "fmt" func main() { i := 0 for i < 10 ..

Programming/Go 2021.02.21

TCP/IP 소켓통신 비디오 프레임[Python]

지난 글에 이어서 이번에는 영상 속 프레임을 보내보는것에 대해 코드를 작성했고, 사용방법은 다음과 같다. # Server.py import pickle import socket import struct import cv2 HOST = 'localhost' PORT = 8089 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print('소켓 생성') s.bind((HOST, PORT)) s.listen(10) conn, addr = s.accept() data = b'' payload_size = struct.calcsize("L") while True: # 프레임 사이즈 측정 while len(data) < payload_size: data += conn..

Programming/Python 2021.01.03

Socket 프로그래밍[간단 예제]

파이썬을 이용한 소켓프로그래밍으로 서버코드와 클라이언트코드 입니다. [서버] #Server.py import socket #소켓 생성하기 s = socket.socket() port = 80 s.bind(('127.0.0.1', port)) s.listen(5) while True: # client의 소켓과 주소를 기다리기 c, addr = s.accept() print ('클라이언트 주소는 : ', addr ) # 클라이언트에게 답장보내기 c.send('안녕 난 서버야'.encode()) # 소켓 닫기 c.close() ​ [클라이언트] #Client.py import socket import sys #소켓 생성하기 s = socket.socket(socket.AF_INET, socket.SOCK_ST..

Programming/Python 2020.12.27