반응형

안녕하세요 봉자씨입니다.

위와 같은 에러가 난다면 일단 이래 저래 많은 시간을 소비하게 됩니다.

저의 경우는 아래와 같이 해결했습니다.

참고하세요

buildscript {
repositories {
jcenter()
maven {
url 'https://maven.fabric.io/public'
}
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath 'com.google.gms:google-services:4.3.3'
classpath
"io.realm:realm-gradle-plugin:5.13.1"
}
}

 

 

반응형
반응형

 

 

 

안녕하세요 봉자씨입니다.

 

파이썬3에서 주피터 노트북을 설치하면서 에러가 발생하는 부분이 있어서 혹시나 해서 공유드립니다.

아래와 같이 설치를 시도 했습니다.

bongjacy:~ bongdary$ pip3 install jupyter

 

문제 없이 설치 되는 듯합니다.

그런데 실행을 하니 실행이 안되고 아래와 같은 에러가 표시가 됩니다.

 

명령어를 실행합니다.

bongjacy:~ bongdary$ jupyter notebook

 

에러가 발생했습니다.

Traceback (most recent call last):

  File "/Library/Frameworks/Python.framework/Versions/3.5/bin/jupyter-notebook", line 5, in <module>

    from notebook.notebookapp import main

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/notebook/__init__.py", line 25, in <module>

    from .nbextensions import install_nbextension

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/notebook/nbextensions.py", line 605, in <module>

    from .extensions import (

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/notebook/extensions.py", line 8, in <module>

    from tornado.log import LogFormatter

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tornado/log.py", line 34, in <module>

    from tornado.escape import _unicode

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tornado/escape.py", line 27, in <module>

    from tornado.util import unicode_type

  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tornado/util.py", line 21, in <module>

    from typing import (

ImportError: cannot import name 'Type'

 

무슨 에러인지 확인을 이것 저것해봤습니다.

 

it's because of the version of tornado and python 3.

 

결국 tornado 이것을 어떻게 하면 해결이 난다는 것입니다.

그래서 아래와 같이 처리를 하니 잘 실행이됩니다.

 

pip install tornado==5.1.1

 

위와 같이 실행 후의 결과입니다.

bongjacy:~ bongdary$ jupyter notebook

 

[I 14:11:56.273 NotebookApp] Writing notebook server cookie secret to /Users/bongdary/Library/Jupyter/runtime/notebook_cookie_secret

[I 14:11:57.056 NotebookApp] Serving notebooks from local directory: /Users/bongdary

[I 14:11:57.056 NotebookApp] The Jupyter Notebook is running at:

[I 14:11:57.056 NotebookApp] http://localhost:8888/?token=60742b84f859e15052573a9370ab2afe36cb35c8eb66e2a1

[I 14:11:57.056 NotebookApp]  or http://127.0.0.1:8888/?token=60742b84f859e15052573a9370ab2afe36cb35c8eb66e2a1

[I 14:11:57.056 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[C 14:11:57.060 NotebookApp] 

    

    To access the notebook, open this file in a browser:

        file:///Users/bongdary/Library/Jupyter/runtime/nbserver-39323-open.html

    Or copy and paste one of these URLs:

        http://localhost:8888/?token=60742b84f859e15052573a9370ab2afe36cb35c8eb66e2a1

     or http://127.0.0.1:8888/?token=60742b84f859e15052573a9370ab2afe36cb35c8eb66e2a1

 

화면이 아래와 같이 잘 열리는 것을 확인 했습니다.

 

반응형
반응형

 

 

 

안녕하세요 봉자씨입니다

 

파이썬3에 대해서 강의를 시작하려고 합니다.

해당 강의는 파이썬의 기초라고 생각하시면서 들으시면 되겠습니다.

 

파이썬을 시작하기 전에 우리가 생각해야하는 것이 있습니다. 

 

1 .파이썬2? 파이썬3? 과연 어떤걸 어떻게 시작해야하나요?
2. 우린 어떤 툴을 사용해서 개발을 해야 할가요?

 

 

그럼 위에 질문에 대해서 답변하고 시작하도록 하겠습니다.

 

1 .파이썬2? 파이썬3? 과연 어떤걸 어떻게 시작해야하나요? 파이썬3

파이썬3를 사용해야 합니다.

왜 파이썬3를 써야하나요? 
어쩔수 없습니다. 현재 파이썬 2.7의 버전은 2.7.17입니다. 2020년 1월에 2.7.18 버전의 코드 프리징이 진행되고, 4월에는 2.x의 최종 버전인 2.7.18이 출시됩니다. 이후로는 더이상 업데이트가 이뤄지지 않습니다.
추가적으로 알아야 할 내용! 파이썬2와 파이썬3는 호환이 되지 않으니 꼭 알고 계세요.

 

2. 우리는 어떤 툴을 사용해서 개발을 해야 할가요? 파이참(Pycharm)

파이썬 개발을 위한 툴 선택!

개인적인 것이라 추천은 드리나 사람에 따라 다르니 참고해 주셨으면 합니다. 개발을 진행하면서 여러가지의 툴을 사용해 봤습니다. VSCode, 아나콘다, 주피터 노트북, 파이참 이런 툴들을 써서 코딩을 해보았습니다. 간단하게 실습하는 정도면 또는 데이터 분석용이라면 주피터 노트북을 추천 드립니다. 사용도 간단하니 깔끔하게 코딩도 가능합니다. 허나 테스트용이 아니라 프로그램을 짜신다면 파이참(PyCharm)을 추천드립니다. 파이참을 써야하는 이유는 정말 많은 것같은데 간단하게 몇가지만 말씀드리겠습니다.

파이참을 추천하는 이유!
1. PyCharm은 무료입니다. 그리고 유료 버전도 있긴한데 일반적으로 무료 버전으로도 충분합니다.
2. 사용하면서 여러 파이썬 버전을 선택하여 사용할 수 있습니다. (그럴 일이 없는게 좋으나 참고 또는 실행이 필요할 수 있죠)
3. 패키지 설치가 정말 쉽습니다. 패키지가 설치 되어 있지 않다면 빨간줄이 쳐지는데 거기서 쉽게 설치됩니다.(일반적으론 PIP를 사용하지만 그보다 더 쉬워요)
4. 코드 실행이 간단합니다. 전체 프로그램을 실행하거나 간단한 테스트도 할 수 있습니다.
5. 파일 관리가 쉽고 함수 역시 보기 쉽게 정리가 됩니다.
5. 디버깅 기능이 좋으며, Pandas 데이터 프레임(모르시면 패스)도 엑셀처럼 보여줍니다.

 

 

 

반응형
반응형

 

 

 

안녕하세요 봉자씨입니다

 

python으로 프로그램을 짜서 nohup으로 해서 백그라운드 작업을 실행했습니다.

그런데 잘 돌아 가던 프로그램이 상대 서버에 의해서 강제 킬 다하는 경우가 발생했습니다.

그럼 이 상황에서 어떻게 할까...

고민을 하다가 결국 이 방법을 사용하게 되었습니다.

죽이면 다시 살리고 죽이면 다시 살리는 일명 좀비로 살려서 계속 돌리는...

바로  방법.

 

만약에 프로세스가 돌고 있다면 다시 실행하지 않습니다.

그러나...

프로세스가 죽었거나 돌고 있지 않는다면 프로세스를 다시 돌리게 하였습니다.

 

아래와 같이 실행하시면 됩니다.

 

일단 기존 방식은 아래와 같습니다.

 

[root@ths SlackApp]# nohup python AppReviewer.py > AppReviewerLog &

설명 : AppReviewer라는 파이썬 파일을 백그라운드에서 돌리되 AppReviewerLog

         해당 파일로 로그가 쌓이도록 했습니다.

그러나 아래와 같은 로그로 프로그램이 죽어버렸습니다.

urllib.error.URLError: <urlopen error EOF occurred in violation of protocol (_ssl.c:847)>

 

그래서 아래와 같이 다시 돌리게 되었습니다.

해당 프로세스를 crontab에 등록해서 관리합니다.

그러기 위해서 아래와 같은 과정이 필요합니다.

 

먼저 해당 명령어를 입력합니다.

crontab -e

크론탭에 등록된 프로세스가 쭉나올 겁니다. 그럼 아래와 같이 명령어를 추가합니다.

 

*/5 * * * * pgrep -f AppReviewer.py || nohup python /pyApp/SlackApp/AppReviewer.py > AppReviewerLog

 

이제부터 5분만에 한번씩 프로세스를 확인합니다.

그리고 프로세스가 죽었으면? 다시 실행합니다.

프로세스가 살아서 도록 있다면? 스킵합니다.

 

이렇게 된다면 프로세스가 죽어도 다시 도는 프로세스가 완성이 됩니다.

 

 

 

 
반응형
반응형

 

 

 

안녕하세요 봉자씨입니다

 

안드로이드 개발시에 androidx로 마이그레이션을 진행하다 보면 발생하는 에러 입니다.

해당 에러를 해결에 대한 상세한 내용은 아래의 url을 참고하시면 됩니다.

 

https://developer.android.com/studio/write/java8-support.

 

결국은 자바8이 필요하다는 것이구요 아래와 같이 추가해 주시면 됩니다.

 

build.gradle(Module: app) 영역에 android{ 내에 아래의 코드를 추가

    compileOptions {
        targetCompatibility = "8"
        sourceCompatibility = "8"
    }

 

그리고 다시 빌드를 하게 되면 정상적으로 빌드 됨을 확인 할 수 있어요.

 

반응형
  1. Favicon of http://opensocialfactory.com/story5594348/wordpress-EBACB4EBA38C-ED858CEBA788-.. koiioi 2020.11.26 02:32

    유용한 글 매우 잘 보고 가용~

반응형

 

 

 

안녕하세요 봉자씨입니다

 

위와 같은 경우는 MariaDB 10.4 user table 변경 시에 발생하는데요

상황은 아래와 같습니다.

 

상황 및 에러 :

UPDATE user SET password=PASSWORD('your password') WHERE User='root';ERROR 1348 (HY000): Column 'Password' is not updatable

 

해결 방법 :

 SELECT password('your password')

+-------------------------------------------+

| password('your password')                    |

+-------------------------------------------+

| *AAAAAAAAAAAAE7A4FEF6BD0361CA2F78E17EE |

+-------------------------------------------+

 

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password'

 

위와 같이 실행을 하시면 됩니다.

감사합니다.

 
반응형
반응형

 

 

 

안녕하세요 봉자씨입니다

 

맥에 MariaDB를 설치 해보도록 하겠습니다.

전체 과정은 아래와 같이 이루어 집니다.

 

1. 맥북 커맨드라인 툴인 x-code 설치
2. 루비를 이용해 Homebrew를 설치
3. Homebrew를 이용하여 MariaDB설치
4. 설치한 MariaDB 상태 점검하기
5. 접속하기

 

위의 과정으로 진행 할 예정입니다.

근데 여기서 알아야 할 것이 몇개가 있죠. 그것만 간단하게 알아 볼게요.

x-code : 맥북의 컴맨드라인 툴이기도 하고 iOS를 개발시에도 사용합니다.

Homebrew : 패키지 관리 시스템(Package Management System)으로 해당 툴을 이용하면 각종 소프트웨어 패키지를 다운받을 수 있다. 리눅스에서 사용하는 apt-get과 비슷하다고 생각하면 된다.

이제 아래의 내용을 보고 따라해 보도록 하겠습니다.

먼저 맥에서 아래와 같이 터미널을 하나 열어 줍니다.

 

 

1. 맥북 커맨드라인 툴인 x-code 설치

bongsookim@bongsooui-MacBookPro ~ % xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

설치가 완료되어 있다면 저 처럼 위와 같은 에러가 날 것이고 아니라면 그냥 실행 하시면 됩니다.

 

 

2. 루비를 이용해 Homebrew를 설치

이제 루비를 통해서 Homebrew를 설치해보겠습니다.

bongsookim@bongsooui-MacBookPro ~ % ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

이렇게 명령어를 입력하게 되며 중간 중간에 엔터를 몇번 쳐주시면 됩니다.

 

그럼 아래와 같이 마지막이 나오게 됩니다.

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations

==> Next steps:
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh

 

그럼 이제 잘 설치 되어 있는지 확인을 위해서 아래와 같은 명령어를 처봅니다.

brew doctor

Your system is ready to brew.

 

3. Homebrew를 이용하여 MariaDB설치

터미널 창에 brew install mariadb 라고 적고 엔터를 치면 아래와 같이 화면이 진행 되는 것을 확인 할 수 있습니다.

bongsookim@bongsooui-MacBookPro ~ % brew install mariadb
==> Installing dependencies for mariadb: mecab, mecab-ipadic, msgpack, openssl@1.1, pcre and groonga
==> Installing mariadb dependency: mecab
==> Downloading https://homebrew.bintray.com/bottles/mecab-0.996.catalina.bottle.3.tar.gz
==> Downloading from https://akamai.bintray.com/db/dba6306bcd5ddb9a824cb366b5432a036889440f2253634c99410fbb0abe0047?__gd
######################################################################## 100.0%
==> Pouring mecab-0.996.catalina.bottle.3.tar.gz
🍺  /usr/local/Cellar/mecab/0.996: 20 files, 4.2MB
==> Installing mariadb dependency: mecab-ipadic
==> Downloading https://homebrew.bintray.com/bottles/mecab-ipadic-2.7.0-20070801.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/90/9027197

조금 지나서 설치가 완료가 되는 것을 확인 할 수 있습니다.

그럼 이제 설치 확인 되었는지 상태 점검 단계로 넘어가 보도록 하겠습니다.

 

4. 설치한 MariaDB 상태 점검하기

db 서버 시작을 위해 터미널에 다음의 명령어를 입력 해봅니다.

mysql.server start

잘 시작되는 것을 확인 할 수 있습니다.

mysql.server stop  실행중인 서버 멈춤때는 해당 명령어를 실행 시킵니다.

mysql.server status 실행중인 서버의 상태확인을 하는 명령어 입니다.

 

5. 접속하기

이제 모든 준비가 되었습니다.

설치가 완료 되었고 상태도 확인 했습니다.

그럼 이제 접속을 한번 해보도록 할게요.

 

 mysql -uroot 서버에 접속하기

 

그럼 접속이 되는 것을 확인 할수 있습니다.

그런데 아래와 같은 에러가 발생한다면?

 

bongsookim@bongsooui-MacBookPro ~ % mysql -uroot 

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

 

$ sudo mysql -u root # sudo 명령어를 통해서 root계정으로 mysql에 접속 

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------+----------------------------+-----------------------+
| User       | Host                       | plugin                |
+------------+----------------------------+-----------------------+
| root       | localhost                  | auth_socket |
| bongsookim | localhost                  | mysql_native_password |
|            | localhost                  |                       |
|            | bongsooui-macbookpro.local |                       |
+------------+----------------------------+-----------------------+

mysql> update user set plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mysql> select user, host, plugin from user;
+------------+----------------------------+-----------------------+
| User       | Host                       | plugin                |
+------------+----------------------------+-----------------------+
| root       | localhost                  | mysql_native_password |
| bongsookim | localhost                  | mysql_native_password |
|            | localhost                  |                       |
|            | bongsooui-macbookpro.local |                       |
+------------+----------------------------+-----------------------+


mysql> exit;

 

이렇게 완료를 하게 되면

root로 접속해보면 잘 접속 되는 것을 확인 할 수 있습니다.

 

 

반응형
반응형

 

 

 

안녕하세요 봉자씨입니다

먼저 디비가 필요하게 되면 요즘은 위와 같은 고민을 하게 됩니다.

MySql이나 MariaDB 중에 무엇을 설치 해야 하는 것일까?

 

설치하기 전에 이건 알고 지나가야 할 것 같아 적어 봅니다.

MySql이나 MariaDB 중에 무엇을 설치 해야할까라는 고민과 부담이 조금 덜해지는 근본적인 상식입니다.

 

mysql이 오라클에 인수되면서기존 개발자가 나와서  호환되게 만든 것이 mariaDB입니다.

 

 

 

그럼 그래서 무엇을 써야하는 것인가?

MySql & MariaDB 둘 중?

 

MySQL 에서 MariaDB 로 마이그레이션 해야할 10가지 이유라고 해서 2015년도에 쓰여진 글에 의하면 아래와 같은 차이가 있습니다.

결국은 이 글의 결론은 MariaDB로 마이그레이션을 해야 한다고 말하고 있습니다.
https://seravo.fi/2015/10-reasons-to-migrate-to-mariadb-if-still-using-mysql

여기서 간단하게 정리하면 아래와 같습니다.

 

1) MariaDB 개발이 좀 더 개방적이고 활발함
2) 빠르고 투명한 보안패치 릴리즈
3) 좀 더 다듬어진 기능들
4) 더 많은 스토리지 엔진
5) 나은 성능
6) Galera 액티브-액티브 마스터 클러스터링
7) 오라클 관리하의 불확실성
8) 유명세가 높아지고 있음
9) 호환성과 쉬운 마이그레이션
10) 15년 이후에는 마이그레이션이 어려울 수 있음

 

