Showing posts with label source. Show all posts
Showing posts with label source. Show all posts

Monday, June 13, 2016

[자바예제] 하드(서버)를 DB로 사용하는 mapdb(파일디비) java 오픈소스


오픈소스


요즘 회사에서 하는 프로젝트는 온통
오픈소스 뿐입니다~ 전부터 오픈소스
사용에 대해서 굉장히 좋게 생각해오던
저인지라 새로운 오픈소스를 알게
될 때마다 큰 만족감을 느끼는 중입니다~
지금 하는 빅데이터 프로젝트의 내용 중에
일반 DB 서버를 사용하지 않고 파일에
data를 저장하는 부분이 있습니다.
단순히 파일에 내용을 저장하는게 아니고
객체나, 리스트, VO 등 모든 타입의
data를 파일에 저장하고 심지어 톰캣이나
다른 DB처럼 검색/수정/추가/삭제
심지어 join도 된다고 합니다~
한 시간 전까지는 내용만 알고 아직
예제를 돌려 보지 못했는데 오늘
드디어 예제 하나 돌려 봤습니다 ㅎㅎ

mapdb



data를 저장할 파일의 경로를 잡아주고
mapdb 예제를 돌려보면 해당 파일에
data가 저장되어서 위에 예제를 한 번
더 구동하면 그 전에 저장했던 data를
가지고 올 수 있답니다~~~ㅎㅎㅎ
이 때 최초에 파일이 없으면 아무 내용이
없더라도 해당 경로에 파일이 있어야 됩니다.

물론 왜 굳이 파일DB를 사용해야 되나를
묻는 분들도 계실 겁니다~
일단 오라클 같은 일반 DB를 사용하는 경우
연결 맺고 SELECT/INSERT/DELETE/UADATE를
하는 작업보다는 파일을 생성해서 read/write
하는 속도가 더 빠르다고 합니다. 그리고
DB를 사용하기 위한 환경 설정도 없어도 되고,
mapdb에서는 DB에서 제공하는 기능도
거의 제공까지 해주고 있습니다~
예를 들면 commit이나 rollback 같은 기능~

여튼 DB에 비해 Data 관리가
너무 편해지고 간편해 질 수
있다고 생각합니다~~

그리고 아마존웹서비스도 사용을
해보려고 하는데 DB와 서버 둘 다
아마존 웹서비스에서 사용하는 방법을
찾으려고 하니 너무 귀찮은 겁니다.
그런데 파일DB 되면 굳이 DB 사용할
필요가 없어져서 아마존웹서비 DB
서비스를 공부하지 않아도 되어서
너무 좋습니다~~

[자바예제] PDF뷰어 프로그램 소스(pdf 파일 read하는 Java 프로젝트)

PDF 뷰어


자바에서 제공하는 Swing 클래스와
icepdf 라는 오픈api를 이용해서
구현한 자바 PDF뷰어 입니다.
엄청 간단한 예제이지만 필요하신
분이 계실거 같아 공유합니다~
pdReport 카페에 올려 놓았습니다.


pdf 뷰어 실행한 화면 캡처 사진입니다.
프로그램 전체적인 틀은 보시는 것처럼
자바 Swing의 JPanel을 이용했고,
그 외 pdf 파일을 read해오는 것과
adobe reader처럼 pdf 뷰어의 여러
기능은 icepdf 라이브러리에서
기본으로 구현해 줍니다.


제가 한 거라고는 자바 클래스와
오픈api를 짬뽕시켜준 일 뿐입니다.

아래는 캡처 사진은 자바 pdf viewer의
프로젝트 구성입니다. 엄청 심플하죠?ㅎ
PDFJframeViewer.java 에
main 함수가 있으니 이클립스에서
해당 프로젝트를 import 해와서
실행만 시켜 주시면 됩니다.
혹 빌드패스 관련 문제가 생기면
직접 설정을 좀 해주셔야 될 수도 있습니다.


