http://hellonewworld.tistory.com/183

http://toors.tistory.com/entry/Android-low-level-touch-event-%EB%B6%84%EC%84%9D%ED%95%98%EA%B8%B0


MultiTouch 

http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt 

신고

'ㅍㄺㄻ > Android' 카테고리의 다른 글

안드로이드 멀티터치 이벤트 발생시키기  (0) 2015.09.30
Posted by 라나킴

Jaro–Winkler distance

문자열 s_1 과 s_2 사이의 Jaro distance d_j 의 정의는

d_j = \left\{

\begin{array}{l l}
  0 & \text{if }m = 0\\
  \frac{1}{3}\left(\frac{m}{|s_1|} + \frac{m}{|s_2|} + \frac{m-t}{m}\right) & \text{otherwise} \end{array} \right.

여기에서 :

  • m 은 두 문자열에서 공통적으로 존재하는 문자의 수
  • t 는 두 문자열에 공통적으로 존재하나, 인덱스가 다른 문자의 수의 반

Jaro–Winkler distance d_w 는:

d_w = d_j + (\ell p (1 - d_j))

여기서:

  • d_j s_1 와 s_2 사이의 jaro distance
  • \ell 는 두 문자열의 공통 접두사의 길이로 최대 4개까지만 인정
  • p 는 고정된 scaling factor 공통 접두사가 있을경우 점수를 상향조정하기위해 사용하는 상수이다. p 는 0.25를 넘으면 안된다(넘으면 거리값이 1을 초과할수도 있음) Winkler's work 에서 표준적인 값은 p = 0.1 이다

Example

주어진 문자열 s_1 MARTHA 와 s_2  MARHTA 가 있을 때:

  • m = 6
  • |s_1| = 6
  • |s_2| = 6
  • s_1 T/H 와 s_2 의 H/T가 공통적으로 존재하나 순서가 다른 문자이므로,   t = \frac{2}{2} = 1

따라서 Jaro score 는:

d_j = \frac{1}{3}\left(\frac{6}{6} + \frac{6}{6} + \frac{6-1}{6}\right) = 0.944

Jaro–Winkler score 를 계산하기 위해 p = 0.1로 설정하고, 공통 접두사는 MAR 이므로:

  • \ell = 3

따라서:

d_w = 0.944 + (3 * 0.1 (1 - 0.944)) = 0.961



출처 : http://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance

신고

'ㅍㄺㄻ' 카테고리의 다른 글

String distance(1) : Jaro–Winkler distance  (0) 2015.05.24
테스트  (0) 2015.01.24
Posted by 라나킴

이미지 편집은 귀찮아서 일단은 글로만..

1. AWS 콘솔 설정

1-1. Security Group 생성

Security Group메뉴에서 새로운 Secutity Group을 생성한다. Inbound rule에 새 규칙을 추가해주고, Type에서 MySQL을 선택하고, Source에서는 My IP 또는 Anywhere를 선택해준다.


1-2. EC2 Instance에 Security Group Assign

Instance 메뉴에 가서 Security Group을 적용시킬 인스턴스에 커서를 갖다대고 우클릭을 하면 메뉴가 뜨는데 Networking -> Change Security Group을 선택한다. 그러면 Change Security의 목록이 뜨는데(기본 Security Group하나만 체크되있을것임) 1번에서 생성한 Security Group에도 체크해주고 Assign한다.



2. 리눅스 설정(우분투 기준)

2-1. 로컬호스트 바인드 해제

MySQL을 설치할 때 기본설정으로 진행하면 접속이 로컬에 바인드 되어 원격으로는 접속할수 없게 된다. 따라서 바인드를 직접 해제 해주어야함.

/etc/mysql/my.cnf 을 vim등의 편집툴로 열고(루트권한 필요)

bind-address = 127.0.0.1 이 되어있는 줄을 지우거나 주석처리하고 저장한다.

편집이 끝나면 sudo sevice mysql restart으로 MySQL을 재시작한다.


2-2. 방화벽에 MySQL 포트(3306) 허용

sudo ufw allow 3306

netstat -ntlp | grep 3306으로 제대로 LISTEN중인지 확인해본다.


2-3. MySQL 에서 원격 접속 권한을 가진 계정 추가

mysql -u root -p mysql

grant all privileges on mydb.* to 'user'@'%' identified by 'password';

여기에서 mydb는 원격 사용자에게 허용될 데이터베이스를 뜻하고, 이어지는 .*는 해당 데이터베이스 내의 모든 테이블에 대한 모든 권한을 부여하는것을 뜻함.

user는 추가할 사용자의 id, password는 비밀번호로, 맘대로 입력하는 것이지 그대로 user와 password를 입력하란 뜻이 아님.

@뒤의 %는 모든 외부 주소에대해서 연결을 허용한다는 뜻으로, 특정 주소에서만 접속을 허용할거면 %대신 해장 ip주소를 입력하면 된다.

사용자 추가가 되었으면 즉시 적용을 위해 flush privileges;를 시켜준다.


신고

'ㅍㄺㄻ > AWS' 카테고리의 다른 글

EC2 인스턴스에서 MySQL 원격연결 설정하기  (0) 2015.02.05
Posted by 라나킴

본 포스트는 https://docs.python.org/3.4/library/multiprocessing.html를 참고하여 작성되었음.


1. Introduction

파이썬은 GIL을 사용해 멀트쓰레딩의 효율이 떨어진다. 따라서 이러한 제한을 우회하기 위해서 멀티프로세싱을 이용하기도 함.


2. 프로세스 생성

from multiprocessing import Process
import os

def f(name):
    print('%s\'s pid : %d' %(name, os.getpid()))

if __name__ == '__main__':
    print('producer\'s pid :', os.getpid())

    p1 = Process(target=f, args=("haru",))
    p2 = Process(target=f, args=("chiha",))

    p1.start()
    p2.start()

    p1.join()
    p2.join()

producer's pid : 16312

haru's pid : 13200

chiha's pid : 13692


당연하지만 Process(...)는 프로세스 오브젝트 선언, start()는 자식프로세스 시작.

join()의 경우 자식프로세스를 종료시키는 함수인데, 문제가 생겨 제대로 종료되지 않고 좀비가 될 때를 대비해 자식프로세스가 할 작업이 끝나면 join()을 써주는 습관을 들이는 것이 좋다.


3. 프로세스 사이의 데이터 교환

3-1. 프로세스의 독립성

기본적으로 별개의 프로세스는 각자 독립된 리소스를 가지고, 이를 공유하지 않는다. 다음 예제를 보자


import multiprocessing as mp

a = 71

def f():
    global a
    a = a+1
    print(a)

if __name__ == '__main__':
    f()
    mp.set_start_method('spawn') #default on windows
    p1 = mp.Process(target=f, args=())
    p2 = mp.Process(target=f, args=())

    p1.start()
    p2.start()

    p1.join()
    p2.join()

72

72

72


결과를 보면 자식프로세스끼리 a의 값을 공유하지 않는 것은 물론이고, 부모 프로세스에서 1을 더했던것도 반영되지 않은 초기의 상태로 상속이 되는것을 확인 할 수 있다.

이제 프로세서간에 데이터 교환이 가능하게 해주는 두 가지 방법을 살펴보자.


3-2. Queue

첫 번째 방법은 프로세스들이 공유하는 큐를 사용하는 것이다. 큐는 전형적인 FIFO방식이다.

from multiprocessing import Process, Queue

def f(q, name):
    q.put(name)
    print(name, 'joined. Now', q.qsize(), 'members.')

if __name__ == '__main__':
    q = Queue()
    p1 = Process(target=f, args=(q, 'Haruka'))
    p2 = Process(target=f, args=(q, 'Chihaya'))

    p1.start()
    p2.start()

    p1.join()
    p2.join()


Haruka joined. Now 1 members.

Chihaya joined. Now 2 members.


큐가 공유되는 것을 확인할 수 있다.


3-3. Pipe

두 번째 방법은 파이프를 이용하는 것으로, 파이프 오브젝트는 서로 연결된 한쌍의 오브젝트로 이루어지며, 한쪽에서 다른쪽으로 데이터를 보낼 수 있다.


from multiprocessing import Process, Pipe

def f(conn):
    print(conn.recv())
    conn.send(['Chihaya', 72, 'keut'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    parent_conn.send(['amami', 'haruka', 'boss'])
    p = Process(target=f, args=(child_conn,))
    p.start()
    print(parent_conn.recv())
    p.join()
['amami', 'haruka', 'boss']
['Chihaya', 72, 'keut']

부모 프로세스에서 parent_conn을 통해 child_conn으로 데이터를 보내고, 자식프로세스 에서도 반대로 데이터를 보내는 것을 확인할 수 있다.

신고

'ㅍㄺㄻ > python3.x' 카테고리의 다른 글

멀티프로세싱  (0) 2015.01.29
구글 대문페이지 html받아와서 저장하기  (0) 2015.01.28
파이썬 강좌 by 엑시노아  (0) 2015.01.28
Posted by 라나킴
#_*_ clding : cp949 _*_
from urllib.request import *
import sys

# html 소스를 파일로 저장
def savefile(contents, filename):
    f = open(filename, 'wb')
    f.write(contents)
    f.close()

# url로부터 html 소스를 받아와서 리턴
def gethtml(url):
    response = urlopen(url)
    return response.read()

# 메인함수
def main(argv):
    if len(argv) != 3:
        print('Usage: webread.py <url> <savefile>')
        return 1

    url = argv[1]
    filename = argv[2]
    html = gethtml(url)
    savefile(html, filename)
    return 0

## 이 모듈이 메인으로 사용되었을때 메인함수 실행
if __name__ == "__main__":
    sys.exit(main(sys.argv))



모 문서에 있는 예제를 보고 작성했는데, 파이썬 2.x 기준에다가 에러확인도 안하고 막올려놔서 버젼문젠줄 알고 삽질함. 짜증..

신고

'ㅍㄺㄻ > python3.x' 카테고리의 다른 글

멀티프로세싱  (0) 2015.01.29
구글 대문페이지 html받아와서 저장하기  (0) 2015.01.28
파이썬 강좌 by 엑시노아  (0) 2015.01.28
Posted by 라나킴

엑시노아님 블로그 : http://blog.eairship.kr/

  • 파이썬 강좌 11편. 예외 처리(Exception Handling) (14) 2013/12/29
  • 파이썬 강좌 10-2편. 파일 입출력(File I/O) (16) 2013/12/15
  • 파이썬 강좌 10-1편. 입출력(I/O) (10) 2013/12/13
  • 파이썬 강좌 9편. 모듈(Module) (17) 2013/11/10
  • 파이썬 강좌 8-4편. 연산자 오버로딩(Operator Overloading) (3) 2013/11/02
  • 파이썬 강좌 8-3편. 상속(Inheritance) (13) 2013/10/27
  • 파이썬 강좌 8-2편. 생성자와 소멸자(Constructor and Destructor) (9) 2013/10/27
  • 파이썬 강좌 8-1편. 클래스(Class) (13) 2013/10/20
  • 파이썬 강좌 7편. 함수(Function) (7) 2013/10/15
  • 파이썬 강좌 6편. 반복문(Loop) (23) 2013/10/10
  • 파이썬 강좌 5편. 조건문(Condition Statements) (10) 2013/09/24
  • 파이썬 강좌 4-6편. 부울(Bool) (2) 2013/09/12
  • 파이썬 강좌 4-5편. 사전(Dictionary) (24) 2013/09/08
  • 파이썬 강좌 4-4편. 튜플(Tuple) (6) 2013/09/07
  • 파이썬 강좌 4-3편. 리스트(List) (24) 2013/08/31
  • 파이썬 강좌 4-2편. 문자열(String) (30) 2013/08/31
  • 파이썬 강좌 4-1편. 수치 자료형(Numeric Data Type) (11) 2013/08/26
  • 파이썬 강좌 3편. 변수(Variable) (28) 2013/08/24
  • 파이썬 강좌 2편. 간단한 문법 살펴보기 (20) 2013/08/19
  • 파이썬 강좌 1편. 시작 (20) 2013/08/17

  • 신고

    'ㅍㄺㄻ > python3.x' 카테고리의 다른 글

    멀티프로세싱  (0) 2015.01.29
    구글 대문페이지 html받아와서 저장하기  (0) 2015.01.28
    파이썬 강좌 by 엑시노아  (0) 2015.01.28
    Posted by 라나킴

    테스트

    ㅍㄺㄻ 2015.01.24 17:24
    #include <stdio.h>
    
    int main() {
    	 printf("Hello world");
    	 return 0;
    }
    
    신고

    'ㅍㄺㄻ' 카테고리의 다른 글

    String distance(1) : Jaro–Winkler distance  (0) 2015.05.24
    테스트  (0) 2015.01.24
    Posted by 라나킴


    티스토리 툴바