728x90
반응형

야곰야곰 337

[SQLite] SQLite 설치 및 사용 준비

SQLite는 클라이언트 응용 프로그램에 임베디드 되어 동작하는 Open Source DBMS이다. SQLite는 '경량화' 되어 있는 DB이며 파일을 기반으로 하기 때문에 데이터베이스의 백업 역시 파일을 통째로 복사하면 된다. 또한 모든 기능을 라이브러리 내에서 구동할 수 있기 때문에 따로 미들웨어를 쓰지 않아도 된다. 경량화를 목적으로 두고 있기 때문에 복잡하거나 큰 데이터를 보관하는 데에는 적절치 않다. 또한 Unicode만 사용할 수 있다. 개발 당시부터 이지스함에서 구동되던 탓에 자질구레한 기능은 없다. SQLite를 사용하려면 우선 관련 파일을 받아야 한다. 공식 사이트에 접속하여 해당 파일을 다운로드 하자. SQLite Download Page Templates (1) and (2) are ..

DB/SQLite 2021.05.14

[MySQL] REPLACE 문자열 일괄 변경

PRIMARY KEY를 복수개를 사용할 경우, 외래키를 사용하는 것이 쉽지 않다. 그럴 경우에는 데이터의 무결성을 지켜기 위해서 CASCADE를 직접 구현해야 할 때가 있다. 그 중에서 UPDATE의 경우에 'REPLACE'라는 명령어를 사용하면 쉽게 구현할 수 있다. Column에서 특정 문자를 변경해서 표시할 경우 SELECT REPLACE(필드명, TARGET, NEW) FROM 테이블명; Column의 특정 문자를 변경해서 업데이트 할 경우 UPDATE 테이블명 SET 필드명 = REPLACE(필드명, TARGET, NEW); 상기와 같은 명령을 실행하게 되면 테이블에서 TARGET 데이터가 NEW 데이터로 일괄 변경되어 버린다. 이 때 특정 조건을 이용하여 변경될 데이터를 제약할 수 있다. UP..

DB/MySQL 2021.05.03

[MySQL] LEAVE , 프로시저 중에 중단하기

프로시저를 진행 중에 조건을 만족하지 않을 경우 실행을 중단하고 싶은 경우가 있다. 프로시저는 함수처럼 RETURN이 없어서 IF ~ END IF로 조건문으로 감싸서 해결하였는데 LEAVE를 사용하면 쉽게 해결할 수 있다. 프로시저를 시작하는 BEGIN 앞에 BLOCK의 이름을 넣어주면 LEAVE [BLOCK이름]을 사용하여 종료할 수 있다. DELIMITER $$ CREATE PROCEDURE SP_insert_block( IN mcdomain VARCHAR(13), IN seqblkID VARCHAR(256) ) PROC_BODY : BEGIN -- BLOCK NAME 설정 DECLARE sqlmcdomain VARCHAR(13); IF NOT CHAR_LENGTH(mcdomain) = 13 THEN..

DB/MySQL 2021.04.27

[MySQL] REGEXP_REPLACE 한글, 영문, 특수문자, 숫자 제거

