본문 바로가기

Web Programming

(50)
Git 메모장 1. 버전 관리 기본 $ git log # 깃 기록 보기 $ git diff # 최신 버전의 깃과 최근 차이 보기 $ git commit -amend # 가장 최근 커밋 메시지 수정 $ git checkout -- file # file 파일을 가장 최신 버전으로 되돌리기 $ git reset HEAD file # file 스테이징 취소 $ git reset HEAD^ # 가장 최근 커밋 취소(--soft 커밋전, --mixed 커밋스테이징 전, --hard 파일 수정전) $ git reset 커밋해시 # 특정 버전으로 되돌리기 $ git revert 커밋해시 # 커밋 로그 삭제 없이 되돌리기(이력 쌓기) 2. 버전 관리 branch $ git branch 이름 # 깃 브랜치 만들기 $ git checko..
젠킨스 Jenkins 부분배포 익명클래스 반영 문제 전체배포 vs 부분배포 전체배포의 경우, SVN 또는 Git과 같은 형상관리 툴을 통해 변화된 전체 소스코드를 war 파일로 묶어 배포하는 작업이다(upload 폴더도 초기화되는 문제가 있기에 이는 예외를 두던지, 따로 구성을 하던지 등을 고려해야 한다) 부분배포는, SVN 또는 Git과 같은 형상관리 툴에서 변화된 소스코드 중 일부만 서버에 배포반영하는 작업이다. (SW의 유지보수성, 안정성, 협업에서 의도치 않은 소스코드 반영 등을 막기 위해 많은 SW들이 부분배포를 채택하고 있다) Java 부분배포 익명클래스 반영문제 부분배포 진행 중 can't find 'xxxx$1.class ' ... 과 같은 로그를 보게 되었다. 후에 보니, Java 컴파일 시 anonymous inner class가 있을 ..
사회대 스터디룸 시스템 트러블슈팅 사실 트러블슈팅이라고 하기도 민망할 정도로 별일 아니었지만 기록용으로 적어둔다. 사회대 스터디룸 시스템을 구축해두고 열심히 관리하지는 않는다(트래픽이 엄청나지는 않기에 굳이 그럴 필요가 없긴하다, 시험기간 뒤 과제기간에 조금 트래픽이 몰리는 정도가 다인 것 같다) 여튼 에러가 발생하면 디버깅하는 정도가 다인데 최근에 서버가 내려갔더라.. (학생회에서도 말을 안해줘서 몰랐다..;;) 한 번씩 들어가보는데 어느 순간 들어가보니 서버가 내려가있더라ㅠ AWS 켜서 그냥 재부팅하는 걸로도 해결되었다. 그냥 aws ec2 인스턴스를 Stop 후 boot 하고 설정파일을 조금 손봤다 혹시나 포트가 꼬였나 찾아보고 리소스가 많이 잡아먹혀서 다운됐나 봤는데 그런 것들도 아닌 것 같다. 왜 내려간지는 잘 모르겠다.. 열심..
ibatis 대용량 처리 RowHandler(ResultHandler) 개요 프레임워크 내에서 대용량 데이터를 처리하고자 하는데 처음에는 통째로 Select 한 내용을 insert 하려고 했다. INSERT INTO TABLE SELECTCOL1, COL2, COL3, ... FROMTABLE2 ... 이런식으로 진행하려고 했는데, 이는 당연히 문제를 낳을 수 있는 방식이었다. 해당 select의 용량이 메모리보다 크게 될 경우 OOM(Out Of Memory) Exception을 유발하게 되는 것이다. 따라서 Row 하나씩 Select 후 Insert를 foreach 나 Java 로직 내 For문을 통해 구현하려고 하였다. 해당 방법보다도 성능적으로 우수한 Ibatis(또는 Mybatis)에서 제공하는 옵션이 있었다. RowHandler(Mybatis에서는 ResultHa..
Eclipse 자동 Build 안됨 에러 개요 Eclipse 내 에서 자동 빌드가 계속 안되어서 꽤 오랜 시간을 허비한 기억이 나서 정리하게 되었다. 주로 Django 나 C/C++ 을 사용하다가 Spring 을 하게 되니 어색한 것들도 많았는데 그 중 하나가 IDE인 Eclipse였다. 늘 C++과 Python을 사용했기에 더욱이 Eclipse를 사용할 일이 드물었다(학창시절 자바프로그래밍 때 빼고..). 어쨌든 Eclipse 내 프로젝트를 실행(Run)하기 전에 java 파일들을 class로 컴파일 및 빌드의 과정이 이루어져야 하는데 이 과정이 자동으로 잘 작동하다가 어느 순간 갑자기 자동으로 안되서 일일이 수동으로 빌드를 해주었었다. 찾아보니, 나 뿐만 아니라 많은 사람들이 이런 경우들이 있었다(프로젝트 내 jsp와 java 파일들을 수정..
SVN LOCK / BUSY 트러블 슈팅 SVN LOCK이클립스와 연동된 SVN을 통해 commit을 진행하는 도중 commit / update 모두 아래와 같은 에러를 반복하며 동작하지 않았다. clean up 해보라고 하지만 clean up도 수행되지 않는다. 사진출처 해당 Lock을 처리하고자 찾아보니 DB Browser SQLite 파일을 통해서 SVN DB 내의 Lock을 제거하는 방식이 있었다.먼저 아래의 SW를 다운로드해야 한다(OS와 Bit에 맞게 설치).https://sqlitebrowser.orgDB Browser for SQLiteDB Browser for SQLite The Official home of the DB Browser for SQLite Screenshot What it is DB Browser for SQLi..
Ngrok 로컬 네트워크 연결 우리의 로컬 주소를 Ngrok를 통해 연동하여 외부에서 접근할 수 있도록 할 수 있다 너무 간단하고 유용하여 정식 배포할 프로젝트가 아닐 때 이용하면 유용할 듯하다 #1 Ngrok 다운로드하기 https://ngrok.com/ ngrok - secure introspectable tunnels to localhost Spend more time programming. One command for an instant, secure URL to your localhost server through any NAT or firewall. ngrok.com 해당 페이지에서 Ngrok를 다운로드 #2 로컬에서 프로젝트 실행 #3 연동하기 Ngrok.exe 실행 후 원하는 포트 입력 $ ngrok http 5000 ..
Django EC2 window server 배포 준비물 Django 프로젝트 AWS IAM 자격증명 EC2 인스턴스 생성 지금까지 수행한 결과로 EC2 - window 인스턴스를 생성할 수 있다. 이렇게 되면 탄력적인 IP를 계속하여 할당받을 수 있게 된다. 해당 인스턴스에 접속하는 방법은 다음과 같다. EC2 django 환경 구성 원격 테스크톱 연결 후에 방화벽 설정 변경 chrome 다운로드 Python 3.7.2 버전 다운로드 C 로컬 디스크에서 다음과 같이 필요한 pip 설치 $ pip install --upgrade pip $ pip install django ... (필요한 패키지 다운, pip isntall -r requirements.txt 처리도 가능) 그리고 해당 프로젝트 복사 후 python manage.py runserver 0..