Media Log

살다보면(?) 매크로에서 받는 가변 인자를 또 다른 매크로로 쑤셔넣고 싶은 경우가 있다.

#define MACRO_1(abcfn(a, b, c) #define MACRO(...) MACRO_1(__VA_ARGS__)

짠, 이렇게 하면 된다.

그렇다. 아무 테크닉이 필요없이 그냥 쑤셔넣으면 된다.

그런데 위 코드는 GCC에서는 잘 동작하지만 VC에서는 동작하지 않는다. 그렇다고 해서 가변인자는 다른 매크로로 건넬 수가 없구나 하고 오해하면 안된다. 이것은 그냥 비주얼 스튜디오의 버그일 뿐이다.

#define MACRO_1(abcfn(abc)
#define MACRO_1_(args_listMACRO_1 args_list
#define MACRO(...) MACRO_1_((__VA_ARGS__))

비주얼 스튜디오에서는 위와 같은 얍삽이를 통해서 이를 회피할 수 있다. __VA_ARGS__ 주위를 한 겹 더 괄호로 둘러싸서 또 다른 매크로로 넘기는 것을 주의해서 봐야한다.


그래서 내가 하고 싶은 말은,


이 버그가 정말 거지 같다고 생각된다면

http://connect.microsoft.com/VisualStudio/feedback/details/380090/variadic-macro-replacement

여기 가서 upvote를 해주세요.

원래 파이어폭스는 내가 가장 좋아하던 브라우저였는데, 크롬 개발자 버전 4.0이 나올 때부터 쯤인가 조금씩 조금씩 크롬을 더 많이 사용하기 시작했다. 그래서 이제는 항상 크롬만 쓰는데, 미친듯이 빠른 이 속도는 어느 브라우저도 따라올 수가 없다.

크롬이 3.0부턴가 확장 플러그인을 지원 하면서부터 많은 플러그인들이 개발되기 시작했다.
내가 가장 좋아하는 것은 vimium인데 vim의 키 바인딩으로 브라우징 할 수 있도록 해준다.

vim을 좋아하는 사람이라면 누구라도 좋아할 수 밖에 없을 것이다.

  • 현재 페이지에서 링크 따라가기.
  • 새 탭으로 링크 따라가기.
  • 위 아래로 이동. 앞 뒤 탭으로 이동. 앞 뒤 페이지 등으로 이동.
  • 탭 닫기. 닫은 탭 다시 복구하기.
  • 빠른 검색.

자주 쓰는 이런 기능들을 모두 키보드로 조작할 수 있다. vim이 그렇듯이 처음쓰면 어색하지만 점점 편리해질 것이다.




잘 만들어진 프로그램은 어디에 가져다 붙혀도 척척 잘 들러붙나보다.

VS2010에서는 VC개발자들에게 큰 변화가 있었는데, 그것은 단연 C++0x이다.
하지만 그만큼이나 욕심나는 것은 아주 쉽게 vim을 붙여서 쓸 수 있다는 것이다.

vsvim이라는 프로젝트가 있는데, 마이크로소프트에서 일하는 누군가가 혼자서 만들었으며 VS2010을 사용한다면 갤러리에서 무료로 다운받아서 쉽게 사용해볼 수 있다. 꼭 VS2010이상을 사용해야만 한다.

충돌나는 키들이 꽤 많기 때문에 자신의 선호에 맞게 잘 정리해줘야 할 것이다.
크리스탈 리포트 2008 - 6점
백영일 지음/가메출판사
Visual Studio를 설치 할 때 항상 Visual Basic Cristal Reports 라는 프로그램이 눈에 띄었었는데, 뭐하는 프로그램인지를 몰라서 나는 매번 설치에서 제외하곤 했었다.

얼마전에 새 책 목록을 받아 보다가 낯익은 이름이 있길래 드디어 이것이 뭐하는 프로그램인지 알아볼 기회다하고는 책을 구해보게 되었다.

나는 크리스탈 레포트가 MS에서 만든 프로그램인 줄로만 생각했었는데, 그냥 번들로 함께 딸려오는 제품이었다. 비주얼 스튜디오 뿐만 아니라 이클립스나 볼랜드의 제품에서도 역시 사용 할 수 있다.

