내가 현지의 발전 환경을 어떻게 조직할 것인가
이 게시물How I Organize My Local Development Environment은 처음Qvault에 실렸다.
내가 막 프로그래밍을 시작했을 때, 나는 매우 혼란스러웠다.나는
My Documents
에 새 텍스트 파일을 만들어서 처리할 것이다. Git 저장소를 만들지 않고 나중에 의외로 삭제하면 알게 될 것이다.지금 나는 완전히 상반되었다.솔직히 말하자면 Go의 초기 버전은 개발자에게 인기가 없었고 현재 버려진 버전GOPATH을 사용하도록 요구한 것이다.나는 이 조직에 강제로 요구하지 않는 것이 옳다고 생각하지만, 사실 나는 개인적으로 이런 방법을 매우 좋아해서 지금까지도 그 조직의 한 버전을 사용하고 있다.내가 로컬 기계에 코드를 저장하는 곳
내가 작성하고, 갈라지고, 유지보수하는 모든 코드는 주 폴더의
~/workspace
디렉터리에 놓여 있다.나는 지금 Unix 환경에서만 일한다.workspace
디렉터리에서 모든 내용은 GOPATH가 처리하는 방식에 따라 명명됩니다.예를 들어,~/workspace/REMOTE/NAMESPACE/REPO
예를 들어 나의 소스 오픈 패키지go-password-validator는 ~/workspace/github.com/wagslane/go-password-validator
에 있다.내가 이런 설정을 좋아하는 데는 몇 가지 이유가 있다.
remote
을 통해 나는 항상 사용자 버전 제어를 사용하라고 알렸다.사실상, 모든 새로운 항목은 원격 서버 (보통 Github) 에서 만들어진 다음에 정확한 위치로 복제됩니다.namespace
레벨에서 VS 코드를 열고 조직의 모든 항목을 보면 정말 좋습니다.새로운 프로젝트를 어떻게 시작합니까
모든 새 프로젝트에 대해 설정 과정은 이렇다.
내가 현지에서 어떻게 개발하는가--내가 가장 좋아하는 도구들
VS 코드
나는 지금 VS 코드를 사용하고 있다.지금까지 나는 슈퍼 팬이었다. 그러나 만약 그것이 기억 돼지가 아니었다면 좋았을 것이다.새로운 편집을 시도할 때, 나는 단지 두 가지 진정한 혐오감이 있을 뿐이다.
REST 클라이언트
나는 우체부와 불면증을 좋아하지 않는다. 단지 다른 도구를 켜는 것을 좋아하지 않기 때문이다.나는 VS 코드 플러그인을 매우 좋아한다.예를 들어, 나는 이 REST client plugin 를 사용한다. 왜냐하면 모든 테스트 요청을 프로젝트의 읽을 수 있는 텍스트 파일로 쉽게 저장할 수 있기 때문이다.
데이터베이스 클라이언트
저는 현재 박사 후에 Elastic Search와 주로 일하고 있습니다.Postgres 관리자 관리에 대해서는 PG Admin 4를 사용합니다.나는 그것이 브라우저에 있는 것을 좋아하지 않지만, 그것은 매우 좋다.만약 누군가가 더 좋은 공구를 추천한다면, 비록 내가 귀를 씻고 공손하게 듣더라도.
ElasticSearch는 매우 간단하다. 왜냐하면 그것은 Kibana를 덧붙여서 상자를 열면 바로 사용할 수 있기 때문이다.Kibana는 훌륭한 ES 고객입니다.
운영 체제
지난 몇 년 동안 Macbook Pro에서 최신 버전의 Mac OS를 주로 사용했습니다.하지만 가끔은 게임컴퓨터를 할 때WSL와 Ubuntu를 사용합니다.Linux의 Windows 서브시스템은 생명을 구하는 볏짚이어서 나는 Windows 명령행을 참을 수 없다.
나는 거의 항상 Docker를 사용하여 리눅스 서버에 배치한다. (대개 Debian) 그래서 나의 Mac OS와 Ubuntu 로컬 환경은 보통 생산 환경에 매우 가깝다.나는 보통 운영체제와 상호작용이 너무 많은 코드를 작성하지 않는다.
Bash 구성 파일
보안상의 이유로 나는 자주 점프 상자를 사용하여 원격 데이터베이스나 API에 연결해야 한다.이 경우, 나는 별명 명령으로 Bash 프로필을 작성하여 로컬 포트를 이 서비스에 전송합니다.예를 들면 다음과 같습니다.
alias ssh_postgres_prod="ssh -L 5433:DATABASE_URL:5432 JUMP_BOX_URL"
alias ssh_postgres_stage="ssh -L 5434:DATABASE_URL:5432 JUMP_BOX_URL"
나는 다른 로컬 포트를 사용한다. 이렇게 하면 나는 의외로 데이터베이스에 연결되어 다른 데이터베이스라고 생각하지 않을 것이다.로컬 스크립트
나는 일회용 작은 bash 스크립트를 매우 좋아한다.내가 단조로운 일을 한 번 또 한 번 하는 것을 발견할 때마다, 나는 미래의 속도를 높이기 위해 발을 써 보려고 한다."자동화로 지루한 것", 원한다면.만약 스크립트가 보통 유용하다면, 나는 내
~/workspace
에서 스크립트를 위해 자신의Git repo를 만들 것이다.만약 그 범위가 하나의 항목이라면, 나는 보통 그것을 이 항목의 scripts
디렉터리에 저장할 것이다.예를 들어, 나의 전담 업무에서, 우리는 항상 모든 ~ 2개의 마이크로 서비스의 의존 항목을 갱신해야 한다.이 모든 업그레이드 명령을 실행하고 끌어오기 요청을 열면 지루할 수 있습니다.이를 위해 스크립트를 작성했습니다.#!/bin/bash
# get github repo list
echo ">> List all repositories you would like to create a PR in, separated by commas" ;
default="example-repo,example-repo-2"
echo ">> Default: $default";
read repos;
if [-z "$repos"]
then
repos="$default"
fi
echo "Using repos: $repos"
IFS=',';
read -a repoarr <<< "$repos"
# get new branch name
echo ">> what will the feature branch name be?";
echo ">> Default: auto-{RANDOM}";
read branch;
if [-z "$branch"]
then
branch="auto-$RANDOM"
fi
echo "Using feature branch: $branch"
# get base branch name
echo ">> what branch is this merging into?" ;
echo ">> Default: master";
read baseBranch;
if [-z "$baseBranch"]
then
baseBranch="master"
fi
echo "Using base branch: $baseBranch"
# get the desired tag of the dependency
echo ">> what tag are we changing to?";
echo ">> Default: latest";
read tag;
echo "Using latest tag";
# clean and move to tmp directory
rm -rf /tmp/pr-generator ;
mkdir /tmp/pr-generator ;
cd /tmp/pr-generator ;
# Loop through each repo
for (( n=0; n < ${#repoarr[*]}; n++))
do
git clone "https://github.com/example-org/${repoarr[n]}" ;
cd ${repoarr[n]} ;
git checkout -b ${branch} ;
if [-z "$tag"]
then
go get -u github.com/example-org/example-dependency ;
else
go get -u github.com/example-org/example-dependency@${tag} ;
fi
echo "<============ MOD VENDOR =============>" ;
go mod vendor ;
go mod tidy ;
go test ./... ;
echo "<============ GIT COMMANDS =============>" ;
git add * ;
git commit -m "auto generated message for ${branch}" ;
git push -u origin ${branch};
echo "<============ PR ==============>" ;
curl --location --request POST "https://api.github.com/repos/example-org/${repoarr[n]}/pulls" \
--header "Authorization: Bearer $GITHUB_ACCESS" \
--header 'Content-Type: application/json' \
--data-raw "{
\"title\": \"*autogen title* update dependency in ${baseBranch}\",
\"head\": \"${branch}\",
\"base\": \"${baseBranch}\"
}";
done
내가 한 일들이 너에게 유용하길 바란다. 만약 네가 내가 한 일이 매우 어리석거나 네 자신의 선호가 있다고 생각한다면, 그것들이 무엇인지 나에게 말해라.읽어주셔서 감사합니다!
만약 당신의 CS 경력을 더욱 발전시키는 데 관심이 있다면, 저희를 선택하십시오 computer science courses
질문이나 댓글이 있으면 트위터에 연락 주세요. 저희가 잘못을 저질렀다면 반드시let us know 잘못을 바로잡을 수 있도록 하세요!
Subscribe 우리 시사통신을 클릭하여 더 많은 프로그래밍 문장을 얻기
Reference
이 문제에 관하여(내가 현지의 발전 환경을 어떻게 조직할 것인가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/qvault/how-i-organize-my-local-development-environment-42og텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)