28
Java 와 Python 와 와와 : Jython 와 Sikuli 와와와와 와와와 와와와 와와와 와와와와와 – 와 10 와 (1) 와와와와와와와 2015.7 와와 <[email protected]>

Java와 Python의 만남: Jython과 Sikuli

  • Upload
    -

  • View
    204

  • Download
    7

Embed Size (px)

Citation preview

Java 와 Python 의 만남 :Jython 과 Sikuli

정보기술 시대에 유익한 파이썬 프로그래밍 – 제 10 강 (1)

동양미래대학교2015.7

최용 <[email protected]>

주제• Jython• SikuliX

Jython

• Java 플랫폼을 위한 Python• Java 바이트코드에 대한 정적 컴파일 및 동적 컴파일• Java 클래스를 Jython 에서 확장 가능• Java 의 설계에 부합하는 완전한 객체 지향 프로그래밍을 지원• Python 언어 및 그 레퍼런스 구현인 CPython 을 따름• Jython 2.7 은 CPython 2.7 에 대응

Python & Jython

Python 2.7• C

• Multi-platform

• .pyc 로 컴파일• C 확장• GIL

• Python 가비지 컬렉션 ( 참조 횟수 세기 )

Jython 2.7• Java(Java Native Runtime for C

사용 )

• Java 7 또는 8

• $py.class 파일로 컴파일• JFFI 를 사용하여 Java 또는 C 확장• 완전한 멀티 쓰레드• Java 가비지 컬렉션 또는 Python 2.7

과 같은 GC API 도 제공https://wiki.python.org/jython/WhyJython

Jython 2.7 – 추가적 지원• six – 단일 소스 코드로 Python 2 와 3 지원• socket/select/ssl, requests• pip, setuptools• 실행 가능한 zip 아카이브• 지역화된 플랫폼 , CJK 인코딩

https://speakerdeck.com/wolevertest/jim-baker-getting-to-jython-2-dot-7-and-beyond?slide=50

Jython 적용 사례 – WLST

• Oracle WebLogic: Java EE 표준 준수 웹 애플리케이션 서버• WLST(WebLogic Scripting Tool):WebLogic 서버 인스턴스와 도메인을 관리하는 명령행 스크립팅 인터페이스

from weblogic.management.security.authentication import GroupEditorMBeanuser = "my_user"print "Checking if "+user+ " is a Member of a group ... "atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")if atnr.isMember('Administrators',user,true) == 0: print user+ " is not member of Administrators"else: print user+ " is a member of Administrators"

Example 6-8 Verifying Whether a User is a Member of a Grouphttps://docs.oracle.com/cd/E29542_01/web.1111/e13715/config_wls.htm#WLSTG210

Jython 적용 사례 – HP Universal CMDB• CMDB(Configuration Management

Database, 구성관리 데이터베이스 )• 변경 , 릴리스 , 인시던트 , 서비스 요청 ,

문제점 , 구성 관리 프로세스에 사용할 구성 품목(CI) 에 대한 정보를 저장하는 데이터베이스• IT 프로세스들이 정확성 및 일관성을 유지할 수

있도록 단일 정보소스를 제공• HP Universal CMDB 는 Jython 을

이용하여 CI 를 갱신할 수 있도록 adapter를 제공http://dade.co.za/2015/06/17/example-script-to-update-a-ci-in-hp-ucmdb-using-python-and-suds/

Jython 적용 사례 – nGrinder

• 네이버의 성능 테스트 도구• http://deview.kr/2013/detail.nhn?topicSeq=2

Java 설치• http://

www.oracle.com/technetwork/java/javase/downloads/index.html

• JDK 다운로드 • 설치• 설치 확인

> java -version

Jython 다운로드와 설치• http://www.jython.org/downloads.html• Download Jython 2.7.0 – Installer

• java -jar jython-installer-2.7.0.jar• Installation type: standard

• 시스템 속성 – 고급 – 환경 변수• JYTHON_PATH=C:\jython2.7.0• PATH=%PATH%;%JYTHON_PATH%\bin

Jython 실행

대화식> jython

>>> print("Hello, Jython!")Hello, Jython!

스크립트hello.pyprint("Hello, Jython!")

> jython hello.pyHello, Jython!

Jython – list

>>> my_string_list = ['Hello', 'Jython', 'Lists']>>> multi_list = [1, 2, 'three', 4, 'five', 'six']>>> combo_list = [1, my_string_list, multi_list]>>> my_string_list[2]'Lists'>>> my_string_list_copy = my_string_list[:]>>> my_string_list_copy['Hello', 'Jython', 'Lists']>>> new_list = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]>>> new_list[0:10:2][2, 6, 10, 14, 18]>>> new_list[::2][2, 6, 10, 14, 18]

