Flutter로 인증을 구현하려고 하는데,

각종 Social Service를 통해 가입을 할 수 있도록 하려면 왠지 힘들것 같다.


그런데, Firebase를 이용하면

이 부분을 손쉽게 할 수 있다고 해서 한 번 알아보고자 한다.




1. Flutter Project 생성


   - 기본 환경 구축은 아래 링크를 통해서 진행했다고 가정하고...

      - Flutter 설치 : https://www.whatwant.com/entry/Flutter-Install-Flutter-설치하기-Windows

      - Flutter with VSCode : https://www.whatwant.com/entry/Flutter-with-Visual-Studio-CodeVSCode

   - Flutter로 로그인 페이지를 꾸밀 프로젝트를 하나 생성하자.



   - 이름 정해주고, 위치 잡아주면 열심히 기본 프로젝트 생성된다.



   - 일단 여기까지만 해놓고... Firebase로 넘어가자.





2. Firebase Project 생성


   - 가입/로그인은... Google 계정으로 가뿐하게 하시면 되고...



   - 시작하고 프로젝트 만들기에 들어가보자.



   - 이름은 마음에 드는 것으로...



   - 당장은 애널리틱스에 대해서 고려하지 않을거지만, 왠지 안하면 섭섭하니...



   - 아직 뭔지 모르겠지만... 뭐 그냥 해보자.



   - 이제 마무리다~ 고고!! 고고!!



   - 그러면, 예쁜 페이지가 짠~!!








3. Android App에 Firebase 추가


   - Flutter와 Firebase 사이에 연결고리를 추가하는 과정이다.


   - 위 홈페이지 프로젝트 이름 밑에 동그란 아이콘 3개가 보일 것이다. 가운데에 있는 안드로이드를 클릭하자



   - 응?! 패키지 이름 정해준 적 없는데?!

   - command-line으로 Flutter 프로젝트를 생성했으면 명시했겠지만, VSCode에서는 그냥 이름으로 생성했는데...

   - 찾아보자.



   - 아까 생성한 Project에서 android - app - src - main 경로에 있는 "AndroidManifest,xml" 파일을 보면 package 이름이 보인다.



   - 패키지 이름은 그렇게 넣어주면 되고... 닉네임은 그냥 마음대로 넣으면 되고... 어?! 인증서?!

   - 물음표에 마우스 올리면 위와 같이 설명이 나온다. 참조할 페이지 클릭!



   - 개발용으로 쓰이는 key값은 이미 있기에 그걸로 불러오면 된다.



   - 위와 같이 사용자 계정 폴더에 있는 .android 디렉토리 밑에 보면 위와 같이 파일들이 주르륵 있는 것이 보일 것이다.

   - PowerShell 실행해서 위의 홈페이지에 있는 명령어를 실행해야 하는데...



   - 아뿔사~ JDK가 없다. ㅋㅋㅋ


   - OpenJDK 접속

      - https://github.com/ojdkbuild/ojdkbuild



   - 일단 LTS 버전 중에서 11 버전의 msi 다운로드 받아서 설치했다.

   - PowerShell 재시작 하고...



   - 잘된다 !!!


> keytool -list -v -alias androiddebugkey -keystore C:\Users\xxx\.android\debug.keystore



   - 비밀번호를 갑자기 물어본다고 당황하지 말고... 위의 홈페이지에 친절하게 쓰여져있다. "android"



   - 우리에게 필요한 값은? SHA1 값 !!!



   - 드디어 넣을 것 다 넣었다... 앱 등록 !!!



   - json 파일 다운로드 받아서 쩌~기 위치에 넣으란다.


   - android - app 밑에다가 넣어주면 된다.



   - 실제로 잘 들어가 있는 모습을 볼 수 있다.



   - 이제 다음~



   - 위 화면에서 녹색으로 보이는 부분을 복사해서 build.gradle 파일에 붙여넣기 하면 된다.

   - 주의할 점은 android 경로 바로 밑에 있는 build.gradle 파일의 dependencies 부분에 넣어줘야 한다.



   - 밑에 있는 것들도 마찬가지로 진행하면 된다.

   - 주의할 점은 밑에 있는 것들은 android - app 밑에 있는 build.gradle에 반영해야 된다는 점!!!



   - 첫번째 녹색 라인은 이미 반영되어 있으니, 2/3번째 녹색 라인만 위치에 맞게 넣어주면 된다.



   - 알맞게~



   - Sync는 뭐 넘어가고 이제 다음 단계로 가자!



   - 어?! 확인을 해야 한단다.


   - 놀고 있는 폰을 연결하고... (당연히 개발자 모드 열어서 USB 디버그 모드 설정해서)



   - flutter: select device 열어서



   - 연결한 스마트폰 설정하고



   - 왼쪽 4번째 아이콘 클릭해서... Run and Debug 눌러주면 된다.



   - false 뜬다고 당황하지 말고... 좀 기다리면 된다.



   - 그러면 위와 같이 수고했다는 메시지를 볼 수 있다.




