반응형

GitHub에서 프로젝트를 fork하여 개인 계정으로 가져오고, 로컬 머신에서 작업하며 upstream 저장소를 설정하고, 최종적으로 수정한 내용을 원본 저장소로 보내는 방법에 대해 자세하게 설명하겠습니다.

왜?? 이렇게 작업하는가?


fork  upstream을 사용하는 주된 이유는 협업 및 컨트리뷰션을 용이하게 하기 위해서입니다. 여러 개발자가 동시에 프로젝트에 기여할 때, 이러한 작업 흐름은 코드 충돌을 방지하고 변경 사항을 조직화하며, 프로젝트의 안정성과 유지 관리를 도울 수 있습니다.

  1. Fork (개인 저장소로 복제):
    • 원본 프로젝트를 직접 수정하지 않고, 자신의 계정으로 fork하여 개인적으로 작업합니다.
    • 이렇게 하면 원본 프로젝트에 직접 영향을 주지 않으면서 개발자는 자신의 변경 사항을 안전하게 실험하고 관리할 수 있습니다.
  2. Upstream (원본 저장소와 연결):
    • upstream은 원본 프로젝트의 최신 변경 사항을 계속해서 추적하는데 사용됩니다.
    • 개발자는 자신의 fork에서 작업하기 전에 원본 프로젝트의 최신 업데이트를 가져와 로컬 저장소를 최신 상태로 유지할 수 있습니다.
  3. Branch (브랜치를 통한 개별 작업):
    • 새로운 브랜치를 만들어서 각각의 작업을 분리하면 여러 개발자가 동시에 작업할 때 충돌을 방지하고, 개별적으로 특정 기능 또는 수정을 진행할 수 있습니다.
    • 이 브랜치는 작업이 완료되면 메인 브랜치로 병합될 수 있습니다.
  4. Pull Request (병합 신청):
    • 개발자는 자신의 fork에서 만든 변경 사항을 원본 프로젝트에 반영하기 위해 Pull Request를 생성합니다.
    • 이를 통해 프로젝트 관리자는 변경 내용을 검토하고, 코드의 품질을 확인한 후에 병합 여부를 결정할 수 있습니다.

이러한 작업 흐름을 통해 프로젝트는 여러 사람이 효율적으로 협업하고, 변경 사항이 제대로 검토되며, 코드 충돌이 최소화되어 유지보수가 용이한 상태를 유지할 수 있습니다.

프로젝트 Fork하기:

  • GitHub에서 원하는 프로젝트로 이동합니다.
  • 프로젝트 페이지 오른쪽 상단에 있는 “Fork” 버튼을 클릭하여 자신의 계정으로 해당 프로젝트를 fork합니다.

로컬 머신에 복제(Clone)하기:

  • 터미널 또는 Git Bash를 열고 다음 명령어를 사용하여 fork한 프로젝트를 로컬 머신으로 복제합니다.
  • Fork한 자신의 Git hub계정의 Url을 clone뒤에 작성합니다.
$ git clone https://github.com/your-username/project.git

Upstream 저장소 추가하기:

  • 프로젝트 디렉토리로 이동한 후 원본 저장소를 upstream으로 추가합니다.
$ cd project 
$ git remote add upstream https://github.com/original-username/project.git

브랜치 만들기 및 작업하기:

  • 새로운 브랜치를 만들어 작업합니다.
$ git checkout -b feature-branch
  • 변경사항을 작업하고 커밋합니다.
$ git add . git commit -m "작업한 내용에 대한 설명"

Upstream 변경사항 가져오기:

  • 원본 저장소의 최신 변경사항을 가져와 로컬에 반영합니다.
$ git fetch upstream git merge upstream/main

본인 계정으로 Push하기:

  • 작업한 브랜치를 자신의 GitHub 계정으로 push합니다.
$ git push origin feature-branch

GitHub에서 Pull Request 생성하기:

  • GitHub 웹사이트에서 fork한 프로젝트로 이동하여 “Compare & pull request” 버튼을 클릭합니다.
  • 변경 내용을 확인하고 “Create pull request” 버튼을 클릭하여 Pull Request를 생성합니다.

원본 저장소로 Pull Request 보내기:

  • Pull Request가 생성된 후, 원본 저장소에 변경사항을 반영하기 위해 “Merge pull request” 버튼을 누르거나 관리자가 검토 후 Merge할 수 있습니다.

