본문 바로가기

개발툴102

OpenAI를 이용하여 비정형 데이터 분석하기 요즘 생활체육 대회를 스크래핑 하는 사이트를 만들고 있습니다.대부분의 사이트는 정형화된 형식으로 대회 일자를 제공하고 있지만 특정 사이트는 아래와 같이 비정형화된 형식으로 대회 일자를 제공하고 있습니다.전국 직장 근로자들에게 생활탁구의 참여도를 높이고 건전한 여가활동은 물론 공동체 의식의 함양으로 동료 간의 화합과 건강한 직장문화를 만들어 가는데 이바지 하고 관광 단양을 전국에 홍보하여 지역발전에 기여 하는데 그 목적이 있다.  2. 행 사 개 요- 대회명 : 제1회 단양 직장대항 전국오픈탁구대회- 일 시 : 2024년 12월 14일(토) ~ 15일(일) 9시 30분- 장 소 : 단양국민체육센터- 주 최 : 단양군탁구협회- 주 관 : 단양군탁구협회- 후 원 : 단양군청, 단양군의회, 단양군체육회, 일시 .. 2024. 12. 11.
운영중인 사이트 데이터 2중, 3중 백업하기 요즘 사이트를 하나 만들고 있습니다. 아직은 사용자가 많지 않아 집에 있는 NAS에서 운영하고 있는데요.한 대의 NAS 서버에 웹 애플리케이션과 DB 서버가 동작하고 있습니다. 사이트에 여러 생활체육 정보들이 차곡차곡 쌓여가면서 한 가지 우려사항이 생겼습니다. 그건 바로 데이터 입니다. 백엔드에서는 생활 체육 관련된 사이트들을 돌아다니면서 새로운 대회들을 스크래핑 하고, 데이터를 가공한 후 DB에 저장하고 있습니다. 이런 데이터들이 점점 많아지면서 데이터 백업에 대한 중요성 또한 높아졌습니다. 지금부터는 DB 백업을 어떻게 하고 있는지에 대해서 기록해 보려고 합니다. 우선 DB 백업 스크립트를 만들어야 합니다.db_backup.sh 파일을 만들고 아래와 같이 스크립트를 작성하였습니다.#!/bin/bash.. 2024. 12. 5.
내가 자동화 스크립트를 만드는 이유? 저는 업무 할 때 반복적인 일이 발생하면 무조건 자동화 스크립트를 만들어서 활용합니다. 여러 자동화 스크립트를 만들어 가면 확실히 중요한 업무에 더 많은 에너지와 집중력을 쏟아 부을 수 있습니다. 궁금한게 있었습니다."나는 왜 반복적인 작업들을 귀찮아 하고, 자동화를 원하는 걸까?" 이 질문에 대해 고민하다가, 제 성향이 부지런함과 효율을 중시하기 때문이라는 결론에 도달했습니다.자동화 스크립트를 만들기 위해서는 문제를 해결하기 위한 방안을 깊이 생각해야 하고, 이를 구현하기 위해 노력을 들여 프로그램을 만들어야 하기 때문입니다. 하지만 '남이 만든 그릇에 내 인생을 담지 마라' 책을 읽고 난 후 내가 자동화 스크립트를 계속 만들려고 하는 이유를 깨닫게 되었습니다.책에 아래 문장이 있습니다.p.17"게으름.. 2024. 12. 3.
jenkins 빌드에서 github action 빌드 배포로 이전 요즘 핫하다는 github action 을 사용해 보았습니다.현재는 NAS에서 구동되고 있는 jenkins 에서 프로젝트 빌드를 한 후 배포를 하고 있습니다. https://lng1982.tistory.com/413현재 구조 code push -> github -> jenkins -> build -> jar 생성 -> shell script 실행 -> 서버 기동 github action 적용 후 변경되는 구조 code push -> github -> github action 실행 -> build -> jar 생성 -> ssh를 통한 NAS 서버 연결 -> jar 배포, shell script 배포 -> shell script 실행 -> 서버 기동 github action 적용은 어렵지 않았습니다. 프로젝.. 2024. 8. 20.
시놀로지 NAS에 웹 서버 배포 및 운영 사이드 프로젝트로 스크래핑 시스템을 만들어서 운영중에 있다.원하는 사이트의 컨텐츠 정보를 주기적으로 스크래핑하여 메일이나 텔레그램으로 전송해 주는 역할을 하고 있는데 spring boot 기반으로 동작한다. 아래와 같이 매일 원하는 정보를 수신한다. 수신된 정보를 열어보면 '조회수가 높은' or '투표수가 많은' 컨텐츠 데이터를 추출하여 메일로 전송해 준다. 그럼 이제부터 스크래핑 시스템이 NAS 까지 어떻게 자동 배포되는지를 정리해 본다.스크래핑 서버는 우리집 NAS에서 기동된다. 자동 배포되는 방식코드 수정github 저장소에 pushwebhook 트리거 발생webhook 에 등록되어 있는 jenkins url로 HTTP POST 요청을 보냄jenkins 빌드 작업 시작jenkins에서 git 플러그.. 2024. 5. 23.
maven effective pom 활용 maven 프로젝트를 구성해서 사용하다 보면 특정 라이브러리가 어떤 버전을 사용하고 있는지 궁금할때가 있다. 이럴때 artifactId 를 Ctrl + 클릭 하면서 찾아 들어가는 경우가 있는데 이와 같은 방법 보다는 다음과 같은 방법으로 하는게 가장 편하다. pom.xml 파일 열기 오른쪽 마우스 클릭 > Maven > Show Effective POM 클릭 버전 정보들을 쉽게 확인할 수 있다. 2019. 8. 23.
Fiddler Filter 기능에 대해서 알아보자 우선 Fiddler 기능을 알아보기 전에 Fiddler가 동작하는 원리부터 알아보자. Fiddler를 설치한 후 프로그램을 실행하면 내 컴퓨터와 인터넷 사이에서 통신을 감시하게 된다. 예를 들어 내 컴퓨터에 있는 브라우저를 열고 https://lng1982.tistory.com/ 페이지에 접속하게 되면 다음과 같이 동작한다는 뜻이다. 즉, Proxy와 같은 역할을 하며 통신되는 패킷들을 감시하게 되는 것이다. HTTP 요청 : 브라우저 -> Fiddler -> 티스토리 HTTP 응답 : 티스토리 -> Fiddler -> 브라우저 "어떻게 Fiddler가 중간에서 패킷을 가로채는게 가능할까?" 라는 생각을 할 수도 있다. Fidller 프로그램이 실행되면 내 컴퓨터 > 인터넷 속성 > LAN 설정 > 프록.. 2019. 4. 3.
메이븐 버전 충돌 해결 pom.xml 에 여러 개의 dependency 설정을 했을 때 각 라이브러리가 참조하는 라이브러리 중 버전이 충돌하는 경우가 있다.예를 들어 다음과 같이 hystrix-core 라이브러리는 commons-logging 1.1.1 버전을 참조하고 있고httpcomponents 라이브러리는 commons-logging 1.2 버전을 참조한다. 12hystrix-core -> commons-logging:1.1.1httpcomponents -> commons-logging:1.2cs 이처럼 두 개의 서로 다른 버전을 참조하고 있을 때 maven은 root 레벨과 가장 가까운 라이브러리를 선택하게 된다.이게 무슨 의미냐 하면mvn dependency:tree 명령을 치면 pom.xml 에 선언되어 있는 의존성.. 2017. 12. 13.
윈도우 loopback 패킷 캡쳐 (RawCap) 로컬환경에서 개발 할 때 가끔 패킷을 보고 싶을 때가 있다. (로컬 -> 로컬 통신)패킷 캡쳐를 할 때 대게는 wireshark를 많이 이용한다. 허나 해당 프로그램은 loopback 인터페이스에 대한 캡쳐가 불가능하다.그래서 찾아보니 RawCap 이란게 있더라http://www.netresec.com/?page=RawCap 위의 페이지에 들어가서 RawCap.exe 파일 다운로드 받고 다음과 같이 실행하면 된다.1234C:\Users\nklee\Desktop>RawCap.exe 127.0.0.1 test_catpture.capSniffing IP : 127.0.0.1File : test_catpture.capPackets : 100Colored by Color Scriptercs 실행 후 캡쳐된 tes.. 2017. 12. 11.
Maven 용어 정리 아래 이미지를 참고하자.메이븐의 Lifecycle, Phase, Goal, Plugin에 대해 설명해 주고 있다.[참고 이미지] https://i.stack.imgur.com/tp88Z.jpg LifecycleMaven에는 3가지 라이프사이클을 제공하고 있다.Clean lifecycle : 빌드된 결과물 제거Default/build lifecycle : 빌드 결과물 생성Site lifecycle : Java document 결과물 생성CI 툴을 이용하여 메이븐 빌드를 할 때 mvn clean deploy 와 같이 실행하면 빌드된 결과물을 제거하고 빌드 결과물이 생성된다. Phase라이프사이클의 단계를 의미한다.Phase는 의존관계를 가지고 있다. 예를들어 mvn package 를 실행하게 되면 packa.. 2017. 10. 16.
vagrant 구동 시 오류 (Your VM has become inaccessible) vagrant를 이용하여 가상 머신을 실행했는데 다음과 같은 오류를 만났다.E:\vagrant\ubuntu14.04_kube_1>vagrant upBringing machine 'default' up with 'virtualbox' provider...Your VM has become "inaccessible." Unfortunately, this is a critical errorwith VirtualBox that Vagrant can not cleanly recover from. Please open VirtualBoxand clear out your inaccessible virtual machines or find a way to fixthem.오류가 발생하는 정확한 이유가 무엇인지는 모르겠지만.. 2017. 10. 13.
Microsoft SQL Server Management Studio - 서버 정보 저장하기 SQL Management 툴에서 DB접속 정보를 저장하는 방법에 대해서 알아보았다.자주 사용하지 않는 툴이라 귀찮아도 매번 서버 주소, 계정, 패스워드를 입력하였는데..이마저도 귀찮아졌다. 1.보기 > 등록된 서버 선택하면 다음과 같은 창이 나온다. 2.Local Server Groups 선택 > 오른쪽 마우스 클릭 > 새 서버 등록 선택 3.Local Server Groups 하위에 등록한 서버가 노출되게 된다.이후에는 서버 호스트, 아이디, 패스워드를 매번 넣지 않고 더블 클릭을 통해 DB에 접속할 수 있다. 2017. 9. 22.
이클립스 NEON 이클립스 NEON 버전 설치 후 사용해 보고 있는 중이다.여러 가지 기능들 중 가장 기억에 남는 것들만 정리해 본다. Word wrap in text editorsAlt + Shift + Y소스 코드가 길어서 editor 화면을 넘어가면 개행해 준다. Commands and shortcuts to zoom in text editorsCtrl + 더하기, 빼기소스 코드의 font 사이즈를 조절할 수 있음 Automatic Save of dirty editorsPreferences > General > Editors > Autosave소스 코드 자동 저장 기능5초로 설정하고 소스 코드를 수정한 후 저장하지 않으면 5초가 되었을 때 자동 저장된다.자동 저장하는 것은 좋으나 실수로 타이핑되는 코드 까지도 저장 .. 2016. 11. 2.
remote debugging on 안드로이드 (proxy 이용) 안드로이드 단말기를 이용하여 로컬 머신에 구동되어 있는 웹 애플리케이션을테스트 하는 방법에 대해서 정리해 본다. 현재 작업하고 있는 개발망은 외부에서 접근이 불가능하고 회사 내에서 제공하고 있는 wifi망 또한 개발망에 접속이 불가능하여 테스트 단말기에서 로컬 머신에 접속할 수 있는 방법이 없다. 이런 경우 크롬에서 제공하고 있는 remote debugging on android 를 이용하면 로컬 머신 접속을 통한 웹 테스트가 가능하다. 1.안드로이드 휴대폰 USB 연결 (드라이버는 설치되어 있다고 가정)안드로이드 SDK 설치 디렉토리 > platform-tools 디렉토리로 이동하여 다음 명령어 실행 안드로이드 휴대폰이 감지가 되지 않는다면 다음과 같이 해보자. 정상적으로 device정보가 노출되는 것.. 2016. 6. 30.
vagrant 설치 및 활용 https://docs.docker.com/toolbox/toolbox_install_windows/virtual machines 의 라이프 사이클을 관리 vagrant를 사용하지 않는 상황에서는 버츄얼 머신 툴을 이용하여 VM을 생성하고 해당 VM에 OS를 설치해야 하는 반복적이고 지루한 작업들을 해야 한다.허나 vagrant는 이런 반복적인 작업들을 자동화 할 수 있게 제공해 주고 있고 VM의 생성과 시작 그리고 삭제를 편리하게 해준다. 대게 vagrant를 사용하는 가장 큰 이유는 각 개발자간 일치하지 않는 작업 환경을 동일하게 구성하여 일관성을 유지하고 환경 구성으로 인한 작업 시간을 최소화 하기 위해서 사용이 되는데 나는 다음의 3가지 목표를 위해서 vagrant를 선택하게 되었다. 목표 - I.. 2016. 6. 30.