https://docs.google.com/presentation/d/1QBe6IDe56kxlSpswBgTpqCj7Bm-rnr4aG_TNfA67TeM/edit?usp=drivesdk
학생들 로 하여금 자바를 이용해서 PC 애플리케이션을 개발하다고 샘플을 코딩해 보았다.
2학년들이라 쉽지 않지만 그래도 학생들이 잘 따라한다.

Posted by 세상을 살아가는 사람
,
Posted by 세상을 살아가는 사람
,
Posted by 세상을 살아가는 사람
,
Posted by 세상을 살아가는 사람
,

1조 파비 중고 거래 플랫폼

2조 골라줘 점심즈

3조 All Food In The World

4조 momentum_ex

1조 파비 중고 거래 플랫폼 기획서

기획서1.pdf
0.51MB

1조 파비 중고 거래 플랫폼 발표자료

Pa-Bi-발표자료.pptx
4.07MB

2조 골라줘 점심즈 기획서

골라줘 점심즈- 수정(발표용).pptx
1.79MB

2조 골라줘 점심즈 결과 발표자료

골라줘 점심즈- 최종(발표용).pptx
19.09MB

3조 All Food In The World 기획서

계획서_자바 포토폴리오 3조(최종본).pptx
9.12MB

3조 All Food In The World 결과 발표

FIT-발표자료-최종.pptx
16.57MB

4조 momentum_ex 기획서

Momentum_extension 학원.pdf
0.25MB

4조 momentum_ex 결과 발표

김정현_포트폴리오_학원.pdf
2.47MB

Posted by 세상을 살아가는 사람
,

1. 자바 JDK 11.0.6 설치

2. Tomcat 9 download 및 압축 풀기 : 버전 9.0.62

3. Eclipse IDE for Enterprise JAVA and Web Developer 2022-03-R(4.23) 버전 다움로드 및 압축 풀기

  - 2022-06-R(4.24) 버전이 새로 나온 것 같다. 이것을 설치해도 된다.

  - 이클립스는 내부에 JAVA Open JDK SE 16을 포함하고 있음.

  - Server -> Runtime Environment으로 Tomcat 9 등록 : JRE로 jdk-11.0.6을 지정 (이클립스 내부에 있는 것을 삭제하고, 새로 등록)

4. Dynamic Web Module Project 생성

  - Tomcat 9.0 선택

Posted by 세상을 살아가는 사람
,

자바를 이용한 스프링 강의를 계속하면서 그동안 변경된 개발 환경과 현재 시점에서 개발환경을 어떻게 설정을 해야 하는지 정리해 본다.
1. JDK 1.8을 사용한 개발 환경
- 처음에는 JDK 1.8을 사용하여 개발을 진행
- 이클립스 : 2020-06-R 버전을 사용하여 JAVA EE을 개발하였고, Eclipse Marketplace를 통해 STS를 설치하여 스프링을 개발하였었다.
- 그랬다가 어느 시점에 이클립스에서 STS plugin을 지원하지 않았다. 그래서 이클립스에서 플러긴을 사용하지 않고, 이클립스 기능을 제공하는 STS를 따로 설치하여 스프링을 개발하였다.
2. 별도의 STS를 사용한 스프링 개발 환경
- JDK 1.8을 지원하기 위하여 STS-3.9.15,RELEASE-e4.16.0을 사용
- 이클립스 버전도 JDK 1.8을 지원하기 위해 e4.16(2020-06-R) 버전인 것이다.
- JSP를 개발하기 위한 JAVA EE IDE도 eclipse-jee-2020-06-R 버전을 사용하였다.
3. JDK 11을 사용한 스프링 개발 환경
- 전자정부표준프레임워크 v4.0에서 JDK 11을 지원하고, 상용으로 JDK 11이 사용되게 되는 것 같다. 따라서 JDK 8을 사용하지 않고, JDK 11을 사용하는 환경을 고려해 본다.
- 자바 버전 : JDK 11.0.15
- 이클립스 : 2021-06-R Java EE IDE
- 이클립스 마켓 플레이스에서 "Spring Tools 3 Add-On for Spring Tools 4 3.9.22.RELEASE" Plugin을 설치하여 스프링 개발환경을 설정한다.
- 이때 pom.xml에서 다음과 같은 에러가 발생하면 다음 plugin 설정을 추가한다.
Description Resource Path Location Type
Could not initialize class org.apache.maven.plugin.war.util.WebappStructureSerializer pom.xml /ex08 line 1 Maven Configuration Problem

            <plugin>
            	<groupId>org.apache.maven.plugins</groupId>
            	<artifactId>maven-war-plugin</artifactId>
            	<version>3.3.1</version>
            </plugin>

- 별도의 STS를 사용하여도 되겠지만, 이클립스를 사용한 JSP 개발환경과의 연속성을 위해 이렇게 설정하는 것도 좋은 방법이다.
4. Spring Tools 4 (aka Spring Tool Suite 4) 4.15.1.RELEASE 설치
이클립스에서 STS plugin으로 . "Spring Tools 3 Add-On for Spring Tools 4 3.9.22.RELEASE"을 설치한 후에, Spring Tools 4 (aka Spring Tool Suite 4) 4.15.1.RELEASE을 설치하면, STS4를 설치할 수 있다.

Posted by 세상을 살아가는 사람
,

5개월간 자바 웹 개발자 교육을 마치고, 포트폴리오를 수행한 결과물을 발표한 것을 녹화한 것이다.