이제 당신이 fork한 프로젝트에서 작업한 내용이 원본 저장소로 반영되었습니다.

반응형
반응형

보시기전에 광고 한번씩만 눌러주세요.

글 작성에 매우 큰 도움이 됩니다.!

반응형

 

 

# 버츄얼박스를 통해 os설치후 아래의 경로에 들어간다.

$cd /etc/sysconfig/network-scripts

그리고을 장치명및 ip주소 확인한다.
$ip addr

ex) 2: enp0s3이라고 되어있었음(장치명). / 10.0.2.15(ip명)

2.gateway확인 
$ ip route

ex) -> default via 10.0.2.2// 10.0.2.2 

3. 수정 파일 열기 -> ifcfg-enp0s3

$ vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

or) vi ifcfg-enp0s3 


4. 수정

#line4
BOOTPROTO=static
#그리고 맨 밑에 적기
#(원하는 ip주소 // 아까 확인한 ip주소에서 맨뒤에 숫자만 바꿔서 사용하기)
IPADDR = 10.1.2.105
NETMASK=255.255.255.0
#아까 ip route에서 확인한 숫자
GATEWAY=10.0.2.2
DNS1=8.8.8.8

#:wq로 빠져나오기

#네트워크 재시작
$ systemctl restart network

# ip 변경 확인
ip addr

 

반응형

'work > 개인공부' 카테고리의 다른 글

ML  (0) 2021.05.09
반응형

- Pydantic

 

파이썬 3.7에는 클래스를 훨씬 쉽고 원할하게 생성할 수 있는 편리한 데코레이터인 데이터 클래스가 도입되었다.

 

python에 내장된 dataclass를 이용하여 data를 작성하면 뒤에 validation이라던지 예외처리, 변환등을 다시 해줘야 했기 때문에 다른 라이브러리를 찾아보게 되었다.

 

그렇게 알게 된 녀석이 pydantic이었다.

 

철저한 데이터 검증을 필요로할 때 pydantic을 사용하는것이 많은 도움이된다.

 

지금 내가 사용하고 있는 기능들중 좋다고 느낀점은

 

1. 각 클래스 내부의 값을 정의 할때 진짜 편하다.

2. 정의 한 값들의 입력값들을 정확하게 표현할 때.

3. 그 다음 기능으로 값을 넘겨줄 때 변환하기 편하다.

4. fastapi의 자동문서화(redoc) 기능과 함께 api를 관리할때 더욱 시너지가 났다.

 

 

간단한 예제를 보면

from pydantic import BaseModel,Field


class A(BaseModel):
	no : int
	id : str = Field(alias="Id",example="root",description=" - 사용자 id")

이렇게 A라는 데이터클래스와 no, id라는 값을 정의 했다고 하면

 

1. no -> int , id-> str을 입력으로 받지 않으면 에러가 나온다.

 

2. Field -> 추가한다면 alias, example, description등을 작성할 수 있고, swagger나 fastapi의 자동문서화 기능과 연결하여 편하게 사용할 수 있다.

 

3. docs에 id로 표기되고 내부에서는 Id라는 키값으로 사용하고, 다시 출력할 때에는 id로 출력


4. 그 외에도 많은 기능이 있다.

data=A(no=1,Id='root')
data.dict()

=> {"no":1,"id":"root"}

 

위와같이 사용할 수 있어서. 정말 도움이 많이 되었다. 

앞으로 더 많이 공부 해야겠다고 생각든다.

 

더 많은 기능은 아래의 공홈에서 찾아보길..

 

 

https://pydantic-docs.helpmanual.io/

반응형

'work > web' 카테고리의 다른 글

flask 비동기 처리 해보기 -> FASTAPI 사용하기  (0) 2022.07.26
flask, flask_restx, swagger  (0) 2022.07.22
반응형

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

 

 

-> 기존 윈도우즈 cli 창에서는 잘 됐는데 찾아보니 리눅스 cli에서는 source activate로 먼저 활성화를 해주는것 같았다.

 

> conda activate ====> source activate

 

해결완료

반응형

'work > 오류' 카테고리의 다른 글

plotly font tickangle / 플롯틀리 글자, 각도설정  (0) 2021.02.01
반응형

딥러닝 및 머신러닝의 학습을 하기 위하여 REST를 활용한 인터페이스를 구축할 예정이다.

 

프로세스는 대략 아래와 같다.

 

