Python3.8.3을 Ubuntu에 설치해보자.

아래 글들은 좀 보기 좋기 다듬을 예정이다. 임시글이라고 봐둘.. 쿨럭

Python 설치 가이드

파이썬을 요즘 만지작 만지작 거리는 중인데, 운영체제마다 설치방법이 약간씩 달라서 여간 번거롭다. 우분투는 설치도 잘 안하고, 한번 잘못 설치하면 골치 아프기 때문에 정리를 해놓는 형식이다.

다운로드 경로 찾고 wget으로 우분투에 다운로드

https://www.python.org/downloads/release/python-383/

위 링크로 들어가서 다운로드 항목을 찬찬히 살펴본다.
Gzipped source tarball

https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz

링크는 위와 같다.

이제 다시 우분투로 돌아가서 wget으로 다운을 받는다.
10분정도 소요되는군..

wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz

압축풀고 인스톨

 $ tar xvfz Python-3.8.3.tgz 
./congifure 

이렇게 하면 잘되야 하지만...
내 환경은 언제나 문제가 있지. ㅋㅋㅋ

configure: error: in `/home/magpiebros/downloadFiles/pythone3.8.3/Python-3.8.3':
configure: error: no acceptable C compiler found in $PATH

컴파일러를 설치해줘야 하나보다...
sudo apt-get install gcc
(이전에 visudo에 사용자에 해당 계정을 추가해주어야만 했다.)

다시 명령어를 날려본다.
./configure

후두루루루루룩... 뭔가 잘 된다.
다음 명령어를 실행
make
make도 없네..

sudo apt-get install gcc
make
후두루루루루룩... 뭔가 잘 된다.

sudo make install
후두루루루루룩... 뭔가 잘 된다.

이제 설치가 잘 된지 확인이 남았다.

python3 -V

sudo apt-get install idle-python3.8

idle-python3.8

개발 관련 라이브러리 추가 설치

$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

컴파일

$ cd Python-3.8.1
$ sudo ./configure --enable-optimizations
$ sudo make altinstall


pip경로 에러 발생

python-pip is in the universe repositories, therefore use the steps below:

sudo apt-get install software-properties-common
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install python-pip

참고 사이트

다시 컴파일

sudo make altinstall

https://somjang.tistory.com/entry/PythonUbuntu에-Python-37-설치하기

Ubuntu에서 sudo가 안되네?

아직 우분투를 잘 다루지는 못하지만, root 계정의 권한을 얻으려 하는데.
sudo 커맨드가 없다고 에러가 뜬다.

이때는 su- 명령어를 사용하여 로그인한후 다음과 같이 처리하자.

apt-get update
apt-get install sudo

다시 본인 계정으로 돌아와서 sudo를 사용해본다.
아마도 정상으로 동작할 것이다.

참고 명령어

sudo 명령어 권한을 특정 유저에게만 주고 싶을때는 vi가 아닌 visudo를 사용하여 수정한다.

visudo -f /etc/sudoers

Let’s Encrypt – ACMEv1에서 ACMEv2로 변경하기

학습목표

  • Let’s Encrypt – ACMEv1에서 ACMEv2로 변경하기

Let’s Encrypt에서는 ACMEv1을 2020년 6월 1일부터 중지할것이라는 메일을 보내왔다.
올해 초부터 메일이 왔지만, 잠시 서버쪽 셋팅을 멈추고 있었기 때문에(귀찮았던건 아니…) 무시하고 있었는데.
다음달부터 당장 안된다니.. 미루어놓았던 일을 해치워야 겠다.

주식으로 잃은 돈을 노력으로 얻기 위해서 다시 열심히 학습과 경제적 자유에 대한 열망으로 다시 손을 대기 시작했다.

각설하고 본론으로
Let’s Encrypt에서는 ACMEv1에서 ACMEv2로 변경하기 위한 가이드문서를 읽어보았다.
가이드 문서를 좀 읽어보니, ACME 클라이언트 구현을 위해서 Certbot을 추천하더라.
잘 모르면 추천받는걸로 작업하는게 인지상정.

ACMEv2의 장점 : (star)*인증서를 발급
기본적으로 certbot의 경우 실행시 자동으로 업데이트를 한다.
api주소만 단순히 ACMEv2를 사용하면 동일하게 사용할수 있다.

글로 배운데로 해보려 했지만, 실패

글로 배운 결론은 renewal 폴더 안의 conf 파일의 기존 ACMEv1 주소를 ACMEv2로 변경하면 정상 갱신이 가능하다고 한다.

글로 배운데로 해보려고 하는데, 왜 내 conf파일은 v2로 이미 갱신되어 있냐는 말인가??
server = https://acme-v02.api.letsencrypt.org/directory 로 이미 변경이 되어 있는 상태였다.

유연하게 해결해 나가기

이제 차선책으로 업데이트 전 인증서 상태를 확인해보고, 업데이트 후 인증서가 잘 변경되는지를 확인해보자.

lets encrypt 버전 확인

letsencrypt --version
certbot 0.27.0

인증서 확인 (root로 확인)
root@:~# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
이하 생략

현재 인증서 정보 확인

openssl x509 -noout -text -in /etc/letsencrypt/live/magpiebros.com/fullchain.pem 

ACME 버전 정보 확인은 할수 없었음. 

그래서 그냥 업데이트 하기로 함… ㅠ
뭐 아직 인증서 기간이 남아서 안된다고?

인증서 취소 삭제 다시 설치를 해야 하나….
기간 만료되거나 사용불가면 다시 되겠지라는 마음으로 일단 접는다.

만료되는 6월 다시 확인해보고 조치내용을 공유 예정.

// 인증서 취소 & 삭제
certbot-auto reboke —cert-path /etc/letsencrypt/renewal/www.magpiebros.com.conf
certbot-auto delete —cert-path /etc/letsencrypt/renewal/www.magpiebros.com.conf

crontab -e
min hour1/hour2 * * * /home/../certbot-auto renew —renew-hook “sudo /opt/…/ctlscript.sh restart apache”

pyautogui 라이브러리 사용중 pyautogui.locateOnScreen이 정상동작하지 않을 경우에 대처하는 방법

pyautogui 라이브러리 사용중 pyautogui.locateOnScreen이 정상동작하지 않을 경우에 대처하는 방법.

윈도우 사용자라면 이와 같은 경험은 없을것으로 본다.
하지만 맥 사용자가 화면을 캡쳐해서 사용하려다 보면, 같은 이미지인데 찾을수 없는 현상이 생기곤 한다.

아래 테스트1, 테스트2와 같은 경우이다.
하루 정도 고민을 하며, 집에 돌아오자마자 해보면서 원인을 찾았다.

import pyautogui

# 테스트 1
num7 = pyautogui.locateOnScreen('test.png')
print(num7)

# 결과는 None

# 테스트 2

# 신뢰도를 좀 낮춰야 판단이 가능하다. 이유는? 캡쳐시 사이즈 변경??
img = pyautogui.locateOnScreen('./7.png', confidence=0.8, grayscale = True)
print(img)

나와 같은 고민을 한 맥 유저가 있으신가??
그렇다면 아래와 같은 명령어로 이미지를 캡처한다음에 실행 시켜보도록 하자.
정상으로 이미지를 찾아내는 마법을 볼것이다.

image = pyautogui.screenshot()
image.save('test.png')

원인은 무엇일까?
이미지 사이즈를 비교해보진 않았으나, 맥은 @2x 와 같은 이미지 프로세싱 기술을 사용할것으로 보인다.

귀찮아서 검증은 생략한다.

도움이 되었길.

python lib – pyautogui

본격적인 gui 매크로를 만들기 위해서 사용되는 라이브러리
매크로는 나쁜것만 있는것이 아니다.
자동화 산업의 기본이 되는것이 바로 매크로.

기능은 gui관련 라이브러리로서 마우스 이동등의 제어 하는 라이브러리이다.
해당 좌표로 마우스를 이동해라 등의 기능 사용

설치 방법은 다음과 같다

pip3 install pyautogui

pip3 install pyautogui
Collecting pyautogui
  Downloading https://files.pythonhosted.org/packages/a3/69/c8b0cab7cbc6badbc0079392e5d4b50f3e4be63e0091f0f414bd1ea4ac07/PyAutoGUI-0.9.50.tar.gz (57kB)
     |████████████████████████████████| 61kB 194kB/s 
Collecting pymsgbox (from pyautogui)
  Downloading https://files.pythonhosted.org/packages/ac/e0/0ac1ac67178a71b92e46f46788ddd799bb40bff40acd60c47c50be170374/PyMsgBox-1.0.7.tar.gz
Collecting PyTweening>=1.0.1 (from pyautogui)
  Downloading https://files.pythonhosted.org/packages/b9/f8/c32a58d6e4dff8aa5c27e907194d69f3b57e525c2e4af96f39c6e9c854d2/PyTweening-1.0.3.zip
Collecting pyscreeze>=0.1.21 (from pyautogui)
  Downloading https://files.pythonhosted.org/packages/b7/7d/a0e85da28a96e2ff2f39e682ff84eb92501b564883fde87d92aee29966a2/PyScreeze-0.1.26.

python lib – pyperclip

파이썬에서 클립보드를 사용하는 라이브러리입니다.
사용법은 간단하며, 클립보드에 복사/붙여넣기 기능을 할 수 있는 라이브러리입니다.

사용법은 아래와 같습니다.

pyperclip.copy(문자열 또는 변수)
pyperclip.paste()
pip3 install pyperclip

>>> import pyperclip
>>> pyerclip.copy('hsh copy')
>>> pyperclip.copy('hehe')
>>> pyperclip.paste()
'hehe'
>>> i = '안녕하세요'
>>> pyperclip.copy(i)
>>> pyperclip.paste()
'안녕하세요'

맥에서 pip install error 발생시

파이썬 라이브러리를 설치 하려고 pip 명령어를 사용할것이다.
보통의 사용자들은 윈도우 사용자가 많기 때문에 pip install xxxx를 실행시키라고 할테니까 말이다..

맥에서 pip install xxxx 를 실행하면 아래와 같은 에러가 발생할 것이다.

pip install selenium  
zsh: command not found: pip

맥에서는 pip3를 사용할수 있다.

ip3 install paperclip
Collecting paperclip
  Downloading https://files.pythonhosted.org/packages/6f/6c/e7aade34b79c54034c689f2b5b5ae20f7ac974d28e63f54c06f32e6ca541/paperclip-2.2.4.tar.gz (65kB)
     |████████████████████████████████| 71kB 193kB/s 
Collecting Django (from paperclip)
  Downloading https://files.pythonhosted.org/packages/a9/4f/8a247eee2958529a6a805d38fbacd9764fd566462fa0016aa2a2947ab2a6/Django-3.0.5-py3-none-any.whl (7.5MB)
     |████████████████████████████████| 7.5MB 473kB/s 
중략...

pip을 설치해서 사용할수도 있는데, 굳이…

도움이 되길 바란다.

Python 학습을 시작해보려고 한다.

파이썬으로 의미있는 데이터를 만드는게 목적이였는데.

목적이 약간 변질되어 간다.
지금은 회사에서 학습하는걸 병행하면서, 기초를 쌓을 생각이다.
추후에 실력이 좀 된다면, 누군가가 책을 내보라고 할지도.. 쿨럭

잠깐 꿈을 꿔봤다.
Python 관련 학습 내용을 공유해볼 생각이니..
도움이 될진 모르겠지만, 미약하게나마 도움이 되길 바란다

ios 아카이브에 불필요 앱 삭제

XCode에서 아카이브를 생성할 경우에 보기 싫은 앱들이 나타날 경우가 있다. 개인 작업하는 것들이 회사에 나타난다거나.. 등등

이럴때 아래와 같이 해당 경로로 이동해서 해당 앱 번들 아이디를 지워주고 XCode를 재실행 해주면 더이상 나타나지 않는다.
XCode설정에서 자동으로 동기화 해주는 기능이 꺼져있어야만, 자동으로 다시 생성하지 않을 것이다

ㅊ~/Library/Developer/Xcode/Products/해당 앱 번들 아이디 제거