검색결과 리스트
Programming에 해당되는 글 19건
- 2010.11.28 CGAL : Computational Geometry Librry
- 2010.08.30 오늘의 삽질 : Android 4
- 2010.06.18 Iterators
글
http://www.cgal.org/
C++ 기반의 계산기하 라이브러리. 전에 컴과 졸업논문 쓰면서 했던게 이쪽 관련된거라 그때 한번 찾아보고 잊고 있었다. 전반적으로는 C++로 아주 잘 짜여진 수학 라이브러리이다. 소스도 공개되어 있으니 한번 분석해 보면 큰 도움이 될듯.
설정
트랙백
댓글
글
안드로이드로 주소록을 받아오는 것을 해 보고 있다. 기본적으로 이름과 전화번호를 받아 오는것을 만들고 있다. 생각으로는 단체문자하는 어플을 만들고 싶어서 모바일로 등록되어 있는 것만을 가져오고 싶다. 책에서는 People클래스를 이용하는데 deprecated되었다네. 그래서 다른 방법을 찾아보다가 발견한 페이지. http://androiddevblog.blogspot.com/2010/02/query-contacts-data.html 그래서 따라서 해 보았다.
잘 된다... 결과도 똑같아... 난 결국 뭘한거지.. ㅠㅠ 알아서 조인해 주는듯 하다.
Cursor contacts = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, "HAS_PHONE_NUMBER=1", null, null); MatrixCursor cursor = new MatrixCursor(new String[] {"_id", "name", "phone_number"}); startManagingCursor(cursor); if (contacts.moveToFirst()) { String name; String contactId; int nameColumn = contacts.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); int idColumn = contacts.getColumnIndex(ContactsContract.Contacts._ID); do { name = contacts.getString(nameColumn); contactId = contacts.getString(idColumn); Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId + " AND " + ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE , null, null); if (phones.moveToNext()) { String phoneNumber = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); cursor.addRow(new String[] {contactId, name, phoneNumber}); } phones.close(); } while (contacts.moveToNext()); } contacts.close();쿼리도 두 번 뿐이고 잘 된다. 왠지 조인으로 한번에 하면 될 쿼리를 나눠서 하느나 좀 신경쓰이긴 하지만. 근데 작업 도중 Contacts 를 통해 접근해야만 하는 줄 알았던 DISPLAY_NAME이 ContactsContract.CommonDataKinds.Phone.에도 있는것을 알았다. 음? 설마 하는 마음에 다음과 같이 해 보았다.
Cursor cursor = managedQuery(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.CONTACT_ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}, ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, null, null); startManagingCursor(cursor);
잘 된다... 결과도 똑같아... 난 결국 뭘한거지.. ㅠㅠ 알아서 조인해 주는듯 하다.
업뎃했으면서 변경된 사항도 예제랑 곁들여서 친절히 설명해주면 좋을것을...
설정
트랙백
댓글
글
Boost Graph 라이브러리(BGL)와 STL을 사용하면서 느끼는건데...
정말 참 좋긴 한데..
정말 좋은데 ㅋㅋ
근데 사용하기가 쉽지많은 않다.
STL은 제공하는것만 사용하려면 쉬운데(typedef만 좀 해 주면)
내가 만든 클래스도 iterator를 직접 제공하려고 하는데 이게 STL의 iterator랑 호환되게 하려면
typedef도 좀 해 줘야 하고 operator 오버로딩도 좀 해 줘야 하고
특히 copy같은 algorithm 헤더에 있는 녀석들이 사용하게 하려면
뭔가 추가할게 많다 ㅠㅠ
BGL은 사용하기는 좋은데 descriptor랑 iterator가 막 섞여서 다 까먹고 다시 보려니
애먹고 있다. 근데 descriptor라는 발상은 좋은데 뭔가 직관적이지는 않다.
그래서 프로그램 짜다 보면 사용자층은 좀더 직관적으로 사용 할 수 있고 추상적인건 숨기게 하려니
코딩량이 좀 많아지는듯.
RECENT COMMENT