Ubuntu 사용자로서 Rhythmbox를 기본 뮤직 플레이어로 사용하는데,

Lyrics Plugin에서 K-Pop가사를 지원하는 소스가 없어, 알송 가사 서비스를 가져오도록 추가함.


1. Python requests를 이용 ALSong Lyrics 추출 (Artist, Title)

https://item4.github.io/2018-10-20/Fetch-Alsong-Lyrics-with-Python/


2. lLyrics에서 Artist, Title의 한글 문자열이 Hangul Jamo (U+1100 ~ U+11FF)방식으로 표현되어

이를 Hangul Syllables (U+AC00 ~ U+D7AF)로 전환 후 UTF-8 인코딩하도록 추가 작업

https://pypi.org/project/jamotools/

추가수정 : 유니코드 한글이 왜 자모로 변환되었는지 찾았습니다. lLyrics에서 NFKD로 정규화를 해서 Hangul Jamo로 전환되었던거네요.

lLyrics.py:492:        artist = unicodedata.normalize('NFKD', artist)

lLyrics.py:494:        title = unicodedata.normalize('NFKD', title)

jamotools 대신 unicodedata를 쓰는 것으로 바꿨습니다.

ALSongLyricsParser.py:52:            title = unicodedata.normalize("NFC", self.title),

ALSongLyricsParser.py:53:            artist = unicodedata.normalize("NFC", self.artist),


작업한 소스 저장소 :

https://github.com/jang574/lLyrics



unicodedata에서 유니코드 정규화를 지원함.

#!/usr/bin/python3

import unicodedata


text1 = b'\xe1\x84\x80\xe1\x85\xb5\xe1\x86\xaf\xe1\x84\x80\xe1\x85\xa1\xe1\x84\x8b\xe1\x85\xa6'

text2 = b'\xea\xb8\xb8\xea\xb0\x80\xec\x97\x90'


print("text1 : {}".format(text1.decode('utf-8')))

print("text2 : {}".format(text2.decode('utf-8')))


print("------ text1 -------")

for c in text1.decode('utf-8'):

    print( unicodedata.name(c))


print("------ text2 -------")

for c in text2.decode('utf-8'):

    print( unicodedata.name(c))


print("------ Normalize text1 using NFC -------")

for c in unicodedata.normalize("NFC", text1.decode('utf-8')):

    print( unicodedata.name(c))


print("------ Normalize text2 using NFD -------")

for c in unicodedata.normalize("NFD", text2.decode('utf-8')):

    print( unicodedata.name(c))

출력

text1 : 길가에

text2 : 길가에

------ text1 -------

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG I

HANGUL JONGSEONG RIEUL

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG A

HANGUL CHOSEONG IEUNG

HANGUL JUNGSEONG E

------ text2 -------

HANGUL SYLLABLE GIL

HANGUL SYLLABLE GA

HANGUL SYLLABLE E

------ Normalize text1 using NFC -------

HANGUL SYLLABLE GIL

HANGUL SYLLABLE GA

HANGUL SYLLABLE E

------ Normalize text2 using NFD -------

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG I

HANGUL JONGSEONG RIEUL

HANGUL CHOSEONG KIYEOK

HANGUL JUNGSEONG A

HANGUL CHOSEONG IEUNG

HANGUL JUNGSEONG E


ARM 입장에서는 x86,PowerPC,MIPS 등의 ISA보다 RISC-V를 위협적인 경쟁 ISA로 간주했는지

https://riscv-basics.com/ 사이트를 만들었다가 닫았다.

아카이브된 사이트 https://web.archive.org/web/20180708231736/https://riscv-basics.com/


