반응형

전체 글 226

More C++ Idioms

Idioms이란 구글의 정의에 따르자면 영어에서 둘 이상의 단어들이 연결되어 그 단어들이 가지는 본뜻 이외의 특별한 의미를 나타내는 관용어 혹은 숙어라는데 찾아보니 프로그래밍에서는 공통적으로 흔히 발생하는 문제 해결 코드라고도 쓰이는 듯 하다. 근데 개인적으로 보기에는 프로그래밍에서의 뜻은 일종의 언어에 기반한 팁 혹은 패턴으로 볼 수 있는거 같다. 물론 해당 패턴이나 팁들은 특정 상황에 대한 해결법을 제공해 준다고 보면 될 듯 하다. 여기서는 More C++ Idioms를 소개할까 한다. 관련 주소는 아래와 같다. More C++ Idioms 위키에 한창 정리되고 있는 것으로, 물론 내가 해당 이디엄을 습득해서 쓰면 좋겠지만 그 보다 더 좋은 것은 다양한 C++ 테크닉을 이해할 수 있다는 점과 유명 라..

C++ 프로그래밍 2017.02.19

안드로이드 프로그래밍 정복

윈도우즈 API 정복으로 유명한 김상형씨가 저술한 안드로이드용 개발서이다. 이 책을 읽은 이유는 폰개발 방법이 궁금한 것 이상으로 김상형씨가 저술한 책이기 때문이었다. 왜 저자를 이야기하는가 하면 윈도우즈 API 정복을 읽었을 때 이 분의 예제가 너무도 인상깊었기 때문이다. 이 분이 저술한 윈도우즈 API 정복이나 이 책이나 군더더기 없는 예제는 여전히 일품이다. Java는 10년 전에 공부한 것이라 기억이 가물가물하지만 모바일 프로그래밍 공부하는 셈치고 한 번 흩어보았다. 전반적으로 잘짜여진 예제로 인하여 빠르고 쉽게 안드로이드 개발을 공부하기에 좋은 책인 듯 보인다. 남에게 추천해주고 싶은 책이지만 Java를 모른다면 언어를 먼저 공부하고 공부해야하는 책일 듯 보인다. 좀 더 빠르고 쉽게 보려면 디자..

PC 앞으로 5년간의 모습에 대한 단상

뉴아이패드를 산 후로는 PC는 게임이나 개발 혹은 ActiveX를 이용할 때 외에는 거의 키지 않는 기기였다. 아이패드를 경험한 후 PC는 너무 느린 기기였다. 빨라졌다는 윈도우7의 부팅도 느리게 느꼈졌고 모든 것이 너무도 무겁게 느껴졌다. 보안문제로 윈도우 업데이트를 하는데 윈도우7 서비스팩1이 깔리지 않는 문제가 발생하였는데 해결할 방법이 없었다. 결국 윈도우7을 다시 깔기로 하였다. 윈도우를 다시 깔때 PC를 업그레이드하기로 하였다. PC를 업그레이드 할 때 현 PC의 문제를 유심히 관찰한 결과 아래와 같은 문제를 발견할 수 있었다. 윈도우7의 체험지수에서 7400 rpm SATA2 500G 시게이트 HDD만이 체험지수 5.9를 받아 전체적인 성능에서 낮게 나온다. 아이패드와 PC의 연동관련 itu..

기타 2012.10.03

탑밴드2 16강 예선전

어제는 우연히 탑밴드2를 보았다. 여러 언더밴드들의 실제 모습을 볼 수 있어 좋았지만 한편으로는 웃겼고 한편으로는 슬펐다. 개인적으로 음악을 많이 안다고 말하거나 혹은 락은 이런거야 라고 들먹거릴 정도의 사람하고는 거리가 멀다. 하지만 적어도 60, 70년대 한국 락부터 찾아들었을 정도로 (그래봤자 신중현이나 사랑과 평화, 한대수, 산울림 뭐 이정도 수준이지만, 그래두 신중현과 엽전들의 음악이 싸이키델릭 했다는건 안다.) 약간은 매니아적인 측면도 있는 사람이다. 솔직히 TOP밴드1에서 신해철이 번아웃하우스에게 하는거 보고 굉장히 실망했었다. 대학가요제 나올때 부터 온갖 멋이란 멋은 다 보이고 자기 하고 싶은 음악이란 음악은 다했던 사람이 애들에게 잘난체 하며 카라의 음악같은 쇼음악 시키고 말안듣는다고 화..

기타 2012.07.02

LG 옵티머스 LTE 배터리 최적화 (안드로이드 폰 배터리 최적화)

