최근에 팀 airflow 프로젝트를 컨테이너 기반으로 전환하면서 런타임에 디버깅하는 환경을 별도로 구축했어야했는데 Remote – containers 플러그인을 이용하면 운영환경에서 크게 변경없이 디버깅할 수 있어서 사용방법을 간단히 정리해본다. 이 확장을 이용하면 디버깅 용으로 별도 로컬 환경을 구축하지 않아도 컨테이너로 관리하는 서비스들을 운영 이미지 그대로 디버깅할 수 있는데, 아직 preview 버전이긴 하지만 사내에서 사용하고 있는 airflow 이미지 기준으로 […]
[Python] JPype로 Java 라이브러리 가져다 쓰기
JPype를 이용하면 python 에서 java 라이브러리를 이용할 수 있다. 기존 프로젝트에서 자바로 만들어놓은게 있고 굳이 파이썬으로 다시 만들어 쓸 시간이 없을때 jpype를 유용하게 쓰고있는데, 성능 이슈가 없는 작업이나 후딱 치워버리고싶은 일회성 작업을 하는데 진짜 도움이 많이 된다. 암복호화같은것들? java는 python 보다는 오래전부터 인기가 있던 언어여서 그런지 인터넷을 뒤져보면 java로 만들어진 라이브러리는 있는데 python 버전은 없는 […]
[Airflow] 1.10.10 싱글 설치
rbac 기능을 이용하면 DAG-level Access Control 이 가능하다고 한다. 새롭게 추가된 tag 기능에 더해져서 tag-level 권한 관리도 됐으면 좋았겠지만.. rbac 기능을 이용하면 기본적 제공되는 롤 뿐만 아니라 Customized role 을 통해 가능해질 사용자 권한 관리를 기대하며 최신 1.10.10 버전을 설치해본다. 기존에 LDAP 연동해서 사용하던 Airflow 시스템을 업그레이드 해서 사용할 수 있을지 확인해보기 위해 OpenLDAP 환경을 […]
[Python] SSL: CERTIFICATE_VERIFY_FAILED 문제 우회
인터넷 연결이 자유롭지 않은 사설망에서 이런 문제가 종종 발생할 수 있는데 이런 경우 인증서 검증 단계를 무시해주는 것으로 우회(?)할 수 있다. 물론 신뢰받지 못한 호스트에 https 연결을 하는 것은 보안 측면에서 위험할 수 있다는 사실은 알고있어야 한다. pip 을 이용해서 패키지를 설치할 때 다음과 같은 문제가 발생한다면 Collecting encodings Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) […]
[ElasticSearch] 검색엔진 만들기 4 – Flask 웹서비스
[ElasticSearch] 검색엔진 만들기 4 – Flask 웹서비스 elasticsearch에 필요한 데이터는 다 색인해뒀기 때문에 검색엔진 자체는 다 만들어졌고 서비스를 위해서 적당한 UI 만 있으면 될 것 같다. 기존 운영하는 웹페이지에 이식하고자 하는 경우에는 작게 모듈형태로 만들어서 간단한 스크립트로 해당 검색 엔진을 불러오게할 수도 있을 것 같은데 이것만으로 완전한 독립 서비스를 구축하는 것이어서 크게 단계를 나누어서 만들지는 […]
[ElasticSearch] 검색엔진 만들기 3 – Python 검색 모듈 만들기
[ElasticSearch] 검색엔진 만들기 3 – Python 검색 모듈 만들기 IMS 데이터는 앞서 Elasticsearch에 인덱싱 해두었고 이를 검색하는 모듈을 Python API 를 이용해서 만들어본다. Python Flask로 만들면 웹서비스를 직접 할 수도 있고 다른 프레임워크에 이식하기 위한 HTTP API 를 만들어내기도 간편한 것 같다. 쿼리 템플릿 먼저 검색에 사용할 쿼리를 만들어야하는데 kibana dev tools 에서 SQL 툴처럼 […]
[ElasticSearch] 검색엔진 만들기 2 – IMS 데이터 크롤링
[ElasticSearch] 검색엔진 만들기 2 – IMS 데이터 크롤링 Selenium, BeautifulSoup 를 이용해서 IMS 이슈 페이지 Crawler 를 만든다. 기초적인 부분은 [여기]()를 참고. 단위 크롤러 수집할 이슈 번호에 대한 리스트를 만들어 한번에 수집하고 Elasticsearch에 인덱싱 하는 IndexIssueList 함수를 만들었다. (IMS 는 이슈 번호를 URL(https://ims.tmaxsoft.com/tody/ims/issue/issueView.do?issueId=) 에 변수로 대입해서 각 이슈 페이지에 접근할 수 있다.) _LOGIN_ID = "IMS_USERNAME" […]
[Python] Selenium을 이용한 Melon Playlist 추가 자동화
Melon Playlist 추가 자동화 Selenium을 이용해 Melon에서 음악을 검색해 Playlist에 추가하는 과정을 자동화한다. Bugs에서 Melon으로 갈아탔는데 그동안 Bugs에서 듣던 노래가 500곡이 넘어서.. 일일이 검색해 추가하기가 번거로워 Python Selenium으로 playlist 검색해 추가하는 자동화 스크립트를 만들어봄. Selenium은 세션을 이용해 크롤링을 할 수 있는 정도로만 알고있었는데, 패키지 내 WebDriver로서 활용할 수 있는 클래스가 많다. 로그인 하는 과정과 음악을 […]
[Python] Tensorflow 설치
Python Tensorflow 설치 사전 준비 CUDA 설치 https://oboki.net/workspace/system/linux/ubuntu-cuda-%EC%84%A4%EC%B9%98/ Python 설치 https://oboki.net/workspace/programming/language/python/python-python3-%EC%84%A4%EC%B9%98-%EC%86%8C%EC%8A%A4-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0/ Tensorflow 설치 pip3 install tensorflow-gpu Tensorflow 동작 확인 아래 소스를 동작시키면서, import tensorflow msg = tensorflow.constant(‘Hello Tensorflow!’) sess = tensorflow.Session() print(sess.run(msg)) 동시에 nvidia-smi 명령으로 위 예제 프로그램이 gpu 를 잘 이용하고 있는지 확인
[BaekJoon Online Judge] 2606 – 바이러스
[BaekJoon Online Judge] 2606 – 바이러스 문제 https://www.acmicpc.net/problem/2606 소스코드 dfs 를 이용해서 문제를 해결한다. 양방향 간선으로 표현된 네트워크 입력을 그래프로 표현한 뒤 1번 컴퓨터부터 탐색을 시작하면 바이러스에 감염되는 모든 컴퓨터를 찾아낼 수 있다. N = int(input()) V = int(input()) graph = [[0 for _ in range(N)] for _ in range(N)] for i in range(V): a,b […]