728x90

 

올해부터 시작됐어요♥

 

고향사랑 기부제

https://ilovegohyang.go.kr/main.html 

 

고향사랑e음

고향사랑e음 시스템을 통해 기부희망 지자체에 열악한 지방재정 확충에 기여 하고, 대상지자체로부터 답례품을 제공받을수 있는 종합정보시스템

www.ilovegohyang.go.kr

 

고향사랑기부제는 부족한 지방 재정을 확충하고 지역경제를 활성화하기 위해 올해 1월부터 시행됐어요.

 

개인이 지방자치단체에 기부를 하면 10만원까지 전액 세액공제를 해 주고,

여기에 3만원의 답례품을 추가로 받을 수 있어요. 

 

23년 세액공제를 위한 기부는 23.12.31(일)23:30에 마감돼요. (기부금 결제가 완료되어야 정상적인 기부로 인정)

마감에 가까울수록 대기가 있어 기부가 어려울 수 있으니, 가금적 12.29(금)까지 기부를 해주세요. 

 

원하는 지역에 기부할 수 있어요.

내 주소지를 제외한 전국 어디든 선택할 수 있어요. 만약 사는 곳이 서울이라면 서울을 제외한 지자체를 골라야 해요.

(답례품이 마음에 드는 지역을 선택해도 되겠죠?^^)

 

*내가 기부한 지역의 답례품만 받을 수 있어요.

 

지역별 대표 답례품 현황

 

서울 서울사랑상품권

경기 쌀, 채소, 전통주, 고추장, 캠핑장 숙박권

부산 미역, 명란젓, 고등어, 다시마, 돼지국밥

경북 샤인머스캣, 참외, 홍시, 대게, 과메기

강원 커피, 와인, 건어물, 꽃차

전남 군고구마, 영광굴비, 템플스테이 이용권

 

*자세한 답례품은 고향사랑이음 홈페이지에서 확인할 수 있어요.

 

 

참여방법

1. 고향사랑e음 홈페이지 회원가입

2. 기부하기 클릭 → 원하는 지역 선택

3. 기부금의 30% 는 포인트로 적립

4. 답례품을 선택하고 포인트로 결제

 

★ 결정세액이 10만원 이상이라면 무조건 참여하는 게 이득★

728x90
반응형
728x90

히녹스 위치

나오는 아이템들

  • 왕가의 창
  • 왕가의 검

연관 퀘스트

  • WANTED 히녹스
728x90
반응형
728x90
 

최근 OKR 도입 사례가 많아지면서 OKR의 대표적인 성공 사례로 존 도어가 구글에서 확장 시킨 OKR 사례들을 알 수 있었는데 OKR 파워 한번 정리를 하면서 OKR을 이해 해보고자 한다.

OKR 이해

1. OKR은 본질을 담은 목표관리 방법이다.

OKR은 Objective + Key Result로 나눈다.

  • O는 구성원들에게 동기부여가 되는 가슴뛰는 목표여야 한다.
  • O는 구성원이 ‘달성해야 할 의무'가 아니라 ‘이루고 싶은 소망’으로 받아들여야 한다.
  • 가슴뛰는 목표를 이루기 위해서 달성해야 할 구체적인 목표들로 KR을 세운다.

2. OKR로 얻을 수 있는 조직의 힘

조직 전체의 목표와 팀의 목표가 Align 되려면 목표는 ‘오르내려야’ 한다. 오르내리는 과정에서 조직 전체의 기대와 팀의 도전 가운데 목표 합의가 이루어지게 된다.

2.1 집중: 우선순위를 갖고 일한다.

‘3개월의 OKR을 수립했다.’ 라는 뜻은 우리는 앞으로 3개월 동안 다른것은 못해도 이것 만큼은 달성 할 것이다.'라는 의미가 들어가 있다. 집중할 일의 우선순위를 정했다는 뜻을 내포한다.

집중할 일(KR)의 수준도 측정가능해야 한다는 것이 원칙이다. ('채용 많이하기'가 아니라 ‘채용을 3명하기’가 좋은 예)

만약 OKR 외의 일이 들어오게 된다면 OKR에 집중하기 위한 대안이 수립되어야 한다.

2.2 연결성: 조직이 인정하는 일을 한다.

