2016년 5월 3일 화요일

사용할 Python GUI 비교 및 선택하기

하나의 필요(python에서 어떤 GUI를 주로 사용할 것인가)가 생겨 고민 과정을 정리해 보았습니다. 정리를 해 놓아야. 왜 그런 생각을 했는지, 돌아볼 수 있기 때문입니다.


목적: Python에서 주로 사용할 GUI 선택


검토 자료
검색을 통해서 동영상, 여러 비교 웹페이지 들을 돌아 다녔고, 그 결론으로
1. 'stackoverflw' 의 한 질문과 답변 (링크)
2. wxPython과 PyQt 를 둘다 처음 사용해본 개발자 의견 (링크)
3. 동일한 고민을 하고 wxPython을 고른 분의 글 (링크)


개인적 요구 사항
1. 사용성(짧은 시간에 결과 확인)
2. 범용성(어느 OS에서나 사용 가능)
3. PC에서 사용
이었습니다.


간략하게 정리하면
1. PyQt, pyGTK, wxPython 이 유명도 면에서 선정 대상이 되었고
2. 그중 pyGTK 가 범용성 면에서 점수가 낮아 먼저 탈락 되었습니다.
3. PyQt 와 wxPython 중 어떤 것을 선택하는지 문제인데,
   위 검토자료의 2, 3 이 다른 의견을 주었습니다.
4. 하지만 2번의 개발자가 직접 두 라이브러리를 가지고 직접 동일한 GUI를 구현을 해 보았고 PyQt 가 1일 걸리는 일을 wxPython으로 일주일이 걸리고, 코드의 이해도도 PyQt 가 wxPython에 비해서 높다고 하였습니다.

결론
PyQt 공부하기로 했습니다.


추가로
python korea 에 비슷한 질문이 있고, 답변이 좋아서 기록해 둡니다.

170925 update
  - GUI 는 PyQt 를 사용하는게 제일 편합니다. 이유는 Designer Tool 때문
  - GUI 를 구성할 때는 원하는 모습으로 만들 수 있어야 하는데 이 때 바탕의 배치(layout)를 잘 활용하고 각 Widget의 Minimum, Maximum 크기를 설정하고, Dock Widget 을 활용하면 가능합니다.
  - 보통 버튼을 누르면 특정 동작을 진행해야 하는데 이 때 thread 를 사용해야 GUI 가 멈추지 않습니다. QThread를 활용 하는것이 편리해서(pyqtsignal) 저는 간단한 것만 사용했는데 내부에 bug가 많다는 글을 본적이 있어 신경쓰고 있습니다.


2016년 5월 1일 일요일

Arduino 실습 1 - 외부 LED 1개 동작하기

목적: 아두이노 보드의 외부에 LED를 연결하여 동작하게 할 수 있다.

순서
    1. 실험에 필요한 준비물 이해
    2. 하드웨어 연결
    3. 소프트웨어(Arduino 내부 마이크로컨트롤러에 쓰일) 작성
    4. 실행결과 확인


1. 실험에 필요한 준비물 이해
    a. LED 의 동작 원리: 짧은 쪽이 캐소드(Cathode), 긴 쪽이 에노드(Anode), 짧은 쪽은 GND(그라운드), 긴 쪽을 VCC(전원)에 연결.
    b. 저항(1K) 가 필요한 이유: 저항은 밝기의 조절과 제품의 보호(여기서는 LED)를 위한 것이며, 여기서는 1k 사용.
    c. 아두이노 UNI R3 에서 필요한 부분: VCC(전원), GND(그라운드), Digital Output(여기서는 8번 1개 사용)
        - Digital 출력의 의미: 마이크로 컨트롤러 내부 값 셋팅에 의해 특정 핀의 값을 0 또는 1로 줄 수 있는 것.













   d. 브레드 보드: 부품들 간의 연결을 점프 케이블이라는 것을 이용해서 간편하게 연결하도록 도와주는 도구.
