분류 전체보기
-
[파이썬] 파이썬은 모든것이 객체다개발 2024. 5. 9. 11:52
파이썬은 모든것이 객체다 파이썬에선 모든것이 객체라는 말이 있다. 이게 무슨 말인지 모르더라도 파이썬을 사용하는데 큰 문제는 없다. 하지만 좀더 깊게 들어가고 싶다면 한번쯤 공부해보고 가는 것이 좋다. 우선 아래 코드를 실행하면class A: passa = A()print(type(a)) # class A 라고 출력된다. 변수 a 는 A 라는 클래스의 객체이기 때문이다. 그런데 배열과 정수, 문자열에 대해서도 동일하게 출력해보면, 타입 정보와 함께 앞에 class 가 붙여서 나온다.print(type([1,2,3,4])) # print(type(5)) # print(type("1234")) # 심지어 추가한 함수와 len 처럼 빌트인 함수도 클래스의 일종이다.def foo(): passpr..
-
[python] __all__ 을 이용해 전체 임포트 막기개발 2024. 5. 8. 10:27
메타클래스 __all__ 을 활용하면 패키지 전체 임포트시 특정 클래스나 메소드만 임포트 되도록 제한할 수 있다. transporation.py 에서 Bus, Taxi, Subway 클래스를 선언하고 __all__ 에는 Bus와 Taxi 만 추가했다# transporation.pyclass Bus: passclass Taxi: passclass Subway: pass__all__ = ["Bus", "Taxi"] main.py 에서 transporation.py 파일 내부 클래스를 전체 임포트하고 사용하면from transporation import *sb = Subway() Subway 를 찾을 수 없다고 나온다.➜ clean-python python3 main.pyTraceback (..
-
__init__.py 를 이용한 모듈 관리개발 2024. 5. 8. 10:17
파이썬 3.3 이전에는 __init__.py 는 디렉토리가 파이썬 패키지임을 명시할 때 필요했었다면 이제는 __init__.py 가 없어도 없어도 자동으로 디렉토리를 패키지로 인식한다. 대신에 __init__.py 를 사용하면 패키지 내부에 있는 클래스 선언을 하나로 모아줄 수 있는 장점이 있다. 이런 프로젝트 구조를 가지고 있고├── main.py└── phone ├── galaxy.py └── iphone.py galaxy.py 와 iphone.py 에서 각각 클래스를 선언했다면# galaxy.pyclass Galaxy: def __init__(self) -> None: pass# iphone.pyclass Iphone: def __init__(self) -> No..
-
파이썬 - 리스트 컴프리헨션개발 2024. 5. 3. 13:12
개인적으로 파이썬은 가독성이 좋은 언어라고 생각하는데 가독성을 돕는 대표적인 기능이 리스트 컴프리헨션이다 리스트 요소들에 제곱 값을 새로운 리스트로 만들기 위해선 아래 코드처럼 map 이라는 함수를 사용해서 구현하는데numbers = [1, 2, 3, 4, 5]square_numbers = map(lambda num: num**2, numbers) 리스트 컴프리헨션을 사용하면 함수없이 구현할 수 있다. square_numbers = [num**2 for num in numbers] 처음 사용할 때는 문법이 익숙하지 않을수도 있다. 연산이 먼저 나오고 뒤에 for 문이 나오는 문법이 대부분 프로그래머한테 익숙한 형태는 아니다. 그런데 자주 사용하다보면 따로 함수를 만들지 않아도 되기 때문에 편하게 쓸 수..
-
OLAP vs OLTP 데이터베이스개발/기술 2024. 4. 16. 11:36
데이터베이스는 어떤 기능에 초점을 두느냐에 따라 OLAP, OLTP 데이터베이스로 나뉜다. 좀 거칠게 단순화하면 쓰기 성능은 떨어지더라도 읽기 성능을 극대화 할때는 OLAP (Online Analytic Processing), 읽기 성능이 떨어지더라도 안정적인 트랜잭션을 제공하는데 초점을 둔다면 OLTP (Online Transaction Processing) 데이터베이스로 구분할 수 있다. 사용 케이스에 따라 구분할 수 있는데 은행, 온라인 쇼핑, 항공기 예약처럼 사용자의 쓰기 데이터가 빠르게 처리돼야 하는 경우 OLTP 데이터베이스를 사용하고 데이터 분석 툴처럼 복잡한 쿼리 검색이 빠르게 처리돼야 하는 경우 OLAP 데이터베이스를 사용한다. MySQL, PostgreSQL, Maria DB 처럼 우리..
-
Clickhouse 가 빠른 이유개발/기술 2024. 4. 11. 11:48
Clickhouse 는 Online Analytic Processing(OLAP) 에 최적화된 데이터베이스로 다른 데이터베이스에 비해 월등한 검색 속도를 자랑한다. 이번 포스트에서는 어떤 요소들 때문에 Clickhouse 가 속도가 빠른지 정리했다 Column oriented DBMS Clickhouse 는 칼럼형 데이터베이스를 사용하고 있다. 칼럼형 구조가 생소할 수 있는데 먼저 이것과 반대되는 개념인 로우형(Row-oriented) 데이터베이스에 대해서 먼저 알아보자 Row-oriented DBMS 같은 행에 있는 데이터 단위로 저장되는 형태다. MySQL 과 PostgreSQL 이 대표적인 Row 형 데이터베이스다 만약 (시간, 주소, 전화번호) 정보를 저장하는 데이터베이스라면 세가지 데이터를 같은..
-
VIP, HA개발/기술 2023. 11. 27. 22:16
VIP VIP 는 가상의 주소를 의미한다. 하나의 컴퓨터에 물리 ip 주소와는 별개로 새로운 가상 IP 주소를 설정할 수 있다. VIP 를 설정하면 같은 네트워크 내에서 설정한 vip 주소에 대한 요청을 받을 수 있게 된다. 하지만 아무 주소나 정할 수 있는건 아니고 몇가지 규칙이 있다. 네트워크 범위 네트워크의 서브넷 설정에 맞는 주소를 골라야한다. inet 192.168.1.4/24 로 설정된 경우 서브넷에 따라서 192.168.1.x 범위의 주소를 가상의 주소로 설정할 수 있다. 주소충돌방지 너무 당연하지만 기존에 있던 주소와 겹치면 안된다 HA(High Availability) VIP 는 고가용성 서비스를 구성할 때 주로 사용된다. 실제 사례를 알아보기 위해 먼저 데이터베이스의 프라이머리, 스탠드..
-
chat gpt function, langchain개발/인공지능 2023. 11. 27. 20:14
Browsing Chat GPT(4.0) 한테 서울 날씨에 대해서 물어보자. Chat GPT는 특정 시점의 데이터를 기준으로 학습했기 때문에 현재 서울 날씨에 대한 데이터는 알 수 없다. 그래서 Chat GPT 는 Browsing 기술을 활용해 외부 사이트에서 날씨를 읽어와서 대신 답을 해준다. 사진의 예제에선 네이트 날씨를 참조해서 답변했다. 로직을 다이어그램으로 그려보면 위와 같다. APP 에서 받은 질문으로 외부에 날씨 API 를 조회하고 답변하는 식이다. 오픈되지 않은 데이터에 대한 요청 그런데 요청이 오픈된 데이터가 아니라면 어떨까? 위의 그림처럼 APP 에서 GameDB 에 유저가 몇명 있냐고 물어보자. 그러면 Chat GPT는 GameDB 가 뭔지 모르기 때문에 답변할 수 없다. 함수 정보 ..