freeglut API 설치

Posted by 백창
2014. 9. 29. 19:52 개발/Open GL
반응형



 개요


freeglut API를 설치하여 마우스 휠을 사용해 좌표를 수정해보자


 API 다운로드 및 설치


http://www.transmissionzero.co.uk/software/freeglut-devel/ 사이트에서 api를 다운받는다.



다운 받은 파일을 압축해제하고 다음 위치에 각각 파일을 넣는다.


Classification 

Folder Location

Files 

 Header File

C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\include\gl

freeglut.h

freeglut_ext.h

freeglut_std.h

 Library File

C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\lib

freeglut.lib

 Dynamic Link Library File

C:\Windows\System32

C:\Windows\SysWOW64

freeglut.dll





반응형

'개발 > Open GL' 카테고리의 다른 글

정육면체 그리기  (0) 2014.11.21
도형 그리기 및 이동  (0) 2014.11.03
[빌드 오류] failure during conversion to COFF: file invalid or corrupt  (0) 2014.10.17
Menu & SubMenu 생성  (11) 2014.10.09
Open GL 설치  (0) 2014.09.12

spring Framework 파일 업로드

Posted by 백창
2014. 9. 29. 13:54 개발/Spring
반응형


 개요


 Spring에서 파일 업로드를 처리해보자



 설정


servlet_context.xml 파일 설정


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 파일저장 -->
    <bean id="uploadPathResource" class="org.springframework.core.io.FileSystemResource">
        <constructor-arg>
            <value>D:\R\work\demo\file\</value>
        </constructor-arg>
    </bean>
    
    <!-- Upload File Size Definition -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize">
        <!-- 파일 업로드 최대 용량 단위 byte -->
            <value>10485677</value>
        </property>
    </bean>




 소스


UploadItem.java 파일


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.nara.comm;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
public class UploadItem
{
  private CommonsMultipartFile fileData;
  private String name;
  
  public String getName(){
      return name;
  }
  
  public void setName(String name){
      this.name = name;
  }
  
  public CommonsMultipartFile getFileData()
  {
    return fileData;
  }
 
  public void setFileData(CommonsMultipartFile fileData)
  {
    this.fileData = fileData;
  }
}


Controller 파일


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
import org.springframework.core.io.FileSystemResource;
import org.springframework.validation.BindingResult;
import com.nara.demo.UploadItem;
 
@Inject private FileSystemResource uploadFilePath;
 
public void getFileName(@RequestParam Map<String, Object> paramMap, ModelMap model,UploadItem uploadItem, BindingResult result) throws Throwable{
        
        String getFileName = "";
        
        date = dateFormat.format(System.currentTimeMillis());
        
        if (result.hasErrors()){
            for(ObjectError error : result.getAllErrors()){
                System.err.println("Error: " + error.getCode() +  " - " + error.getDefaultMessage());
            }
        }
 
        if(!uploadItem.getFileData().isEmpty()){
            
            fileName = date+"_"+uploadItem.getFileData().getOriginalFilename();
            String fileExt = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());
            
            //upload 가능한 파일 타입 지정
            if(fileExt.equalsIgnoreCase("csv")){
                byte[] bytes = uploadItem.getFileData().getBytes();
                try{
                    File lOutFile = new File(uploadFilePath.getPath()+fileName);
                    FileOutputStream lFileOutputStream = new FileOutputStream(lOutFile);
                    lFileOutputStream.write(bytes);
                    lFileOutputStream.close();
                }catch(IOException ie){
                    //Exception 처리
                    System.err.println("File writing error! ");
                }
                System.err.println("File upload success! ");
            }else{
                System.err.println("File type error! ");
            }
            model.put("fileName",fileName);
        }
 
        // Some type of file processing...
        System.err.println("upload path : " + uploadFilePath.getPath());
        System.err.println("upload fileName: " + fileName);
}




view 부분


1
2
3
4
5
6
7
8
9
10
11
12
            <form name="aform" method="post" enctype="multipart/form-data">
            <table width="231" border="0" cellpadding="0" cellspacing="0">
                Choose the File<br>
                <input type="file" id="fileData" name="fileData"  /><br><br>
    <!--             onchange="javascrpit:document.getElementById('fileName').value = this.value" -->
<!--                 <input type="button" id="searchFile" name="searchFile" value="파일 찾기" /> -->
                <input type="button" value="show" onclick="fnShow()" />
                
                
            </table>
            
        </form>



 Form 으로 감싸는 부분에서 enctype="multipart/form-data" 를 추가해야 파일 데이터가 Post방식으로 전송 된다.


 결과


파일 업로드


파일 업로드 목록



반응형

'개발 > Spring' 카테고리의 다른 글

[myBatis] selectKey 사용  (0) 2014.09.03

