본문 바로가기
토이프로젝트 - allt

23.05.17

by J1-H00N 2023. 5. 17.

현재의 문제점

1. app.py를 할 때마다 데이터 베이스 값이 초기화 됨

2. get으로 가져온 데이터 값을 #team-mbti에 넣으려 했으나 team-mbti 아래에 속해있는 버튼에 적용한 javascript 함수가 이미 있어 기존에 배운 empty()함수를 실행한 뒤 다시 붙이는 방법을 쓰면 버튼에 들어있는 함수가 작동하지 않는 문제가 생긴다.

 

해결방안

1. aws 등의 실시간 서버에 올리면 데이터베이스 값이 초기화가 안되지 않을까 예상중

2. 버튼이 있는 div 밖에 새롭게 데이터 값을 나타내는 통계자료를 추가하는 방안 고민중

 

일단 어떠한 형식으로 통계를 낼 지는 아직 정해지진 않았지만 퍼센트가 효율적이라 생각해 대립되는 성향의 소수 둘째자리까지의 비율을 구하는 식으로 코드를 수정했다.

function statistics() {
      fetch('/statistics').then(res => res.json()).then(data => {
        let rows = data['result']
        rows.forEach((a) => {
          let mbti_e = (a['e'] / (a['e'] + a['i'])).toFixed(2);
          let mbti_i = (a['i'] / (a['e'] + a['i'])).toFixed(2);
          let mbti_n = (a['n'] / (a['n'] + a['s'])).toFixed(2);
          let mbti_s = (a['s'] / (a['n'] + a['s'])).toFixed(2);
          let mbti_t = (a['t'] / (a['t'] + a['f'])).toFixed(2);
          let mbti_f = (a['f'] / (a['t'] + a['f'])).toFixed(2);
          let mbti_j = (a['j'] / (a['j'] + a['p'])).toFixed(2);
          let mbti_p = (a['p'] / (a['j'] + a['p'])).toFixed(2);

          console.log(mbti_e);
          console.log(mbti_i);
          console.log(mbti_n);
          console.log(mbti_s);
          console.log(mbti_t);
          console.log(mbti_f);
          console.log(mbti_j);
          console.log(mbti_p);
        })
      })
    }

 

 

오전 10시 50분 경 자잘한 css나 html코드를 손 본 뒤 남는 시간 java공부를 속행하려 한다.

 

package nadocoding.Chap_07;

import java.util.Random; // Random 입력시 자동으로 import되는 java 내 기본 제공 패키지

public class _11_Package {
    public static void main(String[] args) {
        // 패키지 := 비슷한 유형끼리 묶어놓은 폴더의 유형
        // import 다른 패키지의 클래스를 불러오기 위해 패키지와 클래스를 언급하는 것
        // import Chap_07.BlackBox          // Chap_07에서 BlackBox 클래스 import
        // import Chap_07.BlackBoxRefurbish // Chap_07에서 BlackBoxRefurbish 클래스 import
        // import Chap_07.*                 // Chap_07에서 모든 클래스 import

        // 랜덤 클래스
        Random random = new Random();
        System.out.println("랜덤 정수 : " + random.nextInt()); // int 범위 내에서 무작위 정수형 값 반환
        System.out.println("랜덤 정수 (범위) : " + random.nextInt(10)); // 0 이상 10 미만의 무작위 정수형 값 반환
        System.out.println("랜덤 실수 : " + random.nextDouble()); // 0.0 이상 1.0 미만의 무작위 실수형 값 반환
        // System.out.println("랜덤 실수 (범위) : " + random.nextDouble(10.0)); // 실수형은 범위 지정 불가

        // 만약 5.0 이상 10.0 미만의 변수를 뽑으려면?
        double min = 5.0;
        double max = 10.0;
        System.out.println("랜덤 실수 (범위) : " + (min + (max - min)) * random.nextDouble());

        System.out.println("랜덤 boolean : " + random.nextBoolean()); // true, boolean 무작위 반환

        // 로또 번호를 뽑으려면? 1~45
        System.out.println("로또 번호 : " + (random.nextInt(45) + 1)); // 1 이상 46 미만의 정수 = 1이상 45 이하의 정수

        // 그 외에도 기본으로 제공하는 클래스들
        // Math(수학 계산 관련), Scanner(입력), StringBuilder, StringBuffer, StringTokenizer(문자열 관련)
        // BigInteger(큰 수에 대한 연산), BigDecimal(오차가 없는 실수 계산)
        // LocalDate, LocalTime, LocalDateTime, DateTimeFormatter, ... (날짜 관련)
    }
}

 

package nadocoding.Chap_07;

import nadocoding.Chap_07.Camera.Camera;
import nadocoding.Chap_07.Camera.FactoryCam;
import nadocoding.Chap_07.Camera.SpeedCam;

