본문 바로가기

Bithumb API, status 5100, Bad Request Request Time reqTime nowTime 에러 결론 : 코드를 실행하는 컴퓨터의 시간이 빗썸 서버와 많이 차이가 나는 경우 발생함. 컴퓨터의 시간을 다시 동기화하거나, 수동으로 잘 맞추어야 한다. 문제상황: python 으로 bithumb api 를 간단히 테스트하는 코드를 작성하였는데, 에러 메시지가 발생하며, 원하는 결과를 보여주지 못했다. pybithumb 패키지를 사용하는 테스트코드였고, 코드는 이미 다른 컴퓨터에서 동작하는 것을 확인했던 코드였다. 코드 : from pybithumb import Bithumb # CONKEY, SECKEY 를 읽어오는 부분 생략 bithumb = Bithumb(CONKEY, SECKEY) for coin in ["BTC", "ETH"]: ret = bithumb.get_trading_fee("BTC") if..
Sqrt(n) 의 연분수 표현 구하기 Sqrt(n) 의 연분수를 정확하게 구하기. sqrt(n) 의 연분수는 [ a_0;a_1, a_2, ... ] 이고 유리수 소수표현처럼 순환마디가 있을거다. a_n = [ b_n ] 으로 정의되고, b_{n+1} = 1 / ( b_n - a_n ) 이고, b_0 = sqrt(n) b_n 은 어떻게든 분모를 유리화할수 있고, b_n = x_n sqrt(n) + y_n (x_n, y_n 은 유리수) 로 표현이 가능하다. 그래서, x_n, y_n 은 언젠가는 동일한 것이 나와서 순환할 것. sqrt(2) = [ 1; 2, 2, 2, ... ] 이다. sqrt(3) = [ 1; 1, 2, 1, 2, ... ] 이 과정을 프로그래밍해 본다. #!/usr/bin/env python # ----------------..
[Swift] dependency <library> in target <project> requires explicit declaration; reference the package in the target dependency with '.product(name: <library>, package: <library package>)' swift package를 사용해서 프로젝트를 생성하고, Package.swift 에 필요한 디펜던시 package 를 추가하는 연습을 하는 중에, 아래와 같은 에러가 발생했다. 생성한 프로젝트는 Banner 라는 이름의 프로젝트였고, swift-argument-parser 의 ArgumentParser 를 이용하려고, Package.dependencies 에 .package(url: "https://github.com/apple/swift-argument-parser", from: "0.0.1"), 을 추가했다. 그리고, Package.targets.executableTarget.dependencies 에 "ArgumentParser"를 추가했다. 이렇게 추가한 Package.swift 파일은 다음과 ..
Swift Closure error: ambiguous use of operator 기초문법을 훑고 있습니다. closure 라는 것이 나와서, 가장 간단한 축약표현을 한번 써보고 싶었습니다. 그런데, error: ambiguous use of operator '+' 라는 에러가 발생하네요. 코드는 아래와 같습니다. for ab in [ [1,2], [3,4] ] { let a = ab[0] let b = ab[1] for op in [ { $0+$1 }, { $0-$1 } ] { print(a, b, op(a, b)) } } 코드의 의도는 정수쌍에 대해서 더하기도 해보고, 빼기도 해보고 그 결과값을 확인해 보는 겁니다. 더하기와 빼기 같은 연산자를 for 루프에 돌려보기 위해서, closure 를 만들어 썼습니다. 에러메시지는 for op in 라인에서 { $0+$1 } 부분의 + 를..
Swift codewars 연습문제 gravity swift 문법을 배우면서 연습을 하기 위해서, codewars 문제를 몇 개 풀어보기 시작함. gravity 라는 문제를 풀어봤다. 그냥 숫자로 주어진 리스트를 L 또는 R 인자에 따라 ascending, descending 으로 sort한 결과를 리턴하는 함수를 짜면 된다. 내 풀이는 다음과 같다. func flip(_ direction:String, _ a: [Int]) -> [Int] { if direction == "L" { return a.sorted(by: >) } return a.sorted(by: 와 < 라는 두 람다 중에 하나를 선택하게 했다. 람다를 3항연산자로 선택가능하고 (그것도 간단한 신택스로) 코드가 예뻐서 블로그에서 한번 언급하고 싶었다. codewars 를 풀면, 풀어내는 ..
Swift Optional 몇가지 실험 swift 문법을 조금 공부해 봤는데, Optional 이라는 개념이 나한테는 새로운 개념이라 몇가지 실험을 해 보았다. 우선 Optional 을 내가 이해한 것은 아래와 같다. swift 에서 변수는 디폴트로 nil 을 허용하지 않는다. 이렇게 하는 편이 예상치 못한 NPE 오류를 방지하는 디자인이다. (내 추측) 하지만 nil 이 필요한 변수가 있을 수 있다. 그래서 nil 도 assign 할 수 있는 Optional 변수형을 따로 만들었다. Optional 은 nil 또는 값을 assign 할 수 있다. 값이 들어가 있을 때에도 Optional(값) 형태로 한번 포장되어 있는 상태다. 사용하려면 좀 번거롭지만, unwrap 작업이 필요하다. unwrap 을 할 때에는 nil 인지를 먼저 확인하는 것..
swift 코드를 간단히 console에서 실행하기 간략한 swift 스크립트를 간단히 MacOS의 콘솔에서 실행하려면 1. shebang 으로 swift 를 지정하고 실행하기 swift 소스파일 맨 앞에 shebang (#!) 으로 다음과 같이 지정한다. #!/usr/bin/env swift import Foundation print("Hello") 또는 #!/usr/bin/env xcrun swift import Foundation print("Hello") Linux 환경에서는 xcrun 이 없으니까 두번째는 안 됨. vim 등 간략한 소스편집기로 위와 같이 작성하고서, 스크립트에 실행권한 추가( chmod +x )하고, 실행한다. $ chmod +x hello.swift $ ./hello.swift Hello 2. swift 명령의 인자로 swif..
tksheet 으로 csv 파일 내용을 tkinter 창에서 보여주기 tksheet 이라는 패키지가 있다. tkinter 기반의 GUI 프로그래밍을 할 때에, table 형식의 데이터, 즉, pandas dataframe 형식의 데이터를 보여주는 위젯을 사용할 수 있다. tksheet github 에 있는 예제를 거의 그대로 가져와서 csv 파일을 읽어 보여주는 코드를 만들어 봤다. from tksheet import Sheet import tkinter as tk import pandas as pd class demo(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(0, weight=1) self.frame = tk.Fra..