[개발] 스몬 카드 투자[15] 시간동기화, 파일리스트, 실행시 인자 그리고 스몬 API들

avatar
(Edited)

휴일이었던 어제 파이썬 공부를 했습니다. 현재 스몬에 대하여 집중적으로 연구 중인데요. 그동안 찾은 API 들과 지금 개발 중인 프로젝트에 필요한 몇몇 기능을 구현하는 방법을 기술합니다.

스몬 API들

. https://steemmonsters.com/players/details?name=tradingideas

시간 동기화

게임은 실시간으로 동작하기 때문에 동작하는 컴퓨터의 시각이 정확해야 합니다. 컴퓨터의 시각이 정확할 것이라고 생각하시겠지만 의외로 틀립니다. 빠르기도 하고, 느리기도 합니다. 그래서 주기적으로 time server와 동기를 시켜주어야 합니다.

현재 본인의 컴퓨터가 표준시와 비교하여 어떤 상태인지는 아래 사이트에 가보시면 확인이 가능합니다.
https://time.is

조금 전에 time server와 동기화를 해서 그런지 거의 맞군요. 만약 time server와 차이가 많이 난다면 동기화를 시키시기 바랍니다.

ms-windows를 사용하는 경우에는 아래 그림과 같이 날짜/시간 변경을 하는 곳에서 동기화를 시킬 수 있습니다. 인터넷 시간 서버와 동기화가 설정되어 있다면 주기적으로 시각을 맞춰 줍니다.

윈도우에서 주기적으로 맞춰주고 있더라도 순간적으로 시간이 틀릴 수 있습니다. 따라서 프로그램 내부에서 주기적으로 시간이 맞는지 확인하는 부분이 필요합니다.

time server와 연동을 위해서는 ntplib package를 이용하면 됩니다.
response.offset 부분에 현재 컴퓨터와 time server와의 시간차에 대한 정보가 들어있습니다.

import ntplib
from time import ctime
import time
from datetime import datetime

# https://stackoverflow.com/questions/36500197/python-get-time-from-ntp-server
def test_time() :
    c = ntplib.NTPClient()
    response = c.request('pool.ntp.org', version=3)
    
    print ("차이", response.offset, ctime(response.tx_time), response.tx_time)

폴더 내 파일 이름 얻기

지금 개발하고 있는 프로젝트는 폴더에 있는 파일을 많이 있습니다. 폴더에 있는 파일명을 정확하게 아는 경우에는 아는 이름을 사용하면 되지만, 불특정 파일들을 읽어들이기 위해서는 폴더에 있는 파일 명 전체를 읽을 수 있어야 합니다.

glob라는 패키를 사용하여 파일 명을 읽어올 수 있습니다. 폴더 아래에 있는 다른 폴더에 있는 파일명을 읽고 싶은 경우에는 recursive=True 옵션을 주면 되는군요. 유용하게 사용하고 있습니다.

import glob

def test_files_in_dir() :
    for filename in glob.glob('*.py'): 
        print(filename)

    for filename in glob.iglob('**/*.py', recursive=True): 
        print(filename)

실행 시 인자 받기

파이썬 프로그램을 실행할 때 인자를 받을 수 있으면 동일한 프로그램을 여러 계정에 대하여 사용할 수 있습니다.

제가 하고 싶은 것은 아래와 같이 실행을 하면 인자로 전달한 계정에 대하여 실행하는 것입니다.

pythontest.exe --acc tradingideas

만약 인자가 정의된 것이 아니면 사용법을 출력해주는군요. 실행 예는 아래와 같습니다.



0
0
0.000
7 comments
avatar

jcar토큰 10월 구독신청감사합니다. ^^
즐거운 하루 되세요.

0
0
0.000
avatar

현재 스몬에 대하여 집중적으로 연구 중인데

연구까지 필요한 스몬... 안하길 잘했...ㅋㅋ 열정이 대단하십니다^^

0
0
0.000
avatar

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

0
0
0.000
avatar

오~ 승률과 바로 연결되는 연구면 신나실것 같아요~ 화이팅입니다!! ^^

0
0
0.000
avatar

Hi @tradingideas!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.398 which ranks you at #2480 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 115 contributions, your post is ranked at #23.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

0
0
0.000
avatar

오~ 시간 동기화!! 이건 생각도 못했네요...

저도 참고하도록 하겠습니다~

0
0
0.000