콘텐츠로 건너뛰기
Home » 21세기소년 » Page 2

21세기소년

21세기소년 / IT / 정보기술 / 인터넷 / 프로그래밍 / 미래 / 과학 / 과학지식 / 물리 / 화학 / 천문 / 생물학 / 이과생이나 관심가질 법한 자질구레한 이야기들

텔레그램 API로 채널에 메시지 보내기

파이썬에서 텔레그램 API를 사용하여, 특정 채널에 메시지를 보내는 방법을 알아봅시다. API를 통해서 메시지를 게시하려는 채널이 있다면, 텔레그램에서 새로 봇 하나를 만들고, 이 텔레그램 봇을 해당 채널의 관리자로 추가해줍니다. 이렇게 해 두었다면 API를 사용하여 봇으로 하여금 채널에 메시지를 보낼 수 있게 됩니다. 채널 뿐만 아니라 대화 ID만 알고 있다면,1:1 대화나 그룹대화에도 메시지를 보낼 수 있습니다. 오늘은 이 과정을 하나씩 따라가면서 살펴보겠습니다. 봇 생성하기 봇의 생성은 텔레그램 앱에서 할 수 있습니다. 모바일 앱 외에 PC용 텔레그램에서도 똑같이 할 수 있습니다. 텔레그램에서 제작한… 더 보기 »텔레그램 API로 채널에 메시지 보내기

라이트세일 인스턴스 업그레이드 및 설정

월 5천원 정도 하던 국내 호스팅 서비스를 쓰다가, 저장 공간의 압박이 너무 커서 여기 저기로 옮겨 다니다 라이트세일에 정착한 것이 대략 2018년이다. (그 전에 해외 호스팅을 사용해봤는데, 얘들은 처음 1년 혹은 몇 달은 저렴하게 프로모션하지만, 그 이후로 요금은… 흠..) 처음 2년반 넘게 사용하는 동안에는 불편함이 없었는데, 워드프레스가 버전업이 되면서 무거워져서 그런지 점점 느려진다는 느낌이 들었다. 또, 번거롭게 설치하는 일 없이 사용하려고 bitnami 인스턴스를 사용했는데, 문제는 bitnami 스택에서 php만 업그레이드한다거나 하는 것이 어려웠다.

더 보기 »라이트세일 인스턴스 업그레이드 및 설정

텍스트 오브젝트

vim의 가장 독특한 기능 중 하나를 꼽으라면 “텍스트 오브젝트”를 취급하는 기능입니다. 예를 들어 di) 같은 명령으로 괄호 내부의 텍스트를 삭제하거나, dd 를 사용하여 한 줄 전체를 지우는 것 등이 있습니다. 이러한 동작을 커스텀 함수를 통해서 사용할 수 있을까요?

더 보기 »텍스트 오브젝트

브라우저에서 PDF 파일이 열리지 않을 때

PDF 문서가 어느 새 보편적으로 사용되면서 파이어폭스나 구글 크롬, 엣지와 같은 웹브라우저들도 자체적으로 PDF 파일을 렌더링할 수 있는 기능을 지원하고 있어서, 별도의 뷰어 프로그램이 없어도 이제 PDF 파일은 어디서든 쉽게 열 수 있는 문서 형식이 되었다. 그런데, 어느 날 갑자기 웹브라우저에서 잘 열리든 PDF 파일이 더 이상 열리지 않는 증상이 생기는 경우가 있다. 이 문제는 사실 같은 원인임에도 두 가지 증상으로 나타나는 것 같다. 디스크에 저장된 PDF 파일을 “다음으로 열기..” 를 통해서 브라우저로 열려고 하거나, PDF 파일을 브라우저로 끌어다 놓았을 때 파일이 열리지 않고 다음과 같이 작동하고 있었다.

  • 문서 내용을 표시하는 대신, 문서 파일을 다운로드 하는 것처럼 작동해서 파일의 복사본이 다운로드 폴더에 저장된다.
  • 다운로드를 하지 않으면서 브라우저에 빈 공간이 표시된다.

이 문제는 주로 구글 크롬 및 이와 동일한 엔진을 사용하는 마이크로소프트 엣지, 오페라에서도 공통으로 발견되며 나의 경우 파이어폭스에서는 여전히 정상적으로 PDF 파일이 열리고 있었다. 이 문제를 어떻게 해결할 수 있는지 살펴보자.

더 보기 »브라우저에서 PDF 파일이 열리지 않을 때

대용량 데이터와 엑셀 파일

