분류
-
Windows Kafka: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다.컴퓨터/Kafka 2020. 12. 15. 16:45
가끔가다가 kafka 서버 콘솔에서 000~0000.timeindex ~: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. (the process cannot access the file because it is being used by another process) 라고 오류가 뜨면서, 서버가 죽어버린다. 무슨 오류인지 정확히 설명은 없고, kafka-server-stop을 해보아도 사용 중인 프로세스도 없고... 카프카 공식 오류 목록에 올라가 있긴하다. (그냥 리눅스 버전으로 쓰는 걸 추천하는 것 같다) 해결 방법 1 로그 폴더를 지워버린다. 프로덕션에선 권장하진 않지만, server.properties에 log.dirs로 설정돼있는 폴더 안 데이터를 전부 지우고, 다..
-
Python: Kafka + 대학교 공지 Parser + Slack API + MySQL컴퓨터/파이썬 2020. 12. 15. 15:00
결과물 1. 만들 것 사실, 하나의 파일로, parsing 하고, slack api에 전달하고, mySQL이나 json으로 저장해도 되지만 (Kafka Connect Sink로 해도 되고 방법은 많다.) 공부해본 것을 사용하기 위해, 짬뽕 Apache Kafka Producer에서 대학교 공지 데이터 불러오기 MySQL로 공지 저장과 동시에 Consumer로 데이터 전달하기 Apache Kafka Consumer에서 Slack API를 이용하여 댓글 남기기 (카카오톡 챗봇이 수락이 되면 카카오톡 챗봇으로 업데이트 예정) (서버 부담을 덜기 위해, 1시간 간격으로 공지 파싱) 2. 준비물 Apache Kafka Apache Kafka Apache Kafka: A Distributed Streaming Pl..
-
Python MySQL: with OPEN_DB 만들기컴퓨터/MySQL 2020. 12. 15. 10:35
commit은 항상 하고, cursor를 주로 사용하기 때문에 알아서 close 시키는 with문을 만들고 싶었다. custom with문 만들기 import os from contextlib import contextmanager @contextmanager def OPEN_DB(): # connect to my local MySQL instance using connection string db = mysql.connector.connect( host="localhost", user=os.environ["MYSQL_USER"], password=os.environ["MYSQL_PASSWORD"], database="mydb", charset="utf8", ) cursor = db.cursor(buff..
-
Python MySQL: 중복 row 인지 확인하기컴퓨터/MySQL 2020. 12. 15. 10:30
위와 같이 id, title, ...로 이루어진 row들이 있는 데이터베이스가 있다. id는 primary key이고, id를 INSERT하기 전에 중복인지 확인하고 싶었다. db 초기화 import mysql.connector db = mysql.connector.connect( host="localhost", user=os.environ["MYSQL_USER"], password=os.environ["MYSQL_PASSWORD"], database="mydb", charset="utf8", ) cursor = db.cursor(buffered=True) 중복 row 체크 왜 빠를까? 만약 id가 기본 키라면 인덱싱이 된다. 인덱스 스캔은 테이블 스캔보다 빠르니까 크기에 관계없이 동일한 성능을 보여준다..
-
MySQL 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다.컴퓨터/MySQL 2020. 12. 15. 10:23
모르고 시작 메뉴에서 MySQL을 제거하고 재부팅했더니, 서비스도 안 보이고 MySQL 시작도 안됐다. MySQL 서비스 등록하는 방법 cmd를 관리자 권한으로 실행 mysqld --install MySQL 초기화하기 cmd를 관리자 권한으로 실행 mysqld --initialize --console ※ db와 비밀번호가 초기화되어버린다. ※ 꼭 console 옵션을 붙여서, 임시 비밀번호를 확인한다. MySQL 서비스 실행하기 net start mysql 테스트하기 -p 옵션으로 비밀번호를 입력 후 접속하도록 한다. 비밀번호엔 초기화해서 받은 임시 비밀번호를 사용한다. mysql -uroot -p
-
Python: MySQL 사용하기컴퓨터/MySQL 2020. 12. 14. 16:00
MySQL MySQL Over 2000 ISVs, OEMs, and VARs rely on MySQL as their products' embedded database to make their applications, hardware and appliances more competitive, bring them to market faster, and lower their cost of goods sold. www.mysql.com 할 것 MySQL 서버 실행 Python용 MySQL connector db 만들고 간단하게 table CREATE, SELECT 설치 MySQL 다운로드 dev.mysql.com/downloads/mysql/ Windows 10 my.ini 경로: C:\ProgramData\..
-
Python rich: Console 출력 색깔, 꾸미기컴퓨터/파이썬 2020. 12. 13. 13:10
rich rich Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal pypi.org 1. 소개 rich-console은 python으로 powershell이나 cmd 출력 창을 꾸미는 라이브러리이다. 설치 pip install rich 2. 예제 API 문서 링크: @링크 dictionary, 함수 local value 출력 from rich.console import Console data = [ { "jsonrpc": "2.0", "method": "sum", "params": [None, 1, 2, 4, False, True], "id": "1", }, {"jsonrpc": "2..
-
Python: with문 만들어 사용하기컴퓨터/파이썬 2020. 12. 11. 10:13
with contextlib — Utilities for with-statement contexts — Python 3.9.1 documentation Most context managers are written in a way that means they can only be used effectively in a with statement once. These single use context managers must be created afresh each time they’re used - attempting to use them a second time will trigger an excep docs.python.org 1. with문 파이썬에서는 with문을 이용해서 외부 리소스를 간편히 이용..