프롤로그 옵티머스 LTE를 샀을때 배터리 소모되는 것에 솔직히 놀랐다. 약간 과장해서 표현한다면 인터넷 조그만 하면 그후로 대기모드로 만들어도 8시간 버티기 힘든 것이 너무 선명하게 체감되었다. 배터리 30% 남기고 잠을자고 오전에 일어났을 때 배터리가 없어 꺼진 것을 보고 놀랐다. 내가 12시간을 잤다고 가정했을 때, 배터리 30%로 12시간 대기모드를 못 버틴다는 것은 잠자는 동안의 주요 전화를 놓쳐 결국은 전화로서의 가치는 잃어버린다는 의미로 다가왔다. 물론 이 경험은 내가 깔아놓은 어플과 여러가지 셋팅과 연관이 있을테니 옵티머스 LTE의 심각한 문제라고 단정할 수는 없다. 또한 1번의 경험을 일반화 시킬 수도 없다. 마지막으로 다른 LTE폰들도 이 문제에 자유롭지 못한 것으로 알고 있다. 흔히들 ..

기타 2012.06.24

LEX 관련 인터넷 문서 소개

근래에 컴파일러를 공부하고 있는 관계로 LEX에 관련된 좋은 자료들을 소개하려고 한다.물론 멘붕을 막기 위하여 당연히 컴파일러 수업을 들은 후거나 관련 책자를 본 뒤에 살펴보기 바랍니다. Flex and Bison HowtoLex와 Yacc 사용에 대한 Tutorial 정도로 볼 수 있는데, 간단한 예제도 괜찮지만 번역이 워낙 훌륭해서 추천하고 싶은 글이다. Man page - FLEXFlex의 사용법에 대한 한글 매뉴얼로 번역은 번역기를 돌린 거 같은 수준이지만 걍 번역 무시하고 예제 보면서 내용 이해하면 Flex에 대한 상세 사용법을 쉽게 익힐 수 있다. Lexical Analysis With FlexFlex에 대한 정식 영문 매뉴얼로 Reference Book으로 사용하면 된다.

알고리즘 2012.06.17

LG 옵티머스 LTE 아이스크림 샌드위치 업데이트

역시 LG, 일본이나 미국의 같은 수준의 회사에서는 보기 힘든 명장면을 연출해주었다. 홈화면이 죽으면 안드로이드에서 할 수 있는 일이란 별로없다. 글구 내 안드로이드 폰에 깔려 있는 어플들은 거의다 순위권 안에 드는 어플들이었다. 아니 이런 기본적인 충돌 테스트도 안하고 OS를 업데이트 한단 말인가? 문제가생길것 같으면 해당 어플삭제 전에는 OS업데이트 불가하다는 메세지를 주어야 하지 않는가? 예전부터 LG 엔진니어들은 개발이나 테스트의 기본도 모르는 그냥 수능성적 좋은 친구들이라는 생각이 강했는데 다시 한번 그 이미지를 각인시켜 주는 계기가 되었다. SW 개발 일을 10년 이상 하다보니 나도 잘하는 건 아니지만, 저렇게 최악 상황까지 만드는 어플을 내놓을 수 있는 개발자들을 보면, 기본도 엔지니어 마인..

기타 2012.06.16

Programming Challenges 알고리즘 트레이닝 북

ACM 문제를 다루고 있는 유명한 책입니다. 원래는 한국정보올림피아드 혹은 국제정보올림피아드 대회를 준비하는 분들이나 공부하실 책이었습니다. 이런 것이 구글이 뜸과 동시에 구글 면접 문제가 뜨면서 동시에 유명해지기 시작했습니다. 비슷한 시기에 비슷한 유형의 4문제짜리 넥슨의 테스트 문제도 같이 유명해졌습니다. 이 책은 심화학습용 문제지이지 초보들이 무턱대고 풀 수 있는 문제지가 아니라는 것을 알아야 합니다. 우선 자료구조와 알고리즘 기본 정도는 알고 있어야 합니다. 자료구조 학습에 관하여... 이 책에 들어가기 전에 자료구조를 탄탄히 해두는 것이 중요합니다. 자료구조는 많이 알면 알수록 프로그래밍에 도움이 많이되는 관계로 어떤 책을 사던지 끝까지 정독하는 것이 중요합니다. 저는 대학교 교재가 원서였던 관..

알고리즘 2010.05.09

Array의 O(1)의 검색시간의 이점을 가지면서 Linked List의 유연성을 가질 수는 없는가?

1. 두 자료구조체의 비교 -------------------------------------------------- Array Array의 장점은 우선 O(1)의 검색시간을 갖아 자료구조 중에 가장 빠릅니다. 대신 단점으로 크기가 고정되어 적은 크기를 잡을 경우 새롭게 메모리를 할당하고 기존 메모리의 내용을 새로운 메모리로 복사한 후 기존 메모리를 지워야 하는 문제가 발생합니다. c의 realloc 함수는 아마 이런 식으로 구현되어 있을 것입니다. 반대로 크기를 크게 잡을 경우 사용하지 않는 메모리 부분에 대한 낭비가 발생합니다. 다음 단점으로 Array의 중간에 데이터를 삽입할 경우 삽입데이터 뒤의 내용들을 모두 뒤로 복사해야 하는 문 제가 발생합니다. 메모리 복사 시간을 소모하게 됩니다. Linke..

