개발 Dev 21

셸 스크립트로 오래된 로컬 브랜치 한꺼번에 삭제하기

Git으로 작업을 하다보면 브랜치들이 점점 늘어난다. 일일이 삭제하려면 너무 번거롭다. 이럴 때 셸 스크립트Shell Script를 활용하면 한번에 지울 수 있다. 셸 스크립트 예시다.아래 셸 스크립트를 실행하면 브랜치가 한꺼번에 삭제된다.#!/bin/bashPREFIX_FEATURE="feature/"PREFIX_BUGFIX="bugfix/"PREFIX_RELEASE="release/"branches=`git branch -a`for b in $branchesdo if [[ "$b" == "$PREFIX_FEATURE"* ]] || [[ "$b" == "$PREFIX_BUGFIX"* ]]|| [[ "$b" == "$PREFIX_RELEASE"* ]] then echo $b git branch -D ..

개발 Dev/깃 Git 2024.05.18

gitlab에 있는 저장소를 github로 커밋 포함 전체 복사하기

코드 복사가 필요한 상황Git으로 관리하는 코드를 이 서비스에서 저 서비스로 옮겨야 할 때가 있다예를 들어서 gitlab에 있는 저장소를 github로 옮기고 싶다. 이 때 gitlab 코드를 내려 받고, github에 저장소를 만들고 내려 받은 코드를 복사한 뒤에 새로 커밋하면 기존 커밋 이력이 다 날라간다. 커밋 이력을 포함해서 복사하고 싶다면이때는 remote url을 변경해야 한다. 아래 명령어를 사용해야 한다.$ git remote set-url origin GitHub-저장소-URL 작업 순서 1. 우선 gitlab 저장소를 clone 한다.$ git clone https://gitlab.com/사용자명/저장소명.git 2. github에 저장소를 새로 만든다. 3. 원격 저장소 url을 변경..

개발 Dev/깃 Git 2024.05.15

ChatGPT로 "비즈니스 모델 특허 출원 명세서와 요약서 작성기" 만든 후기