위 프로젝트의 lib 디렉토리 밑에 보면
icepdf 라이브러리를 보실 수 있습니다.
참고로 servlet-api-2.5.jar는 
필요 없는 파일입니다 ㅋㅋㅋ
제가 다른 작업 한 건데 안 지운 거니
참고하세요 ㅎㅎ

PDFJframeViewer.java 파일을 보시면
아래와 같이 열고자 하는 pdf 파일의
경로를 담고 있는 filePath 라는
String 타입의 변수가 있습니다.


위에 경로만 본인이 가지고 있는
pdf 파일의 절대경로로 바꿔서
입력해 주시면 됩니다.

pdReport 카페에 올려 놓았으니
많이 다운 받아서 사용하세요!

Friday, June 3, 2016

자바 테트리스 게임 프로그램 예제 소스

자바 테트리스


예전 노트북에서 이클립스 작업 폴더를
뒤지다가 찾은 자바 테트리스 게임입니다.
안드로이드 프로젝트 하나를 찾는게
있었는데 엉뚱하게 자바 프로젝트를
하나 찾았습니다 ㅋ 아래 영상을 보시면
아시겠지만 테트리스의 기본적인
기능만 되지만 그래도 상당히 까다로운
테트리스 게임을 깔끔하게 구현해 놓은
자바 프로젝트 소스입니다.


Swing, JFrame, JPanel, JButton 등
자바에서 제공해주는 Swing 클래스를
이용해서 구현되었고, 이클립스에서
fmain을 실행시켜 주시면 바로 위와
같이 정상적으로 실행됩니다.


소스는 카페에 올려 놓았습니다.
위에 링크된 곳으로 가시면 됩니다.


소스에 나름 주석도 달아 있어서
소스 파악하는데 있어서
도움이 되실 거라 생각합니다.


아 그리고 제가 직접 실행을 해보니
약간의 버그가 있더라구요
자주 발생하는 문제는 아니지만
어쩌다 한 번씩 블록이 부서지지
않는 경우가 있었습니다.
참고 하시고 이 소스를 사용하시게
된 경우 꼭 수정하시기 바랍니다~

제가 구현한 건 아니지만 자바 테트리스
예제 소스에 대해 질문이 있으시면 카페
QnA 게시판에 글 남겨 주시면 아는
한도 내에서 답변 드리겠습니다.

Thursday, May 12, 2016

AngularJS 부트스트랩(bootstrap) 모달(Modal) 창 예제

Modal


제가 작업하고 있는 프로젝트가
아니고 또 AngularJS를 사용하지 않는다고
해도 아래와 같은 모달창은 웹 페이지 작업
에서 많이 사용이 됩니다. 일회성 정보나
설정 값 입력 등의 작업을 화면에서 할 때
현재 화면에 이동이나 큰 변화 없이
별도의 창을 하나 띄워 그 창에서 작업을
완료하면 다시 창을 닫는 형태의 작업에서
이 Modal 창을 참 유용하죠~


AngularJS에서 모달창을 띄울 때
bootstrap 모듈을 이용해서 띄우고
있는데 모달창을 띄워야 되는 페이지의
html 파일에서 아래와 같이 모달 페이지에
해당하는 html의 경로를 ng-include를
이용해서 아래와 같이 입력합니다.


그리고 위에 경로를 입력해준
html의 컨트롤러에서 아래와 같이
해당 모달 창을 띄워 줍니다.


주석으로 처리되어 있는 이유는 위에
방법을 사용하지 않기 때문입니다.
이유는 지금부터 설명하겠습니다.

Modal로 파라미터 보내기


프로젝트를 해오면서 지금까지는 모달창에
보이는 내용은 모달 자체의 controller에서
처리한 값이나 박힌 값들로 구성이 되어
있었습니다. 그런데 이번에는 모달창을
호출했던 페이지에서 특정 값을 모달창으로
넘겨야 하는 경우가 생겼습니다.

