nØthing specia¡
Posts
129 postsVBA로 만드는 알고리즘-스택
토지라는 물건을 하나 두고, 상업용,공업용,주거용,농업용 토지 등 우리는 여러 가지로 구분하여 사용하듯이, '메모리'라는 공간을 두고 필요에 따라 여러 알고리즘으로 활용한다. 스택,큐,리스트(링크드),트리 등등. 현대의 프로그래밍언어는 이런 알고리즘을 아예 지원을 해주지만, 예전에는 직접 만들어 사용하였다. 그래서 이런 알고리즘은 학교에서 배우거나 프로그래머 면접용으로 사용되거나 한다. 이런 알고리즘을 직접 만들 필요는 많이 줄었지만, 기초에 해당하는 것이라 알아둘 필요는 있어 보인다. 스택(Stack)은 끝이 막혀있는 구조로 나중에 입력(push)된 항목이 먼저 나오는(pop) 후입선출형 알고리즘이다. 데이터를 입력하는 것을 PUSH라고 하고, 데이터를 꺼내는 것을 POP이라고 한다. POP을 하면
환율, 구글시트 그리고 앱스크립트
사람이 아닌 소프트웨어를 이용하여 각종 정보를 가져오는 방법중 가장 쉬운 방법은 구글시트 함수를 이용하는 것이다. 그리고 이렇게 얻어온 정보를 단순히 시트를 열어보는 것으로 끝나는 게 아니라, 일정 간격으로 메일로 보내주는 작업까지 생각해볼 수 있다. 이번 예에서는 구글시트에서 importxml(url, xpath_query)함수를 사용하여 네이버 환율정보를 가져오는 문서를 구성하고 정기적으로 메일로 전송하는 것이다. 첫 번째 단계는 환율정보를 가져오는 시트를 구성하는 것인데, importxml()를 사용한다. importxml()에 넘겨줄 정보는 url과 xpath_query이다. 네이버 환율정보를 가져올 url과 xpath는 다음과 같다. 가령 미국달러환율이라면 'http://financ
Google Apps Script와 OfficeJs
Google Apps Script라는 물건이 있는 데, 게을러서 북마크만 해두고 있다가 묵은지마냥 꺼내본다. 예전에는 단순한 VBA 대용품 정도로만 생각했는데, G Suite에 속한 제품을 위한 강력한 업무애플리케이션 개발환경이다. G Suite에 해당하는 것이 MS-Office365인데, MS의 현금상자인 만큼 MS도 머신러닝을 이용한 기능을 추가하는 등 많은 공을 들이고 있다. 그런데 Google Apps Script에 해당하는 업무애플리케이션 개발환경은 VBA가 아니다. OfficeJS API라는 물건인데, 이것 역시 자바스크립트 기반이다. 호기심으로 몇 개의 토이수준 OfficeJS 앱을 만들어 보았는 데, 하다보면 자괴감이 든다. 'VBA라는 편리한 물건을 놔두고 왜 이 짓을 하
망해라 django, 아니지 흥해라 django
프로그래밍이 생업이 아니다보니까 뭘 새로 해볼려면 항상 초보자이다. django를 새로 셋팅하려는 데, 까먹은 게 넘 많다. 설치는 그나마 쉽다. 각종 웹서버 설정이 골치 아프다. 개발서버는 그나마 나은데, 실제 서버에서 하면 부닺치는 문제가 많다. 병아리반 학생이 중딩반가서 고생하는 꼴이다. 이러다 보니 django말고 flask, fastapi 등을 해볼까 하는 생각도 든다. 희망사항이지만 워드프레스와 같은 CMS에 필요한 앱을 생성하고 코딩하는 호스팅이 어디 있을 것 같은데... 그래서 장고 호스팅 업체를 검색해보았다. Top 6 Django Compatible Hosting Services를 읽어보니 디지털오션이 괜찮아 보인다. 다음 번에 이짓을 또한다면 여기로 해봐야 겠다. 호스팅은 나중
ndarray의 head, tail 구하기
데이터프레임을 사용하는 경우 데이터의 앞뒤를 head와 tail을 사용하여 구하는 데, ndarray타입인 경우 head, tail이 따로 없다. 이런 경우 슬라이싱 연산자를 사용한다. import numpy as np # 데이터 머리부터 두 개의 데이터를 가져온다 head = np.array((1,2,3,4,5))[:2] # 중간 3,4번째 데이터를 가져온다 body = np.array((1,2,3,4,5))[2:4] # 꼬리에서 두 개의 데이터를 가져온다 tail = np.array((1,2,3,4,5))[-2:] print(head) print(body) print(tail) # 슬라이싱 말고 아래와 같이 제한적이긴 하지만 일부 데이터를 가져 오는 데 # 아래의 *


