2017년 2월 25일 토요일

[kivy] 1

App은 메인

아래에 Widgetd을 붙이게 된다.

Rule은 프로퍼티와 같은개념.

kv에는 반듯이 python 에서 정의한 widget의 이름과 같은 widget을 <이름> 으로 rule을 정의해 줘야한다.

파일이름은 py 와kv 는 같게.


[kivy] additional sapce = error


------Right one-------------------------------------------
#:kivy 1.9.1


text: 'hellow world'
-------------------------------------------------


-------- Wrong -----------------------------------------
#:kivy 1.9.1


text : 'hellow world'  

-------------------------------------------------

if there is space between "text" and ":" < occur error

[Visual Studi] Key Setting

duplicate line : alt q (need extension)

project.newfolder : alt + shift + q

Window.NewVerticalTabGroup : alt  + shift + w

2017년 2월 24일 금요일

[python] Setting enviroment

1. Install visual studio 2015,2013
2. Install anaconda 2.7
3. Install Theano
4. Install Cuda 8.0 , Cudnn5.1
5. Install keras
6. Create vertual enviroment python3.5
7. install kivy 1.9.1 , kivy desinger




3,4,5==

1. Install Visual Studio 2013

2. Install Cuda 8.0

3.Install Git

4. Install Theano

----------------------------------------------------------------------

conda install pip six nose numpy scipy

conda install mingw libpython

cd \apps\pythonApps   (Directory for Theano File)

git clone git://github.com/Theano/Theano.git

cd Theano

python setup.py develop

conda list

----------------------------------------------------------------------

5. Sys Enviroment add

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin 


Name: THEANO_FLAGS 
Value:  floatX=float32,device=gpu,nvcc.fastmath=True

----------------------------------------------------------------------

6. Install Keras

cd \apps\pythonApps   (Directory for Keras File)

git clone https://github.com/fchollet/keras

cd keras

python setup.py develop

----------------------------------------------------------------------
7. Install CuDNN 5.1
----------------------------------------------------------------------
8. Add Theano Flag

Name: THEANO_FLAGS
Value:  floatX=float32,device=gpu,nvcc.fastmath=True,lib.cnmem=0.81


<7>7==
python -m pip install --upgrade pip wheel setuptools

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew

python -m pip install kivy.deps.angle

python -m pip install kivy

pip install -U watchdog pygments docutils jedi gitpython six kivy-garden

garden install filebrowser

- Test - 
cd kivy-designer

python -m designer

[python] Kivy Install

python 2.7


vertual enviroment python 3.5

1. uninstall cython 
2. pip install -I Cython==0.23
3. python -m pip install --upgrade pip wheel setuptools
4. python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
5. python -m pip install kivy.deps.gstreamer
6. python -m pip install kivy.deps.angle
7. python -m pip install kivy

2017년 2월 23일 목요일

[ACS Controller] Mask Setting for Trigger

If we use External Trigger signal from driver , need add this line

COEWRITE/4 (1,0x60FE,1,0);
COEWRITE/4 (1,0x60FE,2,0xFFFF0000);

this is driver 1 mask,


----------------------------------------------------------------------------------

GLOBAL REAL TRIGPOINT(64) !Encoder Trigger Generating Point
GLOBAL REAL PULSE_WIDTH
COEWRITE/4 (1,0x60FE,1,0);
COEWRITE/4 (1,0x60FE,2,0xFFFF0000);
TRIGPOINT(0) = 50.0
TRIGPOINT(1) = 50.0
PULSE_WIDTH = 50 ![msec]
WHILE(1)
IF( ABS( FPOS(0) - TRIGPOINT(0)) < 0.05 )
OUT(1).18 = 1
WAIT PULSE_WIDTH
ELSE
OUT(1).18 = 0
END !IF End
END !While End
STOP

-------------------------------------------------------------------------------------

2017년 2월 22일 수요일

[python] method(*param)

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse , Line
from random import random


class MyPaintWidget(Widget):
    def on_touch_down(self,touch):
        color = (random(),random(),random())
        with self.canvas:
            Color(*color)

            self.pck(color)
            print '-'*20
            self.pck(*color)


            d = 30
            Ellipse(pos=(touch.x - d /2 , touch.y - d/2) , size = (d,d))
            touch.ud['line'] = Line(points=(touch.x , touch.y))
            print touch.ud

    def pck(self, a =255,b = 255,c = 255):
        print "a = " + str(a)
        print "b = " + str(b)
        print "c = " + str(c)

    def on_touch_move(self,touch):
        with self.canvas:
            touch.ud['line'].points += [touch.x, touch.y]
            print touch.ud['line'].points




class MyPaintApp(App):
    def build(self):
        return MyPaintWidget()


if __name__ == '__main__':
    MyPaintApp().run()


[python] GUI Tool

C# 의 WPF와 윈폼을 사용해서, 테스트용 프로그램들을 많이 만들었다.