일단 위에서 사용한 ng-include는 동일하게
사용합니다. 그리고 모달창을 띄우기 위한
태그에 angularjs에서 제공하는 ng-click으로
아래와 같이 search()라는 함수를
호출하게 했습니다.


위에 상황을 대략 설명 드리자면
컨트롤러에 있는 search 함수를
호출해서 모달창을 띄우려고 하는데
이 모달창으로 특정 값을 보내고
싶은데 그 값이 vm.page + $index
이 값입니다. 단순 정수 값인데
이 값을 알아야 모달창에 작업을
진행할 수 있습니다. 그리고 GET_SOURCE
값은 컨트롤러에서 분기를 위한 값입니다.
아래의 코드를 보시면 이해가 되실 겁니다.


if문에서 condition 값이 GET_SOURCE 인 경우
즉 지금 제가 하고 있는 작업이 저 else if 문에서
실행되는 겁니다. 안에 내용도 설명을 드리겠습니다.
내용은 두 줄이 전부입니다.
첫 번째 라이은 제가 필요로 하던 값(param)을
모달 창의 특정 태그에 set 하는 부분이고,
두 번째 라인은 그 modal창을 띄우는 부분입니다.

첫 번째 라인은 form-group이라는 값을
클래스로 갖는 태그에서 result_index라는
name 값을 가지는 태그에 param 변수에
담긴 값을 set 하라는 내용입니다.
모달 창에서 위에 값이 set 되는 부분은
아래와 같습니다.


그래서 결과는 아래와 같이 나왔습니다.


정말 간단한 숫자 값 하나이지만
저 하나를 얻기 위해 엄청난 시간을
허비했습니다. 몰라서...
방법을 가르켜준 다나양에게
다시 한 번 감사의 인사를...
꾸벅~

Thursday, May 5, 2016

[ANDROID] 색 선택 가능한 안드로이드 그림판 어플 예제 소스


안드로이드 그림판


예전에 한창 안드로이드 작업할 때
가지고 있던 예제를 보다가 아직
공유를 해놓지 않은 안드로이드 예제들
중에서 괜찮다 싶은게 몇 개 있어서
공유해 봅니다. 간단한 예제입니다^^

그림판 어플인데 아래 영상을 보시면
아시겠지만 색깔 선택이 가능한
안드로이드 그림판 어플입니다.
색상은 빨간, 파란, 노란색 세 개 밖에
없지만 다른 색상 추가하는 건
그리 어렵지 않을 겁니다.

해당 android 그림판 어플은
카페에 공유해 놓았습니다!!


그림판 어플은 구글링이나 네이버 검색을 통해
쉽게 예제를 찾으실 수 있을 겁니다.
하지만 몇몇 그림판 예제의 문제는 그림을
많이 그릴 수록 점점 어플이 느려진다는
점입니다. 이유는 그림이 그려질 때마다 해당
정보를 계속 저장했다 화면에 다시 뿌려주는
작업이 반복이 되는데 데이타가 많아짐에
따라 점차 느려지는 현상입니다.
예전 안드로이드 공부를 하던 책에서도
이에 대한 해결책을 줬었는데 기억은
잘 안나네요 ㅎㅎ 어쨌든 이 그림판
어플은 느려지는 현상 없이 제대로
동작하길래 가지고 있었던 거 같습니다~
필요하신 분은 pdReport 카페에 가서
내려 받아서 사용하시기 바랍니다


그림판 안드로이드 예제는 위와 같이
이클립스로 작업한 프로젝트입니다.
만약 스튜디오에서 구동하셔야 된다면
이클립스 프로젝트를 스튜디오에서
구동하는 방법에 대해 포스팅 해놓은
글이 있습니다. 아래의 링크로 가시면 됩나다!


그 외 질문이 있으시면 카페 QnA 게시판에
질문 남겨 주세요~

Saturday, April 30, 2016

