분류 전체보기 802

Linter 와 Formatter 를 사용해서 깔끔하게 코딩하자

Linter란? 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구 Formatter란? 작성한 코드에 대해 설정된 규칙에 의해 정렬을 해주는 기능 Linter 와 Formatter 를 사용하면 저장할 때마다 내 코드를 깔끔하게 정리해준다. 또한 혹시나 잘못 작성된 코드가 무엇인지 알기 쉽게 표시해준다. 보통 가상환경 설정 후 저장을 하면 vsc에서 추가 설치를 권장하는 팝업창이 뜨는데 여기서 이러한 도구들을 설치할 수 있다. (물론 직접 pip같은 툴로 설치해도 무방) 추천하는 도구들을 소개하자면 다음과 같다. black 최근 파이썬 커뮤니티에서 가장 널리 쓰이고 있는 있는 코드 포멧터 autopep8 파이썬 코드를 PEP8 컨벤션에 맞게..

x만큼 간격이 있는 n개의 숫자

문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 해결 방법 def solution(x, n): return [ x * (i+1) for i in range(n) ] 1. 우선 range를 이용해 n의 수 만큼 반복한다. 2. i는 0부터 생성되므로 +1을 하여 실제 반복 수로 바꿔주었다. 3. x 를 (i+1) 과 곱해주어 x가 배수로 생성되도록 하였다. 4. 리스트에 담아 리턴한다. >>> 처음에는 for 문으로 풀었..

threading 왜 되는 걸까? PumpMessages가 뭐길래?

목표 flask-app 실행 후 Cybos-Subscribe 시작, event 수신 데이터 받아 DB에 저장하기 문제 성공한 줄 알았던 threading이 다시 보니 정상적으로 작동하지 않음 스레드는 나눠진 것 같으나 cybos api의 정보를 정상적으로 받아오지 못하는 상황 cybos api 오류가 뜨거나 flask context app 오류가 뜨거나, 정확한 원인도 파악하지 못하는 상황 행동 일단 리더님께 말씀드리고 피드백에 따라 flask와 분리하여 작게 테스트를 해보기 시작 cybos api 오류의 경우 pythoncom.CoInitialize()로 어떻게든 잡음 서브 스레드의 경우 cybos 인스턴스를 초기화해야하기 때문? >>> 레퍼런스 기존 PumpWaitingMessages 코드를 Pump..

Log/Today 2022.01.13

직사각형 별찍기

문제 별(*) 문자를 이용해 가로의 길이가 a, 세로의 길이가 b인 직사각형 형태를 출력해보세요. 풀이 ''' a = 5 (가로) b = 3 (세로) ''' for i in range(b): for j in range(a): print('*', end='') print(sep='\n') >>> ***** ***** ***** ''' 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 ''' 느낀점 오랜만에 문제를 만나니 순간 어떻게 풀어야하지? 라는 막막함이 있었음 매일 조금씩 꾸준히 풀어나가는 습관이 중요하다고 느껴짐 쉬운 문제부터 되도록 하루에 한 문제씩 풀어보자 너무 어려운 문제는 오랜 시간을 두고 고민해보자

threading 으로 python병렬처리 성공

목표 flask-app 실행 후 Cybos-Subscribe 시작, event 수신 데이터 받기 문제 Subscribe 프로세스를 계속 유지하지 않으면 실시간 데이터를 받을 수 없음 행동 pump기능을 그대로 적용하여 무한 루프를 돌리고, 대신 스레드를 나누기로 함 파이썬은 단일 스레드이기 때문에 threading 을 사용하여 스레드를 분리함 결과 스레드를 분리하니 event 수신 데이터는 지속적으로 받으면서도 다른 api 요청이 가능해짐 # router.py import threading import BidAsk, start_subscribe @app.route("/") def start(): # 서브 스레드에서 COM 객체를 사용하려면 COM 라이브러리를 초기화 해야함 pythoncom.CoIniti..