특정 기능이나 시스템을 여러 환경에서 테스트 해야할때, 콘솔에서 작업하는것 보다 훨씬 속도가 빠르기 때문에, 특히 윈폼을 이용한 테스팅 어플리 케이션을 많이 만든다. 그런데, 
C#은 굉장히 복잡한 알고리즘이나 분석등의 작업에는 불편한다. 

파이썬으로 10분이면 만들꺼, C#으로는 훨씬 시간이 더 많이 걸리는 경우가 많다. 

그래서 기능이나 시스템의 내용에 따라 파이썬과 C#을 번갈아 가면서 사용중인데, 파이썬으로도 c#처럼 편하게 GUI를 만들수 있다면 일의 효율이 매우 크게 증가할 거라고 항상 생각해 왔다. 

 파이썬으로는 GUI 를 TK밖에 안써봐서, 쓸만한 다른 GUI를 찾고있는데 후보는 두개다. 

ptQt나 Kivy 

Kivy는 안드로이드 모바일폰에서 사용 가능하다고 한다. 

pyQt는 디자이너 프로그램이 딸려있다. 

항상 C#에서도 디자이너를 사용해 GUI를 만들어와서 pyQt가 더 빠르게 익힐 수 있지 않을까 하는데, 디자인과 모바일까지 지원된다는 점에선 Kivy가 좋은 것 같기도하다. (앞으로 모바일쪽 테스팅 하기 때문에.. )


현재 프로젝트에서 엄청난 수의 알고리즘들을 설꼐하고 테스트 해야되는데, C#으로 하기에는 너무 시간이 많이 걸릴것 같아 어떻게든 파이썬 GUI로 만들고 싶은데 나중을 생각해 Kivy를 공부하고 싶지만, 프로젝트 일정에 따라갈 수 있을지 걱정이다.. 

(일단 Kivy 를 시작해본다.)

windows10 64bit / anaconda python2.7
 conda install -c krisvanneste kivy=1.8.0 로 인스톨

2017년 2월 19일 일요일

[python] Qt4 With Python2.7 and Vertual Enviroment

1. conda update conda
2.  conda create -n qtEnv python=2.7 anaconda
3. activate qtEnv 

---------------------------------------------------
next, we need to change qtpy 5 -> qtpy4
---------------------------------------------------

4. conda install -c anaconda pyqt=4.11.4

Done! go to visual studio and add python env 

[c#] Data Split

        public void SplitTrain_Test(float[][] data_x , float[] label , double trainSize ) {
            int[] idx = new int[label.Length];
            Parallel.For( 0 , label.Length , i => {
                idx[i] = i;
            } );

            Random rnd = new Random();
            int trainNum = (int)(label.Length *trainSize);
            int[] rndIdx   = idx.OrderBy(x => rnd.Next()).ToArray();
            int[] trainIdx = idx.Take(trainNum).ToArray();
            int[] testIdx  = idx.Skip(trainNum).ToArray();
        }

[C#] Linq Orderby

orderby 는 각 요소들에서 조건을 뽑아내서 서로 비교한다.

예를들어

orderby(x => x ) : 숫자 요소일시 1 ,2 ,3 순으로 정렬 / 문자시 알파벳순

orderby(x => x%2 ) : 숫자 요소일시 2,4,8 ... 1,3,5 순으로 정렬

여기서 만약 두 요소의 비교조건 값이 같을경우는 정렬이 안된다. 이떄 thenby 쓰면 된다.

2017년 2월 6일 월요일

[C#] Closure 쓰는 이점

1. 원하는때 계산이 가능 : Lazy 개념

2.  파라미터를 킵해놓을 수 있기 때문에 병렬처리하는데 관리가 쉬워진다.

3. 파라미터의 보존이 가능해, 파라미터로 사용된 데이터가 바뀌고, 함수는 바뀌기전 파라미터를 사용해야 한다면,  Closure 로 쉽게 처리가 가능

Ex)

Func method1( int input   ){

    return new Func((a,b)=>{
        return input + a + b;

    });

}

라고 하자.

어떤 시퀀스가

int x = 13;
int y = 0.1;
List> templist = new List>();
for( i => range(0 ,10)){
    templist.add( method1(i*x) );
}
z = 0
for( i => range(0 ,10)){
    z += templist[i]( y, y*i  );
}

별 의미 없는 것이지만, 이런식으로 응용을 할 수 있다.

어떤 일정한 패턴의 계산 값들을 바로 계산하지 않고,  특정 시점에서 계산한다던지..

[C#] Linq Exampled

var output1 = input.Select(x=>x*10);

var output2 = input.Where( x => x > 20);


var output3 = output1.Aggregate((x,y)=> x+y);


var output3 = output1.Aggregate(100,(x,y)=> x+y); // 첫 요소가 100으로 추가된다.