검색결과 리스트
분류 전체보기에 해당되는 글 183건
- 2014.03.05 [STL] Vector
- 2014.03.02 다각형 나머지 한점 구하기(다각형의 넓이) 1
- 2014.02.26 사인법칙
- 2014.02.26 node.js 이클립스(eclipse) 개발환경 구축
- 2014.02.26 java-json 연동
- 2014.02.25 Node.js HTML Get/Post 링크 정리
- 2014.02.25 Android - DB 연동 기술 정리
- 2014.02.24 도전이란?
- 2014.02.24 C++ 파일 입출력
- 2014.02.24 안드로이드 NDK 등 링크 정리
글
[STL] Vector
Vector
Vector 들은 연속된 컨테이너의 한 종류입니다. 일반 배열들과 같이 vector 컨테이너들은 인접한 저장 위치에 저장되어 있습니다. 따라서 요소들을 단지 반복자(iterator)를 사용하지 않고도 특정 offset(포인터)로 접근이 가능합니다.
일반적으로 vector의 저장용량은 필요에 따라 확장되고, 용량은 자동적으로 계산됩니다.
Vector의 가장큰 장점으로는 특정 인덱스로 각각의 요소에 접근 가능 함에 있습니다. 또한 끝에서 요소를 추가하거나 제
거함에 편리합니다. 배열과 비교해서 vector는 거의 같은 기능을 제공합니다. 추가로 vector는 쉽게 크기를 바꿀수 있는
기능도 가지고 있습니다. 일반적으로 용량이 자동적으로 다루어지기 때문에 배열과 비교하면 vector는 더욱 많은 메모리
용량을 사용합니다. 그리고 list보다 일관된 iterator reference를 적게 가지고 있습니다.
내부적으로 vector는 내부에 저장된 요소들이 얼마나 있는지(개수)를 나타내는 크기를 가지고 있습니다.(size) vector의
경우에는 할당받은 용량이 모두 사용되지 않을수도 있습니다. vector의 경우 매번 할당받을 경우 부하가 걸리기 때문에
미리 할당을 해두고 용량을 사용하는게 좋습니다.
Template <class T, class Allocator = allocator<T>> class vector
위의 템플릿 파라메터들은 다음과 같은 뜻을 갖습니다.
T : 요소 타입
Allocator : 용량 할당 모델을 정의하기 위해 사용된 allocator 객체의 기본 타입, 기본적으로 타입 T를 위한 allocator클
래스 템플릿은 단순한 메모리 할당 모델을 정의하고 독립적인 값을 위해 사용됩니다.
vector 멤버함수를 위한 참조에서의 같은 이름들은 템플릿 파라메터들로 추측할수 있습니다.
Member function
Iterator
Capacity
Element Access
Modifiers
Allocator
Member types
Of template <class T, class Allocator = allocator<T>> class vector
'프로그래밍' 카테고리의 다른 글
멀티 스레드 (0) | 2014.12.13 |
---|---|
파이썬 argparse (0) | 2014.11.08 |
[STL] List (0) | 2014.03.06 |
PHP document (0) | 2014.02.23 |
APM으로 서버 구동하기(설치) - AutoSet (0) | 2014.02.23 |
설정
트랙백
댓글
글
다각형 나머지 한점 구하기(다각형의 넓이)
직교 좌표계에서 각 꼭지점의 좌표가 그 내부를 반시계방향으로 도는 순서대로 (x1, y1), (x2, y2), ..., (xn, yn)로 주어져 있는 단순한 다각형의 넓이 A는 다음과 같이 계산할수 있습니다.
이 공식은 1769년 마이스터가, 그리고 1795년 가우스가 사용하였다고 한다. 이 공식은 다각형을 삼각형들로 나누어 생각함으로써 증명할수 있습니다.
자세한것은위키피디아 다각형 : http://ko.wikipedia.org/wiki/%EB%8B%A4%EA%B0%81%ED%98%95#.EB.84.93.EC.9D.B4
참조하시면 됩니다.
그러면 이 공식을 참조해 사각형의 경우 세 개의 꼭지점을 알때 나머지 한점을 구하는 알고리즘을 계산해 봅시다.
벡터의 내적을 이용하여 좌표평면에서 사각형의 넓이 최대값을 구합니다.
☞참고
각 변의 길이가 s인 정 n각형의 넓이는
로 구할수 있습니다.
'수학' 카테고리의 다른 글
고유값, 고유벡터 (0) | 2014.10.14 |
---|---|
Newton_Raphson Method (0) | 2014.09.03 |
사인법칙 (0) | 2014.02.26 |
함수의 극값 구하기 (0) | 2014.01.29 |
가우스 정규분포 (Gaussian Normal Distribution) (0) | 2014.01.29 |
설정
트랙백
댓글
글
사인법칙
사인법칙에 대해 알아봅시다.
위키피디아를 보면 사인법칙은(law of sines)은 평면상의 일반적인 삼각형에서 성립하는 삼각형의 세 각의 사인함수와 변의 관계에 대한 법칙이라고 나와있고, 삼각형 ABC에서 각 A, B, C에 마주보는 변의 길이를 각각 a, b, c 라고 하면, 다음 식이 성립한다고 적혀 있습니다.
이 공식을 이용하면 두 각의 크기와 한변의 길이를 알고 있을때 다른 두 변의 길이를 구할 수 있습니다.
식을 다르게 표현하면
▶삼각형의 변의 길이는 대각선의 sin값에 비례 한다는 뜻입니다.
1) 그림에서 ∠A = ∠A'
2) 직각삼각형 A'BC에서 sinA' = a/A'B
3) A'B = 2R이므로 sinA' = a/2R
∴ sinA = a/2R
'수학' 카테고리의 다른 글
Newton_Raphson Method (0) | 2014.09.03 |
---|---|
다각형 나머지 한점 구하기(다각형의 넓이) (1) | 2014.03.02 |
함수의 극값 구하기 (0) | 2014.01.29 |
가우스 정규분포 (Gaussian Normal Distribution) (0) | 2014.01.29 |
1차 미분 2차 미분 차이 (0) | 2014.01.29 |
설정
트랙백
댓글
글
node.js 이클립스(eclipse) 개발환경 구축
1. node.js설치
- node.js는 아래의 URL에서 받으세요.
http://www.nodejs.org/download/
위의 페이지에서 자기 환경에 맞는 것을 다운로드 합니다.
저는 Windows Installer(.msi) 32bit를 다운로드해 설치 했습니다.
2. 이클립스 설치
- 이클립스 다운로드 URL은 아래와 같습니다.
http://www.eclipse.org/downloads/
다운로드는 Eclipse Standard을 받겠습니다.
다운로드 받은후 압축을 해제 합니다.
압축을 해제한 후 적당한곳에 옮겨 놓습니다.
실행이 완료 되면 Welcome화면이 보이는 상태가 됩니다.
3. nodeclipse설치
- 이클립스 기동후 메뉴>Help>Eclipse Marketplace을 선택 합니다.
Eclipse Marketplace의 Search에서 find입력란에 nodeclipse을 입력후 검색을 합니다.
검색 결과 에서 Nodeclipse 0.10.0의 Install버튼을 클릭합니다.
ok~ 다시 설치를 하고 설치가 끝나면 아래와 같은 메세지가 뜹니다.
4. 프로젝트 실행
메뉴에서 File > New > Project선택 하면 아래와 같이 창이 뜹니다.
프로젝트는 Node에서 Nede.js Express Project을 선택 합니다.
프로젝트명을 node_test로 했습니다. 프로젝트 명을 입력후 Finish버튼 클릭.
그러면 아래와 같이 프로젝트가 생깁니다.
app.js에서 오른쪽 마우스 버튼을 클릭합니다.
그다음, Run As > Node Application을 선택하면 node.js가 실행 됩니다.
실행이 되면 Console창에 아래와같이 메세지가 뜹니다.
위 메세지가 뜨면 웹서버가 실행 되었다는 뜻입니다.
그러면, 브라우저를 실행 시키고....
http://127.0.0.1:3000 을 주소창에 넣고 실행 시키면 아래와 같은 메세지가 뜹니다.
그냥 샘플 프로젝트를 만들면 그에 따른 샘플 코드가 생성돼 바로 실행만 시키면 웹서버가 실행 됩니다.
Express에 대한 내용은 아래의 주소를 참조 하세요.
http://expressjs.com/guide.html
설정
트랙백
댓글
글
java-json 연동
1. Java - JSON 연동
- JSON 공식 홈페이지 : http://www.json.org
- JSON 개요 : http://www.json.org/json-ko.html
JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석
하고 생성함에도 용이하다. JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999의 일부
에 토대를 두고 있다. JSON은 완벽하게 언어로 부터 독립적이지만 C-family 언어 - C, C++, C#, Java, JavaScript, Perl,
Python 그외 다수 - 의 프로그래머들에게 친숙한 관습을 사용하는 텍스트 형식이다. 이러한 속성들이 JSON을 이상적인
DATA-교환 언어로 만들고 있다.
... 라고 써 있습니다. 약간 어려운 듯 하지만, 실제 사용해보면 쉽고 간단합니다.
간추려서 말하면, JSON을 지원하는 여러 다양한 언어(C, C++, C#, Java, PHP, Javascript 등...)에서 자료를 쉽게 주고
받을 수 있다고 볼 수 있습니다.
JSON 은 바로 사용하지 못하고 언어에 맞게 별도의 컴파일 과정을 거친 후, 사용할 수 있습니다.
C 의 경우 컴파일 후에 필요한 파일들 복사하고 헤더 파일을 등록 후에 사용하는 것 처럼,
Java 에서도 제공된 라이브러리를 통해서 간단하게 사용할 수 있습니다.
여러 라이브러리 중에서 사용하기 간단한 것은 json-simple 라이브러리 인거 같았습니다.
json-simple 다운로드 : http://code.google.com/p/json-simple/
파일을 다운로드 받은 후,
Java에서 Project 생성 후, 아래와 같이 라이브러리를 등록해주면 됩니다.
2. JSON-simple로 json사용
사전에 TCP, UDP 통신등으로 데이터를 주고 받을 수 있도록 구현이 된 상태에서 진행하도록 합니다.
먼저 데이터를 넣는 방법입니다.
아래와 같이 JSONObject를 선언한 다음에 put을 통해서 데이터를 집어 넣어 줍니다.
JSONObject obj; |
위와 같이 만들어진 obj를 통신을 사용해서 보내고자 하는 곳으로 넘겨주면 됩니다.
받게 되는 곳에서는 위의 obj를 받게 됩니다.
이 때, 받은 자료를 value 라는 String 에 저장을 했습니다.
받은 데이터를 JSON 문법으로 해석합니다.
그 다음 get을 통해서 키를 입력하면 값을 받을 수 있습니다.
JSONObject obj; |
위와 같이 했을 때, tmp 는 value2 라는 값을 가지게 됩니다.
통신 프로그램을 만들게 될 때, 같은 언어가 아닌 다른 언어로 데이터를 보내야할 때가 있습니다.
C 에서 Java 로 데이터를 보내거나 Java에서 C++ 로 보낼 때 처럼요.
서로 데이터를 주고 받기 위해서는 데이터 구조를 맞춰야 하는데, 종종 힘든 경우가 생깁니다.
이런 경우 JSON을 통한다면, 데이터를 빠르고 쉽게 주고 받을 수 있기 때문에 자주 사용하고 있습니다. ^^
설정
트랙백
댓글
글
Node.js HTML Get/Post 링크 정리
Node.js를 활용하여 웹페이지 긁어오기(유투브 동영상)
http://nodejs-kr.org/insidejs/archives/670
GET or POST variables in node.js server
http://www.colome.org/node-js/44-get-or-post-variables-in-node-js-server.html
How to do a simple read POST data in Node JS?
http://stackoverflow.com/questions/5528081/how-to-do-a-simple-read-post-data-in-node-js
GET / POST Parameter In Node.js
http://www.dzone.com/snippets/get-post-parameter-nodejs
설정
트랙백
댓글
글
Android - DB 연동 기술 정리
: Google에서 막아놨다.
2. Android - JSP or PHP (XML or JSON) - DB
클라이언트에서 쿼리를 담고 있는 JSP, PHP 파일에 인자를 주고 실행시켜 버림.
리턴값을 JSON, XML 타입으로 받는다.
<JSP, XML 샘플>
http://blog.naver.com/PostView.nhn?blogId=itseeker&logNo=140128901209&categoryNo=7&viewDate=¤tPage=1&listtype=0
<PHP, XML 샘플>
http://gongmille.tistory.com/5
3. Jquery
제이 쿼리는 Javascript를 사용하기 편하게 만든 라이브러리로 Client side script.
따라서 제이쿼리만으로는 안드로이드와 통신 불가
<Jquery vs Javscript>
http://blog.daum.net/a-bear16/29
<Jquery 시작하기>
What is the difference between JQuery and Node.js
4. Node.js
Node.js 는 Server side script
Node.js에서 안드로이드와 통신하려면, Socket.io 사용
<Node.js 따라배우기>
<Node.js 란?>
http://codejob.co.kr/code/view/22/
<Node.js 시작하기>
http://godffs.tistory.com/entry/02Nodejs-입력-화면-만들기
<Node.js 에서 Jquery 사용>
http://spectrum.egloos.com/5501860
<Node.js IDE cloud 9>
http://sajagogumi.tistory.com/104
<Node.js 에 대한 비판>
http://himskim.egloos.com/3810574
<Express, MongoDB로 빠르게 블로그 만들기>
<Node.js 로 웹개발 하기 위한 기술 세트>
http://mobicon.tistory.com/208
5. HTML5의 Web Socket
<Github Websocket - Android Sample>
https://github.com/koush/android-websockets
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 NDK 등 링크 정리 (0) | 2014.02.24 |
---|---|
안드로이드 NDK 로그 출력하기 (0) | 2014.02.01 |
설정
트랙백
댓글
글
도전이란?
모든 준비가 완벽하게 갖추어진 다음에 시작할 수 있는 일은 세상에 아무것도 없다.
그렇다면 좋은 기회조차 오지 않는다.
준비가 되어 있지 않다면 노력을 해서 되어 있도록 만들겠다는 배짱이다.
인생에 있어서 도전이란 결코 입맛에 딱 맞는 방식으로 찾아오지 않는다.
그것은 언제나 두 발을 전부 땅에서 떼서 허공에 몸을 완전히 맡겨야 하는
따라서 상당한 불편함과 두려움을 수반하는 방식으로 찾아온다.
어렵지만 마음에 쏙 드는 일자리를 만났을 때,
어렵지만 풀어 보고 싶은 문제를 만났을 때,
어렵지만 한 번 걸어보고 싶은 길을 만났을 때,
어렵지만 한 번쯤 말을 꼭 걸어 보고 싶은 이성을 만났을때,
필요한 것은 앞뒤를 재고 따지는 '계산'이 아니라
최선을 다해서 허공에 몸을 맡기는 '용기'다
때로는 그것을 보고 사람들이
'무모하다', '미련하다', '철이 없다' 라고 말하기도 할 것이다.
하지만 멋진 도전은 어느 정도의 무모함을 동반하기 마련이다.
그리고 그 까짓 거 해버릴 수 있다는 '무모한 용기' 가 필요한 것이다.
그 용기를 가슴에 안고 허공에 몸을 던지는 사람은
그렇지 않은 사람보다 풍요로운 삶을 살수 있기 때문에 행복하다.
그리고 한번 시작한 일은 혼신의 힘을 다해서 최선을 다하라는 것이다.
용기를 내서 몸을 허공에 던졌는데 그 다음 일을 수습할 수 없다면
돌아오는 것은 '망신'과 '자신감의 상실'뿐이다.
중요한 것은 결과가 아니라 수습의 과정에서 최선을 다했는가 여부다.
최선을 다하지 못하고 나태해지거나 방심하여 실패를 한 사람은
스스로를 믿을 수 없게 되기 때문에
다시는 허공에 몸을 던지는 용기를 내지 못하게 된다.
[임백준 - 나는 프로그래머다 中]
어떤 일이든 일단 시작해 보자!
설정
트랙백
댓글
글
C++ 파일 입출력
파일 클래스는 ifstream, ofstream, fstream으로 지정할수 있고, 개방 모드로는 입출력 동작 모드를
지정하는 ios::in, ios::out등을 사용한다.
값 | 의 미 |
in |
파일 입력(파일 읽기) |
out |
파일 출력(파일 쓰기) |
ate |
파일 개방 후, 파일 끝으로 이동 |
app |
파일 추가(append) |
trunc |
존재하는 파일 제거(truncate)하고 새로운 파일로 연다 |
binary |
텍스트(text)가 아닌 바이너리(binary)로 출력 |
☞ 파일 입출력 간단히 소개
//"data.in" 파일을 입력 파일로 개방
ifstream infile("data.in", ios::in);
//"data.out" 파일을 출력 파일로 개방
ofstream outfile("data.out", ios::out);
//"myfile.dat" 파일을 입출력 상태로 개방
fstream myfile("myfile.dat", ios::in | ios::out);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ofstream fo("test.dat"); if(!fo) { cout << "파일 열기 실패!\n" exit(1); } fo << "Hello!\n"; fo << 123 << " " << hex << 123 << endl; fo.close(); ifstream fi("test.dat"); if(!fi) { cout << "파일 열기 실패!\n"; exit(1); } char s[81]; int n; fi >> s >> n; cout << s << " : " << n << endl; fi.close(); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <iostream> #include <fstream> #include <string> using namespace std; int main() { char ch; ifstream fin; fin.open("test.dat"); if(!fin) { cout << "파일 열기 실패\n"; exit(1); } fin.unsetf(ios::skipws); // skipws 형식 플래그 클리어, 공백 문자도 입력 while(!fin.eof()) { // 파일 끝이 아니면 fin >> ch; if(ch == ' ') ch = '%'; cout << ch; } return 0; } |
※결과
파일에 test.dat에 다음과 같은 내용이 저장되었을때
Hello, everybody !
This is a test file test.dat
공백마다 %가 출력됨
Hello%everybody%% !
This%is%a%test%file%test.dat
'프로그래밍 > C/C++' 카테고리의 다른 글
스마트 포인터 (0) | 2014.11.28 |
---|---|
메모리 관리 함수(memset, memcpy, memmove) (0) | 2014.10.24 |
함수 주요 형태(_stdcall, _cdecl, _fastcall) (0) | 2014.02.24 |
비트 연산자 (0) | 2014.02.12 |
함수 포인터 (0) | 2014.02.12 |
설정
트랙백
댓글
글
안드로이드 NDK 등 링크 정리
링크
경로 추출을 위한 vomoi 세션화 알고리즘
http://blog.daum.net/pg365/108
[안드로이드]OpenCV 사용
http://blog.naver.com/budlbaram/50096839292
[안드로이드]NDK설정1
http://blog.naver.com/budlbaram/50096839292
[안드로이드]NDK설정2
http://blog.daum.net/haha25/5388307
[안드로이드] Mixed Processing에러(cannot run program "\ndk-build.cmd" : Launching failed)
http://blog.naver.com/budlbaram/50096839292
[STL-vector] 빠른 메모리 해제?
http://blog.naver.com/agbird?Redirect=Log&logNo=120013985975
[안드로이드] TabView 위젯
http://androidhuman.tistory.com/151
[안드로이드] Do-It! 안드로이드 앱 프로그래밍 소스
http://147.46.109.56:9090/town/projects.jsp?sort=1&dir=
[안드로이드] How to do real time image processing in Android using OpenCV?
http://147.46.109.56:9090/town/projects.jsp?sort=1&dir=
[안드로이드] ndk-build 시 Applicattion.mk / Android.mk 설명
[안드로이드] NDK, cygwin, JNI
[안드로이드]Android Native Camera With OpenCV and OpenGLES Android Native Camera With OpenCV and OpenGLES
http://mesai0.blogspot.kr/2013/01/android-native-camera-with-opencv-and.html
[안드로이드] 이클립스에서 cygwin 빌드하기
[안드로이드] JAVACV 포팅
http://aiesko.blog.me/20167784214
[안드로이드] android 안드로이드 이클립스 CDT 에서 NDK와 jni 연동 구현
[안드로이드] Eclipse에서 add native support를 통한 Android NDK 빌드 환경 구축
[안드로이드] Eclipse 에서 NDK build 연동하기
[안드로이드] Eclipse에서 NDK 빌드하기
'프로그래밍 > 안드로이드' 카테고리의 다른 글
Android - DB 연동 기술 정리 (0) | 2014.02.25 |
---|---|
안드로이드 NDK 로그 출력하기 (0) | 2014.02.01 |