알고리즘 2010.04.08

네트워크 흐름 문제 (Network Flow Problem)

네트워크 흐름 문제(Network Flow Problem)은 일종의 그래프를 응용한 문제입니다. Programming Challenge를 풀다가 이해가 가지 않아 찾아 보았습니다. Programming Challenge 번역판의 설명은 원서가 이상한 건지 번역이 이상한건지 읽어도 읽어도 뜻을 이해할 수 없었습니다. 혹(?) Programming Challenge 번역판의 설명만으로 모든게 다 이해되는 분...? 공감? 네트워크 흐름 문제에서 가장 중요한 것은 가중치 그래프에서 간선(Edge)의 값의 의미를 이해하는 것입니다. 일반적인 가중치 그래프 문제에서 간선(Edge)은 해당 간선을 이동하기 위한 소요 비용으로 간선의 가중치 전체를 사용합니다. 하지만 네트워크 흐름 문제에서 가중치는 허용 가능한 크기..

알고리즘 2010.04.07

ATL/OLE DB관련 라이브러리 ver 1.02

The Dynamic Database Class Based on ATL/OLE DB 현재 참조하고 있는 코드프로젝트 글입니다. OLEDB 관련된 ATL클래스를 사용하기 쉽게 만들어 놓았습니다. 물론 MFC에서 바로 사용할 수 있겠죠. 물론 라이브러리 사용하려면 기초적인 ATL과 OLEDB구조는 알고 있어야 합니다. 사실 OLEDB는 ATL형식으로 되어 있어 복잡하다고 느껴지는게 사실입니다. 그러나 막상 이해하고 나면 또 별것도 없는게 OLEDB가 아닌가 합니다. 2002년 글로서 아직까지도 지존 중에 한개인걸로 보아 검증받은 코드라는 생각이 듭니다. ODBC와 ADO보다 강력한 DB라이브러리를 원하시면 볼만 합니다. 이 코드는 동적인 관계로 ATL마법사로 만드는 정적인 클래스 기반의 DB처리보다 속도는 ..

[MPP] Visual Studion 2010 Parallel Patterns Library (PPL) 예제

Four Ways to Use the Concurrency Runtime in Your C++ Projects 2009년 10월의 msdn매거진에 나온 병렬 런타임을 사용하는 예제입니다. User Interface의 반응성을 높이기 위하여 배경쓰레드를 사용하는 전통적인 방법을 PPL의 agent를 활용하였을 떄 얼마나 코딩이 더 쉬워지고, 더 굳건해지는 지를 보여주고 있습니다. 참고로 Agent는 병렬처리 엔진에 의한 별도의 쓰레드에서 작동하며 메시지로 데이터를 주고 받습니다. 병렬처리용인 관계로 CPU 개수나 코어 개수에 따라 물리적으로는 별도의 CPU에서 작동할 것입니다. 다른 말로 바꾸면 싱글CPU에서는 오히려 오버헤드가 걸린다는 이야기가 됩니다. 개인적인 지식과 경험으로 보았을 때는 IOCP같은 ..

[MPP] Visual Studion 2010 Parallel Patterns Library (PPL) ver 1.01

Parallel Patterns Library (PPL)은 Visual Studio 2010에 포함될 예정인 Microsoft의 템플릿 기반 멀티프로세스 프로그래밍 라이브러리 입니다. 라이브러리는 MS독자적인 모델로 인텔의 쓰레딩빌딩블록과 유사한 형태를 가지고 있으며 전반적인 인터페이스 모양은 쓰레딩빌딩블록처럼 STL의 모습을 따릅니다. VS2010의 병렬런타임(Concurrency Runtime)은 협업적 태스크 스케줄링(Cooperative Task Scheduling)과 협업적 블록킹(Cooperative Blocking)에서 강점을 가지고 있습니다. 개념적으로 보자면 협업적 태스크 스케줄링이라는 것은 태스크가 끝난 쓰레드에 자동으로 사용 가능한 다른 태스크를 할당하는 등의 효과적인 스케줄링을 의미..

정수론 중에서...

주기적인 두 이벤트가 동시에 일어나는 주기 구하기 -> 최소공배수 올해 생일의 요일을 알고 있을때 내년 생일의 요일을 구하기 -> 365/7의 나머지를 요일에 더해주면 된다. RSA 알고리즘 -> 메시지를 어떤 정수 m으로 코딩한 다음 k승을 구하는데, k가 공개 키또는 암호화 키이다. 그리고 결과를 n으로 나눈 나머지를 구한다. m,n,k는 모두 매우 큰 정수이다. 결과적으로 m^k mod n을 모듈러 계산을 활용하여 효율적으로 구해야 한다.

알고리즘 2009.12.31
반응형