남는 맥미니에서 도커로 사이트를 하나 띄웠는데 백엔드가 너무 느리다.
프론트는 vue로 만들어진 정적파일이고, 백엔드는 golang으로 빌드된 실행파일이다.
백엔드에서 API응답이 늦다.

기존에 리눅스에서 서비스되던것이라 다른점은 호스트가 MacOS라는것.

백엔드는 느릴만한 로직이 없고.. 기존에도 빠르게 동작했었다.

결국 답은 찾았는데, 백엔드는 임베디드 데이터베이스를 쓰는데 파일을 로컬에 저장한다.
이 디비를 MacOS에 두고 도커에 마운트해 쓰는데 맥의 경우 파일시스템 동기화에 문제가 있는지 느리다고 한다.

해결방법은 volume 마운트 설정에 :delegated를 붙이라는것.
그렇게 하면 파일시스템 동기화를 비동기로 하면서 좀더 빨라진다고 한다.

version: '3.7'

services:
  app:
    build: .
    container_name: mysite-net
    ports:
      - "8003:80"
    volumes:
      - /Volumes/data/www/mysite.net/db_data:/data/db_data:delegated

실제로 이렇게 설정한 후 다시 돌리니 많이 빨라졌다.

또 문제가 생기면 도커를 포기하는 방법밖에...

아이가 어린이집으로부터 종종 옮겨오긴 하지만, 올 겨울들어 유독 감기와 기침을 자주 옮겨와서 몇달동안 아이가 기침하느라 밤잠을 설치는 날이 많았었는데 보통의 부모들처럼 이비인후과를 자주 들락거리는 날이 많아졌다.
처음엔 증상을 치료하는 효과가 좋은 듯 하다가 내성이 생겼다며 종류를 바꿔가며 항생제를 밥먹듯 먹인다.
그러다 중간에 아이가 배가 아프다는 경우도 생겼다. 잘은 모르겠지만 항생제의 부작용으로 장이 안좋아진게 아니었나 싶다.
결국, 이게 답은 아닌것 같아 이비인후과 대신 치료법을 바꿔보기로 했다.

바로 한의원...

종종 방문해 진맥을 하고 스티커 형태의 안아픈 침을 붙이고 뜸도 했다. 한약이 쓰다고 절대 안먹으려고 하는걸 꿀 조금 타서 먹이고 있다.

증상을 고치려 하는 이비인후과와는 달리, 원인을 해결하여 치료한다는 한의원의 방향성이 더 맞는것 같다. 한약을 두달째 먹고 있는데 치료 한 2주쯤부터 기침을 하지 않았고 노란콧물이 다 없어졌다. 그후로 내 기억엔 감기에 걸리는 걸 본 기억이 없다. 기침도 하는거 같지 않고 밤잠을 설치지도 않는다. 물론 한의원 치료가 비싸긴 했다. 하지만 몸을 해치지 않는 더 건강한 치료방법인 건 확실하다.

내성균이 더 위험하다며 대부분의 경우 (수술같은 특수한 경우를 제외하고) 항생제를 되도록 쓰면 안된다는 어떤 약사의 유튜브를 우연히 보고 최근 경험을 적어본다.

등기부등본이 필요해서 인터넷등기소 사이트에 접속해 이것저것 프로그램을 깔고......
결국 진입에 성공하고.. 겨우 결제도 하고... 출력 전단계까지 진입했다.

그런데... 아무리 해도 프로그램이 안뜨는거다.

평소에 맥을 쓰다보니 한참 고민하다가.. 프로그램 로그가 남았을거라는 생각에 이벤트 뷰어로 들어가봤다.

다행히 로그가 남았네...

VC런타임 라이브러리가 설치가 안돼 그런거 같은데 왜 알려주지도 않고 죽어버리면 어쩌라고... 32비트용... 으로 설치해야 하네?
MS피셜 더이상 지원하지 않는다는 VC 2008 SP1용 X86(32비트)용 런타임 라이브러리를 다운받아 설치하면 될거 같다. 

https://learn.microsoft.com/ko-kr/cpp/windows/latest-supported-vc-redist?view=msvc-170

 

지원되는 최신 Visual C++ 재배포 가능 패키지 다운로드

