목록삽질 (10)
안녕하세요
STT 서비스를 만들었는데, 최근들어 서비스에 장애가 있다고 피드백을 많이 받았다.가끔씩 STT가 안되는 문제가 있다고 한다.처음에는 서버 STT 모델의 문제인것으로 보고, 실패하면 재시도 해보고 다른 모델을 사용해보도록 했는데 문제가 해결되지 않았다. 무엇이 문제인가 싶어 클라이언트에서 발생한 로그를 보았는데...클라이언트측에서 서버에 STT를 요청했는데 서버 응답 에러가 뜬 것이다!평가판 서버 ********.co.kr로 요청 중...서버 응답 에러: 413 - 413 Request Entity Too Largenginx/1.20.1 413 Request Entity Too Large 에러가 무엇인고 보니서버 허용량보다 더 큰 파일을 올리면 발생하는 문제였던 것이다. 최근 STT 서비스를 Nginx로..
사내에서 만든 파이썬 프로그램을 PyInstaller로 빌드해 exe로 배포하고 있었다.처음엔 단순했지만, 외부 사용자에게 프로그램을 배포할 일이 생겨 업데이트 배포가 번거로워졌다.매번 "새 버전 나왔으니 새로 다운하고 재실행해주세요~"라고 안내하는 것도 힘들고 사용자도 귀찮아할 것 같았다. 이 상황이 되니 크롬처럼 자동업데이트되도록 만들고싶어졌다.요즘 소프트웨어는 대부분 자동 업데이트가 되지 않는가?자동 업데이트 기능을 만들어보기로 했다. 요구사항:1. 파이썬 기반으로 개발하기.2. 별도의 설치 프로그램 없이 동작하도록 한다.3. 새 버전이 있으면 자동 업데이트할건지 팝업을 띄운다.4. 사용자 승인 시 자동 업데이트한다. 가능하면 사용자 승인 없이도 자동 업데이트 한다.5. 사내 인프라 의존성은 최소화..
셀레니움 실행 시 아래와 같은 오류가 발생한다면...2025-03-04 17:06:27,388 - app.crawler.scraper - ERROR - Failed to initialize Chrome driver: Message: session not created: Chrome failed to start: crashed. (session not created: DevToolsActivePort file doesn't exist) (The process started from chrome location C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that ..
import pyautoguiw = pyautogui.getWindowsWithTitle('메모장')[0]w.activate() 결과1 : PyGetWindowException: Error code from Windows: 0 - 작업을 완료했습니다. 결과2 : PyGetWindowException: Error code from Windows: 5 - 액세스가 거부되었습니다. 우회적으로 창을 maximize() 하는 방법이 있기는 하다.그러나 이 방법은 activate()처럼 창이 활성화되지는 않는다.활성화 하고자 하는 창이 여전히 다른 창에 의해 가려져, 다른 방법을 찾았다.import pyautoguiw = pyautogui.getWindowsWithTitle('메모장')[0]if not w.isAc..
잘 되던 서버에서 갑자기 외부 인터넷 연결이 안 되는 상황이 발생했다.인접한 컴퓨터와의 내부망 통신은 정상적으로 이루어지는데, DNS 서버와 웹 서비스와의 연결은 끊긴 상태였다. 원인라우팅 테이블을 보니 내부망과 외부망 모두 기본 게이트웨이로 설정되어 있었고, 내부망(192.168.1.1)의 우선순위(metric 값)가 더 낮게 설정된 상태였다. 이것 때문에 내부망이 기본 라우트로 인식되면서 외부망과의 연결을 방해하게 되는 상황을 만들었다. 내부망과 외부망이 동시에 사용되던 환경에서, 외부 DNS 서버로 나가야 할 요청이 내부망으로 잘못 나가는 구조였다.이로 인해 외부망 통신이 실패했고 인터넷을 사용할 수 없었다. 시스템 업데이트나 네트워크 재시작(NetworkManager 재부팅 등)으로 라우팅 우선순..

*2023년 6월에 했던 과제 아카이브용 게시글입니다. 당시 사용된 모델을 현재 사용할 수 없어 24년 9월 기준으로 일부 수정했습니다.과제 수행 이전에 영상에서 키워드를 추출하여 중요구간을 분석하는 과제를 한 적이 있었다. 그러나 단어가 등장하는 빈도수만으로 중요도를 매겨 키워드를 추출했기 때문에, 이 방법으로는 영상의 핵심 내용을 정확히 파악하는 데 한계가 있었다. 그런데 최근 영상 요약에 사용하기 좋은 딥러닝 모델이 공개되었다. Whisper68만 시간의 데이터를 학습한 자동음석인식(ASR)을 수행하는 딥러닝 모델이다. 다양한 언어가 학습되었는데 그중 한국어는 7번째로 많은 8,000시간을 학습시켰다(한국어는 A.I Hub(https://aihub.or.kr)데이터를 사용한 것으로 추측). 기존에 ..

# 마스터 로그확인 nano /var/log/slurm/slurmctld.log # 로그 > Node node1 now responding > node node1 returned to service > error: Nodes node1 not responding > error: Nodes node1 not responding, setting DOWN 위처럼 계산 노드에서 응답이 없을 경우 unk*, idle*, down* 상태가 된다. 나의 경우, 방화벽 설정 문제로 발생한 문제였다. 마스터 노드에서는 slurm에서 사용하는 포트(6817, 6818)가 열려있었으나, 계산 노드에서는 포트 설정이 되어있지 않았다. 클러스터 내 모든 노드에서 slurm이 사용하는 포트가 열려있어야 한다. 방화벽 도구인 ip..
import tokenization_kisti as tokenization vocab_file = "./vocab_kisti.txt" tokenizer = tokenization.FullTokenizer( vocab_file=vocab_file, do_lower_case=False, tokenizer_type="Mecab" ) example = "본 고안은 주로 일회용 합성세제액을 집어넣어 밀봉하는 세제액포의 내부를 원호상으로 열중착하되 세제액이 배출되는 절단부 쪽으로 내벽을 협소하게 형성하여서 내부에 들어있는 세제액을 잘짜질 수 있도록 하는 합성세제 액포에 관한 것이다." tokens = tokenizer.tokenize(example) encoded_tokens = tokenizer.convert_t..