글쓴이 보관물: 나루

나루에 대하여

클린 코드를 지향하는 개발자입니닷~*

구글 애드센스 주소 인증

오늘 드디어 아래와 같이 종이 우편물로 된 구글 애드센스 주소 인증 편지가 도착했다.
12월 6일 발송 후, 14일이 지난 12월 20일에 받았다. 2~4주 정도 걸릴거라고 했는데, 정확히 2주가 걸렸다.

편지를 열어보면 아래 내용과 같이 상세한 설명과 함께 PIN 번호가 적혀있다.

구글 애드센스에 들어가서, 아래의 6자리 인증 PIN 자리에 입력해 주고 제출버튼 누르면 끝.

난생 처음 애드센스 주소 인증이라는 걸 경험하다보니, 처음에 이게 뭐지? 주소 인증이라고? 어떻게 되는 거지? 했는데, 결국 알아보고 기다려본 후 알게된 내용이다.

요약하면, 구글 애드센스 주소 인증을 할 때가 되면 드디어 수익이 USD 10을 넘겼구나 싶은 마음으로 PIN이 담긴 우편물을 기다렸다가, 우편물이 도착하면 인증하면 된다.

구글 애드센스로 주소 인증 처음 해 보시는 분들께 도움이 되길 바라는 마음으로 적어보았다.

구글 애드센스 주소 확인 PIN

구글 애드센스에 들어갔더니, 처음 보는 문구를 발견하였다.
“주소가 확인되지 않아 지급이 보류 중입니다” 라는 Alert 이었다.

구글 애드센스에서 수익금을 지급하기 위해서는 지급받는 주소에 대해 인증을 해야 한다.
이를테면, 휴대전화 인증을 할 때 폰으로 인증문자에 있는 인증번호로 인증하는 것과 같은 원리다.
구글 애드센스는 수익이 USD 10을 초과했을 때 주소 인증 작업에 들어간다.

필자의 경우 어제 PIN을 발송했다고 한다.
2~4주 안에 우편물이 도착하면 우편물에 들어있는 PIN을 입력해주어야 한다.
PIN 발송 후 4주가 지났는데도 PIN을 입력하지 않으면, 광고게재가 중단된다고 한다.

뭐 광고 수익 지급까지는 한참 멀었지만, 처음으로 수익금이 USD 10을 넘었다.
아직 작은 금액이지만 나름 뿌듯하기도 하고, 욕심을 좀 내보고 싶기도 하고 그렇다.

일단은 PIN에 대한 간략한 이야기 끝~*

참고자료
https://support.google.com/adsense/answer/157667?hl=ko

Web Canvas에서 화면에 출력할 문자열의 길이 알아내기

Canvas의 Context에 measureText라는 메소드를 사용하면, TextMetrics라는 객체를 돌려받게 되고, width 속성을 통해서 화면에 그려질 텍스트의 크기를 알아낼 수 있다.

var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var text = ctx.measureText('12345');
console.log(text.width);

참고자료:
https://developer.mozilla.org/ko/docs/Web/API/Canvas_API/Tutorial/Drawing_text

크레온 플러스 API 연동관련 IsConnect 확인 후 강제종료

크레온 플러스 API 연동시 특정 시스템에서 발생하는 문제가 있다.

결론부터 이야기하자면, 윈도우즈 운영체제에서 인식하는 CPU 개수가 1개인 경우에 CpCybos의 IsConnect 값을 확인하는 경우에 실행중인 어플리케이션이 강제 종료되는 현상이 있다. CPU 개수가 2개 이상인 경우에는 문제없이 작동하는 것을 확인했다.

원인을 파악하는 상세한 과정은 아래에 적어두었다. 과정에 대해 궁금하지 않은 사람은 읽지 않아도 괜찮다.

테스트한 머신은
Vultr 가상 머신 1 CPU, 2G RAM
python 3.9.6
pywin32 302

필자가 작성한 파이썬 코드에서 IsConnect에서 문제가 생기는 것을 확인하고, 문제를 파악하기 위해서 다시 작성한 코드는 아래와 같다.

import win32com.client
import time

print("START")
cp_cybos = win32com.client.Dispatch('CpUtil.CpCybos')
print("LOADED")
a = time.time()
is_connected = cp_cybos.IsConnect
b = time.time()
d = b - a
print("%.8f" % d)

for i in range(10):
print(i)
time.sleep(1)

print("END")

화면 출력 결과는 오류 없이 아래와 같이 출력되고 끝난다.

START
LOADED
5.55898523
0
1

너무 당황스러웠다, For Loop을 돌다가 어플리케이션이 강제종료된다는 것은 상식적인 코드의 실행결과가 아니었다.

흥미로운 것은 IsConnect 값을 얻어오는 과정이 문제가 생기지 않는 머신에서는 1초 미만의 시간만 걸리는 한 편, 문제가 생기는 머신에서는 5초 이상의 시간이 걸린다는 것이었다.

집에 있는 PC에서도 동일한 python 버전과 동일한 버전의 pywin32 라이브러리를 사용했는데, 결과가 달랐다.

1차적으로는 OS 버전이 달랐기 때문에, 혹시나 하는 마음으로 집에 있는 운영체제와 같은 버전의 윈도우를 Vultr의 동일 사양의 인스턴스에 설치해보았다. 하지만 결과는 같았다. 동일한 문제가 생기고 있었다. OS 버전의 차이가 영향을 주는 게 아니라는 것을 확인했다.

