대충 크롬 탭이 켜져있는 순으로 적는다

 

 

1. git add 취소

git reset: 전체 파일 add 취소

git reset HEAD <file명>: <file> 취소

 

2. git add <. || 파일>: 준비영역에 파일 추가

 

3. git commit -m "커밋메세지": 로컬 저장소에 최종 저장

 

4. git remote add origin <깃헙 레포지토리 주소>: 로컬저장소와 원격저장소 연결(origin은 별명)

 

5. git push origin <branch명>: <branch>로 로컬저장소 파일을 원격저장소에 올린다

 

6. git branch <branch명>: <branch명> branch 생성

 

7. git remote remove origin: 원격저장소 연결 제거

 

8. git checkout -b <branch명>: branch 생성하고 바로 이동

 

 

......그렇다 

왤케 어렵냐 진짜 지옥에서 올라온 문서관리자......

왜 나의 하루는 끝나지 않는가

 

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails

이거 뭐더라(참조테이블에 없는 값을 추가해서 발생한 오류라칸다)

 

ERROR 1265: 1265: Data truncated for column 'population' at row 1

설정된 데이터값 범위 초과

 

Error 1091: Can't DROP 'wc_conv_info_ibfk_1'; check that column/key exists SQL Statement

fk때문에 칼럼 수정/삭제 불가

데이터베이스 프로젝트 때문에 깃허브 레포지토리에서 받아온 DB를 import하는데 

 

ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'

 

멘트가 뜨면서 안된다... 그래서 찾아보니까 MySQL 8.0에서 MySQL 버전 5.7로 import할때 발생하는 오류라나

 

해결방법으로는 

- sql 파일을 열어서 utf8mb4_0900_ai_ci을 utf8mb4_general_ci로 변경

- 데이터베이스 생성시 default CHARACTER SET UTF8 추가

라는데... DB만든 쿼리문 보니까 두번째는 이미 돼있었다... 뭘까

 

암튼 그래서 sql 파일을 열어서 다 고쳐주니까 잘된당

진짜 이번학기에 import 하나는 확실히 마스터 하는듯

깃허브에 레포지토리를 포크해와서 진행하다보면 원본에 업데이트된 사항이 내 레포지토리에는 적용이 안된다. 

깃베시로 함 연동해보자...

 

받아온 레포지토리가 있는 경로에서 깃베시를 실행하고

git remote -v

를 입력하면 포크해온 레포지토리가 보일것이다... 여기에

git remote add upstream <원본 repository 주소>

를 해주고 다시 git remote -v를 하면 upstream으로 원본 레포지토리가 추가된 것이 보인다. 

 

이제 

git fetch upstream

을 해주면 원본 레포지토리에서 업데이트된 내용을 보여준다. 

 

이제 

git merge upstream/main (main은 원하는 branch로 변경 가능하다.)

을 하면 변동사항이 로컬 저장소(ex 내컴퓨터)에 저장되므로 깃허브의 내 레포지토리에도 적용시키기 위해 푸시ㄱㄱ

git push origin main

 

요렇게 하면 변경사항이 내 레포지토리에도 연동된다. 

 

찾아보니까 이렇게 나와서 했는데, 깃허브에서 fetch and merge 누르면 그냥 연동 된다고 한다......

이것이 구글링의 폐혜?

기왕 한거니까 까먹지 말자ㅏ...

여차저차 하여 과목 1 데이터 모델링의 이해 1장 데이터 모델링의 이해를 풀어봤다. 

SQLP까지 이책으로 공부하고 싶으므로 처음엔 포스트잇에 정답만 적어서 풀었다. 

책 오기 전에 1장 부분을 SQL 전문가 가이드로 미리 공부하고 푸는건데도 '아 이문제 좀 골때리네...' 하면서 풀었다. 너무 만만하게 봤나보다...... 그래도 30문제중에 3개 틀린거면 나쁘지 않은가?

 

그나마 3번은 다시 풀어서 맞췄는데, 나머지 두개는 틀려서 오답노트를 정리하고자 한다.

 


3. 다음 중 데이터모델링을 할 때 유의해야 할 사항으로 가장 부적절한 것은?

1. 여러 장소의 데이터베이스에 같은 정보를 저장하지 않도록 하여 중복성을 최소화 한다. 

2. 데이터의 정의를 데이터의 사용 프로세스와 분리하여 유연성을 높인다. 

3. 사용자가 처리하는 프로세스나 장표 등에 따라 매핑이 될 수 있도록 프로그램과 테이블간의 연계성을 높인다. 

4. 데이터간의 상호 연관관계를 명확하게 정의하여 일관성 있게 데이터가 유지되도록 한다. 

 

답: 2

해설: 데이터모델링을 할 때 유의할 사항은 중복성, 비유연성, 비일관성 등이다. 

데이터 모델이 수시로 변경되면 유지보수의 어려움을 가중시킬 수 있기 때문에 유연성을 낮춰야 한다. 

 

근데 해설 읽어보니까 3번도 부적절한거같은데???? 연계성 높이면 데이터 모델이 업무 변경에 대해 취약해진다는데??? 이거 뭐임;;;


6. 다음 중 ANSI-SPARC에서 정의한 3단계구조(three-level architecture)에서 아래 내용이 설명하는 스키마구조로 가장 적절한 것은?

- 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현

- 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마

1. 외부스키마(External Schema)

2. 개념스키마(Conceptual Schema)

3. 내부스키마(Internal Schema)

4. 논리스키마(Logical Schema)

 

답: 2