csv파일 읽기

Posted by 백창
2014. 9. 27. 12:08 개발/Java
반응형


 개요


다음 소스는 필요에 따라 csv 파일의 헤더만 읽기위해 사용되었다.

 csv파일 전체를 읽기위해서는 



위 소스 부분을 다음과 같이 바꾸어야 한다.




 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
 
 
public class readFile {
    
    /**
     * Header 받아오기
     * */
    @SuppressWarnings("null")
    public ArrayList<String> readHeader(String filePath) throws IOException{
 
        ArrayList<String> ret = new ArrayList<String>();
        File csv = new File(filePath);
        BufferedReader br = new BufferedReader(new FileReader(csv));
        
        String line = "";
        line = br.readLine();
        
        String[] token = line.split(",");
        
        for(String output:token){
            System.out.println(output);
            ret.add(output);
        }
        
        br.close();
        
        return ret;
    }
    
    /**
     * \을 /으로 변환
     * */
    public String convertDash(String fileName){
        String convertFileName="";
        
        convertFileName = fileName.replace('\\','/');
        return convertFileName;
    }
}




 결과



반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
JDOM을 이용한 XML 생성  (0) 2014.09.14
JDOM을 이용한 XML 파싱  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

[eclipse 오류]PermGen space

Posted by 백창
2014. 9. 23. 20:49 개발/Android
반응형


 오류내용




Exception in checkAndLoadTargetData


PermGen space


라는 오류가 발생하였다. (원인은 잘 모르겠지만 원격제어 때문인듯)




 해결방법


eclipse 폴더에 eclipse.in파일을 열고 다음과 같이 수정해준다.



저장하고 eclipse를 다시 실행하면 오류 해결

반응형

'개발 > Android' 카테고리의 다른 글

지니모션 설치  (0) 2014.09.14
AVD 작성  (0) 2014.09.13
Android 설치  (0) 2014.09.13

JDOM을 이용한 XML 생성

Posted by 백창
2014. 9. 14. 22:41 개발/Java
반응형


 목적


 이전 포스팅에서 출력한 XML 파일에 새로운 정보를 더해 재조립해서 xml형식으로 저장한다.



 Source


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
 
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.springframework.ui.ModelMap;
 
public class xmlTest {
    public void testAddName(ModelMap model , String name) throws JDOMException, IOException{
        
        //파일경로
        String filePath="xmlTest.xml";
        String newFilePath = "madeXmlTest.xml";
        
        File file = new File(filePath);
        
        FileInputStream input = new FileInputStream(file);
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(input);
        
        //Root Element
        Element xmlRoot = doc.getRootElement();
        
        //Child Element
        List l_list = xmlRoot.getChildren();
        Element basic = (Element) l_list.get(0);
        
        //New Element
        Element addName = new Element("name");
        addName.setText(name);
        
        //Added Child Element
        basic.addContent(addName);
        
        //FILE IO
        FileWriter writer = new FileWriter(newFilePath);
        
        XMLOutputter outputter = new XMLOutputter();
        try{
            outputter.setFormat(Format.getPrettyFormat());  //개행 등 을 처리
            
            /**
             * 한글 변환! 중요
             * */
            Format fm = outputter.getFormat();
            fm.setEncoding("EUC-KR");
            outputter.setFormat(fm);
            
            outputter.output(doc, writer);
            
            writer.close();
        }catch(Exception e){
            System.err.println(e);
        }
        
    }
}


 Test


이전 XML 파일



새로 생성된 XML 파일



name이라는 부분이 새로 생성되었다.



 힘들었던 부분


XML을 생성하는 경우 인코딩에서 문제가 발생하였다. 


UTF-8 방식으로 저장되는데 한글이 깨져서 출력되는 문제가 발생하여 다음과 같이 해결하였다.



반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 파싱  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

JDOM을 이용한 XML 파싱

Posted by 백창
2014. 9. 14. 22:31 개발/Java
반응형


 JDOM이란?


 자바에서 제공하는 XML 데이터를 가공하기 위해 제공되는 라이브러리 이다. SAX(Simple API for XML)과 DOM의 장점만을 골라 만든 클래스와 인터페이스를 제공한다.



 Source


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
 
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.springframework.ui.ModelMap;
 
public class xmlTest {
    public void test(ModelMap model) throws JDOMException, IOException {
        
        //파일 경로
        String filePath="xmlTest.xml";
        
        File file = new File(filePath);
        
        FileInputStream input = new FileInputStream(file);
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(input);
        
        //Root Element
        Element xmlRoot = doc.getRootElement();
        
        //Child Element
        List l_list = xmlRoot.getChildren();
        Element e_list = (Element) l_list.get(0);
        
        List l_basic = e_list.getChildren();
        
        //Output
        for(int i=0; i<l_basic.size(); i++) {
            Element e_basic = (Element) l_basic.get(i);
            System.out.println("e_basic.getName() : "+e_basic.getName());
            System.out.println("e_basic.getText() : "+e_basic.getText());
            
            model.put(e_basic.getName(), e_basic.getText());
        }
    }
}



 출력할 XML File





 Test