에고 에고... 힘들었다.



반응형


기본적인 Flutter 개발환경은 아래 글을 통해 설치해보았다.


  - https://www.whatwant.com/entry/Flutter-Install-Flutter-설치하기-Windows




하지만, 요즘 유행인 Visual Studio Code를 이용하고픈 사람들도 있을 것이다.


이런 요구사항이 높았는지... Flutter에서도 공식적으로 가이드를 제공해주고 있다.


  - https://flutter.dev/docs/development/tools/vs-code




그래서 직접 한 번 해보았다.



1. Visual Studio Code 설치


  - https://code.visualstudio.com/







2. Install Extension


  - Flutter Extension을 설치해주면 된다.

    - 유사품에 주의하고 'Dart Code'에서 제공해주는 것을 install 하면 된다.

    - 자동으로 Dart Extension도 같이(몰래) 설치된다.



  - Restart VSCode




3. Check


  - "Ctrl+Shift+P" 또는 "View > Command Palette..." 실행해서 'flutter'를 타이핑 해보자

  - "Flutter: Run Flutter Doctor" 고르면 된다.



  - 그런데, 아래와 같이 2번째 항목에서 [!] 발견 !!!





4. Accept Android Licenses


  - 위 메시지에서 보이는바와 같이 친절하게 해결 방법도 알려 준다.

  - "View -> Terminal" 또는 "Ctrl+`", 아니면 그냥 TERMINAL 탭 선택

  - "> flutter doctor --android-licenses" 실행

    - 무조건 y 엔터






5. New Project


  - 이제 아래와 같이 Flutter Project를 생성하면 된다.



반응형


Flutter 개발환경을 만들어봤었다.

   - https://www.whatwant.com/entry/Flutter-Install-Flutter-설치하기-Windows


그런데, 개발환경 中 에뮬레이터 설치에서 어려움을 겪었었다.

필자의 PC가 AMD CPU를 사용하다보니... AMD에서도 설치가 가능하다고는 하던데... 잘 안되었다.


그래서 에뮬레이터는 포기하고, 필자의 노트8을 연결해서 테스트를 하면서 아쉬움이 있었는데,

정작 에뮬레이터를 설치해도 느려서 사용하기에 불편하다는 글을 보고는 기분이 살짝 좋아졌다(^).



Flutter 특성상 코딩을 하면서 즉시 결과를 확인할 수가 있다.


핫 리로드(Hot Reload)라는 기능인데,

개발중에 JIT 컴파일러를 사용하여 1초안에 코드를 다시 로드하고 계속 실행할 수 있다.

코드를 잘못 작성하여 에러가 발생했더라도 수정을 하면 리로딩이 되어 바로 살아난다.


이런 좋은 기능이 있기에 에뮬레이터에 대한 그리움(?)이 있던 와중...



Nox라는 정말 훌륭한 도구를 알게 되었다.

   - https://kr.bignox.com/



절대 게임 사이트가 아니다!!! ^^

다만, 안드로이드 환경에서 구동되는 게임들을 PC에서 즐기고픈 사람들에게 특화되어 있다보니...



여하튼, 다운로드 받아서 설치하자.



사용자지정 부분을 보면 알겠지만, 기본 설치 경로는 D드라이브이다.

바꾸고 싶으면 바꾸면 된다.


설치 주르륵 하고... 실행하면...



스마트폰 처음 설정하듯이 구글 플레이 로그인 하면...



그런데, 지금 필요한건 태블릿이 아니라 스마트폰이다.

설정 변경이 필요하다.



오른쪽 위에 있는 기어 모양의 설정 버튼을 눌러주자.



기본설정에서 "ROOT켜기" 체크하고,



성능설정에서 해상도를 "스마트폰", "720x1280" 정도로 변경해주자.


그리고나서, 설정저장을 하면 재실행을 해주면 된다.




