TIL - 2023/08/15

Hoony·2023년 8월 15일
0

Daily

목록 보기
21/30
post-thumbnail

💼 오늘 작업 내용

1. publishBot 개발 계획 및 시작

매번 notion에 작업하고 이를 다시 블로그에 옮기는 일련의 과정이 귀찮아서 자동화하려고 한다.

무언가를 정리하고 기록하는 건 notion이 더 편해서 자주 기록을 하게 된다.

그러나 해당 내용을 다시 블로그에 옮겨야 된다는 번거로움이 있어서 해당 과정을 자동화시키고자 한다.


  • publishBot 일정 계획 (이번주 안에 끝내도록)

  • publishBot 개발 환경 세팅

  • 기능 개발 시작



2. Velog Selenium 자동화

selenium을 통해 로그인 및 게시글 작성 및 게시 작업 자동화를 진행했다.

로그인 및 게시글 작성 페이지까지 넘어가서 제목 및 태그 작성까지 가능했지만

본문 작성 실패…(CodeMirror 문제…)


3. Notion API 자동화

Notion API를 통해 TIL Database에 있는 정보를 읽어오고 Markdown으로 변환시키는 자동화 작업을 진행했다.

  • Notion 특정 데이터베이스 정보 가져오기

  • Notion 특정 페이지 정보 가져오기

  • Notin to Markdown 구현 (Notion2Md 라이브러리 사용) - 자동으로 이미지도 AWS에 올려주는 작업을 해줘서 쉽게 사용할 수 있다.



4. 코딩테스트 공부

  • 백준 허브 크롬 익스텐션 설치 및 Github 연동

        백준 / 프로그래머스에서 작성한 코드를 자동으로 연동된 github repository에 커밋해주는 최고의 익스텐션…강추!!! 

    매일매일 코딩테스트 했던 기록을 잔디로 남길 수 있는 미친 익스텐션!!

        [https://chrome.google.com/webstore/detail/백준허브baekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko](https://chrome.google.com/webstore/detail/백준허브baekjoonhub/ccammcjdkpgjmcpijpahlehmapgmphmk?hl=ko)

def solution(board, moves):
    answer = 0
    stack = []
    board_zip = [list(item) for item in list(zip(*board))]

    for move in moves:
        for idx, fig in enumerate(list(board_zip[move-1])):
            if(fig != 0):
                stack.append(fig)
                board_zip[move-1][idx] = 0

                if(len(stack) > 1 and stack[-1] == stack[-2]):
                    answer += 2
                    stack = stack[:-2]

                break



    return answer

from collections import Counter
def solution(participant, completion):
    p_dict = Counter(participant)
    c_dict = Counter(completion)

    for key,value in p_dict.items():
        if(c_dict[key] != value):
            return key

  • programmers136798기사단원의 무기
def getDivisors(number):
    if(number == 1) : return 1
    
    divisors = set()
    
    count = 0
    for i in range(1, int(number ** 0.5)+1):
        if(number % i == 0):
            divisors.add(i)
    
    tmp_divisors = divisors.copy()
    
    for i in tmp_divisors:
        divisors.add(number//i)

    return len(divisors)

def getCost(power, limit, limitPower):
    if(power > limit):
        return limitPower
    
    else:
        return power

            

def solution(number, limit, power):
    answer = 0
    
    divisorCounts = []
    
    for num in range(1, number+1):
        divisorCounts.append(getDivisors(num))
    
    for count in divisorCounts:
        answer += getCost(count,limit,power)
    
    
    
    return answer

  • programmers131115가격이 제일 비싼 식품의 정보 출력하기
SELECT * 
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

⚠️ 발생 에러

1. CodeMirror에 텍스트 입력

Velog에 제목이랑 태그 설정까지는 손쉽게 할 수 있었다.

그러나 본문 내용 입력에서 난관에 봉착했다…

Velog는 Input element가 아닌 CodeMirror라는 웹 에디터를 통해 본문 내용을 입력받고 있었다.

이거는 일반적인 Input element 가 아니라서 입력이 되지 않았다…


chat gpt가 알려준 방식대로 진행해봤지만 send_keys 부분에서 에러가 발생했다.

textarea = driver.find_element(By.XPATH, '//div[contains(@class, "CodeMirror")]//textarea')
textarea.send_keys('Test Input')

해당 문제를 해결하기 위해 계속 찾아볼 예정이다…


📚 독서

  • [이끼숲] - 117쪽 ~ 206쪽




profile
Just Do it!

0개의 댓글