10월 11일

Yullgiii·2023년 10월 11일
0
post-thumbnail

내일 배움 캠프

오늘은 발표날이다
하지만 오전중에는 할것을 정해뒀기에 망설이지 않고 가능하지
그것은 바로
옵시디언!!!!!!!!!!!!!!
그래서 시작하는

옵시디언!!!!!!!!!!!

노마드 코더님 부터 해서 다른 강의까지 들어보자고..
내가 써도되는건지 아니면 아주 막 나가보건지 알아야하지 않겠는가?

하....좋다는걸 알긴하겠는데
이미 노션으로 많은걸 써뒀는데 지금 이게 필요할까?
주객 전도가 되는것은 아닐까?
나는 공부를 해야하는데
과연 이게 공부가 아니라 내가 노트에 투자하는 시간이 괜찮을까?
처음 시작이였다면 몰라도 이제와서?
하지만 좀 해보긴 해야지


이런 식으로 해두긴 했는데 이게 맞는지는 전혀 모르겠다
한번 해보는데 아직까지는 적응이 잘 안되는 느낌이다
플러그인들을 다운 받으면서 나에게 맞게 바꾸어 나가는중이다!
그래도 해보니 뭔가 변하고 있는것이 느껴지며 재미는 있는듯하다
이것에 너무 많은 시간을 할애 할수는 없으니 이제는 자습을 좀 해야겠다
자습으로는 역시

Java!!

드디어 유료파트로 넘어왔다
뭐가 뭔지 잘 모르지만 해보자고!!!!

Object!!

  • 모든 클래스의 조상

  • 필드 없이 메소드들만 갖고 있음

    • 모든 클래스들에 상속됨
    • 필요에 따라 오버라이드하여 사용
  • Object 인스턴스 선언하여 클래스 살펴볼 것

    • @IntrinsicCandidate : HotSpot VM (현재 대다수 JVM) 에 의한 최적화
      • 작성된 코드를 보다 효율적인 내부적 동작으로 덮어씀
    • native : C, C++ 등 다른 언어로 작성된 코드를 호출하여 성능 향상
      • Java Natice Interface 사용

toString 메소드
  • 기본적으로는 클래스명과 해시값을 반환
  • println 메소드로 객체 출력시 기본적으로 이 메소드의 결과값 출력
  • IntelliJ 코드 생성 메뉴에서 선택

equals 메소드
  • 기본적으로는 == 과 같이 레퍼런스 비교
  • 인스턴스 내용을 비교하려면 클래스마다 오버라이드해야 함

hashCode 메소드

  • 기본적으로는 각 인스턴스 고유의 메모리 위치값을 정수로 반환

clone 메소드

  • 인스턴스가 스스로를 복사하기 위해 사용
  • Cloneable 인터페이스 구현 권장
  • 깊은 복사는 직접 오버라이드하여 구현해주어야 함
    @Override
    protected Object clone() throws CloneNotSupportedException {

        //  💡 아래 super의 clone : 필드들을 얕은복사 해주는 Object 메소드
        //  - 원시타입 필드는 확실히 복사해줌. 참조타입은 참조복사만

        //  ⭐️ Cloneable을 구현하지 않은 클래스에서 호출하면 오류 발생!
        //  - 아래의 코드를 호출 안 하면 오류가 나지 않지만
        //  - 원시값 복사까지 일일이 구현해주어야 함
        //    - 즉 clone을 오버라이드해서 쓰는 의미 없음
        return super.clone();
    }

깊은값복사!!!!!!!!!

public class DeepCopied implements Cloneable {
    String title;
    int no;

    int[] numbers;
    Click click;
    Click[] clicks;