이 문서에서는 최신 버전의 Visual C++ 재배포 가능 패키지 패키지에 대한 다운로드 링크를 나열합니다.

learn.microsoft.com

그랬더니...

이제 프린트 하는 화면이 뜬다. 휴...

 

지금까지 이런 경우가 없었던것 같은데 계속 nginx의 proxy_cache설정을 해도 캐시가 MISS난다.
원인을 찾다보니...

proxy_buffering off;

설정이 include한 파일에 들어가 있어서....

AWS IVS 테스트 중 nodejs로 재생토큰 생성해 봤는데 혹시 나중에 참조할까 싶어 메모용..

const fs = require("fs");
const jwt = require('jsonwebtoken');


privateKey = fs.readFileSync('./private-key.pem');

expire = parseInt(new Date().getTime() / 1000, 10) + 60

payload = {
	"aws:channel-arn": "arn:aws:ivs:ap-northeast-2:538111149902:playback-key/vzVAAA2pkebk",
	"aws:access-control-allow-origin": "*",
	"exp": expire,
}

token = jwt.sign(payload, privateKey, { algorithm: 'ES384' });

url = "https://3fefaaab8240.ap-northeast-2.playback.live-video.net/api/video/v1/ap-northeast-2.538111149902.channel.86CWWWWOCiaSr.m3u8?token=" + token

console.log({url})

AWS의 Lightsail을 하나 쓰고 있는데, 전과는 다른 이유로 갑자기 SSH 로그인이 되지 않는 문제가 발생했다.

This account is currently not available

음... 이건... /etc/passwd에서 로그인을 안되게 해 설정해 놓은 경우 그러던데..
그런데 내가 만지지도 않았던거 같은데 왜??

전에 비슷한 경험을 한 게 있어 큰 당황 없이 해결해 본다.

1. 스냅샷을 뜬다.
2. 스냅샷으로 새 인스턴스를 생성하며, 시작스크립트에 다음처럼 명령을 넣는다. (그렇게 되면 인스턴스가 새로 시작될때 루트 권한으로 해당 명령이 실행된다. 해당 명령은 ubuntu 계정의 쉘을 bash로 세팅해서 로그인이 가능하게 하는 명령이다.)

3. 새 인스턴스에 SSH가 로그인이 되는것을 확인한 후 기존 인스턴스를 지운다.
4. 기존 인스턴스에 설정된 고정아이피를 새 인스턴스에 할당한다.

해결은 잘 됐다..

그런데... 왜 자꾸 이런 일이 일어나지? 설마 누가 자꾸 만지나??? 

만들어놨다가 잠깐 쓰고, 깜빡하고 있었는데.. 아 이런거 만들었었지..

micro usb로 RF모듈에 전원이 공급이 되고,
RF모듈이 무선리모콘의 신호를 받으면 MCU(attiny85)에 일시적으로 전원이 공급이 되게 된다.
MCU에 프로그래밍된 펌웨어에 따라서 특정 적외선 리모콘 신호를 IR Transmitter 모듈을 통해 전송한다.

이걸 뭐하러 만들었냐면.. 아파트 공동현관을 여는 버튼이 월패드/주방화면 두군데 있는데 걸어가기가 너무 귀찮아서...
방에서 RF리모콘을 누르면 주방의 기기에 문여는 적외선 리모컨 신호를 쏴서 공동현관을 열도록 하는 기능을 했었다.
하지만 좀 지저분하게 생겨서 손님이 와서 치워놨었는데... 그냥 구석에 들어가 나오지 못하게 된것이었다.

그냥 제품화된 중국산 적외선 트랜스미터를 사는 게 좋을것 같다ㅋ

집에 안쓰고 굴러다니던 보조배터리가 있었습니다. 아마도 어딘가에서 공짜로 받은것 같은데 출처를 모르겠네요.

조금 작은편이고 샤오미 로고가 찍혀 있습니다만.. 샤오미의 짝퉁으로 보입니다.
샤오미는 그래도 중국산중에서는 마감이 괜찮은편인데 어설프게 돼 있습니다.

뒷면에 보면 간단한 스펙이 있습니다. 용량이 10000mAh라지만..
충전되는 배터리가 3.7V... USB의 기본 출력인 5V출력을 위해서 승압을 하면 효율도 떨어질텐데...
그리고, 유럽(CE)및 미국 인증(FCC)을 받았다는것도 뻥일것 같네요. 이런 싸구려에..

