분류 전체보기 250

ADB 커멘드 정리

# attach된 device 목록 adb devices # 연결된 기기/에뮬레이터의 shell에 접속 adb shell # test apk 설치 adb install -t # apk 재설치 adb install -r # apk downgrade 설치 adb install -d # TCP 연결 대기 (5555 포트) adb tcpip 5555 # IP 주소를 사용해서 기기에 연결 adb connect device_ip_address:5555 # adb 서버 실행 adb run-server # adb 서버 종료 adb kill-server # port forwarding (호스트 포트 6100에서 local:logd로의 전달) adb forward tcp:6100 local:logd

Android 2022.09.15

ADB로 apk 설치하기

Android 디버그 브리지(adb)는 기기와 통신할 수 있도록 지원하는 다목적 명령줄 도구이다. adb 명령어는 앱의 설치 및 디버깅과 같은 다양한 기기 작업에 도움이 되며, 기기에서 다양한 명령어를 실행하는 데 사용할 수 있는 Unix 셸에 대한 액세스를 제공한다. 이 도구는 다음과 같은 세 가지 구성요소를 포함하는 클라이언트-서버 프로그램이다. 일반적으로 안드로이드 개발을 하면서 개발한 앱을 테스트할 때에 adb install을 통해서 연결된 안드로이드 기기에 테스트 앱을 설치하게 된다. adb install [-lrtsdg] - push this package file to the device and install it (-l: forward lock application) (-r: replace..

Android 2022.09.15

파이썬에서 파일 크기 알아내기

파이썬의 대표 모듈들 중 하나인 os를 사용하면 파일의 stat을 가져올 수 있다. 그리고 가져온 file stat을 통해서 파일의 크기를 가져올 수가 있게 된다. import os path = '/User/Yeonwoo/Desktop/test_file.txt' file_stats = os.stat(path) file_size = file_stats.st_size 위의 코드를 통해서 가져온 파일 크기의 경우 바이트 단위이기 때문에 KB로 바꾸고 싶다면 1024로 나누어야 하고, MB로 바꾸고 싶다면 1048576 (1024 * 1024)로 나누어야 한다. 추가로, 위의 코드에서 path를 절대경로가 아닌 상대경로로 하면 NotImplementedError가 발생하게 된다. 따라서, os.abspath 등..

Python 2022.09.14

pyaudio 설치가 잘 안되는 경우

pip3 install pyaudio 알다시피, 파이썬 라이브러리를 설치하려는 경우 "pip install"을 사용하는 것이 일반적이다. 음악 관련 대표적인 파이썬 라이브러리인 pyaudio를 설치하는 경우에도 pip을 사용하게 된다. 그런데, 위의 방법으로 설치를 진행하려고 하면 알 수 없는 이유로 인하여 pyaudio의 설치가 진행되지 않는 경우가 발생하곤 한다. pyaudio 설치 오류 원인은 십중팔구 portaudio 때문이다. portaudio는 음악 재생 및 녹음을 위한 오픈소스 크로스 플랫폼 소프트웨어로 리눅스, 윈도우, 그리고 맥북에서 사용이 가능하다. pyaudio는 내부에서 이 portaudio를 사용하는데, 이 portaudio가 설치되어 있지 않거나, 제대로 설치가 안 되어 있거나,..

Python 2022.09.14

googletrans 'NoneType' object has no attribute 'group' 해결법

pip install googletrans 위의 방법을 통해서 google trans를 설치하게 되면 번역 기능을 실행할 때 다음 에러가 발생한다: AttributeError: 'NoneType' object has no attribute 'group' 이를 해결하는 가장 간단한 방법은 이미 깔려있는 버전을 지우고 에러가 없는 버전으로 다시 설치하는 것이다. pip uninstall googletrans pip install googletrans==3.1.0a0 이제는 번역 기능을 실행해도 에러가 안 나올 것이다. from googletrans import Translator translator = Translator() print(translator) sentence = input("언어를 감지할 문장..

Python 2022.07.28

Softmax 결과의 총합이 1 이하로 나오는 경우

만약 softmax를 썼는데 결과의 총합이 1이 아닐 경우, 이는 softmax를 사용한 위치와 loss 함수의 특성을 다시 한번 살펴봐야 한다. 대표적인 예로, 만약 loss 함수로 CrossEntropyLoss를 쓰는데 모델이 output을 logit이 아니라 softmax의 결과 값을 쓴다면 이와 같은 문제가 발생할 수 있다. PyTorch에서 CrossEntropyLoss는 내부적으로 log_softmax와 NLLLoss를 사용하며, input 값이 probability가 아닌 logit 값이 들어오기를 기대한다. 따라서, softmax와 log_softmax의 중복으로 인해 위와 같은 문제가 발생할 수 있다. 당연히 이는 학습을 불안정하게 하는 원인이 된다. 참고: https://discuss...

AI/PyTorch 2022.07.18

프록시 서버의 개념과 사용 사례

프록시 서버란? 프록시 서버란 서버 앞단에 둬서 캐싱, 로깅, 데이터 분석을 서버보다 먼저 하는 서버를 말한다. 사용 사례 프록시 서버를 통해 포트 번호를 바꿔서 사용자가 실제 서버의 포트에 접근하지 못하게 할 수 있으며 공격자의 DDOS 공격을 차단하거나 CDN을 프록시 서버로 달아서 캐싱 처리를 용이하게 할 수 있다. 대표적인 사용 사례로는 nginx 서버를 node.js로 이루어지 서버의 앞단에 둬서 버퍼 오버플로우를 해결하거나 CloudFlare를 둬서 캐싱, 로그 분석 등을 하는 등의 방식이 있다.

네트워크 2022.06.11

Bash에서 크롬을 종료시키는 방법

터미널에서 bash shell script를 사용해서 크롬 브라우저 탭을 종료시키는 방법을 소개하겠다. pkill --oldest chrome 혹은 pkill --oldest --signal TERM -f chrome 둘 중 마음에 드는 것을 사용하면 된다. 위의 커멘드를 사용하면 그 다음 번에 크롬을 실행시킬 때 "Google Chrome didn't shut down correctly. To repoen .." 과 같은 에러 메세지를 받지 않게 만들어준다. 참고 링크: https://unix.stackexchange.com/questions/34101/exit-google-chrome-from-terminal Exit Google Chrome from terminal Is there a way to ..

Shell script 2022.04.07

Bash에서 node.js 종료시키는 방법

프로그램을 종료시키는 가장 간단한 방법은 역시 pkill을 사용하는 것이다. pkill -f node 혹은 pkill -f nodejs 사용하는 운영체제에서 사용되는 이름 (node/nodejs)를 뒤에 붙여서 pkill을 사용하면 쉽게 node.js 프로세스를 종료시킬 수 있다. 참고링크: https://stackoverflow.com/questions/31649267/how-to-kill-a-nodejs-process-in-linux How to kill a nodejs process in Linux? tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9631/node How do I kill this process in linux(ubuntu)? stackoverflow.com

Shell script 2022.04.07

CIDR (사이더) 계산하는 방법

사이더(Classless Inter-Domain Routing, CIDR)는 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한, 최신의 IP 주소 할당 방법이다. 사이더는 기존의 IP 주소 할당 방식이었던 네트워크 클래스를 대체하였다. CIDR 쉽게 계산하는 방법 (예시1) 192.168.207.2/22 192(옥텟1).168(옥텟2).207(옥텟3).2(옥텟4)/22(비트) / 뒤에 숫자를 32로 뺀다. 32-22= 10 (1)번에서 나온 숫자가 8이상인 경우 8보다 작아질때 까지 뺀다. 10-8=2 (뺀 횟수를 기억한다) (2)번에서 나온 숫자 2를 2의 2승을 한다. 2x2=4 (와일드카드를 구하는 과정임 즉 최대 4개의 IP를 가질 수 있다) 와일드카드 값인 4는 옥텟 1개가 가질..

네트워크 2022.04.06