조직 전체의 목표가 팀의 목표를 질적(정성), 양적(정량)으로 연결되면,

  • 팀의 목표달성이 조직의 목표달성으로 이루어질 수 있다.
  • 내가 하는일이 조직이 인정하는 일이라는 ‘안전함’ 속에서 일을할 수 있다.
  • 분기모다 조직과 팀 사이에 목표를 Align 하는 작업을 진행하기 때문에 목표에 대한 서로의 인식차이를 줄여 나갈 수 있다.

구글은 분기 마지막 4주를 치열하게 목표를 세우고, 합의하는데 사용하고 있다고 함.

2.3 책임: 함께 목표를 향해 간다!

각 팀의 OKR은 서로 독립적이어야 한다. 그래야 성과의 책임을 다른팀에 돌릴 수 없기 때문이다. 하지만 유기적으로 유기적으로 연결되어 있지 않은 조직은 없으므로 각팀의 OKR 진도가 투명하게 지속적으로 공유 되어야 한다. 책임은 투명성에 기반하고 있다.

2.4 피드백: 스프린트하고 피드백 한다.

피드백은 매주 실행계획을 피드백하고 다음 하준의 전략을 잘 수립하는 것이 OKR의 핵심이다. 피드백을 할 때는 CFRConversation-Feedback-Recognition 의 원칙을 지켜야 한다.

3. OKR을 쉽게 적용할 수 있는 조직문화

3.1 조직문화

3.1.1 사명과 비전 중심의 조직문화

구성원들이 조직 내 사명(존재 목적)과 비전(단기/중기/장기 목표)를 정확하게 인지 할 경우, OKR을 한방향으로 설정하는데 도움이 된다.

3.1.2 인정과 격려 문화

구성원들이 서로 인정과 격려하는 문화가 존재하는 경우 OKR 진척을 촉진할 수 있다.

3.2 리더십 및 개인역량

3.2.1 업무 권한 위임을 통한 주도성

OKR 방식으로 일하기 위해서는 구성원들이 자발적으로 일하는 환경을 만들어 주는 것이 필요하다. 결국, OKR을 수행하는 사람은 실무자이기에 실행자에게 주도권을 넘겨 줘야 한다.

3.2.2 피드백 역량

피드백 역량이란 구성원들이 진행하고 있는 업무에 대해서 스스로 피드백하고 행동을 발전시키는 것을 말한다.
수시로 피드백 하는 것이 일상화 되어 있다면 개인의 성장을 촉진할 뿐만 아니라 OKR의 성과도 달성할 수 있다.

3.3 조직 시스템

3.3.1 성과 중심의 Agile 프로세스

OKR의 목표가 한 부서만의 목표가 아니라 전사적 목표로 인지될 필요가 있다. 그런 기업의 특징은 성과 중심으로 프로젝트에 따라 역할을 주고 부서간의 협업이 원활하다는 것을 뜻한다.

3.3.2 실시간 지식 및 정보공유시스템

OKR의 중요 요소 중 하나가 투명한 정보 공유 이다. 모든 팀의 OKR이 실시간으로 투명하게 노출되고 필요한 정보들이 수시로 공유 될 때 OKR의 실행속도도 빨라질 수 있다.

4. OKR을 부스팅하는 포지션별 역할

경영자 또는 리더만 OKR을 열심히 낸다고 해서 OKR이 조직내에 정착되지는 않는다. OKR이 조직 내 체내화 되기 위해서는 조직 전체가 함께 OKR 도입에 관심을 가지고 힘을 써야 한다.

4.1 경영자의 역할

  • 방향성 제시와 공감 얻기
  • 필요한 자원과 교육 지원

4.2 임원의 역할

  • 전략적인 아이디어와 방향성 제시
  • 경영자와 실무자의 가교 역할
    • 실무자들이 각 팀의 OKR을 세울 때 팀 OKR을 전사 OKR에 Align 되도록 가교 역할을 해줘야 한다.
  • CFR 역량
    • 리더로써 조언과 격려의 커뮤니케이션 스킬이 요구된다.
      리더가 피드백과 격려를 진정성 있게 전달할 때 구성원들도 진심으로 받아들이고 분위기도 활력이 넘치게 된다.