아래 진한 빨간색 선처럼, 각 칸들의 연결이 고정되어 있으며 그 칸들에 점프케이블을 꽂아서 각 부품들을 연결할 수 있는 도구
        











2. 하드웨어 연결
    a. Arduino(Arduino UNO 3 이며 앞으로 Arduino 로 표시) 의 GND 에 하얀색 선(Jump Wire 이며 앞으로 선 표시)을 LED의 캐소드에 연결
    b. LED 의 에노드와 연결된 곳에 1k 저항선을 연결
    c. 1k 저항선의 다른쪽에 노란색 선을 꽂은 다음 Arduino 의 Digital Output  8번과 연결
하드웨어 연결 완료












3. 소프트웨어(Arduino 내부 마이크로컨트롤러에 쓰일) 작성
    a. Sketch 의 동작원리 이해
        ① 아두이노 IDE 에서 기본코드에는 setup 과 loop 함수가 기본 작성되어 있으며 그 안에 코드를 추가 가능

          ② Setup은 Arduino 가 처음 구동될 때(프로그램이 처음 설치될 때, 업로드 될 때) 기본 셋팅을 해 주는 것으며,
          ③ Loop는 계속 무한반복하며 실행하는 곳이다.
    b. 필요한 코드 작성
    c. UNO R3에 작성된 코드 넣기
        - 업로드(위 화살표, 빨간색 네모) 클릭하여 Arduino 에 새로운 프로그램 전송

















4. 실행결과 확인




2016년 4월 26일 화요일

린(Lean) 전략의 핵심

Lean 이 적용된 이야기 하나

  월요일이면 모든 직원들은 무시무시한 상대와 겨루기 위해 링에 오르는 권투 선수처럼 비장한 모습으로 출근 도장을 찍었다. 새로 도착한 부품들을 처음 조립하는 날이니만큼 아무래도 서툴고 작업시간이 더딜 수밖에 없었기 때문이다. 그래서 그들은 최대한 그날의 할당량을 채우기 위해 점심도 허겁지겁 먹으며 일에 매달렸다.
  그러나 할아버지는 달랐다. 자신만의 방식이 있었다. 할아버지는 월요일을 실험일로 정했다. 그리고 어떻게 시간을 효율적으로 쓸 수 있는지 공작기계를 이리저리 조정해서 최적화된 생산 방법을 찾아내려 애썼다. 다른 사람들과 달리 정신없이 바쁘게 일하지도 않았고 옆에 놓인 상자에 조립품을 채워 넣지도 않았다. 그저 생각하고 실험했다. 할아버지에게 월요일은 앞으로의 시간을 효율적으로 쓰기 위해 계획을 짜는 날이었던 것이다.
  할아버지의 동료들은 가장 바빠야 할 월요일마다 시간을 '낭비'하는 할아버지를 힐끗거리며 걱정했다. 할아버지와 달리 중산층에서 자란 우리 할머니가 생계를 제대로 꾸려갈 수 있을지 걱정했고, 한창 자랄 나이였던 우리 아버지가 분유도 제때 먹지 못할까봐 걱정했다.
  하지만 그런 걱정은 매주 금요일이면 사라졌다. 할아버지는 월요일에는 상자를 거의 비워 둔 채로 퇴근했지만 화-수-목 3일이면 일주일치 생산량을 모두 끝마쳤기 때문이다. 월요일 늦은 오후부터 할마버지의 움직임은 점점 빨라졌고 마치 손과 기계가 하나가 된 듯 정확하게 움직였다.