그럼 저는 MariaDB를 사용하도록 하겠습니다.

감사합니다.

반응형
반응형

 

 

 

안녕하세요 봉자씨입니다

 

파이썬으로 개발을 하다 보면 백그라운드에서 프로그램을 지속적으로 돌여야 하는 경우가 생깁니다.

그럼 파이썬으로 개발한 프로그램을 즉, .py를 어떻게 하면 백그라운드에서 돌리는지 알아 보겠습니다.

 

먼저 가장 간단한 방법이고 우리가 흔히 쓰는 방법 중에 하나는 아래와 같습니다.

 

이 방법은 현재의 창이 닫히게 되면 Terminate 됨
# python FileName.py&

이렇게 창이 닫히게 되면 프로그램도 같이 종료되는 방법이 아니라,

창이 닫히더라도 계속적으로 프로그램이 실행되는 방법이 있습니다.

nohup을 사용하시면 됩니다.

방법은 아래와 같습니다.

 

창을 닫아도 계속 실행이됨
# nohup python filename.py &

 

그렇게 돌리고 나면 nohup.out 이라는 파일에 로그가 쌓이기 시작합니다.

그리고 그 로그를 보기 위해서는 아래와 같은 명령어를 실행 하시면됩니다.

 

nohup실행으로 생긴 로그를 확인하기
# tail -f nohup.out

 

