목록언어 (29)
배고픈 개발자 이야기
파이썬으로 코딩할때는 "안녕 철인"+str(28)+"호야"와 같이 간단히 문자열과 숫자 또는 변수를 합칠 수 있는 편리함에 익숙해져 C언어로 위와 같은 기능이 필요할 때 어떻게 해야할지 몰라 발만 동동 구르다가 찾은 방법이 있다. #include int main() { for (int i = 0; i < 1000; ++i) { char str[100]; sprintf(str, "file_%d.csv", i); FILE *fp = fopen(str, "w"); fwrite(buff, sizeof(buff), 1, fp); // 내용쓰기 fclose(fp); } return 0; } 합치는 방식에는 여러가지 있지만 최종적으로 찾은 편리한 함수는 sprintf이다. 위와 같이 반복적으로 파일생성을 할 때 사용..
리눅스에서 필요할 때마다 주기적으로 실행해줘야하는 프로그램이 있으며, 사용법을 정리해 놓고자 한다. 필자는 파이썬 및 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가 존재하는 폴더까지의 경로를 등록해주면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FXpux/btqCrPvLHs9/pikmVyf8DhMNa26U3WhtpK/img.png)
df (command) : 디스크의 남은 용량을 확인 단위 옵션 : -k / -m / -h(보기좋게) / .(디렉토리가 포함된 파티션 용량) du (command) : 현재 디렉토리에서 서브디렉토리별 사용량 단위 옵션 : -a / -s / -h / -sh * (서브디렉토리 기준)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJhAKB/btqCqN5I5Kt/0bqBC5ufqWsyuqDdCKUCqK/img.png)
리눅스에서 프로그램을 실행하다 보면 서비스로 등록해서 프로세스로 띄워 편리하게 사용하고 싶을 때가 있어서 포스팅을 시작하려고 합니다. shell 프로그램을 실행할 땐 ./test.sh &를 입력하면 백그라운드로 실행됩니다. &는 background로 실행하는 명령어 입니다. 하지만 &로 실행하게 되면 shell이 종료되거나 사용자 로그아웃시 프로세스가 중단(hangup)됩니다. 이번에 JAVA spring boot로 배포된 프로그램을 백그라운드로 실행해보면서 문제점들이 있었는데요 CTRL+C : 포그라운드 작업을 정지(종료) CTRL+Z : 포그라운드 작업을 일시정지 후 백그라운드로 밀어넣기 를 실행하면 아래와 같이 정지됬다는 문구가 출력되는데 bg %JID : 백그라운드 작업을 재시작 으로 실행되지 않..
안드로이드 스튜디오에서 개발한 프로젝트를 배포하려면 모든 파일을 다 내보내 전달할 수 있지만 필수로 필요한 파일들만 효율적으로 버전 관리를 하기 위해 필요한 파일들만 최소화해 줄 필요성이 있습니다. 배포를 하기 위해 필수적으로 프로젝트에 필요한 파일로만 구성하여 테스트 해보았습니다. 기존 프로젝트 모든파일 필수 구성 파일 위처럼 변경하여 배포용으로 최소화 할 수 있습니다. 프로젝트 구성에 따라 sdk / ndk 버전 표시가 필요할 수도 있고, 모듈에서 사용하는 라이브러리가 없거나 프로가드를 적용하지 않은 프로젝트라면 /libs 폴더나 proguard-rules/pro 파일도 지울 수 있습니다. 또한 저는 jni 개발환경을 최소화 하였기 때문에 .cxx폴더도 추가로 지웠으며 다른 파일이 추가로 있다면 지우..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c6heo4/btqAauAKelY/i1kh8aHHyzUMUwxwttYWhK/img.png)
android 용 백그라운드로 돌아가는 응용 프로그램을 빌드 및 설치하였습니다. 일반적인 안드로이드 앱 디버그 모드로 프로젝트에 breakpoint를 걸었을 때 백그라운드 서비스는 멈추지 않기 때문에 디버거가 연결되도록(intent 날릴 때) 코드에서 선언적으로 대기하는 방법을 사용해 보겠습니다. 그렇게 하려면 다음 step을 따라야 합니다. 1. 서비스 내 method 시작부분에 다음과 같이 코드를 추가합니다. /* (non-Javadoc) * @see android.app.Service#onCreate() */ @Override public void onCreate() { super.onCreate(); //whatever else you have to to here... android.os.Debu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3Tesy/btqz6XBfAzm/xBEYPfk7Kg3JyC3UO0uF80/img.png)
서론 : 기존에 eclipse project로 구성된 프로젝트를 Android Studio로 가져와 사용할 일이 생겼으므로 제목과 같이 환경설정을 시작하게 되었습니다. 다음 공식 문서를 참고하여 가져오도록 합니다 안드로이드 스튜디오로 이전 - https://developer.android.com/studio/intro/migrate#migrating_from_eclipse 본문 : 1. import project 위와 같이 Android Studio를 시작하는 화면에서 import project를 선택해 기존 프로젝트 위치를 잡아 Android project로 생성합니다. jni를 네이티브 라이브러리로 가져와 Gradle에 CMake 또는 NDK-build를 사용하기 위해 다음 지침을 따릅니다. - ht..