반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 생성  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

현재 시간 구하기

Posted by 백창
2014. 9. 14. 22:19 개발/Java
반응형


 개요


 Java에서 현재 시간을 구해보자.


 Method


시간을 구하는 method 는 


 System.currentTimeMillis();


이다.


위 method의 리턴형은 long 형이고 1/1000 초 값을 리턴한다. (1970년 1월 1일 부터 계산)



 Source





 Test



반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 생성  (0) 2014.09.14
JDOM을 이용한 XML 파싱  (0) 2014.09.14

지니모션 설치

Posted by 백창
2014. 9. 14. 16:12 개발/Android
반응형


 개요


너무 느린 에뮬레이터... 지니모션을 사용해 안드로이드 개발을 하고자 한다. 지니모션을 설치하는 방법에 대해 알아보자


 지니모션 회원가입


http://www.genymotion.com/


위 사이트에 들어가서 회원가입을 합니다.



회원가입을 누르면 빨간 네모 칸만 채우고 가입신청을 누르면 인증메일이 온다.


클릭하라는 곳을 클릭하여 인증한 후 다운로드를 실시한다.




 지니모션 다운로드


인증을하고 다음 링크를 눌러 다운로드를 한다.



개발환경이 윈도우라면 다음 파일을 다운받는다.




 디바이스 생성



설치를 완료하고 ADD 버튼을 눌러 에뮬을 만든다.



가장 안정적인 겔럭시S4를 선택한다.



에뮬 생성이 완료 되었다





 에러




위 에러가 뜬다면 버츄어박스 네트워크의 DHCP 를 설정해주면 된다.


OpenGL 이라는 에러가 뜨는 것은 그래픽카드 버전이 낮거나 원격접속시에 뜨더라.. 원격 접속 시 안되는 이유는 찾는중


반응형

'개발 > Android' 카테고리의 다른 글

[eclipse 오류]PermGen space  (0) 2014.09.23
AVD 작성  (0) 2014.09.13
Android 설치  (0) 2014.09.13

AVD 작성

Posted by 백창
2014. 9. 13. 17:02 개발/Android
반응형


 AVD란?


- 에물레이터에 설정할 단말 정보를 지정하는 것으로 안드로이드 플랫폼의 타겟 정보 등에 의해 구성된다. 

- AVD의 도입에 따라 에물레이터의 실행에는 AVD의 지정이 필수가 되었다.

- 여러 개 작성한 AVD를 바꾸면서 사용하는 것으로 에물레이터에 여러 단말의 움직임을 에물레이션시키거나 여러개의 에물레이터를 실행하거나 하는 것이 가능

- API 레벨이란 Android의 버전에 대응하는 정수를 말한다.


 AVD 작성


AVD를 작성하기 위하여 AVD Manager를 실행한다.



Create 버튼을 누르고 Device, Target, CPU, Skin과 Size 를 설정하고 확인을누른다



Start를 누르고 실행한다.



하지만.. 매우 느리다



반응형

'개발 > Android' 카테고리의 다른 글

[eclipse 오류]PermGen space  (0) 2014.09.23
지니모션 설치  (0) 2014.09.14
Android 설치  (0) 2014.09.13

Android 설치

Posted by 백창
2014. 9. 13. 16:04 개발/Android
반응형

JDK와 이클립스 또한 설치되어 있어야 한다.


 Android-SDK 설치


http://developer.android.com/sdk/installing/index.html?pkg=tools


다음 사이트에서 SDK를 다운받는다.




다운 받은 파일을 실행하여 설치를 진행한다.


SDK 매니저를 실행시켜 API를 설치한다.



엄청나게 오래걸린다 ㅠ


설치가 완료되면 JDK와 같이 환경변수를 설정한다.



SDK가 설치된 폴더의 변수를 설정하고



Path변수에 넣어준다.


 ADT-Plugin 설치


설치된 이클립스를 실행하여 Help 메뉴에 Install New Software를 선택한다.



Add 버튼을 눌러 다음 주소를 입력하여 Android ADT-Plugin을 설치한다.


https://dl-ssl.google.com/android/eclipse/




설치 후 이클립스를 다시 키면 다음과 같은 아이콘이 나타남을 알 수 있다.



반응형

'개발 > Android' 카테고리의 다른 글

[eclipse 오류]PermGen space  (0) 2014.09.23
지니모션 설치  (0) 2014.09.14
AVD 작성  (0) 2014.09.13