everydayminder
아파치 log4j 보안 취약점 (CVE-2021-45105) 최근 10년 이내 최악의 보안 취약점이라고 알려진 아파치 log4J 취약점 문제(CVE-2021-44228)가 밝혀진지 몇 일이 지나지도 않았는데, 추가 문제가 보고되었다. CVE-2021-44228은 원격 코드 실행에 대한 취약점이고 장애등급은 Critical이지만, 이번에 보고된 CVE-2021-45105는 Denial Of Service(DOS) 취약점이고 장애등급은 High이다. 문제점 아파치 Log4J 공식 사이트에서는 이 문제를 아래와 같이 기술하고 있다. Apache Log4j2 versions 2.0-alpha1 through 2.16.0 did not protect from uncontrolled recursion from se..
맥북 기타 용량은? 맥북을 사용하는데 어느 순간부터 용량 부족 메시지가 뜬다. 그런데, 다른 영영과는 달리 기타 영역이기 때문에 어떻게 문제를 해결하는지 명확히 알기 어렵다. 이 정보에 대해 좀 더 단서가 있다면, 문제를 해결하는데 큰 도움이 될 것이다. 본 포스트에서는 맥북의 기타 용량을 확인하고, 문제를 해결하는 방법에 대해 살펴 보고자 한다. 기타 용량의 정체는? 문제를 해결하려면, 문제가 무엇인지부터 인식해야 한다. 어떤 데이터가 맥북의 기타 용량에 포함되는 것일까? 기타 용량은 말 그대로, 특정 카테고리에 부합되지 않은 데이터의 용량을 합한 것이다. 각종 문서 파일: pdf, excel, doc 등 캐시 파일 온갖 압축파일: zip, dmg 등 맥 OS 시스템 파일 및 임시파일 사용자가 인터넷에..
log4j 취약점에 대해 제로데이 어택으로 구분될만큼 심각한 보안문제로 log4j CVE-2021-44228가 보고 되었다. 이와 관련한 내용을 정리해 본다. 제로데이 어택 앞서 말한 제로데이 어택이란 무엇일까? 어떤 보안상 문제가 발견되고, 그 문제가 미처 공표되기도 전에 해당 문제점을 목표로 행해지는 위협/공격을 말한다. 취약점이 발견되고, 아직 패치 등이 적용되기 전에 이뤄지는 공격이므로 마땅한 대처 방안이 없고, 피해 규모도 가늠할 수 없는 상태를 말한다. 즉, 빨리 해결책이 나올 때까지 기다리고, 그 패치를 적용하는 것 외에는 뾰족한 방법이 없다. log4j란? log4j는 자바 애플리케이션에 로그를 쉽게 기록할 수 있도록 도와주는 라이브러리 구현체 중 하나이다. 공식사이트) https://lo..
Heroku에서 실행 중인 디스코드 봇의 로그를 확인하려면? 예를 들어, Heroku에 디스코드 봇을 띄웠는데 정상적으로 동작하지 않는다. 이런 경우, 로그를 확인해야 문제를 쉽게 해결할 수 있을 것이다. Heroku CLI 설치하기 Heroku 공식 사이트로부터, Heroku CLI를 설치한다. https://devcenter.heroku.com/articles/heroku-cli 맥북 사용자의 경우, $ brew tap heroku/brew && brew install heroku 명령어로 손쉽게 설치할 수 있다. 그 밖의 다운로드 방식으로 설치하는 방법 및 링크는 위의 공식 사이트내 잘 소개 되어 있다. Heroku CLI로 로그 확인하기 위와 같이 CLI를 설치한 후, 터미널을 열고 아래의 명령어..
Heorku에 파이썬 디스코드 봇 연동하기 (깃헙기반) 앞서 Heroku의 기본 설정을 진행했다면, 이제는 실제 디스코드 봇을 연동해볼 차례이다. Heroku CLI를 사용하거나, 깃헙 연동을 하면 되는데 이 포스트에서는 깃헙 연동을 하는 방법을 다룬다. 사용한 코드 앞서 테스트한 디스코드 봇을 바탕으로 기본 디스코드 봇을 Heroku에 연동해 보고자 한다. 파이썬으로 디스코드 봇 개발 시작하기 (기본 구조 잡기) discord.py를 사용하여 디스코드 봇 개발 시작하기 디스코드 봇 개발을 위해 사전준비를 마쳤다면, 이제 본격적으로 개발하기 위해 틀을 잡아본다. discord.py 설치 아래 글들을 참고하여, discord.py 사 luran.me 깃헙 프로젝트 생성 혹은 연동 깃헙 프로젝트를 아래와 같..
파이썬 라이브러리 추출하기/ 설치하기 파이썬 코드에 선언된 import 문이 있다 하더라도, 해당 라이브러리들이 자동으로 설치되지는 않는다. 즉, 로컬 개발환경에서는 개발하면서 이것저것 설치를 했다하더라도, 실행되는 환경에서 이 라이브러리는 명시적으로 설치해 주지 않으면 정상적으로 실행되지 않는다는 것을 뜻한다. 내가 어떤 패키지들을 사용했는지 어떻게 확인할 수 있을까? 또, 확보한 패키지 목록을 바탕으로 어떻게 쉽게 런타임 환경에 패키지 의존성을 주입할 수 있을까? 설치된 패키지 목록 확인하기 pip 명령어를 활용하여 현재 환경에 이미 설치된 패키지 목록을 쉽게 추출할 수 있다. $ pip freeze aiohttp==3.7.4.post0 async-timeout==3.0.1 attrs==21.2.0 ..
Heroku를 사용하여 디스코드 봇 무료 호스팅 준비하기 만약 디스코드 봇을 개발했다면, 어디에 띄워둬야 실제 봇으로서 제대로 동작할까? 물론 내 PC에서 봇을 띄워놓고, 24시간 365일 운영해도 된다. 그러나, 개인 용도의 봇이 아니라 다른 사람들도 쓸 수 있는 봇이라면 별도의 서버 환경에서 봇을 실행시키는 것이 바람직하다. AWS, GCP, Azure 등의 클라우드 환경이 적합한 타겟이 될텐데, Heroku를 쓰면 가벼운 디스코드 봇을 무료로 띄울 수 있다. Heroku 가입하기 Heroku의 공식 사이트 링크는 아래와 같다. https://www.heroku.com/ 혹시 미리 가입했다면, 상단의 log in 버튼을 클릭하여 로그인하면 되고, 계정이 없다면 sign up 버튼을 눌러서 가입한다. ..
파이썬에서 문자열 포맷을 지정하는 여러가지 방법 파이쎤에서 String formatter를 사용하는 여러가지 방법에 대해 정리한다. 본 글에서는 가장 원시적으로 직접 문자열을 붙이는 시도로부터, % operator를 사용하기, format() 함수 사용하기, f-string 사용하기에 대해 간략하게 다룬다. 직접 concatenation 만약 파이썬에서 아래와 같은 내용을 출력해야 한다면, 어떻게 해야 할까? Name: John, Student Id: 1234, Major: Math 아주 원시적인 방법으로는, 문자열 붙이기(string concatenation)를 생각해 볼 수 있다. name = 'John' studentId = 1234 major = 'Math' s = 'Name: ' + name +..
네이버 검색광고 API를 사용하려면? 네이버 검색광고 API를 활용하면 특정 정보의 검색량, 인기도 등을 활용하는 애플리케이션을 만들 수 있다. 물론, 이를 바탕으로 데이터를 분석하는데 활용할 수도 있다. 검색 데이터를 바탕으로, 나만의 애플리케이션을 만들고 싶다면 네이버 검색광고 API도 써보자. 사전 준비 네이버 검색광고 API를 사용하려면, 키를 발급 받아야 한다. 다음의 절차를 따라, 키를 발급받아 놓자. https://searchad.naver.com/ 를 방문하여, 로그인한다. 보통은 본인의 네이버 아이디로 로그인하면 된다. 위와 같은 화면이 뜨면, 오른쪽의 광고시스템 버튼을 클릭한다. 상단 메뉴 탭에서 도구 > API 사용 관리를 선택한다. 내 계정, 액세스라이선스, 비밀키를 잘 적어놓는다...
파이썬 디스코드 봇 - 사용자 커맨드로부터 파라미터를 전달받으려면? 봇에 입력한 커맨드만으로 동작하는 경우도 있지만, 일부 커맨드는 명령어와 함께 파라미터를 전달 받을 필요가 있다. 커맨드에 파라미터를 전달해 주려면, 다음과 같이 하면 된다. 커맨드에 파라미터 전달하기 @bot.command() async def talk(ctx, arg1, arg2): await ctx.reply('{} talks to {}.'.format(arg1, arg2)) 위와 같이 파이썬 함수에 파라미터를 정의하는 것만으로도 충분하다. 위의 코드는 커맨드가 'talk'이고, args1과 args2를 파라미터로 받는 코드이다. 전체 구조는 지난 글을 참고한다. 파이썬으로 디스코드 봇 개발 시작하기 (기본 구조 잡기) discor..
PyCharm에서 pip 업데이트 오류가 발생한다면? PyCharm에서 특정 패키지를 설치하려고 할 때, 설치가 정상적으로 되지 않는다면 pip 자체가 우선적으로 업데이트 되어야 한다. 그런데, pip 업데이트부터 하려고 해도, pip가 업데이트 되지 않는다면 어떻게 해야 할까? PyCharm내에서 pip 업데이트 하기 윈도우즈 버전과 맥북 버전의 PyCharm에 따라 해당 설정하는 방법이 다를 수 있다. 맥북의 경우, Preferences > Python Interpreter 항목을 찾아들어가면 아래와 같은 창이 뜬다. 오른쪽의 패키지 목록 창을 클릭해 보자. 특정 패키지를 클릭하면, 상단의 화살표 부분이 활성화되고, 그 버튼을 누르는 것만으로도 해당 패키지가 업데이트 된다. (정상적인 상황이라면) 커..
MySQL에서 Ignoring query to other database 에러 발생시 어느 날, MySQL에 CLI로 접속하여 명령을 수행하는데, 아래와 같은 에러가 발생했다. mysql> show databases; Ignoring query to other database 원인 파악 $ mysql -u사용자ID -p 명령어를 실행하면서 옵션을 혹시 대소문자를 다르게 입력했는지 확인해 보자. 내 경우는, $ mysql -U사용자ID -p 와 같이, -U를 대문자로 입력하고 로그인 하여 위의 문제가 발생하였다. 대소문자에 따른 옵션 차이 인식 -u와 -p는 대소문자에 따라 의미하는 바가 명확히 다르다. 따라서, 클라이언트 실행시 대소문자에 주의하여 실행해야 한다. -u, --user=name User f..
discord.py를 사용하여 디스코드 봇 개발 시작하기 디스코드 봇 개발을 위해 사전준비를 마쳤다면, 이제 본격적으로 개발하기 위해 틀을 잡아본다. discord.py 설치 아래 글들을 참고하여, discord.py 사용 준비를 마친다. 디스코드 서버-봇 설정하기 디스코드란? 디스코드는 인스턴트 메신저 중의 하나로 음성, 채팅, 화상통화 등을 지원하는 VoIP 솔루션이다. 2015년 9월에 모바일 게임인 Fates Forever 지원하기 위해 최초 출시되었으며, 뛰어난 성 luran.me 디스코드 봇 준비- discord.py 설치하기 (feat 맥북, 구글 코랩) 로컬 맥북 혹은 구글 코랩에 discord.py 설치하기 파이썬용 디스코드 봇 API로, discord.py를 사용하면 손쉽게 디스코드 봇..
MySQL에서 auto_increment 값을 조정하려면? MySQL에서 id를 지정하고 auto_increment 옵션을 지정하면, 데이터를 추가할 때 마다 1씩 자동 증가한다. 그런데, 이 값을 다시 임의의 값으로 조정하거나 초기화 하려면 어떻게 해야 할까? 테스트 테이블 구조 다음과 같은 테이블로 테스트 해 보자. CREATE TABLE IF NOT EXISTS `idtest` ( id int(6) AUTO_INCREMENT, name varchar(255) NOT NULL, PRIMARY KEY (id) ); 따라서, 이 테이블에 insert를 하면, id가 1씩 증가하도록 사용할 수 있는 상태이다. insert 하기 이 테이블에서 insert를 테스트 하면 아래와 같다. mysql> insert..
아이폰 또는 아이패드에서 녹음한 파일을 mp3로 변환하려면? 아이폰 또는 아이패드의 기본 녹음 앱을 사용하여 녹음을 했다. 녹음해 놓고 보니, 파일 포맷이 caf로 되어 있다. 그런데, 이 파일을 다른 사람에게 혹은 다른 곳에 공유를 해야 한다면, 범용적으로 쓸 수 있는 mp3 파일로 변환해야 할 것이다. 물론, 무료 온라인 변환 사이트들을 활용하여 파일을 변환하는 방법도 있으나, 외부에 나의 정보를 노출하는 것도 썩 유쾌한 일은 아니다. 맥북 사용자라면, 로컬 커맨드로 변환이 가능하다. 아이폰/아이패드 -> 맥북 파일 전송 각자 편한 방법으로 한다. 에어드랍을 해도 되고, 기타 다른 메신저를 써도 상관없다. 맥북 명령어로 파일 변환하기 afconvert라는 명령어를 쓰면, 오디오파일을 변환할 수 있다...