이렇게 만든 아이를 Flutter 개발을 위한 에뮬레이터로 사용하기 위해서는 추가 설정을 조금 더 해줘야 한다.


Nox에서 설정을 선택해보자.



바탕화면(? 홈화면?)에 있는 Tools 안에 설정이 들어있다.



제일 밑에 보이는 태블릿 정보를 선택하고,



제일 밑에 있는 빌드 번호를 막 클릭하면 위와 같은 메시지가 보이면서 결국 개발자가 되었다는 메시지가 나온다.

그리고 나서 Back 해보면,



개발자 옵션이 나온다.

클릭해서 들어가 보자.



USB 디버깅을 허용해주자.


일단, Nox의 기본적인 설정은 끝났다.





이제, 전에 설치한 Android Studio + Flutter 환경을 실행하자.



짜잔... 예쁘게 잘 보인다~~~~~ 하지만,



디바이스 목록에 Nox가 보이지 않는다.



시작 메뉴를 통해서 PowerShell을 관리자로 실행하자.



관리자 권한으로 하지 않아도 된다고 하던데...

필자는 관리자 권한으로 해야했다.

(어!? 두번째로 했을 때엔 관리자 권한이 아니어도 되었다!!!)



위와 같이 명령어를 좀 타이핑 해주면... 된다.


> cd "D:\Program Files\Nox\bin"


> .\nox_adb.exe connect 127.0.0.1:62001



그러면 이제 디바이스가 보이고, Run을 클릭하면...



Nox 화면에 개발을 하던 앱이 짠~ 하고 나타난다.



매번 연결을 위한 타이핑이 하기 싫으면, Batch 파일로 만들어두면 편하다.

뭐, 그런건 각자 알아서~ ^^


반응형



Flutter 공식 사이트는 아래와 같다.

   - https://flutter.dev/



친절하게도 한글 사이트도 있다. 비교적 고퀄리티의 한글 번역이다!!!

   - https://flutter-ko.dev/



구글링으로 선배님(?)들이 먼저 설치해본 결과를 찾아서 따라하려다가

직접 공식 사이트에 있는 설치 방법을 따라해보기로 마음먹었다.





Flutter는 Windows/macOS/Linux 환경을 모두 지원한다.



습관처럼 Linux 환경에서 설치하는 것으로 하려다가

이번에는 그냥 한 번 Windows 환경에서 설치해보기로 마음을 바꿨다.


이유는... 없다. 그냥...



1. System requirements


   - 뭐 당연히 Windows 7 SP1 이상이어야 하고  설치할 하드 공간도 400MB 이상 필요하고... 뭐, 블라블라...


   ① PowerShell 5.0 이상


      - Windows10 사용하고, 최신 업데이트를 했다고 하면 당연히 맞출 수 있는 조건일텐데...

      - 버전 확인은 아래와 같이 할 수 있다.



     - 시작 메뉴를 통해 "powershell"을 찾아서 실행한 뒤에



     - "$PSVersionTable" 명령어를 실행하면 위와 같이 version을 확인할 수 있다.


   ② Git


     - Git도 미리 설치해놓아야 한다고 한다.


     - 아래 사이트를 통해 Git for WIndows 패키지를 설치하면 된다.

        . https://git-scm.com/



     - Git Bash 실행해서 "git --version"으로 확인해보자.




2. Install Flutter SDK


   - Flutter SDK를 다운로드 받아서 설치하면 되는데... 이왕이면 Git을 이용해서 해보겠다.



   - 위 내용을 보면 알겠지만... 보통 Application을 설치하는 "C:\Program Files\" 경로는 사용하지 말란다.



   - "C:\src" 디렉토리를 만든 다음에

   - "git clone https://github.com/flutter/flutter.git -b stable" 명령어를 이용해 Flutter SDK를 받아오면 된다.




3. Set Path


   - flutter를 막 실행하기 위해 PATH를 설정해보자



   - '시스템 속성'에서 '환경 변수' 부분을 찾으면 된다.

   - '환경 변수'에서 '시스템 변수'에 있는 'Path'를 찾아서 편집을 누르면...



   - 방금 설치(? 다운로드?)한 flutter의 bin 디렉토리를 추가해주면 된다.



   - Git Bash를 종료한 뒤에 다시 실행하고, "flutter --version"을 실행해보자.


   - 뭔가 오류처럼 나오는건 git bash 에서 실행해서 그렇다.




   - PowerShell에서 실행을 하면 갑자기 뭔가를 설치하고선 version 정보를 보여준다.




