Shell script (1) 역사 및 기본 구성
업무 특성 상 Shell script를 많이 사용하고 있습니다 그래서 이에 대한 정리를 해보고자 합니다 [참고] 여기에서 설명하는 쉘 스크립트는 Linux / Unix 계열 운영체제와 관련된 내용만 작성합니다. Shell script란? 명령어를 실행하는 스크립트 언어 사용자가 수행하는 명령어들을 자동화함으로써 효율성이 증가 반복성을 띠는 배치 처리 작업이나 운영 체제와 연관된 파일/디렉토리 처리 작업에 주로 사용 프로그래밍 언어와 동일한 성격의 문법들이 존재 변수, 함수, 반복문, 조건문 등등... 일부 문법들은 shell의 종류에 따라 지원되지 않을 수 있음 Shell script의 기본 구성 shebang #!/bin/bash
2023.12.26
RAII and Memory Management(2) - boost::weak_ptr
RAII and Memory Management(2) - boost::weak_ptr 예전에 boost::shared_ptr에 대한 글을 작성한 적이 있다. 이때, shared_ptr 내부 변수 중 weak_count에 대한 설명을 작성하려고 구글링했을 때 weak_count에 대한 내용은 없고 죄다 weak_ptr에 대한 이야기를 하고 있어 당황한 적이 있다. 아마 weak_count가 weak_ptr과 관련이 있지 않을까 하는 생각이 들어 shared_ptr다음 바로 weak_ptr을 주제로 포스팅하고자 한다 Weak? weak_ptr도 스마트 포인터의 한 종류이긴 한데 이름에서부터 시름시름 앓는 소리가 들려오는 것 같다. 맞다. weak_ptr은 이를 의도한 스마트 포인터의 한 종류이다. 이를 설명..
2021.11.19
no image
RAII - boost::shared_ptr
RAII and Memory Management(1) - boost::shared_ptr RAII란 Resource Acquisition Is Initialization, '자원 할당은 초기화'의 줄임말이다. 이는 별도의 포스팅으로 다룰 예정이므로 깊게는 얘기하지 않고 짧게 얘기해주자면, 한 번의 선언만으로 번거로운 절차를 거치지 않고 자원 할당 및 반환을 자동으로 할 수 있게 해주는 기법이라고 보면 된다. 이 중 가장 널리 사용되는 boost의 API인 shared_ptr에 대해서 설명하고자 한다. 이는 C++11 표준에 추가되었다. SHARED? 공유 포인터라는 말만 들으면 이게 무슨 소린가 싶다. 포인터는 주소값을 갖고 있고, 그러면 당연히 여러 곳에서 공유할 수 있지 않나? 싶지만 shared_p..
2021.09.25
[C/C++] explicit 키워드란?
explicit 키워드 smart pointer를 공부하다가 explicit 키워드가 붙은 함수를 본 적이 있는데 이 부분에 대한 궁금증이 생겨 따로 포스팅을 작성하려고 한다. 우선 explicit의 사전적 개요는 다음과 같다 explicit 1. [형용사] 분명한, 명쾌한 2. [형용사] 솔직한, 터놓고 말하는 (=frank) 3. [형용사] 명백한, 노골적인 (→implicit) '분명한'과 '명백한'이라는 단어를 기억해둔 채로, 형변환에 대해 다시 한번 되짚보자 형변환 explicit에 대해 설명하다가 갑자기 형변환이 왜 나오나요? explicit이 형변환과 관련된 키워드이기 때문이다. 우선 형변환의 종류에 대해 알아보자. 명시적 형변환 int intVal = 2; float floatVal = (..
2021.09.17
Data structure - Boost::any
Data Structure (1) - Boost::any Boost::Any는 변수를 익명화하는 API다. 변수가 본래 갖고 있던 자료형을 숨겨주는 기능을 한다고 보면 된다. C++에서 종종 볼 수 있는 제네릭과 매우 유사하며, 런타임 시점에서의 다형성을 보장하기 위한 API이다. 그래서 Any 변수에는 int도 저장할 수 있고, String도 저장할 수 있고, 구조체도 저장할 수 있고, 뭐든지 저장할 수 있다. 이거 완전 자바스크립트 아니냐 하지만 다음의 이유로 그닥 사용을 추천하지는 않는다. 쓰려면 캐스팅 함수를 통해 다시 원래 유형으로 돌려놔야 한다 이때 any에 저장된 변수가 무엇인지 특정하기 위한 검사 과정이 필요하게 된다 C++의 특성상 연산자 오버로딩을 하지 않거나 순수 타입 간에는 자료형을..
2021.09.14
APAS 1 - Two Sum
APAS라는 안드로이드 앱에 있는 문제들을 분석하고 이에 대한 제 생각 및 실제 결과를 비교하려고 합니다. int 배열이 있을 때, 주어진 값을 만들 수 있는 2개의 숫자쌍의 index 위치를 반환하라 동일한 index는 중복하여 사용될 수 없으며 주어진 값을 만들 수 있는 배열 내 숫자쌍은 1개만 존재하는 것으로 가정한다 ex) 입력값 : [2, 7, 11, 15] 주어진 값 : 9 답 : 0, 1 [문제 분석] int값이기 때문에 입력값 중 음수가 나올 수 있다 따라서 주어진 입력값 내에서 주어진 값 초과(양수) 또는 미만(음수)의 값을 건너뛸 수 없으며 모든 데이터를 순회해야 한다 2개의 데이터만을 사용해 주어진 값을 생성해야 한다. [내가 생각했던 결과 소스] void Twosum::doTest(..
2021.09.07
생성 패턴(2) - Factory 패턴
팩토리 패턴 팩토리 패턴은 이름에서 유추할 수 있듯, 공장에서 물건을 생산하듯이 객체를 생산할 수 있도록 하는 패턴이다. 객체의 생산을 전담하는 하나의 클래스를 만듦 다음의 장점이 있다 객체 생성 코드가 분산된 경우 변경사항에 대한 적용이 오래 걸리는 문제를 보완 신규 클래스에 대한 객체 생성 코드를 factory 클래스에만 적용하면 되므로 외부에서 객체 생성에 대한 내용을 몰라도 된다 클래스 간 결합도를 낮출 수 있다 결합도? 결합도는 다음 코드를 통해 알 수 있다 class Mouse { ... } class Keyboard { ... } class Monitor { ... } class Desktop { Mouse mouse = new Mouse(); Keyboard kbd = new Keyboar..
2021.08.18
생성 패턴(1) - singleton
Singleton 패턴이란? 객체가 단 하나만 필요할 때 사용하는 패턴 생성된 객체를 어디에서든지 참조할 수 있어야 한다 ex) 설정파일의 설정값을 읽어 사용할 때 따라서 내부 값 변경이 많이 발생하는 클래스의 경우 singleton이 적합하지 않다 값 변경이 많은데 singleton을 써야 하는 경우가 있을까? 주의사항 thread-safe한 패턴이 아니기 때문에 다음과 같은 문제가 있다 멤버 변수 접근 시 lock 처리 instance 객체 생성 시 동시성 문제 처리 이 경우 생성 시점을 일찍/늦게 둔다든지, lock 처리를 한다든지 여러 방법이 있지만 여기에서는 생략하도록 함 생성 예제 // Header file class Configuration { public: /** * 이 부분은 구현 방식에..
2021.07.14
no image
[Eclipse/자동완성] Eclipse에서 ctrl + space로 자동완성이 되지 않을 때
Eclipse를 2020-09로 업데이트하고 나서 ctrl + space 자동완성 키가 동작하지 않는 문제가 발생했다. 다음의 두 가지를 의심해볼 수 있다. 1. 다른 기능이 ctrl + space 조합을 선점하고 있는 경우 보통 한글을 쓰기 위해 프로그램을 쓰는 경우 (fcitx / ibus 등), 또는 시스템 자체의 단축키 중 ctrl+space를 선점하고 있는 경우가 간혹 있으므로 꼼꼼히 확인해보도록 한다. 나는 이 경우가 아니어서 자세히 기록하지는 않고 건너뛰겠다. 2. eclipse 내에서 해당 기능이 동작하고 있지 않은 경우 우선, 메뉴에서 다음과 같이 이동한다 Window - Preferences- C/C++ - Editor - Content Assist - Advanced 여기에서, 위의 ..
2020.11.23