[C++강좌 리팩토링] 메모리 최적화, Unions 이용 Unions 또한 리팩토링과 메모리 낭비를 막기 위해 사용할 수 있다. 데이터 멤버 중 (최소한) 하나라도 활성화되면 같은 메모리 공간에 모든 데이터 멤버가 위치하기 때문이다. union은 데이터 멤버를 모두 저장할 수 있으며, 생성자와 소멸자를 포함할 수 있다. 하지만 가상 멤버 함수를 가질 순 없다.union은 다른 클래스의 기저 클래스로써 사용될 수 없으며 다른 클래스로부터 상속할 수도 없다.union은 비자명한 특수 멤버 함수들을 가지는 객체들을 저장할 수 없다. C++에서는 익명의(anonymous) unions을 지원한다. anonymous union은 이름이 없는 객체이다. 예를 들면, 명명된 union과는 다르게 익명의 union은 ..
[C++강좌] 메모리 최적화, 리펙토링 (Bit Fields 프로그래밍 성능 관리) 메모리 사용 최적화(Optimizing Memory Usage) C++ 강좌, 메모리 최적화 장점 - 더 빠른 실행속도 - 시스템 자원들의 효율적 사용 - 메모리 최소 사용 코드 최적화 위의 모든 것을 향상하려 노력한다. 그리고 C++에서 선언 재할당 기법은 불필요한 객체 생성과 해제를 제거하여 프로그램 크기를 줄이고 실행시간 속도를 향상한다. 그러나 다른 최적화 기법들은 하나의 방향(더 빠른 코드 또는 더 작은 메모리 점유)으로 심하게 치우친다. 때론, 최적화 목표들은 상호 배타적이기도 하다. 즉, 메모리 점유를 작게 만드는 것은 더 느린 코드를 초래하며 반면에 더 빠른 코드는 더 큰 메모리 점유로 이어진다. 이 포스팅..
자바 GUI 프로그래밍, GUI는 왜 단일스레드일까? 예전에는 자바 GUI 프로그래밍 애플리케이션이 단일 스레드로 동작했으며, 자바 GUI 이벤트는 애플리케이션의 메인 이벤트 반복문main event loop에서 처리했었다. 하지만 최근에 등장한 GUI 프레임웍은 약간 다른 구조로 만들어져 있는데, 이를테면 『이벤트 처리 스레드 EDT』, event dispatch thread에서 자바 GUI 이벤트를 전담해서 처리하게 돼 있다. 자바에서만 GUI 프레임웍을 단일 스레드로 구성한 것은 아니다. Qt, 넥스트스텝NextStep, Mac OS의 코코아Cocoa, X윈도우 등을 포함한 대부분의 자바 GUI 프레임웍이 단일 스레드로 동작하게 돼 있다. 그렇다고 해서 아무도 단일 스레드를 벗어나려고 시도하지 않았..
기업 경영 시스템 두가지, ICE 모델과 SPICE 모델 ICE 경영 모델나 홀로(stand alone) 경영 모델이다. 이와 달리 SPICE 모델은 이해관계자들과의 상호 작용을 통한 생태계(ecosystem) 기업 경영 시스템(모델)이라 할 수 있다. SPICE 모델ICE(얼음) 같이 차고 냉정한 경쟁을 넘어 협력하고 공생하는 기업 경영 시스템 세계를 만들어가는 SPICE(양념) 역할의 의미로도 해석할 수 있다. (기업 경영 시스템) 생태계 경영은 나보다 우리가 좋은 비즈니스 세계를 만들어가고자 하는 노력인 만큼 다른 조직과 상생하고 공존하려는 노력이 필요하다. 생태계 관점에서 보면 개체 간에는 늘 경쟁만 할 것이 아니라 협력도 필요하다. 최근에는 기업의 경쟁 구조가 개별 기업 경영 시스템의 상품 간 ..