반응형

배움 기록/Programming 13

[Github actions] CI 구축하기 (feat. workflow yaml파일)

CI/CD pipeline 이란? CI/CD 파이프라인은 소프트웨어 개발 프로세스의 일환으로, Continuous Integration (CI, 지속적 통합) 및 Continuous Deployment/Delivery (CD, 지속적 배포/배달)의 약자다. 이는 소프트웨어를 개발하고 배포하는 과정을 자동화하고 지속적으로 진행함으로써 소프트웨어의 품질을 향상시키고 개발 및 배포 과정을 더욱 효율적으로 만드는 방법이다. Continuous Integration (CI, 지속적 통합): CI는 개발자들이 코드를 공유 레포지토리에 푸시할 때마다 자동으로 소프트웨어를 빌드하고 테스트하는 과정을 말함 즉, new code가 기존에 존재하는 codebase에서 works 하는지 아닌지 알고자함 테스트가 fail 하면..

[python] (unittest.main) is not callable 에러 해결 (feat. PYTHONPATH, 환경변수)

오늘 약간 삽질을 한 것이 있는데, unittest.main 이 not callble이라는 unittest 에러가 나왔다. 코드도 다시 확인하고, 오타가 있는지도 보고, __init__도 다시 확인하고.. 하지만 `unittest.main`이 호출 가능하지 않은 오류가 발생한 이유는 PYTHONPATH에 "unittest"라는 이름의 디렉터리가 포함되어 있었기 때문이다!! 참고로, PYTHONPATH: PYTHONPATH는 Python이 모듈과 패키지를 찾을 때 참조하는 디렉터리 목록을 담고 있는 환경 변수이다. 모듈을 가져올 때 Python은 PYTHONPATH에 나열된 디렉터리에서 검색한다. unittest 모듈: Python에는 유닛 테스트를 작성하고 실행하기 위한 내장 모듈인 `unittest`이..

[python, dataclass] 데이터 클래스의 장점

우리는 여러가지 방법을 이용해 데이터를 담을 수 있다. 그냥 list, dict을 통해 데이터를 저장하는 것과 비교해, 데이터 클래스를 통해 데이터를 담아두면 어떤 장점이 있을까? 1. 일단, 타입힌트 지원이 된다 from dataclasses import dataclass @dataclass class UserProfile: username: str age: int is_active: bool def create_user_profile(username: str, age: int, is_active: bool) -> UserProfile: return UserProfile(username, age, is_active) 데이터 클래스는 변수와 함께 타입 어노테이션을 제공하는 것을 허용하는데, 이는 코드를 ..

csv파일을 엑셀에서 세미콜론으로 분리해서 보기 (데이터 변형 없이!)

아래와 같이 a, b, c를 세미콜론으로 나눈 csv파일이 있다고 하자. 이것을 엑셀 파일에서 열면 내가 원하는 대로 a, b, c나 따로 서로 다른 column에 있지 않고 이렇게 함께 나온다. 이때 간단한 해결방법은 아래와 같다. 하나의 열 전체를 누르고 (이경우 A열을 선택하고) , Data에서 Text to Columns를 선택한다. 그다음 Next를 누르고, Semicolon을 체크해 준다. 그러면 엑셀이 아래처럼 a, b, c가 따로 나뉜 것으로 보인다. 혹시 이렇게 했는데도 세미콜론으로 안 나뉘었으면 엑셀 세팅에 들어가서 거기 option을 누르고 advanced에서 'use system separators'에 체크가 되어있는지 확인해 보길 바란다. 하! 지! 만! 이때 문제는 raw dat..

GitHub Copilot이란? 학생 무료 계정 사용법 !!

올해 나의 개발 업무와 논문에 큰 도움을 주고 있는 챗지피티에게 고마워하며 살고 있었는데, 어제 동료들이 GitHub Copilot을 소개해줬다. GitHub Copilot 이란? GitHub Copilot는 개발자를 위한 협력 도구로, GitHub와 Visual Studio Code (VS Code)와 같은 코드 편집기와 통합되어 개발 과정을 보조하는 AI 기반 도구이다. GitHub Copilot는 OpenAI의 GPT-3 모델을 기반으로 하여, 코드 작성, 주석 작성, 문서화, 코드 리뷰 등 다양한 측면에서 개발자를 지원한다고 한다. 즉, 이를 통해 개발자는 빠르게 코드를 작성하고 더 나은 코드를 작성하는 데 도움을 받을 수 있는 것! https://github.com/features/copilot..