4.2 팀장의 역할

  • OKR을 우선순위에 두고 집요하게 소통하기
    • OKR 코치인 존 도어(John Doerr)는 ‘목표를 달성하지 못하는 이유는 집요하게 소통하지 않았기 때문'이라고 말한다. 즉, 팀장은 OKR 책임자로써 목표에 대해 집요하게 소통하여야 한다.
  • 성공적인 OKR 미팅을 위한 퍼실레이팅 능력
    • OKR 미팅은 자발적인 의견 공유, 솔직한 피드백 그리고 코칭으로 이룽진다. 미팅을 진행하면서 팀장은 팀원들이 스스로 목표에 대해 고민하고 아이디어를 찾을 수 있도록 도와야 한다.

4.3 구성원의 역할

  • OKR 진척에 대한 실시간 소통
    • 투명한 정보 공유 는 OKR의 중요한 요소 중 하나로 구성원 모두가 진행하고 있는 OKR 과업에 대해 실시간으로 소통하려는 자세를 가져야 한다.
    • OKR 진척에 대해 정직하게 공개함으로써 더 빠르게 피드백과 아이디어를 주고 받을 수 있다.
  • 피드백 역량 및 성장 마인드 셋
    • 아이디어가 생략된 단순 To-Do 를 목표로 세우는 것이 아닌 피드백을 통해 지난 실행으로 배우고, 발견한 지식을 반영하여 발전되는 실행 계획을 세워야 한다.
    • 성장하고 배우려는 자세를 가진다면 OKR을 통해 개인의 실력향상을 할 수 있다.
  • 실행! 실행! 또 실행!
    • 실행을 할 때 가장 중요한 것은 조직화다. 조직화는 일, 사람, 기간으로 구성된다. 누가 할 것인지 그리고 언제까지 할 것인지를 정하고 실행계획에 따라 실행에 옮긴다.

경영자는 ‘공감대 형성’ 임원은 ‘방향성 제시’ 팀장은 ‘OKR 실행관리’ 구성원은 ‘실행' 이 중요하다.

OKR 작성 가이드

Objective는 가슴 뛰는 목표로 세운다.

  • Objective는 질적이고 가슴뛰며 도전적인 방향이다.
    • 팹시가 ‘코카콜라 끝장내자’라고 목표를 세운 것처럼 구호스러워도 좋다.
  • Objective는 의미와 방향을 담은 질적 목표에 해당된다.
    좋은 Objective 예시 나쁜 Objective 예시
    - 화장품 업계의 변종이 된다. - 매출 1,000억
    - 리오더 로켓 대응! - 출고 시스템 구축
    - 고객이 또다시 찾고 싶은 상품 만들기 - 거래처 수 1,000개

Objective를 잘세웠는지 점검하는 5가지 질문

  • 전사 목표를 달성하는 데 도움이 되는가?
  • 회사의 성장에 기여하는 목표인가?
  • 팀(자신)에게 영감을 주는 목표인가?
  • 기간이 정해져 있는 목표인가?
  • OKR이 3개월 후 기대하는 팀(자신)의 모습인가?

Key Result는 구체적으로 세운다.

  • Key Result는 측정할 수 있게 적어야 한다.
    • KR은 Objective를 달성했는지 확인하는 척도로 ‘우리가 어떻게 목표에 도달 했는지’를 알려 준다.
    • KR은 Objective를 설명할 수 있는 구체적이고 검증이 가능한 목표다.
      • 창조, 제거, 증가, 감소 관점에서 작성하거나 마일스토 방식으로 정해진 기간까지 완성하는 형태로 작성하면 된다.
좋은 Key Result 예시 나쁜 Key Result 예시
- 어플 다운로드 45% 증가 - 부진한 재고 관리하기
- 앱 로딩시간 2초에서 0.5초로 줄이기 - 바이어 관리하기
- 고객만족도 90점 이상 - 팀워크 강화
- 4분기 매출 50억 달성 - 출고 누락 없도록 서포트
- 신규거래처 20개 계약 체결 - 거래처와 관계를 강화하도록 매주 연락하기

Key Result를 잘세웠는지 점검하는 5가지 질문

  • 결과값이 구체적이고 명확한가?
  • 행동이 아닌 결과 중심으로 작성했는가?
  • 달성하기가 너무 쉽거나 불가능한 KR이 아닌 도전적인 KR로 설정했는가?
  • 다른 부서의 노력과 상관없이 독립적으로 측정이 가능한가?
  • KR을 달성하면 O가 달성되는가?

