본문 바로가기
반응형

Develop/etc58

구조적 동시성 이해하기 (feat. goto의 역사) 이 글은 'Notes on structured concurrency, or: Go statement considered harmful'을 번역한 글입니다. 원작자의 허락하에 번역하였음을 분명히 밝힙니다. 좀 더 쉬운 표현을 위해 의역한 부분도 있으니, 원문이 궁금한 분들은 링크를 참고하시길 바랍니다. Thanks to Nathanial J. Smith for allowing the translation. Notes on structured concurrency, or: Go statement considered harmful — njs blogvorpus.org 모든 동시성 API는 코드를 동시 실행할 방법이 필요하다. 다음은 몇 가지 예시다.go myfunc(); .. 2024. 12. 23.
[Git] 머지 커밋 revert 하기 🤔 git revert란? git revert란 일부 기존의 커밋들을 되돌리는 작업이다. git reset과는 다른 것이, git reset은 기존의 커밋을 아예 삭제해버린다. 하지만 git revert는 변경 사항을 되돌린 커밋을 하나 새로 생성한다. 예를 들어 아래와 같은 커밋 A, B, C가 있다고 가정해보자. (알파벳은 커밋을 구분하기 위해 임의로 붙인 이름이다.) 이 때 커밋 C의 변경 내역을 reset, revert를 통해 되돌린다면 어떻게 될까? 커밋 내역을 살펴보면 git reset은 커밋 C에 대한 기록이 아예 없어진다. git revert는 새로운 커밋 X가 생긴다. 커밋 X의 변경 내역을 살펴보면, 커밋 C에서 변경했던 코드들이 그 이전 상태로 돌아가있다. git reset을 사용하는.. 2023. 8. 13.
Windows에서 8080 port 사용이 불가능한 현상 💣 사건의 시작 로컬에서 프로젝트를 실행 시키다가 java.net.BindException: Address already in use: bind 에러가 발생했다. 내가 실행시키려던 8080 포트가 충돌이 일어나서 발생한 에러이다. 해결책은 간단하다. 1. PID 조회 Linux $ lsof -i:포트번호 Windows $ netstat -ano | findstr "포트번호" 2. 프로세스 종료 $ kill PID번호 💥 문제의 발생 8080 포트의 PID를 조회하기 위해 netstat을 실행시켰다. 그런데... 명령어가 잘못되었나 싶어서 이미 구동중인 포트 번호로도 확인해보았다. 😡 의심되는 원인 발견 windows와 8080 port 키워드로 이것저것 구글링 하다보니 hyper-v라는 키워드를 발견하게.. 2022. 9. 18.
[IntelliJ] gradle project 생성 시 불필요한 파일들이 생기는 현상 IntelliJ에서 gradle project를 생성했는데 위와 같은 불필요한 폴더들이 막 생겨났다. 좀 더 정확히 말하자면 gradle project를 생성했을 때까지는 괜찮았는데 프로젝트를 build시키는 시점에서 이상한 폴더들이 생겨났다. 알고보니 Gradle user home이 제대로 설정되지 않아서 발생한 문제였다. 문제 원인은 Gradle user home이 프로젝트 경로로 설정되어 있어서이다. 해당 경로를 수정하면 해결된다. (아래에서 추가 설명) 그렇다면 위 폴더들은 왜 생겨나는걸까? project를 build시켜 gradle이 동작되면 gradle에 대한 캐시가 생긴다. 그래서 일반적으로는 프로젝트와 무관한 특정 위치에서 이 캐시들을 한꺼번에 관리한다. 이 위치는 별도로 지정하지 않았다면.. 2022. 9. 2.
OAuth vs OpenID 예제로 자주 등장하는 `줍줍`은 현재 진행되고 있는 프로젝트 명으로 슬랙 메시지를 백업해주는 서비스입니다. 이 글을 읽기 전에 인증과 인가의 차이를 알고 있다면 훨씬 이해하기 편합니다. 인증; authentication: 사용자의 신원을 확인 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여 🧾 OAuth 🧾 인가 / authorization 서버 자원 소유자가 클라이언트에게 서버 자원에 대한 액세스 토큰 제공 ex: Slack이 줍줍에게 access token을 발급 해당 액세스 토큰을 통해 리소스 서버에 액세스 가능 ex: access token을 통해 줍줍이 Slack에게 사용자 정보 조회 요청 ✅ OAuth 1.0 vs OAuth 2.0 OAuth 2.. 2022. 8. 31.
[OAuth] 슬랙 로그인 구현하기 목차 1. OpenID vs OAuth vs OIDC 2. OAuth 인증 과정 3. 로그인 동의 화면 4. 로그인 API 구현하기 `줍줍` 프로젝트는 슬랙을 이용해 로그인하는 기능을 제공할 예정이다. 해당 기능을 개발하는 과정을 이야기 해보려 한다. 1. OpenID vs OAuth 📚 OpenID, OAuth는 인증, 인가에서 사용되는 HTTP 기반 프로토콜이다. OpenID -> 인증; authentication: 사용자의 신원을 확인 OAuth -> 인가; authorization: (신원이 확인된 사용자에게) 자원에 접근할 수 있는 권한 부여 더 자세한 내용 👉 https://yeonyeon.tistory.com/264 OAuth vs OpenID 예제로 자주 등장하는 `줍줍`은 현재 진행되고 .. 2022. 7. 31.
[Git] 서브 모듈로 중요한 설정 정보 숨기기 ❗ 서론 예전에 OS 환경 변수를 이용해 중요한 설정 정보를 숨기는 방법에 대해 포스팅했었다. (바로가기 링크 👉 https://yeonyeon.tistory.com/234) 이 방법은 값이 변경될 때마다 직접 배포 서버에 들어가 OS 환경 변수 수정이 필요하다는 점이 너무너무 귀찮다. 이를 개선하기 위해 깃의 서브 모듈이라는 개념을 이용해보았다. OS 환경 변수로 중요한 설정 정보 숨기기 🤗 서론 중요한 설정 정보들이 담긴 파일은 공개되면 안된다. 이를 숨김 처리 하는 방법은 여러가지가 있다. Vault, AWS에서 지원해주는 Systems Manager Parameter Store 등 여러 서비스를 활용할 수 있 yeonyeon.tistory.com ❓ 서브 모듈이란? : 레포지토리 안에 또다른 레포.. 2022. 7. 21.
[Git] 커밋에 공동 작업자 추가하기 요즘 페어 프로그래밍, 몹 프로그래밍 등 여러명이서 함께 개발을 진행하는 일이 많았다. 작업이 덜 된 내역을 커밋하기는 곤란하니까 한 사람의 컴퓨터에서 개발을 전부 진행한 뒤에야 커밋하고는 한다. 이럴 때 커밋 기록을 보면 한 사람만 작업한 것처럼 보인다. 페어 / 몹으로 진행했는데도 한 사람의 기록만 남는게 아쉬웠는데 coauthored 라는 키워드를 알게 되었다. 😄 위와 같은 커밋이 아닌 아래 같은 커밋을 하고 싶다면? 함께 개발한 사람도 남기고 싶다면? 커밋 메시지를 아래와 같이 적으면 된다. 이 때 주의할 점은 커밋 메시지와 `Co-authored-by` 사이에 줄바꿈이 2번 들어가야 한다. 1번 들어가니 적용이 안되는 현상이 발견되었다. 😅 커밋 메시지 Co-authored-by: 깃헙핸들명 .. 2022. 7. 20.
[GitHub] PR 리뷰 막기 (feat: draft) 😊 서론 이번 글은 내가 올린 PR 리뷰 막아버리는 것에 대해 포스팅하려 합니다.🤭 제목에 황당해하시는 분들도 많을 것 같습니다. 현재 진행중인 줍줍 프로젝트에서는 현재 진행 상황 공유를 위해 완전히 개발되지 않았어도 Pull Request를 올리기로 했습니다. 하지만 리뷰어들 입장에서는 이 PR이 개발이 완료되어서 올린건지, 아니면 진행 상황 공유를 위해 올린건지 알 수 없는데요. 팀원인 꼬재가 다음과 같은 기능을 소개해주었습니다. 🤗 Convert to Draft Pull Request를 클릭하면 우측 Reviewers 항목에서 'Convert to draft'를 찾을 수 있습니다. convert to draft 버튼을 클릭하면 Pull Request가 아래와 같은 상태로 보입니다. 이제 다른 사용자.. 2022. 7. 14.
반응형