목록언어/C언어, C++언어 (17)
배고픈 개발자 이야기
리눅스에서 필요할 때마다 주기적으로 실행해줘야하는 프로그램이 있으며, 사용법을 정리해 놓고자 한다. 필자는 파이썬 및 shell script를 주기적으로 실행해줘야하는 필요성에 의해 글을 포스팅하려 한다. 로그인한 계정의 crontab list 출력 crontab -l crontab 수정 crontab -e crontab 전체 삭제 crontab -r ex) 18 17 * * * /home/db_update.py crontab -e를 통해 수정하게 되면 위와 같은 형태로 등록하게 되는데 linux 기본 shell에서 파일형식 검사를 통하여 알아서 실행시켜 준다. 첫번째 * 0 ~ 59 : 분 두번째 * 0 ~ 23 : 시간 세번째 * 1 ~ 31 : 일 네번째 * 1 ~ 12 : 월 다섯째 * 0 ~ 6..
C/C++로 빌드된 실행파일을 실행하다 보면 가끔 잘 돌아가던 프로그램이 위와 같은 오류를 뿜으며 실행되지 않을 때가 있다. 제목과 같이 에러가 발생하는 이유는 실행파일이 작동하면서 shared object file을 사용해야 하는데 어떤 이유로 인해 Library path에 so파일의 위치가 등록되있지 않아 에러가 발생하게 된다. so파일이 있음에도 불구하고 에러가 발생할 땐 Library path를 확인하고 다시 등록하도록 하자 Linux인 경우 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/sopath so가 존재하는 폴더까지의 경로를 등록해주면 된다.
df (command) : 디스크의 남은 용량을 확인 단위 옵션 : -k / -m / -h(보기좋게) / .(디렉토리가 포함된 파티션 용량) du (command) : 현재 디렉토리에서 서브디렉토리별 사용량 단위 옵션 : -a / -s / -h / -sh * (서브디렉토리 기준)
리눅스에서 프로그램을 실행하다 보면 서비스로 등록해서 프로세스로 띄워 편리하게 사용하고 싶을 때가 있어서 포스팅을 시작하려고 합니다. shell 프로그램을 실행할 땐 ./test.sh &를 입력하면 백그라운드로 실행됩니다. &는 background로 실행하는 명령어 입니다. 하지만 &로 실행하게 되면 shell이 종료되거나 사용자 로그아웃시 프로세스가 중단(hangup)됩니다. 이번에 JAVA spring boot로 배포된 프로그램을 백그라운드로 실행해보면서 문제점들이 있었는데요 CTRL+C : 포그라운드 작업을 정지(종료) CTRL+Z : 포그라운드 작업을 일시정지 후 백그라운드로 밀어넣기 를 실행하면 아래와 같이 정지됬다는 문구가 출력되는데 bg %JID : 백그라운드 작업을 재시작 으로 실행되지 않..
보안은 다차원적인 문제입니다. 어디에서나 보안상 위험이 발생할 수 있습니다. 사용자가 오류 처리 코드를 작성하거나 너무 많은 권한을 제공하는 경우, 서버에서 실행하고 있는 서비스가 무엇인지 잊어 버리는 경우, 모든 사용자 입력을 허용하는 경우 등이 있습니다. 그 밖에도 여러 가지 경우가 있습니다. 다음과 같은 안전한 네트워크 전략에 대한 10가지 주의 사항에 따라 시스템, 네트워크, 코드를 순조롭게 보호할 수 있습니다. 1. 사용자 입력 신뢰의 위험성 이 기사의 나머지 부분을 읽지 않더라도 한 가지 주의해야 할 사항은 "사용자 입력을 믿지 말아야 한다"는 것입니다. 데이터가 항상 올바르게 구성되고 제대로 되어 있다고 생각한다면 문제에 직면하게 됩니다. 대부분의 보안상 취약점은 서버 시스템에 잘못된 데이터..
1.스마트 포인터 Widget *getObject() => unique_ptr getObject(); 일반 포인터를 활용하여 프로그래밍을 할 경우 Exception, Return또는 끝나는 시점에 직접 메모리 해제을 해야함 하지만 스마트 포인터는 Exception, Return, 끝나는 시점 모두 메모리를 자동으로 해제함 2.무브 시맨틱 vector를 할당할 때 return by value로 Object를 복사하는 비용이 매우 많이 발생할 수 있음 모던 C++에서 무브 시맨틱을 사용하여 Object가 쓸데없이 복사되는 일을 한번에 날릴 수 있게 되었음 Object가 아무리 'move-enabled'가 아닐지라도, vector 템플릿 자체는 'move-enabled'이므로 함수로부터 Object를 위한 임..
template를 사용하여 프로그래밍 하는것을 일반화(Generic)프로그래밍이라고도 한다. template은 함수나 클래스를 만들 수 있는 틀 붕어빵틀 + 재료 = 붕어빵 template + 객체 = 함수 or 클래스 일반화(Generic) = 붕어빵틀을 만드는것과 같습니다. template을 사용하지 않고 여러 타입에 대해 동작하는 함수를 만들려면 각 타입마다 오버로딩을 해야한다는 단점이 있습니다. template은 특수화 : 특정 타입에 대해서 별빵 또는 다른 기능을 수행하도록 하는 것인데 특수화도 오버로딩과 비슷하게 이해할 수 있습니다. 특수화를 하려는 타입에 대해 template를 따로 하나 더 정의하면 오버로딩을 하지 않아도 됩니다. Template - 여러 타입을 사용하는 template 일..
C를 배우는 이유 - 컴퓨터 내부의 원리를 더 쉽게 이해할 수 있습니다. - C언어에서 파생되어 생겨난 언어를 배우는데 많은 도움이 됩니다. - 엄청나게 많은 코드들이 C언어로 작성되어 있습니다. 따라서, 어느 정도 수준 이상에 도달하게 된다면 C언어를 결코 피하실 수 없을 것입니다. \n 엔터:개행문자, \은 Escape character라고 합니다. - 기수법?? : 수를 표현하는 방법 2/10/16진수등으로 표현하는 방법 워드(Word)라고 부르는 단위가 있습니다. 컴퓨터에서 연산을 담당하는 CPU에는 레지스터(register)라는 작은 메모리 공간이 있는데, 이곳에다가 값을 불러다 놓고 연산을 수행하게 됩니다. CPU에서 연산을 수행하기 위해 잠시 써놓는 부분을 레지스터라고 합니다. 레지스터의 크..