- 🤷♂️Poetry의 모든것Cat_CodePoetry란?poetry는 Python 프로젝트의 의존성 관리와 패키징을 현대적으로 통합해주는 도구로, 프로젝트의 라이프 사이클 전반 (설정, 개발, 배포, 배포 후 관리)를 일관되고 간편하게 처리할 수 있게 해준다.Python의 가상환경poetry를 이해하기 위해서는 Python의 가상환경 개념을 이해해야한다. Python으로 여러 프로젝트를 동시에 진행하다보면 다양한 버전의 Python을 사용해야할 때가 온다.하지만 같은 패키기를 사용하더라도 각각의 프로젝트에서 해당 패키지의 버전을 다르게 해야할 경우가 발생한다. 이럴 때, 가끔 패키지마다 충돌이 발생할 수 있는데, 이를 독립적으로 관리해주는 것이 유지 보수에 유용하다.가상 환경은 이를 가능하게 해준다. 가상환경을 생성하는 방법은 다양한다.ven..
- 2025-06-27 18:02:21
- 파이썬은 왜 다른 언어보다 속도가 느릴까?Cat_Code들어가며파이썬을 부정적으로 바라보는 사람들은 말한다. 파이썬은 느리다물론 파이썬이 다른 언어 (C, C++ .. )에 비해서 느린것은 Fact 이다. 실제로 Python 은 C 보다 20~50 배 정도 느리다. 그렇다면 왜 Python 은 다른언어 보다 느린 것일까?대부분의 사람들이 알고 있는 가장큰 이유는 인터프리터 방식 때문이라는 것이다.그리고 조금더 Python에 대해서 알고 있는 사람이라면 GIL (Global Interpreter Lock) 때문이라는 것도 알고 있을 것이다. 앞에서 언급한 2가지 이유 이외에도 Python의 속도를 저하시키는 이유들이 존재한다.이렇듯 Python의 속도가 다른 언어에 비해서 느린 것은 단순한 한가지의 이유라기 보다는 여러 이유가 종합적으로 합쳐서 만들어진 결과이..
- 2025-06-02 18:36:03
- [Einops] 차원관리의 새로운 차원Cat_CodeDeeplearning code를 작성하다 보면 항상 tensor의 차원을 관리하는 것에서 어려움을 마주친다. 물론 Pytorch나 Numpy를 활용해서 차원을 관리할 수 있지만 문제는 `직관적`이지 않다는 것이다. 실제로 4차원 이상부터는 사람이 상상하기 힘들다.. 이렇게 어려운 차원관리를 효율적으로 할 수 있는 라이브러리가 있다. 바로 `Einops`이다. 이 라이브러리를 처음 발견한 코드는 ViT를 Pytorch로 구현한 코드였다 처음 이 코드를 보았을때, 기존 Python의 문법에서 본적이 없는 하이퍼 파라미터의 형태를 갖고 있어서 조금은 혼란스러웠다. out = torch.matmul(attn, v) out = rearrange(out, 'b h n d -> b n (h d)') return s..
- 2023-10-17 23:21:33
- GILCat_Code요즘 프로그램을 코딩하면서 가장 먼저 우선시하려고 노력하는 부분이 내가 작성한 프로그램의 처리속도가 과연 효율적인지? 또는 더 빠른 방법으로 처리할 수는 없는지 이다. 이러한 고민을 하다보면 Multi - Processing or Multi-threading을 마주 칠수 밖에 없고 CS 지식이 부족하면 조금 이해하기 어렵기 때문에 추가적인 공부를 하고 있다 공부를 하다보면 파이썬은 GIL이 있다라는 말을 자주 마주치게 되었다 따라서 이번 시간에는 이러한 GIL에 대해서 정리하고 다양한 정리를 해보려고 한다 1. 그래서 GIL이 뭔데? 우선 GIL을 이해하기전에 Python의 인터프리터를 이해 해야한다. Python의 인터프리터란, 인터프리터 언어를 생각하면 쉽게 이해할 수 있는데 내가 작성한 파이썬 코드..
- 2023-07-25 02:04:17
- [Python] Typing 2편Cat_Code참고한 자료 파이썬 Typing 파헤치기 - 심화편 지난 글 '파이썬 Typing 파헤치기 - 기초편'에서는 Typing의 기본적인 내용과 8개의 타입에 대해 다루어봤습니다. 이번 포스트에서는 조금 더 심화된 타입들에 대해 다뤄보도록 하겠습니다. 심화 타 sjquant.tistory.com 지난 글 [Python] Typing 1편 참고자료 파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사 파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 eumgill98.tistory.com 우리는 지난 시간에 Python의 Typing기능의 간단한 기초를 알아보았다 이번 시간에는 조금더 심화 과정의 Typing을 알아볼려고 한다 ..
- 2023-05-31 16:29:21
- [Python] Typing 1편Cat_Code참고자료 파이썬 Typing 파헤치기 - 기초편 동적 언어에서의 타입 검사 파이썬은 동적 언어로 잘 알려진 언어입니다. 즉, 변수의 타입을 일일이 명시하지 않아도 되고, 특정 변수의 타입이 중간에 바뀌어도 됩니다. 파이썬과 같은 동적 언 sjquant.tistory.com 요즘 오픈 소스를 살펴보면서 공부하는 습관을 기르고 있다 오픈 소스를 살펴보면 Typing을 hint로 주는 경우가 있는 이부분은 처음 보고 어색한 부분이었기 때문에 추가적을 공부를 하였다 그럼 이제부터 공부한 내용을 기반으로 Python 의 Typing에 대해서 정리해보겠다 1. 동적언어의 Typing? Python은 많은 사람들이 알고 있들이 동적언어이다. 동적언어의 가장큰 장점은 굳이 변수의 타입을 일일이 명시할 필요가 없다는 것..
- 2023-05-30 23:37:26
- [백준] 1806번 부분 합 파이썬 풀이Cat_Code1806번: 부분합 첫째 줄에 N (10 ≤ N = s: result = min(result, end-start) total -= number[start..
- 2023-03-17 19:27:41
- [백준] 1240번 노드사이의 거리 파이썬 풀이Cat_Code1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net [문제] [코드] import sys from collections import deque input = sys.stdin.readline n, m = map(int, input().split()) tree = [[] for _ in range(n+1)] #indexing을 위해서 +1사이즈로 구성 #두노드 사이 거리를 구하는 bfs def bfs(a, b): q = deque() q.append((a, 0)) visited = [False] * (n+1) visited[a] = True while q: s..
- 2023-03-15 13:37:26
- [Python] Iterator vs. GeneratorCat_Code파이토치를 하다보면 특히, DataLoader 다루다보면 Generator 라는 것을 만나게 된다 처음 마주치면 어떠한 개념인지 살짝 애매할 수 있기 때문에 이번에 개념을 한번 글로 정리해보려고 한다 Iterator vs. Generator Iterator 먼저 Iterator를 알아보자 iterate는 반복하다라는 의미이다 파이썬의 경우 list, dict, 문자열이 iterable 객체이다. 이를 이해하기 쉽게 예를 들어서 설명하면 x = [1 , 2, 3] list인 경우 순차적으로 값을 뽑기 위해서 for문을 활용할 것이다 fro i in [1,2,3]: print(i) >>> 1 2 3 그렇다면 for문을 활용하지 않고 각 값을 순차적으로 뽑을 수 있는 방법은 없을까? 바로 iter()를 활용하..
- 2023-03-14 22:16:13
- [백준]9934번 완전 이진 트리 파이썬(Python) 풀이Cat_Code9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net [문제] [코드] #중위 순회 문제 #순서가 주어지고 트리를 유추하는 문제 import sys input = sys.stdin.readline k = int(input()) squence = list(map(int, input().split())) trees = [[] for _ in range(k)] #완전 이진 트리이니까 각 층의 노드는 중간의 값 def binary_tree(array, depth): mid_index = len(a..
- 2023-03-14 10:57:26
- [백준]1991번 트리 순회 풀이Cat_Code1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net [문제] [코드] import sys input = sys.stdin.readline N = int(input().strip()) #Dic 활용 해서 노드 구성 Tree = {} for i in range(N): node, left, right = input().strip().split() Tree[node] = [left, right] #input값 출력 print(Tree) ##전위 중위 후위 함수로 구현 def preorder(node): #전위..
- 2023-03-13 11:30:17
- [네이버 부스트 캠프 AI Tech] 파이썬, Numpy, PandasCat_Code본 글은 네이버 부스트 캠프 AI Tech 기간동안 개인적으로 배운 내용들을 주단위로 정리한 글입니다 본 글의 내용은 새롭게 알게 된 내용을 중심으로 정리하였고 복습 중요도를 선정해서 정리하였습니다 ✅ Week 1 목차 Lambda, map, reduce decorate logging Handling logging configparser, argparser 정규식 numpy shape handling pandas ✅lambda, map, reduce (복습 중요도 : ⭐⭐) ✔️lambda - 함수 이름 없이 - ex) def ~~~, 함수처럼 쓸 수 있는 익명 함수 #일반적으로 함수를 활용해서 뺄셈 기능을 구현한다고 한다면 def minus(x , y): return (x - y) #함수 사용 prin..
- 2023-03-10 19:30:31
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)