크레온 플러스 API Q&A 게시판에서 관련 게시물들을 검색하다가, “Re : 비주얼 스튜디오 닫힘 현상”이라는 게시물을 확인했고, 디버깅 하는 경우에는 “메모리 보안 프로그램 사용”을 끄고 사용해야 한다는 것이다.

그래서 동일한 시스템에서 “메모리 보안 프로그램 사용”의 체크를 해제하고 크레온 플러스를 실행하니, 정상 작동이 되는 것이다. 그러면 보안 프로그램 끄고 쓰면 되겠네 싶겠지만, 집에 있는 피씨에서는 보안 프로그램을 끄지 않고도 잘 된다. 보안 프로그램을 쓸 수 있는 PC와 쓸 수 없는 PC에는 어떤 차이가 있어서 그런 것일까 의문이 들었다.

가상 머신이라서 안 되는 것일까 싶은 생각이 들어서, 현재 개발용 머신으로 사용하는 Ubuntu 20.04에 Gnome Boxes 위에 동일한 윈도우즈를 설치하고 테스트해봤다. 전혀 문제가 생기지 않았다.

그렇다면 Vultr 서비스에 어떤 문제가 있어서 그런 것 아닐까 싶었다. 그런데 지난 번에 사용했던 $20 짜리 인스턴스는 문제가 생기지 않았었는데, 왜일까 싶은 생각이 들었다. 현재 테스트한 Vultr의 인스턴스는 CPU 1개짜리, 잘 되던 인스턴스는 CPU 2개짜리 였다. 잽싸게 떠놓은 Snapshot으로 CPU 2개짜리 인스턴스를 띄우고 테스트 해 봤고, 잘 작동하는 것을 확인했다.

이게 정말 원인이라면 Gnome Boxes에서도 동일한 문제가 생겨야 한다는 생각으로 Gnome Boxes의 CPU 개수를 1개로 변경하고 다시 테스트 해봤는데, 동일한 문제가 생겼다.

결론을 다시 정리해 보았다.

첫째, AOS는 CPU 개수가 1개인 머신에서 크레온 플러스의 IsConnect 값을 얻어오는 과정에서 문제를 일으킨다.

둘째, 가상머신이나 클라우드 서비스와는 아무 상관이 없다.

해결책
IsConnect 값을 얻어온 이후에 얼마 안 있다가 어떠한 오류 메시지도 없이 작성한 어플리케이션이 종료된다면, CPU 개수를 운영체제가 몇 개로 인식하고 있는지 확인하고, 만약 1개라면 2개 이상인 머신에서 구동한다.

끝!

리눅스 운영체제에서 타임존 설정하기

클라우드 서비스를 이용하게 되면 기본적으로 시간은 UTC +00:00 기준으로 설정된다. 한국시간 기준으로 타임존을 설정하려면 timedatectl 명령어를 사용하면 된다.

우선 timedatectl만 입력하면 상태값들을 확인할 수 있다.

그리고, 아래와 같이 입력하면 Asia/Seoul 기준의 타임존 설정이 끝난다.

sudo timedatectl set-timezone Asia/Seoul

제로웨이스트챌린지 10일차

양말 바닥도 뭐 엄청 성하진 않지만, 그래도 조금이라도 더 신을 수 있으면 신어보자공! 엄마 아빠의 바느질을 어깨너머로 배운 서당개 40년 실력은 역시 그냥 서당개구나ㅋㅋ오늘은 10일차 챌린지!

제로웨이스트챌린지 9일차

화장실에서 대사를 치른 후에 휴지 조금만 사용하기!

사실 계속 줄여왔다. 6장을 사용하다가 너무 많이 쓰는 거 아닌가 싶은 생각에 5장, 그리고 4장까지 줄였는데, 3장도 해볼만 하겠다 싶어서 3장에 도전했다. 그리고 성공!!

반 접고, 1/3씩 접은 후, 1차.
다시 반 접고, 2차.
다시 반 접고, 3차!

오늘은 9일차 챌린지!

차별이 아닌 빛나는 별이 될 수 있도록!

‘차별이 아닌 빛나는 별이 될 수 있도록!’ 아동권리증진 캠페인 영상을 보고ㅡ 함께 참여해요!

아동권리캠페인 영상 -> https://youtu.be/jCnph5j9OXc

11월 19일 세계아동학대예방의 날을 기억하며,
대한민국에 거주하는 모든 아동이 기본권을 보장받는 사회가 될 수 있도록 아동권리증진 캠페인 영상을 만들었습니다.
모든 아동의 기본권이 보장될 수 있도록 우리모두 함께해요!

[함께 참여할 수 있는 방법]
방법1. 영상 좋아요 누르기!
방법2. 개인SNS에 아래 해시테그를 복사&붙여넣기 후 영상 공유하기!
방법3. 11월 19일 세계아동학대예방의날을 알리기!

#11월19일 #세계아동학대예방의날 #차별아닌빛나는별 #우리모두함께해요 #아동권리증진캠페인 #이주아동 #UN아동권리협약 #재단법인바보의나눔 #사단법인희망씨