REGEXP_REPLACE는 MySQL 8.0 이상부터 사용 가능하다. 정규식을 통해 한글, 영문, 특수문자, 숫자를 제거하는 방법은 아래와 같다. SELECT REGEXP_REPLACE(대상 문자열, 대상 문자열, 변경 문자열) AS 닉네임; -- 한글제거 SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[가-힣]', '') AS nickname; -- 숫자제거 SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[0-9]', '') AS nickname; -- 영문제거 SELECT REGEXP_REPLACE('abcd(1234)가나다라', '[a-z]', '') AS nickname; -- 특수문자제거 (특정문자) SELECT REGEXP_REPLACE(..

DB/MySQL 2021.04.27

[Ubuntu 20.04] MySQL설치

1. 현재 상태를 업데이트 및 설치 실행 $sudo apt-get update $sudo apt-get install mysql-server 2. 기본세팅 $sudo ufw allow mysql -- 외부접속 기능 활성화 $sudo systemctl start mysql -- 서비스 시작 $sudo systemctl enable mysql -- 서버 재시작 시 mysql 재시작 3. 접속 $sudo /usr/bin/mysql -u root -p su 상태에서는 mysql만 작성해도 접속됨. ( 초기 비밀번호는 Ubuntu 비번과 동일 ) 4. Version 확인 mysql> show variables like "%version%"; 5. 비밀번호 변경 방법 mysql> SET PASSWORD FOR 'r..

운영체제/Ubuntu 2021.04.25

[MySQL] CHECK문을 이용한 제약 조건 설정

CHECK 제약 조건 COLUMN에 들어갈 수 있는 값을 제한 부호, 숫자 비교, 문자 비교 등을 비교할 수 있다. 입력되는 값이 CHECK 조건과 맞지 않으면 에러가 발생한다. -- 출생년도가 1900년 이후, 2023년 이전으로 제한 -- 이름은 반드시 기입해야 한다. CREATE TABLE userTBL ( userID CHAR(8) PRIMARY KEY, name VARCHAR(10), birthYear INT CHECK (birthYear >= 1900 AND birthYear

DB/MySQL 2021.04.23

[Ubuntu 20.04] root 계정 활성화

리눅스에서는 보안 상 최고 관리자 계정인 root를 활성화 시켜놓지 않는다. 리눅스는 서버로 이용하기 위한 경우가 많기 때문에 root 계정의 보안이 중요하다. 그래서 최고 권한을 얻기 위해서는 터미널 명령에 접두사 sudo를 붙여 명령어를 쓰게 된다. 하지만 매번 sudo를 붙여 적는 것은 은근히 귀찮은 일이다. 그래서 개인적으로 이용한다면 root 계정을 활성화시켜 놓는 편이 편리하다. root 계정 암호 설정하기 root 계정을 활성화 시키기 위해서는 root 계정의 암호를 설정해야 한다. $sudo passwd root 실행을 하게 되면 아래와 같이 출력되며, 새로운 암호를 설정하면 된다. $su 위와 같은 명령어를 실행하면 암호를 요구하는데, 위에서 설정한 암호를 넣어주면 된다. su (Subs..

운영체제/Ubuntu 2021.04.22

[Ubuntu 20.04] 비디오 드라이버 설치하기

1. 그래픽카드 정보 확인 $ubuntu-drivers devices 2. 그래픽카드 설치 자동으로 설치 $sudo ubuntu-drivers autoinstall 수동으로 설치 $sudo apt install nvidia-driver-450 설치가 끝나면 리부팅해준다. 3. 설치 후 확인 $nvidia-smi 자세한 내용은 아래 블로그를 참고하세요. [Ubuntu 20.04 LTS]Nvidia드라이버 설치하기 그래픽카드 정보 및 드라이버 확인하기 아래 3가지 명령어중 1가지만 터미널에 입력 후 엔터를 눌러줍니다. 그래픽카드 및 설치 가능한 드라이버 확인 ubuntu-drivers devices 현재 사용중인 그래픽카 pstudio411.tistory.com

운영체제/Ubuntu 2021.04.22

[MFC] Control 깜빡임 방지 코드

MFC에서 Control을 Update 하다 보면 깜빡임이 발생한다. 그럴 경우에 Update를 하고자 하는 기능 사이에 다음 함수를 추가하면 깜빡임을 해결할 수 있다. LockWindowUpdate(); - Control Update 중지 UnlockWindowUpdate(); - Contorl Update 중지 해제 아래와 같이 대량의 업데이트가 필요할 경우 깜빡임을 제거할 수 있다. LockWindowUpdate(); for (unsigned int row = 0; row < mcData.size(); row++) { InsertItem(row, CString(mcData[row].machID), 0); SetItemText(row, 1, CString(mcData[row].submachID)); ..

[MySQL] Cursor

MySQL은 Stored Procedure의 내부에 Cursor를 사용할 수 있다. Cursor는 일반 프로그래밍 언어의 파일 처리와 방법이 비슷하기 때문에 행의 집합을 다루기에 편리한 기능을 많이 제공해 준다. 1. Cursor의 처리 순서 Curosr는 일반적으로 아래와 같은 순서를 통해서 처리된다. Cursor를 하나씩 이해하기보다는 우선 간단한 예제로 Cursor의 동작을 이해하는 것이 빠르다. DELIMITER $$ CREATE PROCEDURE SP_check_integrity_submach() BEGIN DECLARE endOfRow BOOLEAN DEFAULT FALSE; -- 행의 끝 여부 (Default : FALSE) -- CURSOR에 사용할 변수 DECLARE sqlmachID V..

DB/MySQL 2021.04.20

[MySQL] 중복 제거문 DISTINCT, GROUP BY

SELECT 문을 실행하다 보면 여러 개의 같은 데이터를 반환하게 된다. 이때 중복된 데이터를 제거하고 싶다면 DISTINCT나 GROUP BY를 사용하면 된다. 예를 들어 아래와 같은 TABLE이 있다고 가정하자. machID가 01인 Machine을 불러오는 Query를 작성해 보자. SELECT FIELD명 FROM TABLE명 WHERE machID='01'; Query를 전송하면 다음과 같은 결과를 나타나는데, 이때 '01'이라는 값이 중복되어 호출된다. 이러한 중복을 제거하기 위해서 사용하는 SQL 명령어가 DISTINCT, GROUP BY이다. e.g) DISTINCT문 SELECT DISTINCT FIELD명 FROM TABLE명 WHERE machID='01'; e.g) GROUP BY문..

DB/MySQL 2021.04.20

[C++] 3점을 지나는 외접원의 중심점 구하기

3점을 지나는 원은 통상 삼각형의 외접원(CircumCircle)이라고변의 중심에서 내린 수선이 만나는 지점이다. 이때 넓이는 헤론(Heron)의 공식에 의해서 가 된다. 물론, 가정이 있다. 헤론의 공식으로 넓이를 구하면 사인(Sin) 법칙의 응용으로 외접원의 반지름을 구할 수 있다. 그렇다고 원의 중심을 구할 수 있는 것은 아니다. 결국 원의 중심을 구하기 위해서는 각 변의 중심을 잇는 수선을 구해서 교차점을 구해야 한다. // 외접원의 중심 구하기 double d, d2, yi; Point2D[] CenPoint = new Point2D[2]; for (int i = 0; i < 2; i++) CenPoint[i] = new Point2D(); // 각 변의 중심점 구하기 CenPoint[0].x ..

코드/C++ 2021.04.20

컨스트럭터 내에서 할당 대신 초기화를 사용하라

한 번 설정하고, 여러 곳에서 활용하자. 컨스트럭터 내에서 멤버 변수의 설정을 위한 할당 대신 초기화를 사용하면 불필요한 런터임 작업과 타이핑을 줄일 수 있다. 컨스트럭터는 내부적으로 초기화 코드를 만들어낸다. 다음 코드를 보자. class A { string s1_, s2_; public: A() { s1_ = "Hello,"; s2_ = "World"; } }; 실제로는 여러분이 다음과 같이 작성한 것처럼 컨스트럭터의 코드가 만들어진다. A() : s1_(), s2_() { s1_ = "Hello,"; s2_ = "World"; } 즉 직접 초기화하지 않은 개체는 표준 컨스트럭터를 통해 자동으로 초기화되고, 할당 연산자를 통해 할당된다는 것이다. 주요한 개체의 할당 연산자는 이미 만들어진 개체를 다룬..

728x90
반응형