KR vs KPI

KPI가 사전적 예고 지표라면 KR은 결과적 최종적 지표를 의미한다.

(예)
Obective : ‘3개월동안 고객들로부터 사랑받는 설렁탕집’, ‘인근 상권에서 가장 유명한 설렁탕집 되기’

KR : 3개월간 누적 판매량, 프랜차이즈 신청하러 온 가맹점 신청자의 수, 최종적인 영업이익 등

KPI : 원가율, 대기시간, 고객만족도, 응답시간, 객단가 등

해당 자료는 OKR로 성과 내는 25가지 방법 OKR 파워 책을 토대로 작성되었습니다.

728x90
반응형
728x90

AWS Lambda에 코드를 업로드할때 numpy, pandas와 같이 C 또는 C++을 기반으로 한 라이브러리가 포함되어 있다면 Lambda는 이 라이브러리를 Import하지 못합니다.

⚠️ pandas 라이브러리 설치시에는 NumPy가 같이 설치됩니다.

Please note and check the following:

  * The Python version is: Python3.9 from "/var/lang/bin/python3.9"
  * The NumPy version is: "1.23.4"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy.core._multiarray_umath'

Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n    https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n  * The Python version is: Python3.9 from \"/var/lang/bin/python3.9\"\n  * The NumPy version is: \"1.23.4\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n",

따라서 Lambda Layer에 네이티브 코드 라이브러리가 포함되어 있는 경우 바이너리가 Amazon Linux와 호환되는 시스템을 사용하여 이러한 라이브러리를 컴파일하고 빌드해야 합니다.

pip를 활용하여 라이브러리를 mac에서 패키지를 다운로드 받아보면 다음과 같이 mac os기반의 패키지를 받는 것을 확인 할 수 있습니다.

모든 패키지가 위와같은 문제가 발생하는 것은 아니지만, 가능하면 OS 호환성을 고려하여 패키지를 설치하는 것이 좋습니다.

이러한 문제를 해결하기 위해 AWS EC2에서 Amazon Linux 인스턴스를 할용할 수 있지만, Docker를 활용하여 간단하게 Lambda Layer 패키지를 만들 수 있습니다.

1. Docker 설치하기

먼저 Docker 가 설치되어 있지 않다면, 아래 링크를 참고하여 Docker를 설치합니다.
Docker 설치하기

2. Amazone Linux2 컨테이너 실행하기

Amazone Linux2 실행합니다. docker images로 image가 없으면 해당 iamge를 pull 한 후 실행됩니다.

docker run -it amazonlinux:latest

-it 옵션은 컨테이너를 종료하지 않은채로 터미널 작업을 하기 위해서 사용합니다.

cat /etc/os-release를 입력하여 결과를 확인합니다.

#결과
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Python 3.9, 3.8 은 Amazon Linux 2 런타임 환경만을 지원합니다.
Lambda 런타임 확인하기 ➔

3. 컨테이너에 파이썬 설치하기

3.1 필수 라이브러리 설치

먼저 파이썬 설치를 위해 GCC 컴파일러와 같은 필수 개발라이브러리를 먼저 설치 합니다.

yum -y groupinstall "Development Tools"
yum install -y openssl-devel bzip2-devel libffi-devel
yum install -y wget

3.2 Python 3.9 설치하기

파이썬 3.9 다운로드 페이지로 이동하여 파이썬 3.9를 설치합니다.

cd /home
# Download python 3.9
wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz

# 압축풀기
tar xzf Python-3.9.15.tgz

# python 빌드 및 설치
cd Python-3.9.15
./configure --enable-optimizations
make altinstall

make altinstall 기본 파이썬 바이너리 파일위치 /usr/bin/python 교체를 방지하는 데 사용됩니다.

3.3 Python 버전 확인

설치된 Python 3.9는 /usr/local/bin 디렉토리에 설치됩니다. 기본 Python 버전을 덮어쓰지 않았으므로 설치된 버전 확인을 위해서 다음과 같이 실행해야 합니다.
파이썬이 제대로 설치되었는지 버전을 확인합니다.

python3.9 -V

# 결과
Python 3.9.15

3.4 파이썬 가상환경 생성하

애플리케이션 패키지가 포함시킬 수 있는 env라는 가상환경을 생성합하고 실행합니다.

python3.9 -m venv env
source env/bin/activate