https://youtu.be/9T8ZnKoFPew

1. Pa-Bi 팔고 비우고 - 중고 경매 플랫폼

2. 골라줘 점심즈

4. Momentum_extension

3. All Food In The World

그동안 교육받는라 수고한 수강생분들에게 박수를 보냅니다.

Posted by 세상을 살아가는 사람
,

자바 프로그램으로 엑셀 파일을 읽어서 출력하는 프로그램을 구성해 본다.

엑셀 파일의 확장자가 .xls 인데, .xlsx로 변환하여 저장한 후 .xlsx 형식의 데이터 파일을 읽어서 필요한 정보를 출력하였다.

다음 사이트를 참조 하였다.

https://huskdoll.tistory.com/890

필요한 라이브러리는 poi-3.11.jar, poi-ooxml-3.11.jar, poi-ooxml-schemas-3.11.jar, xmlbeans-2.6.0.jar 이다. 이를 Java Build Path 설정에서 lib로 포함시켜 준다.

package excel;
 
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public class ExcelRead {
    public static void main(String[] args) {
    	List<String[]> list = new ArrayList<String[]>();
        try (FileInputStream file = new FileInputStream("C:\\Users\\ksseo\\Downloads\\시험문제(2022-01-22).xlsx");
                XSSFWorkbook workbook = new XSSFWorkbook(file);){
            int rowindex=0;
            int columnindex=0;
            //시트 수 (첫번째에만 존재하므로 0을 준다)
            //만약 각 시트를 읽기위해서는 FOR문을 한번더 돌려준다
            XSSFSheet sheet=workbook.getSheetAt(0);
            //행의 수
            int rows=sheet.getPhysicalNumberOfRows();
            for(rowindex=0;rowindex<rows;rowindex++){
            	
                //행을읽는다
                XSSFRow row=sheet.getRow(rowindex);
                if(row !=null){
                    //셀의 수
                    int cells=row.getPhysicalNumberOfCells();
                    String[] data = new String[cells];
                    for(columnindex=0; columnindex<=cells; columnindex++){
                        //셀값을 읽는다
                        XSSFCell cell=row.getCell(columnindex);
                        String value="";
                        //셀이 빈값일경우를 위한 널체크
                        if(cell==null){
                            continue;
                        }else{
                            //타입별로 내용 읽기
                            switch (cell.getCellType()){
                            case XSSFCell.CELL_TYPE_FORMULA:
                                value=cell.getCellFormula();
                                break;
                            case XSSFCell.CELL_TYPE_NUMERIC:
                                value=cell.getNumericCellValue()+"";
                                break;
                            case XSSFCell.CELL_TYPE_STRING:
                                value=cell.getStringCellValue()+"";
                                break;
                            case XSSFCell.CELL_TYPE_BLANK:
                                value=cell.getBooleanCellValue()+"";
                                break;
                            case XSSFCell.CELL_TYPE_ERROR:
                                value=cell.getErrorCellValue()+"";
                                break;
                            }
                            data[columnindex] = value;
                        }
//                        System.out.println(rowindex+"번 행 : "+columnindex+"번 열 값은: "+value);
                    }
                    list.add(data);
                }
            }
 
        }catch(Exception e) {
            e.printStackTrace();
        }
        for(int i = 0; i < 20 ; i++) {	// 20문제
        	int offset = generateRandomNumber();
        	int base = i * 9 + 1 + offset;
        	String[] problem = list.get(base);
        	System.out.println("[문제 " + (i+1) + "] " + problem[3]);
        	System.out.println("1. " + problem[9]);
        	System.out.println("2. " + problem[10]);
        	System.out.println("3. " + problem[11]);
        	System.out.println("4. " + problem[12]);
        	System.out.println();
        }
    }

	private static int generateRandomNumber() {
		return (int)(Math.random() * 9);
	}
}
Posted by 세상을 살아가는 사람
,

이 문제는 풀이 방법이 다양한 것 같다. 이전에 기술한 것과 다르게 풀이를 해 보았다.

[문제] 구구단의 일부분을 다음과 같이 출력하시오.

[실행결과]

2*1=2 3*1=3 4*1=4

2*2=4 3*2=6 4*2=8

2*3=6 3*3=9 4*3=12

5*1=5 6*1=6 7*1=7

5*2=10 6*2=12 7*2=14

5*3=15 6*3=18 7*3=21

8*1=8 9*1=9

8*2=16 9*2=18

8*3=24 9*3=27

package practice;

public class Exercise4_12 {

	public static void main(String[] args) {
		for(int i = 2;i < 9;i += 3) {  // 크게 3부분으로 나누고
		cont:	for(int j = 1;j < 4;j++) {  // 각 부분을 풀되
				int k = 0;
				for(;k < 2;k++) {  // 탭을 출력하는 부분과
					System.out.print((i+k) + "*" + j + "=" + (i+k)*j);
					if(i+k == 9) {  // 마지막 9단일 경우는 별도로 처리를 해 보았다.
						System.out.println();
						continue cont;
					}
					else {
						System.out.print("\t");
					}
				}
				System.out.println((i+k) + "*" + j + "=" + (i+k)*j);  // \n을 출력하는 부분으로 나누고
			}
			System.out.println();
		}
	}
}

깨끗한 것 같지는 않다...

Posted by 세상을 살아가는 사람
,