린(Lean) 전략의 핵심

  주어진 과제를 미리 파악하여 성과를 극대화 할 수 있는 가장 효율적인 실행방법을 찾는 것이다. 이것은 새로 나온 디지털 기기를 다룰 때도, 새로운 프로젝트를 맡았을 때도, 새로운 인간관계를 맺을 때도, 새로운 공부를 시작할 때도 도움이 된다.
  자신에게 가장 잘 맞는 방법을 찾기 위해 투자하는 시간을 아까워하지 마라. 임기응변도 중요하긴 하지만 그보다 더 중요한 것이 체계적인 사고다. 그런 체계적 사고를 익히기 위해 더 많은 시간을 써야 질적으로 만족도가 높은 삶을 살아갈 수 있는 것이다.

「스마트한 성공들」 마틴 베레가드, 조던 밀튼


예전에 잘나가는 컨설팅 사장님이 강연하는 것을 들었는데,
어떤 걸 공부해야 회사에서 효율적으로 일할 수 있나요? 라고 질문한 적이 있습니다.
그때 그분이 "당연히 Lean" 이죠 라고 이야기를 해 주셨습니다.
그때 이후로 지금까지 Lean이 도대체 무엇인지 생각해 봤지만 이해가 잘 가지 않았는데, 이 책을 읽고 이해가 된 것 같은 느낌 입니다.

복잡한 것이 아니라,
조급하지 않게, 전체를 보며, 효율성을 찾는것에 일정 시간을 들이며, 신속하게 행동하는 것!
항상 효율성을 생각할 것! 생각을 멈추지 않을 것!

메뉴얼이 존재하는 것이 아니므로 현재 상황을 명확하게 파악하여 효율적인 지점을 찾는다! 그리고 그렇게 하려면 찾을 수 있는 기초 체력(논리력, 진짜 체력)이 필요하다.



(E, K) Lean 생산방식의 역사 - 부제:효율적으로 일하기 위한 최고의 방법 Lean

실리콘밸리 스타트업은 거의 예외없이 린 방식으로 혁신 사업을 시작하려 한다고 합니다. 그 린 방식은 최초 Ford 로 부터, Toyota 까지의 제조업에서 시작된 것 입니다.
Lean을 제대로 이해하기 위하여 그 역사를 찾아 보았습니다!

----

 Although there are instances of rigorous process thinking in manufacturing all the way back to the Arsenal in Venice in the 1450s, the first person to truly integrate an entire production process was Henry Ford. At Highland Park, MI, in 1913 he married consistently interchangeable parts with standard work and moving conveyance to create what he called flow production. The public grasped this in the dramatic form of the moving assembly line, but from the standpoint of the manufacturing engineer the breakthroughs actually went much further.
엄격한 프로세스 사고가 적용된 예는 1450년대 베니스 아스날(산업 혁명 이전까지 유럽 최대의 단일생산 지역)에도 기록이 있지만, 진정한 전체 생산 공정을 통합한 최초는 헨리 포드 였습니다. 하이랜드 파크, 미시간에서는 1913 년에 그는 흐름 생산이라는 것을 만들기 위해 표준화된 작업, 지속적 움직임 그리고 지속적으로 교환 가능한 부품에 끊임없이 고민 했습니다. 사람들은 이것을 움직이는 조립공정의 하나로 인식 했지만 제조업의 엔지니어로서는 훨씬 큰 의미가 있는 것이었습니다.

Ford lined up fabrication steps in process sequence wherever possible using special-purpose machines and go/no-go gauges to fabricate and assemble the components going into the vehicle within a few minutes, and deliver perfectly fitting components directly to line-side. This was a truly revolutionary break from the shop practices of the American System that consisted of general-purpose machines grouped by process, which made parts that eventually found their way into finished products after a good bit of tinkering (fitting) in subassembly and final assembly.
포드에서는 몇 분내로 각 공정에 부품을 투입하기 위하여, 특별 제작된 기계와 go-no go 게이지를 사용하며 해당 라인에 이동해 놓습니다. 이것은 각 프로세스 별로 머신을 모아놓고 작업이 끝나면 다음단계로 제품을 옮겼던 기존 미국의 생산방식에 큰 변화를 가져 왔습니다.

