By a3040, Published on Invalid Date
환경변수 경로 보기
$env:PATH
;로 분할해서 보기
$env:PATH -split ";"
By a3040, Published on Invalid Date
기초용어 : 선언, 정의, 참조
선언: 함수의 서명(signature)을 작성
void print(); //<-- 선언
정의: 구현
void print(){ //<-- 정의
std::cout <<"hello" << std::endl;
}
참조:
extern은 **외부 선언(external linkage)**을 의미하며, 변수가 다른 파일에서 정의되었음을 알려주는 역할
변수에서의 extern: 참조
extern int globalVar; 변수는 다른 파일에서 정의되어 있으며, 이 파일에서는 그 변수를 참조한다는 뜻
함수에서의 extern: 선언
extern void myFunction();
함수는 extern을 생략하고도 선언할 수 있습니다.
namespace는 namespace 영역에서 extern scope를 갖음.
//ns.h
#ifndef __ns_h__
#define __ns_h__
namespace ns{
namespace siam{
extern int g_int;
}
}
#endif
//ns.cc
namespace ns{
namespace siam{
int g_int = 10;
}
}
//def.cc
#include <iostream>
int in_def_cpp_int = 100;
void print(){
std::cout << in_def_cpp_int <<std::endl;
}
//main.cc
#include "ns.h"
#include <iostream>
extern int in_def_cpp_int; //외부 어딘가에 정의되어다는 참조
extern void print(); //외부 어딘가에 정의한것이 있다는 선언
extern int not_exitsts_int;
int main(){
std::cout << ns::siam::g_int << std::endl;
//std::cout << g_int << std::endl; //에러
std::cout << in_def_cpp_int << std::endl;
in_def_cpp_int = 1000;
print();
std::cout << in_def_cpp_int << std::endl;
std::cout << not_exitsts_int << std::endl;
// std::cout << ns::siam::g_int << std::endl;
return 0;
}
//cmake
//add_executable(nsmain ./ns/ns.h ./ns/ns.cc ./ns/def.cc ./ns/main.cc )
By a3040, Published on Invalid Date
- cmake/cmake-gui
- 타겟이란? 만들려고 하는 목적물 이름
add_executable(Tutorial tutorial.cxx)
이 경우 윈도우 환경에서 Tutorial.exe 파일이 만들어지고 CMakeLists.txt에서 타켓이름은 Tutorial임
CMakeLists.txt
cmake_minimum_required(VERSION 3.10) #버전표시
project(Tutorial) #프로젝트명 표시
add_executable(Tutorial tutorial.cxx) # 실행파일 만들기
윈도우에서 CMake사용시 cl인지 gcc인지?
message(STATUS "C Compiler: ${CMAKE_C_COMPILER}")
message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}")
message(STATUS "C Compiler ID: ${CMAKE_C_COMPILER_ID}")
message(STATUS "C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
현재 타겟의 컴파일 옵션은?
#현재 CMakeListtxt에서 설정된것
get_target_property(TARGET_COMPILE_OPTIONS my_target COMPILE_OPTIONS)
#모든 타겟의 옵션 상속된것까지 /
get_target_property(ALL_COMPILE_OPTIONS my_target INTERFACE_COMPILE_OPTIONS)
add_definitions()
> 컴파일러에 전달할 전처리기 매크로(-D 옵션 포함)나 컴파일러 옵션을 추가
특정 컴파일러 대상으로
target_compile_definitions(my_target PRIVATE _UNICODE)
add_definitions(-D_UNICODE) #cl에 /D_UNICODE 로 전달, GCC/Clang: -D_UNICODE
이건 안됨 ? add_definitions(_UNICODE) #cl에 문자열로 전달됨
if (MSVC) #msvc빌드일때 있음
add_definitions(/D_UNICODE) # MSVC는 /D 사용
#안됨? add_definitions(/Wall) # MSVC는 /Wall 사용
add_compile_options(/Wall)
else()
add_definitions(-D_UNICODE) # GCC/Clang은 -D 사용
#안됨? add_definitions(-Wall) # GCC/Clang은 -Wall 사용
add_compile_options(-Wall)
endif()
add_definitions(-D_XX=1) 은 global scop #define _XX 1 와 동일
외부 dll이 release로 되어 있어서 나도 Release 컴파일 할때 msvc 컴파일 옵션 추가하기
target_compile_options(${TARGET} PRIVATE /Od /Zi /Gy) # cmake에서 msbuild, cl.exe 사용시
target_link_options(${TARGET} PRIVATE /DEBUG /OPT:REF /OPT:ICF)
By a3040, Published on Invalid Date
상황에 따라서 현재 httpd 가 어떻게 컴파일 되어 있는지 상황이 어떤지 확인 해야할 경우가 있습니다.
1. httpd가 실행 가능한가 확인해보기
2. 버전 확인해보기
3. 컴파일시 서버 기본 설정 확인해보기
4. 설정 파일 확인해 보기
5. httpd 서버 실행하기
6. 동작 상태 확인
httpd
는 아파치 하이퍼텍스트 전송 프로토콜 (HTTP) 서버 프로그램이다. 자체(standalone) 데몬 프로세스로 실행하도록 설계되었다. 원한다면 요청을 처리하기위해 자식 프로세스와 쓰레드들을 만든다.
일반적으로 httpd
를 직접 실행하기보다는 유닉스기반 시스템에서는 apachectl을 통해, 2000, XP에서는 서비스로, Windows 9x와 ME에서는 콜솔 프로그램으로 실행해야 한다.
1. httpd가 실행 가능한가 확인해보기
- 현 os에서 동작하는지 확인 가능합니다.
www]# ./bin/httpd -h
Usage: ./bin/httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-v] [-V] [-h] [-l] [-L] [-S] [-t] [-T] [-F]
2. 버전 확인해보기
- 버전을 확인합니다.
www]# ./bin/httpd -v
Server version: Apache/1.3.37 (Unix)
Server built: Dec 17 2006 17:32:36
3. 컴파일시 서버 기본 설정 확인해보기
설정파일 및 실행 후 로그 관련 도메인에 연결된 정보를 확인하기 기본 설정을 확인할 필요가 있습니다.
컴파일 때의 기본 설정을 확인 합니다.
www]# ./bin/httpd -V
Server version: Apache/1.3.37 (Unix)
Server built: Dec 17 2006 17:32:36
Server's Module Magic Number: 19990320:18
Server compiled with....
...
-D HTTPD_ROOT="/www"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_ERRORLOG="logs/error_log"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
...
현재의 설정일 경우 옵션 없이 httpd가 실행될때 기본 설정 파일을 찾는 위치는 /www/conf/httpd.conf 입니다.
기본 로그 파일의 위치는 /www/logs 입니다.
4. 설정 파일 확인해 보기
설정 파일을 확인 합니다.
./bin/httpd -t
에러일 경우 에러가 무엇인지 나타납니다. 기본 설정으로 테스트 하기 때문에 윗쪽에서 분석했던 위치의 설정파일을 확인해줍니다.
정상일 경우 Syntax Ok 가 출력됩니다.
특정 설정 파일이 현재의 httpd컴파일 상태로 실행가능한가? 확인
./bin/httpd -f /etc/httpd/conf/httpd.conf -t
5. httpd 서버 실행하기
파일을 구성합니다. ServerRoot 및 httpd.conf 설정을 정상구성 후 실행해봅니다.
실행 확인 및 실행 - 정상 상태
www]# ./bin/httpd
기본은 80번이고 특별한 일 없이 실행됩니다.
정상 실행된 경우 그냥 저렇게 다음 명령어를 기다리고 끝입니다.
실행 되는 설정과 안되는 경우의 설정들 예시
www]# ./bin/httpd -f /etc/httpd/conf/httpd.conf
Syntax error on line 148 of /etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/mod_auth_basic.so into server: /etc/httpd/modules/mod_auth_basic.so: undefined symbol: apr_table_unset
설정파일의 기본 로드 모듈과 현재 실행시킨 httpd와 맞지 않습니다. 실행 안됨
www]# ./bin/httpd -f /www/conf/httpd.conf <--- 동작하도록 수정한 기본 설정 파일입니다. 실행후 그냥 다음 명령 요청 나오면 시작된 것입니다.
www]#./bin/apachectl stop 은 설정에있는 pid 파일을 이용해서 현재 실행중인 httpd를 종료하는 명령어입니다.
www]# ./bin/httpd -f /old_05/www/conf/httpd.conf
특정 위치의 설정 파일이 정상 동작하는 결과가 나온 상태입니다.
안되는 경우는 재 설치 혹은 에러에 따른 처리를 해줘야합니다.
6. 동작 상태 확인
ps -ef |grep httpd 명령등을 이용해서 프로세스 상태를 확인합니다.
브라우저 등을 이용해서 외부 접속 상태를 확인합니다.
설정위치의 log를 이용해서 추가 에러를 수정합니다.
httpd - 아파치 하이퍼텍스트 전송 프로토콜 서버 - Apache HTTP Server Version 2.4
By a3040, Published on Invalid Date
HeidiSQL은 MariaDB, MySQL, Microsoft SQL Server, PostgreSQL, SQLite 등에서 사용할수 있는 GUI 데이터베이스 관리 프로그램입니다.오픈 소스입니다.
1.설치
2.세션관리자 설정
3.작업
1.설치
에서 사용하는 os 버전에 맞게 다운 받아 설치합니다
2.세션관리자 설정
- heidiSQL 실행
- 파일 > 세션관리자 클릭
- 세션관리자 창에서 > 하단 “신규” 버튼 클릭 후
접속할 db의 Ip ,사용자 ,암호, 포트 3306(기본)를 설정합니다. 현재 mysqld로 접속설정 후
3.작업
1번 부분에서 연결된 dbms관련 탐색
2번 부분에서 정보및 쿼리 실행(탭 부분)
3번에는 실행한 쿼리가 로깅됩니다.