가운대 플라스틱 부분을 밀면 열수 있을것 같아서 열심히 밀었습니다만 내용물이 나오지 않네요.. 어쩔수 없이 배를 갈랐습니다.
니퍼로 열심히...

충전회로와 배터리가 보이기 시작합니다. 계속 아래로 잘라 나갔습니다.

가장 기본적인 충전 방전 회로만 가지고 있는 단순한 구조 입니다.

이상, 보조배터리 분해기였습니다.

현역에서는 물러났지만, 아직도 테스트기기 겸 공공기관 사이트 접속용 윈도우머신 역할을 하고 있는 2011년 맥북이 있습니다.

충전기와 노트북 사이를 연결해주는 케이블이 다들 아시는 고질적인 문제가 많아 자꾸 케이블이 까지고 헤지고 하는 문제가 생깁니다.
보수하고 보수하면서 써보다가 최근 구입한 맥북의 USB-C형 충전기를 보면서, 저렇게 개조해볼까? 하는 생각이 들었습니다.

커넥터는, 일반 DC 어뎁터용으로 하기로 했습니다. USB나 USB-C 타입으로 하면 혼동할수 있고,
실수로 잘못된 기기를 꽂으면 해당 기기가 위험해질수도 있으니까요.
일단 재료를 이렇게 정했습니다.

재료비는 만원 미만인것 같네요.
이렇게 구성하면 맥북과 노트북 사이의 줄이 고장나면 줄만 교체하면 될것 같습니다.

충전기 줄을 다 잘라내고, 충전기를 분해했습니다. 안에 그냥 본드를 잔뜩 발라 붙여놓았으므로 그냥 강제로 벌려 열었습니다.

그리고 DC 소켓을 납땜하고 구겨 넣었습니다. 

그리고 닫습니다. DC 소켓은 앞뒤로 움직이지 않게 끼워두었습니다.
모양이 좋진 않네요ㅎ 테스트 후 좀 다듬긴 했는데.. 그래도 모양이 좋진 않네요ㅋ

이렇게 뺐다 끼웠다 할수 있습니다.
반대쪽은 DC커넥터와 magsafe2를 변환해주는 어뎁터를 끼워 맥북에 대봅니다.

잘 충전이 되네요.. 이제 선이 문제가 생기면 선만 교체하면 될것 같습니다.

이상 맥북 충전기 개조 후기였습니다.

집에서 계속 굴러다니던 액션캠인 SJ4000WiFi를 분해해 보았다.

SJ4000WiFi 회로 앞면

스피커는 분해하다가 납땜부분이 떨어졌지만 다시 납땜하면 문제는 없다.
와이파이 모듈은 RTL8188ETV를 사용한 모듈이다. 802.11bgn 2Ghz대역에 USB1.0/1.1/2.0인터페이스를 지원한다. 

rtl8188etv.pdf
0.38MB

와이파이 안테나는 메인회로에 프린트하지 않았고 별도의 필름회로로 구현해 놓았다.

SJ4000WiFi 뒷면

 메인 프로세서는 NT96655BG이다. 영상처리에 특화된 기능을 포함하고 있고, 액션캠에 필요한 모든 기능을 다 가지고 있는듯 하다.

Novatek NT96655 Data Sheet.pdf
1.40MB

그 아래에는 플래시 메모리로 추정하지만 관련 자료를 찾지는 못했다. 하지만 저 메인 프로세서와 함께 많은 제품에 응용되고 있는듯 하다.

렌즈 부분을 돌렸더니 렌즈 부분이 스크류처럼 풀려 분리되었고, 가장 아래쪽에 IR(적외선) 필터가 보여 박살내어 제거한 후에 다시 닫았더니
리모콘의 적외선 불빛이 찍힌다. 어두운 곳에서 적외선 플래시를 비추고 이 카메라로 찍으면 야간 촬영이 가능할듯 하다ㅎ

SJ4000WiFi 분해된 상태에서의 동작 확인

 

아이폰이 활성화 됐을 때 적외선을 쏘는 모습을 적외선 필터가 제거된 SJ4000WiFi로 촬영해 보았다.

