반응형

1. 시험환경

    ˙ Visual Studio 2022

    ˙ C언어

 

2. 목적

    ˙ C에서 문자열 처리 함수 strtok() 사용법을 알아보자.

    ˙ 특정 문자열을 공백(" ")을 기준으로 잘라내어 출력한다.

 

3. 적용

    ① strtok() 함수를 이용하면 "대상 문자열"을 사용자가 원하는 "문자(열)"로 잘라낼 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>                                // strtok 함수가 선언된 헤더 파일
 
int strtokExample()
{
    int th = 3;
    int idx = 0;
 
    char s1[64= "little little twinkle star";    // sample string
 
    char* ptr = strtok(s1, " ");                   // 공백(" ")을 기준으로 문자열 자름
 
    while (ptr != NULL)                            // 문자열을 끝까지 자를때까지 반복
    {
        if (idx == th)
        {
            printf("%s\n", ptr);                   // 잘린 문자열 출력
            return 0;
        }
 
        ptr = strtok(NULL" ");                   // 잘린 다음 문자열 위치를 포인터로 반환
        idx++;
    }
 
    return 0;
}
cs

 

4. 결과

    ˙ th=3인 경우, 

 

    ˙ th=2인 경우,

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ Visual Studio Community 2022 (C++ 콘솔 앱)

 

2. 목적

    ˙ 윈도우 환경에서 Visual Studio를 설치한다.

    ˙ Visual C++ 프로젝트를 생성하고 실행한다.

 

3. 적용

    ① Visual Studio 다운로드 사이트에 접속하여 개인 사용자가 무료로 사용할 수 있는 Community 버전을 선택한다.

 

    ② Visual Studio Installer를 설치하는 파일이 Download되면 실행한다.

 

    ③ Visual Studio Installer가 Download 되고 설치된다.

        - 설치되고 있는 "Visual Studio Installer"는 "Visual Studio" 그 자체가 아니라,

           Visual Studio를 설치할 수 있는 "설치 관리자 프로그램"이다.

 

    ④  Visual Studio Installer가 설치되었다.

        - 설치경로 : C:\Program Files (x86)\Microsoft Visual Studio\Installer

 

 


 

    ⑤ Installer를 실행하여 설치하고자 하는 구성요소를 선택하고, 본격적으로 "Visual Studio"를 설치한다.

        - 나는 주로 C++과 C# 코딩을 목적으로 Visual Studio를 사용한다.

        - 사용자의 목적에 맞는 항목을 선택하고 설치한다.

 

    ⑥ Visual Studio가 설치된다.

 

    ⑦ Visual Studio가 설치되었다.

        - 설치경로 : C:\Program Files\Microsoft Visual Studio\2022\Community

 


 

    ⑥ 설치가 완료되면 "Visual Studio" 프로그램을 실행하고,  "새 프로젝트 만들기" 버튼을 클릭한다.

 

    ⑦ "C++ 콘솔 앱" 신규 프로젝트를 생성한다.

 

    ⑧ 프로젝트 폴더 및 이름을 설정한다.

 

    ⑨ 프로젝트가 구성되었다.

 

4. 결과

    ˙ <Ctrl> + <F5> 단축키를 이용하여 컴파일 Success 및 실행 확인한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ MariaDB 10.5 x86

 

2. 목적

    ˙ 특정 port로 서비스 중인 PID(Process ID)를 확인할 수 있다.

    ˙ PID를 통해 실행되고 있는 프로그램 이름을 확인할 수 있다.

    ˙ 3307 port로 서비스 중인 MariaDB port를 3306으로 변경한다.

    ˙ 여러 DB 프로그램을 동시에 운영하는 경우 서비스 포트(port)를 다르게 설정하여야만 한다.

 

3. 적용

    ① 현재 운용중인 "서비스"-"포트" 상태를 파악한다.

        - 명령어 : netstat -ano

        - PID 5176인 프로스세가 3307 TCP 포트를 사용하고 있다.

 

    ② PID가 5176인 프로그램이 무엇인지 알아보기 위해 "윈도우 홈" 버튼에서 우클릭하여 "작업 관리자"로 들어간다.

 

    ③ PID 5176에 해당하는 프로그램 이름은 MariaDB 이다.


    ④ MariaDB의 포트 번호를 변경하기 위해서 설정 파일(my.ini)을 관리자 권한으로 연다.

 

    ⑤ port 번호를 3307에서 3306으로 변경한다.


    ⑥ 변경된 설정을 적용하기 위해서 서비스를 "반드시" 재시작해야만 한다.

 

    ⑦ 서비스 목록에서 MariaDB를 더블 클릭한다.

 

    ⑧ <서비스 상태>에서 "중지" 후 "시작" 한다.

 

4. 결과

    ˙ Command 창에서 "netstat -ano"를 실행하여 MariaDB port 변경이 되었는지 확인한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

'MariaDB' 카테고리의 다른 글

MariaDB 외부 접속 허용 설정  (0) 2023.07.02
mariadb 데이터 저장소 경로 변경하기 (window)  (0) 2023.01.31
MariaDB 설치 (윈도우)  (0) 2023.01.31
반응형

1. 시험환경

    ˙ 윈도우

    ˙ MySQL

 

2. 목적

    ˙ 윈도우 부팅과 동시에 자동으로 서비스 되는 기능 종료하기

    ˙ 실행 중인 MySQL, MariaDB 등의 port 변경 전 서비스 종료하기

 

3. 적용

    ① 윈도우 검색창에서 "서비스" 앱을 찾아서 실행한다.

 

    ② 서비스 목록 중 제어하고자 하는 서비스를 더블클릭한다.

        - 여기서는 "MySQL80" 서비스를 찾아서 더블클릭하였다.

 

    ③ <서비스 상태>에서 "중지" 버튼을 클릭하면 현재 동작 중인 서비스가 종료된다.

    ④ <시작 유형>에서 "수동"으로 변경하면 윈도우 부팅과 동시에 자동 서비스 되는 것을 막는다.

        - 즉, 사용자가 수동으로 서비스를 시작해야 한다.

 

4. 결과

    ˙ <서비스 상태>에서 "중지" 버튼을 클릭하면 현재 동작 중인 서비스가 종료된다.

    ˙ <시작 유형>에서 "수동"으로 변경 후 윈도우 재부팅시 해당 서비스가 실행되지 않는 것을 확인할 수 있다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2017 v141 (x64, Release) 간 연동

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2012 v110 (x64, Release) 간 연동

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2010 v100 (x64, Release) 간 연동
    ˙ Maria DB 10.5.8 (x32) 와 Visual Studio 2010 v100 (x32, Release) 간 연동

 

2. 목적

    ˙ MariaDB와 Visual Studio(C++) 간 연동 설정 및 동작을 확인한다.

    ˙ Visual Studio 버전별 연동 설정 및 동작을 확인한다.

 

3. 적용

    ① Maria DB에 접속하여 시험용 테이블과 데이터를 준비한다.

 

    ② 프로젝트 속성창 <C/C++> → <일반> → <추가 포함 디렉토리>에 "MraiaDB include" 폴더를 추가한다.

        - MariaDB (x64) : C:\Program Files\MariaDB 10.5\include\mysql

        - MariaDB (x32) : C:\Program Files (x86)\MariaDB 10.5\include\mysql

 

    ③ 프로젝트 속성창 <링커> → <일반> → <추가 라이브러리 디렉토리>에 "MraiaDB library" 폴더를 추가한다.

        - MariaDB (x64) : C:\Program Files\MariaDB 10.5\lib

        - MariaDB (x32) : C:\Program Files (x86)\MariaDB 10.5\lib

 

    ④ 프로젝트 속성창 <링커> → <입력> → <추가 종속성>에 "libmariadb.lib" 파일을 추가한다.

 

    ⑤ Visual Studio 프로젝트 폴더에 "libmariadb.dll" 파일을 복사한다.

 

    ⑥ DB에서 데이터 추출을 위한 코드를 작성한다.

mariaDbConnMain.cpp
0.00MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <mysql.h>
 
using namespace std;
 
void main()
{
      MYSQL *conn;
      MYSQL *conn_result;
      unsigned int timeout_sec = 1;
 
      conn = mysql_init(NULL);
      mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &timeout_sec);
      conn_result = mysql_real_connect(conn, "127.0.0.1""root""1q2w3e""test"3307NULL0);
 
 
      if (NULL == conn_result)
      {
            cout << "DB Connection Fail" << endl;
      }
      else
      {
            cout << "DB Connection Success" << endl;
 
            char query[1024];
            MYSQL_RES *result;
            MYSQL_ROW row;
 
            sprintf_s(query, 1024"SELECT * FROM testTbl");
 
            // Send Query
            if (mysql_query(conn, query))
            {
                cout << "SELECT Fail" << endl;
            }
 
            // Get Response
            result = mysql_store_result(conn);
 
            int fields = mysql_num_fields(result);    // 필드 갯수 구함
 
            while (row = mysql_fetch_row(result))     // 모든 레코드 탐색
            {
                for (int i = 0; i < fields; i++)    // 각각의 레코드에서 모든 필드 값 출력
                {
                    cout << row[i] << "   ";
                }
                cout << endl;
            }
 
            mysql_free_result(result);
            mysql_close(conn);
      }
 
      return;
}
cs

 

