'개발이야기 > C, C++' 카테고리의 다른 글
포인터 배열 테스트 코드 (0) | 2012.08.07 |
---|---|
C코드 메모리릭 잡기 (0) | 2012.07.18 |
부모 클래스의 기본생성자가 없을때 메모리 누수 현상 (2) | 2012.06.12 |
마방진 원리 및 문제 (4) | 2012.05.19 |
Mangled Name (0) | 2012.05.13 |
'개발이야기'에 해당되는 글 26건
포인터 배열 테스트 코드 (0) | 2012.08.07 |
---|---|
C코드 메모리릭 잡기 (0) | 2012.07.18 |
부모 클래스의 기본생성자가 없을때 메모리 누수 현상 (2) | 2012.06.12 |
마방진 원리 및 문제 (4) | 2012.05.19 |
Mangled Name (0) | 2012.05.13 |
두 절대경로에서 상대경로를 구하는 JAVA 코드입니다.
/** * fromPath 절대경로에서 toPath 절대경로에 대한 상대경로를 반환 * * @param fromPath 절대경로 * @param toPath 절대경로 * @return 상대경로 */ public static String makeRelativePath(String fromPath, String toPath) { if( fromPath == null || fromPath.isEmpty() ) return null; if( toPath == null || toPath.isEmpty() ) return null; StringBuilder relativePath = null; fromPath = fromPath.replaceAll("\\\\", "/"); toPath = toPath.replaceAll("\\\\", "/"); if (fromPath.equals(toPath) == true) { } else { String[] absoluteDirectories = fromPath.split("/"); String[] relativeDirectories = toPath.split("/"); //Get the shortest of the two paths int length = absoluteDirectories.length < relativeDirectories.length ? absoluteDirectories.length : relativeDirectories.length; //Use to determine where in the loop we exited int lastCommonRoot = -1; int index; //Find common root for (index = 0; index < length; index++) { if (absoluteDirectories[index].equals(relativeDirectories[index])) { lastCommonRoot = index; } else { break; //If we didn't find a common prefix then throw } } if (lastCommonRoot != -1) { //Build up the relative path relativePath = new StringBuilder(); //Add on the .. for (index = lastCommonRoot + 1; index < absoluteDirectories.length; index++) { if (absoluteDirectories[index].length() > 0) { relativePath.append("../"); } } for (index = lastCommonRoot + 1; index < relativeDirectories.length - 1; index++) { relativePath.append(relativeDirectories[index] + "/"); } relativePath.append(relativeDirectories[relativeDirectories.length - 1]); } } return relativePath == null ? null : relativePath.toString(); }
references
Ubuntu 이클립스 실행오류 해결 (4) | 2012.09.26 |
---|---|
Ubuntu 12.04에서 java 설치 (0) | 2012.09.12 |
ptrace 설명 및 사용법 (0) | 2012.07.19 |
이클립스에서 NDK 디버깅하기 (3) | 2012.11.01 |
---|
안드로이드 ADB Shell 권한변경 (su) (0) | 2013.01.02 |
---|
Ubuntu 환경에서 이클립스를 설치하고 실행했더니 다음과 같은 오류가 발생하였습니다.
(An error has occurred. See the log file ...)
경고창에 적힌 See the log file 문구대로 로그파일을 gedit를 이용하여 읽어보았습니다.
↓
로그 내용중 빨간 밑줄을 보시면 SWT library를 찾을 수 없다라고 나옵니다. (Could not load SWT library)
또한 /home/mooyou/.swt/lib/linux/x86_64/ 폴더에서 SWT library를 찾는 것을 볼 수 있습니다.
이것 때문에 문제가 발생한 것입니다.
따라서 다음과 같이 터미널에 입력하여 SWT library 파일들을 링크시켜주면 해결됩니다.
ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/
우분투 아파치 서버로그 분석 (awstats) (0) | 2014.03.01 |
---|---|
Ubuntu 12.04에서 java 설치 (0) | 2012.09.12 |
ptrace 설명 및 사용법 (0) | 2012.07.19 |
Window7 환경에서 Visual C++ 2005 재배포 가능 패키지를 설치하려고 하였을때 다음과 같은 오류가 나타났다.
(Command line option syntax error. Type Command /? for Help.)
종래 해결 방법으로 설치 파일을 C:또는 D: 드라이브에 옮기고 나서 콘솔 창에서
"vcredist_x86.exe /t:c:temp" 와 같은 명령어를 사용하여 설치하려고 하였지만 이후에 창이 닫혀버리고
실제 설치되지 않는 문제가 발생하였다.
이곳 저곳으로 문제 해결점을 찾아보았지만, 딱히 해결 방법을 못찾아 다시 마소사이트에서 재배포 패키지를 검색해보니
Microsoft Visual C++ 2005 Service Pack 1 재배포 가능 패키지 MFC 보안 업데이트 버전이 있는것이 아닌가 !
(http://www.microsoft.com/ko-kr/download/details.aspx?id=26347)
MFC 보안 업데이트 버전으로 다운로드 받아 설치하였더니 경고창 없이 깨끗하게 설치되었고 적용도 잘 되었다 :)
MFC 버튼 마우스 커서 변경 (0) | 2012.06.21 |
---|---|
fopen_s 파일읽기와 저장 (0) | 2012.06.14 |
MFC 디렉토리 생성과 삭제 (0) | 2012.05.25 |
뮤텍스를 이용한 프로그램 중복실행 방지 (0) | 2012.05.18 |
일정 날짜 기준 로그파일 제거 (1) | 2012.05.17 |
Ubuntu 12.04 버전의 자바 설치는 구글에서 검색된 설치 방법으로는 권한? 문제로 설치가 잘 되지 않습니다.
찾아보니 다음과 같은 방법으로 해결을 할 수가 있습니다.
sudo apt-get purge openjdk*
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
참조: http://ubuntu.or.kr/viewtopic.php?f=9&t=22516
우분투 아파치 서버로그 분석 (awstats) (0) | 2014.03.01 |
---|---|
Ubuntu 이클립스 실행오류 해결 (4) | 2012.09.26 |
ptrace 설명 및 사용법 (0) | 2012.07.19 |
포인터 배열 관계에 있어서 햇갈리는 부분을 테스트 해보았다.
int* arr[3];
위와 같은 포인터 타입의 배열에서 의문을 품었다.
배열에서 새로운 객체(or 배열)의 생성이 자유로이 될까?
만약 배열이 생성가능하면 2차원 배열로써 활용가능할까?
에 해당하는 것이다.
int _tmain(int argc, _TCHAR* argv[]) { int a = 1; int b = 2; int c = 3; int* arr[3]; arr[0] = new int[3]; arr[1] = &b; arr[2] = &c; arr[0][0] = 4; arr[0][1] = 5; arr[0][2] = 6; printf("%d\n", arr[0][2]); printf("%d\n", *arr[1]); printf("%d\n", *arr[2]); return 0; }
위의 코드는 정상 수행되는 코드로 결과 출력값은 다음과 같다.
※ 출력결과
6
2
3
즉, 배열에서 새로운 객체(or 배열)의 생성이 자유로이 되며,
포인터 배열에서 새로운 배열 할당시 2차원 배열로써 활용이 가능하다.
C와 C++ 알아나가면 알아나갈수록 유연하게 잘 설계되어 있는것 같다. ^^
C언어 pthread 사용 방법 (0) | 2014.03.05 |
---|---|
C코드 메모리릭 잡기 (0) | 2012.07.18 |
부모 클래스의 기본생성자가 없을때 메모리 누수 현상 (2) | 2012.06.12 |
마방진 원리 및 문제 (4) | 2012.05.19 |
Mangled Name (0) | 2012.05.13 |
ptrace는 리눅스 기반 생성된 프로세스가 어떻게 움직이며, 어떤식으로 데이타를 읽고 쓰는지,
어떤에러를 내는지 추적을 하기위해 마련된 시스템 콜입니다.
이것은 주로 디버그를 위해 사용되며, 따라서 디버거는 일종의 ptrace명령어 묶음 유틸리티라고 보면 됩니다.
프로그래머는 디버거를 통해 ptrace를 손쉽게 사용할수 있으며,
자신이 만든 프로그램이 어떻게 수행되는지 총괄적으로 관제할수 있습니다.
다음은 ptrace 설명 및 사용법을 잘 설명해주고 있는 사이트들입니다.
ptrace 설명 (영문) | http://www.linuxmanpages.com/man2/ptrace.2.php |
ptrace 설명 (국문) | http://linux4u.kr/manpage/ptrace.2.html |
ptrace 설명 및 예제 (국문) | http://goo.gl/Gk9vs |
ptrace 메모리 덤프 (국문) | http://xpack.tistory.com/119 |
우분투 아파치 서버로그 분석 (awstats) (0) | 2014.03.01 |
---|---|
Ubuntu 이클립스 실행오류 해결 (4) | 2012.09.26 |
Ubuntu 12.04에서 java 설치 (0) | 2012.09.12 |