이론




mkdir pythonDevice

sudo apt-get update

sudo apt-get install –y python-dev python-setuptools

git clone git://git.drogon.net/wiringPi

cd wiringPi/

 ./build

git clone https://github.com/Gadgetoid/WiringPi2-Python.git

cd WiringPi2-Python

sudo python3 setup.py install


LED확인을 위해 c코드로 확인

gcc led_test.c -o led_test -lwiringPi

./led_test 로 실행


gpio readall 입력시



ui파일 py파일로 변환하기

pyuic5 -x holjak.ui -o holjak.py -> pyuic5 [.ui위치].ui [저장위치].py



*** $(this) : 어떤 버튼을 클릭하든, 그 버튼의 주소값을 받아온다 ***

attr()요소는 선택한 선택자 : onBtn,offBtn의 value인 속성의 값을 가져옴


GPIO관련 메서드들


실습


led_test.c

ledtest.py

holjack.py

holjackGpio.py

respData.jsp

ledResp.jsp

StateNumber.java


'학원수업 > 파이썬' 카테고리의 다른 글

학원 50일차 복습(5/30)  (0) 2018.05.30
학원 49일차 복습(5/29)  (0) 2018.05.29
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16

이론




자바FX

***혹시 RUN하는데 targetException이 뜬다면,  각 모듈의 id와 UI멤버 변수들이 일치하는지 확인할 것 ***


단위작업 : 하나의 통합된 작업을 세부단위로 분해하여, 가장 작은 단위의 직업을 말한다.


javafx에서의 스레드 핸들링

1.Platform.runLater()( == handler.post)

2.Task(바인딩 개념 : Runnable 인터페이스를 상속)

call() -> 스레드를 핸들링한다(진짜 스레드가 해야하는 일)

successed() -> UI처리 -> Update()/UI값 바인딩

cancle() 

service()

3.Service


안드로이드에서 Thread가 safe한가?

safe하지 않다. 안드로이드 자체에서는, UI Thread를 기본 스레드로 핸들링 했을 때 과부하가 걸릴 수 있기 때문.

Thread UI Handler와 Thread 안에서 handler.post를 이용해 handler와 통신하는 방법이 있고, 두번째로 AsynchTask가 있다.


모델 == 안드로이드의 베이스어댑터



실습


stackpandemo0525.FXMLDocumentController.java


stackpaneex.FXMLDocumentController.java


stackpaneex.Phone.java


threaduidemo0525.FXMLDocumentController.java


threaduidemo0525.threaduidemo0525.java


threaduidemo0525.app.css


'학원수업 > 자바' 카테고리의 다른 글

학원 46일차 복습(5/23)  (0) 2018.05.23
학원 13일차 복습(3/30)  (0) 2018.03.30
학원 12일차 복습(3/29)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27

이론



http://gluonhq.com/products/mobile/javafxports/get/ 맨 밑에꺼 다운로드

unzip armv6hf-sdk-8.60.9.zip

http://docs.gluonhq.com/javafxports/#anchor-1 참고

> cd armv6hf-sdk/

> cd rt

> cd lib/

> sudo cp ext/jfxrt.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/