구글에서 최근에 64비트를 지원하지 않은 앱을 64비트 지원하도록 업데이트 하라는 메일을 보내왔는데,
스토어에 올려진 앱 소스코드를 찾지 못했다.

앱 자체는 간단한 프로그램이라 금방 다시 개발하면 됐지만,
앱에 서명을 같은 키스토어로 해야 업로드가 되는데 키스토어는 어쩔수가 없었다.

그래서 안드로이드 스튜디오에서 새로 키스토어 파일을 생성한 후,
아래 명령으로 pem 파일로 변환하였다. (구글에 신규 키스토어 제출시 pem파일로 전달해야 함, 빨간색 부분은 각자 변경해서 사용하세요. )

 keytool -export -rfc -alias alias -file newkeystore.pem -keystore keystore.file

그리고 나서, 아래 페이지에 접속해 간단히 설명후 키스토어 pem파일을 첨부하여 접수하면
약 2~3일 후 신규 키스토어를 사용해 앱을 업로드할 수 있게 된다.

https://support.google.com/googleplay/android-developer/contact/otherbugs

 

일반적인 문제 - Play Console 고객센터

 

support.google.com

 

맥에 윈도우 키보드를 연결하면 Home키를 누르면 Page Up처럼 동작하고 End키를 누르면 Page Down처럼 이동하는 등 문제가 많습니다.

그런경우 터미널을 열어 아래처럼 명령을 내려 키를 리매핑 해보세요.

mkdir -p $HOME/Library/KeyBindings
echo '{
/* Remap Home / End keys to be correct */
"\UF729" = "moveToBeginningOfLine:"; /* Home */
"\UF72B" = "moveToEndOfLine:"; /* End */
"$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
"$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
"^\UF729" = "moveToBeginningOfDocument:"; /* Ctrl + Home */
"^\UF72B" = "moveToEndOfDocument:"; /* Ctrl + End */
"$^\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; /* Shift + Ctrl + Home */
"$^\UF72B" = "moveToEndOfDocumentAndModifySelection:"; /* Shift + Ctrl + End */
}' > $HOME/Library/KeyBindings/DefaultKeyBinding.dict

아주 깔끔하게 문제가 해결됩니다~

맥(MacOS)에서 창이 화면 밖으로 나가 돌아올 생각이 없을 때 참 곤란하다..

결국, 맥의 스크립트 편집기로 

tell application "System Events" to tell window 1 of process "Telegram"
    set position to {30, 50}
end tell

이런 코드를 짜서 실행했더니 보이는 영역으로 돌아왔다.

가끔 외부 모니터를 쓸 때 발생하는 문제인 듯 하다.

Objective-C로 개발한 프로젝트에서 Swift라이브러리를 쓰다 보면 이런 에러를 만날때가 있다.

Linker error:
ld: warning: Could not find auto-linked library 'swiftFoundation'
ld: warning: Could not find auto-linked library 'swiftDarwin'
ld: warning: Could not find auto-linked library 'swiftCoreFoundation'
ld: warning: Could not find auto-linked library 'swiftCore'
ld: warning: Could not find auto-linked library 'swiftCoreGraphics'
ld: warning: Could not find auto-linked library 'swiftObjectiveC'
ld: warning: Could not find auto-linked library 'swiftDispatch'
ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'
Undefined symbols for architecture arm64:

뭐 이유는 스위프트 라이브러리를 자동으로 링크할 수 없다는 뜻이겠지만, 원인은 Objective-C와 Swift간 브릿지가 없어서 발생된다.

복잡한 해결 방법이 있지만 가장 쉽게 해결하는 방법은
프로젝트에 빈 Swift 파일을 하나 만들어 추가해주면 된다. 생성할때 브릿지 헤더를 생성할거냐고 물어볼때 생성하겠다고 해줘야 한다.

갑자기 잘 쓰던 트랙패드가 어느순간 먹통이었다. 트랙패드로 움직일수는 있는데 클릭(?)이 안되는 문제..

하드웨어적으로 눌러지지 않는다 라는 느낌이라 X됐다... 서비스 받아야 하는건가 하고 생각하다가.

PRAM리셋 해도 안되고, SMC리셋을 하니 정상으로 돌아옴.

 

+ Recent posts