public class _12_Inheritance {
    public static void main(String[] args) {
        // 상속 // 자식 클래스 옆에 'extends 부모클래스'를 붙인다.
        // 상속은 하나의 부모 클래스로부터만 상속 받을 수 있다.
        // ex) public class SpeedCam extends Camera
        Camera camera = new Camera();
        FactoryCam factoryCam = new FactoryCam();
        SpeedCam speedCam = new SpeedCam();

        System.out.println(camera.name);
        System.out.println(factoryCam.name);
        System.out.println(speedCam.name);

        camera.takePicture();
        factoryCam.recordVideo();
        speedCam.takePicture();

        factoryCam.detectFire();
        speedCam.checkSpeed();
        speedCam.recognizeLicensePlate();
    }
}
package nadocoding.Chap_07.Camera;

public class Camera { // 부모 클래스
    // _12
    public String name;

    // 상단 메뉴바 -> Code -> Generate == Alt + Insert -> Constructor
    public Camera() {
        this.name = "카메라";
    }

    public void takePicture() {
        // 사진 촬영
        System.out.println(this.name + " : 사진을 촬영합니다.");
    }

    public void recordVideo() {
        // 동영상 녹화
        System.out.println(this.name + " : 동영상을 녹화합니다.");
    }
}
package nadocoding.Chap_07.Camera;

public class SpeedCam extends Camera { // 자식 클래스
    // _12
    public SpeedCam() {
        this.name = "과속단속 카메라";
    }

    public void checkSpeed() {
        // 속도 체크
        System.out.println("속도를 측정합니다.");
    }

    public void recognizeLicensePlate() {
        // 번호 인식
        System.out.println("차량 번호를 인식합니다.");
    }
}
package nadocoding.Chap_07.Camera;

public class FactoryCam extends Camera { // 자식 클래스
    // _12
    public FactoryCam() {
        this.name = "공장 카메라";
    }

    public void detectFire() {
        // 화재 감지
        System.out.println("화재를 감지합니다.");
    }
}

 

package nadocoding.Chap_07;

import nadocoding.Chap_07.Camera.Camera;
import nadocoding.Chap_07.Camera.FactoryCam;
import nadocoding.Chap_07.Camera.SpeedCam;

public class _13_MethodOverriding {
    public static void main(String[] args) {
        // 메소드 오버라이딩 : 자식 클래스에서 부모 클래스의 메소드를 덮어쓰기 (재정의)
        Camera camera = new Camera();
        FactoryCam factoryCam = new FactoryCam();
        SpeedCam speedCam = new SpeedCam();

        camera.showMainFeature();
        factoryCam.showMainFeature();
        speedCam.showMainFeature();
    }
}
public void showMainFeature() {
        System.out.println(this.name + " 의 주요 기능 : 사진 촬영, 동영상 녹화");
    }
public void showMainFeature() {
        System.out.println(this.name + " 의 주요 기능 : 화재 감지");
    }
@Override // annotation
    public void showMainFeature() {
        System.out.println(this.name + " 의 주요 기능 : 속도 측정, 번호 인식");
    }

 

package nadocoding.Chap_07;

import nadocoding.Chap_07.Camera.Camera;
import nadocoding.Chap_07.Camera.FactoryCam;
import nadocoding.Chap_07.Camera.SpeedCam;

public class _14_Polymorphism {
    public static void main(String[] args) {
        // 다형성
        // FactoryCam is a Camera, SpeedCam is a Camera => IS-A 관계

        // class Person : 사람
        // class Student extends Person : 학생은 사람이다 (Student is a Person)
        // class Teacher extends Person : 선생은 사람이다 (Teacher is a Person)

        // 부모 클래스는 자신의 객체 뿐만이 아니라 자식 클래스의 객체도 만들 수 있다.
        Camera camera = new Camera();
        //FactoryCam factoryCam = new FactoryCam();
        Camera factoryCam = new FactoryCam();
        //SpeedCam speedCam = new SpeedCam();
        Camera speedCam = new SpeedCam();

        camera.showMainFeature();
        factoryCam.showMainFeature();
        speedCam.showMainFeature();

        System.out.println("---------------------------");

        Camera[] cameras = new Camera[3];
        cameras[0] = new Camera();
        cameras[1] = new FactoryCam();
        cameras[2] = new SpeedCam();

        for (Camera cam : cameras) {
            cam.showMainFeature();
        }

        System.out.println("---------------------------");

        // 단, 이렇게 부모 클래스를 통해 만든 객체는 자식 클래스만 가지고 있는 메서드를 호출할 수 없다.
        // factoryCam.detectFire();
        // speedCam.checkSpeed();
        // speedCam.recognizeLicensePlate();

        if (camera instanceof Camera) {
            System.out.println("카메라입니다.");
        }

        if (factoryCam instanceof FactoryCam) {
            // factoryCam.detectFire();
            ((FactoryCam)factoryCam).detectFire(); // factoryCam이 FactoryCam의 객체라면 detectFire을 호출할 수 있도록 형변환
        }

        if (speedCam instanceof SpeedCam) {
            ((SpeedCam) speedCam).checkSpeed();
            ((SpeedCam) speedCam).recognizeLicensePlate();
        }

        // 모든 클래스는 Object라는 클래스의 자식 클래스이므로 아래와 같은 형식도 가능하다.
//        Object[] objs = new Object[3];
//        objs[0] = new Camera();
//        objs[1] = new FactoryCam();
//        objs[2] = new SpeedCam();
    }
}

 