> sudo cp arm/* /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/

> sudo cp javafx.platform.properties /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/

> sudo cp javafx.properties /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/

> sudo cp jfxswt.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/


-라즈베리의 dio.jar 파일을 netbeans의 libraries에 넣어준다

자바FX 프로젝트 빌드후 dist안의 파일 복사후 라즈베리에서

> sudo java -jar testpi.jar 



java ME doc

https://wiki.openjdk.java.net/display/dio/Main  

-mercurial (Git같은 것,  소프트웨어 개발을 위한 크로스-플랫폼 분산 버전 관리 도구)

> sudo apt-get install mercurial

> hg clone http://hg.openjdk.java.net/dio/dev

> ls (dev 확인)

> cd dev

> export PI_TOOLS=/usr

> export JAVA_HOME=

> export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/

> make

> ls -l (build 확인)

> cd deviceio/lib/

>  sudo cp arm/libdio.so /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm/

>  sudo cp ext/dio.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/




 sudo nano /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/security/java.policy

permission jdk.dio.DeviceMgmtPermission "*:*", "open";

permission jdk.dio.gpio.GPIOPinPermission "*:*", "open,setdirection";

permission jdk.dio.gpio.GPIOPortPermission "*:*";

permission jdk.dio.i2cbus.I2CPermission "*:*";

permission jdk.dio.spi.SPIPermission "*:*";

permission jdk.dio.spibus.SPIPermission "*:*";

permission jdk.dio.uart.UARTPermission "*:*", "open";

추가하기


fritzing : 회로도 그리는 툴

http://fritzing.org/download/?donation=0 에서 windows 64bit 다운로드



실습


FXMLDocumentController.java


LED.java


'학원수업 > 자바' 카테고리의 다른 글

학원 47일차 복습(5/25)  (0) 2018.05.28
학원 13일차 복습(3/30)  (0) 2018.03.30
학원 12일차 복습(3/29)  (0) 2018.03.30
학원 11일차 복습(3/28)  (0) 2018.03.28
학원 10일차 복습(3/27)  (0) 2018.03.27

이론


thread 두가지 종류: kernel thread, user thread

kernal Thread : 임의의 메서드를 지정, 호환성 문제때문에 잘 안쓰임. _thread

user_Thread : threading 모듈을 상속, run 함수


python3 thread 지원 모듈 _thread, threading

_thread는 권장사항은 아니나 이전 모듈과의 호환성을 위해서 유지

_thread.start_new_thread(function,args[,kwargs])


사용사례 PyQt에서 정의하는 클래스가 이미 class Form(QtWidgets.QDialog): 처럼 다른 클래스를 상속 받았다면, 스레드를 상속받지 않고 바로 사용할 수 있는 형태

자바에서 Runnable 인터페이스를 구현한 클래스로 인자로 전달하여 스레드를 생성해서 사용하는 것과 같음!


target지정하면 내부적으로 run()메서드가 호출되어서 target메서드를 호출!



실습


ex1_thread.py

ex1_threading.py

ex2_threading_target.py

ex2_urlopen.py

exam_thread.py

exam_threadClass.py

exam_urlGet_Thread.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 49일차 복습(5/29)  (0) 2018.05.29
학원 48일차 복습(5/28)  (0) 2018.05.28
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 42일차 복습(5/15)  (0) 2018.05.15

이론




__name__은 파이썬에서 제공하는 변수

python3 calModule.py : 스스로 독립적으로 실행

__main__ 출력


다른 영역에서 import되었을 때는 모듈이름을 출력한다

python3

>>>import calModule

calModule 출력


calModClass의 CalClass() 생성은

if __name__ == "__main__": 때문에 실행이 안되기때문에

대화형 인터프리터나 다른 파일에서 이모듈을 불러서 사용할 때는

__name__ == "__main__"이 거짓이 되어 if문 다음 문장들이 수행되지 않는다.


case1 : import calModule

case2 : from calModule import cal_upper

case3 : from calModule import *

가장좋은 방식은 case1

import calModule as cal



[PyQt] https://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.6/

두번째 항목 다운로드 후 설치


다른패키지 모듈불러오기

sys.path.append(모듈을 저장한 디렉터리) 사용하기



객체의 이벤트에서 connect함수를 호출하고 인자값으로 호출될 함수를 작성한다.




실습


ex3_private.py

Inheritance.py

calModule.py

calUse.py

calModClass.py

calClassUse.py

importDemo.py

calExtendsUseDemo.py

install.sh

ex0_firstPyQT.py

ex0_firstClassPyQT.py

exam1_btn_changeColor.py

ex1_helloUI.py

changeWidgetColor.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 42일차 복습(5/15)  (0) 2018.05.15
학원 41일차 복습(5/14)  (0) 2018.05.14

이론




파일 객체 = open(파일 이름, 파일 열기 모드)

r   읽기모드 - 파일을 읽기만 할 때 사용

w   쓰기모드 - 파일에 내용을 쓸 때 사용

a   추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용



def 함수명(매개변수):

    <수행할 문장1>

    <수행할 문장2>

    ...


try:

    ...

except [발생 오류[as 오류 메시지 변수]]:

    ...


바이너리를 복사하기 위해서는 반드시 버퍼가 필요 **


***인스턴스와 객체의 차이***

a = Cookie()

인스턴스라는 말은 특정 객체(a)가 어떤 클래스(Cookie)의 객체인지를 관계 위주로 설명할 때 사용된다.

즉, "a는 인스턴스" 보다는 "a는 객체"라는 표현이 어울리며, "a는 Cookie의 객체" 보다는 "a는 Cookie의 인스턴스"라는 표현이 훨씬 잘 어울린다.


***self란?***

간단히 말하면, 이 함수를 부르는 객체가 해당 클래스의 인스턴스인지 확인해주기 위한 장치이다.

하지만 단순히 확인하는 것에서 나아가 self를 이용하여 객체 내의 정보를 저장하거나 불러올수 있다.


__init__은 생성자

클래스변수 static

_ 언더바 하나는 protected 변수라고 함.

__ 언더바 두개는 private 변수.



실습


ex6_while.py

ex7_input.py

ex8_input.py

ex9_math_random.py

exam1_py

exam2_Holjak.py

exam3_gugu.py

ex1_def01.py

ex3_try_catch.py

exam1_def.py

exam_Def_Holjak.py

ex1_file.py

ex2_file.py

ex3_file.py

ex1.filecopy.py

ex1_def_filecopy.py

ex2_rename.py

ex2_rename_getsize.py

ex3_TestClass.py

ex3_class2.py

ex3_class3.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 42일차 복습(5/15)  (0) 2018.05.15
학원 41일차 복습(5/14)  (0) 2018.05.14

이론



문자열을 만드는 총 4가지 방법

1. "문자열"

2. '문자열'

3. """문자열"""

4. '''문자열'''


문자열과 튜플은 불변적인 요소이기 때문에 변경이 불가능하다.

문자열인 경우는 슬라이싱을 이용해서 변경이 가능하다.


문자열 포맷코드

문자열 포매팅 예제에서는 대입시켜 넣는 자료형으로 정수와 문자열을 사용했으나

이외에도 다양한 것들을 대입시킬수 있다. 문자열 포맷코드로는 다음과 같은 것들이 있다.

코드 설명

%s  문자열(String)

%c  문자 1개(Character)

%d  정수(Integer)

%f  부동소수(Floating-point)

%o  8진수

%x  16진수

%%  Literal % (문자 % 자체)



자료형은 모두 객체이다.***


리스트: 값의 생성,삭제,수정이 가능

튜플: 값을 바꿀 수 없음

불(bool) 자료형이란 참(Ture)과 거짓(False)을 나타내는 자료형이다

문자열 ""->False

리스트 /튜플 []() ->False

딕셔너리 {} ->False

숫자형 0,None ->False


nano 편집기에서

alt+p : 스페이스 view

ctrl + 6 : 블록지정

alt + 6 :복사

ctrl + u :붙여넣기


실습


ex1_string.py

ex2_string.py

ex3_string.py

ex4_string.py

ex1_tuple.py

ex2_dic.py

ex3_set.py

ex4_if.py

ex5_time.py

exam_ifwhile.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 41일차 복습(5/14)  (0) 2018.05.14

이론



[소프트웨어]

1.키트에 들어있는 SD카드를, USB 포트에 꽂고

2. https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html 에 들어가서 SD Card Formatter 설치

3.라즈비안 다운 https://www.raspberrypi.org/downloads/raspbian/ 로 이동

4. https://sourceforge.net/projects/win32diskimager/?source=directory 다운

5. https://etcher.io/ 로 이동해서 다운(포맷+IMAGE설치 한번에 해줌)


[하드웨어]

전력(5V)과 접지(GND) 연결



전력 : 전원연결. (+)와 같다.

접지(GND) : (-)와 같다. 0V


충전기 연결

PC케이블 연결




라즈베리모양->Raspberry Pi Configuration클릭 후 Interface 설정




라즈베리에서 터미널 실행

sudo systemctl start ssh ->ssh을 실행하라

비밀번호 설정

터미널에서 ifconfig로 자신의 inet알아낸 후 putty로 접속

sudo apt-get -y install vsftpd

sudo vi /etc/vsftpd.conf 들어가서

:ser number로 행번호 띄운후,

31행 주석제거 (write_enable=YES)

122,123,125행 주석 제거(chroot_locar_user=YES, chroot_list_enable=YES, chroot_list_file=/etc/vsftpd.chroot_list)

sudo vi /etc/vsftpd.chroot_list 에서 내 아이디 추가해준후 :wq(아이디 한줄만 넣어주면 됨)

sudo systemctl restart vsftpd 

**vim에서 백스페이스, 방향키가 이상하면  sudo apt-get install vim로 vim 새롭게 인스톨 할것**

FileZilla(ftp)로 연결!


putty를 이용해 라즈베리파이에 파이썬 작업폴더 생성

mkdir mystudy

cd mystudy/

mkdir pythonBasic

cd pythonBasic/

mkdir day01

cd day01/





1.POWER

-전원. 라즈베리를 구동시킨다. +극과 같음.


2.GND

-접지. 0V 전위를 가지고, 감전 보호에 사용됨. -극과 같음.


3. GPIO?

- 입출력포트

- General Purpose Input/Output

- 일반적인 입출력을 위한 포트

- 라즈베리 파이나 아두이노 같은 보드(임베디드 시스템)에서 외부 하드웨어 연결을 위해 사용


4.UART 통신(비동기식 시리얼 통신)

시리얼 통신을 담당하는 회로

비동기는 1:1통신만 가능


5.SPI 통신(동기식 시리얼 통신)

장점

클럭(CLK) 라인을 이용해 데이터 라인을 동기화 하므로, 하드웨어 구조가 간단하고 1:N 통신이 가능하다

송신용 핀 / 수신용 핀이 분리되어 있음(동시 송수신) 연결을 이용해 10만 비트의 전송 속도를 지원하기도 함

단점

통신에 필요한 핀이 많아지는 단점이 있음.(하나의 장치를 연결하는데 4개의 라인(CLK,MOSI,MISO,SS)가 필요하고, 추가로 장치를 더할 떄마다 라인이 하나씩 추가됨.

N:N 통신은 불가


6.I2C 통신(동기식 시리얼 통신)

SPI통신의 단점을 보완가능.

UART통신처럼 단 2라인만 사용하고, 1008개의 슬레이브 장치를 지원

N:N 통신 가능(단 마스터 장치끼리 통신은 불가)

하드웨어 요구사항 SPI < I2C < UART , 통신속도 SPI와 UART의 중간쯤 됨


[파이썬 환경설정]

파이참 Community https://www.jetbrains.com/pycharm/download/

#인덱싱:: 원하는 부분의 글자를 출력!

#슬라이싱(숫자로 지정한 부분앞까지 출력)


실습


ex2_string.py


'학원수업 > 파이썬' 카테고리의 다른 글

학원 48일차 복습(5/28)  (0) 2018.05.28
학원 45일차 복습(5/18)  (0) 2018.05.23
학원 44일차 복습(5/17)  (0) 2018.05.17
학원 43일차 복습(5/16)  (0) 2018.05.16
학원 42일차 복습(5/15)  (0) 2018.05.15

이론



mysql에서 화면지우기 : system clear;


[root path변경]

1.su - ->루트로 접속

2.mysql ->mysql로 접속

3.set password for 'root'@'localhost'=PASSWORD('12'); ->root의 비번을 12로 설정

4.exit ->root종료


[사용할 db생성]

mysql -u root -p12; 

create database xedb; 

create user 'mykosta'@'localhost' identified by '12'; 

grant all privileges on *.* to 'mykosta'@'localhost'; -

create database mykostadb; 

grant all privileges on mykostadb.* to 'mykosta'@'localhost'; 


[로그인되었으면, 해당 사용자로 접속]

mysql -u mykosta -p mykostadb ->mykosta라는 유저에서, mykostadb라는 database로 접속


[테이블 생성]

create table member

(

    id bigint(20) unsigned not null auto_increment,

    name varchar(40) not null,

    phone_num varchar(30) not null,

    created datetime,

    user_ip varchar(32) not null,

    primary key(id)

)


[권한 초기화]

flush privileges; ->MySQL에 변경사항을 적용하기 위해서 사용하는 명령어




[PHP와 MySQLi 연결하기]


1. cd var/www로 디렉 이동 -> root@kosta:/var/www# chown -R kosta.kosta html


2. cd html로 이동 -> root@kosta:/var/www/html# vi conn.php 작성


3. root@kosta:/var/www/html# vi testConn.php 작성


*** ==(equal) 와 ===(identical)의 차이 ***

=== 는 좀더 엄격한 '같음'을 의미한다 ::



[쉘 스크립트]


1.환경변수 확인

env


2.홈디렉터리 확인

kosta@kosta:~$ echo $HOME


3.chmod 755 name.sh로 권한 설정 해주고

sh name.sh 또는 ./name.sh로 실행


프롬프트

PS1 – Primary Prompt String(default value : \s-\v$)

PS2 – Secondary Prompt String(default value : >)

PS3 – select command를 위한 prompt

PS4 – shell script 를 디버깅 모드에서 실행시 사용되는 prompt



실습


conn.php

testConn.php

member_add.php

var1.sh

paravar.sh

if1.sh

if2.sh

if3.sh

if4.sh

forin1.sh

forin2.sh

case1.sh

case2.sh

while.sh

while1.sh

while2.sh

while3.sh

whileHap.sh

numcalc.sh

examGugu.sh

select.sh


'학원수업 > 리눅스' 카테고리의 다른 글

학원 39일차 복습(5/10)  (0) 2018.05.10
학원 38일차 복습(5/9)  (0) 2018.05.09
학원 37일차 복습(5/8)  (0) 2018.05.08

이론



리눅스 기본명령어 ,시스템 명령어(사용자,그룹)

클라이언트에 vsftpd 생성

sudo apt-get -y install vsftpd


sudo vi /etc/vsftpd.conf 들어가서

:ser number로 행번호 띄운후,


31행 주석제거 (write_enable=YES)


122,123,125행 주석 제거(chroot_locar_user=YES, chroot_list_enable=YES, chroot_list_file=/etc/vsftpd.chroot_list)

sudo vi /etc/vsftpd.chroot_list 에서 내 아이디 추가해준후 :wq(아이디 한줄만 넣어주면 됨)

sudo systemctl restart vsftpd 


editplus사용

FTP->FTP설정

코드입력후 FTP->원격저장 

표시-> 원하는 경로 저장


[zip(압축해라) -er(하위폴더까지전부) work.zip(work라는 이름으로) testdir/(testdir라는 폴더를)]


[tar : 여러파일을 한 파일로 묶는다(archive). 확장자는 .tar]

▶사용법

$ tar -cvzf [압축된 파일 이름] [압축할 파일이나 폴더명]


▶해당 경로의 모든 파일을 xxx.tar.gz로 압축

$ tar -cvzf xxx.tar.gz *


▶권한(permission)이 없는 파일 패스하며, 해당 경로의 모든 파일을 xxx.tar.gz로 압축

$ tar -cvzf xxx.tar.gz * --ignore-failed-read


▶옵션값

x : 묶음을 해제

c : 파일을 묶음

v : 묶음/해제 과정을 화면에 표시

z : gunzip을 사용

f : 파일 이름을 지정

p : 권한(permission)을 원본과 동일하게 유지


unzip: 압축풀기


***우리가 알고있어야 하는 사용자추가 정보들***

사용자추가

/etc/passwd ->사용자정보

/etc/group ->groupID,추가그룹

/etc/shadow ->비밀번호


***중요

group -> 소유권, 소유그룹

사용 -> 허가권 


chmod [옵션][퍼미션][파일]


하드링크

생성 명령어 : ln 링크대상파일이름 링크파일이름

원본파일 자체를 복사. 원본파일 삭제되어도 에러 안남.(잘 안쓰이지만, 백업데이터 저장할때와 같은 경우에 사용)

touch aa.txt

ln aa.txt aainput -> 하드링크!

ls > aainput

cat aa.txt


심볼릭링크

생성명령어 : ln -s 링크대상파일이름 링크파일이름

하나의 링크가 바로가기 키. 원본파일 삭제되면 에러.(노드가 하나)

ln -s /home/kosta/dir/linux.sh mylinux


[웹서버 설치와 운영]


한줄씩 입력하면서 설치하기...

1.sudo apt-get update

2.sudo apt-get install apache2

3.sudo apt-get install mysql-server mysql-client

4.sudo apt-get install php libapache2-mod-php php-xml php-gd php-mysql

<<아파치 리스타트>>

6.sudo /etc/init.d/apache2 restart

7.sudo /etc/init.d/mysql restart

8.sudo apt-get install phpmyadmin **나 설치 잘못됬을수도있음(phpmyadmin이 아이디!)

9.언어지원 설정  sudo apt-get install php-mbstring php-gettext

10. ls /etc/phpmyadmin/apache.conf

11.root@kosta:/home/kosta# cd /etc/apache2

root@kosta:/etc/apache2# vi apache2.conf 에 들어가서

맨 아랫줄에 Include /etc/phpmyadmin/apache.conf 추가

12.내 inet ip번호/phpmyadmin 으로 접속


실습



LinuxShell.java

test.php


'학원수업 > 리눅스' 카테고리의 다른 글

학원 40일차 복습(5/11)  (0) 2018.05.11
학원 38일차 복습(5/9)  (0) 2018.05.09
학원 37일차 복습(5/8)  (0) 2018.05.08

+ Recent posts