김학진
@mildsalmon
·
흔치않고, 진귀하다.

파이썬 함수의 디폴트 매개변수는 호출 시점을 따르지 않는다.

mutable한 변수를 함수의 디폴트 매개변수로 사용 시 의도치않은 동작이 일어날 수 있다. >>> def func(a=1, b=[]): >>> b.append(10) >>> print(b) >>> return id(a), id(b) >>> func.__defaults__ (1, []) >>> func() [10] (140713432621456, 1728853850056) >>> func() [10, 10] (140713432621456, 1728853850056) >>> func(a=20, b=[30]) [30, 10] (140713432622064, 1728853898696) >>> func.__defaults__ (1, [10, …

2022년 04월 03일 · 12 min read

파이썬의 itertools

1. 들어가며코딩테스트를 보면 순열, 조합, 중복 순열, 중복 조합을 사용해야하는 경우가 있다. 그런데 코테를 보는 순간에 순열과 조합을 dfs 알고리즘을 사용하여 구하기에는 시간이 부족하다. 따라서 자주 사용하는 itertools 라이브러리의 순열(permutations), 조합(combinations), 중복 순열(product), 중복 조합(combinations_with_replacement)를 살펴보자. 2. 들어가기에 앞서 총정리 import itertools A = [1, 2, 3] def iter_test(A: list) …

2021년 12월 31일 · 13 min read

[한라대학교 공지 알림 봇] 진짜 제대로된 클래스화

Intro내가 클래스화를 너무 단순하게 생각했다. 디테일한 구조화 없이 그냥 클래스를 만들고 거기에 기존 코드를 다 때려박았다. 가독성은 개판이 되고, 쓸모없는 부분이 너무 많아졌다. 그래서 그냥 이번에는 A4에 전체적인 흐름을 그림으로 그려서 다시 클래스화를 진행하고자 한다. 최대한 비슷한 기능끼리 모듈을 만들었다. 코드는 초반에 Doc을 추가해서 모듈에 대한 간략한 설명을 추가할 예정이다. …

2020년 03월 11일 · 4 min read

단국대학교 공지 알림 봇 제작기 (2) - 데이터 분석

Intro 조건. 크롤링 조건 단국대 공지사항 천안 공통 분석 분석 할 html 코드 2개 <li> <div class="top_area"> <div class="write_num"> NO. 3584 </div> <div class="num_area"> <span class="table_date"> <strong>최종수정</strong> 2020.03.04 </span> <span class="table_hit"><strong>조회수</strong> 242 </span> </div> </div> <div class="subject"> <a href="http://www.dankook.ac.kr/web/kor/-390?p_p_id=Bbs_WAR_bbsportlet&amp;p_p_lifecycle=0&amp;p_p_state=normal&amp;p_p_mode=view&amp;p_p_col_id=column-2&amp;p_p_col_pos=1&amp;p_p_col_count=2&amp;_Bbs_WAR_bbsportlet_curPage=1&amp;_Bbs_WAR_bbsportlet_action=view_message&amp;_Bbs_WAR_bbsportlet_messageId=714800"> <div class="subject_txt"> [퇴계기념중앙도서관] 도서관 임시 휴관 기간 연장 안내(~3.22)</div> <div class="ico_area"> …

2020년 03월 05일 · 24 min read

[한라대학교 공지 알림 봇] 유지보수 2탄

Intro 다시는 이 시리즈에 글 쓸 일이 없길 바랐지만. 짜잔. 그럴리가 없죠. 시작하겠습니다. 유지보수 2탄 사건 설명 사건 개요 알람이 폭팔적으로 와서, '또 제목을 바꾼건가?', '난 잘 고쳤는데?'라는 생각을 했다. 그런데 그게 아니였다. 게시글을 지운것이다. 게시글은 3가지 방식으로 작동된다. 작성,수정,삭제 작성과 수정에 대한 대책은 바로 앞 게시글에서 해결했다. 하지만 삭제를 …

2020년 03월 02일 · 13 min read

[한라대학교 공지 알림 봇] 유지보수

Intro 내가 다시 이 시리즈를 작성할 일은 없을 줄 알았는데... 사건 설명 사건 개요 학교에서 일반공지 게시글의 제목을 바꿨다. 수정 과정 ... new_file.write(posts[0].text) ... elif before != post.text: ... 지금까지 사용한 코드는 post.text (게시글의 제목)으로 최신 게시글인지 판단했다. 게시한 공지의 제목을 바꾼다는 생각을 하지 못해서이다. 충분히 가능했으나, 에측하지 못해서 에러가 …

2020년 03월 02일 · 9 min read

[한라대학교 공지 알림 봇] 마치며

Intro 블로그 첫 프로젝트가 끝났습니다. 다음에 다른 프로젝트로 찾아뵙겠습니다. 한라대학교 공지 알림 봇 제작기를 읽어주신 모든분들께 감사드립니다. 최종 코드 일반 공지_ver # -*- coding: utf-8 -*- ########## 서비스 코드 import requests from bs4 import BeautifulSoup import os import telegram import sys import time BASE_DIR = os.path.dirname(os.path.abspath(__file__)) my_token = '봇 토큰' …

2020년 02월 24일 · 10 min read

[한라대학교 공지 알림 봇] 서버 작업

Intro서버는 AWS의 Amazon Lunux 2를 사용했다. PuTTY나는 서버에 접속할때 PuTTY를 주로 사용한다. PuTTY는 SSH, Telet 등의 접속방식을 제공한다. PuTTY는 서버에 원격으로 접속하게 도와주는 프로그램이다. 다운로드 위 링크를 통해 다운받을 수 있다. PuTTY 접속 방법 빨간 부분만 잘 설정해주면 잘 접속이 된다. AWS .pem을 .ppk로 변환하는 방법 위에서 puttygen.exe를 클릭한다. Load를 …

2020년 02월 24일 · 7 min read

[한라대학교 공지 알림 봇] 코드분석 (telegram bot)

Intro 이번 챕터에서는 telegram bot을 활용해서 공지가 생기면 알람이 오도록 구현해보겠다. 지금까지 만든 코드를 실행하면 위 같은 결과가 나온다. 공지를 제외한 1page에 있는 게시글을 전부 크롤링한 모습이다. telegram bot 텔레그램 봇 정리본 위 정리본에 링크 되어 있는 문서를 참고하자. 봇 만들기 BotFather 텔레그램 봇은 BotFather을 통해 만들 수 있다. 만드는 …

2020년 02월 24일 · 16 min read