# 결과
(env) bash-4.2#

Amazon Linux2 기반의 파이썬 3.9 개발환경 구성이 완료되었습니다. 이제 lambda layer 패키지를 생성하겠습니다.

4. AWS Lambda Layer 패키지 생성하기

requirement.txt를 갖고 전체 패키지 파일을 생성할 수 있지만 패키지 설치방식은 모두 동일 하므로 여기서는 Numpy 패키지를 가지고 Layer를 생성해보겠습니다.

4.1 Numpy 패키지 다운로드

pip로 numpy 패키지를 다운로드 하게 되면, 로컬 터미널 환경에 맞는 패키지를 다운로드 받게 됩니다. 따라서 Amazon Linux용으로 패키지를 다운로드 받아야만 종속성의 오류가 발생하지 않습니다.
https://pypi.org/project/numpy/#files 에서 파이썬3.9해당하는 Amazon Linux 버전의 .whl 파일을 다운로드 합니다.

# 패키지용 디렉토리로 이동
mkdir python && cd python

# NumPy 다운로드
wget https://files.pythonhosted.org/packages/92/49/127e40f3f468a9bbce1fe69e97d0f0db524621960e0adc51a977298eb49c/numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

다운로드 받은 파일은 압축을 풀고, 받은 파일은 삭제합니다.

# 압축 풀기
unzip numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

# .whl 파일 삭제
rm -rf numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

4.2 패키지 생성하기

상위 폴더로 이동하여 파이썬 패키지로 압축합니다.

zip -r python.zip python/

# 결과
adding: python/ (stored 0%)
adding: python/soupsieve/ (stored 0%)
adding: python/soupsieve/css_match.py (deflated 79%)
adding: python/soupsieve/css_parser.py (deflated 78%)
adding: python/soupsieve/py.typed (stored 0%)
adding: python/soupsieve/util.py (deflated 61%)
(중략)

파이썬 패키지로 압축 시에는 python/라이브러리로 생성되어져야 람다에서 라이브러리를 임포트 할 수 있습니다.

4.3 패키지 업로드

Docker 컨테이너에서 로컬로 패키지를 복사 한 후, Lambda Layer를 생성합니다.

# 컨테이너와 파일의 위치를 :로 구분하고 복사할 곳의 경로를 적습니다.
docker cp con:/root/data.txt /home/dst/

Layer 업로드는 Lambda Layer 공통라이브러리 등록하기 ➔ 에서 확인합니다.

5. Lambda 함수 생성

Lambda 함수에서 호출할 라이브러리에 대한 구성이 마쳤습니다.
이제 간단한 Numpy호출 예제를 활용하여 테스트 해보겠습니다.

  • Function Name : LambdaTestFuction
  • Runtime : Python 3.9
  • Architecture : x86_64

함수를 생성한 후 스크롤을 내려 Add a Layer 버튼을 클릭하고, 만들어둔 레이어를 추가합니다.

샘플 코드를 입력하고 Deploy 버튼을 클릭하고, Test 를 실행합니다.

import json
import numpy as np

def lambda_handler(event, context):

    a = np.arange(6)
    a2 = a[np.newaxis, :]

    # TODO implement
    return {
        'statusCode': 200,
        'body': a2.shape
    }

결과
아래의 return 결과가 나왔으면 정상적으로 임포트가 완료된 것입니다.

Response
{
  "statusCode": 200,
  "body": [
    1,
    6
  ]
}
(중략)

Reference

  1. https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/configuration-layers.html
  2. https://devbruce.github.io/aws/aws-10-lambda_layer/#os-%ED%98%B8%ED%99%98-%EC%97%90%EB%9F%AC
  3. https://sangchul.kr/368
  4. https://tecadmin.net/install-python-3-9-on-amazon-linux/
  5. https://sangchul.kr/368
  6. https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/amazon_linux_container_image.html
728x90
반응형
728x90

Homebrew로 Docker를 설치하는 방법을 알아보겠습니다.

Homebrew는 macOS용 패키지 관리자로 Mac용 소프트웨어를 설치할 수 있습니다. 편리하고 사용하기 쉽기 때문에 대부분의 Mac 사용자는 Homebrew로 패키지를 관리하고 있습니다.

Cask