    public DeepCopied(String title, int no, int[] numbers, Click click, Click[] clicks) {
        this.title = title;
        this.no = no;
        this.numbers = numbers;
        this.click = click;
        this.clicks = clicks;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {

        //  원시값들 복사
        DeepCopied clone = (DeepCopied) super.clone();

        //  ⭐️ 참조타입의 복사
        //  - 원시값 요소들을 하나하나 복사해 넣음

        clone.numbers = new int[numbers.length];
        for (var i = 0; i < numbers.length; i++) {
            clone.numbers[i] = numbers[i];
        }

        clone.click = new Click(click.x, click.y);

        //  이중 참조 (인스턴스의 배열)
        //  - 이중으로 복사
        clone.clicks = new Click[clicks.length];
        for (var i = 0; i < clicks.length; i++) {
            clone.clicks[i] = new Click(clicks[i].x, clicks[i].y);
        }

        return clone;
    }
}

이까지 하고 점심을 먹고와서

발표!!!!!!!!!!!!!!!!

프로젝트 발표 내용 및 인상깊은점

1조부터 PPT를 준비했네...?세상에 맙소사?
우린 그냥 시연영상처럼 하는거였는데?
꽤나 만은 발표자료가 있는데 우리는 그냥 단순하게 시연을 목표로 발표를 하려는거였는데
뭔가 일이 커지는 느낌인걸?
다행스럽게도 2조부터는 PPT가 존재하지 않았다....
다행이야 우리조가 나은거 같은데???

무사히 우리조도 발표를 마쳤다 그래서 우리는 호스팅을 했기때문에
알수있었던 사진이 크면 느리다 같은 많은 점을 바꾸게 되었다는것에서 실제 사이트가 어떻게 활용되는지에 대한 답을 얻을수있었다.
꽤나 많은 팀이 방명록 댓글 기능을 구현했는데...이걸 할껄그랬나?
또한 수정과 추가 버튼 구현또한 많았다.
그 기능이 사실 소개페이지에서 어떤것이 중요한지 잘모르겠다...소개페이지가 수정해야하나..>?

오!!!!!잘 안되고 잘 된점을 적어둔게 꽤나 도움이 되는 느낌이 든다!!!!!

우리 팀의 호스팅은 짱이였다...신의 한수....필수덩어리였다.

이건 여기만 쓰는 비밀인데 우리팀 잘한거 같아....
굳이 구현하지 않아도 되는것은 안하고 각자의 학습시간을 가져간건 굉장히 잘한거 같아!!!
그렇게 A반 발표는 모두 끝이 났고 4시에 이어서 B반 발표를 하기로 했다
저것도 어찌했는지 구경가봐야징~
전반적인 B반의 구조또한 비슷하다는 느낌이 들었다
그저 CSS가 다른 점이 있다정도이지 몇몇 기능들이 추가되고 빠지고의 차이였다.
그렇게 우리가 잘했음과 다른팀들도 잘했다는것을 알게되는 발표자리였다
같은 주제 같은 기술 다른 사람이 만들어내는 모든 결과물이 있기에 발전하는 느낌이 들었다.

그렇게 발표가 모두 끝이나고!!!!!!!!이제는
무엇을 할것이냐!!!!
바로!!

Git 공부!

git flow


깃플로어사이트!!!

장점

각 용도에 맞게 main(master), develop, feature, release, hotfix 브랜치를 분리해 사용

명확한 릴리즈 기간과 주기적인 버전이 정해진 제품을 개발하는 환경에 적합

릴리즈 버전 관리즐 위한 release 브랜치를 따로 관리해 특정 버전에 대한 유지보수 기간이 길고 여러 버전을 동시에 관리해야 할 때 유용

제시한 장점 때문에 소규모 팀보다는 규모가 있는 팀에 적합

  • master : 기준이 되는 브랜치로 제품을 배포하는 브랜치 입니다.

  • develop : 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 합(Merge)칩니다.

  • feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 합칩니다.

  • release : 배포를 위해 master 브랜치로 보내기 전에 먼저 QA(품질검사)를 하기위한 브랜치 입니다.

  • hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 떄 긴급 수정하는 브랜치 입니다.

아직 잘 모르겠다 실습이 없으면 잘 모르는 편

다른 방법도 존재하는데

Trunk-based


이러한 방식도 있다고 한다!!!

CI/CD

CI : Continuous Integration (지속적인 통합)

  1. 코드변경사항을 빈번하게 머지해야한다.
  2. 통합을 위한 단계의 자동화(빌드 테스트 머지)

CD : Continuous Delivery,Deployment (지속적인 제공, 배포)



Spring

빌드하고 실행하기!


빌드하고 실행하기
콘솔로 이동
1. ./gradlew build
2. cd build/libs
3. java -jar ~~~~~~~~~.jar
4. 실행 확인

회고

이렇게 하니 12시간이 가버렸다...오늘도 값진 하루를 보냈는지는 확실하지 않다 하지만 다른 사람들의 발표를 들으며 어떻게 나아가는지 알게 된것으로도 꽤나 잘 사용한 시간이라는 생각이 들었다.
Spring 과 Java 또한 아직 부족하지만 어떻게든 해 나가야지 않겠는가?
벨로그의 제목인 느린 거북이 지만 그래도 나아가다보면 골인은 하지 않겠는가...

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글