App은 메인
아래에 Widgetd을 붙이게 된다.
Rule은 프로퍼티와 같은개념.
kv에는 반듯이 python 에서 정의한 widget의 이름과 같은 widget을 <이름> 으로 rule을 정의해 줘야한다.
파일이름은 py 와kv 는 같게.
2017년 2월 25일 토요일
[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
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 list
----------------------------------------------------------------------
5. Sys Enviroment add
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
<7>7>7==
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
----------------------------------------------------------------------
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>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
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()
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 로 인스톨
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
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();
}
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 쓰면 된다.
예를들어
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 );
}
별 의미 없는 것이지만, 이런식으로 응용을 할 수 있다.
어떤 일정한 패턴의 계산 값들을 바로 계산하지 않고, 특정 시점에서 계산한다던지..
2. 파라미터를 킵해놓을 수 있기 때문에 병렬처리하는데 관리가 쉬워진다.
3. 파라미터의 보존이 가능해, 파라미터로 사용된 데이터가 바뀌고, 함수는 바뀌기전 파라미터를 사용해야 한다면, Closure 로 쉽게 처리가 가능
Ex)
Func
return new Func
return input + a + b;
});
}
라고 하자.
어떤 시퀀스가
int x = 13;
int y = 0.1;
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으로 추가된다.
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으로 추가된다.
피드 구독하기:
글 (Atom)