모도리는 공부중

2023.04. 개발 궁금증 링크 일기 본문

내 지식 정리/날것 그 자체

2023.04. 개발 궁금증 링크 일기

공부하는 모도리 2023. 4. 3. 15:21
728x90
반응형

 

 

 

 

 

 

[협업] 협업을 위한 Git Flow 설정하기

https://overcome-the-limits.tistory.com/7

 

Directory> pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 58.1.0
Directory> C:\Python310\python.exe -m pip install --upgrade pip
Requirement already satisfied: pip in c:\python310\lib\site-packages (22.0.4)
Collecting pip
  Using cached pip-23.0.1-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.0.4
    Uninstalling pip-22.0.4:
ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다: 'c:\\python310\\lib\\site-packages\\pip-22.0.4.dist-info\\entry_points.txt'
Consider using the `--user` option or check the permissions.

WARNING: You are using pip version 22.0.4; however, version 23.0.1 is available.
You should consider upgrading via the 'C:\Python310\python.exe -m pip install --upgrade pip' command.
Directory> C:\Python310\python.exe -m pip install --upgrade --user pip
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
Requirement already satisfied: pip in c:\python310\lib\site-packages (22.0.4)
Collecting pip
  Using cached pip-23.0.1-py3-none-any.whl (2.1 MB)
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
Installing collected packages: pip
  WARNING: The scripts pip.exe, pip3.10.exe and pip3.exe are installed in 'C:\Users\siryu\AppData\Roaming\Python\Python310\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-23.0.1
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
WARNING: You are using pip version 22.0.4; however, version 23.0.1 is available.
You should consider upgrading via the 'C:\Python310\python.exe -m pip install --upgrade pip' command.
Directory> pip list
WARNING: Ignoring invalid distribution -ip (c:\python310\lib\site-packages)
Package    Version
---------- -------
pip        23.0.1
setuptools 58.1.0

https://seong6496.tistory.com/172

~(물결표) 붙은 폴더 삭제 완료

이제 경고 문구는 안 뜨는데 다시 venv를 재설치해도 여전히 업데이트 전인 22.0.4가 끈질기게 따라 붙는다.

그리고 에러도 계속되는 상태.

...

이미 설치된 초기 버전 손 보는 건 어려운 것 같다. 그냥 가상환경 만들고 거기서 업데이트해주는 방향으로 가야겠다.

 


외래키를 안 쓰는 이유

예전에 사수님께 개발이 완료되는 시점에는 fk를 다 걸어야 맞겠지만 개발도중에는 테이블 컬럼이 언제든 변할 수 있으므로 fk를 걸지 않고 하는 것이 더 낫다라는 말을 들었다. 그래서 알고 있던 사실이지만 다른 이들의 생각도 궁금해져서 검색.

 


python 버전별 차이

  • python 버전 별 문법 차이가 많이 나나요?
    • v3.x는 최신 버전을 사용해도 하위 호환성이 보장되므로 문법적 문제는 없음
    • 다만 최신 버전일수록 외부 라이브러리 지원이 늦을 수 있음
      • 핵심적인 라이브러리 같은 경우 해당 버전의 wheel 발표 이전일 수 있음
      • Active Python Releases의 End of support 정보 확인 필요
  • 공식 문서들?
  • 파이썬 Maintenance Status - bugfix/security
    • Should You update to the latest python bugfix version?
      • New features are developed during the first twelve months and are released in alpha versions.
        새로운 기능은 첫 12개월 동안 개발되며 알파 버전으로 출시됨
      • The version is thoroughly tested and prepared for release in the next five months. Beta and release candidate versions are published during this time.
        이 버전은 철저한 테스트를 거쳐 향후 5개월 내에 출시될 예정. 이 기간 동안 베타릴리스 후보 버전이 게시됨
      • Bugfix releases are published regularly for eighteen months after the feature release.
        버그 수정 릴리스는 기능 릴리스 이후 18개월 동안 정기적으로 게시됨
        • 약 2개월마다 릴리스되며 운영 체제별 설치 프로그램과 함께 패키징됨
      • Security fix releases are published as needed until five years after the feature release.
        보안 수정 릴리스는 기능 릴리스 이후 5년까지 필요에 따라 게시됨
        • 필요할 때만 릴리스되다보니 소스 코드 형식으로만 게시
      • Python의 최신 버그 수정 버전으로 업데이트할 때 주의할 사항
        • 한 버그를 수정하면 다른 버그가 생기는 경우가 있음 → 일부 버그 수정 버전에는 예기치 않은 회귀가 포함될 수 있음
    • 이 문서에서 말하는 내용은 결국 최신 bugfix 버전을 사용하라는 게 주 내용임. 하지만 내가 원하는 내용이 보이지 않아서 재검색.
  • 검색어: [파이썬 3.10  Building wheel for backports.zoneinfo (pyproject.toml) ... error   error: subprocess-exited-with-error]