그런데 특성상 로그가 한번에 쌓였다가 나타나게 됩니다. 그래서 아래와 같은 명령어를 실행해서 

바로바로 로그를 확인 할 수 있습니다.

 

# nohup python -u filename.py &
# tail -f nohup.out

 

이제 이렇게 하게 되면 로그가 바로 쌓이는 것을 확인할 수 있습니다.

 

그럼 이제 꼭 파일명이 nohup.out으로만 나오는 것이냐 라고 생각 할 수 있습니다.

프로그램 별로 로그 명을 바꾸고 싶을 수 있습니다.

그럴 경우 아래와 같은 명령어를 사용하시면 됩니다.

 

 nohup  python -u filename.py  >  로그파일명 &

 

이렇게 실행을 하게 되면 백그라운드에서 돌아가되 로그파일명으로 바뀌여 로그가 떨어 지는 것을 확인 할 수있습니다.

그럼 이제 한가지 더 알아야 할 것이 있습니다.

 

바로 백그라운드에 돌고 있는 프로그램을 정지시키는 방법입니다.

방법은 아래와 같습니다.

 

# ps -ef | grep filename.py

 

그럼 현재 백그라운드에서 내가 돌린 프로그램을 확인 할 수 있습니다.

그리고 해당 프로세스를 확인 한 수 프로세스 아이디로 해당 프로그램을 종료 시키면 됩니다.

 