4. Doctor


   - flutter를 실행하기 위한 환경이 잘 갖춰져 있는지 검사를 해주는 기능이 있다.



   - "flutter doctor"를 실행하면 검사를 하게 되는데... 이런... Android Studio가 결국은 필요하다.



5. Android Studio


   - 아래 사이트에 접속해서 Download 및 설치를 진행하자

      . https://developer.android.com/studio/index.html



   - 설치 잘하고 나면 열심히 환경 설정을 해줘야 한다.



   - Configure의 "SDK Manager"를 선택하자


   - "SDK Tools" 탭 선택 후 오른쪽 하단에 있는 "Hide ..." 체크를 해제하면 나오는 "Android SDK Tools (Obsolete)"를 설치하자



   - 나중에 스마트폰 연결을 위해 "Google USB Driver"로 설치하자.


   - 스마트폰에서는 "Developer options"와 "USB debugging"을 열어줘야 한다.

      . Note8 에서는 설정-휴대전화 정보-소프트웨어 정보-빌드 번호 (7번 이상 연타) -> 개발자 모드

      . Note8 에서는 설정-개발자 옵션 -> USB Debugging On



6. Emulator


   - 에뮬레이터를 실행하기 위한 환경 설정을 해보자.



   - Configure에서 "AVD Manager"를 선택하자.



   - 가상 디바이스를 생성하는 것이다.



   - 원하는 디바이스를 고르면 된다



   - 가상 디바이스에 설치할 Android 버전을 골라서 Download 해주면 된다.


   - 그런데, 오른쪽에 Intel HAXM이 설치 안되었다고 나오는데... 필자는 AMD이다보니 설치에 애를 먹어서...


   - 그냥 드럽고 치사해서 실제 Device 물려서 테스트하기로 했다 !!!




7. Plugin


   - Android Studio에서 Flutter를 원활하게 사용하기 위해서는 그에 맞는 plugin을 설치해야 한다.



   - Plugins 메뉴를 통해서 설치할 수 있다.



   - flutter로 검색하면 바로 나온다. 설치하자.


   - 설치가 끝나면 IDE를 재시작할거냐고 물어본다. 그에 응하자~





8. Test App


   - 잘 되는지 한 번 해보자.



   - 위 화면의 두번째 항목을 선택하자 "Start a new Flutter project"



   - Flutter Application 으로 만들어보자.



   - 두번째 항목인 Flutter SDK Path는 앞에서 설치한 아이의 경로로 잡아주면 된다.


   - 아니면 새로운 경로로 설치를 해도 된다.



   - 개인적으로 뭐가 뭔지 아직은 잘 모르겠어서... 그냥 무조건 Go! Go!



   - 스마트폰을 연결하면 위와 같이 Target으로 등장하고, Run 시키면 빌드해서 폰에 앱 설치 후 실행까지 짠~ 하고 된다.




   - "+" 버튼을 누르면 숫자가 올라간다~





간단한 줄 알았는데... 뭔가 한 참 진행을 해야했지만, 스마트폰에 뭔가 짠~하고 뜨니 기분은 좋다~!!


반응형


Python version.2 지원이 끝난다고 하니

이제는 Python version.3 환경을 기본으로 사용해야할 것 같다.


Ubuntu를 설치하면 기본적으로 셋팅되어 있는 Python은 version.2 이다.


이를 변경하여 Python version.3 환경으로 꾸며 보고자 한다.




0. 기본 환경


    - Ubuntu 설치가 된 깨끗한(?) 환경이다.


$ lsb_release -a


No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 18.04.3 LTS

Release:        18.04

Codename:       bionic



$ python --version


Python 2.7.17




1. python3 상태 확인


    - 어?! 그런데, 살펴보면 python3도 이미 설치되어 있다.


$ python3 --version


Python 3.6.9


    - 뭐뭐가 있는지 한 번 보자


$ ls /usr/bin/ | grep python


dh_python2

python

python-config

python2

python2-config

python2.7

python2.7-config

python3

python3.6

python3.6m

python3m

x86_64-linux-gnu-python-config

x86_64-linux-gnu-python2.7-config




2. python 3.7 설치하기


    - 추가로 Python 3.7 버전을 설치해보자


$ sudo apt-get install python3.7


Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

  libpython3.7-minimal libpython3.7-stdlib python3.7-minimal

Suggested packages:

  python3.7-venv python3.7-doc binfmt-support