The problem with Ford’s system was not the flow: He was able to turn the inventories of the entire company every few days. Rather it was his inability to provide variety. The Model T was not just limited to one color. It was also limited to one specification so that all Model T chassis were essentially identical up through the end of production in 1926. (The customer did have a choice of four or five body styles, a drop-on feature from outside suppliers added at the very end of the production line.) Indeed, it appears that practically every machine in the Ford Motor Company worked on a single part number, and there were essentially no changeovers.
포드의 시스템의 문제는 흐름에 대한 것이 아니었습니다: 그는 며칠마다 회사 전체 재고를 몇 일만에 다 소모할 수 있었습니다. 다양성을 제공할 수 없다는 것이 문제였습니다. 모델 T는, 단 하나의 색상으로 한정되었다는 것뿐만 아니라, T 모델은 1926년 까지 모든 섀시를 하나의 종류만으로 사용하였습니다.

When the world wanted variety, including model cycles shorter than the 19 years for the Model T, Ford seemed to lose his way. Other automakers responded to the need for many models, each with many options, but with production systems whose design and fabrication steps regressed toward process areas with much longer throughput times. Over time they populated their fabrication shops with larger and larger machines that ran faster and faster, apparently lowering costs per process step, but continually increasing throughput times and inventories except in the rare case—like engine machining lines—where all of the process steps could be linked and automated. Even worse, the time lags between process steps and the complex part routings required ever more sophisticated information management systems culminating in computerized Materials Requirements Planning(MRP) systems .
세계는 19년 동안의 한 모델(T) 만 생산하는 것 보다 개선된 다양성을 원했고, 포드는 자신의 길을 잃는 듯했습니다. 타 자동차 회사들은 다양성을 제공했지만 훨씬 긴 생산시간이 필요했습니다. 장비는 커지면서 속도가 빨라져 한 공정에서의 비용은 줄었지만 전체 생산 시간과 재고는 늘어났습니다. 더욱이 복잡한 부품의 경우의 수 때문에 시간은 더욱 늘어나게 되었습니다.

As Kiichiro Toyoda, Taiichi Ohno, and others at Toyota looked at this situation in the 1930s, and more intensely just after World War II, it occurred to them that a series of simple innovations might make it more possible to provide both continuity in process flow and a wide variety in product offerings. They therefore revisited Ford’s original thinking, and invented the Toyota Production System.
도요타 키이치, 도요타 오노 및 다른 이들은 1930 년대에 이러한 상황을 보고, (정확하게는 2차 세계대전 후) 혁신들을 성공시키면서 다양성과 Ford 초기의 컨셉을 만족하는 도요타 생산 시스템을 만들 수 있었습니다.

This system in essence shifted the focus of the manufacturing engineer from individual machines and their utilization, to the flow of the product through the total process. Toyota concluded that by right-sizing machines for the actual volume needed, introducing self-monitoring machines to ensure quality, lining the machines up in process sequence, pioneering quick setups so each machine could make small volumes of many part numbers, and having each process step notify the previous step of its current needs for materials, it would be possible to obtain low cost, high variety, high quality, and very rapid throughput times to respond to changing customer desires. Also, information management could be made much simpler and more accurate.
이 시스템의 본질은, 생산 엔지니어의 초점을 각각의 설비와 그것의 활용에서 제품의 전체 흐름으로 변경했다는 데 있습니다. 도요타는 설비의 크기를 알맞게 조정하고, 설비 자체 모니터링을 진행해 품질을 높이고, 설비들을 공정 흐름에 맞게 나열하며, 설비 설정을 지속 개선하여 크기를 줄여서 적은 비용, 높은 다양성, 높은 품질, 짧은 전체 생산 시간으로 고객의 요구에 빠르게 답할 수 있도록 하였습니다. 그리고 정보 관리도 훨씬 단순하고 정확하게 하였습니다.

