본문 바로가기

프로그래밍27

vi 에서 특정 문자열 이후 모든 문자열 삭제 (문자열 치환) 리눅스 vi 으로 특정 문자열을 수정하는 것이 편리할 때도 있습니다. 아래와 같은 경우 문자열이 아무리 길어도 명령어 한 줄이면 한 번에 수정이 되서 오히려 메모장보다 편리한 경우가 많습니다. 가끔 사용할 때마다 까먹어서 내가 보려고 정리하게 되네요. - 특정 패턴의 문자열 이후 모든 문자열 삭제 (문자열 치환) :%s/문자열.*// - 파일 편집 중 특정 패턴의 문자열을 한 꺼번에 수정 (치환) 하는 방법 :%s/문자열/변경 문자열/ - 문자열 맨 앞에 특정 문자열 추가 :%s/^/문자열/g - 문자열 맨 뒤에 특정 문자열 추가 :%s/$/문자열/g 2023. 11. 27.
svn: warning: cannot set LC_CTYPE locale svn 명령어 수행 시 아래와 같은 오류가 발생할 경우 체크해봐야할 사항을 정리해봅니다. svn: warning: cannot set LC_CTYPE locale svn: warning: environment variable LANG is en_US.UTF-8 svn: warning: please check that your locale name is correct 1. export 명령어로 현재 locale 을 확인한다. 2. locale 이 설정되어 있지 않을 경우 export LC_ALL="ko_KR.UTF-8" 수행 3. 정상적으로 동작할 경우, 자동으로 추가하기 위해 .bashrc 파일에 추가. 2023. 1. 26.
[svn] conflict 후 update 안 될 때 해결 방법 svn update 시 에 conflict 발생할 경우 svn repository 의 것으로 update 하고 싶을 때는 다음과 같이 실행한다. 1. svn conflict 에서 postpone 선택. 2. svn revert [file_name] 혹시 해당 파일을 삭제하였다면, 다시 touch 로 만들어주고 실행한다. 1. svn conflict 에서 postpone 선택. 2. conflict 난 파일 삭제. 3. 이 때, svn update 를 하면 해당 파일이 업데이트되지 않는다. svn status 로 해당 파일 확인 시 오류 발생함. (local file unversioned incoming file add upon update) 4. touch [file_name] 5. svn revert .. 2022. 11. 15.
[linux/리눅스] 패킷 캡쳐를 위한 tcpdump 사용 예제 (옵션 사용법) 리눅스에서 Network 환경을 체크할 때 가장 유용하게 쓰는 명령어입니다. 가장 많이 쓰면서도 자주 쓰는 옵션이 아니면 자주 까먹는 tcpdump 사용 example 을 모아보겠습니다. 1. 기본적으로 사용되는 옵션 -i [인터페이스명] 해당 인터페이스를 캡처 한다. -n 모든 주소들을 변환하지 않음 (port, addres) -c [number] 캡처할 패킷 수 tcpdump -i eth1 -n -c 10 2. 시간을 정확히 보고싶을 때 -t 시간표시 하지 않음 -tt 시간을 형식없이 초로 표시 -tttt 년/월/일/시간/분/초 형식으로 표시 tcpdump -i eth4 -n -tttt -c 10 3. 캡처한 내용을 파일로 저장 -w [파일명] 캡처한 정보를 파일명으로 저장한다. /home/jungf.. 2022. 9. 28.
[linux] crond, crontab 사용법 cron 은 linux 에서 특정한 작업을 주기적으로 실행할 때 아주 유용한 명령입니다. crond 는 crontab 이라는 설정 파일에 따라 주기적으로 동작합니다. 한 번 설정 해놓으면 거의 변경할 일이 없기 때문에 자주 사용하지는 않지만 그렇기 때문에 쓸 때마다 까먹게 되네요. crontab 작성 방법 /etc/crontab 의 기본적인 작성 방법은 아래와 같습니다. 분: 실행될 분을 표시합니다. (* 는 매 분마다 실행) 시간: 실행될 시간을 표시합니다. (* 는 매 시마다 실행) 일: 실행될 날짜를 표시합니다. (* 는 매 일마다 실행) 월: 실행될 월을 표시합니다. (* 는 매 월마다 실행) 요일: 실행될 요일을 표시합니다. (* 는 모든 요일마다 실행) 사용자: 실행할 권한을 표시합니다. (r.. 2021. 1. 17.
[shellscript] 중복 실행 방지 - Avoid redundant execution 쉘스크립트를 작성하다보면 중복 실행에 의해 문제가 발생하는 경우가 종종 있습니다. 이런 경우를 방지하기 위해 간단한 중복 실행 방지 코드를 적용할 수 있습니다. 실행 예하기 코드는 간단하게 1초에 한 번식 현재 시간을 출력하는 shellscript 입니다. Main function 에서 현재는 1초 sleep 후 현재 날짜를 수행하고 있습니다. 중복으로 실행할 경우 하기와 같이 1초에 1번씩 실행되어야 할 것들이 여러 번 출력되는 것을 확인할 수 있습니다. 이렇게 중복해서 실행될 경우 예상하지 못했던 문제가 발생할 수 있기에 중복 실행 코드를 추가합니다. 중복 실행 방지 코드중복 실행 방지 코드는 프로그램 실행 시 pid 번호를 특정 파일에 적어놓고 프로그램이 종료할 경우 해당 파일을 삭제합니다. 중복으.. 2021. 1. 13.
[shellscript] error: garbage option 오류 shellscript 에 중복 방지 기능을 추가하던 중 "error: garbage option" 이런 오류가 발생했습니다. 이상하게도 해당 오류가 발생하고 난 후에는 제가 작성한 파일이 모두 없어져서 한참을 헤맸습니다. 오류 내용은 아래와 같습니다.error: garbage option Usage: ps [options] Try 'ps --help ' or 'ps --help ' for additional help text. For more details see ps(1). 해당 오류는 basename 을 사용하여 수행 중에 lock 파일을 생성하고 수행이 끝나면 해당 lock 파일을 삭제하여 실행파일 중복 방지를 하는 로직이였는데 문제원인은 lock 파일 이름과 실제 수행되는 실행 파일의 이름이 같아.. 2021. 1. 13.
[shellscript] 실행 옵션 - getopt shellscript로 프로그램을 만들다 보면 실행 인자 및 옵션을 필요로 하는 경우가 많이 있습니다. shellscript에서 실행 옵션을 구현을 하는 방법은 getopt 함수를 쓰면 매우 간단해집니다. 이 번 포스팅에서는 제가 자주 사용하는 간단한 실행 옵션 예제를 공유하고자 합니다. 간단한 실행 옵션 예제 이 파일은 실행 옵션 기능을 확인하기 위해 간단히 만든 스크립트입니다. 크게 사용법, 실행 옵션 설정, 실행 옵션 확인 이렇게 세 부분으로 나뉘어 있습니다. 필요한 옵션을 만들 때에는 빨간색으로 표시된 부분을 주의해서 변경해야 합니다. - 인자가 있는 실행 옵션 옵션 뒤에 ":"를 붙여줍니다. 아래 예에서는 "m" 옵션과 "u"옵션이 해당합니다. - 인자가 없는 실행 옵션 옵션만 정의합니다. 아래.. 2021. 1. 8.
[svn 오류] svn: E155009: Failed to run the WC DB work queue associated with SVN 명령을 수행하다 보면 "svn: E155009" 오류가 발생하는 경우가 있습니다. 해당 경우는 WC work queue 에 문제가 있을 경우에 발생합니다. 해당 오류가 발생했을 때는 svn cleanup 명령도 되지 않습니다. svn: E155009: Failed to run the WC DB work queue associated with '[FILEPATH]', work item 755319 (file-install [FILE_NAME] 1 0 1 1) svn: E155017: Can't install '[FILE_NAME]' from pristine store, because no checksum is recorded for this file 해결을 위해서는 아래와 같은 방법으로 간단히 해결.. 2021. 1. 5.
[ubuntu v14.04.1] MariaDB 설치 방법 mariaDB 홈페이지에 방문하면 Linux 종류와 version 에 따른 설치법이 자세하게 나옵니다.downloads.mariadb.org/mariadb/repositories/MariaDB - Setting up MariaDB Repositories - MariaDBTo generate the entries select an item from each of the boxes below. Once an item is selected in each box, your customized repository configuration will appear below. 1. Choose a Distro SLES openSUSE Arch Linux Mageia Fedora CentOS RedHat Mint Ubu.. 2020. 12. 23.
[laravel] Trying to get property of non-object 오류 "Trying to get property of non-object" 오류는 NULL 포인터 접근 시 발생합니다. 아래와 같은 코드에서 $order 는 있는데 $order->product 가 NULL 인 경우 $order->product->delivery_date 사용 시 발생할 수 있습니다. 이런 오류는 발생하면 잡기 쉽지 않죠. {{ $order->created_at }} {{ $order->updated_at }} {{ $order->shipped_at }} {{date('Y-m-d', strtotime($order->product->delivery_date))}} $order->product 가 NULL 인 경우를 대비한 코드를 아래와 같이 추가했습니다. 이런 코드는 꼼꼼히 추가해주는 습관이 나중.. 2020. 12. 17.
[swig 간단 예제] python 에서 C 라이브러리 함수 호출 SWIG 란 SWIG 는 C나 C++ 과 다른 여러가지 언어들을 간단하게 연결시켜서 사용할 수 있도록 도와주는 언어이다. 즉 C나 C++ 로 만들어진 여러가지 코드들을 Perl, Python, Tcl, Ruby, Java 등에서 사용가능하도록 만들어 준다. 우리가 자주사용하는 스크립트 언어인 Perl, Python 은 매우 강력하지만 몇가지 단점들을 가지고 있다. source 코드가 공개된다는 점과, 실행 속도가 느리다는 점이다. 즉, 속도에 매우 민감한 효율적인 코드를 작성할 필요가 있을때 문제가 될 수 있다. SWIG 를 이용하면 인터페이스 부분은 매우 빠르고 손쉽게 개발이 가능한 Perl, Python 등으로 개발을 하고 코드를 숨겨야 되거나 혹은 나은 성능을 필요로 하는 핵심 부분은 C 로 작성하.. 2020. 12. 4.