엑셀과 같은 프로그램을 스프레드 시트라고 한다. 스프레드 시트는 개념상 무한히 큰 종이를 행과 열로 나누고 여기에 데이터와 수식을 넣어서 표를 계산하거나 데이터를 분석하는 프로그램을 말한다. 하지만 ‘무한히 큰 종이’는 말 그대로 개념적인 것이며, 실제로 컴퓨터의 메모리는 유한하기 때문에 스프레드 시트의 크기 역시 실제로는 유한한 크기를 갖는다.

더 보기 »대용량 데이터와 엑셀 파일

vim에서 scss 파일을 컴파일하기

typescript나 scss 처럼 다른 언어로 컴파일하는 스크립트를 작성하고, 이 결과를 별도의 창에서 확인하는 기능을 vim에서 구현하는 방법을 알아보자. 기본적으로 vim에서는 :r 명령을 사용하면 쉘을 통해 실행한 외부 명령의 출력을 현재 버퍼로 가져오는 것을 수행할 수 있다. 그 외에도 job을 이용한 비동기 방식의 처리도 가능하고 아예 vim 내에 터미널 창을 만들어서 실행하는 방법등 여러 방법이 있다. 오늘은 이러한 방법을 사용해서 vim에서 scss를 컴파일한 결과를 보여주는 방법에 대해서 살펴보겠다.

더 보기 »vim에서 scss 파일을 컴파일하기
Pages: 1 2

워드프레스에 jupyter notebook 삽입

워드프레스 포스트에 Jupyter notebook을 삽입하는 방법을 알아보겠습니다. 가장 손쉬운 방법은 Github Gist 에 정적 HTML로 변환한 파일을 업로드하고 해당 Gist를 포스트에 삽입하면 되는 것입니다. 로컬에서 작성한 ipynb 파일을 업로드해도 되지만, Google Colab을 사용하면 Gist로 저장하는 일을 좀 더 간편하게 할 수 있습니다.

더 보기 »워드프레스에 jupyter notebook 삽입

WP-cron을 시스템 cron으로 대체하기

워드프레스는 포스팅의 예약 발행과 같은 스케줄링을 지원하는데, 이는 WP-cron이라는 스케줄러를 통해 처리된다. wp-cron은 매 페이지가 호출될 때마다 로드되어 예약된 작업이 있으면 이를 처리해주는 방식으로 작동한다. 다만 이렇게하면 포스트 발행을 예약한 시점에 접속이 없다면 스케줄러가 실행되지 않거나, 그외 플러그인과의 충돌이나 워드프레스 자체의 버그로 인해서 작업이 누락되는 경우도 발생한다고 한다.

리눅스 서버를 사용한다면 시스템의 cron을 사용해서 이 wp-cron의 실행을 대체할 수 있다. 이 글은 아마존 라이트세일 인스턴스 (Bitnami – wordpress 서버)에서 wp-cron을 끄고 시스템 자체의 cron을 실행하게 하는 방법이다.

더 보기 »WP-cron을 시스템 cron으로 대체하기

ffmpeg로 영상 일부 구간 빠르게 자르기

큰 영상 파일의 일부 구간만 필요한 경우에 ffmpeg를 사용하면 빠르게 일부분을 추출할 수 있다. 이 때 사용되는 파라미터는 -ss-to 로 각각 결과물의 시작과 끝 시점을 정의한다. 이때 시점을 정의하는 문법은 h:mm:ss 로 사용한다. (그래서 특정 시간부터 t 초라고 한다면 시간을 계산해야 한다…)

더 보기 »ffmpeg로 영상 일부 구간 빠르게 자르기

SQLite – STRICT 테이블

얼마전 SQLite의 새 버전인 3.37.0이 릴리즈되었습니다. 주로 안정성이나 성능 개선 위주의 업데이트만 있다가, 이번 버전에서는 STRICT 테이블이라는 새로운 기능이 추가되었습니다. 이 기능은 다른 DBMS 처럼 테이블 칼럼의 형식에 맞는 값만 저장하도록 제한하는 기능으로, 새로 생성하는 테이블의 옵션 형태로 설정하게 됩니다. SQLite3는 다른 DBMS와 달리 자료의 형(type)에 대해서 유연한 편입니다. 예를 들어 INTEGER 타입으로 정의된 칼럼에 “123” 같은 문자열을 저장하려 한다면 SQLite는 자동으로 이 문자열을 정수형태로 변환을 시도합니다. 따라서 저장되는 값은 문자열이 아닌 정수값 123이 저장됩니다. 만약 “xyz” 같은 변환이 불가능하거나,… 더 보기 »SQLite – STRICT 테이블