The thought process of lean was thoroughly described in the book The Machine That Changed the World (1990) by James P. Womack, Daniel Roos, and Daniel T. Jones. In a subsequent volume, Lean Thinking (1996), James P. Womack and Daniel T. Jones distilled these lean principles even further to five:
James P. Womack, Daniel Roos, and Daniel T. Jones 가 지은 ‘Machine That Changed the World(1990)’ 라는 책에 lean 프로세스가 잘 드러나 있습니다. 그 후속작 Lean Thinking (1996) 에서는 lean의 사상에서 5가지를 뽑아 냈습니다.

1. Specify the value desired by the customer
1. 고객이 원하는 가치를 구체화 한다.

2. Identify the value stream for each product providing that value and challenge all of the wasted steps (generally nine out of ten) currently necessary to provide it
2. 그 값을 제공하는 각 제품의 가치 흐름을 파악하고 그것을 제공하기 위해 현재 필요 (9/10) 불필요한 절차를 지속 개선 하는 것

3. Make the product flow continuously through the remaining value-added steps
3. 제품을 계속 흘러갈 수 있도록 한다.

4. Introduce pull between all steps where continuous flow is possible
4. 지속 흐름이 가능한 곳에 pull 개념을 도입하라.

5. Manage toward perfection so that the number of steps and the amount of time and information needed to serve the customer continually falls
5. 완벽을 향해 지속 노력하라, 그래서 생산에 필요한 단계, 시간, 필요한 정보 가 줄어들도록 하라.

Lean Today
Lean의 현재

As these words are written, Toyota, the leading lean exemplar in the world, stands poised to become the largest automaker in the world in terms of overall sales. Its dominant success in everything from rising sales and market shares in every global market, not to mention a clear lead in hybrid technology, stands as the strongest proof of the power of lean enterprise.
Lean의 대표적인 모범이 되는 도요타는 현재 전세계 최대의 자동차 판매량을 보여주고 있습니다. 이는 lean 기업의 파워를 나타내는 강한 증거 입니다.

This continued success has over the past two decades created an enormous demand for greater knowledge about lean thinking. There are literally hundreds of books and papers, not to mention thousands of media articles exploring the subject, and numerous other resources available to this growing audience.
Lean 씽킹을 이용한 20여년간의 지속적인 성장은 lean을 배우고자 하는 열망을 만들어 냈습니다. 말 그대로 100여개의 책과 논문들이 있고, 그보다 더 많은 방송, 신문 사설들이 넘쳐나고 있는 상황 입니다.

As lean thinking continues to spread to every country in the world, leaders are also adapting the tools and principles beyond manufacturing, to logistics and distribution, services, retail, healthcare, construction, maintenance, and even government. Indeed, lean consciousness and methods are only beginning to take root among senior managers and leaders in all sectors today.
Lean 씽킹은 전세계로 뻗어나가고 있으며, 리더들은 그와 관련된 tool 들과 규범들을 물류, 서비스, 소매업, 헬스케어, 건축, 유지보수 정부까지 사업분야를 막론하고 받아들이려고 노력하고 있습니다. Lean 의 생각 방식은 전 세계에 뿌리를 내리고 있습니다.

참고
http://www.lean.org/WhatsLean/History.cfm
http://www.imb.co.kr/apc/vol-10/2technical.htm
http://www.venturesquare.net/517342

2016년 4월 23일 토요일

똥으로 보는 건강학 -도올 김용옥

도올 김용옥 선생님이 평생동안 건강하게 연구생활을 할 수 있었던 1순위로 똥을 뽑아 주셨습니다.


-- 요약 --

같은 양의 음식을 먹었을 때 화장실에서 똥의 양이 많은 것이 좋을 까요, 적은 것이 좋을까요?
몸 안에서 최대한 많이 흡수해서 적은 양이 나오는 것이 좋다고 생각할 수도 있지만, 많은 양이 나오는 것이 좋습니다.