Homebrew Cask는 Mac에 GUI 소프트웨어를 설치하기 위한 Homebrew 확장 패키지입니다. Mac의 Docker는 GUI 도구이므로 Homebrew Cask를 사용하여 설치해야 합니다.

1. Docker 설치하기

brew install --cask docker 로 Docker를 설치합니다.
설치를 완료한 후 application 에서 docker를 실행하면 설치가 완료 됩니다.

Application Screen

2. 버전확인

docker --version

# 결과
Docker version 20.10.20, build 9fdeb9c

docker-compose --version

# 결과
Docker Compose version v2.12.0

Reference

  1. https://formulae.brew.sh/cask/docker
  2. https://www.cprime.com/resources/blog/docker-for-mac-with-homebrew-a-step-by-step-tutorial/
  3. https://formulae.brew.sh/formula/docker
728x90
반응형
728x90

Mac OS에서 AWS CLI 버전 2를 설치하는 방법에 관해 알아보겠습니다.
Mac은 Homebrew가 있어 매우 편리하게 설치할 수 있습니다.

설치하기

명령줄에서 다음 단계에 따라 Linux에 AWS CLI를 설치합니다.

# aws cli 설치
brew install awscli

# 설치 경로 확인
which aws

# 결과
/usr/local/bin/aws

# 버전확인
aws --version

# 결과
aws-cli/2.7.17 Python/3.10.5 Darwin/21.5.0 source/x86_64 prompt/off

aws 자격증명 설치하기

🗂 아래 링크에서 설치 방법을 참고하세요.

  1. aws 자격증명 하기
  2. aws 여러계정 사용하기
728x90
반응형
728x90

tree는 소스 구조를 트리 형태로 보여주는 명령어입니다.
Mac에서는 tree 명령어가 설치되어 있지 않습니다.
Homebrew를 이용해서 tree를 설치합니다.

1. tree 설치하기

brew install tree

2. 결과확인

tree명령어를 입력하여 결과를 확인합니다.

.
├── README.md
├── config.py
├── environment.yml
├── py
│   ├── __init__.py
│   ├── filter.py
│   ├── forms.py
│   ├── models.py
│   ├── static
│   │   ├── bootstrap.min.css
│   │   ├── bootstrap.min.js
│   │   ├── jquery-3.6.0.min.js
│   │   └── style.css
│   ├── templates
│   │   ├── answer
│   │   │   └── answer_form.html
│   │   ├── auth
│   │   │   ├── login.html
│   │   │   └── signup.html
│   │   ├── base.html
│   │   ├── form_errors.html
│   │   ├── navbar.html
│   │   └── question
│   │       ├── question_detail.html
│   │       ├── question_form.html
│   │       └── question_list.html
│   └── views
│       ├── answer_views.py
│       ├── auth_views.py
│       ├── main_views.py
│       └── question_views.py
└── py.db
728x90
반응형
728x90

| 해당 포스트는 맥북에서 설정하였습니다.

GitHub을 사용하다 보면 업무용계정과 개인용계정을 따로 사용해야 하는 경우가 발생할 수 있습니다.
두 개 이상의 계정을 활용해야 할때 설정하는 방법입니다.

1. 키체인 삭제

기존에 등록되어 있는 키체인 정보를 삭제합니다.
키체인 접근앱에서 gihub.com에 등록된 정보를 삭제합니다.

2. ssh-key 생성하기

개인계정과 업무계정에 사용할 ssh key를 생성합니다.
생성은 .ssh디렉토리에서 생성합니다. .ssh디렉토리가 없으면 디렉토리를 생성합니다.

# .ssh 디렉토리 이동
cd ~/.ssh

# ssh key 생성
ssh-keygen -t rsa -b 4096 -C "<github 계정 email주소>"

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/collabo/.ssh/id_rsa): #생성할 파일명 입력
Enter passphrase (empty for no passphrase): # Enter
Enter same passphrase again: # Enter
  • 키 생성시 개인용과 업무용 구분을 위해 파일명을 구분합니다.
  • 개인용 key id_rsa_private, id_rsa_private.pub와 업무용 key id_rsa_work, id_rsa_work.pub의 생성결과를 확인 합니다.

3. ssh-key 등록

ssh-add --apple-use-keychain id_rsa_private
ssh-add --apple-use-keychain id_rsa_work

4. github에 공개키 등록