flask -> flask_restx -> api -> 학습 // swagger를 통한 소통

 

하지만 딥러닝및 머신러닝의 학습시간이 길어지면 중간에 비동기 처리를 통하여

학습을 실행시키고, 사용자에게는 응답메세지를 주고 학습이 끝나면 또 응답을 줘야한다.

그렇지 않으면 몇일이 걸리는 학습모델을 돌리는동안 아무런 응답을 받지 못 할것이다.

 

그리고 여기서 한가지 더 고려해야할 부분은 학습을 도중에 중지 시킬수도 있어야한다.

 

비동기처리를 위해 어떤것을 해야 하는지 찾아보니

async 및 redirect를 활용하여 위의 요구기능을 처리 해 볼수 있을것 같다.

 

 

-------------약 2주후-----------

처음 구축해 봐서 그냥 알려준대로 툴을 선택 했는데 조금이라도 더 찾아볼껄 그랬다.

비동기화와 같은 요구사항은 왜 초안을 다 만들고 알려주는것인가..ㅠ

-------------약 2주후-----------

 

라고생각했는데 2주간의 삽질 끝에 flask와 restx로는 프로젝트에서 원하는 프로세스를 만들수 없다는것을

알게 되었다.

그래서 찾아본 결과 대안으로 ASGI( Asynchronous Server Gateway Interface) & fastapi라는 것을 알게되었고.

간단한 테스트를 해본결과 원하는 프로세스가 잘 실행된다!

 

차근차근 학습해서 더 멋진 서비스를 만들어보자!

반응형

'work > web' 카테고리의 다른 글

pydantic / dataclass [파이썬 / python]  (0) 2022.10.11
flask, flask_restx, swagger  (0) 2022.07.22
반응형

중요한 사항

 

1. Flask -> REST를 이용해서 서비스 제공( 데이터 전처리, 딥러닝, 머신러닝 모델의 학습 설계, 학습, 확인)

2. REST API의 자동명세 필요 (기존 엑셀작업 -> 자동 명세)

3. 파일 및 기능이 점점 늘어나면서 관리 필요

 

flask-restx를 이용하여 rest를 서비스하고

swagger를 사용하여 문서화하여 공유 예정 

 

Flask-restx란?

  • flask-restful 라이브러리 중 하나
  • Swagger라는 rest api를 문서화해주는 도구를 지원

Swagger란?

  • 개발한 rest api를 편리하게 문서화 해준다.

 ex ) https://www.data.go.kr/data/15102239/openapi.do#/

 

기상청_전국 해수욕장 날씨 조회서비스

전국 해수욕장의 날씨 예보(초단기예보,단기예보)와 조석 정보, 파고 정보, 일출일몰 정보, 수온 정보를 제공하는 서비스

www.data.go.kr

 

  • 그래서 이러한 문서를 통해서 프로젝트를 관리하고, 제 3의 사용자및 협업 대상이 편리하게 api를 테스트, 호출해볼수 있음
반응형

'work > web' 카테고리의 다른 글

pydantic / dataclass [파이썬 / python]  (0) 2022.10.11
flask 비동기 처리 해보기 -> FASTAPI 사용하기  (0) 2022.07.26
반응형

레이블인코딩 -> 숫자로 바뀌기 때문에 크기의 차이가 가중되어 학습될수도 있기 때문에, 선형회귀와 같은 ml알고리즘에는 적용하면 안된다 .

=> 하지만 트리계열의 ML알고리즘은 숫자의 이러한 특성을 반영하지 않으므로 레이블 인코딩도 문제 없다.

 

레이블 인코딩의 문제점을 해결하기 위하여 원핫 인코딩을 사용한다.

 

 

 

## 전처리

 

표준화와 정규화

표준화는 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 피처 스케일링이라고 한다.

 

정규화는 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념이다

ex) 거리변수 A -> 0~ 1,000,000km 

     금액을 나타내는 변수 B ->0~100,000,000,000원

이 두 변수를 정규화를 통하여 최소 0~최대 1의 값으로 변경하는것.

 

 

반응형
반응형

플롯틀리 길게 적다가 보면 자기마음대로 각도가 비틀리는데 아래 처럼 layout에 값을 줘서 변경 할 수 있음.

 

fig.update_layout( xaxis_tickangle=-45 )

 

 

 

반응형

'work > 오류' 카테고리의 다른 글

ubuntu -> anaconda activate error  (0) 2022.09.13

+ Recent posts