입에서 항문까지 연결된 통로는 체 내가 아니라 체 외로 분류되는데,
똥은 입에서 항문까지 지나가면서 체 내로 흡수되지도 못한 물질들 이기 때문에, 몸에 남아 있으면 이 되기 때문입니다. 
미국 코네티컷 주 보건당국 연구결과에 의하면 코네티컷 주민의 똥의 양이 30년 전보다 반으로 줄었으며, 이것이 주민들의 비만 등의 문제와 연관이 있다고 밝혀졌다고 합니다.
자신의 변으로 건강 상태를 파악할 때는 아래 5가지 항목을 생각해야 합니다.

1. 냄새
  - 평상시보다 악취가 나면 내 생활에 문제가 있다.
  - 냄새가 심하면 건강이 안좋은 것이다.
2. 색
  - 적당히 누런 색이 좋다.
  - 까많거나 묽은 색은 좋지 않다.
3. 농도
  - 물기가 많으면 설사이고 물기가 없으면 변비이다.
  - 변비나 설사는 다 나쁘다.
  - 설사보다 변비가 더 나쁘다. 설사는 몸에서 빨리 배출하려고 노력하는 것이기 때문이다.
4. 모양
  - 한번에 쭉~ 빠지는 바나나 형태가 좋다.
5. 공복감
  - 똥을 누었는데 뚝 끊어져서 뭔가 남아있는 느낌이 들면 좋지 않은 것이다.
  - 누고 나면 완전히 빠져서 배가 빈 것을 느끼는 공복감이 느껴져야 한다.




2016년 4월 16일 토요일

다양한 견해 차이의 원인을 찾아보자

 지적인 사람들이 어떤 사실에 대하여 서로 다른 결론을 내놓는 이유는 무엇일까?

조지 스웨인은 그 이유를 4가지로 나누었다.
(15살에 MIT 입학, MIT&하버드에서 교수로 활동했던 천재성과 성실성을 모두 가진 인물)

1. 둘 중 한사람 또는 두사람 모두 관련 사실을 다 이해하지 못했거나 문제 자체를 이해하지 못한 경우. 또는 잘못된 사실이나 원리를 옮은 것으로 가정했을 경우
   → 이런 경우는 어디가 잘못되었는지 쉽게 확인할 수 있다.
2. 둘 중 한사람 또는 두 사람 모두 올바른 전제로부터 잘못된 추론을 한 경우.
   → 이 경우에도 쉽게 잘못을 발견할 수 있다.
3. 둘 중 한사람 또는 두 사람 모두 사실을 균형있게 바라보지 못한 경우.
   → 마음의 평정을 잃었거나 인식 능력이 부족한 경우이다.
4. 둘 중 한사람 또는 두사람 모두 타고난 고집불통이거나 남의 말에 귀 기울이지 않는 심성을 지닌 경우

실무 경험에 비추어 보면
3, 4번의 경우는 확인하기가 상대적으로 어렵지 않다. 의견이 아닌 사실만을 이야기 하면 상황이 나아질 경우가 많기 때문이다.
1, 2번 경우가 머리가 아픈데, 경험의 굳은 살을 만들어 생각하는 시간을 줄이는 것이 최선이라고 생각한다.





2016년 4월 15일 금요일

The Internet: Packet, routers, and reliability

내 컴퓨터와 특정 싸이트와의 데이터 전송은 직접 연결되지 않는다.
대신 네트워크들을 돌면서 찾아가게 된다.
고정된 경로를 따라가는 것이 아니라, 여러 경로들 중 여유가 있는 곳을 찾아 전송된다.
라우터가 그 경로들의 중간에서 관리한다.
패킷이 missing 되었는지는 TCP의 경우 관리가 된다.
몇 개의 패킷이 안보내진 것이 확인되면 TCP는 서버에 알려서 안보내진 패킷을 다시 받는다.
라우터와 TCP의 조합으로 현재 진행되고 있는 서비스를 중단없이 확장할 수 있다.