[도서관리 프로그램] C언어로 구현한 도서 검색 예제 소스(추가/수정/삭제/정렬 기능)

도서관리 프로그램


프로그램 예제 소스를 공유한 적이
있었는데 UI는 없고, 이클립스의
console 상으로만 실행이 가능한
소스였습니다~ 그래서 이번에는
UI까지 구현된 도서관리프로그램을
블로그에 올려 봅니다~ 자바로
구현한 건 아니고 C언어로 구현된
프로그램입니다. 자료는 pdReport
카페에 공유해 두었습니다.


아래 영상은 해당 도서검색 프로그램을
실행해 본 영상입니다. 보시면 아시겠지만
검색은 물론 새로운 도서의 추가/수정 및
기존 도서를 삭제할 수도 있고, 이름이나
가격 순서로 재정렬도 할 수 있습니다.


등록된 책의 정보는 파일로
남게 되어 있습니다. 도서리스트의 정보를
저장하는 파일의 경로는 자료를 받으셔서
압축을 푸셔서 아래로 가시면 됩니다.
도서검색시스템\bin\Debug\Book_Info.dat
도서를 추가/수정/삭제하면 위의 파일이
그 때 그 때 수정이 되겠죠~


그리고 하나 재미있는 기능이 있어
추가로 설명을 드리겠습니다.
위의 이미지를 보시면 제목으로
책을 검색을 했습니다.
그런데 검색어를 그락커퍼니 라고
입력을 했는데 검색 결과로 
책 제목이 극락컴퍼니, 그리스인 조르바
인 책들이 검색이 되었습니다.
검색어와 정확히 일치하는 것만 결과만
보여주는 것이 아니고, 어느 정도
일치하는 것까지 판단을 해서
보여주고 있습니다~~ㅎㅎㅎ
사용자가 오타를 치거나 정확한
제목이나 저자, 출판사를 모르고
어렴풋이 알아도 검색을 하면
유사한 결과도 보여준다는 겁니다~

실행


파일을 다운 받아서 압축을 푸시면
도서검색시스템\bin\Debug\도서검색시스템.exe
위에 경로에 있는 파일을 실행하시면 됩니다.
아 그리고 실행을 하셨을 때 닷넷이라는
프로그램에 설치가 필요한 경우가 있습니다.
그런 경우에는 창에서 알려주는 사이트에
가서 닷넷을 다운 받아 설치해 주시면
문제 없이 실행이 되실 겁니다~

해당 C언어로 구현한 도서검색시스템은
pdReport 카페에서 공유 받으실 수 있습니다.


위에 링크된 주소로 가시면 됩니다!!!

Friday, April 29, 2016

C언어로 구현한 퍼즐맞추기 게임 프로그램 예제 소스


퍼즐(Puzzle) 게임


카페에 괜찮은 C 퍼즐 게임 소스가 공유 되었습니다! 


안드로이드 예제 소스도 공유를 했었는데
드디어 C 언어로 구현한 퍼즐 게임도
카페에 공유할 수 있게 되었습니다 ㅠㅠ


카페에서 공유 받으신 후 실행하는
방법을 설명해 드리겠습니다.


해당 C 프로젝트의 구조는 위와 같습니다.
먼저 Debug 디렉토리로 들어 갑니다.


그럼 위와 같이 파일들이 있는데
0904실습.exe 실행해 주면 끝!


실행이 정상적으로 되면 위와 같이
커멘드 창과 조각으로 나뉘어진
퍼즐 게임 화면을 보실 수 있습니다.
마우스로 이미지를 눌러도 어떠한
반응도 없고, 게임을 시작하기 위해서는
게임 메뉴 -> 새 게임 버튼을
눌러 주시면 되고, 이미지가 랜덤으로
섞이고 나면 게임 시작이 가능합니다.

기능



