Buttercoco

반응형

안녕하세요 코코넛입니다.

이번에는 형태소분석기 중에서도 뛰어난 능력을 자랑하는 은전한닢(MeCab)을

MacOS에 설치하는 방법을 메모할 겸 포스트하게 되었습니다.

https://bitbucket.org/eunjeon/mecab-ko/downloads/

우선 위의 링크의 최신 버전의 mecab-ko 을 다운로드 하여 설치합니다. (혹은 mecab-0.996-ko-0.9.2.tar.gz)

tar xzvf mecab-0.996-ko-0.9.2.tar.gz
cd mecab-0.996-ko-0.9.2
./configure
make
sudo make install
다음에는 mecab 사전을 설치해 줍니다.

위의 링크로 가서 최신 사전을 다운로드하여 설치합니다. (혹은 mecab-ko-dic-2.1.1-20180720.tar.gz)

tar xvfz mecab-ko-dic-2.1.1-20180720.tar.gz
cd mecab-ko-dic-2.1.1-20180720
./configure
make
sudo make install
여기까지 하면 우선 mecab이 MacOS에 설치가 된 것입니다.
그리고 mecab-python을 설치하는 과정을 설명하겠습니다.
아래의 코드대로 git를 통해 소스코드를 내려받아 파이썬 환경에서 혹은 virtualenv같은 가상 환경에서 설치를 해주면 됩니다.
git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git
cd mecab-python-0.996
python setup.py build
python setup.py install

그런데 python setup.py 을 통해 설치가 안될 때가 있습니다.

c++라이브러리 관련해서 문제가 있을 때 입니다. 이 경우에는
MACOSX_DEPLOYMENT_TARGET=10.9 python3 setup.py build
MACOSX_DEPLOYMENT_TARGET=10.9 python3 setup.py install
이 명령어를 통해 설치를 해주게 되면 우회 설치하여 설치가 완료됩니다.
간단히 테스트 해볼 수 있는 파이썬 코드도 올려봅니다.
import MeCab

m = MeCab.Tagger()
te = m.parse('영등포구청역에 있는 맛집 좀 알려주세요.')
print(te)
여기까지 mecab 설치에 관해서 보았습니다.
끝~!


'Mac' 카테고리의 다른 글

맥북 egpu 연동(nvidia)  (0) 2019.06.10
MacOS 에서 SIP(System Integrity Protection status) 해제하기  (0) 2018.04.13

반응형

안녕하세요 이번에는 제가 WebRTC 를 이용해 무언가?를 만드는 과정에서

peer 간에 네트워크 상에서 연결을 중계시켜주는 역할을 하는 turnserver를

구축하여 동작하는 것까지 포스팅을 해보았습니다.

우분투 환경 기준으로 작성을 하였습니다.

  1. coturn을 설치합니다. (sudo apt install coturn)
  2. /etc/turnserver.conf  파일을 수정하여 서버환경을 셋팅합니다.
  3. turnadmin으로 사용자 계정을 추가해 줍니다.
  4. coturn을 서버상에서 실행합니다. 끝~

turnserver.conf 는 제가 셋팅한 파일의 내용을 올리겠습니다. (네트워크 환경에 따라 조금씩 수정하셔야 합니다.)

아래의 설정을 하기 전에 포트포워딩 또는 방화벽을 통해 tcp 3478 & tcp 5349 포트를 허용해 주셔야 합니다.

# turnserver의 포트입니다.
listening-port=3478
# tls 포트입니다.
tls-listening-port=5349
# 외부IP를 넣어줍니다.(공유기 사용시 WAN상의 외부IP를 넣어줍니다.)
external-ip=123.123.126.123
# 로그를 뽑을 수 있으니 주석을 해제하였습니다.
verbose
# 이것도 주석해제
fingerprint
# 인증방식 주석해제
lt-cred-mech
# turnserver 도메인 네임입니다.
server-name=test.com
# 릴름은 원하는 네임명으로 해줍니다.
realm=testname

위의 /etc/turnserver.conf 를 수정한 뒤에 저장을 해줍니다.

그 다음에는 turnadmin 을 통해 turnserver를 사용할 수 있는 계정을 생성해 줍니다.