The following NEW packages will be installed:

  libpython3.7-minimal libpython3.7-stdlib python3.7 python3.7-minimal

0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.

Need to get 4,282 kB of archives.

After this operation, 22.5 MB of additional disk space will be used.

Do you want to continue? [Y/n]


    - 잘 설치되어 있는지 확인 !


$ python3.7 --version


Python 3.7.5



$ ls /usr/bin/ | grep python


dh_python2

python

python-config

python2

python2-config

python2.7

python2.7-config

python3

python3.6

python3.6m

python3.7

python3.7m

python3m

x86_64-linux-gnu-python-config

x86_64-linux-gnu-python2.7-config




3. Python 버전 등록


    - 기본적인 설정이 등록되어 있는지 확인하여 보자


$ sudo update-alternatives --config python


update-alternatives: error: no alternatives for python


    - 기본 정보를 차례대로 등록해보자


$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1


update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode



$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2


update-alternatives: using /usr/bin/python3.6 to provide /usr/bin/python (python) in auto mode



$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 3


update-alternatives: using /usr/bin/python3.7 to provide /usr/bin/python (python) in auto mode




4. Python 버전 설정


    - 위에서 기본적으로 등록을 했으니... 실제 확인


$ sudo update-alternatives --config python


There are 3 choices for the alternative python (providing /usr/bin/python).


  Selection    Path                Priority   Status

------------------------------------------------------------

* 0            /usr/bin/python3.7   3         auto mode

  1            /usr/bin/python2.7   1         manual mode

  2            /usr/bin/python3.6   2         manual mode

  3            /usr/bin/python3.7   3         manual mode


Press <enter> to keep the current choice[*], or type selection number: 0



$ python --version


Python 3.7.5


    - 이제, "python" 이라는 이름으로 버전 확인을 하면 '3.7.5'가 나온다 !!!



그런데, 3.7 버전으로 했을 경우에.... 뭔가 신경써야할 것들이 많은 것 같다 !! (라이브러리 관리가 쉽지 않다는...)

Ubuntu에서는 현재 3.6 버전을 기본으로 제공하고 있으니 이를 따라서 3.6 버전으로 가는 것을 추천한다.



모두 수고하셨어욥~!!


반응형


※ 아래 내용이 많은데.... 뭔가 해보려고 엎치락 뒷치락 하면서 작성한 내용이라 그렇다.

   비슷한 고민을, 공부를 해보시려는 분이면 조금 도움이 되지 않을까 해서 공개한다.



주말에 뭘할까 고민하다가 블로그를 뒤져봤는데... 뭔가 귀찮았다.

그래서 이걸 어떻게 하면 편하게 할 수 있을까 고민하다가... ^^


[ 목표 ]

1. 네이버 블로그에서 특정 키워드(동탄)를 검색해서

   맛집 포스팅인지 부동산 포스팅인지 구분하고

   동일한 식당이면 묶어서

   홍보 포스팅이면 제외시켜서

   GitHub 페이지로 결과를 보여주도록 하고 싶다.


2. 불량 포스팅이면 작성자를 기록해서

   다음부터는 해당 블로거 글은 무조건 걸러버리는 기능도 필요


3. 처리한 결과는 별도 로깅도 하고 레포팅도 한다.



[ 개발 환경 ]

    - GitHub에 repository를 생성해서 소스코드 관리

        . https://github.com/

    - Virtualbox를 이용해서 Ubuntu 18.04 LTS Server 설치

        . https://www.whatwant.com/entry/Ubuntu-Server-18042-LTS-64bit-Bionic-Beaver-Installation

    - Python

        . 일단 2.7 버전의 Python으로 해보고자 한다. "$ sudo apt-get install python"