기타 -> 옵션 버튼을 누르시면
위와 같은 창이 뜹니다.
퍼즐 조각 개수와 퍼즐 이미지를
선택할 수 있는데 선택의 폭은
넓지 못합니다 ㅎㅎ
조각개수는 3,5,7 중에 하나,
그림은 총 두 개 중에 하나만
선택이 가능합니다.


퍼즐을 다 맞추면 위와 같이
성공했다는 메시지와
퍼즐 맞추는 데까지
걸린 시간이 나옵니다.
버그가 한 두개 보이기는 하지만
그래도 중요한 기능은 다 동작하네요 

그리고 게임 중간에 게임 -> 힌트 보기
버튼을 누르시면 퍼즐이 섞이기 전의
이미지가 2~3초 동안 보여 집니다.

[게임소스] MFC로 개발한 배구 게임 예제 공유(애니메이션 캐릭터/능력 선택/멀티플레이 기능)


MFC 게임


대학교 MFC 최종 과제로 제출했었던 소스를 공유해 봅니다.
왜 아직도 블로그에 안올렸었는지 이해가 안가네요^^;
예전에 한창 유행했던 피카츄 게임의 업그레이드 버전으로
짱구,아톰,뽀로로,둘리,미키,케로로,도라에몽,쿠마 같은
애니메이션 캐릭터 선택이 가능하고, 각 캐릭터 별로
능력치가 다르며, 멀티플레이가 가능합니다~
전체 소스는 pdReport 카페에 공유해 놓았습니다.

2인용!


배구 게임 실행 후 첫 화면을 보시면 1player, 2player라고
써져 있는데 싱글 플레이는 지원이 안됩니다^^;;
2인용만 지워되는 게임이니 엔터를 누르시면
캐릭터 선택하는 화면으로 넘어 갑니다~


게임 제목은 막장배구라고 제가 임의로 지었는데
결국 이름 변경 없이 과제 제출을 했습니다 ㅎ

캐릭터 선택



8가지 캐릭터들 중에 하나를 선택을 할 수 있으며,
각 캐릭터 별 능력치를 보여주고 있습니다.
그리고 특정 시간 내에 캐릭터 선택을 하지 않으면
시간 초과되었을 때 선택하고 있던 캐릭터로
자동 선택이 되면서 배구 게임이 시작됩니다.

게임시작



예전에 피카츄 배구를 해보셨던 분이라면
많이 익숙한 화면일 겁니다ㅎㅎㅎ
화면 뿐만 아니라 게임 방식도 예전
피카츄 배구 게임과 동일합니다.
차이는 캐릭터 선택이 가능하고,
캐릭터 별로 능력치가 다르다는 점!
(이게 이 프로젝트의 핵심)

실제로 캐릭터 별로 이동 속도가 다르고,
슬라이딩 능력, 점프력, 공격력도 
모든 캐릭터가 다릅니다.

조종키


1p와 2p 의 조종키는 아래와 같습니다.

1p
a : 왼쪽 이동
d : 오른쪽 이동
w : 점프
Tab : 공격(캐릭터 선택)

2p
방향키와 엔터

동시에 여러 키가 눌려도 게임하는 데
아무런 지장이 없습니다!!!!!

Game Over/Continue


그러다가 게임이 끝나면 아래와 같이 게임을 계속 할 것인지
그만 할 것인지를 묻는 화면이 나옵니다.
이 때 게임에서 선택한 캐릭터의 승패에 맞는 캐릭터
사진으로 화면이 구성 되도록 구현했습니다~


계속 하기 위해 Yes를 누르면 캐릭터 선택하는
화면으로 넘어가는데 이 때 이긴 player는 기존의
캐릭터로 계속 게임을 진행해야 되고, 패배했었던


플레이어만 캐릭터를 새로 선택할 수 있습니다.
만약 No 를 선택하면 위와 같이
GAME OVER 가 나옵니다.

위의 MFC 배구게임 소스가 필요하신 분은
pdReport 카페에서 공유 받으시면 됩니다!