Log/Today 2022.01.12

Flask로 Subscribe데이터 받기 실패

목표 앱 실행과 동시에 DB에 저장된 종목코드를 불러와 Subscribe를 해야함 파일 시스템을 활용하여 데이터를 DB에 저장하고 다시 불러오는 api를 만들어야함 - 싱글 및 벌크 기능 필수 문제 flask를 실행하고 종목코드를 불러와 Subscribe까지는 되는 것 같지만 이를 확인 할 수 있는 방법이 없음. 기존에는 pumpwaitmessage(이하 pump)를 무한 루프로 이용하여 프로세스를 지속하였는데, 이 경우에는 다른 요청 작업을 수행할 수 없게 됨. 하지만 pump기능을 사용하지 않으면 print는 물론 DB에도 데이터가 저장되지 않음. Subscribe자체가 비동기 통신 방식이기 때문에 event발생에 따라 데이터를 받아와야 하는데, pump를 사용하지 않으면 어디서 데이터를 캐치할 수 ..

Log/Today 2022.01.10

RESTful 도대체 뭐냐고...

뭔가를 듣고 배운 것 같고 개념도 이해가 되는 것 같은데 뭐가 뭔지 모르겠는 것이 왔다. 그건 바로 RESTful 이다. 일단 이름부터가 마음에 안든다. 뭔지 모르겠다. 풀어보자면 Representational State Transfer 이라고 한다. 네이버 사전에 찾아보니 [확장성 생성 언어(XML) 파일로 된 웹 페이지를 읽어 원하는 정보를 수집하는 기능.] 라고 한다. 한글을 봐도 모르겠다. 공부를 해도 잘 모르겠어서 뭐라 딱 정의하기는 어렵고 그냥 일단 현재까지 공부한 내용을 정리해보겠다. (글 마지막 쯤에는 조금 이해가 됬을지도..?) REST 3가지 구성 요소 1. 자원(Resource) : HTTP URI (특정 자원의 위치 주소) 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server..

m1 맥북 ip주소 확인하는 방법 2가지 + ifconfig 에러 해결

맥북에서 ip주소를 확인하는 방법을 알려주겠다. 첫 번째는 시스템 환경설정에서 확인하는 방법이다. ip 주소가 딱 보인다. 두 번째는 터미널에서 확인하는 방법이다. 터미널에서 ifconfig | grep inet 이라고 치면 중간에 ip주소를 확인할 수 있다. 하지만, but 이렇게 명령어를 입력해도 찾을 수 없는 오류가 날 수도 있다. 이런 경우에는 터미널에 vi ~/.zshrc 명령어를 입력하고 환경변수를 열어 새로운 경로를 추가해야 한다. #zshrc export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin" 추가한 후에는 위에 위에 처럼 정상적으로 작동하는 것을 볼 수 있다.

11개 기업 개발문화 엿보기

2021년 11월 27일 토요일 오후 4시~5시 30분 11개 기업의 개발문화를 주제로 다룬 글들을 읽고 동기 12명과 함께 자체 세션을 진행하였다. 아래는 해당 세션에 대해 정리한 글이다. 세션 목적 팀프로젝트에 들어가기에 앞서 우리의 소통방식과 기업 개발문화에 대해 알아보기 위함 선배기수의 조언대로 성공적인 프로젝트를 위해 소통능력을 기르기 위함 각자의 경험과 생각을 공유하며 서로를 더 잘 이해하기 위함 세션 내용 좋은 개발문화의 공통 키워드 목적, 목표, *OKR, 고객, 영향 공개, 공유, 투명성, 신뢰, 효율 페어 코딩, 코드 리뷰 스프린트, 애자일, mvp, 칸반 실수, 실패나눔, *포스트모템 *OKR이란? → 참고 글 *포스트모템이란? 개인의 잘잘못을 따지기 보다는 문제해결과 근본 원인에 집..