[ 진행 #1 - Python module 설치 ]

    - 추가로 설치해야하는 Python module들을 설치하자

$$ sudo apt-get install python-beautifulsoup python-requests



[ 진행 #2 - Naver API 사용 준비 ]

    - Naver 블로그 검색을 API를 통해 해보고자 한다.

        . https://www.whatwant.com/entry/Naver-API-사용-준비하기

    - 기본적인 활용은 아래 링크에서 확인할 수 있다.

        . https://developers.naver.com/docs/search/blog/



[ 진행 #3 - 기본 코드 작성하기 ]

    - 이제 준비는 모두 끝났다. 뭔가 동작하도록 해보자!!!


#!/usr/bin/env python

# -*- coding: utf8 -*-


import urllib2

import requests



naver_client_id = "XXXX"

naver_client_secret = "XXXX"


search_blog_keyword = "동탄"

query = urllib2.quote(search_blog_keyword)


display = 10


start = 1


sort = "date"


url = "https://openapi.naver.com/v1/search/blog.json?query=%s&display=%s&start=%s&sort=%s" % (query, display, start, sort)



request = urllib2.Request(url)

request.add_header("X-Naver-Client-Id", naver_client_id)

request.add_header("X-Naver-Client-Secret", naver_client_secret)



response = urllib2.urlopen(request)

rescode = response.getcode()



if( rescode == 200 ):

    response_body = response.read().decode('utf-8')


    print response_body


exit()


    - 위와 같이 작성 후 실행하면, 뭔가 값을 가져온 것을 확인할 수 있을 것이다. 뭔가 다 된 것만 같은 착각이~~~ 든다.

    - 정말로 뭔가 가져온다~ ^^



[ 진행 #4 - NLP 사용하기 (KoNLPy) ]

    - 한국어 분석을 해보기 위해 알아보니, 가장 유명한 NLP 모듈이 KoNLPy 인 것 같다.

        . Reference: http://konlpy.org/ko/latest/


    - 필요한 패키지 미리 설치하기

        . 공식 홈피에는 openjdk-7-jdk로 되어있고, python3-dev도 기재되어 있지만,

          Ubuntu 18.04 환경에서 현재 openjdk-7-jdk는 사라졌고, 필자는 python2.7 환경에서만 사용할 것이기에 아래와 같이...


$ sudo apt-get install g++ openjdk-8-jdk python-dev


    - KoNLPy 설치하기


$ sudo apt-get install python-pip

$ sudo -H pip install konlpy


    - 샘플 코드는 다음과 같다.

    - 과거 Twitter가 이름을 Okt로 바꿨단다.


from konlpy.tag import Okt

from konlpy.utils import pprint



...

        blog_content = ... (위의 블로그 긁어오기 응용)

        okt = Okt()

        pprint( okt.nouns( blog_content ) )



[ 진행 #5 - 단어 카운트하기 ]

    - 블로그 본문 얻기 → 형태소 분석해서 noun 얻기 → 각 단어가 몇개인지 갯수를 얻어야겠다!!!!

    - 예전에는 for 구문 돌려서 하나씩 갯수를 더해가면서 분석을 했는데, 좀 더 편한 방법을 찾아봤다.


from collections import Counter


...


    ... (블로그 본문 얻기)


        okt = Okt()

        nouns = okt.nouns( blog_content )


        tags = Counter( nouns )


        pprint( tags )


    - Counter() 함수 하나로 해결?!



[ 진행 #6 - 한글 폰트 설치하기 ]

    - 단어 구하고 몇 개씩인지 카운트까지 했으면, 당연히 wordcloud 한 번 해봐야할 것 같아서 ... 미리 필요한 한글 폰트부터 설치해봤다.


$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra


    - 설치된 폰트를 확인해보자.


$ ll /usr/share/fonts/truetype/nanum/



[ 진행 #7 - wordcloud 설치하기 ]

    - 최근 Python을 통해서 이러한 분석작업을 하는 것이 엄청 유행을 하고 있는데,

      ML과 함께 하는 것이 유행하면서 Jupyter Notebook 환경에서 작업한 코드들이 대부분이다보니 필자가 원하는 내용을 찾기가 쉽지 않았다.

    - 뭐, 결국은 필자의 지식과 노력과 실력이 부족한 탓이겠지 ㅠㅠ


$ sudo -H pip install wordcloud

$ sudo -H pip install matplotlib

$ sudo apt-get install python-tk



[ 진행 #8 - wordcloud 만들어보기 ]

    - 앞에서 형태소 분석한 단어가 각 몇 개씩인지까지 분석했으니... 그걸 가지고 WordCloud를 만들어보자.


from wordcloud import WordCloud


... (블라블라)


        ... (블로그 본문 읽어와서)

        ... (KoNLPy 이용해서 형태소 쪼개고)

        tags = (Count 이용해서 단어별로 갯수 카운트하고)


        font_path = '/usr/share/fonts/truetype/nanum/NanumMyeongjoBold.ttf'

        wc = WordCloud(font_path=font_path, background_color='white', width=800, height=600)


        cloud = wc.generate_from_frequencies( tags )

        cloud.to_file( "wordcloud.png" )


    - 그러면 아래와 같은 그림이 만들어진다. (폰트는 바꿔서 만들었다 ^^)




[ 진행 #9 - GitHub Pages Theme 고르기 ]

    - 이미지 파일까지 만들었는데... 이걸 어떻게 보여줄까 고민하다가 생각한 GitHub Pages ...

    - 기본으로 주어진 테마 중에는 마음에 드는 것이 없어서 다른 테마들은 없을까 찾아보았다.

        . https://jekyllthemes.io/github-pages-themes



    - 유료도 있지만, 무료도 있으니 잘 찾아보길... ^^



[ 진행 #10 - GitHub Pages Theme 가져오기 ]

    - 필자가 고른 Theme는 "flexible-jekyll"

        . Repo: https://github.com/artemsheludko/flexible-jekyll

    - 해당 Theme를 다룰 다양할 방법이 있지만, 필자가 택한 방법은 "/docs" 디렉토리에 넣어서 사용하기!


    ① 내가 사용하는 Repo를 다운로드 받은 뒤, 내 Repo 디렉토리로 이동하자

    ② 위 Theme를 clone 받은 뒤, .git 디렉토리를 지우자.


$ git clone https://github.com/artemsheludko/flexible-jekyll.git ./docs

$ rm -rf ./docs/.git


    ③ 그렇게 하고 push 하자. /docs 디렉토리가 있어야 뒤에서 할 settings 설정을 진행할 수 있다.


    ④ GitHub에서 Pages 기능을 활성화 시키자. 해당 Repository의 settings 메뉴에서 GitHub Pages 항목을 살펴보자.



    ⑤ Source 선택 時 /docs folder로 골라주면 된다. (/docs 디렉토리가 있어야 해당 옵션을 선택할 수 있다)



[ 진행 #11 - GitHub Pages Theme 설정하기 ]

    - 간단한 config를 설정해야 한다.



    - 입맛에 맞게 수정한 후 commit 반영하자.



[ 진행 #12 - GitHub Pages Post 반영하기 ]

    - 검색 결과를 얻어와서 분석하고, 이미지까지 만든 것을 post로 만들어 보자.

    - 아래 코드는 필자가 테스트로 작성했던 것을 샘플로 기재한 것이다.


... (앞에서 작업한 것들)


    for content in CONTENTS:

        post_filepath = "docs/_posts/%s-%s.markdown" % ( datetime.now().strftime("%Y-%m-%d"), content['id'] )


        temps = [ "---", "layout: post" ]

        temps.append( "title: %s" % content['title'] )

        temps.append( "date: %s" % content['postdate'] )

        temps.append( "description: %s" % content['description'] )

        temps.append( "img: %s" % content['img'] )

        temps.append( "fig-caption: # Add figcaption (optional)" )

        temps.append( "tags: [ %s ]" % ','.join(content['nouns']) )

        temps.append( "---" )

        temps.append( "[%s](%s)" % (content['title'], content['link']) )


        with open( post_filepath, 'w') as outfile:

            outfile.write( "\n".join( temps ) )



여기까지 진행해서 얻게된 결과는 다음 이미지와 같다.




아직도 해볼만한 것이 엄청 많지만,

힘들어서 여기까지만 작성한 내용으로 한 번 선 긋고자 한다. 헥헥 ...



반응형

 

주말이 되어서 가족 외식을 하려다가

오늘은 새로운 것을 먹어보려고

네이버 검색을 하다가...

갑자기 떠오른 생각 ...

 

"우리 동네에 새로운 맛집이 생기면

자동으로 알려줬으면 좋겠다!"

 

 

그러면, 네이버로 검색을 던져서

나온 결과를 HTML을 Parsing해서

원하는 결과를 뽑으면 되겠군.....?!

 

 

이라고 생각을 하다가...

굳이 HTML을 직접 Parsing하지 말고

API로 던져서 깔끔하게 받을 방법은 없을까?!

라는 고민을 해봤다.

 

 

그러고 보니...

네이버도 API를 제공해주지 않나!?

라는 생각까지 진행...

 

구글링을 해봤더니

(네이버 API 지원 여부를 구글을 통해서 검색을 하다니... ^^)

있다!!!

 

 

 

네이버 개발자 사이트~

https://developers.naver.com/products/search/

 

 

"오픈 API 이용 신청"

 

이용 약관에 동의하고~

 

휴대폰 인증하고...

회사 이름은 적당히 넣어주고...

 

애플리케이션 이름 적당히 넣어주고...

사용 API에는 "검색"을 골라주고...

환경 추가는 "WEB"으로 해서

웹 서비스 URL 적당히 넣어주고...

 

이제 우리가 사용할 수 있는 "Client ID", "Client Secret"이 발급되었다 !!!

 

일단 여기까지만~ 활용은 다음 포스팅으로~

 

 

반응형


컴퓨터 공학을 전공하긴 했지만,

사실 컴퓨터 잘알못에다가 겉멋만 든 실속없는 불량 프로그래머... 아니 불량 컴오타쿠인 글쓴이인데...


겉멋만 들었기에 한동안은 집에 있는 컴퓨터들도 전부 리눅스 환경이었었다.

물론 지금은 편한 것을 추구하기에 결국은 Windows7...


하지만,

회사에서 사용하는 컴퓨터의 Host OS는 Ubuntu 이다.

회사 시스템 접속을 위해서 VirtualBox에다가 Windows7 Guest OS도 사용한다.


집에서도 서버 구성은 최대한 리눅스 환경으로 구축하고자 노력은하는데...




이런 겉멋만 든 불량 컴오타쿠이기에 Python 코딩을 할 때엔 별도의 IDE를 사용하지 않고 있다.


차마 vi / vim 을 사용하기에는 너무 귀차니즘 아니 불편함이 많아서 (죄송합니다 vi 매니아 분들...)

nano editor를 이용하고 있다.






그러다가 최근에 Machine Learning 관련 교육을 받다가

정말 놀라운 신세계를 만나게 되었다.



Anaconda 라는 "Python Data Science Platform"이다.

데이터 사이언스에 필요한 라이브러리가 포함된 Python 배포판(?)인데,

그 안에 정말 멋진 에디터도 포함되어 있었던 것이다.


"Jupyter Notebook"이라는 이름인데...

실행하면 localhost로 웹서버(?)를 띄우고... 웹브라우져를 통해서 Python 코딩을 할 수 있게 해주는 에디터이다.

부분적인 실행도 가능하고, 다양한 단축키를 지원하며, 추천 기능도 아주 훌륭하다.

특히, 학습용으로 정말 훌륭하고 다른 사람들에게 내가 만든 코드를 설명하기에도 정말 훌륭한 수단이다.




개인적으로 정말 충격이었다.

아~ 세상은 내가 알지 못하는 것이 정말 많구나.... 컴퓨터 세상에서도...




하지만, 이것을 나의 Python Editor로 낙점하기에는 적합하지 않은 부분이 있었다.

웹브라우져 기반의 에디터라는 것이 장점이기도 하지만 단점이기도 하고...

속도(성능)도 좀 문제가 되었고

기본적인 파일 형태가 python 순수 코드가 아닌, 쥬피터 노트북 형식의 파일 타입이라는 것도...




그래서, Python Editor 인기 순위를 알아보았다.

최근 1년 내에 포스팅된 것들을 뒤져보니 대강 아래와 같았다.


 

www.slant.co

jaxenter.com

www.theindianwire.com 

www.it4nextgen.com 

 1

PyCharm 

PyCharm 

PyCharm 

Eclipse + PyDev 

 2

Vim 

Spyder 

Eclipse + PyDev 

PyScripter 

 3

VS Code 

Eclipse + PyDev 

Wing IDE 

Eric Python IDE 

 4

Sublime Text 

IDLE (and IdleX) 

Komodo IDE 

 PyCharm

 5

Spacemacs 

Atom 

Spyder 

 Wing IDE


흐음... PyCharm이 짱이군!!!




그런데, 일반적인 오픈소스 프로젝트는 아닌 듯 보인다.

jetbrains 라는 회사에서 만들고 있는 아이인가보다.



다행히, Community 버전을 배포해주고 있다.

아싸~~~~!!!



https://www.jetbrains.com/pycharm/download/#section=windows



그냥 설치하면 된다~~~~ Go Go~




내가 작성한 코드에서 사용하지 않는 것들도 알려주네 !?

(import 중에서 회색으로 된 부분~)




PyCharm 사용법은 뭐 아직 나도 잘 모르니....


최소한.... 타이핑을 하다보면 알아서 추천해주는 기능만으로도 충분히 만족한다.



PyCharm 이야기 쓰면서 정작 PyCharm 이야기는 별로 없는 이번 포스팅은 여기까지~

반응형

+ Recent posts