4. 결과

    ˙ 프로그램 실행 시 DB 테이블에 저장된 데이터를 정상적으로 가져올 수 있다.

 

    ˙ 여러 버전을 테스트한 결과 동일한 플랫폼 간 연동은 정상 동작 하지만, MariaDB(x32)와 Visual Studio(x64) 간

         또는 그 반대의 연동은 컴파일 시 링크 에러가 발생한다.

    ˙다른 플랫폼 간 연동을 위해서는 DB에서 제공하는 별도의 Connector가 필요하다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ Spring Framework

    ˙ Apache Tomcat 9.0.21

 

2. 목적

    ˙ Spring Framework 개발환경에서 SameSite 쿠키를 설정하고 동작을 확인한다.

 

3. 적용

    ① web.xml에서 쿠키 설정을 추가한다.

        - web.xml은 Spring Framework 개발시 한글 설정, 로그인 등 web 화면에서 나타나는 부분을 설정하는 파일이다.

1
2
3
4
<cookie-config>
    <http-only>true</http-only>
    <secure>true</secure>
</cookie-config>
cs

 

4. 결과

    ˙ 설정 후 web 화면을 reload하면 SameSite 컬럼이 "Strict"으로 적용된 것을 확인할 수 있다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 스프링 프레임워크 5.1.8.Release

    ˙ MyBatis 3.5.1

    ˙ MySQL 8.0.13

 

