2016년 02월 01일
기상청 API를 사용하려면 일반적인 위도, 경도가 아닌 행정구역을 나누는 X, Y (GRID) 좌표를 사용하고 있습니다.
따라서 위도, 경도를 변환해야하는데 기상청에서 제공하는 Open API를 활용하여 변환 작업을 진행합니다.
http://www.kma.go.kr/weather/forecast/digital_forecast.jsp
ex) http://www.kma.go.kr/weather/forecast/digital_forecast.jsp?x=60&y=127
import math
def grid(v1, v2) :
RE = 6371.00877 # 지구 반경(km)
GRID = 5.0 # 격자 간격(km)
SLAT1 = 30.0 # 투영 위도1(degree)
SLAT2 = 60.0 # 투영 위도2(degree)
OLON = 126.0 # 기준점 경도(degree)
OLAT = 38.0 # 기준점 위도(degree)
XO = 43 # 기준점 X좌표(GRID)
YO = 136 # 기1준점 Y좌표(GRID)
DEGRAD = math.pi / 180.0
RADDEG = 180.0 / math.pi
re = RE / GRID;
slat1 = SLAT1 * DEGRAD
slat2 = SLAT2 * DEGRAD
olon = OLON * DEGRAD
olat = OLAT * DEGRAD
sn = math.tan(math.pi * 0.25 + slat2 * 0.5) / math.tan(math.pi * 0.25 + slat1 * 0.5)
sn = math.log(math.cos(slat1) / math.cos(slat2)) / math.log(sn)
sf = math.tan(math.pi * 0.25 + slat1 * 0.5)
sf = math.pow(sf, sn) * math.cos(slat1) / sn
ro = math.tan(math.pi * 0.25 + olat * 0.5)
ro = re * sf / math.pow(ro, sn);
rs = {};
ra = math.tan(math.pi * 0.25 + (v1) * DEGRAD * 0.5)
ra = re * sf / math.pow(ra, sn)
theta = v2 * DEGRAD - olon
if theta > math.pi :
theta -= 2.0 * math.pi
if theta < -math.pi :
theta += 2.0 * math.pi
theta *= sn
rs['x'] = math.floor(ra * math.sin(theta) + XO + 0.5)
rs['y'] = math.floor(ro - ra * math.cos(theta) + YO + 0.5)
string = "http://www.kma.go.kr/wid/queryDFS.jsp?gridx={0}&gridy={1}".format(
str(rs["x"]).split('.')[0], str(rs["y"]).split('.')[0])
return string
if __name__ == "__main__" :
print grid(37.566826005485716, 126.9786567859313)
위 게시물은 기존에 운영한 Tistory에서 가져온 자료입니다.
시간이 흐름에 따라 오류가 발생
하거나 참고사항으로 첨부한 자료가 없을 수 있습니다.
2016년 04월 11일
Python에서 진수 변환을 어떻게 작업하는지를 설명합니다. ## 10진수 -> 2, 8, 16 진수 변환 2진수 bin( 정수 ) 8진수 oct( 정수 ) 16진수 hex( 정수 ) `ex) bin(12345)` ## x진수 -> 10진수 변환 int( 정수, 진수 ) `ex) int( 12345, 7 ) -> 7진수 12345를 10진수로 변환` ## 소스코드 ```python if __name__ == "__main__" : num = 12345 print bin(num) # 10진수 -> 2진수 변환 : 0b11000000111001 print oct(num) # 10진수 -> 8진수 변환 : 030071 print hex(num) # 10진수 -> 16진수 변환 : 0x3039 print int(bin(num),2) # 2진수 -> 10진수 변환 : 12345 print int(hex(num),16) # 16진수 -> 10진수 변환 : 12345 ``` ## 참고사항 위 게시물은 기존에 운영한 Tistory에서 가져온 자료입니다. 시간이 흐름에 따라 `오류가 발생`하거나 참고사항으로 `첨부한 자료가 없을 수 있습니다.`
2017년 09월 11일
## Python 2.x, 3.x ```python # string to int s = "123" n = int(s) # string to float s = "123.456" n = float(s) # string to long s = "1234567890123" n = long(s) ``` ## 참고사항 위 게시물은 기존에 운영한 Tistory에서 가져온 자료입니다. 시간이 흐름에 따라 `오류가 발생`하거나 참고사항으로 `첨부한 자료가 없을 수 있습니다.`
2017년 11월 10일
플레이오토 입사 당시, 팀장님이 온보딩 기간 동안 만들고 싶은 것 있는지 찾아보라고 하셨다. 당시 점심시간에 배달시켜먹는 채널이 있었는데, 배달 앱이 크게 활성화되어있지 않다 보니 채널에 메뉴판을 올리고 다른 사람들이 댓글 형식으로 먹고 싶은 메뉴를 이어 적는 형태였다. 해당 방식을 그대로 사이트 형태로 옮기는 작업을 진행했다. ## 가게와 메뉴 선정 먼저 자주 배달시키는 가게들 위주로 추가했다. 체인점 같은 경우에는 `웹 페이지로 메뉴를 제공하다 보니 스크랩핑`해서 DB를 구성할 수 있었는데, 중국집같이 `전단지만 있는 경우에는 수동`으로 추가 후 제보받는 형식으로 진행했다. ## 메뉴 선택과 주문 가게를 선택하면 메뉴를 고를 수 있는 방식이다. 단순하게 마지막 주문하는 사람을 결제자로 지정하려고 했으나, 카드 실적 등 여러 사유로 결제하고 싶은 사람이 있어 `선택사항으로 정산 받을 계좌번호`를 입력할 수 있도록 처리했다. 결제하기는 한 명만 가능하며 이미 입력한 사람이 있다면 이후 사람들은 주문만 가능하다. 주문 리스트와 별개로 Result라는 항목을 따로 만들었는데, 전화주문을 하다 보면 `주문자가 업체 연락처, 회사 주소를 찾아보고 음식 별 개수를 다시 정리하는 일`이 있어 해당 영역만...