쉽다! 정말 누구나 할 수 있다ChatGPT의 GPT 빌더로 비즈니스 모델 특허 출원 명세서와 요약서 작성기를 만들어보았다.생각보다 굉장히 쉽게 만들 수 있어서 놀랐다.  GPTS(https://chat.openai.com/gpts)에서 Create을 누르면 쉽게 만들 수 있다. 단 무료 사용자는 안 되고, 매달 20$ 내는 Plus 사용자이어야 한다.  Name, Description, Instructions만 작성하면 만들어진다. 정말 간단했다.물론 내가 원하는결과가 나오도록 Instructions를 작성하기는 쉽지 않았다. 비즈니스 모델 특허 출원 명세서와 요약서 작성기비즈니스 모델 특허 출원 명세서와 요약서 작성기 GPT를 만들었다.실제 사용 예는 아래와 같다. 테스트를 위해서 본 발명은 기존 등..

개발 Dev 2024.01.21

Q. 깃허브github에서 깃플로git-flow와 스쿼시와 병합Squash and merge을 함께 쓰면 안 되는 이유는?

A. release 브랜치에서 main 브랜치로 PR(Pull Request) 요청할 때마다 충돌이 발생한다. 스쿼시와 병합Squash and merge이란?여러 커밋을 하나의 커밋으로 밀어넣어서(squash) 병합(merge)해주는 기능이다. 예를 들어서 feature 브랜치에서 develop 브랜치로 PR을 만들었다고 하자. feature 브랜치에서 작업한 커밋이 10개다. 스쿼시와 병합 기능을 쓰면 단 1개의 커밋으로 10개의 커밋이 합쳐져서 develop에 병합된다. 그래서 커밋 이력이 깔끔해진다. 충돌 예시 add hello title, add hello text란 두 커밋을 하고 feature/add_hello 브랜치에서 develop으로 PR을 만든 경우다. Squash and merge한 ..

개발 Dev/깃 Git 2023.10.11

깃모지gitmoji를 표로 한눈에 정리!

깃모지gitmoji란? Carlos Cuesta가 정리한 깃Git용 이모티콘이다. 커밋 메시지 맨 앞에 이모티콘을 사용한다. 아래 예를 보면 📄 Update LICENSE라고 커밋 메시지를 쓴 게 예이다. 깃모지 표 이모티콘 이모티콘 예약어 영어 뜻 한국어 번역 🎨 :art: Improve structure / format of the code. 구조 / 코드 포맷 개선 ⚡️ :zap: Improve performance. 성능 개선 🔥 :fire: Remove code or files. 코드나 파일 제거 🐛 :bug: Fix a bug. 버그 수정 🚑️ :ambulance: Critical hotfix. 긴급한 수정(핫픽스) ✨ :sparkles: Introduce new features. 새로운 기능..

개발 Dev/깃 Git 2023.10.03

Visual Studio Code 원격 개발 기능으로 서버 접속해서 파이썬 파일 실행, 디버깅 하는 방법

Visual Studio Code 설치 https://code.visualstudio.com/ 여기서 내려받을 수 있다. 내려받아서 설치하자. 실행하면 아래와 같은 화면이 나타난다. 네모가 4개 있는 아이콘이 익스텐션 아이콘이다. 그것을 누른 뒤 검색창에 remote를 누르고 Remote Development를 설치하자. SSH 접속 설정 F1키를 누르자. 아래처럼 최상단에 Remote-SSH: Open SSH Configuration File... 을 클릭한다. 기본 값인 가장 맨 위의 /.ssh/config를 누른다. 아래처럼 파일이 생성된다. 입력 내용에 맞게 입력하면 된다. 내 로컬 AI 서버 접속 설정 정보 예는 다음과 같다. private key를 이용해서 접속하는 경우 아래 예처럼 Ident..

파이참 원격 개발 기능으로 서버 접속해서 파이썬 파일 실행과 디버깅 하는 방법

원격 개발Remote Development이 필요한 상황 백엔드 개발의 경우 개발할 때 로컬에서 주로 개발하므로 원격 개발이 그리 많이 필요하지 않다. 하지만 인공지능 개발을 하다보면 원격 개발 기능을 자주 사용하게 된다. 로컬 컴퓨터에 GPU 성능이 좋지 않아 딥러닝 코드를 실행시키는 것조차 어려운 경우가 많기 때문이다. 그래서 본인 노트북에서 고성능 GPU가 달린 컴퓨터로 접속해서 원격 개발하는 경우가 많다. 파이참PyCharm 원격 개발Remote Development 파이참PyCharm을 실행하면 아래와 같은 화면이 나온다. 아쉽지만 원격 개발은 PyCharm Pro만 지원이 된다. Remote Development를 누르고 SSH를 누르자. SSH 접속 화면이다. 접속 방법 로컬 서버 예 같은 ..

Q. git-flow란? git-flow 활용 방법은?

A. git-flow는 Vincent Driessen이 제안한 깃git 브랜치 활용 모델로 많은 기업들에서 활용하고 있다. Vincent Driessen의 블로그 글 A successful Git branching model에 자세한 설명이 나온다. 주 브랜치(the main branches) gitflow의 주 브랜치는 master와 develop 브랜치다. 원문을 살펴보자. The central repo holds two main branches with an infinite lifetime: master develop The master branch at origin should be familiar to every Git user. Parallel to the master branch, anoth..

개발 Dev/깃 Git 2023.07.31

깃허브 커밋 메시지에서 특정 단어로 검색해서 엑셀 파일로 만들기

배경 팀 내에서, 코드 리뷰를 통해서 커밋을 한 경우 리뷰어의 이름을 커밋 메시지에 반드시 적기로 했다. 예를 들면 taptorestart란 사람이 리뷰를 했다면 커밋 메시지에 "taptorestart 리뷰 반영"이라고 적기로 한 것이다. taptorestart의 리뷰가 반영된 커밋수를 확인하려면 어떻게 해야 할까? 해결방법 git log 명령어로 커밋 메시지에 특정 단어가 들어 있는 커밋을 검색할 수 있다. 예를 들어 git log --grep="flask"라고 검색하면 아래처럼 나오는 것을 볼 수 있다. 매번 일일이 이렇게 확인할 수는 없다. 위 검색 결과를 엑셀로 만들고 싶다면? pandas를 활용해서 액셀 파일로 정리해서 만들 수 있다. 작업 코드 예다. import os import shutil..

개발 Dev/깃 Git 2023.06.17

Q. JetBrains의 제품(IntelliJ, WebStorm 등) 개인 라이선스나, 커뮤니티 에디션으로 회사에서 상업용 제품을 개발해도 될까?

A. 가능하다. 문제 없다. 공식 사이트에 답변을 보자. 개인용 라이선스를 회사와 집에서 사용할 수 있나요? 네, 개인용 라이선스는 회사에서도, 집에서도 사용할 수 있습니다. 회사 프로젝트뿐만 아니라 개인 프로젝트에서도 사용할 수 있습니다. JetBrains EULA에서는 이를 제한하지 않습니다. 개인용 라이선스를 상업적 개발 작업에 사용할 수 있나요? 네, 개인용 라이선스를 모든 종류의 개발 작업에서 사용할 수 있습니다. 단, 본인의 개인용 라이선스를 사용해야 하며 다른 이들과 공유하면 안 됩니다. 또한 회사에서 개인용 라이선스를 대신 결제하거나 상환하거나 어떤 방식으로든 자금을 지원하면 안됩니다. 개인용 라이선스를 회사에서 쓰는 것은 괜찮으나, 회사가 개인용 라이선스 자금을 지원하면 안 된다. 이 문..

개발 Dev 2023.02.19

파이참Pycharm에서 장고Django 중지점Breakpoint 찍어서 디버깅하는 방법

파이참Pycharm 같은 IDE를 사용하는 이유는 자동완성과 디버깅의 편의성 때문이다. 간단한 DRF(Django Rest Framework) 예제 코드다. 실행/디버그 구성 등록 디버깅을 위해서는 Run/Debug Configuration 등록이 필수다. 아래 예처럼 추가해준다. 가장 중요한 것은 환경 변수 등록이다. DJANGO_SETTINGS_MODULE=project.settings을 제대로 등록해야 설정을 읽어와서 실행 가능해진다. 중지점Breakpoint 찍기 원하는 곳에 중지점Breakpoint을 찍자. 사실 필요 없는 코드지만 중지점을 찍기 위해서 원래 정의된 create을 그대로 복사붙여넣기 했다. 디버깅 모드로 실행하기 디버깅 모드로 실행하자. 오른쪽 상단 벌레 아이콘이 디버깅 모드 실..

Q. 깃허브Github 위키Wiki를 로컬에서 Git clone해서 수정할 수 있을까?

A. 수정할 수 있다! 위키 페이지를 가서 보면 Clone this wiki locally라고 적혀 있는 것을 볼 수 있다. https://github.com/taptorestart/wiki.wiki.git 네 깃허브 위키 clone을 위한 주소 예다. 잘 보면 taptorestart/wiki.wiki.git이니 계정명/저장소명.wiki.git이란 것을 알 수 있다. 로컬에서 아래 명령어처럼 입력하면 클론이 된다. $ git clone https://github.com/taptorestart/wiki.wiki.git 수정 작업을 한 뒤에 커밋하고 푸시하면 깃허브에도 반영이 된다. PR은 지원되지 않는다. 로컬에서 하면 이미지나 파일 추가도 다른 곳에 올리지 않고 위키 내에 올려서 쉽게 할 수 있다. wi..

개발 Dev/깃 Git 2022.12.23

Q. 외부에서 내 집 서버에 접속할 수 있게 공유기 포트포워드 설정 방법은?

A. 내부 IP 주소, 외부 포트, 내부 포트를 입력하면 된다. ipTIME 공유기 기준으로 설명해보겠다. 보통 공유기마다 약간씩 다르고 거의다 비슷하다. ipTIME 공유기는 기본 IP 주소가 192.168.0.1이다. 브라우저에 192.168.0.1을 입력해서 들어가자. 변경했다면 변경한 기본 IP 주소를 입력하자. 내 서버 IP 주소 확인 우선 내부 네트워크 설정에서 외부 접속이 되도록 열어줄 서버의 IP 주소를 확인해야 한다. 위 A가 내 서버다. 내부 IP주소는 192.168.0.4다. 포트포워드 설정 위 메뉴탐색기 캡쳐화면에 보이듯 포트포워드 설정이 있다. 이걸 누르자. 내 서버의 SSH 접속 포트가 22이라면 내부 포트는 22, 외부 포트는 원하는대로 하면 된다. 외부 포트도 22로 하자. ..

개발 Dev 2022.07.22

도커로 mysql 컨테이너 만들어서 로컬 개발환경을 구축하기

API 서버 등 백엔드 개발을 하게 되면 데이터베이스가 필수다. 당연히 로컬에 mysql을 설치한다. 이때 설치하는 방법은 여러가지다. 그냥 mysql 사이트에 가서 내려받고 설치해도 되고, macOS 사용자라면 brew로 설치하기도 한다. 단일 사용자라면 괜찮지만, 한 컴퓨터를 여러 사람이 쓰거나 서로 다른 용도로 쓸 경우 문제가 발생한다. 도커Docker가 유용한 상황: 멀티 유저 예를 들어 개인 계정은 A, 회사 업무용 계정은 B라고 하자. A 계정에서 mysql을 brew로 설치했다. B 계정에서 brew로 뭔가 추가로 설치하려면 권한 설정 이슈가 빈번하게 발생한다. 또 서로 다른 계정인데도 데이터베이스도 함께 쓰게 된다. 물론 brew를 멀티 유저로서 문제 없게 쓰는 방법도 있지만 좀 번거롭다...

Q. fork한 github 저장소 브랜치들을 하나만 남기고 일괄 삭제하고 싶다면?

A. shell script를 사용한다. 아래 파일을 내려 받는다. fork한 저장소 디렉터리에 복사한다. $ sh ./remove_branches_except_mine.sh 를 실행하면 브랜치가 모두 삭제된다. 위험하니 꼭 테스트 저장소를 만든 뒤에 해보기를 권한다. #!/bin/bash # 남겨둘 브랜치명 예)dev MY_BRANCH="/dev" SUB="remotes/origin/" branches=`git branch -a` for b in $branches do if [[ "$b" == *"$SUB"* ]] && [[ "$b" != *"$MY_BRANCH" ]] && [[ "$b" != *"main"* ]] then echo $b git push origin --delete ${b/${SUB}/..

개발 Dev/깃 Git 2022.04.03

Q. github에 push해서 데이터베이스 계정과 비밀번호가 노출되었다면 어떻게 해야 할까?

A. git reset --hard {commithash} 하고 나서 git push --force origin 하면 된다. 앗! 비밀번호를 그대로 올린 것을 발견했다. git reset --hard b0ce9e5a10c5f93ec619083db05d6dbd3776d261 위 명령어로 b0ce9e5로 시작하는 Create .gitignore로 reset을 한다. 그렇게 하면 Create .gitignore 다음에 커밋한 내용은 사라지게 된다. 그리고 강제로 push를 한다. --force를 붙여야만 된다. git push --force origin 위 명령어를 깃허브 데스크탑 같은 클라이언트 프로그램을 쓰지 않고 터미널에서 하게 된다면 Username for 'https://github.com': tap..

개발 Dev/깃 Git 2022.02.24

따로 만든 슬랙Slack 업무 진행 과정 표시용 이모티콘Emoticons

슬랙을 업무용으로 주로 쓰다보니 업무를 슬랙 메시지에 적을 일이 많다. 그때 간단히 이모티콘으로 업무 진행 상황을 표시하고 싶어서 추가로 만들었다. 슬랙의 라이트, 다크 테마 양쪽에서 모두 잘 보이도록 하얀색 바탕을 넣었다. 구글 매터리얼 아이콘으로 만든 이모티콘 assignment 업무 배정 의미 done 업무 완료 engineering 업무 중 pending actions 업무 중 pending 업무 중 run 업무 중 열심히.. 출처: Google Fonts Icons 한글로 만든 이모티콘 배달의민족 글꼴을 사용했다. 최대한 글자를 크게 했다. 자주 쓰는 댓글 이모티콘 자주 쓰는 댓글을 이모티콘으로 만들었다. 자유롭게 편하게 쓰셔도 된다. 슬랙에 이모티콘 추가하기 이모티콘을 누르고, 이모티콘 추가를..

개발 Dev 2022.01.23

Q. 소프트웨어나 애플리케이션 버전은 어떻게 적어야 할까?

A. 보통 주Major.부Minor.수Patch로 적는다. Major는 크게 바뀔 때, Minor는 새로운 기능 추가, Patch는 버그 수정할 때 하나씩 올린다. 출처: Semantic Versioning유의적 버전 요약 버전을 주.부.수 숫자로 하고: 기존 버전과 호환되지 않게 API가 바뀌면 “주(主) 버전”을 올리고, 기존 버전과 호환되면서 새로운 기능을 추가할 때는 “부(部) 버전”을 올리고, 기존 버전과 호환되면서 버그를 수정한 것이라면 “수(修) 버전”을 올린다. 주.부.수 형식에 정식배포 전 버전이나 빌드 메타데이터를 위한 라벨을 덧붙이는 방법도 있다. 에 위 그림으로 잘 설명해 놓았다. 만화경의 경우 다음과 같이 한다고 한다. Build Environment의 경우는 만화경에서는 debu..

개발 Dev 2021.04.09