크리스탈 레포트가 뭐하는 프로그램인지 간단히 설명하면, 임의의 데이터 베이스에 접속해서 데이터를 가져와서 가공하고 보기 좋게 보고서를 만들어 주는 프로그램이다. C#이나 VB.NET 그리고 Visual Basic으로 애플리케이션의 이벤트 처리를 할 수 있는 프로그래밍 인터페이스를 제공해서 조금 더 다이나믹하고 유연한 보고서를 만들 수 있다.

회사에서 서비스를 개발하다 보면 기획자들에게 통계 데이터를 보내줘야 할 일이 종종 있는데, 나는 데이터베이스에 대충 쿼리에서 결과를 엑셀 프로그램에 툭 붙여넣어 보내주고는 한다.
나는 국민학교 때부터 그림에는 영 소질이 없었는데, 지금도 프리젠테이션에 관련된 애플리케이션은 다 싫다.(Visio나 파워포인트, 엑셀, 워드 등) 이런 프로그램을 사용할 때 나는 아주 저질적인 결과물을 내놓곤 하는데, 다행히 날 컴맹으로 당연시 하는 우리 여기획자들 덕분에 맘 편하게 보고서를 작성할 수 있다.
하지만 입장을 바꿔서, 내가 상사라면 나처럼 보고서를 작성하는 녀석에게는 '저 새끼가 분명 일할 마음이 없는거야...' 라고 생각이 들지도 모르겠다.

어쨌거나 요즈음에는 그런 면에서도 조금 노력이 필요하다는 생각이 들어서 나는 이 책이 너무 반가웠다. 나도 멋진 보고서를 만들 수 있을테니깐.

몇 일전에 컴퓨터를 포맷할 일이 있어서 VS2008를 새로 설치하면서는 이 크리스탈 레포트를 포함시켜서 설치를 했다.
그리고 이 책과 함께 몇 가지 실습을 따라해보았는데, 프로젝트를 만들자마자 프로그램이 뻗고, 수도 없이 나오는 위자드에서 finish 버튼만 누르면 비주얼 스튜디오가 뻗어버려서 아주 짜증이 났다. 최신 버전인데도 이런데 VS2005 였을 때나 다른 제품은 아마도 더했을 것이다.

어쨌거나 내가 서비스하고 있는 데이터베이스에 연결해서 간단히만 이것 저것 만져보았다.
애플리케이션을 EXE 형태로 만들 수도 있고, 웹 애플리케이션으로 만드는 것도 가능하다.
우리는 지금 하고 있는 서비스를 관리하기 위한 애플리케이션을 ASP.NET으로 만들어서 사용하고 있는데, 크리스탈 레포트를 사용해서 만들 수도 있겠구나 생각이 들었다. 하지만 코드양은 조금 줄일 수 있을지 몰라도, ASP.NET으로 모든 것을 제어하는 것 보다는 훨씬 할 수 있는 것이 적을 것이다.
데이터를 갱신하거나 삭제하는 작업보다는 SELECT 위주의 통계 애플리케이션이 이 프로그램에 더 적절하다.

나는 크리스탈 레포트가 무엇인지 알아보기 위한 용도로 이 책을 읽어서 대충대충만 살펴봤는데, 중간에 Visual Basic은 없는게 낫지 않나 하는 생각도 들었다.
이 책은 Windows via C++과 같은 많은 고급 기술을 담고 있는 책보다 훨씬 낮은 레벨의 지식을 담고 있는 반면에 두께는 더 두껍다. 시대에 맞게 정말 필요한 내용만을 담아 거품을 좀 뺐으면 사용자가 좀 더 부담을 덜 갖고 편하게 이 책을 봤을텐데 말이다.

어쨌거나 이 책은 수요가 그렇게 많지 않은 분야에 대해 저자가 열심히(자료도 별로 없는 가운데) 연구해서 쓴 책일 것이므로 고맙게 생각해야한다.
좋은 애플리케이션에 대해 가르쳐준 저자에게 감사를 표한다.