turnadmin -a -u 계정이름 -p 계정패스워드 -r 릴름명

위의 방식으로 turnadmin을 통해 계정을 추가하면 거의 끝!

마지막으로 turnserver 실행~

sudo service coturn start

turnserver에 유저가 접속하여 중계 상태가 되면

/var/log/turn_14545_2019-01-27.log 같은 형식을 log 파일의 용량이 늘어나면서 로그가 쌓이게 됩니다.

여기까지 우분투서버에 turn 서버 설치하기 였습니다.

끝~!


반응형

안녕하세요 2019년 새해 첫 포스팅은 이메일에 관한 글입니다.

주제는 파이썬으로 이메일 연동하기입니다.

이메일은 크게 smtp(발신) / pop, imap(수신) 프로토콜을 이용해서 전송 및 수신을 합니다.

저는 몇 일간의 삽질을 바탕으로 받고 보내는 함수를 만들었습니다.

이를 바탕으로 여러분도 응용하여 이메일을 손쉽게 제어하시기 바랍니다.

자, 이제 소스를 공개!

import smtplib
import imaplib
import poplib
import email
from email.mime.text import MIMEText
from datetime import datetime

# 보낼 곳과 연동할 이메일 계정
sendto = '받는사람@이메일.com'
user = '보내는사람@이메일.com'
password = "보내는사람 이메일 패스워드"

# 메일을 보내는 함수(smtp)
def send_mail(user, password, sendto, msg_body):

    # smtp server
    smtpsrv = "smtp.office365.com" # 발신 메일서버 주소
    smtpserver = smtplib.SMTP(smtpsrv, 587) # 발신 메일서버 포트

    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.login(user, password)

    msg = MIMEText(msg_body)
    msg['From'] = user
    msg['To'] = sendto
    msg['Subject'] = "Module Testing email Subject"

    smtpserver.sendmail(user, sendto, msg.as_string())
    print('done!')
    smtpserver.close()

# 메일을 받는 함수(imap4)
def check_mail_imap(user, password):

    # imap server
    imapsrv = "outlook.office365.com"
    imapserver = imaplib.IMAP4_SSL(imapsrv, "993")
    imapserver.login(user, password)
    imapserver.select('INBOX')
    res, unseen_data = imapserver.search(None, '(UNSEEN)')

    ids = unseen_data[0]  
    id_list = ids.split()  
    latest_email_id = id_list[-10:] 

    # 메일리스트를 받아서 내용을 파일로 저장하는 함수
    for each_mail in latest_email_id:
        # fetch the email body (RFC822) for the given ID
        result, data = imapserver.fetch(each_mail, "(RFC822)")

        msg = email.message_from_bytes(data[0][1])

        while msg.is_multipart():
            msg = msg.get_payload(0)

        content = msg.get_payload(decode=True)
        f = open("email_" + str(datetime.now()) + ".html", "wb")
        f.write(content)
        f.close()

    imapserver.close()
    imapserver.logout()

# 메일을 받는 함수(pop)
def check_mail_pop(user, password):

    # imap server
    popsrv = "pop.test.kr"
    popserver = poplib.POP3(popsrv, "110")
    popserver.user(user)
    popserver.pass_(password)
    numMsg = len(popserver.list()[1])

    for i in range(numMsg):

        raw_email = b"\n".join(popserver.retr(i + 1)[1])
        msg = email.message_from_bytes(raw_email)

        while msg.is_multipart():
            msg = msg.get_payload(0)

        content = msg.get_payload(decode=True)
        f = open("email_" + str(datetime.now()) + ".html", "wb")
        f.write(content)
        f.close()

    popserver.close()

if __name__ == '__main__':

    # imap형식 수신 함수
    check_mail_imap(user, password)

    # pop형식 수신 함수
    check_mail_pop(user, password)

    # 메일을 보내는 함수 smtp
    send_mail(user, password, sendto, "안녕하세요 코코넛이 이메일을 보냅니다.")

여기까지 저는 수신한 이메일을 파일로 저장하는 소스를 만들었는데요.

여러분 입맛대로 수정해서 쓰시면 됩니다.