backports.zoneinfo;python_version<"3.9"

Support for backports.zoneinfo in Python 3.9+ is currently minimal, since it is expected that you would use the standard library zoneinfo module instead.

 

문제 해결 방법 찾은 것 같으니 새로 글 써야겠다.

 


Git commit message Convention

저번 달엔 알아두고 제목 라인만 간단히 적용해보는 방식으로 사용했다. 이번 달부터는 본문도 작성하여 시간이 지나고 봐도 알아볼 수 있게 하고자 조금 더 내용들을 확인해보던 중, 커밋 메세지도 템플릿을 만들어두고 사용할 수 있다는 것을 알게 됐다.

<Git> 커밋 메시지 컨벤션 : 중요성 및 규칙 (feat. 템플릿) (tistory.com)

신기한 세상이다.

 

git 커밋 명령시 여러줄을 입력하는 방법 (webisfree.com)

커밋 작성 시에 여러 줄을 어떻게 입력해야 하나, 엔터를 눌렀는데 그대로 커밋되어버리면 어떡하지? 하는 생각에 검색해봤었다. 그리고 쌍따옴표(")만 열려 있으면 닫히기 전까진 아무리 엔터를 눌러도 문제 없다는 사실을 위 글 덕분에 확인하고 마음이 편해졌다.

 


프로젝트 이슈 관리

  • git commit message convention의 경우 이슈 넘버를 푸터에 적는 게 일반적이지만 비트버켓에서는 타이틀에 적는 게 일반적이어 보인다. 이와 관련하여 Attlasian JIRA Docs 이슈란 무엇인가 읽는 중..

 


Kafka

 

 


pem키로 로그인이 안되는 상황

Bad permissions. Try removing permissions for user: NT AUTHORITY\\Authenticated Users (S-1-5-11) on file D:/backup/SSH_Key/project.pem.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'project.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "project.pem": bad permissions
private@22.33.444.55: Permission denied (publickey).

Uvicorn? Gunicorn?

ASGI와 Uvicorn 그리고 Gunicorn과 함께 사용하기

 


Android - foreground와 background

 


안드로이드 위치 정보 백엔드 단으로 전송하기

ChatGPT에게 물어봤더니 xml이랑 java 코드가 나오길래 이게 뭔 소린가 싶어 검색을 해봤다

위 내용만으로도 어리둥절...해서 gpt랑 다시 이야기 나눠보니, 안드로이드 운영체제 종속이므로 안드 앱을 만들어서 위치 받은 후 http 통신을 통해 보내야 한단다. 뭐여, 그럼 나 앱도 만들어야 돼?

룰...루랄ㄹ....

Java vs Kotlin vs Flutter

앱을 만들어야 한다는 가정 하에 정보를 알아야 하니까, 정보 조사!

 

Kotlin - Android 앱

Swift - IOS 앱

Flutter / React Native - 둘 다 만들 수 있음

 

....... 리액트 네이티브도 가능하다보니 리액트를 다루시는 동료분께서 만드는 상황으로 이어졌다.

ㅎ... 힘내요.. 저도 빨리 소켓통신 구현 준비할게요ㅠ

WebSocket 통신 구현

나는 기왕이면 NestJS에 더 친숙해지도록 쌩 Express 베이스보다는 Nest 베이스로 된 것을 찾고 싶다. 다시 검색.

nest로 어떻게든 하고 싶었는데, 아직 nest 공부가 더 필요한 것인지 아니면 Express보다 조금 더 거쳐야할 관문이 많아서인지 계속 어렵고 안된다. nest로 구현하는 웹소켓 통신은 개인적으로 공부하면서 시도해보도록 하고 익숙한 Express로 먼저 구현하면서 학습해봐야겠다.

보안도 신경 써줘야 하니까 이것도 나중에 읽어볼 것.

 

아.......

역시, express로 먼저 구현하면서 이해하고 나니까 nest 이해도 조금 수월하네.

express에서 간단하게 구현된 socket.io 부분이 nest로 넘어가니까 모듈화하고 의존성을 주입하면서 조금 알아보기 어렵게 됐던 거였다.

이거 구현하면서 하나씩 nest로 바꾸면 어떻게 되는지 확인해보고 정리하는 시간을 들여야겠다.

이번 과업 시간은 내게 정말 많은 공부가 될 게 보인다. express도 내꺼 만들고, ts와 nest도 내꺼 만들자.

빨리 자격증 끝내고 밀린 강의 들으면서 해야겠다.

그리고, 구현하는 동안 docs는 떼어놓을 수 없을 것 같다. 함께 가자.


여러 대에서 보내오는 신호 처리

분산 처리해야 할까? 우선, Kafka에 대해서 좀 더 둘러보자. 이에 대한 내용은 위쪽에서 다시 정리.

socket.io로 처리하는 것의 경우 클라이언트가 접속할 때마다 아이디가 달라지기 때문에 그 아이디를 고정값으로 세팅할 순 없을 것 같다. 문서를 봤을 때 token을 통한 인증 처리가 가능해보였는데, 이에 대한 부분도 검토해야할 듯.

 

 


무중단 배포 - PM2 vs DOCKER

기존에 배포는 PM2만 이용해온 입장에서 아직 이것도 다 파악하지 못했는데 무작정 DOCKER로 넘어가기 보다 각각 파악하고 장단점을 분석한 후 활용하는 게 더 좋겠다는 생각이 들었다.

PM2 클러스터 모드라는 걸 예전에 검색하며 보긴 했지만 전 사수님이 그냥 바로 실행하는 포크 모드만 써보신 것 같았고, 당시에 꼭 필요성이 있어보이지 않았기에 아주아주 단순하게 pm2 start '노드 실행 명령어(package.json scipt)'만 이용했었고, 조금 발전해서 개발용으로 --watch 정도만 활용했었다.

전 사수님은 퇴사하셨고 최근에도 에러 발생으로 인해 프로세스가 멈춘 경험을 가지고 있기에 이를 어떻게 해결해야 할지 고민이 됐다. 그러던 중, 새로 시작한 과업으로 인해 pm2를 다시 손보다가 클러스터 모드의 장점을 알게 되며 재미있어서 이것저것 ecosystem.config 파일 대신 명령어로 우선 실행하려고 하는데 자꾸 -i 옵션을 줘도 클러스터 진행이 되지 않고 포크 모드로만 여러 개 프로세스 구동이 됐다. fork 모드로 실행되니 서로 내 port 내놓으라며 싸우고 승자 하나만 남은 채로 나머지가 errored......

답답함을 이루 말할 수 없을 지경에 이르렀다. gpt한테 물어봐도 같은 말만 반복하며 '-i 옵션을 주면 된다, 그래도 안된다면 pm2-intercom을 이용해보는 건 어때?'하는데 내가 원하는 방법 같진 않았다.

 

못 참겠다, 꾀꼬리. 내가 직접 찾아보마.

구글링을 진행한 결과 조금 속시원한 해결법을 찾아 적용하게 됐다.

 

[블로그] cluster와 pm2 - mongoT

 

이 분은 아예 package.json에 pm2 명령어를 넣어서 진행하셨다. 이 방법으로 -i 옵션을 주자 나도 드디어 원하던 설정을 할 수 있게 됐다. 하지만 올바른 방법은 아닌 것 같다. 이렇게 하면 scale up down은 괜찮아도 pm2 reload 시 문제가 있을 것 같아 보인다. (물론 reload에 대한 방법도 알려주셨지만, 음.... 직접 해보지 않았기에 겁내는 거겠지.)

시간을 조금 들여서 pm2 ecosystem.config.js 설정하는 방법을 파악해서 적용해보는 게 좋을 것 같다.

 


로그가 찍힌 시간대 확인

 

 

 

 

 

728x90
반응형
Comments