본문 바로가기

IT195

RHEL HOME/END key bind RHEL HOME/END key bind RHEL shell에서 home키와 end키가 동작하지 않으면 bindkey를 통해 사용할 수 있다. bindkey "\e[1~" beginning-of-line bindkey "\e[4~" end-of-line # 또는 bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line 해당 bindkey 명령을 ~/.profile 또는 ~/.bashrc, ~/.cshrc 등 프로파일에 등록해두면 편하다. 2022. 9. 4.
csh stderr redirection csh 환경에서 stderr redirection xargs grep 을 통해 특정 키워드 탐색 시 stderr redirection을 하지 않으면 디렉토리 관련 오류 메시지를 현시한다. 이런 경우 stderr 메시지를 /dev/null 경로로 redirection 하여 키워드가 포함된 결과만 확인할 수 있다. e.g.) 현재 경로 하위에서 내용 중 lib-release 라는 키워드를 찾고 싶을 때 사용 csh 환경 (find . | xargs grep "lib-release" > /dev/tty) >& /dev/null bash 활용 bash -c 'find . | xargs grep "lib-release" 2> /dev/null' 2022. 9. 4.
이동통신 세대 별 명칭/용어 변화 이동통신 세대 별 각 명칭 시스템 3G 4G(LTE) 5G 전체 이동통신 시스템 UMTS EPS 5GS 무선 접속 기술 UTRA E-UTRA NR 또는 E-UTRA 무선 접속망 UTRAN E-UTRAN NG-RAN 기지국 NodeB eNodeB gNodeB 3GPP는 기존 3세대(3G) 이동 통신 기지국의 이름 ‘Node B’와 구별하여 LTE의 무선 접속망 E-UTRAN(Evolved UTRAN) 기지국을 ‘E-UTRAN Node B’ 또는 ‘evolved Node B’라 하였다. 주로 줄임말 eNodeB(eNB)로 사용한다. eNodeB 기지국은 단말(UE: User Equipment)과 무선으로 연결되어 핵심망(EPC: Evolved Packet Core)과의 통신 중계 역할을 한다. 기존 3G .. 2022. 9. 4.
[C/C++] C++ sqlite3 wrapper class sqlite3을 활용하는 C++ wrapper class를 남긴다. 매번 sqlite 함수를 사용하여 코드를 짜는건 너무 귀찮기 때문.. 소스코드: class_database.cpp #include "class_database.h" // Class: SQLHandler, 데이터베이스 관리 SQLHandler::SQLHandler(string _filename) { this->sql_handle = NULL; this->open(_filename); return ; } SQLHandler::~SQLHandler(void) { return ; } bool SQLHandler::open(string _filename) { if( sqlite3_open(_filename.c_str(), &this->sql_ha.. 2022. 3. 23.
[C/C++] C++ string replace_all replace_all string find와 replace를 조합하여 replace_all 기능을 구현한다. 역시 기록용으로 정리한다. 소스코드 #include string replace_all(string &_str, const string& _from, const string& _to) { size_t start_pos = 0; while( (start_pos = _str.find(_from, start_pos)) != std::string::npos ) { _str.replace(start_pos, _from.length(), _to); start_pos += _to.length(); } return _str; } 출처: https://hashcode.co.kr/questions/239/%EC%8A.. 2022. 3. 23.
[C/C++] C++ string ltrim, rtrim, trim ltrim, rtrim, trim C++11 환경에서 작업을 하는데 trim 기능이 없어서.. :( 직접 만들기는 귀찮고 찾다보니 스택오버플로우 댓글 중에 깔끔하게 구현한 코드가 있어서 기록용으로 정리해본다. 소스코드 #include #include #include string ltrim(string _s) { _s.erase(_s.begin(), find_if(_s.begin(), _s.end(), not1(ptr_fun(isspace)))); return _s; } string rtrim(string _s) { _s.erase(find_if(_s.rbegin(), _s.rend(), not1(ptr_fun(isspace))).base(), _s.end()); return _s; } string tri.. 2022. 3. 23.
[PHP] 변수명으로 함수 호출 / function_exists() 변수명으로 함수 호출 PHP 개발을 하다보면 함수명을 동적으로 호출해야할 때가 있는다. 생각보다 간단하므로 아래 소스코드를 참고 하면된다. 소스코드 - test(), test2() 두개의 함수를 생성하고 변수에 함수명을 입력한다. 1. function_exists() 를 이용하여 해당 문자열과 동일한 함수가 있는지 확인한다. 2. 해당 문자열과 동일한 함수가 존재한다면 변수에 () 기호를 붙여 함수를 호출하여 동작하는지 확인한다. 3. 해당 문자열과 동일한 함수가 없다면 예외 처리를 한다. 결과 test test2 test3 - function not found 변수와 동일한 함수가 실행되는 것을 확인할 수 있다. 즉 함수 call point 를 꼭 fixed하지 않고 상황에 따라서 가변적으로 함수를 c.. 2022. 3. 4.
[PHP] URI '/'(slash) 중복 처리 / preg_replace, 정규식 URI '/'(slash) 중복 처리 URI를 처리하다보면 또는 문자열 처리를 하다보면 '/' (slash)를 사용자(또는 동료 개발자)가 중복으로 입력하는 경우가 종종 생긴다. 실수 또는 string merge 등등의 경우에 경로 끝에 / 처리하고 붙이는 string 선두에 / 이 있다던지.. 어쨌든 중복된 / 를 정규식을 이용하여 없애려고 한다. 소스코드 결과 string(23) "//api////device//status" string(18) "/api/device/status" 정규패턴에서 나타내는 #//+# 은 # : escape character 를 있는 그대로 사용한다 라는 의미. /를 \/ 이렇게 표현하지 않아도 되도록.. + : multiple 이란 의미, {//, }과 같고 //, //.. 2022. 3. 4.