# kill {your ProcessId}

이제 마지막으로 하나 더 꼭 알고 있어야 하는 것이 있습니다.

 

권한이 755 이상이여야만 nohup으로 실행 파일을 돌릴 수 있습니다.
그래서 권한을 바꿔야 한다면 아래와 같이 변경하시면 됩니다.
chmod 755 filename.py
 
반응형
반응형

 

 

안녕하세요 봉자씨입니다.

 

 

위치 기반의 정보를 제공하는 앱을 개발하다 보면 지도의 주소나 현위치 또는 지도상 핀의 위치를 기반으로

위도와 경도 즉, 좌표를 구해야 하는 경우가 존재하게 됩니다.

그래서 간단하게 위도 경도를 찾는 방법을 해보도록 하겠습니다.

아주 간단하니 차근차근 따라해 보세요

 

구글 맵을 이용한 좌표 찾기
상호명으로 찾아보기

 

먼저 구글 지도에 접속을 합니다.

https://www.google.com/maps/

 

아래와 같이 위치를 검색을 합니다.(저는 성북구 보건소를 검색합니다.)

그리고 검색한 결과에 대해서 핀으로 가서 마우스 오른쪽 클릭을 해보세요.

그럼 아래와 같은 상태가 됩니다.

그리고 나서 이곳이 궁금한가요? 를 클릭합니다.

 

그럼 아래와 같이 결과가 나오는 것을 확인 할 수 있습니다.

 

이결과로 보면 성북구보건소의 주소 및 경도는 아래와 같네요.

 

서울특별시 성북구 월곡2동 47-43  위도 경도는 37.602829, 127.039508

 

명칭으로만 위도 경도를 찾을 수 있는 것은 아니에요

주소 검색을 통해서도 위도 경도를 찾을 수가 있습니다.

아래와 같이 똑 같이 진행하시면 됩니다.

구글 맵을 이용한 좌표 찾기
주소로 찾아 보기

아래와 같이 주소를 입력을 합니다.

그럼 역시나 핀이 보이죠? 저 핀으로 이동해서 오른쪽 마우스를 클릭합니다.

 

 

그럼 아래와 같이 위도 경도가 표시 되는 것을 확인 할 수 있습니다.

 

개발을 진행하다 보면 위도 경도를 주소 또는 상호로 찾아야 하는 경우가 있는데요

그럴때 사용하시면 되겠습니다.

감사합니다.

반응형

'Tip for dev' 카테고리의 다른 글

지도, 주소에서 위도 경도 찾기 with GoogleMap  (0) 2020.03.14