torch. squeeze의 역할

squeeze의 역할은 텐서에서 차원의 크기가 1인 차원을 제거한다는 것이다. 그러면 차원의 크기가 1인 애들을 왜 제거하는 것일까? 1. 차원축소: 차원이 1인 경우, 해당 차원은 단 하나의 요소를 가지기 때문에 정보적으로 불필요하다. 따라서 차원을 제거함으로써 텐서의 크기를 줄이고 메모리 사용을 줄일 수 있다. 그렿다면 왜 단 하나의 요소만을 가지면 정보적으로 불필요한 것일까? 이 이미지를 보면 이해가 된다. [ [ [1,2] , [3,4] ] ] 은 3차원 텐서로 텐서의 shape은 (1,2,2)이다. 이때 squeeze가 크기가 1인 차원을 없앤다는 것이다. 그래서 squeeze를 하고 나면 [ [1,2], [3,4] ]가 되면서 2차원의 텐서가 되며 (2,2) shape을 가지게 된다. 이때 크..

[python] Dataclasses 모듈은 무엇인가 , 장점은? (feat. **kwargs)

Dataclasses 는 말 그대로 data 를 담는 클래스다. 이 모듈을 사용했을때 어떤 장점이 있는지 알아보자. Dataclasses 모듈 사용하는 법 아래와 같이 모듈을 import하고 @dataclass 데코레이터를 클래스 위에 써준다. from dataclasses import dataclass @dataclass class Friends: name: str age: int goodfriends: bool = True Dataclasses 모듈의 장점 위의 코드에서 보는 것처럼 default 값을 설정해 줄 수 있다. goodfrineds의 디폴트 값을 True로 설정한 것처럼. 간단하게 class 를 작성할 수 있다. 기존에 쓰던 def __init__, self 이런거 없이 간단함 데이터 값..

[python] argparse 사용법, verbose 란 ?

argparse는 무엇이며 언제 사용하는가 Python script를 실행시킬때 필요한 상황에 따라 서로 다른 옵션으로 실행시키고 싶을 때가 있다. 그럴때 ArgumentParser(argparse)를 사용하면 편하게 옵션을 지정해서 실행시킬 수 있다. argparse는 command 창에서 원하는 parameter 를 지정할 수 있다. argparse 사용하는법 import argparse # ArgumentParser object를 만든다 argparser = argparse.ArgumentParser(description=__doc__) # argument를 추가 argparser.add_argument('--testarg', help='This is testarg') argparser.add_ar..

[python, pathlib, glob] 특정 directory (경로) 추출하기

원하는 파일 경로에서 "test"라는 단어로 시작하는 파일의 이름을 추출하고 싶다고 가정해 보자. (나의 경우 파일이름이 "test"를 포함하는 경우 "test"로 시작함) 예) 이 경로에서 [test1, test2, test3]이라는 파일 이름의 리스트를 추출하고 싶음 [WindowsPath('O:ABC/test1'), WindowsPath('O:ABC/test2'), WindowsPath('O:ABC/test3')] 안 좋은 답:... 리스트를 만들어서 for loop을 이용해 test가 있는지 확인하고, 있으면 리스트로 append 함 test_list = [] for fname in os.listdir(test_path): if 'test' in fname: test_list.append(fnam..

[python] plt.savefig 이미지 잘리는 경우, 해결방법 3가지

matplotlib을 사용해서 plot 을 하다보면 plt.show는 전체 이미지를 잘 보여주면서, plt.savefig를 하는경우 이미지가 잘려서 저장되는 문제를 발견할 수 있다. 이를 해결할 수 있는 방법들을 찾아봤다 plt.savefig('xxx',bbox_inches='tight') bbox_inches='tight' 를 사용 plt.tight_layout() 를 적용 아래 페이지를 참고했다. https://stackoverflow.com/questions/37427362/plt-show-shows-full-graph-but-savefig-is-cropping-the-image Plt.show shows full graph but savefig is cropping the image My code..

반응형