프로그래밍 30

[DB][MySQL] 데이터베이스의 DDL(Data Definition Language)

이번 포스트는 MySQL을 사용하여 데이터베이스의 DDL을 정리해보려고 한다. 긴 말없이 바로 시작해보자. CREATE 명령 오늘은 CREATE명령을 사용하여 DATABASE와 TABLE을 만들어 볼 예정이다. 먼저 이전 강의에서 세팅한 MySQL로 접속해보자. 새로운 테이블을 정의하기 전에 테이블을 생성할 데이터페이스를 먼저 생성해야 한다. 다음 명령어를 순서대로 입력한 뒤 결과를 확인해보자. 1. CREATE DATABASE JOO_DATA; 2. SHOW DATABASES; 이제 가장 많이 사용하는 CREATE TABLE 구문을 사용하여 테이블을 생성해 볼 것이다. CREATE TABLE구문은 다음과 같은 문법으로 사용한다. (가장 기본으로 필요한 성분만 적었다.) CREATE TABLE 테이블이름..

[Python] 파이썬 eval 과 exec 함수에 대하여

오늘은 편리하면서 위험한 함수인 eval과 exec함수에 대해서 정리해보려고 한다. 두 함수 모두 파이썬 내장 함수이며, 아마 파이썬 언어를 공부하면서 지나가다 한 번쯤 봤을 수도 있다. 왜 편리하면서 위험한지 공부해보자. eval 함수 eval 함수는 실행 가능한 문자열을 매개변수로 입력받아 문자열 자체를 실행한 결과값을 리턴해준다. 설명을 잘 못하니 직접 실행시켜보자. >>>> print(eval("5+5")) 10 파이썬 해석기에서 바로 실행한 결과이다. 문자열 "5+5"를 연산 5+5로 해석한 뒤 결과값으로 정수 10을 반환하는 것을 볼 수 있다. 얼핏 보면 정말 편리한 기능을 가진 함수지만, 남용하면 시스템에 큰 오류를 일으킬 수도 있다. 아래 코드를 실행시켜보자. string2 = ''' a+..

[DB][MySQL] 데이터베이스를 공부하기 전 기본 개념과 개발 환경 설정

관계형 데이터 베이스 관리 시스템 (RDBMS) DB공부에 사용할 Data Base Management System(이하 BDMS)는 MySQL이다. 모든 DB가 표준 SQL을 기본으로 하기 때문에 가장 기본적으로 공부하기 위한 DB를 선택했다. 공부에 사용 할 MySQL은 관계형 데이터 베이스 관리 시스템이다. 위 랭킹표에서 볼 수 있는 것처럼, 가장 보편화된 모델 중 하나이다. 테이블을 사용하여 데이터를 정의하고, 속성과 값 사이의 관계를 이용한다고 생각하면 된다. (정보처리 기사 자격증을 취득한 것이 도움이 될 것 같다.) SQL(Structured Query Language) 컴퓨터 언어의 종류에 C언어나 Python언어가 있듯이 SQL은 RDBMS을 관리하기 위한 표준 프로그래밍 언어이다. 실제..

[Go] 7. Go(golang)의 배열과 슬라이스

오늘 정리할 내용은 배열(array)과 슬라이스(slice)이다. 배열에 대한 내용은 타 언어와 매우 유사하여 금방 정리하겠지만, 슬라이스에 대한 내용은 익숙한 개념이 아니기 때문에 추후 수정이 있을 것 같다. C++의 벡터와 유사한 것 같기도 한데.. 일단 정리해보자 Go언어는 "컬렉션"이라는 개념이 존재한다. 두 개 이상의 변수를 모아 놓은 것을 말하는 단어이며, 오늘 정리할 배열과 슬라이스도 "컬렉션"에 포함된다. Go언어의 배열 Go언어의 배열은 C언어의 배열, 즉 Managed Language의 배열과 유사하다. 정적 배열이라고 하는데, 쉽게 말해서 컴파일 과정에서 배열의 크기가 정해져 있어야 한다는 뜻이다. 먼저 가장 기본적인 코드를 실행시켜보자. package main import "fmt"..

[Go] 6. Go(golang)의 조건문과 분기문

조건문 정도는 내용 정리를 생략하려고 했지만, Go언어의 조건문은 다른 언어들에 비해 제약사항이 많은 편이기 때문에 한 번 정리하는 것도 괜찮을 것 같다는 생각이 들었다. Go 언어의 조건문은 불친절한 구문이다. Go언어의 목표 중 "읽기 쉬운 코드"를 실현하기 위해서 라고 생각한다. Go언어의 if o 기본적인 특징 package main import "fmt" func main() { num := 10 if num == 10 { fmt.Println("num 은 10 이군요!") } } 위 코드는 가장 기본적인 Go언어의 조건문 형식이다. 다른 언어와 다른점은 if문의 조건으로 Boolean형이 사용되어야 한다는 것이다. 예를 들면 아래와 같은 코드는 오류가 발생한다. func main() { num..

[Go] 5. Go(golang)의 반복문

반복문과 조건문 만 제대로 익혀도 구구단 정도의 간단한 문제는 간단하게 풀 수 있게 된다. 오늘은 Go언어에서 반복문에는 어떤 특징이 있는지 잘 정리해 보자. Go의 for Go언어 반복문의 특징은 while문이 없다는 점이다. while문의 기능을 for문으로 구현할 수 있기 때문에 반복문은 for문만 기억하면 된다. while문을 자주 사용해서 불편할 것 같지만, 반복문을 사용하기 위해서 한 가지 문법만 기억하면 된다는 점은 마음에 들었다. 아래 코드는 for문의 가장 기본적인 예제를 만들어봤다. package main import "fmt" func main() { var number int fmt.Print("정수 한 개를 입력해 주세요 : ") fmt.Scanf("%d", &number) for..

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

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

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

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

Computer_Language/C 2019.08.31

[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