package nadocoding.Chap_07;

import nadocoding.Chap_07.Camera.FactoryCam;
import nadocoding.Chap_07.Camera.SpeedCam;

public class _15_Super {
    public static void main(String[] args) {
        // Super 오버라이딩을 하면서도 부모 클래스의 기능을 유지하기 위함
        FactoryCam factoryCam = new FactoryCam();
        SpeedCam speedCam = new SpeedCam();

        factoryCam.recordVideo();
        System.out.println("---------------------");
        speedCam.takePicture();
    }
}
package nadocoding.Chap_07.Camera;

public class Camera { // 부모 클래스
    // _12
    public String name;

    // 상단 메뉴바 -> Code -> Generate == Alt + Insert -> Constructor
//    public Camera() {
//        this.name = "카메라";
//    }

    public void takePicture() {
        // 사진 촬영
        System.out.println(this.name + " : 사진을 촬영합니다.");
    }

    public void recordVideo() {
        // 동영상 녹화
        System.out.println(this.name + " : 동영상을 녹화합니다.");
    }

    // _13
    public void showMainFeature() {
        System.out.println(this.name + " 의 주요 기능 : 사진 촬영, 동영상 녹화");
    }

    // _15
    public Camera() {
        this("카메라");
    }

    protected Camera(String name) {
        this.name = name;
    }
}
package nadocoding.Chap_07.Camera;

public class FactoryCam extends Camera { // 자식 클래스
    // _12
    public FactoryCam() {
        // this.name = "공장 카메라";
        // _15
        super("공장 카메라");
    }

    public void detectFire() {
        // 화재 감지
        System.out.println("화재를 감지합니다.");
    }

    // _13
    public void showMainFeature() {
        System.out.println(this.name + " 의 주요 기능 : 화재 감지");
    }

    // _15
    public void recordVideo() {
        // 동영상 녹화
        super.recordVideo();
        detectFire();
    }
}
package nadocoding.Chap_07.Camera;

public class SpeedCam extends Camera { // 자식 클래스
    // _12
    public SpeedCam() {
        // this.name = "과속단속 카메라";
        // _15
        super("과속단속 카메라");
    }

    public void checkSpeed() {
        // 속도 체크
        System.out.println("속도를 측정합니다.");
    }

    public void recognizeLicensePlate() {
        // 번호 인식
        System.out.println("차량 번호를 인식합니다.");
    }

    // _13
    @Override // annotation
    public void showMainFeature() {
        System.out.println(this.name + " 의 주요 기능 : 속도 측정, 번호 인식");
    }

    // _15
    public void takePicture() {
        // 사진 촬영
        super.takePicture();
        checkSpeed();
        recognizeLicensePlate();
    }
}
package nadocoding.Chap_07;

import nadocoding.Chap_07.Camera.Camera;

public class _16_Reference {
    public static void main(String[] args) {
        // 참조
        // 기본 자료형 (Primitive Data Types) : int, float, double, long, boolean, ...
        int[] i = new int[3];
        System.out.println(i[0]); // 0


        double[] d = new double[3];
        System.out.println(d[0]); // 0.0

        // 참조 자료형 (Non-Primitive, Reference Data Types) : String, Camera, FactoryCam, SpeedCam, ...
        String[] s = new String[3];
        System.out.println(s[0]); // null

        Camera[] c = new Camera[3];
        System.out.println(c[0] == null); // true
    }
}

 

reference는 중간까지 마치고 팀 프로젝트 코드 merge 과정 중 버튼 기능이 잘 작동하지 않아 코드 수정에 들어간다.

 

 

'토이프로젝트 - allt' 카테고리의 다른 글

23.05.20  (0) 2023.05.20
23.05.19  (0) 2023.05.19
23.05.18  (0) 2023.05.18
23.05.16  (0) 2023.05.16
23.05.15  (0) 2023.05.15