본문 바로가기

CS120

[Linux/C++] main 함수에서 전달받는 argv 임의로 초기화 하는 방법 오늘은 C++ 로 작성 된 프로그램을 gtest 로 테스트하다가 문제가 발생했어요 내용: 구성 된 gtest 를 수행 시 segmentation fault 가 발생 조치: argv 를 사용하는 테스트가 초기화되지 않은 argv 를 사용. 초기 값 설정이 필요 결론적으로 Test 용도로 argv 를 임의로 설정해야 했습니다. 실제 프로그램에서는 프로그램 이름으로 argv[0] 이 들어오기 때문에, 테스트에서만 문제가 발생하는 경우였고, argc 가 0 보다 큰지 정도만 체크해도 됐지만, fake argument를 같이 넣어서 테스트를 다시 작성했습니다. 원래 있던 코드는 아래처럼 작성되어 있었어요. #include using namespace std; int main( int argc, char *argv.. 2021. 11. 1.
[오늘의 업무/Bash] Shell 문자열에서 원하는 부분만 치환/변경 하는 방법 안녕하세요 일상창고입니다. 회사에서 겪은 일들을 정리하는 '오늘의 업무' 입니다. 회사 업무중에 코딩스킬이나, 다시한번 연습해서 다음에 잊고싶지 않은 내용들을 정리하고 있습니다. 쉘 스크립트 만들다 보면 원하는 문자만 바꾸고 싶은 경우가 종종 발생합니다. 뭐.. vim 으로 수정 할 수 있는 고정 문자열들이야 :%s 를 사용해서 바꾸면 되겠지만.. 특정 프로그램의 output으로 나오는 문자는 동적으로 바꿔야 하는데 이럴 때 좀 고민이 되더라구요. 이럴 때 제가 사용하는 명령어는 'sed' 입니다. 아래 예시를 보면 이해하기 쉬울 것 같습니다. #/bin/bash output="test/test.sh" echo $output output=`echo $output | sed 's/\//_/g'` echo .. 2021. 10. 7.
[python] 오류출력은 에러로 보내주세요 ! - print 함수의 출력을 stderr 로 보내기 코드 리뷰를 하다 보면 너무나 자주 받는 피드백이 있다. "에러에 대한 print는 stderr로 보내달라." 사실 이제 자연스럽게 할 법도 한데 습관이라는 게 참 만들기가 힘들다. 왜 stderr로 보내야할까? 라는 의구심이 들 수 있다. '그냥 stdout으로 출력하면 어쨋든 볼 수 있는데?' 나는 이런 의구심에 대한 답변을 아래와 같이 할 것 같다. "에러 로그는 따로 남길거에요, 같이 보면 디버깅하기 힘들거든요" 뭐 이것 말고도 다른 이유가 참 많을 거라고 생각이 된다. 다른 모듈에서 호출하는 경우에 stdout 과 stderr를 구분해서 출력하는 함수가 있다면, 일반적인 stdout에 에러 메시지들 까지 호출되어 버린다던가.. 아니면.. 어떤 사람은 파이프를 이용해 stderr만 뽑아내는데 에러.. 2021. 10. 6.
[Bash] 배쉬쉘에서 파일/디렉토리 유무 확인하기 오늘은 업무 중 Bash script를 사용하다가 파일 존재 유무 확인이 필요해서 file check script를 작성했는데요, 앞으로도 Bash shell 을 이용한 파일체크가 잦아질 것 같아서 따로 정리하려 합니다. File check 하는 조건문 만들기 우선 파일의 유무를 확인하기 위해서는 아래와 같은 조건문을 사용 하면 됩니다. 211006.sh #!/bin/bash FILE="./test" if [ -f "$FILE" ]; then echo "$FILE exists." else echo "$FILE not found." fi if [[ -f "$FILE" ]]; then echo "$FILE exists." else echo "$FILE not found." fi 실행결과 $ ./211006... 2021. 10. 6.
[python] python에서 객체를 string으로 출력하는 방법 Python 에서 class 를 사용하는 일은 정말 많을테고, 이를 출력해 줘야 할 때가 있을텐데 이럴 때 __str__ 메서드를 사용하면 좋습니다. 사실 출력이 더 쉬워진다고 말하기는 어렵지만, 그래도 개발하는 사람들은 str () 을 사용할 수 있기를 기대할 거에요.그닥 기대가 없는 분들도 많겠지만.. 저는 출력을 해야하는 상황이라면 있었으면 좋겠다 라는 생각이 들곤 했습니다.그럴 때, 원하는 object에 __str__ 메서드를 구현 함으로써 아래와 같은 결과를 얻을 수 있습니다.class apple: def __init__(s): s.color = 'red' s.size = 'medium' s.price = 5000 def __str__(s): .. 2021. 10. 4.
[Python] String List 내용 문자열(string) 만드는 방법 - join 함수 매일 쓰는 내용이라 더 이상 찾고싶지 않아서 쓰는 글입니다. List 에 string을 보관하게 되는 경우가 많은데, 이럴 떄 밥먹듯이 쓰는 함수가 있습니다. 그것은 바로 join 일단 공신력 있는 레퍼런스를 보고 가시죠. 그냥 사용법만 보고싶으시면 skip해도 무관합니다. https://docs.python.org/3/library/stdtypes.html#str.join Built-in Types — Python 3.9.7 documentation The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, m.. 2021. 10. 1.
[Bash shell] Shell 에서 따옴표 없애는 방법 종종 필요했던 내용인데 정리하고 나중에 다시 찾지 않기 위해서 기록을 남긴다. 업무 중 cat으로 파일 내용을 출력하고 그 내용을 이용해서 명령어를 만들어야 할 필요가 있었는데, 이때 내용에 따옴표가 있어서 잘 사용하기가 어려웠다. ( 내용은 Web URL 이었다. ) 그래서 따옴표를 없애려고 하는데, vim으로 열어서 삭제할 수 있었지만 바로 명령어 내에서 바꿀 방법이 없을까 싶었다. 이 때 내가 이용한 명령어는 sed (https://linux.die.net/man/1/sed) 이다. 아래 예시를 보면 어떻게 사용하면 될지 대충 감이 올 것이다. 실제로 변경하는 방식도 vim이랑 어느정도 유사하다. 아래와 같은 파일이 있다고 할 때, 나는 " 을 모두 없애고 싶었다. $ cat 0913.test "h.. 2021. 9. 13.
정규표현식 사용, 숫자 문자 포맷 체크하기 옛날부터 잘 사용하던 정규식, 아마 처음에는 전화번호 정도를 체크하기 위해 사용했던 것 같은데 날이 갈수록 틈틈히 사용하게 된다. 그런데 사용법을 어느정도는 알면서도 자꾸 찾아보게 만드는게 정규식인데 그만 좀 찾고싶어서 업무에 자주 사용하는 정도만 정리를 하고 cheat sheet 처럼 활용하기 위해 정리한다. 각 정규식의 확인은 정규식 확인사이트 https://regexr.com 에서 체크하였으니 참고하자. 1. 숫자 또는 문자 체크하기 number 를 확인하는 방법은 여러가지가 있는데 자주 사용하는 방법은 [0-9] 로 체크하는 방법이다. 영문의 경우 [a-z] 로 정규식을 만들 수 있다. 숫자나 문자 외에도 특수문자들도 가능하다 - 예시 : 한 자리 숫자 ( 0 ~ 9 ) - 예시 : 한 자리 알파.. 2021. 8. 29.
[Linux] vim editor 자동완성 활용하기 Vim 사용하다 보면 하나하나 타이핑 한다거나 복사해서 붙여넣기가 여간 불편하다. Visual Studio나 VS Code 등등 각종 에디터에서 Syntax check나 자동완성을 해주는데, 이런게 없는 vim은 참 답답하기 그지없다. 그래도 나름 파일 내 키워드 기반으로 유사키워드를 자동완성해주는 기능이 있는데, 예전에 알아두고는 자주 쓰지 않았던걸 다시 검색하기가 귀찮아서 내가 쓰는 기능만 정리했다. CTRL-PFind previous match for words that start with the keyword in front of the cursor, looking in places specified with the 'complete' option. The found keyword is inser.. 2021. 8. 23.
[bash] 스크립트 에서 signal 캐치하는 방법 업무할때 자주 쓰는데도 불구하고 자꾸만 까먹어서 정리한다. bash script 에서는 trap 을 이용해서 signal을 가로챌 수 있다. 다만 여기서, SIGKILL 은 가로채는 동작이 불가능 함을 미리 알린다. // 아래처럼 trap을 걸면 된다. trap 'action' 1 2 3 trap 'action' SIGINT trap 'action' SIGTERM SIGINT 스크립트 예시를 하나 만들어 보자. sigint 시그널이 왔을 때 프로그램을 종료하는 스크립트 이다. #!/bin/bash function sigint() { echo "SIGINT function!" exit 0 } trap sigint SIGINT while [ 1 ] do echo "I'm in a loop .." sleep .. 2021. 8. 1.
[Python unittest] Python 으로 Unit test 만드는 방법 2 - assert 종류 Python unittest 는 값을 검사하고 실패를 확인하기 위해 몇가지 assert 메서드를 제공한다. Version마다 assert 메서드 차이가 존재하는데, 이 부분은 사용 전 반드시 고려되어야 할 것이다. 메서드 검사내용 Version assertEqual(a, b) a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIs(a, b) a is b 3.1 assertIsNot(a, b) a is not b 3.1 assertIsNone(x) x is None 3.1 assertIsNotNone(x) x is not None 3.1 assertIn(a, b) a in .. 2021. 7. 26.
[Python unittest] Python 으로 Unit test 만드는 방법 1 unittest 개요 현재 작업하는 프로젝트에서 python 테스트를 위해 unittest 를 적극 활용하고 있다. 이번에는 간단히 사용방법에 대해서만 정리하고, 작성하면서 겪는 문제점이나 고려해볼만한 사항들은 추후 지속적으로 정리할 예정이다. 자세한 사용 방법은 아래 URL을 참고해 봐도 좋을 것 같다. https://docs.python.org/ko/3/library/unittest.html unittest — 단위 테스트 프레임워크 — Python 3.9.6 문서 unittest — 단위 테스트 프레임워크 소스 코드: Lib/unittest/__init__.py (당신이 이미 테스트 기본 개념에 친숙하다면, assert 메서드 목록으로 건너뛰어도 좋습니다.) unittest 단위 테스트 프레임워크는.. 2021. 7. 20.
Terraform(테라폼) 클라우드 알아보기 관련 업무를 하고있지는 않지만, 회의나 보고자료에 들리는 용어를 정리 중이다. 근래 Terraform 이나, Ansible 에 대해 언급이 많아지고 있는데, 실제 사용방법이나 경험까지 닿지는 못하더라도 어떤 기술인지 정도만 알아보려 한다. 대부분의 내용은 hashicorp 사이트에서 제공하는 정보를 참조했다. How terraform works Enterprise Terraform Enterprise는 오픈소스 기반의 IaC 프로비저닝을 위한 서비스 worflow, 협업과 거버넌스를 제공합니. 또한, Terraform Enterprise는 Infrastructure를 구축하기 위한 workspace와 module 그리고 협업을 위한 다양하고 강력한 구조를 제공한다. 운영자는 코드기반 인프라를 재사용 가능.. 2021. 7. 11.
Python 개행문자 지우는 방법, strip 과 replace 개요 Python 으로 아래처럼 hostfile을 읽어서 특정 조건에 맞는 값만 새롭게 파일을 쓰는 코드를 만들었는데, 새로 쓰는 파일에는 개행이 아니라 한 라인에 스페이스로 구분을 둬야 했다. 그래서 파일을 읽고 개행문자를 지우는 코드를 작성하게 되어서 기록을 남긴다. 기존 코드 hostfile 호스트 이름이 나열되어 있다. 실제 호스트는 이렇게 이름짓지 않는다. 그저 예시일 뿐이다. t1 t2 t3 t4 c3 c4 c5 python code import os with open("hostfile", "r") as f: lines = f.readlines() with open( "newhost", "w" ) as nf: for l in lines: if 't' in l: nf.write( l ) 파일을 .. 2021. 7. 8.
[Bash] Bash 스크립트에서 argument로 Option 을 처리 하는 방법 업무를 하다보면 여러가지 스크립트를 만들 일이 생긴다. 나는 매번 만드는데도 ... 자꾸만 이것저것 찾아보고 만들게 되는데 내가 필요한 부분만 정리해 두면 그러지 않아도 될 것 같아서 가볍게 argument / option 을 처리할 수 있는 script를 만들어 보려고 한다. 우선 bash script 파일 하나를 만들고 실행 권한을 줬다. vim 210707.sh chmod 775 210707.sh shebang 을 bash로 적고 argument를 받는 코드를 아래와 같이 작성해서 출력 해 보았다. #!/usr/bin/bash echo $@ # 저장 후 실행 ./210707.sh 1 2 3 4 5 1 2 3 4 5 $@ 를 이용해서 실행파일 뒤에 따라오는 argument를 출력해 주는 방법은 알았다.. 2021. 7. 8.