본문 바로가기

Developer

(50)
failed to write prefs file - chromedriver, selenium 셀레니움 크롤러를 돌리다가 아래와 같은 에러가 발생했다. 구글링 결과, C 드라이버 혹은, 크롬 드라이버의 바이너리 파일이 위치한 공간이 꽉찼을 때 발생하는 에러였다. 서버의 용량 확인 결과, 전체 서버의 약 60%를 사용하고 있었기 때문에... 이유를 찾기가 굉장히 어려웠다. 그리고 크롬 드라이버의 쿠키가 저장되는 폴더에 들어갔고, /tmp 폴더 확인 결과 뭔지 알수없는 파일들이 줄줄이 늘어있었고, 파이썬 파일 개수 확인 결과 .com.google.Chrome 파일이 약 45000개 정도 있었다,, 이 영향이 아닐까 하는 생각에 과감히 모든 파일을 지웠다 rm -rf $(ls -a | grep -P ".com.google.Chrome.*") 정규식을 사용하여 모든 파일을 삭제했는데, 사실 저 파일이 왜..
Failed: element not interactable in headless chrome 셀레니움 크롤링을 진행하다보면, 정말 다양한 오류를 만난다. 셀레니움 크롬으로 진행하고 있었고, 옵션에서 오류가 발생하는 경우였다. try: path_dir = os.getcwd() options = webdriver.ChromeOptions() options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36") options.add_argument('--headless') options.add_argument("--no-sandbox") options.add_argument('--disable-..
[Python] dict 딕셔너리 키-값 출력 파이썬 딕셔너리에서 for문을 사용하여 키-값 쌍을 출력할 수 있다. for x in dict: print(x, end=' ') 위와 같이 사용하면, x는 키값만 출력된다. 따라서, for key, value in dictionary.items(): print(key, value) items()라는 함수를 사용하여, key, value를 각각 프린트 할 수 있다. 값만 출력하기 위해서는 for value in dictionary.values(): print(value, end=' ') values()라는 함수를 사용할 수 있다.
[MySQL] SELECT 결과를 INSERT 하기 여러행을 한번에 인서트 할 때, 혹은, 테이블에서 셀렉트한 값을 다른 테이블에 인서트 하는 경우에 사용할 수 있다. INSERT INTO [테이블명1] (COLUMN1,COLUMN2,COLUMN3,COLUMN4) SELECT RESULT1,RESULT2,RESULT3,RESULT4 FROM [테이블명2] WHERE RESULT1 > 0; INSERT INTO의 컬럼 개수와 아래 SELECT 문의 컬럼 개수 및 타입 통일은 필수 SELECT 구문에 여러 테이블을 JOIN해서 사용할 수도 있기 때문에 아주 편리하게 사용 가능하다.
[MySQL] SELECT 결과를 UPDATE 하기 SELECT한 결과로 특정 컬럼의 값을 UPDATE 시킬 수 있다. UPDATE [테이블명1] as t1, [테이블명2] as t2 SET t1.COLUMN1 = t2.COLUMN2 WHERE t1.COLUMN3 = t2.COLUMN4; set은 테이블2의 값을 테이블1으로 update 시키겠다는 의미 where 절은 join과 비슷한 용도로 사용할 수 있다. where 절에 쓰지 않고 아래처럼 테이블을 조인해서 사용할 수 있다. UPDATE [테이블1] INNER JOIN [테이블2] ON [테이블1].COLUMN3 = [테이블2].COLUMN4 SET [테이블1].COLUMN1 = [테이블2].COLUMN2; UPDATE 구문에 JOIN한 테이블을 넣어서 사용할 수 있다.
SQL 인덱스 구조 및 탐색, 기본 사용법 2.1 인덱스 구조 및 탐색 출처 : 친절한 SQL 튜닝 데이터베이스 테이블에서 데이터를 찾는 방법: 1. 테이블에서 전체 스캔 2. 인덱스 이용 인덱스는 큰 테이블에서 소량 데이터 검색 시 사용. 온라인 트랜잭션 처리(Online Transaction Processing, OLTP)시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 중요 세부 인덱스 튜닝 방법 1. 인덱스 스캔 효율화 튜닝 2. 랜덤 액세스 최소화 튜닝 -> 성능에 미치는 영향이 크다 : 인덱스 스캔 후, 테이블 레코드를 액세스할 때, 랜덤 I/O 방식 사용 ex) 학생 리스트를 이름과 시력 순으로 정렬해 두었다면, 특정 이름, 특정 시력을 가진 학생을 찾기 쉽다. 시력과 이름 순으로 정렬해두었다면 효율성 떨어진다. 데이터 베이스..
SQL 처리 과정과 I/O 1.1 SQL 파싱과 최적화 SQL : Structed Query Language SQL은 기본적으로 구조적(Structured)이고, 집합적(set-based)이고 선언적(declarative)인 언어 SQL 최적화 : DBMS 내부에서 프로시저 작성하고, 컴파일해서 실행 가능한 상태로 만드는 것 - SQL 파싱 파싱 트리 생성 : SQL 문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 Syntax 체크 : 문법 오류 없는지 확인 Semantic 체크 : 의미상 오류가 없는지 확인 - SQL 최적화 -> 옵티마이저 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행 경로 생성 후 비교한다. -> 성능 결정의 핵심 엔진 - 로우 소스 생성 -> 로우 소스 생성기 SQL 옵티마이저가 선택..
[Python] 파이썬 CPU 확장 방법 2 (퓨처스) 이번 페이지에서는 CPU 확장 방법 중 하나인 '퓨처스'에 대해 설명한다. 멀티 프로세스와 멀티 스레드 관련 포스트는 이전 포스트를 참고한다. https://tttto-factory.tistory.com/7 파이썬 - CPU 확장 방법 1 (멀티 스레드, 멀티 프로세스) CPU 확장 이유? CPU 속도는 무한히 빨라질 수 없으므로, 애플리케이션에 동시성 + 병렬성 도입 CPU 확장 방법 1. 스레드 여러 함수를 동시에 실행하기에 좋다 싱글 CPU : 스레드 차례로 실행 멀� tttto-factory.tistory.com futures 사용하기 파이썬3 : concurrent.futures 모듈을 사용하면 비동기 작업 쉽게 처리 가능 파이썬2 : pip install futures명령으로, 파이썬 2에도 ..