http://jythonbook-ko.readthedocs.org/en/latest/DataTypes.html

Jython – list

>>> ourList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> for elem in ourList[:5]:... print(elem)... 12345

>>> num_list = [1, 2, 3, 4]

>>> [num * 2 for num in num_list][2, 4, 6, 8]

Jython – tuple

>>> myTuple = ()

>>> myTuple2 = (1, 'two', 3, 'four')

>>> myTuple2(1, 'two', 3, 'four')

>>> myteam = 'Bears',

>>> myteam('Bears',)

Jython – dict

>>> mydict = {}>>> 'firstkey' in mydictFalse>>> mydict['firstkey'] = 'firstval'>>> mydict.values()['firstval']>>> mydict.keys()['firstkey']>>> len(mydict)1>>> mydict{'firstkey': 'firstval'}

Jython – set

>>> s1 = set(['jython', 'cpython'])>>> s1.add('ironpython')>>> s1set(['ironpython', 'jython', 'cpython'])>>> s2 = set(['jython', 'ironpython', 'pypy'])>>> s3 = s1.copy()>>> s3set(['ironpython', 'jython', 'cpython'])>>> s1.difference(s2)set(['cpython'])>>> s1.union(s2)set(['ironpython', 'jython', 'pypy', 'cpython'])>>> s1.symmetric_difference(s2)set(['pypy', 'cpython'])

Jython – java.lang.Math

>>> from java.lang import Math

>>> Math.max(4, 7)7L

>>> Math.pow(10,5)100000.0

>>> Math.round(8.75)9L

>>> Math.abs(-9.765)9.765

>>> from java.lang import System as javasystem

>>> javasystem.out.println("Hello")Hello

http://jythonbook-ko.readthedocs.org/en/latest/JythonAndJavaIntegration.html

Jython – java.swing

swing_test.pyfrom javax.swing import JButton, JFrame

frame = JFrame('Hello, Jython!', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size = (300, 300) )

def change_text(event): print 'Clicked!'

button = JButton('Click Me!', actionPerformed=change_text)frame.add(button)frame.visible = True

> jython swing_test.py

http://jythonbook-ko.readthedocs.org/en/latest/GUIApplications.html

Jython – HelloWorld.java

public class HelloWorld {

public void hello() {

System.out.println("Hello World!");

}

public void hello(String name) {

System.out.printf("Hello %s!", name);

}

}

> javac HelloWorld.java

> jython

>>> import HelloWorld

>>> h = HelloWorld()

>>> h.hello()

Hello World!

>>> h.hello("frank")

Hello frank!

http://jythonbook-ko.readthedocs.org/en/latest/ModulesPackages.html

Jython 참고자료• The Definitive Guide to Jython• 원문 http://www.jython.org/jythonbook/en/1.0/ • 번역 http://jythonbook-ko.readthedocs.org/

SikuliX

AutoHotKey vs. Selenium vs. SikuliX

• AutoHotKey• 스크립팅 언어를 통해 Windows 매크로 생성과 실행을 자동화• 핫 키 , 클립보드 접근 , 데이터 입력 양식 GUI 생성 , 정규 표현식• DLL 호출 , 윈도우 메시지

• Selenium• 브라우저 자동화 , 웹 애플리케이션 테스트• WebDriver: 브라우저 기반 테스트 , Java 로 작성 , 여러 환경에 배포• IDE: 버그 재현 , 파이어폭스 애드온

• Sikuli• 스크린 캡처를 이용• Jython 기반

SikuliX 다운로드와 설치 , 실행• http://www.sikulix.com/download.html

• SikuliX 1.1.0 설치 파일 다운로드 (sikulixsetup....jar)

• 설치에 사용할 폴더를 생성하고 , 설치 파일 (jar) 을 이동• CMD 에서 설치 실행> java -jar sikulixsetup-1.1.0-…-forsetup.jar

• 설치 옵션 지정하고 진행

• runsikulix.cmd 실행하여 SikuliX 시작

SikuliX 스크립트 – 웹브라우저 열기

SikuliX 스크립트 – 무료 Wi-Fi 사용

$ /Applications/SikuliX.app/run -r ~/Repos/sikuli-scripts/starbucks_wifi.sikuli

Sikuli 예제• http://www.sikuli.org/videos.html

• Sikuli for Mobile Testing https://youtu.be/01jFl8KrEMY

• 지뢰 찾기 게임 자동 플레이• 아이튠즈 볼륨 조절• 시티빌 게임 자동 플레이