이 때문에 오히려 anti-ARM 사이트(https://www.arm-basics.com/)가 만들어지고,

RISC-V를 광고해주는 상황이 되었다.


SiFive에서 28nm 공정의 RISC-V SoC와 Embedded Linux를 돌릴수 있는 Developer Board가 나온 상태이고,

https://www.sifive.com/products/hifive-unleashed/


쟁쟁한 회사들이 맴버로 지원하고 있으니, 위협적으로 느꼈을지도 모르겠다.

https://riscv.org/members-at-a-glance/


SiFive의 한국인 Co-Founder & CTO를 보면서 (https://www.sifive.com/about/team/)

예전의 "한국형 CPU 코어 상용화 사업"기사와 RISC-V로 대동단결해야 한다는 클리앙 댓글이 생각나 마음이 씁쓸하다.

https://www.clien.net/service/board/news/8983618

http://www.etnews.com/20170814000461



Ubuntu 14.04 LTS 64bit 기준으로 정리.

https://www.tensorflow.org/install/install_linux


위 링크에 virtualenv를 이용하여 설치하는 내용도 정리되어 있다.

하지만, 실제 따라해 보니 아래와 같이 설치할 수 있는 패키지가 없다고 한다.

$ pip install --upgrade tensorflow

Downloading/unpacking tensorflow

  Could not find any downloads that satisfy the requirement tensorflow

Cleaning up...

No distributions at all found for tensorflow

Storing debug log for failure in /home/oooo/.pip/pip.log


~/.pip/pip.log 를 보면 현재 리눅스 머신에 설치되어 있는  python과 호환이 안된다고 모두 건너뛴다.

Downloading/unpacking tensorflow

  Getting page https://pypi.python.org/simple/tensorflow/

  URLs to search for versions for tensorflow:

  * https://pypi.python.org/simple/tensorflow/

  Analyzing links from page https://pypi.python.org/simple/tensorflow/

    Skipping https://pypi.python.org/packages/00/16/c8ba385fc6511ca362f32326cd1d6a99bbbabbc8341607ff70c290e0be7b/tensorflow-0.12.1-cp34-cp34m-manylinux1_x86_64.whl#md5=981c0a406eb9865423b11c03b489040d (from https://pypi.python.org/simple/tensorflow/) because it is not compatible with this Python

...

    Skipping https://pypi.python.org/packages/7e/7c/f398393beab1647be0a5e6974b8a34e4ea2d3cb7bd9e38bd43a657ed27d1/tensorflow-1.0.1-cp27-cp27mu-manylinux1_x86_64.whl#md5=5c88e656fcd34cd89d4cf48d3ec7dd67 (from https://pypi.python.org/simple/tensorflow/) because it is not compatible with this Python
...

python은 Ubuntu 14.04에서 배포되는 버전이다.
$ python --version
Python 2.7.6

$ dpkg -l python2.7
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  python2.7      2.7.6-8ubunt amd64        Interactive high-level object-ori

$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> print(sysconfig.get_config_vars('CONFIG_ARGS'))
["'--enable-shared' '--prefix=/usr' '--enable-ipv6' '--enable-unicode=ucs4' '--with-dbmliborder=bdb:gdbm' '--with-system-expat' '--with-system-ffi' '--with-fpectl' 'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security ' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro'"]
>>> 
>>> import pip
>>> print(pip.pep425tags.get_supported())
[('cp27', 'cp27mu', 'manylinux1_x86_64'), ('cp27', 'cp27mu', 'linux_x86_64'), ('cp27', 'none', 'manylinux1_x86_64'), ('cp27', 'none', 'linux_x86_64'), ('py2', 'none', 'manylinux1_x86_64'), ('py2', 'none', 'linux_x86_64'), ('cp27', 'none', 'any'), ('cp2', 'none', 'any'), ('py27', 'none', 'any'), ('py2', 'none', 'any'), ('py26', 'none', 'any'), ('py25', 'none', 'any'), ('py24', 'none', 'any'), ('py23', 'none', 'any'), ('py22', 'none', 'any'), ('py21', 'none', 'any'), ('py20', 'none', 'any')]

위 정보에 따르면, 현재 기준으로 https://pypi.python.org/pypi/tensorflow
에서 tensorflow-1.2.0rc1-cp27-cp27mu-manylinux1_x86_64.whl
설치가능 해야 하는데 안됨.

구글링하여, cp27-none 으로 설치.
$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.2.0rc1-cp27-none-linux_x86_64.whl
$ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.0rc1-cp27-none-linux_x86_64.whl


+ Recent posts