전체 글 88

[Python] 파이썬 병렬 프로그래밍 모듈 (Multiprocessing 라이브러리)

졸업작품에 Multiprocessing 라이브러리를 사용할 부분이 생겨서 다시 공부할 겸 정리를 해보려고 한다. Multiprocessing 라이브러리를 공부하기 전 프로세스와 스레드의 개념을 정리하고 공부를 진행하겠다. 프로세스 vs 스레드 운영체제 공부를 하면서 프로세스의 정의는 "실행 중인 프로그램"이라고 했던 기억이 난다. 각 프로세스는 프로세스의 상태를 기록하는 프로세스 제어 블록(PCB - Process Control Block)이 존재하는데, 프로세스가 프로세서에 할당될 때마다 해당 프로세스의 제어 블록들이 먼저 적재된다. 이 과정을 문맥 교환(Context Switch)라고 한다. 스레드의 정의는 "프로그램 내에서 실행되는 흐름의 단위"이다. 한 개의 프로그램을 여러 개의 스레드로 정의할 ..

[Go] 3. Go(Golang)의 입력 함수 (scan)

프로그래밍 언어 공부의 두 번째 단계는 입력이다. 적어도 입력, 출력만 할 줄 알아도 "그대로 출력하기"와 같은 알고리즘 문제는 풀 수 있다! (사실 EOF처리를 하는 방법도 배워야 할 것이다!) 앞서 공부했던 "fmt" 패키지에서 제공하는 입력 함수 세 가지에 대해 공부해보자. Scanf 함수 C언어의 scanf 함수와 매우 비슷해서 처음 함수를 사용할 때도 익숙하게 사용할 수 있었다. format 지정자를 통해 정해진 형식의 입력을 받을 수 있게 해주는 함수이다. 간단하게 예제만 보고 넘어가도 괜찮을 것 같다. 예제 코드) package main import "fmt" func main() { var age int var name string fmt.Print("이름과 나이를 띄어쓰기로 구분하여 입력..

[C] 인덱스 검사(경계 검사)에 대하여

오늘은 인덱스 검사에 대해 공부를 했다. 많은 사람들이 경계 검사와 인덱스 검사를 혼용해서 사용하는데, 엄밀히 따지면 경계 검사가 더 포괄적인 단어이다. (통상적으로는 경계 검사를 인덱스 검사라고 부른다고 한다 - 참고) 오늘 공부한 내용은 경계 검사 중 인덱스 검사에 대해 공부를 했다. 인덱스 검사란 접근할 배열의 인덱스가 정의했던 경계 안에 존재하는지 확인하는 검사이다. C언어는 빠른 실행 속도를 위해 경계 검사를 자동으로 수행하지 않는다. 컴퓨터 언어를 공부한 지 1년 반만에 알았지만 중요한 개념이니 제대로 정리를 해보자. 프로그래밍을 글로 배우기는 쉽지 않으니 적절한 예시를 만들어보았다. #include int main() { int i, a[40]; for (i = 0; i < 40; i++) ..

Computer_Language/C 2019.08.31

[Go] 2. Go(Golang)의 출력 함수 (print)

Go언어의 출력 함수에 대해서 알아보기 전에 먼저 "fmt"에 대해 알고 있어야 한다. 이전 글에도 다음과 같은 코드를 계속 사용했다. import "fmt" 이 패키지는 Go언어에서 C언어의 printf 함수나 Python의 print 함수, Java의 println 함수와 같은 여러 가지 출력 함수를 사용할 수 있게 해주는 패키지이다. (출력뿐만 아니라 여러 가지 입력 함수 도 사용 가능하다.) 깃허브나 많은 블로그들의 Go언어 코드를 살펴보면 대부분 필수적으로 improt하는 패키지이다. Go언어의 출력 함수 종류 "fmt"패키지를 통해 , Print, Println, Printf 함수를 호출할 수 있다. 호출 형식은 다음과 같다. import "fmt" fmt.Print("Hello world!"..

[Go] 1. Go Language(Golang)에 대하여

Go는 최근에 많이 언급되고 있는 프로그래밍 언어 중 한 종류이다. 사실 Go는 만들어진지는 10년이 조금 넘은 프로그래밍 언어라고 한다. 남들보다 늦게 Go를 알게 된 것이 후회가 된다... 내가 공부한 Go란? Go의 개발방향은 "간단하고 간결한 직관적인 언어" + "이해하기 쉬운 코드" 라고한다. 예시 코드와 함께 어떤 느낌인지 느껴보자. package main import "fmt" func main() { var dan int fmt.Scanln(&dan) for i:= 1;i

[TensorFlow] Linear Regression - 선형 회귀에 대하여

In [1]: import tensorflow as tf import matplotlib.pyplot as plt 선형 회귀의 결과와 원본 그래프를 비교하기 위해 tensorflow 외에도 matplotlib.pyplot를 추가한다. In [2]: x_data = [0,1,2,3,4,5] y_data = [1,3,5,7,9,11] x_data 와 y_data를 입력해주고 plot함수로 먼저 함수를 그려본다. In [3]: plt.plot(x_data,y_data,'ys--', label = 'original_func') plt.xlabel('x_data') plt.ylabel('y_data') plt.legend() plt.grid(True) plt.show Out[3]: 이제 텐서플로우로 선형회귀를 구..

[C] 위치를 기록하는 동안 액세스 위반이 발생했습니다. 에 관하여

C는 내가 처음으로 공부했던 컴퓨터 언어이다. 백준 문제도 많이 풀어보고, 게임을 만들거나 자료구조를 시각화하는 등 다양하게 코딩을 했던 것 같다. 오늘은 처음으로 C에 대해서 깊게 공부하게 되었던 "액세스 위반"에 대해 정리를 해보려고 한다. 1. 어떤 경우에 위반이 떴나? 내가 경험했던 경우는 두 가지이다. 1. 메모리 할당이 되지 않은 포인터를 잘못 사용할 경우. 2. 읽기 전용 메모리에 쓰기를 수행할 경우. 1번의 경우는 "할당되지 않은 메모리를 사용하려고 할 때"라고 표현해도 좋을 것 같다. 2. 직접 액세스 위반을 발생시켜보며 공부하자 먼저 "1. 메모리 할당이 되지 않은 포인터를 잘못 사용할 경우."에 대해 공부해보았다. 예제 1-1) 정상적인 오류가 없는 정상적인 코드이다. #include..

Computer_Language/C 2019.08.27

[Go] Go(Golang) 윈도우 개발 환경 구축하기

취업준비를 하면서 가볍게 배울 언어를 고민하다가 Go 언어를 선택하게 되었다. (Rust는 살짝 훑어만 봐도 시간이 오래 거릴 것 같았다.) 모든 컴퓨터 언어의 시작은 역시 개발 환경 구축이라고 생각한다. 나는 Go SDK for window + Vs code를 선택했다. 윈도우를 사용한다면, 아마 가장 빠르게 구축할 수 있는 개발 환경일 것이다. 1. Go SDK 설치 Go SDK(Software Development Kit)는 ". go" 파일을 컴파일하거나 빌드 하기 위해서 꼭 필요하다. 설치방법은 간단하다. 여기에 들어가서 아래에 표시된 버튼을 클릭하면 다운로드가 시작된다. 설치 도중에 경로를 설정하는 과정이 있다. 원하는 곳에 설치해도 상관 없지만 자신이 설정한 경로는 꼭 기억해둬야 한다. 설치..