본문 바로가기

반응형

진리는어디에

(289)
쉘 스크립트(shell script) - 명령어 1. Shell? shell이란 kernel과 프로그램 및 사용자 인터페이스를 제공하는 중간 매개체이다. 사용자가 shell에서 제공하는 프롬프트를 이용하여 명령어를 입력하면 shell은 입력 받은 명령어를 kernel이 실행 할 수 있는 언어로 변환하여 전달 한 후 실행되기 때문에 보통 shell을 ‘명령어 해석기’라고 한다. 2. Shell 변경 및 확인 2.1. 사용 가능한 Shell 확인 # chsh –l or 또는 cat /etc/shells 를 입력하면 사용 가능한 shell 이 출력된다. 2.2. Shell 변경 다른 쉘로 변경하기 위해서는 프롬프트 상에서 “chsh”를 입력하면 새로운 프롬프트를 생성한다. 이때 바꾸고자 하는 쉘이 있는 패스를 적어주면 된다. 이렇게 쉘을 변경하게 되면 /e..
쉘 스크립트(shell script) - 변수 Unix와 Linux에서는 OS에 의해 사용되는 기본적인 변수(시스템 변수)와 사용자 정의 변수로 나뉠 수 있다. ※ 일반적으로 시스템 변수는 대문자로, 사용자 변수는 소문자로 표기한다. 1. 시스템 변수 변 수 설 명 PS1 bash 쉘 프롬프트 PS2 쉘의 하위 프롬프트 설정 PS3 select 문에서의 프롬프트 PS4 bash의 debug 모드에서의 프롬프트 HOME 사용자 홈디렉토리 PATH 실행 파일의 디렉토리 경로 지정 BASH 사용 쉘 및 경로 BASH_VERSION bash 쉘의 버전 ENV 환경 설정 파일 USER 사용자 USERNAME 사용자 이름 SHELL 지정한 쉘 및 쉘의 경로 MAIL 메일 보관 디렉토리 경로 MAILCHECK 메일 확인 주기 MAILPATH 사용자 메일 경로 설..
쉘 스크립트(shell script) - 반복문 1. for ♦ for 의 형식 for 문은 in 다음에 오는 값을 끝까지 대입하여 반복적으로 실행하는 실행 문이다. for 변수 in 값; do 문장 done for((초기값; 조건식; 증감)); do 문장 done 예제 for_ls.sh #!/bin/bash for i in $(ls); do echo FILE : $i done 예제 for_inc.sh #!/bin/bash for ((i=0;i
Python embedding 2 - Calling Python function from C/C++ Appilcation /** 에구..날씨는 추워지고 옆구리는 허전해 지고, 덩달아 지갑까지 말썽이군요. 얼마전에 다녀가신 파산 신의 영험하심으로 아직도 가난에 허덕이고 있습니다. 인생 살아 오면서 여지껏 만원 이상의 돈을 빌려 본적이 없는 것 같은데, 태어나서 처음으로 20만원이라는 거금을 빌려 보았습니다. 하지만 중요한 것은 이 돈이 제 생활비로 들어 갈 것이 아니라, 여러 경조사금으로 모두 날아갈 돈이라는 것..ㅠㅠ 차마 더 어려우신 분들이 많기에, 여러분의 불우 이웃이 바로 접니다~..라는 말은 절대 하지 못하겠네요. 날씨가 추워지고 있습니다. 주변에 어려우신 분들 한번 둘러보시고, 살짝쿵 도움의 손길 한번 건네 보세요. 평소에는 아무렇지 않게 살다가 연말에만 도움의 손길 내밀려니 왠지 쑥스러워서 그러지 못하시는 분들~..
[C++] STL map의 요소 삭제시 주의 할 점 요즘들어 포스팅 하는 주기가 점점 길어 지고 있네요. 날씨는 점점 추워지고 솔로들이 더욱 살아 남기 힘들어지는 크리스마스가 다가 오고 있습니다. 저도 크리스마스 때 남들처럼 거리를 활보 하고 싶습니다만 겨울의 거리는 솔로에겐 냉정하지요. 올 크리스마스는 징검다리 휴가라, 크리스마스 이브에 휴가를 내면 4일을 연속으로 쉴 수 있군요. 하지만 어디 딱히 갈 곳도 없고 오라는 곳도 없으니, 저는 웹 서핑이나 하면서 블로그 포스팅이나 하렵니다. 오늘은 stl의 map의 erase에 대해서 간략하게 알아 보겠습니다. 보통 다른 stl의 컨테이너들은 erase를 하는 것에 대해 별다른 신경을 쓰지 않아도 별 문제가 없지만 map이란 녀석은 다른 컨테이너들 처럼 다루면 성질을 부리며 런타임 오류를 내버리는 경우가 있..
[C++] 멀티스레드 환경에서 volatile의 유용한 사용법 얼마전 싱글톤 패턴 관련 책을 보다 volatile에 관한 내용을 읽고, 보다 정확한 용도에 대해 알기 위해 인터넷을 떠돌던중 Dr.Dobb's에서 volatile: The Multithreaded Programmer's Best Friend라는 흥미로은 아티클을 발견하여 한글로 옮겨 봅니다. 간단하게 내용을 요약하자면 volatile이라는 키워드의 특성을 이용하여 쓰레드간에 공유 되는 변수에 강제적으로 lock을 잡고 사용하도록하는 방법을 제시하고 있습니다. 스레드간 공유 되는 자원에 lock을 잡지 않고 사용하고자 한다면 컴파일 타임에 에러를 발생 시켜 런타임에 프로그램이 예측 되지 않는 동작을 하는 것을 방지해 줍니다. 들어가며 volatile 키워드는 비동기 이벤트 환경에서 컴파일러 최적화를 통해..
데코레이터 패턴(Decorator Pattern) 의도 객체에 기능을 동적으로 추가/삭제하기 위해 사용. 상속을 이용하지 않고 객체의 합성을 이용하므로 flexiblity가 높다. 클래스 상속을 이용해 기능을 추가하게 되면 이미 생성 되어 존재하던 객체에 기능이 추가 되는 것이 아니라, 상속을 통해 기존의 기능을 물려 받은 클래스에 새로운 기능을 정적으로 추가한다. 이런 경우 실행 시간에 동적으로 기능을 추가 하는 것이 아니라 기능이 추가된 새로운 객체를 생성해야만 한다. 동기 클래스 전체가 아닌 각각의 객체마다 특정한 기능을 추가 시기고자 하는 경우 사용되는 패턴이다. 예를 들어 아래와 같은 클래스 구조가 있다고 가정하자. 모든 Write 연산에 대한 최상위 추상 클래스 Stream이 있고, 쓰는 대상에 따라 Stream 클래스를 상속 받은 FileS..
DLL에서 EXE의 함수 호출하기 들어가며 일반적으로 EXE에서 로드된 DLL의 함수를 호출하는 것은 일반적인 일이다. 하지만 플러그인 프로그램이나 기타 다른 이유로 인해 DLL에서 EXE의 함수를 호출 해야하는 경우가 있다. 이 문서는 그런 경우 유용한 팁을 소개하고 있다. 이 문서는 윈도우에서 DLL을 만들고 로드 하는 방법을 알고 있다는 가정하에 작성 된 것이므로 DLL프로젝트의 생성이나 로드 방법에 대해서는 자세하게 다루지 않는다. 1. 함수를 exporting하는 exe 만들기 exe에서 함수를 export하는 것은 dll에서 하는 그것과 동일한 작업을 하면 된다. extern "C" { __declspec(dllexport) void ExportFunctionFromEXE(const std::string& callFrom) {..
Flyweight Pattern 의도 작은 크기의 객체들의 수가 폭발적으로 늘어나는 것을 방지하기 위해 공유 개념을 도입. 동기 객체 지향적으로 설계함으로써 많은 유연성과 재활용성을 기대 할 수 있기는 하지만 늘어만 가는 클래스들을 보고 있노라면 그 비용이 만만치 않음을 느낀다. 클래스를 작은 단위 요소까지 나누어서 설계를 한다면 어플리케이션의 응용성을 높일 수 있고, 해당 요소들을 일관성 있게 다룰 수도 있으며, 요소들에 새로운 기능을 추가하거나 수정한다고 해도 다른 기능에 아무런 영향을 주지 않을 수 있다. 하지만 너무 작은 요소들까지 객체로 다룰때 폭발적으로 늘어나는 객체를 처리 하는 비용은 만만치가 않다. Flyweight 패턴은 이러한 문제를 '공유'를 통해 해결하고자 하는 것이다. 구조참여 객체 * Flyweight - ex..
Composite Pattern 의도 '전체 – 부분'을 표현하기 위해 객체들을 트리구조로 묶을 수 있다. 클라이언트 코드는 각 개별적인 객체(부분)와 다른 객체를 포함하는 객체(전체)를 동일한 인터페이스를 통해 사용할 수 있다. 구조 위의 모델에서 Composite 클래스는 Component 인터페이스를 포함하는 형식으로, 실제적으로 Component 인터페이스에는 Leaf나 Composite의 인스턴스를 가리키게 된다. 이런 구조를 인스턴스 다이어그램으로 표현 하면 아래와 같다. 하나의 집합객체(Composite)가 Leaf나 Composite를 포함하고 그것은 재귀적으로 계속 이어진다. 모든 인스턴스들은 Component 인터페이스를 구현하고 있기 때문에 클라이언트에서는 Leaf와 Composite에 구분없이 동일하게 취급이 가능..

반응형