본문 바로가기
About me/TIL

18일차

by pon9 2024. 11. 21.

아침: 와..................내 don't go.................

세션도 화장실에서 듣고 cs인강도 화장실에서 들었다. 화장실에서 제자리걸음 하면서 나름 열심히 했다.....내 자신....

점심시간에 기진맥진해서 40분동안 푹 자니까 좀 낫다.
오늘은 재귀함수에 대해 배웠는데

구글이 이런 재밌는걸 해놨다 ㅋㅋㅋㅋㅋ

recursion -> recursion ->  recursion ->  recursion -> ...

말그대로 재귀다 ㅋㅋㅋㅋㅋㅋㅋ

 

 

오후: Spring + Postgresql

몽고db, mysql 둘 다 경험이 있으니 사용경험이 없고 전 세계에서 사용자가 제일 많은 db!

Postgresql에 도전해보고있다.

일단 db만들고~

psql -U postgres 비번입력

\c otl_db db접속

\l db확인

엔티티를 짜줬다. 솔직히 잘 모르는데 일단 쓰고 보는중이다.

@Id는 pk를 의미하고 generatedvalue는 값을 입력될때 자동으로 생성해준다는 거다.

기본생성자 protected CommentDb(){} 는 필수고,

엔티티 생성자는 개발용이라고 한다.

JPA가 엔티티 관리에 기본생성자를 요구하는데, 이 과정에서 매개변수가 없는 기본생성자가 필요하다.

실제 db랑 상호작용하는 인터페이스다. 왜 인터페이스로 쓰는지 모르겠어서 검색해봤는데 반은 알고 반은 모르겠어서 일단 막 써보기로 했다.

대충 더 유연하고, Jpa가 구현체를 자동으로 만들어주고, 구현체와의 결합도를 낮출 수 있고,

AOP(이게뭐임?) 과 동적 프록시(이건 또 뭐임?) 를 사용한다고 한다 ㅇㅅㅇ;

JPA는 프록시 패턴을 사용한다. 자기 전에 개념 좀 훑고 자야겠다.

 

아무튼 지금 나는 save를 구현할거고, 새로운 id에 대해선 자동으로 해주기때문에 아무것도 써놓을 필요가 없다.

id가 기존에 있으면 수정이다. 

한번 해보자! 가즈아

네? 이거 모임?

엥?

????

아하 ㅎ

\c otl_db로 db에 접속해야되는데 깜빡했다 ㅎㅎ \dt 로는 테이블들을 조회할수있고,

특정 데이터 조회는 sql문을 사용하면 된다.

이제 firebase로도 했었던 댓글 조회 기능까지 만들어보자.

id를 01로 넣어도 1로 저장돼서 commentList 뒤에 0을 붙여줘야했다.

확실히 spring 써서 하니까 firebase보다 훨씬 쉽다. get으로 그냥 불러오기만 하면 되니..

처음 js로 구조를 진짜 잘 짠것같다. 각각의 html 태그에 id를 미리 넣어놓았더니 진짜 편하다

내일은 실시간 채팅 구현 한번 해보자!

 

 

저녁: 알고리즘 문제 풀기

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

tlqkf..

ㅎ 배열 메모리 할당 문제였다

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

int* solution(const char* today, const char* terms[], size_t terms_len, const char* privacies[], size_t privacies_len, size_t* result_size) {
    char temp[2000];
    char* terms_A[1000];
    int terms_1[1000];
    
    for(int i = 0; i < terms_len; i++){
        strcpy(temp, terms[i]);
        char* token1 = strtok(temp, " ");
        char* token2 = strtok(NULL, " ");
        if(token1 != NULL && token2 != NULL){
            terms_A[i] = malloc(strlen(token1) + 1);
            strcpy(terms_A[i], token1);
            terms_1[i] = atoi(token2);
        }
    }
    
    char todayy[20];
    strcpy(todayy, today);
    int yearr = atoi(strtok(todayy, "."));
    int monthh = atoi(strtok(NULL, "."));
    int dayy = atoi(strtok(NULL, "."));

    int* answer = (int*)malloc(sizeof(int) * privacies_len);
    int index = 0;

    for(size_t i = 0; i < privacies_len; i++){
        char temp2[10000];
        strcpy(temp2, privacies[i]);

        int year = atoi(strtok(temp2, "."));
        int month = atoi(strtok(NULL, "."));
        int day = atoi(strtok(NULL, " "));
        char* term = strtok(NULL, " ");

        int duration = 0;
        bool found = false;
        for(int j = 0; j < terms_len; j++){
            if(strcmp(term, terms_A[j]) == 0){
                duration = terms_1[j];
                found = true;
                break;
            }
        }

        if(!found){
            continue;
        }

        month += duration;
        if(month > 12){
            year += (month - 1) / 12;
            month = (month - 1) % 12 + 1;
        }

        bool dead = false;
        if(yearr > year){
            dead = true;
        }else if(yearr == year){
            if(monthh > month){
                dead = true;
            }else if(monthh == month){
                if(dayy >= day){
                    dead = true;
                }
            }
        }

        if(dead){
            answer[index++] = i + 1;
        }
    }

    for(int i = 0; i < terms_len; i++){
        free(terms_A[i]);
    }

    *result_size = index;
    answer = realloc(answer, sizeof(int) * index);
    return answer;
}

 

 

무친 길이를 끝으로 오늘 마무리..

자자..

'About me > TIL' 카테고리의 다른 글

19일차  (1) 2024.11.22
17일차  (1) 2024.11.20
16일차  (1) 2024.11.19