2. 목적

    ˙ 스프링 개발 환경에서 100만건 이상의 대용량 데이터 DB에 저장한다.

    ˙ DB에 연속적으로 INSERT 하는 도중 발생하는 에러에 대처한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: The driver was unable to create a connection due to an inability to establish the client portion of a socket.
 
 
This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable. 
For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required.
For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).
 
 
(에러 발생 위치... 생략)
 
 
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: The driver was unable to create a connection due to an inability to establish the client portion of a socket.
This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable. 
For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required.
For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy8.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
(생략)
cs

 

3. 적용

    ① 윈도우 레지스트리 실행 (단축키 : win + R)

    ② 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    ③ MaxUserPort를 최대값 65534로 변경한다.

 

4. 결과

    ˙ 레지스트리 정보 수정 후 다시 시도한 결과, 해당 오류가 다시 나타지 않았다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

 

반응형

'설정' 카테고리의 다른 글

[디스크 관리] 파티션 삭제 및 병합하기  (0) 2022.06.10
SSH Agent Key Forwarding in putty, mobaxterm  (0) 2022.06.06
윈도우 폴더 공유 설정  (0) 2022.01.20
Apache Maven 설치  (0) 2021.06.16
Virtual Box 공유 폴더 설정  (0) 2021.06.15
반응형

1. 시험환경

    - Bootstrap

    - Java Script

 

2. 목적

    - <ESC> 입력시 Modal 창이 닫히는 것을 방지한다.

    - Modal 영역 밖에서 마우스 클릭시 Modal 창이 닫히는 것을 방지한다.

 

3. 적용

① Modal 태그에 적용하는 방법

 

② JavaScript에서 적용하는 방법

$('#signup-modal').modal( {data-backdrop: 'static', data-keyboard: 'false'} );

 

4. 결론

① data-backdrop과 data-keyboard 속성을 함께 설정하면 동작하는 것을 확인할 수 있다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다.

반응형

+ Recent posts