본문 바로가기
반응형

프로그래밍57

자바 네트워크 프로그래밍 UDP 소켓 ●UDP 소켓- TCP 소켓은 서로 연결된 상태에서의 통신 방법이다. 이 방법은 높은 신뢰성이 요구된느 응용 프로그램에 적합하지만 높은 신뢰성이 요구되지 않거나 적은 양의 데이터를 전송할 때는 네트워크에 부담을 많이 주기 때문에 적합하지 않다. 그래서 이때는 UDP소켓을 쓰는 것이 좋다. - UDP는 TCP소켓에 비해 신뢰성과 안정성은 부족하지만 연결을 설정하지 않으므로 네트워크에 부담을 주지 않는다. - 자바에서는 DatagramPacket, DatagramSocket 클래스를 사용한다. - DatagramPacket 클래스는 데이터그램을 사용할 수 있게 한다. - 데이터그램 패켓은 비연결 패킷 전송 서비스를 구현하기 위해 사용한다. - DatagramSocket 클래스는 데이터그램 패킷을 보내거나 받.. 2014. 2. 9.
java 현재 날짜 구하기 ●자바 현재 날짜 구하기java.util.Calendar cal = java.util.Calendar.getInstance(); //현재 년도, 월, 일int year = cal.get ( cal.YEAR );int month = cal.get ( cal.MONTH ) + 1 ;int date = cal.get ( cal.DATE ) ; //현재 시간(시,분,초)int hour = cal.get ( cal.HOUR_OF_DAY ) ; int min = cal.get ( cal.MINUTE ); int sec = cal.get ( cal.SECOND ); 2013. 12. 23.
하이차트(highcharts) 기본 구조 ●자바스크립트와 html로 만든 차트 솔루션이다. 비상업용으로 사용할땐 무료이고 상업적으로 사용할땐 비용이 든다.(최소 90달러이상) http://www.highcharts.com ●예제 2013. 11. 12.
jsp 개발환경 세팅 이클립스 톰켓 플러그인 ●아래 사이트에서 톰켓 이클립스 플러그인 파일을 다운받는다. http://www.eclipsetotale.com/index.html ●해당 파일을 압춘을 푼 뒤 이클립스 폴더안에 있는 plugin폴더에 복사한다. ●이클립스를 실행하면 상단 메뉴에 고양이 버튼 3개가 나온다. ● - 상단 메뉴 Window->Preferences를 클릭한다. - 왼쪽 Tomcat을 클릭하고 오른쪽에서 톰켓버전, 톰켓 폴더 위치를 지정한 후 ok를 클릭한다. ●3개의 고양이 아이콘 중 왼쪽 버튼을 누르면 톰켓이 실행되고 중간 버튼을 누르면 톰켓이 중지되고 오른쪽 버튼을 누르면 톰켓이 재시작된다.톰켓이 실행되면 http://localhost:8080 으로 들어가서 아래처럼 나오면 정상적으로 설치가 완료된 것이다. 2013. 10. 28.
cocos2d-x 간단한 액션 게임 예제3 ●StageIdx.h #ifndef __StageIdx__H__#define __StageIdx__H__ #include "cocos2d.h"//싱글톤 클래스using namespace cocos2d; class StageIdx : public cocos2d::CCLayer{public:static StageIdx *getInstance();void setStage2true();bool getStage2Bool(); private:StageIdx();~StageIdx();}; #endif // __StageIdx__H__ ●StageIdx.cpp #include "StageIdx.h" StageIdx::StageIdx(void){CCUserDefault::sharedUserDefault()->setBoo.. 2013. 6. 9.
cocos2d-x 간단한 액션 게임 예제2 ●AppDelegate.h #ifndef __APP_DELEGATE_H__#define __APP_DELEGATE_H__ #include "cocos2d.h" class AppDelegate : private cocos2d::CCApplication{public: AppDelegate(); virtual ~AppDelegate(); virtual bool applicationDidFinishLaunching(); virtual void applicationDidEnterBackground(); virtual void applicationWillEnterForeground();}; #endif // __APP_DELEGATE_H__ ●AppDelegate.cpp #include "cocos2d.h"#inc.. 2013. 6. 9.
cocos2d-x 간단한 액션 게임 예제1 ●터치하면 캐릭터가 점프하고 장애물을 피하는 게임이다. 장애물에 충돌하면 패배화면으로 넘어간다. 코인에 충돌하면 스코어가 오른다. ●구조 ●파일, 리소스 목록 ●파일 목록 - AppDelegate - LoadingLayer - 로딩 화면 - MainMenuLayer - 메인 메뉴 화면 - StageSelect - 스테이지 선택 화면 - Stage1Layer - 스테이지1 - Stage2Layer - 스테이지2 - StageIdx - 스테이지1을 깨야 스테이지2가 선택되도록 처리하기 위한 싱글톤 클래스를 구현 - WinLayer - 승리화면 - LoseLayer - 패배화면 ●동영상 2013. 6. 8.
cocos2d-x CCUserDefault ●CCUserDefault- 환경설정이나 점수등을 저장하는 등 데이터를 저장할 때 사용한다.ios의 NSUserDefault, 안드로이드의 SharedPreferences와 비슷하다. ●String형 저장, 불러오기- 저장CCUserDefault::sharedUserDefault()->setStringForKey("string", "aa"); //(이름, 값) - 불러오기std::string s = CCUserDefault::sharedUserDefault()->getStringForKey("string"); ●Interger형 저장, 불러오기- 저장CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 1); - 불러오기int i = CCUse.. 2013. 6. 1.
cocos2d-x 트랜지션(Transition) 추가,삭제,교체 ●장면 추가,삭제,교체 - HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #include "Box2D/Box2D.h" #include "SimpleAudioEngine.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);void doPushScene(CCObject* pSender);void doReplaceScene(CCObject* pSender);}; #endif // __HE.. 2013. 5. 30.
cocos2d-x 액션3 ●이즈 액션(Ease Action)- 전체 액션시간은 수정하지 않고 내부의 액션 속도를 조절한다. CCEaseIn - 액션의 끝이 빨라진다.CCEaseOut - 액션의 처음이 빨라졌다가 끝이 느려진다.CCEaseInOut - 액션의 처음이 느렸다가 중간에 빨라지고 끝에서 느려진다. void HelloWorld::doAction(CCObject* pSender) {//액션 정의CCActionInterval* move=CCMoveBy::create(2,ccp(100,0)); //빨라지기CCActionInterval* move_ease_in=CCEaseIn::create(move, 2);//느려지기CCActionInterval* move_ease_out=CCEaseOut::create(move, 2);//빨라.. 2013. 5. 29.
cocos2d-x 액션2 ●CCSequence- 액션의 순서를 정하고 순차적으로 실행한다. void HelloWorld::doAction(CCObject* pSender){//액션 정의CCActionInterval* action1=CCMoveTo::create(2,ccp(100,200));CCActionInterval* action2=CCRotateBy::create(2,90);CCActionInterval* action3=CCScaleTo::create(2, 2.0); CCFiniteTimeAction* seq=CCSequence::create(action1, action2, action3, NULL); pMan->runAction(seq);} ●CCSpawn- 등록된 모든 액션을 동시에 시행한다. void HelloWorld.. 2013. 5. 28.
cocos2d-x 액션1 ●액션- 많은 액션은 By와 To로 나뉘는데 By는 지정한 값만큼 변하는 것이고, To는 지정한 값으로 변하는 것이다.- 위치관련 - CCMoveBy, CCMoveTo, CCJumpBy, CCJumpTo, CCBezierBy, CCBezierTo, CCPlace- 크기관련 - CCScaleBy, CCScaleTo- 회전관련 - CCRotateBy, CCRotateTo- 가시성 - CCShow, CCHide, CCBlink, CCToggleVisibility- 투명도 - CCFadeIn, CCFadeOut, CCFadeTo- 색관련 - CCTintBy, CCTintTo ●액션 기본 예제 - HelloWorldScene.cpp의 doAction함수안에 여러가지 액션 함수를 넣어 액션 예제를 확인한다. - H.. 2013. 5. 28.
cocos2d-x CCLabelTTF ●화면에 글자 출력하기- HelloWorldScene.cpp의 init부분에 다음과 같이 입력한다 #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene=CCScene::create(); HelloWorld *layer=HelloWorld::create(); scene->addChild(layer); // return the scene return scene;} // on "init" you need to initialize your instancebool HelloWorld::init(){if(!CCLayerColor::initWithColor(ccc4(255,255,255,255).. 2013. 4. 22.
cocos2d-x 프로젝트 기본형 ●프로젝트 생성하기 - 프로젝트를 생성한다. - 사용할 엔진을 선택한다. ●프로젝트 종속성 선택 - 프로젝트를 선택하고 우클릭->프로젝트 종속성을 선택한다. 창이 뜨면 필요한 라이브러리를 선택한다. libcocos2d는 기본적으로 선택한다. ●AppDelegate.cpp 를 선택해서 다음 부분을 수정한다.- pDirector->setDisplayStats(true); 부분을 pDirector->setDisplayStats(false); 로 바꾸어 주면 좌측하단에 fps가 표시되지 않는다. ●HelloWorldScene.h 를 선택해서 다음 부분을 수정한다.- CCLayer 를 CCLayerColor로 수정해준다. 기본적으로 상속받는 레이어의 배경은 검은색인데 다른색으로 변경하기 위해 수정한 것이다.- m.. 2013. 4. 15.
cocos2d-x 기본구조 ●CCNode- CCNode는 cocos2d-x의 최상위 클래스로 cocos2d-x의 모든 클래스는 이 클래스를 상속받는다.- CCNode는 자식노드를 가질수 있다. ●CCDirector- 싱글톤클래스로 하나의 어플리케이션에서 하나의 인스턴스만 존재한다.- 게임의 화면을 장면단위로 구성해서 처리할 수 있는 기능을 제공한다.- 여러 장면들을 뒤로 가게 하거나 앞으로 가도록 하는 클래스이다. ●CCScene, CCLayer- 일반적인 게임의 메인화면, 메뉴화면, 게임화면 등이다.- CCScene은 터치이벤트, accelerometer 입력을 처리할 수 없다.- CCLayer는 터치이벤트, accelerometer 입력을 처리할 수 있다. ●CCSprite- 이미지 파일을 화면에 출력하는 역할을 한다.- 이미.. 2013. 4. 15.
cocos2d-x 윈도우 개발 환경 세팅하기 ●이 블로그에서 cocos2d-x개발하는 환경은 Window7 32bit입니다. ●cocos2d-x - cocos2d-x는 c++을 사용한다. - cocos2d-x로 프로그래밍 할 경우 별도의 수정 없이 하나의 소스로 ios, 안드로이드용 앱을 만들수 있다. 다만 ios용은 최종 컴파일은 맥에서 해야한다. - cocos2d-x 자체가 개발 툴은 아니고 그래픽 프레임워크이기 때문에 개발툴에 설치되어야 한다. 윈도우에서는 Visual Studio, 이클립스 등, 맥에서는 Xcode에 설치해서 사용한다. ●cocos2d-x 개발 환경 세팅하기 - cocos2d-x 다운로드 - http://www.cocos2d-x.org 에서 cocos2d-x를 다운로드한다. - 압축을 풀고 적당한 위치에 압출을 푼 폴더를 둔.. 2013. 4. 15.
안드로이드 상단의 제목표시줄 없애고 전체화면(Full Screan)모드로 표시 ●상단의 제목표시줄을 없애고 전체 화면(Full Screen)모드로 표시하기 - 매인 액티비티의 setContentView() 메서드 위에 설정한다. - 프로그램 제목 표시줄 없애기 requestWindowFeature(Window.FEATURE_NO_TITLE); - 상태표시줄 없애기 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 2013. 1. 1.
안드로이드 계산기 소스1 ●레이아웃 2012. 10. 29.
유니티(unity) 3D 터레인(Terrain) ●Terrain추가 - 프로젝트탭에서 우클릭->Import Package->Terrain assets 을 선택하고 창이 뜨면 import버튼을 누른다. - 상단 메뉴 Terrain->Create Terrain을 누른다. ●터레인 크기 조절 - 상단 메뉴 Terrain의 Set Resolution메뉴를 누르면 터레인 크기를 조절할 수 있다. ●터레인의 인스펙터를 보면 마치 심시티에서 맵을 만들 때 처럼 나무,지형 등을 추가, 수정, 삭제 등을 할 수 있다. ●스카이박스 설정 - 프로젝트 탭에서 우클릭->Import Package->SkyBox - 상단 메뉴의 Edit->Rending Setting을 누른다. - 아래 사진처럼 SkyBox Meterial 오른쪽 작은 동그라미 버튼을 눌러서 원하는 하늘을 선.. 2012. 8. 30.
유니티(unity) 3D 카메라 워킹, 프리팹 ●카메라 워킹 1. 프로젝트탭에서 Import Package->Script를 누른다. 2. Import를 누른다. 3. SmoothFollow를 드래그해서 Main Camera에 끌어놓는다. 4. 카메라가 따라다닐 오브젝트를 메인카메라의 인스펙터안에 있는 Smooth Follow 안의 Target에 드래서해서 놓는다. ●프리팹(Prefab) - 프리탭은 오브젝트의 원본은 따로 저장해두고 오브젝트가 필요할 때마다 원본의 정보를 사용해서 복사본을 만드는 것이다. 오브젝트를 단순 복사하는 것보다 관리도 편하고 컴퓨터에 부담도 덜 준다. ●프리팹 만들기 1. 프로젝트 탭에서 우클릭->create->Prefab을 누른다. 2. 하이어라키에 있는 오브젝트를 프로젝트탭에 만든 Prefab에 드래그한다. 프리팹으로 등.. 2012. 8. 28.
유니티(unity) 3D 단축키 정리 ●디자인 탭에서의 마우스 버튼 - 왼쪽 버튼 - 게임 오브젝트 선택 - 오른쪽 버튼 - 화면 회원 - 마우스 휠 - 화면 확대/축소 - 휠 드래그 - 화면 이동 - alt+왼쪽버튼 - 화면 회전 - alt+오른쪽버튼 - 줌인/줌아웃 ●File 메뉴 - Ctrl+N - 새 Scene 만들기 - Ctrl+O - Scene 열기 - Ctrl+S - Scene 저장 - Ctrl+Shift+S - 새 이름으로 Scene 저장 - Ctrl+Shift+B - Build 설정 - Ctrl+B - Build+Run - Alt+F4 - 유니티 종료 ●Edit 메뉴 - Ctrl+C/X/Y - 복사/잘라내기/붙여내기 - Ctrl+Z - 실행 취소 - Ctrl+Y - 되돌리기 - Ctrl+D - 오브젝트 복제 - Shift+D.. 2012. 8. 20.
유니티(Unity) 3D 화면 인터페이스2 ●하이어라 키 - 디자인 탭에서 만든 오브젝틀르 계층 구조로 표시하는 곳이다. 하이어라키 상단의 'create'는 'GameObject->Create Other'메뉴와 같은 기능을 한다. 하이어라키에서 오브젝트를 선택한후 'F'키를 누르면 선택한 오브젝트가 디자인 탭의 중앙에 나타난다. ●프로젝트 탭 - 현재의 프로젝트에서 사용하고 있는 각종 리소스를 표시한다. ●인스펙터 - 오브젝트에 대한 세부 정보를 표시하고 변경할 수 있는 곳이다. 2012. 8. 20.
유니티(Unity) 3D 화면 인터페이스1 ●유니티의 기본 화면이다. 아래처럼 나오지 않으면 상단우측의 Layout부분에서 2by3으로 고쳐주면 아래 화면처럼 나온다. ● 1.화면 이동 - alt+마우스 왼쪽 눌러도 같은 기능을 한다. 2.오브젝트 이동 3.오브젝트 회전 4.오브젝트 확대 ● 1. Center - 두개 이상의 오브젝트를 선택했을 때 오브젝트 사이의 중간점이 기준이 되도록 설정한다. Pivot - 두개 이상의 오브젝를 선택했을 때 마지막에 선택한 오브젝트가 기준이 되도록 설정한다. 2. Global - 디자인 탭 전체를 기준으로 하는 글로벌 좌표로 설정한다. Local - 오브젝트를 기준으로 하는 로컬 좌표로 설정한다. ● 1. 디자인 탭에서의 오브젝트를 표시하는 형식을 설정한다. 2. 디자인 탭의 컬러형식을 설정한다. 3. 디자인.. 2012. 8. 20.
안드로이드 옵션 메뉴 만들기 ●옵션메뉴는 메뉴버튼을 눌렀을 때 나타나는 메뉴이다. 안드로이드는 보통 버튼을 '홈버튼,이전버튼,메뉴버튼' 3가지 버튼을 가지고 있다. 화면 하단에 표시할수 잇는 옵션 메뉴 항목은 최대 6개가지이고 6개 초과한 항목은 목록형태로 나타난다. ●이클립스 상단의 Source항목에서 Override/Implement Methods를 선택하고 창이 나타나명 onCreateOptionsMenu와 onOptionsItemSelected()를 선택한다. 이렇게 안하고 그냥 직접 코딩해도 상관없다. ●onCreateOptionsMenu() - 메뉴 항목 추가 menu.add(그룹번호, 메뉴식별번호, 배치순서, 메뉴에 표시할 타이틀); - 아이콘 추가와 단축키 추가 - 선택사항이므로 해도되고 안해도 된다. menu.add.. 2012. 6. 23.
안드로이드 ArrayList ●ArrayList - ArrayList는 링크드 리스트(linked list)라는 자료구조를 이용한 리스트로서 고정된 크기를 갖은 배열과 달리 임의로 데이터의 추가,삭제,변경등이 자유로운 배열 Class이다. - 다음과 같은 형식을 가진다 ArrayList 변수명 = new ArrayList(); -ex) ArrayList a = new ArrayList(); a.add(new Aaa()); //Class를 새로 생성해서 추가 a.add(new Aaa(1,2)); //Class가 파라미터를 받은 경우 int n = a.size(); //ArrayList에 저장된 요소의 개수 a.get(index); //해당 인덱스 위치의 요소 찾기 a.remove(index); //해당 인덱스 위치의 요소 삭제 a.c.. 2012. 6. 23.
안드로이드 비트맵 그림 자르기(slice) ●그림 자르기 - Bitmap.createBitmap()는 사진에서 필요한 부분만 새로운 비트맵으로 만든다. - Bitmap.createBitmap( Bitmap source, int x, int y, int width, int height ) ●이미지 확대, 축소 - Btimap.createScaledBitmap(그림파일, 너비, 높이, true) - imgBack = BitmapFactory.decodeResource(context.getResources(), R.drawable.back); //이미지 불러오기 imgBack = Bitmap.createScaledBitmap(imgBack, width, height, true); //해당 이미지를 width,height만큼 늘려서 imgBack에 저장.. 2012. 6. 22.
안드로이드 버튼의 리스너 작성 ●엑티비티(Activity) 영역 1. 전역변수 선언 영역 2. 프로그램 초기화 영역 - onCreate() 메서드는 프로그램이 켜질때 한 번 실행된다. 이 부분은 변수에 초기값을 지정해주고 버튼 등의 컨트롤에 리스너를 연결하는 용도로 쓰인다. 3. 프로그램에서 반복적으로 사용할 영역 - 실제로 작성할 프로그램의 본체이다. 각종 연산과정과 처리결과를 화면에 표시하는 소스코드 등을 여기에 작성한다. ●버튼 리스너 작성 기본 1. 리스너 할당 2. 리스너 본체 ●예제 - EditText에 어떤 값을 입력한후 '확인' Button을 누르면 그 값이 TextView에 표시되는 예제 2012. 6. 20.
자바 난수 발생하기 ●random()함수나 Random 클래스를 이용해서 만든다. Random 클래스를 사용하는 경우, import java.util.*을 선언해줘야한다. ●double ran=Math.random(); //0< ran 2012. 6. 20.
변수명과 메서드명 작성 규칙 ●자기가 만든 프로그램이라도 몇 주만 지나면 다 까먹는다. 딱 정해진 규칙은 없지만 가독성과 프로그램 흐름을 기억 위해 될수 있으면 다음의 규칙을 따르는게 좋다. ●변수명 작성 규칙 - 변수명은 될 수 있으면 의미를 가진 단어를 사용한다. - 첫글자는 소문자로 시작한다. - 상수는 대문자를 사용한다. - 동사와 명사가 섞인 변수명을 작성할 때는 동사를 먼저 적는다. - boolean형의 변수는 접두어로 is나 can을 붙인다. - 반복문 등의 내부에서 사용하는 변수는 i,j,k를 사용한다. - class전체에 사용되는 class형의 변수는 접두어로 m이나 g를 붙인다. - 변수명 오른쪽에 그 변수가 무슨 의미인지 주석처리한다. ●메서드명 작성 규칙 - 하나의 메서드가 길어져 전체를 한 화면에 보기 곤란한.. 2012. 6. 17.
html <div>로 메뉴(내비게이션) 만들기2 ●마우스 롤 오버 태그, 속성 ●웹표준 준수 위해서 이미지의 alt속성을 꼭 넣어주고, 처럼 태그 마지막 부분을 꼭 막아줘야한다. 별 의미 없는 그냥 화면을 꾸미기 위한 이미지의 경우는 alt속성에 값을 넣지 않고 alt=""처럼 빈 속성값을 설정한다. ●이미지 링크 테두리 없애기 - 이미지에 링크를 걸면 테두리가 생긴다. 개별적으로 border값을 설정하는 것 보다 css를 이용하여 테두리를 제거한다. img {border:"0"} ●가로 메뉴 예 2012. 5. 30.
반응형