해설: 통합관점의 스키마구조를 표현한 것은 개념스키마. 데이터 모델링은 통합관점의 뷰를 가지고 있는 개념 스키마를 만들어가는 과정이다. 


15. 다음 중 속성에 대한 설명으로 가장 부적절한 것은?

1. 엔티티에 대한 자세하고 구체적인 정보를 나타낸다. 

2. 하나의 엔티티는 두 개 이상의 속성을 갖는다. 

3. 하나의 인스턴스에서 각각의 속성은 하나 이상의 속성값을 가질 수 있다. 

4. 속성도 집합이다. 

 

답: 3

해설: 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가져야 한다. 

 

 

이렇게 3문제 틀렸다. 이제 다음장 부터는 미리 공부 안했는데 얼마나 틀릴라나...... 끄아아아아아악

public int solution(int[] numbers) {
        /*
        0부터 9까지 숫자 중 일부가 들어있는 배열 numbers가 매개변수
        * numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return
        *
        * 1. numbers 길이만큼 반복
        * 2. 0부터 9까지 들어있는 배열 tmp와 비교
        * 3. 숫자가 tmp에도 존재하면 삭제
        * 4. tmp에 남아있는 숫자 answer에 더해주기
        */
        int answer = 0;
        int[] tmp = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // numbers와 비교해서 없는 수를 남길 배열
        for(int i: numbers){ // numbers의 크기만큼 반복
            for(int j = 0; j < tmp.length; j++){ // tmp의 크기만큼 반복
                if(i == tmp[j]){ // numbers와 tmp 모두 가지고 있는 수라면
                    tmp[j] = 0; // tmp에서 삭제
                }
            }
        }
        for(int k = 0; k < tmp.length; k++){ // tmp의 크기만큼 반복
            answer += tmp[k]; // answer에 tmp에 남아있는 수를 더해준다
        }
        return answer;
}

그렇다. 반복문을 두번씩이나 돌리고싶지 않았는데...... 당장 생각나는게 저거밖에 없어서 걍 했다. 

 

그냥 0부터 9까지 다 더해져 있는 수에서 numbers랑 tmp에 같이 들어있는 수가 나오면 그 수를 빼주는 것도 나쁘지 않을 듯 하다. 일단 제출하고 다른 풀이를 좀더 봐야겠다. 

 

...

......

.........

 

 

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이걸 진짜 했다고....? 이런 미친ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

다음에 다시푼다 아ㅋㅋ

영어와 숫자가 섞인 문자열을 정수형으로 출력하는 문제. 

문자열이 너무 어려워서 결국 어떤 방식으로 푸는지 찾아봤다.....

기억에 남는 방식은 2가지 인데, 

1. 문자열을 선언해서 숫자(문자)를 정수형으로 대체

2. 해시맵을 선언해서 키를 딕셔너리로 대체

 

이중 내가 선택한 방법은 1번...

정확히 말하자면, zero, one 처럼 문자로 써있는 숫자를 0, 1 처럼 숫자로 이뤄진 문자열로 바꾸고, 이 문자열을 다시 정수형으로 바꿔주는 것이다. 에휴

 

처음에 생각했던 방식은 옛날에 염기서열 문제 했던것 처럼 문자열에서 숫자 문자열(예: one)을 잘라내서 비교하고 바꾸는 거였는데, 자바에는 replace()라는 좋은 메소드가 있으므로 비효율적이라 생각해서 그냥 1번으로 하기로 했다. 

 

public int solution(String s){
	
    int answer = 0;
    String[] num = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; // 문자로된 숫자를 바꿔줄 숫자
    String[] word = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; // 바꿔야 할 문자열
    System.out.println(s); // 문자열 s 출력
    for(int i = 0; i < num.length; i++){ // num의 길이만큼 반복(0~9)
    	s = s.replace(word[i], num[i]); // s에 word[i]가 존재한다면 num[i]로 치환
    }
    answer = Integer.parseInt(s); // s를 정수형으로 변환
    
    return answer;
}

여기서 주의해서 볼 부분은 문자열을 치환해주는 replace()와 문자열을 정수형으로 바꿔주는 parseInt()....

 

둘다 문자열이네?? 자바의 정석 사서 봐야되나 고민중이다. 

다음에 풀때는 해시맵으로도 풀 수 있게 공부해봐야지...!

와 시험끝난지 벌써 일주일이 되어간다. 

 

마지막 시험은 DB였고 조져버렸고 이제 정말 남은건 플젝뿐이고 쏟아지고 살려줘

 

아무튼 기말 전 마지막 시험 SQLD가 남아있다. 20일 시험 대전에서.

 

그러므로 SQLD 10일 프로젝트를 시작하지

 

이번학기 거의 비대면&동영상 강의라 노션으로만 강의내용 정리했더니 노션 정리가 아니면 내용을 이해하지 못하는 몸이 돼버렷따는 무슨 그냥 독해력 딸림;

 

10일동안 총 30장을 공부해야 하는데... 교수님이 SQL 전문가 가이드는 지원해주셨지만 저 두꺼운 책을 갖고 공부하기는 힘들것 같아서 SQLD 준비의 바이블.. '그 노란책'을 어제 저녁 구매했고,,, 10일 도착 예정이라는데...(뚜둔

과연,,, 10일에 오겠지???ㅠㅠㅠㅠㅠㅠ

 

열흘동안 총 30장을 봐야한다... 하루에 3장씩은 봐야겠네?? 와우,,,

그래도 작년에도 SQL 좀 만졌고 DB도 수강중이니까 할수 있겠지??? 제발?????

 

지금은 너무 피곤하므로 내일 일어나서 마저 해야겟다 to be continue.....

+ Recent posts