'몸에 새기게 공부다/그날그날 링크 모으기'에 해당되는 글 148건

  1. PIMPL vs. Bridge design pattern 2013.07.27
  2. 하드웨어 르네상스 by 폴 그레엄 2013.01.17
  3. links for 2009-06-06 2009.06.06
  4. links for 2009-06-04 2009.06.04
  5. links for 2009-06-03 2009.06.03
  6. links for 2009-06-02 2009.06.02
  7. links for 2009-05-31 2009.05.31
  8. links for 2009-05-28 2009.05.28
  9. links for 2009-05-27 2009.05.27
  10. links for 2009-05-23 2009.05.23

Bridge pattern은 객체지향 설계방법이고, PIMPL은 파일 물리적으로 설계하는 방법이다.

PIMPL은 실제 구현을 감추는 한 방법으로, 우선적으로 컴파일 의존성을 쪼개는 것이다

Bridge pattern은 기본 추상화 객체에 여러가지 구현을 허락하는 방법이다.

swap()은 두 가지 객체의 값을 교환하는 표준 함수이다. 만약 각 구현에서 포인터를 swap한다면, 런타임에 클래스의 구조를 바꿔줘야 한다. 기본적으로 PIMPL을 사용하는 클래스는 한 가지 구현만을 갖는데, 다른 하위클래스를 가지는 추상 클래스는 없고, forward declared, 다른 곳에서 컴파일되는 한 클래스만을 가질 뿐이다.  구현 클래스를 바꾸는 일이 메인 헤더파일을 include하는 소스 파일을 다시 컴파일하게 만들지 않는다.

예로 많은 수의 private 멤버함수, enums, 데이터를 갖고 있다면, 클래스를 개발하는 도중에는 이러한 private 구성원들을 자주 바꾸게 된다. 만약에 여러파일에 이러한 클래스를 include 한다면, 그래서 private 멤버의 변화때문에 많은 파일을 재컴파일해야 한다면 PIMPL을 사용하는게 좋다.

 

PIMPL is a way of hiding the implementation, primarily to break compilation dependencies.

The Bridge pattern, on the other hand, is a way of supporting multiple implementations.

swap is a standard C++ function for exchanging the values of two objects. If you swap the pointer to the implementation for a different implementation, you are essentially changing the mechanism of the class at runtime.

But in its basic and common form, a class using PIMPL points to a single implementation, so there is no abstract class with distinct subclasses — just one class, forward declared, and compiled elsewhere. Changing the implementation class does not require any recompilation of sources that include the main header.

For example, say you have a lot of private member functions, private enums, and private data. And these private "bits" change fairly frequently as the class is developed and maintained. If the #include dependencies are such that touching this header file causes a large number of sources to be recompiled, you have a good candidate for PIMPL.

So the Bridge pattern is about object-oriented design, while the PIMPL idiom is about physical design of files.

 

http://stackoverflow.com/questions/2346163/pimpl-idiom-vs-bridge-design-pattern

,

스티브잡스 이후의 tech트랜드는 확실히 하드웨어다. 특히 킥스타터를 보면 덕후덕후하고 기발한 하드웨어들이 줄줄이 올라오고, 상당수의 제품들이 단순히 스타업의 프로토타잎이 아니라 메인스트림의 상품 수준이다. 원인으로 생각해 볼만 한것들은 클라우드 펀딩등으로 자금이 쉽게 제공되고, 잡스횽 덕에 높은 하드웨어적 아름다움에 대한 대중적 심미안이 뜨이고, 마지막으로 제조를 가능하게 하는 신기술(3d printing, cloud computing, etc)이 받혀주는 덕에 이런 트랜드가 이어져 가고 있다. 일하고 있는 A사에서도 CAD, CAE, PLM 을 democratize에 목숨거는 분위기인걸 보면 앞으로 몇 년은 갈 트랜드인것 같다.

 

원문 http://www.paulgraham.com/hw.html

Y Combinator의 장점 중 하나는 조기에 광범위하게 주목는 것이다. 즉 우리는 다른 사람들에 앞서 트렌드를 본다.  최근 가장 눈에 띈 트렌드 중 하나가 하드웨어 스탓업 많아진것이다. 84 기업 중 7 개가 하드웨어를 만들고 있었다. 대체로 그들은  기존 기업보다 잘하고 있었다.

물론 그들 투자자로부터 저항을 받는다. 투자자들은 하드웨어에 뿌리 깊은 편견을 가지고있다. 그러나 투자자의 아이디어는 후행 지표다. 최고인 창업자는 최고의 투자자보다 미래에 선견지명이있는 것이다. 왜냐하면 최고의 창업자들이 그 미래를 만들어 있기 때문이다.

이 트렌드를 견인하고있는 것은 하나뿐이 아니다. 클라우드 펀딩 사이트들에서는 하드웨어가 무척 잘하고있다. 태블릿의 보급도 태블릿에서 컨트롤 할 수있는 새로운 제품을 만드는 것을 가능하게하고 제품끼리 결합 것조차 가능하게하고있다. 전기 모터도 진화했고, 다양한 종류의 무선 연결도 당연 해지고있다. 이러한 트렌드가 제품을 제조하는 것을 밀고있다.