로컬에서 생성한 공개키를 복사하고 pbcopy < ~/.ssh/id_rsa_work.pub github에 등록합니다.

  • 우측 상단의 계정 이미지를 클릭하고 펼쳐진 서브 메뉴들에서 Settings를 선택한다.
  • Settings의 좌측 메뉴에서 SSH and GPG keys - New SSH Key 메뉴를 클릭하고 복사한 키를 붙여 넣습니다.
    • Title : 식별할 수 있는 이름
    • Key : id_rsa_work.pub복사한 key
  • 생성한 개인용, 업무용 계정 별로 등록하여 줍니다.

5. ssh config 설정

~/.ssh 디렉터리에 config 파일이 존재하는지를 확인하고 없다면 새로 생성합니다.
github.com에 대한 접속 정보를 아래와 같이 설정해 줍니다.

# private account
Host github.com-private
 HostName github.com
 User private                       # github 계정 이름
 IdentityFile ~/.ssh/id_rsa_private # 비밀키 파일

# work account
Host github.com-work
 HostName github.com
 User  work                      # github 계정 이름
 IdentityFile ~/.ssh/id_rsa_work # 비밀키 파일
  • Host : 저장소 구분 값

[SSH 등록 테스트]
등록한 키 값별로 ssh -T git@github.com-work입력하여 아래 문구가 출력되면 정상입니다.

You’ve successfully authenticated, but GitHub does not provide shell access.

※ 개인용도 동일하게 테스트 합니다.

6. Remote 저장소 설정

GitHub에서 SSH URL로 clone 받거나 이미 Remote가 지정된 경우 다음과 같이 변경할 수 있습니다.
SSH Config 구성 시 HostName을 github.com-<구분자>로 지정하였으므로 호출 시 동일하게 구성하여야 합니다.

  • 신규 저장소 clone
    git clone git@github.com-work:<저장소URL>.git
  • Remote 저장소 변경
    git remote set-url origin git@github.com-private:<저장소URL>.git

Reference

728x90
반응형

'GitHub' 카테고리의 다른 글

(GitHub) Pull Request 템플릿 만들기  (0) 2024.04.14
728x90

Window에 설치된 Python 가상환경을 Linux로 옮겨보겠습니다.

Anaconda 가상환경은 운영체제끼리는 같아야 yml 기반으로 가상환경 생성 과정에서 에러가 생기지 않습니다.

  • 일부 OS 플랫폼에서는 사용할 수 없는 패키지가 있습니다.
    • Linux에서만 사용할 수 있는 패키지와 Windows에서만 사용할 수 있는 패키지가 있어 빌드버전은 OS에 따라 다를 수 있습니다.

Conda does not check architecture or dependencies when installing from a spec file. To ensure that the packages work correctly, make sure that the file was created from a working environment, and use it on the same architecture, operating system, and platform, such as linux-64 or osx-64.

1. 가상환경 Export

빌드 버전의 OS종속성을 제거하기 위해 --no-build 옵션을 사용하여 가상환경을 추출합니다.

conda env export -n "가상환경이름" --no-build > envrionment.yml

2. 가상환경 생성

Linux 환경에서 Anaconda 가상환경을 생성합니다.

conda create -n "가상환경이름" python=3.9

3. 가상환경 업데이트

생성한 가상환경을 추출한 environment.yml로 업데이트 해줍니다.

conda env update -n "가상환경 이름" -f environment.yml

가상환경 업데이트를 하면 다음과 같이 찾을 수 없는 패키지가 확인 됩니다.

Output:

Solving environment: failed

ResolvePackageNotFound:
  - vs2015_runtime=14.27.29016
  - wincertstore=0.2
  - vc=14.2

해당 항목들을 anaconda 패키지 리스트에 확이하면, 다음과 같이 Window OS 종속된 항목으로 Linux에 지원되지 않는 패키지 임을 확인 할 수 있습니다.

window에만 설치 가능한 패키지를 삭제하고 다시 가상환경을 업데이트 합니다.

conda env update -n "가상환경 이름" -f environment.yml

Reference

  1. https://stackoverflow.com/questions/55895751/using-a-conda-env-created-on-windows-for-linux
  2. https://ahelpme.com/software/anaconda/conda-export-environment-and-conda-import-environment/
  3. https://techhelpnotes.com/python-conda-environment-from-windows-to-linux/
  4. https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
728x90
반응형

+ Recent posts