Arduino (아루두이노은 AVR 마이크로 컨트롤러, 입출력 포트를 갖춘 보드, C 언어 바람 Arduino 언어와의 통합 개발 환경으로 구성된 시스템), 3D 프린팅, 레이저 절단기와 CNC 밀링 머신이보다 쉽게​​ 이용할 수 있도록 이제보다 쉽게​​ 프로토 타입을 생산 가능하게하고있다. 또한, 온라인으로 구입하는 사람들이 늘고있는 것으로 유통 업체도 병목현상을 덜 격는다

내가 할 수있는 질문은, 왜 갑자기 하드웨어 쿨해졌는지이다.  그것은 지금까지도 멋졌어. 실제 물건은 훌륭하다. 물건은 소프트웨어와 같이 급격한 성장을 할 수있는 좋은 방법이 아니었다 뿐이다. 그러나 그 규칙해도 영구적으로 따르지 않는 것 같다. 오래된 일도 아니다. 그것은 1990년대 부터 그렇게 된것이다. 소프트웨어의 장점 것도 일시적인 것이 될지도 모른다. 해커 무리는 하드웨어를 만드는일 사랑하고, 고객 그걸  기꺼이 산다. 그래서 쉽게 하드웨어파는 일이 소프트웨어를 쉽게 파는 일에 가까와지고, 더욱 더 많은 하드웨어 스타트업을 볼수있게 될지도 모른다.

틀린 생각이 실제로 틀려질 때까지 틀린게 아닌것은 처음 보는 일이 아니다. 기업에서 투자자가 창업자로 부터 배움를 얻는 것도 처음이 아니다.

그래서 만약 당신이 하드웨어에 착수하고 생각하고 있다면, 무서워할 필요는 없다.  왜냐하면 당신은 투자자 무리가 당신을 공격하는 것을 걱정하는 것이기 때문이다. 특히 하드웨어의 아이디어를 가지고  Y Combinator (폴그레엄이 참여하는 펀드)에 응모할 때 두려워할 필요는 없다. 왜냐하면 우리는 하드웨어 스타트업에 강한 관심을 가지고 있기 때문이다.

우리는 다음 세대의 Steve Jobs 위한 기회의 방이 있다는 것을 알고있다. 그러나 또한 확실히  그 기회의 방에 <당신 이름> 을 써 넣을 수 있다는 것이다!

,
,
,
,
,
,
,
,
  • scientific writing에서는 전반적으로 유용할 수 있는 아이디어다 싶었다. 뭐냐면, 결론에서 다룰 핵심 graphs나 table을 쭉 프린트 한뒤에 그것의 order를 정렬하고 간단히 청중을 대상으로 자신의 논문 주제에 대해서 프레젠테이젼 하는거다. 몇가지로 해봐서 가장 논리적으로 메시지가 잘 전달되는 order를 찾아 이를 바탕으로 논문의 개요를 잡는다
    (tags: writing)
  • *** 프로그래머 십계명 *** by 임인건 시작부터 경지에 이르기까지... 1. 정보를 모음에 소홀히 하지 말고 설명서를 읽음에 게을리 하지 말지어 다. 오늘 필요 없는 정보는 내일 필요하리라. 가장 가치 있고도 저렴한 지식은 책 속에 있느니라. 서점과 동료의 책꽂이에 무엇이 꽂혀 있는지 때때로 살피어라. 무심코 흘렸던 종이 한 장이 너의 근심을 풀어 주었 으리라. 설명서는 충분히, 꼼꼼히 읽을지어다. 모든 의문은 설명서를 안 보는 데서 생기니라. 그렇더라도 모두 다 읽을 필요는 없느니라. 2. 너의 PC가 안전하다고 믿지 말지어다. 5분 후에 정전이 되고 내일 너의 하드가 맛이 가리라. 그러하니 너의 소중한 소스 코드는 정기적으로 여 러 군데에 단계별로 백업해 두어라. 3. 변하는 수를 다룰 때에는 늘 조심할지어다. 정수가 절대로 그 한계를 넘지 않으리라 가정하는 것은 어리석음이라. 127, -128, 255, 32767, -32768, 65535, 이 숫자들을 너의 골수에 새기어라. 0.0은 0이 아니니 실수는 원래부터 결코 정밀하지 않느니라. 부호 없는 것과 있는 것을 어울리거나 정수끼리 나눌 때에는 늘 조심하여라. 4. 무슨 일을 반복시킬 때에는 처음과 끝에 유의할지어다. 너의 컴퓨터는 1보다는 0을 좋아 하니라. 배열의 첨자가 그 범위를 넘지 않을지 손 댈 때마다 따져 보아라. 수식에 1을 더하거나 뺄 때에는 늘 긴장하라. 너 의 프로그램은 단지 한 번 덜해서 틀리고 한 번 더해서 다운되느니라. 5. 항상 모든 경우의 수를 고려하고 섣불리 생략하지 말지어다. 절대로 일 어나지 않을 일은 반드시 일어나고, 가장 드물게 일어날 일이 가장 너 를괴롭히리라. 그러하니 언제나 논리에 구멍이 없는지 꼼꼼히 따져 보 고, if를 쓸 때에는 else부터 생각하라. 6. 함수 안에서 매개 변수값은 결코 믿지 말지어다. 지금 그 매개 변수가 결코 가질 수 없다는 값을 내일부터는 가지리라. 그러하니 매개 변수값 이 올바름을 항상 검사할지어다. 그렇더라도 처리
,